7

Недавно я начал использовать Vim для шифрования текстовых файлов (с помощью команды :X и ввода ключа шифрования в командной строке). Как задокументировано, Vim запрашивает этот ключ при повторном открытии файла и расшифровывает текст.

Сегодня я открыл один из этих зашифрованных файлов, но, к моему удивлению, Vim не запрашивал у меня ни одного ключа, а просто отображал зашифрованный текст. Я, конечно, открывал файл еще несколько раз, но всегда с тем же результатом. (Я использую Vim 7.3 на OS X. Я не нашел никакой разницы в поведении в MacVim по сравнению с версией без GUI.)

У меня есть три смутных догадки относительно того, что может быть причиной этой проблемы:

  1. Я переименовал данный файл - возможно, несколько раз - после того, как он был зашифрован. К сожалению, я не могу вспомнить, успешно ли расшифровывал файл после последнего переименования.
  2. Этот файл хранится в моей папке Dropbox, поэтому, если файл каким-либо образом был изменен на сервере Dropbox, эта версия, вероятно, перезаписала бы мою (ранее хорошую) локальную версию. (Однако, когда я пытаюсь восстановить старую версию файла через Dropbox, я нахожу только одну версию файла, и я также не могу расшифровать ее.)
  3. Объединяя два вышеупомянутых: я фактически переименовал файл, чтобы он имел расширение .crypt , не думая, что это будет иметь значение локально, но я вижу, что Dropbox фактически идентифицирует этот файл (в столбце Kind ) как file crypt . Возможно, Dropbox каким-то образом обрабатывает этот файл по-разному, если распознает его как зашифрованный файл? (Однако, когда я сохраняю незашифрованный текстовый файл с расширением .crypt , у меня не возникает проблем при его чтении.)

Я попытался использовать openssl для восстановления файла, в частности, как openssl bf -d -in [encrypted file] -out [decrypted file] . Но это сообщает о 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.)

Я использовал стандартное шифрование Vim, которое, как я понимаю, было Blowfish в 7.3 (хотя я пробовал несколько других команд шифрования с openssl, но не был уверен, что, если таковые имеются, соответствовало pkzip, который я понимаю как более старый алгоритм шифрования Vim.)

Я не нашел ничего релевантного в :help encryption кроме как попытаться использовать :set key= чтобы Vim запрашивал у меня ключ для зашифрованных файлов, но он все равно этого не делает. Это было единственное решение, предложенное в несколько похожих вопросах, которые я нашел в другом месте (например, этот вопрос, хотя ввод подсказки «ключ без ключа» в моем случае просто интерпретируется как команды, начинающиеся в обычном режиме).

Наконец, может быть полезно знать, что начало рассматриваемого файла (перед всем мусором шифрования) является "Соленым"; если Vim засолил ключ шифрования, может ли соль как-то пропасть (в терминах непрофессионала)?

Просто чтобы прояснить, мои основные вопросы:

  1. Что заставляет Vim больше не видеть файл как зашифрованный и нуждающийся в ключе дешифрования? Даже если я не смогу восстановить текст, я бы хотел избежать этого в будущем, если это возможно. Например, является ли синхронизация зашифрованного файла с Dropbox большой проблемой?
  2. Есть ли что-нибудь еще, что я мог бы попытаться восстановить текст? Даже грубое принуждение кажется невозможным, поскольку это не проблема отсутствия ключа, но, возможно, я неправильно использую openssl или игнорирую другое решение Vim.

Спасибо!

---

РЕДАКТИРОВАТЬ: я заметил кое-что еще, что может иметь отношение. Я попытался воспроизвести эту проблему, и в ходе этого я заметил, что с помощью "хорошего" зашифрованного файла Vim (т. Е. Файла, который я могу успешно расшифровать), если я использую Quick Look для просмотра файла или если я его открываю в TextEdit я вижу только одну строку текста, которая читает что-то вроде VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥ . Но когда я открываю файл, с которым у меня возникли проблемы, я вместо этого получаю 130 строк зашифрованного текста, причем первая строка начинается с Salted (как упоминалось выше).

1 ответ1

6

Я собираюсь обратиться к разделам вашего запроса не по порядку, надеюсь, это не будет сбивать с толку.

Из твоего редактирования мне кажется, что твой файл поврежден из-за того, что Vim не смог его открыть. Все файлы, зашифрованные с помощью внутреннего шифрования Vim, должны начинаться с « VimCrypt~N », где « N » - это число (в настоящее время поддерживаются только 01 и 02). То, что ваш файл начинается с « Salted », сбивает с толку, но подтверждает, что Vim не распознает файл как зашифрованный Vim-файл.

Перемещение или переименование файла не должно влиять на способность Vim распознавать его как зашифрованный, и, пока вы продолжаете использовать правильный ключ, он должен расшифровываться без проблем. Расширение имени файла также должно быть бессмысленным для Vim, поскольку оно просматривает содержимое файла, чтобы определить, является ли оно зашифрованным файлом Vim.

Я также храню один из моих зашифрованных файлов Vim в Dropbox, и у меня не было проблем с его повреждением.

Вы упомянули, что считаете, что Blowfish - это схема шифрования Vim по умолчанию. Это не тот случай. По умолчанию используется zip который является "дешевым и быстрым", а также (вероятно) ломким. Это также первый поддерживаемый Vim метод шифрования, поэтому он стал де-факто по умолчанию. Если вы хотите использовать Blowfish по умолчанию, вам нужно добавить следующее в ваш vimrc:

:set cryptmethod=blowfish

На самом деле вы можете определить, какой файл был использован для файла, не открывая его в Vim, открыв файл в пейджере или другом редакторе (или даже открыв его в Vim и не введя ключ) и посмотрев вышеупомянутый текст префикса заголовка. Если он говорит « VimCrypt~01 », это метод zip . Если он говорит « VimCrypt~02 », он использует более сильный метод Blowfish . (Обратите внимание, что пример заголовка, который вы разместили в своем редакторе, показывает « 01 ».)

Вы также должны быть в состоянии определить, какой метод используется, если вы в настоящее время редактируете расшифрованный файл, набрав ":set cryptmethod?msgstr "(знак вопроса является частью команды).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .