- @ThothChildren
- 2018.8.5
- PV 117
パスワードを安全にサーバに保存したい
ー 概要 ー
パスワードを少しでも安全にサーバに保存する方法についてまとめます.サーバがクラックされてしまい、パスワードが盗まれてしまったとしてもその被害を抑える方法です.パスワードをそのまま保存するのではなく、そのハッシュ値を保存することでパスワードが直接わかることを防ぎます.
この章を学ぶ前に必要な知識
条件
- パスワードまたはそれ自体が変換されても役割をなすデータ
効果
- サーバがクラックされてもパスワードがそのまま漏れることを防ぎます
ポイント
- パスワードをハッシュ関数で変換してサーバに保存します
解 説
パスワードを簡単に安全にサーバに保存する方法についてまとめます.
鉄則としてパスワードはサーバにそのまま平文の状態では保存しません.
その代わりその元のパスワードを連想できないような別の値に変換した値で保存します.
そしてパスワードを照合するときも変換した値同士で比較します.
パスワードを変換したもの比較でもその値が一致すれば本人がパスワードを知っているということになるため、問題ありません. | パスワードを安全にサーバに保存したい |
この元のパスワードを連想できないようにしながら別の値に変換する関数をハッシュ関数と呼びます.そしてパスワードをハッシュ関数に入れて得られた出力値をハッシュ値と言います. | ハッシュ関数とは |
ユーザがパスワードAを送ってきた場合にはまずハッシュ関数によって別の値に変換します.
サーバの中には右側の値のようなハッシュ値が保存されているため、それと先ほど生成したハッシュ値を比較します.
ハッシュ関数は入力が同じなら同じ出力を出すため、出力が同じなら入力が一致しているはずです.
逆にハッシュ値が一致しないということは元のパスワードが異なっているということになります. | |
つまり、
・ハッシュ値が一致→ハッシュ関数の入力も一致→パスワードが一致
・ハッシュ値が一致しない→ハッシュ関数の入力も一致しない→パスワードが一致していない
という形で正しいパスワードを送ってきているかを比較しています.
このようなハッシュ値の変換をしていいのは、パスワードの生データそれ自体に関して興味がなくあくまで一致するデータをユーザが送ってきて本人と認証できるかどうかしか気にしないためです.他のデータの場合はハッシュ値にしてしまうと元のデータを取り出せません. | ハッシュ関数によるパスワード比較 |
この章を学んで新たに学べる
Comments
Reasons
知識: ハッシュ関数とは
ハッシュ関数とは与えられたデータを別の小さな値に変換する関数です.どのような変換を行うかについては自身で関数を選択する必要があります.幾らか求められる特徴があり、元の入力データが異なれば出力も異なることが期待されます.検索の高速化やデータ構造、データの一致、データの改竄検出など幅広く用いられる.