RSA - цифровая подпись

Ранее вы рассмотрели порядок шифрования сообщения с помощью RSA.

Теперь же рассмотрим алгоритм генерации цифровой подписи - то есть создания контрольного значения по которому было бы возможно судить о том - было ли изменено сообщение при передаче по каналу.

Смысл

Цифровая подпись может использоваться=

  1. вместе с шифрованием сообщения
  2. а может просто прилагаться к сообщению, переданному в открытом виде

- и в том и в другом случае цифровая подпись позволяет убедиться , что сообщение было передано именно тем человеком, от кого оно ожидалось - а не злоумышленником

Алгоритм

Итак - Алиса пишет Бобу - она не хочет шифровать текст, а передаёт его в открытом виде (хотя можно и зашифровать, так к рассматриваемым ниже действиям добавятся ещё эти)

Чтобы подписать своё сообщение Алиса должна:

  1. Взять свой ''закрытый ключ''$\Large (d,n)$
  2. Вычислить значение подписи - аргументом является передаваемое сообщение =
    $\Large s = S_A \left( m \right) = m^d \mod n$
  3. Передать сообщение и подпись $\Large \left\{ m, s \right\} $Бобу по каналу связи

Чтобы проверить подпись Алисы Боб должен:
принять сообщение и подпись $\Large \left\{ m, s \right\} $ от Алисы

  1. Взять открытый ключ Алисы $\Large (e,n) $
  2. Вычислить прообраз сообщения (то с чем мы будем сравнивать пришедшее в открытом виде $\Large m$):
    $\Large m' = P_A \left( s \right) = s^e \mod n$
  3. Сравнить $\Large m' $и $\Large m$ и сделать выводы о том - было ли изменено сообщение (если $\Large m' $и $\Large m$ не совпадают, то это значит, что доверять переданным данным нельзя )