криптография

Как уже отмечалось ранее, криптография играет одну из главных ролей в развитии технологий и стандартов ЭК. В используемых протоколах ЭК решаются типовые для различных областей техники задачи защиты информации от несанкционированного доступа, к числу которых относятся:

  • обеспечение целостности информации (невозможность для третьей стороны, расположенной между участниками информационного обмена, модифицировать передаваемую информацию таким образом, чтобы принимающая сторона этого не заметила);
  • обеспечение конфиденциальности информации (невозможность для третьей стороны получить информацию, содержащуюся в передаваемых сообщениях);
  • аутентификация источника информации (подтверждение того, что передающая сторона является тем, за кого она себя выдает); остальную часть этого пункта нужно вычеркнуть то есть невозможность для третьей стороны присвоить себе авторство какого-либо сообщения);
  • нотаризация информации (невозможность отказаться от авторства сообщения).

Для решения перечисленных задач используются различные криптографические алгоритмы. Под криптоалгоритмом понимается взаимнооднозначное преобразование, отображающее множество возможных сообщений отправителя, содержание которых необходимо скрыть от третьей стороны, во множество сообщений, называемых также криптотекстами, понятных только отправителю и адресату. Криптоалгоритмы иначе называют алгоритмами шифрования.

Все алгоритмы шифрования делятся на два класса:

  • симметричные алгоритмы шифрования;
  • асимметричные алгоритмы шифрования.

Симметричные алгоритмы шифрования основаны на использовании обеими сторонами информационного обмена общего секрета, называемого ключом. Знание ключа X полностью определяет криптографическое преобразование Z=EX(Y), которое еще иначе называют засекречиванием сообщения Y. Это преобразование является взаимно однозначным, то есть существует такая функция EX'(Z), что для любых Z и Y, связанных равенством Z=Ex(Y), верно Y=Ex1(Z). Обратное преобразование часто называют расшифрованием или дешифрованием сообщения Z.

Симметричные алгоритмы появились в глубокой древности для засекречивания важных сообщений. Уже знаменитый греческий историк Геродот (V век до нашей эры) приводил примеры писем, понятных только отправителю и адресату. Спартанцы использовали специальный механический прибор, при помощи которого важные сообщения писались особым способом, обеспечивающим сохранение тайны сообщения.

Самым надежным симметричным криптографическим алгоритмом является код Вернама. Суть алгоритма состоит в том, что для каждого отправляемого сообщения Y, представленного в виде последовательности двоичных нулей и единиц, по случайному закону генерируется из нулей и единиц последовательность той же длины, что и отправляемое сообщение. Эта последовательность играет в схеме Вернама роль одноразового ключа X. Тогда криптографическое преобразование состоит в побитном сложении по модулю 2 значений X и Y. Очевидно, что для «вскрытия» описанного криптоалгоритма (то есть для определения Y) необходимо перебрать все возможные значения ключа X.

Очевидными недостатками этого метода являются необходимость передачи получателю значения ключа Y для каждого шифруемого сообщения, а также переменная длина ключа. Конечно, различные значения ключа в схеме Вернама можно было бы перенумеровать и один раз передать надежным образом получателю (например, передачей из рук отправителя в руки получателя файла со значениями ключа). После этого в конце каждого зашифрованного сообщения можно сообщать получателю, каким по номеру значением ключа пользовался отправитель для засекречивания сообщения. Но при этом очевидно, что объем возможных значений ключа должен быть соизмерим с объемом информации, которым обмениваются стороны, что приводит к тому, что схема Вернама практически не используется (сегодня эта схема применяется в основном в военных системах для передачи очень важной информации).

Далее будет подробнее рассказано о других симметричных алгоритмах. В основе таких алгоритмов лежит принцип использования одного ключа относительно небольшого размера. Такие алгоритмы позволяют преобразовывать различные сообщения Y1, Y2, …,Yn таким образом, что, даже зная значения функции Zj=Ex(Yj) (i=l, …,n) для достаточно большого числа п, невозможно определить значение ключа X (отметим, что при использовании схемы Вернама для определения ключа достаточно знать единственную пару значений функции Z и сообщения Y).

Суть асимметричных алгоритмов (иначе схемы, основанные на таких алгоритмах, называют криптосистемами с общественными или открытыми ключами) состоит в следующем. В математике известны такие функции Е, для которых обратная функция D вычисляется достаточно сложно, если не известен некоторый параметр (в криптографических схемах этот параметр становится секретным ключом). Функция Е предоставляется в распоряжение любому желающему отправить сообщение обладателю параметра. Для шифрования информации, предназначенной обладателю параметра, достаточно применить к передаваемому сообщению преобразование Е. Тогда обладатель параметра, используя обратное преобразование D, легко расшифровывает полученное сообщение. Наоборот, лицо, не обладающее заветным параметром, не сумеет вычислить обратное преобразование и, следовательно, восстановить передаваемое сообщение. Понятие «не сумеет» имеет достаточно специфический смысл, который будет разъяснен далее.

