scrypt
scrypt(念作“ess crypt”[1]),是加拿大电脑科学家暨计算机安全研究人员科林·珀西瓦尔(Colin Percival)于2009年所发明的密钥派生函数,当初设计用在他所创立的Tarsnap服务上[2]。设计时考虑到大规模的客制硬件攻击而刻意设计需要大量存储器运算。2016年,scrypt算法发布在RFC 7914。scrypt的简化版被用在数个密码货币的工作量证明(Proof-of-Work)上。
概观
[编辑]scrypt需要使用大量存储器的原因来自于产生大量伪随机性(英语:pseudorandom)资料作为算法计算的基础。一旦这些资料被产生后,算法将会以伪随机性的顺序读取这些资料产生结果。因此最直接的实做方式将会需要大量存储器将这些资料存储在存储器内供算法计算。
另外一方面,由于伪随机性资料是透过算法产生,在实做上也可以在需要访问时再计算以降低存储器使用量。但由于计算成本很高,这个实做方法将大幅降低算法的速度。
这就是scrypt设计时考虑到的时空权衡,攻击者可以使用后者的方法但计算速度很慢,或是用前者的方法但因存储器成本而难以大规模平行化。
RFC 7914 将 N、r 与 p 定义为可调参数,可依可用存储器、计算能力、存储器子系统的延迟—带宽乘积与所需平行程度设定;其中增大 p 可以提高计算成本而不增加存储器用量。[3]
密码货币上的使用
[编辑]scrypt被用在数个密码货币的工作量证明算法上。首先被Tenebrix所使用(2011年九月),而后被莱特币(Litecoin)与多吉币(Dogecoin)所采用。因GPU在计算使用scrypt的密码货币较CPU有效率,这导致了高阶显卡在2013年年底的短缺[4]。
在2014年开始,市场上已经有使用ASIC计算scrypt算法的挖矿机[5]。
相关链接
[编辑]注解
[编辑]- ^ Colin Percival. Colin Percival on Twitter: "For the record, "scrypt" is pronounced "ess crypt". Like bcrypt, except with an S instead of the B. It is NOT pronounced "script".". 2016-05-23 [2017-12-13]. (原始内容存档于2019-02-17).
- ^ Colin Percival. Tarsnap - The scrypt key derivation function and encryption utility. [2017-12-13]. (原始内容存档于2017-12-15).
- ^ RFC 7914: The scrypt Password-Based Key Derivation Function. RFC Editor. 2016-08 [2026-09-29] (英语).
- ^ Joel Hruska. Massive surge in Litecoin mining leads to graphics card shortage. ExtremeTech. 2013-12-10 [2017-12-13]. (原始内容存档于2017-12-12) (英语).
- ^ Caleb Chen. Zeusminer Delivers Lightning, Thunder, and Cyclone Scrypt ASICs For Litecoin And Dogecoin Mining. CryptoCoinsNews. 2014-05-21 [2017-12-13]. (原始内容存档于2017-08-18) (英语).