Comment lire un fichier chiffré openssl aes-256-cbc sans créer de fichier non chiffré sous Linux?

6

J'ai un fichier crypté et pour le décrypter j'utilise la commande:

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

Mais lorsque je fais cela, un fichier non crypté est créé et je dois le supprimer lorsque j'ai terminé. Cela signifie que si quelqu'un récupère mon ordinateur et utilise un outil de récupération de données, il peut obtenir le fichier non chiffré. Existe-t-il un moyen d'accéder aux données du fichier crypté sans créer un autre fichier?

KNejad
la source
1
Salut, otus. Je suis nouveau sur stackexchange et je ne savais pas où poser la question. Je vais fermer la question, mais pourriez-vous me diriger dans la bonne direction pour indiquer où je devrais poser cette question?
1
Est-ce que simplement en utilisant le -out /dev/stdouttravail?
Iwillnotexist Idonotexist

Réponses:

4

Je suppose que vous utilisez un Linux et que vous avez quelques idées ...

Extrait en RAM

Un moyen simple serait de continuer à créer le fichier déchiffré, mais ne l'écrivez pas sur le disque. Mettez-le en RAM, avec par exemple un système de fichiers ramfs ou tmpfs . Cependant, les problèmes pourraient être:

  • Le fichier peut ne pas tenir dans le bélier
  • La taille de ramfs peut augmenter jusqu'à ce que tout le ram soit utilisé (par la suite probablement en panne)
  • tmpfs peut être écrit sur votre échange sur disque (consultez également ce lien pour connaître la différence entre tmpfs et ramfs).

Votre /tmpou d' autres dossiers (comme /run, /run/shm, /run/user) peut déjà être monté en tmpfs, vous pouvez vérifier avec mount|grep tmpfs.


Pour créer un nouveau fichier tmpfs, vous pouvez le faire (éventuellement avec une taille en octets si vous le souhaitez, semblable à -o size=16384, je pense que la valeur par défaut est égale à la moitié de la RAM):

sudo mount -v -t tmpfs  tmpfs /mountpoint

Pour utiliser les anciens ramfs , cela ne sera pas écrit dans swap, mais n'a pas de limites de taille, cela devrait fonctionner:

sudo mount -v -t ramfs  ramfs /mountpoint

Bien que le lien ci-dessus avertisse:

Les systèmes de fichiers ramfs ne peuvent pas être limités en taille, contrairement à un système de fichiers basé sur disque qui est limité par sa capacité. ramfs continuera d'utiliser la mémoire de stockage jusqu'à ce que le système manque de RAM et se bloque ou ne réagisse plus.

De plus, la documentation du noyau ici met également en garde et dit:

Un des inconvénients de ramfs est que vous pouvez continuer à écrire des données jusqu'à ce que vous remplissiez toute la mémoire. La VM ne peut pas la libérer car la VM pense que les fichiers doivent être écrits dans le magasin de sauvegarde (plutôt que sur l'espace de swap). Je n'ai pas de magasin de sauvegarde. De ce fait, seul l'utilisateur root (ou un utilisateur de confiance) devrait avoir le droit d'écrire sur un montage ramfs.

Un dérivé ramfs appelé tmpfs a été créé pour ajouter des limites de taille et la possibilité d'écrire les données dans un espace d'échange. Les utilisateurs normaux peuvent avoir un accès en écriture aux montages tmpfs. Voir Documentation / filesystems / tmpfs.txt pour plus d'informations.

Extraire vers un périphérique ou un dossier crypté

Si les problèmes de RAM ci - dessus sont trop, vous pouvez utiliser un autre programme pour chiffrer le fichier sur disque à nouveau , mais il peut être lu et utilisé non crypté « à la volée » (ex. La version déchiffrée ressemble et agit comme un fichier normal, mais reste crypté sur le disque). Vous pouvez créer une partition chiffrée ou un fichier conteneur avec dm -crypt / LUKS / truecrypt avec cryptsetup , ou un dossier chiffré avec eCryptFS ou EncFS , puis déchiffrer votre fichier.

  • Par exemple, pour créer un fichier de conteneur LUKS de 1 Go avec ext4, monté sur le dossier mountpoint-folder, procédez comme suit:

    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>
    

    Puis décryptez votre fichier dans un répertoire mountpont-folderoù il sera lisible, même s’il est écrit à nouveau sur le disque chiffré.

  • eCryptFS est déjà installé dans Linux Mint, Ubuntu et de nombreuses autres distributions. Ne vous contentez-vous peut-être que de l'exécuter ecryptfs-setup-private, puis d'utiliser le ~/Privatedossier créé .

  • EncFS doit probablement être installé (similaire à apt-get install encfs) et ensuite voir sa page de manuel ici ou ici , une commande comme encfs ~/.secret ~/decrypteddevrait fonctionner.

    En outre, EncFS possède une --reversefonctionnalité intéressante qui " prend comme source les données en texte brut et génère des données cryptées à la demande. Cela peut être utile pour créer des sauvegardes cryptées à distance, dans lesquelles vous ne souhaitez pas conserver les fichiers locaux non cryptés " .

Xen2050
la source
Avez-vous une source prouvant que "tmpfs peut être écrit sur votre cache disque"? (Cela ne semble pas logique du tout)
Tom Yan
2
mais bien sûr, en ajoutant à répondre maintenant. Depuis cette recherche de base FYI encrypted.google.com/search?q=tmpfs+may+be+written+to+swap
Xen2050
En outre, il existe des documents sur le noyau pour tmpfs et ramfs (et plus): kernel.org/doc/Documentation/filesystems/tmpfs.txt kernel.org/doc/Documentation/filesystems/…
Tom Yan
1
Excellents liens de documentation du noyau, j'ajoute leur paragraphe "différences", merci @TomYan
Xen2050 13/02/2016
3

Si les données peuvent être gérées par un programme qui accepte les entrées de stdin, vous pouvez également utiliser la tuyauterie. Par exemple: openssl aes-256-cbc -d -in encrypted_plain_text_file | less

Tom Yan
la source