RSA秘密鍵には「パスフレーズ」が割り当てられる場合があります。これは、私が理解しているように、誰かが秘密鍵ファイルを使用する場合に備えて二次的なセキュリティを提供するためです。
セキュリティのパスフレーズレイヤーはどのように実装されますか?
ssh-keygenはOpenSSLを使用してRSAキーを生成し、PEM形式で保存します。あなたが話している暗号化はPEMに固有のものです。キーファイルを見ると、
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,5B01E932988DC66B
EPESt4ZVIrxnQXxxWWVa7cCR+vgNZ/4vTu4mdq6pjaW7jMZoB8HV+mA745mQkQw7
i+YtdVs/JqOeyGiw/3McxYYKZTlhyh7MvfIr1n8ZdZmcjQz+oFqMxChFU3r8BGgA
「DEK-Info」ヘッダーには、パスフレーズを知っている限り、キーを復号化するために必要なすべての情報が含まれています。 「DES-EDE3-CBC」は、トリプルDES(EDEモード)。CBCはチェーンモードです。16進数はCBCに必要な初期ベクトルです。
PEMは非常に古い形式であるため、DES/TripleDESのみをサポートします。 AESとBlowfishは後で追加されましたが、すべての実装でサポートされているわけではありません。私のssh(OpenSSH 5.2)はDESおよびTripleDESのみをサポートしています。
パスフレーズは、RSAキーを含むファイルを対称暗号(通常DESまたは3DES)を使用して暗号化するために使用される単なるキーです。公開キー暗号化にキーを使用するには、最初に復号化キーを使用してファイルを復号化する必要があり、sshはパスフレーズを要求することでこれを自動的に行います。
誰かがキーのファイルを手に入れた場合、ファイルの暗号化に使用されたパスフレーズを知らない限り、それを使用することはできません。
保護されていない場合、汎用ファイルシステムに保存されている秘密キー(改ざん防止用の特殊なハードウェアトークンとは対照的に)は簡単に盗まれます。ファイルシステムのアクセス許可は十分に思えるかもしれませんが、特に攻撃者がマシンに物理的にアクセスできる場合は、しばしばバイパスされる可能性があります。
強力な対称暗号は、適切なパスワードでキー設定され、これを防ぐのに役立ちます。優れたRSA秘密鍵は覚えておくには長すぎます(とにかく)、しかし、はるかに小さい対称鍵は同じレベルのセキュリティを提供できます。脳に保存されている比較的短い対称キーは、ディスクに保存されている大きな秘密キーを保護するために使用されます。