跳转到内容

scrypt

本页使用了标题或全文手工转换
维基百科,自由的百科全书

scrypt(唸作「ess crypt」[1]),是加拿大計算機科學家暨計算機安全研究人員科林·珀西瓦爾(英语:Colin Percival)(Colin Percival)於2009年所發明的密钥派生函数,當初設計用在他所創立的Tarsnap(英语:Tarsnap)服務上[2]。設計時考慮到大規模的客製硬體攻擊(英语:custom hardware attack)而刻意設計需要大量記憶體運算。2016年,scrypt演算法發佈在RFC 7914。scrypt的簡化版被用在數個密碼貨幣的工作量證明(Proof-of-Work)上。

概觀

[编辑]

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

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

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

RFC 7914 將 N、r 與 p 定義為可調參數,可依可用記憶體、計算能力、記憶體子系統的延遲—頻寬乘積與所需平行程度設定;其中增大 p 可以提高計算成本而不增加記憶體用量。[3]

密碼貨幣上的使用

[编辑]

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

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

相關連結

[编辑]

註解

[编辑]
  1. ^ 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). 
  2. ^ Colin Percival. Tarsnap - The scrypt key derivation function and encryption utility. [2017-12-13]. (原始内容存档于2017-12-15). 
  3. ^ RFC 7914: The scrypt Password-Based Key Derivation Function. RFC Editor. 2016-08 [2026-09-29] (英语). 
  4. ^ Joel Hruska. Massive surge in Litecoin mining leads to graphics card shortage. ExtremeTech. 2013-12-10 [2017-12-13]. (原始内容存档于2017-12-12) (英语). 
  5. ^ 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) (英语). 

外部連結

[编辑]