IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザ・ボーイング・カンパニーの特許一覧

特許7222648ビットミキサから安全なハッシュ関数を構築するための方法
<>
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図1
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図2
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図3
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図4
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図5
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図6
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図7
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図8
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図9
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図10
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図11
  • 特許-ビットミキサから安全なハッシュ関数を構築するための方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-07
(45)【発行日】2023-02-15
(54)【発明の名称】ビットミキサから安全なハッシュ関数を構築するための方法
(51)【国際特許分類】
   G09C 1/00 20060101AFI20230208BHJP
【FI】
G09C1/00 650Z
【請求項の数】 10
【外国語出願】
(21)【出願番号】P 2018189393
(22)【出願日】2018-10-04
(65)【公開番号】P2019079037
(43)【公開日】2019-05-23
【審査請求日】2021-09-29
(31)【優先権主張番号】15/726,608
(32)【優先日】2017-10-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500520743
【氏名又は名称】ザ・ボーイング・カンパニー
【氏名又は名称原語表記】The Boeing Company
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ハース, ラースロー
【審査官】宮司 卓佳
(56)【参考文献】
【文献】米国特許出願公開第2014/0189367(US,A1)
【文献】米国特許出願公開第2017/0104594(US,A1)
【文献】特開2017-107195(JP,A)
【文献】特開平06-120942(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
メッセージ認証タグ(336、908、912)を生成するための、コンピュータ実装される方法(1000)であって、
メッセージ(904)を取得すること(1005)と、
電子プロセッサ(1202)によって、前記メッセージを、第1メッセージブロック(410)、一又は複数の後続メッセージブロック(412)、及び最終メッセージブロック(414)を含む、いくつかの均等サイズのメッセージブロック(410、412、414)に区分すること(1010)と、
前記電子プロセッサによって、前記第1メッセージブロックに、初期化値(418)を用いて第1ビットミキシング演算(324)を実施すること(1015)と、
前記電子プロセッサによって、前記一又は複数の後続メッセージブロック及び前記最終メッセージブロックに、先行メッセージブロックとの後続ビットミキシング演算(328、332)を実施すること(1020)と、
前記電子プロセッサによって、前記第1ビットミキシング演算及び前記後続ビットミキシング演算に基づく前記メッセージ認証タグを生成すること(1025、1040)と
前記最終メッセージブロックに対する前記ビットミキシング演算の出力、及び認証データの長さと暗号化されたテキストブロックの長さとの結合に、最終ビットミキシング演算を実施することと、
秘密キーのもとで、前記最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的OR演算を実施することと、を含む、方法。
【請求項2】
前記メッセージが、プレーンテキストメッセージ(314、316)又は暗号化されたメッセージ(318、320)である、請求項1に記載の方法。
【請求項3】
いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズム(906)を用いて、前記均等サイズのメッセージブロックの各々を暗号化すること(1035)を更に含む、請求項1又は2に記載の方法。
【請求項4】
前記第1メッセージブロック、前記一又は複数の後続メッセージブロック、及び前記最終メッセージブロックは、暗号化されたメッセージブロックである、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記メッセージ認証タグを、プレーンテキストである前記メッセージ(314、316)と共に受信器(910)に送ること(1040)を更に含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記メッセージ認証タグを、暗号化されている前記メッセージ(318、320)と共に受信器(910)に送ることを更に含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記第1ビットミキシング演算及び前記後続ビットミキシング演算が、ダブルミックスファイステルネットワーク(500、600)、換字転置ネットワーク(700)、排他的OR(XOR)ツリー(800)、又は2つ以上のビットミキサ構造(300、400)の並列組み合わせ(205、210、215、220)、に基づくビットミキサ構造(100、200)によって実施される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記第1ビットミキシング演算及び前記後続ビットミキシング演算がキー要素(115)を使用して実施される、請求項1から7のいずれか一項に記載の方法。
【請求項9】
電子プロセッサ(1202)と、
命令を記憶している非一過性のコンピュータ可読媒体とを備える、コンピュータシステム(900)であって、前記命令は、前記電子プロセッサによって実行されると、メッセージ認証タグ(336、908、912)を生成するための方法を実施し、前記方法が、
メッセージ(904)を取得することと、
前記メッセージを、第1メッセージブロック(410)、一又は複数の後続のメッセージブロック(412)、及び最終メッセージブロック(414)を含む、いくつかの均等サイズのメッセージブロック(410、412、414)に区分することと、
前記第1メッセージブロックに、初期化値(418)を用いて第1ビットミキシング演算(324)を実施することと、
前記一又は複数の後続メッセージブロック及び前記最終メッセージブロックに、先行メッセージブロックとの後続ビットミキシング演算(328、332)を実施することと、
前記第1ビットミキシング演算及び前記後続ビットミキシング演算に基づいて、前記メッセージ認証タグを生成することと
前記最終メッセージブロックに対する前記ビットミキシング演算の出力、及び認証データの長さと暗号化されたテキストブロックの長さとの結合に、最終ビットミキシング演算を実施することと、
秘密キーのもとで、前記最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的OR演算を実施することと、を含む
コンピュータシステム。
【請求項10】
前記第1ビットミキシング演算及び前記後続ビットミキシング演算が、ダブルミックスファイステルネットワーク(500、600)、換字転置ネットワーク(700)、XORツリー(800)、又は2つ以上のビットミキサ構造(300、400)の並列組み合わせ(205、210、215、220)、に基づくビットミキサ構造(100、200)によって実施される、請求項9に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は概して、情報のアシュアランス及びセキュリティに関する。
【背景技術】
【0002】
情報アシュアランスにおいては、あるデータがメッセージダイジェストを付与しても、敵対者はこのメッセージ(又は、同じメッセージダイジェスト又はMAC値を生成する同等代替物)を再構築できないことを検証するために、ハッシュ関数とメッセージ認証コード(MAC)が使用されうる。一部の応用工程では、スピード及び電力消費量は重要であるが、セキュリティ要件は緩和される。それ以外の場合は、高度なセキュリティ(長いダイジェスト)が必要になる。ハッシュ関数及びMACにより、ある入力データが所与のメッセージダイジェストにマッピングされていることの検証が可能になるが、敵対者は、このダイジェストだけを知ることによってメッセージ(又は同等代替物)を再構築することはできない。商業的及び軍事的な航空機産業、データセンター、パソコンを含む応用があるが、これらの応用では、メッセージダイジェストサイズが適切に選ばれる高度なセキュリティレベルが必要になるか、セキュリティ要件を緩和しても稼働時間及び電力使用が重要になるかの、いずれかである。これらの応用のためには、低電力で非常に高速なハッシュ関数及びMAC関数が必要であるが、これらの関数は、多くの場合、サイドチャネル攻撃に対する高耐性という追加要件も伴う。
【0003】
現時点で使用されているハッシュ関数及びMAC関数は、入力及び出力バッファのサイズの変更ができない、融通のきかないものであり、非常に緩慢であり、多くの電力/エネルギーを消費し、かつ、それら自体がサイドチャネル攻撃に対して脆弱である。結果として得られるセキュリティレベルは、商業的及び軍事的な航空機産業における多くの応用では既存のソリューションよりも高いレベルのセキュリティ又は良好な性能が必要とされているにもかかわらず、事前設定されたいくつかのレベルに固定される。
【0004】
必要とされているのは、上記の欠点を克服するハッシュ関数及びMAC関数である。
【発明の概要】
【0005】
本開示の例により、メッセージ認証タグを生成するための、コンピュータ実装される方法が提供される。この方法は、メッセージを取得することと、電子プロセッサによって、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込み(padding)を行うことと、電子プロセッサによって、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第1ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することとを、含む。一部の例では、メッセージは、プレーンテキストメッセージ又は暗号化されたメッセージである。
【0006】
一部の例では、方法は、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。
【0007】
一部の例では、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである。
【0008】
一部の例では、方法は、メッセージ認証タグを、プレーンテキストであるメッセージと共に受信器に送ることを、更に含みうる。
【0009】
一部の例では、方法は、メッセージ認証タグを、暗号化されているメッセージと共に受信器に送ることを、更に含みうる。
【0010】
一部の例では、第1ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置(substitution-permutation)ネットワーク、若しくはXORツリーに基づくビットミキサ構造、又は、2つ以上の単純なビットミキサ構造の並列組み合わせ(集合)によって、実施される。
【0011】
一部の例では、第1ビットミキシング演算及び後続ビットミキシング演算は、キー要素を使用して実施される。一部の例では、キー要素は明らかにされず、メッセージ認証タグはメッセージ認証コードである。
【0012】
一部の例では、方法は、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合(concatenation)に基づく出力を用いて、最終ビットミキシング演算を実施することと、秘密キーのもとで、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタ(nullcounter)を用いて、排他的OR演算を実施することとを、更に含む。
【0013】
本開示の例により、メッセージ向けのハッシュ値を生成するための、コンピュータ実装される方法が提供される。この方法は、メッセージを取得することと、電子プロセッサによって、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込みを行うことと、電子プロセッサによって、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第1ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を決定することとを、含む。一部の例では、メッセージは、プレーンテキストメッセージであるか、暗号化されたメッセージであるか、又は、他の任意の種類の電子フォーマットのデータである。一部の例では、第1ビットミキシング演算及び後続ビットミキシング演算には、公開されているキー要素が使用される。
【0014】
一部の例では、方法は、最後のメッセージブロックに、ハッシュ算出において実施される他の全てのビットミキシング演算と相違しているビットミキシング演算を実施することを更に含み、この相違は、ビットミキサの構造におけるもの、及び/又は、そこで使用されるキー要素におけるものでありうる。
【0015】
一部の例では、方法は、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含む。一部の例では、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである。一部の例では、第1ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置ネットワーク、若しくはXORツリーに基づくビットミキサ構造、又は、2つ以上の単純なビットミキサ構造の並列組み合わせ(集合)によって、実施される。
【0016】
本開示の例により、プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備えるコンピュータシステムであって、命令は、プロセッサによって実行されると、メッセージ認証タグを生成するための方法を実施し、方法が、メッセージを取得することと、電子プロセッサによって、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込みを行うことと、電子プロセッサによって、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第1ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することとを、含む。一部の例では、第1ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置ネットワーク、若しくはXORツリーに基づくビットミキサ構造、又は、2つ以上の単純なビットミキサ構造の並列組み合わせ(集合)によって、実施される。一部の例では、プロセッサは、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的OR演算を実施することとを含む、方法を実施するよう更に動作可能である。
【0017】
本開示の例により、プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備えるコンピュータシステムであって、命令は、プロセッサによって実行されると、メッセージ認証タグを生成するための方法を実施し、方法が、メッセージを取得することと、電子プロセッサによって、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、必要であれば、オプションで、均等サイズのブロックを作成するために、最後のメッセージブロックに埋め込みを行うことと、電子プロセッサによって、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、処理済みの先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第1ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を生成することとを含む、コンピュータシステムが提供される。一部の例では、第1ビットミキシング演算及び後続ビットミキシング演算は、ダブルミックスファイステルネットワーク、換字転置ネットワーク、若しくはXORツリーに基づくビットミキサ構造、又は、2つ以上の単純なビットミキサ構造の並列組み合わせ(集合)によって、実施される。一部の例では、プロセッサは、最終メッセージブロックに基づく出力を用いて、最終ビットミキシング演算を実施することと、ハッシュ値の算出における他の全てのビットミキシングと相違しているビットミキサを用いて、最終ビットミキシング演算を実施することとを含む、方法を実施するよう、更に動作可能である。
【0018】
実施形態の様々な特徴は、添付の図面と関連性を考慮しつつ実施形態についての以下の詳細説明を参照することで、かかる特徴がより良好に理解されるようになれば、一層網羅的に認識されうる。
【図面の簡単な説明】
【0019】
図1】本開示の例による、ビットミキサのブロック図100を示す。
図2】本開示の例による、集合型ビットミキサのブロック図200を示す。
図3】本開示の例による、ガロアMAC(GMAC)様構造300によるハッシュ/MAC関数を示す。
図4】本開示の例による、マークル-ダンガード様構造400によるハッシュ/MAC関数を示す。
図5】本開示の例示的な実行形態による、図3及び図4のビットミキサとして使用されうるダブルミックスファイステルネットワーク(DMFN)500の1ラウンドを示す。
図6】その他の例示的な実行形態による、図3及び図4のビットミキサとして使用されうるDMFN600の1ラウンドを示す。
図7】本開示の例示的な実行形態による、図3及び図4のビットミキサとして使用されうる換字転置ネットワーク700の3ラウンドを示す。
図8】様々な例示的な実行形態による、図3及び図4のビットミキサとして使用されうるXORツリー800を示す。
図9】本開示の例による、図3及び図4の構造を使用しうるメッセージ認証のためのシステム900を示す。
図10】本開示の例による、メッセージ認証タグを生成するための方法1000を示す。
図11】本開示の例による、ハッシュ値を生成するための方法1100を示す。
図12】上述したプロセスのうちの一又は複数を実施するために使用されうる、携帯デバイス又はサーバとして使用されうるコンピュータデバイス1200のハードウェア構成の一例を示す。
【発明を実施するための形態】
【0020】
これより、添付図面に示している例示的な実行形態について、詳しく言及していく。同じ又は類似した部品に言及するのに、可能な場合は常に、図面全体を通じて同じ参照番号を使用する。以下の説明では、その一部を形成している添付図面を参照する。これらの図面には、本発明が実践されうる、具体的かつ例示的な実施形態が、例示を目的として図示されている。これらの実施形態は、当業者による本発明の実践を可能にするのに十分なほど詳細に説明されているが、他の実施形態例が利用可能であること、及び、本発明の範囲から逸脱しなければ変更がなされうることを、理解されたい。したがって、以下の説明は単なる例示にすぎない。
【0021】
ハッシュ/MAC関数構造であって、それらの標準的な暗号法上の同等物よりも安全でありかつ/又はけた違いに高速な、ハッシュ/MAC関数構造が、本書で開示されているこれらが電子ハードウェアで実装された場合に消費する電力は、少なくなる。上記の構造は、大量のキー要素を使用しても非常に高速な、関数、ビットミキサの複雑な構造に基づくものである。キー要素が明らかにされない場合には、選択可能なセキュリティレベルを提供するMAC構造を取得する。キー要素が決まって(ハードコードされて)おり、かつ公開されている場合、本書で開示している構造が、フレキシブルなハッシュ関数を提供する。通信システム及びコンピューティングシステムにおけるこれらの使用は、回路サイズの著しい増大を伴う、低コストなものであり、電力使用量も引き下げる。システムを活用することで、緩慢な電子部品を使用することが可能になり、更に、コンピューティングシステムのコスト及びエネルギーと電力の消費量が低減するが、スピードは改善され、セキュリティも向上する可能性がある。対象のシステムは、科学及び工学関連のコンピュータ使用だけでなく、フライトコンピュータのセキュリティサブシステム、軍事及び宇宙関連のプログラム、企業ネットワーク、パソコン及びラップトップコンピュータ、スマート携帯デバイス、更に安全な通信ネットワークも、含む。
【0022】
ハッシュ関数は、不定サイズのデータを決まったサイズのデータにマッピングする。ハッシュ関数によって得られる値は、ハッシュ値、メッセージダイジェスト、データフィンガプリント(data fingerprint)、又は単にハッシュと称される。ハッシュ関数の望ましい特性は決定性、均一性、非線形性を含み、これらの特性は、ビットミキサの特性に含まれるものである。ハッシュ関数の1つの使用法は、迅速なデータ検索のためにコンピュータソフトウェアで広範に使用されるデータ構造(ハッシュテーブルと称される)におけるものである。ハッシュ関数は、大規模ファイルの中の複製レコードを検出することによって、テーブル又はデータベースの検索を加速させる。ハッシュ関数が秘密キーに依存している場合には、メッセージ認証コード生成器(MAC生成器)を有する。
【0023】
ハッシュ関数は、暗号法においても使用される。暗号ハッシュ関数により、ある入力データが所与のハッシュ値にマッピングされていると容易に検証することが可能になるが、この入力データが未知のものである場合に、ハッシュ値だけを知ることによってこのデータ(又は同等代替物)を再構築するのは、困難になるようにされている。この特性は、アクティブな敵対者が存在している中で送信データの保全性を確保するために使用されるものであり、かつ、メッセージ認証タグを提供する、MACの基礎的要素である。かかるハッシュ関数の更なる望ましい特性は、プレイメージ耐性、第2プレイメージ耐性、及び一致(collision)耐性である。望ましいセキュリティ強度を正確に提供するためには、多くの場合、不定ダイジェストサイズの構造が必要とされる。
【0024】
情報セキュリティの分野においても、ハッシュ/MAC関数の要件が緩和されうる応用(例えば、敵対者にとって、ハッシュ関数の入力と出力のどちらもアクセス可能ではない場合)が存在する。これは、乱数発生器において、多数であるが決まった数の不完全なエントロピー源がハッシュ関数の入力を提供する場合であってよく、これにより、不完全なエントロピー源はひとまとめに「ミキシング(mix)」され、その集合サイズは、決まったバッファに適合するよう低減される。元々のエントロピーは、可能な限り保存される必要がある。エントロピービットをXORすることは、出力を単一ビットまで低減するものであり、不完全でもあるので、無駄である。例えば、エントロピー源同士が関連付けられても、その効果はXOR関数によって無効化されることがあり、対応するエントロピーは失われる。XORとは、排他的OR(XOR)であり、排他的論理和又は論理XOR演算とも称される。
【0025】
入力が大規模であるがそのサイズが決まったものである、その他の応用も存在する。この入力は、入力からのエントロピーを可能な限り保ちつつ、より小さなサイズに縮小される必要があり、例えば、不均衡なファイステル構造(Feistel cipher)において、大規模ブロック暗号化(スキップジャックやXCBなど)に使用される。このような場合、大規模ビットミキサ関数は、電子ハードウェアにおいて直接的に構築されうる。出力から望ましい数のビットだけが保持されるか、又は、出力ビットが、ビット単位のXOR演算によって、望ましい長さに折り返される。
【0026】
他の応用は、ファイルなどの大規模データセットのチェックサム型フィンガプリントを含む。データにおける確率誤差を検出するために、一般的には、CRC(巡回冗長検査)アルゴリズムが使用される。しかし、CRCアルゴリズムはあまりに単純であり(例えば、ある種の、多くの場合偶発的な、多重エラーの影響が無効化されることがあり)、したがって、もっと複雑なデータ保全性検査が求められている。
【0027】
悪意に基づく意図的なデータ変更が、懸念の対象ではなく単に確率誤差の問題であれば、暗号ハッシュ関数のスキームを使用することによって、ビットミキサから保全性検査用のハッシュ関数を構築することができる。ビットミキサが電子ハードウェアにおいて実装される場合、それによって得られるハッシュ/MAC関数は、現行の標準的な暗号ハッシュ関数よりも3桁高速になる。ただし、これらのハッシュ/MAC関数は、最も単純な(単純なビットミキサを使用する)構造においては、安全性が低下するので、あらゆる応用において暗号ハッシュ関数を置換できるわけではない。
【0028】
後述のビットミキサは、カスケードされうる(1つのビットミキサの出力がその次のビットミキサの入力になる)。カスケードされたビットミキサは、十分に多くのステージにおいて、安全な暗号(cipher)となる。この特性により、スピードとセキュリティとをトレードすることが可能になる。それでも、これらのビットミキサがハードウェアに実装されると、それによって得られる性能(スピード、出力)は、全てのセキュリティレベルにおいて、既存のソリューションよりも少なくとも一桁向上する。ビットミキサは大量のキー要素を使用し、このキー要素は、最も一般的なビットミキサ構造の入力と出力のうち大きい方のサイズのかたまりに、分割される。これらのかたまりは、「サブキー(subkeys)」と称される。キー要素が明らかにされない場合、後述の構造はMAC関数を提供する(キー要素についての知識を有しているだけで、誰でもメッセージ認証コードを構築又は検証できる)。キー要素が決まって(ハードコードされて)おり、かつ公開されている場合、後述の構造はハッシュ関数を提供する。
【0029】
図1は、本開示の例による、ビットミキサのブロック図100を示している。ビットミキサ105は、nビット入力110のビットに関連付けられたビット列と、キー要素115とをミキシングして、mビット出力120を生成するよう、作用する。通常、ビットミキサ(例えばビットミキサ105)は、
1.ビットミキサが、nビット入力をnビット出力にマッピングすること(実際の実行形態ではn=ブロックサイズは数千でありうる)、
2.ミキシングが大量の秘密キー要素に依存していること(この秘密キー要素は、単一のキーから、又は真性乱数発生器によって生成されてよく、場合によってはこれらを組み合わせることも可能である)、
3.あらゆる入力ビットが、非線形に、あらゆる出力ビットに影響を与えること、
4.(キー要素から個別に選ばれる)入力ビットの非空セットの大部分も、あらゆる出力ビットに影響を与える(無効化される影響はない)こと、
5.入力の連続変更のほとんどは、入力又は入力の変更パターンとの明白な相関を有さない出力をもたらすこと、という特性を有する。
【0030】
実際には、対応するビットミキサの設計では、入力、出力、及びキー要素が特定される必要がある。これは「構造(construction)」と称される。入力列のミキシングを向上させるために、複数のビットミキサが(カスケードされるのとは対照的に)並列に組み合わされうる。図2は、本開示の例による、集合型ビットミキサのブロック図200を示している。ビットミキサ(Mix205、Mix210、Mix215、…、Mix220)は同一のnビット入力225を受信し、これらのビットミキサの出力は、組み合わされ230、mビット出力として出力され235うる(例えば、ビット単位のXOR演算を用いる)。この構造により、回路サイズとセキュリティとをトレードすることが可能になる。ビットミキサは、カスケードされる(場合によっては既存の電子回路を再使用して直列に接続される)ことも可能であり、この場合、1つのビットミキサの出力がその次のビットミキサの入力になる。これらのビットミキサは、十分に多くのステージにおいて安全な暗号となる。この特性により、スピードとセキュリティとをトレードすることが可能になる。それでも、これらのビットミキサがハードウェアに実装されると、それによって得られる性能(スピード、出力)は、全てのセキュリティレベルにおいて、既存のソリューションよりも少なくとも一桁向上する。
【0031】
以下で詳述する図5から図8は、ガロアメッセージ認証コード(GMAC)様構造を図示している図3、及びマークル-ダンガード様構造を図示している図4(これらの構造は両方とも、データブロックを順次処理する)のビットミキサとして使用されうる、ビットミキサの具体例を示している。
【0032】
図3は、本開示の例による、GCM暗号化モードから生じたGMAC様構造300によるハッシュ/MAC関数を示している。カウンタモード暗号化演算において、インクリメントカウンタ(カウンタ0 302、カウンタ1 304、カウンタ2 306)は、ブロック暗号及びキーk(AESなど)を使用して、308、310、312においてそれぞれ暗号化される。カウンタ302、304、306の各々は、更なるランダム性を提供するよう、初期化ベクトル(IV)と組み合わされ(例えば結合され)うる。プレーンテキストは、均等サイズのブロック(プレーンテキスト1 314及びプレーンテキスト2 316)に分割され、それぞれが暗号化されたカウンタ310、312とXORされて、暗号テキスト1 318及び暗号テキスト2 320がそれぞれ生成される。ハッシュ/MAC関数340は、ビットミキサ324に入力される認証データ322(Authデータ 1)(入力x、入力y=0)を含み、ビットミキサ324は、ビットミキサ328への出力を、入力326(入力x)として、暗号テキスト1 318(入力y)と同時に提供する。暗号テキスト2 320(入力y)と、ビットミキサ328の及び出力330(入力x)が、ビットミキサ332に提供される。ビットミキサ334は、ビットミキサ332の出力、及び、認証しかされていない(暗号化されていない)データであるデータAの長さと暗号テキストCの長さの連結値(
で表わされる)を受信する。認証タグ336を生成するために、ビットミキサ334の出力は、暗号E308によって暗号化されたカウンタ0 302とXORされる。
【0033】
認証タグ336は、データブロックをGHASH関数に入れ、その算定結果を暗号化することによって構築される。このGHASH関数は、
GHASH(H,A,C)=Xm+n+1
によって定義され、ここで、Hはハッシュキー、ブロック暗号(AES)を使用して暗号化された128ゼロビットの列であり、Aは認証しかされていない(暗号化されていない)データであり、Cは暗号テキストであり、mはAにおける128ビットブロックの数であり、nはCにおける128ビットブロックの数であり、(A及びCの最終ブロックは厳密に128ビットである必要はない)、かつ、i=0、...、m+n+1の場合の変数Xは、
と定義され、ここで、Mはキー要素Hを伴う単一ビットミキサ又は集合ビットミキサ:f(x,y)=M(x||y)であり、vはAの最終ブロックのビット長であり、uはCの最終ブロックのビット長であり、||はビット列の結合を意味しており、かつ、len(A)とlen(C)はそれぞれ、AとCのビット長の64ビット表現である。これは反復アルゴリズムである(各XはXi-1に依存しており、最終Xだけが出力として保持される)ことに、留意されたい。
【0034】
図4は、本開示の例による、マークル-ダンガード様構造400によるハッシュ/MAC関数を示している。マークル-ダンガード様構造400は、安全圧縮関数f402、404、406、408を使用し、この場合、入力はその出力よりも大きくなる。各関数f402、404、406、408は、異なる番号が振られているが、同種のものである。一部の例では、関数f402、404、406、408は、これらの出力ビットの半分がディスカードされた(又は、ビット単位のXOR演算によって残り半分に折り返された)状態で、可逆(invertible)ビットミキサによって実装されうる。一部の例では、ビットミキサの第1サブキー(例えばf402)は入力として扱われてよく、これにより、ビットミキサは、その出力を改変しなくとも、圧縮関数となる。プレーンテキストはn個の均等サイズのブロック(メッセージブロック1 410、メッセージブロック2 412、…、メッセージブロックn 414)に分割される。必要に応じて、更なる埋め込みビット(長さ埋め込み416)が、最後のブロック(例えばメッセージブロックn 414)に付加されうる。第1関数(例えばf402)は、入力として、初期化ベクトル(IV)418及びメッセージブロック1 410を受容する。最終関数(例えばf408)は出力を生成し(最終処理420)、この出力は次いで、ハッシュ422を生成するためにハッシュ関数によってハッシュされる。
【0035】
関数f402、404、406、408は、決まったサイズ(ビットの長さ)の2つの入力x及びyを有し、かつ、出力zを算出する。IVは、決まった定数であるか、ある種の応用で必要になるように、最終ハッシュ値を変化させる何らかのパーソナライズ値であるかの、いずれかである。公式には、z=f(IV,B)であり、かつ、i=1…nである場合にzi+1=f(z,Bi+1)forである。ハッシュ値は、所与の最終処理関数Fを伴うF(zi+1)である。
【0036】
GHASH関数は、マークル―ダンガード構造を、何らかの改変を伴って具体化したものである。メッセージはAとCという2つの部分に分けられる。IV=0、かつ、追加入力、「ハッシュキー(hash key)」と称される定数H、を伴う
であれば、埋め込みスキームが明白に定義される。最終処理関数も追加入力
を有する。
【0037】
図5は、本開示の例示的な実行形態による、図3及び図4のビットミキサとして使用されうる、半分長の鍵ダブルミックスファイステルネットワーク(DMFN)500の1ラウンドを示している。DMFNでは、ビットミキサの圧縮又は拡張のために必要に応じて入力ビットを反復すること、又は出力ビットを折り返すことによって、ブロックサイズが、入力サイズと出力サイズのうち大きい方のものになりうる。具体的には、データは、2つの半分部LとRとして扱われる。毎ラウンド(Round)において、2つの関数F及びGが、LとR.からLi+1、Ri+1を算出する。最初の第1入力L及びRがビットミキサの入力のために設定される一方、一番最後の値L、Rは出力を構成する。Li+1は、出力FとRのビット単位のXOR演算を使用して生成される一方、ラウンドキーkが、下記のように、Gの出力を用いたビット単位のXOR演算を使用して混入されて、Ri+1が生成される。DMFNでは、各ラウンドi=0、1、...、r-1について、更新済みの左半分(Li+1)及び更新済みの右半分(Ri+1)が算出されうる。
【0038】
上記では、第1入力L及びRがビットミキサの入力のために設定される一方、最後の値L、Rは出力を構成し、F及びGは第1と第2のラウンド関数を表わし、かつ、kはラウンドキーを表わしている。ラウンドr-1における出力は、更新済みのデータブロック(L、R)でありうる。
【0039】
例示的な実行形態のファイステルネットワーク及び/又はDMFNの場合、ラウンド関数(F)は非線形関数になりうる。この関数は可逆的であることも、可逆的ではないこともある。ただしこの逆関数は、第1関数が可逆的である場合には、算出するのが(必ずというわけではないが)難しくなるはずである(一方向関数)。このスキームのセキュリティは、ラウンドキーkの秘密性に、及び、非線形であり、かつ、逆関数を有さないか、算出するのが難しい逆関数を有するかのいずれかであるというFについての要件に、依拠しうる。関数は、一部の例では、ラウンド(例えばF)に依存しうる。ただし他の例では、第1関数はラウンドとは無関係であることもある。
【0040】
好適なラウンド関数(F)の一例は、複数の論理NAND演算であって、各演算が、入力の左半分のシフト後のバージョンの各対のためのものである、複数の論理NAND演算、及び、このNAND演算の各出力のための論理XORを含む。NAND演算が3つという状況では、第1関数は、Lのシフト後のバージョンの第1の対のための第1NAND演算と、Lのシフト後のバージョンの第2の対のための第2NAND演算と、Lのシフト後のバージョンの第3の対のための第3NAND演算と、第1、第2、及び第3のNAND演算の各出力のためのXOR演算とを、含みうる。ハードウェアの実行形態では、上記のシフト又はローテーションは、配線することで簡単に実装されうるので、時間がかからないことがある。ゆえに、第1関数は、2つのXORゲート遅延に加えて、2つの入力NANDゲートの遅延の時間だけしか要さないことがあり(ただし、AND又はNORのゲートは等しく良好に機能する)、これは、セルライブラリが最適化されれば、4つのNAND2ゲート遅延に等しい時間になりうる。本書において、NORゲートとは、Not-OR、Negative-OR、又はNegated-ORの論理関数を実装するゲートである。
【0041】
DMFNの場合、第2ラウンド関数(G)は可逆的でありうる。ただしその逆関数は、容易に算出可能である必要はない。第1関数(F)と同様に、第2関数は、一部の例では、ラウンド(例えばG)に依存しうる。ただし他の例では、第2関数はラウンドとは無関係(全てのラウンドで同一)でありうる。
【0042】
一部の例では、非線形の換字ボックス(sボックス)のレイヤーが第2関数(G)に使用されてよく、これにより、そのマッピングが非線形になりうる。他の例では、第2関数は左半分の循環シフト又はローテーションを実施してよく、これらは次いで、更新済みの右半分を算出するために、ひとまとめに、及びラウンドキーと、ミキシングされうる。より詳細な一例では、第2関数は、左半分の3つの循環シフト後のバージョンを生成してよく、3つのビットの各々は、その同じポジションにおいて、ひとまとめに、及びこのポジションのラウンドキーのビットとXORされて、その算出結果のビット(更新済みの右半分)が生成されうる。この点について、ブロック長=2(ここでnは正の整数である)である時に、3つのデータの循環シフト後のバージョンのどれでも、XORすることで、可逆関数が定義される。第1関数と同様に、ハードウェアの実行形態では、これらのシフト又はローテーションは、適切に配線することで簡単に実装されうるので、時間がかからないことがある。ゆえに、第2関数及びミキシング演算は、2つのXORゲート遅延の時間しか要しないことがあり、その各々は、セルライブラリが最適化されていれば、1.5~3つのNAND2(2入力NAND)ゲート遅延と等しい時間を有しうる。
【0043】
可逆ビットミキサが必要とされる場合、G(又はあらゆるG)は、可逆関数でなくてはならない。Gの逆関数は、ビットミキサの逆関数も必要とされない限りは、容易に算出される必要はない。そのため、それは、典型的な非線形の可逆Sボックスレイヤーよりも高速になりうる。かかる関数Gの一例は、Gの各入力ビットを、所与の循環距離(d、d)からの2つの入力ビットとXORするためのものとなる。2ブロック長の出力では、出力ビットが所与の循環距離からの3つの入力ビットのXORとして算出されると、可逆関数が得られる。ハードウェアの実行形態では、d及びdが大きくないことにより、必要なルーティングが過度に長くならない場合、関数Gの算出及びラウンドキーのXORには、最小限の時間しかかからない。
【0044】
非線形ビットミキサが必要とされる場合、Fは非線形関数でなくてはならない。Fは、反対方向において、ビットミキサの逆関数としてもFの逆関数が必要とされないので、可逆的である必要はない。hh例示的な一実行形態では、下記のように、二元多項式のガロア体において非線形である、高速かつ十分に複雑な構造が使用される。
1.循環距離d及びdからのLの2つのシフト後のバージョンをNANDする。
2.循環距離d及びdにおけるLの他の2つのシフト後のバージョンをNORする。
3.循環距離d及びdにおけるLの更に別の2つのシフト後のバージョンをNANDする。
4.上記の3つのビットブロックをXORして、Lにする。
【0045】
ハードウェアの実行形態では、シフトは、実質的に制約を受けず、ほとんど時間がかからないものである。そのため、FとGは、パス長がほぼ等しく、サイドチャネル漏洩を減少させるためにクリティカルタイミングパス同士のバランスを取るのに、それほど多くない手動労力しか必要としない。FとGは、(全てのラウンドでなければ)特定のラウンドにおいて、相違していることが可能でありうるか、又は、当方の実行形態では、全てのラウンドにおいて同一に保たれうる。
【0046】
可逆関数G,を有するとDMFNが可逆的になることに、留意されたい。Lはボトムアップ法により算出されうる。すなわち、ラウンドキーk及びGの逆関数を知っていれば、Ri+1からLが算出されうる。Lを有するとF(L)が算出されうる。これがXORされてLi+1となり、Rが導かれる。可逆性は、多くの場合、役に立つ特性である。これにより、実現可能な全ての出力値が発生すること、及び、2つの異なる入力により同一の出力が付与されることがなくなることが、確実になる。
【0047】
前述しており、かつ、図5に示しているように、半分長のサブキーkは、各ラウンドでGとミキシングされる。全ブロック長のサブキーとであっても(例えば、図6に示しているように、もう1つの半分長のサブキーがRに混入されたとしても)、ミキシングの顕著な改善は見い出されなかった。それでも、これらの構造は相違したものであり、種々の応用に適している。
【0048】
ここで図6を参照する。図6は、その他の例示的な実行形態による、図3及び図4のビットミキサとして使用されうるDMFN600の1ラウンドを示している。DMFNにおいて、Li+1ではなくRi+1を改変するためにラウンドキーkを適用することによって、2つの半分部を算出するワークは、バランスが取れた状態になりうる。つまり、2つの半分部は、同時に使用可能になりうる。しかし、第1関数(F)が適用される一方で、Rは使用されないことがある。ゆえに、図6に示しているように、Rは、バランスを乱すことなく、別のラウンドキーhとミキシングされうる。また、Ri+1とLi+1は両方とも、キー要素による影響をうけうる。第1関数(F)と第2関数(G)に関して、複雑性が同等の関数が選ばれれば、図6に示しているDMFNにより、より良好な、全体的なミキシング特性が実現されうる。更に別の例では(例えば、第2関数の算出が第1関数よりも緩慢である場合には)、kのミキシングは省略されてよく、これにより、図5に示しているDMFNにミキシング特性が類似しているが、それよりも若干高速な、スキームがもたらされうる。DMFNでは、各ラウンドi=0、1、...、r-1について、更新済みの左半分(Li+1)と更新済みの右半分(Ri+1)が算出されうる。
【0049】
上記では、第1入力L及びRがビットミキサの入力のために設定される一方、最後の値L、Rは出力を構成し、FとGは第1と第2のラウンド関数を表わし、かつ、k及びhはラウンドキーを表わしている。ラウンドr-1における出力は、ビットミキサの出力(更新済みのデータブロック)(L、R)でありうる。
【0050】
周知の換字転置ネットワークに基づくビットミキサの可逆バージョンも、使用されうる。ファイステルネットワーク及びDMFNと同様に、例示的な実行形態の換字転置ネットワークは、反復的に(又は複数ラウンドで)実施されうる。例えば、1つのラウンド(i)では、入力データブロック(D)がラウンドキー(k)とミキシングされ(例えばXORされ)てよく、かつ、その算定結果が、複数のSボックス(S)を含む換字レイヤー、及び転置(permutation:(P))を含む線形変換レイヤーを通じてミキシングされて、更新済みのデータブロック(Di+1)が生成されうる。別の例では、入力データブロックは、最初に、更新済みのデータブロックを生成するために換字レイヤー及び線形変換レイヤーを通じてミキシングされてよく、更新済みのデータブロックは、次いで、ラウンドキー(k)とミキシングされうる。いずれの例においても、Sボックスと転置のいずれか又は両方は、ラウンドに依存していることも、ラウンドとは無関係であることもある。また、一部の例では、少なくとも1つのラウンドでは、Sボックスのうちの少なくとも2つが相違していることがある。例示的な一実行形態では、初期のデータブロック(D)は、より大きなデータブロック(これは少なくとも1つの別のサブセット(B)も含んでいる)の、1つのサブセットでしかないことがある。ラウンドキー(k)は、ミキシングされたラウンドキーを生成するために、この別のサブセット(B)とミキシングされ(例えばXORされ)てよく、ミキシングされたラウンドキーは、このラウンドの入力データブロック(D)とミキシングされうる。あるいは、別の例では、ラウンドキーは、この別のサブセットとミキシングされてよく、その結果得られるミキシングされたラウンドキーが、換字レイヤー及び線形変換レイヤーの後に更新済みのデータブロック(Di+1)とミキシングされうる。
【0051】
図7は、本開示の例示的な実行形態による、図3及び図4のビットミキサとして使用されうる換字転置ネットワーク700の3ラウンドを示している。周知の換字転置ネットワークに基づくビットミキサの可逆バージョンが、使用されうる。圧縮変化又は拡張変化に関して、ブロックサイズは、望ましい入力ブロックサイズと出力ブロックサイズのうち大きい方のものになるよう、選ばれる。入力サイズの方が小さい場合、使用されない入力ビットは一定に保たれうるか、又は、出力サイズと合致するまで反復入力ビットが使用されうる。必要とされる出力サイズの方が小さい場合、出力ビットをディスカードすること、又は、最終出力を生成するためのXOR関数若しくは他の適切な関数を介して、特定のビットをひとまとめに折り返すことが可能である。換字転置(SP)ネットワークは、通例として、以下の3つのステップを何回か反復して、図7にしたがって構築される。
1.入力が一連の非線形関数(Sボックス)によって変換される。
2.その算定結果のビットが、リルーティング/順列置換される。
3.順列置換されたデータが、ラウンドキー/サブキーとXORされる。
注:最初と最後のラウンドが単純化され、1つ又は2つのステップが省略されることが多い。
【0052】
Sボックスが可逆的である場合、SPネットワークは可逆的である。Sボックスが非線形である場合、SPネットワークは非線形である。SPネットワークは任意の幅であってよく、網羅的なミキシングに必要なラウンドの数は、この幅に依存する。ハードウェアの実行形態では、小規模なSボックスによって、より高速なビットミキサが生じる傾向がある。最小の実践的なSボックス(1つのSボックスが3つの入力ビット及び3つの出力ビットを伴う)は、Lars Knudsen、Gregor Leander、Axel Poschmann、Matthew J. B. Robshawが、「Lecture Notes in Computer Science」シリーズのCHES 2010第6225巻(16~32頁)の「PRINTcipher: A Block Cipher for IC-Printing. Cryptographic Hardware and Embedded Systems」で記述しているPRINT暗号において、実装される。この3×3Sボックスの3つの出力ビットは、以下のように定義される。
【0053】
図8は、様々な例示的な実行形態による、図3及び図4のビットミキサとして使用されうるXORツリー800を示している。XORツリーを使用する例により、ミキシング関数は、秘密かつランダムな決まったデータセット、キー要素、及び入力データブロックに基づくものになりうる。この点について、サブキーは、(例えばマルチプレクサ回路を使用して)対応するサブキーを選択するビットといった入力データブロックにおける特定のビットのポジションに対応するポジションのブロックのシーケンスにおける、秘密乱数のブロックでありうる。サブキーは次いで、XORツリーを使用して、ひとまとめにミキシングされうる。
【0054】
図8に示しているように、XORツリー800は、データ結合(data merger)演算を実行するために実装されうる、複数のXOR論理ゲートを含みうる。図8では、論理ゲートの各々は、ゲートが演算を行うサブキーの各ビットにつき1つの、一連のゲートを表わしている。
【0055】
ビットミキサに基づくXORツリーでは、入力は、ビット群を形成している、複数かつ不定長の、連続ビットの非空セットに分割される。各群のビットは、マルチプレクサを使用してキー要素からサブキーを選択し、その出力はひとまとめにビット単位でXORされて、最終ビットミキサ出力が生成される。XOR演算は、典型的には、ASICの2入力XORゲートのツリーを使用して実装されるが、ターゲット技術(包括的なルックアップテーブルを提供するFPGAにおけるものなど)に応じて、多入力ゲート又はパリティ発生回路が使用されうる。この構造のビットミキサは、実装が簡単なだけではなく、性能の向上、電力消費料の削減、セキュリティの改善、及びサイドチャネル攻撃面の最小化も供するものである。
【0056】
ビットミキサに基づくXORツリーの入力の幅及び出力の幅は個別に選ばれうるので、より長い出力幅又はより長い入力幅をそれぞれ選択することによって、拡張関数及び圧縮関数が創出される。ランダムキー要素を有することで、単一入力ビットの変化があればそれが、ランダムサブキーによる出力の変化を引き起こすことになる。そのため、入力ビットの変化があればそれにより、あらゆる出力ビットが影響を受ける。更に、所与のビットミキサ構造を鑑みるに、多入力ビットの変化は、XORされたランダムサブキーの集合(これ自体がランダムなものである)による出力の変化を、引き起こすことになる。総じて、ビットミキサに基づくXORツリーは、上述の望ましい特性の各々を満たし、かつ、理論的に完全なミキシングを確実にするものである。
【0057】
XORツリー構造は、ビット選択とXOR演算だけを使用するので、二元ガロア体において線形である。これらの構造においては、単純に相関した複数の入力値から算出された特定の出力値同士の間に、何らかの4方向相関が存在する。この例では、相関は、以下のように生じる。少なくとも2つの入力ビット群を仮定すると、入力ビット群のうちの1つBからはビットbが、異なる入力ビット群Cからはビットcが選ばれる。B群のbを除く全てのビットが一定に保たれると、K0はbが論理0である場合に選択されたサブキーを、K1はbが論理1である状態で選択されたサブキーを、意味することが可能になる。同様に、L0とL1が、cの論理値に基づいて選択されたサブキーを意味することが可能になると共に、C群の他のビットは一定に保たれる。最後に、Mは、その他の入力ビット群によって選択された全てのサブキーのXORを意味することが可能になり、それらの入力は、一定(その他のビット群がなければ0)に保たれる。b及びcの、実現可能な全ての2×2値から得られる出力値のXORは0となり、これが「4方向相関」と称されるものである。
【0058】
出力値が観測不可な応用では、この種の相関が回路のセキュリティに問題を引き起こすことはない。この相関が懸案となる応用では、出力が、非線形関数によって更に処理されることは不可能になる。例としては、Sボックスなどの、並列収集(collection)の小規模非線形関数、元々の出力とXORされたSボックスなどの、非線形関数の収集の出力、Rotate-Add-XOR(RAX)構造(マイクロプロセッサの実行形態に適したもの)、である。構造を非線形にする別の仕方は、XORツリーの一又は複数のレベルにおいて、XOR演算を図7に示しているものと同様のk-to-1非線形Sボックスに置き換えることである。更なる不均等な回路遅延は、実装が簡単であるが、サイドチャネル漏洩を抑えるために、信号伝播のバランスを手動で取ることが必要になりうる。XORツリーの1つのレベルをSボックスに置き換えることで、労力をあまりかけずに、1.0GHzを上回るクロック速度のシングルクロックサイクル演算が実現される。
【0059】
図9は、本開示の例による、図3及び図4の構造を使用しうるメッセージ認証のためのシステム900を示している。メッセージ904の送信器902は、それを、MACデータタグ908を生成するために、MACアルゴリズム906(例えば、最初と最後のメッセージブロックに秘密キーが組み込まれている、図3のGMAC様構造又は図4のマークル-ダンガード様構造)を通じて実行する。メッセージ904及びMACタグ908は次いで、受信器910に送られる。今度は受信器910が、同じキーを使用して、同じMACアルゴリズム906を通じて送信のメッセージ部分を実行し、第2MACデータタグ912を生成する。受信器910は次いで、送信内の受信された第1MACタグ908と、生成された第2MACタグ912とを比較する。この2つが全く同一であれば、受信器910は、メッセージは送信中に改変も改ざんもされなかったと、安全に仮定しうる(データ保全性)。
【0060】
図10は、本開示の例による、メッセージ認証タグを生成するための方法1000を示している。この方法は、1005において、メッセージを取得することによって始まる。メッセージは、辞書エントリやファイルのコンテンツなどのような、任意の入力又はデータでありうる。メッセージは、プレーンテキスト、(暗号化された)暗号テキスト、又は、他の任意の種類の電子フォーマットのデータでありうる。1010において、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することによって、方法は継続する。1015において、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することによって、方法は継続する。1020において、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することによって、方法は継続する。1025において、第1ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することによって、方法は継続する。ビットミキシング演算は、図5及び図6のダブルミックスファイステルネットワーク、図7の換字転置ネットワーク、図8のXORツリーに基づくビットミキサ構造によって、又は、図2の2つ以上のビットミキサ構造の並列組み合わせによって、実施されうる。
【0061】
一部の例では、方法は、均等サイズのメッセージブロックを作成するために、1030において、最終メッセージブロックに埋め込みを行うことを更に含みうる。一部の例では、方法は、1035において、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。一部の例では、方法は、1040において、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、秘密キーのもとで、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的OR演算を実施することとを、更に含みうる。一部の例では、方法は、1045において、メッセージ認証タグを、プレーンであるか又は暗号化されているメッセージと共に、受信器に送ることを、更に含みうる。
【0062】
図11は、本開示の例による、メッセージ向けのハッシュ値を生成するための方法1100を示している。この方法は、1105において、メッセージを取得することによって始まる。メッセージは、辞書エントリやファイルのコンテンツなどのような、任意の入力又はデータでありうる。メッセージは、プレーンテキスト、(暗号化された)暗号テキスト、又は、他の任意の種類の電子フォーマットのデータでありうる。1110において、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することによって、方法は継続する。一部の例では、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである。1115において、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することによって、方法は継続する。1120において、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することによって、方法は継続する。第1ビットミキシング演算及び後続ビットミキシング演算には、公開されているキー要素が使用される。一部の例では、ビットミキシング演算は、図5及び図6のダブルミックスファイステルネットワーク、図7の換字転置ネットワーク、図8のXORツリーに基づくビットミキサ構造によって、又は、図2の2つ以上のビットミキサ構造の並列組み合わせによって、実施されうる。1125において、第1ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を決定することによって、方法は継続する。
【0063】
一部の例では、方法は、均等サイズのメッセージブロックを作成するために、1130において、最終メッセージブロックに埋め込みを行うことを更に含みうる。一部の例では、方法は、1135において、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。一部の例では、方法1100は、1140において、最終メッセージブロックに、ハッシュ値の算出において実施される他の全てのビットミキシング演算と相違しているビットミキシング演算を実施することを更に含んでよく、この相違は、第1ビットミキシング演算及び後続ビットミキシング演算で使用されるビットミキサの構造であるか、キー要素であるか、又はその両方である。一部の例では、方法1100は、いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを、更に含みうる。
【0064】
図12は、上述したプロセスのうちの一又は複数を実施するために使用されうる、携帯デバイス又はサーバとして使用されうるコンピュータデバイス1200のハードウェア構成の一例を示している。図12は、コンピュータデバイス1200に内包される様々な構成要素を示しているが、図12に示されているのはコンピュータデバイスの一例であり、追加の構成要素が追加されてよく、既存の構成要素を取り除くことも可能である。
【0065】
コンピュータデバイス1200は、デスクトップ、ラップトップ、サーバなどといったコンピュータデバイス、又は、スマートフォン、タブレットコンピュータ、携帯電話、携帯用情報端末などといった携帯デバイスのうちの、任意の種類のものでありうる。図12に示しているように、コンピュータデバイス1200は、コア構成及びクロック周波数が様々な、一又は複数のプロセッサ1202を含みうる。コンピュータデバイス1200は、コンピュータデバイス1200の動作中にメインメモリとしての役割を果たす、一又は複数のメモリデバイス1204も含みうる。例えば、動作中に、上述の動作をサポートするソフトウェアのコピーが、一又は複数のメモリデバイス1204に記憶されうる。コンピュータデバイス1200は、コンピュータデバイス1200と人との相互作用及びコンピュータデバイス1200の操作を可能にするための、一又は複数の周辺インターフェース1206(例えばキーボード、マウス、タッチパッド、コンピュータスクリーン、タッチスクリーンなど)も含みうる。
【0066】
コンピュータデバイス1200は、一又は複数のネットワークを介して通信するための、一又は複数のネットワークインターフェース1208(イーサネットアダプタ、無線トランシーバー、又は、プロトコルを使用して有線媒体又は無線媒体経由で通信するためのシリアルネットワークコンポーネントなど)も含みうる。コンピュータデバイス1200は、画像、ファイル、及び一又は複数のプロセッサ1202によって実行されるプログラム命令などのデータを記憶するための、物理的寸法及び記憶容量が様々な一又は複数の記憶デバイス1210(例えばフラッシュドライブ、ハードドライブ、ランダムアクセスメモリなど)も含みうる。
【0067】
加えて、コンピュータデバイス1200は、上述の機能を可能にする一又は複数のソフトウェアプログラム1212を含みうる。一又は複数のソフトウェアプログラム1212は、一又は複数のプロセッサ1202に本書に記載のプロセスを実施させる、命令を含みうる。一又は複数のソフトウェアプログラム1212のコピーが、一又は複数のメモリデバイス1204及び/又は一又は複数の記憶デバイス1210に記憶されうる。同様に、一又は複数のソフトウェアプログラム1212によって利用されるデータは、一又は複数のメモリデバイス1204及び/又は一又は複数の記憶デバイス1210に記憶されうる。
【0068】
実行形態において、コンピュータデバイス1200は、ネットワーク1216を介して他のデバイスと通信しうる。他のデバイスとは、上述した任意の種類のデバイスでありうる。ネットワーク1216は、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及び、それらの任意の組み合わせといった、任意の種類のネットワークでありうる。ネットワーク1216は、多種多様な商用プロトコル(例えばTCP/IP、UDP、OSI、FTP、UPnP、NFS、CIFS、AppleTalkなど)のうちの任意のものを使用して、通信をサポートしうる。ネットワーク1216は、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組み合わせでありうる。
【0069】
コンピュータデバイス1200は、多種多様なデータストア並びにその他の上述したメモリ及び記憶媒体を含みうる。これらは、例えば、コンピュータのうちの一又は複数に対してローカルな(かつ/又はかかるコンピュータに常駐している)記憶媒体、又は、ネットワーク上のあらゆるコンピュータからリモートな記憶媒体の、多種多様な場所に存在しうる。一部の実行形態では、情報は、当業者には周知のストレージエリアネットワーク(「SAN」)内に存在しうる。同様に、コンピュータ、サーバ、又はその他のネットワークデバイスによる機能を実施するために必要なファイルがあればそれは、適宜ローカルでかつ/又はリモートで、記憶されうる。
【0070】
実行形態においては、上述したコンピュータデバイス1200の構成要素は、単一の筐体内に封入される必要はなく、互いに近接して配置される必要もない。コンピュータデバイス1200は、開示されている実行形態を実施するために必要なあらゆる随伴ファームウェア又はソフトウェアを含む、任意の種類のハードウェア構成要素を含みうるので、上述の構成要素は例にすぎないことを、当業者は認識しよう。コンピュータデバイス1200は、部分的又は全体的に、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)といった、電子回路構成要素又はプロセッサによっても実装されうる。
【0071】
更に、本発明は、以下の条項による実施形態を含む。
【0072】
条項1:メッセージ認証タグを生成するための、コンピュータ実装される方法であって、メッセージを取得することと、電子プロセッサによって、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、電子プロセッサによって、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第1ビットミキシング演算及び後続ビットミキシング演算に基づくメッセージ認証タグを生成することとを含む、方法。
【0073】
条項2:メッセージが、プレーンテキストメッセージ又は暗号化されたメッセージである、条項1に記載の方法。
【0074】
条項3:いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを更に含む、条項1に記載の方法。
【0075】
条項4:第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである、条項1に記載の方法。
【0076】
条項5:メッセージ認証タグを、プレーンテキストであるメッセージと共に受信器に送ることを更に含む、条項1に記載の方法。
【0077】
条項6:メッセージ認証タグを、暗号化されているメッセージと共に受信器に送ることを更に含む、条項1に記載の方法。
【0078】
条項7:第1ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、排他的OR(XOR)ツリー、又は2つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項1に記載の方法。
【0079】
条項8:第1ビットミキシング演算及び後続ビットミキシング演算がキー要素を使用して実施される、条項1に記載の方法。
【0080】
条項9:キー要素は明らかにされず、メッセージ認証タグはメッセージ認証コードである、条項8に記載の方法。
【0081】
条項10:最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、秘密キーのもとで、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的OR演算を実施することとを更に含む、条項1に記載の方法。
【0082】
条項11:均等サイズのメッセージブロックを作成するために、最終メッセージブロックに埋め込みを行うことを更に含む、条項1に記載の方法。
【0083】
条項12:メッセージ向けのハッシュ値を生成するための、コンピュータ実装される方法であって、メッセージを取得することと、電子プロセッサによって、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、電子プロセッサによって、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、電子プロセッサによって、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、電子プロセッサによって、第1ビットミキシング演算及び後続ビットミキシング演算に基づくハッシュ値を生成することとを含む、方法。
【0084】
条項13:メッセージが、プレーンテキストメッセージであるか、暗号化されたメッセージであるか、又は、他の任意の種類の電子フォーマットのデータである、条項12に記載の方法。
【0085】
条項14:第1ビットミキシング演算及び後続ビットミキシング演算が、公開されているキー要素を使用する、条項12に記載の方法。
【0086】
条項15:最終メッセージブロックに最終ビットミキシング演算を実施することを更に含み、最終ビットミキシング演算は、ハッシュ値の算出において実施される第1ビットミキシング演算及び後続ビットミキシング演算とは相違しており、相違は、第1ビットミキシング演算及び後続ビットミキシング演算で使用されるビットミキサの構造であるか、キー要素であるか、又はその両方である、条項12に記載の方法。
【0087】
条項16:いくつかの暗号化されたメッセージブロックを生成するために、ブロック暗号化アルゴリズムを用いて、均等サイズのメッセージブロックの各々を暗号化することを更に含む、条項12に記載の方法。
【0088】
条項17:第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックは、暗号化されたメッセージブロックである、条項12に記載の方法。
【0089】
条項18:第1ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、XORツリー、又は2つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項12に記載の方法。
【0090】
条項19:電子プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備える、コンピュータシステムであって、命令は、電子プロセッサによって実行されると、メッセージ認証タグを生成するための方法を実施し、この方法が、メッセージを取得することと、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、一又は複数の後続メッセージブロック及び最終メッセージブロックに、先行メッセージブロックを用いて後続ビットミキシング演算を実施することと、第1ビットミキシング演算及び後続ビットミキシング演算に基づいてメッセージ認証タグを生成することとを含む、コンピュータシステム。
【0091】
条項20:第1ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、XORツリー、又は2つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項19に記載のコンピュータシステム。
【0092】
条項21:電子プロセッサが、最終メッセージブロック及び認証データの長さと暗号化されたテキストブロックの長さとの結合に基づく出力を用いて、最終ビットミキシング演算を実施することと、最終ビットミキシング演算の出力、及びブロック暗号化アルゴリズムを使用して暗号化されている暗号化済み無効カウンタを用いて、排他的OR演算を実施することとを含む、方法を実施するよう更に動作可能である、条項19に記載のコンピュータシステム。
【0093】
条項22:電子プロセッサと、命令を記憶している非一過性のコンピュータ可読媒体とを備える、コンピュータシステムであって、命令は、電子プロセッサによって実行されると、ハッシュ値を生成するための方法を実施し、この方法が、メッセージを取得することと、メッセージを、第1メッセージブロック、一又は複数の後続メッセージブロック、及び最終メッセージブロックを含む、いくつかの均等サイズのメッセージブロックに区分することと、第1メッセージブロックに、初期化値を用いて第1ビットミキシング演算を実施することと、一又は複数の後続メッセージブロック及び最終メッセージブロックに、処理済みの先行メッセージブロックとの後続ビットミキシング演算を実施することと、第1ビットミキシング演算及び後続ビットミキシング演算に基づいてハッシュ値を生成することとを含む、コンピュータシステム。
【0094】
条項23:第1ビットミキシング演算及び後続ビットミキシング演算が、ダブルミックスファイステルネットワーク、換字転置ネットワーク、XORツリー、又は2つ以上のビットミキサ構造の並列組み合わせ、に基づくビットミキサ構造によって実施される、条項22に記載のコンピュータシステム。
【0095】
条項24:電子プロセッサが、最終メッセージブロックに基づく出力との、最終ビットミキシング演算を実施することと、ハッシュ値の生成における第1ビットミキシング演算及び後続ビットミキシング演算と相違しているビットミキサとの最終ビットミキシング演算を実施することとを含む、方法を実施するよう更に動作可能である、条項22に記載のコンピュータシステム。
【0096】
機能は、ソフトウェアで実装される場合、一又は複数の命令又はコードとして、コンピュータ可読媒体に記憶されうるか、又は、コンピュータ可読媒体を経由して伝送されうる。コンピュータ可読媒体は、1つの場所から別の場所へのコンピュータプログラムの伝送を促進する任意の媒体を含む、有形で非一時的なコンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、利用可能な任意の、コンピュータによってアクセス可能な、有形かつ非一過性の媒体でありうる。非限定的な例としては、かかる有形かつ非一過性のコンピュータ可読媒体は、RAM、ROM、フラッシュメモリ、EEPROM、CD-ROM若しくは他の光ディスク記憶デバイス、磁気ディスク記憶デバイス若しくは他の磁気記憶デバイス、又は、命令若しくはデータ構造の形態で所望のプログラムコードを保持若しくは記憶するために使用可能であり、かつ、コンピュータによってアクセス可能な、他の任意の媒体を含みうる。本書において、ディスク(disk及びdisc)とは、CD、レーザーディスク、光ディスク、DVD,フロッピーディスク、及びブルーレイディスクを含み、ディスク(disk)が通常、データを磁気的に再生する一方、ディスク(disc)は、レーザを用いて光学的にデータを再生するものである。また、接続があればそれは、正確には、コンピュータ可読媒体と表現される。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、又は、無線技術(赤外線、無線、及びマイクロ波など)を使用して、ウェブサイト、サーバ、又は他の遠隔ソースから伝送される場合には、これらの同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は無線技術(赤外線、無線、及びマイクロ波など)も、媒体の定義に含まれる。上述したものの組み合わせも、コンピュータ可読媒体の範囲に含まれるべきである。
【0097】
上記の説明は例示であり、当業者には、構成及び実行形態における変形例が想起されうる。例えば、本書で開示されている実施形態に関連して記載されている、様々な例示的な論理、論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特殊用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、暗号コプロセッサ若しくは他のプログラマブル論理デバイス、ディスクリートゲート若しくはトランジスタ論理、ディスクリートハードウェアコンポーネント、又は、本書に記載の機能を実行するよう設計されたそれらの任意の組み合わせ、を用いて、実装されうるか又は実施されうる。汎用プロセッサは、マイクロプロセッサでありうるが、代替的には、任意の従来型のプロセッサ、コントローラ、マイクロコントローラ、又は状態機械でありうる。プロセッサは、コンピューティングデバイスの組み合わせ(例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、一又は複数のマイクロプロセッサとDSPコアとの併用、又は、他の任意のかかる構成)としても実装されうる。
【0098】
一又は複数の例示的な実施形態では、記載されている機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせにおいて、実装されうる。ソフトウェアの実行形態では、本書に記載の技法は、本書に記載の機能を実行するモジュール(例えば、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス等)を用いて実装されうる。モジュールは、情報、データ、引数(augument)、パラメータ、又はメモリコンテンツをパッシングすること及び/又は受信することによって、別のモジュール又はハードウェア回路に連結されうる。情報、引数、パラメータ、データ等は、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送等を含む任意の好適な手段を使用して、パッシングされうるか、転送されうるか、又は伝送されうる。ソフトウェアのコードは、メモリユニットに記憶され、かつ、プロセッサによって実行されうる。メモリユニットは、プロセッサの内部又は外部に実装されうる。この場合、メモリユニットは、当技術分野では既知の様々な手段を介して、プロセッサに通信可能に連結されうる。
【0099】
本教示はその実行形態の例を参照して説明されているが、その真の理念及び範囲から逸脱しなければ、当業者は、記載されている実行形態に様々な改変を行うことが可能である。本書における用語及び記述は、例示のみを目的として明示されており、限定を意図するものではない。詳細には、プロセスは例によって説明されているが、これらのプロセスのステージは、例示とは異なる順序で、又は同時に、実施されうる。更に、「含む(including/includes)」、「有する(having/has)」、「伴う(with)」という用語又はそれらの変形表現は、詳細説明において使用されている限り、「備える、含む(comprising)」という用語と同様に、包括的であることが意図されている。本書において、アイテムの列挙(例えば「A及びB」など)に関連する、「一又は複数の(one or more of)」及び「少なくとも一つの(at least one of)」という表現は、Aのみ、Bのみ、又はA及びBを意味する。更に、別途明記されない限り、「セット(set)」という用語は、「一又は複数」であると解釈すべきである。また、「連結する(couple/couples)」という用語は、間接接続と直接接続のいずれかを意味することが意図されている。ゆえに、第1デバイスが第2デバイスに連結されるという場合、その接続は直接接続によるものであってよく、又は、他のデバイス、構成要素、及び接続を介した間接接続によるものでもありうる。
【0100】
当業者は、記載されている実施形態に対して、その真の理念及び範囲から逸脱しなければ、様々な変更を行うことが可能である。本書における用語及び記述は、例示のみを目的として明示されており、限定を意図するものではない。詳細には、方法は例によって説明されているが、この方法のステップは、例示とは異なる順序で、又は同時に、実施されうる。当業者には、これらの変形例及びその他の変形例は、以下の特許請求の範囲及びその均等物において規定される理念及び範囲に含まれることが可能であることが、認識されよう。
【0101】
本開示の前述の説明は、それに関連する実施形態と共に、例示のみを目的として提示されている。説明は網羅的ではなく、開示内容を開示された形態そのものに限定するものではない。前述の説明から、当業者には、上記の教示を踏まえた改変例及び変形例が可能であること、又は、本開示を実践することでかかる改変例及び変形例が得られることが、認識されよう。例えば、記載されているステップは、記載されているのと同じシーケンスで、又は同程度分離されて、実施される必要はない。同じく、様々なステップは、同一又は類似の目的を実現するために、必要に応じて、省略されるか、反復されるか、又は組み合わされうる。同様に、記載されているシステムは、必ずしも、実施形態で説明している全ての部分を含む必要はなく、実施形態では説明していない他の部分を含むこともある。
【0102】
したがって、本開示は、上述の実施形態に限定されず、その代わりに、付随する特許請求の範囲の同等物の全範囲を踏まえて、かかる特許請求の範囲により規定される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12