【问题标题】:How does a reduction function used with rainbow tables work?彩虹表使用的归约函数如何工作?
【发布时间】:2011-08-10 02:52:48
【问题描述】:

我仔细阅读了about rainbow tables 并没有得到任何东西。为了构建散列链,使用了一个归约函数。这是一个以某种方式将哈希映射到密码的函数。 This article 说归约函数不是哈希的逆函数,它只是 一些映射

我不明白 - 甚至不是散列函数的逆的映射有什么用?这种映射应该如何实际工作并有助于推断密码?

【问题讨论】:

    标签: security hash passwords rainbowtable


    【解决方案1】:

    彩虹表“只是”一种用于预计算哈希的大表的智能压缩方法。这个想法是,当且仅当在表构建过程中考虑了相应的输入时,表才能“反转”哈希输出。

    每个表行(“链”)是一个哈希函数调用序列。诀窍是每个 input 都是从链中的前一个 output 确定性地计算出来的,因此:

    • 通过存储链的起点和终点,您“道德”地存储了完整的链,您可以随意重建(这就是彩虹表可以被视为一种压缩方法的地方);
    • 您可以从哈希函数输出开始链重建。

    归约函数是将散列函数输出转换为适当输入的粘合剂(例如,看起来像真正密码的字符串,仅由可打印字符组成)。它的作用主要是能够以或多或少的均匀概率生成可能的哈希输入,给定随机数据(并且哈希输出将是可接受的随机)。归约函数不需要有任何特定的结构,特别是关于散列函数本身的工作方式;归约函数必须允许继续构建链而不会产生太多虚假碰撞。

    【讨论】:

      【解决方案2】:

      归约函数不是散列逆的原因是散列的真正逆不是函数(请记住,“函数”的实际定义要求一个输出对应一个输入)。

      哈希函数产生的字符串比它们对应的输入要短。根据鸽巢原理,这意味着两个输入可以具有相同的输出。如果可以散列任意长的字符串,则 infinite 数量的字符串实际上可以具有相同的输出。然而,彩虹表通常只为每个哈希保留一个输出 - 所以它不可能是真正的逆。

      大多数彩虹表使用的归约函数是“存储具有此哈希的最短字符串”。

      【讨论】:

        【解决方案3】:

        它产生的是否是 the 密码并不重要:您将获得的也可以用作 a 密码,您可以使用它登录,就像以及原始密码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-02
          • 2019-05-28
          • 1970-01-01
          相关资源
          最近更新 更多