次のコマンドを使用して、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年代の暗号化標準であり、壊れていると考えられています。
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が提案する最も実用的な推奨事項は、次のとおりです。キーストレッチングが事実上存在しないことを考慮し、非常に強力なパスワードを使用します。
秘密鍵は Triple DES で暗号化されます。 DESは簡単に壊れますが、トリプルDESは今のところ特にこのコンテキストでは安全です。 Triple DESが壊れたため、AESはTriple DESをあまり置き換えなかったが、速度が遅すぎたため。秘密鍵暗号化のコンテキストでは、問題はありません。