scrypt

维基百科,自由的百科全书
跳到导航 跳到搜索

密碼學中,scrypt(唸作「ess crypt」[1])是Colin Percival英语Colin Percival於2009年所發明的金鑰推衍函數英语key derivation function,當初設計用在他所創立的Tarsnap英语Tarsnap服務上[2]。設計時考慮到大規模的客製硬體攻擊英语custom hardware attacks而刻意設計需要大量記憶體運算。2016年,scrypt演算法發佈在RFC 7914。scrypt的簡化版被用在數個密碼貨幣工作量證明Proof-of-Work)上。

概觀[编辑]

scrypt需要使用大量記憶體的原因來自於產生大量伪随机性英语:pseudorandom)資料作為演算法計算的基礎。一旦這些資料被產生後,演算法將會以伪随机性的順序讀取這些資料產生結果。因此最直接的實做方式將會需要大量記憶體將這些資料儲存在記憶體內供演算法計算。

另外一方面,由於伪随机性資料是透過演算法產生,在實做上也可以在需要存取時再計算以降低記憶體使用量。但由於計算成本很高,這個實做方法將大幅降低演算法的速度。

這就是scrypt設計時考慮到的Space–time tradeoff英语Space–time tradeoff,攻擊者可以使用後者的方法但計算速度很慢,或是用前者的方法但因記憶體成本而難以大規模平行化。

密碼貨幣上的使用[编辑]

scrypt被用在數個密碼貨幣工作量證明演算法上。首先被Tenebrix英语Tenebrix所使用(2011年九月),而後被莱特币Litecoin)與多吉币Dogecoin)所採用。因GPU在計算使用scrypt的密碼貨幣較CPU有效率,這導致了高階顯示卡在2013年年底的短缺[3]

在2014年開始,市場上已經有使用ASIC計算scrypt演算法的挖礦機[4]

相關連結[编辑]

註解[编辑]

外部連結[编辑]