视频讲解 第3章〓密码学基础理论 密码学研究进行保密通信和如何实现信息保密的问题,具体指通信保密传输和信息存储加密等。它以认识密码变换的本质、研究密码保密与破译的基本规律为对象,以可靠的数学方法和理论为基础,对解决信息安全中的机密性、数据完整性、认证和身份识别,以及对信息的可控性及不可抵赖性等问题提供系统的理论、方法和技术。密码学包括密码编码学和密码分析学两个分支。密码编码学研究对信息进行编码,实现对信息的隐藏。密码分析学研究加密消息的破译或消息的伪造。密码学的发展历史比较悠久,整个密码学的发展是由简单到复杂的逐步完善过程,也促进了数学、计算机科学、信息通信等学科的发展。 3.1密码学概述 3.1.1基本概念 明文(Plaintext/Message): 待加密的信息,用P或M表示。明文可以是文本文件、图形、数字化存储的语音流或数字化的视频图像的比特流等。 密文(Ciphertext): 明文经过加密处理后的形式,用C表示。 加密(Encryption): 用某种方法伪装消息以隐藏它的内容的过程。 解密(Decryption): 把密文转换成明文的过程,加密过程对应的逆过程。 密钥(Key): 变换函数所用的一个控制参数。加密和解密算法的操作通常是在一组密钥控制下进行的,分别称为加密密钥和解密密钥,通常用K表示。 加密算法(Encryption Algorithm): 将明文变换为密文的变换函数,通常用E表示。 解密算法(Decryption Algorithm): 将密文变换为明文的变换函数,通常用D表示。 密码分析(Cryptanalysis): 截获密文者试图通过分析截获的密文从而推断出原来的明文或密钥的过程。 被动攻击(Passive Attack): 对一个保密系统采取截获密文并对其进行分析和攻击。这种攻击对密文没有破坏作用。 主动攻击(Active Attack): 攻击者非法侵入一个密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。这种攻击对密文具有破坏作用。 密码系统(Cryptosystem): 用于加密和解密的系统。加密时,系统输入明文和加密密钥,加密变换后,输出密文; 解密时,系统输入密文和解密密钥,解密变换后,输出明文。 单向函数(Oneway Function): 单向函数的计算是不可逆的。给定任意两个集合X和Y。函数f:X→Y称为单向的,对每个x属于X,很容易计算出函数f(x)的值,而对大多数y属于Y,要确定满足y=f(x)的x计算比较困难(假设至少有这样一个x存在)。 单向陷门函数(Oneway Trap Door Function): 一类特殊的单向函数,它包含一个秘密陷门。在不知道该秘密陷门的情况下,计算函数的逆是非常困难的。若知道该秘密陷门,计算函数的逆就非常简单。单向陷门函数满足下面三个条件。 (1) 对f(x)的定义域中的每一个,均存在函数f-1(x),使得f(f-1(x))=f-1(f(x))=x。 (2) f(x)与f-1(x)都很容易计算。 (3) 仅根据已知的f(x)计算f-1(x)非常困难。 3.1.2基本原理 密码系统通常由明文、密文、密钥(包括加密密钥和解密密钥)与密码算法(包括加密算法和解密算法)四个基本要素组成。一个密码体制可以用五元组(M,C,K,E,D)来定义,该五元组应满足以下条件。 (1) 明文空间: M是可能明文的有限集。由明文m的二进制数位数确定,若明文m的二进制数位数为nm,则明文集合M包含2nm个不同的明文。 (2) 密文空间: C是可能密文的有限集。由密文c的二进制数位数确定,若密文c的二进制数位数为nc,则密文集合C包含2nc个不同的密文。 (3) 密钥空间: K是可能密钥构成的有限集。加密密钥空间由加密密钥的二进制数位数确定,若加密密钥的二进制数位数为nk,则加密密钥集合K包含2nk个不同的密钥; 解密密钥空间由解密密钥的二进制数位数确定,如果解密密钥的二进制数位数为nd,则解密密钥集合K包含2nd个不同的密钥。 (4) 加密算法空间: E是可能加密算法的有限集。 (5) 解密算法空间: D是可能解密算法的有限集。 明文M转换成密文c的过程如下: c=E(m,ke) 加密过程是以明文m和加密密钥ke为输入的加密函数运算过程。c=E(m,ke)也可以用c=Eke(m)表示。 密文c转换成明文m的过程如下: m=D(c,kd) 加密和解密如图31所示。 图31加密和解密 对于任意k∈K,有一个加密算法Ek∈E和相应的解密算法Dk∈D,使得Ek:M→C和Dk:C→M分别为加密函数和解密函数,满足Dk(Ek(m))=m,x∈M。 根据柯克霍夫(Kerckhoffs)原则,所有加密解密算法都是公开的,保密的只是密钥。发送端将明文m和加密密钥ke作为加密函数E的输入,加密函数E的运算结果是密文c。密文c沿着发送端至接收端的传输路径到达接收端。接收端将密文c和解密密钥kd作为解密函数D的输入,解密函数D的运算结果是明文m。 3.1.3密码体制分类 根据密钥的特点,密码体制分为对称和非对称密码体制两种,而介于对称和非对称之间的密码体制称为混合密码体制。 1. 对称密码体制 如果加密密钥等于解密密钥,那么这种密钥密码称为对称密码。对称密码又称单钥密码或私钥密码,是指在加解密过程中使用相同或可以推出本质上相同的密钥,即加密与解密密钥相同,且密钥需要保密。信息的发送方和接收方在进行信息的传输与处理时必须共同持有该密钥,因此密钥的安全性成为保证系统机密性的关键。信息的发送方将持有的密钥对要发送的信息进行加密,加密后的密文通过网络传送给接收方,接收方用与发送方相同的私有密钥对接收的密文进行解密,得到信息明文。 对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。其不足之处是交付双方都使用同样钥匙,因此安全性得不到保证。此外,每对用户每次使用对称加密算法时都需要使用其他人不知道的唯一密钥,使得发收信双方拥有的密钥数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。对称加密算法与公开密钥加密算法相比,能够提供加密和认证却缺乏了签名功能,使其使用范围缩小。对称密码体制主要算法包括数据加密标准DES法,2DES(DDES)算法、三重数据加密算法、高级加密标准AES法、Blowfish算法、RC5算法、国际数据加密算法IDEA、SM4算法等。 2. 非对称密码体制 2015年,“图灵奖”的得主是前Sun Microsystems公司首席安全官菲尔德·迪菲(Whitfield Diffie)和斯坦福大学电气工程系名誉教授马丁·赫尔曼(Martin Hellman)。两位获奖者在发表的论文New Directions in Cryptography中提出了划时代的公开密钥密码系统的概念,这个概念为密码学的研究开辟了一个新的方向,有效地解决了秘密密钥密码系统中通信双方密钥共享困难的缺点,并引进了创新的数字签名的概念。 非对称密码体制需要: 公开密钥(Public Key)和私有密钥(Private Key)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密; 如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密,因为加密和解密使用的是两个不同的密钥。 非对称密码体制实现机密信息交换的基本过程: 用户A生成一对密钥并将其中的一个作为公用密钥向其他方公开; 得到该公用密钥的用户B使用该密钥对机密信息进行加密后再发送给用户A; 用户A再用自己保存的另一个专用密钥对加密后的信息进行解密。另外,用户A可以使用用户B的公钥对机密信息进行签名后再发送给用户B; 用户B再用自己的私匙对数据进行验签。 非对称密码体制的特点: 算法强度复杂、安全性依赖算法与密钥; 但是由于其算法复杂,加密解密速度没有对称加密解密速度快。对称密码体制中只有一种密钥,并且是非公开的,如果解密就得让对方知道密钥,所以保证其安全性就是保证密钥的安全。而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥,安全性相对好。 非对称密码体制不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可防止假冒和抵赖,因此更适合网络通信中的保密通信要求。 非对称密码体制主要算法包括RSA算法、Elgamal算法、背包算法、Rabin算法、Diffie Hellman算法、椭圆曲线密码(ECC)算法、概率公钥算法、NTRU算法、SM2算法、SM9(标识密码)算法。 3. 混合密码体制 混合密码体制利用非对称密码体制分配私钥密码体制的密钥,消息的收发双方共用这个密钥,然后按照私钥密码体制的方式进行加密和解密运算。混合密码体制的工作流程如下。 (1) 用户A用对称密钥把需要发送的消息加密。 (2) 用户A用用户B的公开密钥将对称密钥加密,形成数字信封,然后一起把加密消息和数字信封传送给用户B。 (3) 用户B收到用户A的加密消息和数字信封后,用自己的私钥将数字信封解密,获取用户A加密消息时的对称密钥。 (4) 用户B使用用户A加密的对称密钥把收到的加密消息解开。 3.1.4密码学发展阶段 密码学的发展经历了古典密码学阶段、近代密码学阶段到现代密码学阶段的演变。 1. 古典密码学阶段 古代文明在实践中逐渐发明了密码。从某种意义上讲,战争是密码系统诞生的催化剂,战争提出了安全通信的需求,从而促进了密码的诞生。 早在公元前440年,古希腊战争出现了隐写术,奴隶主将信息刺青在奴隶的头皮上,用头发掩盖来达到安全通信的目的。公元前400年,斯巴达人也使用了一种塞塔(Scytale)式密码的加密工具,该工具将信息写在缠绕在锥形指挥棒的羊皮上,羊皮解开后信息无法识别,必须绕在同一种指挥棒上才能恢复原始信息。我国古代的藏头诗、藏尾诗、漏格诗以及各种书画,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的表面意境,而不会注意或很难发现隐藏其中的“话外之音”。周朝兵书《六韬·龙韬》也记载了密码学的运用,其中的《阴符》和《阴书》记载了姜子牙通过令牌长短给出不同的密令。 这一时期的密码学更像是一门艺术,其核心手段是代换和置换。代换是指明文中的每一个字符被替换成密文中的另一个字符,接收方对密文做反向替换便可恢复出明文; 置换是密文和明文字母保持相同,但顺序被打乱。代换密码的著名例子有凯撒(Caesar)密码(公元前1世纪)、圆盘密码(15世纪)、维吉尼亚密码(16世纪)、Enigma转轮组加密(1919年)等。 2. 近代密码学阶段 这一阶段真正开始源于香农在20世纪40年代末发表的一系列论文,特别是1949年的《保密系统通信理论》,使密码学成为一门科学。近代密码发展中一个重要突破是“数据加密标准”(DES)的出现,使密码学得以从政府走向民间。其次,DES密码设计中的很多思想(Feistel结构、S盒等)被后来大多数分组密码采用。 3. 现代密码学阶段 1976年,Diffie和Hellman的“密码学的新方向”,提出了一种在不安全信道上进行密钥协商的协议的“公钥密码”概念。1977年,麻省理工学院(MIT)提出第一个公钥加密算法——RSA算法,之后ElGamal、ECC、双线性对等公钥密码相继被提出,密码学进入了新的发展时期。 21世纪初,我国研究并推出了系列商用密码算法,包括祖冲之序列密码算法、SM2公钥密码算法、SM3密码杂凑算法、SM4分组密码算法、SM9标识密码算法,其逐渐成为国际密码标准。 密码学的应用已经深入人们生活的各个方面,如数字证书、网上银行、身份证、社保卡和税务管理等,密码技术在其中都发挥了关键作用。近年来,其他相关学科的快速发展,促使密码学中出现了新的密码技术,如量子密码、混沌密码和DNA密码等。 量子密码学是现代密码学领域的一个很有前途的新方向,量子密码的安全性是基于量子力学的测不准性和不可复制性,其特点是对外界任何振动的可检测性和易于实现的无条件安全性。量子密码通信不仅是绝对安全、不可破译的,而且任何窃取量子的动作都会改变量子的状态,所以一旦存在窃听者,量子密码的使用者就会立刻获知。因此,量子密码可成为光通信网络中数据保护的强有力工具,而且能对付未来具有量子计算能力的攻击者。 混沌系统的两大特征是对初始条件敏感以及系统变化的不可预测性,这两个特性恰好满足密码学随机序列的要求。混沌在密码学中的研究可以分为两种形式: 一种是序列密码,即利用混沌系统产生伪随机序列作为密钥序列,对明文进行加密; 另一种是分组密码,即使用明文或密钥作为混沌系统的初始条件或结构参数,通过混沌映射的抚今追昔来产生密文。 DNA密码体制的特点是以DNA为信息载体,以现代生物技术为实现工具,挖掘DNA固有的高存储密度和高并行性等优点,实现加密、认证及签名等功能。 3.1.5网络加密的实现方法 基于密码算法的数据加密技术是全网络上的通信安全所依赖的基本技术。目前,对网络数据加密主要有链路加密、节点对节点加密和端对端加密3种实现方式。 1. 链路加密 链路加密又称在线加密,它是对在两个网络节点间的某一条通信链路实施加密,是目前网络安全系统中主要采用的方式。链路加密能为网络传输的数据提供安全保证,所有消息在被传输之前进行逐位加密,对接收到的消息进行解密,然后使用下一个链路的密钥对消息进行加密后再进行传输。在链路加密方式中,不仅对数据报文的正文加密,而且把路由信息、校验和等控制信息全部加密。所以,当数据报文传输到某一个中间节点时,必须先被解密以获得路由信息和检验和,进行路由选择、差错检测,再被加密,发送给下一个节点,直到数据报文到达目的节点为止。 如图32所示,在链路加密方式下,只对通信链路中的数据加密,而不对网络节点内的数据加密。因此,在中间节点上的数据报文是明文出现的,而且要求网络中的每一个中间节点都要配置安全单元(信息加密设备)。相邻两个节点的安全单元使用相同的密钥。这种使用不是很方便,因为需要网络设施的提供者配合修改每一个交换节点,这种方式在广域网上是不太现实的。在传统的加密算法中,用于解密消息的密钥与用于加密的密钥是相同的,必须秘密保存该密钥,并按一定规则进行变化。这样,密钥分配在链路加密系统中就成为一个问题,因为每一个节点必须存储与其相连接的所有链路的加密密钥,需要对密钥进行物理传送或者建立专用网络设施。而网络节点地理分布的广阔性使得这一过程变得复杂,同时增加了密钥连续分配时的费用。链路加密方式的优点是应用系统不受加密和解密的影响,容易被采用。 图32链路加密过程 2. 节点对节点加密 节点对节点加密是为了解决节点中的数据是明文的这一问题,在中间节点内装有用于加密和解密的保护装置,由这个装置来完成一个密钥向另一个密钥的交换。因而,除了在保护装置里,即使在节点内也不会出现明文。 尽管节点对节点加密能给网络数据提供较高的安全性,但它在操作方式上与链路加密类似: 两者均在通信链路上为传输的消息提供安全性,都在中间节点先对消息进行解密再进行加密。因为要对所有传输的数据进行加密,所以加密过程对用户是透明的。然而,与链路加密不同,节点对节点加密不允许消息在网络节点以明文形式存在。它先把收到的消息进行解密,然后采用另一个不同的密钥进行加密,这一过程在节点上的一个安全模块中进行。节点对节点加密要求报头和路由信息以明文形式传输,以便中间节点能快速得到路由信息和校验和,加快消息的处理速度。但是,节点对节点加密与链路加密方式一样存在共同的弱点: 需要公共网络提供者的配合来修改公共网络的交换节点以增加安全单元或保护装置。 3. 端对端加密 为了解决链路加密和相邻节点之间加密中存在的不足,人们提出了端对端加密方式。端对端加密又称为脱线加密或包加密,它允许数据在从源节点被加密后,到终点的传输过程中始终以密文形式存在,只有消息到达目的节点后才被解密。因为消息在整个传输过程中均受到保护,所以即使有节点被损坏也不会泄露消息。因此,端对端加密方式可以实现按各通信对象的要求改变加密密钥以及按应用程序进行密钥管理等,而且采用这种方式可以解决文件加密问题。 链路加密方式是对整个链路通信采取保护措施,而端对端加密方式则是对整个网络系统采取保护措施。端对端加密系统更容易设计、实现和维护,且成本相对较低。端对端加密还避免了其他加密系统所固有的同步问题,因为每个报文段均是独立被加密的,所以一个报文段发生的传输错误不会影响后续的报文段。此外,端对端加密方便,不依赖底层网络基础设施,既可以在局域网内部实施,也可以在广域网上实施。端对端加密系统通常不允许对消息的目的地址进行加密,这是因为每一个消息所经过的节点都要用此地址来确定如何传输消息。因此,端对端加密方式是目前互联网应用的主流,应用层加密的实现多采用端对端加密方式。由于端对端加密方法不能掩盖被传输消息的源节点与目的节点,因此它对于防止攻击者分析通信业务是脆弱的。 3.2替代密码 代换密码分为单字母代换密码和多字母代换密码,单字母代换密码又分为单表代换密码和多表代换密码。单表代换密码只使用一个密文字母表,并且用密文字母表中的一个字母来代替明文字母表中的一个字母。多表代换密码通过构造多个密文字母表,在密钥的控制下用相应密文字母表中的一个字母来代替明文字母表中的一个字母,一个明文字母有多种代替。多表代换密码是以两个或两个以上代换表依次对明文消息的字母进行代换的加密方法。 在单表代换密码中,只使用一个密文字母表,并且用密文字母表中的一个字母来代换明文字母表中的一个字母。设A和B分别为含n个字母的明文字母表和密文字母表: A={a0,a1,…,an-1} B={b0,b1,…,bn-1} 单表代换密码定义了一个由A到B的一一映射f: A→B: f(ai)=bi。设明文m=(m0,m1,…,mn-1),则密文c=(f(m0),f(m1),…,f(mn-1))。下面介绍3种具体的单表代替密码体制。 1. 加法密码 加法密码的映射函数为 f(ai)=bi=aj j≡(i+k)mod n 式中: ai∈A; k是满足01024时,根据目前的计算能力,RSA算法私钥的安全性是可以保证的。但n越大,加密和解密运算越复杂。 在介绍RSA算法之前,首先需要掌握RSA算法的因子分解基础问题。根据数论,任意大于1的整数能够表达成素数的乘积,即对于任意整数a>1,有a=p1p2…pn,p1≤p2≤…≤pn,其中,p1,p2,…,pn是素数。但是,当a很大时,对a的分解是相当困难的。RSA算法的安全性是建立在大数分解为素因子困难性基础上的。RSA算法如下。 (1) 通信实体选择两个大的素数p、q。 (2) 计算n=pq,(n)=(p-1)(q-1)。 (3) 选择e,使得e远小于(n),并且gcd(e,(n))=1,即e和(n)的最大公约数为1。 (4) 求d,使得ed=1 mod (n)。 (5) 发布(n,e),即公钥为(n,e); 自己秘密保存私钥d并销毁p和q。 假设A要使用RSA算法加密消息并通过网络发送给B,那么A应当按照以下步骤进行。 (1) A从权威机构获得B的公钥(n,e)。 (2) A首先将消息表示为一整数m,使得m2160),对于固定的有限域F(p),n应当尽可能大。 (3) 因为x3+ax+b无重复因子才可基于椭圆曲线Ep(a,b)定义群,所以要求4a3+27b2≠0(mod p)。 (4) 为了防止小步大步攻击,要保证P的阶n足够大,要求h≤4。 (5) 为了防止MOV规约法,不能选取超奇异椭圆曲线和异常椭圆曲线等两类特殊曲线。 SM2中规定发送方用接收方的公钥将消息加密成密文,接收方用自己的私钥对收到的密文进行解密还原成原始消息。用户B的密钥对包括其私钥dB和公钥PB=[dB]G。 SM2也需要使用密钥派生函数KDF(Z,klen),具体如下。 输入: 比特串Z,整数klen(表示要获得的密钥数据的位长,要求该值小于(232-1)v)。 输出: 长为klen的密钥数据比特串K。 (1) 初始化一个32位构成的计数器ct=0×00000001。 (2) 对i从1到 klen/v执行,计算Hai=Hv(Z‖ct); ct加1。 (3) 若klen/v是整数,则令Ha! klen/v =Haklen/v; 否则,令Ha!klen/v为Haklen/v∣最左边的(klen-(v×klen/v」))位。 (4) 令K=Ha1‖Ha2‖…‖Haiken/v-1‖Ha![klen/v]。 设需要加密的消息为比特串M,klen为M的位长。为了对明文M进行加密,加密用户A应实现以下运算步骤。 (1) 用随机数发生器产生随机数k∈[1,n-1]。 (2) 计算椭圆曲线点C1=[k]G=(x1,y1),将C1的数据类型转换为比特串。 (3) 计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退出。 (4) 计算椭圆曲线点[k]PB=(x2,y2),将坐标x2、y2的数据类型转换为比特串。 (5) 计算t=KDF(x2‖y2,klen),若t为全0比特串,则需要重新选择随机数k。 (6) 计算C2=Mt。 (7) 计算C3=Hash(x2‖M‖y2)。 (8) 输出密文C=C1‖C3‖C2。 SM2加密流程如图328所示。 图328SM2加密流程 对于SM2公钥解密算法,设klen为密文中C2的位长。为了对密文C=C1‖C3‖C2进行解密,解密用户B应实现以下运算步骤。 (1) 从C中取出比特串C1,将C1的数据类型转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程。若不满足,则报错并退出。 (2) 计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出。 (3) 计算[dB]C1=(x2,y2),将坐标x2、y2的数据类型转换为比特串。 (4) 计算t=KDF(x2‖y2,klen),若t为全0比特串,则报错并退出。 (5) 从C中取出比特串C2,计算M′=C2t。 (6) 计算u=Hash(x2‖M′‖y2),从C中取出比特串C3; 若u≠C3,则报错并退出。 (7) 输出明文M′。 3.9公钥基础设施 公开密钥基础设施(Public Key Infrastructure,PKI)是以非对称密钥加密技术为基础,以数据机密性、完整性、身份认证和行为不可抵赖性为安全目的,实施和提供安全服务的具有普适性的安全基础设施。其内容包括数字证书、非对称密钥密码技术、认证中心、证书和密钥的管理、安全代理软件、不可否认性服务、时间邮戳服务、相关信息标准、操作规范等。 3.9.1PKI总体架构 一个网络的PKI包括以下基本构件。 (1) 数字证书: 由认证机构经过数字签名后发给网上信息主体的一段电子文档,包括主体名称、证书序号、发证机构名称、证书有效期、密码算法标识、公钥和私钥信息和其他属性信息等。利用数字证书,配合相应的安全代理软件,可以在网络上信息交付过程中检验对方的身份真伪,实现信息交付双方的身份真伪,并保证交付信息的真实性、完整性、机密性和不可否认性。数字证书提供了PKI的基础。 (2) 认证中心(Certification Authority,CA): PKI的核心,是公正、权威、可信的第三方网上认证机构,负责数字证书的签发、撤销和生命周期的管理,还提供密钥管理和证书在线查询等服务。 (3) 数字证书注册机构(Registration Authority,RA): RA系统是CA的数字证书发放和管理的延伸。它负责数字证书申请者的信息录入、审核以及数字证书发放等工作; 同时,对发放的数字证书实行相应的管理功能。发放的数字证书可以存放于IC卡、硬盘或软盘等介质中。RA系统是整个CA得以正常运营不可缺少的一部分。 (4) 数字签名: 利用发信者的私钥和可靠的密码算法对待发信息或其电子摘要进行加密处理,这个过程和结果就是数字签名。收信者可以用发信者的公钥对收到的信息进行解密,从而辨别真伪。经过数字签名后的信息具有真实性和不可否认(抵赖)性。 (5) 密钥和证书管理工具: 管理和审计数字证书的工具,认证中心使用它来管理在一个CA上的证书。 (6) 双证书体系: PKI采用双证书体系,非对称算法支持RSA算法和ECC算法,对称密码算法支持国家密码管理委员会指定的算法。 (7) PKI的体系架构: 宏观来看,PKI概括为两大部分,即信任服务体系和密钥管理中心。 PKI信任服务体系是为整个业务应用系统提供基于PKI数字证书认证机制的实体身份鉴别服务,它包括认证机构、注册机构、证书库、证书撤销和交叉认证等。PKI密钥管理中心(Key Management Center,KMC)提供密钥管理服务,为授权管理部门提供应急情况下的特殊密钥恢复功能,包括密钥管理机构、密钥备份和恢复、密钥更新和密钥历史档案等。 3.9.2双证书和双密钥机制 一对密钥(一张证书)应用中的问题如下。 (1) 若密钥不备份,当密钥损坏(或管理密钥的人员离职时带走密钥)时,则以前加密的信息不可解密。 (2) 若密钥不备份,则很难实现信息审计。 (3) 若密钥不备份,则数字签名的不可否认性很难保证。 两对密钥(两张证书)的客观需求: 一对密钥用于签名(签名密钥对),另一对密钥用于加密(加密密钥对)。加密密钥在密钥管理中心生成及备份,签名密钥由用户自行生成并保存。 双密钥证书的生成过程如下。 (1) 用户使用客户端产生签名密钥对。 (2) 用户的签名私钥保存在客户端。 (3) 用户将签名密钥对的公钥传送给CA。 (4) CA为用户的公钥签名,产生签名证书。 (5) CA将签名证书传回客户端进行保存。 (6) KMC为用户生成加密密钥对。 (7) 在KMC中备份加密密钥以备以后进行密钥恢复。 (8) CA为加密密钥对生成加密证书。 (9) CA将用户的加密私钥和加密证书打包成标准格式PKCS#12。 (10) 将打包后的文件传回客户端。 (11) 用户的客户端装入加密公钥证书和加密私钥。 3.9.3X.509证书标准 在PKI/CA架构中,一个重要的标准就是X.509标准,数字证书就是按照X.509标准制作的。本质上,数字证书是把一个密钥对(明确的是公钥,而暗含的是私钥)绑定到一个身份上的被签署的数据结构。整个证书有可信赖的第三方签名。典型的第三方即大型用户群体(如政府机关或金融机构)所信赖的CA。 此外,X.509标准还提供了一种标准格式CRL。 目前X.509有不同的版本,X.509V2和X.509V3都是目前比较新的版本,都是在X.509V1版本的基础上进行功能的扩充。每一版本必须包含下列信息。 (1) 版本号: 用来区分X.509的不同版本号。 (2) 序列号: 由CA给每一个证书分配唯一的数字型编号,当证书被取消时,实际上是将此证书的序列号放入由CA签发的CRL中,这也是序列号唯一的原因。 (3) 签名算法标识符; 用来指定用CA签发证书时所使用的签名算法。算法标识符用来指定CA签发证书时所使用的公开密钥算法和Hash算法,需向国际著名标准组织(如ISO)注册。 (4) 认证机构: 发出该证书的机构唯一的CA的X.500规范用名。 (5) 有效期限: 证书有效的时间,包括证书生效期和证书失效期,在所指定的这两个时间之间有效。 (6) 主题信息: 证书持有人的姓名、服务处所等信息。 (7) 认证机构的数字签名; 确保证书在发放之后没有被更改。 (8) 公钥信息: 包括被证明有效的公钥值和加上使用这个公钥的方法名称。 X.509V3在X.509V2的基础上进行了扩展。X.509V3引进一种机制,这种机制允许通过标准化和类的方式将证书进行扩展,以包含额外的信息,从而适应下面的一些要求。一个证书主体可以有多个证书。证书主体可以被多个组织或社团的其他用户识别; 可按特定的应用名(不是X.500规范用名)识别用户,如将公钥同Email地址联系起来。在不同证书政策和实用下会发放不同的证书,这就要求公钥用户要信赖证书。 PKI/CA对数字证书的管理是按照数字证书的生命周期实施的,包括证书的安全需求确定、证书申请、证书登记、分发、审计、撤回和更新。映射证书到用户的账户是使数字证书的拥有者安全使用制定的应用所必不可少的环节,也是PKI/CA对数字证书管理的重要内容。CA是一个受信任的机构,为了当前和以后的事务处理,CA给个人、计算机设备和组织机构颁发证书,以证实它们的身份,并为它们使用证书的一切行为提供信誉的担保。 数字证书是公开密钥体制的一种密钥管理媒介。它是一种权威性的电子文档,形同网络计算环境中的一种身份证,用于证明某一主体(如人、服务器等)的身份及其公开密钥的合法性。在使用公钥体制的网络环境中必须向公钥的使用者证明公钥的真实合法性。因此,在公钥体制环境中必须有一个可信的机构来对任何一个主体的公钥进行公证,证明主体的身份以及它与公钥的匹配关系。数字证书的主要内容如表321所示。 表321数字证书的主要内容 字段 定义 主题名称 唯一标识证书所有者的标识符 签证机关名称(CA) 唯一标识证书签发者的标识符 主体的公开密钥 证书所有者的公开密钥 CA的数字签名 CA对证书的数字签名,保证证书的权威性 有效期 证书在该期间内有效 序列号 CA产生的唯一性数字,用于证书管理 用途 主体公钥的用途 3.10权限管理基础设施 权限管理基础设施或授权管理基础设施(Privilege Management Infrastructure,PMI)的核心思想是以资源管理为核心,将对资源的访问控制权交由授权机构进行管理,即由资源的所有者来进行访问控制管理。只有PKI无法对信息系统的资源进行合理有效的管理。PMI几乎完全按照PKI的体系架构建立,外形很相像,内容却完全不同。PMI建立在PKI基础上,以向用户和应用程序提供权限管理和授权服务为目标,主要向业务应用信息系统提供授权服务管理; 提供用户身份到应用授权的映射功能,实现与实际应用处理模式相对应的、与具体应用系统开发和管理无关的访问控制机制; 能极大地简化应用中访问控制和权限管理系统的开发与维护,减少管理成本和复杂性。 3.10.1PMI与PKI的区别 PMI主要进行授权管理,证明这个用户有什么权限,能干什么。PKI主要进行身份鉴别,证明用户身份。它们之间的关系如同签证和护照的关系。签证具有属性类别,持有某一类别的签证才能在该国家进行某一类别的活动。护照是身份证明,唯一标识个人信息,只有持有护照才能证明这个人是合法的。PMI与PKI的比较如表322所示。 表322PMI与PKI的比较 概念 PMI 实体 PKI实体 证书 属性证书 公钥证书 证书签发者 属性证书管理中心 认证证书管理中心 证书用户 持有者 主体 证书绑定 持有者名和权限绑定 主体名和公钥绑定 撤销 属性证书撤销列表(ACRL) 证书撤销列表(CRL) 信任的根 权威源(SOA) 根CA/信任锚 从属权威 属性权威(AA) 子CA 3.10.2属性证书及其管理中心 属性证书(Attribute Certificate,AC)表示证书的持有者(主体)对于一个资源实体(客体)所具有的权限。它是由一个做了数字签名的数据结构来提供的,这种数据结构称为属性证书,由属性权威签发并管理。 公钥证书是对用户名称和他/她的公钥进行绑定,而属性证书是将用户名称与一个或更多的权限属性进行绑定。从这方面而言,公钥证书可看为特殊的属性证书。 数字签名公钥证书的机构称为认证中心,签名属性证书的机构称为属性权威。PKI信任源有时被称为根CA,而PMI信任源被称为SOA。CA可以有它们信任的次级CA。次级CA可以代理鉴别和认证。同样,SOA可以将它们的权利授给次级AA。若用户需要废除他/她的签字密钥,则CA将签发一个证书撤销列表。与之类似,若用户需要废除授权,AA将签发一个属性证书撤销列表。 属性证书的使用有两种模式: 一是推模式,当用户在要求访问资源时,由用户自己直接提供其属性证书,即用户将自己的属性证书“推”给资源服务管理器。这意味着,在客户和服务器之间不需要建立新的连接,而且对于服务器来说,这种方式不会带来查找证书的负担,从而减少了开销。二是拉模式,是业务应用授权机构发布属性证书到目录服务系统,当用户需要用到属性证书的时候,由服务器从属性证书发放者(属性权威)或存储证书的目录服务系统“拉”回属性证书。这种“拉”模式的主要优点是实现这种模式不需要对客户端以及客户-服务器协议做任何改动。这两种模式可以根据应用服务的具体情况灵活应用。 3.11密码安全性分析 密码学的基本目的就是保障不安全信道上的通信安全。密码学领域存在一个很重要的事实: “如果许多聪明人都不能解决的问题,那么它可能不会很快得到解决。”这暗示很多加密算法的安全性并没有在理论上得到严格证明,只是这种算法思想推出后,经过许多人许多年的攻击并没有发现其弱点,没有找到攻击它的有效方法,从而认为它是安全的。 3.11.1设计原则 (1) 计算安全性(Computational Security): 指一种密码系统最有效的攻击算法至少是指数时间的,又称实际保密性(Practical Secrecy)。密码学更关心在计算上不可破译的密码系统。破译密码的代价超出密文信息的价值或者破译密码的时间超出密文信息的有效生命期,那么认为这个密码体制在计算上是安全的。 (2) 可证明安全性(Provable Security): 若密码体制的安全性可以归结为某个数学困难问题,则称其是可证明安全的。可证明安全性只是说明密码体制的安全与一个问题是相关的,并没有证明密码体制是安全的,可证明安全性也被称为归约安全性。 (3) 无条件安全性(Unconditional Security)或者完善保密性(Perfect Secrecy): 假设存在一个具有无限计算能力的攻击者,若密码体制无法被这样的攻击者攻破,则称其为无条件安全。无论有多少可使用的密文,都不足以唯一地确定密文所对应的明文。 (4) 密码算法安全强度高: 就是说攻击者根据截获的密文或某些已知明文密文对,要确定密钥或者任意明文在计算上不可行。 (5) 柯克霍夫原则: 密码体制的安全性不应依赖加密算法的保密性,而应取决于可随时改变的密钥。 (6) 密钥空间应足够大: 使试图通过穷举密钥空间进行搜索的方式在计算上不可行。 (7) 既易于实现又便于使用: 主要是指加密函数和解密函数都可以高效地计算。 3.11.2密码攻击与分析 1. 密码攻击 (1) 穷举攻击: 密码分析者通过试遍所有的密钥来进行破译。穷举攻击又称为蛮力攻击,是指攻击者依次尝试所有可能的密钥对所截获的密文进行解密,直至得到正确的明文。 (2) 统计分析攻击: 密码分析者通过分析密文和明文的统计规律来破译密码。抵抗统计分析攻击的方式是在密文中消除明文的统计特性。 (3) 数学分析攻击: 密码分析者针对加密算法的数学特征和密码学特征,通过数学求解的方法来设法找到相应的解密变换。为对抗这种攻击,应该选用具有坚实的数学基础和足够复杂的加密算法。 2. 密码分析 密码攻击和解密的相似之处在于都是设法将密文还原成明文的过程。根据密码分析者可获取的信息量不同,密码分析(也称为破译)有下列几种基本方法。 (1) 唯密文攻击(Ciphertext Only Attack): 已知加密方法、明文语言和可能内容,从密文求出密钥或明文。 (2) 已知明文攻击(Knowplaintext Attack): 已知加密方法和部分明文密文对,从密文求出密钥或明文。 (3) 选择明文攻击(Choseplaintext Attack): 已知加密方法,而且破译者可以把任意(或相当数量)的明文加密为密文,求密钥。这对于保护机密性的密码算法来说是最强有力的分析方法。 (4) 选择密文攻击(Choseciphertext Attack): 已知加密方法,而且破译者可以把任意(或相当数量)的密文脱密为明文,求密钥。这对于保护完整性的密码算法来说是最强有力的分析方法。 (5) 自适应选择明文攻击(Adaptive Chosen Plaintext Attack): 选择明文攻击的一种特殊情况,指密码分析者不仅能够选择要加密的明文,而且能够根据加密的结果对以前的选择进行修正。 (6) 选择密钥攻击(Chosen Key Attack): 这种攻击情况在实际中比较少见,它仅表示密码分析者知道不同密钥之间的关系,并不表示密码分析者能够选择密钥。 3.12密码系统管理 密码系统的安全性依赖密码管理。密码管理主要分为密钥管理、密码管理政策和密码测评。 3.12.1密钥管理 密钥管理主要围绕密钥的生命周期进行,具体包括以下内容。 (1) 密钥生成。密钥应由密码相关产品或工具按照一定标准产生,通常包括密码算法选择、密钥长度等。密钥生成时要同步记录密钥的关联信息,如拥有者、密钥使用起始时间、密钥使用终止时间等。 (2) 密钥存储。一般来说密钥不以明文方式存储保管,应采取严格的安全防护措施,防止密钥被非授权地访问或篡改。 (3) 密钥分发。密钥分发是指通过安全通道把密钥安全地传递给相关接收方,防止密钥遭受截取、篡改、假冒等攻击,保证密钥机密性、完整性以及分发方、接收方身份的真实性。目前,密钥分发主要有人工方式、自动化方式和半自动化方式。其中,自动化方式主要通过密钥交换协议进行。 (4) 密钥使用。密钥要根据不同的用途(加密、签名VNAC等)来选择。密钥使用和密码产品保持一致性,密码算法、密钥长度、密码产品都要符合相关管理政策,即安全合规。使用密钥前,要验证密钥的有效性,如公钥证书是否有效。密钥使用过程中要防止密钥的泄露和替换,按照密钥安全策略及时更换密钥。建立密钥应急响应处理机制,以应对突发事件,如密钥丢失事件、密钥泄密事件、密钥算法缺陷公布等。 (5) 密钥更新。当密钥超过使用期限、密钥信息泄露、密码算法存在安全缺陷等情况发生时,相关密钥应根据相应的安全策略进行更新操作,以保障密码系统的有效性。 (6) 密钥撤销。当密钥到期、密钥长度增强或密码安全应急事件出现的时候,需要进行撤销密钥,更换密码系统参数。撤销后的密钥一般不重复使用,以免密码系统的安全性受到损害。 (7) 密钥备份。密钥备份应按照密钥安全策略,采用安全可靠的密钥备份机制对密钥进行备份。备份的密钥与密钥存储要求一致,其安全措施要求保障备份的密钥的机密性、完整性、可用性。 (8) 密钥恢复。密钥恢复是在密钥丢失或损毁的情形下,通过密钥备份机制,能够恢复密码系统的正常运行。 (9) 密钥销毁。根据密钥管理策略可以对密钥进行销毁。一般来说,销毁过程应不可逆,无法从销毁结果中恢复原密钥。特殊情况下,密钥管理支持用户密钥恢复和司法密钥恢复。 (10) 密钥审计。密钥审计是对密钥生命周期的相关活动进行记录,以确保密钥安全合规,违规情况可查可追溯。 3.12.2密码管理政策 密码管理政策是指国家对密码进行管理的有关法律政策文件、标准规范、安全质量测评等。目前,我国已经发布《商用密码管理条例》,主要内容有商用密码的科研生产管理、销售管理、使用管理、安全保密管理。《中华人民共和国密码法》也已颁布实施,相关工作正在推进,明确规定,密码分为核心密码、普通密码和商用密码,实行分类管理。核心密码、普通密码用于保护国家秘密信息,属于国家秘密,由密码管理部门依法实行严格统一管理。商用密码用于保护不属于国家秘密的信息,公民、法人和其他组织均可依法使用商用密码保护网络与信息安全。 为规范商用密码产品的设计、实现和应用,国家密码管理局发布了一系列密码行业标准,主要有《电子政务电子认证服务管理办法》《电子政务电子认证服务业务规则规范》《密码模块安全检测要求》《安全数据库产品密码检测准则》《安全隔离与信息交换产品密码检测指南》《安全操作系统产品密码检测准则》《防火墙产品密码检测准则》等。 3.12.3密码测评 数字时代呼唤安全创新,密码是国之重器,是数字技术发展的安全基因,是保障网络与数据安全的核心技术,也是推动我国数字经济高质量发展、构建网络强国的基础支撑。从实战需求看,日趋严峻的网络与数据安全威胁使得数字经济迫切需要密码技术抵御外部黑客攻击、防止内部人员泄露。从合规需求看,以密码应用安全性评估为抓手落实《中华人民共和国密码法》,并结合《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》等法律法规,也在持续拉动密码应用新需求。 “商用密码应用安全性评估”是指在采用商用密码技术、产品和服务集成建设的网络和信息系统中,对其密码应用的合规性、正确性和有效性进行评估。开展商用密码应用安全性评估工作是国家法律法规的强制要求,是网络安全运营者的法定责任和义务。同时,开展商用密码应用安全性评估是商用密码应用正确、合规、有效的重要保证,是检验网络和信息系统安全性的重要手段。 1. 商用密码应用安全性评估是商用密码应用的重要推动力 商用密码应用的正确、合规、有效,是网络和信息系统安全的关键所在; 而商用密码应用安全性评估工作的开展可以促进商用密码应用做到合规、正确和有效,是商用密码应用正确、合规、有效的重要推动力。 2. 商用密码应用安全性评估是应对网络与数据安全形势的需要 通过商用密码应用安全性评估可以及时发现在密码应用过程中存在的问题,为网络和信息安全提供科学的评价方法,逐步规范密码的使用和管理,从根本上改变密码应用不广泛、不规范、不安全的现状,确保密码在网络和信息系统中得到有效应用,切实构建起坚实可靠的网络安全密码保障。 3. 商用密码应用安全性评估是系统安全维护的必然要求 密码应用是否合规、正确和有效涉及密码算法、协议、产品、技术体系、密钥管理、密码应用多个方面。因此,需委托专业机构和专业人员,采用专业工具和专业手段,对系统整体的密码应用安全进行专项测试和综合评估,形成科学准确的评估结果,以便及时掌握密码安全现状,采取必要的技术和管理措施。 依据GB/T 39786—2021《信息安全技术 信息系统密码应用基本要求》编制的《信息系统密码应用测评要求》将信息系统密码应用测评要求分为通用测评要求和密码应用测评要求。其中: 通用测评要求对“密码算法和密码技术合规性”和“密钥管理安全性”提出测评要求,适用于第一级到第五级的信息系统密码应用测评; 密码应用测评要求对信息系统的物理和环境安全、网络和通信安全、设备和计算安全、应用和数据安全四个技术层面提出了第一级到第四级密码应用技术的测评要求,并对管理制度、人员管理、建设运行和应急处置四个方面提出了第一级到第四级密码应用管理的测评要求。通用测评要求的内容不单独实施测评,也不单独体现在密码应用安全性评估报告的单元测评结果和整体测评结果中,仅供密码应用测评要求的测评实施引用。 目前,我国设立了商用密码检测中心,其主要职责包括: 商用密码产品密码检测; 信息安全产品认证密码检测; 含有密码技术的产品密码检测; 信息安全等级保护商用密码测评; 商用密码行政执法密码鉴定; 国家电子认证根CA建设和运行维护; 密码技术服务; 商用密码检测标准规范制定; 等等。表323给出了典型密码功能测评技术,供密码测评人员在对信息系统中具体使用的密码产品或应用的密码功能进行测评实施时参考。 表323典型密码功能测评技术 密 码 功 能 测 评 实 施 预 期 结 果 传输机密性① 利用协议分析工具,分析传输的重要数据或鉴别信息是否为密文,数据格式(如分组长度等)是否符合预期。 ② 若信息系统以外接密码产品的形式实现传输机密性,如VPN、密码机等,则可参考对这些密码产品应用的测评方法 ① 传输的重要数据和鉴别信息均为密文,数据格式(如分组长度等)符合预期。 ② 实现传输机密性的外接密码产品符合相应密码产品应用的要求 存储机密性① 通过读取存储的重要数据,判断存储的数据是否为密文,数据格式是否符合预期。 ② 若信息系统以外接密码产品的形式实现存储机密性,如密码机、加密存储系统、安全数据库等,则可参考对这些密码产品应用的测评方法 ① 存储的重要数据均为密文,数据格式符合预期。 ② 实现存储机密性的外接密码产品符合相应密码产品应用的要求 传输完整性① 利用协议分析工具,分析受完整性保护的数据在传输时的数据格式(如签名长度、MAC长度)是否符合预期。 ② 若使用数字签名技术进行完整性保护,则商用密码应用安全性评估人员可以使用公钥对抓取的签名结果进行验证。 ③ 如果信息系统以外接密码产品的形式实现传输完整性,如VPN、密码机等,则可参考对这些密码产品应用的测评方法 ① 受完整性保护的数据在传输时的数据格式(如签名长度、MAC长度)符合预期。 ② 使用签名技术进行完整性保护的,使用公钥对抓取的签名结果验证通过。 ③ 实现传输完整性的外接密码产品符合相应密码产品应用的要求存储完整性 ① 通过读取存储的重要数据,判断受完整性保护的数据在存储时的数据格式(如签名长度、MAC长度)是否符合预期。 ② 若使用数字签名技术进行完整性保护,则商用密码应用安全性评估人员可使用公钥对存储的签名结果进行验证。 ③ 条件允许的情况下,商用密码应用安全性评估人员可尝试对存储数据进行篡改(如修改MAC或数字签名),验证完整性保护措施的有效性。 ④ 若信息系统以外接密码产品的形式实现存储完整性保护,如密码机、智能密码钥匙,则可参考对这些密码产品应用的测评方法 ① 受完整性保护的数据在存储时的数据格式(如签名长度、MAC长度)符合预期。 ② 使用签名技术进行完整性保护的,使用公钥对存储的签名结果验证通过。 ③ 对存储数据进行篡改,完整性保护措施能够检测出存储数据的完整性受到破坏。 ④ 实现存储完整性的外接密码产品符合相应密码产品应用的要求真实性 ① 若信息系统以外接密码产品的形式实现对用户、设备的真实性鉴别,如VPN、安全认证网关、智能密码钥匙、动态令牌等,则可参考对这些密码产品应用的测评方法。 ② 对于不能复用密码产品检测结果的,还要查看实体鉴别协议是否符合GB/T 15843—1999《信息技术 安全技术 实体鉴别》中的要求,特别是对于“挑战—响应”方式的鉴别协议,可以通过协议抓包分析,验证每次挑战值是否不同。 ③ 对基于静态口令的鉴别过程,抓取鉴别过程的数据包,确认鉴别信息(如口令)未以明文形式传输; 对采用数字签名的鉴别过程,抓取鉴别过程的挑战值和签名结果,使用对应公钥验证签名结果的有效性。 ④ 若鉴别过程使用了数字证书,则可参考对证书认证系统应用的测评方法。若鉴别未使用证书,则商用密码应用安全性评估人员要验证公钥或(对称)密钥与实体的绑定方式是否可靠,实际部署过程是否安全 ① 实现对用户、设备的真实性鉴别的外接密码产品符合相应密码产品应用的要求。 ② 实体鉴别协议符合GB/T 15843—1999中的要求。 ③ 静态口令的鉴别信息以非明文形式传输,对于使用数字签名进行鉴别,公钥验证签名结果通过,并且符合证书认证系统应用的相关要求。 ④ 公钥和(对称)密钥与实体的绑定方式可靠,部署过程安全 不可否认性① 若使用第三方电子认证服务,则应对密码服务进行核查; 若信息系统中部署了证书认证系统,则可参考对证书认证系统应用的测评方法。 ② 使用相应的公钥对作为不可否认性证据的签名结果进行验证。 ③ 若使用电子签章系统,则参考对电子签章系统应用的测评方法① 使用的第三方电子认证密码服务或系统中部署的证书认证系统符合相关要求。 ② 使用相应公钥对不可否认性证据的签名结果的验证结果为通过。 ③ 使用的电子签章系统符合电子签章系统应用的相关标准规范要求 3.13本章小结 密码技术是现代信息安全的基础和核心技术,它不仅能够对信息加密,而且能完成信息的完整性验证、数字签名和身份认证等功能。本章着重介绍了常见的替代密码、置换密码、对称密码、非对称密码、PKI、密码管理和密码测评等技术和基础理论。 习题 31指出古典密码体制的不足。 32指出一次一密的两个问题。 33试述密码学的发展阶段及其主要特征。 34什么是密码学?密码编码学和密码分析学区别是什么? 35密码学的五元组是什么?它们分别有什么含义? 36密码分析主要有哪些方式?各有何特点? 37简述对称密码体制和非对称密码体制的优缺点。 38试说明链路加密、节点对节点加密、端对端加密的应用场景。 39试用C语言模拟实现DES算法的整个加密过程。