首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在X25519和ECDSA中使用相同的私钥(使用curve25519)

在X25519和ECDSA中使用相同的私钥(使用curve25519)
EN

Cryptography用户
提问于 2022-02-04 09:01:03
回答 1查看 656关注 0票数 3

我正在编写一个同时需要加密/解密和签名/验证的应用程序,我选择X25519作为密钥协商算法(它将产生密钥用于加密),并选择ECDSA来签名消息。

密钥生成:我从助记符生成一个curve25519私钥(所以我有一个随机的32字节私钥)。

现在我有了32个字节数组,我想使用这个数组字节数组进行加密和签名,我遇到的问题是,对于X25519,我需要为这个私钥应用密钥夹紧才能有效,如下所示:

代码语言:javascript
复制
privateKey[0] &= 248;    // unset the 3 least significant bits
privateKey[31] &= 127   // unset the most significant bit
privateKey[31] |= 64      // set the second most significant bit

但是对于ECDSA,键需要在[1, N]范围内,其中N(对于curve25519)等于2^{252} +一个小因子,所以我需要将我的32字节数组转换成适合这个范围的数字。

我有几个问题:

  • 为什么X25519私钥不需要适合范围[1, N]
  • 另外,为什么将X25519中使用的键夹紧功能应用于用于ECDSA的密钥并不重要?
EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-02-04 10:52:25

为什么X25519私钥不需要适合范围[1,N]

通过取消最重要位和最不重要位的设置,您可以将密钥限制为仅252位。当你说N2^{252} +一个小因子的时候,你说的是x25519使用的子群的顺序,而不是曲线组的全部顺序。这个子群有指数(或协因子) 8。不设置三个较低的位迫使秘密为8的倍数,这意味着它将位于这个大素数级子群中。

另外,为什么将X25519中使用的键夹紧功能应用于用于ECDSA的密钥并不重要?

据我所知,Curve25519不用于ECDSA。你是说EdDSA (特别是ed25519)吗?

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

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

复制
相关文章

相似问题

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