id: Гость   вход   регистрация
текущее время 05:13 15/11/2019
создать
просмотр
редакции
ссылки

Чешская атака на закрытый ключ


20 марта 2001 года два чешских учёных, Властимил Клима и Томас Роса, обнародовали новую атаку на OpenPGP и PGP. Их атака опирается на брешь в OpenPGP и, в случае с DSA, на недостаточные проверки в самом PGP. Цель их атаки — восстановление закрытого ключа пользователя. Этот ключ находится на связке закрытых ключей и его можно раздобыть, получив доступ к компьютеру пользователя. PGP, в свою очередь, противодействует такому развитию событий, храня закрытые ключи в зашифрованном виде: для расшифрования ключа необходима верная парольная фраза.


План их действий таков:


  1. Проникните в офис или дом жертвы, включите компьютер, скопируйте закрытый ключ на дискету, а затем внесите в оригинал ключа кое-какие хитрые изменения.
  2. Дождитесь, пока жертва подпишет что-нибудь своим модифицированным ключом. (Этот процесс можно ускорить, прибегнув к небольшой социальной инженерии: "Вы выиграли в нашу лотереи имени Бритни Спирс. Отправьте нам этот заполненный и подписанный купон, и в ответ Вы получите постер размером 3х6 метров!") В обычных обстоятельствах нет ничего страшного в создании и опубликовании подписей, так что нет никаких причин, почему бы жертва отказалась это сделать.
  3. Рассчитайте по сгенерированной подписи закрытый ключ жертвы. В зависимости от типа ключа (RSA или DH, новый формат или старый) это может потребовать кое-каких вычислений.
  4. Снова проникните в помещение и восстановите оригинал ключа. Это необходимо, если вы не хотите, чтобы жертва узнала о компрометации: модифицированный вариант ключа не позволяет корректно расшифровывать данные.

Первая атака, приведённая в их работе, — это атака на ключ RSA. Эти ключи имеют следующую структуру (подробности приведены в предыдущей главе):


  • публичные параметры: n, e
  • секретные параметры: d, p, q, u, контрольная сумма

Все большие числа (n, e, d, p, q и u) хранятся в следующем формате: вначале длина числа в виде 16-битового значения, затем байты, содержащие число, в порядке от стоящего первым наиболее значащего байта. В формате v3, совместимом с PGP 2.6.x, зашифрованными хранятся только сами числа, но не их длины. В формате v4 (начиная с PGP 5.0) весь пакет секретных параметров шифруется большим единым блоком. Двухбайтовая контрольная сумма содержит сумму секретных байтов по модулю 65536. Задача взломщика — изменить значение u. Для атаки на формат v3 он уменьшает длину u на 1 и так же уменьшает контрольную сумму. Сумма остаётся верной!


Когда жертва произведёт выработку подписи повреждённым ключом, результат операции RSA будет следующим (подробнее здесь):
S' = s1 + p ∗ u' ∗ (s2 – s1) mod n = S + k ∗ p
(5.1)

для определённого ненулевого значения k. Таким образом, разница между S и S' кратна p. Взломщику неизвестно S. Однако, если ему известен подписанный документ, он может сформировать Se, поскольку это хэш документа, преобразованный в большое число определённым предсказуемым образом. Он вычисляет:
A = S'e – Se = Se + p ∗ [ещё_одно_неизвестное] – Se
(5.2)

A кратно p, поэтому взломщик вычисляет p = НОД(A,N) и факторизует ключ жертвы.


Атака на ключи v4 немного сложнее, поскольку длины больших чисел также шифруются. Всё, что в таком случае требуется от взломщика, — это изменить один из последних битов u, одновременно меняя бит в той же байт-позиции контрольной суммы. Подобные однобитовые изменения в зашифрованных данных приведут к симметричным однобитовым изменениям в расшифрованных данных благодаря специфике используемого в PGP режима CFB. Контрольная сумма совпадёт, если значения байтов в u и в контрольной сумме либо одновременно увеличатся, либо одновременно уменьшатся. Это 50-процентный успех, ведь всё, что нужно, это чтобы изменённые биты оказались равны. Так что атаку придётся повторить, если она не сработает с первого раза. В завершение, подпись позволит факторизовать ключ так же, как и при атаке на v3.


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

