Slide 1

Slide 1 text

パスワードよもやま話 PHP Conference Fukuoka 2024 #phpconfuk Jun. 22 2024 Shogo Kawase / @shogogg

Slide 2

Slide 2 text

パスワード、正しく扱えていますか?

Slide 3

Slide 3 text

河瀨 翔吾 / shogogg ユースタイルラボラトリー(株)ソフトウェア開発部テックリード シンアジャイルコミュニティ運営 好きな⾔葉 型安全 / アジャイル 好きなアイドル ももいろクローバーZ shogogg shogogg ⾃⼰紹介

Slide 4

Slide 4 text

パスワードの漏洩は怖い

Slide 5

Slide 5 text

● パスワードなしでの認証を可能にする「パスキー」技 術にはわなが潜んでいる、YubiKeyなどのハードウェ ア認証デバイスを利⽤している場合は注意 - GIGAZINE ● パスワード不要の認証技術「パスキー」はパスワード よりもエクスペリエンスが悪いという批判 - GIGAZINE パスキーには期待しているけど……

Slide 6

Slide 6 text

まだしばらくパスワードは必要

Slide 7

Slide 7 text

● 平⽂保存は当然NG。ハッシュ化して保管しよう。 ● ハッシュ化の際にはソルトやペッパー、ストレッチン グなどを使って解読に掛かるコストを増やそう。 パスワードをDBに保存するときは……

Slide 8

Slide 8 text

● md5, sha1:パスワード向けではない。 ● crypt:古のアルゴリズム。8⽂字制限あり。論外。 ● bcrypt:今となっては古い。採⽤したくない。 ● PBKDF2:⽶国標準に準拠する必要がある場合に。 ● Argon2:⽐較的新しいアルゴリズム。オススメ。 パスワードをハッシュ化するアルゴリズム達

Slide 9

Slide 9 text

● 最低⽂字数はセキュリティの観点から、ユーザーを守 るために重要。 ● 逆に最⼤⽂字数の設定があるサイトを⾒つけたら要注 意。 最低⽂字数と最⼤⽂字数

Slide 10

Slide 10 text

● パスワードを平⽂で保存するため、データベースのカ ラムに収める必要がある場合。 ● パスワードを bcrypt でハッシュ化するため、bcrypt が受け付ける最⼤⽂字数である72⽂字以内にする必要 がある場合。 ● ⾮常に⻑いパスワード⼊⼒による DoS 攻撃を防ぐた め。 最⼤⽂字数が必要な場合とは?

Slide 11

Slide 11 text

● パスワードの定期的な変更をユーザーに強制するのは アンチパターンである、というのがエラい⼈達の最新 の⾒解。 ● ⽶国国⽴標準技術研究所(NIST)が2017年にガイド ラインに「サービスを提供する側がパスワードの定期 的な変更を要求すべきではない」と明記、2018年には ⽇本の総務省もそれに続いている。 定期的な変更は必要?

Slide 12

Slide 12 text

● password_hash 関数を PASSWORD_ARGON2ID アル ゴリズムを指定してハッシュ化しよう。 ● ⼊⼒されたパスワードの検証は password_verify 関 数で。 ● 不安な場合は上記に加えてペッパー対応を。 PHP におけるベストプラクティス

Slide 13

Slide 13 text

ご清聴ありがとうございました