什么是公钥密码学?
公钥密码学(PKC)又称非对称密码学,是一种同时使用公钥和私钥的机制,与使用单一密钥的对称密码学相对应。密钥对的使用赋予了PKC独特的功能和特性,以解决存在于其他密码学技术中的固有挑战。此种形式的密码学已经成为现代计算机安全中重要原理,同时也是日益增长的加密货币生态系统的关键组成部分。
在PKC体系中,发送方使用公钥来加密信息,而接收方则使用私钥来解密信息。由于两个密钥的完全不同,因此可以安然的进行公钥共享,而并不用担心会损害私钥的安全性。每组非对称密钥对都是唯一的,所以就确保了使用公钥加密的信息只能由持有对应私钥的人才能进行读取。
并且,由于非对称加密算法生成的密钥对之间是数学相关的,所以它们的密钥长度相比于对称密码学使用的密钥要长的多。其长度通常为1024位或2048位,所以使用公钥来计算对应私钥也就变得极其困难。现如今,最常见的非对称加密算法被称为RSA。在RSA方案中,密钥是通过两个数相乘(通常为两个较大的质数)得到的公共模数来生成。其中模数将生成两个密钥,一个是可以共享的公钥,另一个是需要保密的私钥。RSA算法在1977年由Rivest、Shamir以及Adleman(所以叫RSA)首次提出,而现在也仍然是公钥密码学系统的重要组成部分。
公钥密码学解决了对称算法中长期存在的问题,即加密密钥和解密密钥之间的通信问题。在不安全的连接中发送对称密钥将会产生将其暴露给第三方的风险,而第三方随后则可以读取任何由该共享密钥所加密的信息。虽然存在诸如迪菲-赫尔曼密钥交换协议等加密学技术来解决这一问题,但这些密钥仍是容易受到攻击的。而在公钥密码学中完全不用担心此问题,且用于加密的密钥可以在任何网络连接中共享。至此,与对称算法相比,非对称算法就提供了更高级别的保护。
非对称密码学算法的另一个应用就是使用数字签名来验证数据。本质上来说,数字签名就是使用信息中的数据所创建的散列。当信息被发送之后,接收方可以使用发送方的公钥来核实签名,以此来验证消息的来源并确保信息未被篡改。在某些情况下,数字签名和加密技术是同时应用的,这是因为散列本身也可能是被加密的。然而需要注意的是,并非所有的数字签名体系都是使用加密技术的。
的确,PKC的可以用于提高计算机的安全性并验证信息的完整性,但其也存在一定的局限性。由于加密和解密涉及到复杂的数学操作,所以非对称算法在处理大量数据时也可能略显缓慢。且此类型密码学也很大程度的依赖于私钥保密的假设。倘若意外的共享或公开了私钥,则使用其对应公钥加密的信息的安全性就会受到影响。有时用户的私钥也可能意外丢失,而这种情况下用户将失去对加密数据的访问权。
此种密码学被许多现在计算机系统所使用来为敏感信息提供安全保障。就比如,可以使用公钥密码学技术来对电子邮件进行加密,以确保其中内容的机密性。同时允许网站安全连接的安全套接层(SSL)协议也使用了非对称密码学。PKC系统也被用于安全电子投票环境的探索(此种电子投票环境将允许选民在家庭电脑上参与选举)。
PKC的特性在区块链和加密货币技术中也表现突出。当新的加密货币钱包被创建时,就会生成一对密钥(公钥和私钥)。公共地址是使用公钥生成的,并可以安全的与他人共享。另一方面,私钥被用于创建数字签名和验证交易,所以必须要保密。当交易被数字签名中的认证散列验证之后,就可以被添加到区块链账本中。该数字签名系统确保了只有拥有加密货币钱包对应私钥的用户才能从钱包中获取资金。但值得注意的是,加密货币应用中所使用的非对称密码与计算机安全目的中所用的却不同。例如,比特币和以太坊所使用的是椭圆曲线数字签名算法(ECDSA)来验证交易。
从计算机安全到验证加密货币交易可以看出,公钥密码学在现代数字系统的安全保护方面发挥了关键作用。通过使用成对的公钥和私钥,非对称密码学算法解决了对称密码中固有的安全问题。对于PKC的使用已经经历了多年,且也在不断开发其在新兴领域内的应用,特别是区块链和加密货币领域。