Криптоанализ RSA Докладчик: Николай Гравин (311 Группа)
RSA: Берем p,q- два больших простых числа(512 бит) n=p q, (n)=(p-1) (q-1) e< (n),такое что gcd(e, (n))=1 d-? : e d=1 (mod (n)) (e,n)-открытый ключ, d-закрытый ключ Задача: Как зная e и (n) найти за полиномиальное время такое d(такое что e d=1 (mod (n))).
Encryption and Digital Signature Шифрование: M О Z n( секретное сообщение ) C=M^e(mod n) то, что мы посылаем получателю. D=С^d(mod n) D=M, D является расшифровкой C Цифровая подпись: М-сообщение или Hash от него Мы посылаем (M,S), где S=M^d(mod n)–подпись. Каждый может проверить, что S^e=M, но не может сам придумать по M такое S.
Полезный теоретический факт Пусть (N,e)-публичный ключ, d- закрытый ключ. Тогда зная (N,e,d) можно разложить N на простые множители N=p q за полиномиальное время.
Полезный теоретический факт Пусть (N,e)-публичный ключ, d- закрытый ключ. Тогда зная (N,e,d) можно разложить N на простые множители N=p q за полиномиальное время. Задача: Докажите этот факт.
Теоретический факт Открытый вопрос: Пусть даны N,e:gcd(e, (n))=1 и F:Z n - >Z n, F(x)=x^(1/e)(mod n) – вычисляется за единичное время. Существует ли тогда полиномиальный алгоритм, раскладывающий N на простые множители.(F(x)-оракул) Результат: для малых e ответ нет. Boneh и Venkatesan доказали,что в определенной модели, ответ Да на вопрос для малых e даст нам эффективный алгоритм разложения N.
Методы разложения N на простые сомножители Trial Division Pollards p-1 Method Pollards rho Method Elliptic Curve Method Quadratic Sieve Method Number Field Sieve Method
Trial Division Пытаемся разделить n на все простые числа от 1 до n.
Trial Division Пытаемся разделить n на все простые числа от 1 до n. Плохой метод (работает log(n)*2n^1/2)
Trial Division Пытаемся разделить n на все простые числа от 1 до n. Плохой метод (работает log(n)*2n^1/2) Хороший метод так, как больше чем у 91% чисел есть простой делитель меньший 1000.
Pollards p-1 Method n=pq, у p-1 все простые делители
Pollards rho Method Если у нас есть n исходов и 1.2*(n^1.2) испытаний то вероятность того, что 2 элемента совпали >50%.(birthday paradox) Теперь придумаем какую-нибудь функцию f: Z n - >Z n, которая ведет себя в Z nрандомно(f(x)=x^2+1(mod n)-подойдет) Начнем выписывать последовательность x 1,x 2,x 3,…, где x i+1 =f(x i ), параллельно будем считать gcd(x i -x j,n) для всех i и j – если gcd не 1 то мы разложили n.
Pollards rho Method Замечание Если считать для всех пар i и j gcd( x j -x i, n), то мы сделаем слишком много операций.
Pollards rho Method Замечание Если считать для всех пар i и j gcd( x j -x i, n), то мы сделаем слишком много операций. Вопрос: Как этого избежать?
Pollards rho Method Замечание Если считать для всех пар i и j gcd( x j -x i, n), то мы сделаем слишком много операций. Вопрос: Как этого избежать? Ответ: Проверять только для j=2i.
Литература Twenty Years of Attacks on the RSA Cryptosystem (Dan Boneh) The Quadratic Sieve Factoring Algorithm (Eric Landquist) Cryptanalysis of RSA: A Survey (Calros Frederico Cid)