首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问模式泄漏下的攻击尾流

访问模式泄漏下的攻击尾流
EN

Cryptography用户
提问于 2016-06-24 14:26:14
回答 1查看 149关注 0票数 3

如果攻击者和用户都不在共享的计算集群中,那么缓存定时通道(例如某些块密码的存在)是否可以被利用来提取内存访问模式信息?

Sub-questions:

  • 如果不是,如果攻击者都共享一台物理机器,如何做到这一点?
  • 如果攻击者和用户都不在共享计算集群中,是否可以利用scrypt的内存硬度?
  • 需要知道多少个内存地址位置才能在常量空间内对用户的加密密码进行有效的字典攻击?
EN

回答 1

Cryptography用户

发布于 2022-12-01 01:05:50

做了一些研究,发现了的论文(在问题发布一年后发表)。从理论上讲,利用缓存定时攻击消除PBKDF2的存储硬度特性是理论上可行的。

扩展了本文的内容,说明了ROMix (本文将其表示为MHMIX)函数易受缓存定时攻击的影响。ROMix由以下伪代码描述:

代码语言:javascript
复制
   Algorithm scryptROMix

   Input:
            r       Block size parameter.
            B       Input octet vector of length 128 * r octets.
            N       CPU/Memory cost parameter, must be larger than 1,
                    a power of 2, and less than 2^(128 * r / 8).

   Output:
            B'      Output octet vector of length 128 * r octets.

   Steps:

     1. X = B

     2. for i = 0 to N - 1 do
          V[i] = X
          X = scryptBlockMix (X)
        end for

     3. for i = 0 to N - 1 do
          j = Integerify (X) mod N
                 where Integerify (B[0] ... B[2 * r - 1]) is defined
                 as the result of interpreting B[2 * r - 1] as a
                 little-endian integer.
          T = X xor V[j]
          X = scryptBlockMix (T)
        end for

     4. B' = X

他们描述了ROMix的以下部分容易受到缓存定时攻击:

代码语言:javascript
复制
        j = Integerify (X) mod N
        T = X xor V[j]
        X = scryptBlockMix (T)

他们的分析如下:

正如前面提到的,A是一个数组,它提供了它的内存-硬属性。A存储B的所有重复散列,使得AN = Mixn (B),其中Mixn (B)是散列B倍的结果(例如,Mix2 (B) =Mix( B,I),I)。在上面的代码行中,选择A的元素作为整数,通过解释散列结果将A的元素作为整数,并使用它们通过A(变量k)索引。散列结果是秘密信息(用户密码上的PBKDF2的求值)所特有的,也是从秘密信息导出的。由于这些内存访问依赖于密码,因此,在执行氪星时观察到的内存访问模式将提供关于PBKDF2算法第一步的评估结果的信息。

在我看来,他们对自己论点的论证并不深入,毕竟这是一篇学生论文。让我们再来分析一下。

在我们开始之前,这个RFC 7914中指定了scrypt,在它的维基百科文章上也可以找到一个很好的参考。首先,显然,内存访问是在这一行代码T = X xor V[j]上进行的。在最好的情况下,我们可以从缓存定时攻击中获得索引j。我们必须记住,在这个步骤中:T = X xor V[j]使用的X值是scryptBlockMix()函数在X上的应用,N-1次。为了简单起见,让我们假设我们可以以某种方式恢复X的值,但是请注意,这在实践中是不可能的,因为j = Integerify(X)函数丢失了X的很大一部分。现在,我们看到在第三步我们知道X和j的理想场景中,我们仍然不知道V数组用于T = X xor V[j]操作的内容。据我所知,在理想的情况下,这种攻击降低了对scryptBlockMix的几次调用,这取决于攻击的成功以及它能够捕获多少js。值得注意的是,它没有为B' (返回的值)提供任何信息,因为在最后一次访问内存之后,T是XORed和V[j],我们不知道V数组的内容。

概括地说:

  • 这篇文章描述的是一次实际的攻击吗?
  • 本文描述了一种理论上绕过氪星记忆硬度的方法吗?不,在理想的情况下,它可能会降低对scryptBlockMix的几次调用的安全性。

所以我认为Maarten Bodewes是对的。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/37279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档