Я думаю, что ваше требование действительно, но с другой стороны, это также сложно, потому что вы смешиваете симметричное и асимметричное шифрование. Пожалуйста, поправьте меня, если я ошибаюсь.
Обоснование:
- Парольная фраза для вашего закрытого ключа предназначена для защиты вашего закрытого ключа и ничего больше.
- Это приводит к следующей ситуации: вы хотите использовать свой закрытый ключ для шифрования чего-то, что может расшифровать только вы. Ваш закрытый ключ не предназначен для этого, ваш открытый ключ предназначен для этого. Все, что вы шифруете своим закрытым ключом, может быть расшифровано вашим открытым ключом (подписью), это, безусловно, не то, что вы хотите. (Все, что зашифровано вашим открытым ключом, может быть расшифровано только вашим личным ключом.)
- Таким образом, вам нужно использовать ваш открытый ключ для шифрования ваших данных, но для этого вам не нужна ваша личная ключевая фраза для этого. Только если вы хотите расшифровать его, вам понадобится ваш личный ключ и пароль.
Вывод: в основном вы хотите повторно использовать вашу фразу-пароль для симметричного шифрования. Единственная программа, которую вы хотели бы указать в качестве пароля, - это ssh-agent, и эта программа не выполняет шифрование / дешифрование только с парольной фразой. Парольная фраза только для того, чтобы разблокировать ваш закрытый ключ и затем забыть.
Рекомендация: Используйте openssl enc
или gpg -e --symmetric
с ключевыми файлами, защищенными парольной фразой, для шифрования. Если вам нужно поделиться информацией, вы можете использовать инфраструктуру открытого ключа обеих программ для создания PKI / Web of Trust.
С openssl, что-то вроде этого:
$ openssl enc -aes-256-ctr -in my.pdf -out mydata.enc
и расшифровка что-то вроде
$ openssl enc -aes-256-ctr -d -in mydata.enc -out mydecrypted.pdf
Обновление: важно отметить, что приведенные выше команды openssl НЕ предотвращают подделку данных. Простое переключение битов в кодировочном файле также приведет к повреждению дешифрованных данных. Вышеприведенные команды не могут обнаружить это, вам нужно проверить это, например, с помощью хорошей контрольной суммы, такой как SHA-256. Существуют криптографические способы сделать это интегрированным способом, это называется HMAC (код аутентификации сообщений на основе хэша).
"gpg -e something"
но для разных случаев?$ gpg -e --symmetric
?openssl enc -aes-256-cbc -in my.pdf -out mydata.enc
дешифрования с помощью:openssl enc -aes-256-cbc -d -in mydata.enc -out mydecrypted.pdf
обе команды запрашивают пароль. Смотритеman enc
(на rh / fedora / centos) все параметры, такие как ключевые файлы, base64-кодирование и т. Д.Я бы предпочел использовать
openssl
утилиту, так как она кажется довольно вездесущей.Преобразовать открытый ключ RSA и закрытый ключ в формат PEM:
Шифрование файла с помощью вашего открытого ключа:
Расшифровка файла с вашим закрытым ключом:
Но, как прокомментировал Жиль выше, это подходит только для шифрования файлов меньше вашего открытого ключа, поэтому вы можете сделать что-то вроде этого:
Сгенерируйте пароль, зашифруйте файл симметрично и зашифруйте пароль с помощью открытого ключа, сохранив его в файле:
Расшифруйте парольную фразу своим закрытым ключом и используйте его для расшифровки файла:
В итоге вы получите два файла: ваш зашифрованный файл и вашу зашифрованную фразу-пароль, но если поместить в сценарий, он будет работать хорошо.
Вы могли бы даже добавить
tar cvf file file.enc file.enc.key
чтобы привести в порядок.Оптимально, вы бы максимизировали размер вашей парольной фразы, а также изменили
rand 64
бы размер вашего открытого ключа.источник
KEYLEN_BYTES=$(ssh-keygen -l -f $PRIV_KEY | awk '{printf("%d", ($1 - 96) / 8)}')
чтобы автоматически определить длину ключа. Учитывая, что ssh-keygen имеет минимальную длину ключа 768 битов, это все равно приводит к минимальному симметричному ключу 672 битов, или 84 байта.Посмотрите на luks / dm-crypt . Вы можете использовать ваш ssh-private-ключ в качестве ключа шифрования, используя соответствующую опцию.
Обновление: Пример шифрования с использованием LUKS с LV-блочным устройством (тест LV в системе VG):
Это должно объединить блочное устройство / dev / mapper / test_crypt, которое вы можете использовать для хранения ваших данных (после форматирования в выбранной вами файловой системе).
Чтобы избавиться от него, размонтируйте его и используйте
cryptsetup luksClose test_crypt
.источник
"$ sudo apt-get install cryptmount crypt-setup; cat '...' > bin/myEncrypt.sh; chmod +x bin/myEncrypt.sh; ./bin/myEncrypt.sh; ...; ..."
Если я правильно понимаю, этот метод является шифрованием на уровне файловой системы. Он зашифровывает фс, который вам нужен umount / mount, или я неправильно это читаю?--key-file
Вариант Cryptsetup использует фактическое содержимое файла в виде одного большого пароля. Он не читает ключ openssl из файла и просто использует его. Вы можете использовать файл случайных байтов,--key-file
если хотите.--key-file
действительно плохо выбранное имя для варианта, оно должно быть--password-file