(57)【要約】リプレイ攻撃の対象となるがランダム成分を含む既存の認証プロトコルの中で、プロトコルに対する修正を必要とすることなく、リプレイ攻撃を防止する暗号システムである。認証責任者は、そのランダム成分に接続された認証メッセージの一部から抽出された、以前に用いられたビット・パターンのリストを維持する。ビット・パターンが以前に見られたものである場合には、メッセージは排除される。ビット・パターンが以前に見られたことがない場合には、ビット・パターンはその記憶されたリストに追加され、メッセージは受け入れられる。
2007522739.tif 000002
【特許請求の範囲】
【請求項１】
データ通信における通信者が同じシステムにおける別の通信者によって生成されたメッセージの原本性を確認する方法であって、
前記メッセージから、前記メッセージの真正性を検証する目的で前記メッセージの中に組み込まれたランダム・データを表すビット・パターンを抽出するステップと、
前記ビット・パターンを先に抽出されたビット・パターンと比較するステップと、
前記ビット・パターンが先に抽出されていた場合には前記メッセージを排除するステップと、
を含むことを特徴とする方法。
【請求項２】
請求項１記載の方法において、前記ビット・パターンは前記通信者のデータベースに維持されることを特徴とする方法。
【請求項３】
請求項２記載の方法において、前記データベースは前記別の通信者によって先に取得されたビット・パターンとの比較を行うように編成されることを特徴とする方法。
【請求項４】
請求項１ないし３のいずれかの請求項に記載の方法において、前記ランダム・データは短期公開鍵から導かれることを特徴とする方法。
【請求項５】
請求項４記載の方法において、前記メッセージは前記当事者と前記情報上の署名との間で交換される情報を含み、前記ランダム・データは前記署名の一部であることを特徴とする方法。
【請求項６】
請求項５記載の方法において、前記署名はＥＣＤＳＡに従って実行されることを特徴とする方法。
【請求項７】
請求項５記載の方法において、前記署名はＲＳＡ署名として実行されることを特徴とする方法。
【請求項８】
請求項５記載の方法において、前記ランダム・データは前記情報上の署名を検証するために用いられることを特徴とする方法。
【請求項９】
請求項８記載の方法において、前記検証は前記ビット・パターンの比較によって前記メッセージの原本性を確立する前に実行されることを特徴とする方法。
【請求項１０】
請求項１ないし９のいずれかの請求項に記載の方法において、前記抽出されたビット・パターンは、先に抽出されたことがないと比較によって示される場合には、前記データベースに追加されることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号システムと暗号システムにおけるプロトコルとに関する。
【背景技術】
【０００２】
データ通信システムにおける１対の通信者の間で転送されたメッセージの機密性又は真正性を保証するためには、そのメッセージを保証する１又は複数の暗号プロトコルを用いるのが通常である。そのようなプロトコルは、プロトコルを破ることを試みる侵入者によってなされる様々な攻撃に耐えることができなければならない。そのような攻撃の１つにリプレイ攻撃がある。「リプレイ攻撃」は、メッセージを記録しプロトコルを後で再生することにより、先行する伝送によって実行された動作を複製して、暗号化において用いられる通信者の秘密情報や鍵に関する情報を取得しようとする。
【０００３】
このような攻撃には、ナンス（nonces）を用いるなどプロトコルに複雑性を追加するという対価を支払うことにより、対抗することが可能である。しかし、多くの場合、特にレガシ演算（legacy operations）では、プロトコルにナンスを追加すると、プロトコルとメッセージのデータ構造との少なくとも一方に対する著しい変更が必要となり、これは、レガシ・システムでは多くの場合に受け入れられない。このような変更は、認証トークンの大きく展開された基礎を有するレガシ・システムにおいて特に問題を生じる。というのは、そのようなシステムでは、上述したような変更はトークンの修正及び再展開を必要とするからである。確立された基礎への変更を必要としないでリプレイ攻撃を防止できる方法が必要とされている。
【０００４】
従って、本発明の目的は、上述の問題点を除去する又は軽減することである。
一般的な用語では、本発明は、メッセージに署名する間に生成され署名の検証に用いるための識別可能なランダム成分の存在を利用してメッセージの原本性を検証しプロトコルにおけるリプレイ攻撃を禁止する。
【発明の開示】
【０００５】
本発明の１つの側面では、署名方式を適用するのであるが、その場合、署名は、ランダム成分、すなわち署名が計算されるごとにランダムに生成されたビット・ストリームから導かれた成分を含む。このプロトコルに従うには、署名は、ランダム成分を含まなければならない。この成分の一部は、リプレイ攻撃を禁止するのに用いることができるビット・パターンを提供する。
【０００６】
認証を担当する者は、送信側の通信者によって先に用いられ、ランダム成分に接続された署名されたメッセージの一部から抽出されたビット・パターンのリストを維持する。ビット・パターンが前に見られたものである場合には、そのメッセージは原本であるとは見なされず、排除される。すなわち、既に受信されたことがあるものである。ビット・パターンがこれまで見られたことがなく、署名が認証されれば、ビット・パターンは、記憶されたリストに追加され、メッセージは受け入れられる。
【０００７】
本発明の好適実施例の以上の及びそれ以外の特徴は、添付の図面を参照して以下の詳細な説明を読むことによって、より明らかになるはずである。
【発明を実施するための最良の形態】
【０００８】
従って、図１を参照すると、全体として参照番号１０によって示されているデータ通信システムは、データ通信リンク１６によって相互接続された１対の通信者１２、１４を含む。通信者１２、１４は、それぞれが、プログラムされた命令セットを実現する計算装置１８と、計算装置１８と通信リンク１６との間をインターフェースする暗号化モジュール２０とを含む。
【０００９】
理解されるように、通信者１２、１４は汎用コンピュータであるか、又は、ポイント・オブ・セールズ（ＰＯＳ）装置、ＰＤＡ、金融機関との間でリンク１６を介してインターフェースを有する携帯電話など、クライアント・サーバ関係にある専用の機器である。
【００１０】
動作においては、計算装置１８は、暗号化ユニット２０によって処理され通信リンク１６を介してデータ・ストリーム２６として送信されるメッセージを用意する。通信者１４における暗号化ユニット２０は、データ・ストリームを処理して受け取ったメッセージを計算装置１８に送る前に回復し認証する。
【００１１】
通信者１４は、プロセッサ２０によって受け取られた署名の選択された部分のビット・パターンのリスト２４を含むデータベース２２を含んでいる。データベース２２は計算装置１８からアクセスが可能であり、リスト２４は、受け取られたメッセージの中のビット・パターンとデータベースに含まれているビット・パターンとの間で特定の通信を介した側の通信者に関する比較を実行するのに便利なように編成されている。
【００１２】
暗号化ユニット２０は、鍵生成、暗号化／復号化、署名及び検証など、複数の異なるプロトコルを実現することができる。好適実施例を説明すると、通信者１２は計算装置１８において情報パッケージを用意し、これが暗号化装置２０によって署名される。通信者１４において受信されると、暗号化プロセッサデータ取得モジュール２０が署名を検証して、情報を計算装置１８に送る。
【００１３】
動作においては、通信者１２は、計算装置１８において情報Ｉを生成し、それを暗号化プロセッサ２０に送る。プロセッサ２０は、ランダム成分ｒを生成するプロトコルを用いて、情報Ｉに署名する。情報Ｉを表すビットとランダム成分を含む署名成分とが、署名されたメッセージ２８を表すデータ・ストリーム２６に組み合わされる。
【００１４】
署名されたメッセージ２８は、リンク１６を介してデータ・ストリームとして送信され、通信者１４における暗号化ユニット２０によって受信される。署名は、通常の態様で署名方式に従って検証される。検証が認証されれば、ランダム成分ｒに対応する署名されたメッセージの部分が見つかる。次に、その部分を表すビット・ストリームが、データベースパターン分析モジュール２２に含まれているビット・ストリームと比較され、同一のランダム成分が先に署名されたメッセージにおいて用いられていないことが確認される。ビット・ストリームが先に用いられていない場合には、すなわち、データベースにおいて一致が見つからない場合には、署名は、以前に受信されたことがないという意味で原本性を有する（オリジナルな）メッセージであると考えられ、受け入れられる。一致が見つかった場合には、その署名されたメッセージは受け入れられない。
【００１５】
以下では、上述した技術を実装するのに用いることができる確立された署名プロトコルの例を、ＥＣＤＳＡ署名プロトコルを用いている図４を参照して説明する。
情報Ｉは、次数ｎの生成点Ｐを含む既知のパラメータを用いて、楕円曲線暗号システム（ＥＣＣ）における通信者１２の長期秘密鍵ｄによって署名される。
【００１６】
通信者１２は、短期（ephemeral）秘密鍵ｋをランダムに生成して、座標（ｘ，ｙ）を有する点を表す対応する短期公開鍵ｋＰを計算する。
署名の第１の成分ｒを計算するため、短期公開鍵ｋＰの第１の座標は整数に変換される。第１の成分自体、ランダムな秘密鍵ｋから決定されているので、ランダムである。
【００１７】
署名の第２の成分ｓは、署名の第２の成分ｓに関する署名方程式ｋｓ＝Ｈ（Ｉ）＋ｄｒ（ｍｏｄｎ）を解くことにより生成される。ここで、Ｈは、ＳＨＡ１などの適切な暗号ハッシュ関数である。
【００１８】
情報と署名とは、所定の位置に（Ｉ，ｒ，ｓ）を含むデータ・ストリーム２６として組み立てられ、リンク１６を介して署名されたメッセージとして送信される。
署名されたメッセージ２８が通信者１４において受信されると、暗号プロセッサ２０が、署名を認証する。この認証は、通常、次のように進行する。
【００１９】
最初に、短期公開鍵ｋＰが、ｓ−１（Ｈ（Ｉ）Ｐ＋ｒＡ）を計算することによって計算される。ただし、ここで、Ａは通信者１２の長期公開鍵である。
ｋＰが回復された後で、ｋＰの第１の座標が、通信者１２によって用いられたのと同じ手順を用いて整数に変換される。このようにして得られた整数は、送信されたものに含まれる数ｒに対応するはずであり、もしそうであれば、この署名は受け入れられる。そうでない場合には、署名は検証されたことにはならず、排除される。
【００２０】
リプレイ攻撃を禁止するには、数ｒの部分集合ｆ（ｒ）が、署名されたメッセージ２８から抽出又は導かれる。部分集合ｆ（ｒ）は、通信者１２のためのデータベース２２の中の部分集合の中に既に記憶されているリスト２４と比較される。データベース２２は、比較が便利であるように通信者によって編成されている。効率的にビット・ストリームを抽出し比較するのには、広く知られたマスキング及びシフティングの技術を用いることができる。リプレイ攻撃だけが関心対象である場合には、同一の通信者から受信された部分集合を比較すれば十分であるが、より厳密なセキュリティを問題にするのであれば、以前の部分集合すべてを比較することもできる。
【００２１】
この部分集合ｆ（ｒ）がリストの中にあり既に使用されたものであることが示される場合には、認証は否定される。部分集合がリスト２４の中にない場合には、このプロセスは継続され、部分集合ｆ（ｒ）は、後続の検索を効果的にすることが可能であるようにデータを記憶する広く知られた記憶及び検索技術を用いて、データベース２２に追加される。
【００２２】
理解されるように、署名の検証は、好ましくは部分集合の比較の後で実行される。更に注意すべきことは、潜在的なリプレイを検出するのに用いられる部分集合は署名の検証に用いられる署名成分ｒの一部であり、それは署名されたメッセージの中に既に含まれているということである。従って、帯域幅もプロトコルも、追加的な認証によって影響を受けないし、冗長性が回避される。
【００２３】
ランダム成分から選択されたビット数は、その応用例に要求されるセキュリティのレベルと利用可能な記憶装置とに依存する。ランダム成分から選択されたビット数は、バースデイ・サプライズ（Birthday Surprise）に対する保証を与えるのに十分であるほどに大きくなければならない。ここで、イベントの予想される数は、一致が漸近的に（２ｍ）１／２πとして計算される前に生じる。なお、この場合、（ｍ＋１）ビットが記憶される。例えば、４０ビットを記憶する場合には、１３０万の署名よりも少ない一致が予想されることはない。６０ビットを記憶する場合には、１３億の署名よりも少ない一致が予測されることはない。
【００２４】
図５に示されている第２の好適実施例では、署名方式は、ＰＫＣＳ＃１のＶｅｒ．２．１において特定されているアペンディクスＲＰＳ−ＰＳＳを含むＲＳＡによる広く知られた整数因数分解方式である。
【００２５】
情報Ｉは、以下のように符号化される。
ｉ）情報Ｉはハッシュされ、ハッシュはパディング・バイト（padding bytes）をプリペンド（prepend）し、ランダム・バイトを加える（append）ことによってブラケットされ、その結果、ブラケットされたハッシュＥが生じる。
【００２６】
ｉｉ）ブラケットされたハッシュＥは更にハッシュされ、その結果、ビット・ストリングＨが生じる。
ｉｉｉ）ビット・ストリングＨはマスク生成関数で用いられ、この関数の出力は情報Ｉのハッシュに加えられたランダム・バイトをマスクするのに用いられる。
【００２７】
ｉｖ）符号化されたメッセージは、ステップ（ｉｉｉ）からのマスクされた出力と、ステップ（ｉｉ）からの更なるハッシュすなわちビット・ストリングＨと、パディング・バイトとの結合（concatenation）を含むように組み立てられる（アセンブルされる）。
【００２８】
次に、符号化されたメッセージは、数に変換される。ＲＳＡ演算が、通信者１２の秘密指数（private exponent）を用いてその数に対して実行される。その結果は、情報Ｉに対する署名ｓとして用いられるビット・ストリングｓに変換される。
【００２９】
次に、署名を有するメッセージである（Ｉ，ｓ）は、リンク１６を介して、データ・ストリーム２８として、通信者１４に送信される。
データ・ストリーム（Ｉ，ｓ）が通信者１４に受信されると、署名ｓは数に変換される。
【００３０】
次に、ＲＳＡ演算が、通信者１２の公開指数を用いて、この数に対して実行され、結果として、ブラケットされたハッシュＥと称される別の数が生じる。
このブラケットされたハッシュＥと称されるものは、ハッシュされ、マスクされた出力と称されるものと、元のメッセージのハッシュと称されるものとに分解される。
【００３１】
マスクされた出力と称するものとハッシュと称されるものとを用いて、ランダム・バイトと称されるものが抽出される。
適切なパディングと、ブラケットされたハッシュと称されるもののハッシュと、ランダム・バイトと称されるものとの結合がハッシュされ、元のメッセージのハッシュと称されるものと比較される。これら２つが一致するならば、署名は検証されたと考えられ、受け入れられる。
【００３２】
検証の前又は後のリプレイ攻撃を禁止するために、数ｓの部分集合ｆ（ｓ）が抽出される。ただし、ｆは所定の関数である。部分集合ｆ（ｓ）は、加えられたランダム・バイトに対応する署名ｓの一部から選択され、データベース２２の中にある通信者１２のための部分集合の先に記憶されているリスト２４と比較される。
【００３３】
この部分集合がリストの中にある場合には、認証は否定される。リストの中にない場合には、署名は受け入れられ、この部分集合はリストに追加される。従って、リプレイ攻撃は、ランダムであり署名認証においてプロトコルによって用いられる署名成分の一部を利用することによって再び禁止される。
【００３４】
上述の例は、署名認証のコンテキストにおいて説明されているが、ランダムなビット・パターンが生成される他のプロトコルにおいても用いることができる。例えば、ＭＱＶプロトコルは、署名プロトコルだけでなく鍵一致プロトコルとしても用いることができる。
【００３５】
鍵一致プロトコルでは、それぞれの通信者の短期公開鍵が交換され、メッセージの一部を形成する。短期公開鍵はランダムであり、それぞれの当事者を認証するのに用いられる。従って、鍵を表すデータの部分集合が、抽出され、既存のデータベースと比較されて、交換されたメッセージの原本性が検証される。
【００３６】
理解されるように、上述の例ではデータベース２２は通信者１４と関連付けられているように示されているが、同様のデータベースを、このような攻撃からの保護が要求されるシステムのそれぞれの通信者と関連付けることもできる。
【図面の簡単な説明】
【００３７】
【図１】データ通信システムの概略的表現である。
【図２】署名されたメッセージを表すデータ・ストリームの概略的な表現である。
【図３】図１に示されたシステムにおける情報の流れの概略的な表現である。
【図４】ＥＣＤＳＡ署名プロトコルを用いた実装例の詳細な表現である。
【図５】図４に類似しており、ＲＳＡ署名方式に適用された表現である。
【図１】
2007522739.tif 000003
【図２】
2007522739.tif 000004
【図３】
2007522739.tif 000005
【図４】
2007522739.tif 000006
【図５】
2007522739.tif 000007
【国際調査報告】
2007522739.tif 000008
2007522739.tif 000009