首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DSA签名生成

DSA签名生成
EN

Cryptography用户
提问于 2018-12-11 11:44:40
回答 1查看 387关注 0票数 1

我正在尝试在python中实现给定的DSA签名生成指令,在步骤3和步骤4中,很少有指令是我无法理解的。

让我是一个任意长度的消息。签名计算如下:

  1. 生成k(即k是0,q−1中的随机整数)
  2. R=g^k(Mod p)
  3. H= SHA3 256(m_x_(m_(_(m_M是一个消息长度,r也是一个数字,那么hashlib.sha3_256(input)函数的输入应该是什么?正如我在Python中看到的,它说输入必须是字符串(转换为字节)。
  4. S=α·h+k (mod q) h是由α返回的字符串,那么如何用α乘以它呢?
  5. M的签名是元组(s,h)。
EN

回答 1

Cryptography用户

回答已采纳

发布于 2018-12-11 13:36:10

\parallel符号意味着级联。在本例中,使用消息m (它是一个位序列),将值r编码为一个位序列,并散列包含在m中的位序列,然后是编码的r

在步骤4中,您有一个位序列(散列输出),您必须以某种方式将其转换回整数。这又是一个编码问题,但这次是在解码方向上。这里的基本主题是,您必须有一些约定,允许您将整数编码为位,并将位解码为整数。从安全的角度来看,约定的选择或多或少是开放的,但它当然是算法规范的一部分:签名者和验证者必须就这些细节达成一致,否则验证者将不会接受签名者产生的签名的有效性。

顺便说一下,这不是每日生活津贴。数字减影血管造影由FIPS 186-4指定。您所描述的是施诺尔签名 (有几个变体,例如级联中的mr的顺序,或者是s = \alpha h + k还是s = \alpha h - k;所有这些变体都或多或少地获得了等价的安全性)。从历史上看,区别是很重要的: DSA是在Schnorr申请他的计划专利的时候定义的,DSA的定义是为了避免这一专利而精心制定的。在密码学上,区别也很重要: Schnorr签名的“安全图片”更好(我们可以对Schnorr签名进行安全证明,但我们不知道如何使用DSA;DSA签名是可扩展的,通常是无害的,但过去允许在比特币中重播攻击)。

票数 3
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/64763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档