В криптографии механизм инкапсуляции ключа , или KEM , представляет собой криптосистему с открытым ключом , которая позволяет отправителю генерировать короткий секретный ключ и безопасно передавать его получателю, несмотря на подслушивание и перехват злоумышленниками. [1] [2] [3] Современные стандарты шифрования с открытым ключом произвольных сообщений обычно основаны на KEM. [4] [5]
KEM позволяет отправителю, который знает открытый ключ, одновременно генерировать короткий случайный секретный ключ и инкапсуляцию или зашифрованный текст секретного ключа с помощью алгоритма инкапсуляции KEM. Получатель, который знает закрытый ключ, соответствующий открытому ключу, может восстановить тот же случайный секретный ключ из инкапсуляции с помощью алгоритма декапсуляции KEM . [1] [2] [3]
Цель безопасности KEM — не допустить, чтобы кто-либо, кто не знает закрытый ключ, мог восстановить какую-либо информацию об инкапсулированных секретных ключах, даже после подслушивания или отправки других инкапсуляций получателю для изучения его реакции. [1] [2] [3]
Отличие от шифрования с открытым ключом
Разница между схемой шифрования с открытым ключом и KEM заключается в том, что схема шифрования с открытым ключом позволяет отправителю выбрать произвольное сообщение из некоторого пространства возможных сообщений, в то время как KEM выбирает короткий секретный ключ случайным образом для отправителя. [1] [2] [3]
Отправитель может взять случайный секретный ключ, созданный KEM, и использовать его в качестве симметричного ключа для аутентифицированного шифра , чей шифртекст отправляется вместе с инкапсуляцией получателю. Это служит для составления схемы шифрования с открытым ключом из KEM и аутентифицированного симметричного ключа в гибридной криптосистеме . [1] [2] [3] [5]
Большинство схем шифрования с открытым ключом, таких как RSAES-PKCS1-v1_5 , RSAES-OAEP и шифрование Elgamal ограничены небольшими сообщениями [6] [7] и почти всегда используются для шифрования короткого случайного секретного ключа в гибридной криптосистеме в любом случае. [8] [9] [5]
И хотя схема шифрования с открытым ключом может быть наоборот преобразована в KEM путем выбора случайного секретного ключа и шифрования его как сообщения, легче спроектировать и проанализировать безопасный KEM, чем разработать безопасную схему шифрования с открытым ключом в качестве основы. Таким образом, большинство современных схем шифрования с открытым ключом основаны на KEM, а не наоборот. [10] [5]
Определение
Синтаксис
KEM состоит из трех алгоритмов: [1] [2] [3] [11] [12]
Генерация ключей не требует никаких входных данных и возвращает пару открытого ключа и закрытого ключа .
Инкапсуляция , берет открытый ключ , случайным образом выбирает секретный ключ и возвращается вместе со своей инкапсуляцией .
Декапсуляция , , принимает закрытый ключ и инкапсуляцию и либо возвращает инкапсулированный секретный ключ , либо завершается неудачей, иногда обозначаемой как возврат (называемый « дном »).
Корректность
KEM является правильным , если для любой пары ключей , сгенерированной , декапсуляция инкапсуляции, возвращенной с высокой вероятностью, дает тот же ключ , то есть . [2] [3] [11] [12]
Безопасность: IND-CCA
Безопасность KEM количественно определяется его неразличимостью против атаки с выбранным шифротекстом , IND-CCA, которая приблизительно показывает, насколько лучше злоумышленник может определить, чем подбрасывание монеты, если задан случайный ключ и инкапсуляция, инкапсулирован ли ключ этой инкапсуляцией или является независимым случайным ключом. [2] [3] [11] [12]
В частности, в игре IND-CCA:
Алгоритм генерации ключей запускается для генерации .
открывается противнику.
Злоумышленник может запросить произвольные инкапсуляции по своему выбору.
Алгоритм инкапсуляции запускается для случайной генерации секретного ключа и инкапсуляции , а другой секретный ключ генерируется независимо случайным образом.
Подбрасывается честная монета, давая результат .
Пара раскрывается противнику.
Злоумышленник снова может запросить произвольные инкапсуляции по своему выбору, за исключением .
Противник возвращает предположение и выигрывает игру, если .
Преимущество противника по IND-CCA составляет , то есть вероятность, превышающую вероятность подбрасывания монеты, правильно отличить инкапсулированный ключ от независимо выбранного случайным образом ключа.
Примеры и мотивация
ЮАР
Традиционное шифрование RSA с -битными модулями и экспонентой определяется следующим образом: [13] [14] [15]
Генерация ключей :
Сгенерировать -битовое полупростое число , удовлетворяющее , где - функция Кармайкла .
Вычислить .
Возврат в качестве открытого ключа и закрытого ключа. (Доступно множество вариаций алгоритмов генерации ключей и форматов закрытых ключей. [16] )
Шифрование -битного сообщения открытым ключом , дающее :
Закодируйте битовую строку как целое число с помощью .
Возвращаться .
Расшифровка зашифрованного текста с помощью закрытого ключа , дающая :
Вычислить .
Декодируйте целое число как битовую строку .
Этот наивный подход совершенно небезопасен. Например, поскольку он не является рандомизированным, он не может быть защищен даже от атаки с известным открытым текстом — злоумышленник может определить, отправляет ли отправитель сообщение, ATTACK AT DAWNа не сообщение, ATTACK AT DUSKпросто зашифровав эти сообщения и сравнив шифртекст.
Даже если всегда является случайным секретным ключом, таким как 256-битный ключ AES , когда выбирается для оптимизации эффективности, как , сообщение может быть вычислено из зашифрованного текста просто путем извлечения кубических корней из действительных чисел, и существует множество других атак на простой RSA . [13] [14] Были разработаны
различные схемы рандомизированного заполнения в попытках — иногда безуспешных, как, например, RSAES-PKCS1-v1_5 [13] [17] [18] — сделать его безопасным для произвольных коротких сообщений . [13] [14]
Поскольку сообщение почти всегда представляет собой короткий секретный ключ для аутентифицированного симметричного ключа, используемого для шифрования произвольной битовой строки сообщения, более простой подход, называемый RSA-KEM, заключается в выборе элемента случайным образом и использовании его для получения секретного ключа с помощью функции вывода ключа , примерно следующим образом: [19] [8]
Генерация ключей : как указано выше.
Инкапсуляция открытого ключа , дающая :
Выбираем целое число равномерно случайным образом.
Возврат и как его инкапсуляция.
Декапсуляция с закрытым ключом , дающая :
Вычислить .
Возвращаться .
Этот подход проще в реализации и обеспечивает более точное сокращение проблемы RSA , чем схемы заполнения, такие как RSAES-OAEP . [19]
Элгамал
Традиционное шифрование Elgamal определяется над мультипликативной подгруппой конечного поля с генератором порядка следующим образом: [20] [21]
Генерация ключей :
Выбирайте равномерно случайным образом.
Вычислить .
Вернитесь как закрытый ключ и как открытый ключ.
Шифрование сообщения открытым ключом , дающее :
Выбирайте равномерно случайным образом.
Вычислить:
Верните зашифрованный текст .
Расшифровка шифртекста для закрытого ключа , дающая :
Неудача и возврат, если или , то есть, если или не находится в подгруппе, сгенерированной .
Вычислить .
Возвращаться .
Это соответствует синтаксису схемы шифрования с открытым ключом, ограниченной сообщениями в пространстве (что ограничивает его сообщением в несколько сотен байт для типичных значений ). Проверяя шифротексты при расшифровке, он избегает утечки битов закрытого ключа через злонамеренно выбранные шифротексты за пределами группы, сгенерированной .
Однако это не позволяет достичь неразличимости против атаки с использованием выбранного шифротекста . Например, злоумышленник, имеющий шифротекст для неизвестного сообщения, может тривиально расшифровать его, запросив оракул расшифровки для получения отдельного шифротекста , что даст связанный открытый текст , из которого может быть восстановлен с помощью . [20]
Традиционное шифрование Elgamal можно адаптировать к настройке эллиптической кривой, но для этого требуется какой-то способ обратимого кодирования сообщений как точек на кривой, что менее тривиально, чем кодирование сообщений как целых чисел mod . [22]
Поскольку сообщение почти всегда представляет собой короткий секретный ключ для аутентифицированного симметричного ключа шифра , используемого для шифрования произвольной битовой строки сообщения, более простой подход состоит в том, чтобы вывести секретный ключ из и вообще обойтись без него , как KEM, используя функцию выведения ключа : [1]
Генерация ключей : как указано выше.
Инкапсуляция открытого ключа , дающая :
Выбирайте равномерно случайным образом.
Вычислить .
Возврат и как его инкапсуляция.
Декапсуляция с закрытым ключом , дающая :
Ошибка и возврат, если , т.е. если не входит в подгруппу, сгенерированную .
Вычислить .
Возвращаться .
В сочетании с аутентифицированным шифром для шифрования произвольных сообщений битовой строки, комбинация по сути является Интегрированной схемой шифрования . Поскольку этот KEM требует только односторонней функции выведения ключа для хэширования случайных элементов группы, над которой он определен, в данном случае, а не обратимого кодирования сообщений, его легко расширить до более компактных и эффективных групп эллиптических кривых для той же безопасности, как в ECIES, Интегрированной схеме шифрования эллиптических кривых .
^ abcdefg Гэлбрейт, Стивен (2012). "§23.1.1: Парадигма KEM/DEM". Математика криптографии с открытым ключом . Cambridge University Press. С. 471– 478. ISBN978-1-107-01392-6.
^ abcdefgh Шоуп, Виктор (май 2000 г.). Пренил, Барт (ред.). Использование хэш-функций в качестве защиты от атаки с выбранным шифротекстом. Достижения в криптологии – EUROCRYPT 2000. Конспект лекций по информатике. Том 1807. Брюгге, Бельгия: Springer. стр. 275–288 . doi : 10.1007/3-540-45539-6_19 . ISBN978-3-540-67517-4.
^ abcdefgh Крамер, Рональд ; Шуп, Виктор (2003). «Разработка и анализ практических схем шифрования с открытым ключом, защищенных от атак с использованием адаптивного выбранного шифротекста». Журнал SIAM по вычислениям . 33 (1). Общество промышленной и прикладной математики : 167– 226. doi :10.1137/S0097539702403773.
^ abcd Barnes, R.; Bhargavan, K.; Lipp, B.; Wood, C. (февраль 2022 г.). Гибридное шифрование с открытым ключом. Internet Engineering Task Force . doi : 10.17487/RFC9180 . RFC 9180.
^ Калиски, Б .; Йонссон, Дж.; Раш, А. (ноябрь 2016 г.). Мориарти, К. (ред.). PKCS #1: Спецификации криптографии RSA версии 2.2. Internet Engineering Task Force . doi : 10.17487/RFC8017 . RFC 8017.
^ abc Стинсон, Дуглас Р. (2006). "5. Криптосистема RSA и факторизация целых чисел". Теория и практика криптографии (3-е изд.). Chapman & Hall/CRC. стр. 161– 232. ISBN978-1-58488-508-5.
^ Ривест, Р. Л .; Шамир, А.; Адлеман , Л. (1978-02-01). "Метод получения цифровых подписей и криптосистем с открытым ключом" (PDF) . Сообщения ACM . 21 (2). Ассоциация вычислительной техники: 120– 126. doi : 10.1145/359340.359342 .
^ Швенда, Петр; Немец, Матуш; Секан, Питер; Квашневский, Рудольф; Форманек, Давид; Комарек, Дэвид; Матяш, Вашек (август 2016 г.). Вопрос на миллион ключей: исследование происхождения открытых ключей RSA. 25-й симпозиум USENIX по безопасности. Остин, Техас, США: Ассоциация USENIX. стр. 893–910 . ISBN.978-1-931971-32-4.
^ Блейхенбахер, Дэниел (август 1998 г.). Кравчик, Хьюго (ред.). Атаки с использованием выбранного шифротекста против протоколов, основанных на стандарте шифрования RSA PKCS #1. Достижения в криптологии – CRYPTO '98. Конспект лекций по информатике. Том 1462. Санта-Барбара, Калифорния, США: Springer. стр. 1–12 . doi : 10.1007/BFb0055716 . ISBN978-3-540-64892-5.
^ Корон, Жан-Себастьян; Джой, Марк; Наккеш, Дэвид ; Пайе, Паскаль (май 2000 г.). Пренил, Барт (ред.). Новые атаки на шифрование PKCS#1 v1.5. Достижения в криптологии – EUROCRYPT 2000. Конспекты лекций по информатике. Том. 1807. Брюгге, Бельгия: Спрингер. стр. 369–381 . doi : 10.1007/3-540-45539-6_25 . ISBN978-3-540-67517-4.
^ ab Shoup, Victor (2001), Предложение по стандарту ISO для шифрования с открытым ключом (версия 2.1), Архив Cryptology ePrint, Международная ассоциация криптологических исследований
^ ab Galbraith, Steven (2012). "§20.3: Учебник по шифрованию Elgamal". Математика криптографии с открытым ключом . Cambridge University Press. стр. 471– 478. ISBN978-1-107-01392-6.
^ Elgamal, Taher (август 1984 г.). Blakley, George Robert ; Chaum, David (ред.). Криптосистема с открытым ключом и схема подписи на основе дискретных логарифмов. Advances in Cryptology – CRYPTO 1984. Lecture Notes in Computer Science. Vol. 196. Санта-Барбара, Калифорния, США: Springer. стр. 10–18 . doi : 10.1007/3-540-39568-7_2 . ISBN978-3-540-15658-1.
^ Коблиц, Нил (январь 1987). "Криптосистемы на эллиптических кривых" (PDF) . Математика вычислений . 48 (177). Американское математическое общество : 203–209 . doi : 10.1090/S0025-5718-1987-0866109-5 .