0%

商用密码应用与安全性评估备考

友情提示:本文以及本站所有发布内容仅供学习研究之用,目的在于记录和分享学习心得,与同样的渗透爱好者进行交流,提升技术水平以便在工作中能够加以运用,保卫网络空间安全,对任何个人或组织的系统进行测试均需要获得其授权,否则后果自负!


1 密码基础知识

1.1 密码应用概述

密码:采用特定变换的方法对信息等进行加密保护、安全认证的技术、产品和服务。

密码分为核心密码、普通密码和商用密码。商用密码用于保护不属于国家密码的信息

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

密码算法:实现明文密文交换。加密算法(明文–>密文),解密算法(密文–>明文),数字签名算法抗抵赖,杂凑算法实现任意长度消息压缩为固定长度摘要。

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

密码协议:两个及以上参与者使用的密码算法,为达到加密保护或安全认证目的而约定的交互规则。

密码的作用:是网络安全的核心技术和基础支撑、是构建网络信任体系的重要基石、密码是国之重器,重要的战略性资源。

密码的功能:实现信息的保密性、信息来源的真实性、数据的完整性和行为的不可否认性(数字签名技术)。

密码应用技术框架:

  • 密码资源层,提供基础密码资源,如算法软件、算法IP核、算法芯片等,底层是基础密码算法;
  • 密码支撑层,提供密码资源调用,由安全芯片类、密码模块类、密码整机类等各类密码产品组成,如可信密码模块、智能IC卡、密码卡、服务器密码机等;
  • 密码服务层,提供密码应用接口,分为对称密码服务、公钥密码服务及其他密码服务三大类,为上层应用提供数据的保密性保护、身份鉴别、数据完整性保护、抗抵赖等;
  • 密码应用层,调用密码服务层提供的密码应用接口,实现所需的数据加密和解密、数字签名和验签等功能,为信息系统提供安全功能应用或服务,典型应用如安全电子邮件系统、电子印章系统、安全公文传输、桌面安全防护、权限管理系统、可信时间戳服务器等;
  • 密码管理基础设施,为以上提供运维管理、信任管理、设备管理、密钥管理等。

密码应用中的安全问题:密码技术被弃用(不用)、密码技术被乱用(错误配置导致漏洞等)、密码技术被误用(用错密码算法)

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

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

信息安全管理标准:GB/T 22080-2016《信息技术 安全技术 信息安全管理体系要求》等同采用国际标准ISO/IEC 27001:2013。

PDCA:计划(建立信息安全管理体系环境)、实施(实施并运行信息安全管理体系)、检查(监视与评审信息安全管理体系)、改进(改进信息安全管理体系)。

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

GB/T 20984-2022

密码应用安全性评估在密码应用管理中的定位:计划(密码应用方案制定——方案评估),密码应用方案建设实施、信息系统运行监控(初次/定期/应急评估)、改进(整改)。

安全目标ST、保护轮廓PP、信息技术安全评估通用准则CC

密码应用安全性评估与信息安全风险评估的关系:存在高风险的信息系统不能通过商用密码应用安全性评估。

1.3 密码技术的发展

密码发展三个阶段:古典密码、近代密码(机械密码)、现代密码。

古典密码:代换密码、置换密码,前者采用代换表(单表代换或多表代换,凯撒密码、维吉尼亚密码),置换密码不改变明文字母,仅改变其位置(栅栏密码)。唯密文攻击可行。

机械密码:恩尼格玛密码机,三个转子的转动方向组成了16900钟可能,三个转子不同的位置构成了6种可能性,连线板使得三个转子两两交换6对字母,则可形成100391791500钟组合,因此一台3个转子的恩尼格玛密码机总共可以有16900×6×100391791500钟组合,大约一亿亿钟不同密码变换组合。

现代密码:

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

基于香农提出的理想密码模型“一次一密”的理论,最安全的密码是1比特密钥保护1比特明文。

1998年12月,电子前线基金会(EFF)使用一台25万美元的计算机在56小时内破译了DES算法,1998年12月美国正式决定不再使用DES。

1997年9月,AES高级加密标准候选提名最终要求公布,分组长度128位,密钥长度支持128位、192位、256位。能够抵抗差分分析、线性分析、代数攻击等分析方法。

1976年,Diffie和Hellman发表题为《密码学的新方向》,首次证明发送端和接收端无密钥传输的保密通信是可能的。

1977年,Rivest、Shamir和Adleman三人提出了第一个比较完善和实用的公钥加密算法和签名方案,即RSA算法,基于大整数因子分解问题。

1985年,ElGamal算法,基于离散对数问题。基于椭圆曲线上离散对数问题的椭圆曲线公钥密码算法也于同年提出。

2003年,RSA-576被分解;2005年,RSA-640被分解;2009年,RSA768被分解;目前,2048位长度才能保证其安全性,此外量子计算机的发展会对大整数因子分解造成重大影响。

杂凑算法,将任意长度的消息压缩成某一固定长度的消息摘要,可用于数字签名、完整性保护、安全认证、口令保护等。

2004年,王小云教授宣布利用模差分分析方法成功找到了MD4和MD5等算法的碰撞。之后不久,SHA-1算法也同样方法破解。、

2012年10月,NIST宣布keccak算法成为新的杂凑算法标准,即SHA-3算法。

1999年,《商用密码管理条例》发布。

2006年1月,国家密码局公布了无线局域网产品适用的SMS4算法,后更名为SM4。2012年成为密码行业标准,2016年成为国家标准,2018年11月,SM4算法获批纳入ISO/IEC标准正文,进入最终国际标准草案阶段。

2011年,序列密码算法ZUC,与美国AES、欧洲SNOW 3G共同成为了4G移动通信密码算法国际标准。我国首次!目前,我国推动256位版本的ZUC算法进入5G通信安全标准。

2010年,国家密码管理局公布了密码杂凑算法SM3,采用16步全异或操作、消息双字介入、加速雪崩效应的P置换等多种设计技术,能够有效避免高概率的局部碰撞,有效抵御强碰撞性差分分析、弱碰撞性的线性分析和比特追踪等密码分析方法。2012年发布为密码行业标准,2016年发布为国家标准,2018年10月成为ISO/IEC国际标准。

2012年,SM2算法发布为密码行业标准,2016年发布为国家标准。2016年,SM9标识密码算法发布为密码行业标准到2017年,含有我国SM2和SM9数字算法的ISO/IEC14888-3/AMD1获得一致通过,成为国际标准,2018年正式发布。

ZUC、SM2、SM3、SM4、SM9等一系列构成了我国完整的密码算法体系。部分密码算法被采纳为国际标准,为促进国际密码学发展、丰富长夜选择和保障应用安全提供了中国方案。

抗量子攻击:基于格的密码、基于多变量的密码、基于编码的密码、基于杂凑函数的密码。

1.4 密码算法

对称密码算法:SM4、ZUC、DES、TDEA、AES……
公钥密码算法:SM2、SM9、RSA……
密码杂凑算法:SM3、MD5、SHA……

对称密码算法,主要有两种形式,一是序列密码(流密码,stream cipher,ZUC),二是分组密码(块密码,block cipher,SM4、AES、TDEA即3DES)

序列密码和分组密码区别:序列密码是将密钥和初始向量(不能写死在前台)作为输入,通过密钥流生成算法输出密钥流(扩展密钥序列),然后将明文序列和密钥流进行异或,得到密文序列。分组密码首先对明文消息根据分组大小进行分组,再将明文分组、密钥和初始向量(如有)一起作为输入,通过分组加密算法直接输出密文分组。

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

ECB模式是一种最直接的消息加密方法,分组加解密独立于其他分组,对密文分组的重拍将导致明文分组重排,不能隐藏数据模式,即相同的密文分组会产生相同的密文分组,不能抵抗对分组的重放、嵌入和删除攻击。

CBC模式,每个明文分组在加密之前,先与反馈至输入端的前一组密文按位异或后,再送至加密模块进行加密。IV是一个初始向量,无需保密,但须随着消息的更换而更换,且收发双方必须选用同一个IV。特点:加密串行、解密并行;加密过程使用IV进行了随机化,每次加密IV都不同,确保每次对相同明文使用相同密钥加密结果不相同;密文分组重排不会导致对应明文分组的重排。CBC的另一个重要用途,消息鉴别码(MAC),此时初始向量需要全部为0。

CTR模式,通过逐次累加的计数器值进行加密来生成密钥流。特点:支持加解密并行,可事先生成密钥流;仅用到了分组密码算法的分组加密操作;错误密文中的对应比特只会影响解密后明文中的对应比特,错误不会传播。

ZUC算法,GM/T 0001,密钥长度128位,由128位的种子密钥和128位的初始向量共同作用产生32位宽的密钥流。

2011年9月,第53次第三代合作伙伴计划(3GPP)系统架组会议上,我国以ZUC算法为核心的加密算法128-EEA3和完整性保护算法128-EIA3,与美国AES、欧洲SNOW 3G共同成为了4G移动通信密码算法国际标准。目前我国正推动256位版本的ZUC算法进入5G通信安全标准,采用256位密钥与184位初始向量,可产生32/64/128位三种不同长度的认证标签。

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

基于ZUC的两种算法:128-EEA3(机密性算法)、128-EIA3(保密性算法)

ZUC算法在设计中引入了素数域运算、比特重组、最优扩散的线性变换等先进理念和技术,体现了序列密码设计上的发展趋势。通过对其三层结构的综合运用,ZUC算法具有很高的理论安全性,能够有效抵抗目前已知的攻击方法,具有较高的安全冗余,并且算法速度快,软/硬件实现性能都很好。

SM4算法,分组长度128、密钥长度128,加密算法和密钥扩展算法都采用32轮非线性迭代结构(非平衡Feistel结构)。Feistel结构特点是加解密算法结构完全一致,硬件实现上加解密电路完全一致,解密过程仅需要吧加密过程产生的轮密钥逆向排序就可以还原明文。

AES算法,密钥长度128/192/256,分组长度128,加密轮数10、12、14.

公钥密码算法又称为非对称密码算法。既可以用于加解密,也可以用于数字签名。我国颁布的商用密码标准算法为SM2、SM9.

公钥密码体制包括:基于大整数因子分解困难性的RSA密码算法、基于离散对数问题困难性的密码算法(包括有限域上的离散对数问题,如ElGamal、椭圆曲线上的离散对数问题,如SM2),以及目前正在研究的后量子密码(如基于格的密码)。

SM2算法,2010年底由国家密码管理局发布,2012年成为行业标准,2016年成为国家标准,其中SM2签名算法于2017年被ISO采纳,成为ISO/IEC 14888-3的一部分。

SM2国标GB/T 32918.1/2/3/4/5-2016(总则、数字签名算法、密钥交换协议、公钥加密算法、参数定义)

SM2的安全性体现在:算法具有单向性算法产生明文和密文具备不可区分性(对于给定的密文无法确定是由给定的两个明文中的哪一个加密而来的);密文具备不可延展性(无法在不解密密文的前提下,通过简单扩展密文来构造合法密文)

与RSA相比,SM2优势:安全性更高(256位的SM2算法强度已经超过RSA-2048,私钥长度2048位的RSA算法,与RSA3072相当),密钥短(SM2使用私钥产股256,而RSA至少需要2048),私钥产生简单(RSA私钥产生需要用到两个随机产生的大素数,除了保证随机数外,还需要用到素数判定算法,产生过程复杂且速度慢;而SM2私钥产生只需要一个一定范围内的256位的随机数即可,因此产生过程简单,存在的风险也相对较小),签名速度快(同等安全强度下,SM2算法在私钥签名时,速度远超RSA算法)

SM9标识密码算法,标识密码(Identity-Based Cryptography,IBC)是在传统的公钥基础设施(Public Key Infrastructure,PKI)基础上发展而来的,除了具有PKI的技术优点外,主要解决了在具体安全应用中PKI需要大量数字证书的问题,使安全应用更加易于部署和使用。IBC使用的是公钥密码体制,加解密使用两套不同密钥,每个人的公钥就是他的身份标识,以你IBC中的密钥管理相对简单。

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

2016年,同SM2数字签名算法一起,SM9数字签名算法也在2017年被采纳,成为国际标准ISO/IEC 14888-3的一部分。

GM/T 0044.1/2/3/4/5-2016(总则、数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法、参数定义)

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

SM9数字签名,签名者持有一个标识和响应的私钥,该私钥由密钥生成中心通过主私钥和签名者的标识结合产生。签名者用自身私钥对数据产生数字签名,验证者用签名者的标识生成其公钥,验证签名的可靠性。

SM9密钥交换,双方各持有一个标识和一个相应的私钥,私钥均由密钥生成中心通过主私钥和用户的标识结合产生。用户A和用户B通过交互的信息传递,用标识和各自的私钥商定一个只有他们知道的秘密密钥,用户双方可以通过可选项实现密钥确认,这个共享的秘密密钥通常用在某个对称密码算法中。

SM9密码算法能够避免弱椭圆曲线的选取问题,并抵抗常见的针对椭圆曲线的攻击方式,安全性远高于同类算法。

密码杂凑算法,特性:抗原像攻击(单向性),抗第二原像攻击(弱抗碰撞性),强抗碰撞性。

密码杂凑算法的结构,常用是Merkle-Damgard结构(M-D结构),海绵结构。MD5、SHA-1、SHA-2和SM3都是M-D结构,SHA-3采用海绵结构。

密码杂凑算法的应用,产生消息鉴别码。单独使用杂凑算法并不能保证数据的完整性,因为在传输信道不安全的情况下,攻击者可以将消息和杂凑值一同篡改。因此,用于完整性保护时,杂凑算法常常与密钥一同使用来生成杂凑值,带密钥的杂凑算法,HMAC。

SM3密码杂凑算法,2012年发布为行业标准GM/T 0003-2012,2016年转化为国家标准GB/T 32905-2016,2018年10月,SM3算法正式成为国际标准。

SM3为M-D结构,生成摘要长度256位,综合性能指标与SHA-256在同等条件下相当。

MD5不安全、摘要长度128位。

SHA-1不安全,消息摘要160位。

SHA-2包含6个算法,SHA-224、SHA-256、SHA-384、SHA-512、SHA512/256、SHA512/224。目前没有发现对SHA2的有效攻击。

SHA-3海绵结构,包含SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256。

密码算法分析,柯壳霍夫斯(Kerckhoffs)原则:评估一个密码算法安全性时,必须假定攻击者不知道密钥,但知道密码算法的所有细节。密码算法的安全性应该是基于密钥的保密

按照攻击者能力,将密码分析划分为:唯密文攻击、已知明文攻击、选择明文攻击、选择密文攻击四种方式。

唯密文攻击:只能获得密文信息。

已知明文攻击:拥有某些密文以及相应的明文。

选择明文攻击:有机会接触加密设备,不能打开机器找到密钥,可以加密大量挑选的明文,试图推断密钥信息或试图对其他密文进行解密。

选择密文攻击,有机会接触加密设备,对选择的密文进行解密操作,试图推断密钥或对其他密文进行解密。

分组密码分析,差分类攻击和线性类攻击成为分析对称密码最有效的分析方法。

公钥密码的分析,底层困难问题分析,上层方案实际安全性分析,格理论和算法等。

杂凑算法分析,差分攻击、模差分攻击、中间相预攻击

侧信道分析:能量消耗、电磁辐射、运行时间等。

1.5 密钥管理

密钥管理,==生成、存储、导入导出、分发、使用、备份和恢复、归档、销毁 #F44336==等环节。

密钥生成,密钥生成的方式包括利用随机数直接生成、通过密钥派生生成函数(KDF)生成。后一种被认为是随机数间接生成,因为派生函数使用的是主密钥、共享秘密信息的生成都与随机数有关,无论采用哪种方式,密钥都应该在密码产品内部产生。

利用用户口令派生密钥也是一种常见的方式,通过实体唯一标识和其他相关信息,从口令中派生出密钥。口令生成密钥的密钥空间依赖于口令的复杂度,但是相比于密钥的预期复杂度,口令仅能提供小得多的熵,极大地降低了穷举搜索攻击的难度。因此这种方式不推荐使用,尤其不能用于网络通信数据的保护,仅在某些特定环境(如加密存储设备)中使用。

利用随机数直接生成是密钥生成的常见方式,密钥的安全性直接取决于随机数发生器的质量,因此需要使用核准的随机数发生器进行密钥生成。

通过KDF生成,通过某些秘密值进行派生,改秘密值与其他相关数据(随机数、计数器等)一同作为KDF的熟人,由KDF生成指定长度的密钥。KDF的设计应保证从派生的密钥无法推断出秘密值本身,同时,也必须保证某个派生的密钥无法推断出其他派生的密钥。KDF一般基于对称密码算法或杂凑算法来构造。

使用KDF生成密钥主要有:在密钥协商过程中从共享秘密派生密钥,SM2/SM9的密钥协商和公钥加密算法中使用的基于SM3的KDF。从主密钥派生密钥,也成为密钥分散,适用于需要生成大量对称密钥的场景,如分发智能IC卡等。

密钥导入导出的方式包括:==加密传输(数字信封)、知识拆分(将密钥拆分若干、利用门限算法拆分) #3F51B5==

密钥归档:密钥在其生命周期结束时,应当进行销毁,但是出于解密历史数据和验证历史签名的需要,有些不在生命周期内的密钥可能需要持续保存,但签名密钥对的私钥不应进行归档

密钥销毁:正常销毁(到期自动销毁)、应急销毁(泄露情况下手动提前终止)

对称密钥分发,点对点结构,基于密钥中心的结构

银行业务的对称密钥管理体系中一般将密钥分为两类:数据密钥(DK)、密钥加密密钥(KEK)

密钥中心:密钥转换中心(KTC)、密钥分发中心(KDC)

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

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

PKI系统组件:
证书认证机构(CA),具有自己的公私钥对,负责为其他人签发证书,用自己的密钥来证实用户的公钥信息,一个PKI系统中可能会有多级CA,包括跟CA和各级子CA。
证书持有者(Certificate Holder),拥有自己的证书和与证书中公钥匹配的私钥,证书持有者的身份信息和对应的公钥会出现在证书中,也成为用户。
依赖方,一般将PKI应用过程中使用其他人的证书来实现安全功能的通信实体称为依赖方。
证书注册机构(RA),作为CA与申请者的交互接口,专门负责各种信息的检查和管理工作。只有在对申请者的各种检查通过之后,RA才会将信息发送给CA,要求CA签发证书。
资料库,实现证书分发,负责存储所有证书,供依赖方下载。
证书撤销列表(CRL),包含了当前所有被撤销证书的标识,验证者根据最新的CRL就能够判断证书是否被撤销。
在线证书状态协议(OCSP),一种实时检查证书撤销状态的协议标准,该协议是“请求—响应”协议,OCSP实时性更高,部署较复杂。
轻量目录访问协议(LDAP),一种开放的应用协议,提供访问控制和维护分布式信息的目录信息。CA通过把新签发的证书与证书撤销链送到LDAP目录服务器,供用户查询和下载。
密钥管理系统(KM),为PKI系统中其他实体提供专门的密钥服务,包括生成、备份、恢复、托管等多种功能。

数字证书包含公钥持有者信息、公开密钥、有效期、扩展信息以及由CA对这些信息进行的数字签名。PKI通过数字证书解决密钥归属问题。

数字证书的数据结构由:tbsCertificate基本证书域(版本号、序列号、签名算法、颁发者、有效日期、主体、主体公钥信息、颁发者唯一标识符、主体唯一标识符、扩展项)、signatureAlgorithm签名算法域(包含于基本证书域???)、signatureValue签名值域组成(将基本证书域杂凑之后,认证机构使用私钥进行签名)。

证书的生命周期:证书的产生、证书的额使用、证书的撤销、证书的更新、证书的归档。

证书产生:
密钥生成:本地生成公私钥对,其中公钥作为申请材料。
提交申请:向CA或者RA提交申请,在线或离线方式,离线需要用户到指定RA申请证书。
审核检查:CA或授权RA对资料进行审核。
证书签发:CA按照数字证书格式组合出证书需要的各项数据内容,然后用自己的私钥对这些数据内容的杂凑值进行签名,并在数据后面附上签名结果。公钥和身份的内容以及CA的签名结果组合在一起构成证书。

证书使用:
证书获取: ①根CA自签名证书,由于无法通过PKI系统的技术手段对其进行验证,所以只能采用带外管理的方式获取;②用户证书,可以从CA的数字证书资料库获取证书,也可以是证书的持有者通过其他途径发给依赖方。
验证使用: ①从签发证书的CA证书中获得公钥,然后从证书中提取出签名算法信息,再对证书除去签名算法和签名结果的部分进行签名验证。==谁验证??? #F44336==②证书有效期的验证主要是检查当前时间是否在证书有效期字段对应的时间段内。③证书撤销状态的查询通常可以采用查询CRL、OCSP的方式,通过证书撤销状态查询,如果发现证书已经被撤销,那么证书就是无效的。
证书存储: 存储在本地,使用时直接发送给其他实体,供其鉴别自己的身份。除此之外,用的的私钥由于其保密性要求,在本地必须以安全的形式存储,可以使用硬件设备保护、对称加密保护的方式保障私钥在本地的存储安全。

证书的撤销: 数字证书在失效日期之前,当用户个人身份信息变化或者用户私钥丢失、泄露或者疑似泄露时,证书用户应向CA提出证书撤销请求,CA会将证书放入公开的CRL或更新OCSP服务内容,证书生命至此终结。

证书的更新; 更新需要签发新证书,更新后的证书与原证书内容一致,甚至可以沿用以前的私钥,不同之处仅在于序列号、生效失效日期。

证书的归档: PKI系统必须支持对曾有数据的归档,以便在需要的时候为PKI系统依赖方找到所需要的旧的数字证书和CRL为原则。没有固定形式。

双证书体系: 在我国双证书体系中,用户同时具有两个私钥,分别称为==签名私钥和加密私钥 #F44336==,签名私钥由用户在本地生成并专有掌握,对应的证书被称为”签名证书“,加密密钥用于解密和密钥交换,有专门的的可信机构(如密钥管理中心)生成并和用户共享掌握,对应的证书被称为”加密证书“,可信机构保存的加密私钥可用于密钥恢复,可信机构需保证所保存的加密私钥的安全性。

1.6 密码协议

密钥交换协议:
Diffie-Hellman 密钥交换协议,建立在有限循环群上,Diffie-Hellman密钥交换协议只能提供建立会话密钥的功能,并==不能抵抗中间人攻击,同时也不能提供相互鉴别的安全保障 #F44336==。
enter description here

MQV密钥交换协议,在Diffie-Hellman经典密钥交换协议的基础上,MQV密钥交换协议在协议交互过程中用到了双方的供药信息,只有拥有私钥的用于才能计算出与对方相同的会话密钥,从而达到隐式鉴别的效果。

SM2密钥交换协议,MQV密钥交换协议的一个变种,同样具备鉴别通信双方身份真实性的功能。

实体鉴别协议
实体鉴别机制用于证实某个实体就是他所声称的实体,待鉴别的实体通过表明他确实知道某个秘密来证明其身份。

GB/T 15843规定了进行实体鉴别的机制,这些机制定义了实体间的信息交换,以及需要与可信第三方的信息交换。已发布6各部分:总则、采用对称加密算法的机制、采用数字签名技术的机制、采用密码校验函数的机制、使用零知识技术的机制、采用人工数据传递的机制。

实体鉴别应用机制包括单向鉴别相互鉴别两种。单向鉴别是指使用该机制的两实体中只有一方被鉴别,相互鉴别是指两个通信实体运用相应鉴别机制对彼此进行鉴别。

单向鉴别按消息传递次数,分为一次传递鉴别、两次鉴别传递鉴别。
相互鉴别根据消息传递次数,分为两次传递鉴别、三次传递鉴别、多次传递鉴别。
如果采用时间值或序号,则单项鉴别只需一次传递,相互鉴别需两次传递。
如果使用随机数的“挑战-响应”方法,单向鉴别需两次传递,相互鉴别则需三次或四次(依赖所采用的机制)

一次传递鉴别:
==-对称加密算法 #F44336==:声称者A使用共享密钥K将特定消息加密发送给B,B使用相同的共享密钥对消息进行解密,并检验信息的正确性。
==-密码校验函数 #F44336==:HMAC等MAC产生机制是常用的密码校验函数,具体构造方法在GB/T 15852系列标准中规定。鉴别时,A使用秘密密钥K和密码校验函数对指定数据计算密码校验值,与A共享该密钥的验证者B重新计算密码校验值并与所收到的值进行比较,从而验证A的身份。
==-采用数字签名技术 #F44336==:声称者A通过其私钥对特定数据进行签名,任何实体都可以使用A的公钥进行验证。

两次传递鉴别
为了防止重放攻击,一次传递鉴别需要双方保持时间同步,或者鉴别方验证序列号没有重复,这在一些情况下是难以实现的。采用“挑战-响应”机制可以有效克服这种困难。
由B发起鉴别过程,将随机数R发给A,A通过对称加密、计算密码校验值或者私钥签名的方法计算Token,并发送给B作为自己的身份证明,B通过对称解密、重新计算密码校验值或者签名验证的方式验证Token的有效性,实现对A的身份鉴别。

IPSec协议和SSL协议是两个较为综合的密码协议,支持采用多种密码技术为通信交互中的数据提供全面安全保护,包括数据保密性、完整性校验、数据源身份鉴别和抗重放攻击等。IPSec工作在网络层,SSL工作在应用层和传输层之间。IPSec一般用于两个子网之间,站到站的通信,SSL一般用于终端到子网之间的通信,端到站的通信。

IPSec是一套协议集合,包括IKE协议、认证头(AH,Authentication Header)、封装安全载荷(ESP,Encapsulating Security Payload)以及用于网络身份鉴别及加密的一些算法等。

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

AH和ESP协议可以工作在传输层模式或者隧道模式下,传输模式一般用于端到端的应用场景,只有IP载荷部分被保护,对IP头不做改动;隧道模式对整个IP数据报文提供加密和认证功能,并在此基础上添加新的IP头,一般用于创建虚拟专用网(VPN)隧道链路。

GM/T 0022-2014

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

ISAKMP是IKE的核心协议,定义了建立、协商、修改和删除SA的过程和报文格式,并定义了密钥交换数据和身份鉴别数据的载荷格式。核心功能就是创建和维护SA。IPSec的两种封装协议(AH、ESP)均使用SA中协定的内容保护通信安全。

SA是单向的,一个SA为单一通信方向上传输的数据提供==一种 #F44336==安全服务。通信双方需要产生自己的SA,若使用多个安全服务保护数据流,例如,同时提供认证和加密服务,那么应该创建多个SA来分别实现不同安全服务对数据的保护,即每个SA对应一个安全服务。

ISAKMP分为两个阶段:==第一阶段是主模式 #2196F3==,通信双方建立一个ISAKMP SA,并实现双方的身份鉴别和密钥交换,得到==工作密钥 #F44336== ,改工作密钥用于保护第二阶段的协商过程,==第二阶段是快速模式 #2196F3==,使用已建立的ISAKMP SA提供保护,实现通信双方IPSec SA协商,确定通信双方IPSec安全策略和==会话密钥 #F44336==

IPSec安全策略定义了哪些服务以何种形式提供给IP数据报文,如数据加密服务以SM4的CBC模式实现。

第一阶段,主模式,交换过程由6个消息组成。

第二阶段,快速模式,交换过程由3个消息组成。

AH协议,提供数据源身份鉴别、完整性和抗重放等安全功能。不过,AH不提供任何保密性服务。AH不得单独用于封装IP数据报文,应和封装安全载荷协议ESP嵌套使用。

ESP协议,增加了对数据报文的加密功能,可以同时使用用于加密的会话密钥及用于验证完整性和数据源身份的会话密钥,来为数据提供全面保护。ESP可以单独使用,并同时选择保密性和数据源身份鉴别服务,当ESP和AH组合使用时,无需ESP提供数据源身份鉴别服务,而由AH提供该项安全服务,由于单独使用ESP封装方式时,不会对数据报文的IP头进行认证,因此这种情况支持网络地址传唤(NAT)穿越。

SSL协议是网络上实现数据安全传输的一种通用协议,采用浏览器/服务器结构是SSL协议的一种典型实现方式。

GM/T 0024-2014《SSL VPN技术规范》

SSL工作在传输层和应用层之间,协议上层有握手协议、密码规格变更协议、报警协议、HTTP等4个协议,下层是记录层协议。

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

握手协议是通信双方准备建立SSL连接通信时,用到的第一个子协议,他是SSL协议中最复杂、涉及密码技术最多的协议。==共有四个阶段 #F44336==:
阶段一:客户端向服务端发送==Client Hello #9C27B0==,服务端回应==Server Hello #9C27B0==,如未回应,则产生一个致命错误并且断开连接。(==协商密码套件、随机数 #F44336==);
阶段二:服务端发送==Server Certificate #9C27B0==(签名证书和加密证书)和服务端密钥交换消息==Server Key Exchange #9C27B0==(用于生成预主密钥)。如果服务端需要验证客户端身份,则向客户端发送证书请求消息==Certificate Request #9C27B0==,之后发送服务端Hello完成消息==Server Hello Done #9C27B0==表示Hello消息阶段已经结束,服务端等待客户端的返回消息。
阶段三:若服务端发送了一个证书请求消息Certificate Request,客户端必须返回一个证书消息==Client Certificate #9C27B0==,然后,客户端发送密钥交换消息==Client Key Exchange #9C27B0==,消息内容取决于双方Hello消息协商出的密钥交换算法,如交换算法为ECC,则客户端应产生46字节随机数与版本号一起构成预主密钥,并采用服务端的加密公钥进行加密并放在Client Key Exchange消息中发送给服务端;如果客户端发送了证书消息Client Certificate,那么也应发送一个带数字签名的消息==Certificate Verify #9C27B0==供服务端验证客户端的身份。
阶段四:客户端发送密码规格变更消息,并立即使用刚协商的算法和密钥,发送加密的握手结束消息,服务端则回应密码规格变更消息,使用刚协商的算法和密钥,发送加密的握手结束消息。至此握手过程结束。

密钥计算:主密钥为48字节对称密钥,==由预主密钥、客户端随机数、服务端随机数、常量字符串,经PRF计算生成 #F44336==。工作密钥的具体密钥长度由选用的密码算法决定,==由主密钥、客户端随机数、服务端随机数、常量字符串经PRF计算生成 #F44336==。工作密钥包括==两个对称密钥 #9C27B0== :==用户加密的工作密钥,用于验证完整性和数据源身份的工作密钥。 #9C27B0==

会话重用:客户端发送Client Hello消息,并带上重要的会话标识,服务端在会话缓存中检查标识,如存在则使用相同的会话状态接收连接,发送一个具有相同会话标识的服务端Hello消息,然后通信双方根据从重用会话中提取的主密钥进行后续操作,以及发送密码规格变更消息和握手结束消息,如不存在,则生成一个新的会话标识进行一个新的完整的握手过程。

记录层协议:当客户端和服务端握手成功后,待传输的应用数据通过记录层协议封装,并得到完整性和机密性保护。
==第一步 #F44336==:==数据分段 #9C27B0==,对数据流分段,每个记录块2^14字节或者更小
==第二步 #F44336== :==数据压缩 #9C27B0==,使用当前会话状态指定的压缩算法,采用无损压缩方法,并且增加长度不超过1024字节,默认压缩算法为空。
==第三步 #F44336==:==数据添加MAC #9C27B0==,使用握手协议的密码套件中协定的密码杂凑算法和用于校验的工作密钥,对每块明文记录计算MAC。
==第四步 #F44336==:==对数据和MAC加密 #9C27B0==,使用握手协议的密码套件中协定的对称密码算法和用于加密的工作密钥,对压缩的数据以及与之相关的MAC进行加密(用于校验的工作密钥和用于加密的工作密钥不相同)
==四五步 #F44336==;==附加SSL记录报头 #9C27B0==,增加由内容类型、主要版本、次要版本和压缩长度组成的首部。

保密性实现:信息保密性保护的目的是避免信息泄露或暴露给未授权的实体。实现保密性保护有三种基本方法:==一是访问控制的方法 #F44336==,防止敌手访问敏感信息;==二是信息隐藏的方法 #F44336==,避免敌手发现敏感信息的存在;==三是信息加密的方法 #F44336==,允许敌手观测到信息的表示,但是无法从表示中得到原始信息的内容或提炼出有用的信息。CBC模式下初始向量一般需要随机产生,CTR模式下的计数器值需要每次不同,对同一个密钥,一个计数器值只能使用一次。

完整性保护:数据完整性保护的目的在于保护信息免受非授权实体的篡改或替代。实现数据完整性保护也有两种基本方法:一是访问控制,限制非授权实体修改被保护的数据;二是损坏——检测方法,这种方法无法避免数据的损坏,但能够确保损坏被检测出来,进行修正或报警,一般通过消息鉴别码(MAC)或数字签名机制实现完整性保护。特殊应用中,在确保杂凑值无法被修改时,也可以单纯采用杂凑算法保护数据的完整性。

真实性保护:实现信息来源真实性的核心是鉴别。重用的鉴别方式包括:基于对称密码、公钥密码等密码技术的鉴别,基于静态口令的鉴别,基于动态口令的鉴别,以及基于生物特征的鉴别。后面三种鉴别方式虽然不是直接基于密码技术进行鉴别的,但在鉴别过程中仍需密码技术提供保护或支撑。
==基于密码技术的鉴别机制 #F44336==:基于声称者知道某一秘密密钥这一事实,实现验证者对声称者身份的鉴别。
在线认证服务器,解决密钥爆炸问题。对称
离线认证服务器,PKI系统
==基于静态口令的鉴别机制 #F44336==,静态口令或者PIN码是最常用的鉴别信息之一。
==基于动态口令的鉴别机制 #F44336==,动态口令的使用主要用于抵抗重放攻击。GM/T 0021
==基于生物特征的鉴别机制 #F44336==,指纹、声音、虹魔、人脸等。

不可否认性实现,分为起源不可否认和传递不可否认,主要通过数字签名来实现。
==起源的不可否认性 #F44336==:使用发起者的数字签名、使用可信第三方数字签名(代发)
==传递的不可否认性 #E91E63==:使用接收者的签名确认(确认收到)、使用可信传递代理、使用两阶段传递(发送前打招呼,发送后确认收到)。

SM2密文长度:明文长度 + 64字节的椭圆曲线点 + 32字节SM3杂凑值,有时会加一个04标定位

2 商用密码应用与安全性评估政策法规

3 商用密码标准与产品应用

4 密码应用安全性评估实施要点

5 商用密码应用安全性评估案例


文章使用小书匠MarkDown编辑器书写,大家可以通过本站小书匠邀请码一文获取邀请码下载链接


秋风木叶
2023-1-19
有您的赞赏,我会更加有动力!