公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),其中的一个向外界公开,称为公钥;另个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
公钥历史
1976年,当时在美国斯坦福大学的迪菲(Whitfield Diffie)和赫尔曼(MartinHellman)两人发表了论文《密码编码学新方向》(New Direction in Cryptogra-phy),指出在通信双方之间不直接传输加密密钥的保密通信是可能的,并提出了非对称公钥加密(公开密钥密码)的新思想,把密钥分为加密的公钥和解密的私钥,它是第一个实用的在非保护信道中建立共享密钥方法,这是密码学的一场革命。这种思想最早由英国信号情报部门雷夫・莫寇(Ralph C. Merkle)在1974年提出来的,但是当时这被列为是机密。之后在1976年,迪菲和赫尔曼两位学者以单向函数与单向暗门函数为基础,为发讯与收讯的两方创建密钥,发明了“D-H密钥交换算法”实现信息加密。该算法的有效性依赖于离散对数的难度。2002年,赫尔曼建议将该算法改名为“ Diffie-Hellman-Merkle密钥交换”以表明 Ralph C. Merkle对于公钥加密算法的贡献。
公钥加密算法中使用两个密钥,而不是使用一个共享的密钥。一个密钥是公钥(public key),一个密钥是私钥(private key)。用公钥加密的密文只能用对应私钥解密,反之,用私钥加密的密文只能用对应公钥解密。在操作过程中,公钥是对外界公开的,所有人都可以知道,而私钥是自己保存的,只有自己才能知道。但是一个人只能持有公钥和私钥的其中一个,而不能同时共享。如果A要发一份秘密信息给B,则A只需要得到B的公钥,然后用B的公钥加密秘密信息,此加密的信息只有B能用其保密的私钥解密。反之,B也可以用A的公钥加密保密信息给A。信息在传送过程中,即使被第三方截取,也不可能解密其内容。
1979年,Merkle和Hellman提出“MH背包算法”。“MH背包算法”源于背包问题(
NP完全问题),其工作原理是:假定甲想加密,则先产生一个较易求解的背包问题,并用它的解作为专用密钥;然后从这个问题出发,生成另一个难解的背包问题,并作为公共密钥。如果乙想向甲发送报文,乙就可以使用难解的背包问题对报文进行加密,由于这个问题十分难解,所以一般没有人能够破译密文;甲收到密文后,可以使用易解的专用密钥解密。公钥加密是一项重大的创新,从根本上改变了加密和解密的过程。
基础设施
公钥基础设施PKI(public key infrastructure)是由公开密钥密码技术、数字证书、证书认证中心和公钥安全策略等共同组成,管理密钥和证书的系统或平台,是建立安全网络环境的基础设施。
PKI的组成
PKI主要包括四个部分:X.509格式的证书和证书撤销列表CRL、CA操作协议、CA管理协议、CA策略。一个典型、完整、有效的PKI应用系统至少应具有以下四个部分。
①认证中心CA。它是PKI的核心,CA负责管理PKI结构下的所有用户(包括各种应用程序)的证书,实现用户公钥和用户信息的关联,还要负责用户证书的撤销登记和撤销列表的发布。
②X.500
目录服务器。X.500目录服务器用于发布用户的证书和证书撤销信息,用户可通过标准的LDAP协议查询自己或其他人的证书和下载证书撤销列表。
③具有高强度密码算法的安全WWW服务器。使用SSL(secure sockets layer)协议来鉴别
网站服务器和浏览器端用户的身份,以及在浏览器和服务器之间进行加密通信,保证客户端和服务器端数据的机密性、完整性、身份验证。
④PKI策略。它包括遵循的技术标准、各CA之间的上下级或同级关系、安全策略、安全程度、服务对象、管理原则和框架等,以及认证规则、运作制度、所涉及的各方法律关系内容以及技术的实现等。
PKI在电子支付中的应用
Web(world wide web)页面是电子支付通常采用的方式。为了解决Web的安全问题,采用
SSL协议,在传输层和应用层之间建PKI在电子支付中的应用立一个安全通信层,在两个实体间实现对应用层透明的安全通信。利用PKI技术,SSL协议允许在浏览器和服务器之间进行加密通信。此外还可以利用数字证书保证通信安全,服务器端和浏览器端分别由可信的第三方颁发数字证书,这样在交易时,双方可以通过数字证书确认对方的身份。需要注意的是,SSL协议本身并不能提供对不可否认性的支持,这部分的工作必须由数字证书完成。结合SSL协议和数字证书,PKI技术可以保证Web交易多方面的安全需求。
PKI技术是解决电子商务安全问题的关键,综合PKI的各种应用可以建立一个可信和安全的网络。
公钥分配
公钥加密的一个重要作用就是处理密钥的分发问题。在这方面,使用公钥加密实际上存在两个不同的方面。
(1)公钥的分发;
(2)使用公钥加密分发私钥。
下面依次分析这两个方面。
公钥证书
从字面理解,公钥加密的意思就是公钥是公开的。所以,如果有某种广泛接受的公钥算法(如RSA),任何参与者都可以给其他参与者发送他的密钥,或向群体广播自己的密钥。虽然这种方法非常方便,但是它也有个很大的缺点:任何人都可以伪造公共通告,即某用户可以伪装成用户A向其他参与者发送公钥或广播公钥。直到一段时间后用户A发觉了伪造并且警告其他参与者,伪造者在此之前都可以读到试图发送给A的加密消息,并且使用假的公钥进行认证。
解决这个问题的方法就是使用公钥证书。实际上,公钥证书由公钥加上公钥所有者的用户ID以及可信的第三方签名的整个数据块组成。通常,第三方就是用户团体所信任的认证中心。用户可通过安全渠道把他的公钥提交给这个CA,获取证书。然后用户就可以发布这个证书。任何需要该用户公钥的人都可以获取这个证书,并且通过所附的可信签名验证其有效性。
密钥分发
使用传统加密时,双方能够
安全通信的基本要求就是他们能共享密钥。假设Bob想建立个消息申请,使他能够与对方安全地交换电子邮件,这里的“对方”是指能够访问Internet或者与Bob共享其他网络的人。假定Bob要用传统密码来做这件事,Bob和他的通信者(Aice)必须构建一个通道来共享任何其他人都不知道的唯一密钥。他们是如何实现的呢?如果Alice在Bob的隔壁房间里,Bob可以生成密钥,把它写在纸上或存储在磁盘上,然后交给Alice。但是如果Alice在欧洲或世界的另一边,Bob该怎么办呢?他可以用传统的加密方法加密密钥并且将它以电子邮件方式发送给Alice。但是这意味着Bob和 Alice必须共享一个密钥来加密这个新的密钥。此外,Bob和任何其他使用这种新电子邮件包的人都与他们的潜在通信者之间面临着相同的问题:任何一对通信者之间都必须共享一个唯一的密钥。
这问题的一种解决方案就是使用Differ- Hellman密钥交换。该方法的确在广泛使用。然而这种方案也有它的缺点,比如最简单形式的Differ- Hellman不能为两个通信者提供认证。
一种很好的替代方法就是使用公钥证书。当Bob想要与Alice通信时,他可按下面的步骤操作:
(1)准备消息;
(2)利用一次性传统会话密钥,使用传统加密方法加密消息;
(3)利用Aice的公钥,使用公钥加密的方法加密会话密钥;
(4)把加密的会话密钥附在消息上,并且把它发送给Aice,只有Aice能够解密会话密钥进而恢复原始消息。如果Bob通过Alice的公钥证书获得Alice的公钥,则Bob能够确定它是有效的密钥。
管理方案
从系统的可扩展性和算法的安全性角度进行考虑,空间网络中的实体认证、会话密钥协商等场合应使用公钥密码算法来实现。首先,如果采取基于对称密码体制的方案,当网络中节点数量增加时,
密钥管理中心需要与每一个节点进行信息的交互,导致了大量额外的通信开销,而基于
公钥密码体制的方案则不存在这一问题,节点数量增减时的密钥操作较少,可扩展性强;其次,公钥密码算法的安全性一般远高于对称密码算法,从而能够有效地提高安全方案本身的安全性;最后,采取以公钥密码体制为基础的密钥管理方案已经过多年实际应用的检验,也是未来的主要发展方向。
从对安全路由、安全切换和安全传输技术的研究中,可以看到,公钥主要用于协议过程中节点之间的相互认证和会话密钥的协商,并且在一定条件下确保交互信息的机密性、完整性和不可否认性。公钥管理方案着重解决密钥的生成、分发、更新与撤销问题。