Безопасно отправлять открытый ключ вместе с подписью

#cryptography #blockchain #digital-signature #packet

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

Вопрос:

Я создаю блокчейн, в сообщении транзакции есть поля отправителя и получателя, которые являются просто открытыми ключами (не адресом) и полем подписи RSA. Подпись генерируется с помощью закрытого ключа отправителя. Для проверки подписи сообщения вам следует использовать поле отправитель сообщения. Итак, чтобы изменить подпись, вы должны изменить поле отправителя, а затем изменить владельца сообщения.

Безопасно ли это? Предотвращает ли это поддельные сообщения?

 type TransactionBody struct {
    Sender    rsa.PublicKey `json:"sender"`
    Recipient rsa.PublicKey `json:"recipient"`
    ...
}
  

Комментарии:

1. в чем проблема с распределением ключей

Ответ №1:

Для проверки цифровой подписи рекомендуется, чтобы открытый ключ отправителя или его корневого центра сертификации в случае использования сертификатов был доступен в хранилище доверия получателя (которое было ранее добавлено другими способами)

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

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

Комментарии:

1. Итак, узел получателя должен предварительно обмениваться открытыми ключами подписи с узлом отправителя?

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

3. И почему мое решение небезопасно? Поскольку вы не можете притворяться кем-то.

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

5. Теперь я понимаю. @pedrofb решен. Спасибо