【问题标题】:Openssl Message Digest One-Way Brute-force attackOpenssl Message Digest 单向蛮力攻击
【发布时间】:2013-05-28 13:16:21
【问题描述】:

我正在学习密码学并使用 OPENSSL 来实现我所学的一切。最近,我找到了one of the assignment questions 并正在尝试解决它。除了这个问题,我对大多数问题的理解都没有问题。

4 任务 2:单向属性与无冲突属性 在这项任务中,我们将研究常见散列函数的两个属性之间的区别:单向 财产与无碰撞财产。我们将使用蛮力方法来看看需要多长时间才能破解 这些属性中的每一个。而不是使用 openssl 的命令行工具,你需要编写你的 自己的 C 程序来调用 openssl 加密库中的消息摘要函数。文档可以在 http://www.openssl.org/docs/crypto/EVP_DigestInit.html。 计算机安全教育实验室,CMSC 414,2013 年春季 2 由于大多数哈希函数对这两个属性的暴力攻击非常强大, 使用蛮力方法破解它们需要数年时间。为了使任务可行,在所有这些 项目我们将哈希值的长度减少到 24 位。我们可以使用任何单向哈希函数,但我们 仅使用哈希值的前 24 位。 编写一个程序,给定一个 24 位的哈希值,找到一个匹配的文本(只有小写的 ASCII 字符) 条款)。您的程序将不得不重复 1) 生成随机文本,2) 对其进行哈希处理,3) 比较低 24 位 到输入。 您的程序(源代码必须称为 task2.c)将按如下方式调用:

          ./task2 <digest name> <hash value>

例如,./task2 sha256 2612c7. . .,您的程序必须将获胜文本写入 task2.out。 请确保输出可读可写,即:

       open("task2.out", O`enter code here` WRONLY | O CREAT, 0644);

我们将使用命令行工具进行验证,例如openssl dgst -sha256 task2.out。 问题:您必须散列多少文本才能找到特定的散列? (给出三个试验的平均值)

我无法理解如何开始编写我的程序。非常感谢任何输入。因为我不是为家庭作业解决它。我正在寻找一些指针,而不是代码。

【问题讨论】:

    标签: c++ openssl brute-force oneway


    【解决方案1】:

    好吧,向我阅读课文可以清楚地了解任务是什么,并且不清楚您没有得到哪个部分。从哪儿开始?

    • 创建一个类似于 hello word 的骨架程序
    • 创建一个生成随机文本的函数
    • 创建一个接受文本和哈希 ID 的函数,并使用 openssl 对其进行哈希处理,返回哈希值
    • 创建一个提取哈希低 24 位的函数
    • 创建接受命令行参数并将其转换为 24 位数字的函数,该数字是查找的哈希值和要在 openssl 中删除的哈希 ID(或退出并显示错误指示)
    • 运行一个循环,不断提供新的随机字符串,直到生成的哈希与 req 和计数匹配
    • 将中奖文本写入文件并输出数字
    • 完成分配中的所有剩余任务...

    【讨论】:

      【解决方案2】:

      该算法由 Balog Pal 精心设计。只是添加一些东西: 在单向属性中,您将获得一个散列,然后您搜索具有相似散列的另一个文本。 在无碰撞属性中,您只需要找到两个具有相似哈希值的文本。因此,您首先生成两个文本并比较它们对应的哈希值。如果它们相同,则您已发现冲突。如果不是,则存储已经生成的哈希值,然后生成一个新文本,找到它的哈希值并将其与存储的哈希值进行比较。如果任何存储的哈希与它匹配,则您发现了冲突,否则将其存储在存储的哈希列表中。重复循环,直到找到碰撞。

      同样的python实现可以在下面的链接中找到。它包括最少的 cmets,因此您必须从代码中找出所有内容。完成后,尝试用 C 或 java 实现它。

      https://github.com/arafat1/One-Way-Property-versus-Collision-Free-Property/blob/master/HashProperty.py

      【讨论】:

        猜你喜欢
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 2021-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多