Представьте себе кабинет начальной школы, где ученики совсем недавно прошли операцию умножения и вот-вот собираются приступать к изучению деления. Учитель сообщает детям, что его секретный номер – 5. На следующей неделе ученики, заходя в класс обнаруживают странного рода инструкцию «Twas always thus and always thus will be» и подпись: «Ваш любимый учитель – 8». Загадка. Наиболее смышлёные ребята собираются вместе и после долгих обсуждений обнаруживают, что число букв в послании равняется 40. Перемножив секретный номер учителя на цифру, содержащуюся в подписи (5 х 8 = 40), дети успокаиваются: сообщение не было скомпрометировано. В данной ситуации, учитывая, что школьники еще не прошли операцию деления, учителя могут таким образом оставлять зашифрованные сообщения своим ученикам, не боясь раскрытия собственного секретного номера.
Цифровые подписи, основанные на эллиптических кривых работают подобным образом: держатель приватных ключей обладает «знаниями», недоступными для окружающих, а адресаты сообщения способны убедиться в правильности сообщения, но им не по силам раскрыть секретную информацию отправителя.
Для чего Биткоину нужны цифровые подписи
При переводе средств с одного адреса на другой отправитель формирует сообщение типа: «Адрес А посылает N BTC на адрес Б» и отсылает этот запрос на обработку в сеть. Соответственно, необходим механизм подтверждения подлинности этого сообщения: именно владелец адреса А и никто другой хочет передать ровно N биткоинов на адрес Б. Право создавать подобные запросы должно быть исключительно у держателя данных коинов. Именно для этого используются подписи.
Механизм криптографии с открытым ключом
Для проведения транзакции адресату необходимы:
— приватный ключ (известный исключительно ему)
— публичный ключ (доступный всем участникам сети)
— сформированное для подписи сообщение
Далее проходит процесс подписания: Как видно из схемы, создать подпись «Я подтверждаю, А» получитсялишь при наличии приватного ключа. Это дает нам гарантию того, что сообщение создано и утверждено владельцем данных монет.
Подобную систему можно реализовать, используя различные математические приемы, одним из самых актуальных является метод эллиптических кривых.
Подробнее об этом читайте в статье на Хабрахабре «Доступно о криптографии на эллиптических кривых».