Esiste uno strumento per crittografare un file o una directory?


66

Qual è il modo più popolare per crittografare singoli file o cartelle?


La domanda non è chiara. Vuoi crittografare e decrittografare manualmente i file o al volo?
psusi,

4
Invece di "più popolare", può essere utile adattare una soluzione alle tue esigenze (come da domanda di psusi). Stai cercando una combinazione di facile, affidabile, nativo, sicuro, veloce, open source? Tutti o alcuni di questi?
belacqua,

7
Vorrei aggiungere l'osservazione che contrariamente a quanto sostengono alcune risposte, TrueCrypt non è considerato software libero o open source da Debian / Ubuntu / Fedora / Red Hat / Arch Linux / OpenSuse / Gentoo / etc.
JanC

Risposte:


46

GnuPG (GPG) può usare la crittografia asimmetrica e simmetrica. La crittografia asimmetrica prevede due chiavi, una chiave pubblica per la crittografia e una chiave privata per la decrittografia. Vedi la risposta di djeikyb in questa pagina per l'utilizzo della chiave asimmetrica.

Per la crittografia simmetrica, le chiavi di crittografia e decrittazione sono uguali. È importante rendersi conto che la maggior parte delle persone è molto cattiva nella scelta di password complesse. Pertanto, uno schema di crittografia che utilizza le password dovrebbe utilizzare una funzione di derivazione delle chiavi che impiega più risorse (tempo, memoria) per rallentare gli attacchi di forza bruta.

Per una descrizione del KDF di GnuPG, vedi questo post sullo scambio di criptovalute . Esempio di utilizzo della crittografia simmetrica:

gpg --symmetric < unencrypted_file > encrypted_file

decrittazione:

gpg --decrypt < encrypted_file > decrypted_file

Nota che gpgmemorizza nella cache la chiave di default (comportamento documentato). Per evitare ciò, utilizzare l' --no-symkey-cacheopzione come descritto in una risposta correlata .

Pagina manuale di gpg .


vecchia risposta per gli utenti che sono in grado di scegliere buone chiavi, vedere la nota di seguito

Per i singoli file, opensslè molto utile, soprattutto quando si invia il file su un canale non protetto (ad es. E-mail). È gratuito (in denaro e in libertà), a differenza di TrueCrypt, che è gratuito solo in denaro.

NOTA : la password immessa qui verrà elaborata da una iterazione MD5 1 . Se scegli una password "123456", avrai pochissima sicurezza.

Encrypt:

openssl aes-256-cbc -salt -in unencrypted_file -out encrypted_file

Ti verrà richiesta una password, che dovrai inserire due volte.

decrypt:

openssl aes-256-cbc -d -in encrypted_file -out unencrypted_file

Pagina del manuale per il programma enc .

1 openssl enc usa la funzione digest definita -mddall'opzione (default md5) e invoca la funzione EVP_BytesToKey()con un conteggio iterativo di 1. Questo può essere trovato nella fonte openssl all'indirizzo apps/enc.c.


C'è un modo per farlo senza un passpharse?
Assaf Lavie

@Assaf Lavie: OpenSSL non supporta file di chiavi se lo intendevi, sebbene possa leggere una password dalla prima riga di un file. Leggi la pagina di manuale su openssl, sezione Passare argomenti a frase .
Lekensteyn,

inoltre puoi usare il flag "-a" che ti permette di copiare il testo criptato, in questo modo: "openssl aes-256-cbc -a -salt -in unencrypted_file -out
crittoted_file

@ v2r Per aggiungere altri lettori: -abase64-codifica l'input (alias di -base64), per decrittografarlo è inoltre necessario aggiungere l' -aopzione.
Lekensteyn,

1
@Lucio aes-256è un alias per aes-256-cbc, non c'è differenza. CBC è una modalità operativa per i cifrari a blocchi. Vedere la pagina di manuale di enc(1)per un elenco di cifre supportate.
Lekensteyn,

30

Uso Seahorse per questo. È un front-end Gnome per GnuPG e si integra bene con nautilus:Integrazione di Nautilus

Per ottenere l'integrazione con nautilus, installa il pacchetto seahorse-nautilusdal Software Center: seahorse-nautilus Installa seahorse-nautilus


3
funziona solo se hai una chiave GPG creata nel tuo sistema ...
hhlp

