■
強み
古典的な暗号化とネイティブの暗号化ハッシュを計算する
高い柔軟性と防衛が特徴。
多くの種類の攻撃を扱う可能性のある多くのユースケースに対して1つのパスワードハッシュスキーム
キロバイト(RAM)からテラバイト(RAM + ROM)まで拡張可能
任意のSIMDベクトル幅と命令レベルの並列性にスケーラブル
オプションのTMTO抵抗を
有効にすると、さらに攻撃のエリアタイムが数倍になります
オプションのbcryptのようなGPUの非友好性(メモリ使用量の低い設定で特に重要)
なのでCPUマイニングは有用とされる。メモリ使用量の高いGPUは有効か。
オプションの乗算待ち時間の強化(少なくとも一般的なx86およびARM CPUで効率的)
メモリー使用量と並列性とは別に最適な調整可能な実行時間
SCRAM(RFC 5802)の簡単な拡張を可能にする方法で、
パスワードを知らなくても高いコスト設定にアップグレード可能
暗号のセキュリティは、SHA-256、HMAC、およびPBKDF2のものに基づいています
残りの処理は、非暗号化
ただ一つの大きな欠点:複雑さ
scryptはすでにかなり複雑で、yescryptはもっと複雑
ただしこの複雑さは、攻撃に対する防御策としては有効。
下記のようにSCRYPT同様にSHA-256のCODEが使用されている。(一部)
password hashing competiton 参考
# Builtin SCRAM (RFC 5802) support clen = min(outlen, 32) dk = PBKDF2(HMAC-SHA-256, password, B, 1, 32) dk = SHA-256(HMAC(SHA-256, dk, "Client Key")) out = substr(dk, 0, clen) || substr(out, clen, outlen - clen)