目录
写在前面:建议没有学习过密码学基础知识的,
请先移步——>《图解密码技术》学习笔记汇总
密码算法作为国家战略资源,比历史上任何时候都显得更为关键。在大数据和云计算的时代,关键信息往往通过数据挖掘技术在海量数据中获得,所以每一个人的信息保护都非常重要。
在《商用密码-应用与安全性评估》专题中,重点在于国密算法及测评的相关内容。对于密码学的基础知识,不再详细记录。另外,写这些博客,是学习过程中的笔记而已。欢迎交流学习心得。
第一章 密码基础知识
密码技术的三个核心内容:
- 密码算法
- 密钥管理
- 密码协议
密码技术的四项功能:
- 保密性
- 完整性
- 真实性
- 不可否认性
1.1 密码应用概述
1.1.1 密码的概念与作用
1.1.2 密码的概念与作用
1.密码的功能:CIA的相关概念。
2.密码应用技术框架(重要,书中 p5)
密码资源、密码支撑、密码服务、密码应用
1.1.3 密码应用中的安全性问题
- 密码技术被弃用
- 密码技术被乱用
- 密码技术被误用
1.2 密码应用安全性评估的基本原理
- 信息安全管理过程:BS7799、ISO/IEC27001、PCDA管理循环
- 信息安全风险评估:
- 密码应用安全性评估的定位:
1.3 密码技术发展
1.3.1 密码技术发展
- 古典密码
- 机械密码
- 现代密码
1.3.2 我国商用密码发展过程
为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。
对称算法:其中SM1、SM4、SM7、祖冲之密码(ZUC);
非对称算法:SM2、SM9;
哈希算法:SM3。
目前,这些算法已广泛应用于各个领域中,期待有一天会有采用国密算法的区块链应用出现。
- SM1:算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
- SM2:2010年,椭圆曲线公钥密码算法。可用于数字签名。
- SM3:2010年,密码杂凑算法。2018年10月成为ISO/IEC国际标准。
- SM4:2016年,无线局域网产品适用。
- SM7:算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
- SM9:2016年,标识密码算法(无需证书)。 可用于数字签名。
- ZUC:2011年,序列密码(流密码)算法。4G移动通信密码算法国际标准。
1.4 密码算法
对称密码算法 | 国密:SM1、SM4、ZUC 国外算法:DES、3DES、AES |
公钥密码算法 | 国密:SM2、SM9(无需证书) 国外算法:RSA |
杂凑算法 | 国密:SM3 国外算法:MD5、SHA-1、SHA-2、SHA-3 |
1.4.1 对称密码算法
国密:SM1、SM4、ZUC
国外算法:DES、3DES、AES
1.4.1.1 序列密码与分组密码
对称密码算法 | 序列密码(流密码):ZUC、SNOW、RC4 |
分组密码(块密码):SM1、SM4、DES、AES |
序列密码的特点:秘密流可以在明文序列到来之前生成。常用于功耗或者计算能力受限的系统中。
1.4.1.2 分组密码的工作模式
分组密码的工作模式:ECB、CBC、CFB、OFB、CTR、BC、OFBNLF
详细的介绍,请移步——>《图解密码技术》笔记4:分组密码的模式-分组密码是如何迭代的
1.4.1.3 ZUC序列密码算法
ZUC祖冲之算法:
祖冲之序列密码算法是中国自主研究的流密码算法,是运用于移动通信4G网络中的国际标准密码算法,该算法包括祖冲之算法(ZUC)、加密算法(128-EEA3)和完整性算法(128-EIA3)三个部分。目前已有对ZUC算法的优化实现,有专门针对128-EEA3和128-EIA3的硬件实现与优化。
国标与行标:
# | 标准号 | 标准中文名称 | 发布日期 | 实施日期 | 标准状态 |
---|---|---|---|---|---|
1 | GB/T 33133.1-2016 | 信息安全技术 祖冲之序列密码算法 第1部分:算法描述 | 2016-10-13 | 2017-05-01 | 现行 |
2 | GB/T 33133.3-2021 | 信息安全技术 祖冲之序列密码算法 第3部分:完整性算法 | 2021-10-11 | 2022-05-01 | 即将实施 |
3 | GB/T 33133.2-2021 | 信息安全技术 祖冲之序列密码算法 第2部分:保密性算法 | 2021-10-11 | 2022-05-01 | 即将实施 |
1.4.1.4 SM1序列密码算法
SM1对称密码:
SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
国标与行标: 无。算法不公开
1.4.1.5 SM4分组密码算法
SM4对称算法:
此算法是一个分组算法,用于无线局域网产品。该算法的分组长度为128比特,密钥长度为128比特。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
此算法采用非线性迭代结构,每次迭代由一个轮函数给出,其中轮函数由一个非线性变换和线性变换复合而成,非线性变换由S盒所给出。其中rki为轮密钥,合成置换T组成轮函数。轮密钥的产生与上图流程类似,由加密密钥作为输入生成,轮函数中的线性变换不同,还有些参数的区别。SM4算法的具体描述和示例见SM4标准。
国标与行标:
# | 标准号 | 标准中文名称 | 发布日期 | 实施日期 | 标准状态 |
---|---|---|---|---|---|
1 | GB/T 32907-2016 | 信息安全技术 SM4分组密码算法 | 2016-08-29 | 2017-03-01 | 现行 |
1.4.2 公钥密码算法
国密:SM2、SM9 国外算法:RSA
1. 公钥密码模型
加密和解密、数字签名。
2. SM2椭圆曲线公钥密码算法:
SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条256位的曲线作为标准曲线。
SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。
SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。
详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。总则中的知识也适用于SM9算法。
在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。
数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。
SM2算法在很多方面都优于RSA算法(RSA发展得早应用普遍,SM2领先也很自然)。
国标与行标:
# | 标准号 | 标准中文名称 | 发布日期 | 实施日期 | 标准状态 |
---|---|---|---|---|---|
1 | GB/T 35276-2017 | 信息安全技术 SM2密码算法使用规范 | 2017-12-29 | 2018-07-01 | 现行 |
2 | GB/T 35275-2017 | 信息安全技术 SM2密码算法加密签名消息语法规范 | 2017-12-29 | 2018-07-01 | 现行 |
3 | GB/T 32918.1-2016 | 信息安全技术 SM2椭圆曲线公钥密码算法 第1部分:总则 | 2016-08-29 | 2017-03-01 | 现行 |
4 | GB/T 32918.5-2017 | 信息安全技术 SM2椭圆曲线公钥密码算法 第5部分:参数定义 | 2017-05-12 | 2017-12-01 | 现行 |
5 | GB/T 32918.2-2016 | 信息安全技术 SM2椭圆曲线公钥密码算法 第2部分:数字签名算法 | 2016-08-29 | 2017-03-01 | 现行 |
6 | GB/T 32918.3-2016 | 信息安全技术 SM2椭圆曲线公钥密码算法 第3部分:密钥交换协议 | 2016-08-29 | 2017-03-01 | 现行 |
7 | GB/T 32918.4-2016 | 信息安全技术 SM2椭圆曲线公钥密码算法 第4部分:公钥加密算法 | 2016-08-29 | 2017-03-01 | 现行 |
3. SM9标识密码算法:
为了降低公开密钥系统中密钥和证书管理的复杂性,以色列科学家、RSA算法发明人之一Adi Shamir在1984年提出了标识密码(Identity-Based Cryptography)的理念。标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。2008年标识密码算法正式获得国家密码管理局颁发的商密算法型号:SM9(商密九号算法),为我国标识密码技术的应用奠定了坚实的基础。
SM9算法不需要申请数字证书,适用于互联网应用的各种新兴应用的安全保障。如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等安全应用,并具有使用方便,易于部署的特点,从而开启了普及密码算法的大门。
国标与行标:
# | 标准号 | 标准中文名称 | 发布日期 | 实施日期 | 标准状态 |
---|---|---|---|---|---|
1 | GB/T 38635.2-2020 | 信息安全技术 SM9标识密码算法 第2部分:算法 | 2020-04-28 | 2020-11-01 | 现行 |
2 | GB/T 38635.1-2020 | 信息安全技术 SM9标识密码算法 第1部分:总则 | 2020-04-28 | 2020-11-01 | 现行 |
1.4.3 密码杂凑算法
国密:SM3 国外算法:MD5、SHA-1、SHA-2、SHA-3
SM3密码杂凑(哈希、散列)算法:
SM3密码杂凑(哈希、散列)算法给出了杂凑函数算法的计算方法和计算步骤,并给出了运算示例。此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。
此算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度为256比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。具体算法及运算示例见SM3标准。
国标与行标:
# | 标准号 | 标准中文名称 | 发布日期 | 实施日期 | 标准状态 |
---|---|---|---|---|---|
1 | GB/T 32905-2016 | 信息安全技术 SM3密码杂凑算法 | 2016-08-29 | 2017-03-01 | 现行 |
1.4.4 密码算法分析概要
柯克霍夫原则:密码系统应该就算被所有人知道系统的运作步骤,仍然是安全的。
1.5 密钥管理
1.5.1 密钥生命周期管理
- 密钥生成
- 密钥存储
- 密钥导入和导出
- 密钥分发
- 密钥使用
- 密钥备份和恢复
- 密钥归档
- 密钥销毁
1.5.2 对称密码管理
对称密码分发主要由两种基本结构:
- 点到点结构
- 基于密钥中心的结构
1.5.3 公钥基础设施(PKI)
PKI主要解决公钥属于谁的问题。
关于PKI的详细介绍,请移步——>PKI公钥基础设施
双证书体系:签名证书、加密证书。
1.6 密码协议
1.6.1 密钥交换协议
- Diffie-Hellman密钥交换协议
- MQV密钥交换协议
- SM2密钥交换协议
1.6.2 实体鉴别协议
- 一次传递鉴别
- 两次传递鉴别
1.6.3 综合密码协议
- IPSec协议
- SSL协议
1.7 密码功能实现示例
1.7.1 保密性实现
三种基本方法:
- 访问控制的方法
- 信息隐藏的方法
- 信息加密的方法
1.7.2 完整性实现
两种基本方法:
- 访问控制方法
- 损坏-检测方法
- 消息验证码(MAC):对称密码、杂凑算法都可用于生成MAC
- 数字签名
1.7.3 真实性实现
四种基本方法: 后面3种没有直接使用密码技术,但是在鉴别发过程中需要使用密码技术提供保护或支撑。
- 基于密码技术的鉴别机制:对称密码、公钥密码等密码技术
- 基于静态口令的鉴别机制
- 基于动态口令的鉴别机制
- 基于生物特征的鉴别机制
1.7.4 不可否认性实现
通过数字签名技术来实现:
- 起源的不可否认
- 使用发起者的数字签名
- 使用可信第三方数字签名
- 传递的不可否认:
- 使用接受者的签名确认
- 使用可信传递代理
- 使用两阶段传递