はじめに ユーザーパスワードの管理は、システム開発において最も重要なセキュリティ課題の一つです。 OAuthやAWS Cognitoなどの認証サービスを利用することで、パスワードの管理を外部に任せることもできますが、 プロジェクトによっては自前でパスワードを管理する場合もあります。 では自分たちでパスワードを管理する際に、どのように暗号化すればいいのでしょうか? 万が一パスワードが漏洩した場合ちゃんと対応できるのでしょうか? 本記事では、ユーザパスワードいくつの暗号化手法及びそのリスクについて解説したいと思います。 前提知識 まず暗号化の三兄弟 - Encode, Hash, Encrypt の違いを理解しておきましょう。 Encode 単に文字列を別の形式に変換するだけ キーがなくても元に戻せる 例:Base64エンコード、URLエンコード Hash 一方向の変換 キーがないため元に戻せ