公司密评培训 - 2023/09/02
本文是公司质量部杨总组织的密评培训第一课《密码基础知识》的讲义,著作权归属于杨总,博主仅为适配 post 修改格式。
《中华人民共和国密码法》
2019 年 10 月 26 日通过,2020 年1 月 1 日施行。
密码工作坚持总体国家安全观,坚持中国共产党对密码工作的领导,中央密码工作领导机构对全国密码工作实行统一领导,国家密码管理部门负责管理全国的密码工作。密码管理体制自上而下分为国家、省、市、县四级。
国家对密码实行分类管理。 密码分为核心密码、普通密码和商用密码。核心密码、普通密码属于国家秘密。
国务院标准化行政主管部门和国家密码管理部门依据各自职责,组织制定商用密码国家标准、行业标准。社会团体、企业制定高于国家标准、行业标准相关技术要求的商用密码团体标准、企业标准。商用密码从业单位采用商用密码推荐性国家标准、行业标准,自愿接受商用密码检测认证,提升市场竞争力。
国务院商务主管部门、国家密码管理部门依法对涉及国家安全、社会公共利益且具有加密保护功能的商用密码实施进口许可,对涉及国家安全、社会公共利益或者中国承担国际义务的商用密码实施出口管制。商用密码进口许可清单和出口管制清单由国务院商务主管部门会同国家密码管理部门和海关总署制定并公布。
发生与核心密码、普通密码相关的违法行为的,一般由保密行政管理部门、密码管理部门处置。
发生商用密码检测、认证(包括检测认证行为、销售产品不合规行为)相关违法行为的,由市场监督管理部门会同密码管理部门处置。涉及进出口相关违法行为的,由国务院商务主管部门或者海关处置。其余违法行为一般由密码管理部门处置。
管理办法、机构能力评审、进出口清单等文件
- 《商用密码应用安全性测评机构管理办法》(试行)
- 《商用密码应用安全性测评机构能力评审实施细则》(试行)
- 《商用密码管理条例》
- 《关于发布商用密码进口许可清单、出口管制清单和相关管理措施的公告》
关注的一些数字
- 注册资金 500 万元以上
- 成立年限 2 年以上,从事信息系统安全相关工作 1 年以上
- 测评场地不少于 200 平方米
- 具备相关设施设备
- 技术负责人与质量负责人各 1 人(从事相关工作 5 年以上),本科且通过商密测评人员考核的人数不少于 10 人
- 具备管理制度,不从事影响测评结果公正性的活动等
- 通过初审后 60 个工作日内参加培训、考核和能力评审
- 发生相关事项变更的,需在 10 个工作日内向国家密码管理局报告:机构名称、地址、主要负责人变更;法人、股权结构变更;其他重大事项。
- 测评机构应当在年底编制商用密码应用安全性评估工作报告,并报送国家密码管理局
- 成立由5-7名专家组成的评审专家组进行评审
- 《商用密码管理条例》颁布时间是 1999 年 10 月 7 日,修订版征求意见时间为 2020 年 8 月 20 日,于 2023 年 7 月 1 日正式施行
- 申请《电子认证服务使用密码许可证》的材料应当自受理申请之日起 5 个工作日内将全部申请材料报送国家密码管理局。电子认证服务提供者变更名称的,应当自变更之日起 30 日内,到所在地的省、自治区、直辖市密码管理机构办理《电子认证服务使用密码许可证》更换手续。
- 我国实行出口管制的加密 VPN 设备以 IPSec/SSL VPN 为主要功能的设备,其特征之一是加密通信速率 10Gbps 以上;密钥管理产品特征之一是支持管理对象数量 10000 以上。含有 128 位以上密钥长度基于椭圆曲线的非对称密码算法的传真机实行进口许可。
- 进出口许可文件由商务部会同国家密码管理局审查,由商务部颁发两用物项和技术进出口许可证。
- 截至 2023 年 6 月 1 日,国家密码管理部门已经发布2期商用密码应用安全性评估试点机构目录。一共有 73 家(试点机构目录 48 家,另外 25 家可面向本省本行业开展密评业务的机构)。
密码基础
基础概念
密码:采用特定变换的方法对信息进行加密保护、安全认证的技术、产品和服务
密码技术包括:密码编码、实现、协议、安全防护、分析破译、以及密钥产生、分发、传递、使用、销毁等技术
典型的密码技术包括:密码算法、密钥管理、密码协议
- 密码算法:实现密码对信息进行“明”“密”变换、产生认证“标签”的一种特定规则
- 加密算法
- 解密算法
- 数字签名算法
- 杂凑算法
- 密钥管理:根据安全策略,对密钥的产生、分发、存储、更新、归档、撤销、备份、恢复和销毁等密钥全生命周期的管理
- 密码协议:两个或两个以上参与者使用密码算法,为达到加密保护或安全认证目的而约定的交互规则
密码的重要作用:保护网络与信息安全。是保障网络与信息安全最有效、最可靠、最经济的手段。
密码是:“基因”、“信使”、“卫士”
信息安全的主要目的:保障信息的保密性、完整性和可用性、真实性、不可否认性。其中密码可以实现:信息的保密性、信息来源的真实性、数据的完整性、行为的不可否认性。
- 信息的保密性:保证信息不被泄露给非授权的个人、进程等实体的性质,采用密码技术中的加密和解密技术可实现
- 信息来源的真实性:保证信息来源可靠、没有被伪造和篡改的性质,实体身份的真实性:信息收发双方身份与声称的相一致。采用密码技术中的安全认证技术可实现
- 数据的完整性:数据没有受到非授权的篡改或破坏的性质,采用密码杂凑算法可实现
- 行为的不可否认性:也称抗抵赖性,指一个已经发生的操作行为无法否认的性质,采用数字签名算法可实现
- 数据完整性与信息来源的真实性的区别在于,数据完整性并不要求数据来源的可靠性,但数据来源真实性一般要依赖于数据完整性
密码应用技术框架层次:密码资源、密码支撑、密码服务、密码应用

密码技术需要合规、正确、有效的应用,防范密码技术被弃用、乱用、误用。
商用密码应用安全性评估(简称“密评”)的定义:在采用商用密码技术、产品和服务集成建设的网络与信息系统中,对其密码应用的合规性、正确性、有效性等进行评估
密码体制五元组
- M 消息空间
- C 密文空间
- K 密钥空间
- E 加密算法
- D 解密算法
攻击方法
- 穷举攻击法
- 统计分析法
- 数学分析法
- 唯密文攻击:只获得密文信息(最常见)
- 已知明文攻击:拥有某些密文以及相应的明文
- 选择明文攻击:有接触加密机器的机会,不能打开机器找到密钥,但可以加密大量经过精心挑选的明文,然后利用所得的密文推断密钥的信息或试图对其他密文进行加密
- 差分分析
- 线性分析
- 选择密文攻击:有接触解密机器的机会,对选择的密文进行解密操作,然后试着用所得结果推断密钥或试图对其他密文进行解密
侧信道分析:基于物理实现的分析方法,通过密码系统泄露的信息如能量消耗、电磁辐射、运行时间等分析获得敏感数据。
针对对称类密码的分析手段:差分类攻击和线性类攻击
针对公钥密码的分析手段:对底层困难问题的分析和上层方案实际安全性分析
针对杂凑函数的分析:差分攻击、模差分攻击、中间相遇攻击
密码系统的安全性
- 无条件安全性:无限的计算资源也无法破译
- 计算安全性:使用最好的攻击方法攻破密码体制所需要的计算远远超出攻击者的计算资源水平
- 可证明安全性:将安全性归结为某个经过深入研究的数学难题,数学难题被证明求解困难
密码体制的安全性仅应依赖于对密钥的保密,而不依赖对算法的保密
发展趋势
古典密码
- 代换:采用代换表,将明文转换为密文。形态改变,但位置不变。
- 单表代换:凯撒密码(caesar)、标准字头密码
- 多表代换:维几尼亚(Vigenere)密码、维福特(Beaufort)密码、Vernam 密码
- 置换:不改变明文字母,只改变位置。
机械密码:enigma 密码机
现代密码
- 对称密码
- 分组密码
- SM1、SM4、SM7
- AES、DES、3DES、IDEA、RC2、RC6
- 流密码(序列密码)
- ZUC
- RC4、A5、SEAL
- 分组密码
- 公钥密码
- RSA(大整数因子分解)
- ElGamal(离散对数)
- ECC(椭圆曲线)
- SM2
- IBC(基于标识)
- SM9
- 杂凑密码
- MD4、MD5(不安全)128 比特
- SHA-1(不安全)160 比特
- SHA-2(根据后缀生成对应的比特散列值。如 SHA-256)
- RIPEMD(不安全)160 比特
- SHA-3
- SM3
密钥管理
密钥生命周期
密钥生成
- 利用随机数直接生成
- 通过 KDF 生成
- 在密钥协商过程中从共享秘密派生密钥,主要发生在密钥协商过程中。
- 从主密钥派生密钥,也叫密钥分散,一般用于大量对称密钥生成的场景。
密钥存储
- 存储在密码产品中
- 加密保存在通用存储设备中
不是所有密钥都需要存储,一些临时密钥或一次一密的密钥在使用完就要立即销毁。
密钥导入导出
通过加密传输和知识拆分的方式安全的进行密钥导入导出
密钥分发
- 人工分发:适用于少量密钥的分发,一般用于根密钥,需要人工参与,线下完成
- 密钥由授权的分发者分发,并由授权的接收者接收
- 进行人工分发的实体是可信的
- 有足够的机制(加密、紧急销毁等)保证密钥的安全性,提供对截取、假冒、篡改、重放等攻击手段的对抗能力
- 自动分发:借助密码技术在线自动完成
密钥使用
不同类型的密钥不能混用。
- 将一个密钥用于不同的用途可能会降低密钥的安全性
- 不同用途的密钥对密钥的要求互不相同
- 限制密钥的用途可以降低密钥泄露时可能造成的损失
密钥备份和恢复
密钥归档
签名密钥对的私钥不应进行归档。
密钥归档与密钥备份的区别在于,密钥归档是在密钥的生命周期之外(销毁之后)对密钥进行保存,现有系统中该密钥已经不再使用,而密钥备份则针对仍在生命周期内的密钥。
密钥销毁
正常销毁、应急销毁
对称密钥管理
点到点结构
通信双方共享一个通过人工分发的 KEK(密钥加密密钥),如果有 n 个成员组成的团体希望互相通信,那么需要分发的 KEK 数为 $n(n-1)/2$。
基于密钥中心结构
每个通信方和密钥中心共享一个人工分发的 KEK,通信方之间无共享的 KEK。对于一个由n个成员组成的团体,人工分发的 KEK 数量为 n。
抵抗重放攻击的方法:
- 密钥计数器
- 密钥调整
- 时间戳
公钥基础设施(PKI)
PKI 主要解决公钥属于谁的问题
PKI 体系组件
- 证书认证机构(CA):负责为其他人签发证书,用自己的密钥来验证用户的公钥信息
- 证书持有者:拥有自己的证书和与证书中公钥匹配的私钥,持有者信息和对应的公钥会出现在证书中
- 依赖方:一般将 PKI 应用过程中使用其他人的证书来实现安全功能(保密性、身份鉴别等)的通信实体称为依赖方
- 证书注册机构(RA):作为 CA 与申请者的交互接口,专门负责各种信息的检查和管理工作,证书申请、审核、用户证书下载、安全审计、安全管理、多级审核。
- 资料库:用于实现证书分发,负责存储所有的证书,供依赖方下载
- 证书撤销列表(CRL):包含了所有被撤销证书的标识,验证者根据最新的 CRL 就能判断证书是否被撤销
- 在线证书状态协议(OCSP):实时检查证书撤销状态的协议标准。是一种“请求-响应”协议,OCSP 与 CRL 相比,OCSP 的实时性更高,部署相对复杂
- 轻量目录访问协议(LDAP):提供访问控制和维护分布式信息的目录信息,CA 通过把新签发的证书和证书撤销链发送到 LDAP 目录服务器,供用户查询、下载
- 密钥管理系统(KM):为 PKI 系统中其他实体提供专门的密钥服务,包括生成、备份、恢复、托管等多种功能
数字证书结构
我国数字证书结构和格式遵循特定编码规则(DER)对证书项中的各项信息进行编码,组成特定的证书数据结构。ASN.1 DER 编码是关于每个元素的标记、长度和值的编码系统。
证书数据结构由 tbsCertificate、signatureAlgorithm 和 signatureValue 三个域构成。
- tbsCertificate(基本证书域) 域包含了主体名称和颁发者名称、主体的公钥、证书的有效期及其他 相关信息。
- signatureAlgorithm(签名算法域) 域包含了证书签发机构签发该证书所使用密码算法的标识符。该域的算法标识符必须与 tbsCertificate 中的 signature 标识的签名算法项相同。
- signatureValue(签名值域) 域包含了对 tbsCertificate 域进行数字签名的结果。采用 ASN.1 DER 编码的 tbsCertificate 作为数字签名的输入,而签名的结果则按照 ASN.1 编码成 BITSTRING 类型并保存在证书签名值域内。

数字证书生命周期
- 产生
- 密钥生成
- 提交申请
- 在线
- 离线
- 审核检查
- 证书签发
- 证书签署
- 证书发布
- 使用
- 证书获取
- 根CA自签名证书
- 用户证书
- 验证使用
- 验证证书有效性
- 验证证书有效期
- 证书撤销状态:CRL、OCSP
- 证书存储
- 证书获取
- 撤销
- 更新
- 归档
双证书体系
用户同时具有两个私钥,分别称为签名私钥和加密私钥。签名私钥由用户在本地生成并专有掌握,对应的证书被称为“签名证书”;加密私钥用于解密和密钥交换,由专门的可信机构(如密钥管理中心)生成并和用户共同掌握,对应的证书被称为“加密证书”。可信机构保存的加密私钥可用于密钥恢复,可信机构需保证所保存的加密私钥的安全性。
密码协议
密钥交换协议
Diffie-Hellman 密钥交换协议:只能提供会话密钥的功能,不能抵抗中间人攻击,不能提供相互鉴别的安全保障
MQV 密钥交换协议:在经典 Diffie-Hellman 密钥交换协议的基础上,MQV 密钥交换协议在协议交互过程中用到了双方公钥信息,只有拥有相应私钥的用户才能计算出对方相同的会话密钥,从而达到隐式交换的效果。选择椭圆曲线加法作为基本的计算群。
SM2 密钥交换协议:MQV 的变种,同样具有鉴别通信双方身份真实性的功能。
实体鉴别协议
应用机制
- 单向鉴别
- 一次传递鉴别
- 对称加密算法
- 密码校验函数
- 数字签名技术
- 两次传递鉴别
- 使用随机数的“挑战-响应”方法
- 一次传递鉴别
- 双向鉴别
- 两次传递鉴别
- 采用时间值或序号
- 三次传递鉴别或多次传递鉴别
- 使用随机数的“挑战-响应”方法
- 两次传递鉴别
综合密码协议
采用 IPSec 和 SSL 密码协议为公用网络中通信数据提供的安全功能:加密、完整性校验、数据源身份鉴别、抗重放攻击。
IPSec(Internet Protocol Security,互联网安全协议)
IPSec 工作在网络层,对应用层协议完全透明。IPSec 协议实际上是一套协议集合,一般用于站到站模式和端到站模式,端到端模式较为少见。其中,端到站、站到站之间的 IPSec VPN 通信需要采用隧道模式,对整个 IP 数据报文提供加密和认证功能,并在此基础上添加新的 IP 头,隧道模式是设备的必备功能。而端到端之间的 IPSec VPN 通信可以采用隧道模式或者传输模式,传输模式只有 IP 载荷部分被保护,对 IP 头不做改动,传输模式是设备的可选功能。它为网络层上的通信数据提供一整套的安全体系结构,包括:IKE 协议、认证头(AH)协议、封装安全载荷(ESP)协议和用于网络身份鉴别及加密的一些算法等。
从工作流程上,IPSec 协议可以分为两个环节:
- IKE 是第一个环节:完成通信双方的身份鉴别、确定通信时使用的 IPSec 安全策略
- 第二个环节:使用数据报文封装协议和 IKE 中协定的 IPSec 安全策略和密钥,实现对通信数据的安全传输。
名词
SA:安全联盟(security association)两个通信实体经协商建立起来的一种协定,描述了实体如何利用安全服务进行安全的通信。包括了执行各种网络安全服务所需要的所有信息,例如 IP 层服务、传输层和应用层服务或者协商通信的自我保护。SA 是单向的,一个SA为单一通信方向上传输的数据提供一种安全服务,通信双方需要产生属于自己的 SA。
ISAKMP:互联网安全联盟和密钥管理协议(Internet security association and key management protocol)定义了建立、协商、修改和删除安全联盟的过程和报文格式,并定义了交换密钥产生和鉴别数据的载荷格式。
payload:载荷,ISAKMP 通信双方交换消息的数据格式,是构造 ISAKMP 消息的基本单位。
AH:鉴别头(authentication header)属于 IPSec 的一种封装协议,用于提供 IP 数据包的数据完整性、数据源鉴别以及抗重放攻击的功能,但不提供数据机密性的功能。因此,AH 不得单独用于封装 IP 数据报文,应和ESP嵌套使用。
ESP:封装安全载荷(encapsulating security payload)属于 IPSec 的一种封装协议,用于提供 IP 数据包的机密性、数据完整性以及对数据源鉴别以及抗重放攻击的功能。ESP 可单独使用,并同时选择保密性和数据源身份鉴别服务;当 ESP 和 AH 结合使用时,无须 ESP 提供数据源身份鉴别服务,而由 AH 提供该项安全服务。由于单独使用 ESP 封装方式时,不会对数据报文的 IP 头进行认证,因此这种情况支持网络地址转换(NAT)穿越。
IKE:互联网密钥交换(Internet key exchange)
IKE协议
IKE 协议用于:鉴定通信双方身份、创建安全联盟(SA)、协商加密算法和生成共享会话密钥等,其中 ISAKMP 是 IKE 的核心协议。
ISAKMP 分为两个阶段:
- 第一阶段:主模式,通信双方建立一个 ISAKMP SA,并实现双方的身份鉴别和密钥交换,得到工作密钥,该工作密钥用于保护第二阶段的协商过程。
- 第二阶段:快速模式,使用已建立的 ISAKMP SA 提供保护,实现通信双方 IPSec 的协商,确定通信双方 IPSec 安全策略和会话密钥。会话密钥有 2 个,均为对称密钥,分别用于通信数据加密以及完整性校验和数据源身份鉴别。快速模式中的数据由主模式协定的 ISAKMP SA 提供保护。
AH协议
AH 在传输模式和隧道模式中的放置位置

ESP协议
ESP 在传输模式和隧道模式中的放置位置

SSL
SSL 由多个协议组成的两层协议集合,工作于应用层和传输层之间。SSL VPN 的工作模式有两种,客户端-服务端模式(端到站)是产品必须支持的,网关-网关模式(站到站)是可选支持。
SSL 协议分为上层协议和下层协议:
- 上层协议:握手协议、密码规格变更协议、报警协议和 http 协议。握手协议实现了服务端和客户端之间相互的身份鉴别、交互过程中密码套件(公钥密码算法、对称密码算法和密码杂凑算法的集合)与密钥的协商;密码规格变更协议则是用于通知对方其后的通信消息将用刚刚协商的密码规格及相关联的密钥来保护;报警协议用于关闭连接的通知,以及对整个连接过程中出现的错误进行报警,其中关闭通知由发起者发送,错误报警由错误的发现者发送,报警消息中包含报警级别和报警内容。
- 下层协议:记录层协议,用于封装不同的更高层协议的数据,为数据提供保密性、完整性和数据分段等服务,特别是它可为 B/S 的交互提供传输服务的超文本传输协议(HTTP)提供安全服务。
安全性保护
- 保密性:传输的数据均是采用 Session Key 加密,保证了保密性;
- 真实性:双方握手时对对方的身份均有验证,因此可以保证对方的真实性
- 完整性:每部分数据均有 MAC 验证,验证时计算数据的 MAC 然后与接收到的 MAC 比较,即可确定数据是否完整。
- 不可否认性:SSL 不能提供交易的不可否认性。SSL 协议是基于 Web 应用的安全协议,它只能提供安全认证,保证 SSL 链路上的数据完整性和保密性。却不能对电子商务的交易应用层的信息进行数字签名,因此,SSL 不能提供交易的不可否认性。
握手协议
作用:
- 通信双方对彼此进行身份鉴别
- 协商连接会话所需的密码参数(如密码算法、密钥)

- 阶段一:Client Hello 和Server Hello 消息用于在客户端和服务端之间进行密码套件协商及确定安全传输能力(包括协议版本、会话标识等属性),并且产生和交换随机数。
- 阶段二:身份鉴别和密钥交换,服务端发送证书 Server Certificate(签名证书和加密证书)和服务端密钥交换消息 Server Key Exchange(用于生成预主密钥)。若服务端需要验证客户身份,向客户端发送请求消息 Certificate Request,之后发送 Server Hello Done 标识 Hello 消息阶段结束等待客户端返回信息
- 阶段三:若服务端发送证书请求信息,客户端必须返回证书消息 Client Certificate。客户端发送密钥交换信息 Client Key Exchange,内容取决于双方 Hello 消息协商出的密码交换算法,若交换算法为 ECC,则客户端产生 46 字节(368 比特)随机数与版本号一起构成预主密钥,并采用服务端的加密公钥进行加密并放在 ClientKey Exchange消息中发送给服务端;若交换算法为 ECDHE,则 ClientKey Exchange 消息包含计算预主密钥的客户端密钥交换参数,同时,客户端根据双方的密钥交换消息生成预主密钥。若客户端发送了证书消息 Client Certificate,也应发送一个带数字签名的消息 Certificate Verify 供服务端验证客户端身份。
注:交换数据的加密运算采用对方加密证书中的公钥来完成;交换数据的签名运算采用本方签名私钥来完成,而且签名计算的输入应包括加密证书
- 阶段四:客户端发送密码规格变更消息,并立即使用刚协商的算法和密钥,发送加密的握手结束消息。服务端回应密码规格变更消息,使用刚协商的算法和密钥,发送加密的握手结束消息,双方可开始进行数据安全传输。
密钥计算:
- 主密钥为 48 字节(368比特)对称密钥,由预主密钥、客户端随机数、服务端随机数、常量字符串,经 PRF 计算生成。
- 工作密钥具体长度由选用的密码算法决定,由主密钥、客户端随机数、服务端随机数、常量字符串,经 PRF 计算生成。工作密钥包含两个对称密钥:用于加密的工作密钥、用于验证完整性和数据源身份的工作密钥。
会话重用:若干双方决定重用之前的密钥,可不必重新协商安全参数
记录层协议

- 第1步:数据分段,每一个记录块长度为 214 字节或更小
- 第2步 :数据压缩,使用当前会话状态指定的算法进行压缩,应采用无损压缩,并且增加长度不超过 1024 字节
- 第3步 :数据添加 MAC,使用握手协议密码套件中协定的密码杂凑算法和用于校验的工作密钥,对每块明文记录计算 MAC
- 第4步 :对数据和 MAC 加密,使用握手协议密码套件中协定的对称密码算法和用于加密的工作密钥对压缩数据和 MAC 进行加密
- 第5步 :附加 SSL 记录报头,增加由内容类型、主要版本、次要版本和压缩长度组成的头部
密码功能实现
保密性
- 访问控制
- 信息隐藏
- 信息加密
完整性


真实性
实现信息来源真实性的核心是鉴别。常见的鉴别方式包括:基于对称密码、公钥密码等密码技术的鉴别,基于静态口令的鉴别,基于动态口令的鉴别,基于生物特征的鉴别。后面三种在鉴别过程中仍需要密码技术提供保护或支撑。
不可否认性
- 起源的不可否认性
- 使用发起者的数字签名
- 使用可信第三方数字签名
- 传递的不可否认性
- 使用接收者的签名确认
- 使用可信传递代理
- 使用两阶段传递