Vim non richiede più la chiave di crittografia durante la lettura del file crittografato; perché no e come posso ripristinarlo?


7

Recentemente ho iniziato a usare Vim per crittografare i file di testo (usando il :X comando e inserimento di una chiave di crittografia al prompt). Come documentato, Vim richiede quindi quella chiave quando riapro il file e decodifica il testo.

Oggi ho aperto uno di quei file crittografati, ma con mia sorpresa Vim no richiedere una chiave e visualizzare semplicemente il testo crittografato. Ovviamente ho riaperto il file diverse volte, ma sempre con lo stesso risultato. (Sto usando Vim 7.3 su OS X. Non ho riscontrato differenze di comportamento in MacVim rispetto alla versione non GUI.)

Ho tre impressioni vaghe su ciò che potrebbe causare questo problema:

  1. Avevo rinominato il file in questione, forse più di una volta, dopo che era stato crittografato. Sfortunatamente, non riesco a ricordare se ho mai decifrato il file con successo dall'ultimo rinominare.
  2. Questo file è archiviato nella mia cartella Dropbox, quindi se il file è stato modificato in qualche modo sul server Dropbox, quella versione presumibilmente avrebbe sovrascritto la mia (in precedenza buona) versione locale. (Tuttavia, quando provo a recuperare una vecchia versione del file tramite Dropbox , Trovo solo una singola versione del file, e non riesco a decodificarlo.)
  3. Combinando i due precedenti: in realtà ho rinominato il file in modo che abbia a .crypt estensione, non pensando che questo sarebbe rilevante a livello locale, ma vedo che Dropbox sta effettivamente identificando questo file (nel file Kind colonna) come file crypt. Forse Dropbox ha gestito quel file in modo diverso in qualche modo se lo riconosceva come un file crittografato? (Tuttavia, quando memorizzo un file di testo non criptato con estensione .crypt, Non ho alcun problema a leggerlo.)

Ho provato a usare openssl per recuperare il file, in particolare come openssl bf -d -in [encrypted file] -out [decrypted file]. Ma questo riporta bad decrypt 1948:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/evp/evp_enc.c:330: (o lievi variazioni).

(Permettetemi di chiarire preventivamente che sono sicuro al 99% che questo non è un caso in cui io uso la chiave di crittografia sbagliata, dato che ho decodificato il file numerose volte in passato, e ora Vim non richiede nemmeno una chiave Ho anche ricontrollato che sto usando il tasto giusto con openssl.)

Ho usato la crittografia predefinita di Vim, che ho capito essere blowfish in 7.3 (anche se ho provato qualche altro comando di cifratura con openssl ma non ero sicuro di quale, se esiste, corrispondesse a pkzip, che capisco essere l'algoritmo di crittografia più vecchio di Vim.)

Non ho trovato nulla di rilevante in :help encryption tranne per provare a usare :set key= per garantire che Vim mi chieda una chiave per i file crittografati, ma continua a non farlo. Questa era l'unica soluzione suggerita in domande un po 'simili che ho trovato altrove (ad es. questa domanda , sebbene digitando il prompt sans chiave nel mio caso viene semplicemente interpretato come comandi che iniziano in modalità normale).

Infine, può essere utile sapere che l'inizio del file in questione (prima di tutta la spazzatura di crittografia) è "Salato"; se Vim ha salato la chiave di crittografia, potrebbe il sale in qualche modo scomparire (in, ahem, i termini del laico)?

Per essere chiari, le mie domande principali sono:

  1. Cosa sta causando a Vim di non vedere più il file come crittografato e che necessita di una chiave di decodifica? Anche se non riesco a recuperare il testo, mi piacerebbe poterlo evitare in futuro se possibile. Ad esempio, sincronizzare un file crittografato con Dropbox è un grande no-no?
  2. C'è qualcos'altro che potrei provare a recuperare il testo? Anche la forzatura bruta sembra fuori discussione dal momento che non è un problema chiave mancante, ma forse sto usando in modo errato OpenSSL o ignorando un'altra soluzione Vim.

Grazie!

---

MODIFICARE: Ho notato qualcos'altro che potrebbe essere rilevante. Ho provato a replicare questo problema e nel corso di questo ho notato che con un file Vim "buono" crittografato (cioè, uno che posso decodificare con successo), se uso Quick Look per visualizzare il file o se lo apro in TextEdit, vedo solo una singola riga di testo che legge qualcosa di simile VimCrypt~01!9‰◊ëMå Ø^efl.œ1b_öä˙ß≥. Ma quando apro il file con cui ho problemi, ottengo invece 130 righe di testo cifrato apparente, con la prima riga che inizia con Salted (come menzionato sopra).


1
Potresti condividere le impostazioni correlate che hai nel tuo file .vimrc? Succede solo con un file o con ogni file?
greduan

Non sono sicuro di cosa possa influenzare il mio .vimrc; le uniche cose che posso immaginare sono la modifica del file che ho impostato autoread, smarttab, autoindent, wrap, e showbreak.
Andy Mo

1
Non riesco nemmeno a replicare questo. Ho creato un altro file, l'ho crittografato, decrittografato con successo, rinominato, decrittografato con successo, spostato su Dropbox e decodificato di nuovo correttamente. Una cosa che ho notato è che quando ho cambiato l'estensione in * .crypt in Finder, un'estensione * .txt nascosta era ancora accodata, e OSX mostrava ancora l'icona del file "TXT". Ma anche dopo aver eliminato l'estensione * .txt con Terminal I posso ancora decodificare con successo.
Andy Mo

1
Hmm, assicurati che Finder smetta di nascondere queste estensioni di file (nelle sue impostazioni). Bene, fai molti test in molti casi. Prova anche a rinominare il file, ecc. Verifica se riesci a trovarne la causa. Inoltre, quelle impostazioni che hai mostrato non influenzano questo. :)
greduan

1
Dopo anni costringendo OS X a mostrare estensioni che a quanto pare sono scadute, così che l'ambientazione è tornata, almeno! Buoni suggerimenti sui casi di test.
Andy Mo

Risposte:


6

Ho intenzione di indirizzare le sezioni della tua query fuori servizio, sperando che non ci sia confusione.

Dalla tua modifica, mi sembra che il tuo file sia danneggiato oltre la possibilità che Vim sia in grado di aprirlo. Tutti i file crittografati con la crittografia interna di Vim dovrebbero iniziare con " VimCrypt~N " dove " N "è un numero (attualmente solo 01 e 02 sono supportati). Che il tuo file inizia con" Salted "è confuso, ma conferma che Vim non riconoscerà il file come un file Vim crittografato.

Lo spostamento o la ridenominazione del file non dovrebbe influire sulla capacità di Vim di riconoscerlo come crittografato e finché si continua a utilizzare la chiave corretta, è necessario decrittografarlo senza problemi. Anche l'estensione del nome file dovrebbe essere priva di significato per Vim, dal momento che considera il contenuto del file per determinare se si tratta di un file Vim crittografato.

Conservo anche uno dei miei file Vim crittografati in Dropbox e non ho avuto problemi con il danneggiamento.

Hai detto che ci credi Blowfish è lo schema di crittografia predefinito di Vim. Questo è non il caso. L'impostazione predefinita è zip che è "economico e veloce" e anche (probabilmente) fragile. È anche il primo metodo di crittografia supportato da Vim ed è il motivo per cui è diventato di fatto l'impostazione predefinita. Se si desidera il default a Blowfish devi mettere il seguente nel tuo vimrc:

:set cryptmethod=blowfish

È possibile determinare quale sia stato utilizzato su un file senza aprirlo in Vim aprendo il file in un cercapersone o in un altro editor (o anche aprendolo in Vim e non inserendo una chiave) e guardando il testo di prefisso di intestazione sopra menzionato. Se dice " VimCrypt~01 " è il zip metodo. Se dice " VimCrypt~02 "usa il più forte Blowfish metodo. (Noterai che l'esempio di intestazione che hai pubblicato nella tua modifica mostra " 01 ".)

Dovresti anche essere in grado di determinare quale metodo viene utilizzato se stai modificando il file decrittografato digitando ": set cryptmethod?" (il punto interrogativo fa parte del comando).


1
Grazie per tutte le buone informazioni, anche se conferma le mie paure sul file! In realtà, l'ho pensato pkzip era il metodo di crittografia predefinito e ha cercato di utilizzare openssl per quello, ma qualcosa che ho letto durante la ricerca di questo mi ha fatto pensare che Vim avesse & lt; em & gt; changed & lt; / em & gt; il predefinito a blowfish in 7.3 invece di aggiungerlo. Errore mio.
Andy Mo

1
Bram Moolenaar, il proprietario e lo sviluppatore principale di Vim, non ama cambiare le impostazioni predefinite una volta che sono state stabilite. Penso che in questo caso dovrebbe avere, poiché dubito che avrebbe rotto qualcosa.
Heptite

1
Ho appena scoperto VimCrypt ~ 03 è blowfish2
Pete
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.