認証



認証


ユーザーID(ID&PW)を確認するプログラム.

ログイン時の検証プロセス

  • ユーザID&PW生成
  • ユーザPWは暗号化後DBに
  • 保存する.
  • ユーザー登録->入力ID&PW
  • 入力PW暗号化後のデータベースに格納されたPWとの比較プロセス
  • .
  • 比較一致、登録成功
  • ログインが成功するとaccess tokenをクライアント
  • に送信する.
  • ユーザーがログインするとaccess tokenが追加され、
  • にログインするたびに要求がサーバに送信されます.

    ユーザPW暗号化


  • ユーザPWがDBにそのまま保存されることは絶対にない.
  • DBハッカーによる攻撃時にPWが露出するリスク
  • サーバ管理者または関係者に暴露するPWリスク

  • PWパスワードは通常、一方向ハッシュ関数を使用します.
  • 一方向ハッシュ関数は、PWの元のメッセージを変換し、暗号化されたメッセージ다이제스트(digest)を生成する.
  • は一方向性があり、暗号化されたPWは再復号できません.
  • でセキュリティが向上したからです.
  • Salting & Key Stretching


    一方向ハシは元の暗号メッセージよりもセキュリティが高いが、同じINPUTでは常に同じOUTPUT暗号化値があるため、Rainbow Tableのハッカーリスクが高い.
    そこで、さらに改善するためにSalting&Key Stretchingが誕生しました.

    Salting


    ハッシュ値を計算する方法は,実際のPWに加えてランダムデータを追加する.

    Key Stretching


    一方向ハッシュ値を計算し、ハッシュ値をハッシュし続けて長さを増やします.

    bcrypt


    Salting&Key Stretchingで実装されたハッシュ関数で最も広く使用されているライブラリ
    bcryptはhash結果値にsalt値とhashed値と繰返し回数を同時に保持する.
    パスワードハッシュを適用する場合は、複雑なデータベース設計は必要ありません.
    bcryptハッシュ結果による構造
    $2b$12$.XIJKgAepSrI5ghrJUaJa.ogLHJHLyY8ikIC.7gDoUMkaMfzNhGo6'
    ---/---/--------------------/-------------------------------/
     1   2           3                         4
    1 - Algorithm
    2 - Algorithm options(eg cost)
    3 - Salt
    4 - Hashed password
    終わりだ!