Search
Write a publication
Pull to refresh
11
0
Владлин Моисеенко @mvladlin

Программист и не только

Send message

Дискретный логарифм (DLOG) по модулю p \quad g^x \equiv a \pmod p

Пример для GF(7) для примитива g = 3

3^0 \equiv 1 \pmod 7
3^1 \equiv 3 \pmod 7
3^2 \equiv 2 \pmod 7
3^3 \equiv 6 \pmod 7
3^4 \equiv 4 \pmod 7
3^5 \equiv 5 \pmod 7
3^6 \equiv 1 \pmod 7

Обычно для DLOG строят таблицу логарифмов, главный минус которой - можно построить только по одному g.

Таблица степеней - это перевернутая таблица логарифмов, строка x переносится в шапку таблицы степеней и сортируется, строка a переносится вниз, а слева появляется возможность добавить колонку для g, см. рис.

таблица степеней слева, таблица логарифмов справа
таблица степеней слева, таблица логарифмов справа

По идее в таблицу степеней можно добавить колонку дляx=0но ее обычно опускают.

Наверное моя вина - в статье неправильно расставлены акценты.

У меня нет претензий к DH, описанные уязвимости - математические.

Они "пришли" в протокол DH вместе с дискретным логарифмом (DLOG).

Создатели DH всегда подчеркивали что зависят от DLOG.

И вообще протокол DH - прекрасная идея.

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

А статья будет полезна начинающим криптографам - к которым причисляю и себя.

Нет уязвимости в DH, есть (не уязвимость) а особенность DLOG.

А насчет вероятности стремящейся к 0 - Вы правы на 100%

Утверждение о том, что g^(p-2) = g^(-1) известно, это простое следствие малой теоремы ферма, написано даже в википедии

Да, и описана у меня в статье

Насчет (p-1)/2 точно не думаю - уж слишком "наверху" находится, смущает что не описано в какой-нибудь вики или открытой статье, чтобы быстро находилось.

Я думаю что и известен пример с (p-2) хотя спрятан дальше.

Спасибо, для математики не важно - большое p или маленькое.

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

Что касается p-2 - то этот случай тоже давно известен. Там открытый ключ окажется маленьким

Сможете математически доказать?

Спасибо, почитаю, не слишком ли глубоко спрятано "циклическую подгруппу (простого) порядка (p-1)/2 " и у меня в статье имеется ввиду классический DH

Спасибо, но это обсуждение с двумя минусовыми ответами, а не утверждение.

Находится в гугле за минуту

Ccылку пришлите где вы нашли запрет на использование в качестве закрытого ключа (p-1)/2 ?

Жду вторую часть, нашел небольшую ошибку визуализации P-блока при расшифровке, создал issue https://github.com/AlexeyCamacho/Basic_SP_Encryption/issues/1

Не очень то я в плюсах :(

Почитал несколько статей про эти коды РС(Рида-Соломона) - что то как то "рыхло", куча способов реализации, в общем нарыл следующее - в кодах РС у понятия "порождающий полином" два разных применения:

  1. "порождающий полином" для полей Галуа, полностью повторяет то, что я имею в виду в своей статье.

  2. "порождающий полином" для кодов РС, используемый на этапе кодирования, в одной статье видел его название как "полином-генератор" (с англ. generator polynomial) так и буду в дальнейшем его называть, чтобы не путать с первым.

А в этой статье - это прямо видно, скрин привожу:

Добавляет непонятности, что использование порождающего ("неприводимого" как на скрине) полинома является необязательным. Например, если используется поле \mathrm{GF}(p^1), так как результат можно получить по mod. Также, кажется и у Вас в проекте, дали подсказку - PrimeNumber^1

Еще в статье порождающий полином тоже не использовался, так как поле \mathrm{GF}(7). В этой статье комментарии очень интересные.

Еще больше непонятности добавляет, что и "полином-генератор" (2-е применение) является кажется необязательным, привожу цитату из комментариев из выше приведенной статьи (поправил немножко):

... Ваш алгоритм похож на тот, который мы изучали. Методы, которые у нас были по кодированию:

1) чистое DFT;

2) несистематическое кодирование с g(x);

3) систематическое кодирование с g(x) и вычислением остатка;

4) систематическое кодирование с полиномом парности.

...

Таким образом, если нужно перейти на более чем первую степень, т.е. использовать поле \mathrm{GF}(p^n), при n>1, понадобится порождающий полином для полей Галуа.

Про "полином-генератор" (2-е применение) не буду говорить, так как не разбираюсь.

Вроде так

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

Наверное в ваших рассуждениях есть смысл - попробуйте сами реализовать свою идею.

Я честно говоря уже "охладел" к конечным полям, на столе лежит другой проект.

Спасибо, очень интересно - руки чешутся попробовать разобраться

С этим могу согласиться, смысла для поля \mathrm{GF}(p) искать порождающие полиномы нет. В статье так и написано:

Для \mathrm{GF}(p) можно обойтись получением результата по mod.

Единственное, у Вас неудачный пример с \mathrm{GF}(9), так как 9 не простое число - мультипликативную группу по этому полю не построить, для 9 элементов нужно использовать поле \mathrm{GF}(3^2)

Утверждение ложно . Например для поля F9 имеется 16 примитивных многочленов , а по вашей формуле получается 2...

Во-первых, формула подтверждается эмпирическим путем.

Во-вторых, Вы мне льстите - это не моя формула, если бы я имел отношение к данной формуле, я бы не преминул это указать.

Кстати, в самой статье я привел ссылку на статью где приведена данная формула, если не достаточно, вот еще.

А у Вас что-то с расчетом не то.

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

1

Information

Rating
1,143-rd
Location
Щелково, Москва и Московская обл., Россия
Date of birth
Registered
Activity