暗号化は初めてです。対称鍵暗号化について読んでいる間に、2者が暗号文を復号化できるように秘密鍵の交換が必要であることが言及されました。
これで、GPGなどの暗号化ソフトウェアを使用して、gpg --symmetric abc.txt
による対称暗号化を使用できます。ここでパスワードを要求します。
鍵はパスワードを使用して生成されていますか?
必要に応じて、実際に秘密鍵を見ることができますか?
対称鍵暗号化では、安全な鍵交換が必要です。しかし、現実の世界では、「キー」自体が正しく交換されていませんか?代わりに、パスワードを安全に交換する必要がありますか?
また、キーは暗号文に実際に存在し、パスワードによってロック解除されていますか、それとも、パスワードを指定したときにその場で生成されますか?
ありがとうございました!
鍵はパスワードを使用して生成されていますか?
はい。この種のシナリオでは、パスワードは PBKDF2 などのキー派生関数( [〜#〜] kdf [〜#〜] )を介して実行され、キーが生成されます。
必要に応じて、実際に秘密鍵を見ることができますか?
私の知る限り、この場合の対称鍵はどこにも保存されていません。代わりに、何かを暗号化または復号化するたびに、キーがパスワードから取得されます。本当にキーを取得したい場合は、ソルトとイテレーションのカウントがわかっていると想定して、KDFを通じてパスワードを実行できます。
対称鍵暗号化では、安全な鍵交換が必要です。しかし、現実の世界では、「キー」自体が正しく交換されていませんか?代わりに、パスワードを安全に交換する必要がありますか?
これは非常に複雑なトピックです。対称モードのGPGの場合、キーは決して転送されません。暗号化されたデータを復号化するには、パスワードの知識が必要です。
暗号化されたデータを別のエンティティと「共有」する場合は、通常 ハイブリッド暗号システム を使用します。 GPGの場合、ファイルを暗号化しますなし--symmetric
フラグ。これは、ランダムに生成された対称鍵でデータを暗号化することです。このランダムに生成されたキーは、ターゲット(GPGでの受信者)のpublicキーで暗号化されます。暗号化された対称鍵に暗号化されたblobが追加され、ターゲットに送信されます。次に、ターゲットは暗号化された対称キーをprivateキーで復号化し、復号化された対称キーを使用して暗号化されたblobを復号化します。
1)はい、-symmetricは、パスワードと暗号化された出力の前に付加されるソルトから128ビットのキーを取得します。これは、パスワードベースのキー導出関数2(PBKDF2)と呼ばれる関数を使用して行われます。実際、これは、gpgが秘密鍵を暗号化して、パスフレーズのみがファイルを使用できるようにする方法でもあります。
2)さて、パスワードを実行し、関数を介して自分でソルトしてキーを生成できます。
3)実際には、非対称暗号化は通常、そのセッション用に生成された対称鍵を交換するために使用されます。次に、それらの対称鍵は、データ/メッセージの実際の暗号化に使用されます。