В самом определении необратимости присутствует неопределенность. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить обратное значение используя современные вычислительные средства за обозримый интервал времени. Поэтому чтобы гарантировать надежную защиту информации, к системам с открытым ключом (СОК) предъявляются два важных и очевидных требования:
1. Преобразование исходного текста должно быть необратимым и исключать его восстановление на основе открытого ключа.
2. Определение закрытого ключа на основе открытого также должно быть невозможным на современном технологическом уровне. При этом желательна точная нижняя оценка сложности (количества операций) раскрытия шифра.
Алгоритмы шифрования с открытым ключом получили широкое распространение в современных информационных системах. Так, алгоритм RSA стал мировым стандартом де-факто для открытых систем и рекомендован МККТТ.
Вообще же все предлагаемые сегодня криптосистемы с открытым ключом опираются на один из следующих типов необратимых преобразований:
Разложение больших чисел на простые множители.
Вычисление логарифма в конечном поле.
Вычисление корней алгебраических уравнений.
Алгоритм Диффи-Хеллмана.
Диффи и Хелман предложили для создания криптографических систем с открытым ключом функцию дискретного возведения в степень.
Необратимость преобразования в этом случае обеспечивается тем, что достаточно легко вычислить показательную функцию в конечном поле Галуа состоящим из p элементов. (p - либо простое число, либо простое в любой степени). Вычисление же логарифмов в таких полях - значительно более трудоемкая операция.
Если y=ax,, 1 < x < p-1, где - фиксированный элемент поля GF(p), то x=loga y над GF(p). Имея x, легко вычислить y. Для этого потребуется 2 ln(x+y) операций умножения.
Обратная задача вычисления x из y будет достаточно сложной. Если p выбрано достаточно правильно, то извлечение логарифма потребует вычислений, пропорциональных
L(p) = exp { (ln p ln ln p)0.5 }
Для обмена информацией первый пользователь выбирает случайное число x1, равновероятное из целых 1,...,p-1. Это число он держит в секрете, а другому пользователю посылает число
y1 = ax1 mod p
Аналогично поступает и второй пользователь, генерируя x2 и вычислив y2, отправляя его первому пользователю.
В результате этого они могут вычислять k12 = ax1x2 mod p.
Для того, чтобы вычислить k12, первый пользователь возводит y2 в степень x1. То же делает и второй пользователь. Таким образом, у обоих пользователей оказывается общий ключ k12, который можно использовать для шифрования информации обычными алгоритмами. В отличие от алгоритма RSA, данный алгоритм не позволяет шифровать собственно информацию.
Не зная x1 и x2, злоумышленник может попытаться вычислить k12, зная только перехваченные y1 и y2. Эквивалентность этой проблемы проблеме вычисления дискретного логарифма есть главный и открытый вопрос в системах с открытым ключом. Простого решения до настоящего времени не найдено. Так, если для прямого преобразования 1000-битных простых чисел требуется 2000 операций, то для обратного преобразования (вычисления логарифма в поле Галуа) - потребуется около 1030 операций.
Как видно, при всей простоте алгоритма Диффи-Хелмана, его недостатком является отсутствие гарантированной нижней оценки трудоемкости раскрытия ключа.
Кроме того, хотя описанный алгоритм позволяет обойти проблему скрытой передачи ключа, необходимость аутентификации остается. Без дополнительных средств, один из пользователей не может быть уверен, что он обменялся ключами именно с тем пользователем, который ему нужен. Опасность имитации в этом случае остается.
В качестве обобщения сказанного о распределении ключей следует сказать следующее. Задача управления ключами сводится к поиску такого протокола распределения ключей, который обеспечивал бы:
возможность отказа от центра распределения ключей;
взаимное подтверждение подлинности участников сеанса;
подтверждение достоверности сеанса механизмом запроса-ответа,
использование для этого программных или аппаратных средств;
использование при обмене ключами минимального числа сообщений.
Иерархические схемы распределения ключей.
Рассмотрим следующую задачу.
Пусть абоненты сети связи не равноправны между собой, а разделены на "классы безопасности" C1,C2,…,Cn. На множестве этих классов определен некоторый частичный порядок; если Cj < Ci, то говорят, что Ci доминирует Cj , т.е. имеет более высокий уровень безопасности, чем Cj . Задача состоит в том, чтобы выработать секретные ключи kiдля каждого класса Ci таким образом, чтобы абонент из Ci мог вычислить kj в том и только в том, когда Ci³Cj.
Эта задача была решена в общем виде Эклом и Тейлором в связи с проблемой контроля доступа. В их методе каждый класс безопасности получает, кроме секретного, также и открытый ключ, который вместе с секретным ключом класса, доминирует данный, позволяет последнему вычислить секретный ключ данного класса.
Для случая, когда частичный порядок является деревом, имеется схема Сандху [San], которая позволяет добавлять новые классы безопасности без изменения ключей существующих классов. Приведем описание иерархической схемы распределения ключей, предложенной Ву и Чангом для случая, когда частичный порядок является деревом.Предположим, что каждому классу безопасности сопоставлен идентификатор
iÎZp \ {0}; класс с идентификатором i мы будем обозначать через Ci . Ввиду того, что частичный порядок на множестве классов безопасности является деревом, для описания протокола достаточно описать процедуры выработки секретного ключа для корневого класса безопасности (т.е. класса с наиболее высоким уровнем безопасности) и для произвольного класса Cj при условии, что секретный ключ для класса Ci , непосредственно доминирующего Cj (т.е. такого, что Cj < Ci и не существует класса Cr такого, что Cj < Cr < Ci), уже выработан.
Для корневого класса безопасности (например C1) выбирается произвольный секретный ключ KiÎV \ {(0,0,0)}.
Пусть класс Ci доминирует класс Cj и для Ci уже выработан секретный ключ KiÎV. Тогда в качестве секретного ключа для Cj выбирается вектор
После чего вектор Pj делается общедоступным.
Таким образом, в процессе выполнения протокола для каждого класса безопасности Ci вырабатывается секретный ключ Ki и открытый ключ Pj (кроме корневого класса). Если теперь Cj < Ci, то абонент из Ci может вычислить Kj следующим образом.
Существует цепь классов безопасности Ci = Cro>Cr1>…>Crn = Cj, где Cl-1 непосредственно доминирует Cl для всех L = 1,…,n. Абонент Ci, зная Ki и Pr1, вычисляет по формуле (**), затем, зная Kr1 и Pr2, вычисляет Kr2 по той же формуле и т.д.; после n шагов будет вычислен Krn = Kj.
Электронная подпись
В чем состоит проблема аутентификации данных?
В конце обычного письма или документа исполнитель или ответственное лицо обычно ставит свою подпись. Подобное действие обычно преследует две цели.
Во-первых, получатель имеет возможность убедиться в истинности письма,
сличив подпись с имеющимся у него образцом. Во-вторых, личная подпись является юридическим гарантом авторства документа. Последний аспект особенно важен при заключении разного рода торговых сделок, составлении доверенностей, обязтельств и т.д.
Если подделать подпись человека на бумаге весьма непросто, а установить авторство подписи современными криминалистическими методами - техническая деталь, то с подписью электронной дело обстоит иначе. Подделать цепочку битов, просто ее скопировав, или незаметно внести нелегальные исправления в документ сможет любой пользователь.
С широким распространением в современном мире электронных форм документов (в том числе и конфиденциальных) и средств их обработки особо актуальной стала проблема установления подлинности и авторства безбумажной документации.
Итак, пусть имеются два пользователя Александр и Борис.
От каких нарушений и действий злоумышленника должна защищать система аутентификации.
Отказ (ренегатство).
Александр заявляет, что он не посылал сообщение Борису, хотя на самом деле он все-таки посылал.
Для исключения этого нарушения используется электронная (или цифровая) подпись.
Модификация (переделка).
Борис изменяет сообщение и утверждает, что данное (измененное) сообщение послал ему Александр.
Подделка.
Борис формирует сообщение и утверждает, что данное (измененное) сообщение послал ему Александр.
Активный перехват.
Владимир перехватывает сообщения между Александром и Борисом с целью их скрытой модификации.
Для защиты от модификации, подделки и маскировки используются цифровые сигнатуры.
Маскировка (имитация).
Владимир посылает Борису сообщение от имени Александра .
В этом случае для защиты также используется электронная подпись.
Повтор.
Владимир повторяет ранее переданное сообщение, которое Александра посылал ранее Борису . Несмотря на то, что принимаются всевозможные меры защиты от повторов, именно на этот метод приходится большинство случаев незаконного снятия и траты денег в системах электронных платежей.