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

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

![](/files/-M8LePmpHQCxVn7zaUMo)

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

![](/files/-M8LeZtMUFEdYslcDB31)

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

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

![](/files/-M8Lek80ZmJgwFlCJutF)

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.gp7.app/ru/kriptografiya-dlya-vzaimodeistviya-s-blokcheinom/generaciya-cifrovoi-podpisi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
