(57)【特許請求の範囲】
【請求項１】
ユーザの認証に用いられる認証アイテムの強度を判定する判定装置であって、
前記認証アイテムへの使用が好ましくない文字列、および、前記文字列に対応して、照合容易性に基づく前記文字列を前記認証アイテムに使用することの危険度を記憶する記憶部と、
前記記憶部に記憶されている文字列に基づき、前記認証アイテムの強度を判定する制御部と、を備え、
前記制御部は、前記ユーザの属性および外部状況の少なくとも一方の変化に伴って新たに生じた前記認証アイテムへの使用が好ましくない文字列を前記記憶部に記憶させ、
前記認証アイテムを示す文字列との類似度が第１の閾値以上である文字列が前記記憶部に記憶されており、該文字列の危険度が第２の閾値以上である場合、前記認証アイテムの強度を上げる必要があると判定し、前記認証アイテムの変更を強制することを特徴とする判定装置。
【請求項２】
請求項１に記載の判定装置において、
前記制御部は、前記認証アイテムを示す文字列との類似度が前記第１の閾値以上である文字列が前記記憶部に記憶されており、該文字列の危険度が前記第２の閾値未満である場合、前記認証アイテムの変更を前記ユーザに勧奨することを特徴とする判定装置。
【請求項３】
請求項１または２に記載の判定装置において、
前記認証アイテムは、パスワードおよびパスワードリマインダの少なくとも一方であることを特徴とする判定装置。
【請求項４】
ユーザの認証に用いられる認証アイテムの強度を判定する判定装置における判定方法であって、
記憶部が、前記認証アイテムへの使用が好ましくない文字列、および、前記文字列に対応して、照合容易性に基づく前記文字列を前記認証アイテムに使用することの危険度を記憶するステップと、
制御部が、前記ユーザの属性および外部状況の少なくとも一方の変化に伴って新たに生じた前記認証アイテムへの使用が好ましくない文字列を前記記憶部に記憶させ、前記記憶部に記憶されている文字列に基づき、前記認証アイテムの強度を判定するステップと、
前記制御部が、前記認証アイテムを示す文字列との類似度が第１の閾値以上である文字列が前記記憶部に記憶されており、該文字列の危険度が第２の閾値以上である場合、前記認証アイテムの強度を上げる必要があると判定し、前記認証アイテムの変更を強制するステップと、を含むことを特徴とする判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ認証に用いられる認証アイテムの強度を判定する判定装置および判定方法に関する。
【背景技術】
【０００２】
現在、オンラインサービスでは、ユーザ認証のためにパスワードが用いられることが一般的である。このようなパスワードには、安全性の確保のため、英数文字混在で、所定の文字数以上（例えば、６文字以上）とするように求められることが多い（例えば、非特許文献１参照）。また、ユーザの電話番号、自宅郵便番号といった、ユーザに関連する情報を含むパスワードは、第三者による類推が容易であるため、ユーザに関連する情報をパスワードに含めないように、サービス提供者から強制／勧奨されることが多い。
【０００３】
また、近年では、パスワードの強度をチェックする技術も開発されている（例えば、非特許文献２〜４参照）。
【０００４】
パスワードの安全性の確保のためには、パスワードを長くしたり、頻繁に変更したりすることが望ましい。しかしながら、極端に長いパスワードを設定したり、高頻度にパスワードを変更したりすることはユーザにとって煩雑であり、また、パスワードの失念のリスクがある。そのため、利便性とユーザに関連する情報をパスワードに含めることのリスクとのトレードオフを考慮しつつ、パスワードの一部に自身に関連する文字列（自身に所縁のある文字列）を含め、かつ、そのパスワードを長期間にわたって変更せずに用いているユーザも多いと推測される。
【０００５】
実際、パスワードの構成として最も多いものは、「ランダムな英数字の組み合わせ」であり、次いで、「ユーザ自身あるいは家族の名前にちなむもの」、「ユーザ自身あるいは家族の誕生日にちなむもの」であるという報告もある（非特許文献５参照）。
【０００６】
パスワードの忘却への対応方法の１つとして、パスワードリマインダを用いた方法がある。この方法では、ユーザ本人しか知らない秘密情報をパスワードリマインダとしてユーザに登録させる。そして、ユーザがパスワードを失念した場合には、パスワードリマインダをパスワードの代わりに入力させ、本人であると認証されると、パスワードの表示あるいは別のパスワードの再発行などを行う。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“ログインパスワードの設定（ご利用ガイド）”、[online]、［平成２８年４月４日検索］、インターネット＜ＵＲＬ：http://www.mizuhobank.co.jp/direct/goriyo/loginout/log_pass.html＞
【非特許文献２】“パスワード強度チェッカー（zxcvbn）」”、[online]、［平成２８年４月４日検索］、インターネット＜ＵＲＬ：https://www.agilegroup.co.jp/technote/zxcvbn.html＞
【非特許文献３】“realistic password strength estimation”、[online]、［平成２８年４月４日検索］、インターネット＜ＵＲＬ：https://blogs.dropbox.com/tech/2012/04/zxcvbn-realistic-password-strength-estimation/＞
【非特許文献４】“JavaScript （登録商標）パスワード強度判定ライブラリ「Password Checker」”、［平成２８年４月４日検索］、インターネット＜ＵＲＬ：http://www.websec-room.com/passswordchecker＞
【非特許文献５】独立行政法人  情報処理機構“オンライン本人認証方式の実態調査報告書”、［平成２８年４月４日検索］、インターネット＜ＵＲＬ：http://www.ipa.go.jp/files/000040778.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ユーザの属性の変化により、ユーザに関連する情報は年々増えていく。例えば、ユーザが転職した場合の転職先での社員番号、結婚による新たな姓、転居による新たな自宅郵便番号、携帯電話の契約変更による新たな携帯電話番号、子どもの誕生による、その子どもの誕生日、新規の口座開設による口座番号、クレジットカードの取得によるクレジットカード番号、ユーザが使うＰＣ（パーソナルコンピュータ）のＭＡＣ（Media Access Control）アドレスなど種々のものがある。そのため、ユーザの属性の変化により、パスワードやパスワードリマインダといったユーザ認証に用いられる認証アイテムが事後的に、ユーザに関連する情報を含むものとなり、第三者による類推が容易となることがある。また、ユーザの属性の他に、外部状況の変化によっても、認証アイテムが事後的に、第三者による類推が容易となることがある。
【０００９】
非特許文献２〜４では、パスワードの強度をチェックする技術が開示されているが、これらの技術では、ユーザの属性や外部状況の変化による認証アイテムの事後的な強度の変化については考慮されていない。
【００１０】
上記のような問題点に鑑みてなされた本発明の目的は、ユーザの属性や外部状況の変化があった場合にも、認証アイテムの強度の維持を図ることができる判定装置および判定方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、本発明に係る判定装置は、ユーザの認証に用いられる認証アイテムの強度を判定する判定装置であって、前記認証アイテムへの使用が好ましくない文字列を記憶する記憶部と、前記記憶部に記憶されている文字列に基づき、前記認証アイテムの強度を判定する制御部と、を備え、前記制御部は、前記ユーザの属性および外部状況の少なくとも一方の変化に伴って新たに生じた前記認証アイテムへの使用が好ましくない文字列を前記記憶部に記憶させる。
【００１２】
また、上記課題を解決するため、本発明に係る判定方法は、ユーザの認証に用いられる認証アイテムの強度を判定する判定装置における判定方法であって、記憶部が、前記認証アイテムへの使用が好ましくない文字列を記憶するステップと、制御部が、前記ユーザの属性および外部状況の少なくとも一方の変化に伴って新たに生じた前記認証アイテムへの使用が好ましくない文字列を前記記憶部に記憶させ、前記記憶部に記憶されている文字列に基づき、前記認証アイテムの強度を判定するステップと、を含む。
【発明の効果】
【００１３】
本発明に係る判定装置および判定方法によれば、ユーザの属性や外部状況の変化があった場合にも、認証アイテムの強度の維持を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係る判定装置としてのコンピュータを含むシステムの構成例を示す図である。
【図２】図１に示すＮＧ文字列リストへの文字列の格納について説明するための図である。
【図３Ａ】ＮＧ文字列リストの構成例を示す図である。
【図３Ｂ】ＮＧ文字列リストへの派生文字列の追加の一例を示す図である。
【図４】重み付け係数の算出方法の一例を説明するための図である。
【図５】外部状況の変化に応じたＮＧ文字列リストの更新の一例を示す図である。
【図６】ユーザの属性の変化に応じたＮＧ文字列リストの更新の一例を示す図である。
【図７】図１に示すコンピュータの動作の一例を示すフローチャートである。
【図８Ａ】ＮＧ文字列リストの一例を示す図である。
【図８Ｂ】ＮＧ文字列リストの一例を示す図である。
【図８Ｃ】ＮＧ文字列リストの一例を示す図である。
【図９】図１に示すコンピュータの動作の他の一例を示すフローチャートである。
【図１０】図１に示すＣＰＵによる類似度の算出動作の一例を示すフローチャートである。
【図１１】ＮＧ文字列リストの他の一例を示す図である。
【図１２】図１に示すコンピュータの動作の他の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について、図面を参照しながら説明する。なお、本発明は、以下の実施の形態のみに限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々の変更が可能であることはもちろんである。
【００１６】
図１は、本発明の一実施形態に係る判定装置としてのコンピュータ１０を含むシステムの構成例を示す図である。
【００１７】
図１に示すシステムは、コンピュータ１０と、入力装置２０と、出力装置３０とを備える。コンピュータ１０は、ユーザによる操作入力が行われる入力装置２０およびユーザへの通知などを行うための出力装置３０と接続され、入力装置２０へのユーザによる操作入力に応じて所定の処理を行い、その処理の結果を出力装置３０に出力する。コンピュータ１０は、例えば、ユーザがあるオンラインサービスを利用するために用いられる。また、コンピュータ１０は、パスワードやパスワードリマインダといったユーザの認証に用いられる認証アイテムの強度を判定し、必要に応じて、認証アイテムの変更を勧奨あるいは強制する。入力装置２０の具体例としては、キーボード、マウスなどがある。出力装置３０の具体例としては、表示装置、音声出力装置などがある。
【００１８】
次に、コンピュータ１０の構成について説明する。なお、入力装置２０および出力装置３０の構成は当業者によく知られており、また、本発明と直接関係しないため、説明を省略する。
【００１９】
図１に示すコンピュータ１０は、通信ＩＦ（インタフェース）１１と、不揮発性メモリ１２と、ＣＰＵ（Central Processing Unit）１３とを備える。不揮発性メモリ１２は記憶部の一例であり、ＣＰＵ１３は制御部の一例である。
【００２０】
通信ＩＦ１１は、入力装置２０および出力装置３０と通信を行い、例えば、ユーザによる操作入力に応じて入力装置２０が出力した信号をＣＰＵ１３に出力する。また、通信ＩＦ１１は、ユーザの操作入力に応じたＣＰＵ１３の処理結果を出力装置３０に出力する。
【００２１】
不揮発性メモリ１２は、種々の情報を記憶する記憶装置である。例えば、不揮発性メモリ１２は、後述するＣＰＵ１３を動作させるためのプログラムを記憶する。また、不揮発性メモリ１２は、コンピュータ１０やオンラインサービスの使用におけるユーザ認証に使用されるパスワード、パスワードリマインダといった認証アイテムを記憶する。また、不揮発性メモリ１２は、認証アイテムへの使用が好ましくない文字列が格納されたＮＧ文字列リストを記憶する。また、不揮発性メモリ１２は、電子メールやアドレス帳などの情報を記憶してもよい。
【００２２】
ＣＰＵ１３は、不揮発性メモリ１２に記憶されているプログラムを読み込んで動作し、コンピュータ１０全体の動作を制御する。例えば、ＣＰＵ１３は、ユーザによる入力装置２０への操作入力などに応じて、認証アイテムへの使用が好ましくない文字列と、照合容易性（第三者による類推、照合のされやすさ）に基づく危険度（文字列を認証アイテムに含めることの危険度）とを対応つけて、ＮＧ文字列リストに格納する。また、ＣＰＵ１３は、ＮＧ文字列リストに基づき、不揮発性メモリ１２に記憶されている認証アイテムの強度を判定し、必要に応じて、認証アイテムの変更を勧奨／強制する。
【００２３】
次に、ＣＰＵ１３によるＮＧ文字列リストへの文字列の格納について説明する。
【００２４】
ＣＰＵ１３は、例えば、図２に示すように、ユーザにより入力装置２０に誕生日、電話番号などのユーザに関連する情報が入力されると、入力された誕生日、電話番号などに相当する文字列をＮＧ文字列としてＮＧ文字列リストに格納する。また、ＣＰＵ１３は、不揮発性メモリ１２に電子メールやアドレス帳が記憶されている場合、これらを検索して、メールアドレス、電話番号といった、ユーザに関連する文字列を抽出し、ＮＧ文字列としてＮＧ文字列リストに格納する。また、ＣＰＵ１３は、例えば、コンピュータ１０をネットワークに接続するためのネットワークインターフェースカード（ＮＩＣ）に格納されたコンピュータ１０のＭＡＣアドレスを、ＮＧ文字列としてＮＧ文字列リストに格納する。このように、ＣＰＵ１３は、コンピュータ１０の種々の媒体に格納されているユーザに関連する文字列をＮＧ文字列としてＮＧ文字列リストに格納する。
【００２５】
次に、ＮＧ文字列リストの構成について、図３Ａを参照して説明する。
【００２６】
図３Ａに示すように、ＮＧ文字列リストは、項番、ＮＧ文字列、危険度スコア、重み付け係数、補正後の危険度スコア（危険度）および備考からなる。
【００２７】
項番は、ＮＧ文字列を識別するための番号である。
【００２８】
ＮＧ文字列は、認証アイテムへの使用が好ましくない文字列であり、例えば、ユーザの姓、名、生年月日といったユーザに関連する情報（ユーザに所縁のある情報）に相当する文字列である。
【００２９】
危険度スコアは、ＮＧ文字列に属性（姓、名、生年月日など）を付与した場合（ＮＧ文字列を単なる文字列としてではなく、ある属性に対応する意味を持つ文字列として捉えた場合）に、そのＮＧ文字列を認証アイテムに用いた場合の危険度を数値化したものである。例えば、図３Ａに示す例では、項番「００１」のＮＧ文字列「Ｙａｍａｍｏｔｏ」に「姓」という属性を付与した場合（ＮＧ文字列「Ｙａｍａｍｏｔｏ」を「姓」として捉えた場合）に、ＮＧ文字列「Ｙａｍａｍｏｔｏ」を認証アイテムに用いた場合の危険度スコアを「５０」と評価している。
【００３０】
重み付け係数は、ＮＧ文字列の第三者による類推、照合のされやすさ（照合容易性）に応じた重み付けにより危険度スコアを補正するための係数である。重み付け係数は、例えば、ＮＧ文字列の長さ（文字数）によって決定される。また、重み付け係数は、例えば、ＮＧ文字列が姓を示す場合には、よく使われる姓のランキングなどに応じて決定される。重み付け係数の算出例については後述する。
【００３１】
補正後の危険度スコアは、重み付け係数を用いて危険度スコアを補正した値であり、ＮＧ文字列の照合容易性に基づく危険度を示すものである。補正後の危険度スコアは、危険度スコアに重み付け係数を乗じて算出される。したがって、例えば、項番「００１」のＮＧ文字列「Ｙａｍａｍｏｔｏ」の補正後の危険度スコアは「７５（＝５０×１．５）」となる。
【００３２】
備考は、ＮＧ文字列に付与された属性などを示す。
【００３３】
なお、ＮＧ文字列の一部を変更したような、ＮＧ文字列から派生した文字列（派生文字列）を認証アイテムに用いた場合にも、元の文字列を基に類推される可能性が高い。したがって、ＮＧ文字列リストには、派生文字列もＮＧ文字列として格納してもよい。図３Ｂは、派生文字列もＮＧ文字列として格納したＮＧ文字列リストの例を示す図である。
【００３４】
図３Ｂに示すように、項番「００１」のＮＧ文字列「Ｙａｍａｍｏｔｏ」に派生して、項番「００１ａ」のＮＧ文字列「ＹＡＭＡＭＯＴＯ」と、項番「００１ｂ」のＮＧ文字列「ｙａｍａｍｏｔｏ」とが格納されている。
【００３５】
ＮＧ文字列「ＹＡＭＡＭＯＴＯ」は、元のＮＧ文字列「Ｙａｍａｍｏｔｏ」を全て大文字表記したものである。また、ＮＧ文字列「ｙａｍａｍｏｔｏ」は、元のＮＧ文字列「Ｙａｍａｍｏｔｏ」を全て小文字表記したものである。
【００３６】
図３Ｂに示す例では、ＮＧ文字列「ＹＡＭＡＭＯＴＯ」，「ｙａｍａｍｏｔｏ」それぞれに、「姓」という属性を付与し、危険度スコアを、元のＮＧ文字列「Ｙａｍａｍｏｔｏ」と同じく、「５０」と評価している。また、ＮＧ文字列「ＹＡＭＡＭＯＴＯ」，「ｙａｍａｍｏｔｏ」はそれぞれ、大文字あるいは小文字のみで構成されている。そのため、ユーザからすれば、文字列の入力に際して、大文字入力と小文字入力とを切り替えるためのＣａｐｓ操作を行う必要が無いため、利便性が増す。一方で、ＮＧ文字列「ＹＡＭＡＭＯＴＯ」，「ｙａｍａｍｏｔｏ」はそれぞれ、大文字あるいは小文字のみで構成されているため、認証アイテムを類推しようとする第三者からは大文字／小文字を混在させる必要が無く、類推が容易となる。そのため、図３Ｂに示すように、ＮＧ文字列「ＹＡＭＡＭＯＴＯ」，「ｙａｍａｍｏｔｏ」の重み付け係数は「１．６」とし、ＮＧ文字列「Ｙａｍａｍｏｔｏ」の重み付け係数「１．５」よりも大きくなっている。したがって、ＮＧ文字列「ＹＡＭＡＭＯＴＯ」，「ｙａｍａｍｏｔｏ」の補正後の危険度スコアは「８０」となり、ＮＧ文字列「Ｙａｍａｍｏｔｏ」の補正後の危険度スコア「７５」よりも大きくなる。
【００３７】
また、図３Ｂに示す例では、項番「００３」のＮＧ文字列「１９６３１１２０」に派生して、項番「００３ａ」のＮＧ文字列「１１２０」と、項番「００３ｂ」のＮＧ文字列「１９６３ＮＯＶ１１２０」と、項番「００３ｃ」のＮＧ文字列「Ｓ３８１１２０」と、項番「００３ｄ」のＮＧ文字列「２０１１１９６３」とが格納されている。
【００３８】
ＮＧ文字列「１１２０」は、元のＮＧ文字列「１９６３１１２０」のうち、西暦にあたる文字列「１９６３」を削除したもの、すなわち、「生年月日」を「月日」のみに短縮したものである。ＮＧ文字列「１９６３ＮＯＶ１１２０」は、元のＮＧ文字列「１９６３１１２０」のうち、「月（１１月）」の英語略称（ＮＯＶ）を追加したものである。ＮＧ文字列「Ｓ３８１１２０」は、元のＮＧ文字列「１９６３１１２０」のうち、「年（１９６３年）」を和暦表記（Ｓ３８（昭和３８年））したものである。ＮＧ文字列「２０１１１９６３」は、元のＮＧ文字列「１９６３１１２０」を、欧州表記したものである。
【００３９】
図３Ｂに示す例では、例えば、ＮＧ文字列「１９６３１１２０」から派生した、ＮＧ文字列「１１２０」，「１９６３ＮＯＶ１１２０」，「Ｓ３８１１２０」，「２０１１１９６３」それぞれの危険度スコアを、元のＮＧ文字列「１９６３１１２０」と同じ、「１００」と評価している。
【００４０】
一方、例えば、ＮＧ文字列「１１２０」は、ＮＧ文字列「１９６３１１２０」を短縮したものであり、より類推しやすくなっている。そのため、ＮＧ文字列「１１２０」の重み付け係数は「１．８」となり、元のＮＧ文字列「１９６３１１２０」の重み付け係数「１．５」よりも大きくなっている。
【００４１】
このようにＮＧ文字列リストでは、ＮＧ文字列毎に、属性を付与した場合の危険度スコアと、そのＮＧ文字列の類推のされやすさに応じた重み付け係数とが設定され、危険度スコアが重み付け係数により補正された補正後の危険度スコア（照合容易性に基づく危険度）が算出される。
【００４２】
図４は、重み付け係数の算出方法の一例を説明するための図である。図４においては、よく使われる姓のランキングおよび文字数に応じて重み付け係数を算出する例について説明する。なお、重み付け係数の算出は、例えば、ＣＰＵ１３が行う。
【００４３】
図４に示す例では、ランキング上位の姓（漢字表記）から順に配列されている。また、各姓（漢字表記）のローマ字表記が付されている。このようなランキングは、例えば、インターネットから取得することができる。
【００４４】
そして、各姓に対応して、ランキングに基づいた重み付け係数αが設定される。重み付け係数αは、ランキングが上位の姓ほど大きくなるように設定される。これは、ランキングが上位の姓ほど、パスワードリスト攻撃に遭う可能性が高いと考えられるためである。
【００４５】
また、各姓に対応して、ローマ字表記の文字数に基づいた重み付け係数βが設定される。重み付け係数βは、ローマ字表記の文字数が少ない姓ほど、大きくなるように設定される。例えば、重み付け係数βは、最小値を１とし、文字数が８文字の場合には「１．２」となり、４文字の場合には「１．８」となり、３文字の場合は「２．０」となる。
【００４６】
さらに、姓の出現頻度にローマ字表記の文字数を加味した重み付け係数を算出するために、各姓に対応して、重み付け係数αと重み付け係数βとの積（α×β）が算出される。この積の値が、各姓を示すＮＧ文字列の重み付け係数として付与される。なお、パスワードの入力に漢字が用いられることは稀であり、パスワードには、姓をローマ字表記した文字列が含まれることが多いと想定される。そのため、図４に示すように、姓をローマ字表記した文字数に応じた重み付け係数βを加味することで、より精度の高い危険度スコアを算出することができる。
【００４７】
上述したように、ＣＰＵ１３は、ユーザの属性や外部状況の変化に応じて、ＮＧ文字列リストを更新する。以下では、外部状況の変化に応じたＮＧ文字列リストの更新について、図５を参照して説明する。なお、以下では、図３Ｂに示すＮＧ文字列リストを更新する場合を例として説明する。
【００４８】
Ｗｅｂサイト上などで、パスワードなどへの使用が危険な文字列が公開されている。このような文字列は、時間の経過とともに変わっていくことが考えられる。このような外部状況の変化に応じて、ＣＰＵ１３は、ＮＧ文字列リストを更新する。
【００４９】
パスワードなどへの使用が危険な文字列が公開されたＷｅｂサイトがユーザにより検索され、そのＷｅｂサイト上で公開された文字列がユーザにより入力装置２０を用いて入力される。ＣＰＵ１３は、入力された文字列をＮＧ文字列リストに格納する。図５においては、項番「０００４」のＮＧ文字列「ｐａｓｓｗｏｒｄ」と、項番「０００５」のＮＧ文字列「ａｂｃｄｅｆｇ」と、項番「０００６」のＮＧ文字列「ｑｗｅｒｔｙ」とが追加されている。
【００５０】
ＣＰＵ１３は、追加したＮＧ文字列に対して、危険度スコアを設定する。追加された各文字列は、危険な文字列としてＷｅｂサイト上に公開されているものであるため、追加したＮＧ文字列に対して、ユーザの姓などと比べてより高い危険度スコア（危険度スコア「１００」）が設定される。
【００５１】
さらに、ＣＰＵ１３は、追加したＮＧ文字列に対して、重み付け係数を設定する。ここでは、ＣＰＵ１３は、ＮＧ文字列の文字数に基づいた重み付け係数を設定する。具体的にはＣＰＵ１３は、文字数が少ないＮＧ文字列ほど、高い重み付け係数を設定する。そして、ＣＰＵ１３は、危険度スコアに重み付け係数を乗算することで、ＮＧ文字列の補正後の危険度スコアを算出する。
【００５２】
上述した例では、ユーザがＷｅｂサイト上の危険な文字列を抽出し、入力装置２０に入力する例を用いて説明したが、これに限られるものではない。例えば、検索エンジンを用いて、Ｗｅｂサイト上に公開された危険な文字列を抽出してもよい。
【００５３】
次に、ユーザの属性の変化に応じたＮＧ文字列リストの更新について、図６を参照して説明する。なお、図６においては、転職をユーザの属性の変化の例として説明する。また、ユーザの転職前には、図３Ｂに示すＮＧ文字列リストが記憶されており、このＮＧ文字列リストを更新する場合を例として説明する。
【００５４】
ユーザが「ＳＳＮ株式会社」に転職したとする。この場合、例えば、転職先の会社名がユーザにより入力装置２０に入力され、ＣＰＵ１３は、転職先の会社名を構成する「ＳＳＮ」という文字列をＮＧ文字列としてＮＧ文字列リストに追加する。すなわち、図６に示すように、ＣＰＵ１３は、ＮＧ文字列リストに、項番「００４」のＮＧ文字列「ＳＳＮ」を追加する。
【００５５】
さらに、ＣＰＵ１３は、ＮＧ文字列「ＳＳＮ」の大文字／小文字を組み合わせた派生文字列（ＳＳｎ，ＳｓＮ，Ｓｓｎ，ｓＳＮ，ｓＳｎ，ｓｓＮ，ｓｓｎ）を項番００４ａ〜００４ｇのＮＧ文字列として、ＮＧ文字列リストに格納する。こうすることで、ユーザの属性の変化（ユーザの転職）により新たにユーザに関連する情報（文字列）となった文字列「ＳＳＮ」とその派生文字列とをＮＧ文字列リストに追加することができる。
【００５６】
図６においては、転職をユーザの属性の変化の例とし、転職先の会社名をＮＧ文字列としてＮＧ文字列リストに追加する例を説明したが、これに限られるものではない。ユーザのライフイベントによって付与される属性であれば任意のものを用いることができる。例えば、ユーザが属する会社の会社法人等番号、法人番号（マイナンバー）、銀行口座番号、結婚後の姓、転居後の電話番号などをＮＧ文字列リストに追加してもよい。
【００５７】
次に、本実施形態に係るコンピュータ１０による認証アイテム（パスワード）の強度の判定動作について、図７に示すフローチャートを参照して説明する。なお、図７においては、コンピュータ１０は、銀行ＡＴＭ（Automatic Teller Machine）であり、強度を判定するパスワードが４桁の数字からなる暗証番号である例を用いて説明する。
【００５８】
ＣＰＵ１３は、不揮発性メモリ１２に記憶されている判定対象のパスワード（４桁の数字からなる暗証番号）を読み出す。なお、この暗証番号は、パスワードの脆弱性をチェックする公知の技術を用いて、脆弱性がチェック済みの暗証番号である。
【００５９】
ＣＰＵ１３は、ＮＧ文字列リストに格納されているＮＧ文字列の番号を示す値（Ｎ）を１に設定する（Ｎ＝００１）（ステップＳ１１）。
【００６０】
次に、ＣＰＵ１３は、判定対象の暗証番号と、ＮＧ文字列リストのＮ番目のＮＧ文字列との類似度Ｒを算出する（ステップＳ１２）。ＣＰＵ１３は、判定対象の暗証番号に、Ｎ番目のＮＧ文字列と完全一致する文字列が含まれる場合には、類似度Ｒ＝１００とし、それ以外の場合は、類似度Ｒ＝０とする。類似度の算出方法の詳細については後述する。
【００６１】
次に、ＣＰＵ１３は、Ｎが最大値であるか否か（ＮがＮＧ文字列リストの最後の項番に対応する番号であるか否か）を判定する（ステップＳ１３）。
【００６２】
Ｎが最大値でないと判定した場合には（ステップＳ１３：Ｎｏ）、ＣＰＵ１３は、Ｎを１だけ増加させ（ステップＳ１４）、ステップＳ１２の処理に戻る。
【００６３】
Ｎが最大値であると判定した場合には（ステップＳ１３：Ｙｅｓ）、ＣＰＵ１３は、判定対象の暗証番号との類似度が閾値Ｒｔｈ以上であるＮＧ文字列が存在するか否かを判定する（ステップＳ１５）。なお、閾値Ｒｔｈは予め、ＣＰＵ１３に与えられている。
【００６４】
判定対象の暗証番号との類似度が閾値Ｒｔｈ以上であるＮＧ文字列が存在しないと判定した場合には（ステップＳ１５：Ｎｏ）、ＣＰＵ１３は、判定対象の暗証番号が強度は十分であると判定（判定対象の暗証番号の使用を許可すると判定）し、処理を終了する。
【００６５】
判定対象の暗証番号との類似度が閾値Ｒｔｈ以上であるＮＧ文字列が存在すると判定した場合には（ステップＳ１５：Ｙｅｓ）、ＣＰＵ１３は、判定対象の暗証番号はＮＧ文字列と完全一致する文字列を含むものであり、第三者による類推が容易である可能性があるため、判定対象の暗証番号の強度を上げる必要があると判定する。この場合、ＣＰＵ１３は、暗証番号を強制的に変更させる画面を出力装置３０（表示装置）に表示させ（ステップＳ１６）、処理を終了する。
【００６６】
図７を参照して説明したコンピュータ１０の動作について、具体例を挙げてより詳細に説明する。
【００６７】
以下では、判定対象の暗証番号が「０３１０」であるとする。また、銀行口座の開設時に（例えば、２００７年）、ユーザに関連する情報に基づき、図８Ａに示すＮＧ文字列リストが作成され、不揮発性メモリ１２に記憶されたとする。
【００６８】
図８Ａに示すように、銀行口座の開設時には、ユーザの生年月日（月日）、ユーザの自宅郵便番号（下４桁）、ユーザが所有する車のナンバー、ユーザの子ども（第１子）の生年月日（月日）などのユーザに関連する情報に相当するＮＧ文字列が格納されている。また、危険度スコア、重み付け係数、補正後の重み付け係数も、適宜、設定、算出されている。
【００６９】
その後、２００９年に、格納済みのＮＧ文字列の派生文字列が追加され、図８Ｂに示すように、ＮＧ文字列リストに更新されたとする。すなわち、ユーザの生年月日に派生して、ユーザの生年月日（月日）を欧州表記した文字列や、ユーザの生年のみを示す文字列がＮＧ文字列として追加されたとする。また、第１子の生年月日に派生して、第１子の生年月日（月日）を欧州表記した文字列や、第１子の生年のみを示す文字列がＮＧ文字列として追加されたとする。
【００７０】
その後、２０１５年３月１０日にユーザに２人目の子ども（第２子）が生まれ、第２子の誕生というユーザの属性の変化に応じて、第２子の生年月日などの情報が、ユーザにより入力装置２０に入力されたとする。ＣＰＵ１３は、その入力に応じて、ＮＧ文字列リストを図８Ｃに示すように更新したとする。すなわち、第２子の生年月日（月日）がＮＧ文字列として追加されたとする。さらに、第２子の生年月日（月日）の派生文字列として、第２子の生年月日（月日）を欧州表記した文字列や、第２子の生年のみを示す文字列がＮＧ文字列として追加されたとする。
【００７１】
２００７年の銀行口座の開設時のＮＧ文字列リスト（図８Ａ）には、判定対象の暗証番号「０３１０」と完全一致するＮＧ文字列は存在しない。そのため、暗証番号の変更は不要と判定される。
【００７２】
また、２００９年の派生文字列の追加後のＮＧ文字列リスト（図８Ｂ）にも、判定対象の暗証番号「０３１０」と完全一致するＮＧ文字列は存在しない。そのため、暗証番号の変更は不要と判定される。
【００７３】
一方、第２子の誕生に応じた更新後のＮＧ文字列リスト（図８Ｃ）では、判定対象の暗証番号「０３１０」と、第２子の生年月日（月日）に相当するＮＧ文字列とが完全一致している。したがって、判定対象の暗証番号とこのＮＧ文字列との類似度は１００となる。そのため、ＣＰＵ１３は、暗証番号の強度を上げる必要があると判定し、暗証番号の変更をユーザに強制する。
【００７４】
このように、ユーザの属性や外部状況の変化に応じてＮＧ文字列リストを更新することで、ユーザに関連する情報といった、パスワードへの使用が危険な文字列をパスワードが事後的に含むものとなった場合に、パスワードの変更をユーザに促すことができる。そのため、ユーザの属性や外部状況の変化があった場合にも、パスワードの強度の維持を図ることができる。なお、第２子の誕生を契機にＮＧ文字列リストを更新する例を用いて説明したが、これに限られるものではない。例えば、ユーザの転居、車の購入など様々なライフイベントを契機として、ＮＧ文字列リストを更新することができる。
【００７５】
図７においては、判定対象の暗証番号がＮＧ文字列リストのＮＧ文字列と完全一致する場合には、一律に暗証番号の変更を求めていたが、これに限られるものではない。例えば、判定対象のパスワードがＮＧ文字列と完全一致する場合であっても、パスワードの文字数が多く、第三者による類推が困難な場合もある。この場合、判定対象のパスワードを使用しても危険性は比較的低いと考えられるので、コンピュータ１０は、判定対象のパスワードの使用を許可してもよい。以下では、コンピュータ１０がこのような動作を行う場合について、図９に示すフローチャートを参照して説明する。なお、図９において、図７と同様の処理については同じ符号を付し、説明を省略する。
【００７６】
判定対象の暗証番号との類似度Ｒが閾値Ｒｔｈ以上のＮＧ文字列が存在すると判定した場合には（ステップＳ１５：Ｙｅｓ）、ＣＰＵ１３は、類似度Ｒが閾値Ｒｔｈ（第１の閾値）以上のＮＧ文字列のなかに、危険度スコア（補正後の危険度スコア）が閾値Ｋｔｈ（第２の閾値）以上のＮＧ文字列が存在するか否かを判定する（ステップＳ２１）。なお、閾値Ｋｔｈは予め、ＣＰＵ１３に与えられている。
【００７７】
危険度スコアが閾値Ｋｔｈ以上のＮＧ文字列が存在すると判定した場合には（ステップＳ２１：Ｙｅｓ）、ＣＰＵ１３は、判定対象の暗証番号の強度を上げる必要があると判定する。この場合、ＣＰＵ１３は、暗証番号を強制的に変更させる画面を出力装置３０に表示させ（ステップＳ２２）、処理を終了する。
【００７８】
危険度スコアが閾値Ｋｔｈ以上のＮＧ文字列が存在しないと判定した場合には（ステップＳ２１：Ｎｏ）、ＣＰＵ１３は、判定対象の暗証番号の使用を許可するものの、当該暗証番号は危険性がやや高いと判定し、暗証番号の変更を勧奨する画面を出力装置３０に表示させ（ステップＳ２３）、処理を終了する。
【００７９】
次に、類似度の算出方法について、図１０に示すフローチャートを参照して説明する。図１０では、判定対象の認証アイテム（パスワード）が「ａ０ｓＳｎ＋ｅ！４Ｊ」であり、一例として、図６に示すＮＧ文字列リストの項番「００４ｅ」のＮＧ文字列「ｓＳｎ」との類似度を算出する例を用いて説明する。
【００８０】
ＣＰＵ１３は、判定対象のパスワード「ａ０ｓＳｎ＋ｅ！４Ｊ」とＮＧ文字列「ｓＳｎ」とを比較する（ステップＳ３１）。具体的には、ＣＰＵ１３は、判定対象のパスワードの先頭から３文字分の文字列「ａ０ｓ」を切り出し、ＮＧ文字列「ｓＳｎ」と切り出した文字列「ａ０ｓ」とが完全一致するか否かを判定する（ステップＳ３１１）。ＮＧ文字列「ｓＳｎ」と文字列「ａ０ｓ」とは１文字も一致していないため、ＣＰＵ１３は、３文字中１文字も一致していないと判定する。
【００８１】
次に、ＣＰＵ１３は、判定対象のパスワードの２文字目から３文字分の文字列「０ｓＳ」を切り出し、ＮＧ文字列「ｓＳｎ」と切り出した文字列「０ｓＳ」とが完全一致するか否かを判定する（ステップＳ３１２）。ＮＧ文字列「ｓＳｎ」と文字列「０ｓＳ」とは１文字も一致していないため、ＣＰＵ１３は、３文字中１文字も一致していないと判定する。以下、ＣＰＵ１３は、判定対象のパスワードから３文字分の文字列を切り出す位置を１文字ずつ繰り下げながら、同様の処理を行う（ステップＳ３１３〜Ｓ３１８）。
【００８２】
判定対象のパスワードの最後の３文字分の文字列とＮＧ文字列との比較が終了すると、ＣＰＵ１３は、判定対象のパスワードから切り出した文字列の中にＮＧ文字列と完全一致するものがあるか否かを判定する（ステップＳ３２）。
【００８３】
上述した例では、ステップＳ３１３において、ＮＧ文字列「ｓＳｎ」と判定対象のパスワード「ａ０ｓＳｎ＋ｅ！４Ｊ」の３文字目から３文字分の文字列「ｓＳｎ」とが３文字中３文字とも一致しており、完全一致している。
【００８４】
判定対象のパスワードから切り出した文字列の中にＮＧ文字列と完全一致するものがあると判定した場合には（ステップＳ３２：Ｙｅｓ）、ＣＰＵ１３は、判定対象のパスワードとＮＧ文字列との類似度Ｒを１００と算出する（ステップＳ３３）。
【００８５】
判定対象のパスワードから切り出した文字列の中にＮＧ文字列と完全一致するものがないと判定した場合には（ステップＳ３２：Ｎｏ）、ＣＰＵ１３は、判定対象のパスワードとＮＧ文字列との類似度Ｒを０と算出する（ステップＳ３４）。
【００８６】
なお、本実施形態では、ＮＧ文字列と判定対象のパスワードに含まれる文字列とが完全一致する場合には、類似度Ｒを１００と算出し、それ以外の場合には、類似度Ｒを０と算出する例を用いて説明したが、これに限られるものでない。例えば、ＮＧ文字列と判定対象のパスワードに含まれる文字列とが部分一致する場合に、類似度１００と類似度０との間の中間値を類似度Ｒとして算出するようにしてもよい。
【００８７】
上述したように、パスワードに漢字が用いられることは稀である。一方、パスワードリマインダには、漢字、平仮名、片仮名の入力が受け付けられることが多い。以下では、パスワードリマインダとして文字列「山本」の強度を判定する場合を例として説明する。
【００８８】
パスワードリマインダを判定対象とする場合、ＮＧ文字列リストには、図１１に示すように、ＮＧ文字列として、漢字、平仮名、片仮名からなる文字列も格納される。図１１では、ＮＧ文字列「Ｙａｍａｍｏｔｏ」の派生文字列として、漢字表記の文字列「山本」が項番「００１ｃ」のＮＧ文字列として追加されている。この場合、ＮＧ文字列「山本」の危険度スコアはＮＧ文字列「Ｙａｍａｍｏｔｏ」と同じ値が設定されている。また、ＮＧ文字列「山本」の重み付け係数は、姓のランキング（図４参照）に基づいて算出される。
【００８９】
図１２は、パスワードリマインダを判定対象とした場合の、コンピュータ１０の動作を示すフローチャートである。なお、図１２において、図９と同様の処理については同じ符号を付し、説明を省略する。
【００９０】
ＣＰＵ１３は、判定対象のパスワードリマインダと、ＮＧ文字列リストのＮ番目のＮＧ文字列との類似度Ｒを算出する（ステップＳ４１）。ＮＧ文字列リストの最後の項番のＮＧ文字列まで、全てのＮＧ文字列との類似度を算出すると、ＣＰＵ１３は、判定対象のパスワードリマインダとの類似度が閾値Ｒｔｈ以上であるＮＧ文字列が存在するか否かを判定する（ステップＳ４２）。
【００９１】
類似度Ｒが閾値Ｒｔｈ以上のＮＧ文字列が存在すると判定した場合には（ステップＳ４２：Ｙｅｓ）、ＣＰＵ１３は、類似度Ｒが閾値Ｒｔｈ以上のＮＧ文字列のなかに、危険度スコア（補正後の危険度スコア）が閾値Ｋｔｈ以上のＮＧ文字列が存在するか否かを判定する（ステップＳ４３）。
【００９２】
危険度スコアが閾値Ｋｔｈ以上のＮＧ文字列が存在すると判定した場合には（ステップＳ４３：Ｙｅｓ）、ＣＰＵ１３は、判定対象のパスワードリマインダの強度を上げる必要があると判定する。この場合、ＣＰＵ１３は、パスワードリマインダを強制的に変更させる画面を出力装置３０に表示させ（ステップＳ４４）、処理を終了する。
【００９３】
危険度スコアが閾値Ｋｔｈ以上のＮＧ文字列が存在しないと判定した場合には（ステップＳ４１：Ｎｏ）、ＣＰＵ１３は、判定対象のパスワードリマインダの使用を許可するものの、当該パスワードリマインダは危険性がやや高いと判定し、パスワードリマインダの変更を勧奨する画面を出力装置３０に表示させ（ステップＳ４５）、処理を終了する。したがって、パスワードリマインダについてもパスワードと同様に、ユーザの属性や外部状況の変化があった場合にも、強度の維持を図ることができる。
【００９４】
このように本実施形態によれば、認証アイテムの強度を判定する判定装置としてのコンピュータ１０は、認証アイテムへの使用が好ましくない文字列を記憶する記憶部としての不揮発性メモリ１２と、不揮発性メモリ１２に記憶されている文字列に基づき、認証アイテムの強度を判定する制御部としてのＣＰＵ１３とを備え、ＣＰＵ１３は、ユーザの属性および外部状況の少なくとも一方の変化に伴って新たに生じた、認証アイテムへの使用が好ましくない文字列を不揮発性メモリ１２に記憶させる。
【００９５】
そのため、ユーザの属性や外部状況の変化に伴って、認証アイテムが事後的にユーザに関連する情報（文字列）といった、認証アイテムへの使用が好ましくない文字列を含むものとなった場合にも、その認証アイテムの強度を正しく判定することができ、認証アイテムの強度の維持を図ることができる。
【００９６】
なお、上述した実施形態においては、ＮＧ文字列の追加、記憶されているＮＧ文字列に基づく、認証アイテムの強度の判定などをコンピュータ１０にて、すなわち、端末ローカルにて行う例を用いて説明したが、これに限られるものではない。例えば、ＮＧ文字列の追加や、記憶されているＮＧ文字列に基づく、認証アイテムの強度の判定といった機能を、リモートデスクトップのように、ユーザ側のローカル端末とネットワークを介して接続されたクラウド側の装置（サーバなど）に持たせてもよい。
【００９７】
本発明を図面および実施形態に基づき説明してきたが、当業者であれば本開示に基づき種々の変形または修正を行うことが容易であることに注意されたい。したがって、これらの変形または修正は本発明の範囲に含まれることに留意されたい。
【符号の説明】
【００９８】
１０    コンピュータ（判定装置）
１１    通信ＩＦ
１２    不揮発性メモリ（記憶部）
１３    ＣＰＵ（制御部）
２０    入力装置
３０    出力装置
【図１】
0006549063.tif 000002
【図２】
0006549063.tif 000003
【図３Ａ】
0006549063.tif 000004
【図３Ｂ】
0006549063.tif 000005
【図４】
0006549063.tif 000006
【図５】
0006549063.tif 000007
【図６】
0006549063.tif 000008
【図７】
0006549063.tif 000009
【図８Ａ】
0006549063.tif 000010
【図８Ｂ】
0006549063.tif 000011
【図８Ｃ】
0006549063.tif 000012
【図９】
0006549063.tif 000013
【図１０】
0006549063.tif 000014
【図１１】
0006549063.tif 000015
【図１２】
0006549063.tif 000016