(57)【要約】  デバイスは、入力データを暗号化して、入力データおよび関連データの完全性を保護するように構成される。暗号化プロセッサは、入力データに基づいて完全性値を計算するように構成された第１のハッシュユニット３１１と、完全性値および関連データに基づいて初期化ベクトルを計算するように構成された第２のハッシュユニット３１０とを有する。これらのハッシュユニットのうちの少なくとも１つは鍵付きハッシュユニットであってもよい。暗号化ユニット３１５は、初期化ベクトルおよび暗号化鍵ｋ２を使用して入力データを暗号化することで暗号化されたデータを生成するように構成される。実質的に、初期化ベクトルは完全性値とは異なる。初期化ベクトルは完全性値および関連データの両方に依存するため、これらに変更が加えられると復号が失敗し、元の平文Ｐとは大きく異なるデータに復号される。
2021528899.tif 000002
【特許請求の範囲】
【請求項１】
入力データを暗号化して、前記入力データおよび関連データの完全性を保護するための暗号化方法であって、
前記暗号化方法は、
第１のハッシュ関数を使用して前記入力データに基づいて完全性値を計算するステップと、
第２のハッシュ関数を使用して前記完全性値および前記関連データに基づいて初期化ベクトルを計算するステップであって、前記初期化ベクトルは前記完全性値とは異なる、ステップと、
前記初期化ベクトルおよび暗号化鍵を使用して前記入力データを暗号化することで暗号化されたデータを生成するステップと、
前記暗号化されたデータと、前記完全性値に基づくメッセージ完全性値とを含む出力用暗号化されたメッセージを生成するステップとを含む、暗号化方法。
【請求項２】
前記完全性値を計算するための前記第１のハッシュ関数は、第１の完全性鍵を使用する第１の鍵付きハッシュ関数である、請求項１に記載の暗号化方法。
【請求項３】
前記初期化ベクトルを計算するための前記第２のハッシュ関数は、第２の完全性鍵を使用する第２の鍵付きハッシュ関数である、請求項１または２に記載の暗号化方法。
【請求項４】
前記出力用暗号化されたメッセージを生成するステップは、派生鍵を使用して前記完全性値を暗号化することによって前記メッセージ完全性値を生成するステップを含み、前記派生鍵は、第３のハッシュ関数を使用して前記暗号化されたデータに基づいて生成される、請求項１、２、または３に記載の暗号化方法。
【請求項５】
前記派生鍵を生成するための前記第３のハッシュ関数は、第３の完全性鍵を使用する第３の鍵付きハッシュ関数である、請求項４に記載の暗号化方法。
【請求項６】
前記第１のハッシュ関数、前記第２のハッシュ関数、および／または前記第３のハッシュ関数は、署名鍵に基づきデジタル署名を計算するステップを含む、請求項１から５のいずれか一項に記載の暗号化方法。
【請求項７】
前記暗号化鍵、ならびに前記第１、第２、および第３の完全性鍵のうちの少なくとも１つの完全性鍵は秘密マスターキーから導出される、請求項２から６のいずれか一項に記載の暗号化方法。
【請求項８】
前記方法は、前記入力データの量を決定するステップと、前記量が所定の閾値を下回ると決定された場合、前記入力データにパディングデータを追加するステップとを含む、請求項１から７のいずれか一項に記載の暗号化方法。
【請求項９】
前記所定の閾値は前記暗号化鍵の長さであり、前記パディングデータはランダムデータを含む、請求項８に記載の暗号化方法。
【請求項１０】
前記出力用暗号化されたメッセージは前記初期化ベクトルを含まない、請求項１から９のいずれか一項に記載の暗号化方法。
【請求項１１】
暗号化されたデータを復号し、前記データおよび関連データの完全性を判定するための復号方法であって、前記復号方法は、前記暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む暗号化されたメッセージを取得するステップと、
第２のハッシュ関数を使用して前記完全性値および前記関連データに基づいて初期化ベクトルを計算するステップであって、前記初期化ベクトルは前記完全性値とは異なる、ステップと、
前記初期化ベクトルおよび復号鍵を使用して前記暗号化されたデータを復号することで平文を生成するステップと、
第１のハッシュ関数を使用して前記平文に基づいてテスト完全性値を計算するステップと、
前記テスト完全性値を前記完全性値と比較することで前記完全性を判定するステップとを含む、復号方法。
【請求項１２】
前記テスト完全性値を計算するための前記第１のハッシュ関数は、第１の完全性鍵を使用する第１の鍵付きハッシュ関数である、請求項１１に記載の復号方法。
【請求項１３】
前記初期化ベクトルを計算するための前記第２のハッシュ関数は、第２の完全性鍵を使用する第２の鍵付きハッシュ関数である、請求項１１または１２に記載の復号方法。
【請求項１４】
前記暗号化されたメッセージを受け取るステップは、派生鍵を使用して前記メッセージ完全性値を復号することによって前記完全性値を生成するステップを含み、前記派生鍵は、第３のハッシュ関数を使用して前記暗号化されたデータに基づいて生成される、請求項１１、１２、または１３に記載の復号方法。
【請求項１５】
前記出力用メッセージを生成するための前記第３のハッシュ関数は、第３の完全性鍵を使用する第３の鍵付きハッシュ関数である、請求項１４に記載の復号方法。
【請求項１６】
入力データを暗号化して、前記入力データおよび関連データの完全性を保護するための暗号化デバイスであって、前記デバイスは、暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む出力用暗号化されたメッセージを提供する出力ユニットと、暗号化プロセッサとを備え、前記暗号化プロセッサは、
前記入力データに基づいて完全性値を計算する第１のハッシュユニットと、
前記完全性値および前記関連データに基づいて初期化ベクトルを計算する第２のハッシュユニットであって、前記初期化ベクトルは前記完全性値とは異なる、第２のハッシュユニットと、
前記初期化ベクトルおよび暗号化鍵を使用して前記入力データを暗号化することで暗号化されたデータを生成するための暗号化ユニットとを備える、暗号化デバイス。
【請求項１７】
前記完全性値を計算するための前記第１のハッシュユニットは第１の完全性鍵を使用する第１の鍵付きハッシュユニットであり、および／または、前記初期化ベクトルを計算するための第２のハッシュユニットは第２の完全性鍵を使用する第２の鍵付きハッシュユニットである、請求項１６に記載の暗号化デバイス。
【請求項１８】
暗号化されたデータを復号し、前記データおよび関連データの完全性を判定するための復号デバイスであって、前記デバイスは、前記暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む暗号化されたメッセージを取得するための入力ユニットと、
復号プロセッサとを備え、前記復号プロセッサは、
前記完全性値および前記関連データに基づいて初期化ベクトルを計算する第２のハッシュユニットであって、前記初期化ベクトルは前記完全性値とは異なる、第２のハッシュユニットと、
前記初期化ベクトルおよび復号鍵を使用して前記暗号化されたデータを復号することで平文を生成するための復号ユニットと、
前記平文に基づいてテスト完全性値を計算する第１のハッシュユニットと、
前記テスト完全性値を前記完全性値と比較することで前記完全性を判定するコンパレータとを備える、復号デバイス。
【請求項１９】
前記完全性値を計算するための前記第１のハッシュユニットは第１の完全性鍵を使用する第１の鍵付きハッシュユニットであり、および／または、前記初期化ベクトルを計算するための第２のハッシュユニットは第２の完全性鍵を使用する第２の鍵付きハッシュユニットである、請求項１８に記載の復号デバイス。
【請求項２０】
ネットワークからダウンロード可能な、および／もしくはコンピュータ可読媒体並びに／またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラムであって、前記コンピュータプログラムは、コンピュータ上で実行されたとき、請求項１から１５のいずれか一項に記載の方法を実施するためのプログラムコード命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化されるべきではない関連データ（ａｓｓｏｃｉａｔｅｄ  ｄａｔａ）を備えたデータの暗号化および復号に関する。
【０００２】
本発明はデータ通信および保存の分野に関し、より具体的には、データを暗号化し、データおよび関連データの完全性を保護し、対応した復号を行うためのデバイスおよび方法、ならびに対応するコンピュータプログラム製品を提供する。
【背景技術】
【０００３】
デバイスが通信またはデータ保存を保護する必要がある場合、通常、デバイスは通信を暗号化する。そのためには、データを秘密に保つことができる暗号化アルゴリズムが重要である。復号鍵を持っている者のみが暗号化されたデータの平文を復号によって取得することができる。しかし、機密性やプライバシーだけでなく、メッセージの完全性も重要である。暗号化されたメッセージは、暗号文記号を変更、削除、または追加することにより、攻撃者によって変更される可能性がある。変更された暗号文は復号後に意味不明になる可能性があるが、巧妙な攻撃者は暗号の知識といくつかの暗号化されたサンプルを利用してデータの操作に成功し得る。例えば、ある銀行から別の銀行に宛てられた、特定の金額を攻撃者の口座に送金する指示が含まれているメッセージの暗号化されたバージョンを攻撃者が持っており、かつ、攻撃者が暗号文記号ｎ〜ｍに自分の口座番号が含まれていることを知っている場合、攻撃者は、いくらかの金額が他の誰かの銀行口座に送金される旨を含む別の同様のメッセージを捕捉し、そのメッセージの暗号文記号ｎ〜ｍを攻撃者の口座番号の暗号文記号で置き換えるおそれがある。その場合、復号によって正しく見える送金指示が生成され得る。実際には、復号鍵を知らずに暗号文を変更して、復号後に意味のあるメッセージを生成することははるかに困難であるが、実行することは可能である。
【０００４】
上記のような攻撃を考慮して、完全性保護が暗号化に追加される。例えば、暗号化の前に平文データに関してメッセージ認証コード（ＭＡＣ）を計算して、得られたＭＡＣも暗号化するか、または、暗号化後に暗号文に関してＭＡＣを計算し、得られたＭＡＣをメッセージに加えてもよい。メッセージ認証コードは、メッセージを認証するために使用される短い情報である。言い換えれば、メッセージが表示されている送信者から送られたものであり、変更されていないことを確認するためのものである。ＭＡＣアルゴリズムは、メッセージの１ビットだけが変更された場合、ＭＡＣのビットの多く、好ましくは約半分が変化するように設計される。ＭＡＣを作成するには秘密鍵が必要である。メッセージの受信者がＭＡＣ、ＭＡＣ鍵、および復号鍵を有する場合、メッセージが改ざんされていないこと、メッセージがＭＡＣ鍵を知っている者によって送信されたことを確認し、メッセージを復号することができる。よく知られているＭＡＣアルゴリズムの種類として、ＨＭＡＣ−ＳＨＡ２５６、ＨＭＡＣ−ＳＨＡ３８４、ＨＭＡＣ−ＳＨＡ５１２などの鍵付きハッシュメッセージ認証コード（ＨＭＡＣ）アルゴリズムが挙げられる（［ＲＦＣ６２３４］を参照されたい）。
【０００５】
暗号化と完全性保護とを組み合わせた暗号も存在する。一例としてＡＥＳ−ＳＩＶ（Ｓｙｎｔｈｅｔｉｃ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｖｅｃｔｏｒ（ＳＩＶ）  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｕｓｉｎｇ  ｔｈｅ  Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）（［ＲＦＣ  ５２９７］参照））が挙げられる。ＡＥＳ−ＳＩＶに使用される鍵のビットの半分は暗号化／復号に使用され、残りの半分は認証および完全性保護に使用される。すなわち、例えば２５６ビットのカギがＡＥＳ−ＳＩＶに使用される場合、１２８ビットＡＥＳ暗号化がＡＥＳ−ＳＩＶによって実行される。また、ＡＥＳ−ＳＩＶの関連データ（ＡＤ）の真正性と完全性が確認され得る。つまり、暗号化の前に２セットのデータがＡＥＳ−ＳＩＶに入力され得る。一方は暗号化する必要のあるデータであり、もう一方は暗号化されない関連データである。ただし、どちらについてもＡＥＳ−ＳＩＶ復号および完全性チェックによって真正性および完全性を証明することができる。これが可能であることをサポートする暗号はＡｕｔｈｅｎｔｉｃａｔｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅｓ  ｗｉｔｈ  Ａｓｓｏｃｉａｔｅｄ  Ｄａｔａ（ＡＥＡＤ）と呼ばれることがある。
【０００６】
暗号化されたデータおよび関連データの受信者は復号のために両方をＡＥＳ−ＳＩＶに入力する必要がある。ＡＥＳ−ＳＩＶは暗号文を復号した後、復号された暗号文と関連データとを完全性チェックに入力して完全性および真正性を確認する。このチェックが失敗した場合、復号された暗号文は破棄されなければならない。暗号化されたデータまたはＡＤのビットのうちの少なくとも１つが送信者と受信者の間で変更された場合、このチェックは失敗する。
【０００７】
例えば、暗号化されたデータのビットのうちの少なくとも１つが変更されると真正性／完全性チェックが失敗する。この場合、復号された暗号文は、送信者が保護したかった平文とは異なる。関連データのビットのうちの少なくとも１つを変更しても、やはり真正性／完全性チェックは失敗する。
【発明の概要】
【０００８】
上記のＡＥＡＤ暗号では、暗号化されたデータが変更されないままＡＤの一部が変更された場合、復号された暗号文は送信者が保護したかった平文と同一である。ＡＥＳ−ＳＩＶの仕様では復号された結果を破棄することが要求されているが、アプリケーションが何らかの理由でそれを実行できず、元の平文と同一である復号されたデータを構わずに使用する可能性がある。平文とは暗号化されていないデータまたは情報、すなわち暗号化アルゴリズムへの暗号化のための入力または復号からの出力を指し、暗号文とは暗号化されたデータまたは情報、すなわち暗号化からの暗号化アルゴリズムの出力または復号のための入力を指す。
【０００９】
本発明の目的は、入力データを暗号化し、入力データおよび関連データの完全性を保護するための方法およびデバイスを提供することであり、これにより、関連データが操作された場合に復号後に元の平文が入手可能となることを防ぐことができる。
【００１０】
この目的のために、添付の特許請求の範囲に記載されるデバイスおよび方法が提供される。本発明の一態様によれば、請求項１に記載の暗号化方法が提供される。本発明の他の態様によれば、請求項１１に記載の復号方法が提供される。本発明の他の態様によれば、請求項１６に記載の暗号化デバイスが提供される。本発明の他の態様によれば、請求項１８に記載の復号デバイスが提供される。本発明の他の態様によれば、ネットワークからダウンロード可能な、および／またはコンピュータ可読媒体および／またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラム製品であって、前記コンピュータプログラム製品は、コンピュータ上で実行されたとき、上記方法を実施するためのプログラムコード命令を含む、コンピュータプログラム製品が提供される。
【００１１】
入力データを暗号化して、入力データおよび関連データの完全性を保護するための暗号化／復号方法およびデバイスの特徴は以下の効果を奏する。
【００１２】
暗号化プロセスは、第１のハッシュ関数を使用して入力データに基づいて完全性値を計算するステップを含む。したがって、第１のハッシュ関数により、完全性値は平文データに結び付けられ、平文の操作後に同じ完全性値を実現することはできない。また、プロセスは、第２のハッシュ関数を使用して完全性値および関連データに基づいて初期化ベクトルを計算するステップを含む。したがって、第２のハッシュ関数により、初期化ベクトルは関連データに結び付けられ、関連データまたは完全性値の操作後に同じベクトルを実現することはできない。実質的に、初期化ベクトルは完全性値とは異なる。また、暗号化プロセスは、初期化ベクトルおよび暗号化鍵を使用して入力データを暗号化することで暗号化されたデータを生成するステップを含む。さらに、暗号化プロセスは、暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む出力用暗号化されたメッセージを生成するステップを含む。
【００１３】
復号プロセスは、暗号化されたデータ、および完全性値に基づくメッセージ完全性値を含む暗号化されたメッセージを取得するステップを含む。また、復号プロセスは、第２のハッシュ関数を使用して、メッセージ完全性値から導出された完全性値および関連データに基づいて初期化ベクトルを計算するステップを含む。この第２のハッシュ関数は暗号化中に使用された第２のハッシュ関数と等しいため、初期化ベクトルはメッセージ完全性値および完全性値とは異なる。また、復号プロセスは、初期化ベクトルおよび復号鍵を使用して、暗号化されたデータを復号することで平文を生成するステップを含み、復号鍵は秘密であり、暗号化中に使用された暗号化鍵と等しい。あるいは、非対称暗号化が適用される場合、暗号化鍵と復号鍵は協働する一対の鍵（例えば、公開鍵と秘密鍵）を構成する。また、復号プロセスは、第１のハッシュ関数を使用して平文に基づいてテスト完全性値を計算するステップを含む。この第１のハッシュ関数は暗号化中に使用された第１のハッシュ関数と等しいため、テスト完全性値は、暗号化されたメッセージを介して伝送された、暗号化中に計算された完全性値と等しくなるはずである。また、復号プロセスは、テスト完全性値を完全性値と比較することによって完全性を判定するステップを含む。
【００１４】
メッセージ完全性値は完全性値と等しくてもよく、または、例えば秘密鍵を使用した暗号化によってさらに保護されてもよい。有利なことに、悪意を持った者が関連データを操作した場合、伝送された暗号化されたデータを復号しても元の平文にはならない。なぜなら、復号側の第２のハッシュ関数を使用して受信された関連データに基づいて初期化ベクトルが計算されるため、初期化ベクトルが異なるからである。
【００１５】
一実施形態では、完全性値を計算するための第１のハッシュ関数は、第１の完全性鍵を使用する第１の鍵付きハッシュ関数である。有利なことに、悪意を持った者は秘密である第１の完全性鍵を知らないため、完全性値の保護が強化される。また、目的（例えば、暗号化目的や完全性保護目的）に応じて異なる鍵を使用することが好ましい。
【００１６】
一実施形態では、初期化ベクトルを計算するための第２のハッシュ関数は、第２の完全性鍵を使用する第２の鍵付きハッシュ関数である。有利なことに、悪意を持った者は秘密である第２の完全性鍵を知らないため、初期化ベクトルの保護が強化される。
【００１７】
一実施形態では、出力用メッセージを生成するステップは、派生鍵を使用して完全性値を暗号化することによってメッセージ完全性値を生成するステップを含み、派生鍵は、第３のハッシュ関数を使用して暗号化されたデータに基づいて生成される。有利なことに、伝送されるメッセージは完全性値の暗号化されたバージョンを含むことになるので、完全性値の保護が強化される。さらに、暗号化されたデータを入力として有する第３のハッシュ関数のため、悪意を持った者は派生鍵を操作することができる。暗号化されたデータの１ビットの変更は、復号プロセスにおいて大きく異なる派生鍵をもたらし、したがって、完全性値および初期化ベクトルが大きく異なるものになる。よって復号は完全に失敗し、すなわち、完全性テストの失敗に加えて、復号されたデータは、送信者によって暗号化された平文とは大きく異なるものになる。オプションで、派生鍵を生成するための第３のハッシュ関数は、第３の完全性鍵を使用する第３の鍵付きハッシュ関数である。これにより完全性値の保護をさらに向上させることができる。
【００１８】
本発明に係る方法は、コンピュータ実装方法としてコンピュータ上に、専用ハードウェアに、またはこれらの組み合わせとして実装されてもよい。本発明に係る方法のための実行可能コードは、コンピュータプログラム製品に保存されてもよい。コンピュータプログラム製品の例は、メモリスティック等のメモリデバイス、光ディスク等の光記憶デバイス、集積回路、サーバ、オンラインソフトウェアなどを含む。コンピュータプログラム製品は、プログラム製品がコンピュータ上で実行されるとき、本発明に係る方法を実行するためのコンピュータ可読媒体上に保存された非一時的プログラムコード手段を含み得る。一実施形態では、コンピュータプログラムは、該コンピュータプログラムがコンピュータ上で実行されるとき、本発明に係る方法のすべてのステップまたはステージを実行するように構成されたコンピュータプログラムコード手段を含む。好ましくは、コンピュータプログラムはコンピュータ可読媒体上に具現化される。ネットワークからダウンロード可能な、および／またはコンピュータ可読媒体および／またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラム製品であって、コンピュータプログラム製品は、コンピュータ上で実行されたとき、上記方法を実施するためのプログラムコード命令を含む、コンピュータプログラム製品が提供される。
【００１９】
本発明の別の態様は、コンピュータプログラムをダウンロード可能にする方法を提供する。この態様は、コンピュータプログラムが例えばアップルのＡｐｐ  Ｓｔｏｒｅ、ＧｏｏｇｌｅのＰｌａｙ  Ｓｔｏｒｅ、またはＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ  Ｓｔｏｒｅなどにアップロードされており、そのようなストアからコンピュータプログラムをダウンロード可能な場合に使用される。
【００２０】
本発明に係るデバイスおよび方法の他の好ましい実施形態が添付の特許請求の範囲に提示されており、その開示は参照により本明細書に援用される。
【図面の簡単な説明】
【００２１】
本発明の上記および他の態様は、以下の図面を参照しながら例として後述される実施形態に関連してさらに説明され、明らかになるであろう。
【００２２】
【図１】図１は、データを暗号化および復号し、入力データおよび関連データの完全性を保護するためのデバイスを示す。
【図２】図２は、ＡＥＳ−ＳＩＶ（先行技術）に係る暗号化処理を示す。
【図３】図３は、ＡＥＳ−ＳＩＶ（先行技術）に係る復号処理を示す。
【図４】図４は改良された暗号化のブロック図を示す。
【図５】図５は改良された復号のブロック図を示す。
【図６】図６は改良された暗号化の第２の例を示す。
【図７】図７は改良された復号の第２の例を示す。
【図８】図８は改良された暗号化の第３の例を示す。
【図９】図９は改良された復号の第３の例を示す。
【図１０】図１０は改良された暗号化の第４の例を示す。
【図１１】図１１は改良された復号の第４の例を示す。
【図１２】図１２は、入力データを暗号化して、入力データおよび関連データの完全性を保護するための暗号化方法を示す。
【図１３】図１３は、暗号化されたデータを復号して、データおよび関連データの完全性を判定するための復号方法を示す。
【図１４ａ】図１４ａはコンピュータ可読媒体を示す。
【図１４ｂ】図１４ｂはプロセッサシステムの概略図を示す。
【００２３】
これらの図はあくまで模式的なものであって、縮尺通りには描かれていない。図面において、すでに説明した要素に対応する要素には同じ参照番号を付している。
【発明を実施するための形態】
【００２４】
図１は、データを暗号化および復号し、データおよび関連データの完全性を保護するためのデバイスを示す。データを暗号化および復号し、入力データおよび関連データの完全性を保護するためのシステム１００は、暗号化デバイス１１０および復号デバイス１２０を備える。両デバイスは概略的に示されており、通信に関してピアを構成してもよい。しかし、同様に、両デバイスはマスター／スレーブシステム、ブロードキャストシステム、ストレージまたはデータベースシステムなどで構成されてもよい。以下に説明されるように、暗号化されたデータ、関連データ、および完全性値を交換するために、両デバイス間でメッセージが交換される。また、両デバイスは物理的に離れている場合もあれば、暗号化および復号の両方を実行するように構成された多用途のデバイスに統合されてもよい。
【００２５】
暗号化デバイス１１０は出力ユニット１１１および暗号化プロセッサ１１２を有する。同様に、復号デバイスは入力ユニット１２１および復号プロセッサ１２２を有し得る。暗号化プロセッサの機能は図４、図６、図８、および図１０を参照しながら後にさらに説明され、復号プロセッサの機能は図５、図７、図９、および図１１を参照しながら後にさらに説明される。
【００２６】
両デバイスは、形状１３０ならびに入力ユニットおよび出力ユニット１１１、１２１を接続する矢印によって概略的に示されるように、通信構成を介して、通常はメッセージと呼ばれる所定のフォーマットでデータを入出力するように構成される。通信構成は例えばネットワーク、ブロードキャストシステム、または記憶装置であり得る。両デバイスは通信プロトコルに従った有線または無線通信のために、またはメッセージを保存および取り出しのために構成され得る。入力および出力ユニット１１１、１２１は、少なくとも１つの他のデバイスを発見し、データ交換のために発見されたデバイスと接続するための通信プロトコル（例えば無線プロトコル）に従って接続および通信を行うように構成されてもよい。
【００２７】
図１では、暗号化デバイス１１０は少なくとも１つのユーザ制御要素１１５を有するユーザインターフェース１１３を有し得る。復号デバイス１２０も同様な構成を有し得る。例えば、ユーザ制御要素はタッチスクリーン、各種のボタン、マウスまたはタッチパッドなどを含み得る。ボタンは従来の物理的ボタン、タッチセンサ、または仮想ボタン（例えば、マウスを介して作動されるタッチスクリーン上のボタンまたはアイコン）であり得る。また、ユーザインターフェースは遠隔ユーザインターフェースであってもよい。
【００２８】
図２はＡＥＳ−ＳＩＶ暗号化（先行技術）のブロック図を示す。図中、ユニットＰ２０３は平文入力であり、ユニットＡＤ２０１は関連データのための入力、例えば関連データのｎ個のベクトル（ＡＤ１・・・ＡＤｎ）である。ユニットＫ２０２はＡＥＳ−ＳＩＶに使用される鍵である。鍵はＫ１およびＫ２の２つの部分で構成されている。Ｋ１は真正性／完全性チェックに使用される鍵であり、Ｋ２は暗号化／復号に使用される鍵である。ユニットＳ２Ｖ２１０は、ＡＥＳをＣｉｐｈｅｒ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ（［ＣＭＡＣ］）モードで使用する疑似乱数関数（ＰＲＦ）である。その入力はｋ１、ＡＤ、およびＰから構成されている。Ｓ２Ｖの詳細な仕様は［ＲＦＣ５２９７］に記載されている。Ｓ２Ｖはある特定の鍵付きハッシュ関数と見なすことができる。ユニットＶ２２１は、暗号化ユニットＡＥＳ−ＣＴＲ２１５の初期化ベクトル（ＩＶ）として使用されるＳ２Ｖの出力を保存する。ＶはメッセージＺ２２０にも含まれており、ＡＥＳ−ＳＩＶ復号中に認証値として使用される。
【００２９】
ユニットＡＥＳ−ＣＴＲは、カウンタモードでＡＥＳを実行するブロックである（［ＭＯＤＥＳ］参照）。Ｋ２は鍵であり、ＶはカウンタモードでＡＥＳによって使用される初期化ベクトルである。カウンタモードにおいて、ＡＥＳまたは任意の他の暗号は次のように動作する。暗号は、疑似乱数データを鍵ストリームとして使用して暗号化または復号すべきメッセージに対してＸＯＲを行うために、疑似乱数データの暗号ブロックサイズ（ＡＥＳの場合は１２８ビット）の倍数を必要な数だけ生成するために使用される。疑似乱数鍵ストリームは専ら暗号、初期化ベクトルＶ、および鍵Ｋによって決定される。初期化ベクトルＶまたは鍵Ｋにおける１ビットの変更は、鍵ストリームのビットの約５０％の変更をもたらす。カウンタモードでの任意の暗号のＩＶは乱数部分とカウンタ部分とで構成されていてもよいし、またはカウンタ部分のみで構成されていてもよい。最初のブロックの後の各鍵ストリームブロックはＩＶのカウンタ部分をインクリメントすることによって生成される。鍵ストリームの長さはＩＶのカウンタ部分の可能性の数に制限される。暗号化動作と復号動作とは同じ動作であり、すなわち、データストリームと鍵ストリームとの間でＸＯＲを実行することである。ユニットＣ２２２は暗号化されたデータＣを表し、暗号化されたデータはカウンタモードでＡＥＳによって暗号化された平文Ｐである。メッセージＺ２２０はＡＥＳ−ＳＩＶ出力であり、完全性値ＶとＣとの組み合わせから構成される。
【００３０】
図２のＡＥＳ−ＳＩＶ暗号化のブロック図を分析することで、ＥＡＳ−ＳＩＶの以下に説明される特性を決定することができる。これをサポートする例は表１に示されている。以下で述べられる改善された暗号は、これらの特性を有するか、またはこれらの特性を改善する。
【００３１】
第１の特性（Ｐ１）は次の通りである。疑似乱数関数の特性（よってＳ２Ｖの特性）から、平文Ｐの少なくとも１ビットの変更は初期化ベクトルＶの多数のビットの変更をもたらすので、暗号化された平文であるＣの多数のビットの変更をもたらす（表１のケース２も参照されたい）。
【００３２】
第２の特性（Ｐ２）は次の通りである。関連データＡＤのベクトルのうちのいずれかにおける少なくとも１ビットの変更は初期化ベクトルＩＶ（＝完全性値Ｖ）の多数のビットの変更をもたらすので、暗号化された平文であるＣの多数のビットの変更をもたらす（表１のケース３も参照されたい）。
【００３３】
第３の特性（Ｐ３）は次の通りである。図２によると、暗号化を開始する前に平文Ｐ全体を処理する必要がある。なぜなら、ブロックＣＴＲの初期化ベクトルの計算、カウンタモードでのＡＥＳによる暗号化において平文の全てのビットが使用されるからである。この特性は［ＲＦＣ５２９７］で言及されている。
【００３４】
【表１】
2021528899.tif 000003
【００３５】
図３はＡＥＳ−ＳＩＶ復号（先行技術）のブロック図を示す。図中、ユニットＺ２２０はＡＥＳ−ＳＩＶ復号への入力であり、これは完全性値Ｖと暗号化されたデータ（暗号化後の平文Ｐ）との組み合わせで構成されている。ユニットＶ２２１は、ユニットＡＥＳ−ＣＴＲ２３５におけるＡＥＳ復号で初期化ベクトル（ＩＶ）として使用される完全性値Ｖを取り出す。完全性値Ｖは、コンパレータＣＭＰ２３０でのＣの有効性（完全性および真正性）チェックにも使用される。ユニットＣ２２２は（カウンタモードでＡＥＳによって暗号化された平文Ｐである）暗号化されたデータＣを取り出す。ユニットＫ２０２はＡＥＳ−ＳＩＶのために使用される鍵を有する。鍵はｋ１およびｋ２の２つの部分で構成されており、ｋ１は真正性／完全性チェックに使用される完全性鍵であり、ｋ２は暗号化／復号に使用される鍵である。
【００３６】
ユニットＡＥＳ−ＣＴＲ２３５はカウンタモード（［ＭＯＤＥＳ］参照）でＡＥＳ復号を実行するブロックであり、ｋ２は鍵、ＶはカウンタモードでＡＥＳによって使用される初期化ベクトルである。ユニットＰ’２０５はブロックＡＥＳ−ＣＴＲから復号の平文出力を受け取る。平文出力は有効性チェックが正の場合にしか使用することができない。ユニットＡＤは関連データを有し、関連データはメッセージＺ２２０とともに、または別々に伝送され得る。ユニットＳ２Ｖ２１０は、図２の同ユニットＳ２Ｖと同じく、ＡＥＳをＣｉｐｈｅｒ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ（［ＣＭＡＣ］）モードで使用する疑似乱数関数（ＰＲＦ）である。Ｓ２Ｖからテスト値Ｔ２２３が出力され、コンパレータＣＭＰ２３０に供給され、Ｔが受け取られたＶと比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文Ｐ’はＡＥＳ−ＳＩＶ暗号化中に使用された平文Ｐと同一である。ＴとＶとが等しくない場合、ＡＥＳ−ＳＩＶは失敗し、復号された平文Ｐ’を破棄しなければならない。
【００３７】
図３のＡＥＳ−ＳＩＶ復号のブロック図を分析することで、ＥＡＳ−ＳＩＶの以下に説明される特性を決定することができる。これをサポートする例は表２に示されている。
【００３８】
第４の特性（Ｐ４）は次の通りである。正しい関連データＡＤ、未変更の初期化ベクトルＶ、および未変更の暗号化されたデータＣをＡＥＳ−ＳＩＶ復号の入力として使用すると、ＡＥＳ−ＳＩＶ暗号化中に使用された平文Ｐと同一の復号された平文Ｐ’が得られる。さらに、この場合はＴとＶとが等しいので、ＡＥＳ−ＳＩＶは真正性／完全性の欠陥を検出しない。表２のケース４も参照されたい。
【００３９】
第５の特性（Ｐ５）は次の通りである。Ｃ（ＡＥＳ−ＳＩＶ暗号化された平文）の復号に使用される関連データＡＤの任意の数のビットが変更されても、ＡＥＳ−ＳＩＶ暗号化中に使用された平文Ｐと同一の復号された平文Ｐ’が得られる。これは、関連データがブロックＣＴＲの入力、カウンタモードでのＡＥＳを用いたＣの復号に影響を与えないからである。ただし、この場合、ＡＥＳ−ＳＩＶは真正性／完全性の欠陥を検出する。表２のケース５も参照されたい。したがって、既知のＡＥＳ−ＳＩＶシステムでは、生成される平文Ｐ’はＰと同じであるが、これは、以下で説明するように改善された暗号法が解決すべき課題である。
【００４０】
第６の特性（Ｐ６）は次の通りである。Ｃ（ＡＥＳ−ＳＩＶ暗号化された平文）の復号に使用される初期化ベクトルＶの少なくとも１つのビットが変更されると、復号された平文Ｐ’の多数のビットが、ＡＥＳ−ＳＩＶ暗号化中に使用された平文Ｐとは異なるものになる。これはカウンタモードでのＡＥＳの特性から容易に理解することができる。この場合、ＡＥＳ−ＳＩＶは真正性／完全性の欠陥を検出する。表２のケース６も参照されたい。
【００４１】
第７の特性（Ｐ７）は次の通りである。ＡＥＳ−ＳＩＶ復号のための暗号化された入力Ｃの少なくとも１つのビットが変更されると、復号された平文Ｐ’の対応するビットが、ＡＥＳ−ＳＩＶ暗号化中に使用された平文Ｐとは異なるものになる。これはカウンタモードでのＡＥＳの特性から容易に理解することができる。この場合、ＡＥＳ−ＳＩＶは真正性／完全性の欠陥を検出する。表２のケース７も参照されたい。
【００４２】
【表２】
2021528899.tif 000004
【００４３】
図４およびそれ以降の図に示される改良された暗号法は第５の特性（Ｐ５）に関して言及したＡＥＳ−ＳＩＶの課題を解決する。この暗号法では、Ｃの復号に使用される関連データＡＤの任意の数のビットが変更されると、暗号化中に使用された平文Ｐとは異なる復号された平文Ｐ’が得られる。これは、関連データがブロックＥＮＣＲの初期化ベクトルＩＶに直接影響を及ぼし、そして同様にＣの復号に影響を及ぼすからである。また、この場合、改良された暗号法は完全性の欠陥を検出する。したがって、改良されたシステムでは、関連データが操作された場合に得られる平文Ｐ’はＰとは異なる。なお、上記で説明した他の特性は維持されるか、または以下で明記される場合には改良される。
【００４４】
図４は改良された暗号化のブロック図を示す。図中、ユニットＰ２０３は平文入力であり、ユニットＡＤ２０１は関連データのための入力、例えば関連データのｎ個のベクトル（ＡＤ１・・・ＡＤｎ）を提供する。ユニットＫ２０２は使用される鍵であり、少なくとも暗号化鍵ｋ２を含む。鍵はｋ１とｋ２の２つの部分で構成されていてもよい。ｋ１は完全性チェックに使用され得る完全性鍵であり、ｋ２は暗号化／復号に使用される鍵である。ユニットＨＡＳＨ３１０はハッシュ関数であり、例えば、Ｃｉｐｈｅｒ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ  （［ＣＭＡＣ］）モードでＡＥＳを使用する疑似乱数関数、またはｋ１が使用される場合はＨＭＡＣ＿ＳＨＡ２５６、ＨＭＡＣ＿ＳＨＡ３８４、もしくはＨＭＡＣ＿ＳＨＡ５１２［ＲＦＣ  ４８６８］、またはｋ１を使用しない場合はＳＨＡ２５６、ＳＨＡ３８４、もしくはＳＨＡ５１２などの通常のハッシュ関数（［ＲＦＣ６２３４］参照）である。ＨＡＳＨユニット３１０の出力は、暗号化鍵ｋ２に基づいて暗号化されたデータＣ３２２を生成する暗号化ユニットＥＮＣＲ３１５の初期化ベクトル（ＩＶ）として使用される。適切な暗号化の例は上記のカウンタモードでのＡＥＳであり、これは選択可能な多数の暗号法の１つである。ＨＡＳＨユニット３１０の出力は、カウンタモードでＡＥＳによって使用される初期化ベクトルである。他のモード（例えば、Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ（ＣＢＣ））では暗号法のブロック長の倍数の平文長しか処理できないが、カウンタモードの使用時には任意の長さの平文を処理することができる。適切な暗号化アルゴリズムの他の例は、Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ（ＥＣＢ）、Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ（ＣＢＣ）、Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ（ＯＦＢ）、Ｃｉｐｈｅｒ  Ｆｅｅｄｂａｃｋ（ＣＦＢ）、またはＸＥＸ−ｂａｓｅｄ  ｔｗｅａｋｅｄ−ｃｏｄｅｂｏｏｋ  ｍｏｄｅ  ｗｉｔｈ  ｃｉｐｈｅｒｔｅｘｔ  ｓｔｅａｌｉｎｇ（ＸＴＳ）でのＡＥＳである。最初の４つのモードの例の説明については［ＭＯＤＥＳ］を、ＸＴＳ−ＡＥＳについては［ＸＴＳ−ＡＥＳ］を参照されたい。
【００４５】
ＨＡＳＨユニット３１０の入力は少なくともＡＤおよびＶ、ならびに他のＨＡＳＨユニットＨＡＳＨ３１１によって提供されるＰのハッシュを含む。オプションで、ＨＡＳＨユニットは、ハッシュされるべき入力の一部として完全性鍵ｋ１も受け取る。また、鍵付きハッシュ関数が選択された場合、鍵付きＨＡＳＨユニットはｋ１を鍵として受け取る。
【００４６】
ユニットＶ３２１はＨＡＳＨユニット３１１の出力を保存する。したがって、ＨＡＳＨユニット３１１はハッシュ関数を実行するブロックである。これは、例えば、ＳＨＡ２ファミリからのハッシュ関数（ＳＨＡ−２２４、ＳＨＡ−２５６、ＳＨＡ−３８４、またはＳＨＡ−５１２、［ＲＦＣ６２３４］参照）、または、Ｐを単一の入力データコンポーネントとして使用する［ＲＦＣ５２９７］からのＳ２Ｖ、または任意の他の（好ましくは暗号に関する）ハッシュ関数であり得る。以下の表３および表４を作成するために使用された実施形態は、ＨＡＳＨユニット３１１ではＳＨＡ−２５６を使用し、ＨＡＳＨユニット３１０ではＳ２Ｖを使用する。ＨＡＳＨユニット３１１はまた、図６、図７、図８、および図９を参照しながら後述されるように鍵付きＨＡＳＨユニットであってもよい。
【００４７】
暗号化されたデータＣ３２２および（完全性値Ｖと同一である）メッセージ完全性値Ｗは、（例えばＣおよびＶの連結などである）メッセージＺ３２０に含まれる。メッセージ完全性値Ｗはまた、完全性値Ｖの保護されたバージョン、例えば追加の完全性鍵を用いた暗号化されたバージョンであり得る。図１０はＷの決定のさらなる例を示す。
【００４８】
図４のブロック図を分析することで、改良されたシステムの以下に説明される特性を決定することができる。サポートする例は表３に示されている。
【００４９】
第１の特性はＡＥＳ−ＳＩＶの特性Ｐ１と同じである。ハッシュ関数の特性から、平文Ｐの少なくとも１ビットの変更はブロックＥＮＣＲのための初期化ベクトルの多数のビットの変更をもたらすので、暗号化された平文であるＣの多数のビットの変更をもたらす（表３のケース２も参照されたい）。
【００５０】
第２の特性はＡＥＳ−ＳＩＶの特性Ｐ２と同じである。関連データＡＤの少なくとも１ビットの変更は、ブロックＥＮＣＲのための初期化ベクトルの多数のビットの変更をもたらすので、暗号化された平文であるＣの多数のビットの変更をもたらす（表３のケース３も参照されたい）。
【００５１】
第３の特性はＡＥＳ−ＳＩＶの特性Ｐ３と同じである。また図４から、ブロックＨＡＳＨの計算には平文のすべてのビットが使用されるので、暗号化を開始する前に平文Ｐ全体を処理する必要があることがわかる。
【００５２】
【表３】
2021528899.tif 000005
【００５３】
図５は改良された復号のブロック図を示す。図中、ユニットＺ３２０は、図４を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取るように構成されている。メッセージは、暗号化されたデータＣと、上記のように完全性値Ｖに基づくメッセージ完全性値Ｗとを含む。ユニットＶ３２１は完全性値Ｖを取り出す（必要であればまず値Ｗを復号することによって）。メッセージからＶを決定する他の例が図１１を参照しながら後述される。ユニットＣ３２２は、図４に従って暗号化された平文Ｐである暗号化されたデータＣを取り出す。完全性値Ｖは、コンパレータＣＭＰ３３０での受け取られたデータの有効性（完全性および真正性）チェックに使用される。ユニットＫ２０２は使用すべき秘密鍵（ｋ）を有する。鍵はｋ１とｋ２の２つの部分で構成され、ｋ１は真正性／完全性チェックに使用される完全性鍵であり、ｋ２は暗号化／復号に使用される鍵であり得る。ユニットＡＤ２０１は関連データを有し、関連データはメッセージＺ３２０とともに、または別々に伝送され得る。
【００５４】
ユニットＤＥＣＲ３３５は、上記の図４で選択された暗号化（例えば、カウンタモード（［ＭＯＤＥＳ］参照）でのＡＥＳ）と互換性のある復号を使用してユニットＣ３２２からの暗号化されたデータの復号を実行するブロックである。暗号化鍵ｋ２は復号鍵でもあり、初期化ベクトルＩＶはＨＡＳＨユニット３１０の出力によって提供される。
【００５５】
ユニットＰ’２０５はブロックＤＥＣＲから復号の平文出力を受け取る。平文出力は有効性チェックが肯定の場合にしか使用することができない。
【００５６】
ＨＡＳＨユニット３１０は、図４に示す暗号化におけるＨＡＳＨユニット３１０と等しいハッシュ関数を実行するブロックである。ハッシュユニット３１０のための入力は、少なくともＡＤおよびＶ（受け取られたメッセージ完全性値Ｗから導出される）を含む。オプションで、ＨＡＳＨユニット３１０は、ハッシュされるべき入力の一部として完全性鍵ｋ１も受け取る。また、鍵付きハッシュ関数が使用される場合、鍵付きＨＡＳＨユニットはｋ１を鍵として受け取る。
【００５７】
ＨＡＳＨユニット３１１は、Ｐ’を単一の入力コンポーネントとして使用する図４に示す暗号化におけるＨＡＳＨユニット３１１と等しいハッシュ関数を実行するブロックである。以下の表３および表４を作成するために使用された実施形態は、ＨＡＳＨユニット３１１ではＳＨＡ−２５６を使用し、ＨＡＳＨユニット３１０ではＳ２Ｖを使用する。
【００５８】
ＨＡＳＨユニット３１１からテスト値Ｔ３２３が出力され、コンパレータＣＭＰ３３０に供給され、Ｔが受け取られたＶと比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文Ｐ’は暗号化中に使用された平文Ｐと同一である。ＴとＶとが等しくない場合、完全性テストは失敗し、復号された平文Ｐ’を破棄しなければならない。
【００５９】
以下に述べる上記の改良された暗号法の導入の特性は、図５の復号のブロック図を分析することで決定することができ、これをサポートする例は表４に示されている。
【００６０】
第４の特性はＡＥＳ−ＳＩＶの特性Ｐ４と同じである。正しい関連データ、未変更の完全性値Ｖ、および未変更の暗号化されたデータＣを復号の入力として使用すると、暗号化中に使用された平文Ｐと同一の復号された平文Ｐ’が得られる。さらに、この場合はＴとＶが等しいので、改良された暗号法は真正性／完全性の欠陥を検出しない。表４のケース４も参照されたい。
【００６１】
第５の特性はＡＥＳ−ＳＩＶの特性Ｐ５とは異なり、改良されている。Ｃの復号に使用される関連データの少なくとも１ビットが変更されると、復号された平文Ｐ’の多数のビットが暗号化中に使用された平文Ｐとは異なるものになる。ＡＥＳ−ＳＩＶと同様、この場合、改良された暗号法は真正性／完全性の欠陥を検出する。表４のケース５も参照されたい。しかし、ＡＥＳ−ＳＩＶとは異なり、追加データＡＤが操作されていた場合、Ｐ’は使用することができない。
【００６２】
第６の特性はＡＥＳ−ＳＩＶの特性Ｐ６と同じである。Ｃの復号に使用される完全性値Ｖの少なくとも１つのビットが変更されると、復号された平文Ｐ’の多数のビットが、暗号化中に使用された平文Ｐとは異なるものになる。これは、初期化ベクトルを生成するＨＡＳＨユニット３１０にもＶが入力されるからである。この場合にも真正性／完全性の欠陥が検出される。表４のケース６も参照されたい。
【００６３】
第７の特性はＡＥＳ−ＳＩＶの特性Ｐ７と同じである。復号のための暗号化された入力Ｃの少なくとも１つのビットが変更されると、復号された平文Ｐ’の対応するビットが変化する。この場合、改良された暗号法は完全性の欠陥を検出する。表４のケース７も参照されたい。
【００６４】
【表４】
2021528899.tif 000006
【００６５】
上記の例では、カウンタモードのＡＥＳが暗号化と復号に使用されている。しかし、本発明はこの暗号法またはモードに限定されるものではない。
カウンタの任意の暗号法が使用され、例えば、カウンタモードのＤＥＳまたは３ＤＥＳが使用されてもよい。３ＤＥＳは［３ＤＥＳ］で説明されている。ＤＥＳは１９７７年１月にＮＩＳＴによってＦＩＰＳ４６として最初に承認された。また、任意のモードの任意の暗号法を使用することができる。例えば、Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅｂｏｏｋ（ＥＣＢ）、Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ（ＣＢＣ）、Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ（ＯＦＢ）、Ｃｉｐｈｅｒ  Ｆｅｅｄｂａｃｋ  （ＣＦＢ）、またはＸＥＸ−ｂａｓｅｄ  ｔｗｅａｋｅｄ−ｃｏｄｅｂｏｏｋ  ｍｏｄｅ  ｗｉｔｈ  ｃｉｐｈｅｒｔｅｘｔ  ｓｔｅａｌｉｎｇ  （ＸＴＳ）でのＡＥＳが使用されてもよい。最初の４つのモードの例の説明については［ＭＯＤＥＳ］を、ＸＴＳ−ＡＥＳについては［ＸＴＳ−ＡＥＳ］を参照されたい。モードの選択は用途の要件、例えば暗号化または復号が並列化可能であるか否かなどに依存する。ただし［ＥＶＡＬ］では、本明細書で述べた６つのモードのうち、「総合的には、通常、ｐｒｉｖａｃｙ−ｏｎｌｙ暗号化を実現するための最良かつ最もモダンな方法は［ＣＴＲ］である」と主張されている。図４および図５は本発明に係る一般化された暗号化スキームを示す。図４において、ブロック「暗号化」は任意のモードの任意の暗号法であり、鍵ｋ２および初期化ベクトルとしてブロックＨＡＳＨ３１０の出力を使用して入力Ｐを暗号化する。ＨＡＳＨ３１０の関数は、図２および図３を参照して説明したＳ２Ｖでもよい。同様に、図５は本発明に係る一般化された復号スキームを示し、ブロック「復号」は任意のモードの任意の暗号法であり、鍵ｋ２および初期化ベクトルとしてブロックＨＡＳＨ３１０の出力を使用して入力Ｃを復号する。
【００６６】
ＨＡＳＨユニット３１０および／またはＨＡＳＨユニット３１１は、出力から入力を再構築することをできないという特性を維持しつつ、さらに以下のように具現化され得る。例えば、ＨＡＳＨユニットは次のようなデジタル署名を提供し得る。
・（対称）鍵ｋ４を使用する鍵付きハッシュメッセージ認証コード（ＨＭＡＣ）、例えば、ＨＭＡＣ＿ＳＨＡ１［ＲＦＣ２１０４］またはＨＭＡＣ＿ＳＨＡ２５６／３８４／５１２［ＲＦＣ４８６８］。鍵はｋ１および／またはｋ２から独立していてもよく、また、何らかの方法で導出されてもよいし、またはｋ１および／またはｋ２に等しくてもよい。
・公開鍵暗号法を使用するデジタル署名、例えば、公開鍵ｋ５および秘密鍵ｋ６を使用するＤｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ（ＤＳＡ）［ＦＩＰＳ１８６−４］、Ｒｉｖｅｓｔ‐Ｓｈａｍｉｒ‐Ａｄｌｅｍａｎ（ＲＳＡ）  ｂａｓｅｄ  ｄｉｇｉｔａｌ  ｓｉｇｎａｔｕｒｅ  ａｌｇｏｒｉｔｈｍ［ＦＩＰＳ１８６−４］、およびＥｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ（ＥＣＤＳＡ）［ＦＩＰＳ  １８６−４］。暗号化に秘密鍵ｋ６が使用され、復号に公開鍵ｋ５が使用される。
【００６７】
図６は改良された暗号化の第２の例を示す。ブロック図は、図４を参照して説明した上記の改良された暗号化と同様の要素を有するが、以下の点において異なる。図中、ユニットＫ４０２は使用される鍵である。鍵はｋ１、ｋ２、およびｋ３の３つの部分からなる。ｋ１は完全性チェックに使用される完全性鍵であり、ｋ２は暗号化／復号に使用される鍵であり、ｋ３は鍵付きＨＡＳＨユニット４１１の鍵付きＨＡＳＨに使用されるさらなる完全性鍵である。暗号化ユニットＥＮＣＲ３１５は、暗号化鍵ｋ２、およびＨＡＳＨユニット３１０からの初期化ベクトルＩＶに基づいて暗号化されたデータＣ４２２を生成する。
【００６８】
ＨＡＳＨユニット３１０の入力はｋ１、ＡＤおよびＶ、ならびに鍵付きＨＡＳＨユニット４１１によって提供されるＰのハッシュを含む。ユニットＶ４２１は鍵付きＨＡＳＨユニット４１１の出力を保存する。メッセージＺ４２０は暗号化されたデータＣ４２２と、完全性値Ｖ４２１に基づくメッセージ完全性値Ｗとを含み、例えば、ＣおよびＶの連結を含む。オプションで、メッセージ完全性値Ｗを生成するためにＶが暗号化されてもよい。
【００６９】
図７は改良された復号の第２の例を示す。ブロック図は、図５を参照して説明した上記の改良された復号と同様の要素を有するが、以下の点において異なる。図中、ユニットＺ４２０は、図６を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取る。ユニットＶ４２１はメッセージ完全性値Ｗから完全性値Ｖを取り出し、一方、ユニットＣ４２２は、図６に従って暗号化された平文Ｐである暗号化されたデータＣを取り出す。完全性値Ｖは、コンパレータＣＭＰ３３０での受け取られたデータの有効性（完全性および真正性）チェックに使用される。ユニットＫ４０２は使用される鍵を有し、鍵はｋ１、ｋ２、およびｋ３の３つの部分からなる。ｋ１は真正性／完全性チェックに使用される完全性鍵であり、ｋ２は復号に使用される鍵であり、ｋ３はＨＡＳＨユニット４１１の鍵付きハッシュ関数に使用されるさらなる完全性鍵である。
【００７０】
ユニットＤＥＣＲ３３５は、上記の図６で選択された暗号化と互換性のある復号を使用してユニットＣ３２２からの暗号化されたデータの復号を実行するブロックである。暗号化鍵ｋ２は復号鍵でもあり、初期化ベクトルＩＶはＨＡＳＨユニット３１０の出力によって提供される。ハッシュユニット３１０のための入力はｋ１、ならびにＡＤおよびＶ（Ｗから導出または復号される）を含む。ユニットＰ’２０５はブロックＤＥＣＲから復号の平文出力を受け取る。平文出力は有効性チェックが肯定の場合にしか使用することができない。
【００７１】
ＨＡＳＨユニット４１１は、Ｐ’を入力として使用する図６に示す暗号化におけるＨＡＳＨユニット４１１と等しい鍵付きハッシュ関数を実行するブロックである。鍵付きＨＡＳＨユニット４１１からテスト値Ｔ４２３が出力され、コンパレータＣＭＰ３３０に供給され、Ｔが受け取られたＶと比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文Ｐ’は暗号化中に使用された平文Ｐと同一である。ＴとＶが等しくない場合、完全性テストは失敗し、復号された平文Ｐ’を破棄しなければならない。
【００７２】
図８は改良された暗号化の第３の例を示す。ブロック図は、図４および図６を参照して説明した上記の改良された暗号化と同様の要素を有するが、以下の点において異なる。図中、ユニットＫ５０２は使用される鍵である。鍵はｋ２およびｋ３の２つの部分からなる。ｋ２は暗号化／復号に使用される鍵であり、ｋ３は、Ｐを処理する鍵付きＨＡＳＨユニット４１１の鍵付きＨＡＳＨに使用される完全性鍵である。暗号化ユニットＥＮＣＲ３１５は、暗号化鍵ｋ２と、ＨＡＳＨユニット５１０からの初期化ベクトルＩＶとに基づいて暗号化されたデータＣ５２２を生成する。
【００７３】
ＨＡＳＨユニット５１０の入力はＡＤおよびＶ、ならびに鍵付きＨＡＳＨユニット４１１によって提供されるＰのハッシュを含む。ユニットＶ４２１は鍵付きＨＡＳＨユニット４１１の出力を保存する。暗号化されたデータＣ５２２および完全性値Ｖ４２１はメッセージＺ５２０に含まれる。オプションで、Ｖを暗号化してメッセージ完全性値Ｗが生成されてもよい。
【００７４】
図９は改良された復号の第３の例を示す。ブロック図は、図５および図７を参照して説明した上記の改良された復号と同様の要素を有するが、以下の点において異なる。図中、ユニットＺ５２０は、図８を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取る。上記のように、ユニットＶ４２１はメッセージ完全性値Ｗを使用して完全性値Ｖを取り出し、一方、ユニットＣ５２２は、図８に従って暗号化された平文Ｐである暗号化されたデータＣを取り出す。完全性値Ｖは、コンパレータＣＭＰ３３０での受け取られたデータの有効性（完全性および真正性）チェックに使用される。ユニットＫ５０２は使用される鍵を有し、鍵はｋ２およびｋ３の２つの部分からなる。ｋ２は復号に使用される鍵であり、ｋ３は鍵付きＨＡＳＨユニット４１１の鍵付きＨＡＳＨに使用される。
【００７５】
ユニットＤＥＣＲ３３５は、上記の図８で選択された暗号化と互換性のある復号を使用してユニットＣ５２２からの暗号化されたデータの復号を実行するブロックである。暗号化鍵ｋ２は復号鍵でもあり、初期化ベクトルＩＶはＨＡＳＨユニット５１０の出力によって提供される。ハッシュユニット５１０のための入力はＡＤおよびＶ（Ｗから受け取られるまたは復号される）である。ユニットＰ’２０５はブロックＤＥＣＲから復号の平文出力を受け取る。平文出力は有効性チェックが肯定の場合にしか使用することができない。
【００７６】
ＨＡＳＨユニット４１１は、ｋ３およびＰ’を入力として使用する図８に示す暗号化における鍵付きＨＡＳＨユニット４１１と等しい鍵付きハッシュ関数を実行するブロックである。鍵付きＨＡＳＨユニット４１１からテスト値Ｔ４２３が出力され、コンパレータＣＭＰ３３０に供給され、Ｔが受け取られたＶと比較される。両者が等しい場合、完全性チェックは肯定であり、復号された平文Ｐ’は暗号化中に使用された平文Ｐと同一である。ＴとＶが等しくない場合、完全性テストは失敗し、復号された平文Ｐ’を破棄しなければならない。
【００７７】
改良された暗号法の第３の例は実用的かつ強力であると思われる。鍵ｋは２つの部分のみで構成されているが、ユニットＨＡＳＨ４１１における鍵付きハッシュのために完全性値Ｖから平文Ｐを取得することは難しい。一方、両方のＨＡＳＨユニットについて２つの予め定められたハッシュ関数を使用することも可能である（つまり、秘密鍵なしのハッシング）。この場合、暗号化および復号の両方のために１つの秘密暗号化鍵ｋ２しか必要とされない。
【００７８】
図１０は改良された暗号化の第４の例を示す。ブロック図は、図４を参照して説明した上記の改良された暗号化と同様の要素を有するが、以下の点において異なる。図中、ユニットＫ６０２は使用される鍵であり、少なくとも暗号化鍵ｋ２を含む。鍵はｋ４とｋ２の２つの部分で構成されていてもよい。ｋ４はさらなるＨＡＳＨユニットＨ３  ６２４に使用され得る完全性鍵であり、ｋ２は暗号化／復号に使用される鍵である。ユニットＨＡＳＨ５１０は、例えば図８を参照して説明したようなハッシュ関数である。ＨＡＳＨユニット５１０の出力は、暗号化鍵ｋ２に基づいて暗号化されたデータＣ５２２を生成する暗号化ユニットＥＮＣＲ３１５の初期化ベクトル（ＩＶ）として使用される。適切な暗号化の例は上記の通りである。
【００７９】
上記のように、ＨＡＳＨユニット５１０の入力は少なくともＡＤおよびＶ、ならびにさらなるＨＡＳＨユニットＨＡＳＨ３１１によって提供されるＰのハッシュである。オプションで、ＨＡＳＨユニットはまた、図４を参照して述べたＨＡＳＨユニット３１０と同様に、ハッシュされるべき入力の一部として完全性鍵ｋ１を受け取る。また、鍵付きハッシュ関数が選択された場合、鍵付きＨＡＳＨユニットはｋ１を鍵として受け取る。
【００８０】
ユニットＨＡＳＨ３１１は、例えば図４を参照して説明したようなハッシュ関数である。オプションで、図６または図８と同様に、ＨＡＳＨユニットはハッシュされるべき入力の一部として完全性鍵ｋ３も受け取る。また、鍵付きハッシュ関数が選択された場合、鍵付きＨＡＳＨユニットはｋ３を鍵として受け取る。ユニットＨＡＳＨ３１１は入力としてＰ２０３を有する。
【００８１】
暗号化ユニットＥ２  ６２１は、ＨＡＳＨユニット３１１から完全性値Ｖを受け取り、さらなるＨＡＳＨユニットＨ３  ６２４から派生鍵ｋｃを受け取る。暗号化ユニット６２１はＶを暗号化してメッセージ完全性値Ｗを生成する。さらなるＨＡＳＨユニット６２４は暗号化されたデータＣを入力として使用する。さらなるＨＡＳＨユニットＨ３  ６２４は、第１および第２のＨＡＳＨユニットと同様であってもよく、鍵ユニット６０２からさらなる秘密完全性鍵ｋ４を受け取る鍵付きＨＡＳＨユニットであってもよい。
【００８２】
暗号化されたデータＣ５２２、および完全性値Ｖに基づくメッセージ完全性値Ｗは、（例えばＣおよびＷの連結である）メッセージＺ６２０に含まれる。この場合、メッセージ完全性値は完全性値Ｖの保護されたバージョン、すなわち派生鍵ｋｃを用いた暗号化されたバージョンである。実質的に完全性値は操作から保護されるが、暗号化されたデータＣをＣの復号を妨げることなく操作することもできない。したがって以下に説明するように、Ｃの１ビットの変更により、復号された平文のビットは多数変化する。
【００８３】
図１１は改良された復号の第４の例を示す。ブロック図は、図５を参照して説明した上記の改良された復号と同様の要素を有するが、以下の点において異なる。図中、ユニットＺ６２０は、図１０を参照して説明したように、暗号化プロセスによって生成された復号のための入力メッセージを受け取る。
【００８４】
ユニットＤ２  ６２５は、さらなるＨＡＳＨユニットＨ３  ６２４からの派生鍵ｋｃを使用してメッセージ完全性値Ｗを復号することによって完全性値Ｖを取り出す。さらなるＨＡＳＨユニットＨ３  ６２４は、図１０に示す暗号化におけるさらなるＨＡＳＨユニットＨ３  ６２４と等しいハッシュ関数を実行するブロックである。さらなるＨＡＳＨユニット６２４の入力は、受け取られた暗号化されたデータＣである。したがって、Ｃの１ビットの変更は大きく異なる派生鍵ｋｃをもたらし、よって、大きく異なる完全性値Ｖと大きく異なる初期化ベクトルＩＶをもたらす。結果として、復号された平文Ｐ’も大きく異なるものになる。さらなるＨＡＳＨユニットＨ３  ６２４は、鍵ユニット６０２からさらなる秘密完全性鍵ｋ４を受け取る鍵付きＨＡＳＨユニットであってもよい。ユニットＣ５２２は、図１０に従って暗号化された平文Ｐである暗号化されたデータＣを取り出す。
【００８５】
完全性値Ｖは、コンパレータＣＭＰ３３０での受け取られたデータの有効性（完全性および真正性）チェックに使用される。ユニットＫ６０２は使用される秘密鍵（ｋ）を有し、秘密鍵はｋ４およびｋ２の２つの部分からなり得る。鍵ｋ４は鍵付きＨＡＳＨユニット６２４に使用され得るさらなる秘密完全性鍵であり、ｋ２は暗号化／復号に使用される鍵である。
【００８６】
ＨＡＳＨユニット５１０は、少なくとも追加データＡＤおよび完全性値Ｖを入力として受け取る。オプションで、ＨＡＳＨユニット５１０は、ハッシュされるべき入力の一部として完全性鍵ｋ１も受け取る。また、鍵付きハッシュ関数が使用される場合、鍵付きＨＡＳＨユニット５１０はｋ１を鍵として受け取る。ハッシュユニット５１０は、図１０に示す暗号化におけるＨＡＳＨユニット５１０と等しいハッシュ関数を実行するブロックである。
【００８７】
ＨＡＳＨユニット３１１からテスト値Ｔが出力され、コンパレータＣＭＰ３３０に供給され、メッセージ完全性値Ｗから復号された完全性値ＶとＴとが比較される。両者が等しい場合、有効性チェックは肯定であり、復号された平文Ｐ’は暗号化中に使用された平文Ｐと同一である。ＴとＶとが等しくない場合、完全性テストは失敗し、復号された平文Ｐ’を破棄しなければならない。
【００８８】
改良された暗号法の第４の例も、実用的かつ強力であると思われる。鍵ｋは２つの部分のみで構成されているが、ユニット６２４における鍵付きハッシュのために平文Ｐおよび完全性値Ｖを取得することは難しい。一方、全てのＨＡＳＨユニットについて３つの予め定められたハッシュ関数を使用することも可能である（つまり、秘密鍵なしのハッシング）。この場合、暗号化および復号の両方のために１つの秘密暗号化鍵ｋ２しか必要とされない。また、暗号化されたデータＣを知っている者なら誰でも値Ｖを取得することができるが、最終的な受取人での復号および完全性テストを妨害することなくＣを操作することは依然として不可能である。
【００８９】
図１２は、入力データを暗号化して、入力データおよび関連データの完全性を保護するための暗号化方法を示す。この方法では、暗号化プロセスはノードＳＴＡＲＴ７０１から開始する。第１のステージＲＣＶ−ＤＡＴ７０２において、平文Ｐおよび関連データＡＤが受け取られる。次に、ステージＩＮＴＥＧＲ７０３において、第１のハッシュ関数を使用して平文Ｐに基づき完全性値Ｖが計算される。次に、ステージＩＮＩＴ−ＶＥＣ７０４において、完全性値および関連データに基づいて第２のハッシュ関数を使用することによって初期化ベクトルが計算される。初期化ベクトルは完全性値とは異なる。完全性値および／または初期化ベクトルを計算するためのハッシュ関数に１つまたは２つの完全性鍵が使用されてもよい。次に、ステージＥＮＣＲ７０５において、初期化ベクトルＩＶおよび第２の暗号化鍵ｋ２を使用して入力データＰを暗号化することで暗号化されたデータＣが生成される。次に、ステージＯＵＴ−ＭＳＧ７０６において、暗号化されたデータＣおよび完全性値Ｖを含む出力される暗号化されたメッセージが生成される。そして、さらなる入力データが受け取られない限り、処理はステージＥＮＤ７０８で終了する。さらなるデータが受け取られた場合、矢印７２０によって示されるように、方法はステージＲＣＶ−ＤＡＴにおいて続行する。
【００９０】
一実施形態では、方法は、第１のステージＲＣＶ‐ＤＡＴにおいて、入力データの量を決定するステップを含む。量が所定の閾値を下回ると判断されると、（例えば、元の平文の先頭または末尾にパディングデータを連結することによって）パディングデータが入力データに追加され、１つのメッセージ内に暗号化されるべき平文の合計量が増やされる。パディングデータは、例えばランダムデータまたは全てゼロのデータであり得る。例えば、平文の長さが暗号法のブロック長の倍数であることが要求される場合、パディングが必要になり得る。オプションで、所定の閾値は暗号化鍵の長さである。パディングデータの長さ、または平文の量は、例えば追加データの一部としてメッセージに含まれてもよい。
【００９１】
さらに、暗号化方法は、ステージＯＵＴ−ＭＳＧ７０６において、メッセージにさらなるデータを追加するステップを含み得ることに留意されたい。しかし、データ保護が損なわれるため、出力される暗号化されたメッセージには初期化ベクトルは含まれない。例えば、その場合、悪意のあるデバイスは、後述される復号方法のステージＩＮＩＴ−ＶＥＣ７５２で必要とされる第２のハッシュ関数を介して初期化ベクトルを計算することの代わりに、メッセージに含まれる初期化ベクトルを使用する可能性がある。
【００９２】
図１３は、暗号化されたデータを復号して、データおよび関連データの完全性を判定するための復号方法を示す。この方法では、復号プロセスはノードＳＴＡＲＴ７５１から開始する。第１のステージＲＣＶ−ＭＳＧ７５２において、メッセージが受け取られる。取得された暗号化されたメッセージには暗号化されたデータＣと完全性値Ｖとが含まれ、どちらもメッセージから取り出される。また、関連データＡＤがメッセージとともに、またはメッセージとは別に受け取られる。次に、ステージＩＮＩＴ−ＶＥＣ７５３において、完全性値および関連データに基づいて初期化ベクトルが計算される。初期化ベクトルは完全性値とは異なる。計算にはハッシュ関数が含まれる。次に、ステージＤＥＣＲＹＰ７５４において、初期化ベクトルＩＶおよび復号鍵ｋ２を使用して暗号化されたデータＣを復号することで平文Ｐ’が生成される。次に、ステージＣＡＬＣ−Ｔ７５５において、暗号化中に使用された対応するハッシュ関数と等しいさらなるハッシュ関数を使用して、平文Ｐ’に基づいてテスト値Ｔが計算される。完全性値および／または初期化ベクトルを計算するためのハッシュ関数に１つまたは２つの完全性鍵が使用されてもよい。次に、ステージＣＯＭＰ７５６において、テスト値Ｔと受け取られた値Ｖが比較され、テスト完全性値と受け取られた完全性値とを比較することによって完全性が判定される。次に、ステージ７５７でＴがＶに等しいと判断された場合、プロセスはステージＥＮＤ７５８で成功とともに終了する。しかし、ステージ７５９においてＴがＶに等しくないと決定された場合、プロセスはステージＡＢＯＲＴ７６０で失敗とともに終了する。
【００９３】
これらの方法は、例えば、固定またはモバイルコンピューティングデバイスのプロセッサ内の回路およびソフトウェアによって実行されてもよい。適切なハッシュ関数、暗号化関数および復号関数は上記の通りである。なお、図１３は、図１２の暗号化方法を備えたデバイスと協働し得る、復号を担当するデバイスのための方法を示す。
【００９４】
当業者には明らかであるように、方法を実施する多くの異なる態様が存在する。例えば、ステージまたはステップの順序を変更したり、いくつかのステージを並行して実行したりすることができる。さらに、ステップ間に他の方法ステップを挿入することができる。挿入されるステップは、本明細書に記載されるような方法を改良するものであったり、または方法と無関係であってもよい。
【００９５】
ネットワークからダウンロード可能な、および／またはコンピュータ可読媒体および／またはマイクロプロセッサ実行可能媒体上に記憶されたコンピュータプログラム製品が提供される。コンピュータプログラム製品は、コンピュータデバイス上で実行されたときに上記の方法、接続シーケンス、セキュリティプロセス、およびさらなる動作を実現するためのプログラムコード命令を含む。よって、本発明に係る方法は、プロセッサシステムに該当する方法を実行させるための命令を含むソフトウェアを使用して実行され得る。
【００９６】
典型的には、上記暗号化プロセスを実行するデバイスはそれぞれ、デバイスに保存された適切なソフトウェアコードを保有するメモリに結合されたプロセッサを備える。例えば、ソフトウェアは、対応するメモリ、例えばＲＡＭのような揮発性メモリ、またはフラッシュ（図示せず）のような不揮発性メモリにダウンロードおよび／または保存されていてもよい。デバイスは、例えば、マイクロプロセッサおよびメモリ（図示せず）を備えていてもよい。あるいは、デバイスは、全体的にまたは部分的に、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、プログラマブルロジックに実装されてもよい。デバイスおよびサーバは、全体的にまたは部分的に、いわゆる特定用途向け集積回路（ＡＳＩＣ）、すなわち、特定の用途向けにカスタマイズされた集積回路（ＩＣ）として実装されてもよい。例えば、回路は、例えばＶｅｒｉｌｏｇ、ＶＨＤＬなどのハードウェア記述言語を使用して、ＣＭＯＳで実装されてもよい。
【００９７】
ソフトウェアは、システムの特定のサブエンティティによって取られるステップのみを含んでもよい。ソフトウェアは、ハードディスク、フロッピー、メモリなどの適切な記憶媒体に保存されてもよい。ソフトウェアは、有線または無線を介する信号として、またはインターネットなどのデータネットワークを使用して供給されてもよい。ソフトウェアは、サーバ上でダウンロードおよび／またはリモート使用可能にされてもよい。本発明に係る方法は、方法を実行するためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を構成するように構成されたビットストリームを使用して実行されてもよい。ソフトウェアは、ソースコード、オブジェクトコード、部分的にコンパイルされた形式のようなコード中間ソースおよびオブジェクトコード、または本発明に係る方法の実施のための使用に適した任意の他の形式などの形式を取り得る。コンピュータプログラム製品に関する実施形態は、上記方法のうちの少なくとも１つの方法の処理ステップに対応するコンピュータ実行可能命令を含む。これらの命令は、サブルーチンに細分され、および／または静的に若しくは動的にリンクされ得る１つまたは複数のファイルに保存され得る。コンピュータプログラム製品に関する他の実施形態は、少なくとも１つの上記システムおよび／または製品の手段に対応するコンピュータ実行可能命令を含む。
【００９８】
図１４ａは、一実施形態に係る、コンピュータプログラム１０２０を含む書き込み可能部分１０１０を有するコンピュータ可読媒体１０００を示し、コンピュータプログラム１０２０は、プロセッサシステムに図１および図４〜図１１を参照しながら上記で説明した方法およびプロセスのうちの１つまたは複数を実行させるための命令を含む。コンピュータプログラム１０２０は、物理的なマークとして、またはコンピュータ可読媒体１０００の磁化によって、コンピュータ可読媒体１０００上に具現化され得る。しかしながら、任意の他の適切な実施形態もまた考えられる。さらに、ここではコンピュータ可読媒体１０００が光ディスクとして示されているが、コンピュータ可読媒体１０００は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、また、記録不能または記録可能であってもよい。コンピュータプログラム１０２０は、プロセッサシステムに前記方法を実行させるための命令を含む。
【００９９】
図１４ｂは、図１および図４〜図１１を参照しながら説明したデバイスまたは方法の一実施形態に係るプロセッサシステム１１００の概略図である。プロセッサシステムは回路１１１０、例えば１つまたは複数の集積回路を備えることができる。回路１１１０のアーキテクチャが図中に概略的に示されている。回路１１１０は、一実施形態に係る方法を実行し、および／または、そのモジュール若しくはユニットを実装するためにコンピュータプログラムコンポーネントを実行するための処理ユニット１１２０（例えばＣＰＵなど）を備える。回路１１１０は、プログラミングコード、データ等を保存するためのメモリ１１２２を含む。メモリ１１２２の一部は読み出し専用であってもよい。回路１１１０は、通信要素１１２６、例えばアンテナ、送受信機、コネクタ、または両方などを備え得る。回路１１１０は、本方法で定義された処理の一部または全部を実行するための専用集積回路１１２４を備え得る。プロセッサ１１２０、メモリ１１２２、専用ＩＣ１１２４、および通信要素１１２６は相互接続１１３０、例えばバスを介して相互に接続され得る。プロセッサシステム１１１０は、コネクタおよび／またはアンテナをそれぞれ用いた有線および／または無線通信のために構成され得る。
【０１００】
明瞭さのために、上記の説明は、様々な機能的ユニットおよびプロセッサに関連して本発明の実施形態を説明している。しかしながら、本発明から逸脱することなく、異なる機能的ユニットまたはプロセッサ間で機能が任意に適切に分配され得ることが理解されよう。例えば、複数の別々のユニット、プロセッサ、またはコントローラによって実行されるように示された機能が、同じプロセッサまたはコントローラによって実行されてもよい。したがって、特定の機能ユニットへの言及は、厳密な論理的または物理的な構造もしくは構成を示すものではなく、説明される機能を提供するための適切な手段への言及であると考えられたい。本発明は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせを含む任意の適切な形態で実施することができる。
【０１０１】
本明細書中、「含む」という単語は列挙されたもの以外の要素またはステップの存在を除外せず、単数形は、かかる要素が複数存在することを除外しないことに留意されたい。いかなる参照符号も特許請求の範囲を制限しない。本発明はハードウェアおよびソフトウェアの両方によって実装され得る。複数の「手段」または「ユニット」が同一のハードウェアまたはソフトウェアアイテムによって表される可能性がある。プロセッサが（場合によってはハードウェア要素と協働して）１つまたは複数のユニットの機能を果たしてもよい。さらに、本発明は、実施形態に限定されるものではなく、本発明は、上記されたまたは互いに異なる従属請求項に記載された全ての新規の特徴または特徴の組み合わせに及ぶ。
【０１０２】
要約すると、デバイスは、入力データを暗号化して、入力データおよび関連データの完全性を保護するように構成される。暗号化プロセッサは、入力データに基づいて完全性値を計算するように構成された第１のＨＡＳＨユニットと、完全性値および関連データに基づいて初期化ベクトルを計算するように構成された第２のＨＡＳＨユニットとを有する。これらのＨＡＳＨユニットのうちの少なくとも１つは鍵付きＨＡＳＨユニットであってもよい。暗号化ユニットは、初期化ベクトルおよび暗号化鍵を使用して入力データを暗号化することで暗号化されたデータを生成するように構成される。実質的に、初期化ベクトルは完全性値とは異なる。初期化ベクトルは完全性値および関連データの両方に依存するため、これらに変更が加えられると復号が失敗し、元の平文Ｐとは大きく異なるデータに復号される。
【０１０３】
参考文献：
［３ＤＥＳ］  ＳＰ  ８００−６７  Ｒｅｖ．  ２，  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  ｔｈｅ  Ｔｒｉｐｌｅ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ  （ＴＤＥＡ）  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ
［ＣＭＡＣ］  Ｄｗｏｒｋｉｎ，  Ｍ．，  “Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ：  Ｔｈｅ  ＣＭＡＣ  Ｍｏｄｅ  ｆｏｒ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ”，  ＮＩＳＴ  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−３８Ｂ，  Ｍａｙ  ２００５．
［ＤＨ］  Ｄｉｆｆｉｅ，  Ｗ．；  Ｈｅｌｌｍａｎ，  Ｍ．  （１９７６），  “Ｎｅｗ  ｄｉｒｅｃｔｉｏｎｓ  ｉｎ  ｃｒｙｐｔｏｇｒａｐｈｙ”，  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ，  ２２  （６）：  ６４４‐６５４
［ＤＳＳ］  “Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ｓｔａｎｄａｒｄ  （ＤＳＳ）”，  ＵＳＡ，  Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ，  Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄ  （ＦＩＰＳ）  １８６−４．
［ＥＶＡＬ］  Ｐｈｉｌｌｉｐ  Ｒｏｇａｗａｙ，  “Ｅｖａｌｕａｔｉｏｎ  ｏｆ  Ｓｏｍｅ  Ｂｌｏｃｋｃｉｐｈｅｒ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ”，  Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｃａｌｉｆｏｒｎｉａ，  Ｄａｖｉｓ，  Ｆｅｂｒｕａｒｙ  １０，  ２０１１．
［ＭＯＤＥＳ］  Ｄｗｏｒｋｉｎ，  Ｍ．，  “Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ：  Ｍｅｔｈｏｄｓ  ａｎｄ  Ｔｅｃｈｎｉｑｕｅｓ”，  ＮＩＳＴ  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−３８Ａ，  ２００１  ｅｄｉｔｉｏｎ．
［ＲＦＣ２１０４］  “ＨＭＡＣ：  Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ”，  Ｆｅｂｒｕａｒｙ  １９９７．
［ＲＦＣ４８６８］  “Ｕｓｉｎｇ  ＨＭＡＣ−ＳＨＡ−２５６，  ＨＭＡＣ−ＳＨＡ−３８４，  ａｎｄ  ＨＭＡＣ−ＳＨＡ−５１２  ｗｉｔｈ  ＩＰｓｅｃ”，  Ｍａｙ  ２００７
［ＲＦＣ５２９７］  Ｓｙｎｔｈｅｔｉｃ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｖｅｃｔｏｒ  （ＳＩＶ）  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｕｓｉｎｇ  ｔｈｅ  Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ  （ＡＥＳ），  Ｏｃｔｏｂｅｒ  ２００８，  （ｈｔｔｐｓ：／／ｄａｔａｔｒａｃｋｅｒ．ｉｅｔｆ．ｏｒｇ／ｄｏｃ／ｒｆｃ５２９７／  ）
［ＲＦＣ６２３４］  ＵＳ  Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍｓ  （ＳＨＡ  ａｎｄ  ＳＨＡ−ｂａｓｅｄ  ＨＭＡＣ  ａｎｄ  ＨＫＤ，  Ｍａｙ  ２０１１，  （ｈｔｔｐｓ：／／ｄａｔａｔｒａｃｋｅｒ．ｉｅｔｆ．ｏｒｇ／ｄｏｃ／ｒｆｃ６２３４／  ）
［ＸＴＳ−ＡＥＳ］  Ｄｗｏｒｋｉｎ，  Ｍ．，  “Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  ｂｌｏｃｋ  ｃｉｐｈｅｒ  ｍｏｄｅｓ  ｏｆ  ｏｐｅｒａｔｉｏｎ：  Ｔｈｅ  ＸＴＳ−ＡＥＳ  ｍｏｄｅ  ｏｆ  ｃｏｎｆｉｄｅｎｔｉａｌｉｔｙ  ｏｎ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅｓ”，  ＮＩＳＴ  Ｓｐｅｃｉａｌ  Ｐｕｂｌｉｃａｔｉｏｎ  ８００−３８Ｅ，  Ｊａｎ．  ２０１０．
【図１】
2021528899.tif 000007
【図２】
2021528899.tif 000008
【図３】
2021528899.tif 000009
【図４】
2021528899.tif 000010
【図５】
2021528899.tif 000011
【図６】
2021528899.tif 000012
【図７】
2021528899.tif 000013
【図８】
2021528899.tif 000014
【図９】
2021528899.tif 000015
【図１０】
2021528899.tif 000016
【図１１】
2021528899.tif 000017
【図１２】
2021528899.tif 000018
【図１３】
2021528899.tif 000019
【図１４ａ】
2021528899.tif 000020
【図１４ｂ】
2021528899.tif 000021
【国際調査報告】
2021528899.tif 000022
2021528899.tif 000023
2021528899.tif 000024