encryption - 如何对加密算法进行逆向工程?

标签 encryption encoding reverse-engineering

我编写了一个应用程序,以这种方式加密文本:

  1. 获取输入文本

  2. 反转文本

  3. 转换为十六进制

  4. 与 key 进行异或

  5. Base64 编码

现在,我自己没有做很多加密/编码,所以我的问题可能听起来很愚蠢,但是,假设我得到一个包含上述算法内容的文件,而我不知道这个算法。如何开始“破坏”文本,有什么指导方针、原则、规则可以遵循吗?

我的问题与这 5 个步骤无关,那是一个纯粹的例子。

作为另一个示例,请使用文本:A751CD9E1F99。我如何开始调查这可能意味着什么?

最佳答案

为了破解密码,密码分析者使用他们可以收集的所有信息。根据已知的情况,攻击可分为多种类别。一些主要攻击(从最难到最简单)是

  • 仅密文:这是最难的攻击。分析师尝试收集尽可能多的加密消息,并对其进行分析以查找符号频率的模式或偏差。然而,对于好的现代密码来说,没有任何模式。如果使用良好的密码并正确使用,这是不可能的。
  • 已知明文:拥有与某些密文相对应的明文是从新密文恢复未知明文的一大进步。这就是“逆向工程”真正开始的地方,因为他可以根据已知的输入和输出来测试他对算法的假设。在第二次世界大战中,密码分析学家努力建立广泛的“婴儿床”列表(可能出现在敌人消息中的单词)以利用已知的明文攻击。例如,某一天的天气状况,或者战斗的地名等都可能以加密信息的形式报告给总部。
  • 选择明文:更好的是密码分析者可以欺骗他的敌人加密密码分析者创建的消息。在战时,有时会向敌人泄露虚假信息,希望其被加密并帮助密码分析者破译密码。
  • 自适应选择明文:这是一种对已知明文的迭代方法。密码分析者可以反复让系统对他选择的明文进行加密,并查看结果来调整他的下一次尝试。

如今,破解代码的可能方法是通过系统缺陷。例如,可能会使用不良的 key 管理,导致 key 被盗或被猜测。在其他情况下,可能会使用“旁路”攻击。例如,通过仔细测量某些加密操作所需的时间,攻击可能能够猜测 key 的某些位或字节为零,从而导致通过某些算法的快速路径。

接近“锡箔帽”一端的方法是 intercept radio emissions from computing equipment.这允许远程代理“查看”监视器上显示的内容。甚至有专门设计的字体来尝试破坏这种窃听。

关于encryption - 如何对加密算法进行逆向工程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/988642/

相关文章:

php - 在php中为url编码中文字符

javascript - 对仪表板小部件进行逆向工程?

reverse-engineering - 在windbg中反汇编函数起始地址

iOS:获取 iPhone 密码以生成用于加密的对称 key

c++ - 异或运算符 C++

c# - 如果符号尚未编码,如何对其进行编码?

gdb - 如何使用 gdb 对运行另一个程序的 ELF 进行逆向工程?

java - Java 中的 AES-128 加密

无法链接 OpenSSL 代码

python html从命令行转义utf-8