3
@hhlp: la risposta di djeikyb spiega come farlo.
idbrii

1
Voglio crittografare la mia chiave GPG.
KI4JGT,

19

TrueCrypt : software di crittografia del disco freeware disponibile alla fonte , fuori produzione, non sicuro.


2
+1, encfs - con o senza una GUI - è molto utile e sufficiente per la maggior parte degli scopi.
loevborg,

3
Cryptkeeper è fantastico: semplice, potente e facile da configurare con Dropbox ( askubuntu.com/questions/19613/… ).
Scaine,

TrueCrypt non è impacchettato in Ubuntu (o in altre importanti distribuzioni) per problemi di licenza.
MagicFab

2
TrueCrypt non è così open-source. en.wikipedia.org/wiki/…
yuric

4
"ATTENZIONE: l'utilizzo di TrueCrypt non è sicuro" - TrueCrypt
user457015,

16

Un metodo cli sarebbe GnuPG e forse tar. Questa è una breve guida di riferimento, dovresti davvero leggere la documentazione.

Prima esecuzione gpg --gen-key. Seguire le istruzioni per generare la coppia di chiavi pubblica / privata. Ora è possibile crittografare file: gpg -e foo.txt. Questo creerà un file chiamato foo.txt.gpg. GnuPG non elimina il file originale non crittografato, dipende da te se vuoi che sia in giro. Per decrittografare foo.txt.gpg, eseguire gpg foo.txt.gpg. La decrittografia ti chiederà prima di sovrascrivere i file esistenti.

Se devi crittografare una directory, prima tar:

tar -cf foo.tar foo/
gpg -e foo.tar

È possibile rinominare il file crittografato come desiderato. Quando viene decrittografato, viene conservato il nome del file originale.


2
I vantaggi di questo metodo sono: in primo luogo non richiede l'installazione di pacchetti aggiuntivi; In secondo luogo non richiede l'accesso come root. Aggiungerei la compressione al comando tar (xz o gz).
Pantera il

12

C'è anche eCryptfs , che Ubuntu usa per crittografare le home directory.

È possibile selezionare la crittografia della home directory al momento dell'installazione oppure è possibile impostare una singola directory, $HOME/Privateper impostazione predefinita, utilizzando l' utilità ecryptfs-setup-private . Questa cartella può essere configurata per il montaggio automatico all'accesso e lo smontaggio al logout. Ogni singolo file e cartella all'interno $HOME/Private, ricorsivamente, sarà crittografato.


Sfortunatamente eCryptfs è MOLTO lento. Inoltre ci sono alcuni bug nell'ultima versione
ruX

Al contrario, semmai eCryptfs è più veloce di gpg; per impostazione predefinita gpg tenta di comprimere prima della crittografia. E eCryptfs è ora utilizzato anche dalla maggior parte degli Android
Xen2050,

2

È inoltre possibile utilizzare "Firma accademica" per utilizzare la crittografia a curva ellittica con una GUI di wxWidgets. È open source ma non nei repository. Fa principalmente crittografia asimmetrica ECC, firme e timestamp. Ma lo strumento ha anche una voce di menu per invocare Gnupg (RSA) e l'accesso diretto alla crittografia / decrittografia simmetrica dei file che offrono AES e altri algoritmi. La sua homepage è qui: https://www.academic-signature.org

Lo uso molto per proteggere i file in transito e per firmare digitalmente i documenti accademici (trascrizioni, lettere di raccomandazione, liste di voti ecc.)


1

Ho preso alcuni degli altri suggerimenti e creato un semplice wrapper di script di shell (per i più pigri)

https://github.com/orionM/ssl-crypt-tools

godere


1
hmm, bash script usando openssl aes-256-cbc ...Sai invece di usare if [ $? -ne 0 ] ; then... fipuoi semplicemente usare ||? E ci sono alcune persone che pensano che OpenSSL "* abbia avuto diversi importanti difetti di sicurezza nell'ultimo anno [ Heartbleed ], mentre i documenti Snowden mostrano che GPG è uno dei pochi programmi che potrebbero ostacolare l'NSA se usato correttamente. Anche il codice OpenSSL è un pozzo nero completo e ha una copertura test terribile. (Divulgazione: [lui] lavora [s] su un progetto "OpenSSL succhia; ripariamolo".) - jbarlow * "
Xen2050
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.