2011-07-25 17 views
7

我在考慮設計一個p2p網絡,它需要一定級別的工作證明來審查用戶(類似於比特幣)和垃圾郵件/ ddos​​的規定。由於p2p的性質,我所看到的唯一可行的POW架構是解決方案驗證模型。其他模型(挑戰 - 反應)似乎很容易受到Sybil攻擊,所以我沒有考慮它們。GPU-「證明」散列函數(s)?

散列的逆轉似乎是去一個很好的方式,但GPU散列的問題由幾個數量級廢墟協議的公平性。正因爲如此,我試圖找出使用GPU加速超越現代多核CPU能力的難以/不可行的散列算法。

想法?

回答

5

我的杜鵑循環工作證明方案似乎符合法案,因爲它是5%的計算和95%的隨機訪問全球共享內存,導致長時間的延遲 。 GPU內存是有限的,並且延遲更差,並且沒有足夠的計算來保持超過幾十個gpu核心的繁忙。

其他功能:它可以要求任何需要的RAM數量,並且可即時驗證。

https://github.com/tromp/cuckoo的白皮書和實施。

+0

出色的工作! –

+0

有趣,但最大的問題是,它是否將其作爲密碼哈希算法削減,還是有任何缺點? –

+0

這不是一個哈希算法。也許http://cryptorials.io/beyond-hashcash-proof-work-theres-mining-hashing(挖掘比哈希多)解釋你的困惑...... –

2

它的所有軍備競賽 - 儘管當前部署的散列函數很容易GPU加速,而且隨着技術在更新,更好的硬件上的推廣,更新/更大/更長的散列函數不會(由於當前的硬件限制) 。

我的第一個建議是讓應用程序提供「哈希套房」,通過一個正整數標識。隨着時間的推移,您可以切換到更新更昂貴的操作,並讓新軟件停止接受來自較低編號散列套件的證明。

此外,是非傳統的。也許使用所有新的SHA-3候選組合(所有這些組合,在一些級聯繫列中)。使用塊密碼哈希算法(AES可以變成即興哈希函數)。做大量的回合。也許需要通過非常大的RSA密鑰(4096位及更高版本,需要唯一的「丟棄」密鑰)進行簽名。

你買的時候,所以棄用機制實質上比實際算法的選擇更重要。

+0

我已經找到了什麼似乎是一個不錯的人選至今... http://www.usenix.org/event/usenix99/provos/provos_html/node4.html 關鍵的時間表是可變的難度隨着時間的增加,每次執行都需要S盒的4KB內存,所以GPU應該很難並行處理這個問題。 –

0

我會推薦像BCrypt這樣的哈希函數具有可變數量的回合,通常以數千計。只要算法核心的散列函數保持安全,通過簡單地增加回合數,隨着時間的推移,它可以更強大地抵抗暴力。