Криптосистема Крамера – Шоупа

Материал из testwiki
Версия от 21:17, 30 октября 2024; imported>ШаманСемен (Задача Диффи-Хеллмана о различении: орфография)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Криптосистема Крамера–Шоупа (Шаблон:Lang-en) — алгоритм шифрования с открытым ключом. Первый алгоритм, доказавший свою устойчивость к атакам на основе адаптивно подобранного шифротекста . Разработан Рональдом Крамером и Виктором Шоупом в 1998 году. Безопасность алгоритма основана предположении Диффи–Хеллмана о различении. Является расширением схемы Эль-Гамаля, но в отличие от схемы Эль-Гамаля данный алгоритм Шаблон:Не переведено 3 (взломщик не может подменить шифротекст на другой шифротекст, который бы расшифровывался в текст, связанный с исходным, т.е. являющийся некоторой функцией от него). Эта устойчивость достигается за счет использования универсальной однонаправленной хеш-функции и дополнительных вычислений, что приводит к получению зашифрованного текста, который в два раза больше, чем в схеме Эль-Гамаля.

Атака на основе подобранного шифротекста

Шаблон:Also

Криптографическая атака, при которой криптоаналитик собирает информацию о шифре путем подбора зашифрованного текста и получения его расшифровки при неизвестном ключе. Криптоаналитик может воспользоваться устройством расшифрования несколько раз для получения шифротекста в расшифрованном виде. Используя полученные данные, он может попытаться восстановить секретный ключ для расшифровки. Атака на основе подобранного шифротекста может быть адаптивной и неадаптивной.

Было хорошо известно, что многие широко используемые криптосистемы были уязвимы для такой атаки, и в течение многих лет считалось, что атака нецелесообразна и представляет лишь теоретический интерес. Все начало меняться в конце 1990-х годов, особенно когда Даниэль Блайхенбахер продемонстрировал на практике атаку на основе подобранного шифротекста на серверы SSL с использованием формы шифрования RSA.

Неадаптивная атака

При неадаптивной атаке криптоаналитик не использует результаты предыдущих расшифровок, то есть шифротексты подбираются заранее. Такие атаки называют атаками в обеденное время (lunchtime или CCA1).

Адаптивная атака

В случае адаптивной атаки криптоаналитик адаптивно подбирает шифротекст, который зависит от результатов предыдущих расшифровок (CCA2).

Устойчивость к адаптивной атаке можно расммотреть на примере игры:

  • Запускается алгоритм генерации ключа в схеме шифрования с соответствующей длиной ключа, подаваемой на вход.
  • Противник выполняет серию произвольных запросов к оракулу дешифрования, таким образом дешифровывая шифротексты по его выбору.
  • Противник выбирает два сообщения m0,m1 и отправляет их к оракулу шифрования.
  • Оракул шифрования случайно выбирает бит b0,1, затем шифрует mb, который передается противнику (подбрасывание монетки для выбора бита b скрыто от противника).
  • Противник снова выполняет серию произвольных запросов к оракулу дешифрования с одним лишь ограничением, что запрос должен отличаться от сообщения, полученного им от оракула шифрования.
  • Противник выдает бит b10,1 - предполагаемое значение бита b, выбранного оракулом шифрования на шаге 4. Если Pr(b1=b)1/2+E, то превосходство противника считается равным E.

Задача Диффи-Хеллмана о различении

Существует несколько эквивалентных формулировок задачи Диффи-Хеллмана о различении. Та, которую мы будем использовать, выглядит следующим образом.

Пусть G— группа порядка q, где q — большое простое число. Также Zq — {0,1,,q1}. И имеется два распределения:

  • Распределение R случайных четверок (g1,g2,u1,u2)G4.
  • Распределение D четверок (g1,g2,u1,u2)G4 , где g1,g2 - случайны, а u1=g1r,u2=g2r для случайного rZq.

Алгоритмом, который решает задачу Диффи-Хеллмана, называется такой вероятностный алгоритм A, который может эффективно различить перечисленные два распределения. То есть алгоритм, принимающий на вход одно из двух распределений, должен выдать 0 или 1, а также P(A(x)=1|xR)P(A(x)=1|xD) стремится к 0.

Задача Диффи-Хеллмана о различении трудна, если такого полиномиального вероятностного алгоритма не существует.

Базовая схема

Пусть у нас есть группа G порядка q, где q — большое простое число. Сообщения — это элементы G. Также мы используем универсальное семейство односторонних хеш-функций, которое отображает длинные битовые строчки в элементы Zq, где Zq — {0,1,,q1}.

Генерация ключа

Алгоритм генерации ключей работает следующим образом:

  • Алиса генерирует случайные g1,g2G и случайные элементы (x1,x2,y1,y2,z)Zq
  • Алиса вычисляет c=g1x1g2x2,d=g1y1g2y2,h=g1z.
  • Выбирается хеш-функция H из универсального семейства односторонних хеш-функций. Публичный ключ - (g1,g2,c,d,h,H), скрытый ключ - (x1,x2,y1,y2,z) .

Шифрование

Дано сообщение mG. Алгоритм шифрования работает следующим образом

  • Боб случайно выбирает kZq.
  • Боб вычисляет следующие значения:
    • u1=g1k,u2=g2k;
    • e=hkm;
    • α=H(u1,u2,e), где H() - это универсальная односторонняя хеш-функция;
    • v=ckdkα;
  • Боб отправляет зашифрованный текст (u1,u2,e,v) Алисе.

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

Получив зашифрованный текст (u1,u2,e,v) и используя закрытый ключ (x1,x2,y1,y2,z):

  • Алиса вычисляет α=H(u1,u2,e).
  • Алиса проверяет условие u1x1u2x2u1y1αu2y2α=v. Если условие не выполняется, то протокол завершается с отказом дешифрования. Иначе выводится сообщение m=e/u1z.

Корректность протокола

Проверим корректность шифровальной схемы (расшифровка зашифрованного сообщения выдает это самое сообщение). Учитывая, что u1=g1r и u2=g2r, имеем u1x1u2x2=g1x1rg2x2r=cr. Также u1y1u2y2=dr и u1z=hz. Поэтому проверка дешифрования проходит успешно и выводится исходное сообщение m=e/u1z.

Упрощенная схема

Отличия от базовой схемы

Для достижения безопасности к неадаптивным атакам (и только им) можно значительно упростить протокол, не использовав d,y1,y2,H(). При шифровании мы используем v=ck, а при дешифровании проверяем, что v=u1x1u2x2.

Пример упрощенной схемы

Пусть у нас есть группа G порядка q=13. Соответственно Z13 — {0,1,,12}.

Генерация ключа

Алгоритм генерации ключей работает следующим образом:

  • Алиса генерирует случайные g1=5,g2=7G и случайные элементы (x1=8,x2=4,z=9)Zq
  • Алиса вычисляет c=58*74,h=59.
  • Публичный ключ - (g1,g2,c,h)=(5,7,58*74,59) , скрытый ключ - (x1,x2,z)=(8,4,9).

Шифрование

Дано сообщение 3G. Алгоритм шифрования работает следующим образом

  • Боб случайно выбирает 5Zq.
  • Боб вычисляет следующие значения:
    • u1=55,u2=75;
    • e=(59)5*3;
    • v=(58*74)5;
  • Боб отправляет зашифрованный текст (u1,u2,e,v)=(55,75,(59)5*3,(58*74)5 Алисе.

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

Получив зашифрованный текст (55,75,(59)5*3,(59)5*3) и используя закрытый ключ (8,4,9):

  • Алиса проверяет условие (55)8*(75)4=(55)8*(75)4.
  • Условие выполняется, поэтому выводится зашифрованное Бобом сообщение 3=((59)5*3)/(55)9.

Доказательство безопасности

Теорема

Криптосистема Крамера-Шоупа устойчива к атакам на основе адаптивно подобранного шифротекста при выполнении следующих условий:

  • Хеш-функция H выбирается из универсального семейства односторонних хеш-функций.
  • Задача Диффи-Хеллмана о различении трудна для группы G.

Доказательство: чтобы доказать теорему, мы предположим, что существует противник, который может взломать протокол, и покажем, что при выполнении условия на хеш-функцию получается противоречие с условием на задачу Диффи-Хеллмана. На вход нашему вероятностному алгоритму подается (g1,g2,u1,u2) из распределения R или D. На поверхностном уровне конструкция будет выглядеть следующим образом: мы построим симулятор, который будет выдавать совместное распределение, состоящее из видения взломщиком криптосистемы после серии атак и скрытого бита b, генерируемого оракулом генерации (не входит в видение взломщика, скрыто от него). Идея доказательства: мы покажем, что если на вход подается распределение из D, то симуляция пройдет успешно, а противник будет иметь нетривиальное превосходство в угадывании случайного бита b. Также мы покажем, что если на вход подается распределение из R, то видение противника не зависит от bи a, и, значит, превосходство противника будет ничтожно мало (меньше обратного полинома). Отсюда можно построить различитель распределений R и D: запускаем симулятор криптосистемы (выводит b) и взломщика (выводит b1) одновременно и выдаем 1, если b=b1 и 0в противном случае.

Построение симулятора

Схема симуляции генерации ключа выглядит следующим образом:

  • На вход симулятору поступает (g1,g2,u1,u2).
  • Симулятор использует заданные (g1,g2).
  • Симулятор выбирает случайные величины (x1,x2,y1,y2,z1,z2)Zq.
  • Симулятор вычисляет c=g1x1g2x2,d=g1y1g2y2,h=g1z1g2z2.
  • Симулятор выбирает случайную хеш-функцию H и выдает публичный ключ (g1,g2,c,d,h,H). Скрытый ключ симулятора: (x1,x2,y1,y2,z1,z2).

Можно заметить, что генерация ключа симулятора отличается от генерации ключа в протоколе (там z2=0).

Симуляция дешифрования. Происходит так же, как и в протоколе, с той разницей, что m=e/(u1z1+u2z2)

Симуляция шифрования. Получая на вход m0,m1, симулятор выбирает случайное значение b0,1, вычисляет e=u1z1u2z2mb,α=H(u1,u2,e,v),v=u1x1+y1αu2x2+y2αи выводит (u1,u2,v,e). Теперь доказательство теоремы будет следовать из следующих двух лемм.

Леммы

Лемма 1. Если на вход симулятору подается распределение из D, то совместное распределение видения взломщиком криптосистемы и скрытого бита b статистически неразличимо от настоящей атаки криптосистемы.

Лемма 2. Если на вход симулятору подается распределение из R, то распределение скрытого бита b не зависит от распределения видения взломщика.

Ссылки

Шаблон:Криптосистемы с открытым ключом