密码学系列(四)——对称密码1

一、代替和置换

  1. 代替(Substitution):代替是一种基于替换字符的加密技术。在代替密码中,每个明文字符被替换为一个密文字符,从而隐藏了原始信息。代替可以使用不同的方法进行,以下是几种常见的代替技术:

    单字母代替:每个明文字母被替换为一个密文字母。例如,Caesar密码是一种简单的单字母代替密码,它将明文中的每个字母按照固定的偏移量进行替换。多字母代替:代替不仅限于单个字母的替换,也可以是多个字母或一组字母的替换。Polybius方阵密码是一种使用二维方阵进行多字母代替的方法,其中每个明文字母被替换为其在方阵中的坐标值。混淆代替:在混淆代替中,每个明文字符被替换为多个密文字符,以增加密码的复杂性。例如,Playfair密码使用一个5x5的方阵来进行混淆代替,其中字母J被合并到了字母I中。

  2. 置换(Transposition):置换是一种基于重新排列字符的加密技术。在置换密码中,明文字符的顺序被重新排列,而不是直接替换字符。置换可以通过不同的方式进行,以下是几种常见的置换技术:

    1. 列置换:明文字符按列进行排列,然后按照特定的顺序读取以生成密文。栅栏密码是一种简单的列置换密码,它将明文字符按行排列,然后按照斜线方向读取。

    2. 行置换:明文字符按行进行排列,然后按照特定的顺序读取以生成密文。Rail Fence密码是一种简单的行置换密码,它将明文字符按照一定的间隔分为多行,然后按照先后顺序读取每一行的字符。

    3. 矩阵置换:明文字符被放置在一个矩阵中,然后按照特定的顺序读取以生成密文。例如,栅栏矩阵密码将明文字符按矩阵的行列顺序排列,然后按照行优先的顺序读取。

以4比特进行代换

二、Feistal框架

Feistel框架是一种经典的密码学算法结构,用于设计和实现对称加密算法。它是由于IBM密码学家Horst Feistel在1970年代提出的,被广泛应用于许多密码算法,如DES(数据加密标准)和Blowfish。

Feistel框架的核心思想是将加密操作分为多个轮次,每个轮次都包含相同的操作步骤,但使用不同的密钥。整个过程涉及两个主要的阶段:轮函数(Round Function)和密钥扩展(Key Expansion)。

Feistel框架的详细步骤:

  1. 密钥扩展(Key Expansion):在Feistel框架中,首先需要生成每个轮次所需的子密钥。通常,使用主密钥通过某种密钥调度算法生成子密钥。

  2. 分割和交替(Splitting and Alternating):明文消息被分成两个相等的部分,每个部分称为左半部分(L)和右半部分(R)。初始时,左半部分接收明文的一半,右半部分接收另一半。

  3. 轮函数(Round Function):在每个轮次中,右半部分(R)经过一个称为轮函数的操作,该函数接收右半部分和当前轮次的子密钥作为输入,并生成一个输出。

  4. 轮函数输出与左半部分的异或(XOR)操作:轮函数的输出与左半部分(L)进行XOR操作,结果作为下一个轮次的右半部分(R)。

  5. 交换(Swapping):每个轮次结束后,左半部分(L)和右半部分(R)进行交换,成为下一个轮次的输入。这个步骤使得右半部分成为下一个轮次的左半部分。

  6. 重复轮次:上述步骤循环执行多个轮次,通常每个轮次使用不同的子密钥。

  7. 最后一轮的特殊处理:在最后一轮之后,左半部分(L)和右半部分(R)不进行交换,而是直接输出。

Feistel框架的重要特点是,解密过程与加密过程完全相同,只是使用的子密钥的顺序相反。这种结构使得算法具有可逆性,即可以通过应用相同的操作步骤和密钥逆序来解密密文并恢复明文。

三、DES和AES

1.DES

DES(Data Encryption Standard)是一种对称加密算法,是最早也是最为广泛使用的块密码算法之一。DES由IBM的Horst Feistel于1970年代设计,在1977年成为美国联邦政府的数据加密标准。

DES的工作原理如下:

数据分组:将明文分成64位的数据块。

密钥生成:使用56位的密钥,经过一系列的置换和压缩算法生成16个48位的轮次子密钥。

初始置换(Initial Permutation):将输入的64位明文块按照特定的置换表进行重排。

轮函数(Round Function):DES使用Feistel结构,每个轮次都包含相同的操作。在轮函数中,右半部分(32位)经过扩展置换和与子密钥的异或操作,然后通过S盒代替置换,最后再经过P盒置换,生成32位的输出。

轮次迭代:DES总共进行16个轮次的迭代,每个轮次都使用不同的子密钥。

左右交换和逆初始置换:经过16轮的迭代后,左右两部分进行交换,并进行逆初始置换,得到最终的64位密文。

解密过程与加密过程完全相同,只是使用的子密钥的顺序相反。

安全性:DES的密钥长度相对较短(56位),已经容易受到穷举搜索攻击。DES受到差分密码分析和线性密码分析等密码分析方法的攻击。为了提高安全性,可以使用3DES(Triple DES)进行更强的加密。

2.AES

AES(Advanced Encryption Standard)是一种对称加密算法,被广泛应用于保护敏感数据的加密通信和存储。它是目前最常用的加密算法之一,取代了早期的DES(Data Encryption Standard)算法。

  • AES支持三种密钥长度:128位、192位和256位。
  • 分组大小固定为128位
  1. 结构与运算方式:

    • AES采用了替代网络结构,通过多轮迭代和不同的操作来加密数据。
    • 迭代次数由密钥长度决定,128位密钥为10轮,192位密钥为12轮,256位密钥为14轮。
    • 运算包括字节替换、行位移、列混淆和轮密钥加。
  2. 加密过程:

    • 输入的明文被分成128位的数据块。
    • 初始轮密钥是由主密钥扩展生成的。
    • 每一轮包括字节替换、行位移、列混淆和轮密钥加操作。
    • 最后一轮不执行列混淆操作。
    • 最终得到密文数据块。
  3. 解密过程:

    解密过程与加密过程完全相反,使用相同的轮密钥进行逆操作。

  4. 安全性:

    • AES被广泛认可为安全可靠的加密算法。
    • AES的安全性基于其密钥长度和设计的复杂性。
    • 目前尚未出现有效的攻击方法,只要使用足够长的密钥,AES被认为是强大的加密算法。
  5. 应用领域:

    AES广泛用于保护敏感数据的传输和存储,例如网络通信、加密文件和数据库等。

注:AES(分步) - CrypTool门户(AES加解密工具)

相关推荐
BSV区块链1 天前
关于BSV区块链覆盖网络的常见问题解答(上篇)
网络·区块链
安红豆.1 天前
欧几里得算法--(密码学基础)
密码学·欧几里得算法
荔家大少1 天前
区块链媒体推广:15个数字解读未来-华媒舍
大数据·区块链·媒体
0x派大星2 天前
Solidity 存储和内存管理:深入理解与高效优化
web3·区块链·智能合约·solidity
0x派大星2 天前
Solidity智能合约中的事件和日志
web3·区块链·智能合约·solidity
_.Switch3 天前
Python Web WebAssembly 与 Python 的协同工作
前端·python·安全·架构·区块链·智能合约·wasm
白帽黑客cst3 天前
自学网络安全(黑客技术)90天学习计划
网络·数据结构·python·安全·web安全·密码学·ddos
CertiK3 天前
CertiK《Hack3d:2024年第三季度安全报告》(附报告全文链接)
安全·web3·区块链
Sui_Network4 天前
Sui主网升级至V1.34.2
运维·服务器·物联网·架构·区块链
杏酸雪菲期权4 天前
期权卖方怎么选择权利金高的品种,期货VIX高低对行情有什么影响
区块链