使用私钥加密而不是签名是个坏主意吗?

Is encrypting with private key instead of signing a bad idea?

我正在使用本地 URL 方案在用户单击 link 时向客户端提交负载,并且必须确保这仅用于我的特定 Web 应用程序。 所以我使用密钥对,使用私钥加密服务器上的有效负载,生成一个 link 客户端上的协议处理程序可以使用 public 密钥解密,验证有效负载应该是已处理。

那么发送私钥加密的有效载荷而不是明文有效载荷加签名是否更不安全(如果是,为什么)?

你这是在签名!

加密 是指使用 public 密钥 隐藏有效负载,然后使用 解密]私钥。当我想向您发送秘密消息时,我会使用您的 public 密钥(因为我知道)并加密我的消息。这将确保只有您可以使用您的私钥解密它。

签名 反之亦然。如果在加密过程中我想确保只有你可以解密我的消息,那么通过签名我想确保消息的所有收件人都可以确定其真实性。如果你用你的私钥 (signing) 加密某些东西,任何拥有你的 public 密钥的人都可以解密它并验证它的发送者。

在您的情况下,如果您只想证明您的身份(如证书、jwt 令牌等),则需要使用签名方法。如果您想安全地传输负载,请使用加密。

希望对您有所帮助!

发现还有其他 Stack Exchange 站点很好地回答了这个问题:

https://crypto.stackexchange.com/questions/2123/rsa-encryption-with-private-key-and-decryption-with-a-public-key

https://security.stackexchange.com/questions/11879/is-encrypting-data-with-a-private-key-dangerous

我应该再搜索一下再问。