密码学基本理论

发布时间 2023-06-02 07:37:22作者: 熊猫爱旅行
title: 密码学基本理论
date: 2022-10-05T18:53:55Z
lastmod: 2023-06-01T22:02:12Z
tags: [DES,3DES,IDEA,AES,RSA,S盒置换,SM1,SM2,SM3,SM4,SM9,数字签名,CA,Diffie-Hellman,SSH,Hash,对称加密,非对称加密]

密码学基本理论

密码学概况

密码学基本概念

密码学的主要目的是保持明文的秘密以防止攻击者获知,而密码分析学则是在不知道密钥的情况下,识别出明文的科学。所谓明文是指需要采用密码技术进行保护的消息,而密文则是指用密码技术处理过的明文的结果,通常称为加密消息,将明文转换为密文的过程称作加密,其逆过程,即由密文恢复出原明文的过程称为解密,加密过程所使用的一组操作运算规则称作加密算法,而解密过程所使用的一组操作运算规则称为解密算法。加密算法和解密算法的操作通常都是在密钥控制下进行的,分别称为加密密钥和解密密钥。

密码分析攻击类型

唯密文攻击

密码分析者只拥有一个或多个同一密钥加密的密文,没有其他可利用的信息

已知明文攻击

密码分析者仅知道当前密钥下的一些明文及所对应的密文

选择明文攻击

密码分析者能够得到当前密钥下自己选定的明文所对应的密文

密文验证攻击

密码分析者对于任何选定的密文能够得到该密文是否合法的判断

选择密文攻击

除了挑战密文外,密码分析者能够得到任何选定的密文所对应的明文

密码体制分类

私钥密码体制

私钥密码体制又称为对称密码体制,该体制的特点是加密和解密所使用的密钥相同。

私钥密码体制的缺陷

密钥分配问题

发送者和接受者必须事先通过安全通道交换密钥,以便在发送和接受时能够提供使用的密钥

密钥的管理问题

假设有那个使用者,使用者之间互相共享一个密钥,则共有n(n-1)/2个密钥,如果n很大,密钥将多到无法处理。

无法认证源

在私钥体制中,A和B拥有相同的加解密能力,因此使用者B无法证实收到的A发来的消息是否确实来自A。

公钥密码体制

公钥密码体制又称为非对称密码体制,其基本原理是在加密和解密过程中使用不同的密钥处理方式,其中加密密钥可以公开,只需要安全存放解密密钥,在安全性方面,即使公开加密算法,通过加密密钥推知解密密钥也是计算不可行的。

公钥密码体制的优点

  • 密钥分发方便,能以公开的方式分配密钥
  • 密钥保管量少,网络中的消息发送方可以公用一个公开加密密钥,从而减少密钥数量,只要接收方的解密密钥保密,就能实现消息的安全性。
  • 支持数字签名。

三种公钥密码体制

目前,有三种公钥密码体制类型被证明是安全和有效的,即RSA体制、RLGamal体制及椭圆曲线密码体制。

混合密码体制

混合密码体制利用公钥密码体制分配私钥密码体制的密钥,消息的收发方共用这个密钥,然后按照私钥密码体制的方式,进行加解密运算。

image

常见密码算法

​#DES#​

  • DES(Data Encryption Standard)数据加密标准的简称。
  • 支持64 bit明文块加密
  • 密钥长度为56 bit

​#3DES#​(Triple DES)

  • 3DES采用TDEA(Triple Data Rncryption Algorithm)
  • TDEA的工作机制是使用DES对明文进行“加密-->解密-->加密”操作
  • 64 bit明文块加密
  • 密钥长度56*3 bit
  • Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,Input代表明文输入,Output代表密文输出,加密过程如下:
flowchart LR R1[Input ]--> R2[DES Ek1] --> R3[DES Dk2] --> R4[DES Ek3] --> R5[Output]
  • 解密过程:

    flowchart LR R1[Input] --> R2[DES Dk3] --> R3[DES Ek2] --> R4[DES Dk1] --> R5[Output]

​#IDEA#​

  • IDEA(International Data Encryption Algorithm)是国际数据加密算法的简记
  • 分组加密处理算法
  • 明文和密文分组都是64 bit
  • 密钥长度为 128 bit
  • 既可以用于加密又可以用于解密
  • 算法思路是“混合使用来自不同代数群中的运算”

​#AES#​

  • AES(Advanced Encryption Standard)高级加密标准
  • 对称算法
  • 至少支持128 bit长的分组
  • 密钥长度至少为128、192和256 比特
  • 选择Rijindael作为AES

​#S盒置换#​

S盒是将48比特压缩成32比特,S盒接受特定数量的输入48比特,经过8个盒将其转换为32比特输出

image

s8盒为例,输入110011,第一位和第六位(最高位和最低位)组合为11(二进制),转换为十进制为3,则在s8盒中行号为3。接下来我们计算列,原始数据第二位到第五位为1001(二进制),转换为十进制为9,则在s8盒中列号为9。s盒8的03行09列的数字为12,转换为二进制为1100,因此用二进制1100来代替110011

​#RSA#​

RSA是非对称算法,公钥和私钥都可用于加密消息,用于加密消息的密钥和解密消息的密钥相反,RSA算法提供了一种保护网络通信和数据存储的机密性、完整性、真实性和不可否认性的方法。

目前,SSH、OpenPGP、S/MIME和SSL/TLS都依赖于RSA进行加密和数字签名功能。

RSA算法基于大整数因子分解的困难性

  • 第一步,生成两个大素数p和q
  • 第二步,计算这两个大素数的乘积 n=pq
  • 第三步,计算小于n且与n互素的整数的个数,即欧拉函数φ(n)=(p-1)(q-1)
  • 第四步,选取一个随机数e,且满足1<e<φ(n),并且e和φ(n)互素,即gcd(e,φ(n))=1
  • 第五步,计算d=e^(-1) mod φ(n)
  • 第六步,保密d,p和q,而公开n和e,即n和e作为公钥,d作为私钥

367fdf856ea2c36dee0736e3cc91dcc

国产密码算法

​#SM1#​ 分组密码算法

  • 对称加密算法
  • 分组长度和密钥长度都为128 bit

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

  • 非对称加密
  • 用于公钥加密算法、密钥交换协议、数字签名算法
  • 国家标准推荐使用素数域256位椭圆曲线

​#SM3#​ 密码杂凑算法

  • 消息m长度l<2^64
  • 经过填充、迭代压缩、生成杂凑值,杂凑值输出长度为256比特
  • SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等

​#SM4#​ 分组算法

  • 分组长度为128bit
  • 密钥长度为128bit
  • 加密算法与密钥扩展算法采用32轮非线性迭代结构
  • 数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序

#SM9 #​ 标识密码算法

  • 在标识密码系统中,用户的私钥有密钥生成中心(KGC)根据主密钥和用户标识计算得出,用户的公钥由用户标识唯一确定,因而用户不需要通过第三方保证其公钥的真实性。
  • 可支持实现公钥加密、密钥交换、数字签名等安全功能

Hash函数与数字签名

​#Hash#​函数

杂凑函数简称Hash函数,它能够将任意长度的信息转换成固定长度的哈希值(又称摘要和消息摘要),并且任意不同消息或文件所生成的哈希值是不一样的。

主要用于保护消息或文件的完整性和密码信息的安全存储

Hash算法

Hash算法又称杂凑算法、散列算法、数据摘要算法或哈希算法。

​#MD5#​算法

  • MD5(Message Digest Algorithm-5)
  • 以512位数据块为单位来处理输入,产生128位的消息摘要
  • 用于文件和消息的完整性校验,密码信息的安全存储

​#SHA#​算法

  • SHA(Secure Hash Algorithm)
  • SHA-1以512位数据块为单位来处理输入,产生160位的哈希值
  • 已发布的版本有SHA-2、SHA-3
  • 哈希值长度有:SHA-224、SHA-256、SHA-384、SHA-512

​#SM3#​国产算法

  • 该算法消息分组长度为512比特,杂凑值为256比特
  • 采用Merkle-Damgard结构

​#数字签名#​

数字签名(Digital Signature)是指签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果。该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。

数字签名具有与手写签名一样的特点:
  • 可信的
  • 不可抵赖
  • 不可伪造
  • 不可重用
  • 不可修改

数字签名至少满足三个条件:

  • 非否认。签名者事后不能否认自己的签名
  • 真实性。接受者能验证签名,而任何其他人都不能伪造签名
  • 可鉴别姓。当双方关于签名的真伪发生争执时,第三方能够解决双方之间发生的争执
- 数字签名方案
	- 签名算法(密钥保密)
	- 验证算法(密钥公开)
	- 典型数字签名方案
		- RSA签名体制
		- Rabin签名体制
		- ELGamal签名体制
		- DSS(Data Signature Standard)

签名基本流程

image

验证过程

image

密码管理与数字证书

密码管理

- 密码管理
	- 密钥管理
		- 密钥生成
		- 密钥存储
		- 密钥分发
		- 密钥使用
		- 密钥更新
		- 密钥撤销
		- 密钥备份
		- 密钥恢复
		- 密钥销毁
		- 密钥审计
	- 密码管理政策
		- 密码
			- 核心密码
			- 普通密码
			- 商用密码
	- 密码测评
		- 安全性
		- 合规性
- 商用密码检测中心
	- 商用密码产品密码检测
	- 信息安全产品认证密码检测
	- 含有密码技术的产品密码检测
	- 信息安全等级保护商用密码测评
	- 商用密码行政执法密码鉴定
	- 国家电子认证根CA建设和运行维护
	- 密码技术服务
	- 商用密码检测标准规范制定

​#数字证书#​

数字证书(Digital Certificate)也称公钥证书,是由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。

数字证书基本信息域:

序号 项目名称 描述
1 version 版本号
2 serialNumber 序列号
3 signature 签名算法
4 issuer 颁发者
5 validity 有效日期
6 subject 主体
7 subjectPublickeyinfo 主体公钥信息
8 issuerUniqueID 颁发者唯一标识符
9 subjectUniqueID 主体唯一标识符
10 extensions 扩展项

用户证书实例

1f83513e9aa3266c3eaab8fcdc3269b

CA

CA数字证书认证系统的简称,一般基于PKI技术建立

​#CA#​提供的服务

- CA提供的服务
	- 申请
	- 审核
	- 签发
	- 查询
	- 发布
	- 吊销

数字证书认证系统的构成及部署

98416148a52913f4468c4321ca6efe6

数字证书认证系统逻辑上可分为核心区、服务区、管理区

安全协议

​#Diffie-Hellman#​密钥交换协议

DH密钥交换协议基于求解离散对数问题的困难性,即对于下述等式:

​#SSH#​

Secure Shell,即安全外壳
flowchart LR R1[SSH] R2[SSH传输层协议] R3[SSH用户认证协议] R4[SSH连接协议] r2.1[提供算法协商] r2.2[密钥交换] r2.3[实现服务器认证] r2[形成一个加密的安全连接] r2.4[提供完整性] r2.5[保密性] r2.6[压缩选项服务] r3.1[口令认证] r3.2[公钥认证] r3.3[主机认证] r3.4[认证用户] R1 --- R2 --- r2.1 & r2.2 & r2.3 -.-> r2 --> r2.4 & r2.5 & r2.6 R1 --- R3 -- 使用 --> r3.1 & r3.2 & r3.3 --> r3.4 R1 --- R4

image

image

密码学网络安全应用

主要用于以下五方面:

  • 身份鉴别
  • 访问控制
  • 加密传输
  • 加密存储
  • 完整性校验