Cryptography 它';随签名一起发送公钥是安全的

Cryptography 它';随签名一起发送公钥是安全的,cryptography,blockchain,digital-signature,packet,Cryptography,Blockchain,Digital Signature,Packet,我正在创建一个区块链,交易消息有一个发送者和接收者字段,它们只是公钥(不是地址),还有一个RSA签名字段。签名是使用发件人的私钥生成的。 要验证邮件签名,应使用“邮件发件人”字段。 所以,要更改签名,您应该更改发件人字段,然后更改消息所有者 这安全吗?这能防止假消息吗 类型TransactionBody结构{ 发件人rsa.PublicKey`json:“发件人”` 收件人rsa.PublicKey`json:“收件人”` ... } 要验证数字签名,建议发送方的公钥或其根CA(在使用证书的情况

我正在创建一个区块链,交易消息有一个发送者和接收者字段,它们只是公钥(不是地址),还有一个RSA签名字段。签名是使用发件人的私钥生成的。 要验证邮件签名,应使用“邮件发件人”字段。 所以,要更改签名,您应该更改发件人字段,然后更改消息所有者

这安全吗?这能防止假消息吗

类型TransactionBody结构{
发件人rsa.PublicKey`json:“发件人”`
收件人rsa.PublicKey`json:“收件人”`
...
}

要验证数字签名,建议发送方的公钥或其根CA(在使用证书的情况下)在接收方的信任库中可用(之前已通过其他方式添加)

验证过程应验证已签名消息的公钥在信任库中是否可用,以确保它来自受信任的颁发者。如果没有,任何人都可以生成一对密钥,只需包含公钥即可对有效消息进行签名


简而言之,您需要一种机制来验证公钥是否可信,否则数字签名将不会提高安全级别

要验证数字签名,建议发送方的公钥或其根CA(在使用证书的情况下)在接收方的信任库中可用(之前已通过其他方式添加)

验证过程应验证已签名消息的公钥在信任库中是否可用,以确保它来自受信任的颁发者。如果不可用,任何人都可以生成一对密钥并通过包含其公钥对有效消息进行签名


简而言之,您需要一种机制来验证公钥是否可信,否则数字签名将不会提高安全级别

,因此,接收方节点必须事先与发送方节点交换签名公钥?是的,接收方必须拥有发送方的公钥,以验证数字签名是否来自受信任的颁发者。或者,您可以使用由受信任实体颁发的数字证书。在这种情况下,您只需信任根证书,但这似乎不是您的情况,为什么我的解决方案不安全?因为您不能假装是某人。假设中间的一个人捕获了事务消息,并替换了
发送者
字段,然后使用自己的私钥签名。签名验证将是正确的,那么,收件人如何验证邮件是否来自有效的发件人?我现在明白了。@pedrofb已解决。谢谢,收件人节点以前必须与发件人节点交换签名公钥?是的,收件人必须具有发件人的公钥才能验证digital签名来自受信任的颁发者。或者,您可以使用由受信任实体颁发的数字证书。在这种情况下,您只需信任根证书,但这似乎不是您的情况,为什么我的解决方案不安全?因为您不能假装是某人。假设中间的一个人捕获了事务消息并替换
sender
字段,并用自己的私钥签名。签名验证将是正确的,那么,收件人如何验证邮件是否来自有效的发件人?我现在明白了。@pedrofb已解决。谢谢