ChaCha20 流密码加密算法详解
ChaCha20 是一种高性能、高安全性的对称流密码算法,由 Google 的 Dan Bernstein 于 2008 年设计。它是 Salsa20 算法的改进版本,旨在提供比其前辈更高的抗攻击能力和更简洁的实现。ChaCha20 因其卓越的性能和安全性,已成为 TLS 协议中的重要组成部分,特别是在移动设备和低功耗环境中,替代了传统的 AES-GCM。 核心思想:通过一个密钥 (Key) 和一个随机数 (Nonce) 生成一个无限长的伪随机密钥流,然后将密钥流与明文进行异或 (XOR) 操作得到密文。解密时,使用相同的密钥和随机数生成相同的密钥流,再与密文异或即可还原明文。 一、流密码 (Stream Cipher) 简介流密码是一种对称加密算法,它将明文的每个比特或每个字节与一个伪随机密钥流的对应比特或字节进行组合(通常是异或)来生成密文。 1.1 与分组密码 (Block Cipher) 的区别 特性 流密码 (Stream Cipher) 分组密码 (Block Cipher) 工作方式 逐位/逐字节加密 将明文分成固定大小的块,逐块加密 ...
AES (Advanced Encryption Standard) 加密算法详解
AES (Advanced Encryption Standard),即高级加密标准,是当今最广泛使用的对称密钥分组密码算法之一。它由比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计,原名为 Rijndael 算法。2001 年,美国国家标准与技术研究院 (NIST) 选定 Rijndael 算法作为新的联邦信息处理标准 (FIPS 197),取代了 DES (Data Encryption Standard),并将其命名为 AES。AES 具有出色的安全性、高效的性能和广泛的硬件及软件支持,已成为保护敏感数据的事实标准。 核心思想:AES 是一种对称密钥分组密码,它采用 SPN (Substitution-Permutation Network) 结构,通过反复迭代四种基本操作:SubBytes (替换)、ShiftRows (行移位)、MixColumns (列混合) 和 AddRoundKey (密钥加),将固定大小的明文块加密成相同大小的密文块,并支持 128、192 或 256 位密钥,从而提供强大的安全性。 一、引言:对称加密的王...
Substitution-box (S-box) 详解
在现代对称密钥密码算法,特别是分组密码 (Block Ciphers) 中,Substitution-box (S-box) 是一个至关重要的组件。S-box 的引入是为了提供算法的非线性性 (Non-linearity),这是确保密码安全性的核心要素之一。如果一个密码算法是线性的,攻击者可以利用线性代数方法轻松破解它。S-box 通过将输入位模式映射到不同的输出位模式,使得整个加密过程变得高度复杂和混沌,从而抵抗各种密码分析攻击。 核心思想:S-box 的核心作用是在分组密码中引入非线性变换,将输入位序列替换为与输入不呈线性关系的输出位序列,从而增强密码的混淆性 (confusion) 和扩散性 (diffusion),抵抗线性密码分析和差分密码分析等攻击。 一、什么是 S-box?1.1 定义Substitution-box (S-box),也称为替换盒,是一个查找表 (lookup table),它接受一个固定长度的输入位序列(通常是若干位),并生成一个不同或相同长度的输出位序列。S-box 的设计目的是实现非线性变换:它不是一个简单的位移、异或 (XOR) 或加法...
