《商用密码应用于安全性评估》第一章密码基础知识

《商用密码应用与安全性评估》

要求:第一章密码基础知识

1.1 密码应用概述

密码是指使用特定变换对信息等进行加密保护安全认证产品、技术和服务

在我国,密码分为核心密码普通密码商用密码,其中商用密码用于保护不属于国家秘密的信息。

密码技术包括密码编码、实现、协议、安全防护、分析破译,以及密钥产生、分发、传递、使用、销毁等技术。典型的密码技术包括密码算法密钥管理密码协议

密码算法是实现密码对信息进行“明”“密”变换、产生认证“标签”的一种特定规则。不同的密码算法实现不同的变换规则:加密算法实现从明文到密文的变换;解密算法实现从密文到明文的变换;数字签名算法实现类似于手写签名的功能;杂凑算法实现任意长消息压缩为固定长摘要的功能。

密钥管理是指根据安全策略,对密钥的产生、分发、存储、更新、归档、撤销、备份、恢复和销毁等密钥全生命周期的管理。密钥是密码算法中控制密码变换的关键参数。

密码协议是指两个或两个以上参与者使用密码算法,为达到加密保护或安全认证目的而约定的交互规则。密码协议是将密码算法等应用于具体使用环境的重要密码技术,具有十分丰富的内容。

信息安全的主要目标是保障信息的保密性、完整性、可用性

密码具有的四个功能:实现信息的保密性、信息来源和实体身份的真实性、数据的完整性和行为的不可否认性

密码应用技术框架包括密码资源密码支撑密码服务密码应用四个层次。
在这里插入图片描述

1.2 密码应用安全性评估基本原理

商用密码应用安全性评估,简称密评,是指对采用商用密码技术、产品和服务集成建设的网络与信息系统密码应用的合规性正确性有效性进行评估。

PDCA管理循环,即“计划-实施-检查-改进”管理循环,是一种经典的信息安全过程管理方式。

在这里插入图片描述

信息安全风险评估是分析和解释风险的过程,包括:确定评估范围和方法、搜集和分析风险相关数据、解释风险评估结果。

风险评估在不同阶段发挥不同的作用。在计划(Plan)阶段,通过风险评估以确定系统的安全目标;在实施(Do)阶段,通过风险评估以确定系统的安全目标达成与否;在检查(Check)阶段,也就是运行维护阶段,要不断地实施风险评估以识别系统面临的不断变化的风险,从而确定安全措施的有效性,确保安全目标得以实现。

信息安全风险评估的基本要素包括资产、威胁、脆弱性、风险和安全措施

密码应用安全性评估在密码应用管理中的定位:是保证密码应用合规、正确、有效的重要组成部分,它助密码应用管理过程构成闭环,使密码应用管理体系得到持续改进。密码应用安全性评估活动贯穿于密码应用管理过程整个生命周期。

密码应用安全性评估于产品检测的关系:采用质量合格的信息安全产品是信息安全保障措施有效的基础,典型的信息安全产品包括密码机、安全路由器、防火墙等。

产品检测通过边界划定的方法,将密码产品当作一个“密码模块”,按照密码模块的标准对密码产品自身的安全 防护能力进行检测。用统一的标准来度量不同类型密码产品的安全等级。

密码应用安全性评估的模式类似于信息产品安全性检测的“CC+PP+ST”模式(通用准则+保护轮廓+安全目标)

密码产品的安全等级与信息系统的安全等级无直接关系。

密码应用安全性评估与信息系统安全的关系:通过了密码应用安全性评估的系统并不意味着信息系统就是安全的,但无法通过密码应该安全性评估的系统一定是不安全的;

密码应用安全性评估与信息安全风险评估的关系:分析信息系统的密码应用安全需求、制定密码应用方案,需要基于信息安全风险评估的结果;进行密码应用安全性评估时,除相关测评结果外还需判断是否有效解决相关安全问题、是否还存在高风险的情况。

1.3 密码技术发展

20世纪40年代末,香农连续发表了两篇著名论文《保密系统的通信理论》和《通信的数学理论》,提出评价密码系统的五条标准,即保密度、密钥量、加密操作的复杂性、误差传播和消息扩展。

1976年,Diffie和Hellman发表题为《密码学的新方向》的著名文章,首次证明了在发送端和接收端无密钥传输的保密性通信是可能的,从而开创了密码学的新纪元。

1.4 密码算法

在这里插入图片描述

对称密码算法

分组密码分为两类:序列密码(流密码)、分组密码(块密码)

序列密码和分组密码的区别:

序列密码和分组密码都属于对称密码,区别在于序列密码是将密钥和初始向量(IV)作为输入,通过密钥流生成算法输出密钥流(也称扩展密钥序列),然后将明文序列和密钥流进行异或,得到密文序列。分组密码首先对明文消息进行分组,再将明文分组、密钥和初始向量(如果有)一起作为输入,通过分组加密算法直接输出密文分组。

序列密码的特点在于密钥流可以再明文序列到来之前生成。

工作模式

分组密码的七种工作模式:电码本(ECB)、密文分组链接(CBC)、密文反馈(CFB)、输出反馈(OFB)、计数器(CTR)、分组链接(BC)、带非线性函数的输出反馈(OFBNLF)。

ECB模式:

在这里插入图片描述

特点:

(1)对某一个分组的加密或解密可独立于其他分组进行;

(2)对密文分组的重排将导致明文分组的重排;

(3)不能隐蔽数据模式,即相同的明文分组会产生相同的密文分组;

(4)不能抵抗对分组的重放、嵌入和删除等攻击。

CBC模式:

在这里插入图片描述

性质:

(1)链接操作使得密文分组依赖于当前的和以前的明文分组,因为对密文分组的重新编排不会导致对相应明文分组的重新编排;

(2)加密过程使用IV进行了随机化,每次加密IV都必须重新生成,并且要保证IV的随机性。使用不同的IV可以避免ECB模式下每次对相同的明文使用相同的密钥加密生成相同的密文的弊端;

(3)加密过程是串行的,无法并行化;在解密过程中,通过两个相邻的密文分组执行解密操作可以获得明文分组,因此解密过程可以并行化;

此外,CBC模式还有一个重要用途:生成消息鉴别码(MAC),(MAC可以用于检验消息的完整性、验证消息源的真实性等)

CTR模式:

在这里插入图片描述

性质:

(1)支持加密和解密并行计算,可事先生成密钥流,进行加密和解密准备;

(2)只用到了分组密码算法的分组加密操作;

(3)错误密文中的对应比特只会影响解密后明文中的对应比特,即错误不会传播。

ZUC

2011年,我国自主设计的序列密码算法ZUC,与AES、SNOW3G共同成为4G移动通信密码算法国际标准,是我国商用密码算法首次走出国门参与国际标准竞争,并取得重大突破。目前正在推动256比特版本进入5G通信安全标准。

ZUC算法由线性反馈移位寄存器(LFSR)、比特重组(BR)、非线性函数F三个基本部分组成。算法结构在逻辑上分为上中下三层,其中上层是16级LFSR、中层是BR、下层是非线性函数F。

在这里插入图片描述

可用于数据保密性保护、完整性保护等。ZUC算法密钥长度为128比特,由128比特种子密钥和128比特初始向量共同作用产生32比特位宽的密钥流。

基于ZUC的两中算法包括加密算法128-EEA3和完整性保护算法128-EIA3。

ZUC算法具有很高的理论安全性,能够有效抵抗目前已知的攻击方法,具有较高的安全冗余,并且算法速度快,软/硬件实现性能都比较好。

SM4

是我国密码局公布的第一个商用密码算法,适用于无线局域网,原名SMS4,2006年提出,2012年发布为密码行标,2016年发布为国标,2018年纳入ISO标准正文,进入最终国际标准草案阶段。

SM4 分组密码算法是一个迭代分组密码算法,数据分组长度为128比特。

加密算法和密钥扩展算法都采用32轮非线性迭代结构(非平衡Feistel结构)。Feistel结构的特点是加密和解密的算法结构完全一致。

在这里插入图片描述

SM4算法具有安全高下的特点,在设计和实现方面具有以下优势:

(1)在设计上实现了资源重用,密钥扩展过程和加密过程类似;

(2)加密过程与解密过程相同,只是轮密钥使用顺序正好相反,它不仅适用于软件编程实现,更适合硬件芯片实现。

(3)轮变换使用的模块包括异或运算、8比特输入8比特输出的S盒,还有一个32比特输入的线性置换,非常适合32位处理器的实现。

S盒具有较高的安全特性,线性置换的分支数达到了最优,可以抵抗差分分析、线性分析、代数攻击等密码分析方法。

国外对称密码AES

常见的国外对称密码算法主要有DES、TDEA和AES

AES 算法又称为Rijndeal算法。

在这里插入图片描述

SM4和AES的密钥扩展算法比较:

SM4的密钥扩展算法和机密算法基本相同,都是将密钥分为4组,每组32比特,然后通过S盒代换、线性变换来产生各轮密钥。AES算法的密钥产生与加密算法不同,不管其中同样也是用到了S盒和线性变换。

安全性上SM4算法的密钥长度是128比特,其安全性与AES-128是相当的,但AES加密轮数少并且支持更多安全强度选择。

在算法性能和实现效率方面,由于SM4密钥扩展和加密算法基本相同,且解密时可以使用同样的程序,只需将密钥的顺序倒置即可,因此SM4算法实现起来较为简单;而AES算法的加密算法和解密算法不一致,实现起来更复杂一些。

公钥密码算法

公钥密码算法又称非对称密码算法,既可用于加密解密,也可用于数字签名,打破了对称密码算法加密和解密必须使用相同密钥的限制,很好的解决了对称密码算法中存在的密钥管理难题。公钥密码算法包括公钥加密和私钥签名两种主要用途。

公钥密码算法一般建立在公认的计算困难问题上,这样的公钥密码具有可证明安全性。目前公钥密码体制包括基于大数分解困难下的RSA密码体系类,基于离散对数问题困难性的密码类(包括基于有限域中的离散对数问题,如ElGamal;基于椭圆曲线的离散对数问题,如SM2、ECDSA等算法)

SM2

SM2椭圆曲线公钥密码算法,是基于椭圆曲线离散对数问题。

2010年底由国家密码局发布

定义在256比特素域上。

主要包括:数字签名算法、密钥交换协议和公钥加密算法三个部分。

数字签名

密钥产生:随机产生一个秘密变量d, d ∈ [ 1 , n − 1 ] d\in[1,n-1] d[1,n1];计算P=dG;将P作为公钥公开,d作为私钥保存

签名生成:签名者选取随机数 k ∈ [ 1 , n − 1 ] k\in[1,n-1] k[1,n1],计算 k G = ( x 1 , y 1 ) kG=(x_1,y_1) kG=(x1,y1)。计算 r = ( H ( M ) + x 1 ) m o d n r=(H(M)+x_1)mod n r=(H(M)+x1)modn,其中 M = Z A ∣ ∣ m M=Z_A||m M=ZA∣∣m Z A Z_A ZA是关于用户的可辩别标识、部分椭圆曲线系统参数和用户的公钥杂凑值,m是待签名消息;H为国家秘密管理局核准的杂凑函数,如SM3;若r=0或r+k=n,则重新选取随机数k。计算 s = ( 1 + d ) − 1 ( k − r d ) m o d n s=(1+d)^{-1}(k-rd) mod n s=(1+d)1(krd)modn;若s=0,则重新选取随机数k;否则,将(r,s)作为签名结果;

签名验证:先检查 r , s ∈ [ 1 , n − 1 ] r,s\in[1,n-1] r,s[1,n1] r + s ≠ n r+s\not =n r+s=n;计算 ( x 1 ′ , y 1 ′ ) = s G + ( r + s ) P (x_1',y_1')=sG+(r+s)P (x1,y1)=sG+(r+s)P;计算 r ′ = ( H ( M ) + x 1 ′ m o d n ) r' = (H(M)+x_1' mod n) r=(H(M)+x1modn);判断r’与r是否相等,若相等则签名验证通过,否则验证失败

密钥交换

(Z_A、Z_B分别是A、B的唯一标识;&表示两个整数的按比特与运算; K D F ( k s , k l e n ) KDF(k_s,klen) KDF(ks,klen)是密钥派生函数,以 k s k_s ks为种子、产生 k l e n klen klen比特的伪随机序列;记w为 ⌈ l o g 2 n + 1 2 ⌉ \left\lceil\frac{log_2 n+1}{2}\right\rceil 2log2n+1

用户A选取随机数 r A ∈ [ 1 , n − 1 ] r_A \in [1,n-1] rA[1,n1],计算 R A = r A G = ( x 2 , y 2 ) R_A=r_A G=(x_2,y_2) RA=rAG=(x2,y2)并发送给用户B;

用户A选取随机数 r B ∈ [ 1 , n − 1 ] r_B \in [1,n-1] rB[1,n1],计算 R B = r B G = ( x 3 , y 3 ) R_B=r_B G=(x_3,y_3) RB=rBG=(x3,y3)并发送给用户B;

然后双方进行计算:

B:计算 x B = 2 w + ( x 3 x_B=2^w+(x_3 xB=2w+(x3& ( 2 w − 1 ) ) 和 t B = ( d B + x B r B ) m o d n (2^w -1))和t_B=(d_B+x_B r_B) mod n (2w1))tB=(dB+xBrB)modn;验证R_A的椭圆曲线E上的点,然后计算 x A = 2 w + ( x 2 x_A=2^w+(x_2 xA=2w+(x2& ( 2 w − 1 ) ) (2^w -1)) (2w1));计算 V = t B ( P A + x A R A ) = ( x v , y v ) V=t_B(P_A+x_A R_A)=(x_v,y_v) V=tB(PA+xARA)=(xv,yv),若V是椭圆曲线E上的无穷远点,则重新选择 r B r_B rB、重新协商。最终得到会话密钥 K B = K D F ( x v ∣ ∣ y v ∣ ∣ Z A ∣ ∣ Z B , k l e n ) K_B=KDF(x_v||y_v||Z_A||Z_B,klen) KB=KDF(xv∣∣yv∣∣ZA∣∣ZB,klen)

A:计算 x A = 2 w + ( x 2 x_A=2^w+(x_2 xA=2w+(x2& ( 2 w − 1 ) ) 和 t A = ( d A + x A r A ) m o d n (2^w -1))和t_A=(d_A+x_A r_A) mod n (2w1))tA=(dA+xArA)modn;验证R_B的椭圆曲线E上的点,然后计算 x B = 2 w + ( x 3 x_B=2^w+(x_3 xB=2w+(x3& ( 2 w − 1 ) ) (2^w -1)) (2w1));计算 U = t A ( P B + x B R B ) = ( x u , y u ) U=t_A(P_B+x_B R_B)=(x_u,y_u) U=tA(PB+xBRB)=(xu,yu),若V是椭圆曲线E上的无穷远点,则重新选择 r A r_A rA、重新协商。最终得到会话密钥 K A = K D F ( x u ∣ ∣ y u ∣ ∣ Z A ∣ ∣ Z B , k l e n ) K_A=KDF(x_u||y_u||Z_A||Z_B,klen) KA=KDF(xu∣∣yu∣∣ZA∣∣ZB,klen)

易证 K A = K B K_A=K_B KA=KB

公钥加密算法

(M是比特长度为mlen的明文; ⨁ \bigoplus 表示异或)

加密算法:选取随机数 l ∈ [ 1 , n − 1 ] l \in [1,n-1] l[1,n1],计算 C 1 = l G = ( x 4 , y 4 ) ; l P = ( x 5 , y 5 ) C_1=lG=(x_4,y_4);lP=(x_5,y_5) C1=lG=(x4,y4);lP=(x5,y5);计算 e = K D F ( x 5 ∣ ∣ y 5 , m l e n ) ; C 2 = M ⨁ e ; C 3 = H ( x 5 ∣ ∣ M ∣ ∣ y 5 ) e=KDF(x_5||y_5,mlen);C_2=M\bigoplus e;C_3=H(x_5||M||y_5) e=KDF(x5∣∣y5,mlen);C2=Me;C3=H(x5∣∣M∣∣y5);输出密文 C = C 1 ∣ ∣ C 3 ∣ ∣ C 2 C=C_1||C_3||C_2 C=C1∣∣C3∣∣C2

解密算法:验证 C 1 C_1 C1是否在椭圆是上,计算 d C 1 = ( x 5 , y 5 ) dC_1=(x_5,y_5) dC1=(x5,y5);计算 e = K D F ( x 5 ∣ ∣ y 5 , m l e n ) , M = C 2 ⨁ e e=KDF(x_5||y_5,mlen),M=C_2\bigoplus e e=KDF(x5∣∣y5,mlen),M=C2e;验证 C 3 ’ = H ( x 5 ∣ ∣ M ∣ ∣ x 5 ) = = C 3 C_3’=H(x_5||M||x_5)==C_3 C3=H(x5∣∣M∣∣x5)==C3

SM2公钥加密算法是基于广义的椭圆曲线加密算法设计而来,安全性主要体现在三个方面:算法具备单向性;产生的明文密文具备不可区分性;密文具备不可延展性;

与RSA算法相比:安全性高;密钥短;私钥产生简单;签名速度快

(256位的SM2算法密码强度已经超过RSA-2048)

SM9

SM9标识密码算法

标识密码(IBC)是在传统公钥基础设施基础(PKI)上发展而来的,处理具有PKI的技术外,主要解决了在具体安全应用中PKI需要大量交换数字证书的问题,使安全应用更加易于部署和使用。

密码学家Shamir在1984年提出了IBC的概念。在标识密码系统中,用户的私钥由密钥生成中心根据主密钥和用户标识计算得出,用户的公钥由用户标识唯一确定,用户不需要通过第三方保证其公钥来源的真实性,与基于证书的公钥密码系统相比,标识密码系统中的密钥管理环节可以得到适当简化。由于标识密码系统的密钥生成中心可计算出用户私钥,因此需要保证密钥生成中心是完全值得信任的。

SM9算法标准中包括:包括数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法。

SM9密码算法涉及有限域和椭圆曲线、双线性及安全曲线、椭圆曲线上双线性对的运算等基本知识和技术。SM9密码算法的应用与管理不需要数字证书、证书库或密钥库。

进行数字签名时,签名者持有一个标识和相应的私钥,(该私钥由密钥生成中心通过主密钥和标识生成),通过私钥签名,验证者通过签名者的标识产生公钥来验签。

进行密钥交换时,通过对方的标识和自身的私钥经两次或可选三次信息传递过程计算获得共享密钥。

进行密钥封装时,封装者利用解封装用户的标识产生并加密一个秘密密钥给对方,解封装用户则用相应的私钥解封装该秘密密钥;

进行加解密算法时,用椭圆曲线对实现的基于标识的加密与解密算法,使消息发送者可以利用接收者的标识对消息进行加密,唯有接收者可以用相应的私钥对该密文进行解密。

SM9使用256比特的Barret-Naehrig(BN)曲线。目前并没有安全风险,能够避免椭圆曲线的选取问题,并抵抗常见的针对椭圆曲线的攻击方式,安全性远远高于同类算法。SM9的安全性也和嵌入次数有关,即嵌入次数越多安全性越高,双线性对的计算越困难。

国外公钥算法RSA

常见的国外公钥算法有:RSA、ECDSA等。

RSA算法基于大整数因子分解难题,可用于数字签名、安全认证等

需要注意的是,1024比特及以下密钥长度的rsa算法目前已经不推荐使用。n应至少2048。在效率方面,由于达到相当安全强度时,rsa密钥长度要远大于ECC算法(如SM2),因此私钥计算的执行效率(如计算数字签名)要比ECC算法慢数倍。

密码杂凑算法

杂凑算法性质:

(1)抗原像攻击(单向性)。给定h找到M使得h=H(M)是困难的。

(2)抗二原像攻击(弱抗碰撞性)。给定消息M1,找到M2使得h(M1)=h(M2)是困难的。

(3)强抗碰撞攻击。找到两个消息M1、M2,使得h(M1)=h(M2)是困难的。

杂凑算法结构最常用的是Merkle-Damgard模型(简称M-D模型)、海绵结构。(MD5、SHA-1、SHA-2、SM3都采用了M-D模型;SHA-3采用的是海绵结构)。

M-D模型,先对经过填充后的消息进行均匀分组,而后消息分组顺序进入压缩函数F,最终生成固定比特长度的杂凑值。它的安全性取决于压缩函数的安全性。

杂凑算法可以检验消息的完整性,也可以与公钥算法一起用来产生数字签名。单独使用杂凑算法并不能保证数据的完整性,因此完整性保护时,杂凑算法常与密钥一同使用,生成杂凑值称为消息鉴别码(MAC),这样的杂凑算法称为带密钥的杂凑算法(HMAC)。

SM3

SM3算法采用M-D模型,输入消息(长度 L < 2 64 L<2^{64} L<264)经过填充扩展迭代压缩后,生成长度为256比特的杂凑值。(分组长度为512比特)

SM3算法在M-D模型的基础上,新增了16步全异或操作、消息双字介入、加速雪崩效应的P置换等多种设计技术,能够有效避免高概率的局部碰撞,有效抵抗强碰撞性的差分分析、弱碰撞性的线性分析和比特追踪等密码分析方法。

带密钥的杂凑算法(HMAC)可作为数据完整性检验,检验数据是否被非授权修改;也可作消息鉴别,保证消息源的真实性。HMAC计算时调用了两次完整的杂凑函数H,对于密钥K,消息D,计算公式为: H M A C ( K , D ) = M S B m ( H ( ( K ˉ ⨁ O P A D ) ∣ ∣ H ( ( K ˉ ⨁ I P A D ) ∣ ∣ D ) ) ) HMAC(K,D)=MSB_m(H((\bar{K} \bigoplus OPAD)||H((\bar{K} \bigoplus IPAD)||D))) HMAC(K,D)=MSBm(H((KˉOPAD)∣∣H((KˉIPAD)∣∣D)))

其中,密钥K的长度为k: L 2 ≤ k ≤ L 1 L_2\le k \le L_1 L2kL1 L 1 L_1 L1为消息分组比特长度, L 2 L_2 L2为杂凑值的比特长度。对于SM3, L 1 = 512 , L 2 = 256 L_1=512,L_2=256 L1=512,L2=256。首先对密钥进行填充,在K的右侧填充0使其变成长为 L 1 L_1 L1 K ˉ \bar{K} Kˉ。IPAD为0x36二进制重复 L 1 / 8 L_1/8 L1/8次连接起来。OPAD为0x5c二进制重复 L 1 / 8 L_1/8 L1/8次连接起来。

国外杂凑算法

常见的国外杂凑算法是MD5、SHA系列

MD5消息分组512比特, 输出消息摘要128比特

SHA-1输入长度应小于 2 64 2^{64} 264比特,消息摘要长度160比特

SAH-2算法支持224、256、384、512比特四种长度的输出,包含6个算法:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SAH-512/256。(其中256和512是主要算法)

(SM3和SHA-256算法在结构上相似,消息分组大小、迭代轮数、输出长度均相同,综合性能相当)

SHA-3算法采用了海绵结构。也包含多个算法SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256

密码算法分析概要

柯克霍夫原则:评估一个密码算法安全性时,必须假定攻击者不知道密钥,但知道密码算法的所有细节。基于此准则,密码算法的安全性应该基于密钥的保密而不是所用算法的隐蔽性。

密码分析划分为:唯密文攻击、已知明文攻击、选择明文攻击和选择密文攻击四种方式。

对于对称密码的分析方法:差分类攻击和线性类攻击

对于公钥密码的分析方法:困难数学问题的分析、LLL算法等格基约化算法

对于杂凑算法的分析方法:差分攻击、模差分攻击、中间相遇攻击等

侧信道分析

1.5 密钥管理

密钥管理是指根据安全策略,对密钥的产生、分发、存储、更新、归档、撤销、备份、恢复、销毁等密钥全生命周期的管理。

以公钥基础设施(PKI)为例

密钥生命周期管理

密钥生命周期是指密钥从生成到销毁的时间跨度

密钥在其生命周期内涉及到生成、存储、导入导出、分发、使用、备份和恢复、归档、销毁等环节。

密钥生成

密钥生成方式包括:随机数直接生成、通过密钥派生函数(KDF)生成。

使用KDF生成有两种情形:在密钥协商过程中从共享秘密派生密钥;从主密钥派生密钥。

密钥存储

密钥存储在密码产品中或者加密保存在通用存储设备中

当密码存储在密码产品中时,密码产品的密钥防护机制可以用于保护密钥在存储过程中的保密性和完整性;而当密钥保存在通用存储设备(如数据库)中则需要利用密码算法对密钥进行必要的保密性和完整性保护。

密钥导入和导出

安全的密钥导入和导出方式包括加密传输和知识拆分。

加密传输方法最简单高效。解密密钥需要事前共享或获取,为了保证密钥的完整性,需要加入完整性保护和校验机制即数字信封。

知识拆分是将密钥拆分为几个独立的密钥分量,拆分方法有两种:长度一致,利用异或计算;利用门限算法拆分,例如Shamir秘密分享方案。

注意,知识拆分不应当降低密钥的安全性,不能简单截取;禁止密钥明文进出,拆分后的分量也要通过可信信道传输。

密钥分发

密钥分发主要分为人工(离线)分发和自动(在线)分发。

人工要保证:授权、可信、有保护机制;自动分发的安全性主要通过密码技术本身保证

密钥使用

密钥的使用需要注意核准的密码算法的密钥不能被非核准密码算法使用;不同类型的密钥不能混用。

此外,虽然不需要保护公钥的保密性,但在使用前需要验证公钥的完整性,以及实体和公钥的关联关系,以确保公钥来源的真实性。

密钥备份和恢复

密钥备份的主要目的是保护密钥的可用性,防止密钥意外损坏。备份的密钥要完成恢复后才可以激活。

密钥归档

密钥在其生命周期结束时应当进行销毁,而有些则需要进行归档。

密钥归档时在密钥的生命周期之外对密钥进行保存,在现有系统中该密钥已经不再使用;而密钥备份则针对仍在生命周期内的密钥。

注意签名密钥对的私钥不应进行归档。

密钥销毁

密钥销毁是密钥生命周期的重点,有两种情况:正常销毁、应急销毁

对称密钥管理

对称密钥管理中最具有特色的是对称密钥的分发。

例如金融机构一般将密钥分为两类:数据密钥(DK)、密钥加密密钥(KEK)。

对称密钥的分发主要有两种基本结构,一种是点到点结构,另一种是基于密钥中心的结构。

点到点的结构中通信双方共享一个通过人工分配的KEK,当通信时产生新的DK,并用KEK加密之后发送给对方。

在这里插入图片描述

为解决点对点结构中大量KEK分发困难的问题,基于密钥中心的结构有两种:密钥转换中心(KTC)和密钥分发中心(KDC)。

在KTC结构中,发起方A产生一个DK并用A与KTC共享的KEK_A进行加密发送给KTC,然后KTC将解密出的DK使用共享密钥KEK_B加密后发送给B;或者发送给A由A发送给B。

在这里插入图片描述

在KDC结构中,数据密钥DK由KDC产生,然后分别用与A、B共享的KEK加密并分别返回给A和B。

在这里插入图片描述

密钥管理协议需要能抵抗旧密钥传输的重放攻击,方法有:密钥计数器、密钥调整、时间戳

公钥基础设施

公钥基础设施(PKI),是基于公钥密码技术实施的具有普适性的基础设施,可用于提供信息的保密性、信息来源的真实性、数据的完整性和行为的不可否认性等安全服务。

PKI主要解决公钥属于谁的问题,实际上是指谁拥有与该公钥配对的私钥。

PKI包括以下几类组件:证书认证中心(CA)、证书持有者、依赖方、注册机构(RA)、资料库、证书撤销列表(CRL)、在线证书状态协议(OCSP)、轻量目录访问协议(LDAP)、密钥管理系统(KM)。

数字证书也称公钥证书,在证书中包含公钥持有者信息、公开密钥、有效期、扩展信息以及有CA对这些信息进行的数字签名。

PKI通过数字证书解决密钥归属问题。

由于证书上带有CA的数字签名,用户可以在不可靠的介质上存储证书而不用担心被篡改

证书数据结构由tbsCertificate(基本证书域)、signatureAlgorithm(签名算法域)和signatureValue(签名值域)三个域构成。基本证书域中包含了主体名称和颁发者名称、主体的公钥、证书的有效期及其他相关信息;签名算法域的算法标识符必须与基本证书域中的签名标识的签名算法项想用。签名值域中签名的结果采用ASN.1编码成BIT STRING类型保存。

数字证书的各种操作可归纳为五个方面:证书的产生、证书的使用、证书的撤销、证书的更新以及证书的归档。

证书的产生主要包括密钥生成、提交申请、审核检查和证书签发四个步骤。签发证书的目的是得到一个可用的证书,并能在各种应用或者服务中顺利的使用

证书的使用操作包括证书获取、验证使用和证书存储。(数字证书村在的目的是能被用来验证该公钥确实属于证书持有者)

证书的撤销也表示了证书生命的终结。

证书的更新必然需要CA签发一份新的证书。(不同指出仅在于序列号、生效和失效日期)

证书的归档,PKI系统必须支持对曾由数据的归档处理。证书的归档没有固定的形式但是是必不可少的。

双证书体系中,用户同时具有两个私钥,分别成为签名私钥和加密私钥。签名私钥由用户在本地生成并专有掌握,对应的证书被称为“签名证书”;加密私钥用于解密和密钥协商,由专门的可信机构生成并和用户共同掌握,对应的证书被成为“加密证书”。可信机构保存的加密私钥可用于密钥恢复,可信机构需保证所保存的加密私钥的安全性。

1.6 密码协议

密钥交换协议

密钥交换协议是在是使用对称密码进行保密通信之前,必须向通信双方分发密钥是的双方共享密钥。

Diffie-Hellman密钥交换协议

运算在有限循环群上。

初始化:选择大素数p,令g为模p乘法群的生成元,并公开参数p和g。

A选择p以内的随机数x并计算 X = g x m o d p X = g^x mod p X=gxmodp发给B;B选择p以内的随机数y并计算 Y = g y m o d p Y = g^y mod p Y=gymodp发送给A;

用户A和B最终获得的会话密钥为 k = Y x m o d p = X y m o d p k = Y^x mod p = X^y mod p k=Yxmodp=Xymodp

Diffie-Hellman协议只能提供建立会话密钥的功能,并不能抵抗中间人攻击

MQV密钥交换协议

MQV密钥交换协议,是高效隐形认证密钥交换协议的代表,选择椭圆曲线加法群

初始化:令点G为加法群的生成元,点G的阶为n;

用户A的公钥为点 P A = d A ∗ G P_A = d_A * G PA=dAG,私钥为 d A d_A dA

用户B的公钥为点 P B = d A ∗ G P_B = d_A * G PB=dAG,私钥为 d B d_B dB

令w为 ⌈ l o g 2 n + 1 2 ⌉ \left\lceil\frac{log_2 n+1}{2}\right\rceil 2log2n+1,h为余因子。

用户A选择n以内的随机数 r A r_A rA,计算 R A = r A ∗ G = ( x 1 , y 1 ) R_A = r_A * G = (x_1,y_1) RA=rAG=(x1,y1)并将其发送给B;

同时计算 h x = x 1 m o d ( 2 w + 2 w ) h_x = x_1 mod (2^w+2^w) hx=x1mod(2w+2w),以及 t A = h x ∗ d A + r A m o d n t_A = h_x * d_A + r_A mod n tA=hxdA+rAmodn

用户A选择n以内的随机数 r B r_B rB,计算 R B = r B ∗ G = ( x 2 , y 2 ) R_B = r_B * G = (x2,y2) RB=rBG=(x2,y2)并将其发送给B;

同时计算 h y = x 2 m o d ( 2 w + 2 w ) h_y = x_2 mod (2^w+2^w) hy=x2mod(2w+2w),以及 t B = h y ∗ d B + r B m o d n t_B = h_y * d_B + r_B mod n tB=hydB+rBmodn

用户A接收到R_B后验证其是否在椭圆曲线上,计算 h y = x 2 m o d ( 2 w + 2 w ) h_y = x_2 mod (2^w+2^w) hy=x2mod(2w+2w)

用户B接收到R_A后验证其是否在椭圆曲线上,计算 h x = x 1 m o d ( 2 w + 2 w ) h_x = x_1 mod (2^w+2^w) hx=x1mod(2w+2w);

最终共享密钥为 k = h ∗ t A ( R B + h y ∗ P B ) = h ∗ t B ( R A + h x ∗ P A ) k = h *t_A (R_B + h_y * P_B) = h * t_B (R_A + h_x* P_A) k=htA(RB+hyPB)=htB(RA+hxPA)

SM2密钥交换协议

SM2椭圆曲线公钥密码交换协议为MQV的一个变种,同样提供认证性和前向安全性等安全保证。

实体鉴别协议

实体鉴别协议,包括采用对称加密算法的机制、采用数字签名技术的机制、采用密码校验函数的机制、使用零知识技术的机制、采用人工数据传递的机制。

实体鉴别应用模式包括单向鉴别和相互鉴别两种。

详见GB/T 15843

综合密码协议举例

IPSec协议工作在网络层,两个子网之间的通信称为站到站的通信;

SSL协议工作在应用层和TCP层职期间,终端到子网之间的通信称为端到站的通信;

IPSec

IPSec协议实际上是一套协议集合,包括互联网密钥交换协议(IKE)认证头协议(AH)封装安全载荷协议(ESP)、用于网络身份鉴别及加密的一些算法等。

从工作流程来看,IPSec协议可以分为两个环节:IKE是第一个环节,完成通信双方的身份鉴别、确定通信时使用的IPSec安全策略和密钥;第二个环节是使用数据报文封装协议和IKE中协定的IPSec安全策略和密钥,实现对通信数据的安全传输。

AH和ESP协议可以工作在传输模式或隧道模式下。

IKE协议

IKE协议用于鉴别通信双方身份创建安全联盟(SA)协商加密算法以及生成共享会话密钥等。

其中ISAKMP(Internet安全链接和密钥管理协议)是IKE的核心协议,IKE的一个核心功能就是创建和维护SA

SA作为通信上方之间对某些要素的一种协定,是IPSec的基础;IPSec的两种封装协议(AH和ESP)均使用SA中协定的内容保护通信安全。另外SA是单向的,每个SA对应一个安全服务。

ISAKMP分为两个阶段:第一个阶段是主模式,通信双方建立一个ISAKMP SA,并实现双方的身份鉴别和密钥交换,得到工作密钥,该工作密钥用于保护第二阶段的协商过程;第二阶段是快速阶段,使用已建立的ISAKMP SA提供保护,实现通信双方IPSec SA的协商,确定通信双方IPSec安全策略和会话密钥。(其中IPSec安全策略定义了哪些服务以何种形式提供给IP数据报文,如数据加密服务以SM4的CBC模式实现)

主模式:发起方首先告知响应方优先选择的密码协议以及希望采用的密码算法;然后响应方接受并发送自己的签名、加密双证书用于随后密钥交换时的数据加密和身份鉴别;然后通过(用临时密钥SK对称加密保护,并由各自进行数字签名的)交换数据得到为第二阶段提供保护的工作密钥;然后双方利用交换数据经伪随机函数派生出基本密钥参数:用于产生会话密钥的密钥参数、用于验证完整性和数据源身份工作密钥、用于加密的工作密钥;最后通过传递消息对协商内容进行鉴别确认。

在这里插入图片描述

第二阶段:快速模式。主模式之后,用于协商SA,包括IPSec安全策略和会话密钥。交换数据由主模式协定的SA提供保护。使用HMAC验证交换数据的完整性和数据源身份。

在这里插入图片描述

AH协议

AH协议提供数据源身份鉴别完整性抗重放等安全功能。AH不提供任何保密性服务

AH协议的主要作用是为整个IP数据报文提供高强度完整性校验,以确保被篡改过的数据包可以被检查出来。

AH在传输模式和隧道模式中分别有不同的放置位置,保护的范围有所不同。

在这里插入图片描述

ESP协议

和AH协议相比,ESP协议增加了对数据报文的加密功能,它可同时使用用于加密的会话密钥及用于验证完整性和数据源身份的会话密钥,来为数据提供全面保护。

ESP在传输模式和隧道模式中分别有不同的放置位置,保护范围也有所不同。

在这里插入图片描述

SSL协议

SSL协议是网络上实现数据安全传输的通用协议,采用B/S结构,有数据加密完整性保护数据源鉴别抗重放攻击等功能。

SSL不是单个协议,而是两层协议,工作于应用层和TCP层之间,协议的上次有握手协议等四个协议,下层是记录层协议。记录层协议用于封装不同的更高层协议的数据,为数据提供保密性、完整性和数据分段等服务(特别是给HTTP提供安全服务)。

SSL协议中定义了三个更高层协议:握手协议、密码规格变更协议、报警协议。其中,握手协议实现了服务器和客户端之间相互的身份鉴别、交互过程中密码套件与密钥协商;密码规格变更协议则是用于通知双方其后的通信消息将用刚刚协商的密码规格及相关联的密钥来保护;报警协议用于关闭链接的通知,以及整个链接过程中出现的错误进行报警,其中关闭通知由发起者发送,错误报警由错误的发现者发送,报警消息中包含报警级别和报警内容。

在这里插入图片描述

握手协议

握手协议是通信双方准备建立SSL连接通信时使用到的第一个子协议,它是SSL协议中最复杂、设计密码技术最多的协议。

主要作用:通信双方对彼此进行身份鉴别;协商连接会话所需的密码参数

在这里插入图片描述

首先建立连接并交换基本信息和随机数;然后进行身份鉴别和密钥交换;根据需要还可发送密码规格变更消息;最后需要发送加密的握手接受消息。握手过程结束后,服务器和客户端才开始进行数据安全传输。

记录层协议

记录层协议发挥了“承上启下”的作用,它对上次应用接受到的待传输协议进行分块、压缩、封装等处理,而后将处理后的数据传输给下层,再传输给通信的另一方。

当客户端和服务器握手成功后,待传输的应用数据通过记录层协议封装,并得到保密性和完整性保护。步骤:数据分段、压缩、添加MAC、加密、附加SSL记录报头

密码协议分析概要

对密码协议的分析和设计相辅相成,研究人员需提出设计原则后给出形式化分析方法,从理论上保证密码协议的安全性。

1.7 密码功能实现示例

密码的四个主要功能:实现信息的保密性、消息来源的真实性、数据的完整性、行为的不可否认性。

保密性

保密性是保护的目的是避免信息泄漏或暴露给未授权的实体。三种基本方法:访问控制信息隐藏信息加密

对于加密机制的应用,需要考虑密码体制的选取、算法的选择、工作模式、填充需要、初始化需要等因素。公钥密码技术可以为对称密码应用提供密钥协商或安全传输的支撑。在对称密码实现保密性保护时,尤其需要注意工作模式的安全性。

完整性

完整性保护的目的在于保护信息免受非授权实体的篡改或替代。两种基本方法:访问控制、损坏–检测方法。

一般通过消息鉴别码数字签名机制来实现完整性保护。

对称密码和杂凑算法都可用于消息鉴别码的生成,MAC往往以消息标签的形式存在,接收者在将消息作为真实消息接收之前,通过共享的密钥和接受到的消息重新计算MAC值,验证是否和接受到的MAC值一致,以此来判断收到的消息的完整性。

数字签名也可以看做是标签的一种。基于公钥密码技术的数字签名不仅可以防止敌手对消息进行篡改,还能防止接收者对消息进行伪造,即同时实现消息发送行为的不可否认性。

真实性

实现真实性的核心是鉴别。基本方法:基于对称密码、公钥密码等密码技术的鉴别,基于静态口令的鉴别,以及基于生物特征的鉴别。

基于密码技术鉴别机制的基本原理是:基于声称者知道某一秘密密钥这一事实,实现验证者对声称者身份的鉴别。对称密码技术和公钥密码技术都可以用于鉴别机制的实现。为了避免”密钥爆炸“引入中心在线认证服务器来共享密钥辅助鉴别。基于对称密码的鉴别方案需要维持一个在线服务器,但公钥密码技术可以避免使用在线认证服务器(典型代表:PKI系统)。

基于静态口令的鉴别机制:静态口令或者个人识别码(PIN)是最常用的鉴别信息之一,直接是哦也能够口令鉴别由很大的脆弱性,用密码技术可以有效提升口令鉴别过程的安全性。

基于动态口令的鉴别机制:主要用于抗重放攻击。通常情况下,声称者和验证者共同使用一个初始状态同步的随机序列发生器,或者维持同步时钟。动态令牌采用密码算法将秘密值、时间戳和其他一些信息作为输入,计算动态口令信息。

基于生物特征的鉴别机制:包括指纹、声音、虹膜、人脸等。本质上与口令类似。容易收到窃听和重放攻击,因此一般不远程鉴别。

不可否认性

使用不可否认功能,虽然不能防止通信参与方否认通信交换行为的发生,但是可以在产生纠纷时提供可信证据,有利于解决纠纷。不可否认性分为起源的不可否认和传递的不可否认,主要通过采用数字签名技术来实现。

起源的不可否认证据产生的方法包括:使用发起者的数字签名、使用可信第三方数字签名。传递的不可否认证据产生的方法包括:使用接收者的签名确认、使用可信传递代理、使用两阶段传递。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值