id: Гость   вход   регистрация
текущее время 01:43 19/04/2024
Владелец: SATtva (создано 11/12/2007 20:48), редакция от 11/12/2007 20:48 (автор: SATtva) Печать
Категории: софт, pgp, сайт проекта, статьи, исходные тексты, программные закладки
создать
просмотр
редакции
ссылки

Как мы исследовали исходные тексты


Наиболее свежие исходники, доступные к началу нашего проекта, принадлежали PGP версии 6.5.8. Из этого исходного кода могут быть получены любые варианты Windows-версии PGP 6.5.8 (как бесплатные, так и коммерческие) путём установки нужных параметров сборки. Исходники новейшей на сегодня версии 7.0 недоступны, но эти версии довольно похожи. В начале проекта мы ожидали выпуска исходных кодов PGP 7.0, но теперь очевидно, что это едва ли когда-нибудь случится.


Программа написана на языке C. Чтобы изготовить Windows-версию вам понадобятся Microsoft Visual C 6.0, несколько дополнительных утилит (SDK разработчика ПО и драйверов Windows), а также пара сторонних приложений (вроде InstallShield). С помощью исходного кода можно собрать целиком весь продукт, в свою очередь состоящий из ряда компонентов. Главный компонент, реализующий всю криптография — это pgpsdk.dll. Было установлено, что он может быть собран, не прибегая к какому-либо стороннему ПО, которым мы просто не располагали. Мы дезассемблировали скомпилированный файл, поставляющийся в дистрибутиве, и скомпилированный лично нами, и обнаружили между ними множество расхождений. Наибольшие различия можно объяснить разными настройками компиляторов, тогда как менее значительные могли быть обусловлены какими-то произвольными вариациями решений на этапе сборки. Мы считаем, что скорее всего NAI распространяет реальный исходный код PGP, а не "исходники без закладок". Заметьте, что каждый может найти в исходниках те же ошибки, что и в объектном коде.


Мы отказались от установки сторонних программ, поскольку не собирались учиться с ними работать.


Работая на C, принято разбивать код на множество небольших файлов. Файлы с расширением .c содержат основную часть кода, а в одноимённых файлах с расширением .h содержатся объявления из соответствующих модулей C, которые необходимы где-то ещё. Файлы обоих типов включают в себя множество комментариев — дополнительного текста, который игнорируется компилятором, но помогает в понимании программы. Комментарии в .h-файлах обычно разъясняют назначение кода, а комментарии в файлах .c описывают происходящее на данном участке кода. Большинство комментариев представляют собой лишь краткие ремарки, но некоторые файлы содержат подробные истории о базовых идеях PGP. Зачастую комментарии отсылают к статьям и работам (как в случае с [12]), на которых основан данный код.


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


Однако, чтение исходников оказалось не столь простым, как мы ожидали. Программа содержит 1620 файлов C-кода и заголовков, суммарно занимающих 15 Мб. Большинство из этих файлов вовсе не имеют дела с криптографией. И хотя исходный текст снабжён комментариями, читать его обычно не весело. Язык C — не из числа самых продвинутых: он позволяет писать быстрые высокоэффективные программы, но не обеспечивает той же степени понятности исходного кода, как другие языки программирования.


Методика, к который мы прибегли взамен доскональному прочтению кода, — поиск наиболее интересных фрагментов, больших комментариев, особых ключевых слов и проверка вызываемых методов и процедур, эти методы вызывающих. Утилита WinGrep от Хава Миллингтона оказала нашим поискам неоценимую помощь.


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


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