В криптографии криптосистема Мак-Элиса — это асимметричный алгоритм шифрования, разработанный в 1978 году Робертом Мак-Элисом . [1] Это была первая подобная схема, использующая рандомизацию в процессе шифрования. Алгоритм так и не получил большого признания в криптографическом сообществе, но является кандидатом на « постквантовую криптографию », поскольку он невосприимчив к атакам с использованием алгоритма Шора и — в более общем плане — к измерению состояний смежных классов с использованием выборки Фурье. [2]
Алгоритм основан на сложности декодирования общего линейного кода (который, как известно, является NP-сложным [3] ). Для описания закрытого ключа выбирается код с исправлением ошибок , для которого известен эффективный алгоритм декодирования, и который способен исправлять ошибки. Исходный алгоритм использует двоичные коды Гоппы (коды подполей алгебраических геометрических кодов кривой рода 0 над конечными полями характеристики 2); эти коды могут быть эффективно декодированы благодаря алгоритму Паттерсона [4] . Открытый ключ выводится из закрытого ключа путем маскировки выбранного кода под общий линейный код. Для этого матрица генератора кода возмущается двумя случайно выбранными обратимыми матрицами и (см. ниже).
Существуют варианты этой криптосистемы, использующие различные типы кодов. Большинство из них оказались менее безопасными; их удалось взломать с помощью структурного декодирования.
McEliece с кодами Goppa пока что сопротивляется криптоанализу. Наиболее эффективные известные атаки используют алгоритмы декодирования информационного набора . В статье 2008 года описывается как атака, так и исправление. [5] В другой статье показано, что для квантовых вычислений размеры ключей должны быть увеличены в четыре раза из-за улучшений в декодировании информационного набора. [6]
Криптосистема McEliece имеет некоторые преимущества перед, например, RSA . Шифрование и дешифрование выполняются быстрее. [7] Долгое время считалось, что McEliece не может использоваться для создания подписей . Однако схему подписи можно построить на основе схемы Нидеррайтера , дуального варианта схемы McEliece. Одним из главных недостатков McEliece является то, что закрытый и открытый ключи представляют собой большие матрицы. Для стандартного набора параметров открытый ключ имеет длину 512 килобит.
McEliece состоит из трех алгоритмов: вероятностного алгоритма генерации ключей, который создает открытый и закрытый ключ, вероятностного алгоритма шифрования и детерминированного алгоритма дешифрования.
Все пользователи в развертывании McEliece используют набор общих параметров безопасности: .
Принцип заключается в том, что Алиса выбирает линейный код из некоторого семейства кодов, для которого она знает эффективный алгоритм декодирования, и делает общедоступным знание, но сохраняет алгоритм декодирования в секрете. Такой алгоритм декодирования требует не только знания , в смысле знания произвольной матрицы-генератора, но и требует знания параметров, используемых при указании в выбранном семействе кодов. Например, для двоичных кодов Гоппы этой информацией будут полином Гоппы и локаторы кодов. Поэтому Алиса может опубликовать соответствующим образом запутанную матрицу-генератор .
Более конкретно, шаги следующие:
Предположим, Боб хочет отправить сообщение m Алисе, открытый ключ которой :
Получив сообщение , Алиса выполняет следующие действия для его расшифровки:
Обратите внимание, что , и это матрица перестановок, поэтому она имеет вес .
Код Гоппы может исправить до ошибок, а слово находится на расстоянии не более . Таким образом, получается правильное кодовое слово .
Умножение на обратное число дает , что является простым текстовым сообщением.
Поскольку в матрице есть свободный выбор , принято выражать в «систематической форме», так что последние столбцы соответствуют матрице идентичности . Это уменьшает размер ключа до . [8] [9] МакЭлис изначально предложил размеры параметров безопасности , [1] что приводит к размеру открытого ключа 524 × (1024 − 524) =262 000 бит . Недавний анализ предполагает размеры параметровдля 80 бит безопасности при использовании стандартного алгебраического декодирования илипри использовании декодирования списка для кода Гоппы, что приводит к размерам открытого ключа520 047 и460 647 бит соответственно. [5] Для устойчивости к квантовым компьютерам были предложены размеры с кодом Гоппы, дающие размер открытого ключа8 373 911 бит . [10] В своем третьем раунде подачи в NIST после квантовой стандартизации наивысший уровень безопасности, уровень 5, дан для наборов параметров 6688128, 6960119 и 8192128. Параметры равны , , соответственно.
Атака состоит из злоумышленника, который знает открытый ключ , но не знает закрытый ключ, выводящего открытый текст из некоторого перехваченного шифротекста . Такие попытки должны быть неосуществимы.
Для МакЭлиса существует два основных направления атак:
Атакующий знает , матрицу генератора кода , который комбинаторно способен исправлять ошибки. Атакующий может игнорировать тот факт, что на самом деле это обфускация структурированного кода, выбранного из определенного семейства, и вместо этого просто использовать алгоритм для декодирования с любым линейным кодом. Существует несколько таких алгоритмов, например, прохождение каждого кодового слова кода, декодирование синдрома или декодирование набора информации .
Однако известно, что декодирование общего линейного кода является NP-трудной задачей [ 3] , и все вышеупомянутые методы имеют экспоненциальное время выполнения.
В 2008 году Бернстайн, Ланге и Питерс [5] описали практическую атаку на оригинальную криптосистему Мак-Элиса, используя метод декодирования информационного набора Стерна. [11] Используя параметры, изначально предложенные Мак-Элисом, атака могла быть выполнена за 2 60,55 битных операции. Поскольку атака ошеломляюще параллельна (никакой связи между узлами не требуется), ее можно выполнить за несколько дней на скромных компьютерных кластерах.
Вместо этого злоумышленник может попытаться восстановить «структуру» , тем самым восстановив эффективный алгоритм декодирования или другой достаточно сильный и эффективный алгоритм декодирования.
Семейство кодов, из которого выбирается, полностью определяет, возможно ли это для злоумышленника. Для Мак-Элиса было предложено много семейств кодов, и большинство из них были полностью «взломаны» в том смысле, что были найдены атаки, которые восстанавливают эффективный алгоритм декодирования, например, коды Рида-Соломона .
Первоначально предложенные двоичные коды Гоппы остаются одним из немногих предложенных семейств кодов, которые в значительной степени противостоят попыткам разработки структурных атак.
Вариант этого алгоритма в сочетании с NTS-KEM [12] был представлен и выбран в ходе третьего тура конкурса NIST по постквантовому шифрованию . [13]