Криптографические алгоритмы Классификация криптографических алгоритмов

advertisement
Криптографические алгоритмы
Классификация криптографических алгоритмов
В настоящее время общепризнанным является подразделение криптографических
алгоритмов на следующие основные категории:


алгоритмы шифрования с секретным ключом (симметричные)
o блочные шифры
o поточные шифры
алгоритмы шифрования с открытым ключом (асимметричные)
Криптоалгоритмы с секретным ключом
Идея, лежащая в основе большинства итерационных блочных шифров, состоит в
построении криптографически стойкой системы путем последовательного применения
относительно простых криптографических преобразований. Принцип многоразового
шифрования с помощью простых криптографических преобразований был впервые
предложен Шенноном: он использовал с этой целью преобразования перестановки и
подстановки. Первое из этих преобразований переставляет отдельные символы
преобразуемого информационного блока, а второе - заменяет каждый символ (или
группу символов) из преобразуемого информационного блока другим символом из того
же алфавита (соответственно группой символов того же размера и из того же
алфавита). Узлы, реализующие эти преобразования, называются, соответственно, Pблоками (P-box, permutation box) и S-блоками (S-box, substitution box).
В 1973-74 гг. Национальное Бюро Стандартов США (NBS) опубликовало документы,
содержащие требования к криптографическому алгоритму, который мог бы быть принят
в качестве стандарта шифрования данных в государственных и частных учреждениях.
В 1976 г. в качестве такового стандарта был утвержден алгоритм, разработанный
фирмой IBM. В 1977 г. этот стандарт был официально опубликован и вступил в силу как
федеральный стандарт США для шифрования данных - Data Encryption Standard или
сокращенно DES.
В самом схематичном виде DES представляет собой 16-цикловой итерационный блочный
шифр. DES работает с блоками данных разрядностью 64 бита с ипользованием 56разрядного ключа. Применяемые преобразования - поразрядное сложение по модулю
два, подстановки и перестановки. Алгоритм выработки 48-битовых цикловых ключей из
56-битового ключа системы и ряд преобразований служат для обеспечения
необходимого перемешивания и рассеивания перерабатываемой информации, однако
при анализе DES чаще всего играют не самую существенную роль.
В 1999 г. на конференции, организованной RSA, компания Electronic Frontier
Foundation взломала ключ DES менее чем за 24 часа. Одной из замен DES, получившей
широкое распространение, стал алгоритм Triple DES. В этом случае алгоритм DES
выполняется трижды, при этом используются 3 ключа, каждый из которых состоит из
56 битов (что, по сути, соответствует использованию 168-битного ключа). Тем не
менее, криптоаналитики обнаружили способ, позволяющий сделать атаку прямого
перебора эквивалентной атаке на 108-битовый ключ. Второй проблемой является
значительное снижение скорости зашифрования и расшифрования данных.
В ответ на проблемы с длиной ключа и производительностью, проявившиеся в Triple
DES, многие криптографы и компании разработали новые блочные шифры. Наиболее
популярными предложениями стали алгоритмы RC2 и RC5 [5.3] корпорации RSA Data
Security, IDEA [5.5] компании Ascom, Cast [5.4] компании Entrust, Safer [5.6]
компании Cylink и Blowfish [5.7] компании Counterpane Systems. Коммерческие
альтернативы DES получили определенное распространение, но ни одна из них не стала
стандартом.
В 1997 г. Национальный институт стандартов и технологий США (NIST) объявил о
начале программы по принятию нового стандарта криптографической защиты. В
октябре 2000 г. конкурс завершился. Победителем был признан шифр Rijndael [5.8],
разработанный бельгийцами Д. Дейменом и В. Райменом. Алгоритм Rijndael стал
основой для нового американского стандарта AES (Advanced Encryption Standard),
который в 2001 г. пришел на смену DES и Triple DES и действует и по сей день.
Rijndael - это итерационный блочный шифр, имеющий архитектуру "Квадрат". Он
быстрый, простой, защищенный, универсальный и хорошо подходит для реализации на
смарт-картах. Шифр имеет переменную длин у блоков и различные длины ключей.
Длина ключа и длина блока могут быть равны независимо друг от друга 128, 192 или
256 битам. В стандарте AES определена длина блока, равная 128 битам. Шифр AES
характеризуется хорошей устойчивостью по отношению к атакам по мощности и по
времени. Именно этот шифр рекомендует использовать Microsoft для симметричного
шифрования.
Отечественный стандарт шифрования носит официальное название "Алгоритм
криптографического преобразования ГОСТ 28147-89" [5.10]. Как явствует из его
номера, стандарт был принят в СССР в 1989 г. Если охарактеризовать алгоритм ГОСТ в
самом общем виде, то он является блочным шифром, построенным по схеме Фейстеля
с 32 циклами шифрования. Длина информационного блока - 64 бита, длина ключа 256 бит.
Основные отличия алгоритма ГОСТ от алгоритма DES - в строении функции, которая
осуществляет отображение
, и алгоритме выработки цикловых
ключей. И в том и в другом случае преобразования, используемые в алгоритме ГОСТ,
проще для программной реализации. Исследования [5.9] показывают, что российский
стандарт не уступает по стойкости американскому AES.
Основная идея поточного шифрования состоит в том, что каждый из последовательных
знаков открытого текста подвергается своему преобразованию. В идеале разные знаки
открытого текста подвергаются разным преобразованиям, т.е. преобразование,
которому подвергаются знаки открытого текста, должно изменяться с каждым
следующим моментом времени. Реализуется эта идея следующим образом. Некоторым
способом получается последовательность знаков
, называемая ключевым
потоком (keystream) или бегущим ключом (running key, RK). Затем каждый знак
открытого текста подвергается обратимому преобразованию, зависящему от
соответствующего знака ключевого потока.
-
Поточные шифры почти всегда работают быстрее и обычно требуют для своей
реализации гораздо меньше программного кода, чем блочные шифры. Наиболее
известный поточный шифр был разработан Р. Ривестом; это шифр RC4, который
характеризуется переменным размером ключа и байт-ориентированными операциями.
На один байт требуется от 8 до 16 действий, программная реализация шифра
выполняется очень быстро. Независимые аналитики исследовали шифр, и он считается
защищенным. RC4 используется для шифрования файлов в таких изделиях, как RSA
SecurPC. Он также применяется для защиты коммуникаций, например, для шифрования
потока данных в Интернет-соединениях, использующих протокол SSL.
В число шифров, которые Microsoft по тем или иным причинам не рекомендует
использовать для симметричного шифрования, входят следующие:

DES (Причины: малая длина ключей - 56 бит; если в 1993 г. атака на алгоритм
заняла 3,5 часа на машине стоимостью $1 млн., то сегодня взлом можно





осуществить в реальном времени; 3DES является более защищенным, но
наличие лучших вариантов делает его использование неоправданным);
IDEA (International Data Encryption Standard)- хотя длина ключа (128 бит)
является приемлемой, Microsoft проводит аналогии с алгоритмом DES: как
известно, NSA подозревалось в сознательном ослаблении алгоритма DES, чтобы
легко просматривать зашифрованные сообщения;
RC2 и RC5 - причины недоверия Microsoft к этим шифрам те же, что к DES и
IDEA. Поскольку для шифрования используются "одноразовые блокноты",
слабым местом может стать генератор псевдослучайных последовательностей.
Современной тенденцией является использование блочных шифров в режиме
поточного шифрования (например, поточное шифрование обеспечивают режимы
CBF и OFB для алгоритма DES или режим гаммирования для алгоритма ГОСТ
28147-89);
Blowfish и Twofish- криптоалгоритмы, разработанные Брюсом Шнайером (B.
Schneier), удовлетворяют требованиям стойкости, но не являются стандартами:
Twofish, являющийся более поздней версией Blowfish, вышел в финал конкурса
на замену DES, но уступил шифру Rijndael;
CAST: несмотря на то, что алгоритм показал себя устойчивым к линейному и
дифференциальному криптоанализу, он имеет слишком малую длину ключа - 64
бита;
ГОСТ 28147-89: Microsoft подозревает стойкий шифр в наличии "лазеек" "backdoors".
Криптоалгоритмы с открытым ключом
В асимметричной криптографии для зашифрования и расшифрования используются
различные функции. Стойкость асимметричных криптоалгоритмов базируется на
разрешимости лежащих в их основе математических проблем. Пока не найден
полиномиальный алгоритм решения этих проблем, данные алгоритмы будут стойки. В
этом заключается отличие симметричного и асимметричного шифрования: стойкость
первого является непосредственной и научно доказуемой, стойкость второго предположительной. Кроме того, асимметричные криптоалгоритмы требуют гораздо
более интенсивных вычислений и потому являются более медленными.
Наиболее известные криптосистемы с открытым ключом:




Рюкзачная криптосистема (Knapsack Cryptosystem) [5.13];
Криптосистема RSA;
Криптосистема Эль-Гамаля - EGCS (El Gamal Cryptosystem);
Криптосистема, основанная на свойствах эллиптических
(Elliptic Curve Cryptosystems).
кривых
-
ECCS
Применение алгоритмов шифрования с открытым ключом позволяет:



избавиться от необходимости секретных каналов связи для предварительного
обмена ключами;
свести проблему взлома шифра к решению трудной математической задачи, т.е.,
в конечном счете, принципиально по-другому подойти к обоснованию стойкости
криптосистемы;
решать средствами криптографии задачи, отличные от шифрования, например,
задачу обеспечения юридической значимости электронных документов.
Для решения проблемы, описанной в последнем пункте, были предложены различные
схемы электронно-цифровой подписи (ЭЦП). ЭЦП позволяет аутентифицировать автора
информации, передающейся в цифровом виде. В определенных ситуациях (например, в
электронной коммерции при осуществлении сделок по купле или продаже) ЭЦП по
юридической силе приравнивается к обычной подписи "от руки". Кроме того,
электронная подпись позволяет убедиться в том, что информация не была искажена
при передаче.
Схема ЭЦП должна определять три следующих алгоритма:



алгоритм подписи;
алгоритм проверки подписи.
алгоритм генерации ключевой пары для подписи и ее проверки;
RSA [5.14] - криптографическая система с открытым ключом, обеспечивающая оба
механизма защиты: шифрование и цифровую подпись. Криптосистема RSA была
разработана в 1977 году и названа в честь авторов: Рональда Ривеста, Ади Шамира и
Леонарда Адлемана.
Принцип её действия в следующем. Берутся два больших случайных простых числа
и
приблизительно равной разрядности и вычисляется их произведение
. Затем
выбирается число
, взаимно простое с произведением
число
Числа
и
шифртекст
, взаимно простое с
и вычисляется
.
становятся открытым ключом, число
- закрытым. Чтобы создать
, отправитель возводит сообщение
в степень
по модулю
, где
и
- показатели открытого ключа получателя:
Чтобы расшифровать полученный шифртекст
по модулю
.
, получатель вычисляет
в степени
.
Если абонент А хочет подтвердить свое авторство сообщения, он сначала шифрует его
на своем секретном ключе, а потом на открытом ключе абонента Б. Соответственно,
абонент Б применяет к полученному сообщению свой секретный ключ и открытый ключ
абонента А; успешное расшифрование является гарантией того, что отправить
сообщение мог только абонент А.
Схема Эль-Гамаля [5.15] основана на трудности вычисления дискретных логарифмов в
конечном поле в сравнении с лёгкостью возведения в степень в том же самом поле.
Для генерации пары ключей сначала выбирается простое число
и два случайных
числа,
и
; оба эти числа должны быть меньше
. Затем вычисляется
.
Открытым ключом становятся
,
и
. И
пользователей. Закрытым ключом является
, сначала выбирается случайное
, и
можно сделать общими для группы
. Теперь, чтобы зашифровать сообщение
, взаимно простое с
. Пара
и
. Затем вычисляются
является шифртекстом, что увеличивает
исходное сообщение в два раза. Для расшифрования вычисляется
.
На схеме Эль-Гамаля базировались стандарты ЭЦП в России и США, принятые в 1994
году [5.17, 5.16] и действовавшие вплоть до 2001 г.
Последние математические достижения показали, что проблема логарифмирования в
конечных полях не является достаточно прочным фундаментом. Наиболее
эффективные на сегодняшний день алгоритмы дискретного логарифмирования имеют
уже не экспоненциальную, а субэкспоненциальную временную сложность. Это
алгоритмы "index-calculus", использующие факторную базу, к числу которых относятся
алгоритм Адлемана [5.18], несколько версий "COS" (алгоритма Копперсмита-ОдлыжкоШреппеля) [5.19] и решето числового поля [5.20]. Ведутся работы по повышению
эффективности этих алгоритмов. Так, метод, описанный в [5.21], направлен на
повышение эффективности решения линейных уравнений в кольцах вычетов,
поскольку все субэкспоненциальные методы дискретного логарифмирования сводятся к
этой задаче.
Ряд успешных атак, описанных, например, в [5.23], на системы, основанные на
сложности дискретного логарифмирования в конечных полях, привел к тому, в 2001 г.
России и США были приняты новые стандарты на ЭЦП [5.22, 5.24]. Процессы
формирования и проверки электронной ЭЦП существенно не изменились, однако
вместо элементов конечного поля
или
они оперируют эллиптическими
числами, т.е. решениями уравнения эллиптических кривых над указанными конечными
полями, а роль операции возведения в степень в конечном поле выполняет операция
взятия кратной точки эллиптической кривой. Если старый российский стандарт ЭЦП
оперирует 1024-битовыми блоками, то новый - 256-битовыми, но при этом обладает
большей стойкостью. Важно отметить, что специальный выбор типа эллиптической
кривой позволяет не только во много раз усложнить задачу взлома схемы ЭЦП, но и
уменьшить рабочий размер блоков данных. Криптосистемы на основе эллиптической
кривой получают все большее распространение скорее как альтернатива, а не замена
системам на основе RSA. Они имеют некоторые преимущества, особенно при
использовании в устройствах с маломощными процессорами и/или маленькой памятью.
Так, согласно стандарту США [5.24] на выработку и верификацию цифровой подписи
DSS (Digital Signature Standard), ЭЦП может вырабатываться по одному из трех
алгоритмов: DSA (Digital Signature Algorithm), основанному на проблеме
дискретного логарифма в конечном поле, ANSI X9.31 (RSA DSA) [5.26] или ANSI X9.63
[5.25] (EC DSA - алгоритм выработки подписи, основанный на проблеме дискретного
логарифма в группе точек эллиптической кривой над конечным полем).
Шифрование на платформе Windows
Шифрование - это форма криптографии, предназначенная для преобразования
открытого текста с помощью некоторого алгоритма таким образом, чтобы результат был
бессмыслицей для лица, не обладающего некоторым секретом для раскрытия исходных
данных. Шифрование лежит в основе таких мер безопасности, как цифровая подпись,
цифровой сертификат, инфраструктура открытых ключей и др. Перечисленные
технологии
позволяют
повысить
безопасность
операций,
выполняемых
с
использованием вычислительной техники. Для зашифрования и расшифрования
информации используются ключи. Ключ - это переменная, длина которой измеряется в
битах. Чем больше двоичных разрядов в используемом ключе, тем сложнее в общем
случае будет взломать шифр.
На платформах Windows XP и Windows Server 2003 компания Microsoft рекомендует
использовать следующие криптографические алгоритмы [5.11]:




AES-128 (или AES-192, или AES-256);
RSA 2048 (или с еще более длинным ключом);
SHA-2 (т.е. SHA-256 или SHA-512);
DSA (или SHA-2/RSA).
Криптография Windows Vista (и Longhorn Server) соответствует рекомендациям
Агентства Национальной Безопасности США и Национального института стандартов и
технологии (NIST) по реализации протоколов "Suite B" [5.12] и предусматривает
использование асимметричных криптоалгоритмов на основе эллиптических кривых.
Алгоритмы "Suite B" включают:

AES (шифрование);



