轻量级嵌入式密码哈希方案

嵌入式系统的轻量级密码哈希方案

摘要

密码构成了计算机系统中身份认证的主要手段。为了在服务提供商端维护与用户相关的信息,通常使用密码哈希方案(PHS)。由于现有解决方案有限且陈旧,国际密码学界因此发起了密码哈希竞赛(PHC)。该竞赛将提出一小批适合广泛使用的方案,直至2015年。嵌入式系统构成了一类特殊的应用领域,其设备具有固有的计算能力限制。轻量级密码学专注于为这类设备设计方案,并以适度的安全性为目标。本文提出了一种适用于轻量级密码学的轻量级多项式密码哈希方案(poly PHS)。首先,我们设计了PHC方案Catena和PolyPassHash的两个轻量级版本;然后将其融合并实现了提出的方案——称为LightPolyPHS。本文还在主流计算机上对类似提案进行了公平比较。

关键词 :密码哈希 · PHC · Catena · PolyPassHash · 轻量级密码学 · LWC · Embedded 系统

1 引言

针对知名组织的攻击暴露了大量用户账户和凭证。攻击者利用薄弱的密码保护措施,从被盗数据中恢复用户密码。这些攻击导致厂商的市场价值出现显著的负面影响。

高级密码哈希方案(PHS)被提出以加强此类信息的安全维护。PBKDF2[1], bcrypt[2]和scrypt[3]是目前最常见的解决方案。然而,不断发展的并行计算和专用硬件设备使得攻击者能够突破PHS的保护。GPU、FPGA和ASIC实现了高效的密码破解工具,可以并行尝试多次猜测,在揭露用户信息方面获得显著加速。PBKDF2和bcrypt对这类攻击较为脆弱。内存密集型PHS可抵御密码暴力破解。并行平台中的内存元件被视为昂贵资源。所有并行组件共享同一内存,且对其访问受到限制。因此,当应用具有高内存需求的PHS时,攻击者的速度会显著减慢。其目标是使在并行核心上进行密码暴力破解的速度不会比单核快太多。scrypt是当前内存密集型PHS的解决方案。不幸的是,它容易受到其他攻击,例如缓存计时[5]和垃圾回收器攻击[6]。有限且过时的解决方案促使国际密码学界于[7]2013年发起密码哈希竞赛(PHC)。该竞赛旨在推动现代且安全的密码哈希设计,共有22个初始候选方案提交。2014年,基于安全性、效率、简洁性及其提供的额外功能,选出了9名决赛选手。本文对22个PHC提交方案以及当前3种密码哈希解决方案进行了全面的调查与基准分析,详见[7]。2015年,将基于进一步的性能与安全分析公布一组精选方案集。获胜方案有望成为事实上的标准,并由NIST等组织进一步审查以实现正式标准化。

PHS系统被应用于多个领域(例如主流计算机上的通用应用、Web应用和嵌入式系统),这些领域具有不同的特征和属性,候选方案必须符合这些要求。通常,密码哈希方案会利用核心密码原语,如分组密码和哈希函数,这些构成了方案的主要计算组件。主流密码学解决方案提供了高水平的安全性,但忽略了资源受限设备的需求。轻量级密码学(LWC)[8,9]的研究重点是为处理能力、电源供应、连通性以及硬件和软件资源受限的设备设计适用的方案。这类方案主要应用于嵌入式系统[10],而这些系统部署于普适计算与泛在计算环境[11–13]中。安全性仅是整体功能的一部分,轻量级设计消耗较少的计算资源和内存。对于资源极度受限的设备(例如传感器),仅有几KB的内存用于实现适度的安全性[14]。在密码方面,嵌入式系统仅维护少量与认证相关的数据。设备间通信和短期通信是最常见的交互形式(例如无线传感器网络),因此从密码派生会话密钥成为增强安全性的理想目标。垃圾回收攻击[6]可通过内置的内存安全技术加以防御[15]。

本文中,我们提出了LightPolyPHS——一种面向嵌入式设备和轻量级密码学(LWC)的轻量级多项式密码哈希方案(poly PHS)。据我们所知,这是首个针对资源受限设备的方案。第2节介绍了关于密码和轻量级密码学的背景理论与相关工作。第3节分析了LightPolyPHS的设计及其子组件。在第4节中,对提出的方案进行了应用与评估。在真实的嵌入式设备上进行。与主流计算机上的类似方案进行了比较分析。最后,第5节给出结论。

2 背景理论与相关工作

2.1 密码哈希

用户密码是人类可记忆的秘密,由8‐12个可打印字符组成,是计算机系统中身份认证的主要手段。服务提供商为每个活跃账户维护一对用户名和与密码相关的信息。为了验证自身身份并登录服务,用户必须首先输入这些信息。密码也可用于生成加密密钥。密钥派生函数(KDF)[16]解析密码并导出一个或多个相关密钥。这些密钥用于诸如会话加密之类的加密操作。普通密码长度为8个字符(8字节)。所导出的密钥可能产生低熵,容易受到相关攻击。在穷举搜索中,攻击者尝试所有可能的字符组合,直到找到正确的密码。随后,他便能够像合法用户一样拥有相应的账户。

抵御这些攻击的典型 PHS 方法是密钥拉伸。哈希函数解析密码并生成固定长度输出,作为新密码。哈希后的密码更长(通常为 32‐64 字节),使得攻击更难实施。哈希函数会多次迭代,以进一步增强哈希结果的安全性。攻击者的计算速度会被减慢 $2^{i+o}$ 倍,其中 $i$ 是迭代次数,$o$ 是输出位数。然而,用户自身的计算速度也会变慢。因此,密钥拉伸参数还受到用户对计算强哈希密码容忍度的限制。在现代服务中,必须同时验证大量用户,服务器负载可能变得无法管理,从而导致拒绝服务。为此建立了服务器减负(SR)协议,以在客户端和服务器之间平衡总体计算负担。客户端可执行部分 PHS 计算,而服务器完成其余步骤及账户验证。服务器可能需要提高安全性(例如增加哈希长度或 PHS 迭代次数)。用户无关的哈希密码升级技术(HUIU)提升了用户的便利性,并支持服务的无缝运行。服务器可在无需知晓原始密码或无需用户参与的情况下,升级存储的哈希密码的安全性。用户在不同服务中使用相同密码,或多个用户使用相同密码的情况十分常见,这会导致生成的哈希密码也相同。一旦某个账户被泄露,其余账户的安全性也将随之失效。为防止这种关联性,引入了一个称为盐值的小型随机字节参数(通常为 8 字节)。盐值还能增强抵御字典攻击(尝试数百种可能情况以确定秘密)[5] 和彩虹表攻击(利用预计算哈希表)[6] 的能力。通常,盐值在用户账户创建时生成,并在哈希过程中与密码拼接。因此,相同的密码会产生不同的哈希密码。在服务器端,

盐值以明文形式与哈希密码一起存储,它们在认证过程中用于验证登录请求的密码。

2.2 多密码哈希

强密码哈希方案能够保护服务端维护的密码数据。然而,一旦存储的数据遭到泄露,攻击者已证明其擅长破解大量密码。为了进一步增强安全性,近期提出了多密码哈希(PPH)方案。这些方案通过将强密码哈希方案与份额相结合,利用密码学哈希和门限密码学来提升安全性。

密码学哈希和PHS系统在上一节中已作描述。一个密码学的$(k, n)$‐阈值方案通过从秘密信息中生成$n$个不同的份额来保护秘密信息。该阈值决定了在总共 $n$个份额中,任意 $k$个份额即可恢复秘密信息。如果已知的份额少于 $k$个,则不会泄露任何秘密信息。肖密尔秘密共享(SSS)[17]是该领域中一种基础的阈值方案。它在一个有限域内为一个 $k − 1$次多项式 $f(x)$计算 $k − 1$个随机系数。该多项式的 $k$th项包含秘密信息(通常为多项式的常数项)。每个份额由一个共享值 $x$标识,其取值范围为1到该域的阶数之间。份额 $x$是多项式在 $f(x)$处的多项式值。通过插值 $k$个份额的值以求得多项式的常数项(即秘密信息),便可重建秘密。插值过程在计算上经过优化,且仅揭示常数项。

在PPH领域,每个账户对应一个份额。该份额与相关的PHS结果进行异或运算,并由服务器维护(而非纯PHS结果)。这些份额从一个主密钥派生而来。该主密钥仅服务提供商知晓,且不会存储在磁盘上,以防止攻击者在窃取密码数据的同时获取密钥。当服务器启动时,$k$客户端必须登录并被正确验证,以重建这些份额。SSS的实现提供了完整性检查机制,用于检测是否解析了错误的份额。在此启动阶段之后,服务器便以常规方式运行。攻击者必须破解阈值数量的密码哈希才能恢复密码。服务器只需付出少量额外开销,安全性便可提升数个数量级。Poly密码哈希可轻松在服务器上实现和部署,无需对客户端进行任何更改,并且可以集成到当前的身份验证形式中(例如双因素认证和硬件令牌)。它在存储、内存和计算开销方面也十分高效。

2.3 密码哈希竞赛

安全的密码学哈希函数或HMAC是PHS系统和密钥派生函数最常见的解决方案。目前,PBKDF2、bcrypt和scrypt是主流应用中广泛使用的PHS系统和密钥派生函数。

基于密码的密钥派生函数2(PBKDF2)[1]是唯一的标准化方案(RSA实验室公钥密码学标准(PKCS)系列(PKCS #5 v2.0)和 RFC 2898)。输入的密码和盐值通过 HMAC 处理。PBKDF2 不是内存密集型算法,可以实现为具有低内存需求的小型电路。这导致其主要缺点是可在 GPU 和专用集成电路(ASIC)上进行低成本的暴力破解攻击。bcrypt[2]基于分组密码 Blowfish [18],是 BSD操作系统 的默认密码哈希方案。它使用 4KB 内存,在抵御并行计算平台和专用硬件设备攻击方面比 PBKDF2 略强。然而,这些内存需求使得在现场可编程门阵列(FPGA)上实施高效攻击成为可能。scrypt[3]于 2012年由互联网工程任务组 作为互联网草案 发布,旨在成为一份信息类 RFC。它结合了 PBKDF2 和流密码 Salsa [19],并使用任意大量内存。scrypt 是目前最抗攻击的广泛使用的方案。硬件暴力破解攻击的成本被认为分别比 bcrypt 和 PBKDF2 高出约 4000 至 20000 倍。然而,巨大的内存需求可能导致服务器在处理大量并发登录请求时遭受拒绝服务(DoS)攻击。此外,scrypt 还容易受到新型攻击,如缓存时序 [5]和垃圾回收器攻击 [6]。

密码哈希竞赛(PHC)[7]推动了我们在设计安全高效的PHS系统和密钥派生函数方面的知识。在第一轮中,有22个新的密码哈希方案从安全性、性能和灵活性方面进行了评估。文献对上述三种广泛使用的密码哈希方案以及22个候选方案进行了调查和基准分析。引入参数 $t_{cost}$和 $m_{cost}$分别用于调整时间和内存需求。防御者通过调整密码哈希方案的迭代次数和内存需求来设计安全的方案。决赛选手Catena是最引人注目的提交方案之一,计划列入优胜者名单。它实现了密码哈希方案、密钥派生函数、种子恢复和哈希用户标识更新的全部功能,文档齐全且经过充分分析,在执行时间和内存使用方面是效率最高的候选方案之一。Catena具有较小的代码大小和较低的内存需求,适用于嵌入式系统。该竞赛还提出了一种PPH方案,称为PolyPassHash。它实际上是一种用于恢复用于加密密码的对称密钥的协议,并不构成纯粹的密码哈希方案。因此,它未被列入决赛选手。然而,PolyPassHash在PPH方面展示了最先进的特性,并在存储、内存和计算需求方面表现出高效率。我们利用PHC候选方案Catena和PolyPassHash来设计我们的轻量级方案。这两种方案将在下一节中进行分析。

2.4 轻量级加密机制

传统密码学(Traditional cryptography)旨在实现高水平的安全性。本文研究的主要原语类型包括分组密码和哈希函数。分组密码AES [20]被认为是该领域的里程碑。用于主流应用的标准化或广泛使用的哈希函数是SHA2[21]和 BLAKE [22]。然而,这些主流密码和函数规模过大,无法适应许多类型的嵌入式系统。

轻量级密码学(LWC) [14]专注于为资源受限设备设计密码原语。软件方面的主要设计目标是降低处理和内存需求。嵌入式软件实现针对吞吐量以及内存和功耗节省进行了优化。轻量级原语提供从80到128比特的中等安全性水平。80比特安全性适用于RFID标签和微控制器等资源受限设备,而128比特则适用于主流应用。近年来,提出了大量轻量级方案 [14]。LWC的标准化原语在国际标准化组织/国际电工委员会(ISO/IEC)标准中被提及 29192[23]。该标准的第2部分包含分组密码,即将发布的第5部分将包含哈希函数。关于嵌入式软件,由SONY设计的CLEFIA[24],是标准化的分组密码,而PHOTON [25]是一种被考虑纳入标准的轻量级哈希函数。所提出的LightPolyPHS方案利用CLEFIA执行密码运算,并使用PHOTON进行哈希处理。

3 轻量级密码哈希方案和PPH

LightPolyPHS 是一种面向嵌入式系统和资源受限设备设计的轻量级密码哈希方案(PHS)与PPH。整个系统遵循轻量级密码学(LWC)的原则。首先,我们替换了密码哈希方案 Catena 和 PPH PolyPassHash 所使用的内部密码原语,并实现了两个相应的轻量级方案。然后,通过将轻量级Catena作为轻量级 PolyPassHash的密码哈希方案进行集成,实现了所提出的LightPolyPHS。

3.1 主流与轻量级Catena密码哈希方案

Catena适用于多种环境,如多核CPU、数据库和低内存设备。它是一种基于密码学哈希函数的组合式密码运算,结构简单且易于分析。该设计采用基于图的结构,称为“位反转图”,并通过密码学哈希函数实例化。可使用任何强哈希函数,参考实现中选用了SHA512和BLAKE2b。SHA512已在多个平台上标准化并广泛实现。BLAKE2b支持单指令多数据(SIMD)方法,能够有效抵御 GPU上的大规模并行攻击。该方案文档完备,并进行了详尽的安全性分析。时间‐内存权衡分析基于弹珠游戏(pebble‐game)方法[6]。Catena提供了对时间‐内存权衡、抗原像攻击安全性、不可区分性以及抵抗侧信道(例如缓存时序攻击[5])等方面的安全下限。对于在GPU、专用集成电路(ASIC)和现场可编程门阵列(FPGA)上的大规模并行破解器,其计算成本较高。

轻量级Catena使用PHOTON‐256作为密码学哈希函数,其输出为256位摘要。与原始方案相比,这导致了更小的数据路径和实现规模,以及更低的计算和内存需求。输出大小符合PolyPassHash中相关原语的要求,并提供了适度的安全级别。该方案的安全级别

Catena 由其底层哈希函数决定。例如,Catena‐sha512、Catena‐blake2b 和 Catena‐photon256 分别提供 $2^{512}, 2^{481}$ 和 $2^{244}$ 比特安全性。

3.2 主流与轻量级PolyPassHash PPH

PolyPassHash 是一种提供高于 PHS 保护能力的 PPH 方案。它由两个构建模块组成:前述的 SSS门限方案 和标准化的 SHA256[21]哈希函数。SSS 的计算复杂度基于有限域上的 $k$次多项式。对于 PolyPassHash,默认 $k$值为 3,并被设定为 $t_{cost}$参数。SHA256 简单解析密码和盐值。这些哈希值还使用 AES 进行加密。在服务器端,PolyPassHash 在系统重启时处理密码文件。然后必须有达到阈值数量的用户登录后,才能进行密码验证。启动后,登录请求的处理所消耗的计算开销与仅使用 PHS 的系统相似。内存开销约为 1KB,与密码数量无关,存储成本为每个用户账户一 byte(共享值)。还支持一种可选的部分验证过程,允许用户在重启后立即登录,而无需验证达到阈值的用户数。此过程无需修改客户端应用程序或登录过程。PolyPassHash 完全基于软件实现,系统管理员可以调整阈值而不影响用户。攻击者必须同时猜中 3 个密码。在 GPU 上,PolyPassHash 所需的攻击努力比仅使用 PHS 的系统高出约 $2^{3}$ 个数量级。在 CPU 上,即使阈值为 2 个密钥也能提供足够的安全性。

轻量级PolyPassHash使用轻量级的PHO‐TON256替代SHA256。AES被具有相同密钥长度的CLEFIA取代。这两种方案具有相同的数据路径大小,资源节约较少。轻量级版本的安全级别与原始版本相似。在两种方案中,磁盘空间每个账户需要额外1个字节来存储共享值,这与仅使用密码哈希方案的解决方案不同。服务器还必须在内存中存储SSS的多项式系数。总大小很小:异或共享值和哈希值(256位长)乘以阈值(通常为2‐5)。在实际系统中,该值将导致几百字节的开销。

3.3 主流和轻量级PolyPHS

在PolyPassHash中,密码通过SHA256进行简单解析。为了进一步提高安全性,我们用Catena PHS替换哈希函数。该密码哈希方案增强了对攻击的抵抗能力,但比SHA256更消耗资源。此外,Catena具有更大的输出大小(512位),且集成实现规模更高。

原始的Catena提供了高安全性,但无法应用于资源受限设备。轻量级 Catena提供中等程度的安全性,适用于目标系统。为了弥补这一差距,采用轻量级PolyPassHash以提高安全性。简单的哈希函数被替换

由该密码哈希方案(PHS)实现。轻量级Catena使用与PolyPassHash的 SHA256相同的数据路径大小,并提供更高的密码保护。当阈值为3个份额时,攻击者必须同时猜测3个轻量级Catena密码才能恢复密码文件。在GPU上的安全性提高了$2^{3}$个数量级,达到 $2^{244} \times 10^{23} \approx 2^{320}$比特安全性。

4 评估

所考察的PHS系统、多密码哈希方案及其核心密码原语在配备2.10GHz处理器和 8GB内存的英特尔酷睿i7平台上进行评估,运行环境为64位操作系统。采用参考的 C语言或C++实现,以确保与PHC未优化版本进行公平比较。所有实现均安装在 Windows 8.1专业版上,并在Cygwin环境中执行。在通用假设条件下对不同的原语进行评估,测量各方案的代码大小、内存消耗、执行时间和吞吐量。

表 1总结了基于各方案报告的默认输出、密码和盐值大小以及指示性 $t_{cost}$ 和 $m_{cost}$参数,对所研究的PHS系统和PPHs进行的软件评估结果。标准化的 PBKDF2不是内存密集型算法,其内存消耗可忽略不计。bcrypt内存需求较低, 性能与scrypt相似。scrypt是首个被广泛使用的内存密集型PHS,表现出较高的内存消耗和较大的实现规模。Catena是一种新型PHS,通过应用内存密集性来增强安全性。评估了三种基于底层哈希函数的不同版本:Catena‐blake2d速度快,内存消耗与Catena‐sha512相近;Catena‐photon256以降低性能为代价,将内存需求减少了约50%。这三个版本产生的代码大小相似。

PolyPassHash是一种利用SHA256哈希函数和AES分组密码的新型PPH,效率较高,且具有低而恒定的内存需求。轻量级PolyPassHash版本则使用 PHOTON哈希函数和CLEFIA分组密码,减小了代码大小,实现了略低的内存消耗,但速度有所下降。

通过将哈希函数替换为PHS,初始方案的安全性得到增强。PHS是资源消耗最大的组件。$t_{cost}$参数决定了SSS组件的 $k$份额,并线性影响执行时间。随着 $t_{cost}$的增加,由PHS执行的密码哈希操作次数也随之增加。PolyPHS使用Catena‐blake2b($t_{cost}= 3$, $m_{cost}= 18$)作为PolyPassHash的PHS。LightPolyPHS使用Catena‐photon256($t_{cost}= 3$, $m_{cost}= 18$)作为轻量级PolyPassHash的PHS。

图1展示了10种密码哈希方案(PHS)和PPH方案的评估结果。对于 $k= 2$, LightPolyPHS的性能略逊于bcrypt和scrypt。通过SSS增强的内存难题 Catena‐photon256组件,在内存消耗降低约39倍、实现规模小2.3倍的情况下,提供了足够的安全性。

示意图0

表1. PHS系统和多密码哈希方案的软件实现

PHS 密码(字节) 盐值(字节) 输出(字节) 时间成本 内存成本 只读存储器(KB) 随机存取存储器(KB) 中央处理器(秒)
PBKDF2 24 8 64 1000 0 30 0 0.002024
PBKDF2 24 8 64 2048 0 30 0 0.004150
bcrypt 12 16 54 12 0 27 492 2.668653
scrypt 8 32 64 5 0 182 450656 2.837654
Catena–blake2b 8 16 64 3 18 25 16384 0.353742
Catena–blake2b 8 16 64 3 20 25 65596 2.619238
Catena–sha512 8 16 64 3 18 25 16496 0.783590
Catena–sha512 8 16 64 3 20 25 65720 5.389355
Catena–PHOTON256 8 16 32 3 18 26 8188 1.749200
Catena–PHOTON256 8 16 32 3 20 26 32760 13.065627
PolyPassHash 16 16 32 2 0 78 3412 0.000055
PolyPassHash 16 16 32 4 0 78 3412 0.000055
Light–PolyPassHash 16 16 32 2 0 66 3410 0.000068
Light–PolyPassHash 16 16 32 4 0 66 3410 0.000080
PolyPHS 16 16 64 2 0 89 19794 0.707538
PolyPHS 16 16 64 4 0 89 19794 1.415020
LightPolyPHS 16 16 32 2 0 77 11579 3.498454
LightPolyPHS 16 16 32 4 0 77 11579 6.996854

5 结论

维护用户密码是服务所提供安全性的一个重要因素。知名应用程序上的安全漏洞暴露了大量用户数据,损害了其服务提供商的可靠性。由于密码哈希技术薄弱以及可用解决方案有限,国际密码学界组织了密码哈希竞赛(PHC)。该竞赛旨在推出一组现代且安全的密码哈希和密钥派生方案。本文提出了 LightPolyPHS——一种面向嵌入式系统和轻量级密码学的轻量级多密码哈希方案。我们在主流计算机上与类似方案进行了对比分析。LightPolyPHS是首个适用于资源受限设备的轻量级密码哈希及多密码哈希方案。与现有解决方案相比,它所需的内存减少约39倍,代码大小缩小2.3倍。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值