id: Гость   вход   регистрация
текущее время 05:35 29/03/2024
Автор темы: SATtva, тема открыта 27/11/2003 13:52 Печать
https://www.pgpru.com/Форум/РаботаСGnuPG/GnuPGВНИМАНИЕОбнаруженаКритическаяУязвимость
создать
просмотр
ссылки

GnuPG. ВНИМАНИЕ! Обнаружена критическая уязвимость!


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


Данная угроза относится ТОЛЬКО к ЭЦП по схеме Эльгамала, но не к ЭЦП по алгоритму DSA или RSA и не к шифрованию по схеме Эльгамала или по алгоритму RSA. Угроза исключительно серьёзна и может привести к компрометации закрытого ключа.


Здесь находится официальное сообщение Вернера Коха, подписанное ключом заверения дистрибутивов GnuPG. Чуть позже приведу его перевод.


С уважением.


 
На страницу: 1, 2 След.
Комментарии
— SATtva (27/11/2003 18:38)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
КЛЮЧИ ПОДПИСАНИЯ ПО СХЕМЕ ЭЛЬГАМАЛЯ В
РЕАЛИЗАЦИИ GNUPG СКОМПРОМЕТИРОВАНЫ
============================
Описание:

Phong Nguyen обнаружил серьёзный баг в механизме генерации и использования ключей Эльгамаля для создания ЭЦП. Эта ошибка способна привести к компрометации практически всех ключей Эльгамаля, используемых для подписания. Учтите, это реальная уязвимость, благодаря которой можно за секунды взломать ваш закрытый ключ!

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

Пожалуйста, не отправляйте частных емэйлов в ответ на данное сообщение, поскольку у меня нет времени, чтобы ответить на все. Лучшее место для обсуждения текущей проблемы – это список рассылки gnupg-users@gnupg.org (первоначально подпишитесь на него, чтобы ваши сообщения не проходили модераторский контроль [2]).

Имейте в виду, что стандартные ключи, генерируемые GnuPG (подписание по алгоритму DSA и шифрование по схеме Эльгамаля), равно, как и ключи RSA, НЕ подвержены данной уязвимости. Также учтите, что ключи подписания Эльгамаля нельзя сгенерировать без использования специального свитча для разблокирования скрытых опций, а также без получения предупреждения о нестандартном типе этого ключа. За сведениями о том, как опознать уязвимые ключи, см. ниже.

Данное сообщение подписано с помощью обычного ключа заверения дистрибутивов GnuPG [1]. Я приножу извинения за этот серьёзный баг и за все вызванные им проблемы.


Предыстория:

По историческим причинам [3] GnuPG позволяет генерировать ключи Эльгамаля, предназначенные как для шифрования, так и для подписания. Возможно даже создать один ключ (базовый), способный выполнять обе операции. С криптографической точки зрения это не лучшая практика, однако поддерживаемая стандартом OpenPGP.

Не предполагалось, что эти ключи будут по-прежнему применяться для подписания, поскольку они имеют ряд недостатков: размер их ЭЦП намного больше в сравнении с DSA и RSA, генерация и сличение подписи проходят медленнее, кроме того, применение схемы Эльгамаля для подписания по некоторым криптологическим причинам всегда считалось проблематичным и труднореализуемым. Поэтому я всегда отговаривал людей от использования ключей Эльгамаля для подписания; тем не менее, они всё ещё применяются, и порядка 200 ключей ежегодно генерируется и загружается на общественные депозитарии.

В январе 2000 года в порядке обновления версии 1.0.2 код GnuPG был изменён, чтобы позволить генерацию более эффективных для шифрования ключей Эльгамаля (для них выбирался меньший секретный показатель степени x, а для зашифрования применялся меньший показатель k). Проведение этих изменений привело к непреднамеренному привнесению ошибки в схему подписания: малый показатель k, использовавшийся для зашифрования, применялся и для подписания. Подобная ошибка в реализации может быть использована для проведения криптографической атаки, направленной на получение закрытого ключа (т.е. секретнго показателя степени x), если взломщик располагает ЭЦП, сгенерированной данным ключом. Для базового ключа Эльгамаля такая ЭЦП всегда имеется, поскольку подпись этого ключа (автоподпись, self-signature) нужна, чтобы связать сертификаты (ID) пользователя и иной материал с данным базовым ключом. Поэтому ключ должен считаться скомпрометированным, даже если никогда не использовался для подписания документов.

