Criptografar Arquivos com OpenSSL

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a utilizar o OpenSSL para criptografia e descriptografia de arquivos, uma habilidade fundamental em cibersegurança. Através de exercícios práticos, você exercitará a geração de uma chave simétrica e a aplicação da criptografia AES para proteger dados sensíveis.

Este laboratório guiará você pela instalação do OpenSSL, pela criação de um arquivo de teste e pela execução de um ciclo completo de criptografia e descriptografia. Esta experiência prática ajudará a compreender as técnicas fundamentais de proteção de dados utilizadas em aplicações do mundo real.

Instalar e Verificar o OpenSSL

Nesta etapa, você instalará o OpenSSL, um kit de ferramentas poderoso para implementar comunicações seguras. Embora o OpenSSL geralmente já venha incluído em distribuições Linux, esta etapa garante que ele esteja instalado corretamente e pronto para uso.

Primeiro, verifique se o OpenSSL está instalado conferindo a versão instalada.

openssl version

Você deverá ver uma saída semelhante à seguinte, indicando a versão do OpenSSL no seu sistema.

OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

Por fim, você pode exibir o menu de ajuda para ver uma lista de comandos disponíveis e confirmar que o OpenSSL está funcionando corretamente.

openssl help

Este comando listará as diversas operações criptográficas que o OpenSSL pode realizar, as quais exploraremos nas próximas etapas.

Criar um Arquivo de Exemplo para Criptografia

Nesta etapa, você criará um arquivo de texto simples para usar em nossos exercícios de criptografia e descriptografia. Usar um arquivo conhecido nos permite verificar facilmente se o processo funciona corretamente, comparando o conteúdo original com o descriptografado.

Seu terminal já deve estar no diretório /home/labex/project. Criaremos o arquivo aqui.

Primeiro, use o editor de texto nano para criar um novo arquivo chamado sample.txt.

nano sample.txt

Assim que o nano abrir, digite o seguinte texto no editor:

This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.

Agora, salve o arquivo e saia do nano:

  1. Pressione Ctrl + O para gravar as alterações no arquivo.
  2. Pressione Enter para confirmar o nome do arquivo (sample.txt).
  3. Pressione Ctrl + X para sair do editor.

Para confirmar que o arquivo foi criado corretamente, exiba seu conteúdo usando o comando cat.

cat sample.txt

A saída deve mostrar exatamente o texto que você digitou:

This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.

Este arquivo de exemplo está agora pronto para o processo de criptografia nas próximas etapas.

Gerar uma Chave de Criptografia Simétrica

Nesta etapa, você gerará uma chave simétrica, que é uma chave secreta usada tanto para criptografar quanto para descriptografar dados. Usaremos o OpenSSL para criar uma chave aleatória forte, adequada para a criptografia AES-256, um padrão altamente seguro e amplamente adotado.

Certifique-se de estar no diretório do seu projeto, /home/labex/project.

cd ~/project

Use o comando openssl rand para gerar 32 bytes (256 bits) de dados aleatórios e salvá-los em formato hexadecimal em um arquivo chamado symmetric_key.hex.

openssl rand -hex 32 > symmetric_key.hex

Visualize a chave gerada para ver como ela se parece.

cat symmetric_key.hex

A saída será uma string hexadecimal de 64 caracteres, que representa sua chave de 256 bits. Ela será parecida com isto (sua chave será diferente):

2f8b5e9a1c3d4e6f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f

Como esta chave pode desbloquear seus dados, é fundamental protegê-la. Use o comando chmod para definir as permissões do arquivo de modo que apenas o proprietário do arquivo (você) possa ler e escrever nele.

chmod 600 symmetric_key.hex

Por fim, verifique as permissões do arquivo com ls -l.

ls -l symmetric_key.hex

A saída deve mostrar as permissões como -rw-------, confirmando que o arquivo está protegido.

-rw------- 1 labex labex 65 Nov 15 10:30 symmetric_key.hex

Com a chave gerada e protegida, você está pronto para criptografar o arquivo de exemplo.

Criptografar o Arquivo com AES

Agora você usará a chave simétrica para criptografar o sample.txt. Utilizaremos a cifra de criptografia AES-256-CBC. O AES (Advanced Encryption Standard) com uma chave de 256 bits é um algoritmo de criptografia robusto, e o CBC (Cipher Block Chaining) é um modo de operação que aumenta a segurança ao tornar cada bloco criptografado dependente do anterior.

O comando openssl enc gerencia a criptografia. Especificaremos a cifra, o arquivo de entrada, o arquivo de saída e o arquivo da chave.

Execute o seguinte comando para criptografar o sample.txt e salvar a saída em sample.enc.

openssl enc -aes-256-cbc -in sample.txt -out sample.enc -pass file:symmetric_key.hex
  • -aes-256-cbc: Especifica a cifra de criptografia.
  • -in sample.txt: O arquivo de entrada para criptografar.
  • -out sample.enc: O nome do arquivo de saída (criptografado).
  • -pass file:symmetric_key.hex: Instrui o OpenSSL a usar o conteúdo de symmetric_key.hex como a senha (chave).

Após executar o comando, liste os arquivos para ver o novo arquivo criptografado, sample.enc.

ls -l

Você notará que o sample.enc é ligeiramente maior que o sample.txt devido ao overhead da criptografia, como preenchimento (padding) e metadados.

total 12
-rw-r--r-- 1 labex labex   96 Nov 15 10:35 sample.enc
-rw-r--r-- 1 labex labex   89 Nov 15 10:20 sample.txt
-rw------- 1 labex labex   65 Nov 15 10:30 symmetric_key.hex

Se você tentar visualizar o conteúdo do arquivo criptografado, verá dados binários ilegíveis.

cat sample.enc

A saída distorcida confirma que o arquivo foi criptografado com sucesso.

Descriptografar o Arquivo e Verificar a Integridade

Nesta etapa final, você descriptografará o sample.enc para recuperar o texto original. Isso confirmará que sua chave funciona e que todo o ciclo de criptografia e descriptografia foi bem-sucedido.

Para descriptografar o arquivo, você usará o comando openssl enc novamente, mas desta vez com a flag -d para especificar a descriptografia.

Execute o seguinte comando para descriptografar o sample.enc e salvar o resultado em um novo arquivo, sample.dec.

openssl enc -d -aes-256-cbc -in sample.enc -out sample.dec -pass file:symmetric_key.hex

Agora, vamos verificar se a descriptografia funcionou. A melhor maneira de conferir é comparar o arquivo descriptografado (sample.dec) com o arquivo original (sample.txt). O comando diff é perfeito para isso.

diff sample.txt sample.dec

Se os arquivos forem idênticos, este comando não produzirá nenhuma saída, o que significa que a descriptografia foi bem-sucedida.

Para uma confirmação visual final, exiba o conteúdo do arquivo descriptografado.

cat sample.dec

A saída deve ser exatamente igual ao seu arquivo sample.txt original:

This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.

Você agora criptografou um arquivo com sucesso e o descriptografou de volta à sua forma original usando o OpenSSL.

Resumo

Neste laboratório, você adquiriu experiência prática com criptografia e descriptografia de arquivos usando o OpenSSL. Você aprendeu a gerar uma chave simétrica forte, utilizá-la para criptografar um arquivo com o algoritmo AES-256 e, em seguida, descriptografar o arquivo para restaurar os dados originais. Este processo é uma habilidade fundamental para a proteção de informações sensíveis em cibersegurança.