PKI:揭穿假面,网络空间中“验明正身”很重要
汪德嘉移动支付网2018/3/22 9:54:32

Public Key Infrastructure(PKI),中文叫做公开密钥基础设施,也就是利用公开密钥机制建立起来的基础设施。但是如果这么解释起来,到底是个什么东西,大家想必是没办法理解的。现在大家的很多重要活动都是通过网络进行的,那么与之俱来的安全问题就显得非常重要。同时很多安全保障机制都是基于PKI的,其主要目的是用来发行“身份证明书”,网络上因为大家不能见面,所以伪造身份是非常容易的事情。因为要在网络上验明正身,所以这个网络身份证明书就变得很重要了。本文节选了汪德嘉博士《身份危机》一书中的PKI体系介绍章节。告诉大家什么是PKI?PKI的数字签名身份认证系统原理又是什么?

PKI体系介绍

PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。用户可利用PKI平台提供的服务进行安全通信。PKI的理论基础是基于密码学,它所使用的基础技术包括加密(非对称和对称)、数字签名、数据完整性机制、数字信封、双重数字签名等。PKI技术主要是基于非对称密钥密码技术,即公开密钥密码技术,同时也交叉使用对称密钥密码技术,两者取长补短,相辅相成,使PKI能够成为方便、灵活的安全服务的安全基础设施。使用基于公钥技术系统的用户建立安全通信信任机制的基础是:网上进行的任何需要安全服务的通信都是建立在公钥的基础之上的,而与公钥成对的私钥只掌握在他们与之通信的另一方。这个信任的基础是通过公钥证书的使用来实现的。公钥证书就是一个用户的身份与他所持有的公钥的结合,然后由其对该用户身份及对应公钥相结合的证书进行数字签名,以证明其证书的有效性。

数字签名介绍

随着计算机网络的发展和电子商务、电子政务的兴起,越来越多的电子合同、电子文档等在网络传输,而这些资料需要当事者的签名确认才能生效。由于这些合同、文档是以电子化形式存在于电脑、网络中,手写签名行不通,因此数字签名技术应运而生。

数字签名最早是由Dime.HellmaIl提出的,数字签名是手写签名的电子对应物,它是以密码学的方法对数据文件产生的一组代表签名者身份和数据完整性的数据信息。数字签名用来保证信息传输过程中信息的完整和提供信息发送者的身份认证和不可抵赖性,以解决伪造、抵赖、冒充等问题。数字签名技术逐步替代了传统的手写签名,开始应用于电子银行、电子政务等领域。手写签名与数字签名的主要区别在于:(1)体现形式不一样。手写签名印在文件的物理部分,手写签名反映某个人的个性特征,同一个人对不同文档的手写签名体现的个性特征相同;数字签名则以签名算法的输出内容体现在所签的文件中。数字签名是数字串,它随被签名对象的不同而变化,对不同文档的数字签名是不同的。(2)验证方式不同。一个手写签名是通过和一个真实的手写签名相比较来验证;而数字签名能通过一个公开的验证算法来验证。任何其他人都可以验证一个数字签名。数字签名主要用于对数字信息进行签名,以防止对信息的伪造或篡改,同时数字签名也可用于对通信双方的身份鉴别。

数字签名特性

(1)签名是可信的:任何人都可以验证签名的有效性;(2)签名是不可伪造的:除了合法的签名者之外,任何其他人伪造其签名是困难的;(3)签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果对一个消息的签名是从别处复制得到的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息;(4)签名的消息是不可改变的:经签名的消息不能被篡改。一旦签名的消息被篡改,则任何人都可以发现消息与签名之间的不一致性。(5)签名是不可抵赖的:签名者事后不能否认自己的签名。使用公开密钥算法是实现数字签名的主要技术。由于采用公开密钥算法对长文件签名效率太低,在实际应用中为了节约时间,数字签名通常与单向函数一起使用。在实际的签名中,通常不对整个文件签名,而只对文件的散列值签名。《电子签名法》中第四、五、六、八、九、十三条款正是根据这些特性制定的。

利用公钥实现数字签名原理

在公开密钥加密体制下,公有密钥是公开的,加密和解密的算法也是公开的,保密性完全取决于私有密钥的保密。只知道公有密钥不可能计算出私有密钥,只有知道私有密钥的合法解密者才能正确解密,将密文还原成明文。从另一个角度讲,保密的私有密钥代表解密者的身份特征,可以作为身份识别参数。因此,可以使用私有密钥进行数字签名。

数字签名中用的是散列(Hash)函数,其输入为一可变长输入,返回一固定长度串,该串被称为输入的散列值(消息摘要),在数学上保证:只要改动报文的任何一位,重新计算出的报文摘要就会与原先值不符,这样就保证了报文的不可更改。把该报文的摘要值用发送者的私人密钥加密,然后将该密文与原报文一起发送给接收者。把Hash函数和公钥算法结合起来,可以在提供数据完整性的同时,也可以保证数据的真实性。完整性保证传输的数据没有被修改,而真实性则保证是由确定的合法者产生的Hash,而不是由其他人假冒。接收方接收到数字签名后,用同样的Hash算法对报文计算摘要值,然后与用发送者的公开密钥进行解密解开的报文摘要值相比较,如果相等,则说明报文确实来自发送者,因为只有用发送者的签名私钥加密的信息才能用发送者的公钥解开,从而保证了数据的真实性。

日常生活中,通常通过对某一文档进行签名来保证文档的真实有效性,可以对签字方进行约束,防止其抵赖行为,并把文档与签名同时发送以作为日后查证的依据。在网络环境中,可以用电子数字签名作为模拟,从而为电子商务提供不可否认服务。由此可见,数字签名不同于一般的手写签名:数字签名随文本的变化而变化,与文本信息是不可分割的。因此,入侵者不可能将用户的数字签名从一个文本上截取,附在另外一个文本后面,从而保证了签名的可信性。

数字签名机制提供了一种鉴别方法,普遍用于银行、电子贸易等领域,以解决如下问题:(1)伪造:接收者伪造一文件,声称是对方发送的。(2)抵赖:发送者或者接收者事后不承认自己发送或接收过文件。(3)冒充:网上的某个用户冒充另一个用户发送或接收文件。(4)窜改:接收者对接收到的文件进行局部的窜改。基于以上数字签名的特点,完全可以将其用于身份识别。

基于PKI的数字签名身份认证系统原理

因为文档的数字签名不容易伪造,而且由权威机构发放的私钥证书保证了私钥持有者的合法身份,且私钥不容易被盗和伪造,所以它为我们提供了一种验证用户身份的手段,看是不是他签署的给定的数据。一般的利用公私钥进行身份认证是通过加密的方式。服务器使用用户的公钥对一随机数进行加密,如果用户能解密,就允许其进入。然而,这并不是解决这个问题的有效方法。例如用户可能无法进行加密,或者有些系统存放用户的私钥的目的只是进行数字签名。因此,我们用数字签名的办法来取代加密进行身份认证。

在这里,我们仍用电子采购中的申请标书下载密码为例来实现这种身份认证系统。为方便起见,我们采用C/S(Client/Server)模式来实现。在电子采购系统中,商户必须成为会员后才可对采购网站上发布的信息进行访问,会员客户注册交纳一定的费用并经过采购方的审核后,就有资格对服务器的资源进行访问。但对于不同的标书,不同的客户有不同的下载权限,不是所有的会员都可以无限止地下载标书。当会员需要下载标书时,需向采购方申请一个唯一的下载密码,此密码与某一个标书相对应,只能使用一次。一般的方式是采购方生成一个密码,并用电子邮件或电话方式通知会员下载标书。这很明显存在一个安全缺陷,双方之间的身份认证没有安全保障且相当于采用手工方式作业。因此我们用一种新的方式以实现身份认证,建立比用户名和口令更安全的、能提供密码学保护的方式来阻止非授权用户的登录。(1)服务器产生一个时间戳和一个大的随机数,并将它们传送给客户机。(2)客户机用自己的私钥对接收到的时间戳和随机数进行签名,将签名结果传回服务器。(3)服务器接收到签名后进行验证。因为只有客户自己的私钥能进行签名,因此服务器知道与它通信的客户是否是合法的。

常用的加密算法

PKI体系认证安全机制的核心是加密算法。这些算法包括国密算法(SM2、SM3、SM4等)、AES、RSA、3DES、DSS、Diffie-Hellman、ElliPticCurve、lDEA、SHA-1、MD5和ECC椭圆曲线算法等。

•国密SM2椭圆曲线算法

由国家密码管理局于2010年12月17日发布,全称为椭圆曲线算法。椭圆曲线并不是椭圆,之所以称为椭圆曲线是因为它们是用三次方程来表示的,并且该方程与计算椭圆周长的方程相似。

我国国家密码管理局在ECC算法的基础上提出了SM2算法。相比于一般的ECC算法,SM2算法对加密运算过程进行了修改,提升了复杂度,进一步加强了安全性。而且SM2算法中的加密运算使用国产的加密设备实现,拥有完全的自主权,保证了国家信息体系的安全性。

•国密SM3摘要算法

摘要函数在密码学中具有重要的地位,被广泛应用在数字签名、消息认证、数据完整性检测等领域。摘要函数通常被认为需要满足三个基本特性:碰撞稳固性、原根稳固性和第二原根稳固性。2005年,Wang等人给出了MD5算法和SHA-1算法的碰撞攻击方法,现今被广泛应用的MD5算法和SHA-1算法不再是安全的算法。SM3密码摘要算法是中国国家密码管理局2010年公布的中国商用密码杂凑算法标准。SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。SM3算法采用Merkle-Damgard结构,消息分组长度为512位,摘要值长度为256位。SM3算法的压缩函数与SHA-256的压缩函数具有相似的结构,但是SM3算法的设计更加复杂,比如压缩函数的每一轮都使用2个消息字。现今为止,SM3算法的安全性相对较高。

•国密SM4分组密码算法

是用于无线局域网和可信计算系统的专用分组密码算法,该算法的分组长度为128比特,密钥长度为128比特。SM4算法是我国制定WAPI标准的组成部分,同时也可以用于其它环境下的数据加密保护。

•RSA算法

RSA公钥加密算法是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。正是基于这种理论,1978年出现了著名的RSA算法,它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。

SET(SecureElectronicTransaction)协议中要求CA采用2048bits长的密钥,其他实体使用1024比特的密钥。RSA密钥长度随着保密级别提高,增加很快。今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战和质疑。

RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

•AES算法

先进加密标准(advancedencryptionstandard,AES)是一个单钥加密系统。本系统采用该算法实现对明文的加密,以提高加密速度。AES是分组密钥,算法输入128位数据,密钥长度128位。用Nr表示对一个数据分组加密的轮数。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,在算法中要用一个密钥扩展程序(Keyexpansion)将外部密钥K扩展成更长的字符串,以生成各轮的加密和解密密钥。总之,AES密码是一个非对称密码体制,它的解密要比加密复杂和费时。

•3DES算法

3DES又称TripleDES,是DES加密算法的一种模式,它使用3条56位的密钥对。

数据进行三次加密。数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法,并于1981年被ANSI组织规范为ANSIX.3.92。DES使用56位密钥和密码块的方法,而在密码块的方法中,文本被分成64位大小的文本块然后再进行加密。比起最初的DES,3DES更为安全。

3DES(即TripleDES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文,这样:

3DES加密过程为:C=Ek3(Dk2(Ek1(M)))

3DES解密过程为:M=Dk1(EK2(Dk3(C)))

结语

PKI作为一种重要的网络安全基础设施,已经深入到电子商务、电子政务、网上银行等领域。作为网络环境中的一个重要主体,网络信息安全对于企业的正常运营起着保驾护航的作用。PKI的核心是要解决信息网络空间中的信任问题,确定信息网络空间中身份的唯一性、真实性和合法性,保护信息网络空间中各种主体的安全利益,是目前公认的保障网络社会安全的最佳体系。

本文为作者授权发布,不代表移动支付网立场,转载请注明作者及来源,未按照规范转载者,移动支付网保留追究相应责任的权利。

展开全文
相关阅读
资讯查询取消