Допустим, умножение и сложение - это некоторые необратимые вычисления.
Тогда идею цифровой подписи можно изложить следующими выражениями:
Код: Выделить всё
A⇒B // Выведение публичного ключа
C+A⇒D // Вычисление цифровой подписи
D*C*B⇒? // Проверка подписи
A - Приватный (секретный) ключ
B - Публичный (открытый) ключ
C - Сообщение
D - Экземпляр цифровой подписи
? - Результат проверки соответствия сообщения и цифровой подписи
Приватный ключ следует создавать самостоятельно и все операции с ним выполнять только локально в приложениях не подключающихся к интернету.
Публичный ключ выводится из приватного ключа.
Проверяющие вычисления должны показать Ноль, если цифровая подпись, сообщение и публичный ключ соответствуют каждый каждому. Любой ненулевой результат проверки указывает наличие изменений в компонентах.
В отличии от тривиальных арифметических уравнений, в криптографических функциях невозможны закономерные изменения аргументов с целью приведения вычислений к нужному результату.