Криптография с открытым ключом - of PDMI...

128
Классические протоколы О решетках Криптография с открытым ключом Сергей Николенко Computer Science Club, 2015 Сергей Николенко Криптография с открытым ключом

Transcript of Криптография с открытым ключом - of PDMI...

Page 1: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

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

Сергей Николенко

Computer Science Club, 2015

Сергей Николенко Криптография с открытым ключом

Page 2: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Outline

1 Классические протоколыRSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

2 О решеткахАлгоритм LLLРешётки на службе криптографии

Сергей Николенко Криптография с открытым ключом

Page 3: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Принцип работы

У каждого участника — два ключа, секретный ипубличный.

Сергей Николенко Криптография с открытым ключом

Page 4: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: история

1973: Clifford Cocks изобрёл RSA, но не опубликовал(работал на разведку).

1978: Ron Rivest, Adi Shamir, Leonard Adleman.

1983: MIT получил патент на RSA; срок действия истекал в2003, но в 2000 алгоритм уже был вынесен в public domain.

Идея — кодировать сообщения так, чтобы раскодированиеих опиралось на какую-нибудь сложную вычислительнуюпроблему.

Сергей Николенко Криптография с открытым ключом

Page 5: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: ключи

Алгоритм генерации ключей.1 Сгенерировать два больших случайных различных простых

числа p и q примерно одного размера.2 Вычислить n = pq и φ = (p − 1)(q − 1).3 Выбрать случайное число 1 < e < φ, взаимно простое с φ.4 Алгоритмом Евклида найти d ≡ e−1 (mod φ).5 Выдать (n, e) как публичный ключ; сохранить d как

секретный ключ.

Сергей Николенко Криптография с открытым ключом

Page 6: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: кодирование и декодирование

Кодирование (сообщения m с публичным ключом (n, e)).1 Представить сообщение как число 0 ≤ m ≤ n − 1.2 Вычислить c = me (mod n) и выдать c как код.

Декодирование.1 Вычислить m = cd (mod n).

Почему декодирование работает?

Сергей Николенко Криптография с открытым ключом

Page 7: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: кодирование и декодирование

Кодирование (сообщения m с публичным ключом (n, e)).1 Представить сообщение как число 0 ≤ m ≤ n − 1.2 Вычислить c = me (mod n) и выдать c как код.

Декодирование.1 Вычислить m = cd (mod n).

Почему декодирование работает?

Потому что

cd ≡ med (mod n), и, т.к. ed = 1+ kφ,

med ≡ m1+kφ ≡ m (mod n).

Сергей Николенко Криптография с открытым ключом

Page 8: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: простые числа

Мы тут всё умеем делать, кроме одного: как искатьпростые числа?

Если проверять n на простоту, деля на все числа до√

n,ишак умрёт первым.

Нам поможет малая теорема Ферма: для простого p илюбого 0 < a < p

ap−1 ≡ 1 (mod p).

Как она может нам помочь?

Сергей Николенко Криптография с открытым ключом

Page 9: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: простые числа

Идея: будем выбирать случайные числа a < n и проверять,верно ли, что

an−1 ≡ 1 (mod n).

Если нет, то n точно составное. Если да, то n, скореевсего, простое.

Если n и a выбраны случайно, то вероятность того, что nсоставное, но an−1 ≡ 1 (mod n), около 10−13.

Но всё-таки бывает; хуже того, бывают числа Кармайкла(Carmichael numbers), которые не являются простыми, нопри этом для всех a верно an−1 ≡ 1 (mod n).

Придётся чуть модифицировать.

Сергей Николенко Криптография с открытым ключом

Page 10: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: простые числа

Тест Миллера-Рабина: выразим n − 1 = 2bc , деля пополам.Теперь будем брать случайные a и вычислять сначала ac , апотом последовательно возводить в квадрат.Если ac 6≡ 1 (mod n), но an−1 ≡ 1 (mod n), значит, накаком-то шаге мы нашли число, которое не сравнимо с 1, аего квадрат — сравним.Если это число не сравнимо с −1, то мы нашлинетривиальный квадратный корень из 1; следовательно, nсоставное.Этот алгоритм для составных n выявляет этот факт свероятностью 3

4 (по a).Ту же идею можно использовать так, чтобы получилсяалгоритм вычисления квадратного корня не из 1, а изпроизвольного числа (упражнение).

Сергей Николенко Криптография с открытым ключом

Page 11: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Во-первых, если уметь раскладывать числа на множители,то RSA решить легко (можно вычислить секретный ключтак же, как при генерации ключей).Во-вторых, если враг получит секретный ключ d , онсможет разложить n на множители: т.к. ed ≡ 1 (mod φ),то ed − 1 = kφ, и aed−1 ≡ 1 (mod n) для всех a. Выразимed − 1 = 2st для нечётного t.Факт: существует 1 ≤ i ≤ s, для которого

a2i−1t 6≡ ±1 (mod n), но a2i t ≡ 1 (mod n)

для по крайней мере половины a ∈ Z∗n.Врагу достаточно выбирать a случайно, искать такой i , икак только найдёт, gcd(a2i−1t , n) будет нетривиальнымделителем n.

Сергей Николенко Криптография с открытым ключом

Page 12: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Иначе говоря, разложение n на множители вычислительноэквивалентно тому, чтобы найти секретный ключ d вкриптосистеме RSA.

Но на самом деле врагу не надо искать d , ему надораскодировать сообщение.

RSA problem: по данным n, e и c найти такое m, чтоme ≡ c (mod n).

То есть вычислить корень e-й степени по составномумодулю n.

Считается, что эта задача тоже вычислительно сложна, ноне известно, эквивалентна ли она разложению n намножители.

Теперь перейдём к более конкретным проблемам RSA.

Сергей Николенко Криптография с открытым ключом

Page 13: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Какие должны быть простые числа p и q?

Во-первых, p и q не должны быть слишком маленькими(примерно одной длины в битах), иначе быстрыеалгоритмы станут ещё быстрее.

Но, во-вторых, p и q не должны быть слишком близкидруг к другу; иначе можно перебирать числа около

√n.

Сильные простые числа (strong primes): p — сильноепростое, если

у p − 1 есть большой простой делитель r ;у p + 1 есть большой простой делитель;у r − 1 есть большой простой делитель.

Сергей Николенко Криптография с открытым ключом

Page 14: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Какой выбирать e? Оказывается, что стойкость RSA от eне зависит.

Поэтому часто выбирают e = 3 или e = 65537, чтобы легчебыло кодировать (2 и 17 умножений соответственно).

Т.е. можно просто выбрать такие p и q, чтобы(p − 1)(q − 1) не делилось на 3, а потом взять e = 3.

Но при этом есть проблема. Представим, что Алисапослала одно и то же письмо троим друзьям...

Что здесь будет не так?

Сергей Николенко Криптография с открытым ключом

Page 15: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Пусть Алиса послала три одинаковых письма m трёмдрузьям с модулями n1, n2 и n3 и публичными ключамиe = 3.

Тогда перехвативший сообщения враг знает про сообщениевеличины m3 (mod n1), m3 (mod n2) и m3 (mod n3).

Он может по китайской теореме об остатках вычислить m3

(mod n1n2n3).

