发送 public-key 和签名是安全的
It's safe to send public-key along with signature
我正在创建一个区块链,交易消息有一个发件人和收件人字段,它们只是 public 个密钥(不是地址),以及一个 RSA 签名字段。签名是用发件人的私钥生成的。
要验证消息签名,您应该使用消息发件人字段。
因此,要更改签名,您应该更改发件人字段,然后更改消息所有者。
这里安全吗?这样可以防止假消息吗?
type TransactionBody struct {
Sender rsa.PublicKey `json:"sender"`
Recipient rsa.PublicKey `json:"recipient"`
...
}
要验证数字签名,建议 public 发件人的密钥,或者在使用证书的情况下其根 CA,在收件人的信任库中可用(之前已经通过其他方式添加)
验证过程应验证已签名消息的 public 密钥在信任库中是否可用,以确保它来自受信任的颁发者。如果没有,任何人都可以生成一对密钥并通过包含他们的 public 密钥来签署有效消息。
简而言之,您需要一种机制来验证 public 密钥是否可信,否则数字签名不会增加安全级别
我正在创建一个区块链,交易消息有一个发件人和收件人字段,它们只是 public 个密钥(不是地址),以及一个 RSA 签名字段。签名是用发件人的私钥生成的。 要验证消息签名,您应该使用消息发件人字段。 因此,要更改签名,您应该更改发件人字段,然后更改消息所有者。
这里安全吗?这样可以防止假消息吗?
type TransactionBody struct {
Sender rsa.PublicKey `json:"sender"`
Recipient rsa.PublicKey `json:"recipient"`
...
}
要验证数字签名,建议 public 发件人的密钥,或者在使用证书的情况下其根 CA,在收件人的信任库中可用(之前已经通过其他方式添加)
验证过程应验证已签名消息的 public 密钥在信任库中是否可用,以确保它来自受信任的颁发者。如果没有,任何人都可以生成一对密钥并通过包含他们的 public 密钥来签署有效消息。
简而言之,您需要一种机制来验证 public 密钥是否可信,否则数字签名不会增加安全级别