Scrypt

出自非小号百科
於 2024年12月16日 (一) 05:25 由 Doge對話 | 貢獻 所做的修訂 (创建页面,内容为“'''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]

參考連結