Асимметричные алгоритмы являются идеальным механизмом для решения задач обеспечения целостности передаваемой информации и аутентификации ее источника. Решаются эти задачи с помощью схем с открытыми ключами следующим образом. В первую очередь к передаваемому сообщению Y (далее без ограничения общности предполагается, что сообщение Y имеет двоичное представление) применяется преобразование H(Y), называемое хэш-функцией, или дайджестом сообщения, отображающее сообщение Y в двоичную последовательность фиксированной длины (как правило, меньшей длины). Множество значений хэш-функции будет обозначаться М. Таким образом, преобразование H(Y) не является взаимно однозначным (зная значение H(Y) почти всегда невозможно однозначно определить значение Y), и потому его относят к классу односторонних функций. К преобразованию H(Y) предъявляют несколько плохо формализуемых требований, на качественном уровне состоящих в следующем:

  • мощность множества М должна быть достаточно большой (на практике используются значения H(Y) длиной от 128 до 256 битов, хотя длина значения хэш-функции определяется конкретной задачей);
  • сообщения Y «равномерно» отображаются с помощью H(Y) в элементы множества М, то есть каждому элементу множества М соответствует примерно одинаковое количество сообщений Y, отображаемых в этот элемент (примерно |А|/|М|, где |А|, |М| — мощности, соответственно, множества всех возможных сообщений Y и множества значений хэш-функции);
  • функция H(Y) не должна быть непрерывной, то есть из «близости» значений Yx и Y2 не следует «близость» значений H(Yt) и H(Y2).

Для практических целей, очевидно, достаточно, чтобы выполнялось неравенство |М| < |А|. Легко показать, что в этом случае вероятность того, что для любых случайно выбранных сообщений Y, и Y2 выполняется H(Yj)=H(Y2), равна |М|»‘. В случае, когда функция H(Y) отображает сообщения в множество всех двоичных последовательностей длины т, вероятность события H(Y,)=H(Y2) равна 2 т. Длина значения хэш-функции на практике определяется вероятностью того, что значения хэшфункции от двух случайно выбранных сообщений не равны друг другу. Например, при т=160 такая вероятность приблизительно равна 0,68* 10-48, что делает событие H(Y,)=H(Y2) фактически невероятным.

После того как для сообщения Y вычислено значение хэш-функции H(Y), к нему применяется закрытое преобразование D отправителя сообщения. Значение s=D(H(Y)) и является электронной цифровой подписью (ЭЦП) сообщения Y.

Для проверки (верификации) цифровой подписи принимающая сторона применяет к s обратное преобразование Е и полученное значение hj=E(s) сравнивает со значением h2=H(Yr), где Yr — полученное сообщение, которое в общем случае может отличаться от переданного сообщения (например, из-за попытки исказить переданное сообщение).

Если hj=h2, то ЭЦП верна, что, во-первых, аутентифицирует источник информации (передающую сторону), а во-вторых, подтверждает целостность полученного сообщения (Y=Yr). Напомним читателю, что целостность сообщения подтверждается с вероятностью того, что значения хэш-функции от двух различных аргументов совпадают.

Теперь рассмотрим, как симметричные и асимметричные алгоритмы используются для решения задач обеспечения безопасности информационного обмена. Для решения задач аутентификации источника информации и обеспечения ее целостности, как правило, используются асимметричные алгоритмы шифрования. Эти алгоритмы по своей природе предназначены для решения подобных задач в системах информационного обмена между многими пользователями (закрытое преобразование для подписи и открытое — для проверки подписи).

Для решения задачи обеспечения конфиденциальности передаваемой информации обычно применяются симметричные алгоритмы. Если открытое и закрытое преобразования в асимметричном алгоритме определены на одном множестве сообщений и являются коммутативными, то есть выполняется равенство E(D(Y))=D(E(Y)), то асимметричный алгоритм может использоваться и для шифрования сообщений. Действительно, передающая сторона преобразует сообщение Y в сообщение E(Y) с помощью открытого преобразования адресата сообщения. Тогда обратное преобразование сможет выполнить только получатель сообщения, а значит, содержание Y будет известно только адресату, что и требовалось получить.

Нужно отметить, что свойством коммутативности обладают многие известные асимметричные алгоритмы (например, самый известный алгоритм — RSA). Однако на практике свойство «шифрования» таких асимметричных алгоритмов используется очень редко и, как правило, только для того, чтобы две стороны информационного обмена в начале конфиденциального диалога обменялись между собой симметричным ключом шифрования, который далее используется для шифрования сообщений внутри диалога. Это обстоятельство связано с тем, что при равной степени защиты, обеспечиваемой симметричными и асимметричными алгоритмами, первые работают на 2-4 порядка быстрее вторых. Скорость работы алгоритма (вычислительная сложность алгоритма) является ключевым фактором во многих системах информационного обмена, что и определяет главную роль симметричных алгоритмов при решении задачи обеспечения конфиденциальности информационного обмена.

Комбинирование симметричных и асимметричных алгоритмов мастерски реализовано в протоколе SET с целью оптимизации времени выполнения транзакции ЭК.