Scrypt

来自非小号百科
Doge留言 | 贡献2024年12月16日 (一) 05:25的版本 (创建页面,内容为“'''scrypt'''(念作“ess crypt”)<ref>X 上的 Colin Percival [https://x.com/cperciva/status/734613598383841281 For the record, "scrypt" is pronounced "ess crypt". Like bcrypt, except with an S instead of the B. It is NOT pronounced "script".”]</ref>,是加拿大计算机科学家暨计算机安全研究人员科林·珀西瓦尔(Colin Percival)于2009年所发明的密钥派生函数,当初设计用在他所创立的Tarsnap服务上<ref>Tarsnap…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

scrypt(念作“ess crypt”)[1],是加拿大计算机科学家暨计算机安全研究人员科林·珀西瓦尔(Colin Percival)于2009年所发明的密钥派生函数,当初设计用在他所创立的Tarsnap服务上[2]。设计时考虑到大规模的客制硬件攻击而刻意设计需要大量记忆体运算。2016年,scrypt算法发布在RFC 7914。scrypt的简化版被用在数个密码货币的工作量证明(Proof-of-Work)上。

概述

scrypt需要使用大量记忆体的原因来自于产生大量伪随机性(英语:pseudorandom)资料作为算法计算的基础。一旦这些资料被产生后,算法将会以伪随机性的顺序读取这些资料产生结果。因此最直接的实做方式将会需要大量记忆体将这些资料储存在记忆体内供算法计算。

另外一方面,由于伪随机性资料是透过算法产生,在实做上也可以在需要存取时再计算以降低记忆体使用量。但由于计算成本很高,这个实做方法将大幅降低算法的速度。

这就是scrypt设计时考虑到的时空权衡,攻击者可以使用后者的方法但计算速度很慢,或是用前者的方法但因记忆体成本而难以大规模平行化。

密码货币上的使用

Scrypt 被用在数个密码货币的工作量证明算法上。首先被 Tenebrix 所使用(2011年9月),而后被莱特币(Litecoin)狗狗币(Dogecoin)所采用。因GPU在计算使用scrypt的密码货币较CPU有效率,这导致了高阶显卡在2013年年底的短缺[3]

2014年起,市场上已经有使用ASIC计算scrypt算法的挖矿机[4]

参考链接