Тема: Warden
Показать сообщение отдельно
Старый 25.05.2010, 20:46   #32
Nomad
Новичок
 
Регистрация: 25.05.2010
Сообщений: 11
Сказал(а) спасибо: 1
Поблагодарили 14 раз(а) в 5 сообщениях
Nomad На верном пути
По умолчанию

Теперь немного теории. Весь алгоритм я описывать не буду, читайте Википедию.
В общем случае задача взлома RSA это нахождение значения d при известных e (публичный ключ) и m (модуль). При этом рекомендуется выбирать небольшие значения e, но не меньше 256 степени значащих бит для 1024-битного ключа, иначе действует теорема Винера и есть некий упрощенный способ поиска d. У нас же e и d поменяны местами, что совершенно не влияет на теорему Винера и вообще формулы поиска. При этом число d совсем небольшое (гораздо меньше 256 бит).
Также e и d связаны общими правилами:

d*e = 1 mod n'
1 < e < n'

как следствие из этих двух формул произведение d*e должно обязательно быть больше n'
e > n'/d и e < n'

значения n и n' связаны так:
n' = (p-1)*(q-1)
n = p * q
из чего следует что
n' = n - p - q +1
при этом p и q - простые числа, заметно меньшие, чем n.

Даже примерно прикинув, что n' ~= n мы можем обозначить границы значений e как n/d < e < n.
На самом же деле n' намного меньше n и диапазон для перебора еще меньше. Ради эксперимента можно перебрать простые числа до 8-10 знаков, чтобы еще на несколько порядков сузить диапазон значений e.

Еще надо рассмотреть вариант с теоремой Винера - она актуальна если q < p < 2q, т.е. когда p и q одного порядка. Такое упрощение может очень сильно сузить диапазон поиска, ведь получится, что
n < p*p < 2*n, а значит
n ^ 1/2 < p < 2 * n ^ 1/2, т.е. число p лежит в фиксированных пределах и мы можем одним движением вычеркнуть десятки машинных лет перебора

Но вообще, перед тем как перебирать, надо еще хорошенько почитать литературу. Ибо можно годами перебирать значения, которые окажутся откровенно лишними.
Nomad вне форума   Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
Konctantin (25.05.2010), lordinpvp (26.05.2010), LordJZ (25.05.2010), sven (26.05.2010)