Webセキュリティ入門:HTTP・Cookie・脆弱性
認証(Authentication)とは
この回でやること
認証(Authentication)とは「誰であるか」を確かめる工程です。何をもって本人とみなすのかを整理します。
- 読む 約 5 分
- 最後にクイズ 1 問
このレッスンで学ぶこと
認証は、「あなたは誰か」に答えてもらい、その答えを確かめる工程です。合言葉を入れさせれば済む、と片付けられがちなところを分解します。
読み終えるころには、何をもって本人とみなし、その根拠をどう保存するかを説明できます。
誰であるかを確かめる
認証は「あなたは誰ですか」に答えてもらい、その答えが正しいかを確かめる工程です。
確かめ方は、大きく3種類に分けられます。
| 種類 | 例 |
|---|---|
| 知っているもの | 合言葉、暗証番号 |
| 持っているもの | スマートフォン、物理キー |
| 本人の特徴 | 指紋、顔 |
複数を組み合わせると強くなります。合言葉が漏れても、手元の機械が無ければ入れないためです。
合言葉だけが弱い理由
合言葉は「知っているもの」だけに頼ります。だから次の弱さがあります。
- 他のサービスから漏れたものを使い回している
- 推測できるものを選んでいる
- 本物そっくりの画面に入力してしまう
どれも利用者側の問題に見えて、設計で減らせます。 使い回しは、他所で漏れた合言葉を弾く仕組みで減らせます。推測は、長さの下限で減らせます。
保存の仕方
合言葉をそのまま保存してはいけません。読み出されたら全員分が使われます。
一方向の変換をかけて保存します。このとき、総当たりが遅くなるように設計された方式を使います。速い変換を使うと、機械で片端から試されます。利用者ごとに違う値を混ぜて、同じ合言葉が同じ形にならないようにもします。
復元できないことが要件
「暗号化して保存」では足りません。復号できる形で持つと、鍵と一緒に漏れたら終わりです。元に戻せない形で持ちます。
試行の回数を絞る
正しい合言葉が分からなくても、何度でも試せるなら時間の問題です。回数や間隔に制限をかけます。ただし、特定の利用者を締め出す道具にされないような設計が要ります。