我的密码可以有多个密码组合吗?

信息安全 密码 密码破解 保护 密码
2021-08-22 04:16:50

我的密码可以有多个密码组合吗?

我阅读了物理密码锁(用数字打开的锁),我了解到密码锁可以有多个可能的组合。

我还有我的第一部手机,一部普通的诺基亚手机(不是智能手机),受密码保护,我能够使用与手机密码不同的密码打开设备。就像,如果密码设置为 4545 并且我输入 1111 手机仍然解锁。或者,如果手机密码设置为 4114,而我输入了 2141,那么手机仍然解锁。

问题是,如果我的笔记本电脑密码是 ,那么!78ghA,NJ58*#3&*下一个组合是否有可能在我背后起作用,或者只有在存在漏洞时才会起作用?

2个回答

在大多数受密码保护的系统中,这通常是可能的,但不太可能。

许多密码验证机制的背后是加盐哈希函数的使用。为了简单起见,让我们暂时忘记盐。

当用户设置其密码时,hash(password)存储在数据库中。当用户登录时password'hash(password')将与 进行比较hash(password)如果匹配,则允许用户登录。

然而,让我们记住,散列函数获取无限长度的数据并将其转换为有限大小的数据,例如。128 位。因此,不难理解,可以有不止一条消息从给定函数产生相同的散列。这就是所谓的碰撞,这是你所关心的。

问题是哈希函数的产生是如此随机,以至于您不应该轻易找到或产生冲突。如果您使用的是良好的现代散列函数,这在理论上是“可能的”,但实际上是“不可能的”。

首先,通过数学理论 - 是的(尽管在实践中,对于现代散列函数和在这个宇宙中可以通过计算实现的数字,您可以完全忽略这一点)。如果系统不以纯文本或可逆加密的形式存储您的密码,而是对其进行哈希处理(作为最佳实践),则有无限的潜在密码将生成与您的哈希匹配的哈希(假设理想的加密哈希功能)。

例如,如果您的密码是password = '!78ghA,NJ58*#3&*'3 字节的盐,并且他们使用了加盐的 sha256 哈希(请注意,这应该通过多轮密钥加强,以使蛮力更难):d7 35 e6那么您的密码哈希将是4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53 (在 python 中,您可以计算这个):

>>> import hashlib
>>> salt = '\xd7\x35\xe6'
>>> password = '!78ghA,NJ58*#3&*'
>>> hashlib.sha256(salt + password).hexdigest()
'4fe5bbb74a21fb6d20785ce7fce1cd51d6fc87c5a55f65d75e8f37096ed54a53'

请注意,此哈希是 256 位。所以只有 2 256 ~ 10 77 个可能的哈希值。如果散列函数运行良好并且为所有可能的输入统一选择散列(即散列函数充当随机预言机),一旦您尝试显着超过 10 77 个散列,一些散列将发生冲突(可通过鸽洞原理证明)。如果您尝试了 10 80 个哈希,您应该期望找到大约 1000 个与任何给定哈希匹配的密码。

然而,10 77是一个非常大的数字。它大致是可观测宇宙中的原子数。或者,如果太阳系中的每个原子(~10 57 )每个原子每纳秒计算一次散列,那么在计算 10 77个散列之前大约需要 3000 年,所以这在实践中不必担心。

(如果您在 100 年内每秒尝试 50 亿次哈希,并且您有一些非常强的密码,那么随机找到与您的 256 位哈希匹配的不同密码的机会是 1 in 7.4 x 10 57;这就像购买的几率连续几周获得 7 张强力球彩票,前 6 次中奖,然后第 7 次投注并匹配 5 个号码(无强力球),仅赢得 100 万美元。)


当然,这并不意味着实际上您的密码是唯一的。我个人在野外遇到了一个部署的 Cisco VPN 系统,该系统将 12 个字符的随机密码截断为 8 个字符,而没有通知用户(我最初发现当我输入得太快并且遗漏了一个字符时它仍然有效;然后做了试验和错误)。因此,只要前 8 个字符是正确的,那么您可以在之后输入任何您想要的内容,它就会起作用。

这也不是孤立的情况。例如,微软过去常常默默地将 Windows Live ID 密码截断为 16 个字符,尽管它现在通知用户它将密码限制为 16 个字符:

Windows Live ID 密码始终限制为 16 个字符——登录过程会忽略任何额外的密码字符。当我们将“Windows Live ID”更改为“Microsoft 帐户”时,我们还更新了登录页面,让您知道密码的前 16 个字符是必需的。”

设计不佳的身份验证系统也可能会从您的密码中间去除特殊字符。我的朋友在 2011 年发现 T-Mobile 这样做了,当时他使用了设计不佳的“忘记密码”功能,该功能以明文形式向他发送密码,在他的情况下,他从密码中删除了特殊字符。