7

У меня есть зашифрованный файл и для его расшифровки я использую команду:

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

Но когда я делаю это, создается незашифрованный файл, который я должен удалить, когда я закончу. Это означает, что если кто-то получит мой компьютер и использует какой-либо инструмент для восстановления данных, он может получить незашифрованный файл. Есть ли способ доступа к данным в зашифрованном файле без создания другого файла?

2 ответа2

4

Я предполагаю, что вы используете Linux, и у вас есть пара идей ...

Извлечь в ОЗУ

Самый простой способ - создать расшифрованный файл, но не записывать его на диск. Поместите его в ram, например, с файловой системой ramfs или tmpfs . Хотя проблемы могут быть:

  • Файл может не поместиться в оперативной памяти
  • ramfs может увеличиваться в размерах, пока не будет использован весь ram (впоследствии, вероятно, он потерпит крах)
  • tmpfs может быть записан в вашу подкачку на диске (также посмотрите эту ссылку для различия между tmpfs & ramfs).

Ваши /tmp или другие папки (например, /run , /run/shm , /run/user) уже могут быть смонтированы как tmpfs, вы можете проверить это с помощью mount|grep tmpfs .


Чтобы создать новый tmpfs, вы можете сделать это (по желанию с размером в байтах, если хотите, аналогично -o size=16384 , я думаю, что по умолчанию он равен половине оперативной памяти):

sudo mount -v -t tmpfs  tmpfs /mountpoint

Чтобы использовать более старые ramfs, которые не будут записаны в swap, но не имеют ограничений по размеру, это должно работать:

sudo mount -v -t ramfs  ramfs /mountpoint

Хотя ссылка выше предупреждает:

Файловые системы ramfs не могут быть ограничены по размеру, как файловая система на диске, которая ограничена ее емкостью. ramfs будет продолжать использовать память до тех пор, пока система не исчерпает ОЗУ и, вероятно, выйдет из строя или перестанет отвечать на запросы

Кроме того, документация ядра здесь также предупреждает и говорит:

Недостатком ramfs является то, что вы можете продолжать записывать данные в него до тех пор, пока не заполните всю память, а виртуальная машина не может освободить ее, потому что виртуальная машина считает, что файлы должны записываться в резервное хранилище (а не в пространство подкачки), но ramfs hasn ' У меня нет магазина поддержки. Из-за этого только root (или доверенный пользователь) должен иметь доступ на запись к монтированию ramfs.

Производная ramfs под названием tmpfs была создана для добавления ограничений по размеру и возможности записи данных в пространство подкачки. Обычным пользователям может быть разрешен доступ на запись к tmpfs mounts. См. Documentation/filesystems/tmpfs.txt для получения дополнительной информации.

Извлечь в зашифрованное устройство или папку

Если вышеуказанных проблем с ОЗУ слишком много, вы можете использовать другую программу для повторного шифрования файла на диске, но его можно читать и использовать в незашифрованном виде «на лету» (например, расшифрованная версия выглядит и действует как обычный файл, но остается зашифрованным на диске). Вы можете создать зашифрованный раздел или файл контейнера с помощью dm -crypt/LUKS/truecrypt с помощью cryptsetup или зашифрованную папку с eCryptFS или EncFS, а затем расшифровать свой файл там.

  • Например, чтобы создать контейнерный файл LUKS объемом 1 ГБ с ext4, подключенный к папке mountpoint-folder , сделайте следующее:

    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>
    

    А затем расшифруйте ваш файл в mountpont-folder где он будет доступен для чтения, даже если он снова записан на диск в зашифрованном виде.

  • eCryptFS уже установлена в Linux Mint, Ubuntu и многих других дистрибутивах, вам может понадобиться только запустить ecryptfs-setup-private и затем использовать созданную папку ~/Private .

  • EncFS, вероятно, должен быть установлен (аналогично apt-get install encfs), а затем посмотреть его справочную страницу здесь или здесь , команда вроде encfs ~/.secret ~/decrypted должна работать.

    Кроме того, EncFS имеет --reverse функцию - обратный, которая « берет в качестве исходных текстовых данных и создает зашифрованные данные по требованию.Это может быть полезно для создания удаленных зашифрованных резервных копий, когда вы не хотите, чтобы локальные файлы оставались незашифрованными. "

3

Если данные могут обрабатываться программой, которая принимает ввод от stdin, вы также можете использовать конвейерную связь. Например:openssl aes-256-cbc -d -in encrypted_plain_text_file | less

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .