在secp256k1曲线上说TLS有多合理?我的初步实验表明,OpenSSL支持它(尽管带有特殊标志,请参见下面):在OpenSSL服务器(或我发现的一些随机的node.js服务器)上运行OpenSSL客户机,协商ECDHE-ECDSA-AES128-GCM-SHA 256套件,并建立一个常规的TLS 1.2会话。
另一方面,无论是卷曲还是浏览器似乎都不喜欢这条曲线。(尽管这对于我的用例来说不是必要的。)
我之所以使用secp256k1,是因为有一个很好的算法从现有密钥(BIP 32)中派生新密钥。这些键不能相互关联,这在点对点场景中是一个很大的优势。
现在我的问题是:对于TLS使用像secp256k1这样的不寻常的曲线是否合理?或者,是否存在为另一个(更常见)派生私钥的安全机制?从secp256k1私钥曲线?
我上面提到的标志:-curves "X25519:P-256:P-521:P-384:secp256k1"
编辑:我的问题不是关于secp256k1理论上的弱点,而是期望会出现什么样的实际问题。
发布于 2019-07-30 10:16:08
在一些原型实现之后,我学到了以下内容:
发布于 2019-07-29 21:10:55
BIP32使用secp256k1,因为BIP用于比特币,比特币使用secp256k1。(我感觉就像布菲1.01:"我的原因是现在在这里是,因为现在是我们来到这里的时候“)。同样的方法(Es)也适用于任何椭圆曲线,如果使用非Weierstrass形式(如ser256和parse256 ),则可以明显地替代X25519和X25519。
但是在实践中,TLS需要认证密钥的证书(或者kRSA,不再推荐,在1.3中不再支持),并且证书不能通过BIP32或任何其他方法与快速或动态创建密钥很好地结合在一起,而不管使用何种曲线(S)。(“在实践中”,因为有一个使用原始密钥的RFC,但我从未见过实现,当然在OpenSSL中没有。)
PS:nodejs内置的“tls”是OpenSSL,在下面编译成node[.exe]
。您可以获得包含ECC的替代(纯JS)密码,但我还没有看到纯JS。
https://crypto.stackexchange.com/questions/72247
复制相似问题