世界杯预选赛中国队赛程_世界杯多少年一次 - fybstd.com


密码强度

2025-06-30 05:24:23 - 中国世界杯夺冠

使用密码进行身份验证的系统必须具备某种方式来检查为获取访问权限而输入的任何密码。如果有效密码只是简单地存储在系统文件或数据库中,那么获得系统足够访问权限的攻击者将获取所有用户密码,这会让攻击者得以访问被攻击系统上的所有账户,而且用户若在其他系统使用了相同或相似的密码,这些系统也可能面临风险。降低这种风险的一种方法是,不存储密码本身,而是仅存储每个密码的加密哈希值。像安全哈希算法(SHA)系列这样的标准加密哈希算法极难逆向破解,所以获取到哈希值的攻击者无法直接还原出密码。然而,攻击者一旦掌握了哈希值,就能在离线状态下快速测试其猜测的密码。市面上有很多密码破解程序,这些程序可以针对窃取到的加密哈希值测试大量的尝试密码。

计算技术的进步不断提升密码猜测测试速度。例如,2010 年佐治亚理工学院研发出利用通用图形处理器(GPGPU)大幅加速密码破解的方法。Elcomsoft 公司于 2007 年 8 月发明了使用普通显卡实现更快密码恢复的技术,并迅速在美国申请了相关专利[5]。截至 2011 年,市售产品宣称使用当时的高端图形处理器,可在标准台式机上实现每秒测试 11.2 万个密码的速度[6]。此类设备能在一天内破解六位单字母密码。通过将计算任务分配至多台配备类似 GPU 的计算机,破解速度可按设备数量同比提升。目前存在需要较长计算时间的特殊密钥拉伸哈希算法,可降低密码猜测速率。尽管使用密钥拉伸被视为最佳实践,但许多通用系统仍未采用这一技术。

另一种可能进行快速猜测的情况是当密码被用来生成加密密钥时。在此类场景下,攻击者可快速验证猜测的密码是否能成功解密加密数据。例如,某商业产品宣称每秒可测试 10.3 万个 WPA 预共享密钥(PSK)密码[7]。

如果密码系统仅存储密码的哈希值,攻击者可以预计算常见密码变体及所有短于特定长度的密码的哈希值,从而在获取哈希值后实现密码的快速恢复。利用彩虹表技术可以高效存储大量预计算的密码哈希值。若要挫败此类攻击,可在存储哈希值的同时附加一个称为 "加密盐值" 的随机数。盐值会在计算哈希时与密码混合,这意味着攻击者在预计算彩虹表时必须为每个密码存储所有可能盐值对应的哈希结果。如果盐值的取值范围足够大(例如 32 位数字),这种攻击方式将变得不可行。然而许多常用认证系统并未采用盐值机制,互联网上甚至存在针对此类系统的彩虹表库。

熵作为衡量密码强度的指标

编辑

密码强度由信息熵(单位为香农,Sh)决定,这一概念源自信息论。它可被视为存储特定类型密码所需的最小信息量。相关指标是确定猜出密码所需猜测次数的以 2 为底的对数值,通常称为 "熵值位数"[8]。例如,一个具有 42 位熵值的密码,其强度等同于通过公平抛硬币随机生成的 42 位字符串。换句话说,破解 42 位熵值的密码需要进行 2⁴² 次(4,398,046,511,104 次)尝试才能穷尽所有可能。因此,密码的熵值每增加 1 位,所需猜测次数就翻倍,使攻击者的破解难度提升一倍。平均而言,攻击者需要尝试半数可能的密码组合才能找到正确答案[4]。

随机密码

编辑

随机密码是由指定长度的符号串构成,这些符号通过随机选取过程从某个符号集中产生,且每个符号被选中的概率均等。符号可以是字符集(如 ASCII 字符集)中的单个字符、设计成可发音的音节,甚至是单词列表中的单词(从而形成密码短语)。

随机密码的强度取决于底层数字生成器的实际熵值;然而这些生成器往往并非真正随机,而是伪随机的。许多公开可用的密码生成程序采用编程库中的随机数生成器,这类生成器仅提供有限的熵值。但大多数现代操作系统都配备了适用于密码生成的加密安全随机数生成器。此外,还可使用普通骰子生成随机密码(详见随机密码生成器 § 增强方法)。随机密码程序通常能够确保生成的密码符合本地密码策略,例如通过始终混合生成字母、数字和特殊字符。

对于通过随机选择过程生成的密码(从包含 N 个可能符号的集合中选取长度为 L 的符号串),其可能的密码数量等于字符集大小的 L 次方(即NL)。增加密码长度 L 或字符集大小 N 均可增强生成密码的强度。在假设密码中每个符号独立生成的前提下,通过信息熵衡量的随机密码强度,等于可能密码数量的以 2 为底的对数(即 log₂(NL))。因此,随机密码的信息熵 H 可由以下公式表示:

H

=

log

2

N

L

=

L

log

2

N

=

L

log

N

log

2

{\displaystyle H=\log _{2}N^{L}=L\log _{2}N=L{\log N \over \log 2}}

其中,N 为可能的符号数量,L 为密码中的符号位数。H 的单位为比特[4][9]。在最后一个表达式中,对数的底数可以是任意值,但需保持底数一致。

不同符号集的符号熵

符号集

符号数量

N

每个符号的熵值

H

阿拉伯数字(0–9)(例如 PIN 码)

10

3.322 bits

十六进制数字(0–9,A–F)(例如 WEP 密钥)

16

4.000 bits

不区分大小写的拉丁字母(a–z 或者 A–Z)

26

4.700 bits

不区分大小写的字母数字组合(a–z 或者 A–Z,0–9)

36

5.170 bits

区分大小写的拉丁字母(a–z,A–Z)

52

5.700 bits

区分大小写的字母数字组合(a–z,A–Z,0–9)

62

5.954 bits

除空格外的所有 ASCII 可打印字符

94

6.555 bits

所有拉丁字母补充-1字符

94

6.555 bits

所有 ASCII 可打印字符

95

6.570 bits

所有扩展 ASCII 可打印字符

218

7.768 bits

二进制(0–255 或 8 位 或 1 字节)

256

8.000 bits

Diceware 单词列表

7776

每个单词 12.925 bits