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