англ. 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».
Поле данных размером 2048 байт, зарезервированное для сертификата «Х.509», может использоваться для хранения любой информации (биометрических данных, фотоизображений), если только такие «сертификаты» не используются в криптографических функциях. Приложения могут загружать эти данные в энергонезависимую память карты и хранить их там длительное время.
Сертификаты «Х.509» могут быть размещены в базе данных специализированного сертификационного сервера (несколько серверов) или распределены по сети и сохранены локально в картах всех участников информационного обмена. Единственным условием является доступность сертификата для криптографических функций приложений «Fortezza».
Некоторые приложения позволяют включать сертификат отправителя в заглавие сообщения, предоставляя получателю возможность динамически создавать локальную базу сертификатов абонентов. Такая локальная база может служить своего рода «кэшем» сертификатов, делающим возможной посылку сообщений без обращения к серверу сертификатов. Однако длинное использование локальной базы может привести к «устареванию» содержащихся в ней сертификатов.
Эпилог
Ознакомившись с историей стеганографии и криптологии — систем знаний о тайнописи и способах её прочтения, приходишь к выводу, что учитывая экспонентный рост скоростей вычислений и вероятность появления искусственного интеллекта, нужно быть в курсе её принципов и современных достижений. Не исключено, что если не завтра, то уже послезавтра наши компьютеры будут общаться друг с другом лишь с помощью цифровых «заклинаний», недоступных человеческому пониманию.