





密码学是研究信息安全保护的科学,以实现信息的保密性、完整性、可用性及抗抵赖性。
密码学主要由密码编码和密码分析两个部分组成。密码编码学研究信息等变换处理以实现信息等安全保护,密码分析学研究通过密文获取对应的明文信息。 简单来说就是密码编码研究加密技术,密码分析研究如何破解密码。
2005年4月1日 《中华人民共和国电子签名法》
2006公布我国商用密码
2019年 《中华人民共和国密码法》草案发布
密码系统(Crypto system)由以下五个部分组成
明文空间 M:需要采用密码技术进行保护的消息
密文空间 C:用密码技术处理过的明文的结果
密钥空间 K:K=<
K e K_e
K
e
,
K d K_d
K
d
,每个K由加密密钥
K e K_e
K
e
和解密密钥
K d K_d
K
d
组成
加密算法 E:将明文变换成密文所使用的组操作运算规则
解密算法 D:将密文恢复成明文所使用的组操作运算规则
唯密文攻击: 密码分析者只拥有一个或多个用同一个密钥加密的密文
已知明文攻击: 密码分析者进知道当前密钥下的一些明文及所对应的密文
选择明文攻击: 密码分析者能够得到当前密钥下自己选定的明文对应的密文
密文验证攻击: 密码分析者可以判断任何选定的密文的“合法性”
选择密文攻击: 密码分析者能够得到任何选定的密文所对应的明文

显然,若
K e K_d=K_e
K
d
=
K
e
,称为 单密钥密码体制 或者 对称密码体制 或者 传统密码体制 。否则为 双密钥体制 ,进而,若
K d K_d
K
d
不能由
K e K_e
K
e
推出,就可将
K e K_e
K
e
公开且不会损害
K d K_d
K
d
的安全,这种密码体制称为 公开密钥密码体制 ,简称 公钥密码体制
对称密码体制(私钥密码体制) :对信息进行明/密文变换时,加解和解密使用相同密钥的密码体制

安全性依赖于:
1、加密算法的安全性
2、密钥的秘密性
优点:效率高,算法简单,加密速度快,适合大量数量的加密
缺点:
消息的发送者和接收者必须事先通过安全渠道交换密钥
n个使用者,就需要
n ( n − 1 ) / 2 n(n-1)/2
n
(
n
−
1
)
/
2 个密钥,密钥管理困难
无法认证消息源,无法进行数字签名
用途:信息量大的加密需求
典型代表算法:DES算法、IDEA算法、AES算法等
非对称密码体制(公钥密码体制) :对信息进行明/密文变换时,加密和解密密钥不相同的密码体制。
在非对称密码体制中,每个用户都具有一对密钥,一个用于加密,一个用于解密,其中加密密钥可以公开,称之为公钥,解密密钥属于秘密,称之为私钥,只有用户本人知道。

优点:
- 密钥分发方便
- 密钥保管量少
- 支持数字签名
缺点:实现速度慢,不适合信息量大的加密情况
用途:适用于加密关键性的、核心的机密数据
代表算法:RSA算法、ElGamal算法、椭圆曲线加密算法
混合加密体制 :同时使用对称密码和非对称密码的体制。
对称加密的一个很大问题就是通信双方如何将密钥传输给对方,安全起见一般采取带外传输,也就是说如果加密通信是在网络,那么密钥的传输需要通过其他途径,如短信,即使如此,也很难保证密钥传输的安全性。再就是为了安全密钥也应该定期更换,这更加重了密钥分发和管理的难度。
而非对称加密加解最大的优点是事先不需要传输密钥,但速度慢。
因此实际应用中,经常采取混合密码体制。
假设Harden与James要实现保密通信,工作过程如下:

1、消息发送者Harden用 对称密钥 把需要发送的消息加密
2、Harden用 James的公钥 将 对称密钥 加密,形成数字信封
3、Harden将加密消息和数字信封一起传送给James
4、James收到Harden的加密消息和数字信封后,先用 自己的私钥 将数字信封解开获取 对称密钥
5、James使用 对称密钥 把加密消息解开
DES(Data Encryption Standard)是数据加密标准的简称, 支持64位的明文加密,密钥长度为56位 。随着科技发展,DES被攻破,使用TDEA作为过渡算法,并开始征集AES算法
IDEA(International Data Encryption Algorithm)是国际数据加密算法的简记,是一个分组加密处理算法。 其明文和密文分组都是64位,密钥长度128位
1997年美国国家标准技术研究所(NIST)发起征集AES(Advanced Encryption Standard)算法的活动,成立AES小组

