Линейный криптоанализ
- 1 year ago
- 0
- 0
Данная статья описывает условия использования криптоалгоритма с открытым ключом RSA , упрощающие криптоаналитические атаки , и методы исключения таких условий.
На 2009 год система шифрования на основе RSA считается надёжной начиная с размера в 1024 бита.
Группе учёных из Швейцарии, Японии, Франции, Нидерландов, Германии и США удалось успешно вычислить данные, зашифрованные при помощи криптографического ключа стандарта RSA длиной 768 бит. По словам исследователей, после их работы в качестве надежной системы шифрования можно рассматривать только RSA-ключи длиной 1024 бита и более. Причём от шифрования ключом длиной в 1024 бит стоит отказаться в ближайшие три-четыре года.
Как следует из описания работы, вычисление значений ключа осуществлялось общим методом решета числового поля .
На первый шаг (выбор пары полиномов степени 6 и 1) было потрачено около полугода вычислений на 80 процессорах, что составило около 3 % времени, потраченного на главный этап алгоритма (просеивание), который выполнялся на сотнях компьютеров в течение почти двух лет. Если интерполировать это время на работу одного процессора AMD Opteron 2,2 ГГц с 2 Гб памяти, то получилось бы порядка 1500 лет. Обработка данных после просеивания для следующего ресурсоёмкого шага (линейной алгебры) потребовалось несколько недель на малом количестве процессоров. Заключительный шаг после нахождения нетривиальных решений ОСЛУ занял не более 12 часов.
Решение ОСЛУ проводилось с помощью на нескольких раздельных кластерах и длилось чуть менее 4 месяцев. При этом размер разреженной матрицы составил 192 796 550х192 795 550 при наличии 27 795 115 920 ненулевых элементов (то есть в среднем 144 ненулевых элемента на строку). Для хранения матрицы на жёстком диске понадобилось около 105 гигабайт. В то же время понадобилось около 5 терабайт сжатых данных для построения данной матрицы.
В итоге группе удалось вычислить 232-цифровой ключ, открывающий доступ к зашифрованным данным.
Исследователи уверены, что используя их метод факторизации, взломать 1024-битный RSA-ключ будет возможно в течение следующего десятилетия [ когда? ] .
Зная разложение модуля на произведение двух простых чисел, противник может легко найти секретную экспоненту и тем самым взломать RSA. Однако на сегодняшний день самый быстрый алгоритм факторизации — решето обобщённого числового поля (General Number Field Sieve), скорость которого для k-битного целого числа составляет
для некоторого ,
не позволяет разложить большое целое за приемлемое время. Будем рассматривать возможные атаки на RSA, которые позволяют взломать эту систему, не используя прямого разложения модуля n на произведение двух простых чисел.
Рассмотрим несколько атак, связанных с неправильным использованием алгоритма RSA.
На случайные простые числа и накладывается следующее дополнительное ограничение:
Начальные данные: Чтобы избежать генерирования различных модулей для каждого пользователя, защищённый сервер использует единый n для шифрования всех сообщений. Сторона использует этот сервер для получения сообщения
Задача: противник хочет расшифровать сообщение стороны .
Казалось бы, шифротекст , отправленный стороне , не может быть расшифрован стороной , если она не обладает секретным ключом . Однако сторона может использовать свои экспоненты , чтобы разложить модуль , и после этого, зная , вычислить секретную экспоненту .
Защита: для каждого пользователя должен использоваться свой модуль .
Начальные данные: — открытый ключ нотариуса. Противник получает отказ при попытке подписания нотариусом сообщения
Задача: противник хочет получить подпись нотариуса на сообщении .
Противник выбирает произвольное , вычисляет и отправляет это сообщение на подпись нотариусу.
Если нотариус подписывает это сообщение:
то противник, вычислив , получает подпись сообщения .
Действительно,
Защита: при подписи добавлять в сообщение некоторое случайное число (например, время).
Начальные данные: Чтобы увеличить скорость расшифрования (или создания цифровой подписи), было уменьшено число ненулевых битов двоичного представления секретной экспоненты (см.).
Задача: вычислить секретную экспоненту .
В 1990 году Михаэль Винер (Michael J. Wiener) показал, что в случае малого значения возможен взлом системы RSA, а именно:
Теорема Винера:
Пусть , где Тогда, если известно , где , то существует эффективный способ вычислить .
Защита: Таким образом, если имеет размер 1024 бита, необходимо, чтобы был не менее 256 бит длиной.
Чтобы увеличить скорость шифрования и проверки цифровой подписи , используют малые значения открытой экспоненты . Наименьшее из них . Однако, чтобы повысить криптоустойчивость алгоритма RSA, рекомендовано использовать
.
Начальные условия: Сторона отсылает зашифрованное сообщение пользователям . Каждый пользователь имеет свой открытый ключ , причём . Сторона зашифровывает сообщение, используя поочерёдно открытый ключ каждого пользователя, и отсылает его соответствующему адресату. Противник прослушивает канал передачи и собирает переданных шифротекстов.
Задача: противник хочет восстановить сообщение .
Положим , тогда противник может восстановить если .
Действительно, если противник получил , где
Мы предполагаем, что взаимно просты, иначе наибольший общий делитель отличный от единицы означал нахождение делителя одного из . Применяя китайскую теорему об остатках к , получим ,
Поскольку ,то и
Т. е. противник может восстановить сообщение , вычислив кубический корень из .
В общем случае, если все открытые экспоненты равны , противник может восстановить при .
Рассмотрим простейшую защиту от этой атаки. Пусть сообщение для каждого пользователя является некоторой фиксированной перестановкой исходного сообщения . К примеру,
Хастад (Johan Hastad) показал, что даже в этом случае противник может восстановить сообщение при достаточном количестве пользователей.
Защита: Эта атака возможна только при малом значении открытой экспоненты , в этом случае криптостойкости системы RSA можно достигнуть, используя произвольную перестановку, а не фиксированную, пример которой был приведён выше.
Начальные условия :
Имеются два сообщения , причём
Сторона с открытым ключом получает эти сообщения от стороны , которая просто зашифровывает сообщения и передаёт полученные шифротексты .
Задача: Противник, зная , хочет восстановить .
Метью Франклин (Matthew K. Franklin) и Михаэль Рейтер (Michael K. Reiter) доказали, следующее утверждение:
Пусть 1) - открытый ключ системы RSA, причём 2) и , для некоторого линейного многочлена , Тогда, зная , противник может восстановить
Действительно, для произвольного :
, является корнем многочлена
но, является также корнем многочлена
Таким образом делит оба многочлена. И противник может использовать алгоритм Евклида , чтобы вычислить НОД . Если результат окажется линейным многочленом, то будет найдено.
Когда , НОД является линейным многочленом, и следовательно противник может эффективно вычислить сообщения .
Защита: при время взлома системы RSA пропорционально , поэтому данная атака может быть использована только при малых значениях открытой экспоненты.
Начальные условия :
Противник знает часть двоичного представления секретной экспоненты .
Задача: восстановить .
Оказывается, что:
Возможность взлома системы RSA в случае, когда открытая экспонента мала, так же очевидна из следующих рассуждений:
Защита: увеличение открытой экспоненты .
С помощью квантового компьютера , если он будет построен, можно будет взломать RSA, так как квантовый алгоритм Шора позволяет осуществить факторизацию больших чисел за достаточно короткое время. Разложив модуль n на простые множители (это можно сделать за время , используя O (log n ) логических Q-битов ), можно будет вычислить секретный показатель d.
Начальные условия:
Рассмотрим смарт-карту , микропроцессор которой подписывает сообщения, используя встроенный секретный ключ RSA.
Задача: противник хочет получить секретную экспоненту .
Пол Кохер (Paul Kocher) предложил атаку, основанную на высокоточных замерах времени выполнения шифратором смарт-карты определенных операций. Рассмотрим эту атаку на примере системы RSA, использующей алгоритм быстрого возведения в степень :
Противник получает подписи смарт-карты для большого числа произвольных сообщений , и измеряет время генерации их подписей .
В ходе атаки значение секретной экспоненты восстанавливается побитно, начиная с младшего бита:
Заметим, что в случае малой открытой экспоненты может быть применена . В этом случае достаточно восстановить половину бит секретной экспоненты .
Защита: необходимо добавлять соответствующую задержку таким образом, чтобы каждый шаг алгоритма быстрого возведения в степень занимал фиксированный период времени.
Начальные условия:
Рассмотрим смарт-карту , микропроцессор которой подписывает сообщения, используя встроенный секретный ключ RSA. Микропроцессор карты использует китайскую теорему об остатках в целях ускорения процедуры подписи. Противник пытается вызвать сбой в вычислениях микропроцессора.
Задача: противник хочет вычислить модуль .
Использование китайской теоремы об остатках, увеличивает скорость создания цифровой подписи.
Пусть действия противника вызвали сбой, повлёкший за собой дефект одного бита подписи. Тогда по крайней мере одна из или вычислена неправильно. Положим, дефект содержится в .
В этом случае
однако
Таким образом противник может найти разложение ,как результат поиска НОД .
Защита:
В 2021 году, группа исследователей, включающая Грацский технический университет , технологический институт Джорджии и некоммерческий исследовательский центр «Lamarr Security Research», используя уязвимость SMT в процессорах AMD с архитектурами Zen , Zen 2 и Zen 3 , смогла «взломать» ключ шифрования RSA -4096 .