什么是密码分析?阅读完整概述
密码分析是指在不使用实际密钥的情况下,对代码、密码和加密文本进行解密和分析的研究和实践。它是一种在无法获得解密密钥时访问通信明文内容的方法。
定义相关术语
密码学分为密码术(创建秘密代码)和密码分析(研究密码算法和破解此类密码)。密码分析师是从事密码分析的人。
密码分析的作用
密码分析在开发健壮的密码系统过程中发挥着重要作用。如果密码系统的设计者没有考虑所有潜在的攻击途径,那么“通过模糊性实现安全”可能会导致实施弱密码系统。
密码分析师做什么?
他们的工作包括识别密码系统中的任何弱点。它有助于我们了解它们以及我们加强它们的能力,并改进算法以生成更安全的秘密代码。例如,密码分析师可能会尝试解密密文以获取明文。它可以帮助我们确定明文或加密密钥。
什么是密码分析攻击
攻击密码系统以识别其缺陷至关重要。它们被称为密码分析攻击。攻击取决于算法的性质以及对明文基本元素的了解,这些元素可以是标准的英文文档或 Java 代码。因此,在发起攻击之前了解明文的性质至关重要。
密码分析攻击类型
已知明文攻击 (KPA) - 在这种类型的攻击中,一些明文-密文组合已知。攻击者将它们映射以获取加密密钥。此攻击更容易执行,因为大量数据已经可用。
选择明文攻击 (CPA) - 在此攻击方法中,攻击者选择不规则的明文,获取相应的密文,并尝试解密消息。它与 KPA 一样易于实施,但成功率似乎很低。
仅密文攻击 (COA) - 在此攻击中,攻击者仅拥有密文的一部分,并试图推断出相应的加密密钥和明文。它构建起来最复杂,但也是最有可能被攻击的,因为只需要密文。
中间人 (MITM) 攻击
攻击者可以通过安全通信通道拦截双向通信伙伴之间传输的消息/密钥。
简单的密码分析技术
较新的加密算法被构建为能够抵御所有已知的密码分析方法。但是,一些简单的策略可以帮助评估(并可能破坏)较旧或新手密码系统的安全性。
熵计算
熵是系统中存在的不确定性程度的指标。强大的加密算法应该生成具有较大随机性的密文,这表明密文包含很少或根本不包含与原始明文或密钥相关的有用信息。
因此,熵测试是识别加密数据的有效工具。虽然可以手动计算熵,但 Binwalk 和 radare2 等工具包含可以用来区分文件中加密数据的熵查看器。
识别加密数据后,可以使用其他功能来帮助识别使用的加密算法。密文和块长度以及函数名称都是有用的信息。
如果可以识别算法,则可以确定加密算法是否存在缺陷。该算法还可以找到文件中的加密密钥,这可能是非常有用的信息。
字符频率分析
除了好的密文之外,现代语言并非随机的。具备足够的语言专业知识,就可以推测出某个给定序列之后会是什么字母。例如,在英语中,哪个字母几乎总是跟在字母 Q 之后?
语言缺乏随机性有利于密码分析,因为它使弱密码易于破解。使用字符频率分析可以轻松破解替换和旋转密码。
加密与编码
编码和加密都是隐藏数据的方法。但是,它们的实现和效果却大不相同。
对于加密和解密,加密需要使用密钥。知道这个密钥后,就可以从密文中提取明文。
在没有密钥的情况下,编码算法对数据执行可逆操作。这意味着任何熟悉编码算法的人都可以将其反转。
编码算法经常在勒索软件中用作加密的简单替代品。但是,如果知道编码算法,则可以轻松地更改它们。
Base64 编码
Base64 编码是一种编码技术,允许任何类型的数据通过仅限于字母数字字符和符号的协议发送。这是通过将三个字节的序列映射到四个字符的集合来实现的。
此映射允许您将六位序列(四组六个字符等于 24 位或三个字节)分配给 64 个可打印符号之一,如上表所示。base64 系统使用填充来确保输入并非正好是三个字节的倍数,从而导致编码版本在末尾有一个或两个等号(如 =/==)。
由于 base64 字符集和这些等号,这种编码方法很容易识别。
由于 Base 64 编码用于使原本不可打印的数据可打印,因此它通常用于编码加密数据。有时会使用可以轻松反转的编码来代替加密。
编码 URL
另一种用于在字符集有限的协议中启用数据传输的编码方法是 URL 编码。在这种情况下,URL 编码旨在使 URL 中保留的字符(如“?”和“.”)可以在域名或 URL 的其他部分中使用。
结论
大多数现代加密算法能够抵抗已知的攻击,并且许多“被破解”的算法需要复杂的数学知识才能理解攻击。但是,简单的方法使得许多较旧的编码和加密算法很容易被破解。
这很有利,因为许多恶意软件变种依赖于这些安全性较低的加密技术。了解基本的密码分析概念和方法在网络安全中可能非常有益。