scrypt

原文

摘要
1. 介绍
2. memory-hard算法
7. scrypt

STRONGER KEY DERIVATION VIA SEQUENTIAL MEMORY-HARD FUNCTIONS

Author: Colin Percival

A strong key derivation function is one which can only be computed by using a large circuit for a long time.

摘要

我将介绍memory-hard算法的概念和有序memory-hard函数,并认为密钥派生为了最大程度地抵御自定义硬件攻击,其应该由有序memory-hard函数构造。我们提出在随机预言模型下的一组密钥派生函数哈希函数的集合,证明是连续的难于存储的,并且变异似乎略强,但缺乏可证明的力量。最后,我们提供了一些执行成本估算暴力破解各种密码强度和密钥派生功能。

1. 介绍

基于口令的密钥派生函数有两个主要的用途:

一,哈希口令以防止攻击者获取口令文件之后立刻得到其中的口令

二,生成用于数据加密和认证的加密密钥

虽然这两种用途在密码学上似乎有很大的不同。在第一种在这种情况下,攻击者拥有口令的哈希值并希望获得口令本身;而在第二种情况下,攻击者拥有经过加密或认证的口令哈希值数据,并希望获得所述口令哈希值。它们实际上是等效的:因为所有的现代密钥派生函数由哈希构成,其没有已知的非平凡预映像攻击众,直接攻击密钥派生函数是不可行的;所以,最好的攻击方法都是遍历所有可能的口令并用密钥派生函数验证。

不幸的是,这种穷举攻击很容易成功。用户常选择那些熵远小于密码学密钥典型要求的口令。最近的一项研究发现,即使对于paypal.com之类的网站也只有很小一部分口令的熵超过64比特[15]。由于这类网站的帐户通常与信用卡和银行帐户相关联,因此其希望用户尽量使用强密码,即口令的平均熵大概为42.02比特。为了增加这种暴力攻击的成本,可以使用一种称为“密钥扩展”或“密钥增强”1 的方法:通过使用密钥派生函数,密钥派生函数要求2s次密码学运算,这使得暴力破解熵有t比特的口令的代价从2t次运算提高到2s + t次运算[19]。

这种方法已被广泛应用多年且越来越受重视。最初的UNIX CRYPT函数(此函数可以追溯到1970年代后期)将DES迭代25次以提高攻击成本[22],而Kamp的基于MD5的哈希[18]对MD5分组密码进行了1000次迭代。最近,Provos和Mazieres的bcrypt [24]以及RSA实验室的PBKDF1和PBKDF2 [17]都有明确说明,bcrypt、PBKDF1和PBKDF2 要去执行用户指定的迭代次数2,迭代次数可能与口令盐值一起存储。

假设,随着计算机系统的使用,迭代次数增长的更快,只要攻击者受限于与合法用户相同的软件实现,就会使得合法用户可以在不断增长的计算能力的情况下,在密钥派生花费固定的时间而不降低安全性。但是,正如Bernstein在整数因式分解的背景下指出的那样[10],相比于软件实现,尽管并行化的硬件实现可能不会改变执行的操作数,这并不能阻止它们显著改变渐近成本,因为在许多情况下,包括并行任务暴力搜索口令字段,美元秒(原文为dollar-seconds)是衡量计算成本的最好度量单位3。随着半导体技术的发展,电路不仅单纯的变快,它也越来越小,从而使得在相同代价的情况下可以执行更多的并行任务。因此,使用现有的密钥派生算法,即使增加了迭代次数,验证口令所花的时间也是常量值,以硬件通过暴力破解查找口令的成本也逐年下降。

这篇论文旨在降低攻击者通过定制的并行电路获得的优势。

memory-hard算法

A memory-hard algorithm on a Random Access Machine is an algorithm which uses S(n) space and T(n) operations, where
S ( n ) ∈ Ω ( T ( n ) 1 − ϵ ) S(n) ∈ Ω(T(n)^{1-\epsilon}) S(n)(T(n)1ϵ)

降低攻击者提供的优势的自然方法构建高度并行的电路是为了增加单个密钥派生的大小电路-如果电路的尺寸是电路的两倍,则只能在电路板上放置一半的副本

给定的硅面积-同时仍在软件可用资源内运行实现,包括功能强大的CPU和大量RAM。确实,在第一篇将密钥扩展概念正式化的论文中[19]指出要求“ 32位算术并使用适量的RAM4”会使硬件攻击变得更加昂贵。但是,广泛使用的密钥派生

scrypt

给定连续的memory-hard“混合”函数MF和伪随机函数PRF可以轻松构造强大的密钥派生函数。我们定义函数MFcrypt PRF,MF(P,S,N,p,dkLen) 的计算为如下算法:

参数:

  • PRF      伪随机函数
  • hLEN      PRF 输出的伪随机数长度,单位为字节
  • MF       从 Z 256 M F L e n × N Z_{256}^{MFLen} × N Z256MFLen×N        到  Z 256 M F
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值