1. 密码学基本概念
1.1 密码学的基本安全目标
1.2 密码体制
1.3 古典密码
2. 分组密码
2.1 分组密码的概念
2.2 DES
2.3 AES
2.4 SM4
2.5 分组密码工作模式
3. 序列密码
3.1 序列密码的概念
3.2 线性移位寄存器序列
3.3 RC4序列密码
3.4 ZUC
4. Hash函数
4.1 Hash函数的概念
4.2 SHA
4.3 SM3
4.4 HMAC
5. 公钥密码体制
5.1 公钥密码体制的概念
5.2 RSA
5.3 EIGamal
5.4 椭圆曲线密码
5.5 SM2椭圆曲线公钥加密
6. 数字签名
6.1 数字签名的概念
6.2 典型数字签名体制
6.3 SM2椭圆曲线数字签名
7. 认证
7.1 认证的概念
7.2 身份认证
7.3 报文认证
8 密钥管理
8.1 密钥管理的概念
8.2 对称密钥的生成
8.3 非对称密钥管理
密码学作为信息安全的关键技术,其安全且标主要包括三个非常重要的方面,保密性(confidentiality)、完整性(integrity) 和可用性(availability)
明文空间M,密文空间C,密钥空间K<加密密钥Ke,解密密钥Kd>,加密算法E,解密算法D
加密:
C=E(M, Ke)
解密:
M=D(C, Kd)=D(E(M, Ke), Kd)
如果一个密码体制的Kd= Ke,或由其中一个很容易推出另一个,则称为单密钥密码体制或对称密码体制或传统密码体制。否则称为双密钥密码体制。
置换密码
排成一个矩阵,变换顺序(行变列,列变行)
经不起已知明文攻击
代替密码
明文字母表:A={a0, a1, ........, an-1}
密文字母表:B={b0, b1, ........, bn-1}
A —> B 映射得到密文
(1)加法密码
f(ai)=bi=aj
j=i+k mod n k:0 (2)乘法密码 f(ai)=bi=aj j=i*k mod n (3)仿射密码 f(ai)=bi=aj j=ik1+k0 mod n (4)代数密码 明文:,密钥:,密文: 经不起已知明文攻击 将M划分为一系列的明文块,每一块都用同一个密钥Ke进行加密 美国政府于1977年1月5日颁布作为数据加密标准(Data Encrvption Standard, DES)。DES的设计目标是,用于加密保护静态存储和传输信道中的数据,安全使用10~15年。 面向二进制,能加解密任何形式的数据 对合运算 56位密钥 明文初始IP置换后分成左32位L,右32位R
参考文章(https://blog.csdn.net/qq_43065505/article/details/104103948) 2000 年10月2日美国政府正式宣布选中比利时密码学家 Joan Daemen 和Vincent Rijmen 提出的一种密码算法RINDAEL作为AES。2001 年11 月26日,美国政府正式颁布AES为美国国家标准(编号为FIST PUBS 197)。 最短密钥为128位 至今尚未发现RUNDAEL算法的严重缺陷。 参考文章(https://blog.csdn.net/qq_43065505/article/details/104140158) 2006年我国国家密码管理局公布了无线局域网产品使用的SM4密码算法,这是我国第一次公布自己的商用密码算法。 SM4密码算法是一个分组算法;数据分组长度为128比特,密钥长度为128比特;加密算法与密钥扩展算法都采用32轮迭代结构;SM4密码算法以字节(8 位)和字(32 位)为单位进行数据处理;SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。 可以抵抗差分攻击、 线性攻击等现有攻击;根据目前的公开文献,尚未发现SM4有重要缺陷。 将明文和密钥划分为位(bit)或字符,对于明文序列中的每一位或字符都用密钥序列中的对应分量来加密 f(s0,s1, ... ,sn-1)=g0s0+g1s1+...+gn-1sn-1 g(x)=gnx^n+gn-1x^n-1+...+g1x+g0 设g(x)=x^4+x+1, g(x)为本原多项式,以其为连接多项式的线性移位寄存器如图所示,其输出序列为10101010111000...,它是周期为2^4 - 1=15 的m序列。 RC4庄列密码是美国RSA数据安全公司设计的一种序列密码。 RC4算法取n=8,使用2^n=2^8=256个字节构成的s表和两个字节(n=8 位)指针(I 和J),总共需要258字节的存储空间。s表的值S0,S1, ... ,S255 是0,1, ... ,255 的一一个排 列。I和J的初值为0.其中表值和指针值的算术运算按模22"=256进行。 我们可以把RC4算法看成一个有限状态自动机。把S表和J、I指轩的其体取值称为RC4的一个状态:T= 输出函数: 以k为密钥字符,RC4有限状态自动机不停运转,便源源不断的产生出密钥字符序列。加密时,将密钥字符k与明文字符模2相加便完成了加密。解密时,将密钥字符k 与密文字符模2相加便完成了解密。 抗穷举攻击,算法简单,软件实现容易,加密速度快;可能是商用领域应用最广的序列密码;Windows、 Lotus Notes等软件系统 都采用了RC4算法,SSL/TLS(安全套接字层协议/传输层安全协议)和WEP协议(Wired Equivalent Privacy)也都应用了RC4密码。 ZUC(ZU Chongzhi)算法,即祖冲之算法,是移动通信3GPP机密性算法EEA3和完整性算法EIA3的核心,是中国自主设计的加密算法,是中国第一个成为国际密码标准的密码算法。ZUC是一个同步流密码算法。 ZUC算法在逻辑上采用三层结构设计,如图所示。 ZUC算法本质上是一种非线性序列产生器。由此,在种子密钥的作用下,可以产生足够长的安全密钥序列。把与密钥序列与明文数据模2相加,便完成了数据加密;把密钥序列与密文数据模2相加,便完成了数据解密。 Hash函数将任意长的报文M映射为定长的hash码h,hash码也称报文摘要,它是所有报文位的函数。它具有错误检测能力,即改变报文的任何一位或多位,都会导致hash码的改变。在实现认证过程中发送方将hash码附于要发送的报文之后发送给接收方,接收方通过重新计算hash码来认证报文。Hash函数可提供保密性、报文认证以及数字签名功能。 SM3算法采用了典型的Merkle-Damgard迭代结构,简称为M-D结构,算法填充方式为消息末尾添加消息长度,即M ||1||0(z)||L(M),其中M是消息,L(M)是消息的长度的64比特二进制表示,(Z) 是使得填充后消息长度为512长度倍数的最小填充“零” 的长度,这种填充方式的M-D结构被称为加强型Merkle-Damgard结构。该结构的图形描述见图。 SM3算法压缩函数包含消息扩展和压缩主函数两个部分 完整性指数据正确无误、完整不缺,使数据免受未授权的毁坏,就是确保数据的完 整性。报文内容认证使接收方能够确认报文内容的真实性和完整性,这可通过验证认证码(Authentication Code)的正确性来实现。 消息认证码MAC (Message Authentication Code)是消息内容和秘密钥的公开函数,其输出是固定长度的短数据块; 假定通信双方共享秘密钥K,若发送方A向接收方B发送报文M,则A计算MAC并将报文M和MAC发送给接收方;接收方收到报文后用相同的秘密钥K进行相同的计算得出新的MAC,并将其与接收到的MAC进行比较,若二者相等,则(1)接收方可以相信报文未被修改。如果攻击者改变了报文,因为已假定攻击者不知道秘密钥,所以他不知道如何对MAC作相应修改,这将使接收方计算出的MAC将不等于接收到的MAC。(2)接收方可以相信报文来自意定的发送方,因为其他各方均不知道秘密钥,因此他们不能产生具有正确MAC的报文。 利用传统密码进行保密通信,通信的双方必须首先预约持有相同的密钥才能进行。 而私人和商业之间想通过通信工具洽谈生意又要保持商业秘密,有时很难做到事先预约密钥 单向陷门函数:设函数y=f(x),且f具有陷门,如果满足以下两个条件,则称为单向陷门函数: 实际上已找到的单向性足够的函数有: 根据公开密钥密码的基本思想,可知一个公开密钥密码应当满足以下条件: 由以上算法可知,RSA密码的公开加密钥Ke = 。 1.密钥生成 用户随机地选择一个整数d作为自己的秘密的解密钥, 1≤d≤p-1,计算y=a^d mod p, 取y为自己的公开的加密钥。 由公开钥y计算秘密钥d,必须求解离散对数,而这是极困难的。 2.加密 将明文消息M(0≤M≤p-1)加密成密文的过程如下: 3.解密 将密文(C,C)解密的过程如下: 目前,椭圆曲线密码已成为除RSA密码之外呼声最高的公钥密码之一。它密钥短、签名短,软件实现规模小、硬件实现电路省电。普遍认为,160位长的椭圆曲线密码的安全性相当于1024位的RSA密码,而且运算速度也较快。 设p是大于3 的素数,且4a^3+27b^2≠0 mod p,称曲线y^2=x^3+ax+b a,b∈GF(p) 为GF(p)上的椭圆曲线。 由椭圆曲线可得到一个同余方程:y^2 = x^3 +ax +b mod p 其解为一个二元组(xy),其中x,y∈GF(p),将此二元组描画到椭圆曲线上便为一个点,于是又称其为解点。 1、加密: 2、 解密: 一种完善的签名应满足以下三个条件: 设施加签名的算法为SIG,产生签名的密钥为K,被签名的数据为M.产生的签名 信息为S则有: SIG(M,K)=S 设验证签名的算法为VER,用VER对签名S进行验证,可鉴别S的真假。即 对于RSA密码D(E(M)=(M^e)^d=M^ed=(M^d)^e =E(D(M)) mod n 所以RSA可同时确保数据的秘密性和真实性。 1、产生签名 2、验证签名 用户的身份认证是许多应用系统的第一道防线, 其目的在于识别用户的合法性,从而阻止非法用户访间系统。 1、口令认证 2、生物特征识别 通过识别用户的生理特征来认证用户的身份是安全性极高的身份认证方法。把人体特证要用于身份识别,则它应具有不可复制的特点,必须具有唯一性和稳定性。研究和经验表明,人的指纹、掌纹、面孔、发音、虹膜、视网膜、骨架等都具有唯一性和稳定性的特征,即每个人的这些特征都与别入不同且终生不变,因此可以据此进行身份识别。 但在网络环境中,攻击者可进行以下攻击: 因此,报文认证必须使通信方能够验证每份报文的发送方、接收方、内容和时间的真实性和完整性。也就是说,通信方能够确定: 密钥管理包括密钥的产生、存储、分配、组织、使用、停用、更换、销毁等一系列技术问题。 每个密钥都有其生命周期,要对密钥的整个生命周期的各个阶段进行全面管理。 密钥管理是一个很困难的问题,历史表明,从密钥管理的途径窃取秘密要比单纯从破译密码算法窃取秘密所花的代价小得多。因此,首先要了解密钥管理的一些基本原则;区分密钥管理的策略和机制:全程安全原则、最小权利原则、责任分离原则、密钥分级原则、密钥更换原则、密钥应当选择长度足够,随机等。 为了简化密钥管理工作,可采用密钥分级的策略,将密钥分为三级: 1、对称密钥的生成 对密钥的一个基本要求是要具有良好的随机性、长周期性、非线性、等概性以及不可预测性等。一个真正的随机序列是不可再现的,任何人都不能再次产生它。 2、对称密钥的分配 3、对称密钥的存储 1、非对称密钥的生成 公开密钥密码体制本质上是 一种单向陷门函数,它们都是建立在某一数学难题之上的。不同的公开密钥密码体制所依据的数学难题不同,因此其密钥产生的具体要求不同。它们都必须满足密码安全性和应用的有效性对密钥所提出的要求。 2、公钥基础设施PKI2. 分组密码
2.1 分组密码的概念
2.2 DES
2.3 AES
2.4 SM4
2.5 分组密码工作模式
3. 序列密码
3.1 序列密码的概念
3.2 线性移位寄存器序列
3.3 RC4序列密码
3.4 ZUC
4. Hash函数
4.1 Hash函数的概念
4.2 SHA
4.3 SM3
4.4 HMAC
5. 公钥密码体制
5.1 公钥密码体制的概念
5.2 RSA
5.3 EIGamal
5.4 椭圆曲线密码
5.5 SM2椭圆曲线公钥加密
6. 数字签名
6.1 数字签名的概念
6.2 典型数字签名体制
6.3 SM2椭圆曲线数字签名
7. 认证
7.1 认证的概念
7.2 身份认证
7.3 报文认证
8 密钥管理
8.1 密钥管理的概念
8.2 对称密钥的生成
8.3 非对称密钥管理