TrueCrypt: аудит пройден, интрига сохраняется

Как известно, отрицательный результат — тоже результат, только вопросов он ставит больше, чем даёт ответов. Именно так обстоят дела с приложением TrueCrypt, вокруг которого за последние полтора года разыгралась настоящая драма. Сейчас в этой затянувшейся истории как будто бы поставлена точка, но вот именно что «как будто бы»: аудит исходных текстов завершён, ничего подозрительного не выявлено — и это-то как раз самое подозрительное.

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

Своего пика паранойя достигла в 2013, когда был организован сбор средств на профессиональный аудит исходников (см. «Интрига TrueCrypt»). Прошлой весной опубликовали результаты первой фазы проверки (есть кое-какие слабости, но ничего фатального), но главный сюрприз преподнёс сам коллектив разработчиков программы — объявивший в мае, что разработка прекращена, что пользоваться ею небезопасно (см. «TrueCrypt: вы не ждали, а он того!»). После такого логично было ожидать, что вторая фаза аудита (включающая изучение собственно реализации криптоалгоритмов и т.п.) выявит что-нибудь страшное, вроде шпионской закладки от АНБ. Однако результат оказался совсем не таким, как ждали. Вот подробный отчёт о второй фазе аудита, а если коротко (см. резюме от профессора Мэтью Грина, который и организовал сбор средств), опять ничего фатального не найдено.

TrueCrypt оказался во всех отношениях качественным программным продуктом. Ни слабостей, которые бы существенно облегчили вскрытие шифра, ни тем более умышленно внедрённых «бэкдоров» не обнаружено. Да, найдены кое-какие мелочи, которые — теоретически, при условии крайне редкого стечения обстоятельств — способны ослабить стойкость защиты, однако даже для самых серьёзных из них практическая эксплуатация слишком затруднительна, чтобы среднестатистического пользователя TrueCrypt это беспокоило (к примеру, TC использует стандартный генератор случайных чисел в MS Windows, который иногда сбоит — но на качестве генерируемых криптоключей это практически не сказывается, потому что ГСЧ служит лишь одним из нескольких источников случайности). Поэтому можно спокойно брать последнюю полноценную версию продукта (7.1a) и пользоваться ею, не обращая внимания на то, что разработка прекращена. Проверено: мин нет!

Вот только как понимать отказ самих авторов от своего детища? Устали? Не все же разом! На них вышла и надавила некая спецслужба? Вероятней: признаться в этом прямо они не могли, а потому решили работу прекратить — и таким образом иносказательно сообщили о проблеме. И, выходит, установить контроль над TrueCrypt службисты не успели, иначе, конечно, такой популярный проект закрывать бы не стали.

Продлив эту линию рассуждений, мы выйдем даже на более интересную мысль: отныне нет необходимости в форках — которых уже наплодилось минимум три штуки (авторы VeraCrypt даже успели учесть результаты первой фазы аудита). Видите ли, лицензия, под которой опубликованы исходники TrueCrypt, не совсем внятно оговаривает использование кода в сторонних приложениях (вроде бы не запрещено, но и не разрешено безусловно), поэтому форки TrueCrypt считаются нелегальными. А теперь, когда тщательная проверка показала отсутствие слабостей в оригинальном продукте, смысл в форках и вовсе исчез. TrueCrypt более не развивается, это правда, но почему бы не смотреть на него как на один из тех редких программных продуктов, которые достигли совершенства, от которых уже не убавить и не прибавить? Вспомните Vim, NetHack — где новых функций не добавляется годами. TrueCrypt надёжен, проверен — так лучше пользоваться им, чем рисковать с непроверенными форками!

И всё-таки не спешите реабилитировать TrueCrypt, а тем более его переработки. Проблема? Отсутствие доказательства наличия закладок не эквивалентно доказательству их отсутствия. Этот фундаментальный логический принцип заставляет извлечь на свет божий минимум два парадоксальных аргумента.

Во-первых, что мы имеем? Некие специалисты изучили исходники программы и пришли к выводу, что слабых мест в них нет. Но кто они, кто проводил аудит, кто руководил проектом? Интернациональная группа, сбитая в основном из граждан США — и о большинстве этих людей мы ничего не знаем. Да, там числится Брюс Шнайер, однако, в какой степени можно доверять остальным? Параноиков, требующих аудита аудиторов, мало, но причислять ли себя к их числу — решите сами.

Второй аргумент серьёзней. Аудиторы могли попросту не заметить закладку в коде TrueCrypt, тем более, если руку к его созданию приложило АНБ или подобная ему организация. Насколько это вероятно (ведь речь, в конце концов, о профессионалах высшей пробы, не о любителях каких-нибудь)? Очень вероятно. А почему — замечательно в своё время объяснил Кен Томпсон (да, тот самый). Вот его статья (Reflections on Trusting Trust) и если у вас есть полчаса, там есть на что посмотреть и над чем подумать.

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

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

А про TrueCrypt лучше забыть. От греха подальше.

Что будем искать? Например,ChatGPT

Мы в социальных сетях