Como posso ler um arquivo criptografado openssl aes-256-cbc sem criar um arquivo não criptografado no Linux?

6

Eu tenho um arquivo criptografado e para descriptografá-lo eu uso o comando:

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

Mas, quando faço isso, é criado um arquivo não criptografado, que preciso excluir quando eu terminar. Isso significa que se alguém pegar meu computador e usar algum tipo de ferramenta de recuperação de dados, ele poderá obter o arquivo não criptografado. Existe alguma maneira de acessar os dados no arquivo criptografado sem criar outro arquivo?

    
por KNejad 13.02.2016 / 14:07

2 respostas

4

Suponho que você esteja usando um linux e tenha algumas ideias ...

Extrair para RAM

Uma maneira fácil seria criar o arquivo descriptografado, mas não gravá-lo no disco. Coloque-o na memória RAM, por exemplo, com um sistema de arquivos ramfs ou tmpfs . Porém, os problemas podem ser:

  • O arquivo pode não caber no RAM
  • os ramfs podem aumentar de tamanho até que todo o RAM seja usado (subsequentemente provavelmente travando)
  • tmpfs pode ser gravado em seu swap em disco (veja também esse link para a diferença entre tmpfs & ramfs).

Seu /tmp ou outras pastas (como /run , /run/shm , /run/user ) podem já estar montadas como um tmpfs, você pode verificar com mount|grep tmpfs .

Para criar um novo tmpfs , você pode fazer isso (opcionalmente com um tamanho em bytes, se desejar, semelhante a -o size=16384 , acho que o padrão é metade do RAM):

sudo mount -v -t tmpfs  tmpfs /mountpoint

Para usar os ramfs mais antigos, que não serão gravados para troca, mas não têm limites de tamanho, isso deve funcionar:

sudo mount -v -t ramfs  ramfs /mountpoint

Embora o link acima avise :

ramfs file systems cannot be limited in size like a disk based file system which is limited by it’s capacity. ramfs will continue using memory storage until the system runs out of RAM and likely crashes or becomes unresponsive

Além disso, a documentação do kernel aqui também avisa & diz:

One downside of ramfs is you can keep writing data into it until you fill up all memory, and the VM can't free it because the VM thinks that files should get written to backing store (rather than swap space), but ramfs hasn't got any backing store. Because of this, only root (or a trusted user) should be allowed write access to a ramfs mount.

A ramfs derivative called tmpfs was created to add size limits, and the ability to write the data to swap space. Normal users can be allowed write access to tmpfs mounts. See Documentation/filesystems/tmpfs.txt for more information.

Extrair para um dispositivo ou pasta criptografada

Se os problemas de RAM acima forem muito, você pode usar outro programa para criptografar o arquivo em disco novamente , mas ele pode ser lido & usado "on-the-fly" não criptografado (ex. a versão descriptografada parece e atua como um arquivo normal, mas permanece criptografada no disco). Você pode criar uma partição criptografada ou um arquivo contêiner com dm -crypt / LUKS / truecrypt com cryptsetup , ou uma pasta criptografada com eCryptFS ou EncFS e, em seguida, descriptografe o seu arquivo lá.

  • Por exemplo, para criar um arquivo contêiner LUKS de 1 GB com ext4, montado na pasta mountpoint-folder , faça isso:

    head -c 1G /dev/zero > 1G
    sudo cryptsetup -v luksFormat 1G
    sudo cryptsetup -v luksOpen 1G container
    sudo mkfs.ext4 -v /dev/mapper/container
    sudo mount -v /dev/mapper/container <mountpoint-folder>
    

    Em seguida, descriptografe seu arquivo no mountpont-folder , onde ele será legível, mesmo que seja gravado em disco novamente.

  • O eCryptFS já está instalado no Linux Mint, Ubuntu e em muitas outras distribuições. Você só precisa executar ecryptfs-setup-private e depois usar a pasta ~/Private criada.

  • O EncFS provavelmente precisa ser instalado (semelhante a apt-get install encfs ) e, em seguida, é a página do manual aqui ou aqui , um comando como encfs ~/.secret ~/decrypted deve funcionar.

    Além disso, o EncFS tem um recurso --reverse puro que "toma dados de fonte de texto simples e produz dados codificados sob demanda. Isso pode ser útil para criar backups criptografados remotamente, onde você não deseja manter o local arquivos não criptografados. "

por 13.02.2016 / 15:08
3

Se os dados puderem ser manipulados por um programa que aceite entrada de stdin, você também pode usar a tubulação. Por exemplo: openssl aes-256-cbc -d -in encrypted_plain_text_file | less

    
por 13.02.2016 / 15:19