EPOC (схема шифрования)

Материал из testwiki
Перейти к навигации Перейти к поиску

EPOC (Шаблон:Lang-en; эффективное вероятностное шифрование с открытым ключом) — это вероятностная схема шифрования с открытым ключом.

EPOC был разработан в ноябре 1998 г. Т. Окамото (англ. T. Okamoto), С. Учияма (англ. S. Uchiyama) и Э. Фудзисаки (англ. E. Fujisaki) из NTT Laboratories в Японии. Он основан на модели случайного оракула, в которой функция шифрования с открытым ключом преобразуется в безопасную схему шифрования с использованием (действительно) случайной хеш-функции; результирующая схема разработана так, чтобы быть семантически защищённой от атак на основе подобранного шифротекстаШаблон:Sfn.

Виды схем

Функция шифрования EPOC — это функция OU (англ. Okamoto-Uchiyama), которую инвертировать так же сложно, как факторизировать составной целочисленный открытый ключ. Существует три версии EPOCШаблон:Sfn:

EPOC обладает следующими свойствами:

  1. EPOC-1 семантически безопасен, устойчив к атакам на основе подобранного шифротекста (IND-CCA2 или NM-CCA2) в модели случайного оракулаШаблон:Sfn в предположении p-подгруппы, которое вычислительно сопоставимо с предположениями квадратичного вычета и вычетов более высокой степени.
  2. EPOC-2 с одноразовым блокнотом семантически безопасен, устойчив к атакам на основе подобранного шифротекста (IND-CCA2 или NM-CCA2) в модели случайного оракула в предположении факторизации.
  3. EPOC-2 с симметричным шифрованием семантически безопасен, устойчив к атакам на основе подобранного шифротекста (IND-CCA2 или NM-CCA2) в модели случайного оракула в рамках предположения факторизации, если базовое симметричное шифрование является безопасным против пассивных атак (атак вида, когда криптоаналитик имеет возможность только видеть предаваемые шифротексты и генерировать собственные, используя открытый ключ.).

Предыстория

Диффи и Хеллман предложили концепцию криптосистемы с открытым ключом (или односторонней функции) в 1976 году. Хотя многое криптографы и математики провели обширные исследования, чтобы реализовать концепцию криптосистем с открытым ключом в течение более чем 20 лет, было найдено очень мало конкретных методов, которые являются безопаснымиШаблон:Sfn.

Типичным классом методов является RSA-Rabin, представляющий собой комбинацию полиномиального алгоритма нахождения корня многочлена в кольце вычетов по модулю составного числаконечном поле)и неразрешимой задачи факторизации(по вычислительной сложности). Другим типичным классом методов является метод Диффи-Хеллмана, Эль-Гамаля, который представляет собой комбинацию коммутативного свойства логарифма в конечной Абелевой группе и неразрешимой задачи дискретного логарифмаШаблон:Sfn.

Среди методов RSA-Rabin и Diffie-Hellman-ElGamal для реализации односторонней функции ни одна функция, кроме функции Рабина и её вариантов, таких как её версии эллиптической кривой и Уильямса, не была доказана такой же надёжной, как примитивные задачиШаблон:Sfn(например, задачи факторизации и дискретного логарифма).

Окамото и Учияма, предложили одностороннюю функцию, названную OU (англ. Okamoto-Uchiyama), которая практична, доказуемо безопасна и обладает некоторыми другими интересными свойствамиШаблон:Sfn.

  1. Вероятностная функция: это односторонняя, вероятностная функция. Пусть E(m,r) — зашифрованный текст открытого текста m со случайным r.
  2. Односторонность функции: Доказано, что инвертирование функции так же трудно, как факторизация n:=p2q.
  3. Семантическая стойкость: Функция семантически безопасна, если верно следующее предположение (предположение p-подгруппы): E(0,r)=hr mod n и E(1,r)=ghr mod n вычислительно неразличимы, где r и r равномерно и независимо выбраны из 𝐙/n𝐙. Это предположение о неразличимости шифротекста для атак на основе подобранного открытого текста вычислительно сравнимо с поиском квадратичного вычета и вычета более высокой степени.
  4. Эффективность: В среде использования криптосистем с открытым ключом, где криптосистема с открытым ключом используется только для распространения секретного ключа(например, длиной 112 и 128 бит) криптосистемы с секретным ключом(например, Triple DES и IDEA), скорость шифрования и дешифрования функции OU сравнима (в несколько раз медленнее) со скоростью криптосистем с эллиптической кривой.
  5. Свойство гомоморфного шифрования: Функция обладает свойством гомоморфного шифрования: E(m0,r0)E(m1,r1) mod n=E(m0+m1,r3), if m0+m1<p(Такое свойство используется для электронного голосования и других криптографических протоколов).
  6. Неразличимость шифротекста: Даже тот, кто не знает секретного ключа, может изменить зашифрованный текст, C=E(m,r), на другой зашифрованный текст, C=Chr mod n, сохраняя при этом открытый текст m (то есть C=E(m,r)), и связь между C и C может быть скрыта (то есть (C,C) и (C,E(m,t) неразличимы). Такое свойство полезно для протоколов защиты конфиденциальности).

