Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Эл-ты_криптологии-лек.doc
Скачиваний:
24
Добавлен:
24.11.2019
Размер:
757.76 Кб
Скачать

3.3. Шифр Шамира

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

Пусть абонент А должен передать абоненту В секретное сообщение m. А выбирает случайное большое простое число p и открыто передает его абоненту В. Затем абонент А выбирает два числа cA и dA такие, что

cAdA mod (p1) = 1. (3.10)

Эти числа А держит в секрете. Абонент В тоже выбирает два секретных числа cB и dB такие, что

cBdB mod (p1) = 1. (3.11)

После этого А передает свое сообщение m, используя трехступенчатый протокол (см. ниже). При этом, если m<p (m рассматривается как число), то сообщение m передается целиком, иначе оно представляется в виде m = m1 m2 ... mt и каждая часть mi < p передается отдельно. Для кодирования каждой части mi лучше выбирать случайно новые пары (cAdA) и (cBdB); в противном случае надежность системы понижается.

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

Протокол шифра Шамира имеет вид:

Шаг 1. А вычисляет число x1 = mod p и передает его абоненту В.

Шаг 2. B вычисляет число x2 = mod p и передает его абоненту А.

Шаг 3. А вычисляет число x3 = mod p и передает его абоненту В.

Шаг 4. В вычисляет число x4 = mod p.

Обратите внимание на то, что в данном случае симметричный секретный ключ не используется.

Свойства шифра Шамира:

  • x4 = m, то есть в результате реализации протокола от А к В действительно передается сообщение m;

  • противник не может узнать, какое сообщение было передано.

Докажем, что шифр Шамира действительно обладает указанными свойствами.

Нам понадобятся два факта из теории чисел.

Теорема 3.1. (Ферма). Пусть p – простое число и 0< a < p. Тогда ap1 mod p = 1.

Теорема 3.2. Пусть a и b – два целых положительных числа. Тогда существуют целые числа x и y (не обязательно положительные) такие, что

ax + by = НОД(a, b) (3.12)

(НОД  наибольший общий делитель; иногда вместо аббревиатуры НОД используют gcd – аббревиатура для greatest common diviso).

Вторая теорема является основой для обобщенного алгоритма Евклида отыскания НОД(a, b) и чисел x и y ему соответствующих по формуле (3.12). Рассмотрим этот алгоритм.

Введем три строки U = (u1,u2, u3), V = (v1,v2, v3), T = (t1,t2, t3). Алгоритм записывается так (псевдокоды):

ВХОД: положительные числа a и b, a > b.

ВЫХОД: НОД(a, b), x, y, удовлетворяющие (3.12).

U:=(a,1,0); V:=(b,0,1);

WHILE v1  0 DO

BEGIN

q := u1 div v1;

T := (u1 mod v1, u2-qv2, u3-qv3);

U := V; V := T;

END;

RETURN U = (НОД(a,b), x, y).

Вернемся к анализу шифра Шамира. Учтем, что любое целое число е  0 может быть представлено в виде е = k(p – 1) + r, где r = е mod (p – 1). Поэтому на основании теоремы Ферма получим:

x

(*)

e mod p = xk(p – 1) + r mod p = ((x(p – 1))kxr) mod p = = {по теореме Ферма x(p – 1) = 1 mod p } = (1kxr) mod p = xe mod (p – 1) mod p.

С учетом полученного равенства можно подтвердить справедливость первого свойства шифра Шамира:

x4 = mod p = mod p = mod p = mod p = = mod p = {используем (*)} = mod p = m.

Последний переход осуществляется на основании (3.10) и (3.11), а также на основании свойства: "сравнения по модулю можно почленно перемножать:

{cAdA = 1 mod p; cВdВ = 1 mod p}  {cAdAcВdВ = 11 mod p}"

Доказательство второго свойства шифра Шамира основано на предположении, что для злоумышленника, пытающегося определить m, не существует стратегии более эффективной, чем следующая (предполагается, что открытые числа x1, x2, и x3 противнику известны).

Вначале он вычисляет cB из второго шага протокола, затем находит dB, используя (3.11), и, наконец, по формуле четвертого шага протокола вычисляет x4 = m. Но для выполнения этой программы противник должен решить задачу дискретного логарифмирования выражения из второго шага протокола, которая, при соответствующем подборе модуля p, за приемлемое время не решается.

Рассмотрим теперь способ получения чисел cA, dA, cB, dB, удовлетворяющих соотношениям (3.10) и (3.11). Рассмотрим этот способ на примере чисел cA, dA.

Число cA выбираем случайно, так, чтобы оно было взаимно простым с (p – 1) (лучше брать нечетное число). Затем вычисляем dA с помощью обобщенного алгоритма Евклида. Поясним схему таких вычислений.

Пусть при заданных взаимно простых числах c и m требуется найти такое d, что

cd mod m = 1 (*1)

Вначале введем понятие инверсии числа.

Определение: число d, удовлетворяющее (*1), называется инверсией c по модулю m и обозначается c1 mod m.

Приведенное обозначение выглядит вполне естественно, так как (*1) можно переписать в виде:

cc1 mod m = 1 .

Умножение на c1 соответствует делению на c при условии, что результат оценивается по модулю m. По аналогии можно ввести произвольные отрицательные степени при вычислении по модулю m:

ce = (ce)1 = (c1)e mod m.

Примеры.

1). 34 mod 11 = 1, следовательно, число 4 является инверсией числа 3 по модулю 11: 31 mod 11 = 4.

2). Число 52 mod 11 может быть получено двумя способами:

  • 52 mod 11 = (52 mod 11)1 = 31 mod 11 = 4;

  • 52 mod 11 = (51 mod 11)2 = 92 mod 11 = 4.

В последнем случае использовано равенство: 51 mod 11 = 9. Действительно: 59 mod 11 = 45 mod 11 = 1.

Итак, в рассматриваемой задаче нам необходимо найти число d, то есть инверсию числа c. Равенство (*1) означает, что для некоторого целого k справедливо:

cdkm = 1.

Учитывая, c и m взаимно просты, перепишем это равенство в виде

m(k) + cd = НОД(m,c) (*2)

Эта форма полностью аналогична форме (3.12), которая используется в обобщенном алгоритме Евклида. Поэтому для вычисления c1 mod m нужно применить обобщенный алгоритм Евклида для решения уравнения (*2). При этом, поскольку число k нас не интересует, то можно не вычислять вторые компоненты строк U, V, T. Кроме того, если число d окажется отрицательным, то к нему нужно прибавить число, кратное m, поскольку по определению любое число a mod m берется из множества {0, 1, ..., m–1}.