Люди аутентифицируют себя огромное количество раз в день. При входе в компьютерную систему, вы подтверждаете свою подлинность компьютеру. В 1997 году управление социального обеспечения пробовало ввести данные людей в сеть; они прекратили это после жалоб на то, что номер социального обеспечения и девичья фамилия матери не являются достаточно хорошими опознавательными средствами и что у людей будет возможность читать данные других людей. Компьютер также должен подтвердить свою подлинность вам; в противном случае как вы узнаете, что это ваш компьютер, а не какой-нибудь самозванец?
Посмотрите на среднего человека на улице, собирающегося купить пирог. Он рассматривает витрину за витриной, ища тот магазин, в котором продают пироги. Или, возможно, он уже знает свою любимую булочную, но еще только идет туда. В любом случае, когда он добирается до магазина, он подтверждает подлинность того, что это – правильный магазин. Аутентификация сенсорная: он видит пироги в меню, чувствует их запах в воздухе, магазин выглядит точно так же, как тогда, когда он последний раз был в нем.
Человек говорит с продавцом магазина и спрашивает о пироге. В некоторой степени оба аутентифицируют друг друга. Продавец хочет знать, способен ли клиент заплатить. Если клиент одет в тряпье, продавец может попросить, чтобы он ушел (или, по крайней мере, заплатил сразу). Если клиент носит лыжную маску и размахивает АК-47, продавец, скорее всего, убежит сам.
Клиент также аутентифицирует подлинность торговца. Он на самом деле продавец? Он продаст мне пирог или даст мне только кучу опилок в булочке? Что сказать о булочной? В наличии есть некое свидетельство о чистоте, подписанное местным санитарным инспектором, оно висит где-то на стене, если вдруг клиент захочет проверить. Но чаще клиент доверяет своим инстинктам. Мы все уходим из булочной, если нам не понравилось «ощущение» этого места.
Торговец вручит пирог, а клиент заплатит 5 долларов по счету. Еще большая аутентификация. Действительно ли этот счет подлинный? Выглядит ли этот пирог съедобным? У нас настолько хорошо развита зрительная (и обонятельная) аутентификация, что мы не задумываемся об этом, но поступаем так все время. Клиент получит сдачу, посмотрит на чек, чтобы удостовериться, что он пробит законным предпринимателем, и положит его в карман.
Если бы клиент платил по кредитной карте, за этим последовало бы еще больше аутентификации. Торговец прогнал бы карту через считывающее контрольное устройство, которое связалось бы с центральным сервером, и убедился бы, что счет действителен и кредита на нем достаточно для покупки. Торговец исследовал бы карту, чтобы убедиться, что это не подделка, и проверил бы подпись на ее оборотной стороне. (Большинство торговцев, правда, не будут так беспокоиться, особенно если сделка незначительна по сумме.)
Если бы клиент платил чеком, был бы другой опознавательный ритуал. Торговец посмотрел бы на чек и, возможно, спросил бы клиента о некоторых идентификационных данных. Он мог бы записать номер водительского удостоверения клиента и номер его телефона на обороте чека или, допустим, номер кредитной карточки клиента. Ни одно из этих ухищрений фактически не позволяет сделать вывод, что чек действителен, но помогает проследить за клиентом в случае, если возникнут проблемы.
Подделка аутентификации может быть очень выгодна. В 1988 году Томпсон Сандерс был осужден за обман Чикагского управления торговли. Он изображал торговца – полного, в парике, с бородой и поддельными документами. Этот поддельный торговец разместил большие рискованные заказы, затем заявил свои права на те, которые были выгодны, а от тех, с кем сделки оказались убыточными, просто скрылся. Брокеры, участвовавшие в этих сделках с другой стороны, были не способны определить, кто участвовал в торге, и понесли ответственность за ущерб.
Вернемся к нашему торговцу. Приходит другая клиентка. Она и торговец – старые друзья. Каждый из них знает другого в лицо. Это – здравая система подтверждения: они узнают друг друга даже при том, что у нее новая прическа, а он носит новый парик и очки. Супергерои понимают это и носят маски, чтобы сохранить свою личность в секрете. Это больше подходит для комиксов, чем для реальной жизни, потому что аутентификация – это не только распознавание лица (иначе слепой никогда никого не узнал бы). Люди помнят голос друг друга, фигуру, особенности и т. д. Если торговец говорит со своим другом по телефону, они могут подтвердить личности друг друга вообще без визуального контакта. Специальный уполномоченный Гордон должен был понять, что Брюс Уэйн – на самом деле Бэтман, просто потому, что они так часто разговаривали по телефону.
В любом случае наш клиент, купивший пирог, закончил его есть. Он произносит «до свидания», будучи уверенным в том, что говорит это тому же самому продавцу, который обслуживал его. Он выходит через ту же самую дверь, в которую вошел, и идет домой.
Все достаточно просто, потому что каждый бывал в таких магазинчиках. Платон не доверял написанному, потому что не мог определить, что является правдой, если человек не находится прямо перед ним. Что бы он сказал о Всемирной Сети: никакого голоса, никаких лиц… только биты.
Тот же самый клиент, купивший пирог, теперь возымел желание купить что-нибудь менее скоропортящееся – рецепт приготовления пирога, например. Для этих поисков он заходит в Сеть, пользуется своим испытанным поисковым сервером и находит несколько веб-сайтов, где продаются рецепты пирогов. Все они принимают к оплате кредитные карточки через Интернет или позволяют сделать заказ по почте. Все они обещают доставку в три-четыре дня. Что теперь?
Как бедный клиент узнает, можно ли им доверять? Потребуется немного усилий, чтобы просмотреть предложения: в Сети любой может сделать это в течение нескольких минут. Но какие из продавцов честны, а какие занимаются жульничеством? URL – указатель информационного ресурса (строка символов, указывающая на местонахождение документа в Интернете) мог бы быть именем продавца рецептов, которому можно доверять, но где гарантия, что сайт действительно соответствует тому самому доверенному имени? У Северо-Западных авиалиний есть веб-сайты, где можно купить авиабилеты: www nwa com. До недавнего времени у туристических агентов был веб-сайт www northwest-airlines com. Сколько людей купили билеты у последних, думая, что покупают их у первых? (Многие компании не знают доменных имен своих тезок.) Некоторые компании помещают имена своих конкурентов в описание своих веб-сайтов (обычно скрытые) в надежде обмануть поисковые серверы. Internic net, где вы собираетесь зарегистрировать доменное имя, – не то же самое, что Internic com. Последний возник как надувательство, сформировавшись внутри Internic Software, и в настоящее время якобы регистрирует имена доменов. Хозяева, вероятно, сделают значительный бизнес за счет создания путаницы. Есть даже более мрачное предположение: кто может сказать, что некий незаконный хакер не убедил программу просмотра отображать один URL вместо другого?
Клиент находит веб-сайт, который выглядит подходящим, и выбирает рецепт пирога. Теперь он должен заплатить торговцу. Если он покупает что-либо ценное, то в этом случае нужна серьезная аутентификация. (Если он тратит 25 центов на виртуальную газету, все немного проще.) Действительны ли эти электронные деньги? Действительна ли эта кредитная карточка и есть ли у клиента право выписывать электронный чек? Некоторые торговцы, работающие непосредственно с клиентом, просят показать водительские права перед тем, как принять чек; а что же может проверить цифровой торговец перед принятием электронного чека?
Наиболее важной проблемой безопасности является аутентификация через цифровые сети. Здесь может быть так же много различных решений, как и различных требований. Некоторые решения должны быть сильными и весомыми, чтобы защитить миллионы долларов. Для других это не обязательно: например, аутентификация дисконтной карты торговца. Некоторые решения подразумевают анонимность – наличные деньги или карту, которая пускает вас в специфическую область сети, не требующую обязательного раскрытия вашего имени, – в то время как другие нуждаются в строгой системе аутентификации. Большинство будут стремиться к интернациональности: сетевой паспорт, системы, используемые для международной торговли, цифровые подписи или международные контракты и соглашения.
Часто аутентификация осуществляется невидимо для пользователя. Когда вы используете свой телефон (или платный телевизионный канал), то аутентифицируете себя в сети так, чтобы было известно, кому выставлять счет. Военная авиация имеет системы IFF (позволяющие узнать – друг перед вами или враг) для опознавания своих собственных и союзных самолетов системами ПВО. Тахографы, применяемые повсюду в грузовиках в Европе, чтобы заставить водителей соблюдать правила – такие, как принудительный отдых, – используют методы аутентификации, чтобы предотвратить мошенничество. Предоплата электричества в Великобритании – другой пример.
Когда думаете об аутентификации, держите в уме два ее различных типа. Они могут выглядеть похожими, но техника их использования очень различна. Первый – это
Второй – это
Когда мы говорим об аутентификации, на самом деле имеем в виду целостность. Две эти концепции различаются, но иногда они переплетены. Аутентификация имеет дело с источником данных: кто подписал лицензию на медицинскую практику, кто выпустил в обращение валюту, кто санкционировал закупочный ордер на 200 фунтов удобрений и 5 галлонов дизельного топлива? Целостность имеет отношение к действительности данных. Верен ли номер этой платежной ведомости? Были ли данные исследования окружающей среды изменены, с тех пор как я последний раз видел их? Целостность не имеет отношения к источнику данных, к тому, кто создал их, когда и как, но определяется тем, были ли данные изменены с момента их создания.
Целостность – это не то же самое, что точность. Точность характеризует степень соответствия данной величины ее истинному значению; целостность описывает отношение данной величины к самой себе через какое-то время. Часто они тесно взаимосвязаны.
В любом обществе, где компьютеризированные данные используются для принятия решений, целостность важна. Иногда это может иметь значение для общества в целом: если статистика о детях с уровнем жизни за чертой бедности является признанным фактом, ситуация может быть изменена путем выделения федеральных пособий. Для любого, кто зависим от акций NASDAQ (компьютеризированной системы котировки ценных бумаг), путаница может быть убийственной. Иногда это важно для отдельной личности: вы на самом деле можете создать беспорядок, внеся изменения в записи о водительских правах и отметив чью-либо лицензию как приостановленную. (Это было случайно сделано в 1985 году в Анкоридже, штат Аляска, по отношению к 400 людям, по крайней мере один человек из которых провел ночь в тюрьме. Подумайте об удовольствии, которое кто-нибудь может получить, сделав это специально.)
Было несколько инцидентов, связанных с целостностью и имевших отношение к акциям. В 1997 году у компании Swisher, которая производит дезодоранты для унитазов, сильно увеличилась стоимость акций из-за того, что информационные службы некоторое время путали символику ее акций с символикой акций другой компании с названием Swisher, которая производит сигары. Компания Swisher1 была намного меньше, чем Swisher2, поэтому когда вы, будучи введены в заблуждение, просматривали ее годовой отчет, то находили невероятную недооценку акций. Некие парни вычислили, что же на самом деле произошло, и быстро продали акции Swisher1, просчитав, что цена снова упадет, как только инвесторы поймут ошибку.
В 1999 году служащий PairGain Technologies отправил по почте поддельные объявления о слиянии компаний, оформленные так, как выглядят объявления информационной службы Блумберг, и получил контроль над 30% акций до тех пор, пока обман не был раскрыт.
Эти случаи не имеют отношения к аутентификации. Не имеет значения, кто собрал данные переписи, кто составил конечные цены акций или кто ввел записи о регистрации автомашин – они касаются целостности. Но есть много других баз данных, где целостность важна: телефонные книги, медицинские записи, финансовые записи и т. д.
Когда один мой знакомый писатель-мистик появляется перед аудиторией, я всегда думаю, что хладнокровный способ убить кого-нибудь состоит в том, чтобы изменить базу данных дозировки препарата в больнице. Если врач недостаточно внимателен – например, он утомлен, препарат незнакомый, его отвлекает некий Мак-Гуффин, – он может прописать только то, что ему сообщает компьютер. Сегодня это может не сработать – рядом есть бумажный первоисточник, например настольный справочник врача или фармакологические стандарты препарата – но кто поручится за завтра?… Миллионы людей получают медицинскую информацию по Сети. Например, drugemporium com делает запрос другому сайту – drkoop com, чтобы получить информацию о возможной несочетаемости препаратов, которые вам назначены. Пользователей обычно предупреждают, чтобы они не полагались на информацию, взятую всего из одного источника, но большинство из них все равно будут поступать так, а не иначе. Кто-нибудь захочет поиграть с целостностью этих данных и причинит много вреда.
И даже если нет никакого преступного намерения, в любой сетевой системе, которая имеет дело с рецептами и лечением, лучше проводить проверку целостности, чтобы застраховать себя от случайных ошибок: никто не хочет, чтобы случайно измененный байт привел в итоге к смертельному случаю в больнице – ни пациент, ни компания, занимающаяся поставками программного обеспечения, которой придется иметь дело с судебными процессами.
В физическом мире люди используют материальную копию объекта как доказательство целостности. Мы доверяем телефонной книге, настольным справочникам врача и «Американским статистическим отчетам», поскольку это книги, которые выглядят настоящими. Если они фальшивы, значит, кто-то тратит много денег, чтобы они выглядели настоящими. Когда вы снимете с полки роман Диккенса и начнете читать его, вы не усомнитесь в его реальности. Точно так же с вырезкой из
1 августа 1997 года я получил электронную почту от друга; в ней была копия речи Курта Воннегута в день присуждения университетских степеней в Массачуссетском технологическом институте. По крайней мере, я так предполагал. Мой друг переслал ее мне с честными намерениями. Но это не было речью Курта Воннегута на присуждении университетских степеней в 1997 году. В 1997 году Воннегут не выступал там. Он не писал этой речи и нигде не выступал с ней. Она была написана Мари Шмич и опубликована в ее колонке в
Я сопоставил этот случай сомнительного авторства Воннегута с письмом, полученным мной приблизительно 15 лет назад, еще до появления Всемирной паутины, даже до того, как у меня появился адрес электронной почты (но уже во времена Интернета). Речь идет об эссе с названием «Мечта о будущем (не исключая омаров)»; друг отправил мне фотокопию по электронной почте. Копия была сделана непосредственно с публикации. Да, она могла быть сфальсифицирована, но это потребовало бы уйму работы. Это было до эры настольных издательских систем, и придать чему-либо вид фотокопии журнала
Я получал переданные по электронной почте статьи из журналов и газет. Кто может дать гарантию, что те статьи на самом деле из газет и журналов, хотя утверждается, что это так. Как я узнаю, что они не были искусно изменены: слово здесь, предложение там. Что если я сделаю эту книгу доступной интерактивно, и некие хакеры возьмут и изменят мои слова? Возможно, вы читаете эту книгу в Сети; остановитесь ли вы, чтобы подумать, что прочитанное вами может не быть написано мною, что вы верите серверу, с которого загрузили книгу. Является ли вера механизмом, который применим для проверки, что это мои слова? По прошествии достаточного количества лет многие люди будут читать переделанную версию книги – иную, чем мои настоящие слова. Думаете, кто-нибудь заметит это? Насколько задолго до измененной версии была создана «настоящая» версия? Когда протест Воннегута будет забыт и его речь на присуждении ученых степеней войдет в историю?
Соблазн подделывать или изменять данные велик. Покрытый рунами камень, найденный в Миннесоте, предположительно описывает визит викингов, и ничего, что он содержит слова, возникшие только в современном шведском языке. Поль Шлиман (внук Генриха Шлимана) претендовал на открытие секрета Атлантиды в старинных свитках майя, которые он прочел в Британском музее. Ничего, что никто не может прочесть письмена майя и что старинные свитки хранятся в Мадриде. Переписанная Бисмарком телеграмма Эмса в 1870 году развязала Франко-Прусскую войну. В 1996 году, когда Дэвид Селборн пытался протолкнуть свой перевод описания посещения Китая итальянским путешественником (обогнавшим Марко Поло на три года), он использовал «владельца манускрипта, согласившегося на перевод только в случае, если будет соблюдена строжайшая его анонимность», в качестве уловки, чтобы скрыть подделку.
Цифровой мир позволяет с легкостью осуществлять подобные вещи, потому что подделку настолько же просто произвести, насколько сложно выяснить истину. В мае 1997 года 13-летняя жительница Бруклина выиграла национальный конкурс по орфографии. Когда в
Изображения способны оказывать мощные воздействия на людей. Они могут изменять мнения и оказывать влияние на внешнюю политику. Картины «Бури в пустыне» – загнанные в ловушку иракцы, ставшие жертвами снарядов военно-воздушных сил коалиции, сыграли большую роль в быстром прекращении огня: американцы не любят видеть резню. А помните Сомали? Кадры были взяты из тридцатисекундного видеоклипа: мертвую Марине (Marine) проволокли по улицам Могадишу для того, чтобы отбить у американцев желание воевать. Информация – это сила. В некоторых случаях видеоклип может быть и обманом.
Это звучит жутко, но, несмотря на внимание к этой проблеме, мы теряем способность отличать настоящую вещь от фальсификации. На протяжении всей истории человечества мы использовали контекст для проверки целостности; в электронном мире контекста нет. Для кинофильма «Афера» Ньюман и Редфорд нанимали дюжины актеров на пробы и устраивали реалистичную имитацию тотализатора конных бегов, чтобы детально изучить поведение каждого кандидата. Во время съемок более современного кинофильма «Испанский заключенный» было то же самое. Вовлечение в такие глобальные игры с целью детального изучения реакций было популярно во времена депрессии; впрочем, я знаю, что подобные вещи делаются и сегодня. Данный способ оценки надежен, потому что человек не может предположить, что все, что он видит – комнаты, люди, движение, – в действительности является только представлением, разыгранным исключительно для него. В Сети это сделать просто. В мире, в котором нет возможности потрогать, людям нужен новый способ проверки целостности того, что они видят.
Двойная запись в бухгалтерском учете была придумана в 1497 году Лукой Пациоли из Борго Сан-Сеполкро, хотя само это понятие на 200 лет старше. Основная идея в том, что каждая операция будет влиять на два или более счета. Один счет дебетируется на ту же самую сумму, на которую кредитуется другой счет. Таким образом, все операции всегда проходят по двум счетам и, поскольку они всегда показывают увеличение на одном счете и уменьшение на другом, суммарный итог по всем счетам всегда будет нулевым.
У этой системы есть две главные цели. Две книги хранятся у двух разных клерков, уменьшая возможность обмана. Но еще более важно, что две книги будут сбалансированы друг с другом в установленном порядке (бизнесмены должны подсчитывать баланс каждый месяц, банки каждый день). Процесс подсчета баланса и является аудитом: если один клерк пытается совершить злостную фальсификацию или просто сделает ошибку, это будет раскрыто, потому что кто-нибудь другой будет проверять его работу, а не он сам. В дополнение к этому могут пригласить ревизоров со стороны, когда придут другие бухгалтеры и проверят книги снова… только чтобы удостовериться.
Аудит жизненно необходим, если к безопасности относиться серьезно. Двойная запись бухгалтерского учета – это только начало; банки имеют комплексные и исчерпывающие требования к аудиту. То же касается тюрем, стартовых шахт ядерных ракет и бакалейных магазинов. В тюрьмах должны хранить записи на каждого, кто поступает и выбывает, и регулярно составлять баланс, чтобы быть уверенными, что никто незамеченным не убыл (или случайно не остался). В ракетных шахтах могут дополнительно подвергнуть ревизии каждый убывающий и прибывающий контейнер и упаковку, сравнивая отгрузочные и приемные записи с действительностью. Бакалейный магазин хранит кассовую ленту всего пробитого товара и сравнивает количество денег, находящихся в ящике кассы фактически, с тем, что пробито на кассовой ленте.
Это не профилактические меры безопасности (хотя они могут предотвратить нападения); аудит предназначен для того, чтобы помочь судам. Суть аудита состоит в том, чтобы вы смогли обнаружить успешное нападение, выяснить, что случилось после него, и затем доказывать наличие нападения в суде. Специфические потребности системы в аудите зависят от сферы его приложения и масштабов. Например, вам не нужно многое из контрольных функций аудита, применяемых к системе кредитных карт для обслуживания фотокопировальных машин университета. И есть потребность в гораздо более жестком контроле, если кредитные карты собираются использовать для проведения больших закупок, которые могут быть конвертированы в наличные деньги.
Аудит с трудом может быть применим к компьютерам. Регистрационная лента хорошо подходит для ревизии, потому что клерк не в силах изменить записи: операции последовательно напечатаны на едином рулоне бумаги, и невозможно добавить или удалить операцию, не вызвав подозрения. (Правда, есть некоторые способы: блокирование записи, имитация того, что закончились чернила, блокировка записи для отдельной операции, подделывание целой ленты и т. д.) С другой стороны, компьютерные файлы могут быть легко стерты или изменены; это делает аудиторскую проверку записей более сложной. Большинство проектировщиков систем не думают о ревизии, когда занимаются их разработкой. Вспомните заложенное изначально контрольно-ревизионное свойство двойной записи счетов бухгалтерского учета. Эта контрольная способность обречена на неудачу, когда обе книги хранятся в одной и той же компьютерной системе и один и тот же человек имеет доступ к обеим книгам. Но таким образом работают все бухгалтерские компьютерные программы.
Вернемся в старые времена (год 1995 или около того). В те дни каждый думал, что мы должны создать новый вид денег для обращения в электронной торговле. Много компаний прекратили свое существование в попытках выдумать новые деньги. Некоторые компании старались создать электронный эквивалент наличных денег, другие – электронный эквивалент чеков и кредитных карт. Одной из последних таких попыток стал объединенный протокол Visa/Master card, предназначенный для использования существующих кредитных карт совместно с особой интернет-системой, позволяющей сделать кредитные карты надежными для электронной коммерции.
Они как-то изворачиваются, но не в этом дело. Кредитные карты прекрасно подходят для Интернета, и очень многие с готовностью пользуются ими для покупки книг, одежды и всего прочего. Однако наличие таких брешей в защите, которые позволили осуществить кражи серийных номеров кредитных карт в 2000 году, впечатляет. Будет ли когда-нибудь создана специфическая для Интернета форма оплаты?
В большей степени это вопрос регулирования, чем безопасности. Для электронной торговли система безопасности должна быть разработана на основе синтеза всех рассмотренных выше требований: подтверждения подлинности, секретности, целостности, безотказности, аудита. Потребности достаточно просты: нам нужна возможность перемещать денежные массы по компьютерной сети. При пристальном рассмотрении обнаруживаются несколько путей для достижения этого. Мы можем взять любой из имеющихся вариантов оплаты: наличные деньги, чеки, дебиторские и кредиторские карты, кредитные бумаги и перенести их в киберпространство. Различные платежные средства подчиняются различным правилам и требованиям.
Некоторые требования зависят от того, какую ответственность кто несет. Торговцы и компании, обслуживающие операции по кредитным картам, несут ответственность по большинству долгов украденных кредитных карт и мошенническим сделкам с их использованием. По этой причине электронные версии для данных систем разрабатываются таким образом, чтобы облегчить жизнь именно им, а не потребителям.
Различные физические реализации также предполагают различные требования. Эта система сетевая или автономная? Все намного проще, если вы можете рассчитывать на сетевое соединение с банком (каковое требует банкомат). Если вы создаете торговую систему для использования в той части света, где недостаточно телефонных линий (как, например, в отдельных районах Африки), вы не можете принять этот вариант. Будет ли система работать в программной среде или мы можем рассчитывать на надежные аппаратные средства, подобные смарт-карте? И будет ли эта система предполагать анонимность, как в случае использования наличных денег, или включать опознавание, подобно системе кредитных карт? И наконец, какое правительственное регулирование будет осуществляться по отношению к этой системе? Это зависит не только от выбранных платежных средств, но также от постановлений правительства или правительств, имеющих власть над системой.
Мы уже можем наблюдать кое-что из этого. У нас пока нет цифровых наличных денег, но уже появляются альтернативные системы, которые выполняют ту же роль, что и деньги. Flooz com создал специализированную валюту для оплаты подарков. На нем выдаются подарочные сертификаты, которые могут быть использованы в качестве денег. Beenz com предпринимает нечто подобное; «beenz» не являются настоящими деньгами, но они могут использоваться и обращаться, как настоящие деньги. Другие компании тоже участвуют в этом процессе.
Я ожидаю, что это станет большим делом и, возможно, опасным. Причина в том, что псевдовалюты не могут играть той регулирующей роли в процессе товарооборота, которую играют реальные деньги.
Традиционно предотвращение мошенничества было упреждающим. Криминальные элементы находят изъян в торговой системе и пользуются им. Они продолжают идти вперед, в то время как проектировщики системы пытаются понять, как устранить недостатки или хотя бы свести к минимуму ущерб. Преступники изучают ситуации, когда их атаки не достигают цели, и продолжают атаковать другими способами. И процесс продолжается.
Вы можете проследить это на примере кредитных карт. Изначально подтверждение кредитных карт не осуществлялось через сеть. Торговцам предоставляли книги с недействительными номерами кредитных карт каждую неделю, и они должны были вручную проверять номер по книге. Сейчас подтверждение карты происходит по сети в режиме реального времени. Плохие люди воровали новые карты из почтовых ящиков; из-за этого компании, обслуживающие кредитные карты, стали требовать, чтобы вы звонили для активации своей карты. Сейчас карты и извещения об активации отправляются из различных точек. У компаний также есть разведывательные программы для контроля непредвиденных расходов. («Доброе утро, сэр, извините за беспокойство. Многие годы вы были хорошим клиентом. Мы хотим проверить, действительно ли вы внезапно переехали в Гонконг и полностью исчерпали свой кредит».)
Когда банкоматы впервые были введены Citicorp в 1971 году, клиент должен был помещать кредитную карту в прорезь и набирать свой идентификационный номер[17]. Машина проверяла его и выбрасывала карту обратно клиенту. После этого он мог закончить операцию. Предприимчивые нью-йоркские преступники переодевались в костюмы обслуживающего персонала и ждали недалеко от этой машины. После подтверждения идентификационного номера клиента они подходили и говорили, что банкомат сломан, проходит тестирование или в нем просто нет денег, и просили использовать соседний рядом. В конце концов, людям в таких костюмах можно доверять – так думали клиенты. После того как клиент уходил, они заканчивали первую операцию и клали в карман наличные деньги.
Карта должна была удерживаться до конца сделки, но это требовало реконструкции аппаратных средств. Банкам нужно было действовать быстро, и они нашли временное решение, которое могло быть введено в действие в банкоматах: было сделано так, чтобы расположенные рядом машины имели связь между собой. Поскольку банки применили это повсюду, то могли наблюдать, как преступники перемещались по всему городу в поисках машин, где уловка все еще срабатывала. Тогда они настроили банкомат так, чтобы он удерживал карту до конца сделки. Долгосрочное решение состояло в том, чтобы создать сеть с обратной связью, дающую уверенность в том, что в любой момент времени проводится только одна транзакция с использованием данной карты. Это было сделано, так что теперь не имеет значения, сколько времени карта удерживается машиной. Теперь многие банкоматы попросят вас просто предъявить свою карту, но раньше было очень много мошенничества, пока проблема не была определена.
Подобные способы фиксации недостатков в системах безопасности после того, как уже было осуществлено нападение, не подходят для Интернета. Атаки могут быть автоматизированными, они могут легко и быстро повторяться низкоквалифицированными нападающими. Нападение на банкоматы, адаптированное к Интернету, может разрушить банковскую систему. Недостаточно противодействовать мошенничеству после того, как оно было продемонстрировано в работе; мы должны быть предусмотрительны и бороться с обманом до того, как он произойдет.
Часть II
Технологии
Система безопасности, как луковица, состоит из слоев. На внешнем слое находятся пользователи, по-разному использующие систему, по-разному всем доверяющие и по-разному же реагирующие на баги системы. Внутри «луковицы» находятся связи, обеспечивающие безопасность взаимодействия пользователя с системой и контактов различных систем. Еще ближе к сердцевине расположены программные средства, наверняка содержащие ошибки; поэтому естественно ожидать, что для них у нас есть какие-то элементы защиты. Эти программы работают в сетях и на отдельных компьютерах. Двигаясь глубже, мы обнаружим теоретически идеальные протоколы обмена данными. И в самой сердцевине (иногда) располагается криптография: математические уравнения, описывающие условия безопасности.
Защита – это процесс, а не продукт. Он включает в себя большое количество компонентов. Как и в любом процессе, одни из них – более сильные, надежные, гибкие и безопасные, чем остальные. Кроме того, компоненты должны работать совместно. Чем лучше они совместимы, тем лучше идет весь процесс. Часто наименьшей надежностью обладают именно связи между компонентами.
Защита также похожа на цепь. Она состоит из многих звеньев, и для прочности цепи важно каждое из них. И, подобно цепи, надежность всей системы безопасности определяется надежностью самого слабого ее звена. В этой части книги мы коснемся различных технологий защиты, из которых состоит эта цепь, постепенно продвигаясь от сердцевины «луковицы» к внешним слоям.
И мы постараемся не злоупотреблять смешением плохо согласующихся между собой метафор.
Глава 6
Криптография
Криптография весьма загадочна. С одной стороны – это набор сложных математических выражений. Шифровальщики вечно изобретают сложные математические преобразования, а им вечно противостоят криптоаналитики, находя все более оригинальные способы нарушить работу этой математики. У шифрования длинная и славная история: с его помощью наперсники, любовники, тайные общества и правительства на века сохраняли свои секреты.
С другой стороны, криптография – это одна из основных технологий в киберпространстве. Она позволяет нам взять все те деловые и социальные структуры, с которыми мы привыкли иметь дело в физическом мире, и переместить их в киберпространство. Криптография – это технология, позволяющая нам обеспечить безопасность в киберпространстве и бороться с теми атаками и злоумышленниками, о которых шла речь в части I. Без криптографии никогда бы не смогла распространиться электронная торговля. Криптография не являет собой панацею, для полной надежности вам потребуется еще много всего другого, но она, несомненно, важна.
Для того чтобы понять, как обеспечивается безопасность в киберпространстве, вы должны уяснить, как устроена криптография. Вам не обязательно разбираться в математике, но придется освоить некоторые приемы ее применения. Следует иметь представление о том, что может криптография и, что еще важнее, чего она не может. Вы должны уметь рассматривать ее в контексте компьютерной и сетевой безопасности. Две следующие главы не превратят вас в шифровальщиков, а только научат грамотно пользоваться криптографией.
С точки зрения пользователя, криптография представляет собой туманный объект, выполняющий функции защиты, – вроде Бэтмана – нечто грозное, но справедливое и наделенное мистической силой. Если пользователь уделит ей немного внимания, криптография предстанет перед ним целым собранием акронимов, которые способны обеспечить решение самых различных задач безопасности. Например, IPsec защищает трафик в Интернете. С его помощью обеспечивается безопасность виртуальных частных сетей (VPN). Протокол SSL (Secure Sockets Layer) отвечает за безопасность соединений Всемирной Сети. Системы PGP (Pretty Good Privacy) и S/MIME гарантируют надежность электронной почты; они не дают прочитать сообщения никому, кроме адресата, и не допускают фальсификации авторства. Протокол SET защищает операции, проводящиеся в Интернете с использованием кредитных карт. Все вышеперечисленное – это протоколы. Существуют протоколы для защиты цифровой информации (музыки, фильмов и т. п.), для аутентификации сотовых телефонов (чтобы предотвратить мошенничество), для электронной торговли и для многого другого. Чтобы создать эти протоколы, шифровальщики используют различные алгоритмы: алгоритмы шифрования, цифровой подписи и т. д.
Исторически криптография использовалась с одной единственной целью: сохранить секрет. Даже сама письменность была своего рода шифрованием (в Древнем Китае только высшие слои общества могли обучаться чтению и письму), а первый опыт применения криптографии в Египте относится примерно к 1900 году до н. э.: автор надписи пользовался необычными иероглифами. Есть и другие примеры: дощечки из Месопотамии, на которых зашифрована формула изготовления керамической глазури (1500 год до н. э.), еврейский шифр ATBASH (500—600 годы до н. э.), греческое «небесное письмо» (486 год до н. э.) и шифр простой подстановки Юлия Цезаря (50-60 год до н. э.). Кама Сутра Ватсьяяны даже помещает искусство тайнописи на 44-е, а искусство секретного разговора на 45-е место в списке 64 искусств (йог), которыми должны владеть мужчины и женщины.
Основная идея, лежащая в основе криптографии, такова: группа людей может секретным способом записывать послания так, что они будут непонятны всем остальным. Пусть имеются сообщения (их еще называют открытым текстом), которые кто-то хочет сохранить в секрете. Представим, что кто-то (назовем ее Алиса) хочет послать сообщение кому-то другому (например, Бобу); а может, она хочет сама перечитать его через несколько дней. Но она точно не хочет, чтобы кто-нибудь другой, кроме Боба, смог этот текст прочесть.
Поэтому Алиса зашифровывает сообщение. Она придумывает какие-нибудь преобразования (их называют алгоритмом), превращающие открытый текст в зашифрованный. Такое зашифрованное сообщение кажется абсолютной абракадаброй, поэтому перехватчица (назовем ее Евой), в чьи руки оно попало, не может превратить его опять в открытый текст, а значит, не сумеет понять смысла сообщения. А Боб знает, как произвести обратное преобразование и превратить шифрограмму в открытый текст.
Такая схема более или менее работает. Алиса может при помощи изобретенного ею алгоритма зашифровать свой секрет глазури для керамики. Алиса и Боб могут договориться об алгоритме, чтобы поделиться друг с другом мыслями о Кама Сутре. Целый общественный класс – китайская знать (хотя, скорее всего, никого из них Бобом не звали) – использовал письменность, чтобы утаить от крестьян государственные тайны.
Но возникают определенные сложности. Во-первых, алгоритм должен быть надежным. Не надейтесь, что Ева посмотрит на зашифрованное сообщение, пожмет плечами и отступится. Она твердо намерена прочесть открытый текст. Если Ева – это правительство Великобритании времен Второй мировой войны, она наймет лучших математиков, лингвистов и шахматистов страны, запрет их и еще 10 000 человек в тайной резиденции в Блетчли Парк и создаст компьютер – только так она сможет взломать алгоритм и восстановить текст сообщения. Агентство национальной безопасности – единственный в своем роде крупнейший потребитель компьютерного оборудования и работодатель математиков. Алисе нужно быть очень ловким шифровальщиком, если ей предстоит перехитрить Еву такого уровня. Я еще расскажу об этом позже.
Во-вторых, сложно включать и исключать людей из группы избранных, которым известен алгоритм. Чтобы обмениваться тайными посланиями с китайским аристократом, вам придется научиться китайской грамоте. Это потребует времени. Если через какое-то время вы утратите расположение правительства, у последнего будет только один способ помешать вам читать все сообщения. Вы знаете, как осуществляется шифрование, и если правительство не хочет, чтобы вы читали его переписку и дальше, ему придется вас убить. (Во время Второй мировой войны американская армия использовала в качестве шифра язык навахо. Те, кто говорил на этом языке, сохранили секрет от японцев, но вся система могла бы рухнуть, если бы хоть один навахо перешел на вражескую сторону.)
Останься эти две проблемы неразрешенными, в наше время криптография могла бы стать почти бесполезной. Представьте, что вы, один из скольких-то там миллионов пользователей Интернета, хотите посекретничать с сотней своих лучших друзей. Вы хотите пользоваться не одним и тем же тайным языком для всех ста друзей, а использовать сто разных секретных алгоритмов. (Вам необходима попарная секретность. И того же желают остальные несколько миллионов пользователей Интернета.) Это означает, что вам придется создать эти 100 различных алгоритмов шифрования, обменяться ими с каждым из друзей, самостоятельно запрограммировать все алгоритмы в своем компьютере (вы ведь никому этого не доверите) и надеяться на то, что вы умнее тех, кто, возможно, попытается понять ваш алгоритм.
Очень маловероятно.
В этом прелесть ключа. Замок на вашей двери – это серийный продукт какой-то безликой компании, которую нисколько не заботит ценность вашей коллекции марочных вин, но вы и не должны им доверять. Они не говорят вам: «Помните, любой, у кого есть замок такой же марки, может открыть ваш замок». У вас есть ключ. Набор шпеньков в замке, соответствующий вашему ключу, отличает ваш замок от всех остальных замков в округе, несмотря на то что у них может быть та же модель. (На самом деле пример упрощен. Вы все же должны принять на веру, что они правильно собрали замок и не припасли запасных ключей. Но мы пока что не принимаем это во внимание.)
Дверной замок служит примером такой же модели защиты, какую в 1466 году привнес в криптографию Леон Баттиста Альберти, известный итальянский архитектор эпохи Возрождения, создав криптографический ключ. У кого угодно могут быть замки одинаковых моделей, но ключи у всех разные. Конструкция замка не является уникальной – у слесарей есть книги с подробными схемами, а большинство хороших моделей описаны в общедоступных патентах, – но ключ является тайной. У вас есть ключ, значит, вы можете отпереть дверь. Если вы одолжите ключ другу, то он сможет войти в дом. А тот, у кого ключа нет, останется на улице. (Слесарями в данном случае будут криптоаналитики; до них мы доберемся позднее.)
Применение такой модели в криптографии решает обе упомянутые выше проблемы. Алгоритмы, так же как и замки, можно стандартизировать. Стандарт шифрования данных (Data Encryption Standard, DES) – это общепринятый криптографический алгоритм, широко распространенный с 1977 года. Его использовали в тысячах различных программ для любых приложений. Самые сокровенные подробности устройства DES были опубликованы с первого дня его существования; их опубликовали даже до того, как этот алгоритм приняли в качестве стандарта. Доступность этого алгоритма не сказывается на безопасности, поскольку различные группы пользователей выбирают себе разные секретные ключи. Если Алиса и Боб пользуются одним ключом, значит, они могут общаться. Ева ключа не знает, следовательно, она не сможет прочесть их сообщения – даже если у нее есть точно такие же шифровальные программы, как у Алисы и Боба.
С помощью ключей решается задача включения и исключения людей из группы избранных. Если Алиса и Боб договорились о совместном использовании одного ключа и хотят, чтобы Ким Филби смог присоединиться к их общению, они просто дадут ему копию ключа. Если позже они решат, что Филби передает секреты Советскому Союзу, им нужно просто сменить ключ и не сообщать об этом Филби. С этого момента он исключен из системы и больше не сможет читать сообщения, зашифрованные новым ключом. (Увы, он все же может прочитать старые.)
Современная криптография традиционно устроена именно таким образом. Алгоритмы заменяют традиционные ручку и бумагу – они оперируют битами вместо символов алфавита, компьютеры оснащены эффективными микропроцессорами и интегральными схемами, – но философия остается прежней. Алгоритм доступен для всех, а общающиеся стороны договариваются о секретном ключе, который они применят для этого алгоритма.
Такие алгоритмы называют
Симметричные алгоритмы можно обнаружить в шифровальных системах всего компьютеризованного мира. Общепринятыми алгоритмами считают DES и тройной DES, RC4 и RC5, IDEA и Blowfish. Улучшенный стандарт шифрования (Advanced Encryption Standard, AES) вскоре станет стандартным алгоритмом шифрования правительства США[18]. При помощи этих алгоритмов обеспечивается безопасность частных сообщений электронной почты, индивидуальных файлов, электронных банковских операций и кодов запуска ракет с ядерными боеголовками. Эти алгоритмы препятствуют нарушению конфиденциальности.
Но они несовершенны.
Проблема в распределении ключей. Для того чтобы описанная система работала, Алиса и Боб должны договориться о секретном ключе перед тем, как получат возможность обменяться тайными сообщениями. Если они достаточно сообразительны, то будут регулярно менять ключ, скажем, раз в день. Им необходимо как-то тайно уславливаться об этих ежедневно изменяющихся ключах, так как, перехватив ключ, кто угодно сможет читать все сообщения, зашифрованные с его помощью. Кроме того, поскольку необходима попарная секретность, количество ключей будет возрастать пропорционально квадрату количества пользователей. Двум пользователям нужен только один ключ, но сеть из десяти пользователей требует 45 ключей[19], чтобы предоставить каждой паре возможность секретного общения. А сеть из 100 пользователей потребует 4950 различных ключей. В 80-х годах корабли Военно-Морского флота США отправлялись в плавание с полным набором ключей, предоставляемых Агентством национальной безопасности – каждый ключ был напечатан на бумажной ленте, перфокарте или на чем-нибудь еще; этого было достаточно для всех сеансов связи на все время выполнения задания. Но недостаточно только распространять ключи секретно: их нужно секретно хранить, секретно использовать, а затем секретно уничтожать. Алиса и Боб обязаны хранить свои ключи в тайне в течение всего времени, пока им необходимо общаться друг с другом и быть уверенными, что ни у кого больше нет их ключей. Секретность должна соблюдаться как до и во время использования ключа, так и впоследствии.
Это означает, что уничтожение ключей имеет большое значение. Алиса и Боб не могут просто выбросить свой ключ в корзину в конце работы и надеяться, что его никто не найдет. Перехватчики не пренебрегают хранением зашифрованных посланий, которых не способны прочесть, в надежде, что найдут к ним ключ через несколько дней. Агентство национальной безопасности получило возможность расшифровать русский трафик VENONA (вспомните эту историю; это действительно поучительно) только благодаря тому, что СССР повторно использовал ключ, который, должно быть, ранее выбросил, и тому, что АНБ хранило все эти советские шифрованные сообщения более 10 лет[20].
Есть множество исторических примеров, когда недостаточное внимание к обращению с ключами приводило к разгадке безупречного шифрования. Джон Уокер служил в военно-морском флоте США и был офицером безопасности, ответственным за обеспечение безопасности ключей, но одновременно он делал и другую карьеру, фотографируя ключи флота и отсылая фотографии русским. Японская секта поклонников смерти Аум Синрике зашифровала свои компьютерные записи, но она была настолько неосторожна, что оставили копии ключей на дискете, обнаруженной полицией. Это произошло в 1995 году: не кажется ли вам, что приверженцы культа смерти могли бы к тому времени кое-что знать о ключах.
Что означает «взломать» алгоритм? На первый взгляд очевидно – кто-то сможет прочитать сообщение, не имея ключа. Но на самом деле все сложнее.
Если злоумышленник просто берет зашифрованное сообщение и восстанавливает открытый текст, то такую атаку называют
С большей вероятностью можно встретить
Еще более действенной является
Все эти атаки объединяет то, что аналитикам известны детали алгоритма. (Единственным исключением, которое мне известно, сегодня является японский код PURPLE.) Это не просто ученый ярлык, а очень хороший механизм. Если в программах будут использовать какой-то алгоритм, то его «раскрутят» и в обратную сторону. Среди секретных когда-то алгоритмов, которые уже «раскрутили» – RC4, все алгоритмы шифрования цифровой сотовой связи, DVD– и DIVX-алгоритмы шифрования видеоизображений и алгоритм Firewire. Захватят и расшифруют даже алгоритмы, глубоко запрятанные в военном оборудовании. Примерами могут служить «Энигма» во Второй мировой войне[21] или почти все алгоритмы НАТО и Варшавского договора во времена холодной войны. (Мы их не знаем, но весьма компетентные военные занимались их расшифровкой.) Полезно предполагать, что врагу известны подробности вашего алгоритма, потому что в конечном итоге они все равно станут ему известны. Август Керхкофф первым сформулировал это положение в 1883 году: «В алгоритме нет никакой тайны, вся тайна в ключе».
В разговоре об атаках всегда возникает один вопрос: как криптоаналитик распознает открытый текст? Ответ прост: его легко узнать, потому что он выглядит как открытый текст. Это сообщение на английском языке или файл компьютерного приложения, изображение в формате JPEG или база данных в каком-нибудь приемлемом формате. Когда вы смотрите на расшифрованный файл, он похож на что-нибудь вам известное. Когда вы смотрите на зашифрованный файл или файл, расшифрованный с применением неправильного ключа, он выглядит как полная тарабарщина. Человек или компьютер могут понимать эту разницу.
В 1940-х годах Клод Шеннон ввел понятие
Например, алгоритм RC4 зашифровывает данные в байтах. Представьте себе одну единственную букву в ASCII-кодировке в качестве открытого текста. На 26 букв приходится 256 возможных вариантов кодирования. Любой случайный ключ, если использовать его для расшифровки этого текста (буквы), с вероятностью 26/256 даст верный открытый текст. У аналитика нет никакого средства, позволяющего отличить ошибочный открытый текст от правильного.
Представьте теперь сообщение электронной почты размером 1 Кбайт. Аналитик пытается применять случайные ключи, и в конечном счете возникает открытый текст, который выглядит как сообщение электронной почты: слова, фразы, предложения, грамматика. Вероятность того, что это неправильный открытый текст, бесконечно мала.
Для стандартного англоязычного сообщения расстояние уникальности равно К/6,8, где К – это длина ключа в битах. (6,8 – степень естественной избыточности английского языка. Для других открытых текстов она будет больше или меньше, но незначительно.) Для ASCII-кода, применяемого согласно стандарту DES, расстояние уникальности составляет 8,2 байт. Для 128-битового шифра это примерно 19 байт. Таким образом, для англоязычных сообщений, длина которых превышает 19 байт, расшифрованный текст, похожий на английский, с большой вероятностью будет истинным открытым текстом. Почти такое же значение расстояния единственности имеют файлы электронных таблиц, текстовых процессоров и баз данных. (На самом деле оно может быть намного меньше, потому что форматы файлов предполагают стандартное начало файла.) Для сжатых файлов расстояние уникальности могло бы быть в два-три раза больше (но опять-таки, стандартное начало может его существенно снизить).
Отсюда мораль: «Распознать открытый текст просто, и для этого не требуется большого количества информации».
Коды аутентификации сообщений (Message authentication codes или MACs) – это следующий базисный элемент, о котором мы поговорим. Они не обеспечивают секретность, но гарантируют аутентификацию и целостность. Они дают уверенность, что сообщение пришло именно от того человека, который обозначен как автор (это аутентификация), и что сообщение по пути не изменилось (а это целостность).