工信部电子五所密码工程师培训 - 2022/09

2025-01-20
2025-03-04
26 min read
Hits

  考过密评后正好又到年终总结时间,密评学习就中断了半个多月,直到年前这一周终于又得空能再续学习。鉴于公司密评的学习还未统一安排,就自行找了点库存的学习资料整理下笔记。虽然密评还处于初级阶段,近几年更新较为频繁,但其所基于的密码基础知识不大会有变动,所以还是可以持续巩固学习的。

密码概念

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

  1. 特定变换:明文和密文相互转化的各种数学方法和实现机制。
  2. 加密保护:使用特定变换,将原始信息变成攻击者不能识别的符号序列。
  3. 安全认证:使用特定变换,确认信息是否被篡改、是否来自可靠信息源以及信息发送行为是否真实存在等。
  4. 技术:利用物项实现加密保护或安全认证的方法或手段。
  5. 产品:以实现加密保护或安全认证为核心功能的设备与系统。
  6. 服务:基于密码专业技术、技能和设施,为他人提供集成、运营、监理等密码支持和保障的活动,是基于密码技术和产品,实现密码功能的行为。

密码技术

  1. 密码算法:是实现密码对信息进行“明”“密”变换、产生认证“标签”的一种特定规则;包括加解密算法、数字签名算法和杂凑算法
  2. 密码协议:指两个或两个以上参与者使用密码算法,为达到加密保护或安全认证目的而约定的交互规则。
  3. 密钥管理:是指根据安全策略,对密钥全生命周期的管理。

密码作用

  密码的重要作用是保护网络与信息安全。密码的作用可概括为三个方面:

  1. 密码是“基因”,是网络安全的核心技术和基础支撑。密码是网络免疫体系的内置基因,是实现网络从被动防御向主动免疫转变的关键元素。
  2. 密码是“信使”,是构建网络信任体系的重要基石。密码算法和密码协议是实现安全、可信、可控的互联互通的核心技术手段。
  3. 密码是“卫士”,是国之重器,重要的战略性资源。密码技术与核技术、航天技术并成为国家的三大“杀手锏”技术;密码无处不在,时刻守候着国家、公民、法人和其他组织的安全。

密码功能

  密码的四个主要功能:

  1. 保密性:保证信息不被泄露给非授权的个人、进程等实体的性质。实现:加解密技术
  2. 真实性:信息来源:保证信息来源可靠、没有被伪造和篡改的性质;实体身份:信息收发双方身份与声称一致。实现:实体鉴别协议等
  3. 完整性:数据没有受到非授权的篡改或破坏的性质。实现:包含密码杂凑算法和密钥的算法,比如消息鉴别码(MAC)或者数字签名
  4. 不可否认性:一个已发生的操作行为无法否认的性质。实现:数字签名

密码应用

  密码在实际应用中,由于各种原因,可能会遭遇:

  1. 密码技术被弃用:信息系统应用开发商对密码的重要地位缺乏认识,故意忽视密码技术
  2. 密码技术被乱用:信息系统应用开发商不严格执行密码标准,不规范调用密码技术
  3. 密码技术被误用:信息系统应用开发商对密码应用缺乏技能和经验,不了解密码基本知识,错误调用密码技术

密评概念

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

  1. 合规性:密码算法、密码协议、密钥管理、密码产品和服务使用合规,使用符合国家密码法规和标准规定的商用密码算法,使用经过国家密码管理局核准的密码产品,许可的密码服务。
  2. 正确性:密码算法、密码协议、密钥管理、密码产品和服务使用正确,即采用的密码算法、协议和密钥管理机制按照相应的密码国家和行业标准进行正确的设计和实现;密码保障系统建设或改造过程中密码产品和服务的部署和应用正确。
  3. 有效性:采用的密码协议、密钥管理系统、密码应用子系统和密码安全防护机制不仅设计合理,而且在系统运行过程中能够发挥密码效用,保障信息的机密性、完整性、真实性、抗抵赖性。

密评阶段

  1. 系统规划阶段
    1. 责任单位应当依据商用密码应用安全性有关标准,制定商用密码应用建设方案,组织专家或委托测评机构进行评估
    2. 评估结果作为项目规划立项的重要依据和申报使用财政性资金项目的必备材料。
  2. 系统建设完成
    1. 责任单位应当委托测评机构进行商用密码应用安全性评估
    2. 评估结果作为项目建设验收的必备材料。
  3. 系统投入运行
    1. 责任单位应当委托测评机构定期开展商用密码应用安全性评估;
    2. 评估未通过,责任单位应当限期整改并重新组织评估。
  4. 系统应急评估:重要领域网络和信息系统发生密码相关重大安全事件、重大调整或特殊紧急情况时,责任单位应当及时组织测评机构开展商用密码应用安全性评估。

密码阶段

古典密码

  • 体制:代换密码、置换密码
  • 典型
    1. 代换密码
      1. 单表代换密码:仿射密码(乘法密码,加法密码:凯撒密码)
      2. 多表代换密码:维吉尼亚密码
    2. 置换密码:栅栏密码
  • 不足
    1. 统计特性方面存在缺陷
    2. 重合指数法可以确定维吉尼亚密码密钥长度
    3. 存在唯密文攻击

机械密码

  • 典型:恩尼格玛密码机,是多表代换密码系统,单表数目庞大,在加密过程中不断变化
  • 不足
    1. 存在统计分析攻击
    2. 图灵设计的专用设备加速破译算法,最终可以实时破译

现代密码

  • 体制
    1. 对称密码:加解密
    2. 非对称密码(公钥密码):加解密和签名
    3. 密码杂凑算法
    4. 数字签名算法
  • 典型
    1. 对称密码
      1. 序列密码:RC4
      2. 分组密码:DES、AES、SM4
    2. 非对称密码:RSA、SM2、SM9
    3. 杂凑算法:MD5、SHA1、SHA2、SHA3、SM3
    4. 数字签名算法:RSA、ECDSA、SM2、SM9
  • 不足
    1. 对称密码:密钥管理困难、不能进行安全认证
    2. 非对称密码:计算开销大、效率低,公钥需要认证
    3. 杂凑算法:差分攻击、模差分攻击、中间相遇攻击等

密码发展

  • 1999 年:国家密码管理局印发《商用密码管理条例》
  • 2006 年:国家密码管理局公布无线局域网产品适用的 SMS4 算法,后更名为 SM4 算法
  • 2010 年:国家密码管理局公布 SM3 密码杂凑算法、SM2 椭圆曲线公钥密码算法
  • 2011 年:我国自主设计的序列密码算法 ZUC,与美国 AES、欧洲 SNOW 3G 共同成为 4G 移动通信密码算法国际标准
  • 2012 年:SM2/3/4 算法发布为密码行业标准
  • 2016 年:国家密码管理局发布 SM9 标识密码算法密码行业标准;SM2/3/4 算法发布为国家标准
  • 2017 年:SN2 与 SM9 数字签名算法成为 ISO/IEC 国际标准
  • 2018 年:SM3 成为 ISO/IEC 国际标准;SM4 算法获批纳入 ISO/IEC 国际标准正文;SM2/9 数字签名算法以 ISO/IEC 国际标准正文形式发布
  • 2020 年:祖冲之(ZUC)序列加密算法正式成为 ISO/IEC 国际标准
  • 2021 年:SM9 标识加密算法、SM9 密钥交换协议正式成为 ISO/IEC 国际标准;SM4 算法正式成为 ISO/IEC 国际标准

密码趋势

Grover 算法与 Simon 算法主要针对对称密码,其对对称密码的影响在可控范围内。为应对 Grover 算法,我们可将密码算法的安全参数(如密钥长度)加倍,达到与经典模型下同等的安全等级;对于 Simon 算法,我们可规避受到其影响的操作模式,使用量子模型下安全的操作模式。因此,量子算法对对称密码的影响较小

RSA 等经典密码算法的计算意义安全性是建立在图灵机或与其等价的经典计算机模型基础上的。到了上世纪 90 年代,Peter Shor 提出的量子算法(被称为 Shor 算法)可在多项式时间内解决有限交换群的隐藏子群问题(Hidden Subgroup Problem,简称 HSP),该问题涵盖了 RSA 公钥加密、Diffie-Hellman 密钥交换和椭圆曲线密码等常见公钥密码的底层问题。Shor 算法对现有的一些公钥算法的影响是致命的

目前,量子计算机还没有发展到可以分解比如 RSA-1024 合数的规模和量级,但密码学界已经未雨绸缪,开始准备应对后量子时代的密码危机。我们所说的后量子密码或者抗量子攻击密码主要是指设计仍然能够运行在经典计算机上且具备抵抗抗量子计算机攻击安全性的密码算法和协议。

抗量子攻击

密码技术安全性优缺点现阶段成果
基于格的密码困难问题的最大困难性密钥和密文尺寸大1.谷歌在浏览器 Chrome 中测试基于 Ring-LWE 问题的抗量子密钥交换算法;2.微软公司公开其开发的基于 Ring-LWE 问题的密钥交换算法的源代码
基于多变量的密码求解有限域上随机产生的非线性多变量多项式方程组的困难性优点:运算都在较小的有限域上实现,效率高;缺点:密钥量较大,增长较快1.公认的高效且安全的基于多变量的公钥密码体制不多,主要用于签名(Rainbow 数字签名已破解);2.在密码分析方面产生了较多较好的研究成果,且可以应用于分析对称密钥密码系统
基于编码的密码随机线性码译码的困难性密钥量较大1.大多数基于编码的公钥密码使用 Goppa 码,密码体制和密钥长度太大,效率很低;2.尝试用 Reed-Muller 码、广义 Reed-Solomon 码、卷积码等其他纠错码替换 Goppa 码,但很多被攻破了
基于杂凑函数的密码杂凑函数的单向性优点:安全性仅仅依赖于杂凑函数的单向性,比较容易分析;缺点:签名的次数在密钥生成时已经确定,且需记录已签名次数1.目前最新的改进型 XMSS 已形成了 RFC 8391;2.NIST 公布的后量子密码候选提案中,SPHINCS+ 和 Gravity-Sphincs 都基于 XMSS 设计

密码算法

  密码算法是密码技术的核心,常见的密码算法包括加解密算法、数字签名算法和杂凑算法三个类别,加解密算法包括对称密码算法和公钥密码算法。

对称算法

  对称密码算法加密过程和解密过程使用相同的或容易相互推导得出的密钥,即加密和解密两方的密钥是“对称”的。

  初始向量是一个在加密过程中起到引入随机性作用的随机数;可与密文通过非安全通道传输,被攻击者截获不会对保密性构成威胁

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

  1. 电码本(ECB)
    1. 对某一个明文分组的加密或解密可独立进行;
    2. 对密文的重排将导致明文分组的重排;
    3. 不能隐蔽数据模式;
    4. 不能抵抗分组的重放、嵌入和删除等攻击
  2. 密文分组链接(CBC)
    1. 链接操作使得密文分组依赖于当前的和以前的明文分组,因此对密文分组的重新编排不会导致对相应明文分组的重新编排;
    2. 加密过程使用 IV 进行了随机化,每次加密 IV 都必须重新生成,并且要保证 IV 的随机性。使用不同的 IV 可以避免 ECB 模式下每次对相同的明文使用相同的密钥加密生成相同的密文的弊端;
    3. 加密过程是串行的,无法并行化;在解密过程中,通过两个相邻的密文分组执行解密操作可以获得明文分组,因此解密过程可以并行化
  3. 密文反馈(CFB)
  4. 输出反馈(OFB)
  5. 计数器(CTR)
    1. 每个明文分组 Pi 对应逐次累加的计数器值 Ti,加密 Ti 生成密钥流,每次加密用到的计数器值都互不相同。
    2. 支持加密和解密并行计算,可事先生成密钥流,进行加密和解密准备;
    3. 只用到了分组密码算法的分组加密操作;
    4. 错误密文中的对应比特只会影响解密后明文中的对应比特,即错误不会传播
  6. 分组链接(BC)
  7. 带非线性函数的输出反馈(OFBNLF)

DES

  20 世纪 70 年代初,IBM 公司密码学者 Horst Feistel 开始设计一种分组密码算法,到 1977 年设计完成。他设计的算法密钥长度为 56 比特,对应的密钥量为 $2^56$ 次方,不低于恩尼格玛密码机的密钥量,而且操作远比恩尼格玛密码机简单快捷,明密文统计规律更随机。这项研究成果被整理成美国数据加密标准 DES 算法。

  在随后近 20 年中,DES 算法一直是世界范围内许多金融机构进行安全电子商务使用的标准算法。但随着计算机硬件的发展及计算能力的提升,1998 年 7 月,电子前线基金会(EFF)使用一台 25 万美元的计算机在 56 小时内破译了 DES 算法,1998 年 12 月美国正式决定不再使用 DES 算法。

  16 轮 Feistel 结构密码算法,明文按 64 位进行分组,给定密钥 64 位(有校验位),密钥事实上是 56 位参与 DES 运算。

  Feistel 结构是用于分组密码中的一种对称结构(加密和解密的算法结构完成一致),Feistel 结构密码算法交替使用代替和置换来进行加密解密。

  密钥长度:密钥较长意味着安全性较高,但会降低加、解密的速度。这种安全性的增加来自更好的抗穷尽攻击能力和更好的混淆性。现在一般认为 64 位的密钥还不够。通常使用的密钥长度是 128 位。

  迭代轮数:Feistel 结构密码的本质在于单轮不能提供足够的安全性而多轮加密可取得很高的安全性。

AES

  1997 年 1 月,美国国家标准与技术研究院(NIST)发布公告征集高级加密标准 AES 算法,用于取代 DES 算法作为美国新的联邦信息处理标准。

  1997 年 9 月,AES 算法候选提名最终要求公布,基本要求是分组密码,分组长度 128 比特,密钥长度支持 128 比特、192 比特和 256 比特,这样使得密钥量更大,即使使用目前最快的计算机,也没有办法进行穷举搜索。

  由比利时密码学家设计的 Rijindael 算法最终胜出,成为 AES 算法。基于有限域 GF($2^8$),能够抵抗差分分析、线性分析、代数攻击等分析方法。

  AES 加密过程涉及到 4 种操作:字节替代(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundsKey)。

  解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。

  加解密中每轮的密钥分别由初始密钥扩展得到。算法中 16 字节的明文、密文和轮密钥都以一个 4×4 的矩阵表示。

SM4

  SM4 是一个 Feistel 结构的分组密码算法,由加解密算法和密钥扩展算法组成。

  分组长度及主密钥长度均为 128 比特,128-bit 主密钥通过密钥编排算法扩展为 32 个 32-bit 轮密钥。

  加/解密变换均为 32 轮论函数的迭代,加解密过程的算法相同但是轮密钥的使用顺序相反。

  SM4 与 AES 比较

  1. 结构:数据分组和密钥长度均为 128-bit,加密算法和密钥扩展算法都采用 32 轮非线性迭代结构;
  2. 优势:
    1. 在设计上实现了资源重用,密钥扩展过程和加密过程类似
    2. 加密过程与解密过程相同,只是轮密钥使用顺序正好相反,它不仅适用于软件编程实现,更适合硬件芯片实现
    3. 轮变换使用的模块包括异或运算、8-bit 输入 8-bit 输出的 S 盒,还有一个 32-bit 输入的线性置换,非常适合 32 位处理器的实现
  3. 安全性:S 盒设计既有较高安全特性,线性置换的分支数达到了最优;安全性与 AES-128 是相当的
  4. 实现效率:密钥扩展和加密算法基本相同,解密也只是密钥顺序倒置,则实现较为简单,效率较高。
  5. 结构:分组长度为 128-bit,密钥长度支持 128-bit、192-bit 或 256-bit,加/解密思路基本一样,密钥长度的不同,加密轮数也不同;
AES密钥长度(比特)分组长度(比特)加密轮数
AES-12812812810
AES-19219212812
AES-25625612814

ZUC 序列密码算法

  1. 结构:密钥长度 128 比特,由线性反馈移位寄存器、比特重组、非线性函数三个部分组成;
  2. 使用:在生成密钥流时,采用 128-bit 的初始密钥和 128-bit 的 IV 作为输入参数,共同决定 LFSR 里寄存器的初始状态。随着电路时钟的变化,LFSR 的状态被比特重组之后输入非线性函数 F,每一拍时钟输出一个 32-bit 的密钥流 Z。随后,密钥流与明文按位异或生成密文。
  3. 基于 ZUC 的两种算法:
    1. 机密性算法 128-EEA3,主要用于 4G 移动通信中移动用户设备和无线网络控制设备之间的无线链路上通信信令和数据的加密和解密。
    2. 完整性算法 128-EIA3,主要用于 4G 移动通信中移动用户设备和无线网络控制设备之间的无线链路上通信信令和数据的完整性校验,并对信令源进行鉴别。其主要技术手段是利用完整性算法 128-EIA3 产生 MAC,通过对 MAC 进行验证,实现对消息的完整性校验。
  4. 安全性:引入了素数域运算、比特重组、最优扩散的线性变换等先进理念和技术。

公钥密码算法

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

  1. 数学难题

    1. 基于大整数因子分解困难性,如 RSA 密码算法;
    2. 基于离散对数困难性,有限域上的离散对数问题(已知 g、p、$g^a$ mod p 求 a),如 EIGamal;椭圆曲线上的离散对数问题(已知 P,aP,求 a),如 SM2;
    3. LWE 问题,如基于格的密码,全同态加密等。
  2. 主要用途

    1. 公钥加密算法:运算操作计算复杂度高,主要用于短数据的加密,发送方用接收方公钥加密,接收方用其私钥解密;
    2. 数字签名算法:使用私钥对消息进行签名,公钥验签;、为提升效率和安全性,对原始消息的消息摘要进行数字签名。
  3. RSA 算法

    1. 数学难题:基于大整数因子分解的困难性
    2. 算法简介
      1. 迄今为止应用最广泛的公钥密码算法,可用于数字签名、安全认证等
      2. RSA 的公钥相当于两个素数的乘积,而私钥则相当于两个独立的素数
    3. 安全性
      1. 1024-bit 及以下密钥长度的 RSA 算法目前已经不推荐使用,为保证安全,至少选用 RSA-2048 算法;
      2. 在实际应用中,应确保两个素数是随机产生的,否则会导致安全风险。
    4. 效率
      1. 相当安全强度下,RSA 密钥长度远长于 ECC 算法,私钥计算执行效率要比 ECC 算法慢数倍;
      2. RSA 算法参数的实际应用取值特点,使得其加密(或签名验证)计算速度比解密(或签名)计算速度快许多倍。
  4. SM2 椭圆曲线公钥密码算法

    1. 数学难题:基于椭圆曲线离散对数问题
    2. 算法构成:主要包括 SM2 数字签名算法、SM2 密钥交换协议和 SM2 公钥加密算法三部分。(详见 GB/T 32918.2-2016、GB/T 32918.3-2016、GB/T 32918.4-2016)
    3. 安全性
      1. 算法具备单向性;
      2. 算法产生的明文和密文具备不可区分性;
      3. 算法具备不可延展性
    4. 效率
      1. 安全性高;
      2. 密钥短;
      3. 私钥产生简单;
      4. 签名速度快
    5. 使用:详见 GM/T 0009-2012 和 GM/T 0010-2012,以及 GB/T 35276-2017 和 GB/T 35275-2017
  5. SM9 标识密码算法

    1. 基本技术:有限域和椭圆曲线、双线性对及安全曲线、椭圆曲线上双线性对的运算等,不需数字证书、证书库或密钥库
    2. 算法构成:主要包括 SM9 数字签名算法,SM9 密钥交换协议和 SM9 密码密钥封装和加密算法三部分。(详见 GM/T 0044.2-2016、GM/T 0044.3-2016、GM/T 0044.4-2016)
    3. 安全性
      1. 能避免弱椭圆曲线的选取问题;
      2. 抵抗常见的针对椭圆曲线的攻击方式;
    4. 效率:采用嵌入次数适中且达到安全性标准的椭圆曲线。
加密类型常见加解密密码算法安全需求
序列密码(流密码)ZUC(祖冲之密码算法)、RC4(ARCFOUR)、SNOW 3G、ChaCha20保密性、使用分组密码算法的 CMAC 可以哟弄个与数据完整性校验
分组密码(块密码)SM4、SM1、SM7、DES、3DES、AES、Camellia、IDEA、Blowfish、Twofish、RC6、CAST同上
公钥加密SM2 椭圆曲线公钥密码算法的公钥加密算法、SM9 标识密码算法的公钥加密算法、RSA、EIGamal 加密算法保密性
可鉴别的加密(认证加密)分组密码算法的 CCM、GCM 模式、Key Wrap、EAX、EtM、ChaCha20-IETF-Poly1305、XChaCha20-IETF-Poly1305在实现保密性的同时,可以用于数据完整性校验,数据源真实性鉴别

密码杂凑算法

  密码杂凑算法,也称“散列算法”或凑“哈希算法”。密码杂凑算法对任意长度的消息进行压缩,输出定长的消息摘要或杂值。

  1. 性质
    1. 抗原像攻击(单向性);
    2. 抗第二原像攻击(弱抗碰撞性);
    3. 强抗碰撞性
  2. 结构
    1. M-D 结构(MD5,SHA-1,SHA-2 和 SM3 采用的结构)
    2. 海绵结构(SHA-3 采用的结构)
  3. 应用
    1. 产生信息摘要,进一步可以检验数据完整性(单独使用杂凑算法无法保证数据完整性,常与密钥共同作用,称带密钥的杂凑算法(HMAC),可用于完整性校验和消息鉴别);
    2. 与公钥密码算法一起产生数字签名

SM3 密码杂凑算法

  1. 设计要点:取决于具有抗碰撞能力的压缩函数
  2. 算法简介
    1. 输入消息长度 L<$2^{64}$,分组长度为 512-bit,经过填充、扩展、迭代压缩后,生成长度为 256-bit 的杂凑值;
    2. 实现过程主要包括分组填充和迭代压缩等步骤。
  3. 安全性
    1. M-D 结构的基础上,新增 16 步全异或操作、消息双字介入、加速雪崩效应的 P 置换等多种设计技术;
    2. 能有效避免高概率的局部碰撞、强碰撞性的差分分析、弱碰撞的线性分析和比特追踪等,具有较高的安全冗余。

国外密码杂凑算法

算法名称算法简介现阶段进展
MD51.消息分组为 512-bit,输出为 128-bit 的消息摘要;2.可用于数字签名、完整性保护、安全认证、口令保护等。MD5 算法已不再适合实际应用:1.2015 年,给出了 MD5 算法的碰撞实例,后又成功伪造了 SSL 数字证书;2.目前,一部智能手机仅用 30 秒可找到 MD5 算法的碰撞。
SHA-1基于 MD4 算法思想,很多方面与 MD5 算法有相似之处,输入长度小于 $2^{64}$-bit,消息摘要长度为 160-bitSHA-1 也将退出历史舞台:1.2005 年,首次给出了 SHA-1 的碰撞攻击;2.2017 年,找到了 SHA-1 算法的碰撞实例。
SHA-2基于 MD 结构,支持 224、256、384 和 512 比特四种长度的输出,包含 6 个算法,其中,SHA-256 和 SHA-512 是主要算法。目前没有发现对 SHA-2 算法的有效攻击。
SHA-3采用海绵结构,包含多个算法:SHA3-224、SHA3-256、SHA3-384、SHA3-512、SHAKE128、SHAKE256。目前没有发现对 SHA-3 算法的有效攻击。

数字签名算法

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

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

  1. 数字签名算法(使用时通常包含一个杂凑算法):SM2 椭圆曲线公钥密码算法的数字签名算法、SM9 标识密码算法的数字签名算法、RSA、ECDSA
    1. 完整性
    2. 基于数字签名的数字证书可以用于实现真实性、不可否认性
  2. 杂凑算法:SM3 密码杂凑算法、SHA-2(SHA-256、SHA-512 等)、SHA-3
    1. 在特殊应用中,确保杂凑值无法被修改时,可以单纯采用杂凑算法校验数据完整性
    2. 基于杂凑算法的 HMAC 可以用于数据完整性校验,比如 SM3-HMAC。

密码算法分析概要

  1. 对称密码的分析:最有效的分析方法:差分类攻击和线性类攻击。
  2. 公钥密码的分析
    1. 对底层困难问题的分析,以及上层方案实际安全性的分析;
    2. 格理论和算法。
  3. 杂凑函数的分析:常用攻击方法:差分攻击、模差分攻击、中间相遇攻击等。
  4. 测信道分析:基于物理实现的分析方法。物理装置会泄露一些信息如能量消耗、电磁辐射、运行时间。

密钥管理

  密钥生命周期管理

  1. 密钥生成
    1. 利用随机数直接生成
      1. 需要使用核准的随机数发生器进行密钥生成
      2. 检查密钥是否符合具体算法要求,必要时进行调整或重新生成新的随机数作为密钥。
    2. 通过密钥派生函数(KDF)生成:KDF 的设计应保证从派生的密钥无法推断出秘密值本身,同时,无法从某个派生的密钥推断出其他派生密钥。
      1. 在密钥协商过程中从共享密钥派生;
      2. 从主密钥派生密钥。
  2. 密钥存储
    1. 存储在密码产品中:采用分层次的方式,逐层保护:并非所有的密钥都需存储,一些临时密钥或一次一密的密钥在使用完后要立即销毁
    2. 加密保存在通用存储设备中:需对密钥进行必要的保密性和完整性保护;不能简单地只采用杂凑算法进行完整性保护。
  3. 密钥导入和导出
    1. 加密传输
      1. 利用对称或非对称加密技术时,需预先共享一个密钥加密密钥或获取被导入方公钥;
      2. 需要加入完整性保护和校验机制。
    2. 知识拆分
      1. 将密钥分成若干与其等长的分量,导入时利用异或计算恢复原有密钥;
      2. 利用门限算法进行拆分
        1. 知识拆分不应降低密钥的安全性,不允许简单讲密钥截取为若干段的方式
        2. 除了禁止密钥的明文进出,高安全等级的密码产品还要求,进行知识拆分后的密钥分量通过可信信道传输。
  4. 密钥分发
    1. 人工分发
      1. 密钥由授权的分发者分发,并由授权的接收者接收;
      2. 进行人工分发的实体是可信的;
      3. 有足够的机制保证密钥的安全性,提供对截取、假冒、篡改、重放等攻击手段的对抗能力。
    2. 自动分发:可通过数字信封、对称密钥加密等方式自动加密分发,需保证密码技术本身的安全性。
  5. 密钥使用:只能在核准的密码产品内部使用
    1. 用于核准的密码产品的密钥,不能再被非核准的密码算法使用;
    2. 不同类型的密钥不能混用,一个密钥不能用于不同用途
    3. 使用前需要验证公钥的完整性,以及实体与公钥的关联关系
  6. 密钥备份和恢复:密钥备份时一般将备份的密钥存储在外部存储介质
    1. 备份的密钥处于不激活状态,只有完成恢复后才可以激活;
    2. 密钥备份需保护备份密钥的保密性、完整性及其与拥有者身份和其他信息的关联关系;
    3. 备份或恢复时应进行记录、并生成审计信息。
  7. 密钥归档:在形式上与密钥备份类似,在密钥生命周期之外对其保存
    1. 签名密钥对的私钥不应进行归档
    2. 应当继续对归档的密钥提供安全保护;
    3. 归档时应进行记录,生成审计信息。
  8. 密钥销毁:应当删除所有密钥副本(但不包括归档的密钥副本)
    1. 正常销毁
    2. 应急销毁

  对称密钥管理中最具有特色的是对称密钥的分发。而对称密钥的分发主要有两种基本机构:一种是点到点结构,另一种是基于密钥中心的结构

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

  1. PKI 标准
    1. 国际:ITU-T 标准化部门制定的 X.509 标准,是目前使用最广泛、最成功的证书格式。
    2. 国内:我国制定的 GM/T 0034-2014《基于 SM2 密码算法的证书认证系统密码及其相关安全技术规范》等系列标准对我国公众服务的数字证书认证系统的实际、建设、检测、运行及管理进行了规范。
  2. 组件
    1. 证书认证机构(CA)
    2. 证书持有者
    3. 依赖方
    4. 证书注册机构(RA)
    5. 资料库
    6. 证书撤销列表(CRL)
    7. 在线证书状态协议(OCSP)
    8. 轻量级目录访问协议(LDAP)
    9. 密钥管理系统(KM)

  数字证书生命周期

  1. 证书的产生
    1. 密钥生成
    2. 提交申请
    3. 审核检查
    4. 证书签发
  2. 证书的使用
    1. 证书获取
    2. 验证使用
    3. 证书存储
  3. 证书的撤销
  4. 证书的更新
  5. 证书的归档

  引入“双证书体系”,解决加密和签名两方面看似矛盾的需求。目前我国 PKI 系统采用的是双证书体系,用户同时具有两个私钥,分别为签名私钥和加密私钥。

  1. 签名证书:签名私钥由用户在本地生成并专有掌握,对应的证书称为“签名证书”;
  2. 加密证书:加密私钥用于解密和密钥交换,由专门的可信机构生成并和用户共同掌握,对应的证书称为“加密证书”。

密码协议

密钥交换协议

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

  密钥交换协议旨在让两方或多方在不安全的信道上协商会话密钥,从而建立安全的通信信道。

协议名称基础优劣势
Diffie-Hellman 密钥交换协议运算在有限循环群上,基于离散对数问题的困难性。只能提供建立会话密钥的功能,并不能抵抗中间人攻击,同时也不能提供相互鉴别的安全保障。
MQV 密钥交换协议在经典 D-H 密钥交换协议基础上,用到双方公钥信息,且选择椭圆曲线加法群作为基本群。交互过程用到双方公钥信息,达到隐士鉴别的效果,是具有鉴别功能的密钥交换协议。
SM2 密钥交换协议是 MQV 的一个变种同样具有鉴别通信双方身份真实性功能,且可以通过计算可选项,确认双方协商到的密钥是一致的。

实体鉴别协议

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

  我国国标 GB/T 15843 规定了进行实体鉴别的机制,以下主要介绍标准规定的采用对称加密算法、数字签名技术和密码校验函数的无可信第三方单向鉴别机制

  一次传递鉴别

  1. 采用对称加密算法
    1. 声称者 A 通过表明他知道某秘密鉴别密钥来证实其身份;
    2. 鉴别时,A 使用秘密密钥 $K_{AB}$ 加密特定数据,与 A 共享该密钥的验证者 B 将加密后的数据解密,从而验证 A 的身份。
  2. 采用密码校验函数:鉴别时,A 使用秘密密钥 $K_{AB}$ 和密码校验函数对指定数据计算密码校验值,与 A 共享该密钥的验证者 B 重新计算密码校验值并与所收到的值进行比较,从而验证 A 的身份。
  3. 采用数字签名技术
    1. 声称者 A 通过表明它拥有某个私有签名密钥来证明其身份;
    2. 鉴别时,A 使用其私钥 dA 对特定数据进行签名,任何实体都可以使用 A 的公钥进行验证

注:为了防止重放攻击,一次传递鉴别的 Token 中应包含时间值 $T_A$ 或序列号 $N_A$;两次传递鉴别中为随机数 $R_B$

  为了防止重放攻击一次传递鉴别需要双方保持时间同步,或者鉴别方验证序列号没有重复,这在一些情况下可能是难以实现的。

  采用“挑战——响应”机制可以有效克服这种困难,即两次传递单向鉴别机制。鉴别时,由 B 发起鉴别过程,将随机数 $R_B$ 作为挑战发送给 A(并可选的发送一个文本字段 Text1),A 通过对称加密、计算密码校验值或者私钥签名的方法计算 Token,并发送给 B 作为自己身份的证明,B 通过对称解密、重新计算密码校验值或者签名验证的方法验证 Token 的有效性,从而对 A 的身份进行鉴别。

  IPSec 协议和 SSL 协议是两个较为综合的密码协议,支持采用多种密码技术为通信交互中的数据提供全面安全保护。

协议名称基本思想不同点主要协议
IPSec将基于密码技术的安全机制引入 IP 协议中,实现网络层的通信安全。AH 和 ESP 可以工作在传输模式和隧道模式。1.工作在网络层;2.一般用于两个子网之间的通信,称为站到站的通信IKE 协议、认证头(AH)协议、封装安全载荷(ESP)协议中SSL
  1. (IPSec)IKE 协议:IKE 协议用于鉴别通信双方身份、创建安全联盟(SA)、协商加密算法以及生成共享密钥等,其中 ISAKMP 是 IKE 的核心协议,ISAKMP 的一个核心功能就是创建和维护 SA,SA 是 IPSec 的基础,SA 的协定内容包括 IPSec 工作模式、密码算法等安全策略和密钥。ISAKMP 分为两个阶段:第一阶段是主模式,第二阶段是快速模式。
  2. (IPSec)AH 协议:AH 协议提供数据源身份鉴别、完整性和抗重放等安全功能。但是 AH 协议不提供任何保密性服务,应和 ESP 协议嵌套使用,不得单独用于封装 IP 数据报文(GM/T 0022-2014),共同保护 IP 数据安全。
  3. (IPSec)ESP 协议:和 AH 协议相比,ESP 协议增加了对数据报文的加密功能,它可同时使用用于加密的会话密钥及用于验证完整性和数据源身份的会话密钥,来为数据提供全面保护。
  4. (SSL)握手协议:握手协议的主要作用有两点:一是通信双方对彼此进行身份鉴别;二是协商连接会话所需的密码参数(如密码算法、密钥)
  5. (SSL)记录层协议:当客户端和服务端握手成功后,待传输的应用数据通过记录层协议封装,并得到保密性和完整性保护。

密码功能实现示例

保密性实现

  信息保密性保护的目的是避免信息泄露或暴露给未授权的实体。保密性保护也是密码技术最初的目标。

  基本方法

  1. 访问控制:防止敌手访问敏感信息;
  2. 信息隐藏:避免敌手发现敏感信息的存在;
  3. 信息加密:应用加密机制,敌手无法从密文信息得到原始信息的内容或提取有效信息。
    1. 考虑密码体制的选取、算法的选择、工作模式、填充需要、初始化需要等;
    2. 公钥密码技术主要用于密钥的协商或加密等信息量不大,且分享方式复杂的保护;
    3. 对称密码技术主要用于大量信息的传输或存储的保密性,尤其注意工作模式的安全性。

完整性实现

  数据完整性保护的目的在于保护信息免受非授权实体的篡改或替代。

  数据完整性保护有两种基本方法:访问控制方法和损坏-检测方法。

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

  HMAC:利用杂凑算法,将一个双方共享的密钥和一个消息作为输入,生成一个消息摘要。

  CMAC:利用对称密码算法,使用 CBC 模式进行加密,取密文最后一个分组作为 CMAC,此时 CBC 模式的初始向量为全 0.

真实性实现

  实现信息来源真实性的核心是鉴别。

  1. 基于密码技术的鉴别
    1. 基于对称密码的鉴别方案,针对密钥爆炸问题,通过引入中心认证服务器来解决;
    2. 基于公钥密码的鉴别方案可采用离线认证服务器,可避免鉴别过程中与在线服务器交互带来的时间延迟,节省服务器通信容量,消除服务器暂时故障对鉴别的影响。
  2. 基于静态口令的鉴别机制
    1. 静态口令或个人识别码是最常用的鉴别信息之一,直接使用有很多脆弱点,易受攻击;
    2. 利用对称加密、杂凑算法、公钥加密等密码技术有效提升口令鉴别过程的安全。
  3. 基于动态口令的鉴别机制
    1. 主要用于抵抗重放攻击
    2. 声称者和验证者需维持相同口令序列发生器,并保持同步;
    3. 时间戳或计数值的引入使得动态口令只有一次有效
  4. 基于生物特征的鉴别机制:易受窃听和重放攻击,一般不直接用于远程鉴别,而只用于设备对自然人的鉴别,身份验证通过后,设备再使用密码技术与应用服务器进行安全交互。

不可否认性实现

  不可否认功能虽不能防止通信参与方否认通信交换行为的发生,但是能在产生纠纷时提供可信证据,有利于解决纠纷。

  1. 起源的不可否认
    1. 使用发起者的数字签名
    2. 使用可信第三方的数字签名
  2. 传递的不可否认
    1. 使用接收者的签名确认
    2. 使用可信传递代理
    3. 使用两阶段传递