パスワードを設定できるケースにおいて、パスワードに利用できる最長の文字数の制限について、以下の2つのケースがあります。
- 最長の文字数制限が表記されているケース
- 最長の文字数制限が表記されていないケース
今回話題にしたいのは、最長の文字数制限が表記されていないケースです。
パスワードの強度を保つため、長いパスワードを設定したとします。
その後、ログインのために長いパスワードを入力するとなぜかログイン出来ないことがあります。
この時、登録したパスワードをWebサイト側から取り寄せたり(*1)、登録するパスワードの長さを短くして再度ログインすると成功したりします。
つまり、入力フォーム上は長さ制限が無いように見せていても、内部的にはパスワードの長さ制限があるケースです。(*2)
このケースの場合、何がきついかというと、正しいはずのパスワードを入力したにも関わらず、内部的にはパスワードの最後の部分がかけているため、ログインできず、原因究明に時間を取られるということです。
確かに、内部的に保持できる情報量には限界があるので、パスワードの長さに制限があるという仕様は仕方のない話です。
ただし、正しいはずのパスワードを入れたのに、ログインできないという悲しい出来事とそれに付随する時間の消費は押さえたい所です。
この課題を解決するための方法を以下に考えました。
1.入力フォーム上にパスワードの文字数制限を記載しておく。(何文字以上、何文字以下)
入力制限をあらかじめ明記しておくとともに、入力制限を満たさない場合にはユーザに再入力を求める方式です。これならば、今回発生したような悲劇は発生しません。
ただし、入力文字数が明記されていると、不正にログインをしようと考えている攻撃者にヒントを与えてしまいます。
2.入力フォーム上にはパスワードの文字数制限は記載していないが、十分な強度を持つ長さでパスワードをクリッピングする。ログイン時にも、同様にパスワードのクリッピング処理を行い、内部的にパスワードがクリッピングされていることを意識しない作りとする。(絶対にクリッピング処理はユーザに見えるところで行わないこと。)
1.にあったような不正にログインをしようと考えている攻撃者にヒントを与えることをふせぐために、入力されたパスワードを内部的にクリッピングする方法が挙げられます。クリッピングされるような長いパスワードを使用して、ログインできないという悲劇を防ぐために、ログイン時の入力時にもパスワードをクリッピングします。
ただし、不正なログインを行おうとする攻撃者にヒントを与えてしまわないよう、パスワードのクリッピング処理は必ずユーザから見えないサーバ側で処理を行う必要があります。
ただし、昔amazonが行ってしまったように、あまりに短い文字数でパスワードをクリッピングするのは問題です。(*3)
この時は、パスワードを8文字というあまりにも短い文字数でクリッピングしていたため、パスワードの強度が大幅に不足しているものでした。
現在のamazonでは、最長128文字のパスワードを設定できるので、少なくともクリッピングする場合には、そのくらいの長さまでは情報を保持するように検討する必要はありそうです。(*4)
ここまで、2.の方法のメリットを記載してきましたが、デメリットとしてユーザとしては入力したパスワードは全て保存されているものだと思い込んでいるという点が挙げられます。
入力したパスワードが全て保存されているからこそ、安心して情報をそのアカウントに保持しているのに、実はパスワードが全て保存されていなかったという場合に、ユーザの理解が得られるのか?という問題があります。
その点を考慮して、方式を検討する必要があります。
まとめ
- 内部的にはパスワードの長さ制限があるケースでは、正しいはずのパスワードを入力したにも関わらず、内部的にはパスワードの最後の部分がかけているため、ログインできず、原因究明に時間を取られるという悲劇が発生する。
- 解決策として、入力フォーム上にパスワードの文字数制限を記載しておく方式と、入力フォーム上にはパスワードの文字数制限は記載していないが、十分な強度を持つ長さでパスワードをパスワード登録時・ログイン時ともにクリッピングする方式が考えられる。
- それぞれの方式で、メリット・デメリットがあるので、目的に応じて方式を検討する必要がある。
*1
登録したパスワードを平文で取り寄せられるということは、内部的には容易にパスワードにアクセスできる状態になっているということですから、これはどうかと思いますが。
*2
記憶媒体のサイズに限界があることを考えると、すべてのログインパスワードには最長の制限があると言えます。
*3
Amazonのパスワードを長い間変えていない人は、とりあえず今すぐ変えましょう! : ライフハッカー[日本版]
http://www.lifehacker.jp/2011/01/110128amazonpasswordwtf.html
*4
Amazon.co.jp ヘルプ: より安全なパスワードを設定する
http://www.amazon.co.jp/gp/help/customer/display.html/?nodeId=201405620
コメントを投稿
コメント投稿機能について