説明

トークン認証システムおよび方法

ワン・タイム・パスワードを計算する方法に関する。シークレットはカウントと連結され、シークレットは特有にトークンに割当てられる。シークレットは私設キーでもよく、或いは共有されたシークレット対称キーでもよい。カウントはトークンにおいて単調に増加する数であり、トークンにおいて発生さたれたワン・タイム・パスワードの番号を有している。そのカウントはまた認証サーバにおいて追跡され、認証サーバにおけるワン・タイム・パスワードの各計算により単調に増加する。OTPは連結されたシークレットとカウントをハッシュすることによって計算されることができる。その結果は切捨てることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認証に関し、特にハードウエア装置を使用する認証に関する。
【背景技術】
【0002】
ネットワーク中においてデータまたはサービスにアクセスするリクエストを許可するか否かを決定する通常のステップはリクエストしているユーザを識別して認証することである。認証はユーザのアイデンティティを確認するプロセスを含んでいる。既知の識別および認証システムはユーザ識別子(“ユーザid”)とユーザに対するシークレット(“パスワード”)との関係を含んでいる。パスワードはユーザと認証サービス機関との間で共有されているシークレットである。ユーザは自己のユーザidとパスワードを認証サービス機関に提示し、その認証サービス機関はそれらをそのサービス機関に記憶されているユーザidおよび関連するパスワードと比較する。それらが整合している場合には、ユーザは認証されたとされる。整合しない場合には、ユーザは認証されないとされる。
【0003】
トークンはユーザを認証するために使用されることのできる装置である。それは1以上のシークレットを含むことができ、それらのシークレットの幾つかは確認センターと共有されることができる。例えば、トークンはワン・タイム・パスワード(OTP)を計算するベースとして使用されることのできるシークレットキーを記憶することができる。OTPはかって生成され、その後は再使用されていない番号(またはアルファベット列)であってもよい。トークンはOTPを発生してそれを特有のトークン通し番号と共に認証サーバへ送る。認証サーバは受信された通し番号によりそのトークンに対するそのシークレットキーのコピーを使用してOTPを計算することができる。OTPが整合する場合には、ユーザは認証されるべきであるとされる。ユーザからトークンへのリンクをさらに強力にするために、ユーザはトークンのロックを解除することにより入力されなければならないトークンと共有されたシークレット個人識別番号(PIN)を設定することができる。その代りにPINはユーザと、トークンと、認証サーバとの間で共有されることができ、OTPを生成するための他のファクターと共に使用されることができる。トークンは典型的に許可されていない開示からそのシークレットを保護するために盗用に対する抵抗力の高い手段を具えている。
【発明の開示】
【発明が解決しようとする課題】
【0004】
本発明の目的は、ワン・タイム・パスワードを計算する方法を提供することである。
【課題を解決するための手段】
【0005】
シークレットはカウントと連結され、シークレットは特有にトークンに割当てられる。シークレットは私設キーであってもよく、或いは共有されたシークレット対称キーであってもよい。カウントはトークンにおいて単調に増加する数であり、トークンにおいて発生さたれたワン・タイム・パスワードの番号を有している。そのカウントはまた認証サーバにおいて追跡され、それにおいて認証サーバにおけるワン・タイム・パスワードの各計算と共に単調に増加する。OTPは連結されたシークレットとカウントとをハッシュすることによって計算されることができる。その結果は切捨てることができる。
【0006】
本発明の1実施形態では、ハードウエア装置においてワン・タイム・パスワード(OTP)を発生するためのプロトコルを含んでおり、それはユーザを認証するために使用される。OTPはトークンにより発生され、そのトークンは、それが含まれているソフトウエアおよび情報の許可されない変更や、開放を阻止して、その適切な機能を確保するためのメカニズムを含んでいる物理的な装置であることができる。
【0007】
このプロトコルの1実施形態は、シーケンスベースであることができ、2ファクター、例えばユーザの知識(個人識別番号、ユーザと認証サービス機関との間で共有されるシークレットのようなもの)およびユーザがへ所有している例えばトークンのような特別の特性を有する物理的装置(例えば私設キーまたは共有された対称キーのような特有のシークレットキー)である。
【0008】
OTPを発生するためのプロトコルはカウンタに基づくことが可能であり、例えばOTPがトークンからリクエストされる回数に基づいた単調に増加する数である。OTPの値はトークン上に表示されることができ、例えばネットワークに結合されているコンピュータに結合されているキーボードを介してユーザにより容易に読取られ、入力されることができる。OTPはRADIUSシステムによって転送されることができる。
【発明を実施するための最良の形態】
【0009】
本発明によるプロトコルの1実施形態は、増加するカウンタ値と、トークンおよび認証サービス機関(“強力な認証”サービス)に対してのみ知られている静的対称キーとに基づくことができる。OTP値はRFC2104に規定されているようなHMAC−SHA1アルゴリズムまたは任意の他の適当なハッシュアルゴリズムを使用して生成されることができる。このハッシュされたMACアルゴリズムはSHA−1の強度を有しているが、出力の計算中のシークレットの付加を許容する。
【0010】
HMAC−SHA1アルゴリズムによる計算の出力は160ビットである。しかしながら、この値はユーザにより容易に入力されることができるような長さに切り捨てられることができる。
OTP=切捨て(HMAC−SHA1(カウント,シークレット))
クライアントおよび認証サーバの両者はOTP値を計算することができる。サーバにより受信された値がそのサーバにより計算された値と一致するならば、ユーザは認証されるべきであるとされる。サーバで認証が生じた場合には、そのサーバはカウンタ値を1だけインクリメントする。
【0011】
サーバのカウンタ値は成功したOTP認証後にインクリメントされることができるが、トークンにおけるカウンタはボタンが押される都度インクリメントされることができる。このため、サーバとトークンのカウンタ値はしばしば同期が外れる可能性がある。事実、ユーザ環境与えられたサーバとトークンが常に同期が外れているチャンスがある(例えばユーザが必要がないのにボタンを押すとき、ボタンが偶発的に押されるとき、ユーザがOTPをミスタイプするとき等)。
【0012】
サーバのカウンタは有効なOTPが与えられたときにのみインクリメントするため、トークンにおけるサーバのカウンタ値はトークンにおけるカウンタ値よりも常に少ないことが予測される。再同期がユーザまたは企業のIT部門のいずれかの負担とならないことが確実にされることを確認することが重要である。
【0013】
このようなシナリオにおけるカウンタの同期は、次のn個のOTP値をサーバが計算して(nは整数)、一致していることを決定することによって達成される。トークンにおけるカウントとサーバおけるカウントとの間の差が50であると仮定した場合には、強力な認証サーバの構成に応じて、そのサーバは最大で次の50のOTP値を計算しなければならない。したがって、例えば正確なOTPがn+12の値にあることが発見された場合には、サーバはそのユーザを認証し、その後、カウンタを12だけインクリメントする。
【0014】
サーバにより容易に計算されることのできるnに対する値を注意深く選択することが重要である。サーバがOTP値を永久に検査しないことを確実にして、それにより10進サービスアタックに屈伏する上限が必要である。
【0015】
HMAC−SHA1値を6文字値に切捨てることによって、特に数字だけが使用されている場合にマウントに対して容易にアタックする強力な力を与える可能性がある。このため、このようなアタックは強力な認証サーバにおいて検出されて停止されることができる。サーバが妥当でないOTPを計算するたびにこれを記録して、例えば幾つかのポイントで同じソースからの確認に対して将来のリクエストを拒否して被害を受けることを阻止する手段を構成する。その代りに、ユーザは確認の試みの間の長時間の待機を強制されることができる。
【0016】
ユーザがロックアウトされると、そのユーザは、例えばシーケンス中の多数のOTPに入るためにユーザを必要とするウエブインターフェースを提供することによって“自己ロック解除”することがてきて、それらかトークンを有することが証明される。
【0017】
共有されたシークレットがカウンタと組合わされると、160ビット(20バイト)のHMAC−SHA1結果が得られる。1実施形態では、我々のOTPに対してこの情報の最大で4バイトである。HMACRFC(RFC2104- HMAC:メッセージ認証に対するキードハッシング)はさらにセクション5のHMAC結果の半分以上を使用しなければならないと警告している。切捨てられた出力は:
HMACのアプリケーションがHMAC計算の左側のtビットを出力することによってHMACの出力の切捨てを選択することが可能であり、…出力長tはハッシュ出力の長さの半分より小さくないことを推奨しており、…80ビット(アタッカにより予測されるのに必要なビット数に付いての適当な低い限度)より少なくはない。
【0018】
したがって、HMACまたはSHA1のいずれも弱めることのない方法でHMAC結果の4バイトまたはさらに少ないバイトだけを選択する別の方法が必要である。
【0019】
[ダイナミックオフセット切捨て]
この技術の目的は、HMAC−SHA1結果から4バイトのダイナミック2進コードを抽出し、その一方でMACの暗号の強さの大部分を維持することである。
【0020】
1.最後のバイト(バイト19)を取り、
2.オフセット値として低いオーダーの4ビットをマスクして除去し、
3.オフセット値を使用してHMAC−SHA1結果のバイト中へインデックスし、
4.ダイナミック2進コードとして後続する4バイトを戻す。
【0021】
以下のコード例は、hmac resultはHMAC−SHA1結果を有するバイトアレイを与えるダイナミック2進コードの抽出を記載したものである。
【数1】

【0022】
以下はこの技術の使用例である。
【数2】

【0023】
1.最後のバイト(バイト19)は6値 0×5aを有する。
2.下位の4ビットの値は 0×a である(オフセット値)。
3.オフセット値はバイト10(10×a)である。
4.バイト10で始まる4バイトの値は 0×50ef7f19であり、それはダイナミックに2進コードである。
我々は31ビットの、符号のない、ビッグエンド(big endian)の整数として2進コードを処理し、その第1のバイトは 0×7fでマークされる。
【0024】
所定のシークレットのためのOTPおよびムービングファクタは、3つのパラメータ、すなわち、エンコードベース、コードデジット、ハズチェックサムに基づいて変化することができる。エンコードベースとして10、真(TRUE)へセットされたコードデジットおよぴバスチェックサムとして7により、上記の例を継続する。
・6値 0×50ef7f19を1357872921ベース10に変換する。
・最後の7デジットは7872921 である。
・コードデジットのクレジットカードチェックサムは7をチェックサムとして計算する。10-((5+8+5+2+9+2+2)mod10) =10-(33mod10)=10-3=7
・以下のOTP:78729217が得られる。
【0025】
以下はこのアプリケーションで使用される用語集である。
チェックサムデジット;コードデジットに対してクレジットカードチェックサムアルゴリズムを適用した結果である。このデジットは随意である。このチェックは任意の単一の順序変更または任意の単一のミスタイプされた文字を捕捉しなければならない。
【0026】
コードデジット;このパラメータは2進コードから得られるデジットの数である。2進コードをエンコードベースに変換し、少なくともコードデジットである0をパッドし、右側(下位)デジットを採用することにより計算される。エンコードベースとして10により9を越えないコードデジットが31ビットの2進コードによりサポートされることができる。
【0027】
クレジットカードチェックサムアルゴリズム;このチェックサムアルゴリズムは任意の単一のミスタイプされたデジットまたは任意の単一の隣接する2つのデジットの順序変更を捕捉できる利点を有している。これらは最も普通のタイプのユーザエラーである。
【0028】
エンコードベース;このパラメータはパスワードに使用されるもののベースを示している。ベース10は数値パッドで入力されることができるので好ましいベースである。
【0029】
ハズチェックサムデジット;このブールパラメータはチェックサムデジットがOTPを生成するために付加されなければならないか否かを示す。チェックサムデジットが存在しないならば、そのコードデジットがOTPとして使用される。チェックサムデジットが存在すれば、クレジットカードチェックサムアルゴリズムへの入力としてそのコードデジットを使用してそれが計算される。
【0030】
OTP;ワン・タイム・パスワード。この値は、存在するものがあれば、コードデジットの右にチェックサムデジットを付加することにより構成される。チェックサムデジットが存在しなければ、OTPはコードデジットと同じである。
ワン・タイムの数値はハッシュビット中で第1のシフトを行い、その後同期ビットをシフトし、その後、前の中間値のチエック 関数()の結果をシフトすることにより計算される。
【0031】
2進値はその後、適当な文字値に変換される。パスワードの3つの類似した文字表示、すなわち10進数、6進数、アルファベットおよび数字が存在する。
【数3】

