
非对称密码又称为公钥密码,意思为每对加密包含一个公钥(可能为他人所知)和一个私钥(可能不为所有人所知)。有效的安全需要保持私钥的私密性;公钥可以在不影响安全性的情况下公开分发。
在使用非对称加密时,任何人都可以使用预期接收者的公钥对消息进行加密,但该加密消息只能使用接收者的私钥解密。
对此,维基给出了一个生动的例子:
服务器程序生成用于对称密钥加密的加密密钥,然后使用客户端的公开共享公钥来加密新生成的对称密钥。

然后,服务器可以通过不安全的通道将此加密的对称密钥发送给客户端;只有客户端才能使用客户端的私钥(与服务器用来加密消息的公钥配对)对其进行解密。

由于客户端和服务器都具有相同的对称密钥,它们可以安全地使用对称密钥加密,通过其他不安全的通道进行通信。该方案的优点是不必手动预共享对称密钥,同时获得对称密钥加密的更高数据吞吐量优势。
也可以使用公钥加密进行身份验证,其中使用发件人的私钥对消息进行签名,并且可以由有权访问发件人公钥的任何人验证。发件人可以将消息与私钥结合起来,在消息上创建一个简短的数字签名。
任何拥有发件人相应公钥的人都可以通过公钥解密后,将该消息与数字签名进行比较;如果签名与消息匹配,则验证消息的来源。
通过上述的两个总结,可以汇总下非对称加密体系的应用:

在 1970 年代中期之前,所有密码系统都使用对称密钥算法,其中发送者和接收者都使用相同的加密密钥和底层算法,他们都必须保密。
每个此类系统中的密钥都必须在通信方之间以某种安全方式在系统使用之前进行交换——例如,通过安全通道。随着参与者数量的增加,或者当安全通道不可用,或者当(如明智的加密实践)密钥经常更改时,此要求绝不是微不足道的,并且很快变得难以管理。特别是,如果消息要对其他用户保密,则每对可能的用户都需要一个单独的密钥。
非对称加密体系是现代密码系统中的基本安全原语,包括为通信和数据存储的机密性、真实性和不可否认性提供保证的应用程序和协议。

RSA是最广泛使用的非对称算法,RSA嵌入在 SSL/TLS 中,用于通过计算机网络提供安全通信。
RSA 的安全性源于将大整数分解为两个大素数的乘积的计算难度。将两个大素数相乘很容易,但从乘积中确定原始数字的困难。
因式分解构成了公钥密码安全性的基础,将两个足够大的素数乘积分解所需的时间超出了大多数攻击者的能力。
RSA 密钥的长度通常为 1024 或 2048 位,但专家认为 1024 位密钥很快就会被破解,这就是政府和行业正在转向最小密钥长度为 2048 位的原因。
ECC是一种基于椭圆曲线理论的公钥加密技术,它可以通过椭圆曲线方程的特性创建更快、更小、更高效的密码密钥。
要破解 ECC,攻击者必须计算椭圆曲线离散对数,这比因式分解要困难得多。因此,ECC 密钥大小可以显着小于 RSA 所需的大小,同时仍以较低的计算能力和电池资源使用提供同等的安全性。