こんにちは、CTOの山岡(@hiro_y)です。 (この記事は、来る2022年4月9日から開催されるPHPerKaigi 2022に登壇応募したものの選出されなかった題材をブログに書くことで供養しようという試みです。) Webシステムでパスワードを保存するとき、そのままの値(平文)で保存してはいけません。データベースの中身が何かしらのインシデントで漏洩してしまった場合、パスワードの内容が明らかになってしまうからです(漏洩の時点でもっと酷い事態になっていそうではありますが…)。では、どのような対策を行えばよいのでしょうか。 パスワードはハッシュ化しよう 一つ目の対策は、パスワードを秘密鍵を使って暗号化、保存する方法です。 その場合、それぞれの暗号化に共通の秘密鍵を使わないことが大切です。また、初期化ベクトル(IV)としてそれぞれ異なるものを用意、ブロック暗号化モードを利用して暗号化した結果が