【0032】
10進数
トークンはダイナミック2進コードを10進数に変換し、それから最後のコードデジットプラス随意のチェックサムを表示することができる。例えば、チェックサムがない6デジットに対して、10進数トークンは2進コードを10進数に変換し、最後の6デジットを表示する。
【0033】
6進数
トークンはダイナミック2進コードを6進数に変換し、それから最後のコードデジットプラス随意のチェックサムを表示することができる。例えば、チェックサムがない6デジットに対して、6進数トークンは2進コードを6進数に変換し、最後の6デジットを表示する。
【0034】
アルファベットおよび数字
トークンはダイナミック2進コードをベース32に変換し、それから最後のコードデジットプラス随意のチェックサムを表示することができる。例えば、チェックサムがない6デジットに対して、ベース32のトークンは2進コードをベース32に変換し、最後の6デジットを表示する。
【0035】
PIN
真の2ファクタ認証トークンのために、OTPの“あなたの有しているもの”の値に “あなたの知っているもの”の値を付加することができる。この値は通常静的なPINまたはユーザだけに知られているパスワードである。このセクションでは、本発明による静的PINを確認するために3つの別のアーキテクチャについて説明する。
クラウド中のPIN確認
クラウド中のPIN確認を可能にするために、単一のPINは単一のトークンに結合されることができる。PINは暴露されないことを確実にするためにワイヤ上で保護されなければならない。PINの管理(設定、変更)は強力な認証サービスによって行われなければならない。
【0036】
企業におけるPIN確認
クラウド中のPIN確認を可能にすることは単一のトークンに対する多数のPIN確認を意味している。
PINは企業のセキュリティワールドに残されてはならない。PINの管理は企業によって行われることができる。
【0037】
トークンにおけるPIN確認
この実施形態はトークンにおけるキーパッドを使用して構成されることができる。PINは絶対にワイヤで送ってはならず、OTPアルゴリズムに対するシードとして使用されることができる。PINは単にトークンのロックを解除するために使用されることができる。
【0038】
[データフローの例]
このセクションでは2つのデータフローのシナリオについて説明する。第1のシナリオでは、強力な認証サービスがトークンと関係するユーザ名を知らないと仮定する。このシナリオでは、PINの管理動作はそれらのユーザ名の代りにそれらのトークンSNを入力するようにユーザに要求すると仮定している。
【0039】
第2のシナリオは、トークンSNの代りにユーザ名が強力な認証サービス中へのキーであることを除いては第1のシナリオに非常によく類似している。この場合について幾つかの論点がある。第1に、ユーザ名はサービス機関に知られており、第2に、ユーザ名からトークンSNへの特有のマップを確実に行う方式が得られなければならない。
【0040】
図1は、本発明の1実施形態による認証手順を示している。それにおいて以下のことが仮定されている。
・トークンSNとSは強力な認証サービスへ分配され、
・カストマアカウントは各トークンに関連され、
・PINは特定のトークンに関連され、
・強力な認証サービスはDB中のPINのSHA−1ハッシュのみを保存し、
・トークンSNは企業におけるユーザアカウントに対する属性として付加され、プラグインによりユーザ名をSNへマップする。
【0041】
強力な認証サーバ110 と、企業の認証サーバ120 と、クライアント130 とは、例えばネットワーク(図示せず)により結合されている。図1に示されているように、クライアント130 に位置するユーザは企業のサーバ120 に保護されたリソースへアクセスするためのリクエストを送信する。そのサーバはリソースへのアクセスが認証を必要とするか否かを決定する。認証を必要とする場合には、そのサーバ120 は“認証を必要とされる”のメッセージをクライアント130 に送る。ユーザはユーザ名とパスワードの提示を促される。ユーザはそのユーザのトークンのボタン(図示せず)を押してOTPを得ることができる。OTPは上述のように、例えばトークンシークレットと、トークンに記憶されているカウントに対する現在の値の組合わせをハッシュすることによって発生される。その後、ユーザはそのユーザ名と,トークンにより与えられたOTPに連結された個人的識別番号(PIN)を入力する。この情報は企業のサーバ120 に送られる。企業のサーバ120 はユーザ名に基づいてトークンの通し番号を探して、その通し番号とPIN+OTPを認証サーバ110 に送る。認証サーバ110 は通し番号に基づいて記録を探してPINのローカルにハッシュされた値とシークレットと目的とされているカウントとを得る。これは、トークンのシークレットが特有に割当てられているトークンと認証サーバ110 との間で共有されることができるために可能である。それから、認証サーバ110 はトークンに対するシークレットと認証サーバに記憶されているそのトークンに対するカウントの現在値とに基づいてOTPを計算する。計算されたOTPが受信されたOTPと整合していれば、認証サーバ110 におけるカウントの値が1だけインクリメントされる。そうでなければ、認証サーバは、トークンに対するカウントをインクリメントし、トークンに対するシークレットと共にそれをハッシュすることによってOTPを計算しようと再度試みる。これは、上述したように、認証サーバ110 におけるカウント値がトークンにおけるカウント値とは異なっていてもよい(図示せず)ために行われることができる。この手順は、トークンにおけるカウント値にカウント値が追いつくことが可能な合理的な回数で反復されることができる。1実施形態では、認証サーバにおけるトークンの認証を試みるそのような反復の回数は予め定められた同じ回数、例えば12回の反復後に終了される。トークンが認証サーバ110 によって認証されることが成功できない場合には、認証サーバ110 は“認証されず”のメッセージを企業のサーバ120 に送る。トークンが認証されることに成功した場合には、認証サーバ110 は“認証された”のメッセージを企業のサーバ120 に送る。認証サーバ110 から得られた結果に基づいて、企業のサーバは、クライアントからのリソースをアクセスするためにリクエストされた許可をそれぞれ拒否または承認する。
【0042】
図2は、本発明の別の実施形態による認証手順を示している。それにおいて以下のことが仮定されている。
・トークンSNとSは強力な認証サービスへ分配され、
・カストマアカウントは各トークンに関連され、
・PINは特定のトークンに関連され、
・強力な認証サービスはDB中のPINのSHA−1ハッシュのみを保存し、
・ユーザ名は企業の認証サーバから強力な認証サーバへ転送される。
【0043】
図2の認証手順は、ユーザ名とPIN+OTPがクライアント130 から企業のサーバ120 に送られる直後までは図1と同じである。しかしながら、ユーザ名に基づいてトークン通し番号を探すのではなく、企業のサーバ120 は認証リクエスト(ユーザ名とPIN+OTPを含んでいる)を認証サーバ110 に送信する。認証サーバ110 はユーザ名に基づいて記録を探してPINを認証し、その後プロセスの残りに対しては図1に示されているのと同じ手順にしたかって処理が行われる。
【図面の簡単な説明】
【0044】
【図1】本発明の1実施形態による認証手順のフロー図。
【図2】本発明の別の実施形態による認証手順のフロー図。

