最近,我开始学习椭圆曲线密码学,我很喜欢它。我想传输一些大数据(例如3KB),什么是最好的方法,ECDSA,ECIES或ECDH(为什么)?

我很困惑,如何在ECDSA,ECIES和ECDH?

#1 楼


ECDSA是一种数字签名算法
ECIES是一种集成加密方案
ECDH是一种密钥安全密钥交换算法

首先,您应该了解这些算法的用途。

数字签名算法用于验证数字内容。有效的数字签名使收件人有理由相信该邮件是由已知的发件人创建的,从而使发件人无法否认已发送了该邮件(身份验证和不可抵赖),并且该邮件在传输过程中没有发生更改(完整性)。

集成加密方案是一种混合加密方案,可针对选定的纯文本和选定的密文攻击提供语义安全性。 ECIES使用不同类型的函数:


密钥协商函数
密钥派生函数
对称加密方案
哈希函数

安全密钥交换算法用于通过非安全通道安全地交换我们的密钥。

您对这些算法的椭圆曲线变型感兴趣。您的要求是交换一些数据。因此,您可以使用ECDH共享密钥,并使用ECDSA签名内容。由于ECDH不提供身份验证,因此我们可以将ECDSA用于此目的。共享密钥后,您可以通过非安全通道安全地交换数据。可以通过考虑所需的安全级别和获得的计算能力来定义密钥的强度。

评论


$ \ begingroup $
您能解释一下为什么我需要同时结合两个ECDH(密钥交换)ECDSA吗?因为使用ECDH双方可以共享密钥,然后使用密钥可以通过非安全通道交换数据。那么ECDSA有什么用。
$ \ endgroup $
–user3160055
2014年1月11日20:20

$ \ begingroup $
@ user3160055 ECDH不提供身份验证,因此容易受到中级攻击者的攻击。因此解决方案是使用某种数字签名算法,例如ECDSA。因此,在发送服务器的ECDH公钥之前,您可以对其进行签名并在客户端进行验证。如果您考虑使用SSL,则不能单独使用DH或ECDH。例如,在DHE_RSA中,DH用于密钥交换,而RSA用于签名。
$ \ endgroup $
– deltaaruna
2014年1月12日在3:28



$ \ begingroup $
感谢您的明确解释。你能告诉我在哪里可以使用ECIES(如果可能的话,一些例子)。
$ \ endgroup $
–user3160055
2014年1月12日14:03

$ \ begingroup $
@ user3160055。我已经编辑了我的帖子。现在您将有一个更好的理解。您可以根据需要直接使用ECIES。它可以代替RSA之类的密码系统使用。我找不到实际使用的地方。但是它是代替RSA提出的。因此,无论您在哪里使用RSA密码系统,都可以考虑使用ECIS。这也是关于ECIES digital.csic.es/handle/10261/32671的文学调查
$ \ endgroup $
– deltaaruna
2014年1月12日15:20



$ \ begingroup $
我不了解ECDSA如何保护ECDH期间可能发生的固有MITM攻击。无论对等实体能做什么,中间的人也可以,因为您正在看到的是他的公钥。您是否真的不需要某个第三方身份验证实体来证明接收到的公钥的所有者确实是您想要的人?
$ \ endgroup $
– Bogdan Alexandru
2015年12月16日在16:57



#2 楼

对于不对称加密的大量数据,混合方法应该是更好的选择,我也将使用EC,因为令牌很短(甚至现代浏览器都支持WebCrypto中的EC)。
这里有一个ECIES发送示例256位AES密钥:https://github.com/efsta/pkiec