Система Orphus

Доказательство корректности, использование для шифрования и электронной подписи

Имеются две стороны A и B и незащищенный канал связи между ними. Стороне A требуется передать открытое сообщение m стороне B и подписать его для того, чтобы сторона B смогла аутентифицировать сторону A.

A имеет секретный ключ SK=(x), открытый ключ PK=(p,g,y), полученные так же, как и в системе шифрования Эль-Гамаля, и хочет подписать открытое сообщение. Обозначим подпись S(m).

Для создания S(m) сторона A выполняется следующие операции:

  • вычисляет значение криптографической хэш - функциии h(m)\in[0,p-2], от своего открытого сообщения m;
  • выбирает случайное число r, gcd(r,p-1)=1;
  • используя открытый ключ, вычисляет
a=g^{r}\bmod p,
b=\frac{h(m)-xa}{r}\bmod (p-1);
  • создает подпись в виде двух чисел
S(m)=(a,b)

и посылает сообщение с подписью (m,S(m)). Получив сообщение, сторона B осуществляет проверку подписи, выполняя операции:

  • по известному соообщению m вычисляет хэш-функцию h(m);
  • вычисляет
f_1=g^{h(m)}\bmod p,
f_2=y^aa^b\bmod p;
  • сравнивает значения f_1 и f_2, если
f_1=f_2,

то подптсь подлинная, в противном случае - фальсификация.

Проверка подписи корректна, так как по малой теореме Ферма

f_1=g^{h(m)}\bmod p=
g^{h(m)\bmod (p-1)}\bmod p;

Система Orphus

Комментарии