Учтите, что эта уязвимость не относится к обычным ключам "только шифрование по схеме Эльгамаля" (тип 16 в спецификации OpenPGP [5]), поскольку GnuPG не позволяет генерировать подписи такими ключами. Уязвимости подвержены только ключи "шифрование+подписание по схеме Эльгамаля" (тип 20) и только в случае применения таких ключей в GnuPG 1.0.2 и выше.


Последствия:

Все ключи "шифрование+подписание по схеме Эльгамаля" (тип 20), сгенерированные в GnuPG 1.0.2 и выше, должны считаться скомпрометированными. Ключи, сгенерированные в более ранних версиях, по-видимому остались надёжными, но в идеале также должны быть ануллированы. Имейте в виду, что даже если ключ "шифрование+подписание по схеме Эльгамаля" был сгенерирован в ранней версии, использование этого ключа в GnuPG 1.0.2 и выше для изготовления подписей также его скомпрометирует.

Повторяю, ключи "только шифрование по схеме Эльгамаля" (тип 16) из любой версии GnuPG *не* подвержены уязвимости.


Решение:

=============================
Нужно различать два разных случая: базовый ключ Эльгамаля тип 20 и простые подключи Эльгамаля тип 20.

Первый случай требует незамедлительных действий. Вот он:



За таким ключом могут следовать дополнительные поля "uid", "sig" или "sub". Здесь мы видим ключ "шифрование+подписание по схеме Эльгамаля", наверняка сгенерированный в GnuPG 1.0.2 и выше. Заглавная "G" обозначает ключ типа 20. АННУЛИРУЙТЕ ЕГО НЕМЕДЛЕННО.

Второй случай связан с подключами. Вот пример:



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



Заглавная буква "G" обозначает потенциально скомпрометированный подключ, тогда как первый подключ:



— это стандартный подключ "только шифрование" (тип 16), о чём говорит малая "g". Этот ключ не подвержен уязвимости.

Подключи, отмеченные большой "G" должны быть АННУЛИРОВАНЫ, за исключением случаев, когда вы абсолютно уверены, что эти подключи никогда не применялись для создания цифровой подписи с помощью GnuPG 1.0.2 и выше.


Как аннулировать ключ:
=======
Чтобы выпустить сертификат аннулирования для ключа в целом (базового и всех подключей), выполните:



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

Теперь этот сертификат аннулирования нужно нужно импортировать в GnuPG с помощью:



Теперь экспортируйте свой ключ в файл и распространите его по серверам-депозитариям:




Если ваш базовый ключ — не ключ Эльгамаля тип 20, вам следует аннулировать отдельные подключи. Ещё раз напоминаю, что требуют аннулирования только ключи Эльгамаля тип 20 (отмеченные заглавной буквой "G") — со стандартными ключами Эльгамаля "только шифрование" (малая "g") всё в полном порядке. Воспользуйтесь командой редактирования GnuPG:



Появится описание ключа. Командой "key порядковый_номер_подключа" выберите подключ, который хотите аннулировать, а затем введите команду "revkey" и следуйте указаниям. Сделав это, экспортируйте ключ, как описано выше.


Сколько ключей подвержено уязвимости?
=======================
Не могу ответить наверняка. По сведениям статистики общественных депозитариев, существует 848 уязвимых ключей подписания по Эльгамалю. Это около 0.04% всех базовых ключей на серверах. Кроме того, на серверах находится 324 уязвимых подключа.

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

Ещё раз обращаю внимание на то, что стандартная конфигурация GnuPG не допускает генерацию уязвимых ключей "шифрование+подписание по схеме Эльгамаля", а также на то, что ни DSA (тип 17), ни RSA (тип 1), ни ключи Эльгамаля "только шифрование" (тип 16) не уязвимы.


Благодарности:

Phong Nguyen [4] проанализировал реализацию криптографических элементов GnuPG и обнаружил эту уязвимость. Также он написал сам код для проведения подобной атаки и был дал мне достаточно времени на изучение своих материалов и для составления списка владельцев известных ключей типа 20.


Я действительно очень сожалению о случившемся,

Вернер