EC-DSA (электронно-цифровая подпись);
EC-DH или EC-MQV (обмен секретными ключами);
SHA-2 (хеширование).
Далее мы более подробно рассмотрим алгоритмы шифрования (с секретным и открытым
ключом) и алгоритмы хеширования, а также приведем рекомендации Microsoft
относительно их применения.
Методы криптоанализа
Понятие криптоанализа
Криптоанализом (от греческого krypts - "скрытый" и analein - "ослаблять" или
избавлять") называют науку восстановления (дешифрования) открытого текста без
доступа к ключу. Хотя история криптоанализа насчитывает многие века, особенно
интенсивно эта область знаний начала развиваться с наступлением компьютерной эры.
Какие методы криптоанализа считаются наиболее эффективными сегодня, и что нас
ждет в будущем? Существует ли предельно стойкий шифр, взлом которого является
непосильной задачей при любом уровне развития криптоанализа и средств
вычислительной техники? В чем отличие научного и практического криптоанализа? На
эти и другие вопросы мы постараемся ответить в этой лекции.
Великий сыщик Шерлок Холмс утверждал, что "любая тайна, порожденная
человеческим сознанием, им же может быть и раскрыта." Его слова были в середине
40х гг. прошлого века опровергнуты великим ученым и основоположником
современной криптографии Клодом Шенноном. Он показал ([6.5]), что если на любой
исходный текст наложить (т.е. сложить по модулю с текстом) ключ длины не меньшей,
чем само сообщение, то такой шифр будет нераскрываемым: потенциальному
злоумышленнику потребуется перебрать все возможные ключи и каждым из них
попробовать расшифровать сообщение. Однако использование такого способа
шифрования, получившего название "одноразовых блокнотов", в большинстве случаев
оказывается слишком дорогим и неоправданным. Это связано с тем, что нет смысла
бороться за устойчивость системы защиты информации к взлому ниже некоторой
"фоновой" вероятности, т.е. вероятности события, которое мы не в состоянии
предотвратить [6.6]. Задача криптоанализа состоит в том, чтобы определить
вероятность взлома шифра и, таким образом, оценить его применимость в той или иной
области.
Попытка криптоанализа называется атакой. Криптоанализ ставит своей задачей в
разных условиях получить дополнительные сведения о ключе шифрования, чтобы
значительно уменьшить диапазон вероятных ключей. Результаты криптоанализа могут
варьироваться по степени практической применимости. Так, криптограф Ларс Кнудсен
[6.7] предлагает следующую классификацию успешных исходов криптоанализа
блочных шифров в зависимости от объема и качества секретной информации, которую
удалось получить:




Полный взлом - криптоаналитик извлекает секретный ключ.
Глобальная дедукция - криптоаналитик разрабатывает функциональный
эквивалент
исследуемого
алгоритма,
позволяющий
зашифровывать
и
расшифровывать информацию без знания ключа.
Частичная дедукция - криптоаналитику удается расшифровать или зашифровать
некоторые сообщения.
Информационная дедукция - криптоаналитик получает некоторую информацию
об открытом тексте или ключе.
Взлом шифра не всегда подразумевает обнаружение способа, применимого на практике
для восстановления открытого текста по перехваченному зашифрованному сообщению.
Допустим, для дешифрования текста методом полного перебора требуется перебрать
возможных ключей; тогда изобретение способа, требующего для дешифрования
операций по подбору ключа, будет считаться взломом. В научной криптологии под
взломом понимается лишь подтверждение наличия уязвимости криптоалгоритма,
свидетельствующее,
что
свойства
шифра
не
соответствуют
заявленным
характеристикам. Как правило, криптоанализ начинается с попыток взлома
упрощенной модификации алгоритма, после чего результаты распространяются на
полноценную версию.
Два последних десятилетия ознаменовались резким ростом числа открытых работ по
криптологии, а криптоанализ становится одной из наиболее активно развивающихся
областей
исследований.
Появился
целый
арсенал
математических
методов,
представляющих
интерес
для
криптоаналитика.
Кроме
того,
повышение
производительности вычислительной техники сделало возможными такие типы атак,
которые раньше были неосуществимы.
Появление новых криптографических алгоритмов приводит к разработке методов их
взлома. Если целью криптоаналитика является раскрытие возможно большего числа
шифров (независимо от того, хочет ли он этим нанести ущерб обществу, предупредить
его о возможной опасности или просто получить известность), то для него наилучшей
стратегией является разработкауниверсальных методов анализа [6.1]. Но эта задача
является также и наиболее сложной. Результатом возникновения каждого нового
метода криптоанализа является пересмотр оценок безопасности шифров, что, в свою
очередь, влечет необходимость создания более стойких шифров. Таким образом,
исторические этапы развития криптографии и криптоанализа неразрывно связаны.
На рис.6.1 методы криптоанализа систематизированы по хронологии их появления и
применимости для взлома различных категорий криптосистем. Горизонтальная ось
разделена на временные промежутки: в область "вчера" попали атаки, которые
успешно применялись для взлома шифров в прошлом; "сегодня" - методы
криптоанализа, представляющие угрозу для широко используемых в настоящее время
криптосистем; "завтра" - эффективно применяемые уже сегодня методы, значение
которых в будущем может возрасти, а также методы, которые пока не оказали
серьезного влияния на криптологию, однако со временем могут привести прорывам во
взломе шифров. На вертикальной оси обозначены области применения методов
криптоанализа: для взлома криптосистем с секретным ключом, открытым ключом или
хеш-функций.
Рис. 6.1. Методы криптоанализа
Прежде чем перейти к рассмотрению изображенных на диаграмме типов
криптоаналитических атак, введем ряд понятий и обозначений, которые потребуются
нам в дальнейшем: открытый текст будем обозначать буквой
, шифртекст - буквой
(в качестве
может выступать любая последовательность битов: текстовый файл,
оцифрованный звук, точечный рисунок и т.д.). Пусть для зашифрования и
расшифрования используются ключи
и
соответственно (в симметричной
криптографии
); обозначим функцию зашифрования
. Тогда выполняются соотношения
, расшифрования .
Частотный анализ
На протяжении веков дешифрованию криптограмм помогает частотный анализ
появления отдельных символов и их сочетаний. Идея этого метода хорошо известна
любителям детективов по рассказу А. Конан Дойля "Пляшущие человечки".
Вероятности появления отдельных букв, а также их порядок в словах и фразах
естественного
языка
подчиняются
задокументированным
статистическим
закономерностям: например, пара стоящих рядом букв "ся" в русском языке более
вероятна, чем "цы", а "оь" не встречается никогда. Анализируя достаточно длинный
текст, зашифрованный методом замены, можно по частотам появления символов
произвести обратную замену и восстановить исходный текст.
Как было отмечено выше, каждый метод криптоанализа добавляет новые требования к
алгоритмам шифрования. Частотный метод, в котором по распределению символов в
шифртексте выдвигаются гипотезы о ключе шифрования, породил требование
равномерного распределения символов в шифртексте. Кроме того, принципы
частотного анализа сегодня широко применяются в программах по поиску паролей и
позволяют сократить перебор в десятки и сотни раз.
Метод полного перебора
С появлением высокопроизводительной вычислительной техники у криптоаналитиков
появилась возможность вскрывать шифры методом перебора ключей.
При осуществлении попытки атаки на основе только шифртекста криптоаналитику
требуется анализировать выходные данные алгоритма и проверять их "осмысленность".
В случае, когда в качестве объекта шифрования выступает графический файл или
программа, задача определения "осмысленности" выходных данных становится очень
трудной. Если известно, что открытый текст представляет собой предложение на
естественном языке, проанализировать результат и опознать успешный исход
дешифрования сравнительно несложно, тем более что криптоаналитик зачастую
располагает некоторой априорной информацией о содержании сообщения. Задачу
выделения осмысленного текста, т.е. определения факта правильной дешифрации,
решают при помощи ЭВМ с использованием теоретических положений, разработанных в
конце XIX века петербургским математиком Марковым А.А., - цепей Маркова.
Атаки с использованием известного или подобранного открытого текста встречаются
чаще, чем можно подумать. В среде криптоаналитиков нельзя назвать неслыханными
факты добычи открытого текста шифрованного сообщения или подкупа лица, которое
должно будет зашифровать избранное сообщение. Предположим, злоумышленнику
известна одна или несколько пар
. Пусть для простоты для любой пары
существует единственный ключ
, удовлетворяющий соотношению
.
Примем проверку одного варианта ключа k \in K за одну операцию. Тогда полный
перебор ключей потребует
операций, где
- число элементов в множестве.
Если в качестве оценки трудоемкости метода взять математическое ожидание
случайной величины, соответствующей числу опробований до момента обнаружения
использованного ключа, то мы получим
операций. Кроме того, алгоритм полного
перебора допускает распараллеливание, что позволяет значительно ускорить
нахождение ключа.
Оценка предельных мощностей взлома
Можно подумать, что с ростом мощности компьютеров разрядность ключа, достаточная
для обеспечения безопасности информации против атаки методом полного перебора,
будет неограниченно расти. Однако это не так. Существуют фундаментальные
ограничения вычислительной мощности, наложенные структурой вселенной: например,
скорость передачи любого сигнала не может превышать скорость распространения
света в вакууме, а количество атомов во Вселенной (из которых, в конечном счете,
состоят компьютеры) огромно, но конечно. Так, например, в [6.4] описаны два
фундаментальных ограничения:
1. Предел, основанный на выделяемой Солнцем энергии. Все вычисления
потребляют энергию. Согласно принципам классической термодинамики и
статистической
механики,
потребление
энергии
при
осуществлении
необратимого преобразования (вычисления) имеет порядок
, где
температура окружающей среды (по абсолютной шкале Кельвина), а
постоянная Больцмана (равная
Солнца составляет приблизительно
). Мощность излучения
; таким образом, за весь свой
предполагаемый период существования - 10 млрд. лет, или
Солнце выделит около
секунд -
Дж). Предположим, температура окружающей среды
градусов,
тогда
энергозатраты
на
одну
операцию
составляют
. Значит, количество вычислительных операций, которые можно
осуществить с использованием всей выделяемой солнцем энергии, равно
выделяемой мощности, поделенной на количество энергии, необходимой для
осуществления одной операции, т.е. всего
операций. Такое количество
операций потребовалось бы на взлом ключа из 73 десятичных цифр (или около
250 бит) методом прямого перебора при грубом предположении, что для
проверки одного значения ключа необходима всего одна операция (на самом
деле - сотни операций). Для справки, количество атомов солнечной системы около
.
2. Предел, основанный на массе Земли. Масса Земли составляет порядка
кг. Масса протона -
, т.е. Земля содержит приблизительно
протонов. Сопоставим каждому протону отдельный компьютер и примем
за скорость выполнения операции на таком компьютере время, за которое луч
света
проходит
расстояние,
равное
диаметру
этого
протона
(
). Таким образом, каждый компьютер может выполнять
операций
параллельно,
операций
в
их
в
секунду.
суммарное
секунду,
т.е.
Если
все
эти
быстродействие
операций
в
компьютеры
будут
работать
составит
секунду.
Возраст
Вселенной
приблизительно 10 млрд. лет, т.е.
секунд. За весь период
существования Вселенной такие гипотетические компьютеры размером с протон
смогли бы выполнить
операций. При описанных в п. 1 предположений
относительно количества операций, необходимых на проверку значения ключа,
такое количество операций позволит взломать ключ длиной 95 десятичных
цифр, или 320 бит.
Таким образом, минимальный размер ключа, необходимый для защиты информации от
атак злоумышленника, будет расти по мере повышения быстродействия компьютеров;
тем не менее, приведенные выше вычисления показывают, что существует возможность
выбрать такую длину ключа, что атаку методом полного перебора будет осуществить в
принципе невозможно, вне зависимости от повышения вычислительной мощности
компьютеров или успехов в области классической теории алгоритмов.
Атака по ключам
Одной из причин ненадежности криптосистем является использование слабых ключей.
Фундаментальное
допущение
криптоанализа,
впервые
сформулированное
О.
Кирхгоффом, состоит в том, что секретность сообщения всецело зависит от ключа, т.е.
весь механизм шифрования, кроме значения ключа, известен противнику (секретность
алгоритма не является большим препятствием: для определения типа программно
реализованного криптографического алгоритма требуется лишь несколько дней
инженерного анализа исполняемого кода). Слабый ключ - это ключ, не
обеспечивающий достаточного уровня защиты или использующий в шифровании
закономерности, которые могут быть взломаны. Алгоритм шифрования не должен иметь
слабых ключей. Если это невозможно, то количество слабых ключей должно быть
минимальным, чтобы уменьшить вероятность случайного выбора одного из них; все
слабые ключи должны быть известны заранее, чтобы их можно было отбраковать в
процессе создания ключа.
Генераторы случайных чисел - еще один источник угрозы для стойкости
криптосистемы. Если для генерации ключей используется криптографический слабый
алгоритм, независимо от используемого шифра вся система будет нестойкой.
Качественный ключ, предназначенный для использования в рамках симметричной
криптосистемы, представляет собой случайный двоичный набор. Если требуется ключ
разрядностью
, в процессе его генерации с одинаковой вероятностью должен
получаться любой из
возможных вариантов. Исследования компании Counterpane,
президентом которой является известный криптограф Брюс Шнайер, показали, что
определённые генераторы случайных чисел могут быть надёжными при использовании
с одной целью, но ненадёжными для другой; обобщение анализа надёжности опасно.
Метод "встречи посередине"
Известно, что если считать, что дни рождения распределены равномерно, то в группе
из 23 человек с вероятностью 0,5 у двух человек дни рождения совпадут. В общем виде
парадокс дней рождения формулируется так: если
предметов выбираются с
возвращением из некоторой совокупности размером
, то вероятность того, что два из
них совпадут, равна
в году,
(в описанном частном случае
, т.е.
- количество дней
).
Данный метод криптоанализа (см. [6.1]) основан на "парадоксе дней рождения". Пусть
нам нужно найти ключ
по известному открытому тексту
и криптограмме
. Если
множество ключей криптоалгоритма замкнуто относительно композиции, т.е. для любых
ключей
и
>найдется ключ
последовательно на
и
такой, что результат шифрования любого текста
равен результату шифрования этого же текста на
, т.е.
, то можно воспользоваться этим свойством. Поиск ключа
сведем к поиску эквивалентной ему пару ключей
,
. Для текста
построим базу
данных, содержащую случайное множество ключей
и соответствующих криптограмм
, и упорядочим ее по криптограммам
. Объем базы данных выбираем
, где
образом
- мощность множества ключей
ключи
для
расшифровки
текстов
. Затем подбираем случайным
и
сравниваем с базой данных. Если текст
криптограмм
, то ключ
результат
расшифрования
окажется равным одной из
эквивалентен искомому ключу
.
Алгоритм является вероятностным. Существуют детерминированный аналог этого
алгоритма "giant step - baby step" с такой же сложностью, предложенный американским
математиком Д. Шенксом.
Криптоанализ симметричных шифров
Наибольший прогресс в разработке методов раскрытия блочных шифров был достигнут
в самом конце ХХ века и связан с появлением двух методов -разностного
(дифференциального) криптоанализа и линейного криптоанализа.
Метод разностного анализа сочетает в себе обобщение идеи общей линейной структуры
с применением вероятностно-статистических методов исследования. Этот метод
относится к атакам по выбранному открытому тексту. Хотя Д. Копперсмит утверждает,
что разностный криптоанализ был известен команде разработчиков DES алгоритма еще
в начале 70-х годов, официальной датой появления этого метода считается 1990 г., а
первенство в разработке признано за израильскими математиками Э. Бихамом и А.
Шамиром. Разностный анализ основан на использовании неравновероятности в
распределении значений разности двух шифртекстов, полученных из пары открытых
текстов, имеющих некоторую фиксированную разность. Отметим, что разностный
анализ применим и для взлома хеш-функций.
Подобно разностному анализу, линейный криптоанализ является комбинированным
методом, сочетающим в себе поиск линейных статаналогов для уравнений шифрования,
статистический анализ имеющихся открытых и шифрованных текстов, использующий
также методы согласования и перебора. Этот метод исследует статистические линейные
соотношения
между
отдельными
координатами
векторов
открытого
текста,
соответствующего шифртекста и ключа, и использует эти соотношения для
определения статистическими методами отдельных координат ключевого вектора.
На сегодняшний день метод линейного криптоанализа позволил получить наиболее
сильные результаты по раскрытию ряда итерационных систем блочного шифрования, в
том числе и системы DES. Метод линейного криптоанализа в неявном виде появился
еще в работе С. Мёрфи в 1990 г., где он успешно применялся при анализе системы
блочного шифрования FEAL. В 1992 г. М. Мацуи формализовал этот подход, а позже
успешно применил его к анализу криптоалгоритма DES. В 2001 г. в США на смену DES и
Triple DES пришел новые стандарт AES, действующий и по сей день.
Криптоанализ асимметричных шифров
Практически все используемые алгоритмы асимметричной криптографии основаны на
задачах факторизации (например, известная криптосистема RSA) и дискретного
логарифмирования в различных алгебраических структурах (схема электронноцифровой подписи Эль-Гамаля). Несмотря на то, что принадлежность этих задач к
классу NP-полных задач не доказана, на сегодняшний день не найден полиномиальный
алгоритм их решения. Для криптоанализа асимметричных криптосистем можно
применять универсальные методы - например, метод "встречи посередине". Другой
подход заключается в решении математической задачи, положенной в основу
асимметричного шифра. С того момента, как У. Диффи и М. Хеллман в 1976 г.
предложили концепцию криптографии с открытым ключом, проблемы факторизации
целых чисел и дискретного логарифмирования стали объектом пристального изучения
математиков всего мира. За последние годы в этой области наблюдался значительный
прогресс. Подтверждением тому может служить следующий казус: в 1977 г. Р. Ривест
заявил, что разложение на множители 125-разрядного числа потребует 40
квадриллионов лет, однако уже в 1994 г. было факторизовано число, состоящее из 129
двоичных разрядов!
Задача дискретного логарифмирования считается более сложной, чем задача
факторизации. Если будет найден полиномиальный алгоритм ее решения, станет
возможным и разложение на множители (обратное не доказано).
Последние достижения теории вычислительной сложности показали, что общая
проблема логарифмирования в конечных полях уже не является достаточно прочным
фундаментом. Наиболее эффективные на сегодняшний день алгоритмы дискретного
логарифмирования имеют уже не экспоненциальную, а субэкспоненциальную
временную сложность. Это алгоритмы "index-calculus", использующие факторную базу.
Первый такой алгоритм для вычисления дискретного логарифма в простом поле
был
предложен Л. Адлеманом. На практике алгоритм Адлемана оказался недостаточно
эффективным; Д. Копперсмит, А. Одлыжко и Р. Шреппель предложили свою версию
субэкспоненциального алгоритма дискретного логарифмирования - "COS". Алгоритм
решета числового поля, предложенный О. Широкауэром, при
эффективнее различных модификаций метода COS.
работает
Ряд
успешных
атак
на
системы,
основанные
на
сложности
дискретного
логарифмирования в конечных полях, привел к тому, что стандарты ЭЦП России и США,
которые были приняты в 1994 г. и базировались на схеме Эль-Гамаля, в 2001 году
были обновлены: переведены на эллиптические кривые. Схемы ЭЦП при этом остались
прежними, но в качестве чисел, которыми они оперируют, теперь используются не
элементы конечного поля
или
, а эллиптические числа - решения
уравнения эллиптических кривых над указанными конечными полями. Алгоритмов,
выполняющих дискретной логарифмирование на эллиптических кривых в общем случае
хотя бы с субэкспоненциальной сложностью, на сегодняшний день не существует, хотя
работы в этом направлении ведутся. Так, для эллиптических кривых специального вида
наш соотечественник И. Семаев указал способ сведения задачи логарифмирования в
группе точек эллиптической кривой к задаче логарифмирования в некотором
расширении простого поля.
Криптоанализ хеш-функций
Основная атака на хеш - это метод коллизий [6.2] . Пусть
и
хеш-функция, а ЭЦП представляет собой некоторую функцию
- сообщения,
от хеша сообщения:
. Законный обладатель пары "открытый ключ - секретный ключ" готов
подписать сообщение
, но злоумышленник заинтересован в получении подписи под
сообщением
. Если
выбрано так, что
, то злоумышленник
может предъявить пару
: тогда атака удалась. Реализовать подбор такого
сообщения можно методом, который основан на упомянутом выше "парадоксе дней
рождения". Варьируя интервалы, шрифты, формат и т.п., злоумышленник получает
пар вариантов
и
без изменения их смысла. Сообщения
отличаются
слабо, а их хеш-функции - значительно, т.е. можно считать, что значения хеш-функций
выбираются случайно, равновероятно и независимо друг от друга. Тогда при
(
- некоторая константа,
- мощность множества всевозможных хеш-
функций) вероятность того, что имеется пара сообщений
, вычисляется по формуле
и
, для которых
.
Этот метод криптоанализа породил требования устойчивости к коллизиям для хешфункций.
Криптоанализ по побочным каналам
Атаки по сторонним, или побочным, каналам используют информацию, которая может
быть получена с устройства шифрования и не является при этом ни открытым текстом,
ни шифртекстом. Такие атаки основаны на корреляции между значениями физических
параметров, измеряемых в разные моменты во время вычислений, и внутренним
состоянием вычислительного устройства, имеющим отношение к секретному ключу.
Этот подход менее обобщённый, но зачастую более мощный, чем классический
криптоанализ.
В последние годы количество криптографических атак, использующих слабости в
реализации и размещении механизмов криптоалгоритма, резко возросло. Противник
может замерять время, затрачиваемое на выполнение криптографической операции,
или анализировать поведение криптографического устройства при возникновении
определённых ошибок вычисления. Другой подход предполагает отслеживание
энергии, потребляемой смарт-картой в процессе выполнения операций с секретным
ключом (например, расшифрования или генерации подписи). Побочную информацию
собрать порой несложно - на сегодняшний день выделено более десяти побочных
каналов, в т.ч. электромагнитное излучение, ошибки в канале связи, кэш-память и
световое излучение. Более подробное описание перечисленных типов атак можно
найти в материалах доклада А.Е.Жукова на конференции РусКрипто2006 [6.3] ,
использованных при подготовке данного раздела.
Нанотехнологии в криптоанализе
С помощью квантового компьютера можно проводить вычисления, не реализуемые на
сегодняшних (классических) компьютерах. В 1994 году П. Шор открыл так называемый
"ограниченно-вероятностный" алгоритм факторизации, который позволяет разложить
на множители число
за полиномиальное от размерности задачи время
.
Алгоритм Шора разложения чисел на множители явился главным достижением в
области квантовых вычислительных алгоритмов. Это был не только крупный успех
математики. Именно с этого момента началось усиленное финансирование работ по
созданию квантовых компьютеров.
Важно отметить, что алгоритм Шора чрезвычайно прост и довольствуется гораздо более
скромным аппаратным обеспечением, чем то, которое понадобилось бы для
универсального квантового компьютера. Поэтому вероятно, что квантовое устройство
для разложения на множители будет построено задолго до того, как весь диапазон
квантовых вычислений станет технологически осуществимым. На сегодняшний день
есть конкретные результаты. Так, IBM продемонстрировала использование созданного
в лабораториях компании семикубитового квантового компьютера для факторизации
чисел по алгоритму Шора. Хотя решённая им задача вряд ли способна поразить
воображение (компьютер верно определил, что делителями числа 15 являются числа 5
и 3), это самое сложное вычисление в области теории чисел за всю историю квантовых
компьютеров.
Экономика информационной безопасности на примере оценки криптосистем
Важность экономического обоснования инвестиций в ИБ подчеркивал В.Мамыкин,
директор по информационной безопасности кабинета президента Microsoft в России и
СНГ, в своих выступлениях на конференциях Security @ Interop'2008 и ITSummit'2008 [7.48]. Согласно [7.49], большинство зарубежных компаний (84%)
используют ROI и другие инструменты для оценки инвестиций в ИБ, которые
составляют в среднем 5% всего ИТ-бюджета. В России на ИБ идет 0,5% ИТ бюджета,
т.е. в 10 раз меньше. Такую ситуацию В.Мамыкин напрямую связывает с тем, что в
нашей стране пока не получила широкого распространения практика оценки
эффективности средств обеспечения ИБ с экономических позиций.
Расчет финансово-экономических показателей СЗИ позволяет решить следующие
задачи [7.47]:




Обоснование внедрения системы по обеспечению информационной безопасности
на предприятии с экономической точки зрения;
Оценка экономической эффективности внедрения или замены системы
безопасности информации;
Прогнозирование расходов по созданию/ функционированию/ модернизации СЗИ
(задача управления бюджетом);
Сравнение по экономическим критериям нескольких вариантов создания СЗИ,
построенных на различных архитектурах (системах и компонентах), с целью
выбора оптимального варианта реализации проекта (задача выбора ИТстратегии).
Качество информации, необходимой для принятия решения о целесообразности
инвестиций, в первую очередь, будет зависеть от исходных данных, на основе которых
производились вычисления. Уязвимым местом в любой методике расчета является
именно сбор и обработка первичных данных, их качество и достоверность. Одним из
основных вопросов является оценка затрат на ИБ. Выбор необходимой степени защиты
должен учитывать ряд критериев: уровень секретности информации; ее стоимость;
время, в течение которого она должна оставаться в тайне и т.д. Известный криптограф
Брюс Шнайер (Bruce Schneier) в работе [7.26] подчеркивает, что термин "безопасность"
лишен смысла без сведений о том, от кого и на какой срок защищена информация. Это
утверждение применимо как к системам обеспечения безопасности в целом, так и к их
важнейшему компоненту - средствам криптографической защиты информации.
Средства криптографической защиты информации (СКЗИ) представляют собой средства
вычислительной техники, осуществляющие криптографическое преобразование
информации для обеспечения ее безопасности. Росс Андерсон (Ross J Anderson),
ведущий эксперт в области информационной безопасности, в своей статье [7.3]
приходит к выводу, что при оценке уровня защищенности специалист должен
принимать во внимание не только технические характеристики криптосистемы,
получаемые путем криптоанализа и анализа информационных потоков, но
использовать также и экономические инструменты.
Рассмотрим возможность разработки методики анализа эффективности СКЗИ с учетом
того, каким угрозам защищаемая информация будет подвергаться со стороны
злоумышленников.
Для решения поставленной задачи необходимо:




формализовать процесс оценки эффективности криптографической защиты;
разработать математическую модель угроз безопасности информационных
ресурсов, защищенных с использованием криптографических средств;
обеспечить криптоаналитика набором инструментальных средств, позволяющих
оценить
стойкость
криптографических
средств
по
отношению
к
идентифицированным угрозам;
провести анализ существующих методов оценки СКЗИ с экономических позиций
и
выбрать
финансово-экономические
показатели,
подходящие
для
экономической оценки инвестиций в СКЗИ.
Поставленные цели согласуются с задачами, вошедшими в перечень основных
направлений
и
приоритетных
проблем
научных
исследований
в
области
информационной безопасности Российской Федерации, который был разработан
секцией по информационной безопасности Научного совета при Совете Безопасности
Российской Федерации при активном участии ведущих ученых и специалистов научных
учреждений и организаций РАН, вузов, федеральных органов исполнительной власти,
работающих в различных областях, связанных с обеспечением национальной
безопасности (см. [7.44], пп. 46, 47 и 56).
Процесс
защиты
оценки
эффективности
криптографической
Анализ существующих подходов
При оценке эффективности СКЗИ важнейшим критерием считается криптостойкость,
т.е. способность противостоять атакам криптоаналитика [7.40]. Такой подход не
учитывает других важных требований к криптосистемам, а именно (см. [7.46]):




минимальный объем используемой ключевой информации;
минимальная сложность реализации (в количестве машинных операций);
стоимость;
высокое быстродействие.
Кроме того, использование СКЗИ, обеспечивающих устойчивость к взлому ниже
некоторой "фоновой" вероятности, является экономически неоправданным [7.35].
Например, если вероятность выхода компании из бизнеса равна 2 30 (менее чем один из
миллиона), то есть ли смысл для защиты информации, которая может нанести компании
ущерб, сопоставимый с кризисом рынка, использовать алгоритм, вероятность вскрытия
которого за приемлемое время составляет 2100?
В статье В.П.Иванова [7.38] эффективность криптографических средств защиты
предлагается оценивать с использованием математического аппарата теории массового
обслуживания и теории катастроф на основе вероятностно-временной группы
показателей, в числе которых:



среднее время безопасного функционирования защищаемой системы;
время безопасного функционирования защищаемой системы с вероятностью НСД
не выше заданной;
экономическая эффективность созданной системы защиты информации.
Выбор показателей эффективности представляет интерес, однако методика имеет ряд
критических недостатков, которые делают невозможным ее применение на практике
для оценки современных СКЗИ. В первую очередь это границы применимости: методика
подходит только для оценки криптосистем, принадлежащих по классификации
Ж.Брассара (Gilles Brassard) [7.6] к классу криптосистем ограниченного использования,
стойкость которых основывается на сохранении в секрете алгоритмов зашифрования и
расшифрования. Однако, согласно фундаментальному допущению Кирхгоффа (Auguste
Kerckhoffs) [7.14], стойкость криптосистемы должна основываться не на секретности
алгоритмов зашифрования и расшифрования, а на секретности некоторого значения,
которое называется ее ключом. Все современные криптосистемы построены по этому
принципу, и исследования их надежности всегда должны проводиться в
предположении, что потенциальному противнику о криптосистеме известно все, за
исключением используемого ключа.
Еще одним недостатком методики, описанной в работе [7.38], является то, что она не
учитывает зависимости эффективности криптосистемы от условий ее использования.
Очевидно, эффективность одной и той же криптосистемы в разных контекстах может
существенно отличаться, т.к. среда функционирования системы накладывает
определенные ограничения на возможные сценарии атак.
Существуют методики, позволяющие построить модели угроз и уязвимостей
информационных систем и на основе анализа рисков получить количественную оценку
соотношения потерь от угроз безопасности и затрат на создание системы защиты (см.,
например, [7.39]):



метод CRAMM, разработанный Агентством по компьютерам и телекоммуникациям
Великобритании по заданию Британского правительства [7.9];
семейство программных продуктов RiskWatch от одноименной американской
компании [7.23];
комплексная система анализа и управления рисками информационной системы
ГРИФ, созданная отечественной компанией Digital Security [7.10].
Эти инструментальные средства полезны специалисту при проведении аудита систем
обеспечения безопасности предприятия, однако они не учитывают специфики СКЗИ и,
как показано в [7.34], не подходят для решения поставленной в данной работе задачи.
Наконец,
существуют
методы
формального
анализа
криптопротоколов.
Криптографический протокол [7.24] регламентирует последовательность действий,
выполняемых двумя и более сторонами для решения какой-либо задачи с
использованием криптографических преобразований и алгоритмов. Можно выделить
три основных класса методов анализа криптопротоколов:

Дедуктивные
методы, основанные на автоматическом доказательстве
теорем, связанных со свойствами исследуемого криптопротокола [7.5];

Методы
анализа
состояний, моделирующие криптопротокол
в
виде
конечного автомата [7.4];

Методы статического анализа, объектом исследования в которых являются
потоки данных и управления [7.7].
Перечисленные подходы имеют существенный недостаток: все они построены на
предположении, что используемые в протоколе криптографические примитивы
идеальны. Рассматривается только концептуальная схема протокола, от конкретных
методов шифрования и их подверженности атакам злоумышленника принято
абстрагироваться.
Модель процесса оценки эффективности СКЗИ
Наиболее эффективным при выборе и оценке криптографической системы считается
использование экспертных оценок [7.46]. При оценке эффективности СКЗИ необходимо
принимать во внимание взаимосвязь факторов, определяющих ее подверженность
атаке определенного типа. Упрощенное графическое представление модели сценария
атаки изображено на рис. 7.1. Во избежание избыточности из модели исключен элемент
"Защищаемые ресурсы", который задается неявно - через элемент "Злоумышленник"
(характер зашифрованной информации определяет возможных злоумышленников,
которые могут осуществлять попытки взлома в целях нарушения конфиденциальности,
целостности или доступности).
Рис. 7.1. Модель сценария взлома
На основании предложенной модели сценария атаки построена модель угроз
безопасности информационных ресурсов из трех элементов [7.30] - ABC-модель ("A" от
англ. Attack - атака, "B" от англ. code-Breaker - взломщик шифра, "C" от англ.
Cryptosystem - криптосистема). Математическое описание ABC-модели дано позже,
здесь мы рассмотрим процесс экспертной оценки эффективности криптографической
защиты (графическая модель процесса изображена на рис. 7.2).
Целью этапов 1-3 является построение ABC-модели. Первый этап - определение объекта
исследования. Здесь описываются конкретные характеристики криптосистемы. На
втором этапе задаются параметры, определяющие тип потенциальных взломщиков
криптосистемы. Как будет показано в следующем разделе, при наличии формальных
представлений исследуемой криптосистемы и потенциальных злоумышленников мы
можем перейти к третьему этапу, т.е. определить типы атак, которым подвержена
криптосистема, а также связанный с ними риск.
Четвертый этап представляет собой анализ устойчивости криптосистемы к атакам,
определенным на третьем этапе. Для проведения криптоанализа специалиста
необходимо обеспечить набором инструментальных средств, исследование и
разработке которых будет рассмотрена далее.
Наконец, пятый этап предполагает использование различных подходов к оценке
экономической эффективности инвестиций в СКЗИ на основании данных, полученных
на этапах 1-4.
Рис. 7.2. Процесс оценки эффективности криптографической защиты
Моделирование
ресурсов
угроз
безопасности
информационных
Задача состоит в разработке ABC-модели угроз безопасности информационных
ресурсов, защищенных с использованием криптографических средств, которая даст
возможность формализовать взаимосвязь между параметрами криптосистемы,
потенциальных злоумышленников и возможных атак. Для решения поставленной
задачи необходимо:

