Алгоритмы с открытым ключом
алгоритмы с открытым ключом.
Классические алгоритмы используют один ключ для шифрования-дешифрования. Алгоритмы с открытым ключом используют два ключа:
первый - для перехода от нешифрованного текста к шифрованному; второй - для обратного перехода от шифрованного к нешифрованному. Причем знание одного ключа не должно обеспечить обнаружение второго ключа. В этих алгоритмах один из ключей, обычно используемый для шифрования, можно сделать общим, и только ключ, используемый для расшифровки, должен быть засекречен. Эта особенность очень полезна для снижения сложности протокола и интеграции структур шифрования в сетях связи.
Алгоритмы шифрования с открытым ключом построены на определении односторонней функции, то есть некоторой функции f, такой, что для любого х из ее области определения f (х) легко вычислима, однако практически для всех у из ее области значений нахождение х, для которого y=f(x) вычислительно, не осуществимо [5.1-5.3]. То есть, односторонняя функция является отдельной функцией, которая легко рассчитывается ЭВМ в приемлемом объеме времени, но время расчета обратной функции в существующих условиях недопустимо большое.
Первый алгоритм шифрования с общим ключом был назван RSA (первые буквы фамилий авторов Rivest, Shamir, Adieman) [5.1-5.3]. Алгоритм базируется на двух функциях Е и D, связанных соотношением:
D (Е(*) = Е (D(*)).
Одна из этих функций используется для шифрования сообщений, другая - для дешифрования. Секретность алгоритма основана на том, что знание функции Е (или D) не открывает легкого способа вычисления D (или Е). Каждый пользователь делает общей функцию Е и хранит в секрете функцию D, то есть для пользователя Х есть открытый ключ Ех и секретный Dx.
Два пользователя А и В могут использовать алгоритм RSA, чтобы передать любое зашифрованное сообщение. Если абонент А хочет отправить сообщение М абоненту В, то он может сделать это следующим образом:
- зашифровать сообщение М;
- подписать сообщение М;
- зашифровать и подписать М. В первом случае: А обеспечивает преобразование М, используя открытый ключ
С = Ев (М)
и посылает его абоненту В. В принимает С и вычисляет db (с) = db (Ев (М)) = М.
Во втором случае: А подписывает М посредством вычисления F = Da (М)
и посылает F абоненту В (эти операции может осуществлять только пользователь А, которому известен секретный ключ Da). В получает F и вычисляет
Еа (F) = Еа (Da (М)) = М.
В теперь известно, что сообщение М действительно послано пользователем А. В этом случае секретность сообщения М не гарантируется, так как все могут осуществить такую же операцию с использованием общего ключа Еа. В третьем случае: А вычисляет
F = Da (М) и С = Ев (F) = Ев (Da (М);
А посылает С к В. В получает С и вычисляет db (с) = db (Ев (F)) = Da (М); В может теперь легко получить М, вычислив Еа (Da (М)) = М.
До операции шифрования и подшей каждое сообщение М должно разделяться на блоки фиксированной длины, затем каждый блок кодируется как совокупность фиксированного числа цифр. RSA кодер оперирует такими отдельными блоками в каждом цикле кодирования. Полное описание алгоритма RSA изложено, например, в [5.1, 5.2].
Алгоритм шифрования с открытым ключом RSA обеспечивает высокую степень безопасности передачи речевых сообщений и рекомендован к использованию в цифровых системах подвижной радиосвязи нового поколения.
В стандарте GSM термин "безопасность" понимается как исключение несанкционированного использования системы и обеспечение секретности переговоров подвижных абонентов. Определены следующие механизмы безопасности в стандарте GSM [5.4, 5.5]: