我已经看到了 一个 几个 的问题答案 这么说MD5是不安全不是像沙。

我的问题是, 这是值得担心我的情况?

这里是一个例子,我是如何使用它:

  1. 在客户方面,我提供一个"安全"校验和信息通过追加的目前的时间和密码,然后散列使用MD5。所以: MD5(message+time+password).
  2. 服务器上的边我检查这个哈希靠的消息发送的使用我的知识的时间,它是发送和客户的密码。

在这个例子中, 我真的好使用SHA而不是MD5?

在什么情况下会选择的散列函数 真的 问题在实际意义?

编辑:

只是为了澄清- 在我的例, 是否有任何好处迁移到一个沙算法?

换句话说,是可行的,在本例中为个人来送消息和一个正确的散列 不知道的共用密码的?

更多的编辑:

表示歉意重复进行编辑-我不是很清楚我是什么要求。

有帮助吗?

解决方案

是的,这是值得担心的做法。MD5是如此严重损坏, 研究人员 已经能够伪造假证书符合实际的证书的签署证书的权威。这意味着他们能够创造自己的虚假证书的权威,并因而可能模仿任何银行或业务,他们觉得用浏览器完全信任他们。

现在,这个他们花了很多时间和努力采用群集的游戏机3s,和几个星期找到一个适当的碰撞。但一旦破裂,散列算法只会变得更糟糕的是,永远不会更好。如果你关心在所有有关的安全,它将更好地选择一个完整的散列算法,例如一的 沙-2家庭 (SHA-1也已减弱,尽管不断作为严重,因为MD5)。

编辑:所使用的技术的链接,我提供你参与能够选择的两个任意的消息前缀和一个共同的后缀,从其它可能产生于每个前缀一块的数据,可能会之间插入该前缀和公共后缀,产生一个消息具有相同MD5数额总和的消息,构成从其他的前缀。我不能想个办法这一特殊的脆弱性可能被利用的情况介绍,并且在一般情况下,使用安全有用 消息的认证 是更多的耐攻击比它使用数字签名,但是我能想到的一些漏洞,你需要观看出,它们大多是独立的哈你选择。

  1. 如所描述的,你的算法涉及储存的纯文本的密码在服务器上。这意味着你很容易受到的任何信息公开的攻击,可能发现的密码在服务器上。你可能会认为,如果攻击者可以访问的数据库那么游戏到了,但你的用户可能更喜欢,如果即使你的服务器遭到破坏,他们的密码不是。因为扩散的密码线上,许多用户使用的相同或类似的密码服务。此外,信息公开的攻击可能是可能的,即使在情况时,执行代码或权限升级的攻击都没有。

    你可以缓解这一攻击由保存密码服务器上的散列的随机盐;你储存的对 <salt,hash(password+salt)> 在服务器上,并发送盐的客户,以便它可以计算 hash(password+salt) 使用地方的密码在该议定书。这并不保护你免受下一次攻击,但是。

  2. 如果攻击者可能会嗅出一个消息发送给从该客户,他可以做一个词典的打击,对客户的密码。大多数用户有密码相当低的熵和一个好的字典中的几百万现有的密码以及一些时间随机permuting他们能找到密码的信息的一个攻击者从嗅探消息很简单。

  3. 技术你的建议不进行身份验证服务器。我不知道如果这是一个网络应用程序的,你说的对,但如果是,则谁可以执行DNS劫持的攻击,络劫持在一个不安全的无线网络或任何排序,可能只是做一个人在攻击中,他们收集的密码在明确的文本从你的客户。

  4. 虽然目前的攻击MD5可能不对该协议的描述,MD5已经受到严重损害,并且散列将永远只能获得较弱的,永远不会更强。你想打赌你会发现关于新的攻击,可用于对你会有时间升级的散列算法之前你袭击者有机会利用?它可能会更加容易开始的东西就是目前更强的比MD5,以降低你的机会具有处理MD5被打破。

现在,如果你只是这样做,以确保没有一个伪造一个消息从上的另一个用户论坛或东西,然后确定,这是不可能的,任何人都会把时间和努力,在打破该协议的描述。如果真的有人想冒充别人,他们很可能只是创建一个新的用户名,有一个0位的一个O或一些更类似使用Unicode,甚至不会打扰试图伪造信息和休息的散列算法。

如果这是被用于一些地方的安全真正的问题,然后不要创造自己的身份认证系统。只是使用 TLS/SSL.一项基本规则的加密技术是 不去创造你自己的.然后,即使情况的论坛,它可能不会管那么多,不会很容易只需使用的东西就是证明现比滚你自己?

其他提示

在这种特定情况下,我不认为最薄弱的环节应用程序使用md5,而不是沙。的方式md5是"破裂"是,鉴于md5(K)=V,有可能产生K'这样,md5(K')=V,因为输出空间是有限的(不是因为没有任何技巧,以减少搜索空间)。然而,K'不一定是K.这意味着,如果你知道md5(M+T+P)=V,你可以产生P'这样,md5(M+T+P')=V,这给一个有效的条目。然而,在这种情况下信息仍然是相同的,P直没有受到损害。如果攻击者试图建立消息M',T'时间戳,然后这是极不可能的,md5(M'T'+P')=md5(M'T'+P)除非P'=P.在这种情况下,他们会强迫的密码。如果他们有强迫的密码,那么这意味着它并不重要,如果你用sha或md5,由于检查,如果md5(M+T+P)=V相当于检查,如果sha(M+T+P)=诉(除了沙可能采取的固定的时间更长的时间来计算,这并不影响的复杂性暴力在P)。

然而,鉴于所选择,你真的应该只是继续前进和使用沙。是没有意义的未使用它,除非有一个严重的缺点,使用它。

第二件事是你可能不该存储用户的密码在数据库以纯文本。你应该商店是散列的密码,然后使用。在你的例子,散列将:md5(信息+时间+md5(password)),并可以安全地存储md5(密码)在数据库中。然而,攻击偷你的数据库(通过喜欢的东西SQL注)将仍然能够建立消息。我没有看到任何方式解决这个问题。

布莱恩的答复盖的问题,但我认为它需要加以解释一点不太繁琐

你使用了错误的加密算法在这里

MD5是错在这里,Sha1是错误的,在这里使用Sha2xx是错误的使用和绞是错误的使用。

你应该使用的是什么 如RSA.

让我解释一下:

你的安全的散列的是有效地发送密码的世界看到的。

你说你的散列值"时间+有效载荷+password",如果一个第三方得到一份你知道的有效载荷和时间。它可以找到密码(采用暴力或字典攻击).因此,它几乎就像你发送的密码在明确的文本。

而不是这你应该看看 公共钥匙加密 有你的服务器发出的公共钥匙给你的代理商和代理的数据进行加密的公共关键。

没有中间人将能够告诉什么是在信息,并没有一个将能够伪造的信息。

在一个侧面说明, MD5是大量强大 大部分时间。

这取决于如何有价值的内容的信息。沙家庭显然更安全的比MD5(这里的"更安全"是指"更难以假"),但是如果你的消息是twitter的更新,那么你可能不关心。

如果这些消息IPC层的一个分布式系统处理金融交易,那么也许你照顾更多。

更新:我应该增加,此外,这两个摘要的算法,本质上是可以互换,在许多方面,因此,有多少更多的麻烦,它会真正使用更安全的一个吗?

更新2:这是一个更透彻的回答: http://www.schneier.com/essay-074.html

是的,有人可以送消息和一个正确的散列不知道的共用密码。他们只需要找到一串,散列值相同。

怎样常见的是什么?在2007年,一群来自荷兰宣布,他们已经预测获胜者的2008年美国总统选举在一个文件与MD5hash值 3D515DEAD7AA16560ABA3E9DF05CBC80.然后,他们创建的十二个文件,所有相同的候选人的姓名和任意数量的空间,以下,散列值。MD5hash值是无价值,为检验和,因为太多的不同的文件中得到同样的结果。

这是同一场景是你的,如果我在读你的权利。只是替换"候选人的名字"用"秘密码"。如果你真的想要的是安全的,你也许应该使用不同的散列函数。

如果你要产生一散列-mac不会发明你的方案。使用 HMAC.有问题的做哈希(密钥||message)和哈希(信息||秘密钥匙)。如果您使用的是一个密码作为一个关键你应该也能使用的一个关键推导的功能。看看 pbkdf2.

是的,这是值得担心其散列使用这种情况。让我们来看看在攻击模型的第一次。攻击者可能不仅试图产生的价值观md5(M+T+P),但也可能会试图找到密码P.特别是,如果攻击者可以收集tupels值M, T, 和相应的md5(M, T, P)然后,他/她可能会试图找到P.这个问题还没有研究作为广泛的散列函数为寻找冲突。我处理这个问题的方法将试图同类型的攻击,是用来对付块密码:例如差分的攻击。自MD5已经非常容易受到差别的攻击,我当然可以想象,这种攻击可能成功的在这里。

因此我建议您使用更强的散列函数比MD5在这里。我也建议你使用HMAC而不是仅仅md5(M+T+P),因为HMAC已被设计为的情况描述,因此一直进行分析。

没有什么不安全的有关使用MD5以这种方式。MD5只是打破在这个意义上,有的算法是,给予一个群的数据的额外数据B可以产生创造所希望的散列。这意味着,如果有人知的散列的密码,它们可能产生串的即将结果与这一散列。不过,这些产生串通常很长,所以如果你极限的密码到20或30个字你还是可能的安全。

主要原因使用SHA1过MD5是,MD5职能正在逐步淘汰。例如力。净库不包括MD5密码提供者。

MD5提供更多的碰撞于沙,这意味着有人可能实际上获得相同的散列从不同的词(但它很少).

沙的家人已经被称为它的可靠性,SHA1已经标准在日常使用,同时SHA256/SHA512是一个标准的政府和银行家用电器。

对于您的个人网站或论坛,我建议你考虑SHA1,如果创建一个更严重的如商,我建议您使用SHA256/SHA512(SHA2系)

你可以检查维基百科条约 MD5 &

两MD5amd SHA-1有密码的弱点。MD4和SHA-0也受到损害。

你也许可以安全地使用MD6,按摩,并RIPEMD-160.

看看下面的powerpoint从普林斯顿大学,找到最后一页。

http://gcu.googlecode.com/files/11Hashing.pdf

我不打算评论MD5/SHA1/等。的问题,所以也许你会考虑这个答案没有实际意义,但一些发笑我很略是每当使用MD5et al.为哈密码在数据库。

如果别人的闲逛在你的数据库,然后他们很可能想看看你的密码哈希值,但它只是作为可能他们想要偷窃的个人信息或任何其他数据,你可能已经躺在附近的其他表格。坦率地说,在这种情况下,你已经得到了大鱼要煎。

我不是说忽略的问题,并就像我说的,这真的没有太多的承于是否应该使用MD5,SHA1或什么哈你的密码,但是我做得到胳肢略粉红色的每一次我读过一个人得有点太难过的关于普通文本的密码数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top