- 前提
- ユーザーをauthenticationにログインさせるために、authenticationへのパスワードYが必要
- でもYは直接、僕らの手に保存したくない!
- ユーザーが入力したパスワードにある暗号化アルゴリズムfとsoltをかけて、パスワードXを作る
- firestoreにXを保存する
- XにfをM回かけて、パスワードYを作る
- Xは僕らが管理するので、人間的ミスなどで漏れる可能性がある
- authenticationにYを登録する
- YはGoogleが管理してくれるので、漏れない(漏れたらGoogleのせい)
- ! firestoreのデータが流出する = Xが流出する
- 攻撃者はXを使って、不正ログインしようとする
- 「Y ≠ X」なので通らない
- M = 1だと、「Y = f(X)」なので「とりあえずfして、試してみるか」ってやられたときに、通ってしまう
- => Xがバレても怖くない!
- =>
X & f & M
がバレると終わるけど、バレないやろ……。
👍