(57)【要約】      （修正有）【課題】セキュリティレベルが高く、入出力バッファのサイズが変更でき、処理が高速であり、低消費電力で、サイドチャネル攻撃に対しても強固なハッシュ関数を構築する方法を提供する。【解決手段】メッセージを取得し、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックになるように、区分と埋め込みとを行う。次いで、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施し、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックとの後続ビットミキシング演算を実施する。更に、秘密キー要素を用いて、第１ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を生成する。【選択図】図１１
2019079037.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ認証タグ（３３６、９０８、９１２）を生成するための、コンピュータ実装される方法（１０００）であって、
メッセージ（９０４）を取得すること（１００５）と、
電子プロセッサ（１２０２）によって、前記メッセージを、第１メッセージブロック（４１０）、一又は複数の後続メッセージブロック（４１２）、及び最終メッセージブロック（４１４）を含む、いくつかの均等サイズのメッセージブロック（４１０、４１２、４１４）に区分すること（１０１０）と、
前記電子プロセッサによって、前記第１メッセージブロックに、初期化値（４１８）を用いて第１ビットミキシング演算（３２４）を実施すること（１０１５）と、
前記電子プロセッサによって、前記一又は複数の後続メッセージブロック及び前記最終メッセージブロックに、先行メッセージブロックとの後続ビットミキシング演算（３２８、３３２）を実施すること（１０２０）と、
前記電子プロセッサによって、前記第１ビットミキシング演算及び前記後続ビットミキシング演算に基づく前記メッセージ認証タグを生成すること（１０２５、１０４０）とを含む、方法。
【請求項２】
前記メッセージが、プレーンテキストメッセージ（３１４、３１６）又は暗号化されたメッセージ（３１８、３２０）である、請求項１に記載の方法。
【請求項３】
いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズム（９０６）を用いて、前記均等サイズのメッセージブロックの各々を暗号化すること（１０３５）を更に含む、請求項１又は２に記載の方法。
【請求項４】
前記第１メッセージブロック、前記一又は複数の後続メッセージブロック、及び前記最終メッセージブロックは、暗号化されたメッセージブロックである、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記メッセージ認証タグを、プレーンテキストである前記メッセージ（３１４、３１６）と共に受信器（９１０）に送ること（１０４０）を更に含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記メッセージ認証タグを、暗号化されている前記メッセージ（３１８、３２０）と共に受信器（９１０）に送ることを更に含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記第１ビットミキシング演算及び前記後続ビットミキシング演算が、ダブルミックスファイステルネットワーク（５００、６００）、換字転置ネットワーク（７００）、排他的ＯＲ（ＸＯＲ）ツリー（８００）、又は２つ以上のビットミキサ構造（３００、４００）の並列組み合わせ（２０５、２１０、２１５、２２０）、に基づくビットミキサ構造（１００、２００）によって実施される、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記第１ビットミキシング演算及び前記後続ビットミキシング演算がキー要素（１１５）を使用して実施される、請求項１から７のいずれか一項に記載の方法。
【請求項９】
電子プロセッサ（１２０２）と、
命令を記憶している非一過性のコンピュータ可読媒体とを備える、コンピュータシステム（９００）であって、前記命令は、前記電子プロセッサによって実行されると、メッセージ認証タグ（３３６、９０８、９１２）を生成するための方法を実施し、前記方法が、
メッセージ（９０４）を取得することと、
前記メッセージを、第１メッセージブロック（４１０）、一又は複数の後続のメッセージブロック（４１２）、及び最終メッセージブロック（４１４）を含む、いくつかの均等サイズのメッセージブロック（４１０、４１２、４１４）に区分することと、
前記第１メッセージブロックに、初期化値（４１８）を用いて第１ビットミキシング演算（３２４）を実施することと、
前記一又は複数の後続メッセージブロック及び前記最終メッセージブロックに、先行メッセージブロックとの後続ビットミキシング演算（３２８、３３２）を実施することと、
前記第１ビットミキシング演算及び前記後続ビットミキシング演算に基づいて、前記メッセージ認証タグを生成することとを含む、コンピュータシステム。
【請求項１０】
前記第１ビットミキシング演算及び前記後続ビットミキシング演算が、ダブルミックスファイステルネットワーク（５００、６００）、換字転置ネットワーク（７００）、ＸＯＲツリー（８００）、又は２つ以上のビットミキサ構造（３００、４００）の並列組み合わせ（２０５、２１０、２１５、２２０）、に基づくビットミキサ構造（１００、２００）によって実施される、請求項９に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、情報のアシュアランス及びセキュリティに関する。
【背景技術】
【０００２】
情報アシュアランスにおいては、あるデータがメッセージダイジェストを付与しても、敵対者はこのメッセージ（又は、同じメッセージダイジェスト又はＭＡＣ値を生成する同等代替物）を再構築できないことを検証するために、ハッシュ関数とメッセージ認証コード（ＭＡＣ）が使用されうる。一部の応用工程では、スピード及び電力消費量は重要であるが、セキュリティ要件は緩和される。それ以外の場合は、高度なセキュリティ（長いダイジェスト）が必要になる。ハッシュ関数及びＭＡＣにより、ある入力データが所与のメッセージダイジェストにマッピングされていることの検証が可能になるが、敵対者は、このダイジェストだけを知ることによってメッセージ（又は同等代替物）を再構築することはできない。商業的及び軍事的な航空機産業、データセンター、パソコンを含む応用があるが、これらの応用では、メッセージダイジェストサイズが適切に選ばれる高度なセキュリティレベルが必要になるか、セキュリティ要件を緩和しても稼働時間及び電力使用が重要になるかの、いずれかである。これらの応用のためには、低電力で非常に高速なハッシュ関数及びＭＡＣ関数が必要であるが、これらの関数は、多くの場合、サイドチャネル攻撃に対する高耐性という追加要件も伴う。
【０００３】
現時点で使用されているハッシュ関数及びＭＡＣ関数は、入力及び出力バッファのサイズの変更ができない、融通のきかないものであり、非常に緩慢であり、多くの電力／エネルギーを消費し、かつ、それら自体がサイドチャネル攻撃に対して脆弱である。結果として得られるセキュリティレベルは、商業的及び軍事的な航空機産業における多くの応用では既存のソリューションよりも高いレベルのセキュリティ又は良好な性能が必要とされているにもかかわらず、事前設定されたいくつかのレベルに固定される。
【０００４】
必要とされているのは、上記の欠点を克服するハッシュ関数及びＭＡＣ関数である。
【発明の概要】
【０００５】
本開示の例により、メッセージ認証タグを生成するための、コンピュータ実装される方法が提供される。この方法は、メッセージを取得することと、電子プロセッサによって、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込み（ｐａｄｄｉｎｇ）を行うことと、電子プロセッサによって、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第１ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することとを、含む。一部の例では、メッセージは、プレーンテキストメッセージ又は暗号化されたメッセージである。
【０００６】
一部の例では、方法は、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。
【０００７】
一部の例では、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである。
【０００８】
一部の例では、方法は、メッセージ認証タグを、プレーンテキストであるメッセージと共に受信器に送ることを、更に含みうる。
【０００９】
一部の例では、方法は、メッセージ認証タグを、暗号化されているメッセージと共に受信器に送ることを、更に含みうる。
【００１０】
一部の例では、第１ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置（ｓｕｂｓｔｉｔｕｔｉｏｎ−ｐｅｒｍｕｔａｔｉｏｎ）ネットワーク、若しくはＸＯＲツリーに基づくビットミキサ構造、又は、２つ以上の単純なビットミキサ構造の並列組み合わせ（集合）によって、実施される。
【００１１】
一部の例では、第１ビットミキシング演算及び後続ビットミキシング演算は、キー要素を使用して実施される。一部の例では、キー要素は明らかにされず、メッセージ認証タグはメッセージ認証コードである。
【００１２】
一部の例では、方法は、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合（ｃｏｎｃａｔｅｎａｔｉｏｎ）に基づく出力を用いて、最終ビットミキシング演算を実施することと、秘密キーのもとで、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタ（ｎｕｌｌｃｏｕｎｔｅｒ）を用いて、排他的ＯＲ演算を実施することとを、更に含む。
【００１３】
本開示の例により、メッセージ向けのハッシュ値を生成するための、コンピュータ実装される方法が提供される。この方法は、メッセージを取得することと、電子プロセッサによって、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込みを行うことと、電子プロセッサによって、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第１ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を決定することとを、含む。一部の例では、メッセージは、プレーンテキストメッセージであるか、暗号化されたメッセージであるか、又は、他の任意の種類の電子フォーマットのデータである。一部の例では、第１ビットミキシング演算及び後続ビットミキシング演算には、公開されているキー要素が使用される。
【００１４】
一部の例では、方法は、最後のメッセージブロックに、ハッシュ算出において実施される他の全てのビットミキシング演算と相違しているビットミキシング演算を実施することを更に含み、この相違は、ビットミキサの構造におけるもの、及び／又は、そこで使用されるキー要素におけるものでありうる。
【００１５】
一部の例では、方法は、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含む。一部の例では、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである。一部の例では、第１ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置ネットワーク、若しくはＸＯＲツリーに基づくビットミキサ構造、又は、２つ以上の単純なビットミキサ構造の並列組み合わせ（集合）によって、実施される。
【００１６】
本開示の例により、プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備えるコンピュータシステムであって、命令は、プロセッサによって実行されると、メッセージ認証タグを生成するための方法を実施し、方法が、メッセージを取得することと、電子プロセッサによって、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込みを行うことと、電子プロセッサによって、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第１ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することとを、含む。一部の例では、第１ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置ネットワーク、若しくはＸＯＲツリーに基づくビットミキサ構造、又は、２つ以上の単純なビットミキサ構造の並列組み合わせ（集合）によって、実施される。一部の例では、プロセッサは、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的ＯＲ演算を実施することとを含む、方法を実施するよう更に動作可能である。
【００１７】
本開示の例により、プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備えるコンピュータシステムであって、命令は、プロセッサによって実行されると、メッセージ認証タグを生成するための方法を実施し、方法が、メッセージを取得することと、電子プロセッサによって、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込みを行うことと、電子プロセッサによって、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、処理済みの先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第１ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を生成することとを含む、コンピュータシステムが提供される。一部の例では、第１ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置ネットワーク、若しくはＸＯＲツリーに基づくビットミキサ構造、又は、２つ以上の単純なビットミキサ構造の並列組み合わせ（集合）によって、実施される。一部の例では、プロセッサは、最終メッセージブロックに基づく出力を用いて、最終ビットミキシング演算を実施することと、ハッシュ値の算出における他の全てのビットミキシングと相違しているビットミキサを用いて、最終ビットミキシング演算を実施することとを含む、方法を実施するよう、更に動作可能である。
【００１８】
実施形態の様々な特徴は、添付の図面と関連性を考慮しつつ実施形態についての以下の詳細説明を参照することで、かかる特徴がより良好に理解されるようになれば、一層網羅的に認識されうる。
【図面の簡単な説明】
【００１９】
【図１】本開示の例による、ビットミキサのブロック図１００を示す。
【図２】本開示の例による、集合型ビットミキサのブロック図２００を示す。
【図３】本開示の例による、ガロアＭＡＣ（ＧＭＡＣ）様構造３００によるハッシュ／ＭＡＣ関数を示す。
【図４】本開示の例による、マークル−ダンガード様構造４００によるハッシュ／ＭＡＣ関数を示す。
【図５】本開示の例示的な実行形態による、図３及び図４のビットミキサとして使用されうるダブルミックスファイステルネットワーク（ＤＭＦＮ）５００の１ラウンドを示す。
【図６】その他の例示的な実行形態による、図３及び図４のビットミキサとして使用されうるＤＭＦＮ６００の１ラウンドを示す。
【図７】本開示の例示的な実行形態による、図３及び図４のビットミキサとして使用されうる換字転置ネットワーク７００の３ラウンドを示す。
【図８】様々な例示的な実行形態による、図３及び図４のビットミキサとして使用されうるＸＯＲツリー８００を示す。
【図９】本開示の例による、図３及び図４の構造を使用しうるメッセージ認証のためのシステム９００を示す。
【図１０】本開示の例による、メッセージ認証タグを生成するための方法１０００を示す。
【図１１】本開示の例による、ハッシュ値を生成するための方法１１００を示す。
【図１２】上述したプロセスのうちの一又は複数を実施するために使用されうる、携帯デバイス又はサーバとして使用されうるコンピュータデバイス１２００のハードウェア構成の一例を示す。
【発明を実施するための形態】
【００２０】
これより、添付図面に示している例示的な実行形態について、詳しく言及していく。同じ又は類似した部品に言及するのに、可能な場合は常に、図面全体を通じて同じ参照番号を使用する。以下の説明では、その一部を形成している添付図面を参照する。これらの図面には、本発明が実践されうる、具体的かつ例示的な実施形態が、例示を目的として図示されている。これらの実施形態は、当業者による本発明の実践を可能にするのに十分なほど詳細に説明されているが、他の実施形態例が利用可能であること、及び、本発明の範囲から逸脱しなければ変更がなされうることを、理解されたい。したがって、以下の説明は単なる例示にすぎない。
【００２１】
ハッシュ／ＭＡＣ関数構造であって、それらの標準的な暗号法上の同等物よりも安全でありかつ／又はけた違いに高速な、ハッシュ／ＭＡＣ関数構造が、本書で開示されているこれらが電子ハードウェアで実装された場合に消費する電力は、少なくなる。上記の構造は、大量のキー要素を使用しても非常に高速な、関数、ビットミキサの複雑な構造に基づくものである。キー要素が明らかにされない場合には、選択可能なセキュリティレベルを提供するＭＡＣ構造を取得する。キー要素が決まって（ハードコードされて）おり、かつ公開されている場合、本書で開示している構造が、フレキシブルなハッシュ関数を提供する。通信システム及びコンピューティングシステムにおけるこれらの使用は、回路サイズの著しい増大を伴う、低コストなものであり、電力使用量も引き下げる。システムを活用することで、緩慢な電子部品を使用することが可能になり、更に、コンピューティングシステムのコスト及びエネルギーと電力の消費量が低減するが、スピードは改善され、セキュリティも向上する可能性がある。対象のシステムは、科学及び工学関連のコンピュータ使用だけでなく、フライトコンピュータのセキュリティサブシステム、軍事及び宇宙関連のプログラム、企業ネットワーク、パソコン及びラップトップコンピュータ、スマート携帯デバイス、更に安全な通信ネットワークも、含む。
【００２２】
ハッシュ関数は、不定サイズのデータを決まったサイズのデータにマッピングする。ハッシュ関数によって得られる値は、ハッシュ値、メッセージダイジェスト、データフィンガプリント（ｄａｔａ  ｆｉｎｇｅｒｐｒｉｎｔ）、又は単にハッシュと称される。ハッシュ関数の望ましい特性は決定性、均一性、非線形性を含み、これらの特性は、ビットミキサの特性に含まれるものである。ハッシュ関数の１つの使用法は、迅速なデータ検索のためにコンピュータソフトウェアで広範に使用されるデータ構造（ハッシュテーブルと称される）におけるものである。ハッシュ関数は、大規模ファイルの中の複製レコードを検出することによって、テーブル又はデータベースの検索を加速させる。ハッシュ関数が秘密キーに依存している場合には、メッセージ認証コード生成器（ＭＡＣ生成器）を有する。
【００２３】
ハッシュ関数は、暗号法においても使用される。暗号ハッシュ関数により、ある入力データが所与のハッシュ値にマッピングされていると容易に検証することが可能になるが、この入力データが未知のものである場合に、ハッシュ値だけを知ることによってこのデータ（又は同等代替物）を再構築するのは、困難になるようにされている。この特性は、アクティブな敵対者が存在している中で送信データの保全性を確保するために使用されるものであり、かつ、メッセージ認証タグを提供する、ＭＡＣの基礎的要素である。かかるハッシュ関数の更なる望ましい特性は、プレイメージ耐性、第２プレイメージ耐性、及び一致（ｃｏｌｌｉｓｉｏｎ）耐性である。望ましいセキュリティ強度を正確に提供するためには、多くの場合、不定ダイジェストサイズの構造が必要とされる。
【００２４】
情報セキュリティの分野においても、ハッシュ／ＭＡＣ関数の要件が緩和されうる応用（例えば、敵対者にとって、ハッシュ関数の入力と出力のどちらもアクセス可能ではない場合）が存在する。これは、乱数発生器において、多数であるが決まった数の不完全なエントロピー源がハッシュ関数の入力を提供する場合であってよく、これにより、不完全なエントロピー源はひとまとめに「ミキシング（ｍｉｘ）」され、その集合サイズは、決まったバッファに適合するよう低減される。元々のエントロピーは、可能な限り保存される必要がある。エントロピービットをＸＯＲすることは、出力を単一ビットまで低減するものであり、不完全でもあるので、無駄である。例えば、エントロピー源同士が関連付けられても、その効果はＸＯＲ関数によって無効化されることがあり、対応するエントロピーは失われる。ＸＯＲとは、排他的ＯＲ（ＸＯＲ）であり、排他的論理和又は論理ＸＯＲ演算とも称される。
【００２５】
入力が大規模であるがそのサイズが決まったものである、その他の応用も存在する。この入力は、入力からのエントロピーを可能な限り保ちつつ、より小さなサイズに縮小される必要があり、例えば、不均衡なファイステル構造（Ｆｅｉｓｔｅｌ  ｃｉｐｈｅｒ）において、大規模ブロック暗号化（スキップジャックやＸＣＢなど）に使用される。このような場合、大規模ビットミキサ関数は、電子ハードウェアにおいて直接的に構築されうる。出力から望ましい数のビットだけが保持されるか、又は、出力ビットが、ビット単位のＸＯＲ演算によって、望ましい長さに折り返される。
【００２６】
他の応用は、ファイルなどの大規模データセットのチェックサム型フィンガプリントを含む。データにおける確率誤差を検出するために、一般的には、ＣＲＣ（巡回冗長検査）アルゴリズムが使用される。しかし、ＣＲＣアルゴリズムはあまりに単純であり（例えば、ある種の、多くの場合偶発的な、多重エラーの影響が無効化されることがあり）、したがって、もっと複雑なデータ保全性検査が求められている。
【００２７】
悪意に基づく意図的なデータ変更が、懸念の対象ではなく単に確率誤差の問題であれば、暗号ハッシュ関数のスキームを使用することによって、ビットミキサから保全性検査用のハッシュ関数を構築することができる。ビットミキサが電子ハードウェアにおいて実装される場合、それによって得られるハッシュ／ＭＡＣ関数は、現行の標準的な暗号ハッシュ関数よりも３桁高速になる。ただし、これらのハッシュ／ＭＡＣ関数は、最も単純な（単純なビットミキサを使用する）構造においては、安全性が低下するので、あらゆる応用において暗号ハッシュ関数を置換できるわけではない。
【００２８】
後述のビットミキサは、カスケードされうる（１つのビットミキサの出力がその次のビットミキサの入力になる）。カスケードされたビットミキサは、十分に多くのステージにおいて、安全な暗号（ｃｉｐｈｅｒ）となる。この特性により、スピードとセキュリティとをトレードすることが可能になる。それでも、これらのビットミキサがハードウェアに実装されると、それによって得られる性能（スピード、出力）は、全てのセキュリティレベルにおいて、既存のソリューションよりも少なくとも一桁向上する。ビットミキサは大量のキー要素を使用し、このキー要素は、最も一般的なビットミキサ構造の入力と出力のうち大きい方のサイズのかたまりに、分割される。これらのかたまりは、「サブキー（ｓｕｂｋｅｙｓ）」と称される。キー要素が明らかにされない場合、後述の構造はＭＡＣ関数を提供する（キー要素についての知識を有しているだけで、誰でもメッセージ認証コードを構築又は検証できる）。キー要素が決まって（ハードコードされて）おり、かつ公開されている場合、後述の構造はハッシュ関数を提供する。
【００２９】
図１は、本開示の例による、ビットミキサのブロック図１００を示している。ビットミキサ１０５は、ｎビット入力１１０のビットに関連付けられたビット列と、キー要素１１５とをミキシングして、ｍビット出力１２０を生成するよう、作用する。通常、ビットミキサ（例えばビットミキサ１０５）は、
１．ビットミキサが、ｎビット入力をｎビット出力にマッピングすること（実際の実行形態ではｎ＝ブロックサイズは数千でありうる）、
２．ミキシングが大量の秘密キー要素に依存していること（この秘密キー要素は、単一のキーから、又は真性乱数発生器によって生成されてよく、場合によってはこれらを組み合わせることも可能である）、
３．あらゆる入力ビットが、非線形に、あらゆる出力ビットに影響を与えること、
４．（キー要素から個別に選ばれる）入力ビットの非空セットの大部分も、あらゆる出力ビットに影響を与える（無効化される影響はない）こと、
５．入力の連続変更のほとんどは、入力又は入力の変更パターンとの明白な相関を有さない出力をもたらすこと、という特性を有する。
【００３０】
実際には、対応するビットミキサの設計では、入力、出力、及びキー要素が特定される必要がある。これは「構造（ｃｏｎｓｔｒｕｃｔｉｏｎ）」と称される。入力列のミキシングを向上させるために、複数のビットミキサが（カスケードされるのとは対照的に）並列に組み合わされうる。図２は、本開示の例による、集合型ビットミキサのブロック図２００を示している。ビットミキサ（Ｍｉｘ１２０５、Ｍｉｘ２２１０、Ｍｉｘ３２１５、…、Ｍｉｘｋ２２０）は同一のｎビット入力２２５を受信し、これらのビットミキサの出力は、組み合わされ２３０、ｍビット出力として出力され２３５うる（例えば、ビット単位のＸＯＲ演算を用いる）。この構造により、回路サイズとセキュリティとをトレードすることが可能になる。ビットミキサは、カスケードされる（場合によっては既存の電子回路を再使用して直列に接続される）ことも可能であり、この場合、１つのビットミキサの出力がその次のビットミキサの入力になる。これらのビットミキサは、十分に多くのステージにおいて安全な暗号となる。この特性により、スピードとセキュリティとをトレードすることが可能になる。それでも、これらのビットミキサがハードウェアに実装されると、それによって得られる性能（スピード、出力）は、全てのセキュリティレベルにおいて、既存のソリューションよりも少なくとも一桁向上する。
【００３１】
以下で詳述する図５から図８は、ガロアメッセージ認証コード（ＧＭＡＣ）様構造を図示している図３、及びマークル−ダンガード様構造を図示している図４（これらの構造は両方とも、データブロックを順次処理する）のビットミキサとして使用されうる、ビットミキサの具体例を示している。
【００３２】
図３は、本開示の例による、ＧＣＭ暗号化モードから生じたＧＭＡＣ様構造３００によるハッシュ／ＭＡＣ関数を示している。カウンタモード暗号化演算において、インクリメントカウンタ（カウンタ０  ３０２、カウンタ１  ３０４、カウンタ２  ３０６）は、ブロック暗号及びキーｋ（ＡＥＳなど）を使用して、３０８、３１０、３１２においてそれぞれ暗号化される。カウンタ３０２、３０４、３０６の各々は、更なるランダム性を提供するよう、初期化ベクトル（ＩＶ）と組み合わされ（例えば結合され）うる。プレーンテキストは、均等サイズのブロック（プレーンテキスト１  ３１４及びプレーンテキスト２  ３１６）に分割され、それぞれが暗号化されたカウンタ３１０、３１２とＸＯＲされて、暗号テキスト１  ３１８及び暗号テキスト２  ３２０がそれぞれ生成される。ハッシュ／ＭＡＣ関数３４０は、ビットミキサ３２４に入力される認証データ３２２（Ａｕｔｈデータ  １）（入力ｘ、入力ｙ＝０）を含み、ビットミキサ３２４は、ビットミキサ３２８への出力を、入力３２６（入力ｘ）として、暗号テキスト１  ３１８（入力ｙ）と同時に提供する。暗号テキスト２  ３２０（入力ｙ）と、ビットミキサ３２８の及び出力３３０（入力ｘ）が、ビットミキサ３３２に提供される。ビットミキサ３３４は、ビットミキサ３３２の出力、及び、認証しかされていない（暗号化されていない）データであるデータＡの長さと暗号テキストＣの長さの連結値（
2019079037.tif 000003
で表わされる）を受信する。認証タグ３３６を生成するために、ビットミキサ３３４の出力は、暗号Ｅｋ３０８によって暗号化されたカウンタ０  ３０２とＸＯＲされる。
【００３３】
認証タグ３３６は、データブロックをＧＨＡＳＨ関数に入れ、その算定結果を暗号化することによって構築される。このＧＨＡＳＨ関数は、
ＧＨＡＳＨ（Ｈ，Ａ，Ｃ）＝Ｘｍ＋ｎ＋１
によって定義され、ここで、Ｈはハッシュキー、ブロック暗号（ＡＥＳ）を使用して暗号化された１２８ゼロビットの列であり、Ａは認証しかされていない（暗号化されていない）データであり、Ｃは暗号テキストであり、ｍはＡにおける１２８ビットブロックの数であり、ｎはＣにおける１２８ビットブロックの数であり、（Ａ及びＣの最終ブロックは厳密に１２８ビットである必要はない）、かつ、ｉ＝０、．．．、ｍ＋ｎ＋１の場合の変数Ｘｉは、
2019079037.tif 000004
と定義され、ここで、Ｍはキー要素Ｈを伴う単一ビットミキサ又は集合ビットミキサ：ｆ（ｘ，ｙ）＝ＭＨ（ｘ｜｜ｙ）であり、ｖはＡの最終ブロックのビット長であり、ｕはＣの最終ブロックのビット長であり、｜｜はビット列の結合を意味しており、かつ、ｌｅｎ（Ａ）とｌｅｎ（Ｃ）はそれぞれ、ＡとＣのビット長の６４ビット表現である。これは反復アルゴリズムである（各ＸｉはＸｉ−１に依存しており、最終Ｘｉだけが出力として保持される）ことに、留意されたい。
【００３４】
図４は、本開示の例による、マークル−ダンガード様構造４００によるハッシュ／ＭＡＣ関数を示している。マークル−ダンガード様構造４００は、安全圧縮関数ｆ４０２、４０４、４０６、４０８を使用し、この場合、入力はその出力よりも大きくなる。各関数ｆ４０２、４０４、４０６、４０８は、異なる番号が振られているが、同種のものである。一部の例では、関数ｆ４０２、４０４、４０６、４０８は、これらの出力ビットの半分がディスカードされた（又は、ビット単位のＸＯＲ演算によって残り半分に折り返された）状態で、可逆（ｉｎｖｅｒｔｉｂｌｅ）ビットミキサによって実装されうる。一部の例では、ビットミキサの第１サブキー（例えばｆ４０２）は入力として扱われてよく、これにより、ビットミキサは、その出力を改変しなくとも、圧縮関数となる。プレーンテキストはｎ個の均等サイズのブロック（メッセージブロック１  ４１０、メッセージブロック２  ４１２、…、メッセージブロックｎ  ４１４）に分割される。必要に応じて、更なる埋め込みビット（長さ埋め込み４１６）が、最後のブロック（例えばメッセージブロックｎ  ４１４）に付加されうる。第１関数（例えばｆ４０２）は、入力として、初期化ベクトル（ＩＶ）４１８及びメッセージブロック１  ４１０を受容する。最終関数（例えばｆ４０８）は出力を生成し（最終処理４２０）、この出力は次いで、ハッシュ４２２を生成するためにハッシュ関数によってハッシュされる。
【００３５】
関数ｆ４０２、４０４、４０６、４０８は、決まったサイズ（ビットの長さ）の２つの入力ｘ及びｙを有し、かつ、出力ｚを算出する。ＩＶは、決まった定数であるか、ある種の応用で必要になるように、最終ハッシュ値を変化させる何らかのパーソナライズ値であるかの、いずれかである。公式には、ｚ１＝ｆ（ＩＶ，Ｂ１）であり、かつ、ｉ＝１…ｎである場合にｚｉ＋１＝ｆ（ｚｉ，Ｂｉ＋１）ｆｏｒである。ハッシュ値は、所与の最終処理関数Ｆを伴うＦ（ｚｉ＋１）である。
【００３６】
ＧＨＡＳＨ関数は、マークル―ダンガード構造を、何らかの改変を伴って具体化したものである。メッセージはＡとＣという２つの部分に分けられる。ＩＶ＝０、かつ、追加入力、「ハッシュキー（ｈａｓｈ  ｋｅｙ）」と称される定数Ｈ、を伴う
2019079037.tif 000005
であれば、埋め込みスキームが明白に定義される。最終処理関数も追加入力
2019079037.tif 000006
を有する。
【００３７】
図５は、本開示の例示的な実行形態による、図３及び図４のビットミキサとして使用されうる、半分長の鍵ダブルミックスファイステルネットワーク（ＤＭＦＮ）５００の１ラウンドを示している。ＤＭＦＮでは、ビットミキサの圧縮又は拡張のために必要に応じて入力ビットを反復すること、又は出力ビットを折り返すことによって、ブロックサイズが、入力サイズと出力サイズのうち大きい方のものになりうる。具体的には、データは、２つの半分部ＬとＲとして扱われる。毎ラウンド（Ｒｏｕｎｄｉ）において、２つの関数Ｆ及びＧが、ＬｉとＲｉ．からＬｉ＋１、Ｒｉ＋１を算出する。最初の第１入力Ｌ０及びＲ０がビットミキサの入力のために設定される一方、一番最後の値Ｌｒ、Ｒｒは出力を構成する。Ｌｉ＋１は、出力ＦとＲｉのビット単位のＸＯＲ演算を使用して生成される一方、ラウンドキーｋｉが、下記のように、Ｇの出力を用いたビット単位のＸＯＲ演算を使用して混入されて、Ｒｉ＋１が生成される。ＤＭＦＮでは、各ラウンドｉ＝０、１、．．．、ｒ−１について、更新済みの左半分（Ｌｉ＋１）及び更新済みの右半分（Ｒｉ＋１）が算出されうる。
2019079037.tif 000007
【００３８】
上記では、第１入力Ｌ０及びＲ０がビットミキサの入力のために設定される一方、最後の値Ｌｒ、Ｒｒは出力を構成し、Ｆ及びＧは第１と第２のラウンド関数を表わし、かつ、ｋｉはラウンドキーを表わしている。ラウンドｒ−１における出力は、更新済みのデータブロック（Ｌｒ、Ｒｒ）でありうる。
【００３９】
例示的な実行形態のファイステルネットワーク及び／又はＤＭＦＮの場合、ラウンド関数（Ｆ）は非線形関数になりうる。この関数は可逆的であることも、可逆的ではないこともある。ただしこの逆関数は、第１関数が可逆的である場合には、算出するのが（必ずというわけではないが）難しくなるはずである（一方向関数）。このスキームのセキュリティは、ラウンドキーｋｉの秘密性に、及び、非線形であり、かつ、逆関数を有さないか、算出するのが難しい逆関数を有するかのいずれかであるというＦについての要件に、依拠しうる。関数は、一部の例では、ラウンド（例えばＦｉ）に依存しうる。ただし他の例では、第１関数はラウンドとは無関係であることもある。
【００４０】
好適なラウンド関数（Ｆ）の一例は、複数の論理ＮＡＮＤ演算であって、各演算が、入力の左半分のシフト後のバージョンの各対のためのものである、複数の論理ＮＡＮＤ演算、及び、このＮＡＮＤ演算の各出力のための論理ＸＯＲを含む。ＮＡＮＤ演算が３つという状況では、第１関数は、Ｌｉのシフト後のバージョンの第１の対のための第１ＮＡＮＤ演算と、Ｌｉのシフト後のバージョンの第２の対のための第２ＮＡＮＤ演算と、Ｌｉのシフト後のバージョンの第３の対のための第３ＮＡＮＤ演算と、第１、第２、及び第３のＮＡＮＤ演算の各出力のためのＸＯＲ演算とを、含みうる。ハードウェアの実行形態では、上記のシフト又はローテーションは、配線することで簡単に実装されうるので、時間がかからないことがある。ゆえに、第１関数は、２つのＸＯＲゲート遅延に加えて、２つの入力ＮＡＮＤゲートの遅延の時間だけしか要さないことがあり（ただし、ＡＮＤ又はＮＯＲのゲートは等しく良好に機能する）、これは、セルライブラリが最適化されれば、４つのＮＡＮＤ２ゲート遅延に等しい時間になりうる。本書において、ＮＯＲゲートとは、Ｎｏｔ−ＯＲ、Ｎｅｇａｔｉｖｅ−ＯＲ、又はＮｅｇａｔｅｄ−ＯＲの論理関数を実装するゲートである。
【００４１】
ＤＭＦＮの場合、第２ラウンド関数（Ｇ）は可逆的でありうる。ただしその逆関数は、容易に算出可能である必要はない。第１関数（Ｆ）と同様に、第２関数は、一部の例では、ラウンド（例えばＧｉ）に依存しうる。ただし他の例では、第２関数はラウンドとは無関係（全てのラウンドで同一）でありうる。
【００４２】
一部の例では、非線形の換字ボックス（ｓボックス）のレイヤーが第２関数（Ｇ）に使用されてよく、これにより、そのマッピングが非線形になりうる。他の例では、第２関数は左半分の循環シフト又はローテーションを実施してよく、これらは次いで、更新済みの右半分を算出するために、ひとまとめに、及びラウンドキーと、ミキシングされうる。より詳細な一例では、第２関数は、左半分の３つの循環シフト後のバージョンを生成してよく、３つのビットの各々は、その同じポジションにおいて、ひとまとめに、及びこのポジションのラウンドキーのビットとＸＯＲされて、その算出結果のビット（更新済みの右半分）が生成されうる。この点について、ブロック長＝２ｎ（ここでｎは正の整数である）である時に、３つのデータの循環シフト後のバージョンのどれでも、ＸＯＲすることで、可逆関数が定義される。第１関数と同様に、ハードウェアの実行形態では、これらのシフト又はローテーションは、適切に配線することで簡単に実装されうるので、時間がかからないことがある。ゆえに、第２関数及びミキシング演算は、２つのＸＯＲゲート遅延の時間しか要しないことがあり、その各々は、セルライブラリが最適化されていれば、１．５〜３つのＮＡＮＤ２（２入力ＮＡＮＤ）ゲート遅延と等しい時間を有しうる。
【００４３】
可逆ビットミキサが必要とされる場合、Ｇ（又はあらゆるＧｉ）は、可逆関数でなくてはならない。Ｇの逆関数は、ビットミキサの逆関数も必要とされない限りは、容易に算出される必要はない。そのため、それは、典型的な非線形の可逆Ｓボックスレイヤーよりも高速になりうる。かかる関数Ｇの一例は、Ｇの各入力ビットを、所与の循環距離（ｄ１、ｄ２）からの２つの入力ビットとＸＯＲするためのものとなる。２ブロック長の出力では、出力ビットが所与の循環距離からの３つの入力ビットのＸＯＲとして算出されると、可逆関数が得られる。ハードウェアの実行形態では、ｄ１及びｄ２が大きくないことにより、必要なルーティングが過度に長くならない場合、関数Ｇの算出及びラウンドキーのＸＯＲには、最小限の時間しかかからない。
【００４４】
非線形ビットミキサが必要とされる場合、Ｆは非線形関数でなくてはならない。Ｆは、反対方向において、ビットミキサの逆関数としてもＦの逆関数が必要とされないので、可逆的である必要はない。ｈｈ例示的な一実行形態では、下記のように、二元多項式のガロア体において非線形である、高速かつ十分に複雑な構造が使用される。
１．循環距離ｄ３及びｄ４からのＬｉの２つのシフト後のバージョンをＮＡＮＤする。
２．循環距離ｄ５及びｄ６におけるＬｉの他の２つのシフト後のバージョンをＮＯＲする。
３．循環距離ｄ７及びｄ８におけるＬｉの更に別の２つのシフト後のバージョンをＮＡＮＤする。
４．上記の３つのビットブロックをＸＯＲして、Ｌｉにする。
【００４５】
ハードウェアの実行形態では、シフトは、実質的に制約を受けず、ほとんど時間がかからないものである。そのため、ＦとＧは、パス長がほぼ等しく、サイドチャネル漏洩を減少させるためにクリティカルタイミングパス同士のバランスを取るのに、それほど多くない手動労力しか必要としない。ＦとＧは、（全てのラウンドでなければ）特定のラウンドにおいて、相違していることが可能でありうるか、又は、当方の実行形態では、全てのラウンドにおいて同一に保たれうる。
【００４６】
可逆関数Ｇ，を有するとＤＭＦＮが可逆的になることに、留意されたい。Ｌｉはボトムアップ法により算出されうる。すなわち、ラウンドキーｋｉ及びＧの逆関数を知っていれば、Ｒｉ＋１からＬｉが算出されうる。Ｌｉを有するとＦ（Ｌｉ）が算出されうる。これがＸＯＲされてＬｉ＋１となり、Ｒｉが導かれる。可逆性は、多くの場合、役に立つ特性である。これにより、実現可能な全ての出力値が発生すること、及び、２つの異なる入力により同一の出力が付与されることがなくなることが、確実になる。
【００４７】
前述しており、かつ、図５に示しているように、半分長のサブキーｋｉは、各ラウンドでＧとミキシングされる。全ブロック長のサブキーとであっても（例えば、図６に示しているように、もう１つの半分長のサブキーがＲｉに混入されたとしても）、ミキシングの顕著な改善は見い出されなかった。それでも、これらの構造は相違したものであり、種々の応用に適している。
【００４８】
ここで図６を参照する。図６は、その他の例示的な実行形態による、図３及び図４のビットミキサとして使用されうるＤＭＦＮ６００の１ラウンドを示している。ＤＭＦＮにおいて、Ｌｉ＋１ではなくＲｉ＋１を改変するためにラウンドキーｋｉを適用することによって、２つの半分部を算出するワークは、バランスが取れた状態になりうる。つまり、２つの半分部は、同時に使用可能になりうる。しかし、第１関数（Ｆ）が適用される一方で、Ｒｉは使用されないことがある。ゆえに、図６に示しているように、Ｒｉは、バランスを乱すことなく、別のラウンドキーｈｉとミキシングされうる。また、Ｒｉ＋１とＬｉ＋１は両方とも、キー要素による影響をうけうる。第１関数（Ｆ）と第２関数（Ｇ）に関して、複雑性が同等の関数が選ばれれば、図６に示しているＤＭＦＮにより、より良好な、全体的なミキシング特性が実現されうる。更に別の例では（例えば、第２関数の算出が第１関数よりも緩慢である場合には）、ｋｉのミキシングは省略されてよく、これにより、図５に示しているＤＭＦＮにミキシング特性が類似しているが、それよりも若干高速な、スキームがもたらされうる。ＤＭＦＮでは、各ラウンドｉ＝０、１、．．．、ｒ−１について、更新済みの左半分（Ｌｉ＋１）と更新済みの右半分（Ｒｉ＋１）が算出されうる。
2019079037.tif 000008
【００４９】
上記では、第１入力Ｌ０及びＲ０がビットミキサの入力のために設定される一方、最後の値Ｌｒ、Ｒｒは出力を構成し、ＦとＧは第１と第２のラウンド関数を表わし、かつ、ｋｉ及びｈｉはラウンドキーを表わしている。ラウンドｒ−１における出力は、ビットミキサの出力（更新済みのデータブロック）（Ｌｒ、Ｒｒ）でありうる。
【００５０】
周知の換字転置ネットワークに基づくビットミキサの可逆バージョンも、使用されうる。ファイステルネットワーク及びＤＭＦＮと同様に、例示的な実行形態の換字転置ネットワークは、反復的に（又は複数ラウンドで）実施されうる。例えば、１つのラウンド（ｉ）では、入力データブロック（Ｄｉ）がラウンドキー（ｋｉ）とミキシングされ（例えばＸＯＲされ）てよく、かつ、その算定結果が、複数のＳボックス（Ｓｉ）を含む換字レイヤー、及び転置（ｐｅｒｍｕｔａｔｉｏｎ：（Ｐｉ））を含む線形変換レイヤーを通じてミキシングされて、更新済みのデータブロック（Ｄｉ＋１）が生成されうる。別の例では、入力データブロックは、最初に、更新済みのデータブロックを生成するために換字レイヤー及び線形変換レイヤーを通じてミキシングされてよく、更新済みのデータブロックは、次いで、ラウンドキー（ｋｉ）とミキシングされうる。いずれの例においても、Ｓボックスと転置のいずれか又は両方は、ラウンドに依存していることも、ラウンドとは無関係であることもある。また、一部の例では、少なくとも１つのラウンドでは、Ｓボックスのうちの少なくとも２つが相違していることがある。例示的な一実行形態では、初期のデータブロック（Ｄ０）は、より大きなデータブロック（これは少なくとも１つの別のサブセット（Ｂ０）も含んでいる）の、１つのサブセットでしかないことがある。ラウンドキー（ｋｉ）は、ミキシングされたラウンドキーを生成するために、この別のサブセット（Ｂ０）とミキシングされ（例えばＸＯＲされ）てよく、ミキシングされたラウンドキーは、このラウンドの入力データブロック（Ｄｉ）とミキシングされうる。あるいは、別の例では、ラウンドキーは、この別のサブセットとミキシングされてよく、その結果得られるミキシングされたラウンドキーが、換字レイヤー及び線形変換レイヤーの後に更新済みのデータブロック（Ｄｉ＋１）とミキシングされうる。
【００５１】
図７は、本開示の例示的な実行形態による、図３及び図４のビットミキサとして使用されうる換字転置ネットワーク７００の３ラウンドを示している。周知の換字転置ネットワークに基づくビットミキサの可逆バージョンが、使用されうる。圧縮変化又は拡張変化に関して、ブロックサイズは、望ましい入力ブロックサイズと出力ブロックサイズのうち大きい方のものになるよう、選ばれる。入力サイズの方が小さい場合、使用されない入力ビットは一定に保たれうるか、又は、出力サイズと合致するまで反復入力ビットが使用されうる。必要とされる出力サイズの方が小さい場合、出力ビットをディスカードすること、又は、最終出力を生成するためのＸＯＲ関数若しくは他の適切な関数を介して、特定のビットをひとまとめに折り返すことが可能である。換字転置（ＳＰ）ネットワークは、通例として、以下の３つのステップを何回か反復して、図７にしたがって構築される。
１．入力が一連の非線形関数（Ｓボックス）によって変換される。
２．その算定結果のビットが、リルーティング／順列置換される。
３．順列置換されたデータが、ラウンドキー／サブキーとＸＯＲされる。
注：最初と最後のラウンドが単純化され、１つ又は２つのステップが省略されることが多い。
【００５２】
Ｓボックスが可逆的である場合、ＳＰネットワークは可逆的である。Ｓボックスが非線形である場合、ＳＰネットワークは非線形である。ＳＰネットワークは任意の幅であってよく、網羅的なミキシングに必要なラウンドの数は、この幅に依存する。ハードウェアの実行形態では、小規模なＳボックスによって、より高速なビットミキサが生じる傾向がある。最小の実践的なＳボックス（１つのＳボックスが３つの入力ビット及び３つの出力ビットを伴う）は、Ｌａｒｓ  Ｋｎｕｄｓｅｎ、Ｇｒｅｇｏｒ  Ｌｅａｎｄｅｒ、Ａｘｅｌ  Ｐｏｓｃｈｍａｎｎ、Ｍａｔｔｈｅｗ  Ｊ．  Ｂ．  Ｒｏｂｓｈａｗが、「Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ」シリーズのＣＨＥＳ  ２０１０第６２２５巻（１６〜３２頁）の「ＰＲＩＮＴｃｉｐｈｅｒ：  Ａ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  ｆｏｒ  ＩＣ−Ｐｒｉｎｔｉｎｇ．  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ」で記述しているＰＲＩＮＴ暗号において、実装される。この３×３Ｓボックスの３つの出力ビットは、以下のように定義される。
2019079037.tif 000009
【００５３】
図８は、様々な例示的な実行形態による、図３及び図４のビットミキサとして使用されうるＸＯＲツリー８００を示している。ＸＯＲツリーを使用する例により、ミキシング関数は、秘密かつランダムな決まったデータセット、キー要素、及び入力データブロックに基づくものになりうる。この点について、サブキーは、（例えばマルチプレクサ回路を使用して）対応するサブキーを選択するビットといった入力データブロックにおける特定のビットのポジションに対応するポジションのブロックのシーケンスにおける、秘密乱数のブロックでありうる。サブキーは次いで、ＸＯＲツリーを使用して、ひとまとめにミキシングされうる。
【００５４】
図８に示しているように、ＸＯＲツリー８００は、データ結合（ｄａｔａ  ｍｅｒｇｅｒ）演算を実行するために実装されうる、複数のＸＯＲ論理ゲートを含みうる。図８では、論理ゲートの各々は、ゲートが演算を行うサブキーの各ビットにつき１つの、一連のゲートを表わしている。
【００５５】
ビットミキサに基づくＸＯＲツリーでは、入力は、ビット群を形成している、複数かつ不定長の、連続ビットの非空セットに分割される。各群のビットは、マルチプレクサを使用してキー要素からサブキーを選択し、その出力はひとまとめにビット単位でＸＯＲされて、最終ビットミキサ出力が生成される。ＸＯＲ演算は、典型的には、ＡＳＩＣの２入力ＸＯＲゲートのツリーを使用して実装されるが、ターゲット技術（包括的なルックアップテーブルを提供するＦＰＧＡにおけるものなど）に応じて、多入力ゲート又はパリティ発生回路が使用されうる。この構造のビットミキサは、実装が簡単なだけではなく、性能の向上、電力消費料の削減、セキュリティの改善、及びサイドチャネル攻撃面の最小化も供するものである。
【００５６】
ビットミキサに基づくＸＯＲツリーの入力の幅及び出力の幅は個別に選ばれうるので、より長い出力幅又はより長い入力幅をそれぞれ選択することによって、拡張関数及び圧縮関数が創出される。ランダムキー要素を有することで、単一入力ビットの変化があればそれが、ランダムサブキーによる出力の変化を引き起こすことになる。そのため、入力ビットの変化があればそれにより、あらゆる出力ビットが影響を受ける。更に、所与のビットミキサ構造を鑑みるに、多入力ビットの変化は、ＸＯＲされたランダムサブキーの集合（これ自体がランダムなものである）による出力の変化を、引き起こすことになる。総じて、ビットミキサに基づくＸＯＲツリーは、上述の望ましい特性の各々を満たし、かつ、理論的に完全なミキシングを確実にするものである。
【００５７】
ＸＯＲツリー構造は、ビット選択とＸＯＲ演算だけを使用するので、二元ガロア体において線形である。これらの構造においては、単純に相関した複数の入力値から算出された特定の出力値同士の間に、何らかの４方向相関が存在する。この例では、相関は、以下のように生じる。少なくとも２つの入力ビット群を仮定すると、入力ビット群のうちの１つＢからはビットｂが、異なる入力ビット群Ｃからはビットｃが選ばれる。Ｂ群のｂを除く全てのビットが一定に保たれると、Ｋ０はｂが論理０である場合に選択されたサブキーを、Ｋ１はｂが論理１である状態で選択されたサブキーを、意味することが可能になる。同様に、Ｌ０とＬ１が、ｃの論理値に基づいて選択されたサブキーを意味することが可能になると共に、Ｃ群の他のビットは一定に保たれる。最後に、Ｍは、その他の入力ビット群によって選択された全てのサブキーのＸＯＲを意味することが可能になり、それらの入力は、一定（その他のビット群がなければ０）に保たれる。ｂ及びｃの、実現可能な全ての２×２値から得られる出力値のＸＯＲは０となり、これが「４方向相関」と称されるものである。
2019079037.tif 000010
【００５８】
出力値が観測不可な応用では、この種の相関が回路のセキュリティに問題を引き起こすことはない。この相関が懸案となる応用では、出力が、非線形関数によって更に処理されることは不可能になる。例としては、Ｓボックスなどの、並列収集（ｃｏｌｌｅｃｔｉｏｎ）の小規模非線形関数、元々の出力とＸＯＲされたＳボックスなどの、非線形関数の収集の出力、Ｒｏｔａｔｅ−Ａｄｄ−ＸＯＲ（ＲＡＸ）構造（マイクロプロセッサの実行形態に適したもの）、である。構造を非線形にする別の仕方は、ＸＯＲツリーの一又は複数のレベルにおいて、ＸＯＲ演算を図７に示しているものと同様のｋ−ｔｏ−１非線形Ｓボックスに置き換えることである。更なる不均等な回路遅延は、実装が簡単であるが、サイドチャネル漏洩を抑えるために、信号伝播のバランスを手動で取ることが必要になりうる。ＸＯＲツリーの１つのレベルをＳボックスに置き換えることで、労力をあまりかけずに、１．０ＧＨｚを上回るクロック速度のシングルクロックサイクル演算が実現される。
【００５９】
図９は、本開示の例による、図３及び図４の構造を使用しうるメッセージ認証のためのシステム９００を示している。メッセージ９０４の送信器９０２は、それを、ＭＡＣデータタグ９０８を生成するために、ＭＡＣアルゴリズム９０６（例えば、最初と最後のメッセージブロックに秘密キーが組み込まれている、図３のＧＭＡＣ様構造又は図４のマークル−ダンガード様構造）を通じて実行する。メッセージ９０４及びＭＡＣタグ９０８は次いで、受信器９１０に送られる。今度は受信器９１０が、同じキーを使用して、同じＭＡＣアルゴリズム９０６を通じて送信のメッセージ部分を実行し、第２ＭＡＣデータタグ９１２を生成する。受信器９１０は次いで、送信内の受信された第１ＭＡＣタグ９０８と、生成された第２ＭＡＣタグ９１２とを比較する。この２つが全く同一であれば、受信器９１０は、メッセージは送信中に改変も改ざんもされなかったと、安全に仮定しうる（データ保全性）。
【００６０】
図１０は、本開示の例による、メッセージ認証タグを生成するための方法１０００を示している。この方法は、１００５において、メッセージを取得することによって始まる。メッセージは、辞書エントリやファイルのコンテンツなどのような、任意の入力又はデータでありうる。メッセージは、プレーンテキスト、（暗号化された）暗号テキスト、又は、他の任意の種類の電子フォーマットのデータでありうる。１０１０において、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することによって、方法は継続する。１０１５において、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することによって、方法は継続する。１０２０において、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することによって、方法は継続する。１０２５において、第１ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することによって、方法は継続する。ビットミキシング演算は、図５及び図６のダブルミックスファイステルネットワーク、図７の換字転置ネットワーク、図８のＸＯＲツリーに基づくビットミキサ構造によって、又は、図２の２つ以上のビットミキサ構造の並列組み合わせによって、実施されうる。
【００６１】
一部の例では、方法は、均等サイズのメッセージブロックを作成するために、１０３０において、最終メッセージブロックに埋め込みを行うことを更に含みうる。一部の例では、方法は、１０３５において、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。一部の例では、方法は、１０４０において、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、秘密キーのもとで、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的ＯＲ演算を実施することとを、更に含みうる。一部の例では、方法は、１０４５において、メッセージ認証タグを、プレーンであるか又は暗号化されているメッセージと共に、受信器に送ることを、更に含みうる。
【００６２】
図１１は、本開示の例による、メッセージ向けのハッシュ値を生成するための方法１１００を示している。この方法は、１１０５において、メッセージを取得することによって始まる。メッセージは、辞書エントリやファイルのコンテンツなどのような、任意の入力又はデータでありうる。メッセージは、プレーンテキスト、（暗号化された）暗号テキスト、又は、他の任意の種類の電子フォーマットのデータでありうる。１１１０において、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することによって、方法は継続する。一部の例では、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである。１１１５において、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することによって、方法は継続する。１１２０において、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することによって、方法は継続する。第１ビットミキシング演算及び後続ビットミキシング演算には、公開されているキー要素が使用される。一部の例では、ビットミキシング演算は、図５及び図６のダブルミックスファイステルネットワーク、図７の換字転置ネットワーク、図８のＸＯＲツリーに基づくビットミキサ構造によって、又は、図２の２つ以上のビットミキサ構造の並列組み合わせによって、実施されうる。１１２５において、第１ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を決定することによって、方法は継続する。
【００６３】
一部の例では、方法は、均等サイズのメッセージブロックを作成するために、１１３０において、最終メッセージブロックに埋め込みを行うことを更に含みうる。一部の例では、方法は、１１３５において、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。一部の例では、方法１１００は、１１４０において、最終メッセージブロックに、ハッシュ値の算出において実施される他の全てのビットミキシング演算と相違しているビットミキシング演算を実施することを更に含んでよく、この相違は、第１ビットミキシング演算及び後続ビットミキシング演算で使用されるビットミキサの構造であるか、キー要素であるか、又はその両方である。一部の例では、方法１１００は、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。
【００６４】
図１２は、上述したプロセスのうちの一又は複数を実施するために使用されうる、携帯デバイス又はサーバとして使用されうるコンピュータデバイス１２００のハードウェア構成の一例を示している。図１２は、コンピュータデバイス１２００に内包される様々な構成要素を示しているが、図１２に示されているのはコンピュータデバイスの一例であり、追加の構成要素が追加されてよく、既存の構成要素を取り除くことも可能である。
【００６５】
コンピュータデバイス１２００は、デスクトップ、ラップトップ、サーバなどといったコンピュータデバイス、又は、スマートフォン、タブレットコンピュータ、携帯電話、携帯用情報端末などといった携帯デバイスのうちの、任意の種類のものでありうる。図１２に示しているように、コンピュータデバイス１２００は、コア構成及びクロック周波数が様々な、一又は複数のプロセッサ１２０２を含みうる。コンピュータデバイス１２００は、コンピュータデバイス１２００の動作中にメインメモリとしての役割を果たす、一又は複数のメモリデバイス１２０４も含みうる。例えば、動作中に、上述の動作をサポートするソフトウェアのコピーが、一又は複数のメモリデバイス１２０４に記憶されうる。コンピュータデバイス１２００は、コンピュータデバイス１２００と人との相互作用及びコンピュータデバイス１２００の操作を可能にするための、一又は複数の周辺インターフェース１２０６（例えばキーボード、マウス、タッチパッド、コンピュータスクリーン、タッチスクリーンなど）も含みうる。
【００６６】
コンピュータデバイス１２００は、一又は複数のネットワークを介して通信するための、一又は複数のネットワークインターフェース１２０８（イーサネットアダプタ、無線トランシーバー、又は、プロトコルを使用して有線媒体又は無線媒体経由で通信するためのシリアルネットワークコンポーネントなど）も含みうる。コンピュータデバイス１２００は、画像、ファイル、及び一又は複数のプロセッサ１２０２によって実行されるプログラム命令などのデータを記憶するための、物理的寸法及び記憶容量が様々な一又は複数の記憶デバイス１２１０（例えばフラッシュドライブ、ハードドライブ、ランダムアクセスメモリなど）も含みうる。
【００６７】
加えて、コンピュータデバイス１２００は、上述の機能を可能にする一又は複数のソフトウェアプログラム１２１２を含みうる。一又は複数のソフトウェアプログラム１２１２は、一又は複数のプロセッサ１２０２に本書に記載のプロセスを実施させる、命令を含みうる。一又は複数のソフトウェアプログラム１２１２のコピーが、一又は複数のメモリデバイス１２０４及び／又は一又は複数の記憶デバイス１２１０に記憶されうる。同様に、一又は複数のソフトウェアプログラム１２１２によって利用されるデータは、一又は複数のメモリデバイス１２０４及び／又は一又は複数の記憶デバイス１２１０に記憶されうる。
【００６８】
実行形態において、コンピュータデバイス１２００は、ネットワーク１２１６を介して他のデバイスと通信しうる。他のデバイスとは、上述した任意の種類のデバイスでありうる。ネットワーク１２１６は、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及び、それらの任意の組み合わせといった、任意の種類のネットワークでありうる。ネットワーク１２１６は、多種多様な商用プロトコル（例えばＴＣＰ／ＩＰ、ＵＤＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、ＡｐｐｌｅＴａｌｋなど）のうちの任意のものを使用して、通信をサポートしうる。ネットワーク１２１６は、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組み合わせでありうる。
【００６９】
コンピュータデバイス１２００は、多種多様なデータストア並びにその他の上述したメモリ及び記憶媒体を含みうる。これらは、例えば、コンピュータのうちの一又は複数に対してローカルな（かつ／又はかかるコンピュータに常駐している）記憶媒体、又は、ネットワーク上のあらゆるコンピュータからリモートな記憶媒体の、多種多様な場所に存在しうる。一部の実行形態では、情報は、当業者には周知のストレージエリアネットワーク（「ＳＡＮ」）内に存在しうる。同様に、コンピュータ、サーバ、又はその他のネットワークデバイスによる機能を実施するために必要なファイルがあればそれは、適宜ローカルでかつ／又はリモートで、記憶されうる。
【００７０】
実行形態においては、上述したコンピュータデバイス１２００の構成要素は、単一の筐体内に封入される必要はなく、互いに近接して配置される必要もない。コンピュータデバイス１２００は、開示されている実行形態を実施するために必要なあらゆる随伴ファームウェア又はソフトウェアを含む、任意の種類のハードウェア構成要素を含みうるので、上述の構成要素は例にすぎないことを、当業者は認識しよう。コンピュータデバイス１２００は、部分的又は全体的に、特定用途向け集積回路（ＡＳＩＣ）やフィールドプログラマブルゲートアレイ（ＦＰＧＡ）といった、電子回路構成要素又はプロセッサによっても実装されうる。
【００７１】
更に、本発明は、以下の条項による実施形態を含む。
【００７２】
条項１：メッセージ認証タグを生成するための、コンピュータ実装される方法であって、メッセージを取得することと、電子プロセッサによって、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、電子プロセッサによって、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第１ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することとを含む、方法。
【００７３】
条項２：メッセージが、プレーンテキストメッセージ又は暗号化されたメッセージである、条項１に記載の方法。
【００７４】
条項３：いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを更に含む、条項１に記載の方法。
【００７５】
条項４：第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである、条項１に記載の方法。
【００７６】
条項５：メッセージ認証タグを、プレーンテキストであるメッセージと共に受信器に送ることを更に含む、条項１に記載の方法。
【００７７】
条項６：メッセージ認証タグを、暗号化されているメッセージと共に受信器に送ることを更に含む、条項１に記載の方法。
【００７８】
条項７：第１ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、排他的ＯＲ（ＸＯＲ）ツリー、又は２つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項１に記載の方法。
【００７９】
条項８：第１ビットミキシング演算及び後続ビットミキシング演算がキー要素を使用して実施される、条項１に記載の方法。
【００８０】
条項９：キー要素は明らかにされず、メッセージ認証タグはメッセージ認証コードである、条項８に記載の方法。
【００８１】
条項１０：最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、秘密キーのもとで、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的ＯＲ演算を実施することとを更に含む、条項１に記載の方法。
【００８２】
条項１１：均等サイズのメッセージブロックを作成するために、最終メッセージブロックに埋め込みを行うことを更に含む、条項１に記載の方法。
【００８３】
条項１２：メッセージ向けのハッシュ値を生成するための、コンピュータ実装される方法であって、メッセージを取得することと、電子プロセッサによって、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、電子プロセッサによって、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第１ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を生成することとを含む、方法。
【００８４】
条項１３：メッセージが、プレーンテキストメッセージであるか、暗号化されたメッセージであるか、又は、他の任意の種類の電子フォーマットのデータである、条項１２に記載の方法。
【００８５】
条項１４：第１ビットミキシング演算及び後続ビットミキシング演算が、公開されているキー要素を使用する、条項１２に記載の方法。
【００８６】
条項１５：最終メッセージブロックに最終ビットミキシング演算を実施することを更に含み、最終ビットミキシング演算は、ハッシュ値の算出において実施される第１ビットミキシング演算及び後続ビットミキシング演算とは相違しており、相違は、第１ビットミキシング演算及び後続ビットミキシング演算で使用されるビットミキサの構造であるか、キー要素であるか、又はその両方である、条項１２に記載の方法。
【００８７】
条項１６：いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを更に含む、条項１２に記載の方法。
【００８８】
条項１７：第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである、条項１２に記載の方法。
【００８９】
条項１８：第１ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、ＸＯＲツリー、又は２つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項１２に記載の方法。
【００９０】
条項１９：電子プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備える、コンピュータシステムであって、命令は、電子プロセッサによって実行されると、メッセージ認証タグを生成するための方法を実施し、この方法が、メッセージを取得することと、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、第１ビットミキシング演算及び後続ビットミキシング演算に基づいてメッセージ認証タグを生成することとを含む、コンピュータシステム。
【００９１】
条項２０：第１ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、ＸＯＲツリー、又は２つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項１９に記載のコンピュータシステム。
【００９２】
条項２１：電子プロセッサが、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的ＯＲ演算を実施することとを含む、方法を実施するよう更に動作可能である、条項１９に記載のコンピュータシステム。
【００９３】
条項２２：電子プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備える、コンピュータシステムであって、命令は、電子プロセッサによって実行されると、ハッシュ値を生成するための方法を実施し、この方法が、メッセージを取得することと、メッセージを、第１メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、第１メッセージブロックに、初期化値を用いて第１ビットミキシング演算を実施することと、一又は複数の後続メッセージブロック及び最終メッセージブロックに、処理済みの先行メッセージブロックとの後続ビットミキシング演算を実施することと、第１ビットミキシング演算及び後続ビットミキシング演算に基づいてハッシュ値を生成することとを含む、コンピュータシステム。
【００９４】
条項２３：第１ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、ＸＯＲツリー、又は２つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項２２に記載のコンピュータシステム。
【００９５】
条項２４：電子プロセッサが、最終メッセージブロックに基づく出力との、最終ビットミキシング演算を実施することと、ハッシュ値の生成における第１ビットミキシング演算及び後続ビットミキシング演算と相違しているビットミキサとの最終ビットミキシング演算を実施することとを含む、方法を実施するよう更に動作可能である、条項２２に記載のコンピュータシステム。
【００９６】
機能は、ソフトウェアで実装される場合、一又は複数の命令又はコードとして、コンピュータ可読媒体に記憶されうるか、又は、コンピュータ可読媒体を経由して伝送されうる。コンピュータ可読媒体は、１つの場所から別の場所へのコンピュータプログラムの伝送を促進する任意の媒体を含む、有形で非一時的なコンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、利用可能な任意の、コンピュータによってアクセス可能な、有形かつ非一過性の媒体でありうる。非限定的な例としては、かかる有形かつ非一過性のコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ若しくは他の光ディスク記憶デバイス、磁気ディスク記憶デバイス若しくは他の磁気記憶デバイス、又は、命令若しくはデータ構造の形態で所望のプログラムコードを保持若しくは記憶するために使用可能であり、かつ、コンピュータによってアクセス可能な、他の任意の媒体を含みうる。本書において、ディスク（ｄｉｓｋ及びｄｉｓｃ）とは、ＣＤ、レーザーディスク、光ディスク、ＤＶＤ，フロッピーディスク、及びブルーレイディスクを含み、ディスク（ｄｉｓｋ）が通常、データを磁気的に再生する一方、ディスク（ｄｉｓｃ）は、レーザを用いて光学的にデータを再生するものである。また、接続があればそれは、正確には、コンピュータ可読媒体と表現される。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、又は、無線技術（赤外線、無線、及びマイクロ波など）を使用して、ウェブサイト、サーバ、又は他の遠隔ソースから伝送される場合には、これらの同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、又は無線技術（赤外線、無線、及びマイクロ波など）も、媒体の定義に含まれる。上述したものの組み合わせも、コンピュータ可読媒体の範囲に含まれるべきである。
【００９７】
上記の説明は例示であり、当業者には、構成及び実行形態における変形例が想起されうる。例えば、本書で開示されている実施形態に関連して記載されている、様々な例示的な論理、論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特殊用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、暗号コプロセッサ若しくは他のプログラマブル論理デバイス、ディスクリートゲート若しくはトランジスタ論理、ディスクリートハードウェアコンポーネント、又は、本書に記載の機能を実行するよう設計されたそれらの任意の組み合わせ、を用いて、実装されうるか又は実施されうる。汎用プロセッサは、マイクロプロセッサでありうるが、代替的には、任意の従来型のプロセッサ、コントローラ、マイクロコントローラ、又は状態機械でありうる。プロセッサは、コンピューティングデバイスの組み合わせ（例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、一又は複数のマイクロプロセッサとＤＳＰコアとの併用、又は、他の任意のかかる構成）としても実装されうる。
【００９８】
一又は複数の例示的な実施形態では、記載されている機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせにおいて、実装されうる。ソフトウェアの実行形態では、本書に記載の技法は、本書に記載の機能を実行するモジュール（例えば、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス等）を用いて実装されうる。モジュールは、情報、データ、引数（ａｕｇｕｍｅｎｔ）、パラメータ、又はメモリコンテンツをパッシングすること及び／又は受信することによって、別のモジュール又はハードウェア回路に連結されうる。情報、引数、パラメータ、データ等は、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送等を含む任意の好適な手段を使用して、パッシングされうるか、転送されうるか、又は伝送されうる。ソフトウェアのコードは、メモリユニットに記憶され、かつ、プロセッサによって実行されうる。メモリユニットは、プロセッサの内部又は外部に実装されうる。この場合、メモリユニットは、当技術分野では既知の様々な手段を介して、プロセッサに通信可能に連結されうる。
【００９９】
本教示はその実行形態の例を参照して説明されているが、その真の理念及び範囲から逸脱しなければ、当業者は、記載されている実行形態に様々な改変を行うことが可能である。本書における用語及び記述は、例示のみを目的として明示されており、限定を意図するものではない。詳細には、プロセスは例によって説明されているが、これらのプロセスのステージは、例示とは異なる順序で、又は同時に、実施されうる。更に、「含む（ｉｎｃｌｕｄｉｎｇ／ｉｎｃｌｕｄｅｓ）」、「有する（ｈａｖｉｎｇ／ｈａｓ）」、「伴う（ｗｉｔｈ）」という用語又はそれらの変形表現は、詳細説明において使用されている限り、「備える、含む（ｃｏｍｐｒｉｓｉｎｇ）」という用語と同様に、包括的であることが意図されている。本書において、アイテムの列挙（例えば「Ａ及びＢ」など）に関連する、「一又は複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ  ｏｆ）」及び「少なくとも一つの（ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ）」という表現は、Ａのみ、Ｂのみ、又はＡ及びＢを意味する。更に、別途明記されない限り、「セット（ｓｅｔ）」という用語は、「一又は複数」であると解釈すべきである。また、「連結する（ｃｏｕｐｌｅ／ｃｏｕｐｌｅｓ）」という用語は、間接接続と直接接続のいずれかを意味することが意図されている。ゆえに、第１デバイスが第２デバイスに連結されるという場合、その接続は直接接続によるものであってよく、又は、他のデバイス、構成要素、及び接続を介した間接接続によるものでもありうる。
【０１００】
当業者は、記載されている実施形態に対して、その真の理念及び範囲から逸脱しなければ、様々な変更を行うことが可能である。本書における用語及び記述は、例示のみを目的として明示されており、限定を意図するものではない。詳細には、方法は例によって説明されているが、この方法のステップは、例示とは異なる順序で、又は同時に、実施されうる。当業者には、これらの変形例及びその他の変形例は、以下の特許請求の範囲及びその均等物において規定される理念及び範囲に含まれることが可能であることが、認識されよう。
【０１０１】
本開示の前述の説明は、それに関連する実施形態と共に、例示のみを目的として提示されている。説明は網羅的ではなく、開示内容を開示された形態そのものに限定するものではない。前述の説明から、当業者には、上記の教示を踏まえた改変例及び変形例が可能であること、又は、本開示を実践することでかかる改変例及び変形例が得られることが、認識されよう。例えば、記載されているステップは、記載されているのと同じシーケンスで、又は同程度分離されて、実施される必要はない。同じく、様々なステップは、同一又は類似の目的を実現するために、必要に応じて、省略されるか、反復されるか、又は組み合わされうる。同様に、記載されているシステムは、必ずしも、実施形態で説明している全ての部分を含む必要はなく、実施形態では説明していない他の部分を含むこともある。
【０１０２】
したがって、本開示は、上述の実施形態に限定されず、その代わりに、付随する特許請求の範囲の同等物の全範囲を踏まえて、かかる特許請求の範囲により規定される。
【図１】
2019079037.tif 000011
【図２】
2019079037.tif 000012
【図３】
2019079037.tif 000013
【図４】
2019079037.tif 000014
【図５】
2019079037.tif 000015
【図６】
2019079037.tif 000016
【図７】
2019079037.tif 000017
【図８】
2019079037.tif 000018
【図９】
2019079037.tif 000019
【図１０】
2019079037.tif 000020
【図１１】
2019079037.tif 000021
【図１２】
2019079037.tif 000022
【外国語明細書】
2019079037000001.pdf
2019079037000002.pdf
2019079037000003.pdf
2019079037000004.pdf