2016-12-02 198 views
1

我想用openssl生成一個密鑰對,但我不能設置參數來生成我的私鑰/公鑰。 我想傳遞一個輸入參數,例如一個標識符(例如mac地址),以獲得唯一的私鑰/公鑰。對於相同的標識符,我想要相同的私鑰/公鑰。 我如何做到這一點? 在此先感謝:D自定義openssl生成RSA密鑰params

+0

使用OpenSSL的'RSA_generate_ex'可能需要一些工作。您可能需要提供一個提供隨機數字生成器的'ENGINE'。您的RNG將提供密鑰生成算法使用的位。 Richard Levitte在[引擎構建課程1:最小無用引擎]中有幾個教程(https://www.openssl.org/blog/blog/2015/10/08/engine-building-lesson-1-a-最小無用引擎/)和[引擎構建第2課:MD5引擎示例](https://www.openssl.org/blog/blog/2015/11/23/engine-building-lesson-2-an-例如-MD5引擎/)。 – jww

+0

一個更好的選擇可能會讓你創建'p','q','n','e','d'和CRT參數。他們只是'BIGNUM'的,你會完全控制表格。然後,將它們分配給一個'RSA *'。標準警告適用於這種方式與密鑰生成混合... – jww

回答

0

RSA密鑰對必須隨機生成。

確定性地生成代 - 您不再生成密鑰,而是從某些數據(例如,基於MAC地址)獲取密鑰。這將生成的密鑰的安全性降低到零 - 因此它們是無用的,您甚至不必開始生成它們。

RSA安全的核心假設是私鑰只有密鑰擁有者才知道。如果你把一個公共信息,如MAC地址以下公式:

RSA密鑰對=您的-推導算法(MAC地址)

如果你想知道RSA私鑰(這是一部分密鑰對),您需要MAC地址和派生算法。 MAC是公共的,並且派生算法將在更早或更晚的時候公開。

因此,RSA私鑰也是公開的,從安全角度來看它是無用的,因爲每個知道MAC地址的人都可以生成它。

請注意:安全基於祕密數據和精心設計的算法。該算法是否公開對安全性不應有任何影響。如果它有一個影響,你有一個不安全的算法,你可以扔掉。

+0

嗨,你能解釋我如何生成相同的輸入參數相同的密鑰對我減少生成的密鑰的安全性? –

+0

查看我更新的答案。 – Robert