Интегрированная схема шифрования

редактировать

Интегрированная схема шифрования (IES ) представляет собой схему гибридного шифрования, которая обеспечивает семантическую защиту rity против злоумышленника, которому разрешено использовать атаки selected-plaintext и selected-ciphertext. Безопасность схемы основана на вычислительной задаче Диффи – Хеллмана. Стандартизированы два варианта IES: дискретный логарифм интегрированная схема шифрования (DLIES) и эллиптическая кривая интегрированная схема шифрования (ECIES), которая также известна как схема расширенного шифрования эллиптической кривой или просто схема шифрования эллиптической кривой. Эти два воплощения идентичны до смены основной группы, поэтому, чтобы быть конкретными, мы концентрируемся на последней.

Содержание
  • 1 Неформальное описание
  • 2 Формальное описание
    • 2.1 Требуемая информация
    • 2.2 Шифрование
    • 2.3 Расшифровка
  • 3 Ссылки
Неофициальное описание

Как краткое и неформальное описание и обзор того, как работает IES, мы используем пример, основанный на схеме интегрированного шифрования с дискретным логарифмом (DLIES), фокусируясь на освещении понимания читателем, а не на точных технических деталях.

  1. Алиса изучает открытый ключ Боба, g x {\ displaystyle g ^ {x}}g ^ {x} с помощью инфраструктуры открытого ключа или другого предварительно распределенного метода. Мы предполагаем, что Боб знает свой собственный закрытый ключ x {\ displaystyle x}x .
  2. Алиса генерирует новое эфемерное значение y {\ displaystyle y}y и связанное с ним общедоступное значение, gy {\ displaystyle g ^ {y}}g ^ {y} .
  3. Затем Алиса вычисляет симметричный ключ k {\ displaystyle k}k , используя эту информацию и функцию получения ключа KDF следующим образом: k = KDF (gxy) {\ displaystyle k = {\ mathit {KDF}} (g ^ {xy})}{\ displaystyle k = {\ mathit {KDF}} (g ^ {xy})} .
  4. Алиса вычисляет свой зашифрованный текст c {\ displaystyle c}c из ее фактического сообщения m {\ displaystyle m}m , то есть симметричного шифрования m {\ displaystyle m}m , зашифрованного с ключом k {\ displaystyle k}k (с использованием аутентифицированной схемы шифрования ) следующим образом: c = E (k; m) {\ displaystyle c = E (k; m)}{\ displaystyle c = E (k; m)} .
  5. Алиса передает (в одном сообщении) как общедоступное эфемерное gy {\ displaystyle g ^ {y}}g ^ {y} , и зашифрованный текст c {\ displaystyle c}c .
  6. Боб, зная x {\ displaystyle x}x an d gy {\ displaystyle g ^ {y}}g ^ {y} , теперь можно вычислить k = KDF (gxy) {\ displaystyle k = KDF (g ^ {xy})}{\ displaystyle k = KDF (g ^ {xy})} и расшифровать m {\ displaystyle m}m из c {\ displaystyle c}c .

Обратите внимание, что схема не дает Бобу никаких гарантий относительно того, кто действительно послал сообщение: схема ничего не делает, чтобы помешать кому-либо притвориться Алисой.

Формальное описание

Требуемая информация

Чтобы отправить зашифрованное сообщение Бобу с помощью ECIES, Алисе нужна следующая информация:

  • будет использоваться криптографический набор, включая функция создания ключа (например, ANSI-X9.63-KDF с опцией SHA-1), код аутентификации сообщения (например, HMAC-SHA-1-160 с 160-битными ключами или HMAC-SHA-1-80 с 80-битными ключами) и схема симметричного шифрования (например, TDEA в режиме CBC или схема шифрования XOR) - отмечен E {\ displaystyle E}E ;
  • Параметры области эллиптической кривой: (p, a, b, G, n, h) {\ displaystyle (p, a, b, G, n, h) }(p, a, b, G, n, h) для кривой над простым полем или (m, f (x), a, b, G, n, h) {\ displaystyle (m, f (x), a, b, G, n, h)}(m, f (x), a, b, G, n, h) для кривой над двоичным полем;
  • открытый ключ Боба: KB {\ displaystyle K_ {B}}K_ {B} (Боб генерирует его следующим образом: KB = k BG {\ displaystyle K_ {B} = k_ {B} G}K_ {B} = k_ {B} G , где k B {\ displaystyle k_ {B}}k_ {B} - частный k Эй, он выбирает случайным образом: k B ∈ [1, n - 1] {\ displaystyle k_ {B} \ in [1, n-1]}k_ {B} \ in [1, n-1] );
  • необязательная общая информация: S 1 {\ displaystyle S_ {1}}S_ {1} и S 2 {\ displaystyle S_ {2}}S_ {2} .
  • O {\ displaystyle O}O обозначает точку на бесконечности