Разработать многокритериальные классификационные схемы, позволяющие
идентифицировать:
o криптосистему - с учетом особенностей ее реализации;
o потенциального взломщика - с учетом его мотивации, возможностей и
квалификации;
o криптоаналитическую атаку - с учетом применимости к различным


криптосистемам и необходимых для ее осуществления ресурсов.
На основе разработанных классификаций создать параметрические модели
криптосистем, атак и злоумышленников;
Установить зависимость возможных сценариев взлома от характеристик
злоумышленников
и
от
особенностей
реализации
исследуемой
криптосистемы.
Анализ существующих подходов
Для идентификации исследуемой криптосистемы нужно выделить набор ее ключевых
свойств. Известны классификации криптосистем, в числе которых - классификационная
схема, предложенная швейцарским математиком и криптографом У.Маурером (Ueli
Maurer) [7.21] и основанная на том, чтобы различать криптосистемы по количеству
ключей, упомянутая выше схема Ж.Брассара [7.6], в которой криптосистемы
различаются в зависимости от сохранения в секрете механизма шифрования. Ни одна
из этих классификаций сама по себе не позволит идентифицировать криптосистему необходима многокритериальная классификация. С этой точки зрения представляет
интерес работа К.Черезова [7.43], в которой предлагаются обобщающие критерии для
сравнения продуктов на российском рынке СКЗИ:










Фирма-производитель;
Тип реализации;
Наличие действующих сертификатов соответствия ФСБ России и классы защиты;
Реализованные криптографические алгоритмы;
Поддерживаемые операционные системы;
Предоставляемый программный интерфейс;
Наличие реализации протокола SSL/TLS;
Поддерживаемые типы ключевых носителей;
Интегрированность с продуктами и решениями компании Microsoft;
Наличие дистрибутива продукта в свободном доступе на сайте производителя,
дилерской сети распространения и сервиса поддержки.
Недостатком приведенной классификации для построения параметрической модели
криптосистемы является то, что для решения поставленной в нашей работе задачи
важны не "потребительские" и "технические" характеристики СКЗИ, а их свойства,
определяющие подверженность тем или иным атакам.
Типы взломщиков, от которых криптосистема должна обеспечить защиту, определяют
разумный уровень безопасности. Чтобы понять, каким атакам будет подвергаться
система, необходимо выделить наиболее вероятных взломщиков. Классификации
Дж.Говарда (John D Howard) [7.13] и Б.Шнайера [7.25], в которых злоумышленники
различаются в зависимости от их движущих мотивов, подходят для высокоуровневого
анализа контекста использования криптосистемы, однако не позволяют установить
зависимость возможных сценариев атак от характеристик злоумышленников.
Существует большое количество классификаций и таксономий атак. Недостатком схем,
описанных в [7.15, 7.17, 7.22, 7.28], является то, что они разработаны для описания
атак на компьютерные системы, а объектом нашего исследования является более узкий
класс атак - криптоаналитические атаки. Классификация Кирхгоффа [7.14] по доступу
к открытому и зашифрованному тексту с появлением атак по побочным каналам [7.37]
уже не может считаться полной; кроме того, она не позволяет учитывать такие важные
факторы, как объем необходимых ресурсов, возможность распараллеливания и т.д.
Математическая
модель
информационных ресурсов
угроз
безопасности
На основе анализа существующих классификационных схем, перечисленных выше,
нами были разработаны новые многокритериальные классификации криптосистем, атак
и злоумышленников (см. рис. 7.3 - 7.5). Далее мы покажем, как применение
разработанных классификационных схем для построения ABC-модели позволяет
провести всесторонний анализ угроз безопасности информационных ресурсов,
защищенных с использованием криптографических средств.
Пусть
- множество параметрических моделей атак, где
(
) - множество значений i-го параметра модели атаки, определяющего тип
атаки в соответствии с критериями разработанной классификации. Каждая модель
представляет собой вектор
, где
.
Аналогично, параметрическая модель злоумышленника задается в виде вектора
, где
модели
,
злоумышленника,
(
модель
) - множество значений j-го параметра
криптосистемы
,
где
,
(
) - множество значений k-го параметра
модели криптосистемы в соответствии с многокритериальной классификацией. Заметим,
что множества значений параметров модели атаки, злоумышленника и криптосистемы
конечны.
При дальнейшем изложении для краткости слово "модель" применительно к модели
атаки, модели злоумышленника и модели криптосистемы будем опускать.
С каждой атакой будем связывать значение риска, вычисляемое по общеизвестной
формуле на основе двух факторов - вероятности происшествия и тяжести возможных
последствий:
Риск = Влияние Вероятность
Обозначим
связанного
через
с атакой
злоумышленником
в
функцию, задающую уровень риска,
условиях, когда она может быть применена
для взлома криптосистемы
.
Пусть
- функция влияния (от англ. impact - влияние, воздействие).
Под влиянием мы будем понимать степень ущерба от применения атаки
к
криптосистеме
.
Пусть
- вероятность того, что злоумышленник
предпримет
атаку
, т.е. обладает ресурсами для ее осуществления и сочтет эту атаку
целесообразной.
Тогда функция риска
Определим
выражается следующим образом:
функцию
.
, , , где
чисел. Здесь функция
Для
этого
рассмотрим
семейство
функций
- множество неотрицательных действительных
задает уровень взаимного влияния параметра криптосистемы
и параметра атаки

:
, если атака со значением параметра
криптосистеме со значением параметра

, если значение параметра
не применима к
;
криптосистемы
вероятность успешного применения атаки со значением параметра
Рис. 7.3. Классификация криптосистем
снижает
;
Рис. 7.4. Классификация злоумышленников
увеличить
изображение
Рис. 7.5. Классификация криптоатак

, если значение параметра
применимость атаки с параметром

не влияет на
;
, если значение параметра
то, что атака с параметром
криптосистемы
криптосистемы
указывает на
применима для ее взлома.
Например, если исследуемый алгоритм шифрования реализован в аппаратном
обеспечении, это повышает вероятность применения для взлома криптосистемы атак по
побочным каналам [7.37] (это вид криптографических атак, использующих
информацию, которая может быть получена с устройства шифрования и не является
при этом ни открытым текстом, ни шифртекстом). Уровень взаимного влияния
параметров криптосистемы и атаки определяется на основе экспертных оценок.
Обозначим через
нормированную функцию:
Тогда уровень ущерба от применения
вычисляется по следующей формуле:
атаки
к
криптосистеме
,
где атака и криптосистема заданы параметрами
и
соответственно. Заметим, что уровень влияния всех параметров криптосистемы на
применимость атаки с заданным значением -го параметра в этой формуле вычисляется
по мультипликативному критерию:
. Если значение хотя бы одного из
параметров криптосистемы противоречит возможности применения атаки, то
результатом оценки применимости атаки к криптосистеме будет нулевое значение, что
соответствует нулевому уровню ущерба от атаки.
Функция
, определяющая зависимость между параметрами
атаки и
злоумышленника, выражается аналогично функции
. В
качестве иллюстрации взаимосвязи параметров злоумышленника и атаки можно
привести следующий пример: наличие у предполагаемого взломщика доступа к
распределенным вычислительным ресурсам повышает вероятность применения метода
"грубой силы" и, вообще говоря, любой атаки, легко поддающейся распараллеливанию.
Таким образом, общая формула для определения уровня риска, связанного с атакой
в условиях, когда эта атака может быть применена злоумышленником
для взлома криптосистемы
, имеет вид:
Будем считать, что криптосистема
ей угрожает злоумышленник
подвержена атаке
, если
в условиях, когда
, т.е. связанный с ней
уровень риска превышает заданное пороговое значение , где
. Допустимый
уровень риска является настраиваемым параметром ABC-модели угроз криптосистемы.
Значение задается с учетом двух критериев:


критичности защищаемых данных;
временных и других ресурсов, доступных специалисту, который осуществляет
аудит системы.
В общем случае:

криптосистема может включать несколько подсистем (например, генератор
ключей и симметричный шифратор), к каждой из которых применим свой набор
атак;

на
криптосистему может нападать несколько злоумышленников.
Множество атак, которым подвержена криптосистема, состоящая из подсистем
(
), в условиях, когда ей угрожают злоумышленники
определять
по
(
формуле
), будем
,
где
при
заданном
уровне
риска.
Для
оценки
защищенности криптосистемы необходимо с использованием инструментальных средств
оценить ее способность противостоять атакам, входящим в множество
.
В описанной математической модели сделаны следующие допущения:

не
учитывается
зависимость
параметров
атаки
от
сочетания
параметров

