Come crittografare un file o una directory in Linux?


26

Qual è il comando più popolare per fare cose come crittografare un file o una directory nel terminale in Linux?

Risposte:


31

Penso che sarebbe gpg. La sintassi per file e directory differisce però.

crittografia

Per i file (output nomefile.gpg):

gpg -c filename

Per dir:

gpg-zip -c -o file.gpg dirname

decrittazione

Per i file (output nomefile.gpg):

gpg filename.gpg

Per dir:

gpg-zip -d file.gpg

Modifica: corretto come @ Mk12 ha sottolineato l'errore di compressione / decompressione per crittografia / decrittografia.


Non dovrebbe essere "Crittografia" e "Decrittazione"?
mk12

Nessuno ha detto come crittografare una directory.
Chovy

1
@chovy Non che sopra dice: Per dirs: gpg-zip -c -o file.gpg dirname
celebdor

@celebdor ha perso quello. Grazie. modifica: non funziona per me. Ottengo alcuni strani output crittografati quando decrittografare il file.
Chovy

@chovy: mi dispiace sentirlo. Posso confermare che la crittografia e la decrittografia delle directory come mostrato sopra ha funzionato per me, usando gpg-zip (GnuPG) 1.4.16 sotto la zecca 17.
Michael Scheper,

10
  • con openssl

openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3

Decrypt:

openssl des3 -d -salt -in encrypted-data.tar.des3 -out unencrypted-data.tar

  • crittografare con AES

aescrypt -e -p password file.jpg

Decrypt:

aescrypt -d -p password file.jpg.aes


1
+1 per mostrare come farlo con openssl, che è molto probabilmente disponibile immediatamente.
DevSolar,

In effetti, ma 3DES è considerato insicuro e non deve essere utilizzato, AES (aescrypt) è una scelta molto migliore, vedi: stackoverflow.com/questions/1619212/...
jmng

2

Prova GnuPG .

Per crittografare: gpg -c filename

Per decifrare: gpg filename.gpg


2

Questo è il mio metodo usando openssl e tar

Apri directory crittografata:

openssl enc -aes-256-cbc -d -in ~/vault.tar.gz.dat | tar xz; thunar ~/vault

Blocca directory crittografata:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault

1
rm -rnon elimina i dati; semplicemente lo scollega. Dovrai usare qualcosa di simile srmper cancellare i dati dal disco.
jbindel,

2

Personalmente uso aescryptprincipalmente.

      aescrypt -e "File" 

e decifrare:

      aescrypt -d "File"

O c'è mcrypt:

      mcrypt "File" 

e decifrare:

      mcrypt -d "File"

E per una directory, suggerisco di tarare la directory e crittografarla. Quindi dopo la decodifica, basta decomprimere il file:

      tar -cf "Dir.tar" Dir/

e di sparare

      tar -xf "Dir.tar"

1

Se il massimo livello di sicurezza non è un grosso problema (la pagina man di zip dice che l'algoritmo di crittografia usato dalle utility zipfile è più debole di PGP), allora preferisco zip e unzip. Comprime le mie directory e crittografa allo stesso tempo. Preferisco zip perché puoi avere una sorta di zip incrementale e crittografare invece di zippare e crittografare di nuovo il tutto. Soprattutto è utile quando le dimensioni della directory sono molto grandi.

ZIP e crittografare

zip file.zip file
zip -r directory.zip directory
zip --encrypt file.zip.enc file # prompt for password
zip --encrypt -r directory.zip.enc directory # prompt for password

Decomprimi e decodifica

unzip directory.zip.enc #Beware if any directory is present with the same name as the zipped file, then it would be overwritten. Hence I normally send the contents to another directory.

unzip directory.zip.enc -d directory-new # prompts for password

0

Potrebbe non essere popolare, ma ho lavorato a un progetto per crittografare / decrittografare qualsiasi cosa con una minima interazione dell'utente attraverso l'uso di alcuni script Bash. Ecco un link al post di Hak5 che spiega la configurazione per i test.

Analizzando le logiche del codice sorgente, ecco cosa succede per ogni tipo di dati che possono essere gestiti dal progetto collegato sopra

_gnupg_encrypt_opts="--always-trust --armor --batch --encrypt --recipient user@host.domain"
 _bulk_output_dir="some_path"
_arbitrary_parsed_output="some_file.gpg"
## If file make encrypted time stamped file with similar name
_path_to_file="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_${_path_to_file##*/}.gpg"
cat "${_path_to_file}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if directory make compressed encrypted time stamped output file
_path_to_dir="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_dir.tgz.gpg
tar -cz - "${_path_to_dir}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if something else append encrypted output to file
_path_to_output="${_arbitrary_parsed_output}"
cat <<<"${_mapped_input}" | gpg ${gpg _gnupg_encrypt_opts} >> "${_path_to_output}"

La ${_mapped_input}variabile viene impostata leggendo un mkfifofile di pipe denominato e impostando qualsiasi cosa letto in un array con il mapfile -t _lines < "${_file_to_map}"quale viene successivamente espanso e salvato in un ${_mapped_input}... un po 'contorto, ma consente alle funzioni sperimentali di agire su singole righe. Risultati finali si finisce con una directory per contenere file crittografati o directory compresse e un file con vari pacchetti di dati crittografati.

La decrittografia per file o directory compresse è abbastanza semplice su un dispositivo con una chiave privata correlata alla chiave pubblica utilizzata per la crittografia. Ma la decrittografia di pacchetti di dati crittografati con più armature era un po 'più dura, quindi c'è uno script chiamato Paranoid_Pipes_Scenario_One.shnel progetto sopra scritto per fare tutto con un'interazione minima da parte dell'utente. Di seguito è riportata una versione semplificata del codice sorgente degli script helper per i normali file e directory crittografati.

_gnupg_decrypt_opts="--quiet --no-tty --always-trust --passphrase-fd 9 --decrypt"
_decryption_output_dir="some_directory"
# if file
exec 9<"${_pass[@]}"
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.gpg*}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} > "${_decryption_output_dir}/${_output_name}"
# else if compressed file
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tgz.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xzf -
cd "${_old_pwd}"
# else if non-compressed directory
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tar.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xf -
cd "${_old_pwd}"

Se desideri vedere quali altre funzioni stanno funzionando e testando in modo verificabile pubblicamente, dai un'occhiata ai registri di build di Travis-CI (specialmente vicino alla fine dei registri) scoprirai che ci sono altre cose fantasiose su cui si sta lavorando in relazione alla crittografia e alla decrittografia di quasi tutti i dati.


0

Usa FinalCrypt - Crittografia file / directory OpenSource One-Time Pad infrangibile (GUI e CLI)

Crea i tasti One-Time Pad da solo

java -cp FinalCrypt.jar rdj/CLUI --encrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Parola d'ordine:

Iniziato a crittografare 4 file per un totale di 249,7 MiB

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 "/ home / ron / My-test-Directory / Video / castello-waxjo-sweden.mp4.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" -> "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" 91,2% 🔒" /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 "/ Home / ron / My-Test-directory / Brother DSmobile 700d_uke_usr.pdf.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

File di crittografia [4/4] terminati totalmente [249,7 MiB / 249,7 MiB] in 7,3 secondi (media: 34,2 MiB / s)

java -cp FinalCrypt.jar rdj/CLUI --decrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Parola d'ordine:

Iniziato a decodificare 4 file per un totale di 124,9 MiB

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" -> "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" 32,8% 🔓 "/ home / ron / My-test-Directory / Video / Eerebegraafplaats.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" -> "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" 91,2% 🔓 "/ home / ron / My-test -Directory / Brother dsmobile 700d_uke_usr.pdf "🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256:" 88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073ECB05EF05295FB/home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" -> "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" 100,0%

Decifratura completa dei file [4/4] in totale [124,9 MiB / 124,9 MiB] in 3,4 secondi (media: 36,3 MiB / s)

Ha anche una GUI

Sto solo cercando di aiutare la community ...



FinalCrypt 5 ha aggiunto la chiave automatica e crea le chiavi OTP automaticamente, quindi la discussione a cui si riferisce Scott non è più pertinente
Ron de Jong

Vorrei vedere una descrizione di come funziona più tecnica e meno agitando la mano. Il problema è che i pad one-time (1) sono ottimi per la trasmissione di dati e pessimi per l'  archiviazione e (2) dovrebbero essere casuali.  Se gli OTP di FinalCrypt sono veramente casuali, devono essere archiviati, il che compromette la sicurezza. Se possono essere rigenerati, allora non sono casuali, ma solo pseudo-casuali e quindi non sono OTP appropriati. ... (proseguendo)
Scott,

(Continua) ... La loro pagina sulla  gestione automatica delle chiavi indica che gli OTP sono memorizzati "su un'unità esterna (USB) rimovibile. "OK, potrebbe funzionare. Ma, se è necessario collegare l'unità USB ogni volta che si desidera decrittografare il file (e dato che un OTP deve essere almeno grande quanto il file che crittografa), è possibile anche archiviare i file sull'unità rimovibile e non preoccuparsi della crittografia. ... (proseguendo)
Scott,

(Proseguendo) ... Inoltre, la pagina principale di FinalCrypt dice "la maggior parte dei software di crittografia utilizza AES ..." rotto, ma afferma che AES è "rotto" sembra essere molto esagerato. Correlati: Perché AES è considerato sicuro? (sullo  scambio di stack di crittografia ).
Scott,
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.