Como posso criptografar um arquivo?

10

Gostaria de baixar alguns arquivos do meu servidor para o meu laptop, e o importante é que eu queira que essa comunicação seja o mais furtiva e segura possível. Até agora, eu vim usando VPN, dessa maneira redireciono todo o tráfego da Internet do meu laptop através do meu servidor. Além disso, tentei enviar um arquivo usando ftp e observando o Wireshark ao mesmo tempo. A comunicação parece estar criptografada, no entanto, eu também gostaria de criptografar o próprio arquivo (como uma segurança da segunda etapa ou algo assim).

Meu servidor é um RasPi executando o Raspbian. Meu laptop é o Macbook Air.

Quero primeiro criptografar um arquivo no meu Ras Pi e depois fazer o download. Como eu posso fazer isso?

drpaneas
fonte
1
gpgpode criptografar arquivos assimetricamente (usando uma chave pública para criptografia e uma chave privada para descriptografia) ou simetricamente (usando a mesma chave / senha para criptografia e descriptografia: dewinter.com/gnupg_howto/english/GPGMiniHowto.html
Martin von Wittich
Por que não usar um protocolo como HTTPS, SFTP ou FTPS? Se a comunicação estiver criptografada, adicionar uma segunda camada de criptografia não lhe renderá nada.
Gilles 'SO- stop be evil'

Respostas:

22

Você pode usar opensslpara criptografar e descriptografar usando cifras simétricas baseadas em chave. Por exemplo:

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

Isso criptografa foo.barpara foo.bar.enc(você pode usar o -outswitch para especificar o arquivo de saída, em vez de redirecionar o stdout como acima), usando uma cifra AES de 256 bits no modo CBC . Existem várias outras cifras disponíveis (consulte man enc). O comando esperará que você digite uma senha e use-a para gerar uma chave apropriada. Você pode ver a chave -pou usar a sua própria no lugar de uma senha -K(na verdade, é um pouco mais complicada do que isso, pois é necessário um vetor ou fonte de inicialização , veja man encnovamente). Se você usar uma senha, poderá usar a mesma senha para descriptografar, não precisará procurar ou manter a chave gerada.

Para descriptografar isso:

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

Observe o -d. Veja também man openssl.

Cachinhos Dourados
fonte
Além disso, você pode enviar o resultado para um arquivo usando a opção em -out FILENAMEvez de canalizar a saída.
crazyGuy
4

Para casos únicos, você pode criptografar usando zip e uma senha. Embora não seja tão forte quanto as técnicas baseadas em chave (porque é difícil ter uma boa senha), provavelmente são boas situações ad-hoc.

A linha de comando fica assim:

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

-r to recurse directories.
-e to encrypt
Hogan
fonte