密码学

0x01 基本概念

密码学(Cryptology) = 密码编制学(Cryptography) + 密码分析学(Cryptanalysis)

密码学基本安全目标包括三个方面:保密性(Confidentiality)、完整性(Integrity)、可用性(Availabilty)

0x02 基本安全目标

保密性:确保信息仅被合法用户访问,而不被泄漏给非授权用户、实体或过程,或供其利用的特性。

注:“访问”的内涵丰富,包括读写、浏览、打印、判断是否存在等

完整性:所有资源只能由授权方或以授权的方式进行修改,保证信息的正确生成、存储和传输

可用性:所有资源在适当的时候可以由授权方访问,信息可被授权实体访问并按需求使用的特性

0x03 密码体制

一个密码系统,称为密码体制(Cryptosystem),由五部分组成:

如果密码体制的Kd=Ke,或由其中一个很容易推出另一个,则成为单密钥密码体制或对称密码体制或传统密码体制。否则称为双密钥密码体制或非对称密码体制。进而,如果在计算上Kd不能由Ke推出,这样Ke公开也不会损害Kd的安全,于是可将Ke公开,这种密码体制也称为公开密钥密码体制,简称公钥密码体制。

密码分析者攻击密码的方式主要有三种:

(1)穷举攻击

(2)数学分析攻击

(3)基于物理的攻击

此外,根据密码分析者可利用的数据资源来分,攻击密码的类型可以分为四种:

(1)仅知密文攻击

(2)已知明文攻击

(3)选择明文攻击

(4)选择密文攻击

一个密码,攻破无解,则称为是绝对不可破译的。理论上存在,即“一次一密”密码,实际不实用。因此,更有意义的是在计算上不可破译的密码。

0x04 古典密码

(一)置换密码:把明文中的字母重新排列,字母本身不变,但其位置改变

(二)代替密码:首先构造一个或多个密文字母表,然后用密文字母表中的字母或字母组来代替明文字母或字母组,各字母或字母组的相对位置不变,但其本身改变了。根据代替所使用的密文字母表的个数可分成单表代替密码、多表代替密码和多名代替密码。

其中,单表代替密码又称为简单代替密码。有几种典型的简单代替密码:

(1)加法密码

f(ai)=bi=aj

j=i+k  mod n

其中,ai属于A,k是满足0<k<n的正整数

最著名的是凯撒密码,k=3

(2)乘法密码

f(ai)=bi=aj

j=ik  mod n

其中,要求k与n互素

(3)仿射密码

乘法密码和加法密码相结合便形成仿射密码

f(ai)=bi=aj

j=ik1 + k0  mod n

其中,要求(k1 , n) =1, 0<=k0<n,且不允许同时有k1=1 k0=0

加密用到多个密文字母表,称为多表代替密码。

最著名的就是Vigenre密码

(三)代数密码

又称Vernam密码,奠定的序列密码的基础

明文、密钥和密文均用二元数字序列表示

加解密简单,只需要把密文和密钥的二元序列对位异或(模2加)即可。

古典密码的破译方法:

(1)穷举分析

(2)统计分析

1x01 分组密码

设M是明文,分组密码将M划分一系列明文块Mi,对每一块Mi都用同一个密钥Ke加密

(一)DES算法

数据加密标准,DES,对合运算,面向二进制。

明文、密文和密钥的分组长度都是64位

DES弱点:

(1)密钥短

(2)存在弱密钥

三重DES

密钥长度168位,使用方便,能够抵抗穷举攻击,但根本缺点在软件实现速度慢

(二)AES算法

是RIJNDAEL算法。SP结构。

安全性高,目前还没发现缺点。

(三)SM4算法

我国第一次公布的商用密码算法。对合运算。

1x02 分组密码工作模式

电子代码本模式ECB

密码分组链接模式CBC

输出反馈模式OFB

密码反馈模式CFB

2x01 序列密码

一个短的种子密钥通过某种算法产生出长的密钥序列。加解密器都是异或加法器。由于通信双方必须能够产生相同的密钥序列,所以这种密钥序列不可能是真随机序列,只能是伪随机序列,只不过具有良好的随机性和不可预测性。

2x02 线性移位寄存器序列

移位寄存器

反馈函数

线性移位寄存器的特点:仅当连接多项式g(x)为本原多项式时,其线性移位寄存器的输出序列为m序列。

2x03 RC4序列密码

参数

算法,有限状态自动机

安全性高

2x04 ZUC算法

祖冲之算法,是移动通信3GPP机密性算法EEA3和完整性算法EIA3的核心,同步流算法,逻辑上三层结构设计

3x01 Hash函数

Hash函数将任意长的报文M映射为定长的hash码h,也称报文摘要

提供保密性、报文认证以及数字签名功能

Hash函数满足性质:

(1)单向性(2)抗弱碰撞性(3)抗强碰撞性

3x02 SHA算法

通常称为SHA-1。

算法步骤:

(1)填充报文

(2)初始化缓冲区

(3)执行算法主循环

(4)输出

3x03 SM3算法

基本迭代结构采用增强型的Merkle-Damgard结构

压缩函数包含消息扩展和压缩主函数两个部分,压缩主函数采用非对称Feistel结构

4x01 公钥密码体制

从根本上克服传统密码在密钥管理上的困难,而且容易实现数字签名,从而适合计算机网络环境应用。

单向陷门函数

公钥加密模型

公钥与私钥

公钥加密安全性

4x02 RSA密码

基本的RSA密码体制:参数、加密算法、解密算法

特点:加解密算法可逆,可交换,确保秘密性和数据真实性。核心运算是模幂运算,效率高

4x03 ELGamal密码

数学基础:离散

基本的ELGamal密码体制:参数、加密算法、解密算法

4x04 椭圆曲线密码ECC

基本概念

4x05 SM2椭圆曲线公钥加密算法

我国商用密码体系中用来替换RSA算法

加解密流程

5x01 数字签名

一个数字签名体制包括两个方面的处理:施加签名和验证签名

5x02 典型数字签名体制

基本的RSA签名体制算法与安全性

基本的ELGamal签名体制算法与安全性

基本的ECC签名体制算法与安全性

5x03 SM2椭圆曲线数字签名算法

参数选择

产生签名

验证签名

6x01 认证

认证,又叫鉴别或确认,是证实某事是否名副其实或是否有效的一个过程

认证和加密的区别在于:加密用以确保数据的保密性;而认证用以确保报文发送者和接收者的真实性以及报文的完整性

6x02 身份认证

(一)口令认证

几种改进的口令验证机制:

(1)利用单向函数加密口令

(2)利用数字签名方法验证口令

(3)口令的双向验证

(4)一次性口令

(二)生物特征识别

6x03 报文认证

报文源的认证

报文宿的认证

报文内容的认证

产生认证码的方法有三种:

(1)报文加密

(2)消息认证码MAC

(3)基于hash函数的消息认证码

7x01 密钥管理

密钥管理基本原则:区分密钥管理的策略和机制;全程安全原则;最小权利原则;责任分离原则;密钥分级原则;密钥更换原则;密钥应当选择长度足够,随机等

密钥的分级安全性:一级密钥、二级密钥、主密钥

密钥的生存周期

7x02 对称密码的密钥管理

对称密钥的生成

对称密钥的分发

对称密钥的存储

7x03 非对称密码的密钥管理

非对称密码的生成

公钥基础设施PKI,组成部分:

(1)签证机构CA

(2)注册机构RA

(3)证书的签发

(4)证书目录

(5)证书的认证

(6)证书的撤销

(7)信任模型