gpgにインプレース暗号化を強制することは可能ですか?言い換えれば、ソース(暗号化されていない)ファイルを暗号化されたデータで上書きするには?
これは、ccrypt(1)がデフォルトで動作する方法です。
gpgにインプレース暗号化を強制することは可能ですか?言い換えれば、ソース(暗号化されていない)ファイルを暗号化されたデータで上書きするには?
これは、ccrypt(1)がデフォルトで動作する方法です。
答えは基本的にいいえです。カスタム コードがないわけではありません。
gpg はパイプ上で動作するので、破壊的にデータをパイプに送信する簡単な方法があれば、これは実行可能かもしれません。しかし、ありません。
ディスクをすぐに使い切らないようにするもう 1 つのアイデアは、(カスタム ソフトウェアで) 一度にチャンクを暗号化することです。
while !eof:
read()
encrypt()
write()
seek()
暗号化されたデータは復号化されたデータと同じ長さであるため、ccrypt はインプレースで動作できるようです (暗号についてはほとんど知りませんが、これはブロック暗号の一般的な特性にすぎない可能性があります)。GPG/PGP はヘッダーの圧縮や追加などを行うため、出力データは同じ長さにはなりません。短い場合は問題ありません (上記のカスタム コードは機能するはずです)。より長い場合、オーバーフローを別の場所に配置するために、より多くの作業を行う必要があります。
このカスタム コードにより、暗号化と復号化が複雑になります (そしてわかりにくくなります)。
gpg は、元のファイル名を使用して新しいファイルを開き、.gpg 拡張子を追加してから、暗号化されたデータを新しいファイルに書き出すことによってこれを行います。すべてが正常に機能すると、元のファイルが削除されます。
バイトを読み取り、暗号化し、ファイルに書き戻すなど、実際のインプレース暗号化を使用したくないと思います...何かが gpg プロセスを途中で強制終了するとどうなりますか終えた?プレーンテキストの半分がそよ風にぶら下がっている、破損したファイルができました。