公钥(Public Key)
目录 |
公钥是与私钥算法一起使用的密钥对的非秘密一半。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),其中的一个向外界公开,称为公钥;另个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
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。信息在传送过程中,即使被第三方截取,也不可能解密其内容 [2] 。 1979年,Merkle和Hellman提出“MH背包算法”。“MH背包算法”源于背包问题(NP完全问题),其工作原理是:假定甲想加密,则先产生一个较易求解的背包问题,并用它的解作为专用密钥;然后从这个问题出发,生成另一个难解的背包问题,并作为公共密钥。如果乙想向甲发送报文,乙就可以使用难解的背包问题对报文进行加密,由于这个问题十分难解,所以一般没有人能够破译密文;甲收到密文后,可以使用易解的专用密钥解密。公钥加密是一项重大的创新,从根本上改变了加密和解密的过程。
公钥基础设施(public key infrastructure,PKI)是由公开密钥密码技术、数字证书、证书认证中心和公钥安全策略等共同组成,管理密钥和证书的系统或平台,是建立安全网络环境的基础设施。
PKI的组成主要包括四个部分:X.509格式的证书和证书撤销列表CRL、CA操作协议、CA管理协议、CA策略。一个典型、完整、有效的PKI应用系统至少应具有以下四个部分。
(1)认证中心CA。
它是PKI的核心,CA负责管理PKI结构下的所有用户(包括各种应用程序)的证书,实现用户公钥和用户信息的关联,还要负责用户证书的撤销登记和撤销列表的发布。
(2)X.500目录服务器。
X.500目录服务器用于发布用户的证书和证书撤销信息,用户可通过标准的LDAP协议查询自己或其他人的证书和下载证书撤销列表。
(3)具有高强度密码算法的安全WWW服务器。
使用SSL(secure sockets layer)协议来鉴别网站服务器和浏览器端用户的身份,以及在浏览器和服务器之间进行加密通信,保证客户端和服务器端数据的机密性、完整性、身份验证。
(4)PKI策略。
它包括遵循的技术标准、各CA之间的上下级或同级关系、安全策略、安全程度、服务对象、管理原则和框架等,以及认证规则、运作制度、所涉及的各方法律关系内容以及技术的实现等。
从系统的可扩展性和算法的安全性角度进行考虑,空间网络中的实体认证、会话密钥协商等场合应使用公钥密码算法来实现。首先,如果采取基于对称密码体制的方案,当网络中节点数量增加时,密钥管理中心需要与每一个节点进行信息的交互,导致了大量额外的通信开销,而基于公钥密码体制的方案则不存在这一问题,节点数量增减时的密钥操作较少,可扩展性强;其次,公钥密码算法的安全性一般远高于对称密码算法,从而能够有效地提高安全方案本身的安全性;最后,采取以公钥密码体制为基础的密钥管理方案已经过多年实际应用的检验,也是未来的主要发展方向。
从对安全路由、安全切换和安全传输技术的研究中,可以看到,公钥主要用于协议过程中节点之间的相互认证和会话密钥的协商,并且在一定条件下确保交互信息的机密性、完整性和不可否认性。公钥管理方案着重解决密钥的生成、分发、更新与撤销问题。