O Vim não solicita mais a chave de criptografia ao ler o arquivo criptografado; por que não, e como posso restaurá-lo?

7

Recentemente, comecei a usar o Vim para criptografar arquivos de texto (usando o comando :X e digitando uma chave de criptografia no prompt). Conforme documentado, o Vim solicita a chave quando eu reabrir o arquivo e descriptografar o texto.

Hoje abri um desses arquivos criptografados, mas para minha surpresa, o Vim não me solicitou nenhuma chave e simplesmente exibiu texto criptografado. É claro que reabrei o arquivo várias vezes, mas sempre com o mesmo resultado. (Eu estou usando o Vim 7.3 no OS X. Eu não encontrei nenhuma diferença de comportamento no MacVim vs. a versão não-GUI.)

Eu tenho três palpites vagos sobre o que poderia estar causando esse problema:

  1. Eu tinha renomeado o arquivo em questão - possivelmente mais de uma vez - depois de ter sido criptografado. Infelizmente, não me lembro se já descriptografei o arquivo com sucesso desde a última renomeação.
  2. Este arquivo é armazenado na minha pasta Dropbox, portanto, se o arquivo foi alterado de alguma forma no servidor Dropbox, essa versão presumivelmente teria substituído a minha (anteriormente boa) versão local. (No entanto, quando tento recuperar uma versão antiga do arquivo via Dropbox , eu só encontro uma única versão do o arquivo, e eu não posso descriptografar isso.)
  3. Combinando os dois acima: Eu realmente renomeiei o arquivo para que ele tenha uma extensão .crypt , não achando que isso importaria localmente, mas vejo que o Dropbox está realmente identificando esse arquivo (na coluna Kind ) como% código%. Talvez o Dropbox tenha lidado com esse arquivo de maneira diferente, de alguma forma, se o reconhecesse como um arquivo criptografado? (No entanto, quando eu armazeno um arquivo de texto não criptografado com extensão file crypt , não tenho nenhum problema para lê-lo.)

Eu tentei usar o openssl para recuperar o arquivo, especificamente como .crypt . Mas isso informa openssl bf -d -in [encrypted file] -out [decrypted file] (ou pequenas variações).

(Deixe-me preemptivamente deixar claro que tenho 99% de certeza que este não é o caso de eu usar a chave de criptografia errada, pois eu havia descriptografado o arquivo várias vezes no passado, e agora o Vim não está nem solicitando para uma chave. Eu também verifiquei duas vezes que estou usando a tecla certa com o openssl.)

Eu usei a criptografia padrão do Vim, que eu entendo ser blowfish em 7.3 (embora eu tenha tentado alguns outros comandos de cifra com o openssl, mas não tenha certeza de qual pkzip, o que eu entendo ser a criptografia mais antiga do Vim) algoritmo.)

Não encontrei nada de relevante em bad decrypt 1948:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/evp/evp_enc.c:330: , exceto tentar usar :help encryption para garantir que o Vim me peça uma chave para arquivos criptografados, mas ainda não. Esta foi a única solução sugerida em questões um pouco semelhantes que eu encontrei em outro lugar (por exemplo, esta questão , embora digitar a chave sans prompt no meu caso é simplesmente interpretado como comandos a partir do modo normal).

Finalmente, pode ser útil saber que o início do arquivo em questão (antes de todo o lixo criptografado) é "Salgado"; se o Vim salgou a chave de criptografia, o sal poderia, de alguma forma, desaparecer (em termos leigos)?

Só para ficar claro, minhas principais perguntas são:

  1. O que está fazendo com que o Vim não veja mais o arquivo como criptografado e precise de uma chave de descriptografia? Mesmo que não consiga recuperar o texto, gostaria de poder evitá-lo no futuro, se possível. Por exemplo, está sincronizando um arquivo criptografado com o Dropbox um grande não-não?
  2. Há mais alguma coisa que eu possa tentar recuperar o texto? Até mesmo a força bruta parece fora de questão, já que não é um problema de falta de chave, mas talvez eu esteja usando indevidamente o openssl ou ignorando outra solução da Vim.

Obrigado!

———

EDIT: Eu notei algo mais que pode ser relevante. Tentei replicar esse problema e, no decorrer disso, percebi que com um arquivo Vim criptografado "bom" (ou seja, um que eu possa descriptografar com êxito), se eu usar o Quick Look para visualizar o arquivo ou se abri-lo no TextEdit, vejo apenas uma única linha de texto que lê algo como :set key= . Mas quando abro o arquivo com o qual estou tendo problemas, em vez disso, obtenho 130 linhas de texto cifrado aparente, com a primeira linha começando com VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥ (como mencionado acima).

    
por Andy Mo 07.01.2013 / 16:15

1 resposta

6

Vou abordar as secções da sua consulta fora de ordem, espero que não seja confuso.

A partir da sua edição, parece-me que o seu arquivo está corrompido além do Vim poder abri-lo. Todos os arquivos criptografados com a criptografia interna do Vim devem começar com " VimCrypt~N ", onde " N " é um número (atualmente apenas 01 e 02 são suportados). O fato de seu arquivo começar com " Salted " é confuso, mas confirma que o Vim não reconhecerá o arquivo como um arquivo criptografado Vim.

Mover ou renomear o arquivo não deve afetar a capacidade do Vim de reconhecê-lo como criptografado e, desde que você continue usando a chave correta, ele deve ser descriptografado sem problemas. A extensão de nome de arquivo deve ser igualmente sem sentido para o Vim, pois ele analisa o conteúdo do arquivo para determinar se é um arquivo criptografado pelo Vim.

Eu também mantenho um dos meus arquivos criptografados Vim no Dropbox e não tive problemas com ele sendo corrompido.

Você mencionou que acredita que Blowfish é o esquema de criptografia padrão do Vim. Este não é o caso. O padrão é zip , que é "barato e rápido" e também (provavelmente) quebrável. É também o primeiro método de criptografia suportado pelo Vim, e é por isso que se tornou o padrão de fato. Se você quiser usar o padrão Blowfish , você precisa colocar o seguinte no seu vimrc:

:set cryptmethod=blowfish

Você pode realmente determinar o que foi usado em um arquivo sem abri-lo no Vim abrindo o arquivo em um pager ou outro editor (ou mesmo abrindo-o no Vim e não digitando uma chave) e olhando para o cabeçalho acima mencionado. prefixo de texto. Se ele diz " VimCrypt~01 ", é o método zip . Se ele diz " VimCrypt~02 ", ele usa o método Blowfish mais strong. (Você notará que o exemplo de cabeçalho que você publicou na sua edição mostra " 01 ".)

Você também deve ser capaz de determinar qual método é usado se estiver editando o arquivo descriptografado digitando ": set cryptmethod?" (o ponto de interrogação faz parte do comando).

    
por 07.01.2013 / 19:53