基础概念

研究信息加密和解密方法的科学与技术统称为密码学,是研究信息保密与破译的基本规律为对象的学科。

◆经典密码学:密码分析学、密码编码学。
现代密码学:密码分析学、密码编码学、密钥管理学。

经典密码学主要以实现信息的保密性为目的,现代密码学不仅可以实现信息的保密性,而且还可以实现信息的真实性、完整性、可用性、可审查性和可靠性等。

现代密码学最重要的原则是“一切秘密寓于密钥之中”。
算法是公开的,但密钥必须是保密的
当加密完成后,可以将密文通过不安全的渠道发送给收信人,只有拥有密钥的收信人才可以对密文进行解密(即反变换得到明文)。

保密通信模型:
香农 -> 概率统计观点 -> 通信系统

1
2
信源->编码器->信道->解码器->接收者
干扰源->信道

保密通信系统
(不赘述)

在私钥密码体制和公钥密码体制下,保密通信模型的差别主要体现在加密密钥的分发或传递上。私钥密码体制下,接收方和发送方的共享密钥必须通过安全信道传递。而在公钥密码体制下,发送方只需要认证所使用的加密密钥是接收方的。

柯克霍夫原则
密码分析者->密码算法-x->明文/密钥
密码系统的安全性->取决于->随时改变的密钥

密码算法的构成
明文、密文、密钥、加密算法、解密算法。

密码算法的分类
替换(内容改变)、换位(位置打乱)
对称、非对称
序列、分组
单向变换、双向变换

古典密码算法分为传统隐写术、替换、换位密码算法。其中隐写术就是把秘密信息写在普通载体中。

序列密码分为同步序列密码和自同步序列密码。它的安全性取决于密钥流生成器的设计。而产生密钥流最重要的部件是线性反馈移位寄存器

同步序列密码的密钥流是独立于消息流而产生的,无差错传播。自同步不是,有差错传播。

分组密码与序列密码的区别?

攻击者对密码系统的攻击类型:唯密码攻击、已知明文攻击、选择明文攻击、选择密文攻击、选择文本攻击。

单字符单表替换密码

单字符表替换密码(Monoalphabetic Cipher)是古典对称加密算法的基础,明文与密文使用同一字符集,通过固定的单一字符映射表实现逐字符替换,加密、解密共用该映射表。

凯撒密码
单表替换的简化版,替换规则为字符固定移位 N 位

1
2
加密公式:C=(P+N)modM
解密公式:P=(CN)modM

➢请思考加密过程…

仿射密码
经不起穷举分析,密钥空间不算大26x11。

1
加密公式:C=(Px+N)modM

➢请思考加密过程…

单表替换密码的致命缺陷:无法抵抗频率分析攻击(字符频率、组合规律不变)。

单字符多表替换密码

多表替换密码是古典对称加密算法的一种,明文与密文使用同一字符集,加密时根据预设规则,轮换使用多张字符映射表(而非单一张固定表),解密时按相同规则反向轮换映射,加密与解密共用同一套密钥(密钥决定替换表的选择及轮换规则)。

维吉尼亚密码

1
2
3
4
5
加密公式:Ci​=(Pi​+Ki​)mod26
Ci​:第 i 位密文字符的下标;
Pi​:第 i 位明文字符的下标;
Ki​:第 i 位密钥字符的下标(密钥字循环使用,匹配明文长度);
mod26:取模运算,规避字符下标越界

➢请思考加密过程…

单字符多表替换密码算法还有Vernam密码算法、Hill(希尔)算法、playfair密码算法。

换位密码算法

本质上就是把明文的字母顺序打乱。

列换位

周期换位
先分组,再按照密钥词打乱顺序。

DES 数据加密标准

数据加密标准(Data Encryption Standard,DES)是一种对称分组密码算法,用于将 64 位明文分组加密为 64 位密文分组,加密与解密共用同一 64 位密钥(实际有效密钥 56 位,8 位为奇偶校验位),核心基于 Feistel 网络结构,通过 16 轮迭代实现 “混淆” 与 “扩散”,最终完成数据加密