Но m3 < n1n2n3. Значит, он просто получил настоящее m3,и ему остаётся только взять обычный (не дискретный)кубический корень.

Значит, сообщения нужно дополнять случайнымивеличинами, чтобы не посылать одно и то же.

Сергей Николенко Криптография с открытым ключом

Page 16: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Ещё проще: по тому же принципу, нельзя выбирать такиеm, что me < n, иначе можно просто подсчитать обычныйкорень.

Значит, для e = 3 нужно дописывать что-то спередисообщения.

Реальные протоколы это и делают.

Сергей Николенко Криптография с открытым ключом

Page 17: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Замечание: во всех алгоритмах с публичным ключом врагможет сам кодировать.

Значит, если он может перебрать все возможныесообщения, он может найти m.

Поэтому нужно использовать salt (случайное число,дописываемое к сообщению).

Сергей Николенко Криптография с открытым ключом

Page 18: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Далее: представим, что n выбирает какой-нибудь сервер ираздаёт его своим пользователям.

Это заманчиво, потому что искать хорошие p и q не таклегко.

Почему это не сработает?

Сергей Николенко Криптография с открытым ключом

Page 19: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA: о стойкости

Далее: представим, что n выбирает какой-нибудь сервер ираздаёт его своим пользователям.

Это заманчиво, потому что искать хорошие p и q не таклегко.

Почему это не сработает?

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

Сергей Николенко Криптография с открытым ключом

Page 20: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Chosen ciphertext атаки

Мы говорили об атаках видов ciphertext only, knownplaintext и chosen plaintext.

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

Chosen ciphertext: Чарли выбирает несколько шифров ипросит Алису их расшифровать. Потом Чарли достаётсякодированное сообщение c , и он пытается егорасшифровать сам.

Adaptive chosen ciphertext: Чарли сначала получает c , апотом может спросить Алису про несколько шифров;единственное ограничение — Чарли не может спрашиватьпро сам шифр c .

Сергей Николенко Криптография с открытым ключом

Page 21: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA против adaptive chosen ciphertext

RSA гомоморфна, т.е. код сообщения m1m2 — это c1c2.

Поэтому против adaptive chosen ciphertext RSA бессильна:получив c , Чарли выбирает случайное число r испрашивает Алису про c ′ = cr e (mod n).

Ответ Алисы — это mr , нужно только разделить на r .

Как с этим бороться на практике?

Сергей Николенко Криптография с открытым ключом

Page 22: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

RSA против adaptive chosen ciphertext

RSA гомоморфна, т.е. код сообщения m1m2 — это c1c2.

Поэтому против adaptive chosen ciphertext RSA бессильна:получив c , Чарли выбирает случайное число r испрашивает Алису про c ′ = cr e (mod n).

Ответ Алисы — это mr , нужно только разделить на r .

Как с этим бороться на практике?

Например, можно по запросам всяких там Чарлирасшифровывать сообщения только определённого вида,потому что Чарлин c ′ будет расшифровываться в какую-тослучайную строчку; Алиса не должна по запросурасшифровывать нелегитимные сообщения.

Сергей Николенко Криптография с открытым ключом

Page 23: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Идея

RSA основана на разложении чисел.

Но взлом RSA (RSA problem) не эквивалентен разложениюn; по крайней мере, мы об этом не знаем.

Можно ли придумать систему, взлом которой будетдоказуемо эквивалентен разложению большого числа напростые множители? На чём может быть основана такаясистема?

Сергей Николенко Криптография с открытым ключом

Page 24: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Идея

RSA основана на разложении чисел.

Но взлом RSA (RSA problem) не эквивалентен разложениюn; по крайней мере, мы об этом не знаем.

Можно ли придумать систему, взлом которой будетдоказуемо эквивалентен разложению большого числа напростые множители? На чём может быть основана такаясистема?

На задаче вычисления квадратного корня.

Сергей Николенко Криптография с открытым ключом

Page 25: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Рабина: ключи

Алгоритм порождения ключей.1 Сгенерировать два больших простых числа p и q (как и в

RSA, лучше сильных).2 Вычислить n = pq.3 Публичный ключ — n, секретный — (p, q).

Сергей Николенко Криптография с открытым ключом

Page 26: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Рабина: [де]кодирование

Алгоритм кодирования (вход: публичный ключ n,сообщение m).

1 Представить m как число, 0 ≤ m ≤ n − 1.2 Вычислить c = m2 (mod n).

Алгоритм кодирования (вход: секретный ключ (p, q),шифр c).

1 Вычислить четыре квадратных корня из c (алгоритм былвыше).

2 Как-нибудь из них выбрать.

Сергей Николенко Криптография с открытым ключом

Page 27: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Рабина: о стойкости

Задача, стоящая перед пассивным врагом, — это вточности задача вычисления квадратного корня.

Она эквивалентна разложению n на множители.

Т.е. мы построили систему, взлом которой доказуемосводится к решению задачи разложения.

Это криптографы называют provable security.

Криптосистема Рабина подвержена тем же атакам, чтоRSA, если они упрощают разложение n; поэтому надовыбирать стойкие числа и т.п.

Сергей Николенко Криптография с открытым ключом

Page 28: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Рабина: о стойкости

Но против chosen ciphertext дела плохи.Враг может использовать криптосистему как оракула в томсамом сведении и разложить n. Напомним:

враг выбирает случайное число m, подаёт системе m2;система выдаёт какой-то квадратный корень;поскольку система не знает m, с вероятностью 1

2 врагполучает другой квадратный корень и раскладывает n намножители.

Как с этим справиться?

Сергей Николенко Криптография с открытым ключом

Page 29: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Рабина: о стойкости

Можно просто потребовать, чтобы сообщение содержалокакие-нибудь особенности.

Например, определённая часть сообщения должна бытьповторена два раза.

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

Во-вторых, решается проблема того, какой из четырёхкорней выбрать Алисе.

Сергей Николенко Криптография с открытым ключом

Page 30: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.

Сергей Николенко Криптография с открытым ключом

Page 31: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.Невозможно, пока не докажем, что P 6=NP.

Сергей Николенко Криптография с открытым ключом

Page 32: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.Невозможно, пока не докажем, что P 6=NP.

Построить криптосистему, надёжность которой основанана NP-трудной задаче.

Сергей Николенко Криптография с открытым ключом

Page 33: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.Невозможно, пока не докажем, что P 6=NP.

Построить криптосистему, надёжность которой основанана NP-трудной задаче.

Не умеем.

Сергей Николенко Криптография с открытым ключом

Page 34: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.Невозможно, пока не докажем, что P 6=NP.

Построить криптосистему, надёжность которой основанана NP-трудной задаче.

Не умеем.

Построить криптосистему, надёжность которой основанана сложной, но вряд ли NP-трудной задаче.

Сергей Николенко Криптография с открытым ключом

Page 35: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.Невозможно, пока не докажем, что P 6=NP.

Построить криптосистему, надёжность которой основанана NP-трудной задаче.

Не умеем.

Построить криптосистему, надёжность которой основанана сложной, но вряд ли NP-трудной задаче.

Это мы уже делали: криптосистема Рабина, RSA.

Сергей Николенко Криптография с открытым ключом

Page 36: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.Невозможно, пока не докажем, что P 6=NP.

Построить криптосистему, надёжность которой основанана NP-трудной задаче.

Не умеем.

Построить криптосистему, надёжность которой основанана сложной, но вряд ли NP-трудной задаче.

Это мы уже делали: криптосистема Рабина, RSA.

Построить криптосистему, надёжность которой кажетсяоснованной на NP-трудной задаче.

Сергей Николенко Криптография с открытым ключом

Page 37: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Построить надёжную криптосистему.Невозможно, пока не докажем, что P 6=NP.

Построить криптосистему, надёжность которой основанана NP-трудной задаче.

Не умеем.

Построить криптосистему, надёжность которой основанана сложной, но вряд ли NP-трудной задаче.

Это мы уже делали: криптосистема Рабина, RSA.

Построить криптосистему, надёжность которой кажетсяоснованной на NP-трудной задаче.

Этим мы займёмся сейчас.

Сергей Николенко Криптография с открытым ключом

Page 38: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Цели теоретической криптографии

Иначе говоря, всё, что мы можем попытаться сделать —это сделать вид, что противнику надо решить NP-труднуюзадачу.

Сейчас мы рассмотрим одну из таких криптосистем; онаоснована на кодах, исправляющих ошибки.

Сергей Николенко Криптография с открытым ключом

Page 39: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Суть

Что такое коды, исправляющие ошибки (error–correctingcodes)?

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

Задача декодирования: по сигналу понять, какое кодовоеслово передавалось.

Говорят, что код исправляет t ошибок, если он корректнодекодирует любой сигнал, искажённый в ≤ t битах.

Сергей Николенко Криптография с открытым ключом

Page 40: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Линейные коды

Пусть у нас блок размера k переходит в блок размера nпри кодировании (n > k , разумеется).

Предположим, что все биты кодового слова являютсялинейными функциями от битов сообщения (parity checks).

Такие коды называются линейными.

Эквивалентное определение — код линейный, если суммакодовых слов является кодовым словом.

Сергей Николенко Криптография с открытым ключом

Page 41: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Пример

Широко известен код Хэмминга (7, 4) (на 4 битасообщения 7 битов сигнала).Линейные функции — parity от битов сообщения последующему правилу: они равны сумме попадающих всоответствующий круг битов сообщения.

Сергей Николенко Криптография с открытым ключом

Page 42: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Пример

Главное свойство этого кода — то, что кодовые словаотличаются друг от друга как минимум в трёх битах.

Другой способ достичь того же — повторять каждый биттри раза.

Повторять гораздо менее эффективно: сообщениеувеличивается в 3 раза, а в коде Хэмминга всего в 7

4 .

Но есть и тонкий положительный эффект; какой?

Сергей Николенко Криптография с открытым ключом

Page 43: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Линейный код в общем виде

Кодовое слово получается в виде c = sG , где G —матрица, называющаяся генератором кода.

Если сначала сообщение повторяется, то G = [ Ik P ]

Например, для (7, 4)–кода Хэмминга

G =

1 0 0 0 1 0 10 1 0 0 1 1 00 0 1 0 1 1 10 0 0 1 0 1 1

.

Сергей Николенко Криптография с открытым ключом

Page 44: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Синдромы

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

Если c = sG , и G = [ Ik P ], то синдром z = Hr , гдеH = [ −P> In−k ]. Например, для (7, 4)–кода Хэмминга

H =

1 1 1 0 1 0 00 1 1 1 0 1 01 0 1 1 0 0 1

.

Сергей Николенко Криптография с открытым ключом

Page 45: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Синдромы

Для всякого валидного кодового слова c Hc> = 0:

Hc> = H(sG )> = HG>s> =(−P> In−k

)(IkP

)s> = 0.

Если же полученное слово r неправильное, и в нём естьшум, то результат Hr> помогает найти n и декодировать.

Сергей Николенко Криптография с открытым ключом

Page 46: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Постановка задачи декодирования

Получаемый вектор r — это сумма кодового слова и шума:

r = sG + n>.

Задача декодирования синдрома — это задача поискатакого вектора шума n, что

Hn = z .

Если код исправляет t ошибок, то среди слов,отличающихся от s в ≤ t местах, есть только однорешение этого уравнения.

Проще говоря, для кода, исправляющего t ошибок, в шарерадиуса t вокруг каждого кодового слова других кодовыхслов не встречается.

Сергей Николенко Криптография с открытым ключом

Page 47: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Сложность задачи декодирования

Для кода Хэмминга решить задачу декодированиянесложно.

Однако это не всегда так.

Для абстрактного линейного кода нужно решать задачуMLD (maximum likelihood decoding): по данному вектору сошибкой найти ближайшее кодовое слово из кода.

Сергей Николенко Криптография с открытым ключом

Page 48: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Декодирование и сечения

Любопытный пример кода: рассмотрим граф G = (V ,E ) икод CG ⊆ {0, 1}|E |, где каждое кодовое слово — это разрезграфа.

Почему это линейный код?

Сергей Николенко Криптография с открытым ключом

Page 49: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Декодирование и сечения

Любопытный пример кода: рассмотрим граф G = (V ,E ) икод CG ⊆ {0, 1}|E |, где каждое кодовое слово — это разрезграфа.

Почему это линейный код?

Почему декодировать его будет NP-трудно?

Сергей Николенко Криптография с открытым ключом

Page 50: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Декодирование и сечения

Любопытный пример кода: рассмотрим граф G = (V ,E ) икод CG ⊆ {0, 1}|E |, где каждое кодовое слово — это разрезграфа.

Почему это линейный код?

Мы доказали, что декодировать произвольный линейныйкод — NP-трудная задача. Её-то мы и будем маскировать.

Сергей Николенко Криптография с открытым ключом

Page 51: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Goppa codes

Валерий Денисович Гоппа — первым (1981) осознал связьмежду алгебраической геометрией и теорией кодирования.

Вообще говоря, коды Гоппы — это линейные коды,порождённые несингулярными проективными кривыми надконечными полями.

Но нам нужен только конкретный частный случай,который можно описать без глубокой теории.

Сергей Николенко Криптография с открытым ключом

Page 52: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Двоичные коды Гоппы

Зафиксируем число m (обычно 10, 11 или 12), числоn ≤ 2m (часто берут n = 2m) и t ∈ [2, 2m−1

m ].

Выберем последовательность a1, . . . , an ∈ F2m (еслиn = 2m, то это просто все элементы в лексикографическомпорядке).

Определим многочлен

h =

n∏i=1

(x − ai ) ∈ F2m [x ].

Зафиксируем неприводимый многочлен g степени t.

Сергей Николенко Криптография с открытым ключом

Page 53: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Двоичные коды Гоппы

Тогда множество кодовых слов — это:

Γ = Γ(a1 . . . , an, g) =

{c ∈ Fn

2 :

n∑i=1

cih

x − ai≡ 0 (mod g)

}.

Иначе говоря, множество Γ — это ядроотображения–«синдрома» Fn

2 → Ft2m , которое действует

как

c = (c0, . . . , cn−1) 7→7→ b0 + b1x + . . .+ bt−1x t−1 ≡

n∑i=1

cih

x − ai(mod g).

Значит, размерность кода — по меньшей мере n − mt, имы получили (n,≥ n − mt)-код.

Сергей Николенко Криптография с открытым ключом

Page 54: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Двоичные коды Гоппы

Многочлены hx−a1

(mod g), . . . , hx−an

(mod g) — это, еслиих рассмотреть как векторы битов, строки матрицысиндромов.

В общем, коды Гоппы, обладают хорошими свойствами каккоды, и для них есть полиномиальные алгоритмыкодирования и декодирования.

Упражнение. Докажите, что код Гоппы исправляет t ошибок.

Сергей Николенко Криптография с открытым ключом

Page 55: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема МакЭлиса: обзор

А теперь собственно криптосистема МакЭлиса (McEliececryptosystem).

Сергей Николенко Криптография с открытым ключом

Page 56: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема МакЭлиса: ключи

Генерация ключа: фиксируем k , n, t. Каждый участникделает следующее.

1 Выбрать матрицу кода G размера k × n для(n, k)-линейного кода, исправляющего t ошибок, длякоторого известен эффективный алгоритм декодирования(например, код Гоппы).

2 Выбрать случайную невырожденную матрицу S размераk × k .

3 Выбрать случайную матрицу перестановки P размераn × n.

4 Выдать как публичный ключ t и G = SGP; секретныйключ — (S ,G ,P).

Сергей Николенко Криптография с открытым ключом

Page 57: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема МакЭлиса: [де]кодирование

Алгоритм кодирования (даны t, G и сообщение m).1 Представить сообщение как строку длины k .2 Выбрать случайный вектор шума z длины n с ≤ t

единичками.3 Закодировать c = mG + z .

Алгоритм декодирования (даны c и ключ (S ,G ,P)).1 Вычислить c = cP−1.2 Декодировать то, что получилось, алгоритмом

декодирования кода; получится m.3 Вычислить m = mS−1.

Упражнение. Доказать, что алгоритм декодирования корректен.

Сергей Николенко Криптография с открытым ключом

Page 58: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема МакЭлиса: о стойкости

По сути: мы хотим попросить врага решить NP-труднуюзадачу.

Но не можем.

Поэтому мы берём простой частный случай NP-труднойзадачи, а потом «запутываем» его так, чтобы врагу былоне догадаться, какой это частный случай.

Для многих кодов криптосистему МакЭлиса взломали; длякодов Гоппы пока нет.

Сергей Николенко Криптография с открытым ключом

Page 59: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема МакЭлиса: о стойкости

Атака: найти матрицу G ′ кода Гоппы, соответствующуюданной G . Этого делать пока никто не умеет.Другая атака:

выбрать k столбцов из G , ограничить на них матрицу ивекторы; будет ck = mk Gk + zk .предположить, что zk = 0;решить напрямую систему ck = mk Gk , найти mk .

Вероятность того, что zk = 0, очень мала.

Только в 2008 году смогли успешно атаковатькриптосистему МакЭлиса для n = 1024, k = 524, t = 50.

Сергей Николенко Криптография с открытым ключом

Page 60: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Subset Sum

И снова будем маскировать NP-полную задачу, на этот раззадачу о рюкзаке, точнее, subset sum.

Можно ли из заданного набора чисел {b1, . . . , bn} поданному числу s выбрать такое подмножество {bi1 , . . . , bil },что∑l

j=1 bij = s? И что это будет за подмножество?

Это — трудная (NP-полная) задача, её в общем видерешить трудно.

Сергей Николенко Криптография с открытым ключом

Page 61: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Subset Sum

Есть приближённые алгоритмы, но точного нету.Тривиальный требует время O(n2n) (перебрать всеподмножества n чисел).Менее тривиальный работает за время и память O(n2n/2)[Horowitz, Sahni, 1974].

1 Разбить n элементов на две половины по n2 .

2 В каждой половине посчитать все возможные суммы;получатся два вектора длины 2n/2 каждый.

3 Отсортировать векторы.4 Теперь идти по первому вектору сверху вниз, по второму

снизу вверх: если сумма больше s, то смещаемся вниз попервому вектору, если меньше, то поднимаемся вверх повторому вектору. Так мы не пропустим пару, суммакоторой равна s, если такая есть.

Более эффективных точных алгоритмов не известно.

Сергей Николенко Криптография с открытым ключом

Page 62: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Subset Sum

Давайте рассмотрим частный случай. Последовательностьчисел (b1, . . . , bn) называется супервозрастающей(superincreasing), если для любого 2 ≤ i ≤ n

bi >

i−1∑j=1

bj .

Можете ли вы предложить более эффективный алгоритмрешения subset sum, если известно, что (b1, . . . , bn)

образуют супервозрастающую последовательность?

Сергей Николенко Криптография с открытым ключом

Page 63: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Subset Sum

Да, алгоритм нехитрый: взять самое большое число,которое умещается в s, вычесть его, повторить.

Итак, у нас есть задача, решить которую в общем видеочень трудно, а в частном случае — легко.

Значит, для криптографии мы можем попробовать лёгкийчастный случай зашифровать как сложную задачу.

Сергей Николенко Криптография с открытым ключом

Page 64: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Меркле-Хеллмана: обзор

Криптосистема Меркле-Хеллмана (Merkle-Hellmancryptosystem).

Сергей Николенко Криптография с открытым ключом

Page 65: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Меркле-Хеллмана: ключи

Алгоритм генерации ключей.1 Зафиксировать n. Выбрать супервозрастающую

последовательность (b1, . . . , bn) и модуль M, такой, чтоM > b1 + . . .+ bn.

2 Выбрать случайное число W < M, взаимно простое с M.3 Выбрать случайную перестановку π ∈ S{1,2,...,n}.4 Вычислить ai = Wbπ(i) (mod M), i = 1, . . . , n.5 Теперь публичный ключ — (a1, . . . , an), секретный —

(π,M,W , b1, . . . , bn).

Сергей Николенко Криптография с открытым ключом

Page 66: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Меркле-Хеллмана: [де]кодирование

Алгоритм кодирования (вход: сообщение m, ключ(a1, . . . , an)).

1 Представить m как битовую строку m1m2 . . .mn.2 Вычислить шифр c = m1a1 + m2a2 + . . .+ mnan.

Алгоритм декодирования (вход: шифр c , ключ(π,M,W , b1, . . . , bn)).

1 Вычислить d = W−1c (mod M).2 Найти такие r1, . . . , rn, что d = b1r1 + . . .+ bnrn.3 Теперь биты сообщения — это mi = rπ(i), i = 1, 2, . . . , n.

Сергей Николенко Криптография с открытым ключом

Page 67: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

RSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

Криптосистема Меркле-Хеллмана

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

Но, может быть, враг на самом деле может как-тораспознать, что это простая задача, и решить её?

Для криптосистемы Меркле-Хеллмана — да, может.Многие криптосистемы, основанные на задаче о рюкзаке,ломаются при помощи сведения к задачам о решётках.

Сейчас мы их и рассмотрим.

Сергей Николенко Криптография с открытым ключом

Page 68: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Outline

1 Классические протоколыRSA и криптосистема РабинаКриптосистемы МакЭлиса и Меркле-Хеллмана

2 О решеткахАлгоритм LLLРешётки на службе криптографии

Сергей Николенко Криптография с открытым ключом

Page 69: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Будем обозначать скалярное произведение как 〈x , y〉.Пусть B = {b1, . . . , bm} — набор линейно независимыхвекторов в Rn. Тогда решётка размерности m — это наборлинейных комбинаций bi с целыми коэффициентами:

L = Zb1 + Zb2 + . . .+ Zbm.

Сергей Николенко Криптография с открытым ключом

Page 70: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Вот типичная решётка.

Сергей Николенко Криптография с открытым ключом

Page 71: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Вот типичная решётка.

Базис решётки — этомножество линейнонезависимых векторов, еёпорождающих.

Сергей Николенко Криптография с открытым ключом

Page 72: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Вот типичная решётка.

Базис решётки — этомножество линейнонезависимых векторов, еёпорождающих.

Вот другой базис той жерешётки.

Сергей Николенко Криптография с открытым ключом

Page 73: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Вот типичная решётка.

Базис решётки — этомножество линейнонезависимых векторов, еёпорождающих.

Вот другой базис той жерешётки.

А вот ещё один.

Сергей Николенко Криптография с открытым ключом

Page 74: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Базис может состоять изочень длинных векторов,даже если в решётке естькороткие.

Найти короткий векторрешётки — сложнаязадача; её мы и будемрассматривать.

Сергей Николенко Криптография с открытым ключом

Page 75: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Кратчайший вектор

Обозначим кратчайшийвектор через λ1(L).

Многомерное обобщение:λk(L) — минимальное r ,для которого размерностьрешётки внутри шарарадиуса r больше либоравна k .

Сергей Николенко Криптография с открытым ключом

Page 76: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Определитель

Фундаментальныйпараллелепипед образованбазисом.

Важный инвариант — егообъём det L, т.е.определитель матрицы,составленной из векторовбазиса.

Сергей Николенко Криптография с открытым ключом

Page 77: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Определитель

Он от базиса не зависит,т.к. разные базисы решёткиэквивалентны, только еслиони преобразуются друг вдруга не меняющими det Lпреобразованиями.

Сергей Николенко Криптография с открытым ключом

Page 78: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Ортогонализация

Ортогонализация пометоду Грама-Шмидта: избазиса (пространства)делает ортогональныйбазис.

b∗1 = b1, дальше каждыйпоследующий ортогоналенпространству предыдущих.

Для этого вычитаемпроекции предыдущихбазисных векторов.

Сергей Николенко Криптография с открытым ключом

Page 79: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Ортогонализация

В частности, при этомdet L не поменяется, аполучится ортогональныйбазис:

det L = ||b∗1 ||||b∗2 || . . . ||b

∗n||.

Сергей Николенко Криптография с открытым ключом

Page 80: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Рассмотрим решётку L с базисом B = {b1, . . . , bm}.Определим, по методу ортогонализации Грама-Шмидта,

µij =

⟨bi , b∗j

⟩⟨b∗j , b

∗j

⟩ , 1 ≤ j < i ≤ n,

b∗i = bi −

i−1∑j=1

µijb∗j , 1 ≤ i ≤ m.

Тогда 〈b∗i , bj〉 = 0 для всех j < i , и 〈b∗i , bi 〉 = 〈b∗i , b∗i 〉.

Сергей Николенко Криптография с открытым ключом

Page 81: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Иначе говоря, если записать базис B вортонормированном базисе, получаемом из B∗ (i-йстолбец матрицы — bi в этом базисе):

||b∗1 || µ21||b∗1 || µ31||b∗1 || . . . µn1||b∗1 ||0 ||b∗2 || µ32||b∗2 || . . . µn2||b∗2 ||0 0 ||b∗3 || . . . µn3||b∗3 ||...

......

0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 82: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Например, для решётки с базисом b1 = (2 1) и b2 = (1 3)(на рисунках): b∗1 = b1,

µ21 =〈b2, b∗1〉〈b∗1, b∗1〉

=55= 1,

b∗2 = b2 − µ21b∗1 = b2 − b1 = (−1 2).

А для решётки с базисом b1 = (9 7) и b2 = (11 8) (та жерешётка): b∗1 = b1,

µ21 =〈b2, b∗1〉〈b∗1, b∗1〉

=155130

=3126,

b∗2 = b2 − µ21b∗1 = b2 −3126

b∗1 =

(726

−926

).

Вектор b∗2 получился гораздо короче обоих исходных;||b∗2 || ≈ 0, 4385.

Сергей Николенко Криптография с открытым ключом

Page 83: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

Докажем лемму, полезную для поиска кратчайшеговектора.

Рассмотрим базис B и произвольный вектор в L; онпредставляется как Bx для некоторого вектора x ∈ Zn.

Пусть j ∈ 1..n — наибольшее такое j , что xj 6= 0. Тогда:

|⟨Bx , b∗j

⟩| =

∣∣∣∣∣⟨ j∑

i=1

xibi , b∗j

⟩∣∣∣∣∣ = |xj |⟨b∗j , b

∗j⟩= |xj |||b∗j ||

2.

Сергей Николенко Криптография с открытым ключом

Page 84: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Решётки

С другой стороны,∣∣∣⟨Bx , b∗j

⟩∣∣∣ ≤ ||Bx || · ||b∗j ||, и

||Bx || ≥ |xj |||b∗j || ≥ ||b∗j || ≥ minj

||b∗j ||.

Мы доказали нижнюю оценку на размер кратчайшеговектора решётки: λ1(L) ≥ minj ||b∗j ||.

В нашем примере кратчайший вектор был (2 1) с длиной√5, что больше ||b∗2 ||.

Сергей Николенко Криптография с открытым ключом

Page 85: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

δ-LLL-редуцированные базисы

Базис B называется δ-LLL-редуцированным (δ-LLLreduced), если

|µij | ≤12для всех 1 ≤ j < i ≤ n, и

δ||b∗i ||2 ≤ ||µi+1,ib∗i + b∗i+1||

2 для всех 1 ≤ i < n.

Часто рассматривают δ = 34 .

Сергей Николенко Криптография с открытым ключом

Page 86: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

δ-LLL-редуцированные базисы

Второе свойство:

δ||b∗i ||2 ≤ ||µi+1,ib∗i + b∗i+1||

2 = µ2i+1,i ||b

∗i ||

2 + ||b∗i+1||2, и

||b∗i+1||2 ≥

(δ−

14

)||b∗i ||

2.

Иначе говоря. Запишем базис B в ортонормированномбазисе, получаемом из B∗ (i-й столбец матрицы — bi вэтом базисе):

||b∗1 || ∗ ∗ . . . ∗0 ||b∗2 || ∗ . . . ∗0 0 ||b∗3 || . . . ∗...

......

0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 87: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

δ-LLL-редуцированные базисы

Первое условие (|µij | ≤ 12) говорит, что

||b∗1 || ≤ 12 ||b∗1 || ≤ 1

2 ||b∗1 || . . . ≤ 1

2 ||b∗1 ||

0 ||b∗2 || ≤ 12 ||b∗2 || . . . ≤ 1

2 ||b∗2 ||

0 0 ||b∗3 || . . . ≤ 12 ||b∗3 ||

......

...0 0 0 . . . ≤ 1

2 ||b∗n−1||

0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 88: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

δ-LLL-редуцированные базисы

Второе условие: в подматрице(||b∗i || µi+1,i ||b∗i ||0 ||b∗i+1||

)второй столбец почти такой же длины, как первыйстолбец:

δ||b∗i ||2 ≤ µ2

i+1,i ||b∗i ||

2 + ||b∗i+1||2.

Есть обобщение, которое обобщает это требование наподматрицы k × k , но нам бы сейчас хотя бы с базовымLLL разобраться.

Сергей Николенко Криптография с открытым ключом

Page 89: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

δ-LLL-редуцированные базисы

Если мы нашли δ-LLL-редуцированный базис, то:

||b∗n||2 ≥

(δ−

14

)||b∗n−1||

2 ≥ . . . ≥

≥(δ−

14

)n−1

||b∗1 ||2 =

(δ−

14

)n−1

||b1||2.

Значит, для любого i

||b1|| ≤(δ−

14

)− i−12

||b∗i || ≤(δ−

14

)− n−12

||b∗i ||, и

||b1|| ≤(δ−

14

)− n−12

mini

||b∗i || ≤(δ−

14

)− n−12

λ1(L).

Сергей Николенко Криптография с открытым ключом

Page 90: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

δ-LLL-редуцированные базисы

Получили:

||b1|| ≤(δ−

14

)− n−12

λ1(L).

Например, для δ = 34

||b1|| ≤ 2(n−1)/2||x ||.

Иначе говоря, если мы получим LLL-редуцированный

базис, мы сразу решим (с точностью(δ− 1

4

)− n−12 ) задачу

поиска кратчайшего вектора.

Сергей Николенко Криптография с открытым ключом

Page 91: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Алгоритм L3 или LLL: Lenstra, Lenstra, Lovasz (1982).Задача — вычислить LLL-редуцированный базис.

1 Вычислить b∗1 , . . . , b

∗n .

2 Редукция.1 Для всех 2 ≤ i ≤ n и всех i − 1 ≥ j ≥ 1

bi := bi − cijbj , где cij =

⟨bi , b∗j⟩⟨

b∗j , b∗j

⟩ .

3 Обмен значениями.1 Если для какого-то i

δ||b∗i ||2 > ||µi+1,ib∗i + b∗i+1||

2,

то поменять местами bi с bi+1 и вернуться к шагу 1.4 Выдать b1, . . . , bn.

Сергей Николенко Криптография с открытым ключом

Page 92: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Очевидно, что если обмена не произошло, то второетребование выполняется.

А редукция обеспечивает первое условие: она вычитаетстолбец за столбцом так, чтобы оставалось ≤ 1

2 ||b∗i ||.

Перед началом редукции:

||b∗1 || ∗ ∗ . . . ∗0 ||b∗2 || ∗ . . . ∗0 0 ||b∗3 || . . . ∗...

......

0 0 0 . . . ∗0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 93: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Очевидно, что если обмена не произошло, то второетребование выполняется.

А редукция обеспечивает первое условие: она вычитаетстолбец за столбцом так, чтобы оставалось ≤ 1

2 ||b∗i ||.

Первый шаг: i = 2, j = 1:

||b∗1 || ≤ 12 ||b∗1 || ∗ . . . ∗

0 ||b∗2 || ∗ . . . ∗0 0 ||b∗3 || . . . ∗...

......

0 0 0 . . . ∗0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 94: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Очевидно, что если обмена не произошло, то второетребование выполняется.

А редукция обеспечивает первое условие: она вычитаетстолбец за столбцом так, чтобы оставалось ≤ 1

2 ||b∗i ||.

Второй шаг: i = 3, j = 2:

||b∗1 || ≤ 12 ||b∗1 || ∗ . . . ∗

0 ||b∗2 || ≤ 12 ||b∗2 || . . . ∗

0 0 ||b∗3 || . . . ∗...

......

0 0 0 . . . ∗0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 95: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Очевидно, что если обмена не произошло, то второетребование выполняется.

А редукция обеспечивает первое условие: она вычитаетстолбец за столбцом так, чтобы оставалось ≤ 1

2 ||b∗i ||.

Третий шаг: i = 3, j = 1:

||b∗1 || ≤ 12 ||b∗1 || ≤ 1

2 ||b∗1 || . . . ∗

0 ||b∗2 || ≤ 12 ||b∗2 || . . . ∗

0 0 ||b∗3 || . . . ∗...

......

0 0 0 . . . ∗0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 96: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Очевидно, что если обмена не произошло, то второетребование выполняется.

А редукция обеспечивает первое условие: она вычитаетстолбец за столбцом так, чтобы оставалось ≤ 1

2 ||b∗i ||.

И так далее; после всех шагов:

||b∗1 || ≤ 12 ||b∗1 || ≤ 1

2 ||b∗1 || . . . ≤ 1

2 ||b∗1 ||

0 ||b∗2 || ≤ 12 ||b∗2 || . . . ≤ 1

2 ||b∗2 ||

0 0 ||b∗3 || . . . ≤ 12 ||b∗3 ||

......

...0 0 0 . . . ≤ 1

2 ||b∗n−1||

0 0 0 . . . ||b∗n||

Сергей Николенко Криптография с открытым ключом

Page 97: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Очевидно, что если обмена не произошло, то второетребование выполняется.

А редукция обеспечивает первое условие: она вычитаетстолбец за столбцом так, чтобы оставалось ≤ 1

2 ||b∗i ||.

Формально: после редукции

|µij | =

∣∣∣∣∣∣⟨bi , b∗j

⟩⟨b∗j , b

∗j

⟩∣∣∣∣∣∣ =

∣∣∣∣∣∣⟨bi − cijbj , b∗j

⟩⟨b∗j , b

∗j

⟩∣∣∣∣∣∣ =

=

∣∣∣∣∣∣⟨bi , b∗j

⟩⟨b∗j , b

∗j

⟩ −

⟨bi , b∗j⟩⟨

b∗j , b∗j

⟩⟨bj , b∗j

⟩⟨b∗j , b

∗j

⟩∣∣∣∣∣∣ =

∣∣∣∣∣∣⟨bi , b∗j

⟩⟨b∗j , b

∗j

⟩ −

⟨bi , b∗j⟩⟨

b∗j , b∗j

⟩∣∣∣∣∣∣ ≤ 1

2,

т.к.⟨bj , b∗j

⟩=⟨b∗j , b

∗j

⟩.

Сергей Николенко Криптография с открытым ключом

Page 98: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

Осталось доказать, что LLL — полиномиальный алгоритм.

Две части: количество итераций и каждая итерация. Прокаждую итерацию не будем.

Чтобы ограничить количество итераций, можнорассмотреть потенциал базиса решётки: для базисаB = {b1, . . . , bm} потенциал — это

DB =

n∏i=1

DB,i =

n∏i=1

det Li =

n∏i=1

||b∗1 ||||b∗2 || . . . ||b

∗i ||.

Здесь Li — решётка, порождаемая b1, . . . , bi .

Сергей Николенко Криптография с открытым ключом

Page 99: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

До работы алгоритма, т.к. ||b∗i || ≤ ||bi ||, потенциал можнооценить как

DB ≤(max

i||bi ||

) n(n−1)2

.

Заметим, что logDB полиномиален от длины входа(max{n, log ||bi ||}).

Сергей Николенко Криптография с открытым ключом

Page 100: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3

От редукций DB не убывает, т.к. b∗i не меняются.

Когда мы меняем местами bi и bi+1, из всех det Lk

меняется только det Li , и

D ′BDB

=det L ′idet Li

=det L(b1, . . . , bi−1, bi+1)

det L(b1, . . . , bi )=

=

∏i−1j=1 ||b

∗i || · ||µi+1,ib∗i + b∗i+1||∏i−1j=1 ||b

∗i || · ||b∗i ||

=||µi+1,ib∗i + b∗i+1||

||b∗i ||≤√δ.

Значит, итераций может быть не большеlog 1√

δ

DB ≤ 1log 1√

δ

n(n−1)2 log(maxi ||bi ||).

Сергей Николенко Криптография с открытым ключом

Page 101: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Алгоритм L3: итоги

Краткий итог: мы получили алгоритм с константнымпараметром δ, который умеет решать задачу поиска

кратчайшего вектора с точностью(δ− 1

4

)− n−12 .

Можно рассмотреть δ = 14 +

(34

) nn−1 и получить точность(

2√3

)n.

Есть ещё алгоритм Шнорра, который достигает

субэкспоненциальной точности: 2O(

n(log log n)2

log n

).

Теперь поговорим о том, зачем всё это нужно.

Сергей Николенко Криптография с открытым ключом

Page 102: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Сведение subset sum к решётке

Начнём с того, что обещали: применим LLL к задаче subsetsum.

Для этого нужно свести задачу subset sum к задаче поискакратчайшего вектора в некоторой решётке.

Рассмотрим задачу subset sum: даны числа {a1, . . . , an} ичисло s.

Сергей Николенко Криптография с открытым ключом

Page 103: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Сведение subset sum к решётке

Положим m = d12√

ne и запишем матрицу

1 0 0 . . . 0 ma1

0 1 0 . . . 0 ma2

0 0 1 . . . 0 ma3...

......

0 0 0 . . . 1 man12

12

12 . . . 1

2 ms

Рассмотрим решётку L, порождённую строками этойматрицы b1, b2, . . . , bn+1.

Сергей Николенко Криптография с открытым ключом

Page 104: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Сведение subset sum к решётке

Если (x1, . . . , xn) — решение subset sum, т.е.∑n

i=1 ai = s, товектор y =

∑ni=1 xibi − bn+1 лежит в L.

Но у него yi = ±12 для 1 ≤ i ≤ n, и yn+1 = 0. Иначе говоря,

он короткий, и LLL может его найти.

Сергей Николенко Криптография с открытым ключом

Page 105: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Сведение subset sum к решётке

LLL не обязан его находить, но для задач низкойплотности он его с большой вероятностью находит.

Плотность задачи subset sum (и вообще задачи о рюкзаке):

d =n

maxi log2 ai.

Известно, что если d < 0, 9408, у LLL хорошие шансы.

А в криптосистеме Меркле-Хеллмана плотность должнабыть меньше n

n−log n , потому что в противном случае будутнаборы чисел с одинаковыми суммами, и не получитсяоднозначно декодировать. Почему так, кстати?

Более того, запутывание умножением уменьшаетплотность.

Сергей Николенко Криптография с открытым ключом

Page 106: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Поиск корней многочленов

Другое применение LLL-алгоритма — поиск корнеймногочленов.

Рассмотрим целое число N и унитарный многочленf ∈ ZN [x ] степени d .

Тогда при помощи LLL мы можем найти все корни f в ZN ,по модулю не превосходящие B = N

1d .

Важно: мы не знаем разложения N на множители; если бызнали, могли бы проще найти корни.

Мы сейчас докажем упрощённую версию, дляB = cN

2d(d+1) .

Сергей Николенко Криптография с открытым ключом

Page 107: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Поиск корней многочленов

Чтобы это сделать, рассмотрим многочлен

f (x) = xd + ad−1xd−1 + . . .+ a1x + a0.

Заметим, что если вдруг все коэффициенты f сильноограничены:

|aiB i | <N

d + 1, 0 ≤ i ≤ d − 1,

то мы можем найти все интересующие нас корни. Почему?

Сергей Николенко Криптография с открытым ключом

Page 108: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Поиск корней многочленов

Чтобы это сделать, рассмотрим многочлен

f (x) = xd + ad−1xd−1 + . . .+ a1x + a0.

Заметим, что если вдруг все коэффициенты f сильноограничены:

|aiB i | <N

d + 1, 0 ≤ i ≤ d − 1,

то мы можем найти все интересующие нас корни. Почему?Потому что тогда для |x | ≤ B

|f (x)| ≤d∑

i=0

|aiB i | < N,

и можно искать просто обычные корни многочлена, чтолегко.

Сергей Николенко Криптография с открытым ключом

Page 109: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Поиск корней многочленов

Конечно, нам так не повезёт. Но мы можем попробоватьсделать так, чтобы нам повезло.

Мы хотим найти такой многочлен g , что он имеет те жекорни, что и f , но при этом маленькие коэффициенты.

Маленькие коэффициенты — то есть короткий векторкоэффициентов... осталось придумать решётку.

Сергей Николенко Криптография с открытым ключом

Page 110: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Поиск корней многочленов

Рассмотрим множество многочленов

Z ={

N,Nx ,Nx2, . . . ,Nxd−1, f (x)}.

Все корни f также являются корнями любой их линейнойкомбинации (мы корни ищем по модулю N).

Рассмотрим решётку из столбцов матрицы

L =

N 0 0 . . . 0 a0

0 BN 0 . . . 0 Ba1

0 0 B2N . . . 0 B2a2...

......

0 0 0 . . . Bd−1N Bd−1ad−1

0 0 0 . . . 0 Bd

Сергей Николенко Криптография с открытым ключом

Page 111: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Поиск корней многочленов

Мы ищем короткий вектор в этой решётке при помощиLLL-алгоритма.

Определитель решётки:

det L = N · BN · . . . · Bd−1N · Bd = NdBd(d+1)/2.

После применения LLL мы найдём такой v , что

||v || ≤ O(λ1(L)) ≤ O((det L)

1d+1

)= O

(N

Bd/2

N1

d+1

),

где константы под O зависят только от d (размерностирешётки).

Это для B < c1(d)N2

d(d+1) уже получится меньше, чем Nd+1 .

Сергей Николенко Криптография с открытым ключом

Page 112: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Поиск корней многочленов

Иначе говоря, мы нашли такой многочлен

g(x) = bdxd + . . .+ b1x + b0,

что у g те же корни, что у f , но |biB i | < Nd+1 .

Теперь мы его просто решим, и всё.

Чтобы улучшить оценку, нужно улучшить множествомногочленов; самое общее — для некоторого h рассмотреть

Z ={

Nh−i−1f (x)ix j | 0 ≤ j < d , 0 ≤ i < h}.

Это для медленно растущей функции h и даст B = N1/d .

Сергей Николенко Криптография с открытым ключом

Page 113: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Атаки на RSA с малой экспонентой

Теперь применим всё это к криптографии.

Вспомним RSA. Мы говорили, что если Алиса разошлётодно и то же m трём Бобам с разными Ni и экспонентойe i , то получится система уравнений m3 ≡ ci (mod Ni ), изнеё по китайской теореме об остатках m3 ≡ c(mod N1N2N3), и так как m < Ni , то последний кореньможно просто извлечь.

Сергей Николенко Криптография с открытым ключом

Page 114: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Атаки на RSA с малой экспонентой

Алиса может попробовать избежать этой участи, дописав всообщение ID Боба, например, в начале. Тогда Бобуi онапошлёт (m + 2l IDi )

3, где l — длина сообщения.

Рассмотрим даже чуть обобщённую ситуацию — у Бобаесть многочлен g , являющийся частью публичного ключа(N, g), и Алиса посылает ему g(m) (mod N); в нашейситуации g(m) = (m + 2l IDi )

3.

Сергей Николенко Криптография с открытым ключом

Page 115: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Атаки на RSA с малой экспонентой

Пусть Бобов несколько: есть несколько N1, . . . ,Nk

(взаимно простых) и несколько g1, . . . , gk .

Пусть есть одно сообщение m < Nmin = mini Ni , и Чарлиполучил gi (m) ≡ ci (mod Ni ) для всех 1 ≤ i ≤ k .

Тогда, если k ≥ deg(gi ), Чарли сможет найти m.

Сергей Николенко Криптография с открытым ключом

Page 116: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Атаки на RSA с малой экспонентой

Для этого определим hi = gi − ci ; нам нужно найти общийкорень m: hi (m) ≡ 0 (mod Ni ).

По китайской теореме об остатках, совместим hi в общийh:

h(x) =k∑

i=1

Tihi (x) (mod N1N2 . . .Nk).

Но так как

M < Nmin ≤ (N1N2 . . .Nk)1k ≤ (N1N2 . . .Nk)

1d ,

мы можем применить LLL-алгоритм и найти корень.

Сергей Николенко Криптография с открытым ключом

Page 117: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

О сложности

Мы всё время говорим о том, что стойкость криптосистемоснована на сложности решения тех или иных задач.

Но о какой сложности идёт речь?

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

Сергей Николенко Криптография с открытым ключом

Page 118: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

О сложности

А хотелось бы, чтобы требовалась сложность в худшемслучае.

Например, чтобы сделать утверждение «если P6=NP, токриптосистема стойкая», надо как-то связать стойкостьименно со сложностью в худшем случае.

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

Сергей Николенко Криптография с открытым ключом

Page 119: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

История

Ajtai, 1996: хеш-функции, стойкость которых основана насложности в худшем случае задачи nc -приближения поискакратчайшего вектора в решётке (shortest vector problem,SVP).

Т.е. если кто-то умеет обращать функцию из этогосемейства, он умеет полиномиально аппроксимироватькратчайшие векторы во всех решётках.

Сергей Николенко Криптография с открытым ключом

Page 120: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

История

Ajtai, Dwork, 1998: криптосистема, стойкость которойоснована на сложности в худшем случае.

Задача, правда, менее ясная: unique-SVP, т.е. поисккратчайшего вектора v в решётке размерности n приусловии, что нет непараллельных ему векторов длиныменьше n8||v ||.

Сергей Николенко Криптография с открытым ключом

Page 121: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Идея конструкции Ajtai

Мы хотим построить семейство хеш-функций. По сутиконструкция — вариант subset sum.

Рассмотрим m векторов a1, . . . , am ∈ Znq. Определим

fa1,...,am : {0, 1}m → {0, 1}n log q как

fa1,...,am(b1, . . . , bm) =

m∑i=1

biai (mod q).

Наше семейство хеш-функций — это набор функцийF = {fa1,...,am | a1, . . . , am ∈ Zn

q}.

Чтобы семейство было стойким, нужно, чтобы дляслучайной функции f ∈ F никакой полиномиальныйалгоритм не мог бы со значительной вероятностью найтиколлизию, т.е. такие x 6= y , что f (x) = f (y).

Сергей Николенко Криптография с открытым ключом

Page 122: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Идея доказательства

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

“Такой алгоритм” умеет по случайным a1, . . . , am ∈ Znq

находить со значительной вероятностью их линейнуюкомбинацию, равную 0, т.е. b1, . . . , bm ∈ {0,±1}:∑m

i=1 biai ≡ 0 (mod q).

Идея сведения — рассмотреть решётку как распределениевероятностей и добавлять в неё нормальнораспределённый шум.

Если добавить достаточно много шума, решётка станетнеотличима от равномерного распределения.

Сергей Николенко Криптография с открытым ключом

Page 123: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Шум в решётке

Сергей Николенко Криптография с открытым ключом

Page 124: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Идея доказательства

Пусть мы нашли такой параметр s, что с нимраспределение решётки достаточно близко кравномерному.

Тогда давайте возьмём несколько векторов по этомунормальному распределению (они будут короткими) иприведём их к параллелепипеду решётки.

Получатся практически равномерно распределённые точкив параллелепипеде.

Теперь разобьём решётку на qn ячеек и поставим всоответствие каждой ячейке элемент Zn

q.

Наши исходные векторы теперь соответствуют числам изZn

q.

Сергей Николенко Криптография с открытым ключом

Page 125: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Идея доказательства

Применим наш алгоритм, который умеет находитьколлизии, к этим числам. Он найдёт линейнуюкомбинацию, равную 0, т.е. линейную комбинацию нашихвекторов, очень близкую к вектору, равному нулю «помодулю решётки», т.е. очень близкую к вектору решётки.

И, так как исходные векторы были короткими, этот векторрешётки тоже будет коротким.

Остались только сложные статистические соображения.

Сергей Николенко Криптография с открытым ключом

Page 126: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Идея конструкции Ajtai-Dwork

Сама конструкция криптосистемы тоже очень несложная.

Рассмотрим большое число N; секретный ключ — просточисло h ∈ [

√N, 2√

N).

Публичный ключ — набор из m = O(logN) чисел0 ≤ a1, . . . , am ≤ N − 1, которые «достаточно близки» кчислам, кратным N/h (N не обязательно делится на h),плюс номер одного из этих чисел ai0 , которое достаточноблизко к нечётному кратному N/h.

Сергей Николенко Криптография с открытым ключом

Page 127: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Идея конструкции Ajtai-Dwork

Код нуля: сумма случайного подмножества {ai }.

Код единицы: сумма случайного подмножества {ai } плюсещё bai0/2c.Декодирование: поделить число на N/h. Если получилосьмало, выдать 0, если много — выдать 1.

Декодирование корректно: все ai близки к тому, чтобыделиться на N/h, а ai0/2 не близко.

Доказательство стойкости, конечно, гораздо сложнее.

Сергей Николенко Криптография с открытым ключом

Page 128: Криптография с открытым ключом - of PDMI RASsergey/teaching/cryptoclub15/... · 2016. 4. 8. · Криптография с открытым ключом

Классические протоколыО решетках

Алгоритм LLLРешетки на службе криптографии

Thank you!

Спасибо за внимание!

Сергей Николенко Криптография с открытым ключом