软件架构之安全性和保密性设计(1)

第 16 章:安全性和保密性设计

随着科技进步、社会发展,尤其是以计算机为代表的信息技术飞速发展,各种信息呈爆炸式发展。计算机及信息技术的应用领域在不断扩展,计算机在政府、企业、民生等各个领域中都得到越来越广泛的应用。与此同时,网络攻击和入侵事件与日俱增,重要机构的信息系统遭黑客袭击的事件时有发生。攻击者可以从容地对那些缺乏足够安全保护的信息系统进行攻击和入侵,如进行拒绝服务攻击、从事非授权的访问、肆意窃取和篡改重要的数据信息、安装后门监听程序以便随时获得内部信息、传播计算机病毒、摧毁主机等。攻击和入侵事件给这些机构和组织带来了巨大的经济损失和形象的损害,甚至威胁到国家的安全。信息化时代,人们对信息系统的安全需求越来越迫切。

信息安全,具体地说就是保证信息的保密性、完整性、真实性、占有性

  • 保密性是指系统中的信息必须按照该信息拥有者的要求保证一定的秘密性,不会被未经许可的第三方非法获取。系统必须阻止一切对秘密信息的非授权访问或泄露。
  • 完整性是指系统中的信息应当安全、准确、有效,要求数据不能被非法改动或删除。完整性是信息安全的最基本要求。为了实现完整性,可以借助本章讲述的数字签名、加密等措施,从而有力地保护数据的完整。
  • 真实性是指对信息的发送者身份的确认或系统中有关主体的身份确认,这样可以保证信息的可信度。信息的真实性可以通过数字签名、公钥加密等方式来实现。
  • 占有性是指要保护信息赖以存储的节点、介质、载体等不被盗用或窃取。保护信息占有性的方法有使用版权、专利、商业秘密性,提供物理的或逻辑的存取限制方法,维护和检查有关窃取文件的记录等。

16.1 加密解密

加密技术源远流长,自从古代有了信息的传递和存储,就有了加密技术的运用。此后,很长一段时间里,加密及解密技术在军事、政治、外交、金融等特殊领域里被普遍采用,并经过长时间的研究和发展,形成了比较完备的一门学科——密码学。

密码学是研究加密方法、秘密通信的原理,以及解密方法、破译密码的方法的一门科学。 加密和解密的过程大致如下:首先,信息的发送方准备好要发送信息的原始形式,叫作明文。然后对明文经过一系列变换后形成信息的另一种不能直接体现明文含义的形式,叫作密文。由明文转换为密文的过程叫作加密。在加密时所采用的一组规则或方法称为加密算法。

接收者在收到密文后,再把密文还原成明文,以获得信息的具体内容,这个过叫作解密。解密时也要运用一系列与加密算法相对应的方法或规则,这种方法或规则叫作解密算法。在加密、解密过程中,由通信双方掌握的参数信息控制具体的加密和解密过程,这个参数叫作密钥。

密钥分为加密密钥和解密密钥,分别用于加密过程和解密过程。在加密和解密的过程中,如果采用的加密密钥与解密密钥相同,或者从一个很容易计算出另一个,则这种方法叫作对称密钥密码体制,也叫作单钥密码体制。反之,如果加密和解密的密钥并不相同,或者从一个很难计算出另外一个,就叫作不对称密钥密码系统或者公开密钥密码体制,也叫作双钥密码体制。

16.1.1 对称密钥加密算法

在过去很长一段时间里,人们一直都采用对称密钥密码体制来对信息进行加密和解密,直到现在,对称密钥密码体制也仍然是一种非常重要的常用加密方法。
对称密钥密码体制中,加密和解密过程中所使用的是同一个密钥,或者即使加密密钥和解密密钥不同,但是很容易地由一个计算出另外一个。显然,在这种密码体制中,密钥成为整个秘密通信的核心,整个加密系统的安全性完全以密钥的保密为基础。如果密钥暴露,则整个密码体制就完全失去了保密的效果。所以说,密钥的保密是对称密钥加密体制安全保密的关键,必须妥善保存并经由可靠的渠道传递。

