アカウント名:
パスワード:
パスワードの管理の歴史が簡単に書かれつつ、以下のような論旨が展開されていた。
「パスワードを平文で保存するのヤバくね?」→「パスワードを一方向ハッシュ関数でハッシュしようぜ!」
「ハッシュ化されたパスワードも最近のPCだと割と簡単にクラックされるようになってきてね?」→「ハッシュ化されたパスワードを格納している場所(ファイル/DB)を暗号化しようぜ!」
「ハッシュ化されたパスワードを格納している場所を暗号化しても秘密鍵が漏れたら意味なくね?」→「秘密鍵を Threshold Cryptography で分散管理しようぜ!」 (ここが PolyPassHash の発想)
色々しっくりこない点もありますが
- パスワードのハッシュと論文で言うところの"Share"と呼ばれる鍵を使って計算した値を各ユーザ毎にDBに保存する - Shareは盗まれないようにどこにも保存しない - DBが盗まれてもShareがわからないのでオフライン攻撃でも果てしない時間がかかる がポイントになのかと思います。
重要なのはShareです。
ShareはPolyPassHashが有効な認証システムの初期化時に生成されて、閾値としてカウントされるアカウントを作成したら捨ててしまう。 閾値分のパスワードが入力されるまで一般ユーザに対しては認証を受け付けない。 閾値分の正しいパスワードを入力することで、Shareを求めることができる。具体的には、シャミアの秘密分散法を使う。得られたShareはメモリ上でしか保存されない。 それ以降の普通のユーザ認証は、入力されたパスワードに対してソルトでハッシュ化して、さらにShareを使って計算した値がデータベースに保存されている値とマッチするかどうかで行う。
使われている手法はどれも昔からあるもので、それらを使って低コスト(ユーザ側変更なし、追加ハードウェア必要なし)でセキュリティの高いパスワード管理ができるようになるというのがウリのようです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
論文PDFの冒頭をざっと読んだ感じでは (スコア:5, 参考になる)
パスワードの管理の歴史が簡単に書かれつつ、以下のような論旨が展開されていた。
「パスワードを平文で保存するのヤバくね?」
→「パスワードを一方向ハッシュ関数でハッシュしようぜ!」
「ハッシュ化されたパスワードも最近のPCだと割と簡単にクラックされるようになってきてね?」
→「ハッシュ化されたパスワードを格納している場所(ファイル/DB)を暗号化しようぜ!」
「ハッシュ化されたパスワードを格納している場所を暗号化しても秘密鍵が漏れたら意味なくね?」
→「秘密鍵を Threshold Cryptography で分散管理しようぜ!」 (ここが PolyPassHash の発想)
Re:論文PDFの冒頭をざっと読んだ感じでは (スコア:1)
色々しっくりこない点もありますが
- パスワードのハッシュと論文で言うところの"Share"と呼ばれる鍵を使って計算した値を各ユーザ毎にDBに保存する
- Shareは盗まれないようにどこにも保存しない
- DBが盗まれてもShareがわからないのでオフライン攻撃でも果てしない時間がかかる
がポイントになのかと思います。
重要なのはShareです。
ShareはPolyPassHashが有効な認証システムの初期化時に生成されて、閾値としてカウントされるアカウントを作成したら捨ててしまう。
閾値分のパスワードが入力されるまで一般ユーザに対しては認証を受け付けない。
閾値分の正しいパスワードを入力することで、Shareを求めることができる。具体的には、シャミアの秘密分散法を使う。得られたShareはメモリ上でしか保存されない。
それ以降の普通のユーザ認証は、入力されたパスワードに対してソルトでハッシュ化して、さらにShareを使って計算した値がデータベースに保存されている値とマッチするかどうかで行う。
使われている手法はどれも昔からあるもので、それらを使って低コスト(ユーザ側変更なし、追加ハードウェア必要なし)でセキュリティの高いパスワード管理ができるようになるというのがウリのようです。