パスワードの管理に、1PasswordやLastPassといったパスワードマネージャを使うのは一般的になってきています。
そのようなパスワードマネージャはランダムなパスワードを生成しますが、Webサービスによって使える文字の種類や、長さというのはマチマチです。
そこで、Webサービス側からパスワードの要件について記述できるようにする仕様がIETFに提出されています。
どこのWGで議論するのか、標準化が進むのかよくわからないが、とりあえず読んでおく。
Open Password Automation Recipe Protocol
パスワード自動生成出来るように提案されている仕様は「Open Password Automation Recipe (OPAR) Protocol」というタイトルです。
Webサービスはページ内に下記のようなJSONをOPAR_Policyという変数で埋め込むことで、自サービスのパスワード要件を宣言できます。
例えば以下のとおりである
{
"version":1,
"min_length":8,
"max_length":20,
"numbers":{
"allowed": true,
"minimum": 2
},
"lowercase":{
"allowed": true,
"minimum": 2
},
"uppercase":{
"allowed": true,
"minimum": 2
},
"special_characters":{
"allowed": true,
"valid_characters": "+-_()*&^%$#@!?",
"minimum": 2
},
"wide_characters":{
"allowed": false,
"minimum": 0
},
"include_extended_ascii": true
}
各パラメータは以下のとおりです
- version: 現状、バージョンは1
- min_length: パスワードの最小長
- max_length: パスワードの最大長
- numbers: 数字を許可するか、および最低文字数を指定
- lowercase: 小文字を許可するか、および最低文字数を指定
- uppercase: 大文字を許可するか、および最低文字数を指定
- special_characters: 記号類を許可するか、許可される記号のリスト、および最低文字数を指定
- wide_characters: マルチバイト文字を許可するか、および最低文字数を指定
- include_extended_ascii: キリル文字、アクセント記号付き西洋文字、ギリシャ文字など、拡張ASCII文字セットの文字を許可するか
XSSでこのオブジェクトを上書きされると、本来のポリシーに見合うものの弱いパスワードを発行させられたりするのかな?
と、思ったけどXSSあったらパスワード取られるから自動生成しててもリスクと脅威は変わらないか