パスワードはどう保存しますか

平文でも暗号化でもなく、パスワード用のゆっくりした一方向のハッシュとソルトで保存する、と答える問い。Argon2id や bcrypt の名前と、ログインのときの照らし方まで話します。

こう聞かれます

  • 「パスワードはデータベースにどう保存しますか」
  • 「パスワードを暗号化して保存するのは正しいですか」(ハッシュとの違いを確かめる形)
  • 「ソルトとは何ですか。なぜ要るのですか」

面接官が見ている点

  • 平文、暗号化、ハッシュの違いを、戻せるかどうかで言えるか
  • 速いハッシュではなく、パスワード用のゆっくりしたハッシュを選ぶ理由を言えるか
  • 自分で仕組みを作らず、決まった道具を使う姿勢があるか

短い答え

  • パスワードは平文でも暗号化でもなく、元に戻せない一方向のハッシュに変えて保存します。
  • ハッシュには、Argon2id や bcrypt のような、わざと計算に時間がかかるパスワード用の方式を使います。
  • 利用者ごとに違うソルトを混ぜるので、同じパスワードでも保存される値が変わります。

少し詳しい答え

平文、暗号化、ハッシュ

  • 平文 データベースが漏れたら、そのまま読まれます
  • 暗号化鍵があれば元に戻せます。鍵も一緒に漏れれば読まれます
  • ハッシュ元に戻せない一方向の変換です。保存するのはこれです

ログインのときは、入力されたパスワードを同じ方式とソルトでハッシュにし、保存してある値と一致するかを照らします。元のパスワードを取り出す必要はありません。

なぜゆっくりしたハッシュか

データが漏れると、攻撃者はよくあるパスワードを次々にハッシュにして、一致する物を探します。SHA-256 のような速いハッシュだと、この試しを大量に回せてしまいます。パスワード用の方式は、1 回の計算にわざと時間やメモリを使わせ、試せる数を減らします。OWASP の Cheat Sheet は Argon2id を第一に勧め、bcrypt は Argon2 や scrypt が使えない古い仕組みに限って使う、としています。

ソルト

ソルトは利用者ごとに作る乱数で、ハッシュの値と一緒に保存します。同じパスワードの人が何人いても保存の値が変わるので、前もって計算した一覧で一度に当てられることを防げます。Argon2id や bcrypt の道具は、ソルトを自動で作って値の中に入れてくれます。

作った物と結ぶなら、たとえば「会員登録の機能で、パスワードを bcrypt の道具でハッシュにして保存し、同じパスワードで 2 人登録しても保存の値が違うことを確かめた」のように話します。

よくある間違い

  • 「暗号化して保存する」と言う暗号化は鍵で戻せます。パスワードは戻せない一方向のハッシュで保存します
  • 「SHA-256 でハッシュにすれば安全」と言う速いハッシュは試しを大量に回されます。パスワード用のゆっくりした方式を使います
  • ハッシュの仕組みを自分で作る細かな誤りが穴になります。決まった方式を、よく使われている道具で使います

深掘りの問い

  • 「bcrypt に入れる長さで気をつけることは」多くの作りで 72 バイトまでしか使われないので、それより長い入力の扱いを決めておく、と答えます
  • 「方式や重さの設定を後から上げるには」利用者が次にログインして正しいパスワードが手に入ったときに、新しい方式で作り直して保存する、と答えます
  • 「パスワードを忘れた人にはどうしますか」元のパスワードは返せないので、期限つきの再設定のリンクを送って新しく決めてもらう、と答えます

確認日 2026年10月23日

技術面接問題の一覧へ戻る