web-dev-qa-db-ja.com

GPG対称暗号化を使用しているときに「警告:メッセージは整合性が保護されていませんでした」を修正するにはどうすればよいですか?

次のような対称暗号化を使用してファイルを暗号化しました。

gpg --symmetric myfile

その結果、ファイルmyfile.gpg

よし。次に、ファイルをもう一度復号化します。

gpg -o myfile --decrypt myfile.gpg

身につけたパスフレーズを求められて、

gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected

そこの最初と最後の行についてはわかりません。

  • CAST5暗号とは何ですか?それは安全ですか?私は3DESとAESを知っており、それらが安全であることを知っています。
  • なぜそれは整合性のために保護されていないのですか?
  • さらに、これをどのように修正しますか?
45
gertvdijk

バックグラウンド

CAST-5 は、GnuPGが最初に作成された時点ではAESがまだ存在していなかったため、GnuPGで使用される古い暗号化アルゴリズムです。 ソース。これは広く使用されていません(互換性の理由からGnuPGは別として)。

WARNING: message was not integrity protectedは、この機能が暗号化時にデフォルトでオンにならないためです。これがオンになっている場合、GnuPGは転送中にファイルが変更されたかどうかを確認できます。

更新:Ubuntu/Debianに同梱されている最新バージョンのGnuPGにMDC デフォルトで有効 が追加されました。これらの新しいバージョンで署名されたものについては、このメッセージが再び表示されることはありません。

ソリューション

より強力なAES-256を使用するには、コマンドラインまたは構成ファイルで指定する必要があります。

  • コマンドライン:--cipher-algo AES256オプションを追加して、暗号化する行全体を次のようにします。

    gpg -o myfile.gpg --cipher-algo AES256 --symmetric myfile
    
  • 構成ファイル(推奨):~/.gnupg/gpg.conf構成ファイルに次の行を追加します。

    cipher-algo AES256
    

    この方法は、このユーザーアカウントでの今後のすべてのGPG操作に使用されるため、この方法をお勧めします。

ユーザーがファイルを復号化するために変更することは何もありません-GnuPGはこれを自動的に検出します。

AES-256暗号を使用すると、メッセージは完全性のために自動的に保護されます。これが有効になっていない他の暗号(CAST-5など)で整合性保護を手動で有効にするには、暗号化時に--force-mdcオプションを追加します。

さらに良い:サイン!

さらに良い方法は、鍵ペアを使用してファイルに署名することです(鍵がある場合)。次のように、--signオプションを暗号化コマンドに追加するだけです。

gpg -o myfile.gpg --cipher-algo AES256 --sign --symmetric myfile

これにより、ファイルの整合性が検証されるだけでなく、ファイルの受信者が送信元を確認できるようになります。ファイルを変更すると、署名チェックが失敗します。

70
gertvdijk