参数 具体说明
明文分组长度 64 位(固定),不足 64 位需按约定规则补位
密文分组长度 64 位(固定),与明文分组长度一致(分组加密的核心特征)
密钥长度 64 位(输入密钥),其中 8 位为奇偶校验位(用于校验密钥完整性),实际有效密钥 56 位
迭代轮数 16 轮(固定),每轮迭代使用不同的轮密钥(共 16 个轮密钥)
核心结构 Feistel网络,每轮迭代包含 “替代 - 置换” 操作
  1. 混淆(Confusion):通过复杂的密钥与明文映射关系,隐藏明文与密文、密钥与密文的关联,让攻击者无法通过密文推测明文或密钥(对应 S 盒、轮密钥异或操作);
  2. 扩散(Diffusion):将明文中的每一位信息均匀扩散到密文的每一位中,让明文的微小变化导致密文的巨大变化(对应 P 盒、扩展置换、多轮迭代);

初始置换IP -> 16轮Feistel迭代 -> 逆初始置换
◆初始置换IP,对 64 位明文进行固定置换(置换表是一个8x8的矩阵),打乱明文位序,开启扩散过程。
◆16轮Feistel迭代,将输入分为左右两部分,下一轮左半部分来自上一轮右半部分,而下一轮右半部分是上一轮左半部分与F(上一轮右半部分R,轮子密钥K)异或运算获得的。
◆那么F函数计算过程又是什么?E盒扩展置换 -> 轮密钥异或 -> S 盒代替压缩(唯一非线性变换)-> P 盒置换
◆逆初始置换,对 16 轮迭代后的结果进行反向置换(与初始置换对称),输出 64 位密文(C)。

DES算法由于其密钥较短,难以抵抗现有的攻击,因此后来不再作为加密标准。后来就是AES出现。

AES 高级加密标准

AES(高级加密标准,Advanced Encryption Standard)是全球通用的对称分组密码算法,替代 DES 成为主流,核心用于数据加密保护。

Rjndael密码算法是一种使用灵活、明文分组长度可变、密钥长度也可变的分组密码算法。明文分组长度和密钥长度彼此独立地确定为128 bit、192 bit 或256 bit,因而 Rijndael算法有9种不同的版本,而迭代次数与明文分组长度和密钥长度有关。

不采用 Feistel 密码结构,而是进行多轮的代替、行移位、列混合和轮密钥加操作。因此 Rindael 算法本质上是采用代替-置换网络(S-P) 的分组密码算法

NIST 选中Rijindael算法作为 AES算法,**限定了明文分组大小为128 bit,而密钥长度可为 128 bit, 192 bit 或 256 bit。因而实际上AES 有三个版本:AES-128、AES-192、AES256,相应的选代轮数为 10轮、12轮、14轮

AES 的基本运算单位是字节(Byte)。加密和解密过程都是在一个4X4的字节矩阵上运作,这个矩阵又称为“体(state)”或者“状态”。字节矩阵初始值是一个明文块。

分组密码算法的五种工作模式

ECB 电子密码本模式

将每一个明文分组独立加密,密文分组与明文分组一一对应,如同 “查密码本”。

流程示意图

图源:March

优点 缺点 用途
实现简单。不同明文可并行运算,硬件实现速度快。无差错传播,密文组丢失不会影响其他分组解密。 1. 无分组关联,相同明文分组→相同密文分组,泄露明文规律,易被频率分析攻击;2. 无法隐藏明文的结构(如明文是图片、文本,密文仍能体现原始结构);3. 抗攻击能力极差,无法抵御重放、篡改攻击(篡改单组密文,仅影响对应明文分组) 传送短数据(如一个加密密钥)。

仅用于短数据、无安全需求的场景(如测试、简单数据标识),绝对不能用于敏感数据加密(如密码、文件、传输数据),是唯一不推荐用于实际场景的模式。

CBC 密文分组链接模式

Cipher Block Chaining,CBC。CBC是链式模式的核心,前一组密文与当前组明文关联,通过 “异或运算” 将分组串联,解决ECB的重复密文问题,是DES、AES 的主流工作模式之一。

需引入初始向量 IV,① 随机生成(每次加密需不同 IV);② 无需保密,但需加密方和解密方同步(IV 错误会导致前两组明文解密失败);③ 不可重复使用

流程示意图

图源:March

优点 缺点 用途
1. 分组关联,相同明文分组→不同密文分组,抵御频率分析攻击;2. 抗篡改能力强(篡改单组密文,会影响当前组 + 后续所有分组明文),一定程度抵抗重放、嵌入和删除攻击;3. 兼容性极强,支持 DES、AES 等所有分组密码;4. 安全性高,适用于绝大多数敏感数据场景;5.可以隐蔽明文数据格式的规律和统计特性。 1. 不支持并行加密(需等待前一组密文生成,才能加密当前组),加密速度略慢于 ECB;2. 无法随机访问密文分组(解密第 i 组,需先解密前 i-1 组);3. IV 泄露 / 重复使用,会降低安全性;4.具有有限差错传播,不能纠正传播中的同步差错。 传输数据分组,认证传输的数据

