2012-04-02 21 views
7

私はDES3でパスワードで保護されたRSA鍵を作成することができました(私はですので、この暗号化の世界では初めてです) :PyCrypto:DES3パスワードで保護されたRSA鍵を生成する

openssl genrsa -out "/tmp/myKey.pem" -passout pass:"f00bar" -des3 2048 

ここでは、可能であれば、PyCryptoを使用してPythonスクリプト内で行いたいと思います。私はthis messageを見てきましたが、これはPyCryptoの使用を妨げるようです。それはまだそれのようですか?

私はいつもos.executeを呼び出して上記のコマンドを実行することができますが、私はそれが「不正行為」であると考えています:-)。私はPyCryptoを学ぶためにこれをやっています。

ありがとうございます。

答えて

6

PyCrypto 2.5からは、RSA秘密鍵をエクスポートして、パスフレーズで保護することができます。トリプルDESキーはパスフレーズから内部的に導出され、実際の暗号化を実行するために使用されます。例えば

from Crypto import RSA 
from Crypto import Random 

random_generator = Random.new().read 
key = RSA.generate(1024, random_generator) 
exportedKey = key.exportKey('PEM', 'my secret', pkcs=1) 

変数exportedKeyは、PKCS#1(暗号化標準に従って符号化され、キーのASCIIバージョン(PEM)が含まれている別のオプションが用pkcs=8ある - 何を推測する - のPKCS#を。 8)。結果は標準的なので、opensslを含む他のいくつかのプログラムで使用することができます。 もちろんPyCrypto経由でPythonに再インポートすることもできます!

exportKeyの方法は、hereと記載されています。

+0

魅力的なように機能します!私はopensslコマンドと比べ、ほぼ同じ出力を得た:PROC-タイプ:4、ENCRYPTED DEK-情報:DES-EDE3-CBC、F7149C8E62E0854B 4fUV/FmaMmL7qZH83 + ocigFy [...] – BorrajaX

+0

はちょうど私が理解するために、つまり、コマンドexportedKey = key.exportKey( 'PEM'、 '私の秘密'、pkcs = 1)は、パスワード「私の秘密」からRSA鍵を生成しますか? 「PEM」とpkcsにはセキュリティ上の影響がありますか? –

+0

RSAキーは、メソッド 'generate'が呼び出されたときに作成されます。メソッド 'export'はそれを取り込み、PEM形式でエンコードします。 PEMとPKCS形式では、(私にとっては)セキュリティ上の弱点はありません。興味深いのは、3DESキーがパスワードからどのように引き出されるかです。これは、かなり古いアルゴリズムを使用する 'openssl'を模倣したものです。 – SquareRootOfTwentyThree

関連する問題