Генерация цифровой подписи

Ключи необходимы для расчета цифровой подписи — основы любого блокчейн-решения. Если пользователь предоставил сети транзакцию и валидную подпись, сеть может проверить подпись и убедиться, что она создана при знании ключа, так как создать подпись без знания ключа математически невозможно. Сохранность и секретность ключа — наиболее важная задача любого пользователя блокчейн-решений, так как, если ключ окажется в руках другого пользователя, сеть будет принимать подписанные им сообщения как сообщения владельца.

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

Разделить ключи можно разными способами, самый простой и логичный — представить ключ в виде строки и разделить на равные части. Например, разделим ключ на две части: левую сохраним на компьютере, а правую на телефоне. В таком случае, имея удобный способ передачи части (без сохранения) в момент создания подписи, мы обеспечим базовый принцип разделения. Момент объединения компонентов — это слабая (уязвимая) точка, так как при этом происходит разглашение секрета. Очевидно, что если злоумышленник получит доступ к компонентам ключа в момент их объединения, то ему не составит труда заполучить полный ключ и дальше представиться для сети его владельцем.

Распределенные ключи без разглашения работают так, чтобы в момент подписания их не нужно было передавать по сети. Если максимально упростить описание схемы взаимодействия, то можно сказать, что каждый компонент локально создает свой результат — часть подписи. Часть подписи, как и вся подпись целиком, — это публичная и не чувствительная к разглашению информация, поэтому при ее отправке можно не беспокоиться о сохранении конфиденциальности.

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

Last updated