2

gpgにインプレース暗号化を強制することは可能ですか?言い換えれば、ソース(暗号化されていない)ファイルを暗号化されたデータで上書きするには?

これは、ccrypt(1)がデフォルトで動作する方法です。

4

2 に答える 2

3

答えは基本的にいいえです。カスタム コードがないわけではありません。

gpg はパイプ上で動作するので、破壊的にデータをパイプに送信する簡単な方法があれば、これは実行可能かもしれません。しかし、ありません

ディスクをすぐに使い切らないようにするもう 1 つのアイデアは、(カスタム ソフトウェアで) 一度にチャンクを暗号化することです。

while !eof:
  read()
  encrypt()
  write()
  seek()

暗号化されたデータは復号化されたデータと同じ長さであるため、ccrypt はインプレースで動作できるようです (暗号についてはほとんど知りませんが、これはブロック暗号の一般的な特性にすぎない可能性があります)。GPG/PGP はヘッダーの圧縮や追加などを行うため、出力データは同じ長さにはなりません。短い場合は問題ありません (上記のカスタム コードは機能するはずです)。より長い場合、オーバーフローを別の場所に配置するために、より多くの作業を行う必要があります。

このカスタム コードにより、暗号化と復号化が複雑になります (そしてわかりにくくなります)。

于 2011-03-07T18:10:53.030 に答える
0

gpg は、元のファイル名を使用して新しいファイルを開き、.gpg 拡張子を追加してから、暗号化されたデータを新しいファイルに書き出すことによってこれを行います。すべてが正常に機能すると、元のファイルが削除されます。

バイトを読み取り、暗号化し、ファイルに書き戻すなど、実際のインプレース暗号化を使用したくないと思います...何かが gpg プロセスを途中で強制終了するとどうなりますか終えた?プレーンテキストの半分がそよ風にぶら下がっている、破損したファイルができました。

于 2011-02-27T06:46:53.133 に答える