Здравствуйте,
> .... > Хотелось бы добавить небольшой комментарий по поводу
Эх, если бы ещё убрать чрезмерное цитирование других и самого себя. Прочитать до конца - совершить подвиг. :) Мы куда спешим? Или Интернет плохой? Если связь плохая, то у форума имеется функция редактирования. А, быть может, Вас графомания замучила? :)
> .... > вместо y1 = p - y0 mod p можно положить y1 = t*y0 mod p, > где t^3 = 1 и
Мелкая погрешность. Вероятно, Вам известно, что корни n-ой степени для любого y из группы не нулевых элементов, удовлетворяющей условиям ЭЦП типа Эль-Гамаля, могут существовать только при том условии, что n является делителем порядка группы. В данном случае, 3 – должно быть делителем p-1.
> … > Наиболее интересны, на мой взгляд, следующие результаты:
При условии выполнения ограничений, перечисленных в ГОСТ-ах, *DSA-ах и прочих Эль-Гамалях всё теоремы уже доказаны. Так, что нам от классиков осталась только проверка ограничений, чем и занимаемся.
> критерий сверхуниверсальной подписи r = 1 mod p
Такой критерий не доведён до уровня простого программиста.
> критерий проверки открытого ключа y^q = 1 mod p
Итого выполнение требований ГОСТ Р 34.10-94, кратко и не загромождая форум тривиальными обоснованиями:
- проверку a, p, q, как достаточно дорогою рекомендую осуществлять по таблице допустимых параметров, которую запихнуть в СКЗИ. А можно и в лоб, но тогда с кэшированием результатов;
- проверку k осуществлять при проверке ЭЦП следующим алгоритмом:
1. если 1 < r’ < q, то k – хорошее;
2. если 0 < s < q и a^s == y mod p, то k – плохое;
3. если 1 < y < p и y^q == 1 mod p, то k – хорошее;
4. k – плохое;
Примечание: В принципе, для систем реального времени обязанных быть устойчивыми к DoS ”атакам”, можно пытаться аналитически обосновать, что при избранных параметрах p и q, для любого 1 < n < (p-1)/q всегда найдётся такой j != q, являющийся делителем p-1, что (1 + n*q)^j == 1 mod p. И если такое удастся, то проверки 2 и 3 не потребуются.
- проверку x осуществлять в центре доверия при регистрации открытого ключа:
1. если y <= 1 или p <= y, то x – плохое;
2. если такой y уже встречался, то x – плохое;
3. если ЭЦП под подписанным зарытым ключом x запросом на регистрацию открытого ключа (реквизиты + у) совпала и y^q == 1 mod p, то x – хорошее;
4. x – плохое;
- проверку y осуществлять при проверке ЭЦП на основании информации от центра доверия. В качестве дополнительных мер защиты можно проверить диапазон и y^q == 1 mod p, но это оправдано только в случае проверки ЭЦП при установке в СКЗИ открытого ключа центра доверия, наличия нескольких центров доверия, не зависимых каналов о регистрации и компрометации открытых ключей, архивировании и т.п.
--
LSE, Сергей Леонтьев, Крипто-Про, http://www.CryptoPro.ru
|