パスワード
認証方式のひとつ
よく漏れる
サーバサイドでは復元できないように保存する
ユーザアカウントの保護の他、秘密鍵の保護などでも使われるのでそれぞれ標準的なものがある
8文字までをパスワード、それ以上をパスフェーズという分け方も過去にあったかもしれない
/etc/shadow で使われていた Modular Crypt Format が(ユーザ用)保存形式としては主流
https://qiita.com/ockeghem/items/d7324d383fb7c104af58
秘密鍵などのパスワード保護はPKCS #8 やPKCS #12 に PKCS #5 のPBES2などをかけ?
ダイジェスト(ハッシュ)を利用するが、MD5, SHA-1などは廃止されているのでパスワード専用のアルゴリズムやSHA-2、SHA-3とかどう?
PRECIS Framework RFC 8265で利用できる文字などの規定あり
他の手法
公開鍵認証 (SSHなど、ブラウザでもPKI認証できるよ)
WebAuthn
Passkey (Webブラウザ)
物理鍵
あまり使われないHTTP認証
RFC 7616 HTTP Digest Access Authentication
RFC 7617 The 'Basic' HTTP Authentication Scheme
RFC 7235 Hypertext Transfer Protocol (HTTP/1.1): Authentication
RFC 8120 Mutual Authentication Protocol for HTTP
照合
TLSなどで経路が暗号化されている前提では上のような方法が取れる
パスワード相当のもの
セッションID、APIのもの、などは制限付きのそんなかんじ
ハッシュ値を攪拌するためのものは鍵やパスワードではなくsalt (塩)という
WebのAPI利用では nonce という使い捨ての乱数コードなどもある
変更
Well-known URIのchange-password で変更できるらしい
https://w3c.github.io/webappsec-change-password-url/#the-change-password-well-known-uri
Xなどが対応?
アカウント用
Modular Crypt Format
MD5
SHA-256
SHA-512
bcrypt(72文字制限あり)
など
SASL
RFC 7677 scram-sha-256 scram-sha-256-plus
RFC 8265 Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords
暗号用
PKCS #5
PBES2 パスワード→ブロック暗号・ストリーム暗号
PBKDF2 パスワード→暗号鍵
PBMAC1 パスワード→MAC