не учитывается возможность совместных действий со стороны взломщиков
различных типов, хотя можно задать модель нападения со стороны однородного
коллектива злоумышленников.
криптосистемы, хотя влияние каждого параметра принимается во внимание;
Исправление ABC-модели с учетом указанных допущений привело бы к ее
значительному усложнению. Вопрос о том, насколько эти допущения снижают точность
моделирования угроз безопасности, подлежит дальнейшим исследованиям.
Важно отметить, что разработанная классификационная схема для построения моделей
атак на алгоритмы шифрования с небольшими модификациями применима и для
моделирования атак на криптопротоколы. Возможность использования ABC-модели
угроз для комплексного исследования криптосистемы является важной, т.к. вопрос
совместного функционирования криптопротоколов и шифров в рамках одной
криптосистемы, как показано в [7.27], до сих пор был мало изучен.
Оценка
стойкости
криптографических
идентифицированным угрозам
средств
к
После того, как выделен набор атак, представляющих наибольшую угрозу для
защищаемых данных, необходимо оценить способность криптосистемы противостоять
этим атакам.
Базой для получения таких оценок может служить статистика взлома и успешных атак
на криптосистемы. Например, известно, что стартовавший в 1997 г. на сайте
www.distributed.net проект "распределенного взлома" RC5-64 (блочного шифра
компании RSA, использующего 64-битный ключ) [7.29], в котором на добровольной
основе приняли участие более 300 тысяч пользователей глобальной сети, был успешно
завершен за пять лет (1757 дней) - за это время было перебрано 85% всего
пространства ключей. Однако такая информация, во-первых, не всегда доступна, а, вовторых, со временем теряет актуальность, т.к. повышение производительности
вычислительной техники и появление новых видов атак на шифры ведет к понижению
стойкости известных криптографических алгоритмов. Для проверки надежности
шифров,
используемых
в
криптосистеме,
специалисту
необходим
набор
инструментальных
средств,
позволяющих
осуществлять
криптоанализ
и
не
предполагающих у использующего их специалиста наличия глубоких знаний в
программировании или электротехнике. В качестве примера можно привести
упомянутые в п.1.1 автоматизированные средства анализа криптопротоколов [7.7] или
прототип программного комплекса для моделирования атак по побочным каналам
[7.37], описанный в [7.19]. Моделирование аппаратного обеспечения в работе [7.19
осуществляется с использованием SystemC [7.2] - языка проектирования и
верификации моделей системного уровня, реализованного в виде библиотеки на C++ с
открытым исходным кодом. На примере программных и аппаратных реализаций шифра
AES показано, каким образом разработанный инструмент позволяет обнаружить
уязвимости в реализации криптографического алгоритма.
Особого внимания заслуживают асимметричные криптосистемы. Функциональные
возможности шифров с открытым ключом используются в разнообразных технологиях,
в числе которых [7.33]:







Управление идентичностью;
Цифровая подпись кода;
Доверенная платформа;
Управление авторством;
Построение VPN;
Гарантированное уничтожение информации;
Защита от физической кражи носителя информации.
Процесс криптоанализа асимметричных шифров сопряжен с решением задач из теории
чисел и общей алгебры, т.к. практически все используемые алгоритмы асимметричной
криптографии основаны проблемах факторизации и дискретного логарифмирования в
различных алгебраических структурах. Чтобы определить, могут ли математические
задачи той или иной размерности считаться достаточно прочным фундаментом для
криптографических целей, специалисту требуются инструментальные средства,
позволяющие оценивать быстродействие алгоритмов факторизации и дискретного
логарифмирования. Необходимо учитывать, что криптоаналитик может не обладать
навыками в области программирования. Кроме того, важно предусмотреть возможность
работы под управлением наиболее распространенной ОС - MS Windows.
Итак, выделим
криптоанализа:





набор
основных
требований
к
инструментальным
средствам
Эффективность вычислений с длинными числами в модулярной арифметике;
Наличие алгоритмов работы с разреженными матрицами;
Наличие алгоритмов создания факторной базы, решета и разложения на
множители;
Удобство пользовательского интерфейса;
Возможность сборки в ОС Windows.
Будем считать, что решение соответствует поставленной
удовлетворяет всем перечисленным пяти критериям оценки.
задаче,
если
оно
Анализ существующих подходов
Математические пакеты Maple [7.36] и Mathematica [7.45] отличаются простотой
кодирования алгоритмов и не имеют встроенных ограничений на разрядность
операндов. Тем не менее, помимо платформенной зависимости они обладают
критическим недостатком - низкой эффективностью теоретико-числовых операций.
Высокой
эффективности
можно
добиться,
используя
встроенные
средства
низкоуровневого языка программирования для разработки функций, необходимых для
исследования криптосистем. Однако важно отметить, что реализация примитивов для
конструирования современных методов криптоанализа асимметричных шифров
оперирует числами в длинной арифметике. Встроенные числовые типы языков C и C++
имеют ограниченную разрядность:



long: 32 бита;
long long: 64 бита;
double: 53 бита - мантисса, 11 бит - экспонента;

long double: в зависимости от реализации языка может быть определен как
double (см. выше) либо как extended double: 64 бита - мантисса, 15 бит экспонента [7.1].
В реализации языков на платформе .NET отсутствует тип extended double: он доступен
только неявно при выполнении промежуточных вычислений (например, где умножение
дает результат, выходящий за пределы диапазона значений double, но последующее
деление возвращает промежуточный результат обратно в этот диапазон). Кроме того,
существует встроенный 128-битный тип данных decimal, позволяющий представлять
целые числа разрядностью до 96 бит (в соответствии с размером мантиссы), однако он
реализуется в режиме эмуляции, поскольку аппаратная поддержка этого типа на
сегодняшний день отсутствует [7.11].
Java поддерживает возможность работы с длинными числами и обладает
переносимостью, однако недостатком является низкая эффективность реализации.
Рассмотрим специализированные библиотеки функций для работы с длинной
арифметикой и теоретико-числовыми задачами, находящиеся в открытом доступе: LIP,
LiDIA, CLN, GMP, NTL.
Библиотека для работы с длинной арифметикой LIP (Long Integer Package) [7.18]
является одной из первых таких библиотек. Она была разработана на языке ANSI C
известным специалистом Арженом Ленстрой (Arjen K. Lenstra) и поддерживается Полом
Лейлендом (Paul Leyland). При хорошей переносимости эта библиотека обладает низкой
эффективностью. Кроме того, в ней отсутствует поддержка высокоуровневых
теоретико-числовых алгоритмов.
Библиотека CLN (a Class Library for Numbers) [7.8] реализует элементарные
арифметические, логические и трансцендентные функции. Авторами библиотеки
являются Бруно Хейбл (Bruno Haible) и Ричард Крекел (Richard Kreckel). CLN содержит
большой набор классов, реализованных на C++, в частности, классы для поддержки
модулярной арифметики, операций с целыми, рациональными и комплексными
числами, числами с плавающей запятой. Поскольку числовая библиотека задумывалась
как универсальная, это привело к ее ограниченной применимости для решения
узкоспециализированных задач.
Библиотека теоретико-числовых алгоритмов LiDIA [7.16], предложенная Томасом
Папаниколау (Thomas Papanikolau, Technical University of Darmstadt), написана на C++,
поддерживает различные пакеты для работы с целыми числами (GMP, CLN, LIP) и
характеризуется высокоэффективными реализациями типов данных с увеличенной
точностью и алгоритмов с большой временной сложностью. Недостатком библиотеки
LiDIA является невозможность сборки в операционных системах Windows, что очень
существенно в связи с широким использованием продуктов Microsoft и
необходимостью проверки их защищенности.
При разработке GMP (GNU Multiple Precision arithmetic library) [7.12] был сделан
упор на скорость. Эффективность от использования библиотеки теоретико-числовых
алгоритмов GMP растет при увеличении разрядности операндов. Часть функций
реализована на языке C, часть - на ассемблере. Автором является Торбжорд Гранланд
(Torbjord Granlund). Помимо несовместимости с платформой Windows, недостатком GMP
является отсутствие алгоритмов формирования факторной базы, разложения на
множители и ряда других, необходимых для реализации современных методов
криптоанализа.
Таблица 7.1. Сравнительный анализ программных решений для решения
задач криптоанализа
Решение
Критерии оценки
Mathematica LIP CLN LiDIA GMP NTL КРИПТО
Эффективность вычислений
-
-
-
+
+
+
+
Возможность сборки в ОС Windows
+
+
+
-
-
+
+
с-
-
-
+
+
-
+
Наличие
алгоритмов
создания факторной
базы,
решета
и
разложения на множители
-
-
+
-
-
+
Удобство
интерфейса
-
-
-
-
-
+
Наличие
алгоритмов
работы
разреженными матрицами
пользовательского +
Известная математическая библиотека библиотека NTL (a Library for doing Number
Theory) [7.20] разработана Виктором Шаупом (Victor Shoup) для поддержки теоретикочисловых алгоритмов. Функции, реализованные на языке C++, характеризуются
переносимостью. Библиотеку можно использовать совместно с GMP в целях повышения
эффективности. NTL имеет большое количество преимуществ по сравнению с
рассмотренными аналогами (см. табл. 7.1), однако для решения поставленной задачи
реализованных в библиотеке NTL алгоритмов недостаточно. Кроме того, для ее
использования в криптоанализе специалист должен обладать квалификацией
программиста.
Как видно из табл. 7.1, ни одно из рассмотренных решений не удовлетворяет
одновременно всем пяти установленным критериям.
Инструментальные
средства
асимметричных шифров
криптоанализа
Для оценки стойкости криптосистем аналитику необходим инструмент, эффективно
работающий с теоретико-числовыми задачами, обладающий простым пользовательским
интерфейсом и легко расширяемый. Прототип такого средства для криптоанализа
систем с открытым ключом реализован в виде программного комплекса
"Инструментальные средства криптоанализа асимметричных шифров" (обозначение в
таблице - КРИПТО) [7.31, 7.32]. Программный комплекс состоит из библиотеки
КОНСТРУКТОР,
включающей
необходимые
примитивы
для
конструирования
современных методов криптоанализа асимметричных шифров, и приложения
АНАЛИТИК, имеющего графический интерфейс пользователя для доступа алгоритмам
факторизации и дискретного логарифмирования с использованием функций библиотеки
КОНСТРУКТОР. Библиотека КОНСТРУКТОР написана на языке C++ и содержит
компоненты, реализующие следующие основные функции:




Дискретное логарифмирование;
Факторизация целых чисел;
Тестирование чисел на простоту;
Решение систем линейных уравнений в кольцах вычетов и конечных полях.
Для выполнения операций с длинными числами использована библиотека NTL. Выбор
базовой библиотеки, обусловленный её функциональностью, скоростью, компактностью
(исходный код занимает чуть более 600 килобайт) и переносимостью, позволил
получить эффективные реализации перечисленных теоретико-числовых алгоритмов. В
настоящей работе мы не будем приводить полное сравнение библиотеки КОНСТРУКТОР
с аналогами; заметим лишь, что если на решение задачи дискретного
логарифмирования размерностью 55 бит с использованием системы Maple уходит
порядка 8 часов, то разработанный программный комплекс КРИПТО позволяет за 10
минут вычислить дискретный логарифм в поле разрядностью 80 бит (испытания
проводились на компьютере со следующими
процессор Intel Pentium IV 3,20GHz, ОЗУ 1Гб).
аппаратными
характеристиками:
Расчет
эффективности
капитальных
вложений
использование криптографических средств
в
Оценки вероятности взлома криптосистемы за определенный период позволяют
определить сокращение риска НСД к данным от использования криптосистемы,
например, за 1-й год - на 95%, за 2-й год - на 70%, за 3-й год - на 35%. При наличии
достоверных
оценок
объема
потерь
от
реализации
угроз
нарушения
конфиденциальности, целостности или доступности защищаемых данных можно
получить математические ожидания потерь и использовать их для определения
эффективности криптосистемы с экономических позиций.
Анализ существующих подходов
В настоящее время нет единых стандартов, позволяющих оценить СКЗИ с
экономических позиций, поэтому любой из разработанных методов заслуживает
отдельного рассмотрения с выявлением его положительных и отрицательных сторон, а
также сравнения его с другими представителями этого класса. В табл. 7.2
представлены результаты сравнительного анализа методов оценки эффективности
инвестиций в средства обеспечения ИБ. На основании результатов был сделан вывод,
что оптимальным является метод дисконтирования денежных потоков [7.42],
позволяющий получить наиболее полное представление о целесообразности
капитальных вложений, хотя и требующий много времени и усилий на расчет
экономических показателей.
Методика дисконтирования денежных потоков
оценке эффективности инвестиций в СКЗИ
Определим денежные потоки, связанные с использованием СКЗИ, за период
0, 1, 2…. T - периоды, Т - горизонт расчета).
С защищаемой информацией связаны значения дохода
при
(где t =
от ее использования и
ущерба
от НСД в течение указанного промежутка времени t. Затраты
на
приобретение, установку и эксплуатацию СКЗИ могут быть определены очень точно.
Пусть результаты оценки способности криптосистемы противостоять атакам показали,
что в t-м периоде злоумышленник получит доступ к защищаемой информации с
вероятностью
. Тогда математическое ожидание дохода
использованием оцениваемой СКЗИ, вычисляется по формуле:
,
связанного
с
На основании этих данных о притоках и оттоках денежных средств вычисляются
финансово-экономические показатели эффективности инвестиций в криптосистему и
делаются выводы о ее соответствии потребностям организации.
Таблица 7.2. Сравнительный анализ
инвестиций в средства обеспечения ИБ
Методика оценки
Преимущества
методов
оценки
эффективности
Недостатки
Коэффициент возврата Показатель, понятный финансистам. Отсутствие достоверных
инвестиций
методов
расчета
в
области ИТ. "Статичный"
показатель.
Совокупная
владения
стоимость Позволяет оценить целесообразность
реализации проекта на основании
оценки только затрат. Предполагает
оценку затрат на различных этапах
всего жизненного цикла системы.
Дисконтированные
показатели
эффективности
инвестиций
Не учитывает качество
системы
безопасности.
"Статичный" показатель.
Показатель,
специфичный для ИТ.
Показатель, понятный финансистам. Сложность расчета.
Учитывает
зависимость
потока
денежных
средств
от
времени.
Учитывает все потоки денежных
средств, связанные с реализацией
проекта.
Криптопровайдеры. API для работы с криптосервисами Windows
Взрывное развитие электронной коммерции резко усилило потребность в надежных
алгоритмах
шифрования
для
защиты
конфиденциальной
информации.
Продолжающаяся эволюция средств защиты способствует появлению новых
криптографических сервисов. Современные операционные системы Microsoft
содержат множество криптографических подсистем различного назначения как
прикладного уровня, так и уровня ядра. Ключевую роль в Windows 2000, Windows XP,
Windows ME играет интерфейс CryptoAPI (Cryptography API, CAPI). В основе
шифрования Windows Vista и Server 2008 лежит новый API шифрования, называемый
CNG API (Cryptography Next Generation - новое поколение криптографии) [9.1].
Первый выпуск CNG в рамках криптографической инфраструктуры предоставляет
интерфейсы API и среду, позволяющие добавлять в Windows новые алгоритмы для
использования с протоколами Secure Sockets Layer/Transport Layer Security
(SSL/TLS) и IPSec; в будущем планируется реализовать поддержку других
возможностей, например S/MIME и EFS. В конечном итоге Microsoft будет использовать
этот новый API вместо текущего CryptoAPI, но в Vista и Server 2008 старый и новый
API сосуществуют (в основном для совместимости со старыми приложениями).
В данном разделе мы рассмотрим CryptoAPI, после чего перейдем к обзору
функциональности CNG. Кроме того, мы уделим внимание интерфейсу DPAPI. Windows,
начиная с версии 2000, поддерживает встроенный механизм для хранения и защиты
секретов. Этот механизм использует машинный ключ, сгенерированный при
инсталляции системы специально для шифрования данных. Только локальная
операционная система (локальный системный центр авторизации) имеет доступ к
машинному ключу. Машинный ключ уникален для каждой инсталляции. Windows
поддерживает программный интерфейс Data Protection API для защиты данных этим
ключом. Использование этого API не дает прямого доступа к этому ключу, а позволяет
отдавать системе команды зашифровать/расшифровать некоторую информацию с
использованием этого ключа. Другим вариантом является использование ключа,
сгенерированного для текущего пользователя.
Cryptographic
(CryptoAPI)
Application
Programming
Interface
Интерфейс Microsoft CryptoAPl 2.0 содержит как функции, осуществляющие
базовые криптографические преобразования, так и функции, реализующие
преобразования более высокого уровня - работу с сертификатами Х.509, работу с
криптографическими
сообщениями
PKCS#7
[9.4,
9.5]
и
другие
функции,
поддерживающие так называемую инфраструктуру открытых ключей (Public Key
Infrastructure). Набор функций из CryptoAPI 2.0, реализующих базовые
криптографические преобразования (base cryptography functions), называют также
CryptoAPI 1.0 [9.2]. Функции высокого уровня, предназначенные для реализации
криптографических преобразований, вызывают именно функции CryptoAPI 1.0. Таким
образом, именно интерфейс CryptoAPI 1.0 является криптографическим ядром
прикладного уровня современных операционных систем Microsoft.
Круг задач, на решение которых ориентирован CryptoAPI [9.3]:







надежное сокрытие данных;
возможность передачи сокрытых данных третьим лицам;
надежная система проверки достоверности пришедшей от третьих
информации;
расшифровывание полученных конфиденциальных данных;
работа с "идентификационными удостоверениями" третьих лиц;
обеспечение работы с признанными криптографическими стандартами;
возможность расширения и работы с пока еще неизвестными алгоритмами.
лиц
Реализация всех алгоритмов полностью выведена из состава CryptoAPI и реализуется в
независимых динамических библиотеках - "криптопровайдерах" (см. раздел
"Криптопровайдеры").
CryptoAPI
предоставляет
конечному
пользователю
унифицированный интерфейс работы с функциями криптопровайдера.
CryptoAPI достаточно полно поддерживает набор стандартов "PKCS" [9.6],
предложенный компанией RSA Security, и позволяет формировать криптографические
приложения, которые могут быть обработаны в дальнейшем любыми программными
продуктами. В подсистемах уровня ядра базовые криптографические преобразования
происходят непосредственно в драйверах, реализующих эти подсистемы. Функции
CryptoAPI в таких случаях используются для вспомогательных операций на прикладном
уровне.
Общая архитектура CryptoAPI состоит из пяти основных функциональных групп (см.
рис. 9.1):
1. Базовые криптографические функции:
o функции шифрования/расшифровывания данных;
o функции хеширования и получения цифровой подписи данных;
o функции инициализации криптопровайдера и работы с полученным
контекстом;
o функции генерации ключей;
o функции обмена ключами.
2. Функции кодирования/декодирования. Под кодированием в данном случае
подразумевается получение на выходе информации, кодированной в формате
ASN.1 (Abstract Syntax Notation One).
3. Функции работы с сертификатами.
4. Высокоуровневые функции обработки криптографических сообщений.
5. Низкоуровневые функции обработки криптографических сообщений.
Рис. 9.1. Архитектура CrypotAPI
Для доступа к CryptoAPI можно использовать CAPICOM. CAPICOM предоставляет COM
интерфейс, использующий основные функции CryptoAPI. Этот компонент является
добавлением к COM-интерфейсу Certificate Enrollment Control (xenroll), который
реализуют клиентские функции генерации ключей, запросов на сертификаты и обмена
с центром сертификации. Данный компонент позволяет получать доступ к функциям
формирования и проверки электронной цифровой подписи, построения и проверки
цепочек сертификатов, взаимодействия с различными справочниками сертификатов
(включая Active Directory) с использованием Visual Basic, C++, JavaScript, VBScript
и среды разработки Delphi. CAPICOM доступен в операционных системах Windows
Server 2008, Vista, Windows XP, Windows Me, Windows 2000 и Windows 98. В
последующих версиях в него могут быть внесены изменения; также неисключено, что
Microsoft совсем откажется от использования этого компонента. В связи с этим для
реализации криптографической функциональности рекомендуется использовать
средства .NET Framework.
Cryptography Next Generation API (CNG)
Служба
CNG
предоставляет
набор
интерфейсов
API
для
выполнения
основных
криптографических операций и благодаря своей модульной архитектуре позволяет
создавать, обновлять и использовать собственные алгоритмы шифрования в таких
приложениях и технологиях, как служба сертификации Active Directory, технологии
SSL и IPsec. Разработчики получают больший контроль над выполнением
криптографических операций и совместной работой алгоритмов.
CNG поддерживает все алгоритмы, предлагаемые CryptoAPI, а также новые алгоритмы,
включая алгоритмы шифрования, цифровых подписей, обмена ключами и
хеширования, перечисленные в своде правил Suite B Агентства национальной
безопасности США [9.7] - например, такие алгоритмы, как алгоритм хеширования SHA256 и алгоритмы шифрования на основе эллиптических кривых (ECC). Алгоритмы Suite
B используются в службах Certificate Services, чтобы генерировать сертификаты и
защитить архив частных ключей в базе данных СА. Чтобы издавать сертификаты с
алгоритмами Suite B, в инфраструктуре PKI Windows Vista и Server 2008 расширены
свойства шаблона сертификата. Шаблоны сертификата - заготовки сертификатов
различных типов, которые может выпускать удостоверяющий центр, интегрированный
со службой Active Directory (удостоверяющим центром предприятия).
На рис. 9.2 [9.1] приведена общая схема CNG. BCrypt ('B' - сокр. от 'base', базовый) это подмножество CNG, которое предоставляет такие примитивы криптографии, как
средства генерации случайных чисел, функции хеширования, подписи и ключи
шифрования. NCrypt ('N' - сокр. от 'new', новый) обеспечивает механизмы сохранения
асимметричных ключей и поддержки аппаратных средств, таких как смарт-карты.
BCrypt и NCrypt - имена заголовочных файлов и DLL, предоставляющих базовые
сервисы для CNG и высокоуровневую функциональность для хранения ключей
соответственно.
Рис. 9.2. Архитектура CNG
В версиях Windows, предшествующих Vista, криптографические технологии, такие как
CryptoAPI, работали только в пользовательском режиме, в то время как режим ядра
требовал применения совсем других API-интерфейсов. CNG содержит универсальный
набор API-интерфейсов, которые впервые предоставляют общую инфраструктуру
шифрования для приложений как пользовательского режима, так и режима ядра.
Исключение составляют механизмы хранения ключей, предоставляемые NCrypt: они
доступны только приложениям пользовательского режима.
Существует два основных подхода к примитивам криптографии, обеспечиваемых CNG
[9.1]. В первом подходе они рассматриваются как набор логических объектов,
предоставляющих методы, которые можно вызывать, и свойства, которые можно
запрашивать и иногда изменять. К этим объектам относятся поставщики алгоритмов,
функции хеширования, ключи и секретные соглашения. При другом подходе CNG
рассматривается как программный маршрутизатор, или посредник для операций
криптографии. Интерфейс API CNG строится на основе набора логических интерфейсов
криптографии. В качестве примера можно использовать интерфейс хеширования, в
котором нет жестко закодированной реализации конкретного алгоритма хеширования.
В большинстве интерфейсов API криптографии используется подход, основанный на
алгоритмах, в то время как в CNG используется подход, основанный на интерфейсах.
Такой подход обеспечивает большую гибкость как для разработчика, так и для
администратора, которым может потребоваться заменить алгоритм, используемый
приложением, но оказавшийся ошибочным после выпуска приложения. На рис. 9.3
[9.1] приведено представление CNG на основе интерфейсов.
CNG позволяет разработчикам запрашивать алгоритмы, не указывая поставщиков
алгоритмов. Это позволяет администраторам перенастраивать приложения с целью
использования других реализаций (подробнее см. раздел "Шаблоны использования
криптографических функций в корпоративных приложениях").
Рис. 9.3. Интерфейсы CNG
Windows Vista и Server 2008 располагают новым общим провайдером услуг
шифрования для подсистем смарт-карт различных поставщиков (Base Smart Card
Cryptographic Service Provider, Base CSP). Кроме того, новая инфраструктура CNG
включает провайдеры хранилищ ключей (Key Storage Provider, KSP) для смарт-карт.
Благодаря новому общему провайдеру Base CSP поставщики смарт-карт могут быстро и
без труда интегрировать свое программное обеспечение с операционной системой
Windows без необходимости разработки сложных собственных провайдеров достаточно небольших модулей, которые встраиваются в архитектуру смарт-карт
Windows. Модуль, написанный поставщиком смарт-карт для интеграции своего
криптопровайдера, позволит интегрировать и хранилище ключей (см. рис. 9.4 [9.8]).
Рис. 9.4. Инфраструктура Base CSP
Другое изменение Windows Vista и Server 2008, относящееся к смарт-картам и
удобное для пользователей и администраторов, - расширенная поддержка приложений.
Например, в файловой системе EFS смарт-карты могут применяться для надежного
хранения частного ключа EFS пользователя.
Криптопровайдеры
Криптопровайдер (Cryptographic Service Provider, CSP) - это независимый
программный модуль, интегрированный в MS Windows и содержащий библиотеку
криптографических функций со стандартизованным интерфейсом. Криптопровайдер
предназначен для авторизации, обеспечения конфиденциальности и юридической
значимости электронных документов при обмене ими между пользователями, контроля
целостности информации и др.
Каждый криптопровайдер должен обеспечивать [9.3]:



реализацию стандартного интерфейса криптопровайдера;
работу с ключами шифрования, предназначенными для обеспечения работы
алгоритмов, специфичных для данного криптопровайдера;
невозможность вмешательства третьих лиц в схему работы алгоритмов.
Криптопровайдеры реализуются в виде динамически загружаемых библиотек (DLL).
Целостность алгоритмов криптопровайдера обеспечивает отсутствие возможности
изменения
алгоритма
через
установку
его параметров.
Кроме
того,
DLL
криптопровайдера должна иметь цифровую подпись.
Кроме различия в реализуемых стандартах, криптопровайдеры отличаются способом
физической организации ключевой базы. С точки зрения программирования, способ
физической организации ключевой базы значения не имеет. Однако он весьма важен с
точки зрения эксплуатации и безопасности системы. Криптопровайдеры могут хранить
свою ключевую базу на жестком диске (в Реестре или в файлах) или на смарт-картах.
Тем не менее, логическая структура организации ключевой базы, которая, в отличие от
физической, определяется самим интерфейсом, для всех криптопровайдеров
одинакова. Ключевая база представляется набором ключевых контейнеров (см. рис.
9.1). Каждый ключевой контейнер имеет имя, которое присваивается ему при создании,
а затем используется для работы с ним. В ключевом контейнере сохраняется
долговременная
ключевая
информация.
В
криптопровайдерах
Microsoft
долговременными являются ключевые пары цифровой подписи и несимметричного
обмена ключами, которые также генерируются функциями CryptoAPI.
Криптопровайдер выполняет следующие криптографические функции:



формирование/проверка электронной цифровой подписи (ЭЦП),
шифрование информации,
хранение ключей всех типов.
Таблица 9.1. Криптопровайдеры
Провайдер
Описание
Microsoft
Base Включает большой набор криптографических функций;
Cryptographic Provider
может экспортироваться за пределы США
Microsoft
Strong Расширяет Microsoft Base Cryptographic Provider;
Cryptographic Provider
доступен, начиная с версии Windows 2000
Microsoft
Enhanced Представляет собой Microsoft Base Cryptographic
Cryptographic Provider
Provider
с
более
длинными
ключами
и
дополнительными криптоалгоритмами.
Microsoft
AES Microsoft
Enhanced
Cryptographic
Provider
с
Cryptographic Provider
поддержкой AES
Microsoft
DSS Предоставляет функции хеширования, генерации и
Cryptographic Provider
проверки ЭЦП с использованием алгоритмов Secure
Hash Algorithm (SHA) и Digital Signature Standard
(DSS)
Microsoft Base DSS and Помимо
функциональности
DSS
Cryptographic
Diffie-Hellman
Provider, поддерживает схему обмена ключами ДиффиCryptographic Provider
Хеллмана
Microsoft Enhanced DSS and Поддерживает схему обмена ключами Диффи-Хеллмана,
Diffie-Hellman
функции хеширования, генерации и проверки ЭЦП,
Cryptographic Provider
соответствующие стандарту FIPS 186-2, симметричное
шифрование на базе RC4
Microsoft DSS and Diffie- Поддерживает хеширование и ЭЦП на базе DSS; схему
Hellman/Schannel
обмена ключами Диффи-Хеллмана, генерацию и экспорт
Cryptographic Provider
этих ключей; получение ключей для протоколов SSL3 и
TLS1
Microsoft
RSA/Schannel Поддерживает хеширование и ЭЦП, а также получение
Cryptographic Provider
ключей для протоколов SSL2, PCT1, SSL3 и TLS1
Microsoft
RSA
Signature Предоставляет функциональность для реализации ЭЦП
Cryptographic Provider
Каждый криптопровайдер характеризуется собственным именем и типом. Имя - это
строка, по которой система распознает криптопровайдер. Тип криптопровайдера - это
целое число, значение которого идентифицирует набор поддерживаемых алгоритмов
[9.2]. В общем случае, тип криптопровайдера ничего не сигнализирует обычному
пользователю и служит лишь для вспомогательной группировки провайдеров.
Исключение составляет тип PROV_RSA_FULL (его номер - 1), который присваивают себе
только те криптопровайдеры, которые полностью поддерживают работу со стандартом
RSA.
В составе ОС Windows пользователь получает несколько CSP, которые реализуют
наиболее часто используемые методы шифрования. Наряду со стандартными
криптопровайдерами, поставляемыми Microsoft (см. табл. 9.1), можно использовать
CSP собственной разработки, предварительно сертифицировав его. Например, согласно
действующему на территории России законодательству, если организация использует
стандартные
криптопровайдеры
Windows
(несертифицированные
в
России
криптографические алгоритмы шифрования и ЭЦП данных), она не может вести обмен
документами с государственными учреждениями. Обеспечить юридическую значимость
электронных документов при обмене ими между пользователями
использование сертифицированного ФСБ криптопровайдера.
позволит
Data Protection API (DPAPI)
.NET 2.0 включает отдельные функции для защиты секретной информации на
локальной машине или для каждого пользователя посредством полностью управляемых
оболочек программного интерфейса Windows Data Protection API (DPAPI).
Любое приложение, работающее под ОС Windows, может защитить свои данные
посредством обращения к соответствующим функциям DPAPI. DPAPI - простой в
использовании сервис, полезный разработчикам, когда нужно обеспечить защиту
секретных данных приложения - например, паролей или ключей.
Рис. 9.5. Схема работы DPAPI
Интерфейс DPAPI является частью crypt32.dll и доступен всем процессам,
загрузившим эту библиотеку; crypt32.dll, в свою очередь, является частью CryptoAPI.
Приложение либо передает открытый текст DPAPI и получает результат зашифрования,
либо передает зашифрованный блок бинарных данных и получает результат
расшифрования. Процесс схематически изображен на рис. 9.5 [9.9].
Когда приложение обращается к функциям DPAPI, происходит локальный вызов
удаленных процедур (Remote Procedure Call, RPC) локального доверенного центра
Local Security Authority (LSA). LSA - это системный процесс, существующий с момента
загрузки системы вплоть до выключения компьютера. Локальные RPC-вызовы никогда
не проходят по сети, поэтому все данные остаются на локальной машине. Конечные
точки этих RPC-вызовов - это обращение в private-функциям DPAPI для скрытия или
раскрытия данных. Непосредственно зашифрование/расшифрование данных в
контексте безопасности LSA эти функции осуществляют посредством обратного вызова
CryptoAPI через crypt32.dll.
LSA также включает функции системного уровня для работы с DPAPI. Эти функции
доступны любым потокам, запущенным внутри этого LSA, и только им, позволяя LSAпотокам защищать пользовательские данные, которые не должны быть доступны
другим потокам, также использующим DPAPI - например, пользовательским
приложениям.
Интерфейс DPAPI ориентирован на защиту данных пользователей. Для этого
используются учетные записи (мандаты) пользователей. Обычно в системе,
поддерживающей парольную аутентификацию, мандат представляет собой хеш от
пароля пользователя. При использовании смарт-карты способ вычисления мандата
другой, но мы для простоты ограничимся рассмотрением первого случая.
Чтобы предотвратить ситуацию, когда каждое приложение имеет доступ не только к
своим данным, но и к данным всех других приложений, работающих под учетной
записью определенного пользователя, DPAPI позволяет приложениям использовать
дополнительный "секрет" для защиты своих данных, знание которого необходимо для
их расшифрования. Этот "секрет" можно назвать "вторичной энтропией" (secondary
entropy): "вторичность" означает, что "секрет" не повышает стойкость ключа
шифрования, однако затрудняет доступ к данным для приложений, работающих под
той же учетной записью пользователя.
Изначально DPAPI генерирует стойкий ключ, называемый MasterKey (мастер-ключ), для
защиты которого используется пароль пользователя. DPAPI использует стандартный
процесс под названием "Password-Based Key Derivation", описанный в PKCS #5 [9.10].
Мастер-ключ шифруется ключом, сгенерированным на базе пароля пользователя, с
использованием алгоритма TripleDES, и хранится в директории с другими параметрами
пользователя.
Для защиты данных используется не мастер-ключ в явном виде, а симметричный
сеансовый ключ, который создается на основе мастер-ключа, неких случайных данных
и, опционально, дополнительной энтропии (если приложение предоставляет это
значение). Сеансовый ключ никогда не сохраняется. Вместо этого в бинарном блоке,
содержащем зашифрованные данные, сохраняются случайные данные, использованные
при генерации сеансового ключа, что позволяет DPAPI создать его заново при
необходимости расшифровать данные.
В целях безопасности каждые три месяца срок действия мастер-ключа истекает, и
генерируется новый ключ. DPAPI никогда не удаляет "устаревшие" мастер-ключи, а
хранит их в зашифрованном виде с другими параметрами учетной записи пользователя.
В бинарном блоке с зашифрованными данными хранится глобально уникальный
идентификатор (Globally Unique Identifier, GUID), позволяющий однозначно
определить мастер-ключ, использованный для защиты данных.
При смене пароля пользователя DPAPI осуществляет два действия. Во-первых, все
мастер-ключи зашифровываются ключом, сгенерированным на базе нового пароля. Вовторых, старый пароль добавляется в файл "Credential History" в директории,
используемой для хранения параметров пользователя. Этот файл шифруется с
использованием нового ключа. При необходимости DPAPI может использовать текущий
ключ для того, чтобы расшифровать "Credential History", извлечь старый пароль и
попытаться с его помощью расшифровать мастер-ключ. Если это не удается,
"Credential History" расшифровывается ключом на основе "старого" пароля,
извлекается пароль, который ему предшествовал, и т.д., пока не будет найден пароль,
позволяющий расшифровать мастер-ключ.
Криптосервисы для устройств под управлением Windows
CE и Windows Mobile
Windows Mobile предоставляет криптосервисы, которые позволяют разработчикам
внедрять в приложения функции безопасности, в том числе - использовать CrypoAPI,
криптопровайдеры,
осуществлять
выдачу
сертификатов
и
управление
ими,
реализовывать настраиваемую инфраструктуру открытых ключей, использовать смарткарты.
Windows CE включает три криптопровайдера:



Microsoft RSA Base Provider;
Microsoft Enhanced Cryptographic Provider;
Smart Card CSP.
Начиная с версии Windows CE .NET 4.1, криптопровайдером по умолчанию является
Microsoft
Enhanced
Cryptographic
Provider. Есть возможность добавлять
собственные криптопровайдеры.
Подсистема поддержки смарт-карт на устройствах под управлением Windows CE,
начиная с версии 5.0., обеспечивает связь между аппаратным обеспечением для чтения
смарт-карт и приложениями, работающими с ними. Связь обеспечивается
динамическими библиотеками (DLL), программным интерфейсом (API) для управления
ресурсами смарт-карт и драйверами устройств для чтения смарт-карт.
Криптографические функции в .NET Framework
Пространство имен Cryptography в .NET Framework
Мир криптографии динамично развивается. По мере устаревания криптографических
алгоритмов их необходимо заменять на новые, причем делать это нужно быстро и
незаметно для пользователя. Следовательно, хорошая криптографическая библиотека
должна обладать свойствами расширяемости за счет интеграции в приложения
алгоритмов, разработанных независимыми поставщиками. Кроме того, очень важна
возможность поддерживать различные реализации одного и того же алгоритма.
Криптографическая объектная модель .NET Framework разработана с учетом этих
требований. .NET
Framework
включает набор криптографических сервисов,
расширяющих аналогичные сервисы Windows через CryptoAPI. Пространство имен
System.Security.Cryptography общеязыковой исполняющей среды (common language
runtime, CLR) в Microsoft
.NET
открывает программный доступ к самым
разнообразным криптографическим сервисам, с помощью которых приложения могут
шифровать и дешифровать данные, обеспечивать их целостность, а также
обрабатывать цифровые подписи и сертификаты [10.1]. Некоторые из таких сервисов
применяются непосредственно в самой .NET Framework (например, для поддержки
аутентификации в ASP.NET). Пространство имен System.Security.Cryptography
разделено между двумя сборками - mscorlib.dll и System.Security.dll, причем
сборка mscorlib.dll неявно подключается по умолчанию и предоставляет классы с
алгоритмами таких операций, как шифрование и создание хешей, а дополнительно
подключаемая
сборка
System.Security.dll
позволяет
получить
доступ
к
функциональности, связанной с XML-подписью, модификацией ACL (списков управления
доступом в Windows), использованием интерфейса DPAPI, созданием кодов
аутентификации на основе хешированных ключей (HMAC) и др.
Пространство имен System.Security.Cryptography включает дочерние пространства
имен (Xml, X509Certificates, PKCS) и на самом высоком уровне может быть разбито на
пять основных частей (табл. 10.1) [10.2]. Главное предназначение этого пространства предоставлять классы с алгоритмами таких операций, как шифрование и создание
хешей. Категория алгоритмов реализуется на основе расширяемого шаблона (pattern)
[10.3], включающего два уровня наследования. На рис. 10.1 приведен фрагмент
иерархии классов для алгоритмов хеширования. На вершине иерархии располагается
абстрактный базовый класс, имя которого соответствует типу алгоритма (здесь HashAlgorithm). От базового абстрактного класса наследуется абстрактный класс
второго уровня, предоставляющий открытый интерфейс для использования данного
алгоритма. Например, SHA1 (Secure Hash Algorithm) представляет собой производный
от HashAlgorithm класс и содержит методы и свойства, специфичные для алгоритма
SHA1. Наконец, сама реализация алгоритма является производной от класса второго
уровня; именно ее экземпляр создается и используется клиентским приложением.
Криптографические библиотеки, прилагаемые к .NET Framework 2.0 и 3.0,
предоставляют множество управляемых реализаций алгоритмов, а также классы"обертки" для встроенных реализаций из CryptoAPI. К именам неуправляемых
реализаций обычно добавляется суффикс "CryptoServiceProvider" (например,
SHAlCryptoServiceProvider), указывающий на то, что данная реализация на самом
деле предоставляется криптопровайдером. В имена управляемых реализаций
включается суффикс "Managed" (например, SHAlManaged). Такие реализации не
опираются на CryptoAPI и содержат исключительно управляемый код.
Наличие общего абстрактного класса позволяет унифицировать доступ к свойствам и
методам, специфичным для каждого типа алгоритмов. Например, для класса Rijndael
свойство LegalKeySizes вернет значения 128, 192, и 256, соответствующие
разрядности ключей, для которых определен данный криптоалгоритм; метод IsWeakKey
абстрактного класса TripleDES позволяет получить информацию о криптостойкости
потенциального ключа, сверяя его со списком известных слабых ключей.
Таблица 10.1. Основные элементы пространства имен Cryptography
Категория
Описание
Алгоритм
шифрования
Набор
классов,
применяемых
для
реализации
симметричного
и
асимметричного
шифрования,
хеширования
алгоритмов
а
также
Вспомогательные Классы, обеспечивающие генерацию криптографически стойких
классы
последовательностей
псевдослучайных
чисел,
выполнение
преобразований, взаимодействие с хранилищем CryptoAPI и
шифрование на основе потоковой модели
Сертификаты
X.509
Классы,
определенные
в
пространстве
имен
System.Security.Cryptography.X509Certificates
и
предоставляющие цифровые сертификаты и (начиная с .NET 2.0)
классы для доступа к хранилищу сертификатов Windows
Цифровые
подписи XML
Классы,
определенные
в
пространстве
имен
System.Cryptography.Xml и предоставляющие цифровые подписи в
XML-документах в соответствии со стандартами, опубликованными
консорциумом W3C
CMS/PKCS#7
Начиная с версии .NET
2.0, осуществляется управляемая
поддержка упакованных CMS/PKCS сообщений непосредственно от
вызовов неуправляемого кода. (CMS - Cryptographic Message
Syntax - синтаксис криптографических сообщений, PKCS - PublicKey Cryptography Standard - стандарт шифрования с открытым
ключом [10.3, 10.6])
Расширения криптографической объектной модели могут быть двух типов [10.5]:


Добавление новой реализации криптоалгоритма, уже определенного в .NET
Framework;
Добавление нового криптоалгоритма.
Чтобы добавить поддержку нового типа алгоритмов, необходимо создать новый
абстрактный класс. Родительским классом для него может быть один из классов
SymmetricAlgorithm,
AsymmetricAlgorithm
или
HashAlgorithm.
Затем
нужно
определить набор свойств и методов, общих для всех реализаций алгоритмов. Добавить
новую реализацию в .NET Framework просто - для этого нужно создать класснаследник абстрактного класса алгоритмов определенной категории, содержащий
конкретную реализацию абстрактных методов родительского класса.
увеличить
Рис. 10.1. Алгоритмы хеширования: иерархия классов
изображение
В некотором смысле работа с CNG значительно проще, чем работа с управляемыми
криптографическими классами, поскольку приходится заботиться о меньшем числе
абстракций и наследуемых свойств по умолчанию. Эффективность зависит от
аккуратности программиста в обращении с каждым отдельным элементом. Дело в том,
что иногда случаях криптографические классы .NET Framework по умолчанию
используют неподходящие свойства алгоритма, что может привести к неполадкам.
Чтобы этого избежать, необходимо установить соответствие между каждым отдельным
свойством ключа CNG и его управляемого эквивалента [10.6]. При выполнении
симметричного шифрования, поскольку выполняется подготовка для обмена
зашифрованным текстом между CNG и .NET Framework, следует помнить о следующих
свойствах класса .NET Framework SymmetricAlgorithm: BlockSize, IV, Key, KeySize,
Mode и Padding. Даже небольшая неправильность в одном из них приведет к сбоям.
Обеспечение асимметричного шифрования, работающего с разными реализациями,
требует несколько большего объема работы, поскольку разные алгоритмы используют
самые разные свойства; поэтому поиском общего списка свойств для установления
соответствия
не
удастся
добиться
результата.
Вместо
этого
необходимо
сосредоточиться на том, как разные реализации выполняют импорт и экспорт
информации о ключах, и самостоятельно обеспечить необходимое преобразование.
Microsoft работает над следующей версией Visual Studio под кодовым названием
"Orcas" (на момент написания статьи доступна версия Beta 2) и новой версией .NET
Framework [10.6]. В среду .NET Framework 3.5 включен ряд новых реализаций
алгоритмов, основанных на CNG; к ним относятся некоторые алгоритмы эллиптических
кривых, предоставляемые посредством функций CNG, обеспечивающих хранение
ключей. Кроме того, .NET Framework 3.5 предоставляет более развитые возможности
взаимодействия между встроенным и управляемым кодом.
Работа с потоками
CLR использует модель программирования, основанную на потоках [10.1].
Распространенным
сценарием
является
необходимость
криптографического
преобразования бинарного потока данных перед записью на диск или передаче по
сетевому соединению. .NET Framework позволяет реализовать такие преобразования с
использованием
класса
CryptoStream
и
объектов,
реализующих
интерфейс
ICryptoTransform. Класс CryptoStream унаследован от System.IO.Stream.
Модель ICryptoTransform представлена на рис. 10.2. ICryptoTransform соответствует
математическому преобразованию над блоком данных фиксированной длины например, шифрованию секретным ключом.
Рис. 10.2. Модель ICtyptoTransform
Все классы криптоалгоритмов включают методы для создания объектов, реализующих
интерфейс ICryptoTransform. В частности, SymmetricAlgorithm имеет два метода CreateEncryptor() и CreateDecryptor(), которые позволяют создать объект
ICryptoTransform на базе ключевого материала, вектора инициализации и режима
работы, указанного для данного экземпляра класса криптоалгоритма.
Преобразование реализуется посредством "заворачивания" входного потока в
ICryptoTransform с использованием класса CryptoStream. На рис. 10.3 [10.5]
представлен поток данных, который в реальном времени читается из CryptoStream.
CryptoStream сам по себе является потоком, но его содержимое генерируется путем
последовательного применения ICryptoTransform к блокам данных. CryptoStream
использует буферизованный доступ, позволяя выполнять шифрование, не заботясь о
размере блока для конкретного алгоритма.
Рис. 10.3. Схема работы с потоками
Генераторы псевдослучайных чисел
Качественный ключ, предназначенный для использования в рамках симметричной
криптосистемы, представляет собой случайный двоичный набор. Если требуется ключ
разрядностью n, в процессе его генерации с одинаковой вероятностью должен
получаться любой из
возможных вариантов. Генерация ключей для асимметричных
криптосистем - процедура более сложная, т.к. ключи, применяемые в таких системах,
должны обладать определенными математическими свойствами. Например, в случае
системы RSA модуль шифрования представляет собой произведение двух больших
простых чисел.
Генераторы случайных чисел - место, в котором часто ломаются криптографические
системы [10.8]. Это означает, что, если для генерации ключей используется
криптографический слабый алгоритм, независимо от используемого шифра вся система
будет нестойкой.
Рассмотрим понятие криптографически стойкого генератора псевдослучайных кодов,
или, для краткости, псевдослучайного генератора, которое было введено Блюмом и
Микали
[10.10].
Пусть
-
функция,
вычислимая
за
полиномиальное от n время,
- некоторый полином. Такая функция называется
генератором. Генератор
является псевдослучайным [10.9], если порождаемые им
последовательности неотличимы никаким полиномиальным вероятностным алгоритмом
от случайных последовательностей той же длины
. В 1989-1990 гг. Импальянцо,
Левин и Луби [10.13] и Хостад [10.12] доказали, что псевдослучайные генераторы
существуют тогда и только тогда, когда существуют односторонние функции.
Лучший способ генерации множества случайных битов - извлечение их из естественно
случайных событий реального мира [10.14]. Генераторы псевдослучайных чисел .NET
Framework
используют
в качестве начальной
информации
для
генерации
криптографически
стойкой
последовательности
набор
случайных
значений,
получаемых из разных частей операционной системы (см. [10.5]). Более высокое
качество формирования псевдослучайных последовательностей обеспечивает наличие
специальной аппаратуры, использующей события физической природы для получения
случайных величин. В настоящее время некоторые процессоры имеют встроенные
микросхемы, предназначенные для генерации случайных битов; псевдослучайные
генераторы .NET
Framework
обеспечивают возможность использования таких
аппаратных средств для повышения качества генерируемых последовательностей.
В объектной модели .NET Framework классы, реализующие функциональность
генераторов псевдослучайных чисел, наследуются от класса RandomNumberGenerator.
По умолчанию в качестве реализации класса RandomNumberGenerator используется
класс RNGCryptoServiceProvider, который является оболочкой псевдослучайного
генератора, предоставляемого Windows по CryptoAPI [10.15]. В отличие от класса
System.Random в .NET Framework или функций rand() и random() в библиотеке языка
C,
псевдослучайный
генератор
CryptoAPI
не
создает
воспроизводимых
последовательностей. Иначе говоря, невозможно создать несколько экземпляров
класса
RNGCryptoServiceProvider,
которые
будут
возвращать
одинаковые
последовательности псевдослучайных чисел.
Во многих приложениях пользователи хотели бы иметь возможность выполнять
криптографические операции с использованием пароля в качестве ключа шифрования.
Однако пароли, как правило, являются нестойкими криптографическими ключами, т.к.
они не обладают достаточной случайностью и подвержены атакам методом перебора,
оптимизированного с использованием знаний о пользователе (опробуются пароли,
которые представляются наиболее вероятными). С другой стороны, пользователю
трудно запомнить последовательность из случайных цифр. Чтобы найти компромисс
между криптостойкими ключами и паролями, приемлемыми для пользователя, были
разработаны алгоритмы извлечения из паролей материала, пригодного для
использования при генерации ключей шифрования (см. [10.5]). Например, класс
PasswordDeriveBytes .NET
Framework
реализует алгоритм, который является
расширением алгоритма PBKDF1, описанного в стандарте PKCS #5 v2.0 [10.16]. Этот
алгоритм принимает на вход 4 параметра - пароль, значение Salt, количество
итераций и тип алгоритма хеширования (термин Salt связан в основном с процессом
хеширования - это некое случайное число, которое добавляется к хешируемому тексту,
чтобы повысить надёжность хеша и предотвратить атаки по словарю). Алгоритм
вычисляет хеш-функцию от комбинации пароля и значения Salt и в результате
возвращает последовательность байтов, пройдя указанное количество итераций.
XML- криптография
XML-подпись
Реализация целостности и невозможность отказа обеспечиваются посредством
цифровых XML-подписей (XML-Signature). XML-подпись служит для проверки
целостности принятых сообщений и полной либо частичной аутентификации XMLдокументов. Стандарт цифровой подписи XML-Signature Syntax and Processing
(сокращенно XMLDSIG от eXtensible
Markup Language Digital SIGnature
specification) разработан консорциумом W3C в 2002 году [11.1]. Он определяет
синтаксис представления цифровых подписей и правила их обработки, а также
сервисы, обеспечивающие целостность данных (в том числе документов XML в
передаваемом сообщении или вне его), установление подлинности сообщения и
подписавшего его лица. Для реализации функциональности, связанной с XMLподписью, .NET Framework предоставляет набор готовых классов, расположенных в
пространстве имен System.Security.Cryptography.Xml.
Применительно к XML-документам этот стандарт не является чем-то принципиально
новым. Его специфика состоит в описании того, как цифровые подписи могут быть
использованы внутри XML-документов. Проверка целостности служит подтверждением
того, что при передаче сообщение не получило повреждений в результате атаки. Кроме
того, цифровая подпись обеспечивает свойство невозможности отказа, в соответствии с
которым пославший документ не может отказаться от выполненного им действия. От
других
подобных
стандартов
XML-Signature
отличается
возможностью
распространения не на весь документ, а только на его часть. Разделение подписи на
части обеспечивает гибкость работы с документами с долгой историей, на протяжении
которой отдельные части могли создаваться и подписываться независимо. Гибкость
важна и в тех случаях, когда требуется целостность всего документа, но некоторые его
части нужно оставить свободными для дальнейших изменений.
Данные, заверенные подписью, могут содержаться внутри самого документа XML или
размещаться в других документах. На рис. 11.1 схематически показаны три различных
способа реализации XML-подписи [11.2]:
1. "Изолированная" подпись (Detached signature) вычисляется по объекту
данных, который является внешним по отношению к элементу XML Signature.
Элемент Signature и "подписанный" объект могут физически располагаться либо
в разных XML-документах, либо внутри различных тэгов одного документа;
2. "Охватывающая" подпись (Enveloping
signature, Wrapped
signature)
вычисляется по элементу Object, расположенному внутри элемента Signature;
3. "Встроенная" подпись (Enveloped signature, Embedded signature) вычисляется
по XML-контенту, содержащему элемент Signature.
Рис. 11.1. Три типа XML-подписи
Для обеспечения целостности данные преобразуются в короткий дайджест. Если
полученные сведения отличаются от оригинала, их дайджест будет отличен от
исходного. В параметрах подписи указывается алгоритм, использованный для создания
дайджеста. С его помощью получатель может проверить полученную подпись. Перед
подписанием XML-документ приводится к канонической форме, определенной
правилами разработанной W3C рекомендации "Canonical XML" [11.6]. Это позволяет
избежать неоднозначностей генерации дайджеста по синтаксически одинаковым
документам, которые могут отличаться порядком тегов, атрибутов или кодировкой.
XML-криптография
XML-криптография (XML encryption) как процесс зашифрования и расшифрования
цифрового контента XML заключается в использовании определенного XML-синтаксиса
и алгоритмов. XML-криптография предоставляет стандартизованные средства для
шифрования структурированных данных и представления результата в формате XML.
XML-криптография позволяет зашифровать любые данные, будь то целый XMLдокумент, его элементы или внешние данные (не обязательно в формате XML), на
которые
ссылается
документ.
Результат
шифрования
представляется
как
зашифрованный
элемент
XML,
который
либо
непосредственно
содержит
зашифрованные данные, либо ссылается на них. В обоих случаях полученное
представление может быть использовано приложениями, использующими мощные
кросс-платформенные технологии XML для доступа к данным.
Существуют Интернет-протоколы шифрования, такие как Secure Sockets Layer (SSL),
Transport Layer Security (TLS) и IPSec, позволяющие шифровать данные, которыми
обмениваются два приложения, и обеспечивать их целостность. Тем не менее, между
шифрованием XML и этими протоколами существуют фундаментальные различия [11.3].
Во-первых, XML-криптография позволяет шифровать не все данные, а только те
элементы XML-документа, которые нуждаются в защите, оставляя остальное
содержимое открытым. Защита канала с помощью SSL обеспечивает шифрование всех
передаваемых сообщений. Такой метод не всегда применим, поскольку отдельные
части XML-сообщений нередко нужно оставлять открытыми. Например, части (или все
тело) сообщения SOAP нуждаются в защите, но заголовки должны оставаться
открытыми, а информация, необходимая для маршрутизации и других промежуточных
действий, - быть доступной. Во-вторых, шифрование XML может быть использовано не
только для защищенного обмена данными между двумя приложениями, но и для
хранения данных в зашифрованном виде на диске или другом устройстве, обеспечивая
доступ к документу сразу для нескольких приложений. Протоколы SSL, TLS и IPSec
могут применяться только для шифрования соединения между двумя приложениями.
Таким
образом,
XML-криптография
не
заменяет
существующие
протоколы
безопасности, но решает проблему другого рода, которая включает два основных
аспекта [11.3]:


Шифрование определенных фрагментов структурированных данных
Шифрование структурированного хранилища данных, к которому одновременно
имеет доступ несколько приложений
В консорциуме W3C создана рабочая группа W3C XML Encryption Working Group
[11.4], которая специально занимается вопросами шифрования XML-данных. В марте
2002 года группа выпустила рекомендации Candidate Recommendation Specification,
и вместе с W3C в декабре того же года утвердила их. В рекомендациях определены
требования к XML-криптографии (XML Encryption Requirements), синтаксис и правила
обработки (XML Encryption Syntax and Processing). Спецификация "XML Encryption Syntax and Processing" ("Синтаксис и обработка шифрования XML")
[11.5] на момент написания данного курса лекций имеет статус рекомендации, т.е.
потенциально подвержена изменениям. В отличие от спецификации XML-подписи,
которая уже признана стандартом, .NET Framework не обеспечивает высокоуровневой
поддержки спецификации XML-криптографии. Тем не менее, доступные классы
пространств
имен
System.Xml
и
System.Security.Cryptography
позволяют
реализовать необходимую функциональность своими силами.
Спецификация XML Encryption, определяет методы, с помощью которых XML будет
представлять зашифрованные XML-данные и другую информацию, но не предписывает
применение конкретного метода шифрования. Для представления информации,
относящейся к использованным технологиям шифрования (например, данных об
алгоритме и ключе шифрования) используется стандартный синтаксис XML-тэгов. Так,
для
указания
алгоритма
шифрования
предусмотрен
специальный
элемент
EncryptionMethod. Данные шифруются, как правило, с помощью случайно
формируемого ключа с использованием симметричного криптоалгоритма; затем этот
ключ зашифровывается на открытом ключе предполагаемого получателя. Таким
образом, извлечь ключ, позволяющий расшифровать данные, может только указанный
получатель-владелец секретного ключа.
Существует возможность совместного использования механизмов XML-подписи и XMLшифрования:



Шифрование XML-подписи и подписанных данных
Шифрование подписанных данных, не захватывающее XML-подпись
XML-подпись зашифрованных данных
Преимущества и недостатки этих подходов показаны в табл. 11.1.
Таблица 11.1. XML-подпись + XML-шифрование
Шифрование
подписи
подписанных
данных
Шифрование
XMLподписанных
XML-подпись
и
данных,
не зашифрованных
захватывающее XML- данных
подпись
Преимущества Скрыто максимально
возможное
количество данных, в
т.ч.
исключается
возможность
идентификации
Подпись применима к
исходному тексту и при
необходимости
может
быть
сохранена
и
использована
в
дальнейшем
для
Если
данные
повреждены, это можно
установить сразу, не
затрачивая время на
расшифровку.
Недостатки
отправителя
по обеспечения
подписи.
Подпись неотказуемости.
применима
к
исходному тексту и
при
необходимости
может быть сохранена
и
использована
в
дальнейшем
для
обеспечения
неотказуемости.
Если
данные Reference
и
повреждены,
до DigestMethod
расшифровки
это DigestValue
открыты
установить
для
злоумышленного
невозможно.
анализа.
В
случае
Подверженность
использования
replay-атаке
криптоалгоритмов
с
(злоумышленной
открытым ключом для
пересылке
ЭЦП
существует
получателем
возможность
сообщения).
идентификации
отправителя
по
подписи. Если данные
повреждены,
до
расшифровки
это
установить
невозможно.
Подверженность
replay-атаке
(злоумышленной
пересылке получателем
сообщения).
Reference
DigestMethod
и
DigestValue
открыты
для
злоумышленного
анализа.
В
случае
использования
криптоалгоритмов
с
открытым ключом для
ЭЦП
существует
возможность
идентификации
отправителя
по
подписи.
Подверженность
replay-атаке
(злоумышленной
пересылке получателем
сообщения).
Для
демонстрации подписи
третьей
стороне
потребуется
предоставить
использованный
для
шифрования ключ, что
может
привести
к
компрометации других
данных,
зашифрованных на этом
ключе.
Шаблоны использования криптографических функций в
корпоративных приложениях
Библиотека предприятия (Enterprise Library) [12.2] включает набор блоков для
разработки корпоративных приложений и представляет собой один из проектов
инициативы Microsoft "Patterns & Practices" ("Шаблоны и лучшие практики"). Шаблон
проектирования (паттерн, англ. design pattern) - это многократно применяемая
архитектурная конструкция, предоставляющая решение общей проблемы
проектирования в рамках конкретного контекста и описывающая значимость этого
решения. Шаблон, в общем случае, состоит из четырех элементов:
1. Имя - однозначное определение шаблона, говорящее о его назначении.
2. Задача - условия применения шаблона.
3. Решение - абстрактное описание решения задачи и модель решения в виде
набора связанных классов.
4. Результат - ожидаемые последствия применения шаблона.
Программные компоненты, входящие в библиотеку, предназначены для того, чтобы
помочь программисту справиться со стандартными задачами, возникающими при
разработке сложных приложений уровня предприятий. Блоки интегрируются в .NET
приложения и разработаны с целью их многократного использования в различных
проектах.
В библиотеку предприятия входят:




Исполняемый двоичный код (скомпилированные сборки для всего исходного
кода)
Исходный код (для всех блоков приложений, а также утилит конфигурации,
модульных тестов и обучающих примеров)
Модульные тесты (созданные на этапе разработки блоков приложений)
Документация (для просмотра используется справочная система Visual Studio)
К корпоративным приложениям обычно предъявляются высокие требования по
безопасности, надежности и производительности. Основными принципами библиотеки
предприятия являются:




Согласованность. Все блоки приложений характеризуются согласованным
дизайном и способами реализации;
Расширяемость. Для всех блоков приложений определены возможности
расширения, позволяющие разработчикам настраивать поведение блоков путем
добавления собственного кода;
Простота использования. Библиотека предприятия проста в установке,
снабжена графической утилитой конфигурации блоков, подробной
документацией и примерами использования;
Интеграция. Компоненты библиотеки предприятия можно использовать по
отдельности, однако в них изначально был заложен принцип совместной работы.
Текущая версия Enterprise Library 4.1 [12.2], выпущенная в октябре 2008 г., включает
следующие блоки приложений:









Caching Application Block;
Cryptography Application Block;
Data Access Application Block;
Exception Handling Application Block;
Logging Application Block;
Security Application Block;
Validation Application Block;
Unity Application Block;
Policy Injection Application Block.
Для нас интерес будет представлять криптографический блок приложений
(Cryptography Application Block, CAB). Криптографический блок обеспечивает
разработчикам простой способ включения в приложения криптографических функций.
САВ содержит:





Алгоритмы шифрования;
Алгоритмы хеширования;
Различные криптопровайдеры;
Дополнительные реализации криптопровайдеров;
Функции защиты ключей с помощью DPAPI.
CAB сокращает усилия по написанию кода для выполнения стандартных задач,
предоставляя реализации, которые могут быть использованы в разнообразных
приложениях. Использование общей архитектурной модели для всей предоставляемой
функциональности сокращает время, необходимое программисту для освоения
инструментария. САВ позволяет придерживаться согласованных подходов к реализации
криптографии в рамках как отдельного приложения, так и предприятия в целом.
САВ является расширяемым и поддерживает дополнительные реализации
криптопровайдеров. Абстрагируя код приложений от конкретных криптопровайдеров,
САВ упрощает работу программиста. Для изменения используемого криптопровайдера
нет необходимости исправлять исходный код, достаточно использовать утилиту
конфигурации.
Библиотека предприятия использует DPAPI (Data Protection API) для обеспечения
безопасности ключей. Создать ключ можно при помощи мастера криптоключей
(Cryptographic Key Wizard); каждый ключ хранится в отдельном файле, защищенном
DPAPI. Доступны два режима генерации ключа: машинный режим и пользовательский
режим, ограничивающий доступ к ключу. Машинный режим используется в тех случаях,
когда:


На выделенном сервере выполняется только одно приложение;
На сервере одновременно работает несколько приложений, которые совместно
используют секретную информацию.
САВ разрабатывался с целью обеспечения простого и интуитивно понятного
интерфейса для доступа к необходимой функциональности и инкапсуляции логики,
используемой для решения стандартных криптографических задач.
Архитектура блока САВ представлена на рис. 12.1. Класс Cryptographer реализует
шаблон "фасад" [12.1] между клиентским кодом и криптографическими функциями
блока. Клиентский код вызывает статические методы класса Cryptographer для
создания и сравнения хешей, шифрования и расшифрования данных. Каждый
статический метод создает экземпляр класса, реализующий шаблон "фабрика" [12.1],
передавая параметры конфигурации конструктору класса. Класс-"фабрика" по
конфигурационным данным определяет тип криптопровайдера, который нужно создать.
Класс DpapiCryptographer использует DPAPI для шифрования и расшифрования
данных. При этом используются учетные записи пользователя или локальной машины.
Класс SymmetricCryptographer инкапсулирует реализации провайдеров,
унаследованные от базового класса SymmetricAlgorithm, принадлежащего
пространству имен System.Security.Cryptography .NET Framework. Это означает, что
класс SymmetricCryptographer поддерживает любой симметричный криптоалгоритм
.NET Framework - например, Rijndael. Для шифрования ключа используется DPAPI.
увеличить изображение
Рис. 12.1. Структура криптографического блока приложений
Криптографические механизмы Windows
Средство шифрования диска Windows BitLocker
Средство шифрования диска BitLocker (прежнее название - Full Volume Encryption/FVE "полное шифрование тома") обеспечивает защиту данных на аппаратном уровне.
Шифрование всего системного тома Windows позволяет предотвратить утечку или
раскрытие данных с утерянного, украденного или неправильно утилизированного
компьютера. Технология BitLocker помогает организациям исполнять государственные
постановления и законы, в которых требуется использование высоких стандартов
обеспечения безопасности и защиты данных (например, закон Сарбэйнса-Оксли [19.8]
и HIPAA [19.2]).
Шифрование диска BitLocker является новой возможностью, которая доступна в
Windows Vista и Longhorn Server. Оптимальным хранилищем для ключа шифрования с
точки зрения функции BitLocker является микросхема доверенного платформенного
модуля TPM версии 1.2. Если технология развертывается в системе, не имеющей такой
микросхемы, то ключ шифрования записывается на запоминающее устройство USB
[19.9]. Важно отметить, что алгоритм шифрования, используемый системой TPM,
запрещен для применения в Российской Федерации и ноутбуки приходят в Россию с
заблокированным TPM модулем [19.12].
Применение технологии шифрования BitLocker позволяет обеспечить физическую
безопасность данных, а именно [19.11]:


На серверной стороне - защиту при физическом изъятии жесткого диска и
копировании данных
На клиентской стороне - шифрование для ноутбуков, которые могут быть
потеряны или украдены
BitLocker использует алгоритм AES с ключом 128 бит [19.3]. Взлом такого шифра
методом полного перебора с использованием самого мощного персонального
компьютера уйдет более 100 триллионов лет [19.6]. При современном уровне развитии
вычислительной техники можно гарантировать, что на ближайшие 2 тыс. лет данные,
зашифрованные алгоритмом AES-128 в безопасности. Однако нельзя с уверенностью
утверждать, что за это время не появится более эффективных методов взлома таких
шифров или что в AES не обнаружатся лазейки, которые позволят осуществлять поиск
ключа более эффективно, чем методом полного перебора. Для повышения надежности
длину ключа можно увеличить до 256 бит с помощью групповых политик или через
интерфейс, предоставляемый провайдером инструментария управления Windows
(Windows Management Instrumentation, WMI) для BitLocker. Более подробная
информация по криптоалгоритмам, используемым BitLocker, изложена в [19.1].
Защита данных с помощью шифрования BitLocker усиливается за счет шифрования
системного раздела и проверки целостности компонентов, используемых на раннем
этапе загрузки. Каждый сектор тома шифруется отдельно, при этом часть ключа
шифрования определяется номером этого сектора. В результате два сектора,
содержащие одинаковые незашифрованные данные, будут в зашифрованном виде
выглядеть по-разному, что сильно затрудняет определение ключей шифрования путем
записи и шифровки заранее известных данных. Не шифруются три элемента [19.9]:



загрузочный сектор,
поврежденные сектора, уже отмеченные как нечитаемые,
метаданные тома.
Метаданные тома состоят из трех избыточных копий данных, используемых BitLocker,
включая статистическую информацию о томе и защищенные копии некоторых ключей
расшифровки. Эти элементы не требуют шифрования, поскольку не являются
уникальными, ценными или позволяющими определить личность.
При включении BitLocker без дополнительных параметров активируется шифрование
жесткого диска без применения ТРМ - не лучший вариант с точки зрения безопасности,
но единственно возможный в России, где использование TPM запрещено [19.11].
Перед применением шифрования BitLocker использует алгоритм, называемый
диффузором (diffuser) [19.3]. В результате его применения даже мельчайшее
изменение исходного текста приводит к абсолютному изменению всего сектора
зашифрованных данных. Это серьезно затрудняет определение ключей или
дешифровку.
Использование технологии BitLocker - это один из возможных подходов к проблеме
гарантированного уничтожения информации на жестком диске. Как известно (см.,
например, [19.14]), эта задача является очень важной: даже использование
специализированных средств не всегда предохраняет от риска восстановления данных
злоумышленником по остаточной информации. Чтобы избавиться от данных, достаточно
избавиться от ключа, которым они были зашифрованы: несмотря на то, что данные при
этом физически останутся на жестком диске, для злоумышленника они уже не будут
представлять интереса.
Encrypted File System
Шифрованная файловая система (Encrypted File System, EFS) - механизм шифрования
файлов на основе NTFS, впервые примененный в Windows 2000 [19.13] (NTFS/New
Technology
File
System
файловая
система,
обладающая
возможностями
восстановления, использующая парадигмы базы данных, обработки транзакций и
объектов для того, чтобы обеспечить защиту данных). В Windows Server 2003 и
Windows XP функциональность и набор компонентов EFS были расширены.
Совершенствование EFS продолжилось в клиентской и серверной операционных
системах Microsoft следующего поколения - Windows Vista и Longhorn Server:
управление файловой системой EFS по сети улучшено за счет возможности хранения
ключей EFS на смарт-картах.
EFS служит для шифрования файлов и папок на уровне пользователя. Например, если
на одном компьютере работают два пользователя, то с помощью файловой системы EFS
каждый из них может шифровать свои данные так, чтобы они были недоступны
другому. С другой стороны, предусмотрена возможность коллективного использования
зашифрованных данных.
EFS использует симметричный шифр AES или Data Encryption Standard X (DESX) (в
версиях Windows, предшествующих Vista) для шифрования данных и асимметричный
шифр RSA для надежного хранения ключа шифрования данных. DESX - усиленный
вариант DES, поддерживаемый инструментарием RSA Security и разработанный
Рональдом Ривестом. Главной причиной использования DESX является простой в
вычислительном смысле способ значительного повысить стойкость DES к атакам
полного
поиска
ключа.
Эта
повышенная
стойкость
была
формально
продемонстрирована в [19.4] и [19.7].
BitLocker + Encrypted File System
На первый взгляд, совместное использование EFS и BitLocker противоречит золотому
правилу криптографии: "Если вы шифруете что-то дважды - вы, очевидно, не
понимаете смысл своих действий" [19.6]. Действительно, в стандартном сценарии
шифрования данные шифруются симметричным криптоалгоритмом с использованием
ключа, который затем зашифровываются на открытом ключе пользователя, имеющего
право доступа к этим данным. В этом случае мы имеем 2 ключа и 2 шага шифрования тем не менее, к каждому объекту шифрования (данным и симметричному ключу)
криптоалгоритм применяется только один раз. Какой смысл дополнительно шифровать
данные, которые уже защищены при помощи BitLocker? Однако заметим, что
пользователь, обладающий ключом шифрования BitLocker, автомати чески получает
доступ ко всему содержимому диска. EFS предоставляет более гибкий подход и
позволяет управлять доступом на уровне пользователей. Очевидным минусом
комбинирования технологий является снижение производительности системы.
Краткие итоги
В лекции рассмотрены функции и целевое назначение систем шифрования BitLocker и
EFS. Изучен механизм работы и рекомендации Microsoft по применению этих продуктов.
Обоснована целесообразность совместного использования технологий BitLocker и EFS
Download