绪论信息安全三大核心要素(CIA三元组)是指:保密性、完整性、可用性系统保密性不依赖于加密体制或算法的保密,而依赖于密钥。被动攻击:获取信息内容;进行业务流分析(流量分析)主动攻击:伪装、重放、信息修改、拒绝服务信息系统的安全性:保密性、数据完整性、实体认证、消息认证、可用性、访问控制、可
信息安全三大核心要素(CIA三元组)是指:保密性、完整性、可用性
系统保密性不依赖于加密体制或算法的保密,而依赖于密钥。
被动攻击:获取信息内容;进行业务流分析(流量分析)
主动攻击:伪装、重放、信息修改、拒绝服务
信息系统的安全性:保密性、数据完整性、实体认证、消息认证、可用性、访问控制、可控性、不可否认性
攻击类型:
一些概念:明文、密文、加密、解密、加解密算法、密钥


加密算法的两个原理:代换和置换


X)。



密钥只对一个信息进行加密,之后就丢弃不用。属于流密码
每一条新信息都需要一个与其等长的新密钥。
一次一密 (OTP) 虽然是无条件安全的,但它要求密钥长度必须大于等于明文长度。
1,把那一列抄下来。2,把那一列抄下来。
Hill密码:本质上是矩阵运算结合同余方程组
$$ C = P \times K \pmod{26} $$
$$ K = P^{-1} \times C \pmod{26} $$
参考例题:


选取的明文矩阵必须是可逆的。也就是说,这个矩阵的行列式(Determinant)不能是 0,而且行列式的值必须与 26 互质(Coprime),
轮转机的密钥空间是:26^3
密钥发生器f 通过密钥k 产生了密钥流
如果一个比特流是一个周期序列,则它一定是线性反馈移位寄存器序列
状态周期为2^n-1
不是所有整数模n都有本原根
本原根个数为$\phi(\phi(p))$
与流密钥都是单钥体制,但是分组密码没有记忆性
扩散和混淆是Shannon提出的设计密码系统的两个基本方法
乘积密码就是指顺序地执行两个或多个基本密码系统,使得最后结果的密码强度高于每个基本密码系统产生的结果,中间还包括置换和代换,也就是刚刚提到的扩散和混淆。
Feistel密码结构是分组密码中的一种对称结构,能自己画出来一轮


最后一轮交换左右两边的数据(置换)
这个算法就是:每组明文分成左右两边,左边就等于上一轮的右边,而右边则是用 f 对上一轮的右边通过密钥 k 进行加密,再和左边异或一下,进行n轮迭代,最后一轮要置换一下,再合在一起,就完成了。怎么和des这么像,巧了,des就是这种结构。
主要流程:
填空:
F轮函数步骤为
Function F(R[32], K[48]):
# 1. 扩展 E: R32 -> ER48
ER = Expansion_E(R) # 按固定表,输出 48 位
# 2. 与子密钥异或
X = ER XOR K # 48 位
# 3. 分成 8 组,每组 6 位,映射到 4 位
For j = 1..8:
block6 = X[6*(j-1) .. 6*j -1] # 取第 j 组 6 位
row = (block6[0] << 1) | block6[5]
col = (block6[1]<<3) | (block6[2]<<2) | (block6[3]<<1) | block6[4]
out4 = Sbox_j[row][col] # 0..15
Sout[4*(j-1) .. 4*j -1] = bin4(out4)
# 4. P 置换
return Permutation_P(Sout) # 32 位
密钥生成算法:DES 的密钥作用发生在 F 函数内,对右半部分扩展后的 48 位数据进行 XOR。16 个子密钥分别对应 16 轮。

![]() |
步骤 | 输入位数 | 输出位数 | 核心动作 | 备注 |
|---|---|---|---|---|---|
| PC-1 | 64 | 56 | 去校验位 + 置换 | 分为$C_0, D_0$ 两部分 | |
| 循环左移 | 28 + 28 | 28 + 28 | 每一轮根据规则左移 1 或 2 位 | 保证每轮状态不同 | |
| PC-2 | 56 | 48 | 压缩 + 置换 | 生成最终子密钥$K_i$ |
DES存在8个弱密钥和12个半弱密钥,DES的密钥太短导致被淘汰
分组密码工作模式的有:ECB (电子密码本)、CBC (密码分组链接)、CFB (密码反馈)、OFB (输出反馈)
CBC(密码分组链接)模式:加密算法的输入是当前明文组与前一密文组的异或
会自己画图!


加密: Ci= Ek[Pi⊕Ci-1]
1)分组长度只能是128位,密钥长度均能分别指定128位、192位、256位。
2)输入分组是以字节为单位的正方形矩阵
3)轮数不固定,取决于密钥长度(10/12/14),在 AES-128 中,算法共进行 10轮迭代
AES轮函数包括字节代换、行移位、列混合、轮密钥加,它是并行处理的,加解密不完全对称。最后一轮没有列混淆。
字节替换:它的构造是基于 有限域 $GF(2^8)$ 上的乘法逆元 ,然后再进行一个仿射变换 。目的是提供最强的非线性混淆。
行移位:每一行循环左移的位数是递增的 (0, 1, 2, 3 个字节) 。目的是提供扩散 (Diffusion)
列混合:它是对 State 矩阵的每一列进行矩阵乘法,运算域在 $GF(2^8)$ 上 。目的是在列方向上快速扩散

AES算法很快且需要内存不多,十分可靠。
在GF(2^8)上的加法定义为二进制多项式的加法,等同于按位异或运算。








公钥密码的速度慢。


密钥生成过程(背下来):


三种攻击RSA的方法:强力枚举密钥、数学攻击、时间攻击
密钥大小取在1024-2048位比较合适,不动点至少有9个。
RSA 算法中可能存在的安全隐患:
1)不能用于交换任意的信息,只限于进行公共密钥的建议,只对通信双方已知。
2)存在中间人攻击,DH 协议没有身份认证
3)数学原理:
例题:
在 ElGamal 加密系统中,素数 $p = 11$,本原根 $g = 2$。
第一步:密钥生成 (求公钥$y$)
第二步:加密 (求密文$C_1, C_2$)
Alice 要发送消息$M=5$,随机数$k=4$。她需要计算两个值。
1. 计算$C_1$ (临时公钥)
2. 计算 masking key (共享秘密$K$)
3. 计算$C_2$ (隐藏后的密文)
最终密文:Alice 发送$(C_1=5, C_2=9)$。
第三步:解密 (还原明文$M$)
Bob 收到了$(5, 9)$,他只有私钥$x=3$。
1. 恢复共享秘密$K$
2. 计算$K$的逆元 ($K^{-1}$)
3. 还原明文$M$
记住:
基于什么数学难题?
更短的密钥长度,提供同等的安全性。ECC 使用的密钥长度远小于 RSA。存储空间占用更小,且带宽要求更低。


生成方法:取中法、移位法、同余法(异曲同工)
Hash函数的主要功能是提供有效的数据完整性检验。
将任意长度的信息映射成较短的、固定长度的一个值。单向性、伪随机性。
应用:消息认证;数字签名




RSA 非对称加密速度慢,直接加密大文件效率极低。Hash 得到的摘要很短,签名速度快


MD5以512位的分组长度来处理消息,每一个分组又被划分为 16个32位的子分组。
算法的输出由4个32位的分组组成,它们串联成一个128位的 消息摘要。
| 特性 | MD5 | SHA-1 |
|---|---|---|
| 输出长度 (摘要) | 128 位 | 160 位 |
| 安全性 | 较弱 (已被王小云破解) | 较强 (但也已被破解) |
| 运算轮数 | 4 轮 (每轮 16 步,共 64 步) | 4 轮 (每轮 20 步,共 80 步) |
| 缓冲区 | 4 个寄存器 (A,B,C,D) | 5 个寄存器 (A,B,C,D,E) |
| 速度 | 更快 | 稍慢 |
| 字节序 | 小端 (Little-endian) | 大端 (Big-endian) |
MAC是共享密钥,不能抗抵赖,签名才可以
数字签名 (为了认证):你用私钥签名 (加密),别人用你的公钥验证 (解密) 。
三大功能:
1)RSA 签名
2)ElGamal 签名
3)Schnorr 签名


子密钥:每轮使用一个 48 位子密钥 KiK_iKi(由 56 位有效主密钥通过 PC-1、循环左移、PC-2 得到)。
描述说明 DES 算法的加解密过程(也可以画图说明)
DES 是一种 64 位分组对称加密算法。其输入密钥为 64 位,其中 8 位为奇偶校验位,经PC-1去除后得到 56 位有效密钥。该 56 位密钥经过循环左移和PC-2 压缩置换,产生 16 个 48 位轮密钥。
64位明文经初始置换IP 后得到 L₀、R₀。随后进行 16 轮 Feistel 运算:每轮中对 R₍ᵢ₋₁₎ 进行E扩展置换 → 与 Kᵢ 异或 → 通过 8 个 S 盒压缩至 32 位 → P 置换,得到 F(R₍ᵢ₋₁₎, Kᵢ)。更新为 Lᵢ=R₍ᵢ₋₁₎,Rᵢ=L₍ᵢ₋₁₎⊕F。
16 轮结束后交换左右,再经逆初始置换IP⁻¹ 得到 64 位密文。
以 DES 为例,画出分组密码的密码分组链接(CBC)模式的加密解密示意图,假设加密时明文一个比特错误,对密文造成什么影响,对接收方解密会造成什么影响?


加密时明文的一个比特错误,会导致该组加密密文发生变化,然后这个错误反馈值会作为下 一次 DES 加密的输入值,再经过 DES 加密变换,会导致后面的密文都受到影响。
对 于接收方来说,加密明文的一个比特错误,只会影响对应明文块所产生的密文的正常解密,其他数据块可以正常准确地解密。
请设计一个基于 Hash 函数和 RSA 签名的安全分发流程。
流程:
发送方:Hash(文件) -> 摘要 -> 用私钥加密摘要(签名) -> 发送(文件+签名)。
接收方:分离文件和签名 -> 用公钥解密签名得摘要H1 -> Hash(文件)得摘要H2 -> 对比 H1 和 H2。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!