Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cryptography 长度扩展攻击质疑_Cryptography_Sha256_Sha_Crypto++_Dictionary Attack - Fatal编程技术网

Cryptography 长度扩展攻击质疑

Cryptography 长度扩展攻击质疑,cryptography,sha256,sha,crypto++,dictionary-attack,Cryptography,Sha256,Sha,Crypto++,Dictionary Attack,所以我一直在研究长度扩展攻击的概念,在我的研究过程中,我注意到的一些事情对我来说不是很清楚 1.研究论文解释了如何在末尾添加某种类型的数据,并生成新的数据。比如说 所需的新数据:count=10&lat=37.351&user\u id=1&long=-119.827&waffle=eggo&waffle=liege (注意2个华夫饼干)。我的问题是,如果服务器端的解析器函数可以跟踪重复的属性,那么整个长度扩展攻击会是无意义的吗?因为服务器会注意到重复的属性。与长度扩展攻击相比,用于检查任何重复

所以我一直在研究长度扩展攻击的概念,在我的研究过程中,我注意到的一些事情对我来说不是很清楚

1.研究论文解释了如何在末尾添加某种类型的数据,并生成新的数据。比如说

所需的新数据:count=10&lat=37.351&user\u id=1&long=-119.827&waffle=eggo&waffle=liege

(注意2个华夫饼干)。我的问题是,如果服务器端的解析器函数可以跟踪重复的属性,那么整个长度扩展攻击会是无意义的吗?因为服务器会注意到重复的属性。与长度扩展攻击相比,用于检查任何重复项的适当解析器是否是一个好的解决方案?我知道HMAC方法和其他保护,但现在这里专门讨论解析器

2.研究表明,唯一易受攻击的数据是H(关键信息)。他们声称H(message | key)对攻击者无效,因为我们必须附加一个新的密钥(我们显然不知道)。我的问题是为什么我们必须附加一个新的密钥?当我们攻击H(关键信息)时,我们不会这样做。为什么我们不能依赖这样一个事实:我们将通过验证测试(我们将创建正确的散列),并且如果解析器尝试从中提取密钥,它将获取我们发送的块中的唯一密钥并从中恢复?为什么我们要送两把钥匙?为什么攻击H(消息|键)无效

  • 我的问题是,如果服务器端的解析器函数可以跟踪重复的属性,那么整个长度扩展攻击会是一个无稽之谈吗? 您所说的是一个编写良好的解析器。写软件很难,写正确的软件也很难
  • 在该示例中,您看到了一个覆盖属性。你能说一个好的解析器必须使用最后一个还是第一个?规则是什么?可能会有最后一站必须被选上!这是一种可以实施也可以不实施的攻击。这取决于车站。如果你认为知识的话,那么找一个适合这个地方的人应该会吃惊的!经过近20年的发展,它在2009年被广泛应用于Flickr API

  • 我的问题是为什么我们必须附加新的密钥?当我们攻击H(关键信息)时,我们不会这样做。为什么我们不能依赖这样一个事实:我们将通过验证测试(我们将创建正确的散列),并且如果解析器试图从中提取密钥,它将获取我们发送的块中的唯一密钥并从中恢复。为什么我们要送两把钥匙?为什么攻击H(消息|键)无效
  • 这次攻击是伪造签名。攻击者不知道密钥,但他们仍然可以伪造新签名。新消息和签名-扩展哈希-被发送到服务器,然后服务器获取密钥并将其附加到消息以执行规范验证,即:;如果是,则签名有效

    解析器不提取密钥,它已经知道密钥。关键是,您可以确保数据是否真正扩展。填充规则很简单,添加
    1
    并填充许多零,以便最后64(128)是长度编码(非常简单,例如,对于SHA256,最终长度必须是512的倍数)。要查看内部是否存在另一个填充,必须检查每个块,然后您可以声称存在扩展攻击。是的,您可以这样做,但是,密码学的目标之一就是减少依赖性。如果我们可以创建一个更好的签名来消除检查,那么我们建议留下其他签名。这使软件开发人员能够轻松编写更安全的实现

    为什么攻击H(消息|键)无效

    很简单,您将获得扩展消息
    message | extended
    ,并发送扩展散列
    H(消息|键|扩展)
    发送到服务器。然后服务器获取消息
    message | extended
    并附加键
    message | extended | key
    ,并对其进行散列
    H(message | extended | key)
    ,显然这并不等于扩展的
    H(message | key | extended)

    请注意,SHA-512/256等SHA2系列的精简版具有抗长度扩展攻击的能力。SHA3通过设计对其免疫,并支持一个简单的KMAC签名方案。它也是免疫的,因为它是用这种结构设计的