Филипп Циммерманн

Дефект дополнительного дешифрующего ключа в PGP

19 октября 2000 - Для подписанной версии этого объявления, нажмите здесь

В четверг 24 августа, мы обнаружили, что в PGP есть дефект, связанный с защитой, в функции Дополнительного Дешифрующего Ключа (ADK - Additional Decryption Key). Немецкий исследователь, Ральф Зендерек, уже опубликовал новость об этом дефекте на своем веб сайте. Мы быстро мобилизовались и выпустили исправленную версию PGP через 18 часов после того, как мы узнали эту новость. Исправленная коммерческая версия PGP доступна на http://www.pgp.com, исправленную версию бесплатной программы PGP (версия 6.5.8) можно загрузить с веб сайта MIT на http://web.mit.edu/network/pgp.html, или с http://www.pgpi.org. Конечно, все следующие релизы PGP (как 7.0) также исправлены.

Некоторые публикации в Интернете интерпретируют этот дефект, как back door в PGP. Разрешите мне заверить вас, что это далеко не так. Это всего-навсего дефект (теперь уже исправленный). Очень неуместный дефект, так как он был найден в функциональности, против которой многие люди возражали даже тогда, когда все думали, что все работает правильно.

Функциональность Дополнительного Дешифрующего Ключа была разработана в 1997 как легкая альтернатива владению ключом двумя или несколькими пользователями программы в случае корпоративной лицензии. Я чувствовал, что такое депонирование ключей было плохой идеей, и придумал кое-что другое: представьте себе, что вы опубликовали ваш открытый ключ с маленькой приписочкой на желтой бумажке (с вашей цифровой подписью), приклеенной к нему, с просьбой к пользователям, которые хотят зашифровать сообщение вашим ключом, сделать еще одно шифрование, еще одним дополнительным ключом. Это означает, что бумажка просит пользователя зашифровать сообщение сразу двумя ключами вместо одного - второй ключ - это тот, который выбирает получатель, тот, что о котором упоминается на желтой бумажке. Это - просьба получателя, с которым отправитель может согласиться, или которое он может игнорировать. Отправитель волен зашифровать сообщение одним или двумя ключами. Если он согласится использовать дополнительный дешифрующий ключ, то сообщение может быть дешифровано как получателем, так и этим дополнительным ключом. Это удовлетворяло главное условие наших корпоративных клиентов к механизму работы с сообщениями, когда какой-либо работник не может дешифровать файл потому, что он в отпуске, попал в аварию, или просто забыл свою идентификационную фразу. Это намного проще, поэтому что не требует согласия обеих сторон использовать один и тот же ключ. Это видно отправителю и разрешает ему самому решать, как шифровать сообщение

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

Получатель должен поставить цифровую подпись на желтой бумажке в качестве согласия на то, чтобы с его персональным ключом ассоциировался еще и дополнительный дешифрующий ключ. И именно здесь и проявляется вышеописанный дефект. Дефект в PGP версиях 5.5 вплоть до 6.5.3 заключается в том, что PGP не всегда проверяет, что дополнительный дешифрующий ключ действительно подписан, прежде чем использовать его в случае, если маленькая желтая бумажка с указанием на дополнительного дешифрующего ключа неправильно отформатирована. Это означает, что кто-то мог прибавить неавторизованный дешифрующий ключ к вашему, и, возможно, обмануть невнимательного отправителя сообщения, чтобы тот использовал этот неавторизованный ключ. Сделать это было бы все же не так просто, поэтому существует много шансов, что у отправителя нет фальшивого дешифрующего ключа среди его ключей, и даже если он пройдет через всю длинную процедуру получения такового от сервера, он, скорее всего, не будет подписан получателем, и тогда PGP откажется использовать этот дополнительный дешифрующий ключ для шифрования сообщений. Такая атака действительно была бы неосторожным шагом, так как существуют очень большие шансы, что ее заметят. Вдобавок, даже если все эти сложные барьеры будут преодолены, хакер будет должен перехватить зашифрованное сообщение на его пути к получателю. Разведывательные управления очень умело перехватывают сообщения, но они не отважились на такую атаку, так как не настолько глупы. Может именно поэтому, когда мы сканировали все открытые ключи на всех серверах публичных ключей, после трех лет существования этого дефекта, мы так и не нашли ни одного фальшивого пакета дополнительных дешифрующих ключей. Если бы это были back door, то такой дизайн back door был бы очень глупым.

Все равно, я уже упоминал, что мы исправили этот дефект? Мы добавили также условие, в случае появления фальшивых дополнительных дешифрующих ключей на сервере, сервер отказывается использовать такой ключ и удаляет его еще до того, как кто-то сможет его использовать, даже если у них еще нет исправленной версии PGP. Исправленная версия PGP удаляет фальшивые ключи сразу, как только она их находит. Не просто не использует его, а именно удаляет фальшивый дополнительный дешифрующий ключ. Они перестают существовать. Самые циничные из наших критиков настаивали на том, что это - плохое решение, так как таким образом мы пытались "прикрыть" фальшивые дополнительные дешифрующие ключи, чтобы их просто больше не видели (возможно они не понимали, что фальшивые ключи исчезли). Выдох. Некоторых людей просто невозможно удовлетворить.

Мы также исправили бесплатную версию PGP 7.0, сделав невозможным отключение сообщений о том, что на ключе есть дополнительный дешифрующий ключ. Если вы желаете часто использовать дополнительные дешифрующие ключи и захотите отключить это сообщение через панель управления, вам придется купить коммерческую версию PGP.

В отчете Зедерека высказано предположение, что этот самый дефект влиял на другие виды атрибутов, ассоциированных с вашим ключом, в том числе и функцию отзывания. Мы исправили это в то же время тем же самым способом. Не смотря на то, что вариации этого дефекта были не такие серьезные, как в случае с дополнительным дешифрующим ключом (и не касались такой неоднозначной функциональности), они разрешили бы добавление неавторизованных отзывов вашего ключа, которое потенциально могло отворить дверь сервисной атаки тем, что разрешило бы кому-то отозвать ваш ключ. Кстати, когда мы работали над исправлением этого дефекта, мы откопали еще кое-что, что пришлось исправить. Новый дефект при некоторых обстоятельствах разрешал принимать недействительные подписи отзыва. Это никаким образом не могло угрожать защищенности сообщений, но могло бы вызвать то, что действительные подписи выглядели бы как недействительные. Мы также сделали так, чтобы сервера ключей отсортировывали все ключи с подобной проблемой.

Когда в 1997 мы добавляли функциональность дополнительного дешифрующего ключа к программе, много критиков говорили о том, что это вызовет массовую слежку за обычными гражданами, так как закон усилят, и разведывательные агентства начнут это использовать. На самом деле этого не произошло. После многих лет борьбы, мы победили в спорах по поводу криптования с США (Франциии, и еще целом списке других европейских стран), и экспортный контроль США был снят в январе 2000 года. После около трех лет внедрения функциональности дополнительного дешифрующего ключа, она ни разу не оказала влияния на усиление правительственной слежки в США и по всему миру. Предположения оказались неверны. В то самое время, коммерческое принятие PGP (частично благодаря добавлению функциональности дополнительных дешифрующих ключей) пропагандировало PGP в политически активных компьютерных кругах бизнеса, которые, по моему подозрению, сыграли роль в давлении на правительство, чтобы то ослабило экспортный контроль в год выборов.

Самое неприятная вещь, которую я встречал в таких пресс релизах в Интернете, так это то, что дополнительные дешифрующие ключи связывают с Альянсом Восстановления Ключей (KRA - the Key Recovery Alliance), промышленной группой, сформированной в 1990-х для того, чтобы добавить функциональность по восстановлению ключей ко всем шифрующим продуктам, именно ради того, чтобы получать лицензии на их экспортирование от американского Правительства. Разрешите уверить, что эта группа не имеет никакого отношения к PGP. Я разработал функциональность дополнительного дешифрующего ключа в PGP в конце 1997, еще до того как Network Associates приобрели PGP inc. Эта функциональность была добавлена для того, чтобы решить сложную проблему восстановления данных, с которой сталкивались корпоративные клиенты, и которую я описал выше. Это никак не касалось правительственных лицензий. Мы избегали контроль экспорта, когда публиковали исходный код PGP в книжках и полностью легально экспортировали книжки (которые не подвергались контролю) в Европу, где их сканировали устройствами оптического распознавания символов, компилировали в работоспособное программное обеспечение и продавали на CD по всему миру. Очень тонкий фокус, не так ли? Он работал просто идеально, и нам не надо было нарушать криптографическую целостность PGP, чтобы экспортировать ее. В любом случае, позднее Network Associates приобрел PGP Inc, и я настаивал на том, чтобы они вышли из Альянса. Несколько месяцев спустя, NAI приобрела еще одну компанию (TIS), которая была членом Альянса, и таким образом NAI снова стала его членом. Их членство должно было рассматриваться перед обновлением, и я попросил их не восстанавливать его. И на этот раз они согласились. Сегодня, кажется, KRA больше не существует, потому что нет и экспортного контроля.

Ни у кого не было никаких договоренностей с правительством. Здесь нет никакого тайного сговора. Все равно в PGP нет никаких back doors. Мы так же публикуем исходный код для его экспертной оценки, и чтобы другие люди помогали нам находить дефекты. Большинство разработчиков программного обеспечения этого не делают. Их программы такие же сложные, как и наша, поэтому у них, я думаю, столько же (если не еще больше) дефектов, но вы не слышите о них, потому что как они не публикуют код для экспертной оценки

PGP начиналась как проект по защите прав человека, и сегодня ей пользуется каждая организация по защите прав человека в мире. Наши инженеры остаются с командой потому, что они ощущают, что работают ради чего-то важного. Для них - это неблагодарная работа, особенно из-за сотен теорий тайный сговоров о том, что мы продались правительству. Почему люди всегда делают самые худшие предположения? Если NAI старалась бы создать back door в PGP, все разработчики в знак протеста уволились бы, а я рассказал бы об этом в печати. Я бы ни в коем случае не допустил, чтобы это произошло, к тому же NAI никогда не высказывала никакого интереса в создании back door в PGP.

Филипп Циммерманн
29 августа 2000 (обновлено 19 октября 2000)
prz@pgp.com
http://www.pgp.com/phil



Translation Ukrainian Hi-tech initiative, Marina Kobenko, 2006