我们正在做一些重安全要求我们的项目,并且我们需要做大量的加密这是非常高的性能。

我认为,我知道,PKI慢得多和更复杂的比对称加密,但是我找不到的人数要回了我的感情。

有帮助吗?

解决方案

是的,纯粹的非对称加密比对称密码(如DES或AES)慢得多,这就是为什么真正的应用程序使用混合密码术:昂贵的公钥操作仅用于加密(和交换)用于加密真实消息的对称算法的加密密钥。

公钥加密解决的问题是没有共享密钥。使用对称加密,您必须信任所有相关方以保持密钥的秘密。这个问题应该是一个比性能更大的问题(可以通过混合方法减轻)

其他提示

在Air运行OS X10.5.5和股建立的OpenSSL,"openssl速度"时钟AES-128-CBC在46 000名1024位块每秒。同样的框钟1024位RSA在169个签名。AES-128-CBC是"教科书"的框密算法和RSA1024是"教科书的"公钥算法。这是苹果到橙子,但得到的答复是: RSA是多少,速度慢得多.

这不是为什么你不应该使用公共钥匙加密,但是。这里是真正的原因:

  1. 公用钥匙的加密业务不是意在用于原始数据加密.算法像迪菲-赫尔曼和RSA是设计为一个方式的交换钥匙块的加密算法。因此,例如,你想使用安全随机数发生器生成的128位随机的关键AES,并加密的那些16字节与RSA。

  2. 算法如RSA是很少的"用户友好"的比AES.随机的关键,明文块喂到AES走出来随机的任何人没有钥匙。这实际上是没有的情况下,RSA,这是比AES---只是一个数学公式。因此,除了存储和管理键正常,你必须要非常小心你的格式RSA明文块,或者你结束了漏洞。

  3. 公共钥匙没工作,没有一个关键的管理基础设施.如果你没有一个方案,以验证公用钥匙,袭击者可以替代他们自己的密钥对于真正的启动"中间人"的攻击。这就是为什么SSL迫使你去过rigamarole的证书。块的加密算法如AES 遭受这个问题,但没有一个公用钥匙基础结构中,AES不安全比RSA。

  4. 公用钥匙的加密业务很容易受到更多实施中的漏洞比AES.例如,双方的RSA的交易必须同意 参数, ,这是号码输送到RSA的公式。还有邪恶的价值观的攻击者可以替代在默默地禁用加密。这同样适用于迪菲Hellman甚至更多的是椭圆曲线。另一个例子是RSA的伪造签名的脆弱性发生2年前在多高端SSL实现。

  5. 使用公共钥匙证据表明,你在做什么"普通".普通的就是你 从来没有 希望能与密码;不只是算法加密的 设计 审计和测试多年前他们被认为是安全的。

我们的客户想使用的密码技术在他们的应用程序,我们让两个建议:

  • 对于"数据",使用PGP.真的!PGP已经被打败了十多年,并且被认为是安全的,从愚蠢的执行情况的错误。有开放源码和商业的变体。

  • 对于"数据",使用TLS/SSL.没有安全议定书》在世界上是更好地理解和更好测试的比TLS;金融机构到处都接受它作为一个安全方法可以移动的最敏感的数据。

这里有一个像样的书面记录 [matasano.com]我和内特*罗森,一个专业密码,写了几年。它涵盖了这些要点更详细的说明。

使用OpenSSL speed 命令对算法进行基准测试并亲自查看。

[dave@hal9000 ~]$ openssl speed aes-128-cbc
Doing aes-128 cbc for 3s on 16 size blocks: 26126940 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 64 size blocks: 7160075 aes-128 cbc's in 3.00s
...
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     139343.68k   152748.27k   155215.70k   155745.61k   157196.29k


[dave@hal9000 ~]$ openssl speed rsa2048
Doing 2048 bit private rsa's for 10s: 9267 2048 bit private RSA's in 9.99s
Doing 2048 bit public rsa's for 10s: 299665 2048 bit public RSA's in 9.99s
...
                  sign    verify    sign/s verify/s
rsa 2048 bits 0.001078s 0.000033s    927.6  29996.5

基于实用PKI的加密系统使用非对称加密来加密对称密钥,然后使用该密钥进行对称加密以加密数据(有人说,有人会指出反例)。

因此,非对称加密算法相对于对称加密算法所产生的额外开销是固定的 - 它不依赖于数据大小,只取决于密钥大小。

上次我对此进行了测试,验证了一组3个左右的X.509证书[编辑添加:以及他们签署的数据]在以100MHz左右运行的ARM上花了不到一秒的时间(平均值超过很多重复,显然)。我不记得有多小 - 不可忽视,但不到一秒钟。

抱歉,我不记得具体的细节,但总结是,除非你是在一个非常有限的系统或进行大量加密(如果你想要接受尽可能多的SSL连接一秒), NIST批准的非对称加密方法很快。

显然它差了1000倍。 ( http://windowsitpro.com/article/articleid/93787 /symmetric-vs-asymmetric-ciphers.html )。但除非你真的在处理大量数据,否则它并不重要。您可以做的是使用非对称加密来交换对称加密密钥。

也许您可以添加一些有关项目的详细信息,以便获得更高质量的答案。你想要保证什么?从谁?如果您能解释您的安全要求,您将获得更好的答案。如果加密机制不能保护您的想法,性能并不意味着什么。

例如,X509证书是保护客户端/服务器端点的工业标准方法。 PGP装甲可用于保护许可证文件。为简单起见,如果您控制两个端点,使用Blowfish(以及许多其他密码)的密码块链接很容易在Perl或Java中使用。

感谢。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top