对称密钥算法 非对称密钥算法 Hash函数 公钥和私钥在网络安全中的应用流程超超超详细,清楚,简单!!!
不是哥们,理解了半天,感觉自己是天才😎😎😎
一、对称密钥算法(私钥加密)
对称密钥算法也称为私钥加密,这里的 “私钥” 指的是 “秘密的、需要保密的密钥” ,而不是非对称体系中的“私钥”。它强调的是这个密钥必须是私密的、不公开的,
因为对称密钥算法使用相同的密钥进行加密和解密,因此密钥必须保密,否则安全性会被破坏。这种算法通常用于加密大量数据,因为加密速度较快。常见的对称密钥算法包括:
-
DES(Data Encryption Standard):一种较旧的加密标准,密钥长度56位,现已不被视为安全。
-
3DES(Triple DES):DES的增强版,使用三个密钥进行三次加密,安全性更高,但速度较慢。
-
RC-5:一种灵活的加密算法,支持可变密钥长度和轮数。
-
IDEA(International Data Encryption Algorithm):使用128位密钥,曾用于PGP加密。
-
AES(Advanced Encryption Standard):当前最常用的对称加密标准,支持128、192或256位密钥,安全且高效。
-
RC4:一种流密码,曾用于SSL/TLS,但现已发现漏洞,不推荐使用。
特点:加密和解密使用同一密钥,因此密钥分发需要安全通道,否则容易遭受攻击
二、非对称密钥算法(公钥加密)
非对称密钥算法也称为公钥加密,这个名称来源于它最革命性的特性:可以用公开的密钥进行加密。用对方的公钥加密 → 只有对方的私钥能解密。这是“公钥加密”一词的直接体现。
非对称密钥算法使用一对密钥:公钥和私钥。公钥可以公开,私钥必须保密。这种算法用于加密小量数据、数字签名和密钥交换。常见的非对称密钥算法包括:
-
RSA:基于大数分解的难度,广泛用于加密和数字签名。
-
ECC(Elliptic Curve Cryptography):基于椭圆曲线数学,提供相同安全性下更短的密钥长度,效率更高。
-
DSA(Digital Signature Algorithm):主要用于数字签名,不用于加密。
特点:公钥用于加密或验签,私钥用于解密或签名。解决了对称加密的密钥分发问题,但计算速度较慢。
在大多数非对称加密算法(如RSA)中,公钥和私钥在数学上是互为“反向操作”的关系。它们是一个密钥对,具有以下核心特性:
用密钥A加密的数据,可以用密钥B解密;反之,用密钥B加密的数据,也可以用密钥A解密。
这个特性是双向的。那么,如何决定哪个叫公钥,哪个叫私钥呢?答案完全取决于用途和保密需求:
所以呀这个核心特性就导致了非对称密钥算法有了两个功能:
功能一:加密信息,确保保密性
-
我们用接收方的公钥来加密。
-
这样,只有拥有对应私钥的接收方才能解密。
-
因为公钥可以公开,任何人都能给你发送加密消息,但只有你能看。
注意在使用非对称密钥算法的这个加密信息功能时,其中公钥的作用是“加密” 私钥的作用是“解密”。
功能二:创建数字签名,证明身份
-
我们反过来,用发送方的私钥来加密(签名)。
-
这样,任何人用发送方公开的公钥都能解密这个签名并验证。
-
因为能用公钥成功解密,就证明了这段数据必然是由对应的私钥持有者创建的。
注意在使用非对称密钥算法的这个数字签名功能时,其中公钥的作用是“验签” 私钥的作用是“签名”。
接下来我们来看一下数字签名的工作流程:
详细签名流程:
-
生成签名:
-
发送方对原始数据计算哈希值(摘要)
-
发送方用自己的私钥加密这个哈希值 → 这就是"数字签名"
-
发送方将原始数据 + 数字签名一起发送
-
-
验证签名:
-
接收方收到数据和签名
-
接收方用发送方的公钥解密数字签名,得到哈希值H1
-
接收方对收到的原始数据重新计算哈希值H2
-
比较H1和H2:如果相同,说明签名有效
-
这个流程的目的就是证明:数据确实来自声称的发送者,且数据未被篡改
-
因为只有私钥的持有者才能生成那个能用对应公钥解密的“签名”。如果接收方用张三的公钥成功验证了签名,那就证明这条消息一定是张三的私钥签名的,从而确认了发送者的身份。
-
验证过程中,接收方会重新计算收到数据的哈希值,并与从签名中解密出来的原始哈希值进行比对。如果数据在传输中被篡改(哪怕只是一个比特),重新计算出的哈希值将会与原始哈希值截然不同,导致验证失败。
三、Hash函数
Hash函数将任意长度的数据映射为固定长度的哈希值(摘要),用于确保数据完整性。常见的Hash函数包括:
-
MD5(Message-Digest Algorithm 5):产生128位哈希值,但已发现碰撞漏洞,不推荐用于安全应用。
-
SHA-1(Secure Hash Algorithm 1):产生160位哈希值,同样存在漏洞,逐渐被淘汰。
-
更安全的Hash函数:如SHA-256、SHA-3,现在推荐使用。
特点:Hash函数是单向的,无法从哈希值还原原始数据;轻微的数据更改会导致哈希值巨大变化,用于验证数据是否被篡改。
四、公钥和私钥在网络安全中的应用流程
首先先来说一下数字证书是什么
数字证书就是CA对其他人的公钥进行了数字签名,用的是CA他自己的私钥
那既然数字证书也是一种数字签名,我们结合上文中提到的数字签名的两个目的
就可以得出数字证书的目的是:
一是这个证书确实是CA颁发的
二是其中的内容也就是其他人的公钥没有被篡改。
完整的安全通信流程
准备工作:证书颁发
-
用户A和用户B各自向证书颁发机构(CA)申请数字证书
-
A向CA提交自己的身份信息和公钥
-
CA通过线下方式验证A的身份真实性
-
CA用自己的私钥对"A的身份信息+A的公钥"进行数字签名,生成A的数字证书
-
同样流程,B也获得自己的数字证书
-
第一阶段:A向B发起通信
步骤1: A发送自己的证书给B
-
A将自己的数字证书发送给B
-
证书中包含:A的身份信息、A的公钥、CA的签名
步骤2: B验证A的证书
-
B收到A的证书后:
-
使用系统中预置的CA的公钥验证证书上的CA签名
-
如果签名验证通过,B确信:
-
证书确实是由可信的CA颁发的
-
证书内容(包括A的公钥)未被篡改
-
-
B从证书中提取出A的公钥
-
步骤3: B准备回复并加密
-
B想要回复A一条消息"Secret Data"
-
B生成一个随机的对称会话密钥(如AES密钥)
-
B用这个对称密钥加密消息"Secret Data" → 得到加密消息
-
B用A的公钥加密这个对称会话密钥 → 得到加密的对称密钥
步骤4: B对回复进行数字签名
-
B计算"加密消息+加密的对称密钥"的哈希值
-
B用自己的私钥加密这个哈希值 → 得到数字签名
-
B将以下内容发送给A:
-
加密消息
-
加密的对称密钥
-
数字签名
-
B的数字证书(可选,如果A还没有的话)
-
第二阶段:A接收并处理B的回复
步骤5: A验证B的证书和签名
-
A收到B的数据包后:
-
首先验证B的证书(如果收到了B的证书)
-
使用B的公钥验证B的数字签名
-
如果签名验证通过,A确信:
-
回复确实来自B
-
数据在传输过程中未被篡改
-
-
步骤6: A解密消息
-
A用自己的私钥解密"加密的对称密钥" → 得到对称会话密钥
-
A用对称会话密钥解密"加密消息" → 得到原文"Secret Data"
实现的安全目标
通过这个完整流程,我们实现了:
-
身份认证
-
通过验证数字证书,确认A和B的真实身份
-
不再是"你说你是谁就是谁",而是"CA证明你是谁"
-
-
信息保密
-
使用对称加密保护实际通信内容
-
使用非对称加密安全地传递对称密钥
-
只有真正的接收方才能解密消息
-
-
数据完整性
-
通过数字签名中的哈希验证,确保数据未被篡改
-
任何对数据的修改都会导致签名验证失败
-
-
不可否认性
-
由于B使用自己的私钥签名,无法抵赖发送过该消息
-
同样,A也无法抵赖接收过B的回复
-
浙公网安备 33010602011771号