对称密钥加密算法有多种,例如,DES(Data Encryption Standard,数据加密标准)、 IDEA(International Data Encryption Algorithm,国际数据加密算法)、Skipjack、3DES、GDES、 New DES、Lucifer、FEAL N、LOKI 91、RC4、RC5 等。

1.DES 算法
DES 算法是 1977 年美国政府公布的一种加密算法,由于算法实现简单,加密效果好,在很长时间里在全世界范围都被广泛运用。它通过对数据进行非常复杂的迭代和置换进行加密,使得企图破译者从加密后的密文中无法获得任何有效信息。对这种加密方法,如果用穷举的方法进行攻击的话,由一台一秒钟能够进行 10 000 次破译的计算机来计算,则要经过200 多年才能够破解,可见 DES 算法具有很好的保密效果。另外,DES 算法实现起来并不复杂,不但在软件中可以容易地实现,而且早已经在芯片上实现了,使用起来非常方便。

DES 算法的过程,简单来说,就是把要加密的明文分成 64 位的数据段作为输入,再使用根据 64 位密钥变化生成的 52 个子密钥,对输入的数据段依次进行初始置换、16 轮迭代、逆初始置换,然后得到 64 位密文。

DES 的解密过程与加密过程几乎相同,只是子密钥的使用顺序不一样。加密时依次使用的部分参数 K1 K2 K3 …K16,在解密时则按照 K16 K15 K14 …K1 顺序使用。其他算法完全一样,这也是 DES 容易使用的一个方面。

2.IDEA 算法
IDEA 在加密运算中所处理的数据段大小也是 64 位,但是所用的密钥长度为 128 位,而且采用更加复杂的加密算法,目的是保证它不会被轻易破译。IDEA 是一种加密强度很高的加密算法,迄今为止还没有出现对该算法的有效攻击。假如一台计算机一秒钟可以产生和运行 10 亿个密钥,则要猜出 IDEA 密钥需要花费 1013 年的时间,可见 IDEA 的加密强度非常高。另外,IDEA 实现非常方便,既可以通过软件实现,也可以通过硬件实现。

IDEA 算法对数据的处理是以 64 位为单位的,在加密前把要加密的明文按每 64 位作为一个数据段进行分割然后分别加密。IDEA 的解密过程与加密过程基本相同,所不同的就是解密子密钥的产生方式与加密子密钥的产生方式不一样,解密的其他运算过程同加密一样,也是把 64 位数据段分成 4 个 16 位的数据段,然后经过八轮迭代变换和一轮输出变换,就可以得到对应的明文结果。

16.1.2 不对称密钥加密算法

对称密钥加密方法是加密、解密使用同样的密钥,由发送者和接收者同时保存,在加密和解密时使用相同的密钥。采用这种方法的主要问题是密钥的生成、导入、存储、管理、分发等过程比较复杂,特别是随着用户的增加,密钥的需求量成倍增加。而在较大规模的信息系统中,大量密钥的分配与管理是一个难以解决的问题。

例如,系统中有 n 个用户,其中每两个用户之间需要建立密码通信,则系统中每个用户须掌握(n-1)/2 个密钥,而系统中所需的密钥总数为 n*(n-1)/2 个。对 10 个用户的情况,每个用户必须有 9 个密钥,系统中密钥的总数为 45 个。对 100 个用户来说,每个用户必须有 99 个密钥,系统中密钥的总数为 4950 个。这还仅仅考虑用户之间的通信只使用一种会话密钥的情况,如果不同的会话需要变换不同的密钥,则密钥总数就更多了。

如此庞大数量的密钥生成、管理、分发是一个难以处理的问题。 与对称密钥加密方法不同,不对称密钥加密技术在对信息进行加密和解密时,需要分别采用两个不同的密钥,因此也称为双钥加密方法。它在运算中,先产生一对密钥,其中之一是保密密钥,由用户自己保存,不能向外界泄漏,简称私钥;另一个为公开密钥,可对外公开,甚至可在公共目录中列示,简称公钥,因此也称公开密钥加密方法。

只有使用私钥才能解密用公钥加密的数据,同时使用私钥加密的数据只能用公钥解密。在通信过程中,如果发送者要向接收者发送保密信息,则需要先用接收者的公开密钥对信息进行加密,然后发送给该接收者,接收方用其私钥能够顺利解密。而其他人即使收到加密的密文也无法正确解读,从而达到保密通信的目的。

公开密钥加密方法中,要想达到良好的加密效果,算法上必须做到:在计算上产生密钥非常容易;已知公钥的情况下对明文加密在计算上很容易实现;已知私钥的情况下对密文解密在计算上很容易实现;尽管用于加密和解密的两个密钥在数学上是相关的,但是在已知公钥的情况下,要想求得私钥在计算上不可行;已知公钥和密文的情况下,要想求得明文在计算上不可行。只有做到以上几点,才能有效地防止攻击者对算法的破译。

不对称密钥加密算法有多种,例如,RSA、背包密码、McEliece、Diffe Hellman、Rabin、Ong Fiat Shamir、零知识证明的算法、椭圆曲线、EIGamal 等。这里主要介绍 RSA 的加密原理。

在众多的公钥加密算法中,以 1977 年由 Ron Rivest、Adi Shamir 和 Leonard Adleman 提出的以他们的名字命名的 RSA 加密算法最为著名。而且它是第一个既能用于数据加密也能用于数字签名的算法。RSA 从提出到现在已经二十多年,经历了各种攻击的考验,逐渐为人们所接受,被普遍认为是目前优秀的公钥加密方法之一。由于它易于理解和操作,因而获得了广泛的应用。但 RSA 的安全性一直未能得到理论上的证明。 RSA 的安全性依赖于大数的分解,即求得两个大数(例如,大于 100 位的十进制数)的乘积非常容易,但是要把一个大数分解为两个素数却非常困难。

在 RSA 加密体制中,每个用户有公开密钥 PK = (N,e)和私人密钥 SK = (N,d),其中,N 为两个大素数的乘积,为了保密性更好,一般都取两个 100 位以上的大素数相乘得到 N。e 和 d 是根据一定运算法则计算得到的,虽然 N、e、d 之间存在一定的计算关系,但是攻击者根据 N、e 无法求解 d,从而实现不对称加密。

1.RSA 加密过程
首先把需要加密的明文按比特位分成等长的数据段,使得每个数据段对应的十进制数小于 N,即数据段的长度小于 log2N。然后依次对每个明文数据段 m 做加密运算可以得到密文 c∶c = me mod N。 相应的,解密时对密文数据段做解密运算就可以得到明文 m∶m = ce mod N。

2.RSA 数字签名
RSA 加密算法不仅可以用于信息的加密,而且还可以用于发送者的身份验证或数字签名。例如,用户 B 要向 A 发送一个信息 m,而且要让 A 确信该信息就是 B 本人发出的。

为此,B 用自己的私钥 SK = (N,d)对信息加密得到密文 c∶c = md mod N,然后把 c 发送给 A。A 收到密文后,使用 B 的公钥 PK = (N,e)对密文进行解密得到明文 m∶m = ce mod N。这样,经过验证,A 可以确认信息 m 确实是 B 发出的,因为只有 B 本人才有与该公钥对应的私钥,其他人即使知道公钥,也无法猜出或计算出 B 的私钥来冒充他发送加密信息。

16.2 数字签名与数字水印

散列函数是一种公开的数学函数。散列函数运算的输入信息也可叫作报文。散列函数运算后所得到的结果叫作散列码或者叫作消息摘要。散列函数具有如下一些特点:

(1)不同内容的报文具有不同的散列码,而一旦原始报文有任何改变,哪怕改变一位信息,则通过散列函数计算后得到的散列码也将完全不同。这样,这个散列码就好比是这个报文所特有的“指纹”。

(2)散列函数是单向的,即求解某一个报文的散列码非常容易,但是根据散列码来倒推原始报文是非常困难的。

(3)对于任何一个报文,无法预知它的散列码。
(4)散列码具有固定的长度,不管原始报文的长度如何,通过散列函数运算后的散列码都具有一样的长度。例如,MD5(Message Digest Algorithm 5,消息摘要算法第 5 个版本)

散列算法的散列码长度为 128 位,并且不管是对一部百科全书,还是对某个人的工资进行MD5 散列运算,得到的散列码长度都是 128 位。

由于散列函数具有这些特征,因此散列函数可以用来检测报文的可靠性。接收者对收到的报文用与发送者相同的散列函数进行运算,如果得到与发送者相同的散列码,则可以认为报文没有被篡改,否则,报文就是不可信的。

常见的散列函数有 MD5、SHA、HMAC 等。MD5 是一种非常著名的散列算法,已经成为国际标准,具有很好的安全性能。MD5 算法在对输入的报文进行计算时,是以 512 位为单位进行处理的,结果生成一个 128 位长的消息摘要;SHA、HMAC 等算法都是对任意长度的报文以 512 位为单位进行处理,最后得出一个 160 位的消息摘要。

16.2.1 数字签名

对于计算机系统中传送、存储的重要文件、数据、信息等,一般需要有某种方式来确认其真实性,即接收者能够确认自己得到的信息确实是由该信息所声称的发送者发出的,而不是由非法入侵者伪造、冒充发出的,并且还要能够保证信息在传送、存储中没有被恶意篡改,这样这份信息才能真实地反映发送方的意图。另外,对于发送方来说,如果发出一份信息,还必须有一定的措施阻止其否认自己发出信息的行为,即不可否认性。

只有做到以上几点,一个信息传送、存储系统才能够安全、可靠,其上所传送、存储的信息才是真实的、值得相信的。

举例来说,互有贸易往来的买卖双方之间通过计算机系统进行贸易,卖方通过计算机系统给买方发出一张电子报价单,买方收到后,擅自更改了收到的单价,并声称是卖方发出的,而且据此下订单,这就是篡改信息。显然安全的系统应该能够阻止这种行为。

要实现上述安全的系统,就离不开数字签名技术。
数字签名主要由两个算法组成:签名算法和验证算法。通过使用签名算法签名一个消息,所得到的签名能够通过一个验证算法来验证签名的真实性和有效性。
所以数字签名技术的大致过程就是:信息的发送方对信息利用自己的私钥进行签名,接着发送方把这个签名和信息一起发送给接收方。接收方收到信息后利用发送方的公钥来对其中的数字签名进行验证,确认其合法性。

目前已经有大量的数字签名算法,例如,RSA 数字签名算法、EI Gamal、Fiat-Shamir、Guillon-Oucsquerrter、DSS(Digital Signature Standard,数字签名标准)、DSA(Digital SignatureAlgorithm,数字签名算法)、椭圆曲线等。

1.RSA 结合 MD5 数字签名
前面讲过,RSA 公钥加密技术本身就可以用来实现数字签名。但是仅仅使用公钥加密算法进行数字签名的运算量比较大,尤其是要传送的信息量比较大时,速度会更加慢。显然,直接用这种方法进行数字签名并不是很好的选择。

而散列算法(例如,MD5 算法)就有很好的特性,它能对每一个不同长度的信息产生相互不同的、独特的、简短的消息摘要。这个消息摘要可以看作这个信息特有的“指纹”,因而非常适合用作数字签名。

通过散列算法对原始数据进行散列,再对散列码进行公钥加密就可以很好地实现数字签名。它的特点是:它代表了文件的特征,具有唯一性。只要文件发生哪怕一位数据的改变,或者签名者有任何差别,数字签名的值也将随之而发生改变;不同的文件和签名者得到的是不同的数字签名。

RSA 结合 MD5 数字签名的主要过程是:信息的发送方通过对信息进行散列运算生成一个消息摘要,接着发送方用自己的私钥对这个消息摘要进行加密,就形成发送方的数字签名。

然后,把这个数字签名作为信息的附件和信息一起发送给信息的接收方。接收方收到信息后,首先对收到的信息进行与发送者相同的散列运算得到一个消息摘要,接着再用发送方的公钥来对信息中附加的数字签名进行解密得到发送方计算出的散列码。如果两个散列码相同,那么接收方就能确认该信息和数字签名是由发送方发出的。通过数字签名能够实现对原始信息完整性的鉴别和发送方发送信息的不可抵赖性。

下面结合一个例子,看一看 RSA 结合 MD5 数字签名的具体步骤:

(1)信息发送者 A 要向 B 发送一份信息,A 先按双方约定的散列算法对该信息进行散列运算,得到一个该信息特有的消息摘要 H,从前面所述可以知道,只要改动信息中任何一位,重新计算出的消息摘要值就会与原先的值不相符。这样就保证了信息的不可更改性。

(2)接着把该消息摘要用 A 自己的私钥加密,得到 A 对该信息的数字签名 S。
(3)然后 A 把信息原文与数字签名 S 一起发送给 B。
(4)当 B 收到后,先用 A 的公钥对数字签名 S 解密得到 A 的消息摘要 H。
(5)再用同样的散列算法对收到的信息进行散列运算,得到消息摘要 H’。
(6)比较 H 与 H’,如相等则说明信息确实来自它所声称的发送者 A。

在传输过程中,如有攻击者对文件进行了篡改,但他并不知道发送方的私人密钥,因此,接收方解密得到的数字签名 H 与经过计算后的数字签名 H’必然不同。这就提供了一个安全的确认发送方身份的办法。

当然,以上例子中,对传送的信息是以明文出现的,不具有保密意义。实际应用中,还需要对信息本身运用适当的保密措施。 RSA 用于数字签名的一个重要的特点是能够证实信息发送方的身份及电子文件的可靠性和完整性,它对于发送方和被发送的信息都是独一无二的,具有可验证性和不可否认的权威性特点;另一个重要的特点是它通过在计算机之间交换数字证书就可以确定当事者就是他们所宣称的人。

2.数字签名标准
DSS 是美国国家标准与技术学会的数字签名标准,自 1991 年提出以来又经过广泛的修改。DSS 为计算和验证数字签名指定了一个数字签名算法——DSA。DSA 是 El Gamal 数字签名算法的一个改进版本,它通过选择较小规格的参数减少数字签名的数据量,从而减少了存储空间和传输带宽。

DSS 中指定 SHA 作为其散列算法,它对原始信息进行运算后产生 160 位的消息摘要,然后 DSS 把这一消息摘要与一个用作这个特殊签名的随机数作为输入送到数字签名算法中,经过运算生成数字签名。

该数字签名函数还依赖于发送方的私钥 SK 和一个对许多通信方都公开的由重要的公钥集合组成的全局公钥。 接收方在收到消息摘要和签名后将其作为验证函数的输入。验证函数还依赖于全局公钥和与发送方的私钥相匹配的公钥 PK,这样只有发送方用其自己的私钥才能产生有效的签名。

数字签名作为一项重要的鉴别技术,近年来越来越受到人们的重视,在政府、军事、金融、安全等领域得到广泛的运用。通过数字签名可以有效地保证数据的完整性,防止第三方伪造或发送方的抵赖。

2004 年 8 月 28 日,十届全国人大常委会第十一次会议表决通过了电子签名法。这部法律规定,可靠的电子签名与手写签名或者盖章具有同等的法律效力,并于 2005 年 4 月 1 日起施行。这部法律将对我国电子商务、电子政务等计算机信息系统的发展起到极其重要的促进作用。

16.2.2 数字信封

数字信封是公钥密码体制在实际中的一个应用,是用加密技术来保证只有规定的特定收信人才能阅读通信的内容。

在数字信封中,信息发送方采用对称密钥来加密信息内容,然后将此对称密钥用接收方的公开密钥来加密(这部分称数字信封),之后,将它和加密后的信息一起发送给接收方,接收方先用相应的私有密钥打开数字信封,得到对称密钥,然后使用对称密钥解开加密信息。这种技术的安全性相当高。

16.3 数字证书与密钥管理

过去,人们总是依赖于对于加密算法和密钥的保密来增加保密的强度和效果。随着现代密码学的发展,大部分的加密算法都已经公开了。一些典型的算法(例如,DES、IDEA、 RSA 等)更是成了国际标准,被广泛接纳。人们可以从多种途径来获取算法的细节,也已经有很多采用这些算法的软件、硬件设备可以利用。

因此,在现代密码系统中,算法本身的保密已经不重要了,对于数据的保密在很大程度上,甚至完全依赖于对密钥的保密。只要密钥能够保密,即使加密算法公开,甚至加密设备丢失,也不会对加密系统的坚固性和正常使用产生多大影响。相反,如果密钥丢失,则非法用户可以窃取机密数据,而合法用户却面对密文如读天书,无法提取有效的信息。与其如此,还不如不加密呢!因此,在密码系统中,如何高效地分配密钥、安全地管理密钥对于保证数据安全至关重要。

16.3.1 密钥分配中心

鉴于密钥的举足轻重的地位,密钥必须通过安全的通路进行分配。例如,可以派非常可靠的信使,以十分安全的方式,物理地携带密钥,人工送达需要进行通信的各方。这种方法虽然可靠,但是效率比较低,在过去信息技术不发达的时候用得比较多。而对于一个用户比较多、相互之间通信比较频繁的信息系统来说,则显然不适合采用这种人工方法,而必须采用计算机自动分配密钥。

一个方法是在一个信息系统中任意两个用户之间自己协商来选择不同的密钥,如图 16-1 所示。
在这里插入图片描述

显然,对于有 N 个用户的这种通信系统中,每个用户都要保存(N−1)个密钥,系统中总共要保存 N∗(N−1)/2 个密钥。在用户数量较少时,这样来分配密钥还是比较简单、易用的,但是一旦用户数量多起来,系统中要保存的密钥会急剧增多,让每个用户自己高效、安全地管理数量庞大的密钥实际上是不可能的。

此外有一种非常有效的密钥自动分配方案是密钥分配中心(Key Distribution Center,密匙分配中心)技术。

在 KDC 方案中,每一个用户都只保存自己的私钥 SK 和 KDC 的公钥 PKKDC,而在通信时再经由 KDC 获得其他用户的公钥 PK 或者仅仅在某一次通信中可以使用的对称密钥加密算法的临时密钥 K。

假设有两个用户 A、B 都是 KDC 的注册用户,他们分别拥有私钥 SKA 和 SKB,相应的公钥分别是 PKA 和 PKB。现在 A 想要与 B 进行会话,假如采用对称密钥加密算法来加密这次会话,那么密钥的分配过程如图 16-2 所示
在这里插入图片描述
首先用户 A 向 KDC 发送用自己的私钥 SKA 加密的请求 SKA(A,B),说明自己想要与B 进行会话。

KDC 收到这个请求后,根据某种算法生成一个可以供 A、B 双方进行秘密会话的对称密码算法的密钥 K,然后向 A 返回一个应答 PK(K, PKB(A, K))。这个应答信息是用 A 的公钥 PKA 加密的,当然只有用户 A 自己才能够正确解读,可以从中提取与 B 会话的密钥 K。

同时,该信息中还有一部分内容 PKB(A,K),表明用户 A 欲与 B 进行会话,并且密钥是 K,这是用 B 的公钥 PKB 加密的。用户 A 把这一部分信息发送给 B,B 收到后从中解密出会话密钥。

至此,完成一次密钥的自动分配过程。此后,A、B 双方就可以利用密钥 K 进行加密通信了。

16.3.2 数字证书和公开密钥基础设施

公钥加密算法的密钥分配和对称密钥加密算法中密钥的分配要求有着很大的区别。在对称密钥加密体制中,要求将密钥从一方传送到另一方,并且保证只有通信的双方知道密钥,而不让其他任何一方知道密钥。

而在公钥加密体制中,则要求通信各方的私钥只有通信的一方知道,而其他任何一方都不能知道,同时每一方的公钥需要公开,其他任何一方都可以查看和提取。

在公钥加密体制中,私钥的分配相对容易,但是,公钥的发布和获取就需要采取合适的方法来进行,否则很容易留下安全漏洞。 一种简单的发布公钥的方法是公开宣布。通信系统中的每一方都独自保管好自己的私钥,而把自己的公钥公开地公布给其他所有各方,以使其他人能够得到他的公钥,从而可以与他进行加密通信。这实现起来非常简单,似乎也没有什么问题。但是,却有一个致命的漏洞,就是任何一个非法入侵者也可以冒充是这个通信系统中的一方,向这个通信系统中公布一个冒充的公钥。此后系统中与该用户的通信实际上就是与该非法冒充者进行通信。

数字签名和公钥加密都是基于不对称加密技术,因此也存在这样的问题:如何保证公开密钥的持有者是真实的;大规模信息系统环境下公开密钥如何产生、分发和管理。

要解决上述问题,就要用到数字证书和 PKI(Public Key Infrastructure,公开密钥基础设施)。

1.数字证书
数字证书提供了一个在公钥和拥有相应私钥的实体之间建立关系的机制。目前最常用的数字证书格式是由国际标准 ITU-T X.509 v3 版本定义的。

数字证书中采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己保存私钥,用它进行解密和签名;同时设定一个公钥,并由本人公开,为一组用户所共享,用于加密和验证签名。

数字证书是用户在系统中作为确认身份的证据。在通信的各个环节中,参与通信的各方通过验证对方数字证书,从而确认对方身份的真实性和有效性,从而解决相互间的信任问题。

数字证书的内容一般包括:唯一标识证书所有者的名称、唯一标识证书签发者的名称、证书所有者的公开密钥、证书签发者的数字签名、证书的有效期及证书的序列号等。

2.公开密钥基础设施
PKI 在信息系统中的作用就相当于作为公共设施在社会生活中的作用,其目标是向广大的信息系统用户和应用程序提供公开密钥的管理服务。PKI 是指由数字证书、证书颁发机构(Certificate Authority,CA),以及对电子交易、通信等所涉及的各方的合法性进行检查和验证的其他注册机构组成的一套系统。为了使用户在不可靠的网络环境中获得真实可靠的公开密钥,PKI 引入公认可信的第三方;同时 PKI 中采用数字证书机制来避免在线查询集中存放的公开密钥产生的性能瓶颈。可信的第三方是 PKI 的核心部件,系统中任意两个实体之间都是通过公认可信的第三方建立安全联系的。数字证书中第三方的数字签名,使用户可以离线地确认一个公开密钥的真实性。

除了数字证书的有效期,证书撤销列表(Certificate Revocation List,CRL)是另一种数字证书有效期控制机制。当数字证书中认可的事实发生变化时,数字证书发布者必须使用某种机制来撤销以前发出、但现在失效的证书。证书发布者定期发布 CRL,列出所有曾发布但当前已被撤销的证书号,证书的使用者依据 CRL 即可验证某证书是否已被撤销。

(1)PKI 的结构模型。PKI 中有三类实体:管理实体、端实体和证书库。管理实体是PKI 的核心,是 PKI 服务的提供者;端实体是 PKI 的用户,是 PKI 服务的使用者;证书库是一个分布式数据库,用于证书和 CRL 的存放和检索。 CA 和注册机构(RegisteAuthority,RA)是两种管理实体。CA 是 PKI 框架中唯一能够发布和撤销证书的实体,维护证书的生命周期;RA 负责处理用户请求,在验证了请求的有效性后,代替用户向 CA 提交。RA 可以单独实现,也可以合并在 CA 中实现。作为管理实体,CA 和 RA 以证书方式向端实体提供公开密钥的分发服务。

持有者和验证者是两种端实体。持有者是证书的拥有者,是证书所声明的事实上的主体。持有者向管理实体申请并获得证书,也可以在需要时请求撤销或更新证书。持有者使用证书声明自己的身份,从而获得相应的权力。验证者确认持有者所提供的证书的有效性和对方是否为该证书的真正拥有者,只有在成功鉴别之后才可与对方进行更进一步的交互。

证书库可以用 Web、FTP 或目录等来实现。由于证书库中存取的对象是证书和 CRL,其完整性由数字签名保证,因此对证书库的操作可在无特殊安全保护的通道上传输。 不同的实体间通过 PKI 操作完成证书的请求、确认、发布、撤销、更新和获取等过程。

PKI 操作分成存取操作和管理操作两类。其中,存取操作包括管理实体或端实体,把证书和CRL 存放到证书库、从证书库中读取证书和 CRL;管理操作则是管理实体与端实体之间或管理实体与管理实体之间的交互,是为了完成证书的各项管理任务和建立证书链。

**(2)PKI 层次模型。**PKI 框架可以分为三个层次。最低层是传输层,向上提供 PKI 报文的可靠传输,它可以是传输层协议或应用层协议。中间层是密码学服务层,向上提供加密、解密、数字签名、消息摘要等基本密码学服务,可由 RSA、MD5 等方法实现。最高层是证书服务层,使用前面两层提供的加密和传输服务,向用户提供证书的请求、签发、发布、撤销和更新等服务。

PKI 的三类实体对这三层服务的使用各不相同。证书库不需要特殊的安全交互措施,所以仅使用传输层服务来分发证书和 CRL;管理实体和端实体使用证书服务层构造 PKI 证书,使用密码学服务层来鉴别和保护交互信息,使用传输层服务传送信息。

**(3)X.509 数字证书。**ISO/ITU、ANSI、IETF 等组织制定的 X.509 标准,对数字证书的格式进行了专门定义,该标准是为了保证使用数字证书的系统间的互操作性而制定的。理论上为一种应用创建的 X.509 证书可以用于其他任何符合 X.509 标准的应用。但实际上,不同的公司对 X.509 证书进行了不同的扩展,并不是所有的证书都彼此兼容。 X.509 证书具有如下一些突出的特点:

① 支持多种算法。X.509 证书独立于算法,CA 可以根据需要选择证书的签名和摘要算法,以及端实体所拥有密钥对的类型。摘要算法有 MD2、MD5 和 SHA-1,证书签名算法有RSA 和 DSA,密钥对类型有 RSA 密钥、DSA 签名密钥、D-H 密钥交换密钥、KEA 密钥和ECDSA 密钥。

② 支持多种命名机制。X.509 证书除了使用 X.500 名字机制标识持证者和验证者,还
支持 E-mail 地址、IP 地址、DNS 名和 URI。

③ 可以限制证书(公开密钥)的用途。CA 能够规定证书的使用范围,如签名、不可
否认、密钥加密、数据加密、密钥协商、证书签发和 CRL 签发等。

④ 定义证书遵循的策略。每个 CA 都定义了一定的安全策略,规范证书的操作过程。这些策略包括:CA 的命名空间、身份验证、撤销机制、法律责任和收费等。

⑤ 控制信任关系的传递。建立 CA 体系,跨域认证,使得每个 CA 除负责本域的证书管理任务外,还要维护与其他 CA 间的信任关系。X.509 证书定义若干字段用于控制信任关系的传递,CA 能够将自己管理域的安全策略体现在信任关系中。

可见,X.509 证书适用于大规模信息系统环境,它的灵活性和扩展性能够满足各种应用系统不同类型的安全要求。X.509 有不同的版本,例如,X.509v3 是比较新的版本,它是在原有版本 X.509 v 的基
础上进行功能的扩充。每一版本都包含下列数据项:

① 版本号。用来区分 X.509 的不同版本号。

② 序列号。由 CA 给每一个证书分配唯一的数字型编号,由同一 CA 发放的每个证书的序列号是唯一的。

③ 签名算法识别符。用来指定 CA 签发证书时所使用的公开密钥算法和 HASH 算法,须向国际标准组织注册。

④ 发行者名称。建立和签署证书的 CA 名称。

⑤ 有效期。证书有效的时间包括两个日期:证书开始生效的日期、证书失效的日期和时间。在所指定的这两个时间之间有效。

⑥ 主体名称。证书持有人的姓名、服务处所等信息。

⑦ 主体的公开密钥信息。包括主体的公开密钥、使用这一公开密钥的算法的标识符及相应的参数。

⑧ 发行者唯一识别符。这一数据项是可选的,当 CA 名称重新用于其他实体时,则用这一识别符来唯一标识发行者。

⑨ 主体唯一标识符。这一数据项也是可选的,当主体的名称重新用于其他实体时,则用这一识别符来唯一识别主体。

⑩ 扩充域。其中包括一个或多个扩充的数据项。

⑪签名。CA 用自己的私钥对上述各数据项的散列值进行数字签名的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值