Криптосистема Крамера–Шоупа (англ. Cramer–Shoup system) — алгоритм шифрования с открытым ключом. Первый алгоритм, доказавший свою устойчивость к атакам на основе адаптивно подобранного шифротекста . Разработан Рональдом Крамером и Виктором Шоупом в 1998 году. Безопасность алгоритма основана предположении Диффи–Хеллмана о различении. Является расширением схемы Эль-Гамаля, но в отличие от схемы Эль-Гамаля данный алгоритм неподатлив (взломщик не может подменить шифротекст на другой шифротекст, который бы расшифровывался в текст, связанный с исходным, т.е. являющийся некоторой функцией от него). Эта устойчивость достигается за счет использования универсальной однонаправленной хеш-функции и дополнительных вычислений, что приводит к получению зашифрованного текста, который в два раза больше, чем в схеме Эль-Гамаля.
Криптографическая атака, при которой криптоаналитик собирает информацию о шифре путем подбора зашифрованного текста и получения его расшифровки при неизвестном ключе. Криптоаналитик может воспользоваться устройством расшифрования несколько раз для получения шифротекста в расшифрованном виде. Используя полученные данные, он может попытаться восстановить секретный ключ для расшифровки. Атака на основе подобранного шифротекста может быть адаптивной и неадаптивной.
Было хорошо известно, что многие широко используемые криптосистемы были уязвимы к такой атаке, и в течение многих лет считалось, что атака нецелесообразна и представляет лишь теоретический интерес. Все началось меняться в конце 1990-х годов, особенно когда Даниэль Блайхенбахер продемонстрировал на практике атаку на основе подобранного шифротекста на серверы SSL с использованием формы шифрования RSA.
При неадаптивной атаке криптоаналитик не использует результаты предыдущих расшифровок, то есть шифротексты подбираются заранее. Такие атаки называют атаками в обеденное время (lunchtime или CCA1).
В случае адаптивной атаки криптоаналитик адаптивно подбирает шифротекст, который зависит от результатов предыдущих расшифровок (CCA2).
Устойчивость к адаптивной атаке можно расммотреть на примере игры:
Существует несколько эквивалентных формулировок задачи Диффи-Хеллмана о различении. Та, которую мы будем использовать, выглядит следующим образом.
Пусть — группа порядка , где — большое простое число. Также — . И имеется два распределения:
Алгоритмом, который решает задачу Диффи-Хеллмана, называется такой вероятностный алгоритм , который может эффективно различить перечисленные два распределения. То есть алгоритм, принимающий на вход одно из двух рапределений, должен выдать 0 или 1, а также стремится к 0.
Задача Диффи-Хеллмана о различении трудна, если такого полиномиального вероятностного алгоритма не существует.
Пусть у нас есть группа порядка , где — большое простое число. Сообщения — это элементы . Также мы используем универсальное семейство односторонних хеш-функций, которое отображает длинные битовые строчки в элементы , где — .
Алгоритм генерации ключей работает следующим образом:
Дано сообщение . Алгоритм шифрования работает следующим образом
Получив зашифрованный текст и используя закрытый ключ :
Проверим корректность шифровальной схемы (расшифровка зашифрованного сообщения выдает это самое сообщение). Учитывая, что и , имеем . Также и . Поэтому проверка дешифрования проходит успешно и выводится исходное сообщение .
Для достижения безопасности к неадаптивным атакам (и только им) можно значительно упростить протокол, не использовав . При шифровании мы используем , а при дешифровании проверяем, что .
Пусть у нас есть группа порядка . Соответсвенно — .
Алгоритм генерации ключей работает следующим образом:
Дано сообщение . Алгоритм шифрования работает следующим образом
Получив зашифрованный текст и используя закрытый ключ :
Криптосистема Крамера-Шоупа устойчива к атакам на основе адаптивно подобранного шифротекста при выполнении следующих условий:
Доказательство: чтобы доказать теорему, мы предположим, что существует противник, который может взломать протокол, и покажем, что при выполнении условия на хеш-функцию получается противоречие с условием на задачу Диффи-Хеллмана. На вход нашему вероятностному алгоритму подается из распределения или . На поверхностном уровне конструкция будет выглядеть следующим образом: мы построим симулятор, который будет выдавать совместное распределение, состоящее из видения взломщиком криптосистемы после серии атак и скрытого бита b, генерируемого оракулом генерации (не входит в видение взломщика, скрыто от него). Идея доказательства: мы покажем, что если на вход подается распределение из , то симуляция пройдет успешно, а противник будет иметь нетривиальное превосходство в угадывании случайного бита b. Также мы покажем, что если на вход подается распределение из , то видение противника не зависит от и , и, значит, превосходство противника будет ничтожно мало (меньше обратного полинома). Отсюда можно построить различитель распределений и : запускаем симулятор криптосистемы (выводит ) и взломщика (выводит ) одновременно и выдаем , если и в противном случае.
Схема симуляции генерации ключа выглядит следующим образом:
Можно заметить, что генерация ключа симулятора отличается от генерации ключа в протоколе (там ).
Симуляция дешифрования. Происходит так же, как и в протоколе, с той разницей, что
Симуляция шифрования. Получая на вход , симулятор выбирает случайное значение , вычисляет и выводит . Теперь доказательство теоремы будет следовать из следующих двух лемм.
Лемма 1. Если на вход симулятору подается распределение из , то совместное распределение видения взломщиком криптосистемы и скрытого бита статистически неразличимо от настоящей атаки криптосистемы.
Лемма 2. Если на вход симулятору подается распределение из , то распределение скрытого бита не зависит от распределения видения взломщика.
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .