恋爱通信史之保密性

在小明和小芳的通信过程中,需要对通信内容进行保密,那就要对通信内容进行加密。所谓数据加密,简而言之,是指将明文(可读的数据)通过特定的算法转换为密文(不可直接读取的数据)的过程。这一转换过程需要用到一个或多个密钥,这些密钥是解密过程中恢复原始明文所必需的。

数据加密的分类

数据加密主要分为两大类:对称加密和非对称加密。近年来,还有一种结合两者优点的混合加密方法逐渐流行。

  1. 对称加密
    含义 :对称加密,又称私钥加密,是指在加密和解密过程中使用相同密钥的加密方法。
    应用场景:

    • 文件加密:个人或企业使用对称加密算法保护敏感文件,如财务报表、客户资料等,因为这些文件的加解密操作频繁,对称加密的高效性成为首选。
    • 网络通信:虽然直接用于互联网通信的安全性较低(因为密钥分发困难),但在VPN(虚拟专用网络)和某些安全协议中,对称加密常被用作加密会话内容的手段,以提高传输效率。
    • 数据库加密:对于需要频繁读写的大型数据库,对称加密因其高效性而被用于数据加密层,确保数据在存储和传输过程中的安全。
  2. 非对称加密
    含义:非对称加密,又称公钥加密,使用一对密钥------公钥和私钥,公钥用于加密信息,私钥用于解密信息。

    应用场景:

    • 数字签名:发送方使用自己的私钥对信息摘要进行加密,生成数字签名,接收方用发送方的公钥验证签名,确保信息的完整性和发送者的身份真实性。
    • 密钥交换:非对称加密常用于安全地交换对称加密的密钥,如SSL/TLS协议中的握手过程,避免了对称密钥直接在网络上传输的风险。
    • 数字证书:在电子商务、网上银行等领域,非对称加密用于创建和验证数字证书,确保交易双方的身份安全。
  3. 混合加密
    含义:混合加密结合了对称加密的高效性和非对称加密的安全性,通常先用非对称加密安全地交换对称加密的密钥,然后用对称加密对实际数据进行加密。

    应用场景:

    • 安全通信:如HTTPS协议,它利用TLS/SSL协议,首先通过非对称加密建立安全通道,然后在此通道内使用对称加密进行高效的数据传输。
    • 云存储安全:云服务商采用混合加密技术,确保用户数据在上传、存储和下载过程中的安全,既保护了数据机密性,又提高了处理效率。

在本节中,我们重点介绍:对称加密和非对称加密。在此过程中,不介绍具体的加密算法,仅仅从应用者的角度进行介绍。

对称加密

对称加密,指加解密都使用相同秘钥的加密方法。对称加密算法又分为流密码算法和块密码算法。加密速度很快。

  • 发送方:将要发送的明文,通过加密算法,设置加密的秘钥,生成明文对应的密文,再将密文在发送出去,尽管在通信过程中被劫持,也是密文。
  • 接收方:将接收到的密文,通过与发送方相同的算法,设置与发送方相同的秘钥,进行密文的解密,从而得到相应的明文。

流密码算法

流密码是采用异或XOR运算的到密文,再进行一次异或XOR运算即可得到明文,如下图所示。

流密码算法基于设置的随机数种子(秘钥),生成伪随机秘钥流,与明文进行异或运算即可得到密文。

  • 伪随机秘钥流的长度与明文的长度相同,以便与明文进行异或运算。
  • 流密码算法需要随机数种子,这个种子就是秘钥,接受者解密也使用相同的随机数种子(秘钥)和相同的流密码算法,即可生成相同的伪随机数秘钥流,再与密文进行异或即可得到明文。

注意: 流密码算法中RC4算法已经证实不安全,不建议使用;ChaCha20算法目前还属于安全算法。

块密码算法

块密码算法,就是发送方要对明文进行分块加密后,再对所有分块组合在一起进行发送;在接收方对各个分块解密后,再将解密后的明文进行组合,形成完整的原始明文。

  • 分块的块长度(分组长度),与秘钥的长度没有必然联系。常见的AES128, AES192, AES256中的数字是指的秘钥的长度bit位数;分组长度与具体算法相关,比如AES的分组长度固定是128bits(16Bytes)。
  • 在某些分块加密算法模式下,如果明文的长度除以块长度,不是整数倍,需要对明文进行填充,保证数据长度是分块的长度的整数倍。
  • 分块算法不是一次性运算完毕的,需要进行多次迭代才能完成。
ECB(Electronic CodeBook)模式

ECB模式是最简单的一种迭代模式,该模式存在安全性问题,不建议使用。

加密

  • 将明文分成多个数据块,每个数据块长度相等,且长度等于分组长度。最后一个分块长度不足时,需填充为分块长度相同。
  • 分块数据独立,可以并行的进行加密,然后再将分块密文组合在一起即为最终的密文。
  • 分块密文与分块明文数据长度相等

解密

  • 将密文拆分为多个数据块,每个数据块的长度等于分组长度,并行的进行解密,再将解密后的明文组合在一起即为原始明文。

注意: 相同的明文和秘钥每次加密的结果都是相同的,这存在很多的安全问题。不建议使用。

CBC(Cipher Block Chaining)模式

CBC模式是一种比较常见的模式,且也是一个安全的对称分块加密模式。

