首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种哈希算法适合用于椭圆曲线密码学?

哪种哈希算法适合用于椭圆曲线密码学?
EN

Cryptography用户
提问于 2020-06-05 03:59:36
回答 1查看 1.5K关注 0票数 1

我第一次尝试使用椭圆曲线密码系统,所以我对此感到困惑。

这是一个场景:首先我想散列一条消息,然后签名。我使用javascript,所以我尝试遵循这段代码

我之所以感到困惑,是因为为什么这段代码使用'sha256‘算法散列消息?有什么理由吗?

另外,是否有任何自定义或首选的散列算法用于ECC?

更清楚的是,ECC是否用于签名和生成密钥,但没有一个特殊的算法来散列消息?

谢谢。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-06-06 13:34:13

你真的有两个问题,所以我试着解决这两个问题;看来你的问题确实是第二个问题,但第一个问题的答案会说明第二个问题:

我之所以感到困惑,是因为为什么这段代码使用散列函数来散列消息?有什么理由吗?

我们使用一些公钥转换将“消息”和“私钥”转换为“签名”;但是,这种转换需要固定大小的输入。也就是说,它不能处理比预期更长的消息(对于所有签名算法都是如此:椭圆曲线签名算法、RSA签名算法、后量子签名算法)。

现在,我们可能希望签署比原始公钥操作所能处理的最大值大得多的文档。带有P256的ECDSA内部部分一次只能处理256个比特,通常,我们希望签署大于32个字节的文件。要处理这个问题,我们要做的是通过一个‘散列函数’发送实际的消息,也就是说,转换将我们的长消息转换成一个固定的长度(原始公钥操作可以处理这个长度)。我们散列消息,然后将该哈希传递给ECDSA内部逻辑。然后,为了验证签名,验证者将它所拥有的消息交给相同的散列逻辑,计算哈希,然后将该哈希传递给ECDSA验证逻辑。

通过上面的描述,有几件事情是显而易见的:

  • 哈希逻辑必须是公开的;毕竟,验证者(我们可以假设它有公钥,但没有秘密知识)必须能够计算它。
  • 哈希必须是“抗碰撞的”;也就是说,要找到两个相同值的散列的不同消息应该是不可行的(也就是说,没有人能做到)。毕竟,如果有人能够找到两个\text{Good Message}\text{Evil Message}的哈希值相同的消息,他可以取\text{Good Message},说服签名者为它生成一个签名(因为消息是良性的),那么该签名也将是\text{Evil Message}的有效签名(因为签名只取决于哈希,而这两个消息散列为相同的值)。

这是为什么这段代码使用'sha256‘算法?是否有任何自定义或首选用于ECC的散列算法?

不,ECC没有专门的哈希算法。如果您查看我给出的哈希函数的条件,那么没有任何特定于公钥方法的东西。对RSA有好处的散列函数对ECC也有好处。

我们有一些函数看起来是很好的散列函数;SHA256就是其中之一,而这恰好是它们所选择的。

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

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

复制
相关文章

相似问题

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