web-dev-qa-db-ja.com

rsa秘密鍵に「des-ede3-cbc」があるのはなぜですか?

次のコマンドを使用して、4096ビットのOpenSSL RSA秘密鍵と証明書リクエストを作成しました。

openssl req -newkey 4096

秘密鍵を表示すると

openssl asn1parse -in privkey

次の出力が表示されます。

    0:d=0  hl=4 l=2446 cons: SEQUENCE          
    4:d=1  hl=2 l=  64 cons: SEQUENCE          
    6:d=2  hl=2 l=   9 prim: OBJECT            :PBES2
    17:d=2  hl=2 l=  51 cons: SEQUENCE          
    19:d=3  hl=2 l=  27 cons: SEQUENCE          
    21:d=4  hl=2 l=   9 prim: OBJECT            :PBKDF2
    32:d=4  hl=2 l=  14 cons: SEQUENCE          
    34:d=5  hl=2 l=   8 prim: OCTET STRING      [HEX DUMP]:XXXXXXXXX
    44:d=5  hl=2 l=   2 prim: INTEGER           :0800
    48:d=3  hl=2 l=  20 cons: SEQUENCE          
    50:d=4  hl=2 l=   8 prim: OBJECT            :des-ede3-cbc

気になるのはdes-ede3-cbcの部分です。 RSA秘密鍵にdes-ede3-cbcがあるのはなぜですか?私が知る限り、「DES」は70年代の暗号化標準であり、壊れていると考えられています。

8
rosix

RSA秘密鍵にdes-ede3-cbsがあるのはなぜですか?

あなたの秘密鍵はそれで暗号化されているからです。

私の知る限り、「DES」は70年代の暗号化標準であり、壊れていると考えられています。

うん。かなり。次のようにAESで再暗号化することを検討してください:

$ openssl rsa -in desencryptedprivkey.pem -out aesencryptedprivkey.pem -aes128

EDIT 2015-06-29:結局のところ十分です
ブルーノの答えを読んで、デフォルトモードでは実際にはまだ112ビットのセキュリティであることがわかりました。そして、それはかなり良いことです。
(これについて私が確信しなかったのは、1、2、または3つのキーでトリプルDESを実行できることです。これが本当に3キーバージョンであるかどうかはわかりませんでした。しかし、実際にはそうです。)-詳細については、BrunoRohéeの回答の下のコメントを参照してください。

EDIT 2015-07-03:一部の契約条件が適用される場合があります
@ dave_thompson_085 を使用してコメントスレッドで説明したように、それほど明確ではありません。

128ビットのAESは実際には112ビットのTriple-DESよりも望ましいですが(実際のセキュリティのためではなく、速度のためだけの場合)、どちらの暗号化も弱いキーストレッチの影響を受けます。 -少なくともOpenSSLでの実装方法。

つまり、暗号化パスワードが1つの128ビットAESキーまたは3つの56ビットDESキーに変換されるメカニズムは、最新技術ではありません。

キーストレッチング の意味は、Asdf123!などの比較的弱いパスワードを強力な暗号化キーに変換することです。ただし、OpenSSLは弱いキーストレッチを使用します。

そして、私の知る限り、より強力なキーストレッチパラメータを渡す方法はありません。

したがって、Daveが提案する最も実用的な推奨事項は、次のとおりです。キーストレッチングが事実上存在しないことを考慮し、非常に強力なパスワードを使用します。

11
StackzOfZtuff

秘密鍵は Triple DES で暗号化されます。 DESは簡単に壊れますが、トリプルDESは今のところ特にこのコンテキストでは安全です。 Triple DESが壊れたため、AESはTriple DESをあまり置き換えなかったが、速度が遅すぎたため。秘密鍵暗号化のコンテキストでは、問題はありません。

12
Bruno Rohée