Под аутентификацией информации в компьютерных системах понимают установление подлинности данных, полученных по сети, исключительно на основе информации, содержащейся в полученном сообщении.
Если конечной целью шифрования информации является обеспечение защиты от несанкционированного ознакомления с этой информацией, то конечной целью аутентификации информации является обеспечение защиты участников информационного обмена от навязывания ложной информации. Концепция аутентификации в широком смысле предусматривает установление подлинности информации как при условии наличия взаимного доверия между участниками обмена, так и при его отсутствии.
В компьютерных системах выделяют два вида аутентификации информации:
Для решения задачи аутентификации информации используется концепция цифровой (или электронной) подписи. Согласно терминологии, утвержденной Международной организацией по стандартизации (ISO), под термином «цифровая подпись» понимаются методы, позволяющие устанавливать подлинность автора сообщения (документа) при возникновении спора относительно авторства этого сообщения. Основная область применения цифровой подписи — это финансовые документы, сопровождающие электронные сделки, документы, фиксирующие международные договоренности и т. п.
До настоящего времени наиболее часто для построения схемы цифровой подписи использовался алгоритм RSA. В основе этого алгоритма лежит концепция Диффи-Хеллмана. Она заключается в том, что каждый пользователь сети имеет свой закрытый ключ, необходимый для формирования подписи; соответствующий этому секретному ключу открытый ключ, предназначенный для проверки подписи, известен всем другим пользователям сети.
На рис. 11.11 показана схема формирования цифровой подписи по алгоритму RSA. Подписанное сообщение состоит из двух частей; незашифрованной части, в которой содержится исходный текст Т, и зашифрованной части, представляющей собой цифровую подпись. Цифровая подпись S вычисляется с использованием закрытого ключа (D, п) по формуле
S =Г1 mod п.
Сообщение посылается в виде пары (Т, S). Каждый пользователь, имеющий соответствующий открытый ключ (Е, п), получив сообщение, отделяет открытую часть Т, расшифровывает цифровую подпись S и проверяет равенство Т = S1^ mod n.
Если результат расшифровки цифровой подписи совпадает с открытой частью сообщения, то считается, что документ подлинный, не претерпел никаких изменений в процессе передачи, а автором его является именно тот человек, который передал свой открытый ключ получателю. Если сообщение снабжено цифровой подписью, то получатель может быть уверен, что оно не было изменено или подделано по пути. Такие схемы аутентификации называются асимметричными. К недостаткам данного алгоритма можно отнести то, что длина подписи в этом случае равна длине сообщения, что не всегда удобно.
Цифровые подписи применяются к тексту до того, как он шифруется. Если помимо снабжения текста электронного документа цифровой подписью надо обеспечить его конфиденциальность, то вначале к тексту применяют цифровую подпись, а затем шифруют все вместе: и текст, и цифровую подпись (рис. 11.12).
I Другие методы цифровой подписи основаны на формировании соответствующей сообщению контрольной комбинации с помощью классических алгоритмов типа DES. Учитывая более высокую производительность алгоритма DES по сравнению с алгоритмом RSA, он более эффективен для подтверждения аутентичности больших объемов информации. А для коротких сообщений типа платежных поручений или квитанций подтверждения приема, наверное, лучше подходит алгоритм RSA.
Компания Microsoft разработала средства для доказательства аутентичности программных кодов, распространяемых через Интернет. Пользователю важно иметь доказательства, что программа, которую он загрузил с какого-либо сервера, действительно содержит коды, разработанные определенной компанией. Протоколы защищенного канала типа SSL помочь здесь не могут, так как позволяют удостоверить только аутентичность сервера. Microsoft разработала технологию аутен-тикода (Authenticode), суть которой состоит в следующем.
Организация, желающая подтвердить свое авторство на программу, должна встроить в распространяемый код так называемый подписывающий блок (рис. 11.13). Этот блок состоит из двух частей. Первая часть — сертификат этой организации, полученный обычным образом от какого-либо сертифицирующего центра. Вторую часть образует зашифрованный дайджест, полученный в результате применения односторонней функции к распространяемому коду. Шифрование дайджеста выполняется с помощью закрытого ключа организации.
Kerberos — это сетевая служба, предназначенная для централизованного решения задач аутентификации и авторизации в крупных сетях. Она может работать в среде многих популярных ОС, например в последней версии Windows 2000 система Kerberos встроена как основной компонент безопасности.
В основе этой достаточно громоздкой системы лежит несколько простых принципов.
Сетевая служба Kerberos построена по архитектуре клиент-сервер, что позволяет ей работать в самых сложных сетях. Kerberos-клиент устанавливается на всех компьютерах сети, которые могут обратиться к какой-либо сетевой службе. В таких случаях Kerberos-клиент от лица пользователя передает запрос на Kerberos-сервер и поддерживает с ним диалог, необходимый для выполнения функций системы Kerberos.
Итак, в системе Kerberos имеются следующие участники: Kerberos-сервер, Кег-Ьегоз-клиенты, ресурсные серверы (рис. 11.14). Kerberos-клиенты пытаются получить доступ к сетевым ресурсам - файлам, приложениям, принтеру и т. д. Этот доступ может быть предоставлен, во-первых, только легальным пользователям, а во-вторых, при наличии у пользователя достаточных полномочий, определяемых службами авторизации соответствующих ресурсных серверов - файловым сервером, сервером приложений, сервером печати. Однако в системе Kerberos ресурсным серверам запрещается «напрямую» принимать запросы от клиентов, им разрешается начинать рассмотрение запроса клиента только тогда, когда на это поступает разрешение от Kerberos-сервера. Таким образом, путь клиента к ресурсу в системе Kerberos состоит из трех этапов:
1. Определение легальности клиента, логический вход в сеть, получение разрешения на продолжение процесса получения доступа к ресурсу.
2. Получение разрешения на обращение к ресурсному серверу.
3. Получение разрешения на доступ к ресурсу.
Для решения первой и второй задач клиент обращается к Kerberos-серверу. Каждая из этих двух задач решается отдельным сервером, входящим в состав КегЬе-ros-сервера. Выполнение первичной аутентификации и выдача разрешения на продолжение процесса получения доступа к ресурсу осуществляется так называемым аутентификационным сервером (Authentication Sewer, AS). Этот сервер хранит в своей базе данных информацию об идентификаторах и паролях пользователей.
Вторую задачу, связанную с получением разрешения на обращение к ресурсному серверу, решает другая часть Kerberos-сервера — сервер квитанций (Ticket-Granting Server, TGS). Сервер квитанций для легальных клиентов выполняет дополнительную проверку и дает клиенту разрешение на доступ к нужному ему ресурсному серверу, для чего наделяет его электронной формой-квитанцией. Для выполнения своих функций сервер квитанций использует копии секретных ключей всех ресурсных серверов, которые хранятся у него в базе данных. Кроме этих ключей сервер TGS имеет еще один секретный DES-ключ, который разделяет с сервером AS.
Третья задача — получение разрешения на доступ непосредственно к ресурсу — решается на уровне ресурсного сервера.
Процесс доступа пользователя к ресурсам включает две процедуры: во-первых, пользователь должен доказать свою легальность (аутентификация), а во-вторых, он должен получить разрешение на выполнение определенных операций с определенным ресурсом (авторизация). В системе Kerberos пользователь один раз аутентифицируется во время логического входа в сеть, а затем проходит процедуры аутентификации и авторизации всякий раз, когда ему требуется доступ к новому ресурсному серверу.
Выполняя логический вход в сеть, пользователь, а точнее клиент Kerberos, установленный на его компьютере, посылает аутентификационному серверу AS идентификатор пользователя ID (рис. 11.15).
Вначале аутентификационный сервер проверяет в базе данных, есть ли запись о пользователе с таким идентификатором, затем, если такая запись существует, извлекает из нее пароль пользователя р. Данный пароль потребуется для шифрования всей информации, которую направит аутентификационный сервер Kerberos-клиенту в качестве ответа. А ответ состоит из квитанции T-rcs на доступ к серверу квитанций Kerberos и ключа сеанса Ks. Под сеансом здесь понимается все время работы пользователя, от момента логического входа в сеть до момента логического выхода. Ключ сеанса потребуется для шифрования в процедурах аутентификации в течение всего пользовательского сеанса. Квитанция шифруется с помощью секретного DES-ключа К, который разделяют аутентификационный сервер и сервер квитанций. Все вместе — зашифрованная квитанция и ключ сеанса — еще раз шифруются с помощью пользовательского пароля р. Таким образом, квитанция шифруется дважды ключом К и паролем р. В приведенных выше обозначениях сообщение-ответ, которое аутентификационный сервер посылает клиенту, выглядит так: {{T^Gs}K, Ks}p.
После того как такое ответное сообщение поступает на клиентскую машину, клиентская программа Kerberos просит пользователя ввести свой пароль. Когда пользователь вводит пароль, то Kerberos-клиент пробует с помощью пароля расшифровать поступившее сообщение. Если пароль верен, то из сообщения извлекается квитанция на доступ к серверу квитанций {ttgs}k (B зашифрованном виде) и ключ сеанса Ks (в открытом виде). Успешная расшифровка сообщения означает успешную аутентификацию. Заметим, что аутентификационный сервер AS аутен-тифицирует пользователя без передачи пароля по сети.
Квитанция ttgs иа доступ к серверу квитанций TGS является удостоверением легальности пользователя и разрешением ему продолжать процесс получения [ доступа к ресурсу. Эта квитанция содержит:
Как уже было сказано, клиент обладает квитанцией в зашифрованном виде. Шифрование повышает уверенность в том, что никто, даже сам клиент — обладатель данной квитанции, — не сможет квитанцию подделать, подменить или изменить. Только сервер TGS, получив от клиента квитанцию, сможет ее расшифровать, так как в его распоряжении имеется ключ шифрования К.
Время действия квитанции ограничено длительностью сеанса. Разрешенная длительность сеанса пользователя, содержащаяся в квитанции на доступ к серверу квитанций, задается администратором и может изменяться в зависимости от требований к защищенности сети. В сетях с жесткими требованиями к безопасности время сеанса может быть ограничено 30 минутами, в других условиях это время может составить 8 часов. Информация» содержащаяся в квитанции, определяет ее срок годности. Предоставление квитанции на вполне определенное время защищает ее от неавторизованного пользователя, который мог бы ее перехватить и использовать в будущем.
Итак, следующим этапом для пользователя является получение разрешения на доступ к ресурсному серверу (например, к файловому серверу или серверу приложений). Но для этого надо обратиться к серверу TGS, который выдает такие разрешения (квитанции). Чтобы получить доступ к серверу квитанций, пользователь уже обзавелся квитанцией {T-i-Gs}^ выданной ему сервером AS. Несмотря на защиту паролем и шифрование, пользователю, для того чтобы доказать серверу квитанций, что он имеет право на доступ к ресурсам сети, нужно кое-что еще, кроме квитанции.
Как уже упоминалось, первое сообщение от аутентификационного сервера содержало не только квитанцию, но и секретный ключ сеанса K.s, который разделяется с сервером квитанций TGS. Клиент использует этот ключ для шифрования еще одной электронной формы, называемой аутентификатором {A}Ks. Аутентификатор А содержит идентификатор и сетевой адрес пользователя, а также собственную временную отметку. В отличие от квитанции {ttgs}k, которая в течение сеанса используется многократно, аутентификатор предназначен для одноразового использования и имеет очень короткое время жизни — обычно несколько минут. Kerberos-клиент посылает серверу квитанций TGS сообщение-запрос, содержащее квитанцию и аутентификатор: {Tycs}^ {A} Kg.
Сервер квитанций расшифровывает квитанцию имеющимся у него ключом К, проверяет, не истек ли срок действия квитанции, и извлекает из нее идентификатор пользователя.
Затем сервер TGS расшифровывает аутентификатор, используя ключ сеанса пользователя Kg, который он извлек из квитанции. Сервер квитанций сравнивает идентификатор пользователя и его сетевой адрес с аналогичными параметрами в квитанции и сообщении. Если они совпадают, то сервер квитанций получает уверенность, что данная квитанция действительно представлена ее законным владельцем.
Заметим, что простое обладание квитанцией на получение доступа к серверу квитанций не доказывает идентичность пользователя. Так как аутентификатор действителен только в течение короткого промежутка времени, то маловероятно украсть одновременно и квитанцию, и аутентификатор и использовать их в течение этого времени. Каждый раз, когда пользователь обращается к серверу квитанций для получения новой квитанции на доступ к ресурсу, он посылает многократно используемую квитанцию и новый аутентификатор.
Клиент обращается к серверу квитанций за разрешением на доступ к ресурсному серверу, который здесь обозначен как RS1. Сервер квитанций, удостоверившись в легальности запроса и личности пользователя, отсылает ему ответ, содержащий две электронных формы: многократно используемую квитанцию на получение доступа к запрашиваемому ресурсному серверу trsi и новый ключ сеанса KS1.
Квитанция на получение доступа шифруется секретным ключом KRS1), разделяемым только сервером квитанций и тем сервером, к которому предоставляется доступ, в данном случае — RS1. Сервер квитанций разделяет уникальные секретные ключи с каждым сервером сети. Эти ключи распределяются между серверами сети физическим способом или каким-либо иным секретным способом при установке системы Kerberos. Когда сервер квитанций передает квитанцию на доступ к какому-либо ресурсному серверу, то он шифрует ее, так что только этот сервер сможет расшифровать ее с помощью своего уникального ключа.
Новый ключ сеанса KS1 содержится не только в самом сообщении, посылаемом клиенту, но и внутри квитанции TRS1. Все сообщение шифруется старым ключом сеанса клиента Kg, так что его может прочитать только этот клиент. Используя введенные обозначения, ответ сервера TGS клиенту можно представить в следующем виде: {{tRS1}kRS1, KS1}KS.
Получение доступа к ресурсу
Когда клиент расшифровывает поступившее сообщение, то он отсылает серверу, к которому он хочет получить доступ, запрос, содержащий квитанцию на получение доступа и аутентификатор, зашифрованный новым ключом сеанса:
{tRS1}kRS1, {A}KS1.
Это сообщение обрабатывается аналогично тому, как обрабатывался запрос клиента сервером TGS. Сначала расшифровывается квитанция ключом kRS1, затем извлекается ключ сеанса Ksi и расшифровывается аутентификатор. Далее сравниваются данные о пользователе, содержащиеся в квитанции и аутентификаторе. Если проверка проходит успешно, то доступ к сетевому ресурсу разрешен.
На этом этапе клиент также может захотеть проверить аутентичность сервера перед тем, как начать с ним работать. Взаимная процедура аутентификации предотвращает любую возможность попытки получения неавторизованным пользователем доступа к секретной информации от клиента путем подмены сервера.
Аутентификация ресурсного сервера в системе Kerberos выполняется в соответствии со следующей процедурой. Клиент обращается к серверу с предложением, чтобы тот прислал ему сообщение, в котором повторил временную отметку из аутентификатора клиента, увеличенную на 1. Кроме того, требуется, чтобы данное сообщение было зашифровано ключом сеанса Ksi. Чтобы выполнить такой запрос клиента, сервер извлекает копию ключа сеанса из квитанции на доступ, использует этот ключ для расшифровки аутентификатора, наращивает значение временной отметки на 1, заново зашифровывает сообщение, используя ключ сеанса, и возвращает сообщение клиенту. Клиент расшифровывает это сообщение, чтобы получить увеличенную на единицу отметку времени.
При успешном завершении описанного процесса клиент и сервер удостоверяются в секретности своих транзакций. Кроме этого, они получают ключ сеанса, который могут использовать для шифрования будущих сообщений.
Изучая довольно сложный механизм системы Kerberos, нельзя не задаться вопросом: какое влияние оказывают все эти многочисленные процедуры шифрования и обмена ключами на производительность сети, какую часть ресурсов сети они потребляют и как это сказывается на ее пропускной способности?
Ответ весьма оптимистичный — если система Kerberos реализована и сконфигурирована правильно, она незначительно уменьшает производительность сети. Так как квитанции используются многократно, сетевые ресурсы, затрачиваемые на запросы предоставления квитанций, невелики. Хотя передача квитанции при аутентификации логического входа несколько снижает пропускную способность, такой обмен должен осуществляться и при использовании любых других систем и методов аутентификации. Дополнительные же издержки незначительны. Опыт внедрения системы Kerberos показал, что время отклика при установленной системе Kerberos существенно не отличается от времени отклика без нее — даже в очень больших сетях с десятками тысяч узлов. Такая эффективность делает систему Kerberos весьма перспективной.
Среди уязвимых мест системы Kerberos можно назвать централизованное хранение всех секретных ключей системы. Успешная атака на Kerberos-сервер, в котором сосредоточена вся информация, критическая для системы безопасности, приводит к крушению информационной защиты всей сети. Альтернативным решением могла бы быть система, построенная на использовании алгоритмов шифрования с парными ключами, для которых характерно распределенное хранение секретных ключей. Однако в настоящий момент еще не появились коммерческие продукты, построенные на базе несимметричных методов шифрования, которые бы обеспечивали комплексную защиту больших сетей.
Еще одной слабостью системы Kerberos является то, что исходные коды тех приложений, доступ к которым осуществляется через Kerberos, должны быть соответствующим образом модифицированы. Такая модификация называется «кер-беризацией» приложения. Некоторые поставщики продают «керберизованные» версии своих приложений. Но если такой версии нет и нет исходного текста, то Kerberos не может обеспечить доступ к такому приложению.