12. Криптокарты «Фортецца»
17 июня 1996 года компания «Netscape Communications Corporation» анонсировала выпуск бета-версии «SSLRef 3.0» — средства разработки дополнений, обеспечивающих защиту информационного обмена в среде «Intemet/Intranet» с использованием открытого протокола «SSL 3.0». Компания «Netscape» начала работу по стандартизации протокола «SSL» (англ. Secure Sockets Layer — уровень защищённых сокетов) ещё в октябре 1994 года.
Группой инженерной поддержки сети Интернет (IETF) как основа требований к безопасности информационного обмена, обеспечиваемой на транспортном уровне, был предложен протокол «SSL 2.0». При этом, было выполнено одно из основных условий, предъявленных к «кандидату на стандарт» — наличие коммерческой реализации протокола. Первым поколением продуктов, поддерживающих протокол «SSL», стали «Netscape Navigator 2.0», «Netscape Commerce Server 1.0» i «Netscape News Server 1.0».
Основным отличием текущей, третьей, версии протокола «SSL» является поддержка большого количества алгоритмов и аппаратных средств обмена ключевой информацией и шифрования, в том числе и технологии «Fortezza». В октябре 1995 года вице-президент «Netscape» Марко Андриссен заявил, что поддержка технологии «Fortezza» позволит укрепить позиции компании как ведущего поставщика программных продуктов, использующих веб-технологии, как для федерального правительства США, так и для коммерческих организаций.
Результаты не заставили себя долго ждать: «Netscape» стала первой компанией, которой правительство США в июле 1996 года предоставило право распространять по сети Интернет программное обеспечение, подлежащее экспортным ограничениям. «Netscape Navigator» и «Netscape Fast Track Server» стали первыми программными продуктами, использующие алгоритм «RCA» с длиной ключа 128 бит, которые американские пользователи могут получить по сети Интернет.
Сейчас количество компаний, поддерживающих протокол «SSL», значительно увеличилось. Среди них: «Apple Computer Inc.», «Digital Equipment Corporation», «IBM», «Master Card International Inc.», «Microsoft Corporation», «Motorola», «Novell Inc.», «Siemens Nixdorf», «Silicon Graphics Inc.», «Sun Microsystems Inc.», «Visa International» и др. Существуют также и некоммерческие реализации, например, сервер «АРАСНЕ-SSL». Широкое распространение протокола «SSL» делает возможным и необходимым более детальное ознакомление с одним из его средств — криптокартой «Fortezza».
Технология «Fortezza Cryptographic Card», которая была разработана в АНБ, представляет собой стандартное устройство «РС-card» (раньше этот стандарт назывался «PCMCIA») и предназначен для реализации аутентификации и шифрования в соответствии со стандартами правительства США. Карточки «Fortezza» применяются в системе электронной связи «DMS» (англ. Defence Message System — система защиты сообщения) МО США, в поисковой системе «Intelink» разведывательного содружества правительства США, использующего технологии «WWW», а также в других правительственных системах.
«Fortezza» — ключевой компонент в обеспечении секретной связи для АНБ и других правительственных структур США. Данный криптографический продукт разработан фирмой «Рэйнбоу» (англ. Rainbow — радуга) — ведущим поставщиком высоконадёжных решений для государственных и коммерческих организаций США. «Rainbow» подписала новый многолетний контракт с Отделом защиты АНБ, предусматривающий обеспечение АНБ криптокартами «Fortezza» в течение трёхлетнего периода на общую сумму 33,6 миллиона долларов. Предыдущий контракт «Rainbow» и АНБ был заключён на 15,3 миллиона долларов.
Работы по созданию «Fortezza» были начаты в 1991 году в рамках программы «PMSP» (англ. Pre Message Security Protocol — протокол безопасности предыдущего сообщения). Перед специалистами АНБ была поставлена задача разработать несекретную технологию защиты информации. Первоначальной целью этого проекта было создание недорогого устройства по стандарту «Smart card», обеспечивающему целостность данных, шифрование данных, идентификацию и аутентификацию источника данных.
Кроме того, необходимо было предусмотреть возможность совместимости с существующими стандартами (например, протоколом распространения ключей «Х.509»), обеспечить работу мобильных пользователей, предоставить средства расширяемости архитектуры для поддержки потенциально большого количества пользователей (до четырёх миллионов). Первоочередными сферами применения технологии «Fortezza» предусматривалась защита электронной почты и другого электронного информационного обмена, осуществляемого по открытым каналам связи, а также контроль доступа к системам и их компонентам.
В течение своего развития технология несколько раз меняла своё название. Как уже говорилось, в 1991 году программа «Fortezza» называлась «PMSP», а само криптоустройство разрабатывалось в соответствии со стандартом «smart card». В 1993 году название программы было изменено на «MOSAIC», тип криптоустройства был изменён на «РС-card», а сама карта получила название «Tessera Crypto Card».
В 1994 году программа была слита в объединённый проект АНБ и Агентства информационных систем МО США «DISA» — «MISSI» (англ. Multi-Level Information Systems Security Initiative — инициатива безопасности многоуровневых информационных систем). После этого название технологии было изменено на «Fortezza», а карта переименована в «Fortezza Crypto Card».
Технология «Fortezza» обладает двумя важными свойствами, которые делают возможным её широкое распространение (с учётом экспортных ограничений). Первым таким свойством является «персонализация» средств обеспечения безопасности. Каждый пользователь обеспечивается индивидуальным криптоустройством в виде пластиковой кары (PC-card).
Эта карта содержит уникальную для каждого конкретного лица ключевую информацию и связанные с ней данные, а также выполняет заложенные в неё криптоалгоритмы. Создатели карты «Fortezza» выполнили большую работу по разработке сложной системы генерации, распределения и управления криптоключами. Особое внимание было уделено контролю целостности данных карты и распространению необходимой криптографической и системной информации.
Вторым свойством является наличие открытого прикладного программного интерфейса «АРI» (англ. application programming interface). Аппаратные и программные спецификации карты разрабатывались с учётом требований к открытой системе. Это позволяет осуществлять простую интеграцию технологии «Fortezza» в большинство аппаратных платформ, коммуникационных средств, операционных систем, пакетов прикладных программ и сетевых протоколов и архитектур.
Кроме того, подход «Fortezza» спасает разработчиков программных средств от необходимости встраивать в прикладные программы сложные криптографические подсистемы. Достаточно воспользоваться картой «Fortezza», которой можно руководить с использованием «API CI Library».
Алгоритм шифрования, применяемый в технологии «Fortezza», известен под названием «SKIPJACK». Этот алгоритм был разработан специалистами АНБ и соответствует стандарту депонирования ключей «Escrowed Encryption Key Standard». «SKIPJACK» является блочным шифром с размером блока 8 байт, использующий симметричные ключи (т. е. для шифрования и дешифровки применяется один и тот же ключ).
Шифрование по алгоритму «SKIPJACK» в карте «Fortezza» осуществляется с помощью специализированного криптографического микропроцессора «CAPSTONE», выполненного по «RISC»-TCxiiojiornii. Такие микропроцессоры выполняют те же функции, что и микропроцессоры «CLIPPER», которые применяются для реализации алгоритма «SKIPJACK» в устройствах речевой (телефонной) связи. Обсуждение деталей реализации «SKIPJACK» не представляется возможным, поскольку этот алгоритм засекречен.
В технологии «Fortezza» ключ шифрования данных называется «МЕК» (англ. Message Encryption Key). В дополнении к этому ключу может использоваться также вектор инициализации «IV» (англ. Initialization Vector), который фактически является дополнительным входным параметром при шифровании данных. Стандартный режим алгоритма «Fortezza» требует обязательного использования «IV» всеми участниками информационного обмена. Это значит, что для дешифровки сообщения получатель должен или иметь возможность сгенерировать точно такой же «IV», использованный отправителем при шифровании сообщения, или «IV» должен быть передан вместе с сообщением.
Алгоритм шифрования «SKIPJACK» имеет три режима работы: «ЕСВ» (англ. Electronic Codebook — электронная кодовая книга), «OFB» (англ. Output Feedback — исходный отзыв) и «СВС» (англ. Cipher Block Chaining — шифроблочная цепь). Как правило, алгоритм «Fortezza» использует режим «СВС». В этом режиме все 8-байтные блоки открытого текста, кроме первого, используются для выполнения операции «XOR» (побитовое сложение по модулю 2) с блоком зашифрованного текста, полученным на предыдущем шаге работы алгоритма с использованием «МЕК». Вектор «IV» применяется для шифрования первого блока открытого текста.
Для того, чтобы злоумышленник смог дешифровать сообщение, ему необходимо знать не только «МЕК», но и «IV». При этом компрометация «IV» не настолько существенна, если злоумышленник не обладает «МЕК».
Распределение ключей шифрования «МЕК» основано на применении разработанного в АНБ алгоритма обмена ключами «КЕА» (англ. Key Exchange Algorithm), посылающего зашифрованный «МЕК» с каждым сообщением. Поскольку обмен ключами «КЕА» интегрирован в технологию «Fortezza», ключи шифрования могут меняться от сообщения к сообщению или от сеанса к сеансу.
Алгоритм «КЕА» использует для шифрования «МЕК» специальный ключ, названный «ТЕК» (англ. Token Encryption Key — ключ полуторного шифрования). Необходимо иметь в виду, что в дополнениях, использующих технологию «Fortezza», «ТЕК» может быть использован при шифровании данных как альтернатива ключа шифрования «МЕК», однако «МЕК» не может быть использован для защиты «ТЕК» в процессе обмена ключами.
Шифрование с открытым ключом в стандартном режиме алгоритма «Fortezza» используется только для обмена ключами с использованием «КЕА» и для цифровой подписи сообщений (включая временные метки). В описании алгоритма «Fortezza» обычно используют такие обозначения: 20-байтный закрытый ключ называется «X», 128-байтный открытый ключ называется «Y», «Р» и «Q» — большие простые числа (секретные), «G» — простое число по модулю «PXQ» (общедоступное).
Общий процесс шифрования сообщений с использованием открытого ключа абонента выглядит таким образом. Отправитель шифрует сообщение для получателя, используя открытый ключ получателя «Y» и алгоритм шифрования с открытым ключом. Получатель дешифрует сообщение отправителя с помощью своего закрытого ключа «X». Каждый, кто получит доступ к месту хранения открытых ключей, сможет зашифровать данные для получателя, но только получатель сможет дешифровать эти данные, поскольку никто не знает его закрытого ключа. Генерация и распределение пар открытого и закрытого ключей для организации обмена ключами «КЕА» и цифровой подписи производится для каждого пользователя отдельно в соответствии со специальной процедурой.
Как отмечено выше, алгоритм обмена ключами «КЕА» разработан специалистами АНБ и используется для организации распределения ключей шифрования «МЕК» при информационном обмене и для рассылки секретных ключей пользователям. Основным преимуществом «КЕА» является тот факт, что обе стороны могут вычислить один и тот же «ТЕК» самостоятельно, используя два случайных числа (А и В), собственные параметры Р, Q, G и открытый ключ абонента. Когда «КЕА» используется при информационном обмене, принимающая сторона может получить все значения, необходимые для дешифровки сообщения, вместе с принятым сообщением.
Заметим, что в данном алгоритме значения Р, Q и G, использованные отправителем для первоначальной генерации «ТЕК», а получателем для генерации «ТЕК» при получении сообщения, не передаются по каналам связи и одинаковые для всех пользователей.
Алгоритм обмена ключами «КЕА» применяется как в дополнениях типа электронной почты, так и при информационном обмене между абонентами, логично и/или физически соединёнными между собой в режиме реального времени.
Необходимо отметить, что то же сообщение, адресованное разным абонентам, шифруется с использованием одного ключа «МЕК», однако этот ключ должен быть свёрнут с помощью разных «ТЕК», которые отвечают получателям данного сообщения. Дополнение: адресат должен пересмотреть сообщение и найти «ТЕК», предназначенный для данного пользователя, развернуть «МЕК» и дешифровать полученное сообщение.
Для контроля целостности переданных сообщений, обеспечения подлинности и невозможности отрицания авторства технология «Fortezza» использует алгоритм цифровой подписи «DSA» и алгоритм безопасного хэширования «SHA-1» (англ. Secure Hash Algorithm), отвечающий стандарту цифровой подписи «DSS» (англ. Digital Signature Standard).
После вычисления хэш-функции сообщения, 20-байтний хэш-блок превратится с помощью алгоритма «DSA» в цифровую подпись сообщения размером 40 байт. Необходимо обратить внимание на расхождение в использовании параметров Р, Q и G в алгоритмах распределения ключей «КЕА» и цифровой подписи «DSA». При проверке цифровой подписи сообщения отправителя получатель должен иметь доступ к значениям Р, Q и G отправителя. Эти параметры должны распространяться или в заглавии сообщения, или вместе с открытым ключом отправителя.
С целью снабжения каждого пользователя набором собственных значений Р, Q и G прикладная библиотека «CI Library» имеет соответствующие функции загрузки этих значений. Такое расхождение в использовании этих параметров связано с возможностью «DSA», в отличие от «КЕА», поддерживать информационный обмен между пользователями разных доменов, которые могут различаться процедурами распространения и сертификации ключей.
На момент создания технологии «Fortezza» не существовало правительственных или промышленных стандартов временных меток цифровой подписи. Для «привязки» сообщений ко времени их создания применяется дополнительная процедура вычисления хэш-функции от хэш-блока сообщения и текущего времени, взятого из надёжного источника (например, криптокарты «Fortezza»).
Необходимо отметить, что значения Р, Q и G, используемые алгоритмом «DSA» при вычислении подписи с применением временных меток, являются общими для всех карт «Fortezza» и записываются в память производителем криптокарты. Поскольку проверка цифровой подписи в случае применения временной метки связана с необходимостью синхронизации источников времени, вычислением времени доставки сообщения и другими сложностями, использование временных меток в технологии «Fortezza» не является обязательным.
Как следует из сказанного выше, в технологии «Fortezza» должен существовать протокол, регламентирующий выдачу и распространение открытых ключей пользователей. Открытые ключи ассоциируются с их владельцами с помощью так называемых «сертификатов». Сертификат представляет собой структуру данных, связывающую идентификатор пользователя, открытые ключи, предназначенные для алгоритмов «КЕА» и «DSA», а также информацию о лице, выдавшем сертификат. С целью защиты от подделки сертификат защищается цифровой подписью лица, выдавшего сертификат. Сертификаты и пары закрытых/открытых ключей образуют основу системы управления ключами технологии «Fortezza».
Как основу системы аутентификации «Fortezza» использует схему аутентификации сертификатов «Х.509» и соглашения о наименовании объектов «Х.500». Технология «Fortezza» различает две структуры сертификатов. Под сертификатом «Fortezza» понимается внутренняя структура данных технологии «Fortezza», под сертификатом «Х.509» — блок данных стандарта «Х.509», содержащихся в сертификате «Fortezza».
Каждый сертификат «Fortezza» состоит из двух пар закрытых/открытых ключей (одна из них предназначена для использования в «КЕА», другая — в «DSA») и соответствующих им значений параметров Р, Q и G. Сертификат «Х.509» содержит открытые составляющие этих ключей. Открытые ключи всегда доступны пользователю карты. Ключи сохраняются в закодированном виде: закрытые — с помощью локальных ключей пользователя «Ks» (он имеет размер 80 бит, находится в специальном регистре криптокарты и становится доступным после успешного введения «РIII»-кода пользователя), открытые — с помощью «ASN.1».