Доказательство безопасности схемы шифрования

Одним из важнейших свойств шифрования с открытым ключом является доказуемая безопасность. Самое сильное понятие безопасности в шифровании с открытым ключом — это понятие семантической защиты от атак на основе подобранного шифротекста.

Доказано, что семантическая защита от атак на основе адаптивно подобранного шифротекста (IND-CCA2) эквивалентна (или достаточна) самому сильному понятию безопасности (NM-CCA2)Шаблон:SfnШаблон:Sfn.

Фудзисаки и Окамото реализовали две общие и эффективные меры для преобразования вероятностной односторонней функции в защищённую схему IND-CCA2 в модели случайного оракулаШаблон:Sfn. Одна из них — это преобразование семантически безопасной (IND-CPA) односторонней функции в защищённую схему IND-CCA2. Другая, от односторонней функции (OW-CPA) и шифрования с симметричным ключом (включая одноразовый блокнот) до защищённой схемы IND-CCA2. Последнее преобразование может гарантировать полную безопасность системы шифрования с открытым ключом в сочетании со схемой шифрования с симметричным ключомШаблон:Sfn.

Схема шифрования EPOC

Обзор

Схема шифрования с открытым ключом EPOC, которая задаётся триплетом (𝒢,,𝒟), где 𝒢-операция генерации ключа, -операция шифрования и 𝒟-операция дешифрования.

Схемы EPOC: EPOC-1 и EPOC-2.

EPOC-1 предназначен для распределения ключей, а EPOC-2 предназначен для распределения ключей и передачи зашифрованных данных, а также распределения более длинного ключа при ограниченном размере открытого ключа.

Типы ключей

Существует два типа ключей: открытый ключ OU и закрытый ключ OU, оба из которых используются в криптографических схемах шифрования EPOC-1, EPOC-2Шаблон:Sfn.

OU открытый ключШаблон:Sfn

Открытый ключ OU — это набор (n,g,h,pLen), компоненты которого имеют следующие значения:

  • n — неотрицательное целое число
  • g — неотрицательное целое число
  • h — неотрицательное целое число
  • pLen — секретный параметр, неотрицательное целое число

На практике в открытом ключе OU модуль n принимает вид n:=p2q, где p и q — два различных нечётных простых числа, а битовая длина p и q равна pLen. g-элемент в (𝐙/n𝐙)* такой, что порядок gp в (𝐙/p2𝐙)* равен p, где gp:=gp1 mod p2. h-элемент в (𝐙/n𝐙)*.

OU закрытый ключШаблон:Sfn

Закрытый ключ OU — это набор (p,g,pLen,w), компоненты которого имеют следующие значения:

  • p — первый фактор, неотрицательное целое число
  • h — второй фактор, неотрицательное целое число
  • pLen — секретный параметр, неотрицательное целое число
  • w — значение L(gp), где L(x)=x1p, неотрицательное целое число

Создание Ключа: G

Ввод и вывод 𝒢 следующие:

[Входные данные]: Секретный параметр k(=pLen) — положительное целое число.

[Выходные данные]: Пара открытого ключа (n,g,h,H,pLen,mLen,hLen,rLen) и секретного ключа (p,gp).

Операция 𝒢 со входом k выглядит следующим образом:

  • Выберем два простых числа p, q (|p|=|q|=k) и вычислим n:=p2q. Здесь p1=pu и q1=qv такое, что p и q — простые числа, а |u| и |v| такие, что O(logk).
  • Выберем g(𝐙/n𝐙)* случайным образом так, чтобы порядок gp:=gp1 mod p2 был равен p (Заметим, что НОД(p, q1)=1 и НОД(q, p1)=1).
  • Выберем h0 из (𝐙/n𝐙)* случайным образом и независимо от g. Вычислим h:=hn0 mod n.
  • Установить pLen:=k. Установите mLen и rLen такими, что mLen+rLenpLen1.

Примечание: gp является дополнительным параметром, повышающим эффективность дешифрования, и может быть вычислен из p и g. h=gn mod n, когда hLen=(2+c0)k (c0-константа >0). H может быть зафиксирован системой и совместно использован многими пользователями.