【特許請求の範囲】
【請求項1】
カウントとシークレットとを連結し、前記シークレットは特有にトークンに割当てられてトークンと認証サーバとの間で共有され、前記カウントはトークンにおいて発生されたワン・タイム・パスワードの番号を有し、トークンにおいて単調に増加し、ワン・タイム・パスワードの認証サーバにおける各計算により認証サーバにおいて単調に増加する数であり、
前記連結されたシークレットとカウントに基づいてハッシュを計算し、
そのハッシュの結果を切捨ててワン・タイム・パスワードを得るステップを含んでいるワン・タイム・パスワードの計算方法。
【請求項2】
リソースへアクセスするためのリクエストを認証する方法において、
トークンに特有に関係する通し番号と、ユーザに関する個人識別番号と、トークンにおいて発生されるワン・タイム・パスワードとを含んでいる認証に対するリクエストを認証サーバにおいて受信し、ワン・タイム・パスワードはトークンにおけるカウントの値と、トークンと認証サーバとの間で共有されるシークレットとに基づいており、
通し番号に基づいてトークンに対応するカウントの値を認証サーバにおいて検索し、
通し番号に基づいてトークンに対応するシークレットを認証サーバにおいて検索し、
カウントの値の検索およびトークンに対応するシークレットに基づいてワン・タイム・パスワードの値を認証サーバにおいて計算し、
この計算されたワン・タイム・パスワードを受信されたワン・タイム・パスワードと比較し、
計算されたワン・タイム・パスワードが受信されたワン・タイム・パスワードに対応している場合には、そのリクエストは認証されるべきものであると決定され,
計算されたワン・タイム・パスワードが受信されたワン・タイム・パスワードに対応していない場合には、認証サーバにおけるカウントの値をインクリメントして、そのインクリメントされたカウントとシークレットとに基づいてワン・タイム・パスワードが再計算され、その再計算されたてワン・タイム・パスワードが受信されたワン・タイム・パスワードと比較され、
再計算されたてワン・タイム・パスワードが受信されたワン・タイム・パスワードと対応しない場合にはカウント値のインクリメントとワン・タイム・パスワードの再計算とが繰返されされ、再計算されたワン・タイム・パスワードが受信されたワン・タイム・パスワードと対応するまで繰返されるステップを含んでいる認証方法。
【請求項3】
ハッシュ関数はSHA−1である請求項2記載の方法。
【請求項4】
シークレットは対称暗号キーである請求項2記載の方法。
【請求項5】
カウントのインクリメントおよびワン・タイム・パスワードの再計算は予め定められた回数反復され、予め定められた回数の反復の終了したとき再計算されたてワン・タイム・パスワードが受信されたワン・タイム・パスワードと対応しない場合には、そのリクエストは認証されないものと決定される請求項2記載の方法。
【請求項6】
リソースへアクセスするためのリクエストを認証する方法において、
ユーザに関する特有のユーザ名と、ユーザに関する個人識別番号と、トークンにおいて発生されるワン・タイム・パスワードとを含んでいる認証に対するリクエストを認証サーバにおいて受信し、ワン・タイム・パスワードはトークンにおけるカウントの値と、トークンと認証サーバとの間で共有されるシークレットとに基づいており、
ユーザ名に基づいてトークンに対応するカウントの値を認証サーバにおいて検索し、
ユーザ名に基づいてトークンに対応するシークレットを認証サーバにおいて検索し、
カウントの値の検索およびトークンに対応するシークレットに基づいてワン・タイム・パスワードの値を認証サーバにおいて計算し、
その計算されたワン・タイム・パスワードを受信されたワン・タイム・パスワードと比較し、
計算されたワン・タイム・パスワードが受信されたワン・タイム・パスワードに対応している場合には、そのリクエストは認証されるべきものであると決定され,
計算されたワン・タイム・パスワードが受信されたワン・タイム・パスワードに対応していない場合には、認証サーバにおけるカウントの値をインクリメントして、そのインクリメントされたカウントおよびシークレットに基づいてワン・タイム・パスワードが再計算され、その再計算されたてワン・タイム・パスワードが受信されたワン・タイム・パスワードと比較され、
再計算されたてワン・タイム・パスワードが受信されたワン・タイム・パスワードと対応しない場合にはカウント値のインクリメントとワン・タイム・パスワードの再計算とが繰返されされ、再計算されたワン・タイム・パスワードが受信されたワン・タイム・パスワードと対応するまで繰返されるステップを含んでいる認証方法。
【請求項7】
ハッシュ関数はSHA−1である請求項6記載の方法。
【請求項8】
シークレットは対称暗号キーである請求項6記載の方法。
【請求項9】
カウントのインクリメントおよびワン・タイム・パスワードの再計算は予め定められた回数反復され、予め定められた回数の反復の終了したとき再計算されたてワン・タイム・パスワードが受信されたワン・タイム・パスワードと対応しない場合には、そのリクエストは認証されないものと決定される請求項6記載の方法。

【図1】
image rotate

【図2】
image rotate


【公表番号】特表2007−523431(P2007−523431A)
【公表日】平成19年8月16日(2007.8.16)
【国際特許分類】
【出願番号】特願2007−500913(P2007−500913)
【出願日】平成17年2月23日(2005.2.23)
【国際出願番号】PCT/US2005/005481
【国際公開番号】WO2005/083610
【国際公開日】平成17年9月9日(2005.9.9)
【出願人】(502377350)ベリサイン・インコーポレイテッド (28)
【Fターム(参考)】