Ключи DSA


Чтобы окончательно всех добить, чешские исследователи предложили похожую атаку на ключи DH/DSA, которая реально работает против PGP. Безопасность DSA опирается на неразрешимость проблемы вычисления дискретных логарифмов, поэтому взломщик модифицирует открытые параметры ключа, чтобы сделать проблему дискретного логарифмирования легче. Авторы атаки заменяют p на p'=167∗2151+1. Нет ничего особенно в числе 167 кроме того, что это небольшое простое число, и что p' тоже оказывается простым, и p'<q. Также они выбирают новое значение генератора g', такое, что g'((p'-1)/2) modp ≠ 1 и g'((p'-1)/167) ≠ 1. Это гарантирует, что g' также будет генератором группы Ζp'∗. Теперь взломщик ждёт, пока будет сгенерирована подпись (состоящая из r' и s') на известном сообщении m:
r' = g'k mod p' mod q = g'k mod p'
(5.3)

s' = (k-1 mod q) ∗ (H(m) + x ∗ r') mod q
(5.4)

Что так же можно записать как
x = (s' ∗ k – H(m)) ∗ (r'-1 mod q) mod q
(5.5)

Всё, что делает взломщик, — это извлекает k из уравнения 5.3. Этим он решает проблему дискретного логарифмирования, однако данный случай проблемы разрешим благодаря особой структуре p': здесь применим алгоритм Полига-Хэллмана. Наконец, по уравнению 5.5 взломщик вычисляет секрет ключа x.


Некоторые эксперты, включая Брюса Шнайера и Фила Циммермана, принизили результаты атаки, поскольку она исходит из допущения о возможности проникнуть в помещение пользователя. Если вы способны проникнуть в помещение, вы уже победили: теперь вы можете установить любое зловредное ПО или аппаратуру для перехвата нажатий клавиш. Такие "нечестные" альтернативы значительно выгоднее проведения атаки чешских криптографов, ведь в случае с DH вы не получаете ключ расшифрования, а только ключ подписи, 1 и, кроме того, атаку можно раскрыть, поскольку подписи, изданные модифицированным ключом, оказываются недействительными.


Эксперты по-своему правы, но можно представить определённые обстоятельства, в которых чешская атака весьма уместна — пользователь пересылает свой закрытый ключ с одного компьютера на другой, полагаясь на надёжность парольной фразы. Научная работа с описанием атаки содержит также несколько рекомендуемых для PGP изменений, способных её предотвратить: добавьте хорошую контрольную сумму, 2 проверяйте все открытые криптопараметры и сверяйте каждую издаваемую электронную подпись. Я вижу здесь разумные советы, которые стоит воплотить при первой возможности.


С другой стороны, ответ Циммермана тоже не в корне ошибочен. Руководство пользователя PGP требует оберегать свои связки ключей. PGP предполагает полный контроль пользователя над компьютером, и данная атака нарушает необходимое допущение. Таким образом, эта атака, грубо говоря, — не проблема PGP. Правда, если они и впрямь так в этом уверены, зачем хранят ключи в зашифрованном виде?


Циммерман также был не очень доволен тем, как была объявлена эта атака: на технологической выставке Cebit и без предварительного уведомления NAI.


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


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


Назад | Дальше



1 В действительности, раскрытие главного ключа подписи уже является катастрофой. Получив его, взломщику лишь потребуется разослать подписанные сообщения от имени жертвы, уведомляя о замене ключа. Это не повлечёт компрометацию осуществлённой ранее переписки, но позволит противнику расшифровывать все новые сообщения, которые отправляются пользователю, — прим. пер.


2 Ныне используемый пакет MDC использует хэш-функцию SHA-1, — прим. пер.


 
Несколько комментариев (2) [показать комментарии/форму]
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3