Создание
Первой задачей является
Второй задачей является необходимость создания таких механизмов, при
использовании которых невозможно было бы подменить кого-либо из
участников, т.е. нужна
Диффи и Хеллман достигли значительных результатов, предложив способ решения обеих задач, который радикально отличается от всех предыдущих подходов к шифрованию.
Сначала рассмотрим общие черты
Кроме того, некоторые алгоритмы, например
Сначала рассмотрим алгоритмы, обладающие обеими характеристиками, а
затем перейдем к алгоритмам
При описании KR, KU.
Будем предполагать, что все участники имеют доступ к
В любое время участник может изменить свой
Диффи и Хеллман описывают требования, которым должен удовлетворять
KU, KR ).М, создать соответствующее зашифрованное сообщение:С = ЕKU[М]
М = DKR[C] = DKR[EKU[M]]
KU, определить KR.KU и зашифрованное
сообщение С, восстановить исходное сообщение М.Можно добавить шестое требование, хотя оно не выполняется для всех
алгоритмов с
М = ЕKU[DKR[M]]
Это достаточно сильные требования, которые вводят понятие
Y = f(X) - легко |
X = f-1(Y) - трудно |
Обычно "легко" означает, что проблема может быть решена за
полиномиальное время от длины входа. Таким образом, если длина входа
имеет n битов, то время вычисления функции пропорционально na, где а
- фиксированная константа. Таким образом, говорят, что алгоритм
принадлежит классу полиномиальных алгоритмов Р. Термин "трудно"
означает более сложное понятие. В общем случае будем считать, что
проблему решить невозможно, если усилия для ее решения больше
полиномиального времени от величины входа. Например, если длина входа n битов, и время вычисления функции пропорционально 2n, то это
считается вычислительно невозможной задачей. К сожалению, тяжело
определить, проявляет ли конкретный алгоритм такую сложность. Более
того, традиционные представления о вычислительной сложности
фокусируются на худшем случае или на среднем случае сложности
алгоритма. Это неприемлемо для криптографии, где требуется
невозможность инвертировать функцию для всех или почти всех значений
входов.
fk таких, что
Y = fk(X) - легко, если k и Х известны |
X = fk-1(Y) - легко, если k и Y известны |
Х = fk-1(Y) - трудно, если Y известно, но k неизвестно |
Мы видим, что разработка конкретного алгоритма с
Как и в случае
Другая форма атаки состоит в том, чтобы найти способ вычисления
Наконец, существует форма атаки, специфичная для способов
использования систем с
Основными способами использования алгоритмов с
Шифрование с
(рис 7.1) Шифрование с открытым ключомВ создает пару ключей KUb и KRb, используемых для
шифрования и В делает доступным некоторым надежным способом свой
ключ шифрования, т.е. KUb. Составляющий пару KRb держится в секрете.А хочет послать сообщение В, он шифрует сообщение, используя В KUb.В получает сообщение, он дешифрует его, используя свой KRb. Никто другой не сможет дешифровать сообщение, так
как этот В.Если пользователь (конечная система) надежно хранит свой
Создание и проверка подписи состоит из следующих шагов:
(рис 7.2) Создание и проверка подписиА создает пару ключей KRA и KUA, используемых для
создания и проверки подписи передаваемых сообщений.А делает доступным некоторым надежным способом свой
ключ проверки, т.е. KUA. Составляющий пару KRA держится в секрете.А хочет послать подписанное сообщение В, он создает подпись EKRa[M] для этого сообщения, используя свой KRA.В получает подписанное сообщение, он проверяет подпись DKUa[M], используя А KUA. Никто другой не может
подписать сообщение, так как этот А.До тех пор, пока пользователь или прикладная система надежно хранит
свой
Кроме того, невозможно изменить сообщение, не имея доступа к А ; тем самым обеспечивается аутентификация и
В этой схеме все сообщение подписывается, причем для подтверждения
целостности сообщения требуется много памяти. Каждое сообщение должно
храниться в незашифрованном виде для использования в практических
целях. Кроме того, копия сообщения также должна храниться в
зашифрованном виде, чтобы можно было проверить в случае необходимости
подпись. Более эффективным способом является шифрование небольшого
блока битов, который является функцией от сообщения. Такой блок,
называемый
Важно подчеркнуть, что описанный процесс создания подписи не
обеспечивает конфиденциальность. Это означает, что сообщение,
посланное таким способом, невозможно изменить, но можно подсмотреть.
Это очевидно в том случае, если подпись основана на аутентификаторе,
так как само сообщение передается в явном виде. Но даже если
осуществляется шифрование всего сообщения, конфиденциальность не
обеспечивается, так как любой может расшифровать сообщение, используя
Обмен ключей: две стороны взаимодействуют для обмена
Некоторые алгоритмы можно задействовать тремя способами, в то время как другие могут использоваться одним или двумя способами.
Перечислим наиболее популярные алгоритмы с
| Алгоритм | Шифрование / | | Обмен ключей |
|---|---|---|---|
| Да; непригоден для больших блоков | Да | Да | |
| Нет | Да | Нет | |
| Нет | Нет | Да |
Диффи и Хеллман определили новый подход к шифрованию, что вызвало к
жизни разработку
Алгоритм основан на использовании того факта, что
0 и n -1
для некоторого n
Алгоритм, разработанный Ривестом, Шамиром и Адлеманом, использует
выражения с n. Шифрование и
М и зашифрованного блока С.
С = Ме (mod n) M = Cd (mod n) = (Me)d (mod n) = Med (mod n)
Как отправитель, так и получатель должны знать значение n.
Отправитель знает значение е, получатель знает значение d. Таким
образом, KU = {e, n} и KR = {d,
n}. При этом должны выполняться следующие условия:
е, d и n такие, что Med = M mod n для
всех М < n.Ме и Сd для всех значений М < n.d, зная е и n.Сначала рассмотрим первое условие. Нам необходимо выполнение равенства:
Med = М (mod n)
Рассмотрим некоторые математические понятия, свойства и теоремы,
которые позволят нам определить e, d и n.
а и n
взаимнопростые, т.е gcd (a, n) = 1.Zp - все числа, взаимнопростые с p и меньшие p. Если p -
простое, то Zp - это все остатки. Обозначим w-1 такое число, что $$w x w^{-1} \equiv 1 mod p$$.Тогда $$\forall w \in Z_{p} \exists z: w x z \equiv 1 mod p$$
Доказательство этого следует из того, что т.к. w и p взаимнопростые,
то при умножении всех элементов Zp на w остатками будут все элементы Zp, возможно, переставленные. Таким образом, хотя бы один остаток
будет равен 1.
n и взаимнопростых с n. Если p -
простое, то $$\Phi (р) = p-1$$.Если p и q - простые, то $$\Phi (p \times q) = (p-1) \times (q-1)$$.
В этом случае Zp x q ={0, 1, ј, (p x q - 1)}.
Перечислим остатки, которые не являются взаимнопростыми с p x q:
{p, 2 x p, ј, (q-1) x p}
{q, 2 x q, ј, (p-1) x q}
0
Таким образом $$\Phi (p \times q) = p \times q - [(q-1) + (p-1) + 1] = p \times q - (p+q) + 1 = (p-1) \times (q-1)$$.
$$a^{n-1} \equiv 1 mod n$$, если n - простое.
Если все элементы Zn умножить на а по модулю n, то в результате
получим все элементы Zn, быть может, в другом порядке. Рассмотрим
следующие числа:
{a являются числами {1, 2, ј,
(n-1)}, быть может, в некотором другом порядке. Теперь перемножим по
модулю n числа из этих двух множеств.
n и (n-1)! являются взаимнопростыми, если n - простое, следовательно, $$a^{n-1} \equiv 1 mod n$$.
$$a^{\Phi (n)} \equiv 1 mod n$$ для всех взаимнопростых a и n.
Это верно, если n - простое, т.к. в этом случае $$\Phi (n) = n-1$$. Рассмотрим
множество $$R = {x_{1}, x_{2}, ј, x\Phi (n)}$$. Теперь умножим по модулю n каждый
элемент этого множества на a. Получим множество $$S = {a \times x_{1} mod n, a \times x_{2}mod n, ј, a \times x_{\Phi (n)} mod n}$$. Это множество является перестановкой
множества R по следующим причинам.
Так как а является взаимнопростым с n и xi являются взаимнопростыми с n, то a x xi также являются взаимнопростыми с n. Таким образом, S - это
множество целых, меньших n и взаимнопростых с n.
В S нет дублей, т.к. если a x xi .
Следовательно, перемножив элементы множеств S и R, получим:
Теперь рассмотрим сам p и q - простые.
n = p x q.
Надо доказать, что $$\forall M < n: M^{\Phi (n)} = M^{(p-1) x (q-1)} \equiv 1 mod n$$
Если , то соотношение выполняется. Теперь предположим,
что $$gcd (M, n) \ne 1$$, т.е. $$gcd (M, p x q) \ne 1$$. Пусть $$gcd (M, p) \ne 1$$, т.е. M = c x p => , так как в противном случае M = c x p и M =
l x q, но по условию M < p x q.
Следовательно,
$$M^{\Phi (q)} \equiv 1 mod q (M^{\Phi (q)})(p) \equiv 1 mod q M^{\Phi (n)} \equiv 1 mod q$$По определению модуля это означает, что $$M^{\Phi (n)} = 1 + k \times q$$. Умножим обе
части равенства на M = c x p. Получим
Или
$$M^{\Phi (n)+1} \equiv M mod n$$Таким образом, следует выбрать e и d такие, что $$е \times d \equiv 1 mod (n)$$
Или $$e \equiv d^{-1} mod \Phi (n)$$
e и d являются взаимнообратными по умножению по модулю $$\Phi (n)$$. Заметим,
что в соответствии с правилами модульной арифметики, это верно только
в том случае, если d (и следовательно, е ) являются взаимнопростыми с $$\Phi (n)$$. Таким образом, $$gcd (\Phi (n), d) = 1$$.
Теперь рассмотрим все элементы
p, q - два простых целых числа |
- открыто, вычисляемо. |
n = p x q |
- закрыто, вычисляемо. |
| $$d, gcd (\Phi (n), d) = 1;$$ | - открыто, выбираемо. |
| $$1 < d < \Phi (n)$$ | |
| $$е \equiv d^{-1} mod \Phi (n)$$ | - закрыты, выбираемы. |
{d, n}, {e, n}.
Предположим, что пользователь А опубликовал свой В хочет послать пользователю А сообщение М. Тогда В
вычисляет С = Ме ( и передает С. При получении этого
зашифрованного текста пользователь А дешифрует вычислением М = С d (.
Суммируем
Создание ключей
Выбрать простые р и q |
Вычислить n = p x q |
| Выбрать $$d gcd (\Phi (n), d) = 1; 1 < d < \Phi (n)$$ |
| Вычислить $$е е = d^{-1} mod \Phi (n)$$ |
KU = {e, n} |
KR = {d, n} |
Шифрование
Незашифрованный текст: М < n |
Зашифрованный текст: С = М е ( |
Дешифрование
Зашифрованный текст: С |
Незашифрованный текст: М = Сd ( |
Рассмотрим конкретный пример:
Выбрать два простых числа: р = 7, q = 17. |
Вычислить n = p x q = 7 x 17 = 119. |
| Вычислить $$\Phi (n) = (p - 1) \times (q - 1) = 96$$. |
Выбрать е так, чтобы е было взаимнопростым с $$\Phi (n) = 96$$ и меньше, чем $$\Phi (n): е = 5$$. |
Определить d так, чтобы $$d \times e \equiv 1 mod 96 и d < 96$$. |
d = 77, так как 77 x 5 = 385 = 4 x 96 + 1. |
Результирующие ключи KU = {5, 119} и KR = {77, 119}. |
Например, требуется зашифровать сообщение М = 19. |
195 = 66 (. |
Для 6677 (. |
Рассмотрим сложность вычислений в
Как шифрование, так и n. При этом промежуточные значения будут
громадными. Для того, чтобы частично этого избежать, используется
следующее свойство модульной арифметики:
[(a mod n) x (b mod n)] mod n = (a x b) mod n
Другая оптимизация состоит в эффективном использовании показателя
степени, так как в случае х16. Прямой подход требует 15
умножений. Однако можно добиться того же конечного результата с
помощью только четырех умножений, если использовать квадрат каждого
промежуточного результата: х2, х4, х8, х16.
Создание ключей включает следующие задачи:
р и q.е и вычислить d.Прежде всего, рассмотрим проблемы, связанные с выбором р и q. Так как
значение n = p x q будет известно любому потенциальному противнику, для
предотвращения раскрытия р и q эти простые числа должны быть выбраны
из достаточно большого множества, т.е. р и q должны быть большими
числами. С другой стороны, метод, используемый для поиска большого
простого числа, должен быть достаточно эффективным.
В настоящее время неизвестны алгоритмы, которые создают произвольно большие простые числа. Процедура, которая используется для этого, выбирает случайное нечетное число из требуемого диапазона и проверяет, является ли оно простым. Если число не является простым, то опять выбирается случайное число до тех пор, пока не будет найдено простое.
Были разработаны различные тесты для определения того, является ли
число простым. Это тесты вероятностные, то есть тест показывает, что
данное число вероятно является простым. Несмотря на это они могут
выполняться таким образом, что сделают вероятность близкой к 1. Если n "проваливает" тест, то оно не является простым. Если n "пропускает"
тест, то n может как быть, так и не быть простым. Если n пропускает
много таких тестов, то можно с высокой степенью достоверности
сказать, что n является простым. Это достаточно долгая процедура, но
она выполняется относительно редко: только при создании новой пары (KU, KR).
На сложность вычислений также влияет то, какое количество чисел будет
отвергнуто перед тем, как будет найдено простое число. Результат из
теории чисел, известный как теорема простого числа, говорит, что
простых чисел, расположенных около n в среднем одно на каждые ln (n)
чисел. Таким образом, в среднем требуется проверить
последовательность из ln (n) целых, прежде чем будет найдено простое
число. Так как все четные числа могут быть отвергнуты без проверки,
то требуется выполнить приблизительно ln (n)/2 проверок. Например,
если простое число ищется в диапазоне величин 2200, то необходимо
выполнить около ln (2200) / 2 = 70 проверок.
Выбрав простые числа р и q, далее следует выбрать значение е так,
чтобы $$gcd(\Phi (n), e) = 1$$ и вычислить значение d, $$d = e^{-1} mod \Phi (n)$$.
Cуществует единственный алгоритм, называемый расширенным алгоритмом
Евклида, который за фиксированное время вычисляет наибольший общий
0.6.
Можно определить четыре возможных подхода для
n на два простых сомножителя. Это даст возможность
вычислить $$\Phi (n) = (p-1) x (q-1) и d = e^{-1} (mod \Phi (n))$$.р и q.
Это также даст возможность определить $$d = e^{-1} (mod \Phi (n))$$.d непосредственно, без начального определения $$\Phi (n)$$.Защита от лобовой атаки для е и d, тем лучше. Однако, так как вычисления необходимы как при
создании ключей, так и при шифровании/
Большинство дискуссий о n на два простых сомножителя. В настоящее время неизвестны
алгоритмы, с помощью которых можно было бы разложить число на два
простых множителя для очень больших чисел (т.е. несколько сотен
десятичных цифр). Лучший из известных алгоритмов дает результат,
пропорциональный:
L (n) = esqrt (ln n * ln (ln n))
Пока не разработаны лучшие алгоритмы разложения числа на простые
множители, можно считать, что величина n от 100 до 200 цифр в
настоящее время является достаточно безопасной. На современном этапе
считается, что число из 100 цифр может быть разложено на множители за
время порядка двух недель. Для дорогих конфигураций (т.е. порядка $10
млн) число из 150 цифр может быть разложено приблизительно за год.
Разложение числа из 200 цифр находится за пределами вычислительных
возможностей. Например, даже если вычислительный уровень в 1012
операций в секунду достижим, что выше возможностей современных
технологий, то потребуется свыше 10 лет для разложения на множители
числа из 200 цифр с использованием существующих алгоритмов.
Для известных в настоящее время алгоритмов задача определения $$\Phi (n)$$ по
данным е и n, по крайней мере, сопоставима по времени с задачей
разложения числа на множители.
Для того чтобы избежать выбора значения n, которое могло бы легко
раскладываться на сомножители, на р и q должно быть наложено много
дополнительных ограничений: р и q должны друг от друга отличаться по
длине только несколькими цифрами. Таким образом, оба значения р и q
должны быть от 1075 до 10100.
Оба числа (р - 1) и (q - 1) должны содержать большой простой
сомножитель.
должен быть маленьким.
Первая публикация данного алгоритма
Цель алгоритма состоит в том, чтобы два участника могли безопасно
обменяться ключом, который в дальнейшем может использоваться в
каком-либо
Q как числа, чьи степени создают
все целые от 1 до Q - 1 А является Q, тогда числа
A
являются различными и состоят из целых от 1 до Q - 1 с некоторыми
перестановками. В этом случае для любого целого Y < Q и A простого числа Q можно найти единственную Х,
такую, что
Y = AХ mod Q, где 0 <= X <= (Q - 1)
X называется Y, по
основанию A . Это обозначается как
indA, Q (Y).
Теперь опишем алгоритм обмена ключей
| Общеизвестные элементы | |
|---|---|
Q |
простое число |
A |
A < Q и A является Q |
| Создание пары ключей пользователем I | |
|---|---|
Выбор случайного числа Хi ( |
Xi < Q |
Вычисление числа Yi ( |
Yi = AXi |
| Создание | |
|---|---|
Выбор случайного числа Хj ( |
Xj < Q |
Вычисление случайного числа Yj ( |
Yj = AXj |
| Создание общего |
|---|
K = (Yj)Xi |
| Создание общего |
|---|
K = (Yi)Xj |
Предполагается, что существуют два известных всем числа: простое
число Q и целое A, которое является Q. Теперь
предположим, что пользователи I и J хотят обменяться ключом для
I выбирает случайное
число Хi < Q и вычисляет Yi = AXi . Аналогично пользователь J
независимо выбирает случайное целое число Хj < Q и вычисляет Yj = AXj
. Каждая сторона держит значение Х в секрете и делает значение Y
доступным для другой стороны. Теперь пользователь I вычисляет ключ
как К = (Yj)Xi , и пользователь J вычисляет ключ как K = (Yi)Xj
. В результате оба получат одно и то же значение:
K = (Yj)Xi mod Q = (AXj mod Q)Xi mod Q = (AXj )Xi mod Q по правилам модульной арифметики = AXj Xi mod Q = (AXi )Xj mod Q = (AXi mod Q)Xj mod Q = (Yi)Xj mod Q
Таким образом, две стороны обменялись Хi и Хj являются закрытыми, противник может получить только следующие
значения: Q, A, Yi и Yj. Для вычисления ключа атакующий должен
взломать
Xj = inda, q (Yj)
Безопасность обмена ключа в
Следует заметить, что данный алгоритм уязвим для атак типа
"man-in-the-middle". Если противник может осуществить Yi и Yj, создать свою пару (Xоп, Yоп) и
послать каждому из участников свой
Создание
Первой задачей является
Второй задачей является необходимость создания таких механизмов, при
использовании которых невозможно было бы подменить кого-либо из
участников, т.е. нужна
Диффи и Хеллман достигли значительных результатов, предложив способ решения обеих задач, который радикально отличается от всех предыдущих подходов к шифрованию.
Сначала рассмотрим общие черты
Кроме того, некоторые алгоритмы, например
Сначала рассмотрим алгоритмы, обладающие обеими характеристиками, а
затем перейдем к алгоритмам
При описании KR, KU.
Будем предполагать, что все участники имеют доступ к
В любое время участник может изменить свой
Диффи и Хеллман описывают требования, которым должен удовлетворять
KU, KR ).М, создать соответствующее зашифрованное сообщение:С = ЕKU[М]
М = DKR[C] = DKR[EKU[M]]
KU, определить KR.KU и зашифрованное
сообщение С, восстановить исходное сообщение М.Можно добавить шестое требование, хотя оно не выполняется для всех
алгоритмов с
М = ЕKU[DKR[M]]
Это достаточно сильные требования, которые вводят понятие
Y = f(X) - легко |
X = f-1(Y) - трудно |
Обычно "легко" означает, что проблема может быть решена за
полиномиальное время от длины входа. Таким образом, если длина входа
имеет n битов, то время вычисления функции пропорционально na, где а
- фиксированная константа. Таким образом, говорят, что алгоритм
принадлежит классу полиномиальных алгоритмов Р. Термин "трудно"
означает более сложное понятие. В общем случае будем считать, что
проблему решить невозможно, если усилия для ее решения больше
полиномиального времени от величины входа. Например, если длина входа n битов, и время вычисления функции пропорционально 2n, то это
считается вычислительно невозможной задачей. К сожалению, тяжело
определить, проявляет ли конкретный алгоритм такую сложность. Более
того, традиционные представления о вычислительной сложности
фокусируются на худшем случае или на среднем случае сложности
алгоритма. Это неприемлемо для криптографии, где требуется
невозможность инвертировать функцию для всех или почти всех значений
входов.
fk таких, что
Y = fk(X) - легко, если k и Х известны |
X = fk-1(Y) - легко, если k и Y известны |
Х = fk-1(Y) - трудно, если Y известно, но k неизвестно |
Мы видим, что разработка конкретного алгоритма с
Как и в случае
Другая форма атаки состоит в том, чтобы найти способ вычисления
Наконец, существует форма атаки, специфичная для способов
использования систем с
Основными способами использования алгоритмов с
Шифрование с
(рис 7.1) Шифрование с открытым ключомВ создает пару ключей KUb и KRb, используемых для
шифрования и В делает доступным некоторым надежным способом свой
ключ шифрования, т.е. KUb. Составляющий пару KRb держится в секрете.А хочет послать сообщение В, он шифрует сообщение, используя В KUb.В получает сообщение, он дешифрует его, используя свой KRb. Никто другой не сможет дешифровать сообщение, так
как этот В.Если пользователь (конечная система) надежно хранит свой
Создание и проверка подписи состоит из следующих шагов:
(рис 7.2) Создание и проверка подписиА создает пару ключей KRA и KUA, используемых для
создания и проверки подписи передаваемых сообщений.А делает доступным некоторым надежным способом свой
ключ проверки, т.е. KUA. Составляющий пару KRA держится в секрете.А хочет послать подписанное сообщение В, он создает подпись EKRa[M] для этого сообщения, используя свой KRA.В получает подписанное сообщение, он проверяет подпись DKUa[M], используя А KUA. Никто другой не может
подписать сообщение, так как этот А.До тех пор, пока пользователь или прикладная система надежно хранит
свой
Кроме того, невозможно изменить сообщение, не имея доступа к А ; тем самым обеспечивается аутентификация и
В этой схеме все сообщение подписывается, причем для подтверждения
целостности сообщения требуется много памяти. Каждое сообщение должно
храниться в незашифрованном виде для использования в практических
целях. Кроме того, копия сообщения также должна храниться в
зашифрованном виде, чтобы можно было проверить в случае необходимости
подпись. Более эффективным способом является шифрование небольшого
блока битов, который является функцией от сообщения. Такой блок,
называемый
Важно подчеркнуть, что описанный процесс создания подписи не
обеспечивает конфиденциальность. Это означает, что сообщение,
посланное таким способом, невозможно изменить, но можно подсмотреть.
Это очевидно в том случае, если подпись основана на аутентификаторе,
так как само сообщение передается в явном виде. Но даже если
осуществляется шифрование всего сообщения, конфиденциальность не
обеспечивается, так как любой может расшифровать сообщение, используя
Обмен ключей: две стороны взаимодействуют для обмена
Некоторые алгоритмы можно задействовать тремя способами, в то время как другие могут использоваться одним или двумя способами.
Перечислим наиболее популярные алгоритмы с
| Алгоритм | Шифрование / | | Обмен ключей |
|---|---|---|---|
| Да; непригоден для больших блоков | Да | Да | |
| Нет | Да | Нет | |
| Нет | Нет | Да |
Диффи и Хеллман определили новый подход к шифрованию, что вызвало к
жизни разработку
Алгоритм основан на использовании того факта, что
0 и n -1
для некоторого n
Алгоритм, разработанный Ривестом, Шамиром и Адлеманом, использует
выражения с n. Шифрование и
М и зашифрованного блока С.
С = Ме (mod n) M = Cd (mod n) = (Me)d (mod n) = Med (mod n)
Как отправитель, так и получатель должны знать значение n.
Отправитель знает значение е, получатель знает значение d. Таким
образом, KU = {e, n} и KR = {d,
n}. При этом должны выполняться следующие условия:
е, d и n такие, что Med = M mod n для
всех М < n.Ме и Сd для всех значений М < n.d, зная е и n.Сначала рассмотрим первое условие. Нам необходимо выполнение равенства:
Med = М (mod n)
Рассмотрим некоторые математические понятия, свойства и теоремы,
которые позволят нам определить e, d и n.
а и n
взаимнопростые, т.е gcd (a, n) = 1.Zp - все числа, взаимнопростые с p и меньшие p. Если p -
простое, то Zp - это все остатки. Обозначим w-1 такое число, что $$w x w^{-1} \equiv 1 mod p$$.Тогда $$\forall w \in Z_{p} \exists z: w x z \equiv 1 mod p$$
Доказательство этого следует из того, что т.к. w и p взаимнопростые,
то при умножении всех элементов Zp на w остатками будут все элементы Zp, возможно, переставленные. Таким образом, хотя бы один остаток
будет равен 1.
n и взаимнопростых с n. Если p -
простое, то $$\Phi (р) = p-1$$.Если p и q - простые, то $$\Phi (p \times q) = (p-1) \times (q-1)$$.
В этом случае Zp x q ={0, 1, ј, (p x q - 1)}.
Перечислим остатки, которые не являются взаимнопростыми с p x q:
{p, 2 x p, ј, (q-1) x p}
{q, 2 x q, ј, (p-1) x q}
0
Таким образом $$\Phi (p \times q) = p \times q - [(q-1) + (p-1) + 1] = p \times q - (p+q) + 1 = (p-1) \times (q-1)$$.
$$a^{n-1} \equiv 1 mod n$$, если n - простое.
Если все элементы Zn умножить на а по модулю n, то в результате
получим все элементы Zn, быть может, в другом порядке. Рассмотрим
следующие числа:
{a являются числами {1, 2, ј,
(n-1)}, быть может, в некотором другом порядке. Теперь перемножим по
модулю n числа из этих двух множеств.
n и (n-1)! являются взаимнопростыми, если n - простое, следовательно, $$a^{n-1} \equiv 1 mod n$$.
$$a^{\Phi (n)} \equiv 1 mod n$$ для всех взаимнопростых a и n.
Это верно, если n - простое, т.к. в этом случае $$\Phi (n) = n-1$$. Рассмотрим
множество $$R = {x_{1}, x_{2}, ј, x\Phi (n)}$$. Теперь умножим по модулю n каждый
элемент этого множества на a. Получим множество $$S = {a \times x_{1} mod n, a \times x_{2}mod n, ј, a \times x_{\Phi (n)} mod n}$$. Это множество является перестановкой
множества R по следующим причинам.
Так как а является взаимнопростым с n и xi являются взаимнопростыми с n, то a x xi также являются взаимнопростыми с n. Таким образом, S - это
множество целых, меньших n и взаимнопростых с n.
В S нет дублей, т.к. если a x xi .
Следовательно, перемножив элементы множеств S и R, получим:
Теперь рассмотрим сам p и q - простые.
n = p x q.
Надо доказать, что $$\forall M < n: M^{\Phi (n)} = M^{(p-1) x (q-1)} \equiv 1 mod n$$
Если , то соотношение выполняется. Теперь предположим,
что $$gcd (M, n) \ne 1$$, т.е. $$gcd (M, p x q) \ne 1$$. Пусть $$gcd (M, p) \ne 1$$, т.е. M = c x p => , так как в противном случае M = c x p и M =
l x q, но по условию M < p x q.
Следовательно,
$$M^{\Phi (q)} \equiv 1 mod q (M^{\Phi (q)})(p) \equiv 1 mod q M^{\Phi (n)} \equiv 1 mod q$$По определению модуля это означает, что $$M^{\Phi (n)} = 1 + k \times q$$. Умножим обе
части равенства на M = c x p. Получим
Или
$$M^{\Phi (n)+1} \equiv M mod n$$Таким образом, следует выбрать e и d такие, что $$е \times d \equiv 1 mod (n)$$
Или $$e \equiv d^{-1} mod \Phi (n)$$
e и d являются взаимнообратными по умножению по модулю $$\Phi (n)$$. Заметим,
что в соответствии с правилами модульной арифметики, это верно только
в том случае, если d (и следовательно, е ) являются взаимнопростыми с $$\Phi (n)$$. Таким образом, $$gcd (\Phi (n), d) = 1$$.
Теперь рассмотрим все элементы
p, q - два простых целых числа |
- открыто, вычисляемо. |
n = p x q |
- закрыто, вычисляемо. |
| $$d, gcd (\Phi (n), d) = 1;$$ | - открыто, выбираемо. |
| $$1 < d < \Phi (n)$$ | |
| $$е \equiv d^{-1} mod \Phi (n)$$ | - закрыты, выбираемы. |
{d, n}, {e, n}.
Предположим, что пользователь А опубликовал свой В хочет послать пользователю А сообщение М. Тогда В
вычисляет С = Ме ( и передает С. При получении этого
зашифрованного текста пользователь А дешифрует вычислением М = С d (.
Суммируем
Создание ключей
Выбрать простые р и q |
Вычислить n = p x q |
| Выбрать $$d gcd (\Phi (n), d) = 1; 1 < d < \Phi (n)$$ |
| Вычислить $$е е = d^{-1} mod \Phi (n)$$ |
KU = {e, n} |
KR = {d, n} |
Шифрование
Незашифрованный текст: М < n |
Зашифрованный текст: С = М е ( |
Дешифрование
Зашифрованный текст: С |
Незашифрованный текст: М = Сd ( |
Рассмотрим конкретный пример:
Выбрать два простых числа: р = 7, q = 17. |
Вычислить n = p x q = 7 x 17 = 119. |
| Вычислить $$\Phi (n) = (p - 1) \times (q - 1) = 96$$. |
Выбрать е так, чтобы е было взаимнопростым с $$\Phi (n) = 96$$ и меньше, чем $$\Phi (n): е = 5$$. |
Определить d так, чтобы $$d \times e \equiv 1 mod 96 и d < 96$$. |
d = 77, так как 77 x 5 = 385 = 4 x 96 + 1. |
Результирующие ключи KU = {5, 119} и KR = {77, 119}. |
Например, требуется зашифровать сообщение М = 19. |
195 = 66 (. |
Для 6677 (. |
Рассмотрим сложность вычислений в
Как шифрование, так и n. При этом промежуточные значения будут
громадными. Для того, чтобы частично этого избежать, используется
следующее свойство модульной арифметики:
[(a mod n) x (b mod n)] mod n = (a x b) mod n
Другая оптимизация состоит в эффективном использовании показателя
степени, так как в случае х16. Прямой подход требует 15
умножений. Однако можно добиться того же конечного результата с
помощью только четырех умножений, если использовать квадрат каждого
промежуточного результата: х2, х4, х8, х16.
Создание ключей включает следующие задачи:
р и q.е и вычислить d.Прежде всего, рассмотрим проблемы, связанные с выбором р и q. Так как
значение n = p x q будет известно любому потенциальному противнику, для
предотвращения раскрытия р и q эти простые числа должны быть выбраны
из достаточно большого множества, т.е. р и q должны быть большими
числами. С другой стороны, метод, используемый для поиска большого
простого числа, должен быть достаточно эффективным.
В настоящее время неизвестны алгоритмы, которые создают произвольно большие простые числа. Процедура, которая используется для этого, выбирает случайное нечетное число из требуемого диапазона и проверяет, является ли оно простым. Если число не является простым, то опять выбирается случайное число до тех пор, пока не будет найдено простое.
Были разработаны различные тесты для определения того, является ли
число простым. Это тесты вероятностные, то есть тест показывает, что
данное число вероятно является простым. Несмотря на это они могут
выполняться таким образом, что сделают вероятность близкой к 1. Если n "проваливает" тест, то оно не является простым. Если n "пропускает"
тест, то n может как быть, так и не быть простым. Если n пропускает
много таких тестов, то можно с высокой степенью достоверности
сказать, что n является простым. Это достаточно долгая процедура, но
она выполняется относительно редко: только при создании новой пары (KU, KR).
На сложность вычислений также влияет то, какое количество чисел будет
отвергнуто перед тем, как будет найдено простое число. Результат из
теории чисел, известный как теорема простого числа, говорит, что
простых чисел, расположенных около n в среднем одно на каждые ln (n)
чисел. Таким образом, в среднем требуется проверить
последовательность из ln (n) целых, прежде чем будет найдено простое
число. Так как все четные числа могут быть отвергнуты без проверки,
то требуется выполнить приблизительно ln (n)/2 проверок. Например,
если простое число ищется в диапазоне величин 2200, то необходимо
выполнить около ln (2200) / 2 = 70 проверок.
Выбрав простые числа р и q, далее следует выбрать значение е так,
чтобы $$gcd(\Phi (n), e) = 1$$ и вычислить значение d, $$d = e^{-1} mod \Phi (n)$$.
Cуществует единственный алгоритм, называемый расширенным алгоритмом
Евклида, который за фиксированное время вычисляет наибольший общий
0.6.
Можно определить четыре возможных подхода для
n на два простых сомножителя. Это даст возможность
вычислить $$\Phi (n) = (p-1) x (q-1) и d = e^{-1} (mod \Phi (n))$$.р и q.
Это также даст возможность определить $$d = e^{-1} (mod \Phi (n))$$.d непосредственно, без начального определения $$\Phi (n)$$.Защита от лобовой атаки для е и d, тем лучше. Однако, так как вычисления необходимы как при
создании ключей, так и при шифровании/
Большинство дискуссий о n на два простых сомножителя. В настоящее время неизвестны
алгоритмы, с помощью которых можно было бы разложить число на два
простых множителя для очень больших чисел (т.е. несколько сотен
десятичных цифр). Лучший из известных алгоритмов дает результат,
пропорциональный:
L (n) = esqrt (ln n * ln (ln n))
Пока не разработаны лучшие алгоритмы разложения числа на простые
множители, можно считать, что величина n от 100 до 200 цифр в
настоящее время является достаточно безопасной. На современном этапе
считается, что число из 100 цифр может быть разложено на множители за
время порядка двух недель. Для дорогих конфигураций (т.е. порядка $10
млн) число из 150 цифр может быть разложено приблизительно за год.
Разложение числа из 200 цифр находится за пределами вычислительных
возможностей. Например, даже если вычислительный уровень в 1012
операций в секунду достижим, что выше возможностей современных
технологий, то потребуется свыше 10 лет для разложения на множители
числа из 200 цифр с использованием существующих алгоритмов.
Для известных в настоящее время алгоритмов задача определения $$\Phi (n)$$ по
данным е и n, по крайней мере, сопоставима по времени с задачей
разложения числа на множители.
Для того чтобы избежать выбора значения n, которое могло бы легко
раскладываться на сомножители, на р и q должно быть наложено много
дополнительных ограничений: р и q должны друг от друга отличаться по
длине только несколькими цифрами. Таким образом, оба значения р и q
должны быть от 1075 до 10100.
Оба числа (р - 1) и (q - 1) должны содержать большой простой
сомножитель.
должен быть маленьким.
Первая публикация данного алгоритма
Цель алгоритма состоит в том, чтобы два участника могли безопасно
обменяться ключом, который в дальнейшем может использоваться в
каком-либо
Q как числа, чьи степени создают
все целые от 1 до Q - 1 А является Q, тогда числа
A
являются различными и состоят из целых от 1 до Q - 1 с некоторыми
перестановками. В этом случае для любого целого Y < Q и A простого числа Q можно найти единственную Х,
такую, что
Y = AХ mod Q, где 0 <= X <= (Q - 1)
X называется Y, по
основанию A . Это обозначается как
indA, Q (Y).
Теперь опишем алгоритм обмена ключей
| Общеизвестные элементы | |
|---|---|
Q |
простое число |
A |
A < Q и A является Q |
| Создание пары ключей пользователем I | |
|---|---|
Выбор случайного числа Хi ( |
Xi < Q |
Вычисление числа Yi ( |
Yi = AXi |
| Создание | |
|---|---|
Выбор случайного числа Хj ( |
Xj < Q |
Вычисление случайного числа Yj ( |
Yj = AXj |
| Создание общего |
|---|
K = (Yj)Xi |
| Создание общего |
|---|
K = (Yi)Xj |
Предполагается, что существуют два известных всем числа: простое
число Q и целое A, которое является Q. Теперь
предположим, что пользователи I и J хотят обменяться ключом для
I выбирает случайное
число Хi < Q и вычисляет Yi = AXi . Аналогично пользователь J
независимо выбирает случайное целое число Хj < Q и вычисляет Yj = AXj
. Каждая сторона держит значение Х в секрете и делает значение Y
доступным для другой стороны. Теперь пользователь I вычисляет ключ
как К = (Yj)Xi , и пользователь J вычисляет ключ как K = (Yi)Xj
. В результате оба получат одно и то же значение:
K = (Yj)Xi mod Q = (AXj mod Q)Xi mod Q = (AXj )Xi mod Q по правилам модульной арифметики = AXj Xi mod Q = (AXi )Xj mod Q = (AXi mod Q)Xj mod Q = (Yi)Xj mod Q
Таким образом, две стороны обменялись Хi и Хj являются закрытыми, противник может получить только следующие
значения: Q, A, Yi и Yj. Для вычисления ключа атакующий должен
взломать
Xj = inda, q (Yj)
Безопасность обмена ключа в
Следует заметить, что данный алгоритм уязвим для атак типа
"man-in-the-middle". Если противник может осуществить Yi и Yj, создать свою пару (Xоп, Yоп) и
послать каждому из участников свой
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.