"カウントとシークレットとを連結し、前記シークレットは特有にトークンに割当てられてトークンと認証サーバとの間で共有され、前記カウントはトークンにおいて発生されたワンタイムパスワードの番号を有し、トークンにおいて単調に増加し、ワンタイムパスワードの認証サーバにおける各計算により認証サーバにおいて単調に増加する数であり、前記連結されたシークレットとカウントに基づいてハッシュを計算し、そのハッシュの結果を切捨ててワンタイムパスワードを得るステップを含んでいるワンタイムパスワードの計算方法。本発明の目的は、ワンタイムパスワードを計算する方法を提供することである。シークレットはカウントと連結され、シークレットは特有にトークンに割当てられる。シークレットは私設キーであってもよく、或いは共有されたシークレット対称キーであってもよい。カウントはトークンにおいて単調に増加する数であり、トークンにおいて発生さたれたワンタイムパスワードの番号を有している。そのカウントはまた認証サーバにおいて追跡され、それにおいて認証サーバにおけるワンタイムパスワードの各計算と共に単調に増加する。OTPは連結されたシークレットとカウントとをハッシュすることによって計算されることができる。その結果は切捨てることができる。本発明の1実施形態では、ハードウエア装置においてワンタイムパスワードOTPを発生するためのプロトコルを含んでおり、それはユーザを認証するために使用される。OTPはトークンにより発生され、そのトークンは、それが含まれているソフトウエアおよび情報の許可されない変更や、開放を阻止して、その適切な機能を確保するためのメカニズムを含んでいる物理的な装置であることができる。このプロトコルの1実施形態は、シーケンスベースであることができ、2ファクタ、例えばユーザの知識個人識別番号、ユーザと認証サービス機関との間で共有されるシークレットのようなものおよびユーザが所有している例えばトークンのような特別の特性を有する物理的装置例えば私設キーまたは共有された対称キーのような特有のシークレットキーである。OTPを発生するためのプロトコルはカウンタに基づくことが可能であり、例えばOTPがトークンからリクエストされる回数に基づいた単調に増加する数である。OTPの値はトークン上に表示されることができ、例えばネットワークに結合されているコンピュータに結合されているキーボードを介してユーザにより容易に読取られ、入力されることができる。OTPはRADIUSシステムによって転送されることができる。本発明によるプロトコルの1実施形態は、増加するカウンタ値と、トークンおよび認証サービス機関強力な認証サービスに対してのみ知られている静的対称キーとに基づくことができる。OTP値はRFC2104に規定されているようなHMAC-SHA1アルゴリズムまたは任意の他の適当なハッシュアルゴリズムを使用して生成されることができる。このハッシュされたMACアルゴリズムはSHA-1の強度を有しているが、出力の計算中のシークレットの付加を許容する。HMAC-SHA1アルゴリズムによる計算の出力は160ビットである。しかしながら、この値はユーザにより容易に入力されることができるような長さに切り捨てられることができる。OTP=切捨てHMAC-SHA1カウント,シークレットクライアントおよび認証サーバの両者はOTP値を計算することができる。サーバにより受信された値がそのサーバにより計算された値と一致するならば、ユーザは認証されるべきであるとされる。サーバで認証が生じた場合には、そのサーバはカウンタ値を1だけインクリメントする。サーバのカウンタ値は成功したOTP認証後にインクリメントされることができるが、トークンにおけるカウンタはボタンが押される都度インクリメントされることができる。このため、サーバとトークンのカウンタ値はしばしば同期が外れる可能性がある。事実、ユーザ環境与えられたサーバとトークンが常に同期が外れているチャンスがある例えばユーザが必要がないのにボタンを押すとき、ボタンが偶発的に押されるとき、ユーザがOTPをミスタイプするとき等。サーバのカウンタは有効なOTPが与えられたときにのみインクリメントするため、トークンにおけるサーバのカウンタ値はトークンにおけるカウンタ値よりも常に少ないことが予測される。再同期がユーザまたは企業のIT部門のいずれかの負担とならないことが確実にされることを確認することが重要である。このようなシナリオにおけるカウンタの同期は、次のn個のOTP値をサーバが計算してnは整数、一致していることを決定することによって達成される。トークンにおけるカウントとサーバおけるカウントとの間の差が50であると仮定した場合には、強力な認証サーバの構成に応じて、そのサーバは最大で次の50のOTP値を計算しなければならない。したがって、例えば正確なOTPがn12の値にあることが発見された場合には、サーバはそのユーザを認証し、その後、カウンタを12だけインクリメントする。サーバにより容易に計算されることのできるnに対する値を注意深く選択することが重要である。サーバがOTP値を永久に検査しないことを確実にして、それにより10進サービスアタックに屈伏する上限が必要である。HMAC-SHA1値を6文字値に切捨てることによって、特に数字だけが使用されている場合にマウントに対して容易にアタックする強力な力を与える可能性がある。このため、このようなアタックは強力な認証サーバにおいて検出されて停止されることができる。サーバが妥当でないOTPを計算するたびにこれを記録して、例えば幾つかのポイントで同じソースからの確認に対して将来のリクエストを拒否して被害を受けることを阻止する手段を構成する。その代りに、ユーザは確認の試みの間の長時間の待機を強制されることができる。ユーザがロックアウトされると、そのユーザは、例えばシーケンス中の多数のOTPに入るためにユーザを必要とするウエブインターフェースを提供することによって自己ロック解除することができて、それらかトークンを有することが証明される。共有されたシークレットがカウンタと組合わされると、160ビット20バイトのHMAC-SHA1結果が得られる。1実施形態では、我々のOTPに対してこの情報の最大で4バイトである。HMACRFCRFC2104HMAC:メッセージ認証に対するキードハッシングはさらにセクション5のHMAC結果の半分以上を使用しなければならないと警告している。切捨てられた出力は:HMACのアプリケーションがHMAC計算の左側のtビットを出力することによってHMACの出力の切捨てを選択することが可能であり、...出力長tはハッシュ出力の長さの半分より小さくないことを推奨しており、...80ビットアタッカにより予測されるのに必要なビット数に付いての適当な低い限度より少なくはない。したがって、HMACまたはSHA1のいずれも弱めることのない方法でHMAC結果の4バイトまたはさらに少ないバイトだけを選択する別の方法が必要である。[ダイナミックオフセット切捨て]この技術の目的は、HMAC-SHA1結果から4バイトのダイナミック2進コードを抽出し、その一方でMACの暗号の強さの大部分を維持することである。1.最後のバイトバイト19を取り、2.オフセット値として低いオーダーの4ビットをマスクして除去し、3.オフセット値を使用してHMAC-SHA1結果のバイト中へインデックスし、4.ダイナミック2進コードとして後続する4バイトを戻す。以下のコード例は、hmacresultはHMAC-SHA1結果を有するバイトアレイを与えるダイナミック2進コードの抽出を記載したものである。以下はこの技術の使用例である。1.最後のバイトバイト19は6値0×5aを有する。2.下位の4ビットの値は0×aであるオフセット値。3.オフセット値はバイト1010×aである。4.バイト10で始まる4バイトの値は0×50ef7f19であり、それはダイナミックに2進コードである。我々は31ビットの、符号のない、ビッグエンドbigendianの整数として2進コードを処理し、その第1のバイトは0×7fでマークされる。所定のシークレットのためのOTPおよびムービングファクタは、3つのパラメータ、すなわち、エンコードベース、コードデジット、ハズチェックサムに基づいて変化することができる。エンコードベースとして10、真TRUEへセットされたコードデジットおよびバスチェックサムとして7により、上記の例を継続する。6値0×50ef7f19を1357872921ベース10に変換する。最後の7デジットは7872921である。コードデジットのクレジットカードチェックサムは7をチェックサムとして計算する。10mod10=10=103=7以下のOTP:78729217が得られる。以下はこのアプリケーションで使用される用語集である。チェックサムデジット;コードデジットに対してクレジットカードチェックサムアルゴリズムを適用した結果である。このデジットは随意である。このチェックは任意の単一の順序変更または任意の単一のミスタイプされた文字を捕捉しなければならない。コードデジット;このパラメータは2進コードから得られるデジットの数である。2進コードをエンコードベースに変換し、少なくともコードデジットである0をパッドし、右側下位デジットを採用することにより計算される。エンコードベースとして10により9を越えないコードデジットが31ビットの2進コードによりサポートされることができる。クレジットカードチェックサムアルゴリズム;このチェックサムアルゴリズムは任意の単一のミスタイプされたデジットまたは任意の単一の隣接する2つのデジットの順序変更を捕捉できる利点を有している。これらは最も普通のタイプのユーザエラーである。エンコードベース;このパラメータはパスワードに使用されるもののベースを示している。ベース10は数値パッドで入力されることができるので好ましいベースである。ハズチェックサムデジット;このブールパラメータはチェックサムデジットがOTPを生成するために付加されなければならないか否かを示す。チェックサムデジットが存在しないならば、そのコードデジットがOTPとして使用される。チェックサムデジットが存在すれば、クレジットカードチェックサムアルゴリズムへの入力としてそのコードデジットを使用してそれが計算される。OTP;ワンタイムパスワード。この値は、存在するものがあれば、コードデジットの右にチェックサムデジットを付加することにより構成される。チェックサムデジットが存在しなければ、OTPはコードデジットと同じである。ワンタイムの数値はハッシュビット中で第1のシフトを行い、その後同期ビットをシフトし、その後、前の中間値のチェック関数の結果をシフトすることにより計算される。2進値はその後、適当な文字値に変換される。パスワードの3つの類似した文字表示、すなわち10進数、6進数、アルファベットおよび数字が存在する。10進数トークンはダイナミック2進コードを10進数に変換し、それから最後のコードデジットプラス随意のチェックサムを表示することができる。例えば、チェックサムがない6デジットに対して、10進数トークンは2進コードを10進数に変換し、最後の6デジットを表示する。6進数トークンはダイナミック2進コードを6進数に変換し、それから最後のコードデジットプラス随意のチェックサムを表示することができる。例えば、チェックサムがない6デジットに対して、6進数トークンは2進コードを6進数に変換し、最後の6デジットを表示する。アルファベットおよび数字トークンはダイナミック2進コードをベース32に変換し、それから最後のコードデジットプラス随意のチェックサムを表示することができる。例えば、チェックサムがない6デジットに対して、ベース32のトークンは2進コードをベース32に変換し、最後の6デジットを表示する。PIN真の2ファクタ認証トークンのために、OTPのあなたの有しているものの値にあなたの知っているものの値を付加することができる。この値は通常静的なPINまたはユーザだけに知られているパスワードである。このセクションでは、本発明による静的PINを確認するために3つの別のアーキテクチャについて説明する。クラウド中のPIN確認クラウド中のPIN確認を可能にするために、単一のPINは単一のトークンに結合されることができる。PINは暴露されないことを確実にするためにワイヤ上で保護されなければならない。PINの管理設定、変更は強力な認証サービスによって行われなければならない。企業におけるPIN確認クラウド中のPIN確認を可能にすることは単一のトークンに対する多数のPIN確認を意味している。PINは企業のセキュリティワールドに残されてはならない。PINの管理は企業によって行われることができる。トークンにおけるPIN確認この実施形態はトークンにおけるキーパッドを使用して構成されることができる。PINは絶対にワイヤで送ってはならず、OTPアルゴリズムに対するシードとして使用されることができる。PINは単にトークンのロックを解除するために使用されることができる。[データフローの例]このセクションでは2つのデータフローのシナリオについて説明する。第1のシナリオでは、強力な認証サービスがトークンと関係するユーザ名を知らないと仮定する。このシナリオでは、PINの管理動作はそれらのユーザ名の代りにそれらのトークンSNを入力するようにユーザに要求すると仮定している。第2のシナリオは、トークンSNの代りにユーザ名が強力な認証サービス中へのキーであることを除いては第1のシナリオに非常によく類似している。この場合について幾つかの論点がある。第1に、ユーザ名はサービス機関に知られており、第2に、ユーザ名からトークンSNへの特有のマップを確実に行う方式が得られなければならない。図1は、本発明の1実施形態による認証手順を示している。それにおいて以下のことが仮定されている。トークンSNとSは強力な認証サービスへ分配され、カストマアカウントは各トークンに関連され、PINは特定のトークンに関連され、強力な認証サービスはDB中のPINのSHA-1ハッシュのみを保存し、トークンSNは企業におけるユーザアカウントに対する属性として付加され、プラグインによりユーザ名をSNへマップする。強力な認証サーバ110と、企業の認証サーバ120と、クライアント130とは、例えばネットワーク図示せずにより結合されている。図1に示されているように、クライアント130に位置するユーザは企業のサーバ120に保護されたリソースへアクセスするためのリクエストを送信する。そのサーバはリソースへのアクセスが認証を必要とするか否かを決定する。認証を必要とする場合には、そのサーバ120は認証を必要とされるのメッセージをクライアント130に送る。ユーザはユーザ名とパスワードの提示を促される。ユーザはそのユーザのトークンのボタン図示せずを押してOTPを得ることができる。OTPは上述のように、例えばトークンシークレットと、トークンに記憶されているカウントに対する現在の値の組み合わせをハッシュすることによって発生される。その後、ユーザはそのユーザ名と,トークンにより与えられたOTPに連結された個人的識別番号PINを入力する。この情報は企業のサーバ120に送られる。企業のサーバ120はユーザ名に基づいてトークンの通し番号を探して、その通し番号とPINOTPを認証サーバ110に送る。認証サーバ110は通し番号に基づいて記録を探してPINのローカルにハッシュされた値とシークレットと目的とされているカウントとを得る。これは、トークンのシークレットが特有に割当てられているトークンと認証サーバ110との間で共有されることができるために可能である。それから、認証サーバ110はトークンに対するシークレットと認証サーバに記憶されているそのトークンに対するカウントの現在値とに基づいてOTPを計算する。計算されたOTPが受信されたOTPと整合していれば、認証サーバ110におけるカウントの値が1だけインクリメントされる。そうでなければ、認証サーバは、トークンに対するカウントをインクリメントし、トークンに対するシークレットと共にそれをハッシュすることによってOTPを計算しようと再度試みる。これは、上述したように、認証サーバ110におけるカウント値がトークンにおけるカウント値とは異なっていてもよい図示せずために行われることができる。この手順は、トークンにおけるカウント値にカウント値が追いつくことが可能な合理的な回数で反復されることができる。1実施形態では、認証サーバにおけるトークンの認証を試みるそのような反復の回数は予め定められた同じ回数、例えば12回の反復後に終了される。トークンが認証サーバ110によって認証されることが成功できない場合には、認証サーバ110は認証されずのメッセージを企業のサーバ120に送る。トークンが認証されることに成功した場合には、認証サーバ110は認証されたのメッセージを企業のサーバ120に送る。認証サーバ110から得られた結果に基づいて、企業のサーバは、クライアントからのリソースをアクセスするためにリクエストされた許可をそれぞれ拒否または承認する。図2は、本発明の別の実施形態による認証手順を示している。それにおいて以下のことが仮定されている。トークンSNとSは強力な認証サービスへ分配され、カストマアカウントは各トークンに関連され、PINは特定のトークンに関連され、強力な認証サービスはDB中のPINのSHA-1ハッシュのみを保存し、ユーザ名は企業の認証サーバから強力な認証サーバへ転送される。図2の認証手順は、ユーザ名とPINOTPがクライアント130から企業のサーバ120に送られる直後までは図1と同じである。しかしながら、ユーザ名に基づいてトークン通し番号を探すのではなく、企業のサーバ120は認証リクエストユーザ名とPINOTPを含んでいるを認証サーバ110に送信する。認証サーバ110はユーザ名に基づいて記録を探してPINを認証し、その後プロセスの残りに対しては図1に示されているのと同じ手順にしたかって処理が行われる。"