2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Атака на NTRU
Сообщение06.01.2015, 04:33 


24/12/11
60
Дамы и господа, поздравляю всех с новым годом! А теперь к делу.
Ныне мне пришлось разбираться с криптосистемой NTRU. Затруднения возникли при атаке на основе решёток. Дело в том, что мне не удалось найти никакого практического примера. Тогда я решил взять для опыта параметры криптосистемы из вики https://ru.wikipedia.org/wiki/NTRUEncrypt и попытаться восстановить закрытый ключ.
http://www.math.brown.edu/~jpipher/grenoble.pdf например здесь, есть описание атаки
http://m.mathnet.or.kr/mathnet/kms_tex/982882.pdf или здесь.
Решетки, алгоритмы и современная криптография даже на русском.

Первым делом надо построить матрицу, строки которой будут образовывать решётку:

(Оффтоп)

lat = {
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 25, 22, 20, 12, 24, 15, 19, 12, 19, 16},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 8, 25, 22, 20, 12, 24, 15, 19, 12, 19},
{0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 16, 8, 25, 22, 20, 12, 24, 15, 19, 12},
{0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 12, 19, 16, 8, 25, 22, 20, 12, 24, 15, 19},
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 12, 19, 16, 8, 25, 22, 20, 12, 24, 15},
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 15, 19, 12, 19, 16, 8, 25, 22, 20, 12, 24},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 24, 15, 19, 12, 19, 16, 8, 25, 22, 20, 12},
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 24, 15, 19, 12, 19, 16, 8, 25, 22, 20},
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 20, 12, 24, 15, 19, 12, 19, 16, 8, 25, 22},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22, 20, 12, 24, 15, 19, 12, 19, 16, 8, 25},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 25, 22, 20, 12, 24, 15, 19, 12, 19, 16, 8},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32}};
(синтаксис wolfram mathematica)
Далее необходимо редуцировать базис решётки. В результате получается следующая матрица:

(Оффтоп)

LatticeReduce[lat]
{{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{-1, 0, 0, 1, 0, -1, -1, -1, 2, 1, -2, -3, 0, 0, 0, 3, 0, 0, -3, 3, 0, 0},
{1, 0, -1, -1, -1, 2, 1, -2, -1, 0, 0, 0, 3, 0, 0, -3, 3, 0, 0, -3, 0, 0},
{-2, 2, 2, -3, 1, 0, -1, 3, -1, -1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, -3},
{1, -2, -1, 2, 1, 0, 0, -1, 0, 1, 1, 3, -3, 0, 0, 3, 0, 0, 0, -3, 0, 0},
{-1, -1, 1, 1, 0, -1, 0, 1, 0, 0, 1, -3, -3, 0, 3, 3, 0, 3, 0, 0, -3, 0},
{-2, -1, 2, 1, 0, 0, -1, 0, 1, 1, 1, -3, 0, 0, 3, 0, 0, 0, -3, 0, 0, 3},
{0, -1, 0, 1, 1, 1, -2, -1, 2, 1, 0, 0, 0, -3, 0, 0, 3, -3, 0, 0, 3, 0},
{0, 1, 0, 1, -1, 0, 3, -1, -1, 2, 0, -3, 0, 0, 0, -3, 0, 3, 0, 0, 0, 3},
{-1, 0, 3, -1, -1, 2, 0, 0, 1, 0, 1, -3, 0, 3, 0, 0, 0, 3, -3, 0, 0, 0},
{1, -1, 0, 3, -1, -1, 2, 0, 0, 1, 0, 0, -3, 0, 3, 0, 0, 0, 3, -3, 0, 0},
{-1, -1, -3, -1, -1, -2, 4, 1, 2, 2, 3, -3, 0, -3, 2, 1, -1, 0, 0, 2, 1, 1},
{-3, 1, 3, -1, 3, 2, -3, -3, 0, 0, -2, -2, 3, 2, -2, 4, -2, 1, -1, -3, -1, 1},
{-2, -1, 2, 3, -1, -2, -1, 1, -3, 3, -2, 1, 2, 0, 0, 0, -1, 3, -1, -4, 0, 0},
{1, -2, -3, 1, 2, 1, -1, 3, -3, 2, 2, -2, 0, 0, 0, 1, -3, 1, 4, 0, 0, -1},
{0, -1, 0, 3, -3, -2, -3, 6, -3, -2, 3, 0, 0, 3, 1, -1, 0, 0, 0, -2, -2, 1},
{-3, 0, -1, 2, 4, -1, -1, -2, 1, 0, 2, 0, 1, 5, -3, 0, 0, -1, 0, -1, -1, 0},
{-3, 1, -1, 0, -1, 0, 2, -5, 3, 2, 2, 0, -1, -1, -1, 3, 0, 0, 2, 1, -3, 0},
{1, -1, -2, -1, 0, 2, 1, 3, 1, -3, -2, 0, -1, 1, -2, 0, -4, -2, 4, -2, 1, 5},
{2, -2, 4, 1, 1, 0, 0, 0, -4, 2, -1, -2, 3, 1, 0, 3, -2, 1, 2, -1, -3, -2},
{1, -2, 0, -3, 0, -2, 1, 3, 2, 2, 3, 1, 3, 0, 1, -4, 2, 0, 0, 0, -2, -1},
{-2, -2, 1, -3, -1, 0, 3, 0, 0, 1, 1, 3, 0, 0, 5, 3, 3, 3, 6, 2, 4, 3}}
(синтаксис wolfram mathematica)
Насколько я понял, после редуцирования можно относительно просто найти кратчайший вектор, который будет равен вектору $\tau = (\alpha f, g)$, который и является нашей целью. Но найти способ нахождения кратчайшего вектора для меня оказался весьма сложной задачей. Да и не вижу я в полученной матрице ничего похожего на $f$.
Подскажите, как добиться положительного результата.

Заранее благодарю всех за внимание и прошу прощения за оффтопик. Не нашёл лучшего решения для изображения матрицы 22 на 22.

 Профиль  
                  
 
 Re: Атака на NTRU
Сообщение07.01.2015, 02:02 
Модератор
Аватара пользователя


11/01/06
5660
Поиграйтесь со значением $\alpha$.

 Профиль  
                  
 
 Re: Атака на NTRU
Сообщение07.01.2015, 03:44 


24/12/11
60
maxal в сообщении #957759 писал(а):
Поиграйтесь со значением $\alpha$.

Я правильно понимаю, что при адекватном выборе $\alpha$ одна из строк матрицы после редуцирования решётки будет в точности соответствовать $\tau$?

 Профиль  
                  
 
 Re: Атака на NTRU
Сообщение07.01.2015, 09:17 
Модератор
Аватара пользователя


11/01/06
5660
Alex_CAPS в сообщении #957780 писал(а):
maxal в сообщении #957759 писал(а):
Поиграйтесь со значением $\alpha$.

Я правильно понимаю, что при адекватном выборе $\alpha$ одна из строк матрицы после редуцирования решётки будет в точности соответствовать $\tau$?

Гарантии нет, но такое возможно. Можно ещё поискать этот вектор как линейную комбинацию с небольшими коэффициентами нескольких первых векторов редуцированного базиса.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group