最主流的模式。适用于有安全需求的通用场景:文件加密、数据传输加密(如 HTTPS、VPN)、数据库敏感字段加密、金融数据加密等。

CFB 密文反馈模式

Cipher Feedback,CFB。它是 “分组密码模拟流密码” 的模式,不直接加密明文分组,而是加密前一组密文,生成 “密钥流”,再与明文异或得到密文,分组间通过密钥流关联,适配 “流式数据” 加密。

  • 需引入初始向量 IV(长度 = 分组长度),要求与 CBC 一致(随机、同步、不重复);
  • 加密单位:可灵活调整(如 1 位、8 位、分组长度),无需固定分组加密(适配流式数据)。

流程示意图

图源:March

优点 缺点 用途
1.可以隐蔽明文数据格式的规律和统计特性。2.具有自同步序列密码的优点 3.具有差错传播。4.分组密码算法作为一个密钥流产生器。 5. 一定程度上抵抗重放、删除和嵌入等攻击。 有差错传播;速度慢。 传送数据流,认证传送的数据流。

OFB 输出反馈模式

Output Feedback,OFB。是CFB的改进版,同样模拟流密码,密钥流与密文无关,仅由IV和密钥生成,通过 “加密算法输出反馈” 生成连续密钥流,与明文异或得到密文,核心优势是 “无差错传播”。

  • 需引入 IV(长度 = 分组长度),要求与 CBC、CFB 一致;
  • 核心区别于 CFB:密钥流不依赖密文,仅依赖 IV 和密钥(一旦 IV 和密钥确定,密钥流固定)。

流程示意图

图源:March

优点 缺点 用途
1.可以隐蔽明文数据格式的规律和统计特性。2.具有同步序列密码的优点 3.无差错传播。4.分组密码算法作为一个密钥流产生器。 5. 一定程度上抵抗重放、删除和嵌入等攻击。 对于密文被篡改难以进行检测;速度慢。 有挠信道上(如卫星通信)传送数据流。

CTR 计数器模式

Counter,CTR。它是目前最先进、最常用的现代分组密码模式,无需 IV,通过 “计数器” 生成密钥流,将计数器值加密后作为密钥流,与明文异或得到密文,兼具并行性和高安全性,是 AES 的首选模式。

计数器要求:① 每次加密,计数器从初始值(Nonce)开始,逐次递增(如 Nonce=0,后续为 1、2、…、n);② Nonce 需随机生成,且同一密钥下不可重复(Nonce 重复会导致密钥流重复,泄露明文);③ Nonce 无需保密,仅需同步。

流程示意图

图源:March

优点 缺点 用途
1.可以隐蔽明文数据格式的规律和统计特性。2.实现简单、可预处理、并行处理。3.无差错传播。4.分组密码算法作为一个密钥流产生器。 具有同步序列密码的缺点,密文篡改难以检测,无法实现完整性检测。Nonce重复使用会导致严重安全漏洞(密钥流重复,明文泄露),对Nonce生成要求极高。 实时性与速度要求较高的加密场合。

适用于现代主流场景,优先推荐使用:云计算数据加密、大数据加密、区块链数据加密、高并发数据传输(如电商平台)、AES 加密的首选模式。

对比

对比维度 ECB CBC CFB OFB CTR
分组关联 无(独立) 有(密文链接) 有(密钥流链接) 有(密钥流反馈) 无(计数器独立,密钥流并行)
是否需要 IV/Nonce 是(IV) 是(IV) 是(IV) 是(Nonce)
并行加密 支持 不支持 不支持 支持(密钥流可提前生成) 支持(最优)
差错传播 无(仅影响单组) 有(影响当前 + 后续) 有(影响当前 + 1 组) 无(仅影响单组) 无(仅影响单组)
安全性 极低(淘汰) 极高(推荐)
核心适用场景 测试、短数据(无安全需求) 通用场景(文件、传输) 流式数据(音视频) 不可靠传输(WiFi) 现代高并发、大数据加密

线性反馈移位寄存器

移位寄存器流密码产生密钥流的一个主要组成部分。
如图是一个3级反馈移位寄存器,其初始状态为(a1 ,a2 ,a3 )=(1,0,1)。

1
2
3
4
5
6
7
8
状态(a3,a2,a1)   输出a1
(a3'=a1*a2异或a3)
1 0 1 1 //初始
1 1 0 0
1 1 1 1
0 1 1 1
1 0 1 1 //进入第二次循环
1 1 0 0

即输出序列为101110111011…,周期为4。

线性反馈移位寄存器LFSR(linear feedback shift register),实现简单、速度快、有较为成熟的理论,成为构造密钥流生成器的最重要的部件之一。

下图中常数c1、c2…cn取0或1,0开1闭。

请思考输出序列公式…

例:下图是一个5级线性反馈移位寄存器,其初始状态为(a1,a2,a3,a4,a5)=(1,0,0,1,1)。

请思考输出序列满足的公式…

n级线性反馈移位寄存器产生的序列{ai}的周期达到最大值2^n-1时,称{ai}为n级m序列。

RSA

算法描述

麻省理工学院Ron Rivest、Adi Shamir和Leonard Adleman于1978年一起提出RSA加密算法,并受到广泛关注。2002年度美国计算机协会(ACM)为三位学者颁发图灵奖。

回顾公钥密码体制的基本思想
Bob —-> Alice

  • 允许Alice生成自己的公钥私钥。
  • Bob拿到Alice的公钥—>RSA算法加密算法—>明文变密文—>发送给Alice。
  • 任何人获得密文后都没有办法恢复明文,只有拥有Alice私钥才能恢复明文—>安全共享。

必须要懂同余式和取模运算式!去问AI。
ed ≡ 2(mod z)表示ed%z = 2%z = 2。
ed = 1(mod z)表示ed = 1%z。

RSA算法描述
密钥产生

  1. 选取两个大素数p、q。
  2. n = p x q,z = (p - 1)(q - 1) = n的欧拉函数。
  3. 随机选取一个整数e,满足1<e<z,gcd(e, z) = 1(e,z互为质数)。
  4. 选取整数d,使得ed - 1 与能够被d完全整除。即ed≡1(mod z)
  5. 公钥(e, n),私钥(d, n)
    Alice公钥-加密
  6. 已知明文m
  7. 密文 c ≡ m^e (mod n)
    Alice私钥-解密
  8. 已知密文c
  9. 明文 m ≡ c^d (mod n)

例题:p = 13,q = 23,取e = 29。求d;当消息m = 9,求加密后的密文;对密文解密。
答案: d = -91 ≡ 173 (mod 264);211;9。
➢请拿出草稿本自己计算一遍…

RSA安全性基于分解大整数。总之,e、d都不能太小,不同用户取值模数n不同

平方乘算法

在实现RSA算法时,在提高指数运算速度上,可以采用这个方法。

例题引入:使用平方乘算法,求9726^3533 mod 11413。

除以 2 的余数(要么0要么1)
3533 = 2 × 1766 + 1
1766 = 2 × 883 + 0
883 = 2 × 441 + 1
441 = 2 × 220 + 1
220 = 2 × 110 + 0
110 = 2 × 55 + 0
55 = 2 × 27 + 1
27 = 2 × 13 + 1
13 = 2 × 6 + 1
6 = 2 × 3 + 0
3 = 2 × 1 + 1
1 = 2 × 0 + 1(商为0时终止运算)

所以把3533转化为二进制数为110111001101。

二进制从高位到低位,是1则平方上一次的结果再乘底数9726,是0则只需要平方上一次的结果。

为什么要用这种方法计算?
➢如果不用这种方法,用普通方法需要执行3533次乘法和模运算。而平方乘算法,循环的次数为12次,最多只需要执行12次平方、12次乘法和模运算,计算量大大减少。

Hash算法

算法概述

Hash算法又称为哈希算法、Hash函数、杂凑函数、散列函数和散列算法等,其函数值H(M)为哈希值、散列值、杂凑值、杂凑码、指纹、消息摘要等。它是公开算法,通常记为H或h,不需要密钥就能使用。

◆安全的哈希算法有以下六个基本要求:
(1)能够接受任意长度的消息作为输入。
(2)能够生成较短的固定长度的输出。
(3)对任何消息输人都应该能够容易和快速地计算出Hash值。
(4)应该具有单向性,也就是说,给定H(m),恢复消息m在计算上是不可行的。
(5)应该能够抗弱碰撞,即给定消息m和H(m),找到另外一个消息m≠m’,使H(m)=H(m’)在计算上是不可行的。
(6)应该能够抗强冲突,即找到两个有意义的消息m和m’,使得H(m)=H(m’)在计算上是不可行的。

◆从上面Hash算法基本要求的第(4)~第(6)条要求可以推导出Hash算法应该满足的三个一般安全特性:
(1)单向性:由消息的Hash值倒推出消息在计算上不可行,即给定H(m),想要计算
出n在计算上是不可行的。
(2)抗弱碰撞性:对于任何给定消息及其Hash值,找到另一个能映射出该Hash值的消单在计算上是不可行的,即给定的H(m),找到一个m≠m’,使得H(m)=H(m’)在计算上不可行。
(3)抗强碰撞性:找到任何两个不同的消息,它们的Hash值不同在计算上是不可行的,即找到两条消息m和m’,使得H(m)=H(m’)在计算上不可行。

SHA-1

安全杂凑算法(Secure Hash Algorithm, SHA)由美国NIST设计,于1993年作为联邦信息处理标准公布。MD5是128bit消息摘要长度。

中国的消息摘要是SM3。

接受一个最大长度为(2^64-1)bit,生成160bit的Hash值。与MD5相似,SHA1算法操作首先将输入消息划分为512bit块(64字节)(若最后一个数据块不满足长度要求,则按照一定的规则填充为512 bit 块) ,然后每个512 bit 块重复使用分块处理函数(压缩函数),最终输出 160 bit Hash 值。每512 bit 块以32 bit字为处理单位进行压缩,压缩函数包含4个回合运算,每个回合20步,总共80步。

SHA预处理

(1)填充消息:假设输入消息M,首先应该填充消息,保证输入SHA-1计算的整个消息长度是512 bit 的倍数。

  • 假设二进制消息M的长度为l bit,在原始消息M尾部增加1个“1”和k个“0”,l和k满足l+1+k ≡ 448 (mod 512),并且k为最小非负整数。
  • 然后在填充消息的末尾添加64 bit的块,该64 bit是记录二进制原始消息的长度,如果消息长度l值转换为二进制后长度小于64,则在左边补0,右边是l转化为二进制的值,使得块的长度刚好等于64 bit。

例:假设输入消息“abe”,采用SHA-1计算其 Hash值,求填充后的消息。
请思考过程…

先将每个字符映射为对应的 ASCII 码(十进制),再将 ASCII 码转换为 8 位二进制数。
a->97->01100001
b->98->01100010

答案:

(2)填充后的消息分组:填充后的整个消息按512 bit块进行分组;而每个512 bit块又可分为16个32 bit字。
(3)初始化变量:SHA-1 的初值变量IV是SHA-1标准中给定的固定值,为160 bit 的数据块,是5个32 bit的字。

补充:二进制 -> 十六进制
因16=2⁴,1 位十六进制数恰好对应4位二进制数。

4 位二进制 十六进制 4 位二进制 十六进制
0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

数字签名

数字签名实现的是完整、真实、不可否认。没有保密性。

RSA数字签名描述
(1)参数产生
与前面的加密算法实现中【密钥产生】的描述一样,这里不再赘述。

(2)Bob私钥-签名过程

  1. 假设签名者(发送方)是Bob,只有Bob知道自己的私钥(d, n)。
  2. 设需要签名的消息为n,则签名者Bob通过该计算对m签名:s ≡ m^d mod n。
  3. (m, s)为消息m的签名。Bob在公共媒体上宣称其发布了消息m,同时把对m的签名s置于消息后用于公众验证签名。

(3)Bob公钥-验证过程

  1. 公众在看到消息m和对其的签名s后,利用Bob的公开验证密钥{e, n}对消息进行验证,其中验证公式为 m ≡ s^e mod n。
  2. 若上式成立,则Bob的签名有效。公众认为消息m的确是Bob所发布、且消息内容没有被复改。也就是说,公众可以容易鉴别发布人发布的消息的完整性。

请注意RSA加密算法与数字签名算法的区别!

密钥协商

密钥协商是现代网络通信的一种常见协议。

◆Diffie-Hellman 密钥协商协议
Diffie-Hellman 密钥协商协议是第一个被提出的密钥协商方案。唯一目的就是使两个用户能安全地交换密钥,从而得到一个共享的会话密钥(秘密密钥)。需要注意的是,该算法本身不能用于加、解密。Diffie-Hellman密钥交换算法的安全性是基于Zp上的离散对数问题。

说简单点,DH密钥协商就是无需提前共享密钥,让通信双方在公开网络中,共同计算出一个相同的共享密钥的协议 —— 核心是 “公开传递参数,私下计算密钥”,仅用于密钥协商,不负责数据加密。

1
2
3
4
5
6
7
 协商一个素数p以及该素数的本原元a

A B
随机数ra 随机数rb
Sa = a^ra mod p Sb = a^rb mod p
×
K1 = Sb^ra mod p K2 = Sa^rb mod p

不过,这种模式下容易遭受中间人攻击:敌手可分别冒充用户A和B中的一方,与另一方交换密钥(敌手就可以监听和传递A和B的秘密信息而不被发现)。

1
2
3
4
5
6
7
协商一个素数p以及该素数的本原元a
用户 中间人 用户
A C B
ra rc rb
Sa Sc Sb
× ×
Sc Sa、Sb Sc

DH 协议本身无身份认证,A 无法确认收到的 “B 的公钥” 是真的 B 发的,B 也无法确认收到的 “A 的公钥” 是真的 A 发的,只能被动接收。

难点理解:共享密钥计算阶段

  • A 用 “伪装的 B 公钥 C₂”+ 自己的私钥 a,计算出共享密钥 K₁ = C₂ᵃ mod p;
  • C 用 “A 的真实公钥 A”+ 自己的私钥 c₁,计算出和 A 一致的 K₁(K₁ = Aᶜ¹ mod p,数学上和 A 的计算结果相等);
  • B 用 “伪装的 A 公钥 C₁”+ 自己的私钥 b,计算出共享密钥 K₂ = C₁ᵇ mod p;
  • C 用 “B 的真实公钥 B”+ 自己的私钥 c₂,计算出和 B 一致的 K₂(K₂ = Bᶜ² mod p,数学上和 B 的计算结果相等);

总结:用户 A 与用户B必须能够确认所形成的密钥正是在两者之间形成的,而不是与其他人(如攻击者)共同建立的。这样,在密钥建立的时候,密钥协商协议就需要同时认证参加者的身份(身份识别过程必须与密钥协商过程紧密结合,以避免在身份识别过程后仍然有可能被人获取密钥而产生攻击)。这种协议称为认证密钥协商协议。

HMAC

HMAC(Hash-based Message Authentication Code,哈希消息认证码),是用哈希函数+ 密钥,对消息做 “身份认证 + 完整性校验” 的算法。

◆双方提前共享一个秘密密钥 K(比如 DH 协商好的共享密钥,这是核心,不能泄露)。

◆发送方A:

  1. 密钥 K + 要发送的消息 M,按固定规则拼接。
  2. 对拼接后的内容计算哈希值,这个哈希值就是HMAC 值
  3. 把「原始消息 M + HMAC 值」一起发给接收方

◆接收方B:

  1. 用自己手里秘密密钥 K,对收到的原始消息 M,进行拼接、哈希计算,得到一个新的 HMAC 值。
  2. 对比。若一致,说明消息是 A 发的(身份合法)、且没被篡改;若不一致,直接丢弃消息(要么被篡改,要么是冒充发送)。

密钥管理

◆系统使用一级密钥K1通过算法f1保护二级密钥,以此类推,直到最后使用n级密钥Kn通过算法fn保护明文数据。
◆随着加密过程的进行,各层密钥的内容动态变化,而这种变化的规则由相应层次的密钥协议控制。

下层密钥泄露不会影响上层密钥的安全,因为它是一个动态的密钥管理系统,密钥处于不断的变化之中。另外,研究自动化的密钥管理方案很必要。

◆最下层的密钥Kn,也叫工作密钥或数据加密密钥,它直接作用于对明文数据的加解密。它平时并不存在,在进行数据的加解密时,工作密钥将在上层密钥的保护下动态地产生。
◆所有上层密钥可称为密钥加密密钥,它们的作用是保护数据加密密钥作为其他更低层次密钥的加密密钥。可以做到每加密一份报文就更换一次密钥,这样才安全。
◆最上面一层的密钥K,也叫主密钥,通常主密钥是整个密钥管理系统的核心,应该采用最安全的方式来进行保护。

密钥的分类
基本密钥(初始密钥或用户密钥)、会话密钥(又叫工作密钥或数据加密密钥)、密钥加密密钥、主密钥。
(按用途分:会话密钥、主密钥。)

X.509证书

X.509是一种非常通用的证书格式,其核心是用户的公钥证书,证书由双方信赖的证书认证中心建立,用户的证书都存放在网络数据库中,以便其他用户访问。

X.509证书格式: