📐 МАТЕМАТИКА

Как работает цифровая подпись и почему её невозможно подделать

Подпись на бумаге легко скопировать, а цифровую — нет, даже если у вас есть само сообщение и подпись к нему. Разбираемся, как математика гарантирует, что документ подписали именно вы и его никто не менял.

Это перевёрнутая криптография: здесь запирает закрытый ключ, а отпирает — открытый, и именно поэтому подпись доказывает авторство.
Цифровая подпись отвечает сразу на два вопроса: «это точно ты?» и «текст не подменили?». Бумажная подпись — только на первый, да и то плохо.

Когда вы устанавливаете обновление на телефон, он проверяет цифровую подпись — иначе любой мог бы подсунуть вредонос под видом апдейта. Когда подписываете договор онлайн, подпись юридически значима. Как несколько чисел заменяют автограф и оказываются надёжнее его?

Два ключа, но наоборот

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

Логика безупречна: открытый ключ известен всем, поэтому проверить подпись способен любой. А создать её способен лишь владелец закрытого ключа — то есть вы. Это и есть доказательство авторства.

Сначала — отпечаток сообщения

Подписывать целый документ накладно, поэтому сначала из него вычисляют хеш — короткий «отпечаток» фиксированной длины. Хорошая хеш-функция обладает двумя ключевыми свойствами:

  • изменишь хоть один символ в тексте — отпечаток меняется до неузнаваемости;
  • по отпечатку невозможно восстановить исходный текст или подобрать другой текст с тем же отпечатком.

Этот отпечаток и подписывается закрытым ключом. Схематично:

$$\text{подпись} = \text{знак}_{\text{закрытый}}(\text{hash}(\text{сообщение}))$$

Почему хеш так важен

Хеш связывает подпись с конкретным содержанием. Если злоумышленник изменит хоть запятую, отпечаток станет другим, и подпись к новому тексту не подойдёт. Проверка мгновенно покажет подделку.

Как проверяют подпись

Получатель делает две вещи. Во-первых, сам вычисляет хеш полученного документа. Во-вторых, открытым ключом «разворачивает» подпись и достаёт хеш, который заложил отправитель. Если оба хеша совпали — подпись подлинная и текст цел:

Сравнение хешейВывод
СовпалиПодпись верна, текст не менялся
Не совпалиТекст подменён или подпись чужая

Почему подделка обречена

Чтобы подделать подпись, нужен ваш закрытый ключ — а он есть только у вас. Подобрать его из открытого ключа невозможно по тем же причинам, что и в RSA: вычислительная задача неподъёмна. А подменить текст без переподписания нельзя, потому что хеш сразу выдаст несоответствие. Подделка требует одновременно угадать ключ и найти коллизию хеша — двойная невозможность.

Сертификаты: а как доверять самому ключу

Тут возникает тонкий вопрос. Подпись доказывает, что её поставил владелец конкретного открытого ключа. Но откуда вам знать, что этот ключ действительно принадлежит вашему банку, а не самозванцу? Эту брешь закрывают сертификаты. Доверенный центр сертификации сам подписывает открытый ключ банка своей подписью, ручаясь: «да, этот ключ настоящий». Получается цепочка доверия — ваш браузер верит центру, центр ручается за банк. Так одна и та же математика подписи выстраивается в многоэтажную систему, где каждый уровень подтверждает подлинность следующего, и в основании лежат несколько ключей, которым доверяют по умолчанию.

Где вы доверяете подписям

Обновления операционных систем, защищённые сайты, банковские документы, блокчейн-транзакции — везде цифровые подписи молча подтверждают: «это действительно от того, кто заявлен, и ничего не тронуто». Бумажный автограф рядом с этим выглядит наивно: его копируют за минуту, а математическую подпись — никогда. Подпись из чисел оказалась честнее подписи из чернил.

#безопасность#ключи#криптография#хеш#цифровая подпись