Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 [ 5 ] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

n. Тренту известны два простых множителя n, и, следовательно, он может легко вычислять квадратные корни по модулю n. Следующий протокол не содержит некоторых деталей, но позволяет получить общее представление .

(1) Алиса выбирает случайное число rA и посылает Тренту rA3 mod n

(2) Трент сообщает Бобу, что кто-то хочет обменяться с ним ключом .

(3) Боб выбирает случайное число rB и посылает Тренту Гд3 mod n

(4) Трент, используя свой закрытый ключ, расшифровывает rA и гд. Он посылает Алисе Га ® Гд

(5) Алиса вычисляет

(Га ® Гд) ® Га = Гд

Она использует гд для безопасного сеанса связи с Бобом.

Протокол выглядит хорошо, но содержит заметный изъян. Кэрол может подслушать этап(3) и использовать эту информацию, воспользовавшись помощью доверчивого Трента и своего сообщника Дэйва, чтобы раскрыть [1472].

(1) Кэрол выбирает случайное число Гс и посылает Тренту гд3 гс3 mod n

(2) Трент сообщает Дэйву, что кто-то хочет обменяться с ним ключом .

(3) Дэйв выбирает случайное число rD и посылает Тренту rD mod n

(4) Трент, используя свой закрытый ключ, расшифровывает rc и rD. Он посылает Кэрол (гд Гс mod n) ® rD

(5) Дэйв посылает rD Кэрол.

(6) Кэрол использует rC и rD для получения гд. Она использует гд для расшифровывания переговоров Алисы и Боба.

Это плохо.



Глава 23

Специальные алгоритмы для протоколов

23.1 Криптография с несколькими открытыми ключами

Это обобщение RSA (см. раздел 19.3) [217, 212]. Модуль n является произведением двух простых чисел p и q. Однако вместо e и d, для которых ed = 1 mod ((p-1)(q-1)), выбирается t ключей K,, для которых выполняется

K1* K2*. . . *Kt = 1 mod ((p-1)(q-1))

Так как

MK1*K2*...*Kt = M

то эта схема оказывается схемой с несколькими ключами, описанная в разделе 3.5.

Если, например, используется пять ключей, то сообщение, зашифрованное ключами K3 и K5, может быть расшифровано с помощью K1, K2 и K4.

C = MK3*K5 mod n

M = cK1*K2*K4 mod n

Одним из применений этой схемы является подписание документа несколькими людьми . Представим ситуацию, когда для того, чтобы документ был действителен, он должен быть подписан и Алисой, и Бобом . Используются три ключа: K1, K2 и K3. Алиса и Боб получают по одному ключу из первых двух, а третий опубликовывается.

(1) Сначала Алиса подписывает M и посылает его Бобу. M = MK1 mod n

(2) Боб может восстановить M по M. M = M K3*K5 mod n

(3) Он может также добавить свою подпись. M = MK2 mod n

(4) Проверить подписи можно при помощи открытого ключа K3. M = M "K3 mod n

Обратите внимание, что для работоспособности этой системы нужна заслуживающая доверия сторона, кот о-рая установила бы систему и выдала ключи Алисе и Бобу . Та же проблема существует и в схеме [484]. Более тонкая схема описана в [695, 830, 700], Но усилия, предпринимаемые для проверки, пропорциональны колич е-ству подписывающих. Новые схемы [220, 1200], основанные на схемах идентификации с нулевым знанием, преодолевают эти недостатки предшествующих си стем.

23.2 Алгоритмы разделения секрета

В разделе 3.7 я рассматривал идею, используемую в схемах разделения секрета. Четыре приведенных ниже различных алгоритма представляют собой частные случаи общего теоретического подхода [883].

Схема интерполяционных многочленов Лагранжа

Для создания пороговой схема Ади Шамир воспользовался уравнениями для многочленов в конечном поле [1414]. Выберем простое число p, которое больше количества возможных теней и больше самого большого из возможных секретов. Чтобы сделать секрет общим, сгенерируем произвольный многочлен степени Например, если нужно создать пороговую схему (3,n) (для восстановления M потребуется три тени), генерируется квадратичный многочлен

