Мощные, грамотно построенные криптографические системы способны на многое, но нельзя считать их панацеей. Пользователи, уделяющие слишком много внимания алгоритмам шифрования в ущерб другим методам обеспечения безопасности, похожи на людей, которые вместо того, чтобы обнести свои владения высоким забором, перегораживают дорогу массивными воротами, нисколько не задумываясь о том, что злоумышленникам не составит труда сделать шаг в сторону и обойти сей "неприступный бастион".
В популярных журналах классификация продуктов шифрования проводится, как правило, по алгоритму и длине ключа. Обзоры печатаются под броскими заголовками. Описание особенностей того или иного продукта и его сравнение с конкурирующими предложениями легко укладывается буквально в несколько слов. Наверняка каждому из вас доводилось встречать утверждения типа: "128-разрядные ключи обеспечивают надежную защиту, в то время как 40-разрядные вскрываются довольно легко", "алгоритм triple-DES гораздо надежнее в сравнении с обычным алгоритмом DES" или даже "шифрование RSA с 2048-разрядным ключом лучше RSA с 1024-разрядным ключом".
Однако в криптографии не все так просто — более длинные ключи отнюдь не гарантируют повышенной безопасности.
Давайте попробуем сравнить алгоритмы шифрования с замком от входной двери. Во многих дверных замках установлено четыре металлических шипа, каждый из которых может находиться в одном из десяти положений. Если ключ соответствует конфигурации замка, запор открывается. Таким образом, конструкция каждого однотипного замка предусматривает 10 000 различных комбинаций. Следовательно, для того, чтобы проникнуть в дом, взломщик должен перепробовать до 10 000 ключей.
Замки усовершенствованной конструкции имеют уже 10 шипов (10 млрд. комбинаций), но это вовсе не значит, что за безопасность своего жилища теперь можно не беспокоиться. Совершенно очевидно, что взломщики не станут последовательно подбирать все возможные ключи (это было бы слишком примитивно): они достаточно умны, для того чтобы проникнуть в дом иным способом (в данном случае напрашивается аналогия с криптографической атакой). Гораздо проще и эффективнее разбить окно, выломать дверь или переодеться в форму полицейского и приставить ствол пистолета к голове ничего не подозревающего хозяина. Один из грабителей в Калифорнии, недолго думая, распилил стену дома бензопилой. Понятно, что от таких действий не спасут даже самые лучшие замки.
Мощные, грамотно построенные криптографические системы способны на многое, но нельзя считать их панацеей от всех бед. Пользователи, уделяющие слишком много внимания алгоритмам шифрования в ущерб другим методам обеспечения безопасности, похожи на людей, которые вместо того, чтобы обнести свои владения высоким забором, перегораживают дорогу массивными воротами, нисколько не задумываясь о том, что злоумышленникам не составит труда сделать шаг в сторону и обойти сей "неприступный бастион". Квалифицированные взломщики просочатся даже через самую незаметную брешь.
Компания Counterpane Systems вот уже в течение многих лет занимается созданием, анализом и взломом систем шифрования. Мы исследуем алгоритмы или протоколы, спецификации которых опубликованы в открытой печати; большая часть работы связана с изучением особенностей конкретных продуктов. Нам довелось проектировать и анализировать средства, защищающие частную тайну, гарантирующие конфиденциальность, отстаивающие справедливость и обеспечивающие функционирование систем электронной торговли. Мы работали с самыми различными программными пакетами, автономными аппаратными средствами и аппаратно-программными решения. Нам прекрасно известны слабые места алгоритмов шифрования, но почти всегда мы находили более элегантные способы обхода систем безопасности.
Атаки на архитектуру
Криптографическая система не может быть надежнее использованных в ней отдельных алгоритмов шифрования. Иными словами, для того чтобы преодолеть систему защиты, достаточно взломать любой из ее компонентов. Использование хороших строительных материалов еще не является гарантией прочности здания. Так и криптографическая система, построенная на основе мощных алгоритмов и протоколов, тоже может оказаться слабой.
Многие системы "теряют гарантию" безопасности, если используются неправильно. Скажем, проверка допустимости значений переменных не выполняется, "случайные" параметры используются многократно, что совершенно недопустимо. Алгоритмы шифрования необязательно обеспечивают целостность данных. Протоколы обмена ключами необязательно гарантируют, что обе стороны получат один и тот же ключ.
Некоторые системы шифрования, использующие связанные ключи, могут быть взломаны, даже если каждый ключ в отдельности надежен. Чтобы обеспечить безопасность, недостаточно просто реализовать алгоритм и ждать, что все будет работать. Даже наличие квалифицированных инженеров, помощь известных компаний и упорный труд не могут гарантировать абсолютной надежности. Бреши, обнаруженные в алгоритмах шифрования систем сотовой связи стандартов CDMA и GSM, а также в протоколе Microsoft Point-to-Point Tunneling Protocol (PPTP), наглядно это иллюстрируют. К примеру, в достаточно надежном алгоритме RC4, на котором построен протокол PPTP, нам удалось обнаружить режим, который делал защиту абсолютно прозрачной.
Еще одно слабое место криптографических средств - генераторы случайных чисел. Разработать хороший генератор случайных чисел непросто, поскольку он часто зависит от особенностей аппаратного и программного обеспечения [1,2]. Сама система шифрования может быть выполнена на высоком уровне, но если генератор случайных чисел выдает легко угадываемые ключи, то все оставшиеся барьеры преодолеваются без особого труда. В ряде продуктов используются генераторы случайных чисел, вырабатывающие ключи, в которых прослеживается определенная закономерность. В таких случаях о безопасности говорить не приходится. Интересно, что применение одного и того же генератора в некоторых областях обеспечивает требуемую степень безопасности, а в других - нет.
Еще одно возможное слабое место - взаимодействие между по отдельности безопасными протоколами шифрования [3]. Почти для каждого безопасного протокола, как правило, можно найти другой, не менее надежный, который сведет на нет все достоинства первого, если они оба используют одинаковые ключи на одном и том же устройстве. Если различные стандарты защиты применяются в одной среде, недостаточно четкое взаимодействие между ними зачастую может привести к весьма нежелательным последствиям.
Атаки на конкретные реализации
Многие системы подводят из-за ошибок в реализации. Некоторые продукты не гарантируют, что, зашифровав текст, они уничтожат оригинал. В других для предупреждения потери информации в случае системного сбоя используются временные файлы, а доступная оперативная память расширяется за счет памяти виртуальной; в этом случае на жестком диске могут оставаться отдельные фрагменты незашифрованного текста.
Переполнение буферов, не стертая до конца секретная информация, недостаточно надежная система обнаружения и восстановления после ошибок - все это примеры брешей в конкретных реализациях, через которые очень часто и проникают злоумышленники. В наиболее вопиющих случаях операционная система даже оставляет ключи на жестком диске. В одном из продуктов крупной софтверной компании ввод пароля осуществлялся через специальное окно. При этом пароль сохранялся в буфере окна и после его закрытия. Проводить дальнейшие исследования защищенности системы уже не имело смысла. Мы проникли в нее через пользовательский интерфейс.
Слабые стороны других продуктов не так явно бросались в глаза. Иногда одни и те же данные шифровались при помощи двух ключей: первый из них был надежным, а второй подбирался достаточно легко; но при этом эксперименты с уже подобранным ключом помогал подобрать и другой. В других системах применялись мастер-ключи и ключи "на один сеанс"; причем безопасности главного ключа уделялось недостаточное внимание, а основные надежды возлагались на одноразовые ключи. Для создания по-настоящему надежной системы безопасности необходимо полностью исключить возможность анализа строения ключей, а не ограничиваться лишь самыми очевидными мерами предосторожности.
Создатели систем электронной коммерции часто вынуждены идти на компромисс ради расширения функциональности. И поскольку разработчики предпочитают жертвовать безопасностью, в защите то и дело появляются дыры. Сверка учетных записей, к примеру, может проводиться только раз в день, но за несколько часов взломщик способен нанести поистине колоссальный ущерб! Перегрузка процедуры идентификации может привести к тому, что личность атакующего не будет распознана. Некоторые системы заносят сомнительные ключи в "черные списки"; получение доступа к этим спискам существенно облегчает задачу взломщика. Многие системы защиты преодолеваются после повторных атак и использования старых сообщений или их частей, сбивающих систему с толку.
Потенциальная опасность заложена в возможности восстановления ранее использовавшихся ключей в системах с расщеплением [4]. В хороших криптографических системах срок жизни ключей ограничивается максимально коротким промежутком времени. Процедура восстановления позволяет продлить жизнь ключа уже после того, как от него отказались. Используемые для восстановления ключей базы данных сами по себе являются источником опасности, и их архитектура должна быть выверена с особой тщательностью. В ряде случаев бреши в них позволяли взломщикам маскироваться под легальных пользователей.
Атаки на оборудование
Некоторые системы (чаще всего коммерческого назначения) имеют так называемое "кольцо безопасности", состоящее из аппаратных средств повышенной устойчивостью к взломам (смарт-карт, электронных бумажников, электронных ключей и т.д.) [5,6]. Создатели подобных систем исходят из предположения, что архитектура системы внутри этого кольца надежно защищена от несанкционированного доступа. Надежность оборудования - очень важная составляющая комплексных систем безопасности, но не стоит полностью доверять решениям, защищающим только от воровства и неумелого обращения.
Большинство подобных технологий на практике не работают, а инструменты для их взлома непрерывно совершенствуются [5,6]. При проектировании подобных систем очень важно не забывать о дополнительных механизмах защиты, которые должны срабатывать, если взломщикам удастся преодолеть первые оборонительные редуты. Нужно постараться максимально осложнить задачу противника и сделать ее решение невыгодным с экономической точки зрения. Стоимость защищаемых данных должна быть значительно ниже затрат на разрушение системы безопасности. Ценность электронного проездного не может идти ни в какое сравнение со стоимостью портфеля ценных бумаг. Исходя из этого и следует проектировать средства защиты.
В 1995 году значительно возросло число "атак по расписанию": выяснилось, что секретные ключи RSA можно восстанавливать, измеряя временные интервалы между операциями шифрования [7]. Был зарегистрирован ряд случаев успешного взлома смарт-карт, а также серверов электронной коммерции в Internet. Обнаружилось, что атаки строились на основе измерения потребляемой мощности, анализа электромагнитного излучения и других побочных источников информации. Специалистам по криптографии удалось по этим признакам реконструировать логику многих систем с открытыми ключами, продемонстрировав их ненадежность.
Большую популярность приобрел метод анализа сбоев, позволяющий находить слабые места криптопроцессоров и восстанавливать секретные ключи. Подобные методы по своему духу скорее биологические. Криптографические системы в этом случае рассматриваются как сложные объекты, которые реагируют на внешние раздражители. Их нельзя четко описать с помощью математических уравнений, но последствия таких атак разрушительны.
Атаки на модели доверительных отношений
Многие интересные способы преодоления защитных рубежей связаны с моделями доверительных отношений внутри системы. Прежде всего, следует выявить связи между отдельными компонентами системы, уяснить ограничения и механизм реализации схемы доверительных отношений. Простые системы (средства шифрования телефонных переговоров и информации на жестких дисках) используют элементарные доверительные модели. Комплексные системы (средства электронной торговли или средства защиты многопользовательских пакетов электронной почты) построены на основе сложных (и гораздо более надежных) моделей доверительных отношений, описывающих взаимосвязи множества элементов.
В программе электронной почты может использоваться супернадежный алгоритм шифрования сообщений, но если ключи не сертифицированы источником, заслуживающим доверия, и сертификация эта не может быть подтверждена в реальном времени, безопасность системы остается под вопросом. Некоторые торговые системы могут быть вскрыты по соглашению продавца с покупателем или в результате объединенных усилий нескольких клиентов. В других системах предусмотрено наличие средств обеспечения безопасности, но качество этих средств никто никогда не проверял. Если модель доверительных отношений не документирована, то в процессе развертывания в продукт можно случайно внести какие-либо недопустимые изменения, после чего стройность системы безопасности будет нарушена.
Многие программные пакеты слишком доверяются защищенности аппаратных средств. Предполагается, что компьютер абсолютно безопасен. Рано или поздно в такую программу проникает "троянский конь", который подбирает пароли, считывает незашифрованный текст или каким-то иным образом вмешивается в работу системы защиты. Разработчикам систем, функционирующих в компьютерных сетях, следует побеспокоиться о безопасности сетевых протоколов. Уязвимость компьютеров, подключенных к Internet, многократно возрастает.
Система шифрования, которая преодолевается "со стороны сети", никуда не годится. Не существует программ, безопасность которых выстояла после того, как противнику удалось применить обратное проектирование. Очень часто система проектируется в расчете на одну модель доверительных отношений, а в практической реализации фигурирует совсем другая. Принятые в процессе проектирования решения полностью игнорируются после передачи готового продукта пользователям. Система, которая абсолютно безопасна, когда ее операторы заслуживают доверия, а доступ к компьютерам полностью контролируется, теряет все свои преимущества, если обязанности операторов выполняют низкооплачиваемые работники, нанятые на короткий срок, а физический контроль за компьютерами утрачен.
Впрочем, хорошие модели доверительных отношений продолжают работать даже в том случае, если отдельные компоненты подводят.
Атаки на пользователей
Даже если система гарантирует надежную защиту при правильной эксплуатации, пользователи могут случайно нарушить ее, особенно если система спроектирована недостаточно хорошо [8]. Классическим примером является сотрудник, предоставляющий свой пароль коллегам с тем, чтобы они имели возможность решать неотложные задачи во время его отсутствия. Атака с учетом "человеческого фактора" зачастую оказывается куда более эффективной, чем месяцы кропотливого анализа алгоритмов [9].
Пользователи могут в течение нескольких дней не сообщать об утере смарт-карты. Они не уделяют требуемого внимания проверке электронной подписи. Секретные пароли порой повторно используются в несекретных системах. Клиенты даже не пытаются ликвидировать слабые места в системе безопасности. Конечно, даже хорошие системы не в состоянии ликвидировать последствия причин социального свойства, но они могут свести их к минимуму.
Многие продукты взламываются потому, что их защита построена на основе паролей, генерируемых пользователями. Предоставленные сами себе люди не задумываются о том, как выбрать необычную последовательность символов. Ведь пароль, который невозможно подобрать, не так просто запомнить. Если в качестве секретного ключа применяется такой пароль, то подобрать его, как правило, удается гораздо проще и быстрее, чем используя метод грубой силы.
Многие пользовательские интерфейсы еще больше облегчают задачу взломщика, ограничивая длину пароля 8 знаками, преобразуя вводимую последовательность в символы нижнего регистра и т.д. Даже пароли-фразы не обеспечивают требуемой степени безопасности. Злоумышленнику намного легче подобрать фразу из 40 букв, чем перебирать все возможные последовательности 64-разрядных случайных ключей. Иногда защита, в которой применяются очень надежный механизм ключи сеансов, разрушается из-за использования слабых паролей, предназначенных для восстановления ключей. Желание облегчить восстановление системы после сбоя фактически открывает перед атакующими черный ход.
Атака на средства восстановления после сбоев
Разработчики надежных систем не в состоянии заделать в заборе безопасности все мельчайшие щели, но по крайней мере зияющие дыры они ликвидируют. Восстановление ключа к одному файлу не позволит взломщику считать всю информацию, находящуюся на жестком диске. Изготовление фальшивых денег - очень серьезное преступление, ведь обладатель технологии печатания денег может уничтожить национальную валюту. Хакер, взламывающий смарт-карту, изучает секреты данного конкретного устройства, а не всех остальных смарт-карт, входящих в систему. В многопользовательских системах знание секретов одного человека не должно открывать доступа к информации других.
Многие системы по умолчанию устанавливаются в режим с отключенными средствами безопасности. Если система защиты "заедает", пользователь просто отключает ее и продолжает заниматься своим делом. Такое поведение делает особенно эффективными атаки типа denial-of-service ("отказ в обслуживании"). Если онлайновая система авторизации кредитных карт отключена, продавец вынужден довольствоваться значительно менее надежной бумажной технологией.
Иногда у взломщиков появляется возможность воспользоваться обратной совместимостью различных версий программного обеспечения. Как правило, в каждом новом варианте продукта разработчики стараются устранить бреши, имевшиеся в старом. Но требование обратной совместимости позволяет атакующему применять протокол старой, незащищенной версии.
Некоторые системы не имеют средств восстановления. Если защита разрушена, вернуть программу в работоспособное состояние не представляется возможным. Выход из строя системы электронной торговли, к которой обращаются миллионы клиентов, грозит обернуться катастрофой. Поэтому подобные системы должны иметь средства организации противодействия атакующим и поддерживать возможность обновления системы безопасности без остановки программы.
Хорошо продуманная система сама знает, как лучше противостоять атаке и что следует делать для устранения повреждений и оперативного восстановления работоспособности.
Атака на средства шифрования
Иногда слабые места можно найти и непосредственно в системе шифрования. Некоторые продукты создаются на базе не слишком удачных алгоритмов собственной разработки. Как правило, вскрыть известные алгоритмы шифрования удается лишь в исключительных случаях. Если же разработчик делает ставку на собственные методы, шансы взломщиков повышаются многократно. Незнание секрета алгоритма не является особым препятствием. Квалифицированному специалисту достаточно пары дней, чтобы по объектному коду восстановить исходный алгоритм шифрования.
Надежность стандартной для электронной почты архитектуры S/MIME 2 не в состоянии компенсировать слабостей алгоритма шифрования. И без того не слишком надежная защита GSM от слабого алгоритма шифрования проигрывает еще больше. Во многих системах используются слишком короткие ключи [10].
Можно привести множество других примеров ошибок в системах шифрования: программы повторно генерируют "уникальные" случайные значения, алгоритмы цифровой подписи не в состоянии обеспечить контроль за передаваемыми параметрами, хэш-функции открывают то, что должны защищать. В протоколы шифрования вносятся не предусмотренные разработчиками изменения. Пользователи любят "оптимизировать" имеющиеся средства, доводя их до столь примитивного уровня, что вся система защиты рушится, как карточный домик.
Предупреждение, а не выявление
Средства шифрования снижают вероятность того, что пользователи станут жертвами обмана, мошенничества, некорректных действий и т.д. Но архитектуру безопасности нельзя ограничивать столь узкими рамками.
Надежная система должна самостоятельно обнаруживать несанкционированные операции и ликвидировать нежелательные последствия атаки. Один из основных принципов проектирования подобных систем заключается в знании того, что рано или поздно атаки противника увенчаются успехом. Скорее всего, удар будет нанесен в самом неожиданном направлении, с использованием неизвестных разработчикам методов. Очень важно своевременно распознать такое нападение и принять все необходимые меры к тому, чтобы минимизировать ущерб.
Еще важнее как можно быстрее восстановить работоспособность поврежденной в ходе атаки системы. Необходимо сгенерировать новые пары ключей, заменить протокол, прекратить использование раскрытых противником средств, исключить из системы узлы, к которым взломщику удалось получить доступ, и т.д. К сожалению, многие продукты не занимаются сбором нужной информации, не контролируют ситуацию и не в состоянии надежно защитить данные от изменений.
В журнале регистрации должны отражаться все события, позволяющие установить факт нападения. В случае необходимости должны быть представлены неопровержимые доказательства, способные убедить судей и присяжных в виновности злоумышленника.
Разработчики систем безопасности должны следовать наставлениям таких авторитетов, как прусский генерал Карл фон Клаузевитц, утверждавший, что хорошие оборонительные средства должны отражать любые удары, даже те, о которых на сегодняшний день еще ничего не известно.
Атакующим, напротив, достаточно найти одну единственную брешь, и вся система защиты будет ликвидирована. Они прибегают к самым разнообразным уловкам. Взломщики не гнушаются участвовать в заговорах, тщательно маскируют свои противоправные действия и готовы в течение достаточно продолжительного времени ждать появления необходимых средств. В их арсенале всегда найдется идея, позволяющая нанести неожиданный для разработчиков удар.
Нет ничего проще, чем оградить свою информацию шатким, непрочным барьером с зияющими в нем дырами. Построить же непроницаемую систему защиты очень сложно. К сожалению, многие пользователи не видят разницы. В других областях анализ функциональных возможностей позволяет без труда отличить качественные продукты от наспех построенных систем. Достоинства хорошего кодека видны невооруженным глазом, плохой же выглядит значительно слабее и не поддерживает тех функций, которые доступны его конкурентам.
В криптографии все по-другому. Тот факт, что программы шифрования работают, еще не позволяет говорить о надежной защите. Как создается большинство продуктов? Разработчики читают Applied Cryptography, выбирают приглянувшийся им алгоритм и протокол, тестируют его, и вот уже проект готов. На самом деле все не так просто.
Функциональность и высокое качество не являются синонимами, и даже бесконечное тестирование не позволяет устранить всех брешей в системе защиты. Нужно хорошо разбираться в тонкостях терминологии: даже продукты, обладающие абсолютно надежными средствами шифрования, зачастую не могут гарантировать пользователям полной безопасности.
Bruce Schneier, Cryptographic Design Vulnerabilities, IEEE Computer, September 1998, pp. 29-33. Reprinted with permission, Copyright IEEE CS. All rights reserved.
Брюс Шнайер (www.counterpane.com) — президент компании Counterpane Systems, оказывающей консультационные услуги по вопросам шифрования и построения систем компьютерной безопасности. Автор книги "Прикладная криптография" (Applied Cryptography, John Wiley & Sons, 1995) и создатель алгоритма шифрования Blowfish and Twofish.
Литература
1. P.Gutmann, "Software Generation of Random Numbers for Cryptographic Purposes", Proc. 1998 Usenic Security Symp., Usenix Assoc., Berkeley, Calif., 1998, pp. 243-257.
2. J.Kelsey, B.Schneier, and D.Wagner, "Protocol Interactions and the Chosen Protocol Attack", Security Protocols, 5th Int'l Workshop, Springer-Verlag, New York, 1996, pp. 91-104.
3. C.Hall et al., "Side-Channel Cryptanalysis of Product Ciphers", Proc. ESORISC 98, Springer-Verlag, New York, 1998.
4. H.Abelson et al., "The Riscs of Key Recovery, Key Escrow and Trusted Third-Party Encryption", World Wide Web J., No. 3, 1997, pp. 241-257.
5. R.Anderson and M.Kuhn, "Tamper Resistance: A Cautionary Note", Proc. Second Usenix Workshop Electronic Commerce, Usenix Assoc., Berkeley, Calif., 1996, pp. 1-11.
6. J.McCormac, European Scrambling Systems, Baylin Publications, Boulder, Colo., 1997.
7. P.Kocher, "Timing Attacks on Implementations of Diffie-Hellman, RSA, DDS and Other Systems", Proc. Crypto 96, Springer-Verlag, New York, 1996, pp. 104-113.
8. R.Anderson, "Why Cryptosystems Fail", Comm. ACM, Nov. 1994, pp. 32-40.
9. I.Winkler Corporate Espionage, Prima Publishing, Placer County, Calif., 1997.
10. M.Blaze et al., "Minimal Key Lengths for Symmetric Ciphers to Provide Adequate Commercial Security", Oct. 1996.
Глобальная инфраструктура открытых ключей
Эндрю Ксингер, Кенг СяуДо тех пор, пока вы не вольетесь в глобальную инфраструктуру систем шифрования с открытым ключом (GPKI, global public key infrastructure), вас не будут считать полноправным членом глобального электронного сообщества.
Открытые и секретные ключи
В алгоритмах шифрования с открытым ключом используются две разновидности ключей -открытые и секретные. Между ними существует определенная математическая зависимость, выражающаяся в том, что сообщение, зашифрованное одним ключом, может быть декодировано только при наличии другого. Определить значение одного ключа, зная другой, крайне сложно (а порой и просто невозможно).
Открытые ключи часто являются шифрующими. Чтобы отправить Джеку сообщение (при условии, что прочитать его сможет только Джек), Джилл должна иметь под рукой открытый ключ Джека. Получив сообщение, Джек может расшифровать его при помощи своего секретного ключа. В свою очередь Джек, отправляя электронное послание, шифрует его с помощью открытого ключа Джилл, а Джилл декодирует поступившую информацию своим секретным ключом.
Таким образом, шифрование с открытым ключом гарантирует конфиденциальность.
Дайджесты
Чтобы получатель мог убедиться в подлинности полученного сообщения, отправитель ставит на нем свою электронную подпись. Сначала пользователь при помощи математической хэш-функции получает уникальный отпечаток (дайджест) сообщения. После шифрования дайджеста секретным ключом создается сигнатура, которая отправляется вместе с сообщением. Получатель декодирует сообщение и восстанавливает дайджест с помощью той же хэш-функции. Декодирование сигнатуры открытым ключом отправителя помогает воссоздать прежний образ дайджеста. Если дайджесты совпадают, получатель может быть уверен в том, что сообщение действительно было отправлено тем человеком, который поставил на нем свою электронную подпись, и не подвергалось в пути никаким изменениям.
Таким образом, технология шифрования с открытым ключом обеспечивает целостность и достоверность информации. Кроме того, впоследствии отправитель уже не сможет отрицать факт пересылки данного сообщения.
Сертификаты открытых ключей
Сертификат открытого ключа - это цифровой документ, позволяющий однозначно идентифицировать пользователя с открытым ключом. Сертификаты предназначены, для того чтобы удостоверить подлинность цифровых документов и гарантировать доставку сообщения только тем людям, которым оно адресовано. Как и цифровые подписи, сертификаты используются в качестве своеобразного персонального кода.
Выдачей сертификатов занимаются специальные уполномоченные службы CA (certification authority), своего рода клубы по интересам. Они самостоятельно определяют, кого следует принять в число своих членов, а кого нет. Такая служба может быть и правительственной организацией, которая выдает сертификаты пользователям и одновременно предоставляет правительству информацию о том, как следует интерпретировать тот или иной сертификат.
Группа по интересам
Группа по интересам (community of interests, COI) - это некое подобие клуба. Вы можете либо входить в число членов этого клуба, либо нет. В отличие от государств группам по интересам незнакомы геополитические границы. Точнее говоря, для них вообще не существует никаких постоянных границ.
Например, читатели журнала - это COI. Если журнал публикует материалы в Internet только для ограниченной группы читателей, то он тоже представляет собой COI.
Вскоре после появления технологии сертификатов стало ясно, какое большое значение приобретает организация взаимодействия между различными службами CA. Группа по интересам решает, стоит ли признавать сертификаты, которые были выпущены службой CA, подчиняющейся другой COI. Каждая группа COI интерпретирует чужие сертификаты так, как ей захочется. Сертификаты других групп могут быть приравнены к своим собственным, а могут быть ограничены в правах. Для каждой группы COI и службы CA устанавливается свой уровень ограничений.
Неизвестные пользователи
Даже если группа COI никогда раньше не видела того или иного пользователя, она может предоставить ему требуемый доступ на основе сигнатуры сертификата. Группа общих интересов сообщает незнакомцу примерно следующее: "Мне ничего не известно о вас лично, но зато я хорошо знаю вашу службу CA и доверяю ей. Этот уровень доверия позволяет мне предоставить вам доступ к нужной информации".
Что произойдет, если какой-либо обладатель сертификата, выданного неизвестной группе общих интересов службой CA, приблизится к границам COI? У COI имеется несколько вариантов действий. Можно просто запретить доступ и грозно предупредить: "Стой, запретная зона! У нас нет информации ни о вас, ни о том парне, который подписал этот сертификат".
Но можно поступить и по-другому. В этом случае служба безопасности COI попытается идентифицировать пользователя. Один из способов заключается в поиске инфраструктуры GPKI и определении, в каких отношениях данная CA находится со службой CA, которая известна группе COI. К примеру, если неизвестная CA входит в состав службы CA, информация о которой имеется в группе общих интересов, то у COI появляются достаточные основания для того, чтобы доверять предъявленному сертификату.
Другим способом адресации является отражение скрытой иерархии служб CA за счет расположения сигнатур сертификатов пользователей в определенном порядке. При вступлении на территорию COI сигнатуры сертификатов последовательно проверяются, до тех пор, пока группа COI не обнаружит сигнатуру известной ей службы CA.
Статус сертификата и другие атрибуты
При выполнении некоторых транзакций нельзя ограничиваться сравнением сигнатуры, предоставленной службой CA. Перед предоставлением доступа к важным данным необходимо дополнительно проверить достоверность сертификата непосредственно во время транзакции. Для решения этой задачи вводятся различные механизмы определения статуса сертификата.
Самый старый способ заключается в ведении списка аннулированных сертификатов (certificate revocation list, CRL), который поддерживается службой CA для всех выданных ею цифровых документов. Сертификаты, выданные CA, считаются достоверными до тех пор, пока они не окажутся в списке CRL. Данный подход аналогичен способу выполнения транзакций, который применялся несколько десятков лет тому назад в кредитных картах. Ему были присущи те же недостатки.
Более новый метод (его стандарт в настоящее время находится в процессе разработки) основан на использовании службы сетевых каталогов, которая предоставляет информацию о статусе сертификата в режиме реального времени при помощи протокола статуса сертификата OCSP (online certificate status protocol). В этом случае сертификаты, выданные службой CA, считаются недействительными до тех пор, пока информация об их статусе не будет выбрана из каталога, поддерживаемого CA. Одно из преимуществ модели OCSP состоит в том, что предоставляемая информация может быть расширена за счет включения других пользовательских атрибутов (например, номера кредитной карты или домашнего адреса).