早期的加密系统是基于对称密码术,其特点是加密和解密密钥相同,对称密码技术的安全性依靠密钥泄露密钥代表所有人均可以对信息加/解密。随着对称密码技术的发展出现了很多对称密码算法。对称加密算法虽然实现了数据的机密传输但对称密码技术的致命缺陷――安全性依靠密钥导致对称加密处理密钥分发和管理问题。
1976年提出了公钥密码技术,奠定了PKI技术的基础。PKI是利用现代密码学公钥密码理论和技术,在开放的网络环境下建立的数据加密和数字签名等信息安全服务的基础。使用公钥密码技术的用户同时拥有公钥和私钥。私钥不能通过公钥计算出来私钥由用户持有公钥可通过明文的形式发给任意一个人。公钥密码技术克服了对称密码技术的密钥交换问题。
由于公钥密码技术的实现速度比对称密码技术慢得多且由于任何人均能得到公钥公钥密码技术对选择明文攻击非常脆弱因此公钥加密/私钥解密不适用于数据的加密传输。为了实现数据的加密传输公钥密码技术为对称密码技术提供了安全的密钥交换机制数据使用对称密码技术加密传输。在对称密码技术的密钥协商过程中密钥数据使用公钥加密在保证私钥中在安全的基础上,攻击者即使截获信息也不会得到密钥这就保证了对称密码技术密钥协商的安全性。
私钥加密/公钥解密也可以完成认证和提供数字签名。公钥密码技术可做到进行通信双方的身份验证还能实施数据的签名和验证。比如A需要对一个数据进行签名并保密传输A只需要用自己的私钥加密该消息就可完成签名并用B的公钥加密消息来实现保密传输。A把加密后的数据与签名一起发送给BB用A的公钥解密签名然后与数据进行比较,如果相同,签名确实是签名并用自己的私钥解密密文消息。这样既保证了消息的保密传输又确保信息确实是由A发送来的。也因为公钥密码学的算法很慢。数据签名通常不直接用私钥加密数据。数据块的散列值可通过消息摘要算法计算得到。事实上,消息摘要算法是个单向散列函数。数据块通过单向散列函数得到一个定长的散列值攻击者不会使用哈希值编译与原始数据块的哈希值相同的数据块。数据块的签名第一步是计算数据块的散列值之后,使用私钥加密数据块的哈希值以获得数据签名。签名的验证是计算数据块的哈希值之后用公钥解密数据签名获得另一个散列值比较两个散列值则能断定数据块在签名后是否被改动。
公钥加密还存在公钥分配、公钥/私钥对和用户真正的身份绑定问题。PKI引进证书机制克服了此问题。证书是由认证中心也叫证书机构颁发。CA颁发的证书与公安局颁发的身份证类似。CA颁发的证书上有CA的数字签名也就是用自己的私钥加密的证书。用户在获得自己的身份证书后则可用证书表明自己的身份。接收方只需用CA的公钥验证用户证书若验证成功就能认为该证书上的用户身份与证书上的公钥的真实性。证书的发布/验证防止了冒充身份的可能性。