[1] Чтобы получить свежую копию ключа обратитесь на депозитарий или загрузите его с помощью "finger wk@g10code.com" либо "finger dd9jn@gnu.org". (ID 0x57548DCD, — SATtva)
[2] См. http://lists.gnupg.org/mailman/listinfo/gnupg-users.
[3] Патентный статус DSA был неясен, когда в 1997 я начал писать GnuPG.
[4] Работает в French National Center for Scientific Research и Ecole normale superieure: http://www.di.ens.fr/~pnguyen/.
[5] Diffie-Hellman, или DH, в терминологии PGP, — SATtva.

============= Перевод с английского: SATtva
— SATtva (27/11/2003 19:05)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
По сообщению Вернера, Дэвид Шоу написал патч для GnuPG 1.2.3, запрещающий создание подписей ключами Эльгамаля тип 20, а также саму возможность сгенерировать такие ключи.

Данное исправление войдёт в следующую версию GnuPG. Однако при желании можете самостоятельно внести изменения в исходный код программы.

Патч для GnuPG 1.2.3
— Гость (13/12/2003 16:47)   <#>
Извините за мою безграматность, но хотелось бы задать вопрос, могу ли все также безопасно использовать мой PGP 8.0 с DH/DSS ключами. Ведь в меню PGP Keys напротив иконки подписи стоит надпись "DSS exportable signature". А то я ничего не понимаю.
— Гость (15/12/2003 14:10)   <#>
AlexanderXX, можете. Проблема связана только с GnuPG и лишь с его реализацией схемы подписания по Эльгамалю. PGP использует этот алгоритм ТОЛЬКО для шифрования; для подписания в нём реализованы RSA и DSA.
— Гость (15/12/2003 23:30)   <#>
Огромное спасибо!!!!
— Гость (09/03/2004 16:34)   <#>
можно ли подделать открытый ключ pgp так, что б сообщение мог расшифровывать и я (настоящий владелец ключа) и злоумышленник.
— SATtva (09/03/2004 16:50)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
всполошеный, прошу впредь не писать сообщения офф-топик. Почитайте правила.

Касаемо вопроса, Вы имеете в виду злоумышленную модификацию материала ключа? Подобная проблема наблюдалась в версиях 6.х и была устранена в 6.5.8. Атака заключалась в несанкционированном включении в материал открытого ключа OpenPGP дополнительного ключа расшифрования (ADK) злоумышленника. Загляните в FAQ, технические вопросы, там всё изложено более подробно.

В новых версиях эта уязвимость ликвидирована.
— Гость (13/12/2004 15:22)   <#>
Здравствуйте!
1. При создании ключей в PGP предлагается создание ключей типов Diffe-Hellman/DSS, RSA и RSA Legacy. Какому нибудь из них соответсвует способ Эльгамаля?
2. Был взломан сам теоретический принцип способа Эльгамаля или это ошибка в написании программы, т.е. при практической реализации?
3. Я слышал, что взломана одна из систем криптозащиты используемая в Windows, это правда?
Спасибо.
— unknown (13/12/2004 16:36)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
2. Был взломан сам теоретический принцип способа Эльгамаля или это ошибка в написании программы, т.е. при практической реализации?

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

3. Я слышал, что взломана одна из систем криптозащиты используемая в Windows, это правда?

А что в этом может быть интересного? Кто-нибудь разве будет добровольно доверять криптозащитам от Майкрософта? Уязвимости в закрытых и несвободных программах особенного интереса не представляют.
— SATtva (13/12/2004 17:01)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Ключи DH/DSS в PGP используют для шифрования схему Эльгамаля.

НО! Если Вы внимательно читали текст объявления Вернера Коха, то обратили внимание, что речь идёт о специфической реализации алгоритма Elgamal в GnuPG 1.0.2 и выше. Это ошибка в реализации, но не в самом алгоритме. Объясню более подробно.

Стандарт OpenPGP до последнего времени (до десятой редакции RFC2440bis включительно) предусматривал две спецификации для этого алгоритма: тип 16 (только шифрование по схеме Эльгамаля) и тип 20 (шифрование и подписание одним ключом по схеме Эльгамаля). Использование одного ключа Эльгамаля как для подписания, так и для шифрования всегда считалось нерекомендуемой практикой — нужно с особой осторожностью подбирать математический материал для ключа, иначе возникает риск, что из цифровой подписи можно будет восстановить закрытый ключ. Это не значит, что реализовать такую схему невозможно, это значит, что сделать это труднее, чем при реализации Elgamal только для шифрования.

