и мины, которые взрываются, если вы пытаетесь обезвредить их. Реализация идеи создания безопасной территории различна в каждом из этих случаев, но основная мысль такова: намного легче построить систему компьютерной безопасности, если некоторые части системы останутся недоступными для большинства людей. Для этого можно использовать изначально заложенные в устройства физические средства защиты.
И это правда. Легче сконструировать безопасную систему платы за парковку, если вы способны предположить, что мошенники не смогут использовать парковочные счетчики, чтобы набить себе карманы. Легче представить себе охрану библиотеки и предположить, что люди не смогут вынести из здания книги, спрятав их под пальто. И легче создать электронный бумажник, если у вас есть основания считать, что люди не смогут присвоить любое количество денег.
Рассмотрим совершенную безналичную денежную систему: каждый имеет при себе бумагу, на которой написано число, представляющее денежную сумму, которой он располагает. Когда кто-нибудь тратит деньги, он зачеркивает старое и пишет меньшее число. Когда он получает деньги, то поступает наоборот. Если каждый честен, система работает. Как только некто заметит, что он может написать на бумаге любое число, которое захочет, системе придет конец.
Однако это в точности та же самая система, которую до эпохи компьютеризации банки использовали для депозитных счетов. Когда кто-то кладет деньги на депозит, это отражается в банковской книге, хранящейся в специальном помещении банка, другая книга находится в распоряжении клиента[40]. В банковской книге записано число, соответствующее количеству денег, которые данное лицо хранит в банке. Если оно вносит или снимает деньги со счета, банк записывает новую сумму в обеих книгах. Эта система работает потому, что одна из книг находится в охраняемом помещении банка. Она и есть «настоящая» книга; книга, которая у вкладчика, – это только ее копия, выдаваемая для его спокойствия. Если вкладчик подделает запись в своей книге, это приведет к несоответствию с записью в книге, хранящейся в банке. Кассир в банке обнаружит эту неувязку, возможно, проверит другие записи, чтобы удостовериться, что действительно была предпринята попытка мошенничества, и поступит соответственно обстоятельствам. Клиент не может изменить записи в книге, хранящейся в банке, поскольку не вправе проникнуть на охраняемую территорию. (Кассир, конечно, имеет гораздо больше возможностей совершить мошенничество.)
Этот пример показывает, насколько важно создать безопасную территорию: система безопасности не будет работать без нее.
Мы можем построить систему анонимных карточек для оплаты таким же образом. Клиенты носят смарт-карты в своих бумажниках. Смарт-карта содержит в памяти информацию о количестве долларов на счете, точно так же, как банковская книга. Смарт-карты могут взаимодействовать друг с другом через некий терминал пункта продажи. Когда клиент что-нибудь покупает, его смарт-карта вычитает сумму потраченных денег из количества, которое хранилось в памяти, и записывает в память новую, меньшую сумму. Когда торговец продает что-нибудь, его смарт-карта прибавляет стоимость товара к числу, хранящемуся в памяти. Такая операция может осуществляться только одновременно с обеими картами (это легко контролировать с помощью секретных ключей смарт-карт), так что всегда сохраняется баланс. И чтобы воспрепятствовать кому бы то ни было проникнуть внутрь смарт-карты и изменить баланс, карты должны быть защищены от вторжения.
Легко ли это? Безопасная территория находится внутри карты – там хранятся ее секреты, и посторонние не могут их узнать – это сразу отметает множество проблем. Без этого единственный способ заставить подобную систему работать – это использовать нудные процедуры обращения к базам данных.
Чеки работают так же, как в первом примере, о котором я говорил: представим себе, что некто хранит в своем бумажнике документ, в котором представлен баланс на его текущем счете. Он может выписать чеки на любую произвольную сумму: ничто не вынуждает его выписывать чек на сумму меньшую, чем находится на счете. Торговцы часто принимают такие чеки на веру; они не могут знать, действительно ли данная персона имеет на счете сумму, покрывающую этот чек. Но так как здесь нет безопасной территории, которая бы вынуждала людей быть честными, существует сложная межбанковская система проверки чеков. Продавец вносит чек на депозит, но не может получить деньги сразу. Банк продавца использует идентификационную информацию на чеке – номер счета, имя банка и т. д., чтобы выяснить, с какого счета должны быть переведены деньги. Затем он обращается в банк покупателя и требует произвести платеж. Банк покупателя проверяет его личный счет. Он снимает деньги со счета клиента и переводит их в банк продавца. Наконец, деньги поступают на его счет.
Конечно, реальная система проверки чеков работает не совсем так – она оптимизирована для большей скорости и эффективности, – но основная ее идея именно такова. Нельзя рассчитывать, что владельцы счетов не станут выписывать негодные чеки, так что банки вынуждают людей быть честными.
Системы защиты от вторжения должны были бы помочь решить множество проблем компьютерной безопасности. Подумайте, насколько легче обеспечить защиту от копирования на вашем компьютере, если на нем находится процессор, снабженный такой системой, понимающей только зашифрованные команды. Или насколько легче было бы сконструировать систему условного депонирования ключей (см. главу 16), если бы аппаратные средства систем защиты от вторжения сигнализировали полиции о необходимости прослушивания. С аппаратными средствами систем защиты можно было бы реализовать в Интернете «счетчик», который фиксировал бы доступ к данным, подобно тому как электрический счетчик фиксирует количество использованной энергии.
Вообще говоря, аппаратные средства систем защиты от вторжения идеальны для сложных отношений доверия, когда одна сторона хочет передать в руки другой некий механизм безопасности и при этом иметь уверенность в том, что другая сторона не сможет изменить этот механизм. Например, когда банк хочет контролировать баланс счетов на устройстве, находящемся в руках его клиентов. Или когда полиция хочет хранить копни ключей шифрования, с тем чтобы иметь возможность прослушивать частные разговоры, даже когда люди используют механизмы шифрования. Или для дешифратора кабельного телевидения.
Основная проблема заключается в том, что таких средств защиты от вторжения не существует. Вы не можете создать механизм, в который невозможно проникнуть. Возможно даже, что вы и сделаете устройство, в которое невозможно проникнуть на данном уровне технологии. Но вы не можете создать устройство абсолютно защищенное.
Я мог бы посвятить целую книгу деталям, но они меняются так часто, что это было бы бесполезно. Достаточно сказать, что есть несколько закрытых лабораторий в Соединенных Штатах, в которых могут разрушить любую технологию систем защиты от вторжения. Гораздо больше лабораторий в различных корпорациях могут работать над разрушением сопротивления вторжению, хотя бы они и были созданы для других целей. Лаборатории разведывательного управления, разрабатывающие микросхемы, например, имеют оборудование, которое может быть использовано в основном для изучения микросхем систем защиты от вторжения, имеющихся на рынке.
В соответствии с этими реалиями, многие компании определяют название своих технологий как сопротивление вторжению, которое есть нечто подобное «защите от почти любого вторжения». Я думаю, это разумно: письмо, запечатанное в конверте, может рассматриваться как один из примеров сопротивления вторжению, хотя ЦРУ и другие подобные учреждения имеют потрясающий опыт вскрытия почты.
Проблемы с системами защиты от вторжения выявляются, когда происходит сопротивление реальному вторжению. Представьте себе, что вы создаете систему торговли, основанную на смарт-картах, которая использует в целях безопасности микросхему, обеспечивающую сопротивление вторжению. И это анонимная система, так что сопротивление вторжению – это вся защита, которую вы можете противопоставить широко распространенным подделкам. Насколько сильное сопротивление вторжению вам необходимо? Как вы определите, что защита вполне достаточна? Что вы будете делать, когда появятся новые технологии?
Определяя, насколько серьезное сопротивление вторжению вам необходимо, надо выдвигать выполнимые требования. Вероятно, вы сможете оценить величину возможного ущерба: сколько денег сумеет подделать тот, кто взломает систему сопротивления. Если вы сконструировали хорошую систему, ожидаемо, что вы можете ограничить количество денег, которые могут быть украдены с одной смарт-карты, скажем, сотней долларов. Следующая задача более трудная: как вы узнаете, что обеспечили такие меры по сопротивлению вторжению, что взлом системы обойдется дороже 100 долларов?
На самом деле никто не знает, насколько эффективны различные меры по сопротивлению вторжению. Конечно, в лаборатории скажут вам, сколько времени они потратили, взламывая систему, или сколько стоит оборудование, которое они при этом использовали, но некто в лаборатории на другом конце города способен воспользоваться другой техникой и получить совершенно другую картину. И помните об атаках ради огласки: некий студент последнего курса может позаимствовать оборудование и взломать вашу систему сопротивления вторжению просто шутки ради. А может быть, представители криминальных кругов купят необходимое оборудование и наймут квалифицированных взломщиков. Все это не имеет прямого отношения к простой оценке времени и денег, необходимых для осуществления атаки «в лоб» против имеющегося алгоритма шифрования.
И даже если возможно выяснить, насколько эффективна сегодня техника, отвечающая за сопротивление вторжению, вы ничего не можете сказать о том, насколько эффективна она будет завтра, или на следующий год, или через пять лет. Новые достижения в этой сфере появляются все время. Прогресс в этой области происходит от разнообразия технологий; они могут взаимодействовать неожиданным образом. То, что было трудно взломать в этом году, возможно, будет очень просто взломать в следующем. Наивно полагать, что сопротивление вторжению обеспечивает сколько-нибудь долговременную безопасность.