# 商用密码应用与安全性评估知识点总结

# 密码基础知识

1949 年美国数学家、信息论创始人香农发表《保密系统的通信理论》,建立起完善的理论基础。

# 密码应用概述

密码技术要合规、正确、有效的应用

# 密码的概念与作用

# 密码的概念

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

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

密码技术包括:

  • 密码算法:

​ 加密算法:明文变密文

​ 解密算法:密文变明文

​ 数字签名:类似手写签名

​ 杂凑算法:任意长度压缩为固定长摘要

  • 密钥管理:对密钥的产生、分发、存储、更新、归档、撤销、备份、恢复和销毁等密钥全生命周期的管理
  • 密码协议:指两个或两个以上参与者使用密码算法,为达到加密保护或安全认证目的而约定的交互规则。
# 密码的重要性
  • 密码是 “基因”,是网络安全的核心技术和基础支撑
  • 密码是 “信使”,是构建网络信任体系的重要基石
  • 密码是 “卫士”,密码技术与核技术、航天技术并称为国家的三大 “撒手锏” 技术,是国之重器,是重要的战略性资源

合规、正确、有效使用密码,使用自主、安全、可控的密码,既是对国家安全和经济社会发展的有力护航,也是对公民合法权益和个人隐私的有力保障

# 密码功能与密码应用

# 密码的功能

密码不仅可以实现加密保护,还可以实现实体身份和信息来源的安全认证等功能

密码具有的四个功能:

  • 信息的保密性:加密解密
  • 信息来源的真实性:安全认证
  • 数据的完整性:密码杂凑算法
  • 行为的不可否认性:数字签名
# 密码应用技术框架

密码应用技术框架包括密码资源、密码支撑、密码服务、密码应用四个层次,以及提供管理服务的密码管理基础设施

image-20230213110824385

# 密码应用中的安全性问题

实际应用中,有可能弃用、乱用、误用密码技术,导致应用系统的安全性得不到有效保障。

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

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

# 信息安全管理过程

# 信息安全管理标准

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

# PDCA 管理循环

PDCA 管理循环,又称 “戴明环”,即 “计划一实施一检查一改进” 管理循环

image-20230213112006311

# 信息安全风险评估

# 信息安全风险评估定义

信息安全风险评估是确定和认识信息系统安全风险,并对风险进行分析,根据选定的标准对风险进行评价,从而为进一步处置风险提供科学依据的过程

# 信息安全风险评估的目的和用途

风险评估的目的是评价目标实体的安全风险

每个阶段风险评估的具体实施应根据该阶段的特点有所侧重:

  • 在计划阶段,通过风险评估以确定系统的安全目标
  • 在实施阶段,通过风险评估以确定系统的安全目标达成与否
  • 在检查阶段,也就是运行维护阶段,要不断地实施风险评估以识别系统面临的不断变化的风险,从而确定安全措施的有效性,确保安全目标得以实现
# 信息安全风险评估的基本要素

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

image-20230213131148478

开展风险评估时,应考虑基本要素之间的以下关系:

  1. 组织的发展战略依赖业务实现,业务重要性与其在战略中所处的地位相关
  2. 业务的开展需要资产作为支撑,而资产会暴露出脆弱性
  3. 安全措施的实施要考虑需保障的业务以及所应对的威胁
  4. 风险的分析与计算,应综合考虑业务、资产、脆弱性、威胁和安全措施等基本因素

# 密码应用安全性评估的定位

# 密码应用安全性评估在密码应用管理中的定位

密码应用管理过程应遵循信息安全管理科学规律,采用 “计划一实施一检查一改进” 循环

image-20230213131523029

# 密码应用安全性评估与信息安全产品检测的关系

采用质量合格的信息安全产品是信息安全保障措施有效的基础,产品的质量通常由第三方检测机构依据相关标准实施检测来保证

对于没有相应密码应用要求标准的信息系统,应依照 GM/T 0054-2018 对密码应用方案进行评估

密码产品的安全等级与信息系统的安全等级无直接关系,若信息系统所在的运行环境相对安全,则可以使用较低安全等级的密码产品;若信息系统所在的运行环境安全风险较高,就应当使用较高安全等级的密码产品。即:

己经采取了完善物理防护设施的信息系统,就不需要再采用具有非常高等级物理防护能力的密码产品

# 密码应用安全性评估与信息系统安全的关系

密码应用安全性评估对信息系统釆用的密码算法、密码技术、密码产品和密码服务进行全面规范,对密码应用技术和管理的各个层面提出系统性的要求,并在信息系统规划、建设和运行等阶段规范实施,能够有效保障密码应用的整体安全、系统安全和动态安全。

# 密码应用安全性评估与信息安全风险评估的关系

分析信息系统的密码应用安全需求、制定密码应用方案,需要基于信息安全风险评估的结果

# 密码技术发展

密码发展经历了古典密码、机械密码、现代密码三个阶段

# 密码技术创新

信息系统的应用需求和攻击威胁 - 直是推动密码技术进步的两个主要动力

# 古典密码

密码的源头。两个主要体制:代换密码和置换密码

# 代换密码
  1. 单表代换密码

    image-20230213141139500

当 k0=0 时的变换称为乘法密码;当 k1=1 时的变换称为加法密码

恺撒密码:加法密码

当密钥 k=(1,11) 时,进行以下代换

image-20230213135948747

对于英文字母表,恺撒密码的密钥取值范围只有 25(不包括 k0 为 0 的情形),即只能构造出 25 种不同的明密文代换表。因此很容易被穷举破译。

  1. 多表代换密码

维吉尼亚密码:以位移代换为基础的周期代换密码

当密钥 k=cipher 时,进行以下代换

image-20230213141945304

# 置换密码

栅栏密码:明文按列写入,密文按行输出。加密过程可以使用一个置换也可以使用多个置换。

# 安全性

用唯密文攻击法分析单表和多表代换密码是可行的,所以以上古典密码都是不安全的

# 机械密码

密码学的两个分支:密码编码学与密码分析学

恩尼格码密码机机由德国人亚瑟・谢尔比乌斯和理查德・里特发明,由多组转子组成复杂的多表代换密码系统。英国破译,破译核心人物计算机之父艾伦・图灵

# 现代密码

“信息论之父” 香农关于保密通信理论的发表和美国数据加密标准 DES 的公布,以及公钥密码思想的提出,标志着现代密码时期的开启和密码技术的蓬勃发展

密码学家们设计出实际可用的序列密码,其主要设计思想:用短的种子密钥生成周期很长的随机密钥序列

20 世纪 70 年代初,美国数据加密标准 DES 算法

1997 年 1 月,AES 算法

1977 年,RSA 算法

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

# 我国商用密码发展历程

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

2006 年 4 月,公布了无线局域网产品适用的 SM4 算法,2012 年为密码行业标准,2016 年发表为国家标准

2011 年,我国自主设计的序列密码算法 ZUC,成为了 4G 移动通讯密码算法国际标准

2010 年,国家密码管理局公布了密码杂凑算法 SM3

2010 年,公布椭圆曲线公钥密码算法 SM2,2012 年发布为密码行业标准,2016 年发布为国家标准

2016 年,发布了标识密码算法 SM9,2017 年 11 月成为 ISO/IEC 国际标准,2018 年 11 月以正文发布

# 密码技术发展趋势

# 抗量子攻击
  1. 基于格的密码
  2. 基于多变量的密码
  3. 基于编码的密码
  4. 基于杂凑函数的密码
# 量子密钥分发
# 抵抗密钥攻击
  1. 密钥泄露容忍
  2. 白盒密码
# 密文计算
# 极限性能
  1. 轻量级对称密码算法设计
  2. 轻量级公钥密码算法设计

# 密码算法

常见的密码算法包括对称密码算法、公钥密码算法和密码杂凑算法三个类别

image-20230213160246214

# 对称密码算法

加密解密基本流程:只有掌握了同一个密钥和对应解 密算法的用户才可以将密文逆变换为有意义的明文

image-20230213164805248

针对不同的数据类型和应用环境,对称密码有两种主要形式:序列密码(流密码)、分组密码(块密码)。

我国发布的序列密码和分组密码分别是 ZUC 和 SM4

国外序列密码:SNOW、RC4

国外分组密码:DES、TDEA (3DES)、AES 等

# 序列密码和分组密码
  1. 序列密码和分组密码的区别

    ​ 都属于对称密码,区别在于:

    • 序列密码是将密钥和初始向量作为输入,通过密钥流生成算法输出密钥流(也称扩展密钥序列),然后将明文序列和密钥流进行异或,得到密文序列。

    • 分组密钥首先对明文消息根据分组大小进行分组,再将明文分组、密钥和初始向量一起作为输入,通过分组加密算法直接输出密文分组。

    image-20230213165313239

    ​ 序列密码的特点在于密钥流可以在明文序列到来前生成。执行速度很快,计算资源占用较少,常用功耗或计算能力受限的系统中(嵌入式、移动终端)或实时性要求高的场景(通信)。

  2. 初始向量

    ​ 每次加密初始向量都必须重新生成。

    ​ 初始向量在加密完成后可随着密文一起通过非安全信道传输即使攻击者截获了初始向量也不会对保密性构成威胁。

# 分组密码的工作模式

我国于 2008 年发布了规定分组密码算法工作模式的国家标准 GB/T 17964-2008《信息安全技术分组密码算法的工作模式》。

分组密码根据分组数据块链接的组合模式不同,可以分为七种工作模式:

  • 电码本模式(ECB)
  • 密文分组链接模式(CBC)
  • 密文反馈模式(CFB)
  • 输出反馈模式(OFB)
  • 计数器模式(CTR)
  • 分组链接模式(BC)
  • 带非线性函数的输出反馈模式(OFBNLF)
# ECB 模式

ECB 模式:最直接的消息加密方法

image-20230213170621651

具有以下性质:

  1. 对某一个分组的加密或解密可独立于其他分组进行
  2. 对密文分组的重排将导致明文分组的重排
  3. 不能隐蔽数据模式,即相同的明文分组会产生相同的密文分组
  4. 不能抵抗对分组的重放 嵌入和删除等攻击

不推荐在应用中使用 ECB 模式

# CBC 模式

明文分组在加密之前,先于反馈至输入端的前一组密文分组按位异或后,再送至加密模块进行加密。

image-20230213171042813

具有以下性质:

  1. 链接操作使得密文分组依赖于当前的和以前的明文分组,因此对密文分组的重新编排不会导致对相应明文分组的重新编排。
  2. 加密过程使用 IV 进行了随机化 每次加密 IV 都必须重新生成 并且要保证 IV 的随机性 使用不同的 IV 可以避免 ECB 模式下每次对相同的明文使用相同的密钥加密生成相同的密文的弊端。
  3. 加密过程是串行的,无法并行化;在解密过程中,通过两个相邻的密文分组执行解密操作可以获得明文分组,因此解密过程可以并行化。

CBC 模式重要用途:生成消息鉴别码(MAC),使用最后一个分组的输出结果作为 MAC。MAC 可以用于检验消息的完整性、验证消息源的真实性等。

# CTR 模式

CTR 模式通过将逐次累加的计数器值进行加密来生成密钥流。

该模式下的消息长度可以不是分组长度的整数倍,即在加密前不需要进行填充操作。为保证每次每个分组的密钥流都是不同的,每次加密用到的计数器值都互不相同,即用同一个密钥加密不同消息,要保证一个计数器只能用一次。

image-20230217091203931

具有如下性质:

  1. 支持加密和解密并行计算,可事先生成密钥流,进行加密和解密准备。
  2. 只用到了分组密码算法的分组加密操作。
  3. 错误密文中的对应比特只会影响解密后明文中的对应比特,即错误不会传播。
# ZUC 序列密码算法

祖冲之密码算法是:

  1. 我国发布的商用密码算法中的序列密码算法
  2. 可用于数据保密性保护、完整性保护等
  3. ZUC 算法密钥长度为 128 比特
  4. 由 128 比特种子密钥和 128 比特初始向量共同作用产生 32 比特位宽的密钥流。
  5. 算法标准包括三个部分,对应国家和密码行业标准分别为
    1. GB/T 33133.1-2016《信息安全技术 祖冲之序列密码算法 第 1 部分:算法描述》
    2. GM/T 0001.2-2012《祖冲之序列密码算法 第 2 部分:基于祖冲之算法的机密性算法》
    3. GM/T 0001.3-2012《祖冲之序列密码算法 第 3 部分:基于祖冲之算法的完整性算法》
# ZUC 算法的结构

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

image-20230217104724689

# ZUC 算法的使用

在生成密钥流时,ZUC 算法采用 128 比特的初始密钥和 128 比特的 IV 作为输入参数,共同决定 LFSR 里寄存器的初始状态。

随着电路时钟的变化,LFSR 的状态被比特重组之后输入非线性函数 F ,每一拍时钟输出一个 32 比特的密钥流 Z

随后,密钥流与明文按位异或生成密文。

# 基于 ZUC 的两种算法
  1. 基于 ZUC 的机密性算法 128-EEA3:主要用于 4G 移动通信中移动用户设备和无线网络控制设备之间的无线链路上通信信令和数据的加密解密。
  2. 基于 ZUC 的完整性算法 128-EIA3:主要用于 4G 移动通信中移动用户设备和无线网络控制设备之间的无线链路上通信信令和数据的完整性检验,并对信令源进行鉴别(技术手段:利用完整性算法 128-EIA3 产生 MAC,通过对 MAC 进行验证实现完整性校验)。
# ZUC 算法的安全性

在设计中引入了素数域运算、比特重组、最优扩散的线性变换等先进理念和技术,体现了序列密码设计上的发展趋势。

通过对其三层结构的综合运用,ZUC 算法具有很高的理论安全性,能够有效抵抗目前已知的攻击方法,具有较高的安全冗余,并且算法速度快,软 / 硬件实现性能都比较好

# SM4 分组密码算法

SM4 算法是:

  1. 我国发布的商用密码算法中的分组密码算法
  2. 配合 WAPI 无线局域网标准的推广应用,于 2006 年公开发表
  3. 2012 年 3 月发布为密码行业标准
  4. 2016 年 8 月转为国家标准 GB/T 32907-2016《信息安全技术 SM4 分组密码算法》
# SM4 算法描述

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

加密算法与密钥扩展算法都采用 32 轮非线性迭代结构(非平衡 Feistel 结构)

迭代加密算法,明文分组经过迭代加密函数变换后的输出又成为下一轮迭代加密函数的输入,如此迭代 32 轮,最终得到密文分组。每一轮迭代的函数是相同的,不同的是输入的轮密钥

image-20230217132324859

image-20230217112650301

# SM4 算法的性能和安全性

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

  1. 设计上实现了资源重用,密钥扩展过程和加密过程类似
  2. 加密过程和解密过程相同,只是轮密钥使用顺序正好相反,不仅适用于软件编程实现,更适合硬件芯片实现
  3. 轮变换使用的模块包括异或运算、8 比特输入 8 比特输出的 S 盒,还有一个 32 比特输入的线性置换,非常适合 32 位处理器的实现
  4. 可以抵抗差分分析、线性分析、代数攻击等密码分析方法
  5. 密钥长度为 128 比特,其安全性与 AES-128 是相当的;算法实现比 AES 算法简单
# 国外对称密码算法 AES 介绍

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

AES 算法的分组长度是 128 比特,密钥长度支持 128 比特、192 比特或 256 比特。支持不同密钥长度的 AES 算法分别用 AES-128、AES-192、AES-256 表示,密钥长度不同,加密的轮数也不同

image-20230217133557476

AES-128、AES-192、AES-256 的加解密思路基本一样,只是密钥扩展算法的过程略有不同,加密和解密的轮数会适当增加,但加解密的操作是一样的

# 公钥密码算法

又称非对称密码算法,既可用于加密和解密,也可用于数字签名,打破了对称密码算法加密和解密必须使用相同密钥的限制,解决了对称密码算法中存在的密钥管理难题。

公钥密码算法包括公钥加密和私钥签名(数字签名)两种主要用途。

SM2、SM9 算法是我国颁布的商用密码标准算法中的公钥密码算法,基于 SM2 算法的数字签名技术已在我国电子认证领域广泛应用。

# 公钥密码模型

加密和解密使用不同的密钥。其中加密的密钥可以公开,称为公钥;解密的密钥需要保密,称为私钥。公钥私钥密切关联,私钥可推导出公钥,但公钥推导出私钥在计算上不可行。

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

# 公钥加密算法

由于公钥密码运算操作计算复杂度较高,公钥加密算法的加密速度一般比对称加密算法的加密速度慢很多,因此公钥加密算法主要用于短数据的加密,如建立共享密钥。

在执行公钥加密操作前,需要先查找接收者的公钥,然后用该公钥加密要保护的消息,当接收方接收到消息后,用自己的私钥解密出原消息

# 数字签名算法

数字签名算法主要用于确认数据的完整性、签名者身份的真实性和签名行为的不可否认性等。

数字签名使用私钥对消息进行签名,使用公钥对签名进行验证。

为提升效率和安全性,数字签名算法中一般都需要先使用密码杂凑算法对原始消息进行杂凑运算,再对得到的消息摘要进行数字签名。

# SM2 椭圆曲线公钥密码算法

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

椭圆曲线密码体制比原有的密码体制(如 RSA)更具优越性,因为基于椭圆曲线上离散对数问题的困难性要高于一般乘法群上的离散对数问题的困难性,且椭圆曲线所基于的域的运算位数要远小于传统离散对数的运算位数。

SM2 算法于 2010 年年底由国家密码管理局发布,2012 年成为密码行业标准,2016 年转化为国家标准

SM2 数字签名算法于 2017 年被 ISO 釆纳,成为国际标准 ISO/IEC 14888-3 的一部分。

SM2 算法的国家标准包括以下五个部分:

  • GB/T 32918.1-2016 《信息安全技术 SM2 椭圆曲线公钥密码算法 第 1 部分:总则 》
  • GB/T 32918.2-2016 《信息安全技术 SM2 椭圆曲线公钥密码算法 第 2 部分:数字签名算法》
  • GB/T 32918.3-2016 《信息安全技术 SM2 椭圆曲线公钥密码算法 第 3 部分:密钥交换协议》
  • GB/T 32918.4-2016 《信息安全技术 SM2 椭圆曲线公钥密码算法 第 4 部分:公钥加密算法》
  • GB/T 32918.5-2017 《信息安全技术 SM2 椭圆曲线公钥密码算法 第 5 部分:参数定义》
# 椭圆曲线密码基础知识

密码学家 Neal Koblitz 和 Victor Miller 在 1985 年分别提出了椭圆曲线密码学(ECC)的思想。

椭圆曲线上的两个基本运算是点加和倍点,它们用来构造点乘(标量乘)算法。点乘运算是椭圆曲线机制最核心,也是最耗时的运算。

# SM2 算法介绍

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

  1. SM2 数字签名算法

  2. SM2 密钥交换协议

    密钥交换,又称密钥协商,是两个用户通过交互的消息传递,用各自的私钥和对方的公钥来商定一个只有他们知道的秘密密钥。这个共享的秘密密钥通常用在对称密码算法中。

  3. SM2 公钥加密算法

    GB/T 32918.3-2016 规定了 SM2 公钥加密算法,并给出了消息加密和解密示例以及相应的流程。

    image-20230217154137496

# SM2 算法的安全性和效率
  1. 安全性主要体现在三方面:

    1. 算法具备单向性:未授权的第三方在未得到私钥的情况下,从密文计算出明文在计算上是不可行的。
    2. 算法产生的明文和密文具备不可区分性:恶意第三方对于给定的密文无法区分出其是由给定的两个明文中的哪一个加密而来。
    3. 密文具备不可延展性:第三方无法在不解密密文的前提下,通过简单扩展密文来构造出新的合法密文。
  2. 与 RSA 算法相比,SM2 算法具有以下优势:

    1. 安全性高:256 比特的 SM2 算法密码强度己超过 RSA-2048 (私钥长度为 2048 比特的 RSA 算法),与 RSA~3072 相当。

    2. 密钥短:SM2 算法使用的私钥长度为 256 比特,而 RSA 算法通常至少需要 2048 比特,甚至更长(如 3072 比特)。

    3. 私钥产生简单:RSA 私钥产生时需要用到两个随机产生的大素数 ,除了需要保证随机性外,还需要用到素数判定算法,产生过程复杂且速度较慢;而 SM2 私钥的产生只需要生成一个一定范围内的 256 比特的随机数即可,因此产生过程简单,存在的安全风险也相对较小。

    4. 同等安全强度下签名速度快:SM2 算法在用私钥签名时,速度远超 RSA 算法。

# SM2 算法的使用

GM/T 0009-2012 定义了 SM2 算法的密钥数据格式、加密数据格式、签名数据、格式和密钥对保护数据格式,并对生成密钥、加密、解密、数字签名、签名验证、密钥协商等计算过程进行了规范。

GM/T 0010-2012 定义了使用 SM2 密码算法的加密签名消息语法。

# SM9 标识密码算法

标识密码 (IBC) 是在传统的公钥基础设施基础 (PKI) 上发展而来的

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

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

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

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