谢宗晓 董坤祥 甄杰
摘要:主要介绍了公钥密码产生的原因,所面临的主要攻击方式,以及公钥证书的产生等问题,从而系统地描述了公钥基础设施(PKI)的产生、发展和基本架构。
关键词:公钥基础设施 认证机构 密码学
Abstract: This paper mainly introduces the reasons for the emergence of public key cryptography, the main attack methods faced, and the emergence of public key certificates, so as to systematically describe the emergence, development and basic architecture of public key infrastructure (PKI).
Key words: public key infrastructure (PKI), certification authority (CA), cryptography
將消息传递给对方,是信息安全中最直观的应用场景之一。一般而言,对消息进行加密传输是安全传递消息最可行的途径之一[1]。发送者将消息加密后传输,就不用担心被窃听了。因为窃听者即使获取了消息,也是密文,没有密钥毫无意义。这是密码学最典型的应用场景。
1 从对称密码到公钥密码
用相同的密钥(或方法)进行加密解密在逻辑上非常清晰,也最直观,由此诞生了对称密码(symmetric cryptography),或者称之为共享密钥密码,其基本过程如图1所示。
但是,在实践中对称密码算法存在一个很大的缺陷,即密钥如何安全地传输给对方?如果将密钥用明文传输,可能会被窃听,如果用密文传输,那么接收者还是无法解读。因此,1976年,Whitfield Diffie和Martin Hellman提出了公钥密码(public-key cryptography)的设计思想。在公钥密码算法中,使用两个密钥,而不是使用一个共享的密钥。一个密钥(称为“私钥”)是保密的,它只能由一方保存,而不能各方共享。第二个密钥(称为“公钥”)不是保密的,可以广泛共享。这两个密钥(称为“密钥对”)在加密和解密操作中配合使用[2-3]。
公钥密码又称为非对称密码(asymmetric cryptography),公钥一般是公开的,不必担心窃听,私钥又不存在传输的问题。这个思路创造性的解决了对称密码中难以处理的密钥配送问题1)。用于传输消息的公钥密码工作过程如图2所示。
如图2所示,发送者用公钥加密,接收者用私钥解密,这是最典型的公钥密码用法。但是,Diffie和Hellman并未给出具体的算法,之后也出现过几种算法,但后来被证明并不够安全。真正可用于实践的算法是1978年,Ron Rivest、Adi Shamir和Leonard Adleman发明的RSA算法,这使得公钥密码变得现实可用。在相当长的一段时间内,RSA都成了公钥密码的事实标准。当然,在后续的研究中又发明了一系列的算法,例如,椭圆加密算法(ECC)和ElGamal等。
2 单向函数
公钥密码算法的实现过程,实际就是寻找陷门单向函数(Trapdoor One-way Function)的过程。陷门单向函数是Diffie& Hellman[4]在1976年的论文中提出的概念。
单向函数是指对于每一个输入,函数值都容易计算,但是给出一个随机输入的函数值,算出原始输入却比较困难。如果某函数及其逆函数的计算都存在有效的算法,而且可以将计算的方法公开。那么,这类函数就是陷门单向函数。通俗地讲,单向函数就是从X到Y计算容易,但是不能进行逆运算。陷门单向函数双向都能算,严格讲,已经不是单向的了。
单向函数在密码学中也有广泛的应用,例如,利用单项散列函数保存口令。单向散列函数,又称单向Hash函数、杂凑函数,就是把任意长的输入消息串,变化成固定长的输出串,且由输出串难以得到输入串的一种函数。这个输出串称为该消息的散列值。一般用于产生消息摘要,密钥加密等。例如,MD5和SHA等。口令的比对过程如图3所示。
类似于口令比对的方式,也可以检测消息传输过程中是否被篡改过,也就是说可以保证消息的“完整性”。但是有时候我们需要确认消息是谁发送的,或者说需要对消息进行鉴别(authentication),不仅仅是判断完整性,这时候就需要消息鉴别码(MAC),MAC可以认为是跟密钥关联在一起的单向散列函数。但是注意,这是另一种技术。
在传输消息中,单向函数的实践意义不大,因为合法的接收者看到的也是无意义的字符。这也是陷门单向函数的意义所在,RSA是第一个被付诸实践的陷门单向函数。
3 从消息鉴别到数字签名
MAC保证了消息的“完整性”以及确认“来自正确的发送者”。但是还有一个问题没有解决,就是发送消息的人可能会抵赖(抗抵赖性),因为密钥并不是唯一一个人知晓。如果密钥只有发送消息者一个人知道,则不能抵赖。
考虑公钥密码算法的特点,反过来用,如图4所示,就保证了消息发送者是唯一持有密钥的人。
在图4中,私钥被用作“签名密钥”,公钥被用作“验证密钥”。签名密钥只能由签名的人持有,验证秘钥则可以公开,不需要保密,想验证签名的都可以持有。据此实现了消息的抗抵赖性,与手签实现的功能类似。
4 中间人攻击及公钥证书的产生
公钥是可以公开的,不需要考虑机密性,这是公钥密码体系的巨大创新,当然,这又导致了新的攻击方法,即,中间人攻击(Man-in-the-Middle Attack,MITM攻击)。简单而言,中间人攻击就是对发送者伪装成接收者,对接收者伪装成发送者,攻击者悄悄换掉了公钥,也就是说,接收者获取的公钥是假的。单纯的依靠公钥密码体系,无法解决中间人攻击的问题。
中间人攻击的焦点在于公钥可能是伪造的,解决的思路和现实世界中类似,使用证书。公钥证书就是经过可信的第三方签名确认后的公钥,简称证书(certificate)。在实践中,可信的第三方一般是认证机构(certification authority,CA)。
5 PKI的产生及其组成
有了证书来认证,可以有效防御中间人攻击,随之带来了一系列非技术性工作。例如,谁来发证书?如何发证书?不同机构的证书怎么互认?纸质证书作废容易,数字证书如何作废?解决这些问题,需要制定统一的规则,即公钥基础设施(Public Key Infrastructure,PKI)。
PKI体系是指支持公钥管理体制的基础设施,提供鉴别、加密、完整性和不可否认性服务。PKI体系是通过颁发、管理公钥证书的方式为终端用户提供服务的系统,最核心的元素是证书。围绕证书构成了该体系的要素:使用PKI的用户、颁发证书的机构(CA)和保存证书的仓库。PKI由技术、程序和人员部分组成,必须在一个有效的基础设施内协调。具体而言,PKI所需的责任、服务及程序主要包括:密钥生成、注册、认证、分发、使用、终结、恢复、密钥更新、撤销管理以及撤销状态检查。
6 小结
对称密码、公钥密码、单向散列函数、消息鉴别码、数字签名和随机数,被称为密码最重要的六个工具。在开放式的网络环境中进行交易,需要电子身份标识、交易方鉴别、源证明、报文完整性和机密性服务等,PKI为解决这些开放式网络问题提供了一条切实可行的技术方案。
总之,PKI可以认为是一系列的规范和标准,为了实现安全基础服务目的的技术都可称为PKI。从这个角度讲,需要强调两点:第一,标准化是PKI的内在要求,或者说PKI本身就是一类标准的总称;第二,PKI是广义词汇,任何以公钥密码技术为基础的安全基础设施都是PKI。
(注:本文仅做学术探讨,与作者所在单位观点无关)
参考文献
[1] 董坤祥, 谢宗晓, 甄杰. ISO 21188:2018《用于金融服务的公钥基础设施实施和策略框架》解讀及改版分析[J].中国质量与标准导报,2019(8):14-16,21.
[2] 谢宗晓,甄杰.公钥基础设施(PKI)国家标准解析[J].中国质量与标准导报,2018(12):18-21.
[3] 谢宗晓,刘琦.公钥基础设施(PKI)国际标准进展[J].金融电子化,2018(10):56-58.
[4] DIFFIEAND W, HELLMAN M. New directions in cryptography[J]. IEEE Transactions on Information Theory, 1976, 22(6):644-654.