#cryptography #blockchain #digital-signature #packet
#криптография #блокчейн #цифровая подпись #пакет
Вопрос:
Я создаю блокчейн, в сообщении транзакции есть поля отправителя и получателя, которые являются просто открытыми ключами (не адресом) и полем подписи RSA. Подпись генерируется с помощью закрытого ключа отправителя. Для проверки подписи сообщения вам следует использовать поле отправитель сообщения. Итак, чтобы изменить подпись, вы должны изменить поле отправителя, а затем изменить владельца сообщения.
Безопасно ли это? Предотвращает ли это поддельные сообщения?
type TransactionBody struct {
Sender rsa.PublicKey `json:"sender"`
Recipient rsa.PublicKey `json:"recipient"`
...
}
Комментарии:
Ответ №1:
Для проверки цифровой подписи рекомендуется, чтобы открытый ключ отправителя или его корневого центра сертификации в случае использования сертификатов был доступен в хранилище доверия получателя (которое было ранее добавлено другими способами)
Процесс проверки должен удостовериться, что открытый ключ подписанного сообщения доступен в хранилище доверия, чтобы убедиться, что оно исходит от надежного эмитента. В противном случае любой может сгенерировать пару ключей и подписать действительное сообщение, просто включив свой открытый ключ.
Короче говоря, вам нужен механизм для проверки того, что открытый ключ является надежным, в противном случае цифровая подпись не повысит уровень безопасности
Комментарии:
1. Итак, узел получателя должен предварительно обмениваться открытыми ключами подписи с узлом отправителя?
2. Да, у получателя должен быть открытый ключ отправителя, чтобы убедиться, что цифровая подпись исходит от надежного эмитента. В качестве альтернативы вы можете использовать цифровые сертификаты, выданные доверенным лицом. В этом случае вам просто нужно доверять корневому сертификату, но, похоже, это не ваш случай
3. И почему мое решение небезопасно? Поскольку вы не можете притворяться кем-то.
4. Предположим, что посредник перехватывает сообщение о транзакции и заменяет
sender
поле и подписывает своим собственным закрытым ключом. Проверка подписи будет правильной, итак, как получатель подтверждает, что сообщение пришло от действительного отправителя?5. Теперь я понимаю. @pedrofb решен. Спасибо