Криптосистема МакЭлиса

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

В криптографии, то Мак - Элиса криптосистемы является асимметричное шифрование алгоритм, разработанный в 1978 году Робертом МакЭлиса. Это была первая такая схема, в которой в процессе шифрования использовалась рандомизация. Алгоритм никогда не получал большого признания в криптографическом сообществе, но является кандидатом на роль « постквантовой криптографии », поскольку он невосприимчив к атакам с использованием алгоритма Шора и, в более общем плане, к измерению состояний смежности с использованием выборки Фурье.

Алгоритм основан на сложности декодирования общего линейного кода (который известен как NP-сложный ). Для описания секретного ключа выбирается код исправления ошибок, для которого известен эффективный алгоритм декодирования и который может исправлять ошибки. Исходный алгоритм использует двоичные коды Гоппа ( коды подполей геометрических кодов Гоппа кривой рода 0 над конечными полями характеристики 2); эти коды могут быть эффективно декодированы благодаря алгоритму Паттерсона. Открытый ключ получается из закрытого ключа путем маскировки выбранного кода под общий линейный код. Для этого матрица генератора кода возмущается двумя случайно выбранными обратимыми матрицами и (см. Ниже). т {\ displaystyle t} грамм {\ displaystyle G} S {\ displaystyle S} п {\ displaystyle P}

Существуют варианты этой криптосистемы, использующие разные типы кодов. Большинство из них оказались менее безопасными; они были разбиты структурной расшифровкой.

МакЭлис с кодами Гоппа пока сопротивляется криптоанализу. Наиболее эффективные известные атаки используют алгоритмы декодирования информационного набора. В документе 2008 года описывается как атака, так и исправление. В другой статье показано, что для квантовых вычислений размеры ключей должны быть увеличены в четыре раза из-за улучшений в декодировании набора информации.

Криптосистема Мак-Элиса имеет некоторые преимущества перед, например, RSA. Шифрование и дешифрование выполняются быстрее. Долгое время считалось, что МакЭлис нельзя использовать для создания подписей. Однако схема подписи может быть построена на основе схемы Нидеррейтера, двойного варианта схемы Мак-Элиса. Одним из основных недостатков Мак-Элиса является то, что закрытый и открытый ключи представляют собой большие матрицы. Для стандартного набора параметров длина открытого ключа составляет 512 килобит.

СОДЕРЖАНИЕ
  • 1 Определение схемы
    • 1.1 Генерация ключей
    • 1.2 Шифрование сообщений
    • 1.3 Расшифровка сообщения
  • 2 Подтверждение расшифровки сообщения
  • 3 основных размера
  • 4 атаки
    • 4.1 Грубая сила / неструктурированные атаки
    • 4.2 Структурные атаки
    • 4.3 Кандидат на постквантовое шифрование
  • 5 ссылки
  • 6 Внешние ссылки
Определение схемы

Мак-Элис состоит из трех алгоритмов: вероятностного алгоритма генерации ключей, который производит открытый и закрытый ключи, вероятностного алгоритма шифрования и детерминированного алгоритма дешифрования.

Все пользователи в установочном ресурсе МакЭлиса набор общих параметров безопасности:. п , k , т {\ Displaystyle п, к, т}

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

Принцип состоит в том, что Алиса выбирает линейный код из некоторого семейства кодов, для которого она знает эффективный алгоритм декодирования, и делает это общедоступным, но сохраняет алгоритм декодирования в секрете. Такой алгоритм декодирования требует не просто знания в смысле знания произвольной матрицы генератора, но требует знания параметров, используемых при задании в выбранном семействе кодов. Например, для двоичных кодов Гоппы эта информация будет полиномом Гоппы и локаторами кода. Следовательно, Алиса может опубликовать надлежащим образом обфусцированную генераторную матрицу. C {\ displaystyle C} C {\ displaystyle C} C {\ displaystyle C} C {\ displaystyle C} C {\ displaystyle C}

В частности, шаги следующие:

  1. Алиса выбирает двоично- линейный код, способный (эффективно) исправлять ошибки из некоторого большого семейства кодов, например двоичных кодов Гоппы. Этот выбор должен привести к эффективному алгоритму декодирования. Позвольте также быть любой образующей матрицы для. Любой линейный код имеет много образующих матриц, но часто есть естественный выбор для этого семейства кодов. Если это будет известно, то это должно быть секретом. ( п , k ) {\ Displaystyle (п, к)} C {\ displaystyle C} т {\ displaystyle t} А {\ displaystyle A} грамм {\ displaystyle G} C {\ displaystyle C} А {\ displaystyle A}
  2. Алиса выбирает случайную двоичную невырожденную матрицу. k × k {\ Displaystyle к \ раз к} S {\ displaystyle S}
  3. Алиса выбирает матрицу случайных перестановок. п × п {\ Displaystyle п \ раз п} п {\ displaystyle P}
  4. Алиса вычисляет матрицу. k × п {\ Displaystyle к \ раз п} грамм ^ знак равно S грамм п {\ displaystyle {\ hat {G}} = SGP}
  5. Открытый ключ Алисы ; ее закрытый ключ. Обратите внимание, что можно закодировать и сохранить как параметры, используемые для выбора. ( грамм ^ , т ) {\ Displaystyle ({\ шляпа {G}}, т)} ( S , п , А ) {\ Displaystyle (S, P, A)} А {\ displaystyle A} C {\ displaystyle C}

Шифрование сообщений

Предположим, Боб хочет отправить сообщение m Алисе, чей открытый ключ: ( грамм ^ , т ) {\ Displaystyle ({\ шляпа {G}}, т)}

  1. Боб кодирует сообщение как двоичную строку длины. м {\ displaystyle m} k {\ displaystyle k}
  2. Боб вычисляет вектор. c знак равно м грамм ^ {\ displaystyle c ^ {\ prime} = m {\ hat {G}}}
  3. Боб генерирует случайный -битовый вектор, содержащий ровно единицы (вектор длины и веса). п {\ displaystyle n} z {\ displaystyle z} т {\ displaystyle t} п {\ displaystyle n} т {\ displaystyle t}
  4. Боб вычисляет зашифрованный текст как. c знак равно c + z {\ displaystyle c = c ^ {\ prime} + z}

Расшифровка сообщения

После получения Алиса выполняет следующие шаги для расшифровки сообщения: c {\ displaystyle c}

  1. Алиса вычисляет обратное (т.е.). п {\ displaystyle P} п - 1 {\ Displaystyle P ^ {- 1}}
  2. Алиса вычисляет. c ^ знак равно c п - 1 {\ displaystyle {\ hat {c}} = cP ^ {- 1}}
  3. Алиса использует алгоритм декодирования для декодирования. А {\ displaystyle A} c ^ {\ displaystyle {\ hat {c}}} м ^ {\ displaystyle {\ hat {m}}}
  4. Алиса вычисляет. м знак равно м ^ S - 1 {\ displaystyle m = {\ hat {m}} S ^ {- 1}}
Доказательство расшифровки сообщения

Обратите внимание, что, и это матрица перестановок, поэтому имеет вес. c ^ знак равно c п - 1 знак равно м грамм ^ п - 1 + z п - 1 знак равно м S грамм + z п - 1 {\ displaystyle {\ hat {c}} = cP ^ {- 1} = m {\ hat {G}} P ^ {- 1} + zP ^ {- 1} = mSG + zP ^ {- 1}} п {\ displaystyle P} z п - 1 {\ displaystyle zP ^ {- 1}} т {\ displaystyle t}

Код Goppa может исправлять с точностью до ошибок, а слово находится на расстоянии не более чем от. Таким образом получается правильное кодовое слово. грамм {\ displaystyle G} т {\ displaystyle t} м S грамм {\ displaystyle mSG} т {\ displaystyle t} c п - 1 {\ displaystyle cP ^ {- 1}} м ^ знак равно м S {\ displaystyle {\ hat {m}} = mS}

Умножение на обратное дает, то есть текстовое сообщение. S {\ displaystyle S} м знак равно м ^ S - 1 знак равно м S S - 1 {\ displaystyle m = {\ hat {m}} S ^ {- 1} = mSS ^ {- 1}}

Ключевые размеры

Первоначально МакЭлис предложил размер параметров безопасности равный, в результате чего размер открытого ключа составляет 524 * (1024-524) = 262000 бит. Недавний анализ предлагает размеры параметров для 80 битов безопасности при использовании стандартного алгебраического декодирования или при использовании декодирования списком для кода Гоппа, что приводит к размерам открытого ключа 520 047 и 460 647 битов соответственно. Для обеспечения устойчивости к квантовым компьютерам были предложены размеры с кодом Гоппа, что дает размер открытого ключа 8 373 911 бит. В своей 3 -м раунда подачи в NIST после квантовой стандартизации самого высокого уровня безопасности, уровень 5 даются для наборов параметров 6688128, 6960119 и 8192128. Этих параметров,, соответственно. п знак равно 1024 , k знак равно 524 , т знак равно 50 {\ displaystyle n = 1024, k = 524, t = 50} п знак равно 2048 , k знак равно 1751 , т знак равно 27 {\ displaystyle n = 2048, k = 1751, t = 27} п знак равно 1632 , k знак равно 1269 , т знак равно 34 {\ displaystyle n = 1632, k = 1269, t = 34} п знак равно 6960 , k знак равно 5413 , т знак равно 119 {\ displaystyle n = 6960, k = 5413, t = 119} п знак равно 6688 , k знак равно 128 , т знак равно 13 {\ displaystyle n = 6688, k = 128, t = 13} п знак равно 6960 , k знак равно 119 , т знак равно 13 {\ displaystyle n = 6960, k = 119, t = 13} п знак равно 8192 , k знак равно 128 , т знак равно 13 {\ displaystyle n = 8192, k = 128, t = 13}

Атаки

Атака состоит в том, что злоумышленник, который знает открытый ключ, но не знает закрытый ключ, извлекает открытый текст из некоторого перехваченного зашифрованного текста. Такие попытки должны быть невозможны. ( грамм ^ , т ) {\ Displaystyle ({\ шляпа {G}}, т)} у F 2 п {\ displaystyle y \ in \ mathbb {F} _ {2} ^ {n}}

У МакЭлиса есть два основных направления атак:

Брутфорс / неструктурированные атаки

Злоумышленник знает, что является образующей матрицей кода, который комбинаторно способен исправлять ошибки. Злоумышленник может игнорировать тот факт, что на самом деле представляет собой обфускацию структурированного кода, выбранного из определенного семейства, и вместо этого просто использовать алгоритм для декодирования с любым линейным кодом. Существует несколько таких алгоритмов, таких как просмотр каждого кодового слова кода, синдромное декодирование или декодирование набора информации. грамм ^ {\ displaystyle {\ hat {G}}} ( п , k ) {\ Displaystyle (п, к)} C ^ {\ displaystyle {\ hat {C}}} т {\ displaystyle t} C ^ {\ displaystyle {\ hat {C}}}

Однако известно, что декодирование общего линейного кода является NP-трудным, и все вышеупомянутые методы имеют экспоненциальное время выполнения.

В 2008 году Бернштейн, Ланге и Петерс описали практическую атаку на оригинальную криптосистему Мак-Элиса с использованием метода декодирования набора информации Стерна. Используя параметры, первоначально предложенные Мак-Элисом, атака могла быть проведена за 2 60,55- битных операций. Поскольку атака до неприличия параллельна (связь между узлами не требуется), она может быть проведена за несколько дней на скромных компьютерных кластерах.

Структурные атаки

Вместо этого злоумышленник может попытаться восстановить «структуру», тем самым восстанавливая эффективный алгоритм декодирования или другой достаточно сильный и эффективный алгоритм декодирования. C {\ displaystyle C} А {\ displaystyle A}

Семейство кодов, из которых выбирается, полностью определяет, возможно ли это для злоумышленника. Для Мак-Элиса было предложено множество семейств кодов, и большинство из них были полностью «сломаны» в том смысле, что были обнаружены атаки, восстанавливающие эффективный алгоритм декодирования, такие как коды Рида-Соломона. C {\ displaystyle C}

Первоначально предложенные двоичные коды Гоппы остаются одним из немногих предложенных семейств кодов, которые в значительной степени сопротивлялись попыткам разработки структурных атак.

Кандидат на постквантовое шифрование

Вариант этого алгоритма в сочетании с NTS-KEM был выбран во втором раунде конкурса постквантового шифрования NIST.

Рекомендации
Внешние ссылки
Последняя правка сделана 2024-01-02 03:49:50
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте