Без срока давности

(Январь 2011)

О том, как ФБР и АНБ встраивали закладки-бэкдоры в криптографию OpenBSD, операционной системы с открытыми исходными кодами.

keyhole

Среди всего того разнообразия операционных систем, что в свое время отпочковались от ОС Unix, проект OpenBSD всегда отличался особо тщательным подходом к обеспечению защиты информации.

Именно по этой причине — ну и благодаря открытому исходному коду, конечно же — криптография, поначалу создававшаяся в рамках OpenBSD, ныне лежит в основе подсистем безопасности в неисчислимом множестве коммуникационных устройств и интернет-приложений, работающих под любыми операционными системами.

В подобных условиях вполне можно понять беспокойство, появившееся у специалистов по защите информации после того, как в середине декабря (2010) Тео де Раадт (Theo de Raadt), основатель и бессменный лидер проекта  OpenBSD, опубликовал через форум разработчиков этой ОС послание следующего содержания:

Я получил письмо относительно ранней стадии разработки стека IPSEC в OpenBSD. В этом письме утверждается, что некоторые экс-разработчики (и компания, на которую они работали) получали деньги от правительства США на встраивание закладок-бэкдоров в наш набор сетевых протоколов, в частности в [отвечающий за безопасность] стек  IPSEC. Происходило все это дело примерно в 2000-2001 годах.

Поскольку первый IPSEC-стек у нас был доступным бесплатно, то значительные фрагменты этого кода ныне обнаруживаются во множестве других проектов и программных продуктов. За минувшие более чем 10 лет данный код пакета IPSEC проходил через множество модификаций и исправлений, так что уже неясно, каковым может быть реальный эффект от этих утверждений.

Это письмо, поясняет далее де Раадт, пришло к нему частным образом от Грегори Перри (Gregory Perry) — человека, в свое время активно участвовавшего в становлении OpenBSD, но с которым они уже давно и совершенно никак не пересекались — примерно те же лет десять.

Учитывая весьма  деликатный и одновременно взрывоопасный характер сообщенной ему информации, де Раадт решил, что не испытывает «абсолютно никакого желания становиться частью какого бы то ни было заговора», а потому не стал отвечать автору этого письма лично. Посчитав, что более правильным будет опубликовать полный текст послания Перри на форуме — для всеобщего ознакомления и обсуждения.

Среди главных мотивов этого не очень этичного, прямо скажем, поступка, де Раадт перечислил такие:

(a) те, кто использует этот код, могли бы проверить его на предмет упомянутых проблем;
(b) те, кого это рассердило, могли бы предпринять другие действия;
(c) если же это неправда, то те, кого обвиняют, могли бы себя защитить.

В заключение де Раадт с готовностью признает, что сам он, конечно же, очень не любит, когда его частная переписка публикуется кем-то для всеобщего обозрения.

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

Непосредственно вслед за этим посланием де Раадта в рассылку для сообщества разработчиков пошел полный текст письма, полученного им от Грегори Перри:

Привет, Тео. Давно не общались. Если ты припоминаешь, некоторое время назад я был техническим директором компании NETSEC и занимался вопросами финансирования и пожертвований на разработку криптографической подсистемы  OCF [OpenBSD Crypto Framework]. В то же самое время я сотрудничал с ФБР, а именно, с их Центром технической поддержки, где занимались криптологическим проектом по обратной инженерной разработке, нацеленным на встраивание бэкдоров и на реализацию механизмов депонирования ключа для смарт-карт и других аппаратно реализованных компьютерных технологий.

Для подписанного мною в то время NDA [соглашения о неразглашении секретов] недавно истек срок давности. Поэтому мне хотелось бы ввести тебя в курс дела относительно того факта, что ФБР реализовало в OCF некоторое количество бэкдоров и механизмов для побочных каналов утечки криптоключей. Официальной целью этих работ был мониторинг шифрования в VPN-системе, связывающей сайты прокуратуры Министерства юстиции США, т.е. вышестоящей организации, которой ФБР подчиняется.

Джейсон Райт (Jason Wright) и несколько других разработчиков [в составе NETSEC] отвечали за эти бэкдоры. Поэтому было бы правильно посоветовать тебе устроить перепроверку всех и каждого из тех кодов, что были предоставлены Райтом и теми из других разработчиков, с которыми он работал и которые появились в проекте из NETSEC.

В заключение своего письма Грегори Перри сообщил де Раадту не только известные ему факты, но и некоторые правдоподобного вида гипотезы.

Например, предположил Перри, именно в этом может крыться причина того, почему проект OpenBSD, прежде пользовавшийся поддержкой со стороны американских военных, в 2003 году резко и без каких-либо объяснений потерял ощутимое финансирование от DARPA, Агентства передовых оборонных исследований.

Расхожим объяснением этой неприятности обычно выдвигался общеизвестный пацифизм Тео де Раадта, осудившего войну США в Ираке. Однако с точки зрения Перри причина была иной: «Более чем вероятно, что до них дошли слухи о встроенных в систему бэкдорах, и они не захотели создавать никаких производных программных продуктов, основанных на той же системе».

Сразу же после публикации всей этой информации  разработчики OpenBSD начали аудиторскую проверку кодов, отвечающих в ОС за безопасность. А поскольку сам Тео де Раадт категорически не пожелал продолжать общение с Перри по данному вопросу, за дело взялись журналисты.

Некоторые из них не только получили от него более подробные комментарии о тайных делах спецслужб десятилетней  давности, но и опубликовали эту информацию в своих блогах. В частности, вот что Перри сообщил Роберту Макмиллану (Robert McMillan) из издания CSO:

Приветствую, Роберт. В действительности я не подразумевал, чтобы Тео сделал мое письмо доступным для всей остальной части интернета, однако суть его содержимого от этого не меняется.

Основной мишенью для встраивания механизмов утечки криптоключей через побочные каналы был [криптографический сегмент системы] OCF, а также сегмент фильтрации пакетов PF (stateful inspection packet filter) и стек гигабитного Ethernet-драйвера для ОС OpenBSD. Для всех этих проектов фирма NETSEC [ныне уже не существующая компания инфобезопасности Network Security Technology] предоставила инженеров и оборудование — включая первую версию аппаратного обеспечения для криптографического акселератора OCF, построенного на основе линии криптоускорителей HiFN.

Этот проект [по встраиванию бэкдоров] осуществлялся Центром технической поддержки Администрации общих служб США (GSA Technical Support Center) — так в 1999 году назывался совместный проект ФБР и АНБ по исследованиям и разработкам. Технологии, которые мы разрабатывали, представляли собой средства управления многоуровневой безопасностью систем (MLS) для совместной работы АНБ и ФБР.

Одной из наших задач было освоение различных методов для обратной инженерной разработки смарт-карт, включая технологию «Пиранья» (Piranha), применяемую для удаления органических материалов с карточек и других подобных систем, используемых для хранения криптоключей — так, чтобы вентили схемы можно было анализировать с помощью сканирующей электронной и сканирующей туннельной микроскопии.

Кроме того, мы разрабатывали предложения по распределенным вычислительным системам, использовавшимся при криптоанализе алгоритмов DES/3DES, для лобового взлома ключей тотальным перебором. А также, плюс к этому — разного рода методами для организации побочных каналов утечки ключей и скрытых закладок-бэкдоров в аппаратно реализованных криптосистемах. Некоторые из этих проектов затем ответвлялись в самостоятельные субпроекты, в компоненты систем автоматического тестирования и так далее…

В 2000 году, пишет далее Перри, он ушел из фирмы NETSEC. Во-первых, чтобы затеять новое предприятие. А во-вторых, потому что испытывал весьма существенное беспокойство и душевный дискомфорт от личного участия в шпионских проектах довольно сомнительного характера.

Например, среди прочего Грегори Перри довелось быть ведущим архитектором некоего VPN-проекта, который разрабатывался для защиты виртуальной частной сетью коммуникаций Исполнительного управления прокуратуры США. И уже на этапе разработки в эту VPN-систему, связывающую две с половиной сотни офисов прокуроров США, компания NETSEC встроила тайные бэкдоры ФБР.

Эти бэкдоры были встроены для того, чтобы ФБР имело возможность (в потенциале) восстанавливать информацию о решениях Большого жюри, сообщаемую из различных офисов прокуратуры на территории США и за границей.

Далее в письме Перри несколько строк уделено весьма колоритному персонажу, который в министерстве юстиции руководил всем этим проектом с бэкдорами для прокуратуры:

Человеком в министерстве юстиции, перед которым я отчитывался о проделанной работе, был некто Заль Азми (Zal Azmi) — тот самый, которого впоследствии президент Дж. Буш [в 2004 году] назначит директором ФБР по инфотехнологиям. А в те времена [при администрации Клинтона] он был выбран возглавлять проект VPN прокуратуры на основе его предыдущего опыта в структурах Корпуса морской пехоты (а еще раньше Заль Азми был афганским муджахеддином Усамы бен Ладена в их борьбе против Советов).

Он бегло говорил на фарси и работал в нескольких операциях с ЦРУ в качестве лингвиста-переводчика — как до, так и после событий 11 сентября 2001. А затем он получил должность CIO ФБР и главы проекта Sentinel — большой автоматизированной системы по ведению дел ФБР (Sentinel case management system), создаваемой по контракту с Бюро корпорацией Lockheed.

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

Этот закон — Foreign Intelligence Surveillance Act — в порядке исключения позволяет разведслужбам США следить за американскими гражданами, подозреваемыми в сотрудничестве с зарубежной разведкой. Как предполагает Перри, это было сделано «в профилактических целях» — для того, чтобы он не болтал обо всех этих разнообразных проектах его бывшей компании.

Но коль скоро в конце 2010 для официально подписанного Перри соглашения о неразглашении информации истек срок давности, то теперь он считает себя свободным говорить обо всем, что ему известно:

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

Причем все это происходило до 11 сентября 2001, т.е. во времена, когда, как принято полагать, еще существовали — по крайней мере в теории — высокие стены между ФБР и Министерством обороны [подразделением которого является разведслужба АНБ]…

Обнародованная Тео де Раадтом и Грегори Перри информация о возможных бэкдорах американских спецслужб в ОС OpenBSD, конечно же, в интернет-сообществе не могла пройти незамеченной. Причем уже среди самых первых откликов на публикацию появились заявления от людей, персонально упомянутых в письме Грегори Перри в качестве тайных «инструментов ФБР».

Оба этих человека – программист-разработчик Джейсон Райт и автор технических пособий по виртуальным системам Скотт Лоуи – в самой категоричной форме отвергли обвинения Перри. Попутно заверив общественность, что никогда не имели ничего общего с ФБР и понятия не имеют, почему именно на них пали эти безосновательные обвинения.

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

Что же касается официальной реакции на историю со стороны ФБР, то там, как это часто бывает в деятельности спецслужб, полностью проигнорировали публикацию и уклонились от каких-либо комментариев. Прозвучали, правда, высказывания некоего агента Хилберта (E.J. Hilbert), бывшего сотрудника ФБР и следователя по компьютерным преступлениям, но сколь-нибудь серьезными его аргументы назвать затруднительно.

Первым делом он обозвал Грегори Перри «шизиком», а по существу дела  выразился так: «Открытое программное обеспечение со встроенными бэкдорами — это полный идиотизм, просто потому что здесь открытые исходные коды… Кто угодно их будет искать и тут же найдет»…

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

Еще в 2003 году программисты-разработчики, занимавшиеся созданием очередной версии  (2.6) ядра ОС Linux, благодаря удачному стечению обстоятельств обнаружили и ликвидировали  в открытых исходных кодах системы тайный бэкдор. Причем реализован этот бэкдор был настолько хитро и искусно, что даже для закоренелых скептиков разговоры о неуловимых троянцах в открытом ПО перестали звучать как бред параноиков.

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

Лишь при особо тщательном исследовании было установлено, что человек, знавший нужное (и в данных условиях экзотическое) сочетание управляющих флагов плюс место, где их следует применить, получал бы благодаря этим двум строчкам полный — с максимальными привилегиями Root — контроль над любой машиной, работающей под ОС Linux с новым ядром. То есть такой операционной системы, исходный код которой всегда был открыт и доступен любому для выявления потенциальных слабостей.

Знающие люди в движении за свободное ПО, конечно же, наверняка были наслышаны об этой истории. Поэтому сразу после публикации писем де Раадта и Перри в сообществе OpenBSD начались аудиторские проверки криптоподсистем этой ОС. Первые же дни пристрастных перепроверок позволили выявить в кодах пару существенных и прежде незамеченных багов — не особо, впрочем, похожих на коварный бэкдор. На первый взгляд, по крайней мере.

В следующем письме Тео де Раадта, разосланном им для разработчиков OpenBSD, обрисована суть обнаруженных багов и делается попытка прояснить те роли, что могли сыграть в их появлении конкретные программисты от фирмы NetSec — Джейсон Райт и Ангелос Керомитис (Angelos Keromytis). Нет никаких сомнений, что два этих видных разработчика проекта OpenBSD были непосредственно связаны с NetSec, однако де Раадт со всей осторожностью предупреждает, что не знает, были ли сами эти люди в курсе относительно тесных дел их компании с ФБР.

Как бы там ни было, система контроля за модификациями кода, реализованная при разработке OpenBSD, позволяет аудиторам проконтролировать, какие из разработчиков участвовали в написании каких именно сегментов кода. Согласно де Раадту, Джейсон Райт был главным образом вовлечен в программирование драйверов и не имел никакого отношения к созданию криптографической подсистемы OCF. Но при этом он явно работал над некоторыми частями стека IPSec. (В своем ответном письме Джейсон Райт категорически отверг обвинения, будто он встраивал бэкдоры в код OpenBSD. Однако де Раадт тут же подверг Райта критике за то, что он в своей реакции так и не прояснил суть работы, которой занимался в NetSec.)

Основной фокус расследования аудиторов, насколько можно понять, тем временем сместился с Райта на вклад Ангелоса Керомитиса, который, согласно де Раадту, был архитектором и главным разработчиком  стека IPSec в OpenBSD. Правда, есть информация, что Керомитис официально начал работать на NetSec несколько позже. Но при этом, как отмечает де Раадт, именно тогда в кодах OpenBSD появилась концепция небезопасных векторов инициализации, которую, впрочем, затем  удалили на последующей стадии разработки.

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

Но можно отметить, что один из этих багов, относящийся к известной специалистам «проблеме CBC оракула» (предсказуемые векторы инициализации, кратко IV) в IPSEC-стеке уже был выявлен прежде — и в свое время залатан Ангелосом Керомитисом. Однако в драйверах устройств, за разработку которых отвечал Джейсон Райт, этот же баг остался проигнорированным. Другая из выявленных ныне дыр также связана с инструкцией в аппаратном драйвере.

Кроме того, де Раадт мимоходом упомянул еще одну проблему — в подсистеме генерации случайных чисел, однако в подробности на данный счет пока вдаваться не стал.

Наиболее же серьезным откровением для всех интересующихся, как считается,  стала «новость» о давнем обнаружении нехорошего условного выражения в более старых версиях кода модуля ESP (Encapsulating Security Payload). Эта серьезная дыра была по-тихому заделана разработчиками еще в 2002 году, но — что примечательно — без обычного процесса публичного раскрытия уязвимости. Как таковой, данный баг не присутствует в современных версиях OpenBSD, однако он оставался неизвестным для пользователей из-за отсутствия публичных рекомендаций по укреплению безопасности.

В своих оценках и выводах по итогам первичного аудита кода и его находкам, де Раадт описывает баг CBC IV как «весьма серьезное происшествие». Однако он не склонен считать, будто выявленные к настоящему времени дыры в защите были внесены в код преднамеренно или с целью внедрения бэкдора. В целом же нынешняя позиция Тео де Раадта по данному вопросу сформулирована им следующим образом:

NETSEC, как компания, была вовлечена в этот специфический «около-столичный» бизнес со взятием подрядов на работы по обеспечению безопасности и анти-безопасности для отдельных ведомств правительства. Я допускаю, что NETSEC действительно привлекали к написанию бэкдоров, как и утверждается. Но даже если они и были написаны, я не верю, что им удалось пробраться в наше дерево. Вполне возможно, что бэкдоры были созданы — но только как собственный продукт NETSEC. Если такие проекты и существовали в NETSEC, мне неизвестно, участвовали ли в них лично или хотя бы знали ли о них Джейсон (Райт), Ангелос (Керомитис) или кто-либо еще [из тех разработчиков NETSEC, кто занимался созданием OpenBSD].

Хотя выводы де Раадта, по идее, должны успокоить пользователей ОС OpenBSD и связанных с ней проектов, это, однако, совсем не означает, что все в данной истории прояснилось. Здесь по-прежнему остается довольно много нестыковок и мутных моментов. Да и вообще, можно ли выявить изощренно внедренный бэкдор всего за несколько дней проверки кода в столь серьезной системе — это сам по себе очень большой вопрос.

Примерно об этом же говорит и еще одно письмо с комментариями от экс-директора NETSEC Грегори Перри, которое он написал для известного сайта «утечек и компромата» Cryptome.org:

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

Если бы мне довелось проделать все это снова, то я, наверное, послал бы анонимную открытку на сайт  Wikileaks.

Лично для меня нет абсолютно никакой выгоды от той информации, которую я сообщил Тео. Я сделал это исключительно для того, чтобы подтолкнуть его к перепроверке кода  OpenBSD, поскольку для моих обязательств перед ФБР о сохранении молчания истек срок давности. Находиться же в центре всеобщего внимания, как ныне — совершенно не мое занятие.

Я лично нанимал на работу и руководил Джейсоном Райтом, а также несколькими другими разработчиками, принимавшими участие в проекте OpenBSD. Я близко знаком с ОС OpenBSD, и за прошедшие годы применял ее в целом ряде различных коммерческих продуктов. И это я устраивал первоначальное финансирование для создания криптографического аппаратного обеспечения, ускоряющего работу  OCF и гигабитных Ethernet-драйверов — покрывая издержки на оборудование и разработку OpenBSD деньгами из бюджета NETSEC (а также из моих собственных личных пожертвований).

Хотя я и не согласен с тем, что сделал с этой историей Тео [де Раадт], я все равно скажу, что он блестящий и очень уважаемый в компьютерном сообществе человек, и сам он ни в коем случае не согласился бы на преднамеренное ослабление безопасности в его проекте. Тео — это «фашист с железной хваткой», когда дело доходит до архитектуры безопасных систем, их конструкции и разработки. Так что нет никого, лучше него и его команды, чтобы добраться до дна любой подозрительной истории, связанной с контролем за безопасностью OpenBSD и ее разнообразных внутренних подсистем с криптографией.

После чего в данном письме подытоживается собственно суть того, почему давняя история с далеко не самой распространенной на рынке операционной системой в действительности очень важна и сегодня:

Многие, очень многие коммерческие продукты безопасности и встраиваемые системы реального времени в основе своей построены на базе проекта  OpenBSD — благодаря либеральному подходу Тео к лицензированию BSD, контрастирующему с другими открытыми ОС, лицензируемыми на [жестких] условиях  GPL.

Многие, очень многие коммерческие продукты безопасности и встраиваемые системы напрямую и опосредованно зависят от любого прокола безопасности — будь он преднамеренный или какой-либо еще —  в проекте OpenBSD. Почти каждая операционная система на этой планете использует комплекс программ  «OpenSSH server suite», который Тео и его команда создавали практически с нулевым вознаграждением со стороны тех создателей множества операционных систем и коммерческих продуктов, которые ныне используют этот комплекс без каких-либо ссылок на проект OpenBSD.

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

В заключение остается предположить два наиболее вероятных финала этой поучительной истории.

Когда вокруг разворошенных перепроверками кодов OpenBSD окончательно «осядет пыль», то либо все пойдет дальше так, будто ничего особенного не произошло (наиболее вероятный исход).

Либо все-таки удастся выявить нечто действительно очень критичное  — типа упомянутого бэкдора-невидимки в ядре Linux — и тогда придется совершенно всерьез отнестись к рассказам Грегори Перри о кипучей деятельности спецслужб по встраиванию закладок и лазеек для себя практически повсюду.

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