Можно выделить следующие типы нарушений безопасности, с которыми приходится сталкиваться на практике:
Атаки на протоколы информационного обмена можно классифицировать так, как показано на рис 3.1.
(рис 3.1) Классификация атак на информационные системы
Можно выделить следующий основной набор функций защиты:
Как будет показано в последующих главах, помимо перечисленных функций желательно обеспечить неотслеживаемость информации, например, для обеспечения анонимности участников финансовых транзакций.
), при этом иногда устанавливаются несколько уровней защиты в зависимости от важности содержимого сообщений.
Аутентичность. В случае единичного сообщения назначение средств обеспечения аутентичности - проверка, что источником данного сообщения является именно тот субъект, за которого выдает себя отправитель. При интерактивном взаимодействии эти средства, во-первых, должны гарантировать, что оба участника информационного взаимодействия аутентичны (т.е. действительно являются теми, за кого себя выдают), а во-вторых, не должны допускать несанкционированного влияния на информационный обмен какой-либо третьей стороны.
Целостность. Назначение средств защиты целостности - гарантировать, что принятые сообщения в точности соответствуют отправленным и не содержат изъятий, дополнений, повторов и изменений в порядке следования фрагментов. Может контролироваться целостность как частей сообщения, так и сообщения в целом, а также потока сообщений. Дополнительной функцией соответствующих средств (помимо основной - оперативного обнаружения нарушений целостности), может являться и восстановление искаженной информации.
Управление доступом. Назначение средств управления доступом - исключить из процессов информационного взаимодействия незаконных участников (субъектов и объектов) и предотвратить выход законных участников за пределы своих полномочий. В процессе аутентификации субъекта выделяют три стадии - идентификация (проверка подлинности идентификаторов субъекта), собственно аутентификация и авторизация (проверка того, какие права предоставлены данному субъекту, какие ресурсы он может использовать, какие действия он может совершать и пр.).
Аутентификация пользователей (субъектов) может быть основана на следующих принципах:
Невозможность отказа от факта отправки или получения сообщения. Если сообщение было отправлено не внушающим доверия отправителем, получатель должен иметь возможность доказать, что сообщение было действительно отправлено. И наоборот, если сообщение было отправлено не внушающему доверия получателю, отправитель должен иметь возможность доказать, что сообщение этим адресатом получено.
На рис 3.2 показана модель системы защиты информационного взаимодействия по каналам связи.
(рис 3.2) Модель системы защиты удаленного взаимодействия двух абонентов
.
(рис 3.3) Модель системы защиты от РПВ
Современная криптография включает в себя следующие основные разделы:
Введем некоторые понятия, необходимые в дальнейшем:
| алфавит | - | конечное множество используемых для шифрования информации знаков; |
| текст | - | упорядоченный набор из элементов алфавита; |
| шифр | - | совокупность обратимых преобразований множества открытых данных на множество зашифрованных данных, заданных алгоритмом криптографического преобразования (криптоалгоритмом); |
| ключ | - | сменный элемент шифра, применяемый для закрытия отдельного сообщения, т.е. конкретное секретное состояние параметров криптоалгоритма, обеспечивающее выбор одного варианта преобразования из совокупности возможных; именно ключом определяется в первую очередь безопасность защищаемой информации и поэтому применяемые в надежных шифрах преобразования в большой степени зависят от ключа; |
| зашифрование | - | преобразование открытых данных в закрытые (зашифрованные) с помощью определенных правил, содержащихся в шифре; |
| расшифрование | - | обратный процесс; |
| шифрование | - | процесс зашифрования или расшифрования; |
| криптосистема | - | состоит из пространства ключей, пространства открытых текстов, пространства шифротекстов и алгоритмов зашифрования и расшифрования; |
| дешифрование | - | процесс преобразования закрытых данных в открытые при неизвестном ключе и (или) неизвестном алгоритме (вскрытие или взлом шифра); |
| синхропосылка | - | исходные параметры криптоалгоритма; |
| раскрытие криптоалгоритма | - | результат работы криптоаналитика, приводящий к возможности эффективного определения любого зашифрованного с помощью данного алгоритма открытого текста; |
| стойкость криптоалгоритма | - | способность шифра противостоять всевозможным попыткам его раскрытия, т.е. атакам на него. |
Все современные шифры базируются на принципе Кирхгофа, согласно которому секретность шифра обеспечивается секретностью ключа, а не секретностью алгоритма шифрования. В некоторых ситуациях (например, в военных, разведывательных и дипломатических ведомствах) нет никаких причин делать общедоступным описание сути криптосистемы. Сохраняя такую информацию в тайне, можно дополнительно повысить надежность шифра. Однако полагаться на секретность этой информации не следует, так как рано или поздно она будет скомпрометирована. Поэтому анализ надежности таких систем всегда должен проводиться исходя из того, что противник имеет всю информацию о применяемом криптоалгоритме, ему неизвестен только реально использованный ключ. В связи с вышеизложенным можно сформулировать общее правило: при создании или при анализе стойкости криптосистем не следует недооценивать возможностей противника. Их лучше переоценить, чем недооценить.
Стойкость криптосистемы зависит от сложности алгоритмов преобразования, длины ключа, а точнее от объема ключевого пространства, метода реализации: при программной реализации необходимо дополнительно защищаться от разрушающих программных воздействий (вирусов, червей, троянских программ). Хотя понятие стойкости шифра является центральным в криптографии, количественная оценка криптостойкости - проблема до сих пор не решенная.
Методы оценки качества криптоалгоритмов, используемые на практике:
В первом случае многое зависит от квалификации, опыта, интуиции криптоаналитиков и от правильной оценки возможностей противника. Обычно считается, что противник знает шифр, имеет возможность его изучения, знает некоторые характеристики открытых защищаемых данных, например тематику сообщений, их стиль, стандарты, форматы и т.п.
Во втором случае оценку стойкости шифра заменяют оценкой минимальной сложности алгоритма его вскрытия. Однако получение строгих доказуемых оценок нижней границы сложности алгоритмов рассматриваемого типа проблематично. Иными словами, всегда возможна ситуация, когда алгоритм вскрытия шифра, сложность которого анализируется, оказывается вовсе не самым эффективным.
Сложность вычислительных алгоритмов можно оценивать числом выполняемых элементарных операций, при этом необходимо учитывать их стоимость и затраты на их выполнение. В общем случае это число должно иметь строгую нижнюю оценку и выходить за пределы возможностей современных компьютерных систем. Качественный шифр невозможно раскрыть способом более эффективным, нежели полный перебор по всему ключевому пространству, при этом криптограф должен рассчитывать только на то, что у противника не хватит времени и ресурсов, чтобы это сделать.
В третьем случае можно сформулировать следующие необходимые условия стойкости криптосистемы, проверяемые статистическими методами:
Существует много различных криптоалгоритмов, при этом нет ни одного, подходящего для всех случаев. В каждой конкретной ситуации выбор криптоалгоритма определяется следующими факторами:
Основные объекты изучения классической криптографии показаны на рис 3.4, где А и В - законные пользователи, W - противник или криптоаналитик. Учитывая что схема на рис 3.4а фактически является частным случаем схемы на рис 3.4б при В = А, в дальнейшем будет рассматриваться только она.
(рис 3.4) Криптографическая защита: а - при хранении; б - при передаче информации по каналу связи
Процедуры зашифрования E (encryption) и расшифрования D (decryption) можно представить в следующем виде:
$$C = E (M) = K_e \{M\};$$
$$M = D (C) = K_d \{C\},$$
| где | M (message) и C (ciphertext) | - | открытый и зашифрованный тексты; |
| $$K_e$$ и $$K_d$$ | - | ключи зашифрования и расшифрования. |
Функции за- и расшифрования взаимно обратные, иначе говоря, для любого текста X справедливо:
$$D (E (X)) = Kd \{K_e \{X\}\} = X;$$
$$E (D (X)) = Ke \{K_d \{X\}\} = X.$$
На рис 3.5 приведена классификация методов шифрования информации. Различают два типа алгоритмов шифрования симметричные (с секретным ключом) и асимметричные (с открытым ключом). В первом случае обычно ключ расшифрования совпадает с ключом зашифрования, т.е.
$$K_d = K_e = K,$$
либо знание ключа зашифрования позволяет легко вычислить ключ расшифрования. В асимметричных алгоритмах такая возможность отсутствует: для зашифрования и расшифрования используются разные ключи, причем знание одного из них не дает практической возможности определить другой. Поэтому, если получатель А информации сохраняет в секрете ключ расшифрования $$K_{dA} = SK_A$$, ключ зашифрования $$K_{eA} = PK_A$$ может быть сделан общедоступным (SK - secret key, PK - public key).
(рис 3.5) Классификация методов шифрования информации
В процессе шифрования информация делится на порции величиной от одного до сотен бит. Как правило, поточные шифры оперируют с битами открытого и закрытого текстов, реже - с байтами, а блочные - с блоками фиксированной длины. Главное требование к блочному шифру - высокая криптостойкость. Блочный криптоалгоритм для своей работы требует наличия полного блока данных, в поточных же криптоалгоритмах стараются обеспечить шифрование в режиме рельного времени или близком к нему (иногда с ущербом для криптостойкости). Но главное различие между этими двумя методами заключается в том, что в блочных шифрах для шифрования всех порций используется один и тот же ключ, а в поточных - для каждой порции используется свой ключ той же размерности. Иначе говоря, в поточных шифрах имеет место зависимость результата шифрования порции информации от ее позиции в тексте, а в некоторых случаях и от результатов шифрования предыдущих порций текста. Таким образом, при реализации поточной криптосистемы возникает необходимость в элементах памяти, изменяя состояние которых, можно вырабатывать последовательность (поток) ключевой информации. Блочную же криптосистему можно рассматривать как зависящую от ключа замену на множестве значений блоков открытого текста.
Высокая скорость работы поточных шифров определяет область их использования - закрытие данных, требующих оперативной доставки потребителю, например аудио- и видеоинформации. Учитывая, что при применении классических блочных шифров одинаковым блокам открытого текста соответствуют одинаковые блоки шифротекста, что является серьезным недостатком, на практике получили наибольшее распространение комбинированные методы шифрования (а точнее, поточные режимы использования блочных шифров), использующие сцепление блоков или принцип формирования потока ключей (гаммы шифра) с помощью так называемых генераторов псевдослучайных последовательностей (ПСП), в качестве функции обратной связи которых используется функция зашифрования блочного шифра.
Блочные итерационные шифры. Принцип работы всех современных блочных шифров суть многократное повторение одной и той же раундовой операции. В некоторых случаях раундовые ключи получаются из ключа всей системы с помощью алгоритма выработки раундовых ключей (при этом размер ключа системы существенно меньше суммарного размера всех раундовых ключей).
Идея, лежащая в основе итерационных блочных шифров, состоит в построении криптостойкой системы путем многократного применения относительно простых криптографических преобразований, в качестве которых К. Шеннон предложил использовать преобразования замены (подстановки) (substitution) и перестановки (permutation); схемы, реализующие эти преобразования, называются SP-сетями. Действие таких шифров аналогично "алгоритму", к которому прибегают, когда месят тесто:
| РАСКАТАТЬ |
| СЛОЖИТЬ |
| РАСКАТАТЬ |
| СЛОЖИТЬ |
| РАСКАТАТЬ |
| СЛОЖИТЬ |
| . . . . . . . |
Многократное использование этих преобразований, приведенное на рис 3.6, позволяет обеспечить два свойства, которые должны быть присущи стойким шифрам: рассеивание (diffusion) и перемешивание (confusion) информации.
(рис 3.6) Схема простейшего итерационного шифра
Рассеивание и перемешивание предполагают:
Наличие у шифра этих свойств:
Самые известные блочные шифры - DES (Data Encryption Standard), старый американский стандарт шифрования, созданный в 1974 г., де-факто многолетний неофициальный мировой стандарт шифрования; российский стандарт криптозащиты ГОСТ 28147-89 и новый американский стандарт шифрования AES (Advanced Encryption Standard), принятый в 2001 г. в результате многолетнего открытого международного конкурса.
Структура раундового преобразования DES и ГОСТ носит название петли Фейстеля, схема которой приведена на рис 3.7, а структура функций за- и расшифрования - сеть Фейстеля. Структура AES носит название "Квадрат".
(рис 3.7) Схема петли Фейстеля, f — раундовая функция
DES работает с блоками данных разрядностью 64 бита с использованием 56-разрядного ключа, из которого по специальному фиксированному алгоритму, использующему перестановки и сдвиги, вырабатываются раундовые ключи. Применяемые преобразования - поразрядное сложение по модулю 2, подстановки и перестановки, число раундов равно 16, перед началом первого раунда выполняется начальная фиксированная перестановка IP, после 16-го раунда выполняется обратная перестановка $$IP^{–1}$$. Следуя рекомендациям Шеннона, в каждом раунде выполняется один шаг перемешивания (с использованием соответствующего раундового ключа и S-блоков (блоков замены), после которого следует шаг рассеивания, не зависящий от ключа.
Интересно отметить, что в первоначальной схеме, предложенной IBM, все шестнадцать 48-разрядных раундовых ключей выбирались независимо, т.е. размер ключа был равен 768 битам. Однако по требованию Агентства национальной безопасности США (АНБ), во-первых, размер ключа был уменьшен до 64 бит, из которых только 56 являются секретными, во-вторых, в алгоритме определены перестановки лишь специального вида, не зависящие от ключа, что наводило критиков этого алгоритма на мысль, будто АНБ могла использовать известные ей слабости алгоритма для его взлома. На протяжении последних десятилетий DES подвергался интенсивному и всестороннему исследованию и по современным понятиям уже не считается надежным, в первую очередь из-за небольшой разрядности ключа.
Существует несколько предложений, направленных на усовершенствование DES. Наиболее известное из них, Triple DES, заключается в трехкратном применении алгоритма.
ГОСТ 28147-89. Ключевая информация ГОСТа представляет собой два массива данных: собственно ключ K и таблицу замен H. Ключ - это массив из восьми 32-разрядных элементов $$K = K_0 K_1 … K_7$$. Таким образом, размер ключа составляет 256 битов или 32 байта. Таблица замен - это набор из восьми одномерных массивов, так называемых узлов замены, каждый из которых определяет логику работы четырехразрядного блока подстановок (S-блока) и по этой причине содержит 16 четырехразрядных двоичных наборов (от 0 до 15), расположенных в произвольном порядке. Таким образом, объем таблицы замен равен 8 * 16 * 4 = 512 битов, или 64 байта. Таблица замен H в отличие от ключа К может являться долговременным ключевым элементом. Она, например, может быть общей для всех процедур шифрования в рамках одной системы криптографической защиты.
В качестве исходных данных раундовая функция шифрования ГОСТа получает 64-разрядный блок данных D = (L, R) и 32-разрядный раундовый ключ, в качестве которого используется один из элементов ключа Кi. В ходе выполнения преобразования левая L и правая R половины блока данных рассматриваются как отдельные 32-разрядные элементы данных, в качестве которых они подвергаются следующим преобразованиям:
Полученные значения элементов L и R выдаются в качестве результата шага раундового преобразования.
ГОСТ 28147-89 определяет три режима шифрования данных (простая замена, гаммирование и гаммирование с обратной связью) и режим выработки имитоприставки (кода аутентификации сообщений).
Простейшей и в то же время наиболее надежной из всех схем шифрования является так называемая схема однократного использования, приведенная на рис 3.8, изобретение которой чаще всего связывают с именем Г.С. Вернама.
(рис 3.8) Схема однократного использования
Формируется m-разрядная случайная двоичная последовательность - ключ шифра, известный отправителю и получателю сообщения. Отправитель производит побитовое сложение по модулю 2 ключа и m-разрядной двоичной последовательности, соответствующей пересылаемому сообщению:
| где | $$M_i$$, $$K_i$$ и $$С_i$$ | - | очередной i-й бит соответственно исходного сообщения, ключа и зашифрованного сообщения; |
| m | - | число битов открытого текста. |
Процесс расшифрования сводится к повторной генерации ключевой последовательности и наложения ее на зашифрованные данные. Уравнение расшифрования имеет вид:
К. Шенноном доказано, что, если ключ является фрагментом истинно случайной двоичной последовательностью с равномерным законом распределения, причем его длина равна длине исходного сообщения, и используется этот ключ только один раз, после чего уничтожается, такой шифр является абсолютно стойким, его невозможно раскрыть, даже если криптоаналитик располагает неограниченным запасом времени и неограниченным набором вычислительных ресурсов. Действительно, противнику известно только зашифрованное сообщение С, при этом все различные ключевые последовательности K возможны и равновероятны, а значит, возможны и любые сообщения M, т.е. криптоалгоритм не дает никакой информации об открытом тексте.
Целью противника может являться раскрытие криптосистемы, нахождение ключа, в крайнем случае, дешифрование какого-либо закрытого сообщения. Однако он может быть удовлетворен, получив даже некоторую вероятностную информацию об исходном тексте сообщения. Например, известный криптоаналитику факт написания текста некоторого сообщения на английском языке предоставляет ему некоторую априорную информацию об этом сообщении даже до анализа шифровки. В этом случае он заранее знает, что слово "HELLO" является более вероятным началом сообщения, чем набор букв "FGHKM". Поэтому одной из целей криптоанализа может являться увеличение информации, относящейся к каждому возможному сообщению таким образом, чтобы правильный текст был более вероятен. Предположим, противник перехватил шифровку "ABCCD" и знает (или предполагает), что использованный шифр - это шифр простой замены. Анализ шифровки позволяет сделать вывод, что исходное сообщение состоит из пяти букв, причем на третьей и четвертой позициях стоит одна и та же буква, а остальные отличны от нее и различны между собой. Противник не может считать, что это сообщение "HELLO", потому что имеются и другие возможные сообщения, например "TEDDY". Однако апостериорные вероятности таких открытых текстов возрастают относительно их априорных вероятностей. В то же время апостериорная вероятность таких открытых текстов, как "PEACE" или "GATES", снижается до нуля вне зависимости от их априорной вероятности. По К. Шеннону, в совершенно секретных криптосистемах после анализа закрытых текстов апостериорные вероятности возможных открытых текстов остаются такими же, какими были их априорные вероятности.
Необходимые и достаточные условия абсолютной стойкости шифра:
Абсолютная стойкость рассмотренной схемы оплачивается слишком большой ценой, она чрезвычайно дорогая и непрактичная. Основной ее недостаток - это равенство объема ключевой информации и суммарного объема передаваемых сообщений. Применение схемы оправдано лишь в не часто используемых каналах связи для шифрования исключительно важных сообщений. Существует большое число модификаций представленной схемы, наиболее известная из которых основана на использовании одноразовых шифровальных блокнотов.
Таким образом, построить эффективный криптоалгоритм можно, лишь отказавшись от абсолютной стойкости. Возникает задача разработки такого теоретически нестойкого шифра, для вскрытия которого противнику потребовалось бы выполнить такое число операций, которое осуществимо на современных и ожидаемых в ближайшей перспективе вычислительных средствах за разумное время. В первую очередь следует иметь схему, которая использует ключ небольшой разрядности, в дальнейшем выполняющий функцию "зародыша", порождающего значительно более длинную ключевую последовательность.
Данный результат может быть достигнут при использовании гаммирования, схема которого показана на рис 3.9.
(рис 3.9) Шифрование информации методом гаммирования
Гаммированием называют процедуру наложения на входную информационную последовательность гаммы шифра, т.е. последовательности с выходов генератора псевдослучайных последовательностей (ПСП) G. Последовательность называется псевдослучайной, если по своим статистическим свойствам она неотличима от истинно случайной последовательности, но в отличие от последней является детерминированной, т.е. знание алгоритма ее формирования дает возможность ее повторения необходимое число раз. Если символы входной информационной последовательности и гаммы представлены в двоичном виде, наложение чаще всего реализуется с помощью операции поразрядного сложения по модулю 2. Надежность шифрования методом гаммирования определяется качеством генератора гаммы.
Качественные ПСП, являясь по своей сути детерминированными, успешно заменяют во многих приложениях (в первую очередь связанных с защитой информации) случайные последовательности, которые чрезвычайно сложно формировать.
Можно выделить следующие задачи, требующие решения при организации защиты информационных систем:
Во всех рассмотренных случаях генераторы ПСП применяются либо непосредственно, либо косвенно, когда на их основе строятся генераторы случайных последовательностей, генераторы контрольных кодов и хеш-генераторы. Во всех случаях требуются последовательности с равномерным законом распределения.
Можно выделить следующие функции генераторов ПСП в системах защиты информации:
Требования к качественному генератору ПСП:
Непредсказуемость. Данное требование означает, что для противника, имеющего возможность анализировать фрагмент ПСП конечной длины, три задачи вычислительно неразрешимы:
В первых двух случаях самая эффективная возможная стратегия - бросание жребия, в третьем - полный перебор по всему ключевому пространству.
Определенные статистические свойства. Это требование означает, что ни один из существующих статистических тестов не в состоянии обнаружить на выходе генератора какие-либо закономерности статистических зависимостей между различными последовательностями, формируемыми при инициализации генератора случайными значениями.
представлены обе вышеназванные схемы.
(рис 3.10) Генераторы ПСП: а - общая схема; б - частные случаи (режимы OFB и Counter); в - классификация криптографических генераторов ПСП
Вторую схему следует считать более предпочтительной, так как первая имеет следующие недостатки:
На рис 3.10в показана классификация криптографических генераторов ПСП. Роль нелинейных функций $$F_{out}$$ или $$F_{fb}$$ в рассматриваемой ситуации выполняет функция зашифрования E одноключевой (с секретным ключом) или двухключевой (с открытым ключом) криптосистемы. Непредсказуемость криптографических генераторов основывается на предположениях о том, что у аналитика не хватит ресурсов (вычислительных, временных или стоимостных) для того, чтобы инвертировать нелинейную функцию обратной связи или нелинейную функцию выхода генератора ПСП.
По совокупности вышеперечисленных требований наиболее приемлемое решение - генераторы ПСП, использующие многораундовые преобразования при построении функций $$F_{out}$$ или $$F_{fb}$$.
Наиболее обоснованными математически следует признать генераторы с использованием односторонних функций. Непредсказуемость данных генераторов основывается на сложности решения ряда математических задач (например, задачи дискретного логарифмирования или задачи разложения больших чисел на простые множители). Существенным недостатком генераторов этого класса является низкая производительность.
Шифр Вернама можно считать исторически первым поточным шифром. Так как поточные шифры в отличие от блочных осуществляют поэлементное шифрование потока данных без задержки в криптосистеме, их важнейшим достоинством является высокая скорость преобразования, соизмеримая со скоростью поступления входной информации. Таким образом обеспечивается шифрование практически в реальном масштабе времени вне зависимости от объема и разрядности потока преобразуемых данных.
В синхронных поточных шифрах (см. рис 3.9) гамма формируется независимо от входной последовательности, каждый элемент (бит, символ, байт и т.п.) которой таким образом шифруется независимо от других элементов. В синхронных поточных шифрах отсутствует эффект размножения ошибок, т.е. число искаженных элементов в расшифрованной последовательности равно числу искаженных элементов зашифрованной последовательности, пришедшей из канала связи. Вставка или выпадение элемента зашифрованной последовательности недопустимы, так как из-за нарушения синхронизации это приведет к неправильному расшифрованию всех последующих элементов.
В самосинхронизирующихся поточных шифрах осуществляется гаммирование с обратной связью - гамма зависит от открытого текста, иначе говоря, результат шифрования каждого элемента зависит не только от позиции этого элемента (как это происходит в случае синхронного поточного шифрования), но и от значения всех предыдущих элементов открытого текста. Свойство самосинхронизации объясняется отсутствием обратной связи на принимающей стороне, в то время как в случае синхронного поточного шифрования схемы за- и расшифрования абсолютно идентичны.
В системе, показанной на рис 3.11, в информационных отношениях принимают участие три действующих лица: отправитель (абонент А) и получатель информации (абонент В), а также противник W. Современные одноключевые криптосистемы предполагают использование взаимно обратных преобразований E и D блоков данных фиксированной длины. Для задания блочной криптосистемы необходимо определить:
(рис 3.11) Модель криптосистемы с секретным ключом
Задача абонента А заключается в том, чтобы передать получателю конфиденциальное сообщение M, состоящее из m блоков длины n, т.е.:
$$M = M_1 M_2, \ldots, M_i, \ldots M_m, i = 1, \ldots, m.$$
Задача абонента В заключается в том, чтобы, получив переданное сообщение
$$C = C_1 C_2, \ldots, C_i, \ldots, C_m, i = 1, \ldots, m,$$
понять его содержание. Для того чтобы только получатель мог прочитать посланное сообщение, отправитель преобразует открытый текст M с помощью функции зашифрования Е и секретного (известного только А и В) ключа $$K_{AB}$$ в шифртекст C:
$$C = E (M) = K_{AB} \{M\},$$
который и поступает в канал связи. Получатель восстанавливает исходный текст сообщения с помощью функции расшифрования D и того же секретного ключа $$K_{AB}$$:
$$M = D (C) = K_{AB} \{C\}.$$
Для реализации такого информационного обмена должен существовать надежный канал, по которому происходит предварительный обмен секретными ключами, а у одного из его законных участников должен быть генератор, формирующий качественные ключи $$K_{AB}$$, обеспечивающие гарантированную стойкость системы.
Цель противника - воспрепятствовать осуществлению намерений законных участников информационного обмена. В общем случае противник может перехватывать зашифрованные сообщения, модифицировать их и даже посылать фальсифицированные сообщения стороне В якобы от имени другой, в рассматриваемом случае от стороны А.
Таким образом, имеют место три возможных типа угроз со стороны противника:
Дешифрование переданного сообщения противником возможно в случае вычисления им секретного ключа либо нахождения алгоритма, функционально эквивалентного D и не требующего знания $$K_{AB}$$.
Соответственно задачей криптографа является обеспечение требуемого уровня секретности (криптостойкости) и аутентичности (имитостойкости) системы. Секретность - это защищенность криптосистемы от несанкционированного ознакомления с содержимым зашифрованных сообщений. Аутентичность - это защищенность криптографической системы от навязывания искаженных или фальсифицированных данных.
В симметричной криптосистеме различают пять уровней атак со стороны криптоаналитика:
В каждом случае противник должен либо определить ключ K, либо выполнить дешифрование некоторого нового шифротекста, зашифрованного на том же ключе, что и сообщения, предоставленные ему для исследования на начальной стадии криптоанализа.
Атаки перечислены в порядке возрастания их силы. Различие в степени действенности, например, атак первых трех уровней можно показать на примере шифра простой (одноалфавитной) замены. При анализе на основе только шифротекста для раскрытия этого простейшего шифра требуется провести некоторую работу, аналогичную той, которую провели герои произведений Э. По ("Золотой жук") и А. Конан-Дойля ("Плящущие человечки"). В случае атаки на основе известного открытого текста раскрытие шифра становится тривиальным в особенности после того, как в открытых текстах встретятся большинство символов используемого алфавита. При атаке на основе выбранного открытого текста в случае использования английского алфавита шифр будет вскрыт сразу после получения шифровки $$K \{ABC, ..., XYZ\}$$.
Для различных ситуаций, встречающихся на практике, разработано значительное количество режимов шифрования.
Наиболее очевидное решение задачи закрытия сообщений, состоящих из нескольких блоков, заключается в независимом шифровании каждого блока на одном и том же ключе $$K_{AB}$$. Данная классическая схема блочного шифрования, приведенная на рис 3.12, известна под названием режима электронной кодовой книги (Electronic Code Book - ECB). В ГОСТ 28147-89 данный режим назван режимом простой замены.
(рис 3.12) Шифрование в режиме ECB
Режим имеет три существенных недостатка. Так как блоки шифруются независимо друг от друга, при зашифровании двух или более одинаковых блоков получаются одинаковые блоки шифротекста, и наоборот. Данное свойство режима ECB позволяет противнику делать выводы о тождественности тех блоков открытого текста, которым соответствуют одинаковые блоки шифротекста. В тех случаях, когда длина исходного сообщения не кратна n, возникает проблема дополнения последнего блока до нужного размера. Дополнение последнего неполного блока некоей фиксированной комбинацией битов в некоторых случаях может позволить противнику методом перебора определить этот неполный блок. И наконец, данный режим нечувствителен к выпадению или вставке целого числа блоков шифротекста.
Отмеченные недостатки ограничивают область использования режима ECB только шифрованием ключевой информации, объем которой обычно кратен n, при этом качественные ключи не могут содержать повторяющихся блоков. Применение режима ECB оправдано также в базах данных, когда требуется произвольный доступ для чтения/записи к различным полям.
Все остальные режимы реализуют комбинированные схемы шифрования (см. параграф 3.4) и обеспечивают зависимость каждого блока шифротекста не только от соответствующего блока открытого текста, но и от его номера. На рис 3.13 показана схема шифрования в режиме сцепления блоков шифротекста (Ciphertext Block Chaining - CBC), где секретность n-разрядного блока $$С_0$$ (синхропосылки или вектора инициализации (IV - initialization vector)) не является обязательной.
(рис 3.13) Режим шифрования СВС: а - зашифрование, б - расшифрование
Отличительными особенностями режима CBC являются зависимость при зашифровании i-го блока шифротекста от всех предшествующих блоков открытого текста и зависимость при расшифровании каждого блока открытого текста $$M_i$$ только от двух блоков $$M_{i–1}$$ и $$M_i$$ шифротекста. Первое свойство делает пригодным использование режима для решения задач контроля целостности информации. Второе свойство делает режим самосинхронизирующимся: одиночная ошибка при передаче (ошибка при передаче одного блока) может привести к неправильному расшифрованию только двух блоков. Как будет видно в дальнейшем, этот режим используется и в криптосистемах с открытым ключом в том случае, если размер шифруемого сообщения больше, чем размер блока.
Схема самосинхронизирующегося поточного режима блочного шифрования, ,
| где | $$S_0$$ | - | синхропосылка (начальное состояние элементов памяти генератора ПСП), |
| Q | - | элементы памяти генератора ПСП, разрядность блоков исходного текста t <= n. |
(рис 3.14) Режим шифрования CFB: а - зашифрование, б - расшифрование
В ГОСТ 28147-89 аналогичный режим назван режимом гаммирования с обратной связью. Свойства данной схемы шифрования аналогичны режиму CBC: при зашифровании каждый блок шифротекста зависит от всего предшествующего ему открытого текста, при расшифровании отсутствует эффект "размножения" ошибок.
Схема синхронного поточного режима блочного шифрования, . Эта схема может рассматриваться как частный случай схемы щифрования информации методом гаммирования, приведенной выше на рис 3.9. Гамма шифра снимается с выходов генератора ПСП, реализованного на основе регистра разрядности n, в цепи обратной связи которого используется функция зашифрования E. Последовательность $$g = g_1 g_2 \ldots g_i \ldots g_m$$ не зависит от открытого текста, и поэтому всякий раз при фиксированных $$K_{AB}$$ и $$S_0$$ будет вырабатываться одна и та же гамма. Данный факт требует при шифровании на одном ключе двух различных массивов данных использовать различные синхропосылки.
(рис 3.15) Режим шифрования OFB: а - зашифрование, б - расшифрование
При синхронном поточном шифровании в режиме .
(рис 3.16) Режим шифрования Counter: а - зашифрование, б - расшифрование
Первая ступень - это либо n-разрядный счетчик, изменения состояния которого задаются формулой $$S_i = S_{i – 1} + 1$$, либо генератор n-разрядных кодов, единственное требование к которому - максимально возможный период выходной последовательности. Каждый n-разрядный двоичный набор с выхода счетчика или генератора кодов первой ступени поступает на вход функции зашифрования E, результатом действия которой становится очередной элемент гаммы:
$$g_i = E (S_{i – 1}) = K_{AB} {S_{i – 1}}.$$
Так же как и в режимах CFB и OFB, для обратимости процедур шифрования при зашифровании и расшифровании должна использоваться одна и та же синхропосылка.
В ГОСТ 28147-89 аналогичный режим называется режимом гаммирования.
Режим счетчика и режим OFB c точки зрения обеспечения высокого уровня криптозащиты являются наиболее эффективными: именно они по своей сути наиболее близки к схеме одноразового использования, т.е. к абсолютно стойкому шифру. С одинаковым на то основанием оба они могут называться режимом гаммирования и в качестве последнего имеют следующие свойства:
Третье свойство режимов гаммирования дает возможность противнику, не обладающему секретным ключом, воздействуя лишь на биты шифротекста, вносить предсказуемые, а в некоторых случаях даже целенаправленные, изменения в получаемый после расшифрования открытый текст. Однако это свойство гаммирования нельзя считать недостатком, так как обеспечение секретности, с одной стороны, и обеспечение целостности и подлинности (аутентичности) информации, с другой, суть различные свойства шифров.
Режим счетчика следует признать более качественным, чем режим OFB, учитывая что во втором случае криптостойкая функция E, используемая в цепи обратной связи генератора ПСП, вовсе не гарантирует максимально возможный период гаммы. Кроме того, если в режиме счетчика при реализации алгоритма Е, не используемого в цепи обратной связи генератора ПСП, возникает случайное искажение информации, то при этом искажается только один элемент гаммы, а значит, неправильно расшифровывается только один соответствующий блок.
Приведенные пять режимов использования блочных шифров являются наиболее распространенными. Более того, первые четыре из них в свое время были официально утверждены Национальным бюро стандартов (NBS) США в качестве режимов использования алгоритма DES.
Лучшим на сегодняшний день можно признать блочный шифр Rijndael, который в 2001 г. победил в открытом международном конкурсе на принятие нового американского стандарта AES (Аdvanced Encryption Standard). AES заменил морально устаревший (в первую очередь из-за низкой разрядности ключа и неэффективной реализации на современных платформах) DES.
На рис 3.17 показана схема функции зашифрования AES-128.
(рис 3.17) Функция зашифрования шифра AES-128
Разрядность блока данных AES-128 равна 128 битам, число раундов преобразования равно 10. Функция E построена с использованием новой архитектуры "квадрат". Промежуточные результаты преобразований, выполняемых в рамках криптоалгоритма AES-128, называются состояниями. Состояние и раундовые ключи шифрования можно представить в виде квадратного массива байтов, имеющего четыре строки и четыре столбца. Разрядность исходного секретного ключа, из которого формируются раундовые ключи, равна 128.
Рассеивающие и перемешивающие свойства шифра иллюстрирует рис 3.18, из которого видно, что два раунда обеспечивают полное рассеивание и перемешивание информации.
(рис 3.18) Рассеивание и перемешивание информации в AES-128
В состав раунда AES-128 входят следующие преобразования:
10-й раунд отличается от остальных - в нем отсутствует предпоследняя операция.
Основные особенности AES-128:
В отличие от блочных шифров, функции E которых, как уже отмечалось, строятся по итерационному принципу, при проектировании поточных шифров используется огромное множество приемов и методов, классифицировать которые очень сложно. Однако можно выделить следующие:
Одним из лучших поточных шифров является .
(рис 3.19) Схема генератора ПСП RC4
Рассмотрим алгоритм работы 8-разрядного генератора ПСП RC4, иными словами, процедуру генерации очередного байта гаммы. Допустим S (i) и g - содержимое ячейки с адресом i таблицы замен S-блока и очередной байт гаммы.
Один шаг работы генератора ПСП RC4 (формирование очередного байта ПСП):
Таблица замен S-блока медленно изменяется при использовании, при этом счетчик Q1 обеспечивает изменение каждого элемента таблицы, а Q2 гарантирует, что элементы таблицы изменяются случайным образом.
Алгоритм инициализации таблицы замен S-блока.
Основной проблемой, возникающей при использовании криптосистем с секретным ключом, рассмотренных в разделе 3.5, является проблема распределения ключей. Учитывая что процедуры зашифрования и расшифрования выполняются с помощью одного и того же ключа, в системе с n абонентами потребуется n (n – 1) : 2 ключей, которые не только должны быть сгенерированы, но и надежным образом распределены среди всех участников информационного обмена. Необходимость наличия недоступных для противника секретных каналов для обмена ключами делает такой подход к построению системы секретной связи чрезвычайно дорогостоящим мероприятием, практически не применимым в коммерческих сетях связи, в региональных и глобальных информационных системах и естественно абсолютно недоступным частным лицам. Еще в 40-х гг. ХХ в. К. Шеннон предложил строить шифр таким образом, чтобы задача его вскрытия была эквивалентна решению некоей математической задачи, требующей объема вычислений, недоступного для современных компьютеров. Реализация этой идеи стала возможной, когда в 70-х гг. Диффи и Хеллман предложили принципиально новый способ организации секретной связи без предварительного обмена ключами, так называемое шифрование с открытым ключом. При этом для зашифрования и расшифрования используются разные ключи, и знание одного из них не дает практической возможности определить второй. В результате ключ зашифрования может быть сделан открытым без потери стойкости шифра, и лишь ключ расшифрования держится получателем в секрете.
Базовым понятием нового направления в вычислить значение этой функции F(x) можно, в то же время определение x из F(x) задача вычислительно неразрешимая. Теоретически x по известному значению F(x) можно найти всегда, проверяя по очереди все возможные значения x до тех пор, пока соответствующее значение F(x) не совпадет с заданным. Однако практически при значительной размерности множества X такой подход неосуществим.
Итак, односторонней функцией называется функция
, обладающая двумя свойствами:
До сих пор ни для одной функции, кандидата на звание односторонней, не доказано свойство 2.
Примером кандидата на звание односторонней функции является модульное возведение в степень, т.е. функция $$F (x) = w^x mod p$$, где p - большое простое число, w - примитивный элемент поля GF (p). То что эта функция может быть эффективно вычислена даже при разрядности параметров в несколько сот знаков, можно показать на примере. $$w^{25}$$ можно вычислить с помощью всего лишь шести операций умножения (умножением считается и возведение в квадрат), так как
Далее при вычислении $$wx mod p$$ взятие модуля во избежание получения очень больших чисел следует делать после каждого умножения.
Задача вычисления функции, обратной модульному возведению в степень, называется задачей дискретного логарифмирования. На сегодняшний день не известно ни одного эффективного алгоритма вычисления дискретных логарифмов больших чисел.
Односторонняя функция в качестве функции зашифрования неприменима, так как, хотя F (x) - надежно зашифрованное сообщение x, никто, в том числе и законный получатель, не сможет восстановить x. Обойти эту проблему можно с помощью односторонней функции с секретом (one-way trapdoor function).
Такова, например, функция $$E_K: X - > Y$$, имеющая обратную $$E_K: Y - > X$$, однако узнать обратную функцию только по $$E_K$$ без знания секрета K вычислительно невозможно.
Таким образом, односторонней функцией с секретом K называется функция $$E_K: X -> Y$$, зависящая от параметра K и обладающая тремя свойствами:
Функцию $$E_K$$ можно использовать для зашифрования информации, а обратную ей функцию $$D_K$$ - для расшифрования, так как при всех
справедливо:
$$D_K (E_K (x)) = x$$.
При этом подразумевается, что тот, кто знает, как зашифровывать информацию, вовсе не обязательно должен знать, как ее расшифровывать. Так же, как и в случае с односторонней функцией, вопрос о существовании односторонних функций с секретом открыт. Для практической криптографии найдено несколько функций, кандидатов на звание односторонней функции с секретом. Для них второе свойство не доказано, однако известно, что задача инвертирования при неизвестном K эквивалентна некоторой хорошо изученной и давно известной трудной математической задаче.
Применение рассмотренных функций для шифрования информации позволяет:
.
(рис 3.20) Модель криптосистемы с открытым ключом
Теперь если пользователь A хочет послать B секретное сообщение M, то он находит в справочнике $$PK_B$$, а затем вычисляет
$$C = PK_B \{M\}$$
и посылает шифротекст C по открытому каналу пользователю B. Последний, зная секрет $$SK_B$$, т.е. умея инвертировать $$E_В$$, определяет M по полученному C, вычисляя
$$M = SK_B \{C\}$$.
Противник, не зная ключа $$SK_B$$, в силу второго свойства односторонней функции с секретом не сможет прочитать секретную информацию. В отличие от криптосистемы с секретным ключом, если абонент A, зашифровав некоторое сообщение M для абонента B, сохранит шифротекст C, но потеряет M или забудет его содержание, он не будет иметь никаких преимуществ перед противником в раскрытии исходного текста M по известному C.
Атаки на криптосистему с открытым ключом аналогичны атакам на криптосистемы с секретным ключом, однако следует помнить, что в первом случае противник всегда знает открытый ключ, а значит, всегда возможна атака на основе выбранного открытого текста. Кроме того, возможна так называемая атака с проверкой текста (verifiable text attack): если число возможных открытых текстов невелико, противник, зная открытый ключ, может заранее заготовить соответствующие им шифротексты, а затем, сравнивая с ними перехваченные шифровки, получать соответствующие последним открытые тексты. Исключить такой вид атак на криптосистему позволяет вероятностное шифрование.
Шифрование с открытым ключом может использоваться в тех из рассмотренных в параграфе 3.5 режимах (например, ECB и CBC), которые для зашифрования и расшифрования используют разные функции, соответственно E и D.
Наиболее известные системы с открытым ключом:
Криптосистема RSA, многолетний неофициальный стандарт на шифрование с открытым ключом, будет рассмотрена ниже. Краткие сведения о лучшей на сегодняшний день криптосистеме ECCS даны в Приложении 5. Именно эта система послужила основой для создания российского, немецкого и американского стандартов электронной подписи, о которой речь пойдет ниже.
Помимо принципа построения асимметричных криптосистем Диффи и Хеллман предложили протокол выработки общего секретного ключа, т.е. процедуру взаимодействия по открытому каналу связи удаленных абонентов A и B, обладающую следующими свойствами:
Этот на первый взгляд невозможный протокол основывается на задаче дискретного логарифмирования, рассмотренной выше. Противник, который хочет узнать формируемый секретный ключ, вынужден решать именно эту трудную математическую задачу. Допустим, p - большое простое число, w - примитивный элемент поля GF (p). Числа p и w считаются общедоступными. Тогда процедура получения общей секретной информации имеет следующий вид.
Протокол выработки общего секретного ключа Диффи—Хеллмана.
.
(рис 3.21) Схема протокола выработки общего секретного ключа Диффи—Хеллмана (I вариант)
и 
абонент B, получив сообщение $$Y_A$$, вычисляет значение
, объявляется общим секретным ключом $$K_{AB}$$.Второй вариант
и 
абонент B для обмена секретными сообщениями с абонентом A использует общий секретный ключ
Одностороннюю функцию с секретом Диффи и Хеллман предложили использовать для электронной цифровой подписи сообщений, которая позволила бы, например, устанавливать истину при возникновении споров относительно авторства пересылаемых важных документов. Традиционная криптосистема с секретным ключом не может быть использована для разрешения противоречий, возникающих между не доверяющими друг другу абонентами, так как секретная информация (ключ), используемая для зашифрования сообщений, известна как минимум двум лицам. Поэтому пересылка по линиям связи платежных документов или информации, требующей нотариального заверения, в этом случае чревата большими неприятностями.
Если $$E_K$$ - односторонняя функция с секретом, то подписанное сообщение можно представить в виде пары:
$$(M, sign M) = (M, \{M\}SK) = (M, D_K (M))$$,
| где | M | - | подписываемый документ, |
| sign M | - | подпись на документе М; | |
| SK | - | секретный ключ; | |
| $$D_K$$ | - | функция, обратная $$E_K$$. |
Из определения односторонней функции с секретом следует, что для такой подписи характерны следующие особенности:
$$M = \{sign M\}PK$$
или, что то же самое,$$М = E_K (D_K (M))$$;
Если необходимо обеспечить секретность, можно применить следующий протокол электронной цифровой подписи. Допустим, у двух абонентов A и B имеются взаимно обратные функции зашифрования E и расшифрования D и у каждого из них пара (открытый/закрытый) ключей - соответственно $$PK_A /SK_A$$ и $$PK_В /SK_B$$. Если абонент А хочет послать подписанное сообщение абоненту В, он, используя сначала свой секретный ключ, а затем открытый ключ получателя, вычисляет
$$C = E_В (D_A (M))$$,
| где | $$E_В$$ | - | функция шифрования на открытом ключе абонента В; |
| $$D_A$$ | - | функция шифрования на секретном ключе абонента А, |
или
$$С = PK_В\{SK_A \{M\}\}$$
и передает шифротекст С абоненту B. Получатель сообщения, используя сначала свой секретный ключ, а затем открытый ключ абонента А, восстанавливает исходный текст, вычисляя
$$M = E_A (D_B(C))$$,
| где | $$E_A$$ | - | функция шифрования на открытом ключе абонента А; |
| $$D_В$$ | - | функция шифрования на секретном ключе абонента В, |
или
$$M = PK_A\{SK_B \{M\}\}$$.
Теперь при возникновении спорной ситуации, когда А отказывается от посланного сообщения, он обязан предъявить арбитру свой секретный ключ. Арбитру необходимо лишь проверить равенство
$$D_A (M) = D_B (C)$$.
В случае его выполнения он убеждается, что никто, кроме А, отправить сообщение не мог, и принимает решение в пользу В.
Приведенный протокол заставляет быть честным и абонента В. Для того чтобы исказить принятое сообщение M на M`, ему необходимо изменить и подпись $$SK_A\{M\}$$ на $$SK_A\{M`\}$$. Но для этой операции необходим секретный ключ $$SK_A$$ абонента А, которого у В нет.
Приведенная последовательность применения функций $$D_A$$ и $$E_B$$ единственно возможна. Если абонент А попытается послать В "подписанное" сообщение вида
$$C = D_A (E_B (M))$$
или
$$С = SK_A\{PK_B\{M\}\}$$,
противник W, перехватив это сообщение, используя открытый ключ абонента А, сможет вычислить $$E_A (C) = E_B (M)$$, а затем, используя свой закрытый ключ, послать якобы подписанное им сообщение
$$C` = D_W (E_B (M))$$,
| где | DW | - | функция шифрования на секретном ключе абонента W, |
или
$$С` = SK_A\{PK_B\{M\}\}$$.
Тогда В, вычислив
$$D_B (E_W (C`)) = SK_B\{PK_W\{C`\}\}$$,
был бы убежден, что M подписано именно W. Таким образом, в рассматриваемой ситуации противник всегда может подписывать сообщения, содержимое которых он сам прочитать не в состоянии.
Общий недостаток всех криптосистем с открытым ключом - низкое быстродействие, поэтому на практике применяются модифицированные схемы электронной подписи, в значительной степени решающие эту проблему, они будут рассмотрены в параграфе 3.10.
Система RSA, название которой происходит от первых букв фамилий авторов, Р. Ривеста, А. Шамира и Л. Адлемана (R. Rivest, A. Shamir, L. Adleman), является наиболее распространенной и изученной криптосистемой с открытым ключом. Она основана на использовании того факта, что легко перемножить два больших простых числа, в то же время крайне трудно разложить на множители их произведение. В результате произведение может быть использовано в качестве элемента открытого ключа зашифрования. Исходные простые числа необходимы для расшифрования, при этом задача их восстановления до сих пор сопротивляется всем атакам криптоаналитиков. Таким образом, имеются предпосылки для построения односторонней функции с секретом.
Выберем два больших различных простых числа p и q и число e, взаимно простое с числом $$(p – 1) (q – 1)$$. Вычислим $$N = pq$$ и найдем d, такое, при котором
$$de = 1 mod (p – 1) (q – 1)$$.
В результате для любого X < N будет справедливо:
$$X^{ed} mod N = X$$.
Тогда рассматриваемая криптосистема выглядит следующим образом.
Криптосистема RSA.
Открытый ключ зашифрования: числа N и e.
Закрытый ключ расшифрования: числа p, q и d.
Алгоритм зашифрования сообщения M:
$$C = PK\{M\} = E (M) = M^e mod N$$.
Алгоритм расшифрования закрытого сообщения C:
$$M = SK\{C\} = D (C) = C^d mod N$$.
Единственный способ для противника найти алгоритм расшифрования D при известных e и N состоит в том, чтобы разложить на простые множители число N, найти p и q, а следовательно, и d. Правильный выбор разрядности чисел p и q (первоначально авторы RSA предлагали в качестве p и q использовать не менее чем 40-разрядные десятичные числа) делает задачу факторизации N практически неосуществимой.
Пример шифрования по приведенной схеме показан на рис 3.22.
(рис 3.22) Пример шифрования по схеме RSA
Авторы RSA при описании принципов функционирования своей системы выбрали в качестве исходного текста фразу
"ITS ALL GREEC TO ME" ("Для меня все это совершенно непонятно").
Для того чтобы преобразовать этот текст в одно большое число, закодировали пробел между словами 0, букву А - 1, букву В - 2, букву С - 3, ..., букву Z - 26. На представление каждого символа выделили пять двоичных разрядов. В результате приведенной фразе стало соответствовать число
M = 09201900011212000718050511002015001305.
Для шифрования авторы выбрали e = 9007 и
$$N = 114381625757888867669235779976146612 \\ 0102182967212423625626518429357069352457 \\ 3389783059712356395870505898907514759929 \\ 0026879543541$$После зашифрования получили число
$$C = 199935131497805100452317122740260647 \\ 4232040170583914631037037174062597160894 \\ 8927504399209626725826750128935544613538 \\ 23769748026$$Число N было произведением 64-значного и 65-значного простых чисел p и q, выбранных случайным образом.
Если исходный текст слишком велик, чтобы с ним можно было обращаться как с одним числом, то его следует разбить на блоки и каждый блок рассматривать как отдельное число, при этом необходимо использовать шифрование со сцеплением блоков (режим CBC).
При разработке криптосистемы сначала выбираются два различных простых числа p и q. Для этого произвольно выбирается нечетное число r подходящего размера (например, сторазрядное) и проверяется на простоту. В случае если тест дает отрицательный результат, проверяется число r + 2 и т.д. Вероятность успеха одного конкретного теста проверки на простоту случайно выбранного числа равна приблизительно 0,00868. После того как p и q выбраны, кандидаты на e проверяются с помощью алгоритма Евклида. Когда e удовлетворяет условию (e, j (N)) = 1, т.е. числа e и j (N) = (p – 1) (q – 1) взаимно просты, цепочка равенств, получаемых в результате применения алгоритма Евклида, дает нам и значение d. Процедура шифрования суть модульное возведение в степень, эту операцию следует осуществлять методом последовательного возведения в квадрат, т.е. после каждого возведения в квадрат результат берется по модулю N. При этом никогда не возникают числа большие $$N^2$$.
Несмотря на все преимущества и 3.24.
(рис 3.23) Первый вариант схемы гибридного шифрования
(рис 3.24) Второй вариант схемы гибридного шифрования
В схеме, показанной на рис 3.23, на начальном этапе участники информационного обмена (абоненты А и В), используя протокол выработки общего секретного ключа, формируют общую секретную информацию (сеансовый ключ $$K_{АВ}$$). На следующем этапе для обмена зашифрованными сообщения используется криптосистема с секретным ключом.
Схема, показанная на рис 3.24, предполагает наличие у каждого участника информационного обмена двух ключей: открытого PK и закрытого SK. Рассмотрим процесс пересылки некоего документа M. Отправитель (абонент А) вырабатывает секретный ключ - случайное число, используемое только один раз и поэтому называемое одноразовым или сеансовым ключом. Этот ключ используется для зашифрования документа M при помощи симметричного криптоалгоритма. Сеансовый ключ зашифровывается на открытом ключе получателя (абонент В) и присоединяется к ранее зашифрованному документу. Сформированное таким образом сообщение отсылается получателю. Последний, получив сообщение, повторяет те же процедуры, но в обратном порядке. С помощью своего секретного ключа получатель восстанавливает сеансовый ключ, а затем с его помощью расшифровывает и сам документ.
Успешное решение задачи открытого распределения ключей, создание практических схем электронной подписи способствовало возникновению нового направления криптографии - теории криптографических протоколов. Для современных информационных систем характерен перевод всего документооборота в электронную форму. Возникающие при этом проблемы чаще всего могут быть решены только с использованием возможностей криптографии.
Типичный пример: взаимодействуют два удаленных абонента А (клиент банка) и В (банк). Абонент А хочет доказать абоненту В, что он тот, за кого себя выдает, а не злоумышленник. Для решения этой задачи требуется протокол аутентификации абонента. В каждом конкретном случае для обеспечения юридической значимости пересылаемых электронных документов требуется использование соответствующих криптографических протоколов, которые за последние годы превратились в основной объект исследований криптографии.
Объектом изучения теории криптографических протоколов являются удаленные абоненты, взаимодействующие по открытым каналам связи. Целью взаимодействия является решение какой-либо практической задачи. Модель предусматривает наличие противника, преследующего собственные цели. Противник может выдавать себя за законного субъекта взаимодействия, вмешиваться в информационный обмен между абонентами и т.п. Участники протокола в общем случае не доверяют друг другу, другими словами, некоторые протоколы должны быть рассчитаны на ситуацию, когда противником может оказаться даже один из абонентов или несколько абонентов, вступивших в сговор. В настоящее время известно около трех десятков различных типов протоколов. Все эти типы можно разделить на две группы:
Типы протоколов приведены на рис 3.25.
(рис 3.25) Типы примитивных криптографических протоколов
Протокол чаще всего является интерактивным, т.е. предусматривает многораундовый обмен сообщениями между участниками и включает в себя:
Существенное влияние на разработку многих криптографических протоколов оказали исследования двух математических моделей - интерактивной системы доказательств (Interactive Proof System) и доказательств с нулевым разглашением знаний (Zero-Knowledge Proofs).
Интерактивная система доказательств суть протокол (P, V, S) взаимодействия двух субъектов: доказывающего (претендента) P и проверяющего (верификатора) V. Абонент P хочет доказать V, что утверждение S истинно. При этом считается, что абонент V самостоятельно проверить утверждение S не в состоянии, что абонент V не может быть противником, а абонент P может быть противником, пытающимся доказать истинность ложного утверждения S. Протокол, состоящий из некоторого числа раундов обмена сообщениями между P и V, должен удовлетворять двум условиям:
корректность - если S ложно, то доказывающий не сможет убедить проверяющего в обратном.
Если предположить, что V может быть противником, который хочет получить информацию об утверждении S, необходим протокол (P, V, S), называемый доказательством с нулевым разглашением, удовлетворяющий помимо перечисленных еще и следующему условию:
Иными словами, в результате реализации протокола абонент P сможет доказать абоненту V, что он владеет некоторой секретной информацией, не разглашая ее сути.
Упрощенно процедуру доказательства с нулевым разглашением можно представить следующим образом. Проверяющий задает серию случайных вопросов, каждый из которых допускает ответ "да" или "нет". После первого вопроса проверяющий убеждается в том, что доказывающий заблуждается с вероятностью 1/2. После второго вопроса проверяющий убеждается в том, что доказывающий заблуждается с вероятностью 1/4, и т.д. (после каждого вопроса знаменатель удваивается). После 100 вопросов вероятность того, что доказывающий заблуждается или не располагает доказательством (не владеет секретной информацией), становится настолько близкой к нулю, что даже у самого "недоверчивого" проверяющего не должно остаться сомнений в справедливости доказываемого утверждения. После 300 вопросов знаменатель достигает величины, которая превосходит число атомов во Вселенной.
Роль доказательств с нулевым разглашением особенно велика при реализации протоколов аутентификации. Допустим, например, Р - алгоритм, реализованный в интеллектуальной карточке клиента (абонент А) банка, V - программа, выполняемая компьютером банка (абонент В). Перед выполнением любой операции банк должен убедиться в подлинности карточки и идентифицировать ее владельца. Если для этой цели использовать протокол (P, V, S), свойство полноты позволит карточке доказать свою аутентичность; свойство корректности защитит интересы банка от злоумышленника, который попытается воспользоваться фальшивой карточкой; свойство нулевого разглашения защитит клиента от злоумышленника, который попытается пройти аутентификацию под именем абонента А, воспользовавшись информацией, перехваченной во время предыдущих раундов аутентификационного обмена. Аналогичных результатов можно добиться, используя методы доказательств с нулевым разглашением для создания не поддающихся подделке удостоверений личности.
Эффективным методом защиты является разделение доступа (не путать с разграничением доступа), разрешающее доступ к секретной информации только при одновременном предъявлении своих полномочий участниками информационного взаимодействия, не доверяющих друг другу. Протоколы или схемы разделения секрета (СРС) (Secret Sharing Scheme) позволяют распределить секрет между n участниками протокола таким образом, чтобы заранее заданные разрешенные множества участников могли однозначно восстановить секрет, а неразрешенные - не получали бы никакой информации о возможном значении секрета. Выделенный участник протокола, распределяющий доли (share) секрета, обычно называется дилером (D).
Пусть M - защищаемая информационная последовательность (битовая строка) длиной m. Простейшая схема разделения секрета между тремя абонентами A, B и C имеет следующий вид.

.Шаги 1 и 2 - это стадия распределения долей секрета. Шаг 3 - стадия восстановления секрета. Каждая доля секрета сама по себе не имеет никакого смысла, но если их сложить, смысл исходной информационной последовательности полностью восстанавливается. При правильной реализации приведенный протокол полностью безопасен, так как для закрытия информации применяется абсолютно стойкий шифр, описанный ранее, и поэтому никакие вычисления не смогут помочь при попытке определить секрет по одной или двум его частям. Аналогичную схему можно легко реализовать для любого числа участников.
Рассмотрим схему разделения доступа Шамира. Пусть n - число участников протокола, GF (p) - конечное поле из p элементов, p - простое, p > n. Поставим в соответствие каждому i-му участнику ненулевой элемент поля $$a_i, i = 1, ..., n$$ и, положим, $$a_0 = 0$$.
Схема разделения доступа Шамира.
$$R_0 R_1, \ldots, R_j, \ldots, R_t – 1$$
и посылает каждому i-му участнику соответствующее ему значение$$S_i = F (X)$$
многочлена$$F (X) = R_{t – 1} X^{t – 1} + R_{t – 2} X^{t – 2} + \ldots + R_1 X + R_0$$, где $$R_0 = S_0$$.
$$S_i = F (a_i) и S_0 = F (0)$$.
Схемы подобного типа находят применение при построении пороговых структур доступа и носят название (n, t)-пороговых СРС. Такие схемы, например, позволяют владельцу некоей секретной информации распределить эту информацию при хранении на n своеобразных ее дубликатов таким образом, что ему для восстановления секрета достаточно получить доступ к любым t из них. При этом никакие t – 1 дубликатов не предоставляют никакой информации об этом секрете.
В информационных системах помимо обеспечения секретности информации необходимо также решать не менее важную задачу аутентификации обрабатываемых массивов данных. Информация может считаться аутентичной, когда потребитель имеет гарантии, во-первых, целостности информации, а во-вторых, ее авторства, иначе говоря, подлинности.
Иногда ошибочно считается, что задача защиты целостности решается простым шифрованием. На первый взгляд кажется, что это действительно так. В зашифрованный массив данных трудно внести какие-то осмысленные изменения, потому что с вероятностью, близкой к единице, факты искажения становятся очевидными после расшифрования, например вместо текста на русском языке появляется бессмысленный набор символов. Наконец, для классических криптосистем только пользователи, обладающие секретным ключом, могут зашифровать сообщение, и значит, если получатель принял сообщение, зашифрованное на его секретном ключе, он может быть уверен в его авторстве.
На самом деле приведенные рассуждения ошибочны. Искажения, внесенные в зашифрованные данные, становятся очевидны после расшифрования только в случае большой избыточности исходных данных. Эта избыточность имеет место лишь в некоторых частных случаях, например когда исходная информация является текстом на естественном или искусственном языке. В общем случае требование избыточности данных может не выполняться, а это означает, что после расшифрования модифицированных данных они по-прежнему могут поддаваться интерпретации.
При использовании симметричной криптосистемы факт успешного расшифрования данных, зашифрованных на секретном ключе, может подтвердить их авторство лишь для самого получателя. Третий участник информационного обмена, арбитр, при возникновении споров не сможет сделать однозначного вывода об авторстве информационного массива, так как его автором может быть каждый из обладателей секретного ключа, а их, как минимум, двое.
Таким образом, секретность и аутентичность суть различные свойства информационных систем, поэтому традиционно задачи обеспечения секретности и аутентичности решаются различными средствами.
На всех этапах своего жизненного цикла информация может подвергаться случайным и умышленным разрушающим воздействиям. Для обнаружения случайных искажений информации применяются корректирующие коды, которые в некоторых случаях позволяют не только зафиксировать факт наличия искажений информации, но и локализовать и исправить эти искажения. Умышленные деструктивные воздействия чаще всего имеют место при хранении информации в памяти компьютера и при ее передаче по каналам связи. При этом полностью исключить возможность несанкционированных изменений в массивах данных не представляется возможным. Поэтому крайне важно оперативно обнаружить такие изменения, так как в этом случае ущерб, нанесенный законным пользователям, будет минимальным. Целью противника, навязывающего ложную информацию, является выдача ее за подлинную, поэтому своевременная фиксация факта наличия искажений в массиве данных сводит на нет все усилия злоумышленника. Таким образом, под имитозащитой понимают не исключение возможности несанкционированных изменений информации, а совокупность методов, позволяющих достоверно зафиксировать их факты, если они имели место.
Для обнаружения искажений в распоряжении законного пользователя (например, получателя информации при ее передаче) должна быть некая процедура проверки Т (М), дающая на выходе 1 (если в массиве данных М отсутствуют искажения) или 0, если такие искажения имеют место. С целью ограничения возможностей противника по подбору информационной последовательности М` (M`
M), где М - правильная последовательность (без искажений), для которой Т (М`) = 1, идеальная процедура такой проверки должна обладать следующими свойствами:
Учитывая, что в общем случае все возможные значения М могут являться допустимыми, второе условие требует внесения избыточности в защищаемый массив данных. При этом чем больше разница N между размером преобразованного избыточного М* и размером исходного М-массивов, тем меньше вероятность принять искаженные данные за подлинные - эта вероятность равна $$2^{–N}$$.
На рис 3.26 показаны некоторые возможные варианты внесения такой избыточности. В роли неповторяющегося блока данных nrb могут выступать метка времени, порядковый номер сообщения и т.п. В роли контрольного кода могут выступать имитоприставка (код МАС) или электронная подпись. Имитоприставкой принято называть контрольный код, который формируется и проверяется с помощью одного и того же секретного ключа.
(рис 3.26) Схемы контроля целостности: а - с использованием зашифрования; б - с формированием контрольного кода; в - с формированием контрольного кода и зашифрованием
Использование блока nrb позволяет контролировать целостность потока сообщений, защищая от повтора, задержки, переупорядочения или их утраты. При использовании в качестве nrb порядкового номера получатель, приняв (i + 1)-е сообщение, проверяет равенство $$nrb_{i + 1} = nrb_i + 1$$, т.е. его номер на единицу больше номера предыдущего i-го сообщения. При использовании в качестве nrb метки времени получатель контролирует соответствие времени отправки и приема сообщений. Они должны соответствовать друг другу с учетом задержки в канале связи и разности показаний часов отправителя и получателя. Целостность потока сообщений можно также контролировать, используя зашифрование со сцеплением сообщений, схема которого приведена на рис 3.27.
(рис 3.27) Контроль целостности потока сообщений
Самый естественный способ преобразования информации с внесением избыточности - это добавление к исходным данным контрольного кода S фиксированной разрядности N, вычисляемого как некоторая функция от этих данных:
$$М* = (М, F (М)), |S| = N.$$
В этой ситуации выделение исходных данных из преобразованного массива М* суть простое отбрасывание контрольного кода S. Проверка же целостности заключается в вычислении для содержательной части М` полученного массива данных контрольного кода $$S` = F (M`)$$ и сравнении его с переданным значением S. Если они совпадают, сообщение считается подлинным, в противном случае - ложным, т.е.
T (M`) = 1, если S = F (M`), и T (M`) = 1, если S
F (M`).
Функция F формирования контрольного кода должна удовлетворять следующим требованиям:
Второе свойство можно обеспечить двумя способами: либо сделать функцию F зависимой от некоторого секретного параметра (ключа), либо пересылать контрольный код отдельно от защищаемых данных.
Простейшим примером кода S является контрольная сумма блоков массива данных. Например, если
$$М = М_1, М_2, \ldots М_i, \ldots, М_n$$,
то
| где | k | - | разрядность блоков. |
Однако такое преобразование непригодно для имитозащиты, так как контрольная сумма не зависит от взаимного расположения блоков, а самое главное, соответствующее преобразование не является криптографическим.
Процедура подбора данных под заданную контрольную комбинацию чрезвычайно проста. Допустим, некий массив данных M имеет контрольную сумму S. Тогда для внесения необнаруживаемых искажений противнику достаточно дополнить произвольный ложный массив
еще одним блоком
Можно выделить три основных криптографических подхода к решению задачи защиты информации от несанкционированных изменений данных:
Три основных криптографических подхода в виде схемы приведены на рис 3.28.
(рис 3.28) Схемы формирования контрольных кодов целостности: а - МАС, б - MDC (с использованием функции зашифрования блочного шифра), в - НМАС
В таблице 3.1 приведена сравнительная характеристика трех указанных подходов.
| Параметр | MAC | MDC | HMAC |
|---|---|---|---|
| Используемое преобразование | Функция зашифрования Е блочного шифра | Хеш-функция h (x) | Функция зашифрования Е блочного шифра и хеш-функция h (x) |
| Секретная информация | Секретный ключ K | Нет | Секретный ключ K |
| Возможность для противника вычислить контрольный код | Отсутствует | Присутствует | Отсутствует |
| Хранение и передача контрольного кода | Вместе с защищаемыми данными | Отдельно от защищаемых данных | Вместе с защищаемыми данными |
| Дополнительные условия | Требует предварительного распределения ключей | Необходим аутентичный канал для передачи контрольного кода | Требует предварительного распределения ключей |
| Предпочтительная область использования | Защита при передаче данных | Защита при разовой передаче данных, контроль целостности хранимой информации | Защита при передаче данных |
| Относительное быстродействие | Низкое | Высокое (при использовании быстродействующих хеш-функций) | Среднее (при использовании быстродействующих хеш-функций) |
Код аутентификации сообщений. Формирование кода MAC с использованием функции зашифрования блочного шифра официально или полуофициально закреплено во многих государственных стандартах шифрования. Имитоприставка ГОСТ 28147-89 является классическим примером кода MAC. Код аутентификации сообщений может формироваться в режимах CBC или СFB, обеспечивающих зависимость последнего блока шифротекста от всех блоков открытого текста. В случае использования преобразования Е для выработки контрольного кода требования к нему несколько отличаются от требований при его использовании для зашифрования: во-первых, не требуется свойство обратимости, во-вторых, его криптостойкость может быть снижена (например, за счет уменьшения числа раундов шифрования, как в ГОСТ 28147-89). Действительно, в случае выработки кода MAC преобразование всегда выполняется в одну сторону, при этом в распоряжении противника есть только зависящий от всех блоков открытого текста контрольный код, в то время как при зашифровании у него имеется набор блоков шифротекста, полученных с использованием одного секретного ключа.
Код обнаружения манипуляций с данными. MDC есть результат действия хеш-функции. Иначе говоря, MDC - это хеш-образ (дайджест) сообщения М, к которому применили хеш-функцию, т.е. S = h (M). Основное требование к хеш-функции: не должно существовать способа определения массива данных М, имеющего заданное значение хеш-образа h (M), отличного от перебора по всему множеству возможных значений p. Наиболее простой способ построения хеш-функции основан на использовании вычислительной необратимости относительно ключа К функции зашифрования Е любого блочного шифра. Даже при известных блоках открытого М и закрытого С = Е (М) текстов ключ К не может быть определен иначе как перебором по множеству всех возможных значений. Итак, схема формирования хеш-образа сообщения М, обладающая гарантированной стойкостью, равной стойкости используемого шифра, может быть следующей:
$$М = М_1, М_2, \ldots, М_i, \ldots, М_n, | М_1 | = | М_2 | = | М_{n – 1} | = |К|, 0 < | М_n | < = К |$$;
| где | $$S_0$$ | - | синхропосылка, обычно выбирают $$S_0 = 0$$. |
Задача подбора массива данных:
под заданный контрольный код S эквивалентна решению системы уравнений, которую необходимо решить для определения ключа для заданных блоков открытого и закрытого (в режиме простой замены) сообщений. При этом в рассматриваемой ситуации нет необходимости решать всю систему
достаточно решить только одно уравнение S относительно
:
остальные блоки массива M могут быть произвольными. Но и эта задача в случае использования надежной функции Е вычислительно неразрешима.
К сожалению, приведенная схема формирования MDC не учитывает наличия так называемых побочных ключей шифра. Если для К`
К справедливо
$$К` \{М_i\} = K \{М_i\}$$,
| где | $$М_i$$ | - | некоторый блок открытого текста, |
то такой К` и является побочным ключом, т.е. ключом, дающим при зашифровании блока $$М_i$$ точно такой же результат, что и истинный ключ К. Обнаружение противником побочного ключа при дешифровании сообщения не является особым успехом, так как с вероятностью, близкой к 1, на этом найденном побочном ключе он не сможет правильно расшифровать другие блоки закрытого текста, учитывая, что для различных блоков побочные ключи в общем случае также различны.
В случае выработки кода MDC ситуация прямо противоположна: обнаружение побочного ключа означает, что противник нашел такой ложный блок данных, использование которого не изменяет контрольного кода.
Для уменьшения вероятности навязывания ложных данных в результате нахождения побочных ключей при преобразовании применяются не сами блоки исходного сообщения, а результат ихрасширения по некоторому алгоритму. Под расширением понимается процедура получения блока данных большего размера из блока данных меньшего размера. Например, для криптоалгоритма, в котором размер ключа равен 256 битам, возможна следующая схема расширения 128-битового блока в 256-битовый:
исходный блок: $$M_i= (b_1, b_2, b_3, \ldots, b_{16})$$;
расширенный блок:
$$= (b_1, b_2, b_3, \ldots, b_{16}, b_1, b_4, b_7, \ldots, b_{16}, b_2, b_5, b_8, \ldots, b_{14}, b_3, b_6, b_9, \ldots, b_{15})$$,
| где | $$b_i$$ | - | байты блока данных. |
Код HMAC. Метод предполагает последовательное использование операций хеширования и шифрования с секретным ключом. При использовании для формирования НМАС быстродействующих специализированных хеш-функций (например, MD5, которая будет рассмотрена в разделе 3.10), быстродействие процедуры формирования контрольного кода можно существенно повысить, сохранив при этом все свойства, присущие MAC.
С целью исключения возможного несанкционарованного вмешательства в работу информационной системы необходима процедура распознавания системой каждого законного пользователя (или групп пользователей). Для этого в защищенном месте система обязана хранить информацию, по которой можно опознать пользователя, а пользователь, входя в систему, выполняет определенные действия, позволяющие его идентифицировать, т.е. указывает идентификатор ID, присвоенный ему в данной системе. Получив идентификатор, система проверяет его содержательность (подлинность) - принадлежность множеству идентификаторов. Обычно устанавливается ограничение на число попыток предъявления некорректного идентификатора.
Если бы идентификация не дополнялась аутентификацией, то сама идентификация теряла бы всякий смысл. Аутентификация пользователя может быть основана на следующих принципах:
Процесс распознавания законного пользователя в схематичном виде представлен на рис 3.29.
(рис 3.29) Процессы идентификации, аутентификации и авторизации
Процедуры аутентификации должны быть устойчивы к подлогу, подбору и подделке.
После распознавания пользователя система должна выяснить, какие права предоставлены этому пользователю, какую информацию он может использовать и каким образом (читать, записывать, модифицировать или удалять), какие программы может выполнять, какие ресурсы ему доступны, а также другие вопросы подобного рода. Этот процесс называется авторизацией. Таким образом, вход пользователя в систему состоит из идентификации, аутентификации и авторизации. В процессе дальнейшей работы иногда может появиться необходимость дополнительной авторизации в отношении каких-либо действий.
Существуют различные механизмы реализации разграничения доступа. Например, каждому ресурсу (или компоненту) системы может быть сопоставлен список управления доступом ACL (Access Control List), в котором указаны идентификаторы всех пользователей, которым разрешен доступ к данному ресурсу, а также определено, какой именно доступ разрешен. При обращении пользователя к конкретному ресурсу система проверяет наличие у данного ресурса списка управления доступом и, если он существует, выясняет, разрешено ли этому пользователю работать с данным ресурсом в запрошенном режиме. Другим примером реализации механизма авторизации пользователя является профиль пользователя - список, ставящий в соответствие всем идентификаторам пользователей перечень объектов, к которым разрешен доступ данному пользователю с указанием типа доступа. Может быть организована системная структура данных, так называемая матрица доступа, которая представляет собой таблицу, столбцы которой соответствуют идентификаторам всех системных ресурсов, а строки - идентификаторам всех зарегистрированных пользователей. На пересечении i-го столбца и j-й строки таблицы администратор системы указывает разрешенный тип доступа владельца i-го идентификатора к j-му ресурсу.
Доступ к механизмам авторизации должны иметь только специальные системные программы, обеспечивающие безопасность системы, а также строго ограниченный круг пользователей, отвечающих за безопасность системы. Рассматриваемые механизмы должны быть тщательно защищены от случайного или преднамеренного доступа неавторизованных пользователей. Многие атаки на информационные системы нацелены именно на вывод из строя или обход средств разграничения доступа.
Аналогичные действия осуществляются в системе и при аутентификации других субъектов взаимодействия (претендентов), например прикладных процессов или программ, с системой (верификатором).
В отличие от аутентификации субъекта взаимодействия процедура аутентификации объекта, устанавливая подлинность электронной почты, банковского счета и т.п., проверяет факт принадлежности данного объекта владельцу указанного идентификатора.
Цель субъекта взаимодействия при аутентификации - доказать верификатору подлинность предъявленного идентификатора.
Классическим средством аутентификации субъекта являются парольные схемы. При этом для устранения последствий несанкционированного доступа противника к информации, хранящейся в памяти компьютера верификатора, хранится не сам пароль PW (password), а его хеш-образ q = h (PW).
Для устранения последствий перехвата информации, передаваемой претендентом, или несанкционированного доступа противника к информации, хранящейся в памяти компьютера верификатора, может быть рекомендована схема, показанная на рис 3.30.
(рис 3.30) Парольная схема аутентификации, защищенная от повтора
Схема предполагает использование двух хеш-функций $$h_1 (x)$$ и $$h_2 (x)$$, причем результат работы второй из них зависит от неповторяющегося блока данных nrb.
Аутентификация субъекта может быть как односторонней, так и взаимной. В первом случае процедуру аутентификации проходит один субъект, во втором аутентифицируют друг друга два взаимодействующих субъекта, например связывающиеся между собой по линиям связи. Взаимная аутентификация не есть простое объединение двух сеансов односторонней аутентификации, так как в последнем случае противник легко может осуществить атаку перехвата и повтора, выдавая себя за верификатора перед претендентом и за претендента перед верификатором.
Проверка подлинности предполагает использование:
Использование меток времени позволяет регистрировать время отправки конкретного сообщения, что дает возможность получателю определить, насколько "устарело" пришедшее сообщение, а значит, защититься от повтора. При использовании меток времени возникает проблема допустимого времени задержки, связанная, во-первых, с невозможностью мгновенной передачи сообщения, а во-вторых, невозможностью абсолютной синхронизации хода часов получателя и отправителя.
Механизм "запрос-ответ" предполагает включение пользователем А в сообщение для пользователя В запроса $$x_A$$ - некоторого случайного числа. Перед ответом пользователь В обязан выполнить над числом $$x_A$$ некоторую операцию, например вычислить хеш-образ $$h (x_A)$$. Получив ответ с правильным результатом вычислений, пользователь А может быть уверен, что В - подлинный. Процедура рукопожатия заключается во взаимной проверке ключей, используемых субъектами взаимодействия. Последние признаются законными партнерами, если докажут друг другу, что обладают правильными ключами. На рис 3.31 схематично представлен процесс опознания субъекта при задействовании механизма "запрос - ответ".
(рис 3.31) Механизм «запрос - ответ» и процедура handshake
Аутентификация субъекта может осуществляться с использованием как симметричных, так и несимметричных криптоалгоритмов. В системах с большим числом пользователей применение симметричных методов требует введения доверенной стороны, с которой разделяют секретные ключи все пользователи системы.
На рис 3.32 показана схема процедуры взаимной аутентификации субъектов А и В с использованием доверенной третьей стороны - субъекта С, обладающего секретными ключами $$K_{AC}$$ и $$K_{BC}$$ соответственно для взаимодействия с А и В.
(рис 3.32) Схема симметричной аутентификации с доверенной третьей стороной
Протокол Нидхема—Шредера:
$$\{ID_A, ID_B\}$$;
$$K_{AC}\{ID_B, K_{AB}, K_{BC}\{ID_A, K_{AB}\}\}$$,
содержащее сеансовый ключ для работы с В и шифровку, которая по сути является разрешением для А на работу с В;
$$K_{BC}\{ID_A, K_{AB}\}$$,
которое он расшифровать не может, так как не знает ключа KBC; после этого А отправляет В сообщение
$$K_{AB}\{ID_A, x_A\}, K_{BC}\{ID_A, K_{AB}\}$$,
содержащее зашифрованный запрос $$x_A$$ и разрешение, полученное от С;
$$K_{BC}\{ID_A, K_{AB}\}$$,
узнает идентификатор субъекта взаимодействия и сеансовый ключ $$K_AB$$ для работы с ним, читает запрос $$x_A$$; после этого В формирует ответ на запрос $$h (x_A)$$ и отправляет А сообщение$$K_{AB}\{ID_A, h (x_A)\}$$;
Решение задачи аутентификации в современных информационных системах, представляющих собой совокупность реализованных на различных аппаратно-программных платформах, территориально разнесенных компонентов, в соответствии с технологией клиент/сервер заключается в использовании специального сервера аутентификации. В настоящее время на роль фактического стандарта сервера аутентификации претендует Kerberos, продукт разработанный в Массачусетском технологическом институте (MIT) в середине 1980-х гг. и претерпевший с тех пор ряд принципиальных изменений. Широкому распространению Kerberos способствовало то, что его версия, реализованная в MIT, является свободно распространяемым продуктом. Программные средства, выполняющие аутентификацию по схеме Kerberos, разработаны для всех популярных ОС. Поддержка службы Kerberos предусмотрена в некоторых современных сетевых ОС. Схема Kerberos является типичным примером реализации симметричных методов аутентификации, она приведена на рис 3.33.
(рис 3.33) Схема Kerberos
Схема предусматривает взаимодействие между тремя программными компонентами - клиентом С, сервером Kerberos и прикладным сервером S. ПО сервера Kerberos разделено по своим функциям на две части: сервер аутентификации AS (Authentication Server) и сервер выдачи разрешений (билетов) TGS (Ticket Granting Server). Клиент С - это компьютер, на котором установлено клиентское ПО, способное участвовать во взаимодействии по протоколу Kerberos, и зарегистрирован какой-либо пользователь. В некоторых случаях прикладной сервер может являться клиентом некоторого другого сервера, например сервер печати может пользоваться услугами файлового сервера. Сервер S - субъект, предоставляющий ресурсы сетевым клиентам.
Клиент С, который хочет обратиться к прикладному серверу для получения его услуг, должен получить разрешение от AS. Разрешение - это зашифрованная информация, которую клиент передает серверу S или серверу TGS. Разрешение позволяет серверу убедиться в подлинности клиента. Все разрешения, кроме первого, клиент получает от сервера TGS. Первое разрешение, разрешение на доступ к самому TGS, клиент получает от сервера AS. Разрешение - это шифровка, полученная на секретном ключе, известном только серверу S и серверу Kerberos, поэтому первый, получив разрешение, может быть уверен, что оно поступило именно от сервера Kerberos. Разрешения являются многоразовыми, имеющими определенный срок жизни (несколько часов). Когда этот срок истекает, клиент должен вновь пройти процедуру аутентификации. При установлении каждого соединения используется временная метка, поэтому в сети должна действовать служба единого времени. Необходимость в сервере TGS объясняется стремлением сократить число сообщений, зашифрованных с использованием секретного ключа клиента, которому требуются услуги нескольких серверов. Именно поэтому сервер Kerberos "раздваивается" на сервер AS, с которым клиент взаимодействует при помощи секретного ключа $$K_{C, AS}$$, и сервер TGS, с которым клиент осуществляет дальнейшее взаимодействие при помощи только сеансовых ключей $$K_{C, TGS}$$. Компрометация сеансового ключа, имеющего очень короткое время жизни, вещь значительно менее опасная, чем раскрытие секретного ключа.
Процесс аутентификации состоит из пяти (односторонняя аутентификация) или шести (взаимная аутентификация) шагов.
Сервер Kerberos имеет доступ к базе данных, содержащей идентификаторы и секретные ключи субъектов. Запись каждого пользователя и каждого прикладного сервера в базе данных Kerberos содержит следующие компоненты:
Секретные ключи субъектов шифруются мастер-ключом Kerberos. Когда секретный ключ изменяется нормальным образом, т.е. не в результате компрометации, то старый ключ следует сохранять до тех пор, пока остаются годными билеты, выданные с его помощью, так как возможна ситуация, когда один субъект имеет несколько активных ключей. Субъекту, обладающему несколькими активными ключами, соответствует несколько записей в базе данных. При выдаче разрешений и при начальной аутентификации в сервере AS всегда используется самый свежий ключ.
Помимо серверов AS и TGS в системе имеется объект, отвечающий за управление базой данных, называемый диспетчером базы данных Kerberos DBM (Database Manager), а также сервер распространения ключей Kerberos KDS (Key Distribution Server).
Использование криптосистем с открытым ключом позволяет отказаться от серверов аутентификации, однако в системе должен существовать сервер, выдающий сертификаты на используемые субъектами взаимодействия открытые ключи. Сертификатом принято называть электронный документ, удостоверяющий принадлежность данного открытого ключа данному субъекту, иначе говоря, аутентичность ключа.
Протокол Диффи—Хеллмана. Несимметричные методы аутентификации могут быть основаны на использовании механизма электронной подписи. Классическим примером несимметричной аутентификации может служить схема Диффи-Хэллмана, представляющая собой совокупность процедуры выработки общего секретного ключа и взаимной аутентификации субъектов взаимодействия. Допустим, w - примитивный элемент поля Галуа GF (p), где p - простое число. Абонент А владеет парой ключей: $$PK_A$$ - открытым и $$SK_A$$ - закрытым. Абонент В владеет парой ключей: $$PK_B$$ - открытым и $$SK_B$$ - закрытым. Тогда последовательность взаимной аутентификации состоит из трех шагов.
Схема аутентификации Диффи—Хеллмана.
(здесь и далее предполагается, что все операции выполняются по модулю p).
, на своем секретном ключе создает подпись
сообщения
Затем В вычисляет сеансовый ключ
зашифровывает подпись на этом ключе и отправляет А сообщение
, $$y_B$$,
где
с помощью своего секретного ключа создает подпись
сообщения
зашифровывает ее на ключе $$K_{AB}$$ и отправляет В сообщение
он может быть уверен в подлинности абонента В.
он в свою очередь может быть уверен в подлинности абонента А.
Протокол Фиата—Шамира. Рассмотрим простейшую схему аутентификации с нулевым разглашением знаний. Подобные протоколы используются интеллектуальными картами. Личность владельца карты признается подлинной, если претендент доказывает свое знание секретного ключа.
Для реализации схемы необходим центр доверия, который выбирает и публикует целое число вида N = pq, где p и q - простые числа, которые держатся в секрете. Предположим, абонент А является доказывающим, абонент В - проверяющим. Абонент А (или центр доверия) формирует открытый и секретный ключи:
$$Z_n$$, i = 1, ..., m, и объявляет их секретным ключом $$SK_A$$;
и объявляет их открытым ключом $$PK_A$$.
Протокол аутентификации Э. Фиата и А. Шамира состоит в t-кратном повторении следующих шагов.
Схема Фиата—Шамира.
$$Z_n$$, вычисляет
и посылает его В.
$$b_1, b_2, \ldots, b_m, b_j$$
{0, 1}, j = 1, ..., m
и посылает ее А.
и посылает его В.
Абонент В принимает доказательство, если проверка закончилась успешно во всех t циклах. Вероятность обмана равна $$Ѕ^{mt}$$.
В процессе аутентификации объекта, иногда называемой аутентификацией источника данных, проверяется подлинность идентификатора, представленного с некоторыми данными. В отличие от аутентификации субъекта в этой ситуации претенденту не нужно быть активным участником процесса аутентификации. Данный тип аутентификации по сути ничем не отличается от процедуры контроля целостности. Для аутентификации объекта применяются шифрование симметричным алгоритмом, выработка кода МАС или НМАС, формирование электронной подписи. Первые два варианта применяются в том случае, когда претендент и верификатор доверяют друг другу. Если необходимо иметь возможность доказательства подлинности идентификатора третьей стороне (при условии, что верификатор не имеет возможности изменить массив данных М), например необходима юридическая значимость пересылаемых электронных документов, требуется электронная подпись.
Процедуры аутентификации должны быть устойчивы к подлогу, подбору и подделке.
После распознавания пользователя система должна выяснить, какие права предоставлены этому пользователю, какую информацию он может использовать и каким образом (читать, записывать, модифицировать или удалять), какие программы может выполнять, какие ресурсы ему доступны, а также другие вопросы подобного рода. Этот процесс называется авторизацией. Таким образом, вход пользователя в систему состоит из идентификации, аутентификации и авторизации. В процессе дальнейшей работы иногда может появиться необходимость дополнительной авторизации в отношении каких-либо действий.
Существуют различные механизмы реализации разграничения доступа. Например, каждому ресурсу (или компоненту) системы может быть сопоставлен список управления доступом ACL (Access Control List), в котором указаны идентификаторы всех пользователей, которым разрешен доступ к данному ресурсу, а также определено, какой именно доступ разрешен. При обращении пользователя к конкретному ресурсу система проверяет наличие у данного ресурса списка управления доступом и, если он существует, выясняет, разрешено ли этому пользователю работать с данным ресурсом в запрошенном режиме. Другим примером реализации механизма авторизации пользователя является профиль пользователя - список, ставящий в соответствие всем идентификаторам пользователей перечень объектов, к которым разрешен доступ данному пользователю с указанием типа доступа. Может быть организована системная структура данных, так называемая матрица доступа, которая представляет собой таблицу, столбцы которой соответствуют идентификаторам всех системных ресурсов, а строки - идентификаторам всех зарегистрированных пользователей. На пересечении i-го столбца и j-й строки таблицы администратор системы указывает разрешенный тип доступа владельца i-го идентификатора к j-му ресурсу.
Доступ к механизмам авторизации должны иметь только специальные системные программы, обеспечивающие безопасность системы, а также строго ограниченный круг пользователей, отвечающих за безопасность системы. Рассматриваемые механизмы должны быть тщательно защищены от случайного или преднамеренного доступа неавторизованных пользователей. Многие атаки на информационные системы нацелены именно на вывод из строя или обход средств разграничения доступа.
Аналогичные действия осуществляются в системе и при аутентификации других субъектов взаимодействия (претендентов), например прикладных процессов или программ, с системой (верификатором).
В отличие от аутентификации субъекта взаимодействия, процедура аутентификации объекта, устанавливая подлинность электронной почты, банковского счета и т.п., проверяет факт принадлежности данного объекта владельцу указанного идентификатора.
Схемы контроля целостности, рассмотренные в разделе 3.8, могут использоваться только при взаимодействии доверяющих друг другу сторон. Они принципиально не способны обеспечивать улаживание возникающих между ними противоречий и разногласий. Такая возможность появляется только при использовании односторонних функций с секретом для формирования электронной или цифровой подписи. Протоколы или схемы электронной подписи являются основным криптографическим средством обеспечения аутентичности информации:
Для повышения надежности схемы электронной подписи, например для противодействия атакам перехвата и повтора сообщений, фальсификации времени отправки сообщений, ее можно сделать зависимой от неповторяющегося блока данных nrb.
Схема электронной подписи включает в себя:
$$(SK_A, PK_A)$$,
| где | $$SK_A$$ | - | секретный ключ подписывающего (абонента А), |
| $$PK_A$$ | - | соответствующий открытый ключ проверяющего (абонента В); |
Подпись $$sign = \{M\}SK_A$$ называется допустимой для сообщения M, если она принимается алгоритмом V с вероятностью, близкой к 1. Подделкой подписи сообщения M называется нахождение противником, не имеющим секретного ключа подписывающего, допустимой подписи для этого сообщения.
В общем случае неинтерактивный протокол электронной подписи имеет следующий вид.
Схема электронной подписи документа M.
$$(SK_A, PK_A) = G (n)$$
и посылает $$PK_A$$ получателю В, сохраняя $$SK_A$$ в секрете.
$$sign = S (M, SK_A)$$
и посылает M и sign получателю В.
$$V (M, sign, PK_A)$$
и в зависимости от результата принимает или отвергает подпись sign сообщения M.
В классической схеме электронной подписи, приведенной на рис 3.34, предполагается, что подписывающий (абонент А) знает содержание документа M, который он подписывает; проверяющий (абонент В), зная открытый ключ проверки подписи, может проверить правильность подписи в любое время без какого-либо разрешения или участия претендента А.
(рис 3.34) Классическая схема создания и проверки электронной подписи
При создании электронной подписи по классической схеме претендент А выполняет следующую последовательность действий:
$$sign = \{h* (M)\} SK_A$$.
Хеш-функция является неотъемлемой частью схем электронной подписи. Применение медленных несимметричных криптоалгоритмов для преобразования всего исходного сообщения M нерационально, поэтому для повышения быстродействия схемы перед процедурой формирования подписи используется функция необратимого сжатия информации.
Последовательность действий абонента В, получившего подписанное сообщение:
Хеш-функцией называется преобразование h (х), превращающее информационную последовательность M произвольной длины в информационную последовательность (хеш-образ) фиксированной длины h (M).
К функции h (х) предъявляются четыре основных требования:
Второе, третье и четвертое требования означают, что задачи нахождения последовательности M по заданному хеш-образу h (M), нахождения двух различных сообщений, имеющих одинаковые хеш-образы, и нахождения для заданной последовательности M другой последовательности M`, M`
M, такой что h (M`) = h (M), должны быть вычислительно неразрешимы.
Области использования хеш-функций:
Наиболее известные алгоритмы получения хеш-образов сообщений - MD5, SHA, TIGER.
MD5 — представитель семейства алгоритмов вычисления хеш-функций MD (Message Digest Algorithm), предложенного Р. Ривестом; разработан в 1991 г.; преобразует информационную последовательность произвольной длины в хеш-образ разрядностью 128 бит. Самый быстродействующий алгоритм хеширования.
TIGER - разработан Р. Андерсоном и Э. Бихэмом; предназначен для реализации на 64-разрядных компьютерах; преобразует информационную последовательность произвольной длины в хеш-образ разрядностью 192 бита.
Алгоритм SHA является частью стандарта SHS (Secure Hash Standard), принятого в 1993 г. Национальным институтом стандартов и технологий США (NIST) и Агентством национальной безопасности США. SHA использует принципы, предложенные ранее Р. Ривестом при разработке своих алгоритмов MD4 и MD5.
Рассмотрим версию SHA-1, в которой осуществляется преобразование информационной последовательности произвольной длины в хеш-образ разрядностью 160 бит.
На первом этапе информационная последовательность дополняется до длины, кратной 512 битам. Сначала информационная последовательность дополняется до длины на 64 двоичных разряда меньшей числа, кратного 512: к концу последовательности (сообщения) приписывается 1, а затем необходимое количество нулей. После этого приписывается 64-разрядный код длины сообщения. Если длина исходного сообщения больше $$2^{64}$$, используются только 64 младших разряда этого кода.
Пусть после дополнения получена информационная последовательность
$$М = М_1, М_2, \ldots, М_i, \ldots М_k, i= 1, ..., k, |М_i| = 512$$.
На вход i-го основного цикла $$SHA_i$$ преобразования поступает i-й блок информационной последовательности и результат работы предыдущего цикла $$SHA_{i – 1}$$, т.е.:
$$SHA_i = h (М_i, SHA_{i – 1})$$.
Перед началом каждого цикла соответствующий блок расширяется до 80 слов по 32 разряда в каждом. Расширение происходит следующим образом. Допустим,
— исходный блок,
— расширенный блок, при этом
$$ = w_j$$ для j = 1, ..., 16,
для j = 17, ..., 80,
| где | Rol | - | операция циклического сдвига на один разряд влево. |
Перед началом первого цикла инициализируются пять 32-разрядных переменных
A = 67452301h; B = EFCDAB89h; C = 98BADCFEh;
D = 10325476h; E = C3D2E1F0h,
при этом стартовый вектор хеширования (синхропосылка) есть результат конкатенации этих переменных, т.е.:
$$SHA_0 = (A, B, C, D, E)$$.
Конкатенация новых значений этих переменных, полученных в конце i-го цикла, объявляется результатом работы цикла $$SHA_i$$. Схема одного шага алгоритма хеширования приведена на рис 3.35.
(рис 3.35) Схема одного шага алгоритма SHA
В начале каждого цикла создаются копии входных переменных:
$$AA = A, BB = B, CC = C, DD = D, EE = E$$.
Затем выполняется 80 шагов алгоритма, на каждом из которых происходит выполнение следующих операций:
$$Temp = Rol^5A + f_i (B, C, D) + E + M_{ij} + cj$$,
$$E = D$$,
$$D = C$$,
$$C = Rol^{30}B$$,
$$A = Temp$$,
| где | $$Rol^n$$ | - | операция циклического сдвига на n разрядов влево; |
| $$f_i$$ | - | шаговая функция; | |
| $$M_{ij}$$ | - | j-е слово i-го блока $$M_i$$; | |
| $$c_j$$ | - | шаговая константа; | |
| j | = | 1, ..., 80; | |
| i | = | 1, ..., k. |
В первом раунде (при j = 1, ..., 20) используются функция
$$f_i (X, Y, Z) = XY v \sim XZ$$,
| где | $$\sim$$ | - | операция отрицания, |
и константа
$$c_j= 5A827999h$$;
во втором раунде (при j = 21, ..., 40) используются функция
$$f_i (X, Y, Z) = X$$
Y
Z
и константа
$$c_j = 6ED9EBA1h$$;
в третьем раунде (при j = 41, ..., 60) используются функция
$$f_i (X, Y, Z) = XZ v XY v ZY$$
и константа
$$c_j= 8F1BBCDCh$$;
в четвертом раунде (при j = 61, ..., 80) используются функция
$$f_i (X, Y, Z) = X$$
Y
Z
и константа
$$c_j = CA62C1D6h$$;
Цикл завершается сложением по модулю $$2^{32}$$ полученных значений A, B, C, D и E соответственно с AA, BB, CC, DD и EE:
$$A = A + AA, B = B + BB, C = C + CC, D = D + DD, E = E + EE$$;
конкатенация полученных значений A, B, C, D и E является результатом работы основного цикла.
В настоящее время существуют версии алгоритма SHA-256, SHA-384, SHA-512.
Допустим, $$E (x) = x^e mod N$$ - открытая функция зашифрования, а $$D (x) = x^d mod N$$ - секретная функция расшифрования, где $$(e, N) = PK_A$$ - открытый ключ абонента А, $$d = SK_A$$ - секретный ключ абонента А.
Схема электронной подписи RSA.
Абонент А (претендент) вычисляет хеш-образ h (M) сообщения M.
$$sign_A (M) = \{M\} SK_A = h (M)^d mod N$$,
и отправляет абоненту В пару документ-подпись $$(M, sign_A (M))$$.
$$PK_A\{sign_A (M)\} = (sign_A (M))^e mod N$$.
$$h (M) = (sign_A (M))^e mod N$$.
В случае положительного результата проверки подпись принимается, в противном случае - отвергается.
Стойкость схемы электронной подписи зависит от стойкости используемых криптоалгоритмов и хеш-функций и определяется относительно пары угроза-атака.
Приведем классификацию атак на схемы электронной подписи:
Каждая атака направлена на достижение определенной цели. Можно выделить следующие виды угроз для схем электронной подписи (в порядке возрастания силы):
Наиболее стойкими являются схемы, стойкие против самой слабой из угроз на основе самой сильной из атак, т.е. против экзистенциальной подделки на основе атаки с выбором подписанных сообщений. Справедливо следующее утверждение. Схемы электронной подписи, стойкие против экзистенциальной подделки на основе атаки с выбором подписанных сообщений, существуют тогда и только тогда, когда существуют односторонние функции.
Для практического применения схем электронной подписи помимо алгоритмов формирования подписи и ее верификации требуется процедура арбитража, т.е. разрешения споров. Арбитраж необходим, когда один из абонентов, например В, предъявляет сообщение и подпись $$(M, sign_A (M))$$, утверждая, что эта пара сообщение-подпись была получена от абонента А, а А отказывается признавать эту подпись своей. С юридической точки зрения основанием для разрешения подобных споров в суде является подписание (обычным образом) каждым пользователем при подключении к системе специального документа, в котором пользователь принимает все "правила игры" вплоть до судебной ответственности. При разборе дела в суде арбитр выступает в качестве эксперта, дающего заключение о подлинности электронной подписи.
Алгоритм арбитража.
Задача арбитража значительно сложнее, чем кажется на первый взгляд. Арбитраж и решение споров в суде невозможны в следующих случаях:
Наконец, возможны безвыходные ситуации, в которых арбитр не может принять никакого обоснованного решения. Например, абонент В предъявляет $$sign_A (M)$$ и утверждает, что это подпись под документом M. Абонент А признает, что это его подпись, но под документом M`
M, при этом выясняется, что хеш-образы этих документов совпадают, т.е. $$h (M`) = h (M)$$. Арбитр понимает, что кто-то из двоих нашел коллизию для применяемой в схеме электронной подписи хеш-функции, и оказывается в патовой ситуации. Выход из положения возможен только в том случае, если заранее обговорен порядок разрешения спора в такой ситуации.
В некоторых ситуациях могут потребоваться схемы электронной подписи, отличные от рассмотренной классической схемы. Известны следующие специальные схемы электронной подписи:
Все криптоалгоритмы основаны на использовании ключевой информации, под которой понимается вся совокупность действующих в информационной системе ключей. По своему назначению последние делятся на ключи для шифрования ключей и ключи для шифрования данных. По времени жизни делятся на долговременные и кратковременные. Примером последних являются так называемые сеансовые ключи, действующие в течение только одного сеанса связи.
В понятие управление ключами входит совокупность методов решения следующих задач:
Правильное решение всех перечисленных задач имеет огромное значение, так как в большинстве случаев противнику гораздо проще провести атаку на ключевую подсистему или на конкретную реализацию криптоалгоритма, а не на сам этот алгоритм криптографической защиты. Использование стойкого алгоритма шифрования является необходимым, но далеко не достаточным условием построения надежной системы криптографической защиты информации. Используемые в процессе информационного обмена ключи нуждаются в не менее надежной защите на всех стадиях своего жизненного цикла.
К ключам для симметричных и асимметричных криптосистем предъявляются различные требования. Этот факт следует учитывать при построении гибридных криптосистем. В настоящее время надежными считаются ключи разрядностью не менее 80 бит для систем с секретным ключом и не менее 768 бит для систем с открытым ключом, стойкость которых определяется сложностью решения задачи факторизации больших чисел (например, RSA).
В распоряжении противника, атакующего криптосистему, всегда имеются две возможности: случайное угадывание ключа и полный перебор по всему ключевому пространству. Вероятность успеха и в том, и другом случае зависит от разрядности ключа. В таблице 3.2 приведены длины ключей симметричных и асимметричных систем, обеспечивающие одинаковую стойкость к атаке полного перебора и решению задачи факторизации соответственно.
| Длина ключа, бит | |
|---|---|
| Криптосистема с секретным ключом | Криптосистема с открытым ключом |
| 56 | 384 |
| 64 | 512 |
| 80 | 768 |
| 112 | 1 792 |
| 128 | 2 304 |
Примечание. На практике в гибридных криптосистемах долговременный ключ для асимметричного алгоритма выбирают более стойким, чем сеансовый ключ для симметричного.
Если противник обладает неограниченными финансовыми и техническими возможностями, для того чтобы узнать ключ, ему необходимо лишь потратить достаточное количество денег. В случае противника с ограниченными возможностями при выборе разрядности ключа учитывают следующие соображения:
Если технические возможности противника известны, сложность атаки путем полного перебора по всему ключевому пространству оценить достаточно просто. Например, при разрядности ключа симметричной криптосистемы, равной 64 битам, объем ключевого пространства равен 264. Компьютер, который может перебирать 106 ключей в секунду, потратит на проверку всех возможных ключей более пяти тысяч лет. Современная вычислительная техника позволяет за время около нескольких дней при финансовых затратах около нескольких сотен тысяч долларов находить методом полного перебора 56-разрядные ключи симметричных криптосистем.
Несколько лет назад международной группе исследователей удалось вскрыть шифр RSA с ключом длиной 512 бит. Именно такой ключ используется для защиты Интернет-транзакций, а также в шифрах многих коммерческих банков. Интересно также отметить, что 512 двоичных разрядов - это максимальная длина ключа, которую правительство США разрешает использовать в экспортируемых программных продуктах. Работа по подбору двух простых сомножителей числа, содержащего 155 десятичных цифр, велась в течение семи месяцев с привлечением ресурсов параллельно работающих 292 компьютеров, находящихся в 11 различных географических точках. В это количество входят 160 рабочих станций SGI и Sun, работающих на тактовых частотах 175—400 МГц, восемь компьютеров Origin 2000 SGI, работающих на частоте 250 МГц, 120 ПК с процессорами Pentium II (350—450 МГц) и четыре процессора, работающих на частоте 500 МГц, производства Digital/Compaq. Общие затраты вычислительных ресурсов составили около восьми тысяч MIPS-лет.
Согласно принципу Кирхгофа, стойкость криптоалгоритма определяется секретностью ключа. Это означает, что, если для генерации ключей используется криптографически слабый алгоритм, независимо от используемого шифра вся система будет нестойкой. Качественный ключ, предназначенный для использования в рамках симметричной криптосистемы, представляет собой случайный двоичный набор. Если требуется ключ разрядностью n, в процессе его генерации с одинаковой вероятностью должен получаться любой из $$2^n$$ возможных кодов. Генерация ключей для асимметричных криптосистем - процедура более сложная: так, ключи, применяемые в таких системах, должны обладать определенными математическими свойствами. Например, в случае системы RSA модуль шифрования есть произведение двух больших простых чисел.
Для генерации ключевой информации, предназначенной для использования в рамках симметричной криптосистемы, используются следующие методы (в порядке возрастания качества):
Невысокое качество программных методов формирования объясняется в первую очередь возможностью атаки на конкретную реализацию генератора и необходимостью защиты от разрушающих программных воздействий.
На рис 3.36 показана схема генерации сеансовых ключей в стандарте ANSI X9.17, где E - функция зашифрования DES, K - ключ, $$V_0$$ - секретная синхропосылка, $$T_i$$ - временная отметка, $$R_i$$ - сеансовый ключ. Очевидно, что данная схема может применяться совместно с любым другим блочным шифром. Очередной сеансовый ключ формируется в соответствии с уравнением
$$R_i = E (E (T_i)$$
$$Vi) = K\{K\{T_i\}$$
$$V_i\}$$.
Новое значение $$V_{i + 1}$$ определяется следующим образом:
$$V_{i + 1} = E (E (T_i)$$
$$R_i) = K\{K\{T_i\}$$
$$R_i\}$$.
(рис 3.36) Схема генерации ключей в стандарте ANSI X9.17
Секретные ключи не должны храниться в памяти в явном виде, допускающем их считывание. Любая информация об используемых ключах должна храниться в зашифрованном виде, а значит, в защищенной системе должна иметь место иерархия ключей: либо двухуровневая (ключи шифрования ключей - ключи шифрования данных), либо трехуровневая (главный или мастер-ключ - ключи шифрования ключей - ключи шифрования данных). Учитывая, что такое разделение функций необходимо для обеспечения максимальной безопасности, каждый из указанных типов ключей, различающихся по последствиям компрометации, времени жизни, а иногда и по способам формирования, должен использоваться только по своему прямому назначению.
На самом нижнем уровне иерархии находятся ключи шифрования данных или сеансовые ключи, которые используются для шифрования пересылаемых сообщений или аутентификационной информации. Для защиты сеансовых ключей при их хранении и передаче используются ключи следующего уровня - ключи шифрования ключей. На верхнем уровне иерархии располагается мастер-ключ, используемый для защиты ключей шифрования ключей. Обычно в каждом компьютере используется один мастер-ключ.
Учитывая главенствующую роль в иерархии мастер-ключа, используемого в течение длительного времени, его защите уделяется особое внимание:
Один из способов аутентификации мастер-ключа показан на рис 3.37.
(рис 3.37) Схема аутентификации мастер-ключа
Мастер-ключ - $$K_m$$
В памяти компьютера хранится пара (M, C), где M - некоторый массив данных, $$C = K_m\{M\}$$ - результат его зашифрования на мастер-ключе $$K_m$$. Всякий раз, когда требуется проверка аутентичности мастер-ключа, берется код M из памяти и подается на вход криптомодуля. Полученная с выхода последнего шифрограмма C` сравнивается с шифрограммой, хранящейся в памяти. При положительном результате сравнения, аутентичность мастер-ключа считается установленной.
При генерации сеансовых ключей код с выхода генератора ПСП рассматривается как шифрограмма $$K_m \{K_S\}$$ сеансового ключа $$K_S$$, полученная с использованием мастер-ключа $$K_m$$, и поэтому он может храниться в том виде, в котором был получен. На рис 3.38 приведена схема защиты ключа.
(рис 3.38) Схема защиты сеансового ключа
Сеансовый ключ - $$K_S$$
При шифровании сообщения на вход криптомодуля подается шифрограмма $$K_m \{K_S\}$$ и сообщение M. Криптомодуль сначала "восстанавливает" сеансовый ключ, а затем с его помощью шифрует сообщение.
Проще всего хранить ключи криптосистемы с одним пользователем. В распоряжении последнего один из следующих вариантов в порядке возрастания надежности:
Следует помнить, что в первых двух случаях объем ключевого пространства зависит не только от длины пароля или ключевой фразы, но и от ограничения на вид используемых символов. В таблице 3.3 приведено количество возможных ключей при использовании 8-символьной ключевой фразы и время полного перебора при скорости перебора 106 ключей в секунду в зависимости от ограничений на используемые символы. Также следует помнить о возможности проведения противником так называемой атаки со словарем, включающем в себя наиболее вероятные ключевые слова. Пароли и символьные строки начального заполнения генератора ПСП следует выбирать случайным образом, а не только на основе критерия простоты запоминания.
| Символы ключа | Число символов | Число возможных ключей | Время полного перебора |
|---|---|---|---|
| Заглавные буквы | 32 | $$1,1 x 10^{12}$$ | 13 дней |
| Заглавные буквы и цифры | 42 | $$9,7 x 10^{12}$$ | 112 дней |
| Все 8-разрядные коды | 256 | $$1,9 x 10^{19}$$ | 600 000 лет |
В последнем случае ни сам ключ, ни исходная информация, необходимая для его получения, пользователю неизвестны, а значит, он не может и скомпрометировать их. Использование ROM-key, имеющего тот же вид, какой имеет привычный ключ от входной двери, позволяет пользователю чисто интуитивно избегать многих ошибок, связанных с хранением криптографических ключей.
Распределение ключей между участниками информационного обмена в сети реализуется двумя способами, представленными на рис 3.39:
(рис 3.39) Возможные варианты построения схемы распределения ключей: а - прямой обмен между пользователями в сети (схема типа «точка-точка»); б - схемы с использованием центра распределения ключей (ЦРК); в - схемы с использованием центра трансляции ключей (ЦТК); А, В, С - участники информационного обмена; К - ключ
Недостатком первого подхода является возможность злоупотреблений со стороны центра, которому известно, кому и какие ключи распределены. Во втором случае проблема заключается в необходимости проведения более качественной, чем в первом случае, процедуры аутентификации для проверки подлинности участников сеанса взаимодействия и достоверности самого сеанса.
Примерами первого подхода является схема Kerberos, второго - схема Диффи—Хеллмана, рассмотренные ранее.
Схемы, показанные на рис 3.39б и рис 3.39в, предполагают, что абоненты А и В предварительно разделили знание своих секретных ключей с центром С. Схемы с ЦРК предполагают, что именно последний формирует сеансовые ключи. Схемы, показанные на рис 3.39в, отличаются от предыдущего варианта тем, что ЦТК обеспечивает только перешифрование полученной ключевой информации.
В двухключевых асимметричных криптосистемах существует опасность подмены открытого ключа одного или нескольких участников информационного обмена. Задача защиты открытых ключей от подделки является "ахиллесовой пятой" всей технологии. Допустим, противник W, имеющий пару ключей
$$(PK_W, SK_W)$$,
подменил своим открытым ключом открытый ключ $$PK_А$$ абонента А. В результате у противника появляются следующие возможности:
Учитывая вышеизложенное, одна из важнейших функций центра доверия - сертификация открытых ключей взаимодействующих абонентов. Например, сертификат $$cert_A$$ открытого ключа абонента А суть шифрограмма, полученная на секретном ключе центра распределения С, которая содержит метку времени ts, время действия сертификата lt, идентификатор $$ID_A$$ и открытый ключ $$PK_A$$, т.е.:
$$\{ts, lt, ID_A, PK_A\}SK_C$$,
| где | $$SK_C$$ | - | секретный ключ центра С. |
В самом общем случае функциями центра доверия могут являться:
Для уменьшения количества сеансов пересылки ключей применяют приведенную на рис 3.40 процедуру модификации ключей, которая основана на получении нового ключа путем хеширования старого. Если правило смены ключей соблюдается и отправителем, и получателем, то в каждый момент времени они имеют одинаковый ключ. Постоянная смена ключа затрудняет противнику решение задачи раскрытия информации. При использовании такого приема следует помнить, что вся ключевая последовательность будет скомпрометирована, если противнику станет известен хотя бы один из ранее использовавшихся старых ключей.
(рис 3.40) Процедура модификации ключей
Любой ключ должен использоваться в течение ограниченного отрезка времени, длительность которого зависит от:
При определении времени жизни ключа учитываются следующие соображения:
Стандарт Х.509 ITU появился в 1988 г. Позже в нем были исправлены некоторые недостатки в защите. Вторая версия была опубликована в 1993 г. Сейчас действует третья версия.
Рекомендации Х.509 являются частью рекомендаций серии Х.500, определяющей стандарт службы каталогов. Каталог представляет собой сервер или распределенную систему серверов, поддерживающих базу данных с информацией о пользователях. Эта информация отражает соответствие имен пользователей и их сетевых адресов, а также других атрибутов пользователей.
Документ Х.509 определяет каркас схемы предоставления услуг аутентификации каталогом Х.500 своим пользователям. Этот каталог может хранить сертификаты открытых ключей. Каждый сертификат содержит открытый ключ пользователя и подписывается секретным ключом центра сертификации. Кроме того, Х.509 определяет возможные протоколы аутентификации, построенные на использовании сертификатов открытых ключей.
Стандарт основывается на использовании криптографии с открытым ключом, однако он не вынуждает использовать какие-то конкретные алгоритмы шифрования, схемы электронной подписи и алгоритмы хеширования.
Структура сертификатов и протоколов аутентификации, определяемая в Х.509, может использоваться в самых различных ситуациях. Например, формат сертификата Х.509 принят в протоколах S/MIME, IPSec, SSL/TLS и SET.
Главным элементом стандарта являются сертификаты открытых ключей каждого пользователя. Эти сертификаты выдаются надежным центром сертификации (ЦС) и размещаются в соответствующем каталоге либо ЦС, либо самим пользователем. При этом сервер каталогов всего лишь предоставляет легко доступный пользователям источник сертификатов, не отвечая ни за создание ключей, ни за их сертификацию.
На рис 3.41 показан формат сертификата Х.509.
(рис 3.41) Формат сертификата Х.509
Как видно из рис 3.41, формат включает достаточное большое количество элементов.
Два поля уникальных идентификаторов были включены в версию 2 для обеспечения возможности многократного использования имен субъектов или объектов, выдавших сертификат. Эти поля используются редко.
Для определения сертификата стандарт использует следующую формулу:
$$Y<<X>>$$,
т.е. удостоверение центра сертификации Y открытого ключа абонента X.
Сертификат пользователя, формируемый ЦС, имеет следующие свойства:
При большом количестве пользователей обращение к одному и тому же ЦС может оказаться слишком дорогим и непрактичным решением, учитывая, что каждому пользователю по аутентичному каналу необходимо предоставить открытый ключ ЦС. Более удобным решением часто оказывается наличие нескольких ЦС, каждый из которых обеспечивает своим открытым ключом некоторое подмножество пользователей.
Предположим, что абонент А получил сертификат от уполномоченного ЦС Z, а абонент В - от уполномоченного ЦС W. Если А не знает открытого ключа центра W, то сертификат абонента В окажется бесполезным, так как А не сможет проверить подпись W на сертификате. Однако если центры Z и W по какой-то защищенной схеме обменялись своими открытыми ключами, то следующая процедура дает возможность А получить открытый ключ абонента В:
В рассмотренном случае А использовал цепочку сертификатов
$$Z<<W>>W<<B>>$$,
чтобы получить открытый ключ В. Точно так же В может получить открытый ключ А по обратной цепочке
$$W<<Z>>Z<<A>>$$.
На рис 3.42 показан пример иерархии ЦС.
(рис 3.42) Пример иерархии ЦС
В данном случае А может построить следующий сертификационный маршрут к В:
$$X<<W>>W<<V>>V<<Y>>Y<<Z>>Z<<B>>.$$
Получив последовательно нужные сертификаты, А получает возможность восстановить подлинный экземпляр открытого ключа В. Аналогично В может восстановить подлинный экземпляр открытого ключа А:
$$Z<<Y>>Y<<V>>V<<W>>W<<X>>X<<A>>.$$
Если предположить, что ЦС X и Z взаимно сертифицировали друг друга, сертификационные маршруты от А к В и от В к А укорачиваются и принимают соответственно вид:
$$X<<Z>>Z<<B>>,$$
$$Z<<X>>X<<A>>.$$
Каждый сертификат включает информацию о сроке его действия. Обычно новый сертификат выдается незадолго до окончания срока действия предыдущего. В некоторых случаях появляется необходимость отменить действие сертификата, например, по любой из следующих причин:
Каждый ЦС должен поддерживать список, в котором указываются все отозванные, но не исчерпавшие срока своего действия сертификаты. Эти списки размещаются и в каталоге.
Каждый список отозванных сертификатов (CRL, Certificate Revocation List), размещаемый в каталоге, подписывается центром сертификации и включает в себя имя ЦС, дату создания списка, дату выхода следующей версии CRL и отдельные записи по каждому из отозванных сертификатов. Каждая такая запись включает в себя порядковый номер сертификата и дату его отзыва. Учитывая, что для отдельно взятого ЦС порядковый номер уникален, для распознавания сертификата его указания достаточно.
Получив сертификат в сообщении, пользователь обязан выяснить, не был ли этот сертификат отозван. Формат списка, необходимый при отзыве сертификата, приведен на рис 3.43.
(рис 3.43) Формат списка отозванных сертификатов
Стандарт Х.509 определяет процедуры односторонней и взаимной аутентификации, использующие схему электронной подписи. Предполагается, что каждая из взаимодействующих сторон (абоненты А и В) знает открытый ключ другой, полученный либо из каталога, либо из сообщения стороны, инициировавшей обмен.
Одношаговая аутентификация предполагает передачу одного сообщения от А к В, которое устанавливает следующее:
Двухшаговая аутентификация предполагает передачу двух сообщений (от А к В и обратно) и помимо пяти вышеперечисленных фактов гарантирует следующее:
Разработчики 3-й версии стандарта сочли, что для большей гибкости требуется включение в формат сертификата ряда необязательных расширений. Каждое расширение состоит из идентификатора расширения, признака критичности и значения расширения. Признак критичности показывает, может ли расширение быть безопасно игнорировано или нет. Если этот признак имеет значение TRUE, а расширение не распознается, такой сертификат должен считаться недействительным.
Можно выделить три категории расширений:
Информация о ключах субъекта и ЦС и политике сертификации. Под политикой сертификации понимается множество правил, определяющих применимость сертификата в конкретных средах и классах приложений с общими требованиями защиты.
Область включает в себя следующие поля.
Субъект сертификации и атрибуты ЦС. Расширение обеспечивает поддержку альтернативных имен в альтернативных форматах для субъектов и ЦС. Может содержать дополнительную информацию о субъекте сертификации (почтовый адрес, занимаемая должность в компании, фотография и пр.).
Область включает в себя следующие поля.
Область включает в себя следующие поля.
Одной из функций генераторов ПСП в системах криптографической защиты информации может быть внесение неопределенности в работу средств защиты, например выбор элементов вероятностного пространства R при вероятностном шифровании. Главная особенность вероятностного шифрования: один и тот же исходный текст, зашифрованный на одном и том же ключе, может привести к появлению огромного числа различных шифротекстов.
Схема одного из возможных вариантов вероятностного блочного шифрования в режиме ECB показана на рис 3.44, где на вход функции зашифрования E поступает "расширенный" блок
полученный в результате конкатенации блока открытого текста $$M_i$$ и двоичного набора $$R_i$$ той же разрядности с выхода генератора ПСП.
(рис 3.44) Пример вероятностного шифрования. E и D - функции за- и расшифрования симметричной или асимметричной криптосистемы
В результате зашифрования получается блок $$С_i$$ закрытого текста, разрядность которого больше разрядности блока $$M_i$$. В результате при зашифровании одинаковых блоков на одном и том ключе получаются различные блоки шифротекста. При расшифровании часть $$R_i$$ блока, полученного на выходе функции D, просто отбрасывается.
Можно выделить следующие достоинства вероятностного шифра:
и соответствующего ему элемента Ri вероятностного пространства может выступать в качестве параметра безопасности.Недостаток у рассматриваемой схемы лишь один - шифротекст всегда длиннее соответствующего ему открытого текста.
В настоящее время криптографические методы защиты используются в информационных системах любой степени сложности и назначения. Криптографическими методами защищается государственная тайна, обеспечивается законность электронного документооборота, предотвращаются попытки мошенничества в системах электронной торговли. Без криптографии обеспечить требуемую степень безопасности в современном компьютеризированном мире уже не представляется возможным. Со временем ее роль и значение обещают стать еще больше.
Современная криптография предоставляет все необходимые алгоритмы, методы и средства, которые позволяют построить систему защиты, затраты на взлом которой таковы, что у противника с ограниченными финансовыми и техническими возможностями для получения интересующей его информации остаются две только две возможности - использование, во-первых, человеческого фактора, а во-вторых, особенностей конкретной реализации криптоалгоритмов и криптопротоколов, которая чаще всего оставляет желать лучшего. Именно такой вывод можно сделать, анализируя примеры реальных успешных атак на криптосистемы. Известны лишь единичные случаи взлома с использованием исключительно математических методов. В то же время различных примеров взломов реальных систем так много, что их анализом вынуждены заниматься целые компании, наиболее известная из которых Counterpane Systems Б. Шнайера.
Система защиты в целом не может быть надежнее отдельных ее компонентов. Иными словами, для того чтобы преодолеть систему защиты, достаточно взломать или использовать для взлома самый ненадежный из ее компонентов. Чаще всего причинами ненадежности реальных систем криптографической защиты являются:
Самое ненадежное звено системы - человек. Типичные ошибки пользователей, нарушающих безопасность всей системы защиты:
Получают распространение атаки типа отказ в обслуживании (denial of service), провоцирующие пользователя отключать "заедающую" систему защиты при решении неотложных задач.
Можно выделить следующие причины ненадежности криптосистем, связанные с особенностями их реализации:
В некоторых случаях, особенно в системах реального времени, применение стойких алгоритмов принципиально невозможно в силу их низкого быстродействия, и поэтому вынужденно используются менее стойкие, но быстрые криптоалгоритмы.
Многие качественные криптографические средства подпадают под действие экспортных ограничений, искусственно снижающих качество этих средств. Например, в США запрещен экспорт криптоалгоритмов с длиной ключа более 56 бит. Все программные средства, произведенные в США и легально экспортируемые за рубеж, обеспечивают ослабленную криптографическую защиту. Аналогичная ситуация имеет место и в Европе. Так, например, существуют две версии алгоритма поточного шифрования А5 (стандарт GSM) - надежная А5/1 и существенно менее стойкая А5/2 для поставок в развивающиеся страны.
Многие разработчики ПО включают в свои продукты собственные криптоалгоритмы, самонадеянно считая себя специалистами, забывая, что современная криптография основана на глубоких исследованиях в таких разделах математики, как высшая алгебра, теория чисел, теория информации, теория сложности вычислений и др. Если разработчики делают ставку на собственные методы, шансы взломщиков, даже в случае полного отсутствия на начальном этапе информации об использованном алгоритме, многократно возрастают.
Основные ошибки при применении криптоалгоритмов: недостаточная длина ключа, некачественная процедура управления ключами, некачественный генератор ПСП или неправильная его инициализация; и наконец, использование криптоалгоритмов не по назначению, например хранение паролей в зашифрованном, а не в хешированном виде и использование на практике модели доверительных отношений, отличной от той, в расчете на которую проектировалась система.
Ошибки в реализации криптоалгоритмов. Эта причина ненадежности криптосистем в силу своей нетривиальности и многообразия требует отдельного рассмотрения, поэтому ограничимся лишь кратким перечислением основных проблем, возникающих при реализации криптоалгоритмов.
Надежная система защиты должна уметь оперативно обнаруживать несанкционированные действия для минимизации возможного ущерба. В случае обнаружения повреждений в системе должны включаться эффективные процедуры восстановления разрушенных элементов. Система не должна потерять живучесть даже в случае проведения успешной атаки на нее.
Причины наличия большинства "дыр" (или люков) в ПО, т.е. не описанных в документации возможностей работы с ним, очевидны: забывчивость разработчиков, которые в процессе отладки продукта создают временные механизмы, облегчающие ее проведение, например, за счет прямого доступа к отлаживаемым частям программы. По окончании отладки часть "дыр" убирается, а о части разработчики благополучно забывают либо оставляют их сознательно, особенно в ранних версиях продукта, когда в будущем весьма вероятна его доработка.
"Дыры" могут являться следствием применения технологии разработки программ "сверху вниз", когда программист сразу приступает к написанию управляющей программы, заменяя предполагаемые в будущем подпрограммы "заглушками", имитирующими реальные подпрограммы или просто обозначающими место их будущего подсоединения. Очень часто эти "заглушки" остаются в конечной версии программы. Либо опять же по причине забывчивости, либо в расчете на будущую модификацию продукта, либо, например, если в процессе разработки выясняется, что какая-то подпрограмма не нужна, а удалить заглушку не представляется возможным. В случае обнаружения такой заглушки злоумышленник может воспользоваться ею для подключения к программе своей подпрограммы, работающей отнюдь не в интересах законного пользователя.
Третий источник "дыр" - неправильная обработка (или ее отсутствие) каких-либо нестандартных ситуаций, которые могут иметь место при работе программы: неопределенный ввод, ошибки пользователей, сбои и т.п. В этом случае противник может искусственно вызвать в системе появление такой нестандартной ситуации, чтобы выполнить нужные ему действия. Например, он может вызвать аварийное завершение программы, работающей в привилегированном режиме, чтобы, перехватив управление, остаться в этом привилегированном режиме.
Наконец, известны случаи, когда люк в ПО или аппаратуре - первый шаг к атаке системы безопасности. Разработчик умышленно оставляет его в конечном продукте, чтобы в будущем, например, иметь возможность модифицировать информацию незаметно для законного пользователя, расшифровывать ее, не зная ключа, и т.п.
Существуют программы, изначально предназначенные для разрушительных действий: это компьютерные вирусы, компьютерные черви, троянские программы и пр. С полным на то основанием они получили обобщенное название разрушающих программных воздействий (РПВ).
РПВ могут выполнять одно или несколько из перечисленных действий, опасных для системы защиты:
Еще более разнообразны пути внедрения РПВ. Можно выделить следующие средства, предназначенные для борьбы с РПВ, без которых любая программная реализация криптоалгоритма практически беззащитна:
Аппаратуру легче физически защитить от проникновения извне. Криптомодули могут помещаться в особые контейнеры, которые делают невозможным изменение алгоритма функционирования. Интегральные схемы могут покрываться специальным химическим составом, при этом любая попытка преодоления защитного слоя приводит к самоуничтожению их внутренней логической структуры. Тем не менее известны случаи выявления и аппаратных закладок.
Кроме того, возникает проблема защиты от экзотических атак, применимых к реализациям в смарт-картах, - временного анализа и анализа потребляемой мощности. Эти атаки основаны на использовании того факта, что различные операции, выполняемые на микропроцессоре, требует разного времени, а также приводят к разному потреблению мощности. Общая идея этих атак в том, что, анализируя временные характеристики алгоритма (время ответа) или потребление мощности, мы можем составить картину выполнения различных операций и даже приблизительно вычислить их аргументы.
Приблизительный анализ уязвимости различных операций с точки зрения временных характеристик дает следующие результаты.
Стойкость к атакам такого рода, направленным не на криптоалгоритм, а на его реализацию, также надо учитывать. Защищенность по отношению к временному анализу можно повысить путем введения дополнительных задержек. Более сложной является проблема защиты от анализа мощности, но ее можно решить несколькими путями. Это, во-первых, балансировка алгоритма (равномерное распределение различных операций по коду), во-вторых - введение специальных "шумовых" операций или просто выбор другого микропроцессора.
С недавних пор получили распространение атаки на аппаратуру криптосистем, основанные на анализе электромагнитного излучения и других побочных источников информации.
Получают распространение по сути "биологические" методы взлома, рассматривающие криптосистемы как сложные объекты, определенным образом реагирующие на внешние раздражители. Атаки подобного рода основаны на анализе поведения системы после случайных или преднамеренных сбоев в работе.
Несмотря на успехи современной криптографии, задача построения надежной системы криптографической защиты комплексная, она значительно сложнее, чем кажется на первый взгляд. Надежная система защиты может быть построена только с учетом всех перечисленных факторов.
К моменту выхода этого курса в большинстве существующих систем обеспечения безопасности произойдет замена криптоалгоритмов с секретным и открытым ключом на лучшие на сегодняшний день - соответственно AES и ECCS, которые были описаны в данной главе. Поэтому в последующих главах везде, где будет идти речь об алгоритмах блочного шифрования DES, Triple DES (3DES) и других, следует учитывать скорее всего уже свершившийся переход к AES; везде, где речь идет об алгоритме открытого шифрования RSA, следует учитывать скорее всего уже свершившийся переход к ECCS.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.