【问题标题】:RSA Signature MechanicsRSA 签名机制
【发布时间】:2018-02-18 06:55:19
【问题描述】:

所以,我一直在阅读有关 RSA 加密的信息,其中公钥用于加密,而私钥用于解密。而对于 RSA 签名,私钥执行加密操作生成签名,公钥对签名执行解密操作以验证它。

在我看来,加密/解密操作只是将数据转换为另一种形式,所以我想也可以通过使用私钥执行解密操作来生成签名,并且发送者通过执行加密操作来验证签名使用公钥。

总之:
RSA 加密 -> 公钥加密,私钥解密
RSA 签名 -> 私钥加密,公钥解密

我的问题是这是否也有效:
RSA 签名 -> Private Key 对消息的哈希执行 DECRYPTION 操作以生成签名,Public Key 执行 ENCRYPTION 操作以验证签名

【问题讨论】:

  • 我投票结束这个问题,因为它不是一个编程问题,而是关于 RSA 的操作。
  • 没有给定密钥的“加密”或“解密”操作。只有“RSA 操作”,使用私钥或公钥(和模数)。 OpenSSL 有RSA_private_encrypt 和类似的函数,但是它们处理的是填充和算法标识符之类的东西,底层的数学函数是相同的。

标签: authentication cryptography rsa


【解决方案1】:

RSA 操作只是x^exp mod N,其中 exp 是公共或私有指数……当它是公共指数 (e) 时称为加密,当它是私有指数 (d) 时称为解密

这是因为x^(e*d) mod N = x ...之所以有效,是因为 e 和 d 之间的特殊关系,但不是这里的主要主题...如果您需要了解更多信息,请阅读 RSA 密钥对生成

对于查看 RSA 签名的一种非常基本的方式,签名部分只是切换 e 和 d,使签名使用 d 并验证使用 e...这导致了看似简单的说法...签名是只是用私钥加密...

请仔细阅读下一行:

无论你在网上某处读到什么...... SIGN 和 ENCRYPT 都不一样

是的,计算 RSA 签名涉及上面的 RSA 操作...并且它涉及 d ...但是其他输入的变化... x ...它不是您要签名的消息...这是 matt 前面指出的填充结果(类似于 PADD(HASH(MESSAGE)),其中 PADD 和 HASH 是可以选择的函数)

“签名是用私有指数加密”仅适用于它的数学部分,对于密码理论部分......这种看待它的方式通常不受欢迎......对于所有实际实现都有它周围还有很多其他的东西,这使得签名和加密两个完全不同的功能......而对于理论部分,它还不够精确

【讨论】:

  • 感谢分享!
猜你喜欢
  • 2010-12-02
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 2012-08-07
  • 2018-08-11
  • 2016-01-15
  • 2021-11-11
  • 1970-01-01
相关资源
最近更新 更多