|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
КриптостойкостьОписанный выше метод шифрования обладает существенным недостатком. Если известна хотя бы часть исходного сообщения, то все сообщение может быть легко дешифровано. Действительно, пусть известно одно исходное словo . Тогда и далее вся правая часть гаммы шифра определяется по указанной формуле датчика псевдослучайных чисел. На практике часть сообщения вполне может быть известна злоумышленнику. Например, многие текстовые редакторы помещают в начало файла документа одну и ту же служебную информацию. Если злоумышленнику известно, что исходное сообщение подготовлено в данном редакторе, то он сможет легко дешифровать сообщение. Для повышения криптостойкости симметричных шифров применяют различные приемы: 1. Вычисление гаммы шифра по ключу более сложным (или секретным) способом; 2. Применение вместо более сложной (но обратимой) операции для вычисления шифровки; 3. Предварительное перемешивание битов исходного сообщения по фиксированному алгоритму. Наиболее надежным симметричным шифром считается DES (Data Encryption Standard), в котором используется сразу несколько методов повышения криптостойкости. В настоящее время широкое распространение получили шифры с открытым ключом. Эти шифры не являются симметричными — для зашифровки и расшифровки используются разные ключи. При этом ключ, используемый для зашифровки, является открытым (не секретным) и может быть сообщен всем желающим отправить шифрованное сообщение, а ключ, используемый для расшифровки, является закрытым и хранится в секрете получателем шифрованных сообщений. Даже знание всего зашифрованного сообщения и открытого ключа, с помощью которого оно было зашифровано, не позволяет дешифровать сообщение (без знания закрытого ключа). Для описания метода шифрования с открытым ключом нужны некоторые факты из теории чисел, изложенные (без доказательств) далее. Модулярная арифметика Полагаем, что все числа целые. Говорят, что число а сравнимо по модулю п с числом b (обозначение: а b (mod n)), если а и b при делении на n дают один и тот же остаток: а b (mod п) a mod п = b mod n. Отношение сравнимости рефлексивно, симметрично и транзитивно и является отношением эквивалентности. Классы эквивалентности по отношению сравнимости (по модулю ) называются вычетами (по модулю п). Множество вычетов по модулю n обозначается Z n. Обычно из каждого вычета выбирают одного представителя — неотрицательное число, которое при делении на n дает частное 0. Это позволяет считать, что Z n = {0,1,2,... ,п — 1}, и упростить обозначения. Над вычетами (по модулю п) определены операции сложения и умножения по модулю n, обозначаемые, соответственно, + n и и определяемые следующим образом: а+п b = (а + b) mod n, a b= mod n. Здесь подразумеваются операции по модулю n, то индекс п опускается. Легко видеть, что Z n; +п образует абелеву группу, a Z n; +п , — коммутативное кольцо с единицей. Рассмотрим Z* n — подмножество Z n,чисел, взаимно простых с n. Числа а и b называются взаимно простыми, если их наибольший общий делитель равен 1. Можно показать, что Z n*; . п — абелева группа. Таким образом, для чисел из множества Z n* Z^ существуют обратные по умножению по модулю n. Если n — простое число, то Z n*, +п , является полем. Функция = | Z n* | называется функцией Эйлера. Если р — простое число, то = р — 1, и вообще, > (n). Можно показать, что где — все простые делители n. Имеет место следующая теорема. Теорема 6.7. (Эйлера) Если п > 1, то Z n* (mod n). Отсюда непосредственно выводима Теорема 6.8. (малая теорема Ферма) Если р > 1 — простое число, то Z p* (mod p). Имеет место следующее утверждение. Теорема 6.9. Если числа попарно взаимно простые, число —их произведение, х и а — целые числа, то х = a (mod n) (mod n). Последнее утверждение является следствием теоремы, которая известна как «китайская теорема об остатках».
Шифрование с открытым ключом Шифрование с открытым ключом производится следующим образом. 1. Получателем сообщений производится генерация открытого ключа (пара чисел п и е) и закрытого ключа (число d). Для этого: - выбираются два простых числа р и q; - определяется первая часть открытого ключа п == pq; - определяется вторая часть открытого ключа — выбирается небольшое нечетное число е, взаимно простое с числом (р – 1)(q - 1) (заметим, что (р - 1)(q - 1) = pq (1 - 1/ р)(1 - 1 /q) = ); - определяется закрытый ключ: d = е-1 mod ((р – 1)(q - 1)). После чего открытый ключ (числа n и е) сообщается всем отправителям сообщений. 2. Отправитель шифрует сообщение (разбивая его, если нужно, на слова Si, длиной менее log2 п разрядов): Ci =(Si) e mod n и отправляет получателю. 3. Получатель расшифровывает сообщение с помощью закрытого ключа d: Р i = (С i) d mod n. Теорема 6.10. Шифрование с открытым ключом корректно, то есть в предыдущих обозначениях Pi = Si. Доказательство. Легко видеть, что Pi =(Si) ed mod n. Покажем, что . Действительно, числа d и е взаимно обратны по модулю (р – 1)(q - 1), то есть ed == 1 + k (p - 1)(q - 1) при некотором k. Если М = 0 (mod р), то по малой теореме Ферма имеем: . Если М 0 (mod р), то сравнение М ed =М (mod р), очевидно, выполняется. Таким образом, . Совершенно аналогично имеем , и по следствию к китайской теореме об остатках . Поскольку Si < п и Pi < п, заключаем, что. Пример 6.12. Генерация ключей: 1. р =3, q:=11; 2. n = рq =3 11=33; 3. (р – 1)(q - 1) = 2 10 = 20, е = 7; 4. d =7-1 mod 20=3, (7 3 mod 20 = 1). Пусть S l = 3, S 2 = 1, S 3 = 2 (S l, S 2, S 3 < п = 33). Тогда код определяется следующим образом. 1. C 1 = З7 mod 33 = 2187 mod 33 = 9; 2. C 2 = I7 mod 33 = 1 mod 33 = 1; 3. C 3 = 27 mod 33 = 128 mod 33 = 29. При расшифровке имеем: 1. P 1 = 93 mod 33 = 729 mod 33 = 3; 2. P 2 = 13 mod 33 = 1 mod 33 = 1; 3. P 3 = 293 mod 33 = 24389 mod 33 = 2.
Шифры с открытым ключом сравнительно просты в реализации, очень практичны (поскольку нет необходимости пересылать по каналам связи закрытый ключ и можно безопасно хранить его в одном месте) и в то же время обладают высочайшей криптостойкостыо. Кажется, что дешифровать сообщение несложно: достаточно разложить открыто опубликованное число п на множители, восстановив числа р и q, и далее можно легко вычислить секретный ключ d. Однако дело заключается в следующем. В настоящее время известны эффективные алгоритмы определения простоты чисел, которые позволяют за несколько минут подобрать пару очень больших простых чисел (по 100 и больше цифр в десятичной записи). В то же время неизвестны эффективные алгоритмы разложения очень больших чисел на множители. Разложение на множители числа в 200 и больше цифр потребовало бы сотен лет работы самого лучшего суперкомпьютера. При практическом применении шифров с открытым ключом используют действительно большие простые числа (не менее 100 цифр в десятичной записи, а обычно значительно больше). В результате вскрыть этот шифр оказывается невозможным, если не существует эффективных алгоритмов разложения на множители (что очень вероятно, хотя и не доказано строго). Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.013 сек.) |