id: Гость   вход   регистрация
текущее время 06:57 16/04/2024
Владелец: SATtva (создано 20/12/2007 20:31), редакция от 20/12/2007 23:07 (автор: SATtva) Печать
Категории: софт, gnupg, свободный софт, разное, события, сообщество, личности
http://www.pgpru.com/Библиотека/Статьи/КраткаяИсторияGPG
создать
просмотр
редакции
ссылки

Краткая история GNU Privacy Guard


Прошло десять лет с того дня, как самая первая версия GNU Privacy Guard увидела свет. На тот момент она называлась не известным нам сегодня GnuPG, а "g10" по номеру статьи Немецкой Конституции (Grundgesetz Artikel 10), закрепляющей право на свободу телекоммуникаций, и как издёвка над законом G-10, дающим право спецслужбам обходить эти конституционно гарантированные свободы.


fileВерсия 0.0.0, выпущенная 20 декабря 1997 года, представляла собой едва работающую замену PGP, которая использовала алгоритмы Elgamal и Blowfish вместо запатентованных RSA и IDEA. Она была объявлена тестовой версией, но, несмотря на это, уже включала большинство функций современного GnuPG. Формат данных, однако, был совместим не с OpenPGP, а ориентирован на формат PGP-2 с рядом дополнительных расширений (в частности, с поддержкой потоковой передачи данных). Рабочая группа OpenPGP была основана ещё осенью 97-го, но я узнал о ней довольно поздно, чтобы написать "g10" в соответствии с уже существовавшим черновым стандартом. По соображениям авторских прав было практически невозможно подвергнуть формат PGP-5 реверс-инженерингу, так что учреждение рабочей группы оказалось нужным событием в нужное время.


Прежде, чем перейти к GnuPG, нам стоит вернуться на несколько лет назад. В 1991 году в помощь политическим активистам Фил Циммерман выпустил программу под названием Pretty Good Privacy (PGP). PGP был создан как удобный инструмент шифрования без каких-либо потайных ходов и с открытым исходным кодом, и в действительности был не "довольно хорошим" (pretty good), а по-настоящему криптографически стойким. Однако, изначально он имел пару проблем, главной из которых являлся самодельный алгоритм шифрования. Благодаря наличию исходного текста к разработке подключилось сообщество хакеров (таких, как Бранко Ланкастер, Колин Пламб, Дерек Аткинс, Хал Финни, Питер Гутман и другие), которые помогли Филу устранить недостатки и успешно выпустили надёжную версию 2.


Вскоре после этого начались проблемы. Как и во многих других странах, в США использование и экспорт средств стойкой криптографии был строго ограничен, и обычно допускались лишь ослабленные криптосистемы. PGP был значительно надёжней, а благодаря конференциям Usenet и доступности FTP-серверов и BBS, PGP неожиданно просочился за пределы страны, и Фил попал под следствие за незаконный экспорт вооружений. Эти законы об экспортном контроле были не совсем в духе века информационных технологий и имели забавное исключение, по которому экспорт программ в распечатанном виде не подпадал под запрет. Поэтому издательство MIT Press опубликовало книгу с исходным кодом PGP, которая затем была отсканирована за пределами Штатов, чтобы воссоздать базу PGP-2i ("i" означает "international"), версию, получившую после широчайшее распространение.


Уголовное дело против Фила было закрыто в 96-м, и он учредил фирму PGP Inc., которая занялась разработкой PGP-5. Первый публичный релиз состоялся весной 97-го. В августе того же года в Мюнхене на 39-м собрании IETF Фил Циммерман и Джон Каллас обратились к организации с просьбой открыть рабочую группу, призванную опубликовать стандарт, основанный на протоколе, используемом в PGP-5. Стандарт был назван OpenPGP. Главным мотивом к этой инициативе было повсеместное распространение стойкого крипто даже в том случае, если вновь созданная компания в какой-то момент вдруг прекратит продажу и поддержку PGP. И спустя несколько месяцев PGP Inc. была поглощена компанией Network Associates, которая в 2002 году действительно прекратила поддержку и развитие PGP (правда, историю PGP впоследствии продолжила новая компания PGP Corporation).


Хотя PGP часто назывался Свободным Софтом, в действительности, он никогда не соответствовал его требованиям: PGP-5 — явно проприетарная программа; доступность исходного кода сама по себе не делает программу свободной. PGP-2 тоже имел определённые ограничения на коммерческое использование,1 что накладывало ограничения на программу и делало её несвободной. Ещё одной проблемой PGP-2 была необходимость реализации запатентованных алгоритмов RSA и IDEA. Патент на RSA был действителен только в Штатах, но патент на IDEA был и остаётся действительным 2 во множестве стран.


Хотя в плане развития проекта GNU в течение нескольких лет был отмечен пункт о необходимости замены для PGP, начать его реализацию до истечения действия патентов на алгоритмы с открытым ключом не представлялось возможным. Всё изменилось в апреле 1997 года с окончанием действия основного патента (панент США №4200770 на алгоритм Диффи-Хеллмана) и в августе, когда прекратил действие более общий патент на схему Меркла-Хеллмана (№4218582).


Месяц спустя на конференции Individual-Network Betriebstagung в Ахене Ричард Столлман в продолжение своего выступления на сессии BoF обратился к европейским хакерам с просьбой начать реализацию средств шифрования с открытым ключом. Американский закон об экспорте вооружений не давал возможности проекту GNU написать подобное ПО в собственной стране или силами работающих за рубежом американских граждан. Поэтому он объявил европейцам об их исключительной роли в возможности помочь проекту GNU с криптографическим софтом.


Устав от написания конвертеров для SMGL и не имея проекта "для души", я вскоре обнаружил, что сам копаюсь в коде парсера PGP-2, основанного на RFC 1991 и описании из pgformat.txt. Выяснив, что это достаточно просто, я в итоге подготовил код для расшифрования и генерации PGP2-совместимых данных. После того, как я сообщил руководству GNU, что беру на себя реализацию замены для PGP, я провёл оставшуюся часть года, заменяя IDEA на Blowfish, RSA — на Elgamal, реализуя потоковое шифрование, добавляя инструменты для управления ключами и приводя код в разумную форму.


Был план на создание свободной версии Secure Shell под названием PSST (позднее известной как LSH) с довольно активными дискуссионными группами, поддерживаемыми Мартином Хамилтоном. Мартин был настолько добр, что также открыл список рассылки для g10 и объявил об этом в остальных группах. Так мы получили первых подписчиков. В конце концов, я закончил первый tarball, загрузил его на ftp.guug.de — FTP-сервер German Unix User Group — и опубликовал официальное объявление.3


Буквально на следующий день Питер Гутман предложил воспользоваться его кодом генератора случайных чисел, пригодном для систем без /dev/random. В итоге, это очень помогло в портировании GnuPG на различные платформы. Два последующих месяца были заняты обновлениями кода и продолжительным обсуждением названия; в конце концов мы остановились на предложении Ананда Кумрии — GnuPG — и 24 февраля сделали первый релиз под новым названием (gnupg-0.2.8). А ещё несколько дней спустя была выпущена экспериментальная версия с поддержкой Windows. (Этот релиз также исправил проблему совместимости с машинами Alpha, выявленную благодаря тому, что лог-файлы ядра забили весь жёсткий диск и админ обратился с вопросом, насколько необходимо сохранять их в бэкап? ;-)


В июле 1998 года впервые была выпущена версия, более-менее совместимая с черновиком OpenPGP. Мэтью Скала предложил свой чисто написанный с нуля код Twofish (алгоритм был тогда многообещающим кандидатом на звание AES и предложенной Шнайером заменой шифру Blowfish; однако, авторский код оставил у нас некоторые опасения по поводу авторских прав). Позднее в том же году Майкл Рот предложил реализацию Triple-DES, что заполнило требуемый OpenPGP набор алгоритмов. В течение следующего года решались обычные проблемы, обсуждались функции, отмечались жалобы, а авторы других программ вводили в них поддержку gpg.


Наконец, 7 сентября 1999 года завершённый код был опубликован под версией 1.0.0, важным обновлением которой стало "Пособие по приватности GNU" Майка Эшли. 20 сентября следующего года должен был прекратить действие патент на RSA; держатели патента, однако, за три недели до этого передали его в общественное достояние, поэтому уже к 18 сентября мы смогли выпустить версию 1.0.3 с поддержкой RSA. Одно из крупнейший препятствий к повсеместному распространению асимметричной криптографии стало историей (хоть и слишком поздно).


В том же 1999 году Немецкое правительство приняло решение, что стойкая криптография не должна каким-либо образом контролироваться, а её применение должно быть рекомендовано каждому. Чтобы открыто продемонстрировать приверженность этому заявлению, Министерство экономики профинансировало портирование GnuPG и сопутствующего софта в Microsoft Windows. Американское правительство не было воодушевлено подобными действиями и попыталось убедить правительство Германии пересмотреть решение о нерегулируемом распространении криптографического ПО. Им не удалось добиться успеха, и в итоге у США не осталось выхода, кроме как ослабить собственные правила по экспорту крипто.


Хотя мы по-прежнему разрабатываем GnuPG, используя серверы, расположенные в Европе, новый американский режим экспортного контроля наконец позволил хакерам из США принять участие в работе над программой. В 2001-м к проекту присоединился Дэвид Шау, и с тех пор он является одним из самых активных разработчиков и соавторов GnuPG.


Много времени минуло с тех пор, когда GnuPG мог вестись как проект "для души", так что теперь большую часть своей профессиональной жизни я трачу на поддержку и расширение программы. В 2001 году я основал "g10 Code", компанию-разработчика свободного софта, занятую развитием и поддержкой GnuPG и связанных с ним приложений. Вероятно, самый известный её проект — это GnuPG-2, начатый под именем NewPG в рамках более крупного проекта Aegypten. Главная цель Aegypten — ввести поддержку S/MIME в GNU/Linux и надёжно интегрировать формат с другими мэйл-клиентами, прежде всего с KMail. И хотя он активно использовался с 2004 года, мы выпустили версию 2.0.0 лишь год назад.


Мы не получили большого удовольствия от написания X.509/CMS-совместимого (обычно называемого S/MIME-совместимым) софта, в сравнении с элегантным и очень интероперативным протоколом OpenPGP. Справившись с этим, мы смогли создать весьма полезную программу, отлично взаимодействующую практически со всеми другими реализациями S/MIME. Также выяснилось, что мы всё-таки сможем портировать GnuPG-2 в Windows, несмотря на мои прежние заявления, что для работы программы необходима современная POSIX-платформа. Эта разработка также показала, что бизнес, занятый Свободным Софтом, тоже может быть жизнеспособным.


С арсеналом новых инструментов, S/MIME и OpenPGP с точки зрения пользователя вскоре перестанут быть столь уж различны. Правда, я не смог не улыбнуться, прочитав сегодня, как небольшой опрос, проведённый на последней конференции RSA Europe показал, что OpenPGP — самый активно используемый криптографический протокол.


Не забывайте, что GnuPG — всего лишь один из инструментов; есть множество других инструментов, предназначенных для решения проблем приватности. Респект и уважуха всем, кто в эти годы работал над написанием и выпуском средств обеспечения приватности!


Удачного хака,
Вернер
© 2007 Вернер Кох
Перевод © 2007 SATtva


1 Из файла pgpdoc2.txt: "Наконец, если вы желаете превратить PGP в коммерческую программу и делать деньги на её продаже, тогда нам следует договориться, как и я смогу получать с неё деньги. [...] Ни при каких обстоятельствах PGP не должен распространяться без документации PGP, включающей и настоящее Руководство пользователя."


2 "Действителен" в смысле его использования самими держателями патента, независимо от того, считаю ли я "действительной" концепцию софтверных патентов, как таковую. См. http://www.fsfeurope.org/proje.....t/background.en.html.


3 За декабрь было лишь несколько сообщений, в основном касающихся обсуждения патентов.


 
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3