加密

  • 将明文分成多个数据块,每个数据块长度相等。最后一个分块长度不足时,需填充为分块长度相同。
  • 第一个分块加密前,需要生成一个随机的初始化向量IV(Initialization Vector,长度与分组长度相等)。这个初始化向量与第一个分块进行异或XOR运算,在结合秘钥使用加密算法对异或XOR的运算结果进行加密,从而得到第一个分块的密文。
  • 后续分块n,使用n-1块的密文替代IV与第n块明文进行异或,再使用秘钥加密,从而得到第n块的密文。因此,加密过程是一个串行加密的过程。
  • 将所有分块密文组合在一起即为最终的密文。
  • 分块密文与分块明文数据长度相等
  • 初始化向量IV会随着密文一起发送给接收者,且不会被加密。

解密

  • 将密文拆分为多个数据块,每个分块的长度与分组长度相等。
  • 将每块分块密文数据块,结合秘钥进行解密;第一个解密后的数据块与IV进行异或XOR运算;将密文与解密后的后级数据块进行异或XOR运算。每个解密和异或运算都能并行的运行。
  • 将解密后分组明文组合在一起就是完整的明文。

注意:

  • 初始化向量IV是一个随机数,需要保证是一个真随机,且长度与分组长度相等。
  • 初始化向量IV必须每次都不一样,保证同样的明文和秘钥最终加密的密文都是不一样的,这样才能避免ECB模式面临的安全问题。
  • 数据分块的加密过程,分块之间有关联关系,只要有个数据块稍有变化,就会导致最终结果不一样。
  • 加密只能串行,解密可并行。
CTR(Counter)模式

CTR模式是流密码和块密码的结合,也是一个安全的对称分块加密模式。

加密

  • 将密文分块,但是在最后一个分块时,可不填充
  • 生成一个秘钥流Nonce(随机值)+计数(根据分块个数以此累加),先通过算法对其进行加密,生成相应的密文。
  • 用每个秘钥流生成的密文与每个分块明文进行异或XOR运算,得到分块的密文。
  • 秘钥流Nonce(随机值)随密文一起发送给接收者,且不加密。
  • 加密和异或XOR运算都可并行

解密

  • 将密文分块,但是在最后一个分块时,可不填充
  • 先根据发送者给的秘钥流Nonce(随机值)+计数,结合秘钥进行加密,生成每个分块的秘钥流的密文。
  • 对每个分块密文与相应分块的秘钥流进行异或XOR运算,得到分块明文,组成完整的明文。
  • 解密和异或XOR运算都可并行

**注意:**每次的秘钥流都要生成不一样的,保证同样明文和秘钥加密的密文都不同,提高CTR的安全性。

总结
模式 特点 说明
ECB模式 加解密可并行;需要填充 不安全,不推荐
CBC模式 加密串行,解密并行;加解密分块间有关联性;需要填充 安全,推荐
CTR模式 加解密可并行;加解密分块间无关联性;无需填充 安全,推荐

非对称加密

非对称加密,使用公钥-私钥进行加解密。有两种:

  • 公钥加密,只能使用对应的私钥解密:秘钥交换;
  • 私钥加密,只能使用对应的公钥解密:数字签名和数字证书。

私钥: 其实就是一个极其大且很随机的一个数,只能被持有者秘密保存,不能被泄漏,因此称为私钥。

公钥: 是由私钥推算出来的一个很大的数。只能从私钥推算出公钥,单向的推算。公钥可以公开为大家所熟知,因此称为公钥。

公钥加密,私钥解密

发送者使用公开的公钥进行加密,接收者将密文用私钥进行解密。因为公钥是可以公开分发的,这就解决了对称加密中秘钥分发困难的问题

私钥加密,公钥解密

发送者使用私有的私钥进行加密,接收者将密文用公钥进行解密。

因为公钥是大家所熟知的,因此发送者使用私钥加密的密文,公钥持有者都能解密。在这一过程中,加解密不是其主要用途,因为私钥只有相应私钥的持有者才能使用,因此私钥也代表了一种身份,只要是公钥能解密的信息,那就可以明确是由私钥持有者发送的信息。

基于以上所述,私钥加密,公钥解密主要用于数字签名和数字证书(后续章节介绍)。

相关推荐
Hacker_Nightrain1 小时前
linux 网络安全不完全笔记
linux·笔记·web安全
HackKong1 小时前
Python与黑客技术
网络·python·web安全·网络安全·php
Autumn.h2 小时前
vulnhub Empire-Lupin-One靶机
网络安全
深渊启源2 小时前
用 Ingram 和 masscan 来扫描全网存在漏洞的camera
网络安全·漏洞·ingram·masscan
网络安全(king)4 小时前
信息安全管理:网络设计安全评估checklist
网络·安全·web安全
黑客Ela14 小时前
【网络安全设备系列】7、流量监控设备
安全·web安全
网络安全指导员15 小时前
网络安全 - DOS
web安全·哈希算法·散列表
hao_wujing16 小时前
网络安全等级自我评价
安全·web安全
HackKong16 小时前
高校网络安全_网络安全之道
java·网络·c++·python·学习·web安全·黑客技术
Mitch31116 小时前
【漏洞复现】CVE-2014-3120 & CVE-2015-1427 Expression Injection
运维·web安全·elasticsearch·docker·apache