在用户设备上散列密码是否安全?

问题描述 投票:0回答:3

我对哈希了解不多,但是我注意到一个(相对著名的)网站通过发送url参数“ hash = longStringIAssumeisTheHashOfMyPassword”将我登录到我的帐户中。

散列密码的目的是,如果攻击者获得了所有散列密码的列​​表,他们仍然将无法进入帐户。如果他们在设备上哈希我的密码,黑客是否无法绕过哈希?

如果我得到了哈希密码列表,我不能只是去site.com/login?hash=stolenHash并登录吗?

它也在发送我的ip作为参数,我对此并不担心,但似乎任何人都可以在其中输入他们想要的任何IP。

我完全错了,还是我应该报告这个问题?

编辑:每次登录时哈希值都会改变,但是我可以多次使用旧哈希值登录。

security web hash
3个回答
3
投票

这完全取决于服务器如何处理提供的哈希。如果服务器只是将该哈希值放入其数据库中,然后将您发送的哈希值与数据库中的值进行比较,那么是的,那将存在您描述的问题。

相反,应该这样做是首先在本地扩展密码,然后在服务器上再次进行哈希处理。 “拉伸”是指应用时间密集型密钥派生功能(KDF),最常见的是PBKDF2。这会将其他“盐”数据混合到密码中,并以特定方式应用哈希函数将人工提供的密码转换为“有效随机”的密码。如何生成盐数据取决于系统。它可以是随机的,也可以基于某些静态但唯一的信息(例如用户的ID)。这里有几种方法可以提供合理的权衡。

然后将得到的扩展值发送到服务器。这样可以确保服务器永远不会看到用户的实际密码。

一旦服务器具有此值,它便应对该值应用一些快速加密哈希函数(最常见的SHA-2),并使用该哈希值与数据库值进行比较。这样可以确保即使攻击者可以访问数据库,他们也不能使用该数据库直接登录。


根据您的编辑,我怀疑他们实际发送的是加密密码或加密哈希。他们可能在加密中编码了类似时间戳的内容。是否以安全的方式执行此操作在很大程度上取决于细节,但是此方法没有内在的不安全感。 (旧的哈希值是可重用的事实并不理想,但是是否是一个重大问题取决于系统的其余部分。)

作为第一个猜测,我认为它是不安全且设计不当的,但这仅是因为[[总是在评估安全系统时一直可行的假设,除非另行证明。如果不探索细节,就无法评估该系统,但是您所描述的一切都与良好的系统不兼容。


1
投票
我不能只是去site.com/login?hash=stolenHash并登录吗?

实际上就是Microsoft的SMB实施worked (and was vulnerable) for a very long time

我完全错了,还是我应该报告这个问题?

都不是。您已经假定密码在客户端上是静态哈希,但是您尚未进行任何分析来支持您的假设。听起来好像确实存在身份验证系统中的漏洞(如果密码用随机的盐散列,这意味着它以明文形式保存在服务器上),但是目前您还不知道到底是什么。发生。所有转换密码的代码都在登录页面中发送-您具有对它进行反向工程的工具。


0
投票
请立即报告那些信誉良好的网站所有者,以尽快保护它,因为可能存在MITM(中间人攻击)。任何攻击者都可以嗅探URL并将其重新用于登录到您的帐户,并且在设备上哈希密码也不是一个好主意,应该在服务器上哈希该哈希值,然后与现有的数据库密码匹配。

注意:请找出这是什么加密并尝试解码,可能是它的base64,并且您的密码很容易解码。

谢谢,Jaikey

© www.soinside.com 2019 - 2024. All rights reserved.