AI 日报

什么是密钥扩展?如何确保密码安全?

  • By 51ITO
  • Dec 22, 2023 - 2 min read



译者 | 陈峻

审校 | 重楼

为了访问自己的数字账户,我们通常需要用到密码或口令。不过,正如现实生活中开锁的钥匙可能并不总是牢靠一样,并非所有的密码都是安全的。为了加强在线防御,安全专家开发了一系列技术和方法,来提高密码的安全性。这些方法包括:散列(Hashing)、加盐(Salting)、掺杂(Peppering)和密钥扩展(Key Stretching)等。下面,让我们来探讨一下密钥扩展的重要性,以及它是如何大幅提高在线安全性的。

什么是密钥扩展?

作为一种加密技术,密钥扩展可被用于增强密码和口令的安全性,尤其是在原始密码的随机性或长度不足以抵御各种攻击(如:蛮力攻击或字典攻击)的情况下。总体而言,密钥扩展会通过对密码或密钥进行多次散列处理,来实现更强大的安全性。

密钥扩展也被称为密钥强化,通常是将一个相对较弱、较短的密码或加密密钥,应用某种加密函数或算法,以生成一个更强且更长的密钥。新生成的密钥输出又作为后续的输入,如此反复进行,直到能够输出所需的密钥。从根本上说,此举的目的在于:使得攻击者即使获得了原始密钥的散列或加密版本,也需要耗费大量的计算成本和时间,才可能恢复原始密钥。

目前,密钥扩展在在线账户、金融交易、以及数据保护等具有高安全性要求的应用中,发挥着至关重要的作用。它是确保已存密码和加密密钥安全性的重要组成部分,并最终可以保障用户账号与数据可信。

密钥扩展是如何工作的?

为了理解密钥扩展是如何将弱密码转换成强大安全的密码,让我们来看一个简单的例子:想象一下,您有一个类似"iloveyou"这样再普通不过的密码。那么对于攻击者来说,该密码可能都称不上什么秘密。他们很容易通过暴力破解单词表和字典的方式,打开这扇“大门”。而事实上,攻击者的确只需 30 秒,就能破解并访问该账户。

而密钥扩展会对这个易受攻击的密码进行散列处理,以创建更长、更复杂的密码。例如:"iloveyou"会变成"e4ad93ca07acb8d908a3aa41e920ea4f4ef4f26e7f86cf8291c5db289780a5ae"。不过,整个扩展过程并未就此结束。

接着,这个新密码通过再次散列,就变成了:"bc82943e9f3e2b6a195bebdd7f78e5f3ff9182ca3f35b5d415cf796ab0ce6e56"

而将其继续做一次散列,就会得到:"46e95d6374c00c84e4970cfe1e0a2982b2b11b1de9343a30f42675a2154a28f5"。以此类推,您可以根据需求执行多次此类操作。

那么,我们是否需要自己从头开始写代码,以实现整个过程呢?显然不需要。目前,业界已有一些用于密钥扩展的代码库,可以为您完成此类繁重的工作。其中,较为典型和流行的密钥扩展算法有:PBKDF2scryptArgon2bcrypt。其中当属bcryptPBKDF2最广为人知。

具体而言,bcrypt采用blowfish密码进行多轮散列,使之成为保护密码安全的可靠选择。而PBKDF2(Password-Based Key Derivation Function,基于密码的密钥推导函数2)是另一种增强密钥或密码安全性的可靠选择。这些工具都可以确保即使是最微弱的密码,也能够得到极大限度的屏蔽,以防止未经授权的访问。

密钥扩展与加盐

密钥扩展和加盐都是密码安全领域的重要技术,它们在增强密码强度等方面,各自发挥着独特的作用。

如上所述,密钥扩展主要是对密码进行多轮散列处理,从而有效地将弱密码转化为更安全的版本。因此,执行的次数越多,密码就越安全。而密码加盐则提供了额外的一层防御。它需要在应用散列过程之前,在密码中添加一串不同的字符,即,通过增加复杂性,来提高密码的强度。

在实际中,这两种技术可以被协同使用,以增强密码的整体强度。不过,需要注意的是,加盐并非事后补救之法,而应当从一开始便融入其中,从而在弱密码进行散列处理之前,就对其进行增强。从本质上讲,密钥扩展和加盐就像一个协作团队,共同为您的敏感信息提供额外的保护。

密钥扩展重要

密钥扩展通常被用于基于密码的加密和身份验证系统。它有助于降低弱口令或易猜密码的风险性,使得攻击者即使获得了原始口令的散列或加密版本,也很难恢复其经历了高昂计算代价的原始信息。在诸如:保护已存密码和加密密钥等各种实际应用场景中,我们时常可以用到它。下面,我为您总结了密钥扩展的4项典型安全功能:

  1. 增强安全性:密钥扩展的主要目的就是为了大幅提高密码或加密密钥的安全性。为此,它会将那些脆弱的、易被猜测的密码转化为强大的、复杂的密钥,使其更能够抵御蛮力和字典攻击等攻击。
  2. 抵御彩虹表:彩虹表又被称为预计算表。此类表格是预先生成的散列密码对应表。攻击者可以利用它们来快速地查找相应的密码。而加盐和密钥扩展等方法恰好可以使这种表格丧失功效。
  3. 降低弱密码影响:在实际操作中,用户通常会选用便于记忆、但易受攻击的弱密码。而密钥伸展功能则提供了一个额外的安全层面,在用户和服务之间实施安全保护。
  4. 减缓攻击者的速度:密钥扩展的复杂计算大幅降低了攻击者破解密码的速度。显然,每一次额外的迭代都会使得破解过程更加耗时,进而让攻击者望而却步。

使用密码强化技术确保资产安全

虽然密码是安全的第一道防线,但是如果过于简单,被破解就只是时间问题了。如今,攻击者正变得越来越狡猾,破解水平也在持续增强。因此,若想在这场“猫鼠游戏”中保持领先,密钥的处理机制就需要“多走一步”。例如采取上文提到的密钥扩展、加盐和掺杂等先进技术,就能够很好地协助用户将弱密码转化为可以抵御潜在威胁的坚固之盾。

译者介绍

陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。

原文标题:What Is Key Stretching? Here's How Your Passwords Can Be Kept Secure,作者:CHIOMA IBEAKANMA