Я хочу зашифровать большие файлы на linux с помощью сценария bash. Когда я искал методы для этого, я подумал о GPG и попробовал. Но когда я запустил некоторые тесты, я заметил, что расшифровка больших файлов занимает очень много времени.
Тестовый сценарий Я сгенерировал 30 ГБ большой файл, заполненный случайным контентом. Затем я зашифровал его с помощью ключа RSA 4096. Насколько я понимаю, GPG - это программа гибридного шифрования, которая шифрует ключи сеанса с помощью ключа RSA Publi c. Следовательно, шифрование / дешифрование должно выполняться за секунды или, по крайней мере, в течение одной минуты, поскольку они используют эти ключи сеанса для шифрования фактических данных, не так ли? Но вот результаты теста - я не потрудился расшифровать файл при включенном compressen, так как это заняло бы у меня еще 2 - 3 часа ...
Характеристики системы:
- Версия GPG: 2.2.19
- Arch Linux
- Docker
- Intel i7
Мои ключи gpg были сгенерированы с помощью файла конфигурации, который содержал следующие значения:
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: some-key-name
Name-Comment: some-key-comment
Expire-Date: 0
Passphrase: 123456789
Для шифрования я использовал следующие команды:
gpg -q --output /outputFile.txt --recipient some-key-name --encrypt /inputFile.txt (with compression)
gpg -q --output /outputFile.txt -z 0 --recipient some-key-name --encrypt /inputFile.txt (without compression)
Эта команда для расшифровки файлов:
gpg -q --pinentry-mode loopback --batch --passphrase 123456789 --output /decryptedFile.txt --decrypt /encryptedFile.txt
Результаты испытаний Шифрование с включенным сжатием:
- реальные 36m23.096s
- user 14m54.920s
- sys 2m31.870s
Шифрование с отключенным сжатием:
- реальный 21m9,781s
- user 1m39.590s
- sys 2m20.980s
Расшифровка с отключенным сжатием:
- реальный 140m13.050s
- user 5m5.340s
- sys 16m33.020s
Вопросы Я что-то упустил или использую инструмент неправильно? Знаете ли вы лучший способ шифрования больших файлов, в котором используется асимметричное шифрование c или, по крайней мере, он используется для шифрования ключей сеанса?
PS Я очень много гуглил и не нашел подходящего решения. Я также прочитал справочную страницу и не нашел подсказки, что я мог пропустить или сделал неправильно. Также учтите, что я знаю, что передача пароля gpg таким способом не является самым безопасным способом;)