注意:我不是抄写员
我想检查我的RSA盲签名实现是否安全用于生产阶段的应用程序,我也有一些问题,我将非常希望得到回答。在过去的几天里,我做了大量的研究,并得出如下结论:
e,模nn且相对于其素数的随机数D9m的散列M = h(m).(r^emod n) S = M^d mod n,其中d是私有指数。s = S.r^{-1}如果我是正确的,这将以一个私有令牌m及其有效的签名s结束。
结果不会大于n?Question 2:我可以在m上使用任何哈希算法吗?比如SHA-256?Question 3:服务器在签名之前不会散列或删除盲消息,对吗?
m和签名s。s^e = h(m) mod n。Question 4:如何实现填充方案以防止由于Question 5的同态属性而伪造签名?<#>Question 5:此实现是否易受任何攻击?有什么改进吗?
发布于 2021-10-23 13:38:09
注意:我不是一个加密者,我想检查一下我的RSA盲签名实现是否安全,可以在生产阶段的应用程序中使用,我也有一些问题,我将非常感谢您的回答。
抱歉,但当我听到这样的问题时,听起来像是:
我不是外科医生,但我想做心脏手术。我已经做了很多研究了几天了,我想在我开始之前确保我了解基本知识.
好的,我不会那么糟糕,但听起来有点相似(如果它真的是一个“生产阶段的应用程序”,它可能并不是那么遥远。至少,如果你做错了心脏手术,你就会知道那是不管用的.
这是我的心上人,下面是一些答案:
问题1:如何将
h(m)和r^e \bmod n相乘?结果不会比n更好吗?
实际上,你把它们乘以模n。
问题2:我能不能在m上使用任何散列算法,比如SHA-256?问题4:如何实现填充方案,以防止签名由于RSA的同态性而被伪造?
我把这两个问题结合在一起,因为它们的答案是一样的。h所需要的不是直接的SHA-256,而是一个您执行哈希(例如SHA-256),然后使用PKCS1.5SSA或PSS (取决于验证器所期望的)的结果。
问题3:在签署前,服务器不会散列或删除被蒙蔽的消息,这是否正确和安全?
在这种情况下,它是正确和安全的-如果服务器进行散列或填充消息,它会把事情搞砸。记住,您在步骤4中做了散列/填充操作。
另一方面(为了回到我最初的评论),如果你需要问这些问题,你可能还没有准备好自己去实现。
https://crypto.stackexchange.com/questions/95735
复制相似问题