Электронная подпись
Как было показано ранее, при вступлении в кооператив пайщик получает ключ электронной подписи. Этот ключ криптографически связывается с графическим оттиском его собственноручной подписи на заявлении о вступлении в кооператив.
Так, после вступления в кооператив и принятия положения о порядке и правилах использования простой электронной подписи в кооперативе, электронная подпись пайщика становится равнозначной его собственноручной подписи для документов, подписываемых в отношениях с кооперативом на платформе.
Благодаря этому становится возможна автоматизация документооборота. Теперь за нажатием кнопок, там, где это необходимо, система способна автоматически создавать, подписывать и отправлять электронные документы в кооператив, а оттуда - в бухгалтерию.
Криптография¶
Разберём подробнее принципы работы простой электронной подписи и её алгоритмов. В основе — эллиптическая кривая secp256k1, та же, что применяется в биткоине, и многих других блокчен-протоколах.
Публичный ключ выглядит как PUB_K1_..., приватный — как PVT_K1_..., подпись — как SIG_K1_....
Пара ключей состоит из приватного и публичного. Приватный знает только владелец, он хранится на его устройстве. Приватный ключ способен порождать подписи для любых данных — текст, число, контрольная сумма файла, меток времени. Публичный ключ доступен системе и кооперативу по факту хранения в публичном реестре - блокчейне; по публичному ключу проверяют подпись и убеждаются, что данные не изменились, а подписант - именно тот, за кого себя выдает.
Как создаётся подпись¶
Подписать можно строку, файл или их контрольную сумму. В ЦК, согласно стандартам, мы извлекаем контрольную сумму бинарных данных PDF документа по алгоритму sha256. Полученную строку длиной 64 символа мы подписываем, используя специализированный внутренний формат хранения подписи в документах.
Однако, в целом, алгоритм прост: приватный ключ + сообщение → криптографическая подпись SIG_K1_....
Как проверяется подпись¶
Сама подпись не раскрывает приватный ключ и не позволяет восстановить документ, она только связывает подписанта с конкретными данными, которые он подписывает. Верификация подписи делает обратное: сообщение + SIG_K1_... + PUB_K1_... → проверка, что владелец приватного ключа подписал именно эти данные.Если хоть что-то изменить в данных, подпись перестанет проходить проверку — это и даёт нам гарантию целостности.
Связка подписи и аккаунта¶
Кроме криптографической проверки целостности подписи мы проверяем то, что подпись принадлежит конкретному пайщику, который является участником электронного документа, который мы проверяем. Для этого у каждого пайщика есть аккаунт в блокчейне, который выдается ему при вступлении в кооператив.
При регистрации пайщика его публичный ключ закрепляется за аккаунтом в блокчейне. Аккаунт в блокчейне — именованная область в памяти операционной системы кооперации, закрепленная за пайщиком. Подробнее об аккаунтах мы поговорим в разделе Аккаунты.
При вступлении пайщика мы получаем математически-доказуемую взаимосвязь между графическим оттиском его собственноручной подписи на заявлении, именем его аккаунта в блокчейне, которое ему выдается при регистрации, и которое также находится в мета-данных его заявления на вступление, а следовательно, и публичным ключом пайщика, который связан с этим аккаунтом, который в момент отправки заявления используется для проверки цифровой подписи, которая была получена из его приватного ключа, который остается при нём.
С этого момента всё, что подписано приватным ключом этого аккаунта, считается юридически-значимым действием именно этого пайщика. Приватный ключ для подписи электронных документов, при этом, хранится в клиенте (в устройстве пользователя) и не передается на сервер.
Что мы подписываем¶
Подписывать можно любое сообщение. Практически мы подписываем:
-
контрольные суммы электронных документов;
-
метки времени при аутентификации входа;
Во всех случаях применяется один и тот же механизм: данные → подпись приватным ключом → проверка по публичному, уже привязанному к аккаунту в публичном реестре блокчейна.
Подробнее о формате и подписи электронных документов см. раздел фабрика документов