相关数学基础
欧拉函数:对于一个正整数n,小于n且与n互素的正整数的个数,记为φ(n)。
对于一个素数n,可知φ(n) = n-1
对于两个素数p和q,它们的乘积满足n = p * q,则可知φ(n) = (p-1) * (q-1)
欧几里得算法:gcd(a,b)表示a和b的最大公约数
gcd(a,b) = 1,表示a,b最大公约数为1,说明a和b互质
同余:
两个整数a,b,若它们除以整数m所得的余数相等,则称a与b对于模m同余,或a同余b模m,记作
a ≡ b ( m o d m ) a \equiv b(mod;m)
a
≡
b
(
m
o
d
m
)
RSA密码体制参数的定义
随机选择两个大素数p和q (保密)
计算n = p * q (n公开)
计算φ(n) = (p-1) * (q-1) (φ(n)保密)
随机选取一个正整数e,且满足1 < e < φ(n),并且gcd(e,φ(n)) = 1 (e公开)
根据
1 m o d φ ( n ) e*d=1;mod;φ(n)
e
∗
d
=
1
m
o
d
φ
(
n
) ,求出d (d保密)
加密运算
M e m o d n C=M^e;mod;n
C
=
M
e
m
o
d
n 解密运算
C d m o d n M=C^d;mod;n
M
=
C
d
m
o
d
n
RSA密码公开的加密钥
K e K_e
K
e
=<n,e>,保密的解密钥
K d K_d
K
d
=<p,q,d,φ(n)>

RSA密码的特点
RSA密码的安全性
国产密码算法是指由国家密码研究相关机构自主研发,具有相关知识产权的商用密码算法。目前已公布的国产密码算法如下图

散列函数 也称为Hash函数,它能够对不同长度的输入信息,产生固定长度的输出。
固定长度的输出称为原消息的散列或者 消息摘要 ,消息摘要长度固定且比原始信息小得多,一般情况下,消息摘要是不可逆的,即从消息摘要无法还原原文。
令h表示Hash函数,h满足下列条件:
1、输入长度是任意的,输出是固定的
2、对每一个给定的h和M,计算h(M)是容易的
3、给定h,找到两个不同的M1、M2,使得h(M1)=h(M2)在计算上不可行
常见的散列算法:、MD5、SHA、SM3、SHA-1
| 算法名称 | 算法特征描述 |
|---|---|
| MD5算法 | 输入512位,产生128位消息摘要(哈希值),常用于文件完整性检查 |
| SHA算法 | 输入512位,产生160位消息摘要,比MD5更安全,已有版本SHA-2,SHA-3 |
| SM3国产算法 | 输入512位,产生256位消息摘要 |
数字签名是指发送方以电子形式签名一个消息或文件,签名后的消息或文件能在网络中传输,并表示签名人对该消息或文件的内容负有责任。
数字签名综合使用了 消息摘要 和 非对称加密 技术。
数字签名满足以下三个条件:
1、不可抵赖。签名者事后不能否认自己的签名
2、真实性。接收者能验证签名,其他任何人都不能伪造签名
3、可鉴别性。当双方关于签名真伪发生争执,第三方能解决双方的争执
假设Harden需要签名发送一份电子合同文件给James。
Harden数字签名的示意图:

1、Harden使用Hash函数将电子合同文件生成一个消息摘要
2、Harden使用自己的私钥,将消息摘要加密形成一个数字签名
3、Harden把电子合同文件和数字签名一同发送给James
James收到Harden发送的电子合同文件及数字签名后,验证数字签名过程如下:

1、James使用与Harden相同的Hash函数,计算收到的电子合同的消息摘要
2、James使用Harden的公钥,解密来自Harden的数字签名,恢复Harden的消息摘要
3、James比较自己计算得到的消息摘要和恢复Harden的消息摘要异同,若摘要相同,则说明电子合同文件来自Harden,否则表明电子合同文件已被篡改
密码管理
数字证书
数字证书也称为公钥证书,是一种权威的电子文档,由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。
数字证书的格式按照《信息安全技术 公钥基础设施 数字证书格式》要求:
CA提供数字证书的 申请、审核、签发、查询、发布以及证书吊销 等全生命周期的管理服务
数字证书认证系统主要由目录服务器、OCSP服务器、注册服务器、签发服务器组成
数字证书种类:
- 按类别
- 个人证书
- 机构证书
- 设备证书
- 按用途
- 签名证书:用于证明签名公钥的数字证书
- 加密证书:用于证明加密公钥的数字证书
一种共享秘密的方案,简称Diffie-Hellman密钥交换协议,基于求解离散对数问题的困难性,对于下述等式
M m o d P c^d=M;mod;P
c
d
=
M
m
o
d
P
操作步骤:
A与B确定一个素数p和整数a,并使a是p的原根,a,p可公开
A秘密选取整数
a A a_A
a
A
,计算
a a A m o d ( p ) y_A=a^{a_A};mod;(p)
y
A
=
a
a
A
m
o
d
(
p
) ,并把
y A y_A
y
A
发送给B
B密码选取整数
a B a_B
a
B
,计算
a a B m o d ( p ) y_B=a^{a_B}mod(p)
y
B
=
a
a
B
m
o
d
(
p
) ,并把
y B y_B
y
B
发送给A,
y A y_A
y
A
和
y B y_B
y
B
即公开值
A和B双方分别计算出共享密钥K,即
A:
( y B ) a A m o d p K=(y_B)^{a_A};mod;p
K
=
(
y
B
)
a
A
m
o
d
p
B:
( y A ) a B m o d p K=(y_A)^{a_B};mod;p
K
=
(
y
A
)
a
B
m
o
d
p
即A的K与B的K是相同的,推导如下图,就实现了密钥的交换

SSH是Secure Shell的缩写,基于公钥的安全应用协议。
组成: SSH传输层协议、SSH用户认证协议和SSH连接协议 三个子协议。
SSH工作机制7个步骤:

认证服务器的公钥真实性:
