Jak mogę zaszyfrować plik?

11

Chciałbym pobrać niektóre pliki z mojego serwera na laptop, a chcę, aby komunikacja była jak najspokojniejsza i bezpieczniejsza. Do tej pory wymyśliłem VPN, w ten sposób przekierowałem cały ruch internetowy mojego laptopa przez mój serwer. Dodatkowo próbowałem wysłać plik za pomocą ftp i jednocześnie obserwując Wireshark. Komunikacja wydaje się być zaszyfrowana, jednak chciałbym również zaszyfrować sam plik (jako zabezpieczenie drugiego kroku lub coś w tym rodzaju).

Mój serwer to RasPi z systemem Raspbian. Mój laptop to Macbook Air.

Chcę najpierw zaszyfrować plik w moim Ras Pi, a następnie pobrać go. Jak mogę to zrobić?

drpaneas
źródło
1
gpgpotrafi szyfrować pliki, asymetrycznie (używając klucza publicznego do szyfrowania i klucza prywatnego do deszyfrowania) lub symetrycznie (używając tego samego klucza / hasła do szyfrowania i deszyfrowania: dewinter.com/gnupg_howto/english/GPGMiniHowto.html
Martin von Wittich
Dlaczego nie skorzystać z protokołu takiego jak HTTPS, SFTP lub FTPS? Jeśli komunikacja jest szyfrowana, dodanie drugiej warstwy szyfrowania nic ci nie da.
Gilles 'SO - przestań być zły'

Odpowiedzi:

22

Możesz użyć openssldo szyfrowania i deszyfrowania za pomocą szyfrów symetrycznych opartych na kluczach. Na przykład:

openssl enc -in foo.bar \
    -aes-256-cbc \
    -pass stdin > foo.bar.enc

Szyfruje to foo.bardo foo.bar.enc(możesz użyć -outprzełącznika, aby określić plik wyjściowy, zamiast przekierowywać standardowe wyjście, jak powyżej), używając 256-bitowego szyfru AES w trybie CBC . Dostępne są różne inne szyfry (patrz man enc). Polecenie będzie wtedy czekać na wprowadzenie hasła i użycie go do wygenerowania odpowiedniego klucza. Możesz zobaczyć klucz za pomocą -plub użyć własnego zamiast hasła za pomocą -K(w rzeczywistości jest to nieco bardziej skomplikowane niż to, ponieważ potrzebny jest wektor inicjujący lub źródło, zobacz man encponownie). Jeśli używasz hasła, możesz użyć tego samego hasła do odszyfrowania, nie musisz patrzeć ani przechowywać wygenerowanego klucza.

Aby to odszyfrować:

openssl enc -in foo.bar.enc \
    -d -aes-256-cbc \
    -pass stdin > foo.bar

Zwróć uwagę na -d. Zobacz także man openssl.

Złotowłosa
źródło
Możesz również wyprowadzić wynik do pliku za pomocą opcji -out FILENAMEzamiast przesyłać dane wyjściowe.
crazyGuy,
4

W przypadkach jednorazowych możesz zaszyfrować za pomocą zip i hasła. Chociaż nie jest tak silny jak techniki oparte na kluczach (ponieważ trudno jest mieć dobre hasło), prawdopodobnie jest to dobra sytuacja ad-hoc.

Wiersz polecenia wygląda następująco:

zip -r -0 -e encrypted_file.zip /path/to/files

-r to recurse directories.
-e to encrypt
Hogan
źródło