gpt4 book ai didi

java - 充气城堡 : Detached Enveloped Signature Changes at Every Run

转载 作者:行者123 更新时间:2023-11-30 03:58:32 25 4
gpt4 key购买 nike

我正在关注帖子generating and verifying digital signature 。签名数据在所有运行中保持不变,但分离的信封签名在每次运行中都会变化。相同的文本如何生成不同的独立信封签名?

最佳答案

将评论作为答案...

同一私钥对相同数据的签名可能不同的主要原因有两个。

签名算法引起的变化

某些签名算法,最重要的是 DSAECDSA ,显式地将签名创建基于随机选择的值k。这种“随机性”是必需的,随机签名值的熵、保密性和唯一性 k 至关重要。违反这三个要求中的任何一个都可能向攻击者泄露整个私钥,这一点非常重要。使用相同的值两次(即使在保持 k secret 的情况下)、使用可预测的值,或者在多个签名中的每个签名中泄漏甚至几个 k 位,都足以破坏算法。该要求可以通过实际随机的 k 或以确定性方式构建的 k 来满足,这也保证了熵、保密性和唯一性,参见。 RFC 6967 .

不过,OP 引用了使用 RSA 的代码。该算法不需要这样的随机参数(即使填充方案可能包括随机性)。

签名属性引起的变化

差异的另一个原因是签名数据不仅仅包括文档数据。

当谈论“签名”时,人们通常不仅仅指签名过程字节数组输出,而是指根据CMS的签名容器。标准。

这样的容器中可能有多个单独的签名,并且每个签名可能具有多个未签名或签名的属性。正如“签名属性”这个名称所暗示的那样,签名值的计算也包括这些属性。

这些签名属性通常包括签名时间。由于不同的签名运行的签名时间通常会有所不同,因此实际的签名值也会有所不同。

OP 使用 CMS 签名容器。因此,这很可能是 OP 签名不同的原因。

关于java - 充气城堡 : Detached Enveloped Signature Changes at Every Run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com