为什么公钥算法很慢?

Mar*_*ior 5 public-key

我正在研究测试,我仍然没有得到它为什么公钥算法比对称算法慢.

Cyp*_*her 7

公钥加密是一种非对称加密技术,其区别在于使用额外的加密密钥.

对称算法使用"共享密钥",其中两个系统各自使用单个加密密钥来加密解密通信.

公钥加密不使用单个共享密钥,而是使用数学密钥对:公钥和私钥.在该系统中,通信用公钥加密,并用私钥解密.以下是维基百科的更好解释:

公钥加密中使用的区别技术是使用非对称密钥算法,其中用于加密消息的密钥与用于解密它的密钥不同.每个用户都有一对加密密钥 - 公共加密密钥和私有解密密钥.公共可用的加密密钥是广泛分发的,而私有解密密钥只有收件人知道.邮件使用收件人的公钥加密,只能使用相应的私钥解密.密钥在数学上是相关的,但私钥不可行(即,在实际或预计的实践中)是从公钥导出的.

然后计算开销非常明显:公共密钥可用于它所暴露的任何系统(互联网上的公钥系统,例如将公钥暴露给整个互联网).为了补偿,公钥和私钥都必须非常大,以确保更强的加密级别.然而,结果是更强的加密级别,因为私有解密密钥(到目前为止)不能从公共加密密钥进行反向工程.

还有更多可能影响公钥基础设施(PKI)的"速度" .由于该系统的问题之一是信任,因此大多数实现涉及证书颁发机构(CA),它们是被委托密钥对并验证密钥"身份"的实体.

总而言之:更大的加密密钥大小,两个加密密钥而不是一个加密密钥,并引入了证书颁发机构:额外的DNS查找和服务器响应时间.

正是由于这种额外的开销,大多数实现都受益于混合算法,其中公钥和私钥用于生成会话密钥(非常类似于对称算法中的共享密钥),以获得两全其美的优势.


Ray*_*ger 5

公钥算法依赖于“陷门”计算,这种算法的加密计算成本很高,而使用密钥解密则计算困难。如果第一步太简单(与速度相关),第二步就会变得不那么困难(更容易破碎)。因此,公钥算法往往是资源密集型的。

私钥算法在加密阶段就已经拥有秘密,因此它们不必像具有公共秘密的算法那样做那么多工作。

上述内容过于笼统,但应该能让您了解相对速度差异背后的原因。话虽这么说,私钥算法可能很慢,而公钥算法可能具有高效的实现方式。细节决定成败 :-)