Mic*_*ler 65 java cryptography scrypt
我正在使用Java scrypt库进行密码存储.当我加密东西时N,它需要一个r和p值,其文档称为"CPU成本","内存成本"和"并行化成本"参数.唯一的问题是,我实际上并不知道它们的具体含义,或者对它们有什么好的价值; 也许他们以某种方式对应于Colin Percival原创应用中的-t,-m和-M开关?
有人对此有任何建议吗?图书馆本身列出N = 16384,r = 8和p = 1,但我不知道这是强还是弱或是什么.
gim*_*mpf 65
作为开始:
cpercival提到在他的幻灯片,从2009年的东西约
即使在今天(2012-09),这些值恰好足以用于一般用途(某些WebApp的密码-db).当然,细节取决于应用程序.
此外,这些值(大多数)意味着:
N:一般工作因素,迭代计数.r:blocksize用于底层哈希; 微调相对内存成本.p:并行化因子; 微调相对cpu-cost.r并且p旨在适应CPU速度和内存大小和带宽不会如预期那样增加的潜在问题.如果CPU性能增加得更快,你p应该增加,而应该是内存技术的突破提供一个数量级的改进,你增加r.而且N是有跟上的每场演出一般加倍一些时间跨度.
重要提示:所有值都会更改结果.(更新:)这就是为什么所有scrypt参数都存储在结果字符串中的原因.
Ian*_*oyd 54
scrypt操作所需的内存计算如下:
128字节
N_cost××r_blockSizeFactor
对于参数你引用(N=16384,r=8,p=1)
128×16384×8 = 16,777,216字节= 16 MB
选择参数时必须考虑到这一点.
Bcrypt 比Scrypt "弱"(尽管仍然比PBKDF2强三个数量级),因为它只需要4 KB的内存.您希望难以并行化硬件中的破解.例如,如果视频卡具有1.5 GB的板载内存,并且您调整了scrypt以消耗1 GB的内存:
128×16384×512 = 1,073,741,824字节= 1 GB
然后攻击者无法将其并行化到他们的视频卡上.但是,每当他们计算密码时,您的应用程序/电话/服务器就需要使用1 GB的RAM.
它有助于我将scrypt参数视为矩形.哪里:

cost(Ñ)同时增加内存使用和迭代. blockSizeFactor([R )增加的内存使用情况. 剩下的参数parallelization(p)意味着你必须完成2,3或更多次的整个事情:

如果你有比CPU更多的内存,你可以并行计算三个独立的路径 - 需要三倍的内存:

但在所有实际实现中,它是按顺序计算的,所需的计算增加了三倍:

实际上,没有人选择过p其他因素p=1.
什么是理想因素?
以上图形版本:
笔记:
r=8曲线中突出显示并将以上版本放大到合理区域:
Nic*_*uer 11
我不想踩到上面提供的优秀答案,但没有人真正谈论为什么"r"具有它的价值.Colin Percival的Scrypt论文提供的低级答案是它与"内存延迟 - 带宽产品"有关.但这究竟意味着什么呢?
如果你正在做正确的Scry,你应该有一个大的内存块,它主要位于主内存中.主存储器需要时间来拉动.当块跳转循环的迭代首先从大块中选择一个元素以混合到工作缓冲区时,它必须等待100ns的量级才能到达第一块数据.然后它必须请求另一个,并等待它到达.
对于r = 1,你将从主内存进行4nr Salsa20/8次迭代和 2n次延迟读取.
这并不好,因为这意味着攻击者可以通过构建一个减少主内存延迟的系统来获得优势.
但是,如果增加r并按比例减少N,则可以实现相同的内存要求并执行与以前相同的计算次数 - 除了您已经交换了一些随机访问以进行顺序访问.扩展顺序访问允许CPU或库有效地预取下一个所需的数据块.虽然初始延迟仍然存在,但后续块的延迟减少或消除将初始延迟平均到最小水平.因此,攻击者从改进他们的内存技术中获得的收益很少.
然而,随着r的增加,存在收益递减点,这与之前提到的"存储器延迟 - 带宽积"有关.该产品表示在任何给定时间可以从主存储器传输到处理器的数据字节数.它与高速公路的想法相同 - 如果从A点到B点(延迟)需要10分钟,并且道路从A点(带宽)到A点之间的道路提供10辆车/分钟,A点和A点之间的道路B包含100辆汽车.因此,最优r与您可以一次请求多少64字节数据块有关,以便掩盖初始请求的延迟.
这提高了算法的速度,允许您根据需要增加N以获得更多内存和计算,或增加p以进行更多计算.
还有一些其他问题,增加"r"太多,我没有看到太多讨论:
总结所有建议:
我在Surface Pro 3上使用i5-4300(2核,4个线程)实现Scrypt的基准测试,使用常数128Nr = 16 MB和p = 230; 左轴为秒,底轴为r值,误差棒为+/- 1标准偏差:
| 归档时间: |
|
| 查看次数: |
12703 次 |
| 最近记录: |