GPGの対称モードを使用してホームデスクトップシステム上のいくつかのファイルを暗号化するようにスクリプトなどを構成しています。
暗号化されたファイルの1つを編集したい場合、それを復号化してエディターにパイプし、それを保存するために、エディターがファイルを名前付きパイプに書き込み、次のように暗号化します。
echo $ pwd | gpg --symmetric --passphrase-fd 0 epipe
次に、名前付きパイプであるepipeが削除されます。
これはMDC整合性チェックがない限り問題なく機能しますが、-force-mdcを使用するか、デフォルトでMDCを実行する暗号を使用すると、上記のコマンドがハングします。これは、gpgがファイルデータと読み取りブロックだけでなく、epiceからMDC文字列を読み取ろうとしているためだと思います。
AES256を使用したい場合、MDC整合性チェックをオフにすると、実際には安全性が低下しますか?これらは私だけが使用するファイルで、他者と交換されることはありません。
元の問題は、パスワード/フレーズと暗号化するファイルの両方を(合理的に)安全にgpgに入力しようとしたためです。
ファイルを復号化して(パイプ経由で)エディターにフィードする単純なスクリプトがあります。スクリプトはパスワードを要求し、それは環境変数に保存されます。完璧ではありませんが、ファイルなどに入れるよりは良いです。
難しい点は、ファイルを編集した後、ファイルとパスワードの両方をgpgに戻すことでした。 gpgは実際には非常に適切に動作しており、「ファイル記述子nから読み取られるのは最初の行だけです」と書かれています。 --passphrase-fdの説明では、それが実際に意味しています。したがって、次のように、暗号化するファイルのパスワードを含む行を単純に追加して、両方をgpgにパイプすることができます。
<password + file> | gpg --symmetric --passphrase-fd 0 >file.gpg
私は今持つことができます:-
s2k-cipher-algo AES256 s2k-digest-algo SHA512 s2k-count 65011712
mDC整合性保護isが使用されるように(AES256に付属しているため)、gpg.confファイルに警告が表示されません。
私は自分のホームデスクトップコンピューターでこれらのファイルを編集しているので、パスフレーズに環境変数を使用しても問題はなく、途中で問題が発生した場合に残る可能性のある場所にファイルを保存することは避けました。
変更検出コードは特に、かなり難解な decryption Oracle attack を防止します。これは、ローカルで暗号化されたファイルの場合、暗号化されたメッセージをいくつかの復号化エンティティに繰り返し送信できる場合にのみ関連し、該当しないようです。有効または無効な暗号化メッセージに関する成功情報。
最後に、変更検出コードを使用すると、メッセージに署名しないと、暗号化されたデータが変更された(したがって、復号化後にプレーンテキストが文字化けする)ことを認識できます(とにかく、署名されたメッセージは、署名を破らない限り変更できません)。 。したがって、復号化中に整合性チェックが不要で、情報のプライバシーのみが必要である限り、MDCがなくても安全です。