Именно это и произошло в GnuPG 1.0.2. Во время планового обновления в программную реализацию алгоритма была случайно внесена ошибка, благодаря которой малый показатель k, применявшийся для шифрования, стал использоваться и для подписания. Это привело к риску компрометации ключей, использующих алгоритм Эльгамала для шифрования и подписания (тип 20), НО НЕ ключей типа 16+17, использующих два независимых ключа: Эльгамаль — ТОЛЬКО для шифрования и DSA — только для подписания.

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

Ключи типа 20 никогда не были реализованы в PGP. PGP всегда поддерживал только две спецификации ключей: тип 1 — RSAv3, он же RSA Legacy (подписание и шифрование одним ключом RSA), RSAv4, он же просто RSA (подписание и шифрование независимыми ключами RSA), а также тип 16+17, названный в PGP по определённым историческим причинам Diffie-Hellman/DSS (шифрование по Эльгамалю и подписание по DSA). НИ ОДНА ИЗ ЭТИХ РЕАЛИЗАЦИЙ НЕ ПОДВЕРЖЕНА СПЕЦИФИЧЕСКОЙ УЯЗВИМОСТИ GNUPG!

Буквально через месяц после этого объявления вышел новый релиз GnuPG (кажется, это был 1.2.5), запрещающий генерацию ключей типа 20. А около двух месяцев назад была опубликована 11-ая редакция стандарта OpenPGP, из которой спецификации асимметричных ключей типа 20 (подписание+шифрование по Эльгамалю) были полностью исключены, дабы подобные ошибки не повторялись в дальнейшем.

Касаемо Вашего последнего вопроса, он трубует уточнения. Криптография используется слишком широко и в слишком большом числе приложений, чтобы ответить на этот вопрос однозначно: правда это или нет. Речь идёт о ядре Win32 или об одном из майкрософтовских приложений? Ну, например, протокол PPTP, реализованный в Microsoft VPN-клиенте, действительно признан ненадёжным...
— Гость (15/12/2004 07:54)   <#>
Здравствуйте!
Уточню по поводу своего вопроса о взломанной системе. Это протокол Kerberos в Windows 2000. Это протокол проверки подлинности пользователя в сети Windows 2000 server. Правда я точно не знаю, взломана эта система или нет. Просто слышал такое. К PGP как я понимаю это отношения не имеет.
— unknown (15/12/2004 08:54)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664
Это протокол Kerberos в Windows 2000. Это протокол проверки подлинности пользователя в сети Windows 2000 server. Правда я точно не знаю, взломана эта система или нет.

Действительно не имеет это отношение к PGP. Уже совсем оффтопик какой-то.
Я этим вопросом не интересовался, знаю только, что специалисты с самого начала критически отзывались об этой реализации протокола.
Потому что Kerberos у них какой-то совсем нестандартный и несовместимый без особых на то оснований.
— Гость (20/03/2014 07:36)   <#>

Ужас какой. Алгоритм реализован корректно, но может быть взломан — как это? Речь об упрощённом математическом описании или алгоритме, описанном в стандарте? О чём речь? О паддинге, о тайминг-атаках,* о малой экспоненте,** о запрете подписывать переданные другой стороной данные без RSA-OAEP и т.п.?


*Особенно в серверном окружении, а также при утечке информации о ключе через кэш при атаке локальным приложением. Сюда же относится модуляция питанием, которую можно замерить через счётчики производительности процессора. Вроде как есть чисто математические методы для разрушения связи между ключом и таймингами.
**Экспонента должна быть 65537. Экспоненты 5 и особенно 3 небезопасны.
— sentaus (20/03/2014 08:47)   профиль/связь   <#>
комментариев: 1060   документов: 16   редакций: 32
Археологи, ау!
— SATtva (20/03/2014 09:58)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Мда...

Алгоритм реализован корректно, но может быть взломан — как это?

Элементарно, если некорректно реализован или отсутствует паддинг, используется малая экспонента и т.д. — то, что Вы же и перечислили.
На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3