我正在尝试更多地了解对称加密,并发现基本上每个对称加密和解密最终都(以某种方式)基于使用密码和一些数据的简单 XOR-Byte-Toggle。
这是错误的。让我们开始一些正式的定义;
分组密码是一组排列,其中每个密钥都应从该系列中选择一个唯一的前排列。我们希望分组密码是伪随机排列(PRP)。
分组密码是原语,需要目标系统的适当操作模式。我们有大量的分组密码操作模式,其中 CTR 和 OFB 是常用模式,可以将任何分组密码转换为流密码。当我们定义操作模式时,我们可以谈论
- KPA:已知明文攻击
- CPA:选择明文攻击
- CCA:选择密文攻击及其变体 CCA1、CCA2、CCA3、
- 还有其他一些...
我们期望一种模式至少具有 Ind-CPA 安全(Ind -> Indistuishable),其中 ECB 失败并且 CTR 和 CBC 可以具有 Ind-CPA 安全性。
CTR 模式实际上不需要逆排列(即分组密码的解密),因此我们可以使用任何伪随机函数(PRF)作为具有更好安全裕度的广泛函数集。CTR 模式最初是为 PRF 设计的。
CBC 模式非常常见,参见 TLS 1.3 之前的版本。CBC 模式具有最终从 TLS 1.3 中删除的填充预言攻击。
认证操作模式:在 TLS 1.3 中,我们只有认证模式 AES-GCM、AES-CCM 和 ChaCha20-Poly1305,它们每个都在内部使用 CTR 模式(ChaCha 是内置的 CTR 模式)并且它们还通过 GCM 进行身份验证和 Poly1305。CTR模式下没有padding被攻击。
我现在的问题是,为什么我们需要制作“安全”的加密和解密算法?
当然,我们需要。我们希望保护我们的信息。例如; 如果您坚持使用带有单个密钥的 DES,则可能有实体可以在一天内破坏您的加密!根据 NIST,当前的安全密钥大小至少为 112。
使用带有 256 位密钥的 AES,即使是可能的加密量子计算机 ( QCQ ) 也能安全。您还可以将 ChaCha20 与 256 位密钥一起使用(或者更好地将 XChaCha20 与 192 位随机数一起使用,以减轻可能的(IV,密钥)对重用问题)。
当我得到数据时,我碰巧知道是 AES(或任何算法)加密的,我现在想读取它。您需要密码才能解密。我在这里看到“安全”问题的唯一方法是,除了您之外接收该数据的人需要密码来解密它(也知道数据是 AES 加密的)。
他现在尝试解密数据的方式是:Dictionary-Attacks,...(一直到 Bruteforce)。
是的,因为 AES 对密钥搜索是安全的(甚至AES-128也有),所以可能的攻击是您的密码。如果您使用错误的密码,那么攻击者会从已知的超过 613M 的典当密码开始对他们进行暴力破解。他们也可能会尝试为所有可能的组合(如 8 个字符)制作彩虹表。
为了减轻您需要的密码搜索攻击
- 要使用具有良好强度的良好密码(例如从 dice-wire 生成的密码),建议使用至少 128 位强度。
- 使用良好的基于密码的密钥派生函数,例如最新的竞赛获胜者 Argon2。使用正确的参数,您可以降低攻击者的能力。大量的迭代、内存硬度和增加的线程是实现 Argon2 提供的所有功能的关键。减少了大规模 GPU、ASIC 和 CPU 攻击。
但是,只要数据没有标准标头或您如何识别正确解密的方法(例如,考虑一个简单的文本文件),计算机就无法真正定义要正确解密的数据。
这实际上取决于所使用的加密方案。例如
如果文件是文本文件,那么也可以查找可能的字符串。越接近自然语言,就越有可能成为真正的关键。所有这些都可以自动化。
考虑到所有这些,我很难理解为什么我们不仅使用简单的 XOR 加密,因为它很简单,很可能是加密和解密文件的最快方法,并且基本上在每种编程语言中都易于实现。
您似乎在谈论 One Time Pad (OTP) 加密。原因很简单;为了无条件安全(或称其为完全保密或信息理论上安全),密钥大小必须等于消息大小。自 1949 年克劳德·香农 (Claude Shannon) 就知道这一点。这对于当今的大多数系统来说是不切实际的。
今天我们放宽了这个条件,以在计算上对多项式有界的对手是安全的。我们构建了一个可以抵抗已知攻击的分组密码或流密码。然后使用流密码,我们可以直接用 x-or 加密消息。对于分组密码,我们需要一种操作模式,如上所述,我们根据需要选择合适的操作模式。不同的应用程序有不同的风险,需要不同的操作模式,比如今天我们使用 XTS/XTX 操作模式进行磁盘加密,而不是之前使用的 CTR 模式,并且有一些攻击点。
OTP 似乎很容易实现,但是密钥生成和分发是常见问题。请记住,重用会导致 crib-Draggin 攻击,这在历史上发生过,
这里或多或少的关键问题是,究竟什么意味着加密和解密算法在密码学上是安全的?
什么使对称加密算法在密码学上安全?
简单的答案是在设计过程中进行多年的研究和密码分析。
记住
美国国家安全局(NSA)内部有句老话:攻击总是会变得更好;他们永远不会变得更糟。**
因此,为所有可能的攻击场景做好准备,即使 RSA/ECC 失败到 CQC 并使用后量子公钥密码系统