Шифрование

Чтобы зашифровать сообщение m {\ displaystyle m}m Алиса делает следующее:

  1. генерирует случайное число r ∈ [1, n - 1] {\ displaystyle r \ in [1, n-1]}r \ in [1, n-1] и вычисляет R = r G {\ displaystyle R = rG}R = rG ;
  2. получает общий секрет: S = П Икс {\ Displaystyle S = P_ {x}}S = P_ {x} , где P = (P x, P y) = r KB {\ displaystyle P = (P_ {x}, P_ {y }) = rK_ {B}}P = (P_ {x}, P_ {y}) = rK_ {B} P ≠ O {\ displaystyle P \ neq O}P \ neq O );
  3. использует KDF для получения ключей симметричного шифрования и MAC ключи: k E ‖ k M = KDF (S ‖ S 1) {\ displaystyle k_ {E} \ | k_ {M} = {\ textrm {KDF}} (S \ | S_ { 1})}k_ {E} \ | k_ {M} = {\ textrm {KDF}} (S \ | S_ {1}) ;
  4. шифрует сообщение: c = E (k E; m) {\ displaystyle c = E (k_ {E}; m)}c = E (k_ {E}; m) ;
  5. вычисляет тег зашифрованного сообщения и S 2 {\ displaystyle S_ {2}}S_ {2} : d = MAC (k M; с ‖ S 2) {\ displaystyle d = {\ textrm {MAC}} (k_ {M}; c \ | S_ {2})}d = {\ textrm {MAC}} (k_ {M}; c \ | S_ {2}) ;
  6. выводит R ‖ c ‖ d {\ displaystyle R \ | c \ | d}R \ | c \ | d .

Расшифровка

Для расшифровки зашифрованного текста R ‖ c ‖ d {\ displaystyle R \ | c \ | d}R \ | c \ | d Боб делает следующее:

  1. получает общий секрет: S = P x {\ displaystyle S = P_ {x}}S = P_ {x} , где P = (P x, P y) = k BR {\ displaystyle P = (P_ {x}, P_ {y}) = k_ {B} R}P = (P_ {x}, P_ {y}) = k_ {B} R (он совпадает с полученным Алисой, потому что P = k BR = k B r G = rk BG = r KB {\ displaystyle P = k_ {B} R = k_ {B} rG = rk_ {B} G = rK_ {B}}P = k_ {B} R = k_ {B} rG = rk_ {B} G = rK_ {B} ), или выходы не удались, если P = O {\ displaystyle P = O}P = O ;
  2. получает ключи так же, как это сделала Алиса: k E ‖ k M = KDF (S ‖ S 1) {\ displaystyle k_ {E} \ | k_ {M} = {\ textrm {KDF}} (S \ | S_ {1})}k_ {E} \ | k_ {M} = {\ textrm {KDF}} (S \ | S_ {1}) ;
  3. использует MAC для проверки тега, и выходы не удались, если d ≠ MAC (k M; c ‖ S 2) {\ displaystyle d \ neq {\ textrm {MAC}} (k_ {M} ; c \ | S_ {2})}d \ neq {\ textrm {MAC} } (k_ {M}; c \ | S_ {2}) ;
  4. использует схему симметричного шифрования для дешифрования сообщения m = E - 1 (k E; c) {\ displaystyle m = E ^ {- 1} (k_ {E}; c)}m = E ^ {{- 1}} (k_ {E}; c) .
Ссылки
Последняя правка сделана 2021-05-24 03:54:01
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте