Механизм инкапсуляции ключей

Криптосистема с открытым ключом
Блок-схема механизма инкапсуляции ключей, связывающая входы и выходы алгоритмов Gen, Encap и Decap KEM
Механизм инкапсуляции ключа для безопасной передачи секретного ключа от отправителя к получателю состоит из трех алгоритмов: Gen, Encap и Decap. Круги, закрашенные синим — открытый ключ получателя и инкапсуляция — могут быть безопасно раскрыты злоумышленнику, в то время как квадраты, закрашенные красным — закрытый ключ получателя и инкапсулированный секретный ключ — должны храниться в секрете. к {\displaystyle к} п к {\displaystyle pk} с {\displaystyle с} с к {\displaystyle ск} к {\displaystyle к}

В криптографии механизм инкапсуляции ключа , или KEM , представляет собой криптосистему с открытым ключом , которая позволяет отправителю генерировать короткий секретный ключ и безопасно передавать его получателю, несмотря на подслушивание и перехват злоумышленниками. [1] [2] [3] Современные стандарты шифрования с открытым ключом произвольных сообщений обычно основаны на KEM. [4] [5]

KEM позволяет отправителю, который знает открытый ключ, одновременно генерировать короткий случайный секретный ключ и инкапсуляцию или зашифрованный текст секретного ключа с помощью алгоритма инкапсуляции KEM. Получатель, который знает закрытый ключ, соответствующий открытому ключу, может восстановить тот же случайный секретный ключ из инкапсуляции с помощью алгоритма декапсуляции KEM . [1] [2] [3]

Цель безопасности KEM — не допустить, чтобы кто-либо, кто не знает закрытый ключ, мог восстановить какую-либо информацию об инкапсулированных секретных ключах, даже после подслушивания или отправки других инкапсуляций получателю для изучения его реакции. [1] [2] [3]

Отличие от шифрования с открытым ключом

Блок-схема схемы шифрования с открытым ключом, связывающая входы и выходы ее алгоритмов Gen, Encrypt и Decrypt
Схема шифрования с открытым ключом.

Разница между схемой шифрования с открытым ключом и 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]

  1. Генерация ключей не требует никаких входных данных и возвращает пару открытого ключа и закрытого ключа . ( п к , с к ) := Ген ( ) {\displaystyle ({\mathit {pk}},{\mathit {sk}}):=\operatorname {Gen} ()} п к {\displaystyle {\mathit {pk}}} с к {\displaystyle {\mathit {sk}}}
  2. Инкапсуляция , берет открытый ключ , случайным образом выбирает секретный ключ и возвращается вместе со своей инкапсуляцией . ( к , с ) := Закрывать ( п к ) {\displaystyle (k,c):=\operatorname {Encap} ({\mathit {pk}})} п к {\displaystyle {\mathit {pk}}} к {\displaystyle к} к {\displaystyle к} с {\displaystyle с}
  3. Декапсуляция , , принимает закрытый ключ и инкапсуляцию и либо возвращает инкапсулированный секретный ключ , либо завершается неудачей, иногда обозначаемой как возврат (называемый « дном »). к := Декап ( с к , с ) {\displaystyle k':=\operatorname {Decap} ({\mathit {sk}},c')} с к {\displaystyle {\mathit {sk}}} с {\displaystyle c'} к {\displaystyle к'} {\displaystyle \bot}

Корректность

KEM является правильным , если для любой пары ключей , сгенерированной , декапсуляция инкапсуляции, возвращенной с высокой вероятностью, дает тот же ключ , то есть . [2] [3] [11] [12] ( п к , с к ) {\displaystyle ({\mathit {pk}},{\mathit {sk}})} Ген {\displaystyle \operatorname {Ген} } с {\displaystyle с} ( к , с ) := Закрывать ( п к ) {\displaystyle (k,c):=\operatorname {Encap} ({\mathit {pk}})} к {\displaystyle к} Декап ( с к , с ) = к {\displaystyle \operatorname {Декап} ({\mathit {sk}},c)=k}

Безопасность: IND-CCA

Безопасность KEM количественно определяется его неразличимостью против атаки с выбранным шифротекстом , IND-CCA, которая приблизительно показывает, насколько лучше злоумышленник может определить, чем подбрасывание монеты, если задан случайный ключ и инкапсуляция, инкапсулирован ли ключ этой инкапсуляцией или является независимым случайным ключом. [2] [3] [11] [12]

В частности, в игре IND-CCA:

  1. Алгоритм генерации ключей запускается для генерации . ( п к , с к ) := Ген ( ) {\displaystyle ({\mathit {pk}},{\mathit {sk}}):=\operatorname {Gen} ()}
  2. п к {\displaystyle {\mathit {pk}}} открывается противнику.
  3. Злоумышленник может запросить произвольные инкапсуляции по своему выбору. Декап ( с к , с ) {\displaystyle \operatorname {Decap} ({\mathit {sk}},c')} с {\displaystyle c'}
  4. Алгоритм инкапсуляции запускается для случайной генерации секретного ключа и инкапсуляции , а другой секретный ключ генерируется независимо случайным образом. ( к 0 , с ) := Закрывать ( п к ) {\displaystyle (k_{0},c):=\operatorname {Encap} ({\mathit {pk}})} к 1 {\displaystyle k_{1}}
  5. Подбрасывается честная монета, давая результат . б { 0 , 1 } {\displaystyle б\в \{0,1\}}
  6. Пара раскрывается противнику. ( к б , с ) {\displaystyle (k_{b},c)}
  7. Злоумышленник снова может запросить произвольные инкапсуляции по своему выбору, за исключением . Декап ( с к , с ) {\displaystyle \operatorname {Decap} ({\mathit {sk}},c')} с {\displaystyle c'} с {\displaystyle с}
  8. Противник возвращает предположение и выигрывает игру, если . б { 0 , 1 } {\displaystyle b'\in \{0,1\}} б = б {\displaystyle b=b'}

Преимущество противника по IND-CCA составляет , то есть вероятность, превышающую вероятность подбрасывания монеты, правильно отличить инкапсулированный ключ от независимо выбранного случайным образом ключа. | Пр [ б = б ] 1 / 2 | {\displaystyle \left|\Pr[b'=b]-1/2\right|}

Примеры и мотивация

ЮАР

Традиционное шифрование RSA с -битными модулями и экспонентой определяется следующим образом: [13] [14] [15] т {\displaystyle т} е {\displaystyle е}

  • Генерация ключей : ( п к , с к ) := Ген ( ) {\displaystyle ({\mathit {pk}},{\mathit {sk}}):=\operatorname {Gen} ()}
  1. Сгенерировать -битовое полупростое число , удовлетворяющее , где - функция Кармайкла . т {\displaystyle т} н {\displaystyle n} 2 т 1 < н < 2 т {\displaystyle 2^{t-1}<n<2^{t}} gcd ( е , λ ( н ) ) = 1 {\displaystyle \НОД(е,\лямбда (n))=1} λ ( н ) {\displaystyle \лямбда (н)}
  2. Вычислить . г := е 1 мод λ ( н ) {\displaystyle d:=e^{-1}{\bmod {\lambda }}(n)}
  3. Возврат в качестве открытого ключа и закрытого ключа. (Доступно множество вариаций алгоритмов генерации ключей и форматов закрытых ключей. [16] ) п к := н {\displaystyle {\mathit {pk}}:=n} с к := ( н , г ) {\displaystyle {\mathit {sk}}:=(n,d)}
  • Шифрование -битного сообщения открытым ключом , дающее : ( т 1 ) {\displaystyle (t-1)} м {\displaystyle м} п к = н {\displaystyle {\mathit {pk}}=n} с := Зашифровать ( п к , м ) {\displaystyle c:=\operatorname {Шифровать} ({\mathit {pk}},m)}
  1. Закодируйте битовую строку как целое число с помощью . м {\displaystyle м} г {\displaystyle r} 0 г < н {\displaystyle 0\leq r<n}
  2. Возвращаться . с := г е мод н {\displaystyle c:=r^{e}{\bmod {n}}}
  • Расшифровка зашифрованного текста с помощью закрытого ключа , дающая : с {\displaystyle c'} с к = ( н , г ) {\displaystyle {\mathit {sk}}=(n,d)} м := Расшифровать ( с к , с ) {\displaystyle m':=\operatorname {Расшифровать} ({\mathit {sk}},c')}
  1. Вычислить . г := ( с ) г мод н {\displaystyle r':=(c')^{d}{\bmod {n}}}
  2. Декодируйте целое число как битовую строку . г {\displaystyle r'} м {\displaystyle м'}

Этот наивный подход совершенно небезопасен. Например, поскольку он не является рандомизированным, он не может быть защищен даже от атаки с известным открытым текстом — злоумышленник может определить, отправляет ли отправитель сообщение, ATTACK AT DAWNа не сообщение, ATTACK AT DUSKпросто зашифровав эти сообщения и сравнив шифртекст.

Даже если всегда является случайным секретным ключом, таким как 256-битный ключ AES , когда выбирается для оптимизации эффективности, как , сообщение может быть вычислено из зашифрованного текста просто путем извлечения кубических корней из действительных чисел, и существует множество других атак на простой RSA . [13] [14] Были разработаны различные схемы рандомизированного заполнения в попытках — иногда безуспешных, как, например, RSAES-PKCS1-v1_5 [13] [17] [18] — сделать его безопасным для произвольных коротких сообщений . [13] [14] м {\displaystyle м} е {\displaystyle е} е = 3 {\displaystyle е=3} м {\displaystyle м} с {\displaystyle с} м {\displaystyle м}

Поскольку сообщение почти всегда представляет собой короткий секретный ключ для аутентифицированного симметричного ключа, используемого для шифрования произвольной битовой строки сообщения, более простой подход, называемый RSA-KEM, заключается в выборе элемента случайным образом и использовании его для получения секретного ключа с помощью функции вывода ключа , примерно следующим образом: [19] [8] м {\displaystyle м} З / н З {\displaystyle \mathbb {Z} / n\mathbb {Z} } ЧАС {\displaystyle H}

  • Генерация ключей : как указано выше.
  • Инкапсуляция открытого ключа , дающая : п к = н {\displaystyle {\mathit {pk}}=n} ( к , с ) := Закрывать ( п к ) {\displaystyle (k,c):=\operatorname {Encap} ({\mathit {pk}})}
  1. Выбираем целое число равномерно случайным образом. г {\displaystyle r} 0 г < н {\displaystyle 0\leq r<n}
  2. Возврат и как его инкапсуляция. к := ЧАС ( г ) {\displaystyle k:=H(r)} с := г е мод н {\displaystyle c:=r^{e}{\bmod {n}}}
  • Декапсуляция с закрытым ключом , дающая : с {\displaystyle c'} с к = ( н , г ) {\displaystyle {\mathit {sk}}=(n,d)} к := Декап ( с к , с ) {\displaystyle k':=\operatorname {Decap} ({\mathit {sk}},c')}
  1. Вычислить . г := ( с ) г мод н {\displaystyle r':=(c')^{d}{\bmod {n}}}
  2. Возвращаться . к := ЧАС ( г ) {\displaystyle k':=H(r')}

Этот подход проще в реализации и обеспечивает более точное сокращение проблемы RSA , чем схемы заполнения, такие как RSAES-OAEP . [19]

Элгамал

Традиционное шифрование Elgamal определяется над мультипликативной подгруппой конечного поля с генератором порядка следующим образом: [20] [21] З / п З {\displaystyle \mathbb {Z} /p\mathbb {Z} } г {\displaystyle г} д {\displaystyle д}

  • Генерация ключей : ( п к , с к ) := Ген ( ) {\displaystyle (pk,sk):=\operatorname {Ген} ()}
  1. Выбирайте равномерно случайным образом. х З / д З {\displaystyle x\in \mathbb {Z} /q\mathbb {Z} }
  2. Вычислить . у := г х мод п {\displaystyle y:=g^{x}{\bmod {p}}}
  3. Вернитесь как закрытый ключ и как открытый ключ. с к := х {\displaystyle {\mathit {sk}}:=x} п к := у {\displaystyle {\mathit {pk}}:=y}
  • Шифрование сообщения открытым ключом , дающее : м З / п З {\displaystyle m\in \mathbb {Z} /p\mathbb {Z} } п к = у {\displaystyle {\mathit {pk}}=y} с := Зашифровать ( п к , м ) {\displaystyle c:=\operatorname {Шифровать} ({\mathit {pk}},m)}
  1. Выбирайте равномерно случайным образом. г З / д З {\displaystyle r\in \mathbb {Z} /q\mathbb {Z} }
  2. Вычислить: т := у г мод п с 1 := г г мод п с 2 := ( т м ) мод п {\displaystyle {\begin{align}t&:=y^{r}{\bmod {p}}\\c_{1}&:=g^{r}{\bmod {p}}\\c_{2}&:=(t\cdot m){\bmod {p}}\end{align}}}
  3. Верните зашифрованный текст . с := ( с 1 , с 2 ) {\displaystyle c:=(c_{1},c_{2})}
  • Расшифровка шифртекста для закрытого ключа , дающая : с = ( с 1 , с 2 ) {\displaystyle c'=(c'_{1},c'_{2})} с к = х {\displaystyle {\mathit {sk}}=x} m := Decrypt ( s k , c ) {\displaystyle m':=\operatorname {Decrypt} ({\mathit {sk}},c')}
  1. Неудача и возврат, если или , то есть, если или не находится в подгруппе, сгенерированной . {\displaystyle \bot } ( c 1 ) ( p 1 ) / q 1 ( mod p ) {\displaystyle (c'_{1})^{(p-1)/q}\not \equiv 1{\pmod {p}}} ( c 2 ) ( p 1 ) / q 1 ( mod p ) {\displaystyle (c'_{2})^{(p-1)/q}\not \equiv 1{\pmod {p}}} c 1 {\displaystyle c'_{1}} c 2 {\displaystyle c'_{2}} g {\displaystyle g}
  2. Вычислить . t := ( c 1 ) x mod p {\displaystyle t':=(c'_{1})^{x}{\bmod {p}}}
  3. Возвращаться . m := t 1 c 2 mod p {\displaystyle m':=t^{-1}c'_{2}{\bmod {p}}}

Это соответствует синтаксису схемы шифрования с открытым ключом, ограниченной сообщениями в пространстве (что ограничивает его сообщением в несколько сотен байт для типичных значений ). Проверяя шифротексты при расшифровке, он избегает утечки битов закрытого ключа через злонамеренно выбранные шифротексты за пределами группы, сгенерированной . Z / p Z {\displaystyle \mathbb {Z} /p\mathbb {Z} } p {\displaystyle p} x {\displaystyle x} g {\displaystyle g}

Однако это не позволяет достичь неразличимости против атаки с использованием выбранного шифротекста . Например, злоумышленник, имеющий шифротекст для неизвестного сообщения, может тривиально расшифровать его, запросив оракул расшифровки для получения отдельного шифротекста , что даст связанный открытый текст , из которого может быть восстановлен с помощью . [20] c = ( c 1 , c 2 ) {\displaystyle c=(c_{1},c_{2})} m {\displaystyle m} c := ( c 1 , c 2 g ) {\displaystyle c':=(c_{1},c_{2}g)} m := m g mod p {\displaystyle m':=mg{\bmod {p}}} m {\displaystyle m} m = m g 1 mod p {\displaystyle m=m'g^{-1}{\bmod {p}}}

Традиционное шифрование Elgamal можно адаптировать к настройке эллиптической кривой, но для этого требуется какой-то способ обратимого кодирования сообщений как точек на кривой, что менее тривиально, чем кодирование сообщений как целых чисел mod . [22] p {\displaystyle p}

Поскольку сообщение почти всегда представляет собой короткий секретный ключ для аутентифицированного симметричного ключа шифра , используемого для шифрования произвольной битовой строки сообщения, более простой подход состоит в том, чтобы вывести секретный ключ из и вообще обойтись без него , как KEM, используя функцию выведения ключа : [1] m {\displaystyle m} t {\displaystyle t} m {\displaystyle m} c 2 {\displaystyle c_{2}} H {\displaystyle H}

  • Генерация ключей : как указано выше.
  • Инкапсуляция открытого ключа , дающая : p k = y {\displaystyle {\mathit {pk}}=y} ( k , c ) := Encap ( p k ) {\displaystyle (k,c):=\operatorname {Encap} ({\mathit {pk}})}
  1. Выбирайте равномерно случайным образом. r Z / q Z {\displaystyle r\in \mathbb {Z} /q\mathbb {Z} }
  2. Вычислить . t := y r mod p {\displaystyle t:=y^{r}{\bmod {p}}}
  3. Возврат и как его инкапсуляция. k := H ( t ) {\displaystyle k:=H(t)} c := g r mod p {\displaystyle c:=g^{r}{\bmod {p}}}
  • Декапсуляция с закрытым ключом , дающая : c {\displaystyle c'} s k = x {\displaystyle {\mathit {sk}}=x} k := Decap ( s k , c ) {\displaystyle k':=\operatorname {Decap} ({\mathit {sk}},c')}
  1. Ошибка и возврат, если , т.е. если не входит в подгруппу, сгенерированную . {\displaystyle \bot } ( c ) ( p 1 ) / q 1 ( mod p ) {\displaystyle (c')^{(p-1)/q}\not \equiv 1{\pmod {p}}} c {\displaystyle c'} g {\displaystyle g}
  2. Вычислить . t := ( c ) x mod p {\displaystyle t':=(c')^{x}{\bmod {p}}}
  3. Возвращаться . k := H ( t ) {\displaystyle k':=H(t')}

В сочетании с аутентифицированным шифром для шифрования произвольных сообщений битовой строки, комбинация по сути является Интегрированной схемой шифрования . Поскольку этот KEM требует только односторонней функции выведения ключа для хэширования случайных элементов группы, над которой он определен, в данном случае, а не обратимого кодирования сообщений, его легко расширить до более компактных и эффективных групп эллиптических кривых для той же безопасности, как в ECIES, Интегрированной схеме шифрования эллиптических кривых . Z / p Z {\displaystyle \mathbb {Z} /p\mathbb {Z} }

Смотрите также

Ссылки

  1. ^ abcdefg Гэлбрейт, Стивен (2012). "§23.1.1: Парадигма KEM/DEM". Математика криптографии с открытым ключом . Cambridge University Press. С.  471– 478. ISBN 978-1-107-01392-6.
  2. ^ abcdefgh Шоуп, Виктор (май 2000 г.). Пренил, Барт (ред.). Использование хэш-функций в качестве защиты от атаки с выбранным шифротекстом. Достижения в криптологии – EUROCRYPT 2000. Конспект лекций по информатике. Том 1807. Брюгге, Бельгия: Springer. стр.  275–288 . doi : 10.1007/3-540-45539-6_19 . ISBN 978-3-540-67517-4.
  3. ^ abcdefgh Крамер, Рональд ; Шуп, Виктор (2003). «Разработка и анализ практических схем шифрования с открытым ключом, защищенных от атак с использованием адаптивного выбранного шифротекста». Журнал SIAM по вычислениям . 33 (1). Общество промышленной и прикладной математики : 167– 226. doi :10.1137/S0097539702403773.
  4. ^ FIPS 203: Стандарт механизма инкапсуляции ключей на основе модульной решетки (PDF) , Национальный институт стандартов и технологий , 2024-08-13, doi : 10.6028/NIST.FIPS.203
  5. ^ abcd Barnes, R.; Bhargavan, K.; Lipp, B.; Wood, C. (февраль 2022 г.). Гибридное шифрование с открытым ключом. Internet Engineering Task Force . doi : 10.17487/RFC9180 . RFC 9180.
  6. ^ Калиски, Б .; Йонссон, Дж.; Раш, А. (ноябрь 2016 г.). Мориарти, К. (ред.). PKCS #1: Спецификации криптографии RSA версии 2.2. Internet Engineering Task Force . doi : 10.17487/RFC8017 . RFC 8017.
  7. ^ Менезес, Альфред Дж .; Ван Ооршот, Пол К .; Ванстоун, Скотт А. (октябрь 1996 г.). "8. Шифрование с открытым ключом". Справочник по прикладной криптографии (PDF) . CRC Press. стр.  283–319 . ISBN 0-8493-8523-7.
  8. ^ ab Фергюсон, Нильс ; Коно, Тадаёси ; Шнайер, Брюс (2010). "12. RSA". Криптографическая инженерия . Wiley. стр.  195–211 . ISBN 978-0-470-47424-2.
  9. ^ Каллас, Дж .; Доннерхэк, Л.; Финни, Х .; Шоу, Д.; Тайер, Р. (ноябрь 2007 г.). Формат сообщений OpenPGP. Internet Engineering Task Force . doi : 10.17487/RFC4880 . RFC 4880.
  10. ^ "Постквантовая криптография: часто задаваемые вопросы". Национальный институт стандартов и технологий . 2024-07-19. Архивировано из оригинала 2024-06-26 . Получено 2024-07-20 .
  11. ^ abc Дент, Александр В. (2002), Руководство дизайнера по KEM, Архив Cryptology ePrint, Международная ассоциация криптологических исследований
  12. ^ abc Hofheinz, Dennis; Hövelmanns, Kathrin; Kiltz, Eike (ноябрь 2017 г.). Kalai, Yael; Reyzin, Leonid (ред.). Модульный анализ преобразования Фудзисаки-Окамото. Теория криптографии – TCC 2017. Конспект лекций по информатике. Том 10677. Балтимор, Мэриленд, США: Springer. С.  341– 371. doi : 10.1007/978-3-319-70500-2_12 . ISBN 978-3-319-70499-9.
  13. ^ abcd Aumasson, Jean-Philippe (2018). "10. RSA". Серьёзная криптография: практическое введение в современное шифрование . No Starch Press. стр.  181– 199. ISBN 978-1-59327-826-7.
  14. ^ abc Стинсон, Дуглас Р. (2006). "5. Криптосистема RSA и факторизация целых чисел". Теория и практика криптографии (3-е изд.). Chapman & Hall/CRC. стр.  161– 232. ISBN 978-1-58488-508-5.
  15. ^ Ривест, Р. Л .; Шамир, А.; Адлеман , Л. (1978-02-01). "Метод получения цифровых подписей и криптосистем с открытым ключом" (PDF) . Сообщения ACM . 21 (2). Ассоциация вычислительной техники: 120– 126. doi : 10.1145/359340.359342 .
  16. ^ Швенда, Петр; Немец, Матуш; Секан, Питер; Квашневский, Рудольф; Форманек, Давид; Комарек, Дэвид; Матяш, Вашек (август 2016 г.). Вопрос на миллион ключей: исследование происхождения открытых ключей RSA. 25-й симпозиум USENIX по безопасности. Остин, Техас, США: Ассоциация USENIX. стр.  893–910 . ISBN. 978-1-931971-32-4.
  17. ^ Блейхенбахер, Дэниел (август 1998 г.). Кравчик, Хьюго (ред.). Атаки с использованием выбранного шифротекста против протоколов, основанных на стандарте шифрования RSA PKCS #1. Достижения в криптологии – CRYPTO '98. Конспект лекций по информатике. Том 1462. Санта-Барбара, Калифорния, США: Springer. стр.  1–12 . doi : 10.1007/BFb0055716 . ISBN 978-3-540-64892-5.
  18. ^ Корон, Жан-Себастьян; Джой, Марк; Наккеш, Дэвид ; Пайе, Паскаль (май 2000 г.). Пренил, Барт (ред.). Новые атаки на шифрование PKCS#1 v1.5. Достижения в криптологии – EUROCRYPT 2000. Конспекты лекций по информатике. Том. 1807. Брюгге, Бельгия: Спрингер. стр.  369–381 . doi : 10.1007/3-540-45539-6_25 . ISBN 978-3-540-67517-4.
  19. ^ ab Shoup, Victor (2001), Предложение по стандарту ISO для шифрования с открытым ключом (версия 2.1), Архив Cryptology ePrint, Международная ассоциация криптологических исследований
  20. ^ ab Galbraith, Steven (2012). "§20.3: Учебник по шифрованию Elgamal". Математика криптографии с открытым ключом . Cambridge University Press. стр.  471– 478. ISBN 978-1-107-01392-6.
  21. ^ 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 . ISBN 978-3-540-15658-1.
  22. ^ Коблиц, Нил (январь 1987). "Криптосистемы на эллиптических кривых" (PDF) . Математика вычислений . 48 (177). Американское математическое общество : 203–209 . doi : 10.1090/S0025-5718-1987-0866109-5 .
Retrieved from "https://en.wikipedia.org/w/index.php?title=Key_encapsulation_mechanism&oldid=1259166105"