簡體   English   中英

PHP7中的Argon2算法:了解time_cost參數

[英]Argon2 Algorithm in PHP7: understanding the time_cost parameter

我正在嘗試在驗證庫中實現Argon2算法。 我希望能夠為用戶提供一些有用的提示來設置參數。

雖然我理解memory_costthreads參數如何影響算法,但我似乎無法繞過time_cost參數。

PHP文檔說的是什么:

time_cost(整數) - 計算Argon2哈希值所需的最長時間。 默認為PASSWORD_ARGON2_DEFAULT_TIME_COST。

訊問1 -默認值為2.它似乎代表一個時間 ,遺憾的是,單位似乎缺失。 是幾秒鍾? 毫秒?

這個SO答案說默認是2

Argon2的規格說

在第3.1章輸入中 ,這里沒有提到時間,只有大量的迭代。

迭代次數t (用於獨立於存儲器大小調整運行時間)可以是從1到2 ^ 32-1的任何整數;

與時間相關的值在第9章推薦參數中定義,它說:

計算出每個呼叫可以承受的最大時間量x (以秒為單位)

[...]

使用不同的傳遞次數t運行y型,內存mh通道和線程的方案。 計算出最大值t ,使運行時間不超過x 如果即使t = 1也超過x ,則相應地減小m

使用剛確定的值mht來散列所有密碼。

訊問2 -這是否意味着PHP暴露了時間量x並確定了正確的迭代量t

PHP RFC說的是什么:

定義算法執行時間和迭代次數的時間成本

[...]

時間成本表示將運行哈希算法的次數。

訊問3 -他們談論時間和迭代次數。 現在我更加困惑。 是時間還是多次迭代? 如果我使用time_cost = 2運行哈希,這是否意味着需要2秒?


基准

為了幫助我理解一下,我制作了這個小小的基准腳本 我得到以下結果(1個線程):

m_cost (MB) |  1  |  2  |  4  |  8  | 16  | 32  | 64  | 128 | 256
            =====================================================
t_cost=1    |  1  |  2  |  5  | 10  | 24  | 46  | 90  | 188 | 348
t_cost=2    |  2  |  4  |  8  | 18  | 39  | 75  | 145 | 295 | 636
t_cost=3    |  3  |  6  | 12  | 26  | 53  | 102 | 209 | 473 | 926
t_cost=4    |  5  |  9  | 30  | 56  | 78  | 147 | 309 | 567 |1233
t_cost=5    |  4  |  9  | 19  | 40  | 79  | 165 | 359 | 690 |1372
t_cost=6    |  5  | 12  | 23  | 49  | 93  | 198 | 399 | 781 |1777
t_cost=7    |  6  | 14  | 29  | 53  | 118 | 259 | 508 |1036 |2206
t_cost=8    |  8  | 16  | 33  | 82  | 179 | 294 | 528 |1185 |2344

我仍然不知道time_cost是如何在幾秒鍾內完成的。

如果它是一個上限(意味着它可以運行的最大時間),那么它甚至沒有幫助。 例如, t_cost=8m_cost=16MB似乎是合理的,因為它需要大約200ms才能運行。 但這意味着算法有一天可能需要8秒才能運行? 可用性將是災難性的!


我真的很想做我的研究,我不太願意要求你理解這一點。

但這真的令人困惑。 由於它與安全性有關,我真的想深究這一點。

感謝您的見解!

據我所知,它是ARGON2算法中的迭代次數。

如果你通過PHP源追蹤它,你得到

https://github.com/php/php-src/blob/master/ext/standard/password.c#L528

哪個叫

https://github.com/PHC/phc-winner-argon2/blob/master/src/argon2.c#L67

所以在這里,t_cost映射到遍數^

另請注意:

請參閱https://password-hashing.net/submissions/specs/Argon-v3.pdf - 2.1.1 - 輸入:迭代次數t可以是1到232之間的任何整數 - 1 - 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM