morthan2006: (Default)
Add MemoryShare This Entry
Когда ламеры снимают фильм про хакеров - это всегда смешно.
Из одного разговора.


Дочитал я давеча эту книгу. Довольно специфичная вещь. С точки зрения читателя детективов. Но, поскольку всё крутится вокруг компьютеров и шифрования, а этим я довольно давно интересуюсь, то на книгу посмотрел с точки зрения программера.

Скажу сразу - я не шибко большой специалист в криптографии, так что воспринимать сказанное мной как истину в последней инстанции не следует. Может и в самом деле прав не я, а Дэн Браун, не зря же он благодарит NSA'шников за помощь и консультации?


В общем, с преамбулой заканчиваю и перехожу к содержанию книги. Сюжет крутится вокруг теоретически имеющегося в NSA (National Sequrity Agency - Агентство Национальной Безопасности, АНБ) супермегасекретного компьютера «ТРАНСТЕКСТ». Благодаря запредельной мощности множества процессоров, работающих в единой упряжке параллельных вычислений, он за пять минут взламывает «грубой силой» любой шифр. Ну, за десять. Максимум - за полчаса. Но тут попался абсолютно невзламываемый шифр под названием «Цифровая крепость», который крутится в машине уже почти сутки и конца этому не видно.

Сложность в том, что зашифрована не переписка международных террористов и не какая-нибудь хрень такого плана. Всё гораздо хуже. NSA находится в длительном противостоянии с «Фондом электронных границ» (Electronic Frontier Foundation, реально существующая организация), который озабочен постоянными нарушениями права на тайну переписки, совершающимися в NSA. Отмазки, что агентство читает переписку террористов и предотвращает теракты, не катят: почта перлюстрируется и расшифровывается без каких-либо санкций и ордеров, что возмущает любого борца за человеческие права. И вот, гениальный программер, работающий в NSA, потребовал от начальства введения всей этой бюрократии с ордерами и санкциями, мотивируя это наличием «ТРАНСТЕКСТА», который позволяет почти мгновенно вскрыть любой шифр. Раньше ему объясняли отсутствие этих процедур тем, что они отнимают драгоценное время, когда каждый час, потраченный на расшифровку, бесценен. Теперь же, в связи с наличием «ТРАНСТЕКСТА», этот аргумент потерял свою актуальность.

Естественно, просьбы поборника справедливости остались без ответа. Ещё не хватало в серьёзной организации вносить в техпроцесс дополнительные бюрократические препятствия, когда и без них всю жизнь обходились! Разумеется, программер жутко обиделся на всё NSA целиком и на непосредственного начальника в частности. И ушёл в «Фонд Электронных Границ», на прощание громко хлопнув дверью и заявив, что он всем устроит весёлую жизнь.

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

И вот, спустя несколько лет, программер преподнёс NSA, так сказать, «подаруночек». Принципиально нераскалываемый шифр под названием «Цифровая крепость». С этого момента «ТРАНСТЕКСТ» можно отправлять на свалку истории: брутфорс для этого шифра невозможен (или затруднён в сотни раз, что одно и то же). Зашифрованный файл с описанием алгоритма выложен в Интернете для тестирования, любой желающий может его скачать и попробовать вскрыть. А через некоторое время, когда все убедятся в надёжности шифра, ключ будет продан на открытом аукционе тому, кто больше заплатит. Появятся чипы с аппаратной реализацией невзламываемого алгоритма, компы всего мира будут закрыты наглухо, NSA наконец-то сядет в лужу и поймёт, как оно ошибалось.

Начальник криптографического отдела сразу понял, как он ошибся, когда просто отпустил программера под подписку. Надо было ещё тогда убить его нахрен. Нет человека - нет проблемы. Но сейчас уже поздно: тот передал ключ третьей стороне, чтобы в случае его смерти ключ опубликовали в Интернете. Безвозмездно, то есть даром. Для всех - и пусть никто не уйдёт обиженным! Все получат невзламываемый алгоритм, выпускать чипы будет не одна фирма а сразу несколько... в общем, NSA получает тот же расклад, что и раньше, только уже чуть похуже.

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

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

А он говорит следующее. Что, если компьютер, найдя правильный ключ, не поймёт, что он правильный? И, естественно, пойдёт перебирать комбинации дальше - до победного конца. После чего распишется в собственном бессилии.

Хорошая идея, спору нет. Но для её достижения совсем не нужно привлекать «линейные мутации» (это про полиморфные вирусы, что ль?) и изобретать страшный шифр «Цифровая крепость». Всё намного проще.

