上次《【阿一网络安全】如何让你的密码更安全?(一) - 对称加密》提到加密算法的对称加密,我们这次来聊聊非对称加密。
和对称加密不同,非对称加密的加密密钥和解密密钥不同。
非对称加密
大概过程就是,发送方使用公钥对明文数据进行加密,把密文发送给接收方,接收方收到密文,用私钥进行解密。如图所示:
在我们使用对称加密的时候,不仅要约定好发送、接收方的密钥,还要担心密钥泄漏。而在非对称加密中,不需要担心这个问题,公钥本身就是公开的,不需要额外对其进行保密,可以把公钥发给所有需要的人。
非对称加密,除了加密功能之外,部分非对称算法还提供了签名功能(确保明文数据的完整性和真实性,并不是保密性)。
发送方用私钥对明文数据进行加密,得到签名。接收方收到明文数据和签名后,用发送方的公钥解密签名,并将结果与明文数据比对。如果匹配,就证明这段消息确实是发送方发送的且没有被篡改。
非对称加密的核心思想,是基于特定的数学难题设计的,特点就是:
- 正向计算容易
- 反向计算在计算上不可行(在合理的时间内无法完成)
经典且广泛使用的非对称加密算法包括这几种,RSA、ECC和国密的SM2。
RSA
RSA是一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用,是由 Ron Rivest、Adi Shamir 和Leonard Adleman 三人一起提出,RSA就是他们三人姓氏的首字母组成。
RSA的安全性,基于 大整数因子分解 的数据难题,换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。它使用两个不同的密钥进行加密,公钥用于加密,私钥用于解密。