(ax2 + bx + M) mod p

где p - это случайное простое число, большее любого из коэффициентов. Коэффициенты a и b выбираются случайным образом, они хранятся в тайне и отбрасываются после того, как распределяются тени . M - это сообщение. Простое число должно быть опубликовано. Тени получаются с помощью вычисления многочлена в n различных точках:



k, =F(x,)

Другими словами, первой тенью может быть значение многочлена при x = 1, второй тенью - значение многочлена при x = 2, и т.д.

Так как в квадратичных многочленах три неизвестных коэффициента, a, b и M, для создания трех уравнений можно использовать любые три цели . Одной или двух теней не хватит, а четырех или пяти теней будет много .

Например, пусть M равно 11. Чтобы создать пороговую схему (3, 5), в которой любые трое из пяти человек могут восстановить M, сначала получим квадратичное уравнение (7 и 8 - случайно выбранные числа chosen randomly):

F(x) = (7x 2 + 5x + 11) mod 13 Пятью тенями являются: k1 = = 7 + 8 + 11= 0 (mod 13) k2 = F(2) = 28 + 16 + 11= 3 (mod 13) k3 = F(3) = 63 + 24 + 11= 7 (mod 13) k4 = F(4) = 112 + 32 + 11= 12 (mod 13) k5 = F(5) = 175 + 40 + 11= 5 (mod 13)

Чтобы восстановить M по трем теням, например, k2, k3 и k5, решается система линейных уравнений: a*22 + b*2 + M = 3 (mod 13) a*32 + b*3 + M = 7 (mod 13) a*52 + b*5 + M = 5 (mod 13)

Решением будут a = 7, b = 8 и M = 11. Итак, M получено.

Эту схему разделения можно легко реализовать для больших чисел . Если вы хотите разбить сообщение на 30 равных частей так, чтобы восстановить сообщение можно было, объединив любые шесть из них , выдайте каждому из 30 человек значения многочлена пятой степени .

F(x) = ax5 + bx4 + cx3 + dx2 + ex + M (mod ,p)

Шесть человек могут шесть неизвестных (включая M), но пятерым не удастся узнать ничего об M.

Наиболее впечатляющим моментом совместного использования секрета является то, что, если коэффицие н-ты выбраны случайным образом, пять человек даже при помощи бесконечных вычислительных мощностей не смогут узнать ничего, кроме длины сообщения (которая и так им известна) . Это также безопасно, как одноразовый блокнот, попытка выполнить исчерпывающий поиск (то есть, перебор всех возможных шестых теней) покажет, что любое возможное сообщение останется секретным . Это справедливо для всех представленных в этой книге схем разделения секр ета.

Векторная схема

Джордж Блэкли (George Blakley) изобрел схему, использующую понятие точек в пространстве [182]. Сообщение определяется как точка в т-мерном пространстве. Каждая тень - это уравнение (от-1)-мерной гиперплоскости, содержащей эту точку.

Например, если для восстановления сообщения нужны три тени, то оно является точкой в трехмерном пр о-странстве. Каждая тень представляет собой иную плоскость. Зная одну тень, можно утверждать, что точка находится где-то на плоскости. Зная две тени - что она находится где-то на линии пересечения двух плоскостей . Зная три тени, можно точно определить, что точка находится на пересечении трех плоскостей .

Asmuth-Bloom

В этой схеме используются простые числа [65]. Для (т, п)-пороговой схемы выбирается большое простое число p, большее M. Затем выбираются числа, меньшие p - d1, d2, . . . dn, для которых:

1. Значения d,- упорядочены по возрастанию, d,- < d,+1

2. Каждое d, взаимно просто с любым другим d,

3. d1*d2* . . .*d„ > ,p*dn-„+2*dn-„+3*. . .*dn

Чтобы распределить тени, сначала выбирается случайное число r и вычисляется



0 1 2 3 4 [ 5 ] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25