Берём что-нибудь нужное и шифруем его, к примеру, ГОСТ 28147-89. Смотрим, чтобы в получившемся файле не было сигнатур, позволяющих определить, что это ГОСТ. И шифруем его сверху, к примеру, DES. Опять проверяем отсутствие сигнатур. Сверху шифруем PGP - и пусть любой суперкомп расшифровывает хоть до потери пульса! Максимум, чего он добьётся, так это снимет последний PGP-шный каскад. И всё.

Причём даже снятие PGP-шного каскада возможно только тогда, когда у нас указана контрольная сумма зашифрованных данных! А дальше - полный тупик. Не зная, чем зашифровано, расшифровать практически невозможно. Брутфорсом - точно нельзя. Для брутфорса нужно иметь алгоритм.

Чисто теоретически возможно устроить не только брутфорс ключей, но и брутфорс алгоритмов. Таковую возможность мы отметаем с порога. Во-первых, нам неизвестно число каскадов. Вдруг их сотня штук? А к каждому каскаду нужно применить все комбинации алгоритмов со всеми комбинациями ключей. И, во-вторых, алгоритмов шифрования очень много. Как минимум десятка два наберётся.

Вот он, прокол Брауна! «ТРАНСТЕКСТ» по сюжету -- это очень-очень быстрый комп для распределённого брутфорса. А брутфорс неизвестного алгоритма невозможен по определению. Если у нас есть блок шифрованных данных, но нет никаких указаний на алгоритм шифрования, то это очень хреновая ситуация. Перед криптоаналитиком раскрывается громадный веер возможных алгоритмов, из которого нужно выбрать правильный.

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

Теперь далее. Встроенный антивирус «ТРАНСТЕКСТА» не желал пропускать шифрованный файл, мотивируя это тем, что в нём структура подозрительно похожа на вирус. Какой смысл антивирусу проверять блок данных? Если он не исполняется, а просто подлежит расшифровке? Причём антивирус подымает такую тревогу, что начальнику шифровалки приходится просто вырубить его, чтобы не мешал проверять стойкость шифра. Что бы это могло значить?

IMHO, это может значить только одно. Был это не просто шифрованный файл, а исполняемый шифрованный файл со встроенным расшифровщиком. Что-то вроде SFX. Тогда, раз у нас есть расшифровщик, попытка сделать брутфорс не лишена смысла. И не выглядит решением полного идиота. Так, умственно отсталого, не больше...

Почему? А потому, что по сюжету мы расшифровываем не что-нибудь, а алгоритм, которым всё зашифровано. И нафига тратить бесценное машинное время суперкомпьютера, когда можно посадить за реверс-инжиниринг машинного кода энное количество людей и через некоторое сравнительно небольшое время гарантированно получить алгоритм расшифровки?! Который, опять же, можно попытаться реверсировать и получить искомое... Борцы с вирусами имеют огромный опыт в подобных вещах и я ни в жисть не поверю, что таких спецов нет в NSA!

Конечно, если не учитывать глобальный план начальника шифровалки расколоть «ТРАНСТЕКСТОМ» шифр, встроить туда чёрный ход, позволяющий на будущее вскрыть любой пароль за пару секунд, зашифровать обратно и отдать во всемирное пользование, это кажется бредом. А теперь понятно, что нужен не столько сам алгоритм, который NSA легко выцарапает из расшифровщика, сколько содержимое файла, чтобы его подправить, зашифровать и подменить исходник. Логично?

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

Так что же там было, на самом-то деле? Шифрованный блок, или ещё и расшифровщик? Скорее, второе. Особенно, если учесть, что вместе с этим блоком в шифровалку запустили вирус, который и начал грызть данные изо всех сил...

Блин, до чего же я не люблю выражение «запустить вирус»! Ещё с того времени, как мне с напарником ставили задание на разработку одной аналитической проги примерно в таком ключе: «Денег на то, чтобы качать из Интернета данные для анализа, у нас нет. Поэтому вы должны запустить вирус в какую-нибудь американскую базу данных, пусть он там всё посчитает, а нам вернёт только результат!» Ну объясните мне кто-нибудь: как можно запустить вирус в базу данных?!

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

Читать книгу интересно, но вот программерские этюды вызывают смех. Лучше бы Браун продолжал рассказывать про иллюминатов... Что, уже было? Ну, про какую-нить другую тайную организацию, сгинувшую во тьме веков и воскрешённую его бессмертным пером. Спецов по старинным тайным обществам раз, два и обчёлся, так что писать можно что угодно. А программеров много и они рядом...
Mood:: задумчивое
Music:: Грег Джой - Очарование
There are no comments on this entry. (Reply.)

June

SunMonTueWedThuFriSat
1
 
2
 
3 4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15 16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
30