Шифрование: E

Ввод и вывод следующие:

[Входные данные]: Открытый текст M{0,1}mLen вместе с открытым ключом (n,g,h,H,pLen,mLen,hLen,rLen).

[Выходные данные]: Шифротекст С.

Операция со входами M, (n,g,h,H,mLen,rLen) выглядит следующим образом:

  • Выберем R{0,1}rLen и вычислим r:=H(MR). Здесь MR обозначает конкатенацию M и R.
  • Вычислить C:

C:=g(MR)hr mod n.

Дешифрование: D

Ввод и вывод 𝒟 следующие:

[Входные данные]: Шифротекст C наряду с открытым ключом (n,g,h,H,pLen,mLen,hLen) и секретным ключом (p,gp).

[Выходные данные]: Открытый текст M или нулевая строка.

Операция 𝒟 со входами C, (n,g,h,H,pLen,mLen,hLen) и (p,gp) выглядит следующим образом:

  • Вычислим Cp:=Cp1 mod p2, а X:=L(Cp)L(gp) mod p, где L(x):=x1p.
  • Проверим, верно ли следующее уравнение: C=gXhH(X) mod n.
  • Если выражение верно, то выведем [X]mLen как расшифрованный открытый текст, где [X]mLen обозначает наиболее значимые mLen биты в X. В противном случае выведем нулевую строку.

Создание Ключа: G

Ввод и вывод 𝒢 следующие:

[Входные данные]: Секретный параметр k(=pLen).

[Выходные данные]: Пара открытого ключа (n,g,h,H,G,pLen,hLen,gLen,rLen) и секретного ключа (p,gp).

Операция 𝒢 со входом k выглядит следующим образом:

  • Выберем два простых числа p, q (|p|=|q|=k) и вычислим n:=p2q. Здесь p1=pu и q1=qv такое, что p и q — простые числа, а |u| и |v| такие, что O(logk).
  • Выберем g(𝐙/n𝐙)* случайным образом так, чтобы порядок gp:=gp1 mod p2 был равен p.
  • Выберем h0 из (𝐙/n𝐙)* случайным образом и независимо от g. Вычислим h:=hn0 mod n.
  • Установить pLen:=k. Установите mLen и rLen такими, что mLen+rLenpLen1.

Примечание: gp является дополнительным параметром, повышающим эффективность дешифрования, и может быть вычислено из p и g. h=gn mod n, когда hLen=(2+c0)k (c0-константа >0). H и G могут быть зафиксированы системой и совместно использованы многими пользователями.

Шифрование: E

Пусть SymE=(SymEnc,SymDec) — пара алгоритмов шифрования и дешифрования с симметричным ключом K, где длина K равна gLen. Алгоритм шифрования SymEnc принимает ключ K и открытый текст X и возвращает зашифрованный текст SymEnc(K,X). Алгоритм расшифровки SymDec принимает ключ K и зашифрованный текст Y и возвращает открытый текст SymDec(K,Y).

Ввод и вывод следующие:

[Входные данные]: Открытый текст M{0,1}mLen вместе с открытым ключом (n,g,h,H,G,pLen,hLen,gLen,rLen) и SymEnc.

[Выходные данные]: Зашифрованный текст C=(C1,C2).

Операция со входами M, (n,g,h,H,G,pLen,hLen,gLen,rLen) и SymEnc выглядит следующим образом:

  • Выберем r{0,1}rLen и вычислим G(R).
  • C1:=gRhH(MR) mod n; C2:=SymEnc(G(R),M)

Примечание: типичный способ реализации SymE — это одноразовый блокнот. То есть, SymEnc(K,X):=KX, и SymDec(X,Y):=XY , где обозначает операцию побитового исключающего ИЛИ.

Дешифрование: D

Ввод и вывод 𝒟 следующие:

[Входные данные]: Шифротекст C=(C1,C2) наряду с открытым ключом (n,g,h,H,G,pLen,hLen,gLen,rLen), секретным ключом (p,gp) и SymDec.

[Выходные данные]: Открытый текст M или нулевая строка.

Операция 𝒟 со входами C=(C1,C2), (n,g,h,H,G,pLen,hLen,gLen), (p,gp) и SymDec выглядит следующим образом:

  • Вычислим Cp:=Cp1 mod p2, а R:=L(Cp)L(gp) mod p, где L(x):=x1p.
  • Вычислим M:=SymDec(G(R),C2).
  • Проверим, верно ли следующее уравнение: C=gRhH(MR) mod n.
  • Если выражение верно, то выведем M как расшифрованный открытый текст. В противном случае выведем нулевую строку.

Примечания

Шаблон:Примечания

Литература