Криптосистема Макэлиса На Основе Кодов Ldpc

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

Одна из таких криптосистем была изобретена еще в 1978 году и основана на теории алгебраического кодирования.

В этой статье представлен обзор криптографии кода, основанной на кодах проверки четности низкой плотности (или просто кодах LDPC).

Прошу всех интересующихся под катом.



Содержание

  1. Введение
  2. Линейные коды
  3. Криптография кода
  4. Коды низкой плотности (LDPC)
  5. Криптография с использованием кодов LDPC
  6. Заключение
  7. Литература





Введение

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

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

Некоторая литература, способствующая этому, указана в конце статьи.



Линейные коды



Матричное кодирование

Назовем это порождающей матрицей

Криптосистема МакЭлиса на основе кодов LDPC

линейное пространство

Криптосистема МакЭлиса на основе кодов LDPC

матрица вида:

Криптосистема МакЭлиса на основе кодов LDPC

На данный момент мы согласны с тем, что все расчеты проводятся в

Криптосистема МакЭлиса на основе кодов LDPC

, Итак, это все

Криптосистема МакЭлиса на основе кодов LDPC

принимать значения 0 или 1. В систематическом виде матрица

Криптосистема МакЭлиса на основе кодов LDPC

представляет собой объединение единичной матрицы

Криптосистема МакЭлиса на основе кодов LDPC

и четность детали - матрицы

Криптосистема МакЭлиса на основе кодов LDPC

.

С систематической точки зрения легко получить соответствующую проверочную матрицу

Криптосистема МакЭлиса на основе кодов LDPC

, который выглядит так:

Криптосистема МакЭлиса на основе кодов LDPC

Фактически, матрица

Криптосистема МакЭлиса на основе кодов LDPC

не обязательно в систематической форме.

В этом смысле важно, чтобы между

Криптосистема МакЭлиса на основе кодов LDPC

И

Криптосистема МакЭлиса на основе кодов LDPC

отношение осталось:

Криптосистема МакЭлиса на основе кодов LDPC

.

Тогда кодировка выглядит так:

Криптосистема МакЭлиса на основе кодов LDPC

, Где

Криптосистема МакЭлиса на основе кодов LDPC

- оригинальное слово

Криптосистема МакЭлиса на основе кодов LDPC

— полученное кодовое слово.



Проблема с декодированием

Матрица проверки используется для проверки отсутствия ошибок при передаче сообщения.

Назовем это синдромом

Криптосистема МакЭлиса на основе кодов LDPC

вектор, полученный после расчета

Криптосистема МакЭлиса на основе кодов LDPC

.

Если синдром представляет собой нулевой вектор, то ошибок передачи не произошло.

В противном случае вместо

Криптосистема МакЭлиса на основе кодов LDPC

мы получаем

Криптосистема МакЭлиса на основе кодов LDPC

, Где

Криптосистема МакЭлиса на основе кодов LDPC

— вектор ошибки (в позициях, где произошли ошибки, принимает значение 1).

Чтобы расшифровать кодовое слово

Криптосистема МакЭлиса на основе кодов LDPC

, необходимо сначала освободить его от ошибок.

Декодирование методом максимального правдоподобия – это проблема поиска таких

Криптосистема МакЭлиса на основе кодов LDPC

, Что

Криптосистема МакЭлиса на основе кодов LDPC

.

Это следует из:

Криптосистема МакЭлиса на основе кодов LDPC

Ээквивалентная задача: для этого кода

Криптосистема МакЭлиса на основе кодов LDPC

найти ближайшее допустимое кодовое слово

Криптосистема МакЭлиса на основе кодов LDPC

(ближайший в смысле метрики расстояния Хэмминга).

Решить проблему можно только полным перебором всех векторов ошибок (или всех кодовых слов).

Для многих линейных кодов изобретены эффективные алгоритмы декодирования (например, для кодов LDPC, обсуждаемых ниже, используются алгоритмы распространения доверия и переворота битов, которые позволяют декодировать код с ошибками за линейное время).

А вообще декодирование произвольного линейного кода является NP-трудной задачей .



Криптография кода



Основная идея

Ключевая идея кодовой криптографии — заставить злоумышленника решить NP-сложную задачу, а именно декодировать случайный линейный код. Подход здесь следующий:
  • Скроем структуру кода известного алгоритма декодирования с помощью некоторых линейных преобразований (например, перестановок) по

    Криптосистема МакЭлиса на основе кодов LDPC

    и мы получаем новую порождающую матрицу

    Криптосистема МакЭлиса на основе кодов LDPC

  • Мы используем

    Криптосистема МакЭлиса на основе кодов LDPC

    закодировать слово со случайным вектором ошибок

    Криптосистема МакЭлиса на основе кодов LDPC

  • Зная операции, к которым мы применили

    Криптосистема МакЭлиса на основе кодов LDPC

    , мы можем применить обратные операции к

    Криптосистема МакЭлиса на основе кодов LDPC

    и декодируем кодовое слово с помощью эффективного алгоритма, освобождая его от ошибок
  • Для злоумышленника этот код будет выглядеть так случайный


Криптосистема Mac-Эlias

Наиболее популярные криптосистемы в криптографии кодов были предложены МакЛисом и чуть позже Нидеррайтером.

Алгоритмы имеют соответствующие названия.

Они характеризуются:

  • Асимметричное шифрование: есть открытый и закрытый ключ.

  • За основу может быть взят любой линейный код с известным эффективным алгоритмом декодирования.

  • Криптосистемы устойчивы к атакам квантовых компьютеров
  • Основной недостаток: огромный размер ключей (исчисляется в МБ).

В дальнейшем мы более подробно остановимся только на криптосистеме Маклиаса.



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

Ключи генерируются по следующему алгоритму:
  1. Позволять

    Криптосистема МакЭлиса на основе кодов LDPC

    – порождающая (k, n)-матрица (n, k)-линейного кода, корректирующая

    Криптосистема МакЭлиса на основе кодов LDPC

    ошибки
  2. Возьмем случайную неособую (k, k)-матрицу

    Криптосистема МакЭлиса на основе кодов LDPC

  3. Возьмем случайную (n, n) матрицу перестановок

    Криптосистема МакЭлиса на основе кодов LDPC

  4. Открытый ключ: пара

    Криптосистема МакЭлиса на основе кодов LDPC

    , Где

    Криптосистема МакЭлиса на основе кодов LDPC

  5. Закрытый ключ: три

    Криптосистема МакЭлиса на основе кодов LDPC

Объяснение: невырожденность матриц

Криптосистема МакЭлиса на основе кодов LDPC

И

Криптосистема МакЭлиса на основе кодов LDPC

является обязательным условием, так как по ним ищутся обратные матрицы, а умножение на них происходит при расшифровке, а t необходимо для того, чтобы в код нельзя было добавить больше ошибок, чем он может исправить при шифровании.

Что интересно, так это простота алгоритма (оригинальная статья автора занимала всего 3 страницы!), а также его потенциал.

Думаю, написано уже не одна сотня текстов, продолжающих эту идею.



Шифрование

Мы шифруем сообщение следующим образом:
  1. Возьмите случайный вектор ошибок

    Криптосистема МакЭлиса на основе кодов LDPC

    длина

    Криптосистема МакЭлиса на основе кодов LDPC

    а вес

    Криптосистема МакЭлиса на основе кодов LDPC

    не более

    Криптосистема МакЭлиса на основе кодов LDPC

  2. Мы кодируем сообщение следующим образом:

    Криптосистема МакЭлиса на основе кодов LDPC

Теперь давайте расшифруем наш зашифрованный текст c:
  1. Давайте посчитаем

    Криптосистема МакЭлиса на основе кодов LDPC

  2. Декодирование

    Криптосистема МакЭлиса на основе кодов LDPC

    используя известный алгоритм, получаем сообщение

    Криптосистема МакЭлиса на основе кодов LDPC

  3. Давайте восстановим исходное сообщение

    Криптосистема МакЭлиса на основе кодов LDPC

Всю математическую концепцию можно записать в виде одной формулы:

Криптосистема МакЭлиса на основе кодов LDPC



Модификации

В оригинале автор предлагал использовать свой алгоритм на основе двоичных кодов Гоппы, но вскоре математики стали предлагать модификации алгоритма с использованием других линейных кодов.

Я перечислю несколько: небинарные коды Гоппы, коды Рида-Соломона, Габидуллина, коды Рида-Мюллера, LDPC, LRPC, полярные, алгебро-геометрические коды и множество их вариаций.

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

В основном использовалась сильная алгебраическая структура многих кодов.

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

  • Двоичные коды Гоппы
  • Сверточные коды
  • Коды MDPC (разновидность кодов LDPC)
Далее мы рассмотрим вариант криптосистемы на основе кодов LDPC и их более устойчивую разновидность — коды MDPC.

Коды низкой плотности (LDPC)

Мы не будем долго останавливаться на этом разделе, потому что хорошее описание этих кодов – тема отдельной статьи.

Тем, кто раньше не сталкивался с LDPC-кодами, настоятельно рекомендую прочитать о них эту замечательную статью.

Здесь или в Википедия .



Преимущества кодов LDPC

Коды с низкой плотностью проверок четности характеризуются:
  • Разреженная матрица проверки четности: количество единиц в ней стремится к 0 по мере роста n. Структура матрицы выглядит довольно случайной.

  • Их можно декодировать за линейное время.

    Существуют алгоритмы «мягкого» и «жесткого» декодирования (в англоязычной литературе «soft-decision» и «hard-decision» decoding).

  • Отличные возможности коррекции: нерегулярные коды LDPC очень близки к границе Шеннона.

  • Квазициклическая вариация (QC-LDPC) может быть представлена в виде компактной полиномиальной формы.



Криптография с использованием кодов LDPC

Вышеуказанные преимущества кодов LDPC позволяют им быть прекрасной основой для криптосистемы Мак-Элиаса, поскольку:
  1. Структуру LDPC-кода легко «спрятать» под линейными преобразованиями.

  2. Существуют быстрые алгоритмы декодирования.

  3. Компактная форма кодов QC-LDPC позволяет значительно уменьшить размер закрытого ключа.

Но есть и недостатки:
  1. Корректирующая способность случайно сгенерированного кода LDPC неизвестна (для определения параметра t используется либо моделирование подверженного ошибкам декодирования, либо алгоритм плотности эволюции).

  2. Некоторые атаки на код уже известны (например, атака на двойной код).

  3. Необходимо брать относительно большие коды, чтобы достичь достаточного уровня криптостойкости.



Типы кодов LDPC

На данный момент в криптографии более применимы модификации LDPC: MDPC и его квазициклическая форма (QC-MDPC).



Коды MDPC

Коды MDPC (проверка четности с умеренной плотностью) представляют собой более «тяжелую» версию кодов LDPC. Если для формирования кодов LDPC рекомендуется брать вес вектора w не более 10, то для кода MDPC из расчета выбирается средний вес строки

Криптосистема МакЭлиса на основе кодов LDPC

, где n — длина вектора-строки (считается, что эта цифра является наиболее оптимальной).

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



Квазициклические коды

Генерирующая матрица квазициклического кода низкой плотности (QC-LDPC) задается как конкатенация нескольких циркулянтов.

Циркулянтом называется (n, n)-матрица, первая строка которой содержит полином, а остальные строки — ее циклические сдвиги:

Криптосистема МакЭлиса на основе кодов LDPC

Задавая код в таком виде, мы немного теряем в корректирующей способности, но можем хранить порождающую матрицу в компактном виде: теперь нам нужно хранить только порождающие полиномы, а порождающую матрицу мы можем построить, выписав их циклические сдвиги.

Прикинем, во сколько раз мы сможем уменьшить наш закрытый ключ, используя этот подход для (p, n)-QC-LDPC-кода с параметрами n = 9602 и p = 4801 (размер одного циркулянта):

  1. Бинарная матрица перестановок P(n, n): ~11 Мб --> целочисленный вектор P’(n): ~9,5 Кб.

    В этом случае мы храним массив переставленных столбцов, устраняя огромную размерность.

  2. Генерирующая матрица G(n, p): ~5,5 Мб --> полиномиальная форма G’(n): ~1,2 Кб.

  3. Бинарная матрица S(p, p): ~2,75 Мб --> полиномиальная форма S’(p): ~0,6 Кб.

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

Конечная прибыль: закрытый ключ в 1760 раз меньше ! К сожалению, тот же трюк не сработает с открытым ключом.



Уровень криптографической стойкости

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

Например, Mac-Эlias, основанный на (1024, 524, 101) коде Гоппы, гарантировал уровень криптографической стойкости 50 бит (т. е.

злоумышленнику потребуется

Криптосистема МакЭлиса на основе кодов LDPC

итераций для успешной атаки).

Для сравнения: код MDPC с параметрами n = 9602 и w = 90 обеспечивает уровень криптостойкости 80 бит .

При этом для криптоанализа не известны другие методы, кроме атаки на произвольный линейный код (например, декодирование по набору информации), и на данный момент этот уровень считается вполне надежным.



Заключение

Криптография кода — относительно новая и, безусловно, интересная тема для изучения.

Ее актуальность подчеркивается увеличением мощности компьютеров, перед которыми классические криптосистемы начинают уступать.

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

Все факты, утверждения и цифры, использованные в этой статье, были взяты из приведенных ниже источников и из Википедии, свободной энциклопедии.

Надеюсь, этот материал был интересен для изучения.

Любые комментарии, вопросы и уточнения по теме приветствуются.



Литература

  1. Криптосистема с открытым ключом, основанная на алгебраической теории кодирования (Р.

    Дж.

    МакЭлис)

  2. Введение в коды проверки четности с низкой плотностью (Дэниел Дж.

    Костелло-младший)

  3. Об использовании кодов LDPC в криптосистеме МакЭлиса (Марко Бальди)
  4. Коды LDPC в криптосистеме МакЭлиса: атаки и меры противодействия (Марко Бальди)
  5. Криптография на основе кода QC-LDPC (Марко Бальди)
  6. MDPC-McEliece: новые варианты McEliece из кодов проверки четности умеренной плотности (Рафаэль Мисочки, Жан-Пьер Тиллих, Николя Сендрие и Пауло С.

    Л.

    М.

    Баррето)

  7. Современная теория кодирования (Том Ричардсон, Рюдигер Урбанке)
Теги: #Криптография #постквантовая криптография #криптография кода #mceliece #теория информации #линейные коды #ldpc #qc-ldpc #mdpc
Вместе с данным постом часто просматривают: