2016-12-16 61 views
-1

我想從用戶密碼進行256位的消息摘要。使用壓縮算法對GPU攻擊安全嗎?

我知道Argon2被推薦用於安全性,但目前爲止Android設備不支持它。

所以,我想出了另一種方法。

  1. 加密大隨機數據,這是如此之大,GPU不能保留在SRAM中的數據,其中一些算法(例如AES)由用戶密碼。

  2. 使用Zip算法對加密數據進行編碼。拉鍊數據

  3. Get消息摘要與SHA256

我覺得郵編編碼是GPU最壞的算法之一,因爲 它處理的每個只有1位,並有許多分支如。 不可並行化。

Zip是無損壓縮,所以步驟2中生成的數據是用用戶密碼唯一的。

考慮GPU架構,執行時需要很多時鐘週期如果分支, 我認爲用GPU編碼Zip比用CPU慢。

這個怎麼樣? 安全嗎?

我只是一個安全初學者。

請問任何人請評估這種方法?

+1

也許應該在crypto.stackexchange.com上提出這個問題,而不是... – Narf

+0

'libsodium'有Argon2,[有三個引用Android的libsodium實現](https://download.libsodium.org/doc/ bindings_for_other_languages /)。 – CommonsWare

+1

請勿創建您自己的加密方法。 [「Schneier法則」](https://www.schneier.com/blog/archives/2011/04/schneiers_law.html):從最無知的業餘愛好者到最好的密碼學家,任何人都可以創建一種算法,他自己可以不會中斷。 – zaph

回答

1

只使用哈希函數是不夠的,只是添加一點鹽對提高安全性沒有多大作用。取而代之的是用隨機鹽對HMAC進行大約100毫秒的持續時間並用散列表保存鹽。使用功能如PBKDF2(又名Rfc2898DeriveBytes),password_hash/password_verify,Bcrypt和類似功能。關鍵是要讓攻擊者花費大量時間通過強力查找密碼。保護您的用戶非常重要,請使用安全的密碼方法。

+0

現在GPGPU已經非常發達,PBKDF2太弱了。 Bcrypt比PBKDF2更安全,但我只需要256位散列。 –

+0

其實目前[DRAFT NIST特殊出版物800-63B數字認證指南](https://pages.nist.gov/800-63-3/sp800-63b.html)建議使用PBKDF2。 *「驗證者應該以防止脫機攻擊的形式存儲記憶的祕密。祕密應該使用批准的散列函數(如PBKDF2)進行哈希值散列,如[SP800-132]」* – zaph