Я предполагаю, что вы используете 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
функцию - обратный, которая « берет в качестве исходных текстовых данных и создает зашифрованные данные по требованию.Это может быть полезно для создания удаленных зашифрованных резервных копий, когда вы не хотите, чтобы локальные файлы оставались незашифрованными. "