web-dev-qa-db-ja.com

Vimは、暗号化されたファイルを読み取るときに暗号化キーの入力を求めなくなりました。なぜですか、どうすればこれを復元できますか?

最近、Vimを使用してテキストファイルを暗号化し始めました(:Xコマンドを使用し、プロンプトで暗号化キーを入力します)。文書化されているように、ファイルを再度開いてテキストを復号化すると、Vimはそのキーの入力を求めます。

今日、私はそれらの暗号化されたファイルの1つを開きましたが、驚いたことにVimはしませんでしたキーの入力を求められ、暗号化されたテキストが表示されました。もちろん、ファイルをさらに数回再度開きましたが、常に同じ結果になりました。 (OSXでVim7.3を使用しています。MacVimと非GUIバージョンの動作に違いはありませんでした。)

何がこの問題を引き起こしているのかについて、私には3つの漠然とした勘があります。

  1. 暗号化した後、問題のファイルの名前を(おそらく複数回)変更しました。残念ながら、最後の名前変更以降にファイルを正常に復号化したことがあるかどうかを実際に思い出せません。
  2. このファイルは私のDropboxフォルダーに保存されているので、Dropboxサーバーでファイルが何らかの形で変更された場合、そのバージョンはおそらく私の(以前は良かった)ローカルバージョンを上書きしていたでしょう。 (ただし、 Dropboxを介して古いバージョンのファイルを復元する を実行しようとすると、ファイルのバージョンが1つしか見つからず、それも復号化できません。)
  3. 上記の2つを組み合わせる:ローカルで問題になるとは思わないで、実際にはファイルの名前を.crypt拡張子になるように変更しましたが、Dropboxが実際にこのファイルを識別していることがわかります(Kind列) file cryptとして。おそらく、Dropboxが暗号化されたファイルとして認識した場合、Dropboxはそのファイルを何らかの方法で異なる方法で処理しましたか? (ただし、拡張子が.cryptの暗号化されていないテキストファイルを保存すると、問題なく読み取ることができます。)

特にopenssl bf -d -in [encrypted file] -out [decrypted file]として、opensslを使用してファイルを回復しようとしました。しかし、これはbad decrypt 1948:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/evp/evp_enc.c:330:(またはわずかなバリエーション)を報告します。

(過去に何度もファイルの復号化に成功したため、間違った暗号化キーを使用した場合ではないことを99%確信していることを先取りして明確にしておきます。現在、Vimはキーの入力を要求していません。 。opensslで正しいキーを使用していることも再確認しました。)

7.3ではblowfishであると理解しているVimのデフォルトの暗号化を使用しました(opensslで他のいくつかの暗号化コマンドを試しましたが、どれがpkzipに対応しているかはわかりませんでしたが、Vimの古い暗号化アルゴリズムであると理解しています)。

:help encryptionを使用して、Vimが暗号化されたファイルのキーの入力を要求することを確認する以外は、:set key=に関連性はありませんでしたが、それでもそうではありません。これは、他の場所で見つけた似たような質問で提案された唯一の解決策でした(たとえば、 この質問 ですが、私の場合はプロンプトなしのキーを入力すると、通常モードで開始するコマンドとして解釈されます)。

最後に、問題のファイルの先頭(すべての暗号化ガベージの前)が「Salted」であることを知っておくと便利な場合があります。 Vimが暗号化キーをソルトした場合、ソルトがどういうわけか失われる可能性がありますか(つまり、素人の言葉で)?

明確にするために、私の主な質問は次のとおりです。

  1. Vimがファイルを暗号化されており、復号化キーを必要としていると見なさなくなった原因は何ですか?テキストを復元できない場合でも、可能であれば将来的には回避できるようにしたいと思います。たとえば、暗号化されたファイルをDropboxと同期することは大したことではありませんか?
  2. 私がテキストを回復しようとするかもしれない他に何かありますか?ブルートフォーシングでさえ、キーの欠落の問題ではないため問題外のようですが、opensslを誤用しているか、別のVimソリューションを無視している可能性があります。

ありがとう!

———

編集:私は関連するかもしれない何か他のものに気づきました。私はこの問題を再現しようとしましたが、その過程で、「適切な」暗号化されたVimファイル(つまり、正常に復号化できるファイル)を使用して、クイックルックを使用してファイルを表示したり開いたりした場合に気付きました。テキストエディットでは、VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥のようなテキストを1行しか表示しません。しかし、問題のあるファイルを開くと、代わりに130行の見かけの暗号文が表示され、最初の行はSaltedで始まります(前述のとおり)。

7
Andy Mo

クエリのセクションを順不同で扱います。混乱しないことを願っています。

あなたの編集から、あなたのファイルはVimが開くことができないほど破損しているように見えます。 Vimの内部暗号化で暗号化されたすべてのファイルは「VimCrypt~N "ここで、" N "は数字です(現在、01と02のみがサポートされています)。ファイルが" Salted "で始まることは混乱を招きますが、Vimがファイルを認識しないことを確認します。 Vim暗号化ファイルとして。

ファイルを移動したり名前を変更したりしても、Vimがファイルを暗号化されていると認識する機能に影響を与えることはなく、正しいキーを使い続ける限り、問題なく復号化できます。ファイル名拡張子は、ファイルの内容を調べてVimで暗号化されたファイルかどうかを判断するため、Vimにとっても同様に無意味です。

また、Vimで暗号化されたファイルの1つをDropboxに保存していますが、破損する問題はありません。

あなたはBlowfishがVimのデフォルトの暗号化スキームであると信じていると述べました。これはnotの場合です。デフォルトはZipで、これは「安価で高速」であり、(おそらく)壊れやすいものです。これはVimがサポートする最初の暗号化方式でもあり、それが事実上のデフォルトとなった理由です。デフォルトでBlowfishにしたい場合は、vimrcに以下を入れる必要があります。

:set cryptmethod=blowfish

ポケットベルやその他のエディターでファイルを開いて(またはVimで開いてキーを入力せずに)、上記のヘッダープレフィックステキストを確認することで、Vimでファイルを開かなくても実際にファイルで使用されたものを特定できます。 「VimCrypt~01 "それはZipメソッドです。" VimCrypt~02 "より強力なBlowfishメソッドを使用します(編集で投稿したヘッダーの例は" 01 "。)

また、「:set cryptmethod?」と入力して、復号化されたファイルを現在編集している場合に、どの方法が使用されているかを判断できるはずです。 (疑問符はコマンドの一部です)。

6
Heptite