Мне нужно зашифровать файл размером 100 КБ с использованием открытого ключа. Я читал несколько сообщений, в которых утверждалось, что напрямую шифровать большие файлы с помощью открытого ключа непрактично, и что предпочтительный метод - зашифровать файл с помощью симметричного ключа, а затем зашифровать этот симметричный ключ с помощью открытого ключа. {{ 1}} Кажется, наивным решением было бы разбить большой файл на части и зашифровать каждый из них с помощью одного и того же открытого ключа. Мой вопрос в том, является ли это решение неправильным и почему?
Разделение файла на более мелкие части и последующее их шифрование с помощью некоторого асимметричного шифра не имеет ничего общего с затратами времени выполнения процесса шифрования. Лучшей практикой является шифрование данных с помощью хорошего симметричного шифра с использованием относительно надежного ключа и шифрование секретного ключа, который вы использовали в симметричном шифровании, с помощью асимметричного шифра (с использованием вашего открытого ключа).
Упомянутый вами гибридный подход (создание случайного симметричного ключа, его использование для шифрования данных и асимметричное шифрование только ключа) имеет огромное преимущество в производительности.
Вы также можете «разбить большой файл на части и зашифровать каждый из них, используя один и тот же открытый ключ», в этом нет ничего плохого, но это намного медленнее.
Если я вас правильно понимаю, вы хотите зашифровать файл с помощью чужого открытого ключа, чтобы он был расшифрован с помощью их закрытого ключа?
Преимущества использования симметричного шифрования и только использование криптографии с открытым ключом для (симметричного) ключа - это производительность: симметричная криптография в вычислительном отношении гораздо менее ресурсоемка (компромисс: вы должны хранить ключ в секрете - и для этого нужен второй асимметричный шаг).
Разделение файла увеличивает накладные расходы на управление (как вы можете быть уверены, сколько блоков будет? Что вы их все передали?) И не добавляет никакой безопасности. Напротив.
Асимметричная криптография слишком медленная, наиболее используемый подход - зашифровать случайный симметричный ключ асимметричным, и зашифровать ваши данные этим симметричным ключом. И, кроме того, лучше всего использовать известный протокол/стандарт для этой цели (например, OpenPGP).