Cryptography 前映像攻击的代价

Cryptography 前映像攻击的代价,cryptography,md5,hash,Cryptography,Md5,Hash,我需要知道密码学中成功的前映像攻击的代价,对加密哈希的前映像攻击是试图找到具有特定哈希值的消息,Wikipedia 我要散列的消息由六位数字组成,即出生日期,然后是四位随机数字。这是一个社会保险号码 是否也有可能使用特定密码散列某些内容。这将引入另一层安全性,因为必须知道密码才能为消息生成相同的哈希值 我正在考虑使用SHA-2。我不确定您的问题到底是什么,但为了使加密值更安全,请使用值 编辑:我认为您在问题中描述了盐值。我不确定您的问题到底是什么,但为了使加密值更安全,请使用值 编辑:我认为您在

我需要知道密码学中成功的前映像攻击的代价,对加密哈希的前映像攻击是试图找到具有特定哈希值的消息,Wikipedia

我要散列的消息由六位数字组成,即出生日期,然后是四位随机数字。这是一个社会保险号码

是否也有可能使用特定密码散列某些内容。这将引入另一层安全性,因为必须知道密码才能为消息生成相同的哈希值


我正在考虑使用SHA-2。

我不确定您的问题到底是什么,但为了使加密值更安全,请使用值


编辑:我认为您在问题中描述了盐值。

我不确定您的问题到底是什么,但为了使加密值更安全,请使用值


编辑:我认为您在问题中描述的是盐值。

如果您想知道为正在描述的字符串找到前映像的成本有多高,您需要计算出有多少个可能的字符串。由于前6位数字是出生日期,它们的值甚至比天真的10^6假设更受限制-我们一年中每天都有366*100的上限,加上两位数字的年份

剩余的4个“随机”数字允许另外10^4个可能性,给出366*100*10^4=366000000个散列的不同散列总数

有了这些可能性,在现代计算机上在几分之一秒内就可以找到一个前映像,或者,就此而言,为每个可能的散列建立一个查找表

正如Tom所建议的,使用salt将使查找表变得不切实际,但由于有效值的范围受到限制,暴力攻击仍然非常实用,因此仅此一项不足以使攻击不切实际

使事情变得更昂贵的一种方法是使用迭代散列——也就是说,对散列进行散列,并反复对其进行散列。您必须比攻击者少做很多散列操作,因此成本的增加对他们的影响比他们对您的影响更大。然而,考虑到搜索空间较小,这仍然可能只是权宜之计

就使用密码而言,听起来你在寻找一个-一个使用散列的结构,但是只有在你有密钥的情况下才能被验证。如果你能保守密钥秘密——如果你假设只有在你的系统被破坏的情况下才能获得哈希值,那么这不是一件容易的事情——这是一个实用的系统


编辑:好的,所以“几分之一秒”可能有点夸张,至少在我的琐碎Python测试中是这样。但是,在短时间内在一台计算机上进行暴力操作仍然是非常容易的。

如果您想知道为所描述的字符串找到前映像的成本有多高,您需要计算出有多少个可能的字符串。由于前6位数字是出生日期,它们的值甚至比天真的10^6假设更受限制-我们一年中每天都有366*100的上限,加上两位数字的年份

剩余的4个“随机”数字允许另外10^4个可能性,给出366*100*10^4=366000000个散列的不同散列总数

有了这些可能性,在现代计算机上在几分之一秒内就可以找到一个前映像,或者,就此而言,为每个可能的散列建立一个查找表

正如Tom所建议的,使用salt将使查找表变得不切实际,但由于有效值的范围受到限制,暴力攻击仍然非常实用,因此仅此一项不足以使攻击不切实际

使事情变得更昂贵的一种方法是使用迭代散列——也就是说,对散列进行散列,并反复对其进行散列。您必须比攻击者少做很多散列操作,因此成本的增加对他们的影响比他们对您的影响更大。然而,考虑到搜索空间较小,这仍然可能只是权宜之计

就使用密码而言,听起来你在寻找一个-一个使用散列的结构,但是只有在你有密钥的情况下才能被验证。如果你能保守密钥秘密——如果你假设只有在你的系统被破坏的情况下才能获得哈希值,那么这不是一件容易的事情——这是一个实用的系统


编辑:好的,所以“几分之一秒”可能有点夸张,至少在我的琐碎Python测试中是这样。但是,在短时间内在一台计算机上进行暴力攻击仍然是非常容易的。

SHA-2、SALT、预映像攻击、暴力强制使用一个受限的6位数数字-伙计,如果我们有一个可以调整安全性的拨号盘,那就太棒了。大概是这样的:

Time to compute a hash of an input:
 SHA-2, salted                                Better security!
  |                                            |
 \|/                                          \|/
 |-----------------------------------------------------|
.01 seconds                                           3 seconds
如果我们能够做到这一点,那么在验证用户输入的数据是否与您散列的数据匹配时,您的应用程序实际上需要几秒钟的slo 威尔

但是想象一下成为袭击者

太棒了,他在用盐散列东西,但只有366000000个可能的散列,我将以每秒10000的速度完成,并在10小时内完成

等等,发生什么事了!我只能每2.5秒做一次?!这将花费我29年的时间

那太棒了,不是吗

当然会


我现在介绍给你们。他们给你那个刻度盘。想花整整一分钟的时间对密码进行哈希运算吗?他们可以做到。一定要记住盐

SHA-2、盐类、前图像攻击、暴力强制限制、6位数字-伙计,如果我们有一个拨号盘,我们可以转动它来调整安全性,那就太棒了。大概是这样的:

Time to compute a hash of an input:
 SHA-2, salted                                Better security!
  |                                            |
 \|/                                          \|/
 |-----------------------------------------------------|
.01 seconds                                           3 seconds
如果我们能够做到这一点,您的应用程序在验证用户输入的数据是否与您散列的数据匹配时,实际上会慢几秒钟

但是想象一下成为袭击者

太棒了,他在用盐散列东西,但只有366000000个可能的散列,我将以每秒10000的速度完成,并在10小时内完成

等等,发生什么事了!我只能每2.5秒做一次?!这将花费我29年的时间

那太棒了,不是吗

当然会


我现在介绍给你们。他们给你那个刻度盘。想花整整一分钟的时间对密码进行哈希运算吗?他们可以做到。一定要记住盐

四个随机数字看起来像是salt我要散列的消息是一个社会安全号码,因为这是敏感数据,不应该存储。你应该明确地将其与salt值一起散列,作为社会安全号这样的受限词典极易受到词典攻击。四个随机数字看起来像salt。我要散列的消息是社会安全号,因为这是敏感数据,不应存储。您应该将其与salt值一起散列,作为一个社会保险号码这样的受限词典极易受到词典攻击。我对美国的社会保险不太熟悉,但我认为它们很容易生成所有可能的排列。这给这个问题带来了一个独特的问题,因为给定一组我认为很容易计算的所有可能的安全号码,并给定一个散列数字和盐的数据库,家庭计算机计算每个记录的所有社会安全号码将相当容易。多个散列层肯定会有帮助,但我们存储的数据使这个问题变得更难,我不确定存储它们的最佳方式是什么。同时,多个散列层开始变得模糊而安全。这是一个有趣的问题,我不确定如何存储这样的数据。如果您在用户记录中存储哈希密码,您可以使用原始密码作为社会保险号码的盐。这意味着除非知道账户的原始密码,否则无法获得社会保障。但是,当用户希望更改密码时,您会遇到问题。@Tom这不是唯一的问题:ATM PIN会遇到完全相同的问题,只是搜索空间更加有限。盐确实会使组装数据库变得不切实际——只需选择一种足够长的盐即可。迭代散列并不是通过隐蔽性来保证安全的——它不涉及隐蔽性。最后,为什么要炮制出奇异的盐渍方案?它们肯定不会比使用纯随机的每值盐更安全,也可能更不安全。不过,正如我已经指出的那样,由于键空间如此之小,单靠盐渍是不够的。我对美国的社会保障不太熟悉,但我认为它们很容易生成各种可能的排列。这给这个问题带来了一个独特的问题,因为给定一组我认为很容易计算的所有可能的安全号码,并给定一个散列数字和盐的数据库,家庭计算机计算每个记录的所有社会安全号码将相当容易。多个散列层肯定会有帮助,但我们存储的数据使这个问题变得更难,我不确定存储它们的最佳方式是什么。同时,多个散列层开始变得模糊而安全。这是一个有趣的问题,我不确定如何存储这样的数据。如果您在用户记录中存储哈希密码,您可以使用原始密码作为社会保险号码的盐。这意味着除非知道账户的原始密码,否则无法获得社会保障。但是,当用户希望更改密码时,您会遇到问题。@Tom这不是唯一的问题:ATM PIN会遇到完全相同的问题,只是搜索空间更加有限。盐确实会使组装数据库变得不切实际——只需选择一种足够长的盐即可。
迭代散列并不是通过隐蔽性来保证安全的——它不涉及隐蔽性。最后,为什么要炮制出奇异的盐渍方案?它们肯定不会比使用纯随机的每值盐更安全,也可能更不安全。不过,正如我已经指出的那样,键空间如此之小,单靠盐渍是不够的。今天一分钟。18个月30秒,36个月15秒;不过,感谢您链接到特定的方案。实际上,密码哈希方案多年来一直在这样做,哈希500次,因此攻击者的成本更高。不幸的是,像rainbow表hellman时间内存折衷这样的东西否定了攻击者一方的大量计算,因为他们通过在自己的输出上运行n次散列来构建查找表。18个月30秒,36个月15秒;不过,感谢您链接到特定的方案。实际上,密码哈希方案多年来一直在这样做,哈希500次,因此攻击者的成本更高。不幸的是,像rainbow表hellman时间内存折衷之类的东西在攻击者方面否定了很多这种计算,因为他们通过在自己的输出上运行n次哈希来构建查找表。