数据加密过程就是通过加密系统把原始的数字数据(明文),按照加密算法变换成与明文完全不同的数字数据(密文)的过程。
数据加密算法有很多种,密码算法标准化是信息化社会发展的必然趋势,是世界各国保密通信领域的一个重要课题。按照发展进程来分,经历了古典密码、对称密钥密码和公开密钥密码阶段。古典密码算法有替代加密、置换加密;对称加密算法包括 DES 和 AES;非对称加密算法包括 RSA、背包密码、McEliece 密码、Rabin、椭圆曲线、EIGamal D_H等。目前在数据通信中使用最普遍的算法有 DES 算法、RSA 算法和 PGP 算法等
在 CA 系统中,公开密钥系统主要用于对秘密密钥(在 CA 系统中称控制字——Control-Word 用于对数据码流进行加扰)的加密过程。每个用户如果想要对数据进行加密和解密,都需要生成一对自己的密钥对(Key Pair)。密钥对中的公开密钥和非对称加密解密算法是公开的,但私有密钥则应该由密钥的主人妥善保管。对数据信息进行加密传输的实际过程是:
发送方生成一个秘密密钥并对数据流用秘密密钥(控制字)进行加扰,然后用网络把加扰后的数据流传输到接收方。发送方生成一对密钥,用公开密钥对秘密密钥(控制字)进行加密,然后通过网络传输到接收方。
接收方用自己的私有密钥(存放在接收机智能卡中)进行解密后得到秘密密钥(控制字),然后用秘密密钥(控制字)对数据流进行解扰,得到数据流的解密形式。
因为只有接收方才拥有自己的私有密钥,所以其他人即使得到了经过加密的秘密密钥(控制字),也因为无法进行解扰而保证了秘密密钥(控制字)的安全性,从而也保证了传输数据流的安全性。实际上,在数据传输过程中实现了两个加密解密过程,即数据流本身的加解扰和秘密密钥(控制字)的加密解密,这分别通过秘密密钥(控制字)和公开密钥来实现。
要想了解数字签名,应从电子签名开始。要理解什么是电子签名,需要从传统手工签名或盖印章谈起。在传统商务活动中,为了保证交易的安全与真实,一份书面合同或公文要由当事人或其负责人签字、盖章,以便让交易双方识别是谁签的合同,保证签字或盖章的人认可合同的内容,在法律上才能承认这份合同是有效的。而在电子商务的虚拟世界中,合同或文件是以电子文件的形式表现和传递的。在电子文件上,传统的手写签名和盖章是无法进行的,这就必须依靠技术手段来替代。能够在电子文件中识别双方交易人的真实身份,保证交易的安全性和真实性以及不可抵赖性,起到与手写签名或者盖章同等作用的签名的电子技术手段,称为电子签名。从法律上讲,签名有两个功能,即标识签名人和表示签名人对文件内容的认可。
联合国贸发会的《电子签名示范法》中对电子签名做如下定义:“指在数据电文中以电子形式所含、所附或在逻辑上与数据电文有联系的数据,它可用于鉴别与数据电文相关的签名人和表明签名人认可数据电文所含信息”;
在欧盟的《电子签名共同框架指令》中就规定:“以电子形式所附或在逻辑上与其他电子数据相关的数据,作为一种判别的方法”称电子签名。实现电子签名的技术手段有很多种,但目前比较成熟的,世界先进国家普遍使用的电子签名技术还是“数字签名”技术。
所谓数字签名就是通过某种密码运算生成一系列符号及代码组成电子密码进行签名,来代替书写签名或印章,对于这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证无法比拟的。数字签名是目前电子商务、电子政务中应用最普遍、技术最成熟、可操作性最强的一种电子签名方法。
数字签名在 ISO 7498-2 标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所做的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据, 防止被人(例如接收者)进行伪造”
美国电子签名标准(DSS,FIPS186-2)对数字签名做了如下解释:“利用一套规则和一个参数对数据计算所得的结果,用此结果能够确认签名者的身份和数据的完整性”。按上述定义 PKI(Public KeyInfrastructure)可以提供数据单元的密码变换,并能使接收者判断数据来源及对数据进行验证。
目前,实现电子签名的技术手段有好多种,前提是在确认了签署者的确切身份即经过认证之后,电子签名承认人们可以用多种不同的方法签署一份电子记录。这些方法有:基于 PKI 的公钥密码技术的数字签名;用一个独一无二的以生物特征统计学为基础的识别标识,例如手书签名和图章的电子图像的模式识别;手印、声音印记或视网膜扫描的识别;一个让收件人能识别发件人身份的密码代号、密码或个人识别码 PIN;基于量子力学的计算机等。但比较成熟的、使用方便具有可操作性的、在世界先进国家和我国普遍使用的电子签名技术还是基于 PKI 的数字签名技术。所以,就现在来讲,电子签名就是数字签名。
对一个电子文件进行数字签名并在网上传输,其技术实现过程大致如下:首先要在网上进行身份认证,然后再进行签名,最后是对签名的验证。
PKI 提供的服务首先是认证, 即身份识别与鉴别, 就是确认实体即为自己所声明的实体。认证的前提是甲、乙双方都具有第三方 CA 所签发的证书,认证分单向认证和双向认证。
1) 单向认证
单向认证是甲、乙双方在网上通信时,甲只需要认证乙的身份。这时甲需要获取乙的证书,获取的方式有两种,一种是在通信时乙直接将证书传送给甲,另一种是甲向 CA 的目录服务器查询索取。甲获得乙的证书后,首先用 CA 的根证书公钥验证该证书的签名,验证通过说明该证书是第三方 CA 签发的有效证书。然后检查证书的有效期及检查该证书是否已被作废(LRC 检查)而进入黑名单。
2) 双向认证
双向认证是甲、乙双方在网上通信时,甲不但要认证乙的身份,乙也要认证甲的身份。其认证过程的每一方都与上述单向认证过程相同,即乙方也用同样的过程认证甲方的证书有效性,如图 4.1 所示。甲乙双方在网上查询对方证书的有效性及黑名单时,采用 LDAP协议(Light Directory Access Protocol),它是一种轻型目录访问协议。
网上通信的双方,在互相认证身份之后,即可发送签名的数据电文。数字签名的全过程分两大部分,即签名与验证。数字签名与验证的过程和技术实现的原理如图 4.2 所示。参照图 4.2 数字签名过程分两部分:左侧为签名过程,右侧为验证过程。即发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密求得数字签名,然后将原文与数字签名一起发送给收方;收方验证签名,即用发方公钥解密数字签名,得出数字摘要;收方将原文采用同样哈希算法又得一新的数字摘要,将两个数字摘要进行比较,如果两者匹配,说明经数字签名的电子文件传输成功。
数字签名的操作过程如图 4.3 所示,需要有发方的签名证书的私钥及其验证公钥。
数字签名操作具体过程如下:首先是生成被签名的电子文件(《电子签名法》中称数据电文),然后对电子文件用哈希算法做数字摘要,再对数字摘要用签名私钥做非对称加密,即做数字签名;之后是将以上的签名和电子文件原文以及签名证书的公钥加在一起进行封装,形成签名结果发送给收方,待收方验证。
收方收到发方的签名结果后进行签名验证,其具体操作过程如图 4.4 所示。收方收到数字签名的结果包括数字签名、电子原文和发方公钥,即待验证的数据。收方进行签名验证。验证过程是:收方首先用发方公钥解密数字签名,导出数字摘要,并对电子文件原文做同样哈希算法得一个新的数字摘要,将两个摘要的哈希值进行结果比较,结果相同签名得到验证,否则签名无效。《电子签名法》中要求对签名不能改动,对签署的内容和形式也不能改动。
CA (Certification Authority)是认证机构的国际通称,它是对数字证书的申请者发放、管理、取消数字证书的机构。CA 的作用是检查证书持有者身份的合法性,并签发证书(用数学方法在证书上签字),以防证书被伪造或篡改。CA 认证是顺应我国电子商务和电子政务的发展应运而生的。随着网上银行的普遍应用和在线支付手段的不断完善,网上交易已经变得越来越大众化,安全问题就显得日益重要。而网络间的身份认证成为根本。认证机构相当于一个权威可信的中间人,它的职责是核实交易各方的身份,负责电子证书的发放和管理。理想化的状态是,上网的每一个企业或者个人都要有一个自己的网络身份证作为唯一的识别。而这些网络身份证的发放、管理和认证就是一个复杂的过程,也就是所谓的 CA认证。
SSL(Secure Sockets Layer, 安全套接字层)是一种国际标准的加密及身份认证通信协议,一般大家用的浏览器就支持此协议。SSL 最初是由美国 Netscape 公司研究出来的,后来成为了因特网上安全通信与交易的标准。 SSL 协议使用通信双方的客户证书以及 CA 根证书,允许客户/服务器应用以一种不能被偷听的方式通信,在通信双方间建立起了一条安全的、可信任的通信通道。它具备以下基本特征:信息保密性、信息完整性、相互鉴定。
数字凭证又称为数字证书、数字标识(Digital Certificate,Digital ID),也被称作 CA 证书(简称证书),实际是一串很长的数学编码,包含有客户的基本信息及 CA 的签字,通常保存在计算机硬盘或 IC 卡中。数字证书一般是由 CA 认证中心签发的,证明证书主体(证书申请者获得 CA 认证中心签发的证书后即成为证书主体)与证书中所包含的公钥的唯一对应关系。它提供了一种在因特网上验证身份的方式,是用来标识和证明网络通信双方身份的数字信息文件,与司机的驾照或日常生活中的身份证相似。在网上进行电子商务活动时,交易双方需要使用数字证书来表明自己的身份,并使用数字证书来进行有关的交易操作。通俗地讲,数字证书就是个人或单位在因特网的身份证。数字证书主要包括三方面的内容:证书所有者的信息、证书所有者的公开密钥和证书颁发机构的签名及证书有效期等内容。
一个标准的 X.509 数字证书包含以下一些内容:
(1) 证书的版本信息。
(2) 证书的序列号,每个证书都有一个唯一的证书序列号。
(3) 证书所使用的签名算法。
(4) 证书的发行机构名称(命名规则一般采用X.500 格式)及其用私钥的签名。
(5) 证书的有效期。
(6) 证书使用者的名称及其公钥的信息。
在使用数字证书的过程中应用公开密钥加密技术,建立起一套严密的身份认证系统,它能够保证:信息除发方和收方外不被其他人窃取;信息在传输过程中不被篡改;收方能够通过数字证书来确认发方的身份;发方对于自己发送的信息不能抵赖。
以电子邮件为例,数字证书主要可以解决以下问题:
(1) 保密性,使用收件人的数字证书对电子邮件加密,只有收件人才能阅读加密的邮件,这样保证在因特网上传递的电子邮件信息不会被他人窃取,即使发错件,收件人也由于无法解密而不能够看到邮件内容。
(2) 完整性,利用发件人数字证书在传送前对电子邮件进行数字签名不仅可确定发件人身份,而且可以判断发送的信息在传递的过程中是否被篡改过。
(3) 身份认证:在因特网上传递电子邮件的双方互相不能见面,所以必须有方法确定对方的身份。利用发件人数字证书在传送前对电子邮件进行数字签名即可确定发件人身份,而不是他人冒充的。
(4) 不可否认性,发件人的数字证书只有发件人拥有,所以发件人利用其数字证书在传送前对电子邮件进行数字签名后,发件人就无法否认发送过此电子邮件。
数字证书采用 PKI——公开密钥基础架构技术,利用一对互相匹配的密钥进行加密和解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥),由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发方使用收方的公钥对数据加密,而收方则使用自己的私钥解密,通过数字的手段保证加解密过程是一个不可逆过程,即只有用私有密钥才能解密,这样保证信息安全无误地到达目的地。用户也可以采用自己的私钥对发送信息加以处理,形成数字签名。由于私钥为本人所独有,这样可以确定发送者的身份,防止发送者对发送信息抵赖。收方通过验证签名还可以判断信息是否被篡改过。在公开密钥基础架构技术中,最常用一种算法是 RSA 算法,其数学原理是将一个大数分解成两个质数的乘积,加密和解密用的是两个不同的密钥。即使已知明文、密文和加密密钥(公开密钥),想要推导出解密密钥(私密密钥)在计算上是不可能的。按现在的计算机技术水平,要破解目前采用的 1024位 RSA 密钥,需要上千年的计算时间。简单地讲,结合证书主体的私钥,证书在通信时用来出示给对方,证明自己的身份。证书本身是公开的,谁都可以拿到,但私钥(不是密码)只有持证人自己拥有,永远也不会在网络上传播。在网上银行系统中有三个证书:银行 CA 认证中心的根证书、银行网银中心的服务器证书和每个网上银行用户在浏览器端的客户证书。有了这三个证书,就可以在浏览器与银行网银服务器之间建立起 SSL 连接。这样,浏览器与银行网银服务器之间就有个你),同样,你也可以用与你通信的对方的证书验证他的身份(他确实是他所声称的那个他),而这一验证过程是由系统自动完成的。
数字证书是由认证中心颁发的。认证中心是一家能向用户签发数字证书以确认用户身份的管理机构。为了防止数字凭证被伪造,认证中心的公共密钥必须是可靠的,认证中心必须公布其公共密钥或由更高级别的认证中心提供一个电子凭证来证明其公共密钥的有效性,后一种方法导致了多级别认证中心的出现。数字证书颁发过程如下:用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。
参考书籍:《计算机网络安全技术》 主编 王其良 高敬瑜