年始から始まったデジタルのアカウントの処分ですが、日本の金融系(銀行、証券会社、クレジットカードなど)のウェブアプリのパスワードの弱さが気になります。
特に、ニッセイ確定拠出年金などは「半角数字4~7桁」とのこと。ニッセイ確定拠出年金は出来れば付き合いをやめたいです。
「最大長が7文字」などは今の時代にはそぐわないパスワードの制限ですが、一方でSBI証券のように「記号を2種類入れなければならない」などというのも好きになれないものです*1。
パスワード設定時にパスワード強度評価ツールで計算したパスワードの強度を示して、ある一定以上のパスワード強度であればパスワードとして受け入れる、などしてほしいものです。
(あるいは、弱いパスワードを入力したユーザーにリスクがあることを促す、など)
パスワード強度評価ツール zxcvbn
パスワード強度評価ツールはDropboxにより開発されたパスワード強度評価ツールです。
roboformやbitwardenのパスワード強度評価にも利用されているそうです。
C#での実装で遊ぶ
zxcvbnのオリジナルの実装はJS(CoffeeScript )で書かれていますが、ありがたいことにC#での実装があったので、これで遊んでみます。
使い方も非常に簡単です。パスワードの強度に応じて Score
が0~4の5段階で計算されます。
int CalcPasswordZxcvbnScore(string password) => Zxcvbn.Core.EvaluatePassword(password).Score; CalcPasswordZxcvbnScore("password"); //=>0 CalcPasswordZxcvbnScore("password123"); //=>0 CalcPasswordZxcvbnScore("p@ssw0rd123"); //=>1 CalcPasswordZxcvbnScore("9vpwBRVg"); //=>2 CalcPasswordZxcvbnScore("btn!EsT7"); //=>2 CalcPasswordZxcvbnScore("TiEpmAQk3y"); //=>3 CalcPasswordZxcvbnScore("4iHMaCmBp72Q"); //=>4 CalcPasswordZxcvbnScore("B5X2McQGcMj2P$x5$5#y"); //=>4
興味深いことにRoboformでは「良い(上から2番目の評価)」だったパスワードが zxcvbn-cs
では4(最高評価)となることもありました。
この辺りは各社独自の工夫がなされているのでしょうか。それとも実装依存の部分なのでしょうか。
ともあれ、非常に簡単に使えるので、パスワードを設定するUIではこういうものでユーザー側にフィードバックするのはとても良いものだと思います。
*1:そんなルールを強いられたユーザーはどう行動するかというと、紙に書いて保存するでしょう