(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-29
(45)【発行日】2023-12-07
(54)【発明の名称】リングオシレータベースのエントロピー源への位相トラッキングアタックに対する対応策
(51)【国際特許分類】
G06F 21/55 20130101AFI20231130BHJP
【FI】
G06F21/55
【外国語出願】
(21)【出願番号】P 2018238536
(22)【出願日】2018-12-20
【審査請求日】2021-12-15
(32)【優先日】2017-12-22
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】500520743
【氏名又は名称】ザ・ボーイング・カンパニー
【氏名又は名称原語表記】The Boeing Company
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ハース, ラースロー
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2004-234153(JP,A)
【文献】米国特許出願公開第2014/0195576(US,A1)
【文献】米国特許出願公開第2006/0002550(US,A1)
【文献】特開2008-187679(JP,A)
【文献】国際公開第2013/121736(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
(57)【特許請求の範囲】
【請求項1】
コンピュータシステムのセキュリティを提供するためのシステムであって、少なくとも:
ハードウエア源から複数の独立した第1のエントロピー値
を受け取
ることであって、前記複数の独立した第1のエントロピー値が、前記ハードウエア源の対応する複数のカウンタに記憶されたマルチビット値である、複数の独立した第1のエントロピー値を受け取ること;
前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを
、前記複数の独立した第1のエントロピー値のうちの前記少なくとも幾つかを順序変更する順列関数を含む関数に適用して、第2のエントロピー値を生成
すること;
前記第2のエントロピー値にホワイトニング関数を適用することによって前記第2のエントロピー値の潜在的な非ランダム特性を除去して、ホワイトニングされた第2のエントロピー値を生成
すること;
疑似乱数生成器に前記ホワイトニングされた第2のエントロピー値を初期値として与え
ること;
初期値として前記ホワイトニングされた第2のエントロピー値を与えられた前記疑似乱数生成器を用いて乱数を生成
すること;
及び
前記乱数を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成する
こと
を行うように構成され
た一又は複数の論理回路を備え
、
前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、前記第2のエントロピー値を生成するために、秘密鍵を使用して前記複数の独立した第1のエントロピー値のうちの前記少なくとも幾つかを選択するように構成されていることを含む、
システム。
【請求項2】
前記一又は複数の論理回路が暗号化テキスト又はメッセージ認証コードの前記ブロックを生成するように構成されていることが、前記乱数から構成される又は導かれる鍵を用いて暗号化テキスト又はメッセージ認証コードの前記ブロックを生成するように構成されていることを含む、請求項1に記載のシステム。
【請求項3】
前記一又は複数の論理回路が暗号化テキスト又はメッセージ認証コードの前記ブロックを生成するように構成されていることが、少なくとも:
鍵が生成される、前記乱数を用いた鍵共有プロトコルを実施し;
前記鍵を用いて暗号化テキスト又はメッセージ認証コードの前記ブロックを生成する
ように構成されていることを含む、請求項1又は2に記載のシステム。
【請求項4】
前記ハードウエア源が
複数のリングオシレータであり、
前記複数のリングオシレータの各々がそれぞれ各自のカウンタを有し、前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値を受け取るように構成されていることが、前記リングオシレータから前記複数の独立した第1のエントロピー値を受け取るように構成されていることを含む、請求項1から3のいずれか一項に記載のシステム。
【請求項5】
前記ハードウエア源が単一のハードウエア源であり、前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値を受け取るように構成されていることが、前記単一のハードウエア源から前記複数の独立した第1のエントロピー値を受け取るように構成されていることを含む、請求項1から
3のいずれか一項に記載のシステム。
【請求項6】
前記ハードウエア源が複数の独立したハードウエア源であり、前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値を受け取るように構成されていることが、前記複数の独立したハードウエア源から前記複数の独立した第1のエントロピー値を受け取るように構成されていることを含む、請求項1から
3のいずれか一項に記載のシステム。
【請求項7】
前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが:
前記複数の独立した第1のエントロピー値を独立した第1のエントロピー値の複数のグループに分け;
前記独立した第1のエントロピー値の複数のグループを前記順列関数に適用して順序変更されたエントロピー値のグループを生成し;
前記順序変更されたエントロピー値のグループを連結して前記第2のエントロピー値を生成する
ように構成されていることを含む、請求項
1に記載のシステム。
【請求項8】
前記関数がハッシュ関数
を更に含み、前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記ハッシュ関数に適用するように構成されていることを含む、請求項1から
7のいずれか一項に記載のシステム。
【請求項9】
前記関数がビットミキサー
を更に含み、前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記ビットミキサーに適用するように構成されていることを含む、請求項1から
8のいずれか一項に記載のシステム。
【請求項10】
前記一又は複数の論理回路が前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、前記複数の独立した第1のエントロピー値のうちの複数のエントロピー値を、前記第2のエントロピー値を生成するための前記関数に選択的に適用するように構成されていることを含む、請求項1から
9のいずれか一項に記載のシステム。
【請求項11】
請求項1から
10のいずれか一項に記載のシステムを実装するコンピュータシステムのセキュリティを提供する方法であって:
ハードウエア源から複数の独立した第1のエントロピー値
を受け取ること
であって、前記複数の独立した第1のエントロピー値が、前記ハードウエア源の対応する複数のカウンタに記憶されたマルチビット値である、複数の独立した第1のエントロピー値を受け取ることと;
前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを
、前記複数の独立した第1のエントロピー値のうちの前記少なくとも幾つかを順序変更する順列関数を含む関数に適用して、第2のエントロピー値を生成すること;
前記第2のエントロピー値にホワイトニング関数を適用することによって前記第2のエントロピー値の潜在的な非ランダム特性を除去して、ホワイトニングされた第2のエントロピー値を生成すること;
疑似乱数生成器に前記ホワイトニングされた第2のエントロピー値を初期値として与えること;
初期値として前記ホワイトニングされた第2のエントロピー値を与えられた前記疑似乱数生成器を用いて乱数を生成すること;及び
前記乱数を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成すること
を含
み、
前記複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することが、前記第2のエントロピー値を生成するために、秘密鍵を使用して前記複数の独立した第1のエントロピー値のうちの前記少なくとも幾つかを選択することを含む、
方法。
【請求項12】
暗号化テキスト又はメッセージ認証コードの前記ブロックを生成することが、前記乱数から構成される又は導かれる鍵を用いて暗号化テキスト又はメッセージ認証コードの前記ブロックを生成することを含む、請求項
11に記載の方法。
【請求項13】
暗号化テキスト又はメッセージ認証コードの前記ブロックを生成することが、少なくとも:
鍵が生成される、前記乱数を用いた鍵共有プロトコルを実施すること;及び
前記鍵を用いて暗号化テキスト又はメッセージ認証コードの前記ブロックを生成すること
を含む、請求項
11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概してコンピュータシステムのセキュリティを提供することに関し、特に、リングオシレータベースのエントロピー源への位相トラッキングアタックに対する対応策を用いてコンピュータシステムのセキュリティを提供することに関する。
【背景技術】
【0002】
真の乱数は、情報セキュリティに広く用いられている。例えば、真の乱数は、疑似乱数生成器が暗号鍵を生成するためのシードとして使用することができる。リングオシレータは通常、それらの発振信号の位相が真のランダム回路ノイズの影響を受けるため、真の乱数を生成するためのエントロピー源として使用される。しかしながら、リングオシレータの発振信号は、この回路から漏れることがある。よって、権限を有さない第三者が、回路から無線で放射される又は電子回路のコネクタ若しくはピンに出現する漏洩発振信号を検出できる可能性がある。権限を有さない第三者が位相トラッキングアタックを実施して漏洩発振信号からリングオシレータの位相ドリフトを再構築することに成功できる場合、この権限を有さない第三者は、リングオシレータによって生成された真の乱数を再現することができるであろう。これによりこれら真の乱数が情報セキュリティに使用され、例えば暗号鍵が生成されると、セキュリティは失われる。
【0003】
既存の解決法は、リングオシレータからの電磁(EM)放射から保護するために、高価な金属シールドを回路の周りに用いることを含む。しかしながら、高価な金属シールドの使用は、通常効果的でない。これは、発振信号がEM放射として漏出し、リングオシレータを実現している電子回路のピン若しくはコネクタ又はリングオシレータに給電する電線上に観察可能であるためである。
【0004】
したがって、上記の問題点のうちの少なくとも幾つかと、起こりうる他の問題点を考慮した、システム及び方法を手に入れることが望ましいであろう。
【発明の概要】
【0005】
本開示の例示的実装態様は、リングオシレータベースのエントロピー源への位相トラッキングアタックに対する対応策を用いてコンピュータシステムのセキュリティを提供することを目的としている。既存の解決法とは異なり、例示的実装態様は、権限を有さない第三者が一又は複数のリングオシレータによって生成された真の乱数を再現するために漏出発振信号内の情報を容易に使用することができないように前記情報を難読化するための、プロトコルレベルの解決法を提供する。これらプロトコルレベルの解決法は、一又は複数のリングオシレータによって生成された複数のエントロピー値を関数に適用することに基づいている。したがって、これらプロトコルレベルの解決法は、安価で効果的であり、実施が容易である。
【0006】
ゆえに、本開示は、限定しないが、下記の例示的な実装態様を含む。
【0007】
幾つかの例示的実装態様は、コンピュータシステムのセキュリティを提供する方法を提供し、この方法は:ハードウエア源から複数の独立した第1のエントロピー値を受け取ること;複数の独立した第1のエントロピー値を第2のエントロピー値を生成するための関数に適用すること;疑似乱数生成器に第2のエントロピー値を初期値として与えること;初期値として第2のエントロピー値を与えられた疑似乱数生成器を用いて乱数を生成すること;及び乱数を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成することを含む。
【0008】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、暗号化テキスト又はメッセージ認証コードのブロックを生成することは、乱数から構成される又は導かれる鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成することを含む。
【0009】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、暗号化テキスト又はメッセージ認証コードのブロックを生成することは、少なくとも:鍵が生成される、乱数を用いる鍵共有プロトコルを実施すること;及び鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成することを含む。
【0010】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、ハードウエア源はリングオシレータであり、複数の独立した第1のエントロピー値を受け取ることは、リングオシレータから複数の独立した第1のエントロピー値を受け取ることを含む。
【0011】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、ハードウエア源は単一のハードウエア源であり、一又は複数の論理回路が複数の独立した第1のエントロピー値を受け取るように構成されていることは、前記単一のハードウエア源から複数の独立した第1のエントロピー値を受け取るように構成されていることを含む。
【0012】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、ハードウエア源は複数の独立したハードウエア源であり、複数の独立した第1のエントロピー値を受け取ることは、複数の独立したハードウエア源から複数の独立した第1のエントロピー値を受け取ることを含む。
【0013】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、関数は順列関数であり、一又は複数の論理回路が複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることは、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを順列関数に適用するように構成されていることを含む。
【0014】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することは:複数の独立した第1のエントロピー値を独立した第1のエントロピー値の複数のグループに分けること;独立した第1のエントロピー値の複数のグループを順列関数に適用して順序変更されたエントロピー値のグループを生成すること;及び順序変更されたエントロピー値のグループを連結して第2のエントロピー値を生成することを含む。
【0015】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、関数はハッシュ関数であり、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することは、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをハッシュ関数に適用することを含む。
【0016】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、関数はビットミキサーであり、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することは、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをビットミキサーに適用することを含む。
【0017】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することは、複数の独立した第1のエントロピー値のうちの複数のエントロピー値を、第2のエントロピー値を生成するための関数に選択的に適用することを含む。
【0018】
いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法の幾つかの例示的実装態様では、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することは、複数の独立した第1のエントロピー値のうちの少なくとも幾つか及び秘密鍵を、第2のエントロピー値を生成するための前記関数に適用することを含む。
【0019】
幾つかの例示的実装態様は、コンピュータシステムのセキュリティを提供するためのシステムを提供し、このシステムは、少なくとも、いずれかの先述の例示的実装態様又は先述の例示的実装態様のいずれかの組み合わせの方法を実施するように構成された一又は複数の論理回路を備える。
【0020】
本開示の上記の特徴、態様、及び利点、及びその他の特徴、態様、及び利点は、以下の詳細な説明と共に、簡潔に後述する添付図面を参照することで明らかになろう。本開示は、本開示において明記される二つ、三つ、四つ、又はそれよりも多くの特徴又は要素のあらゆる組み合わせを、そのような特徴又は要素が本明細書に記載される特定の例示的な実装態様において明示的に組み合わされているか、又は他の方法で記載されているかどうかに関係なく含む。本開示は、本開示のすべての分離可能な特徴又は要素が、その態様及び例示的な実装態様のいずれにおいても、本開示の文脈に明記しない限りは、組み合わせ可能であると見なされることを意図している。
【0021】
したがって、この「発明の概要」は、本開示の幾つかの態様の基本的な理解を提供するために、幾つかの例示的な実装態様を要約することのみを目的に提供されていると理解されたい。したがって、上述の例示的な実装態様は例に過ぎず、いかなる意味においても、本開示の範囲又は本質を狭めると解釈すべきではないことを理解されたい。その他の例示的な実装態様、態様、及び利点は、添付図面と併せて以下の詳細説明を参照することで明らかになろう。添付図面は、例として、記載されている幾つかの例示的実装態様の原理を示すものである。
【図面の簡単な説明】
【0022】
ここまでは、本開示の例示的実装態様を一般的な用語で説明した。ここからは添付図面を参照する。これらの図面は必ずしも正確な縮尺で描かれているわけではない。
【
図1】本発明の例示的実装態様による、コンピュータシステムのセキュリティを提供するためのシステムを示している。
【
図2】種々の例示的実装態様による、システムのリングオシレータを示している。
【
図3】種々の例示的実装態様による、コンピュータシステムのセキュリティを提供する方法の様々なステップを示すフロー図である。
【発明を実施するための形態】
【0023】
添付図面を参照し、本開示の幾つかの実装態様について、以下でより詳しく説明する。添付図面には本開示の実装態様の一部が示されているが、すべてが示されているわけではない。実際、本開示の様々な実装態様は、多くの異なる形態で具現化されてよく、本明細書に明記される実装態様に限定されると解釈すべきではない。むしろ、これら例示的実装態様は、本開示が包括的且つ完全なものになるように、及び当業者に本開示の範囲が十分に伝わるように、提供される。例えば、別段の断りがない限り、何かが「第1の」、「第2の」等のものであるという表現は、特定の順番を示すと解釈すべきでない。また、(別段の断りがない限り)何か別のものの上にあると説明され得るものは、その代わりに下にあることもあり、逆もまた然りである。同様に、何か別の物の左にあると説明され得る物は、その代わりに右にあることもあり、逆もまた然りである。全体を通して、類似の参照番号は類似の要素を表している。
【0024】
本開示の例示的実装態様は、概してコンピュータシステムのセキュリティを提供することを目的とし、特に、リングオシレータベースのエントロピー源への位相トラッキングアタックに対する対応策を用いてコンピュータシステムのセキュリティを提供することを目的とする。
【0025】
図1は、本開示の例示的実装態様によるコンピュータシステムのセキュリティ110を提供するためのシステム100を示している。コンピュータシステム110は、図示のシステム100を含むことができる。例えば、コンピュータシステム110はシステム100を備える。別の実施例では、コンピュータシステム110とシステム100とは、二つの分離したシステムである。
【0026】
システム100は、多数の構成要素、ユニット等(一般に「構成要素」)の各々の一又は複数を含むことができ、そのうちの少なくとも幾つかは、マルチプレクサ、レジスタ、演算論理装置、メモリ、マイクロプロセッサ等といった論理回路を含み得るか、又はそのような論理回路を用いて実施され得る。システム100は、多数の異なる用途のいずれかのために設計することができ、位相トラッキングアタックに対する対応策をシステム100に提供し、コンピュータシステム110のセキュリティを提供するための特定の適用性を有し得る。
【0027】
コンピュータシステム110は、プロセッサとプロセッサに連結されたコンピュータ可読記憶媒体又はメモリとを含むことができ、プロセッサは、メモリに記憶された一又は複数のコンピュータプログラムを含むコンピュータ可読プログラムコードを実行するように構成されている。一又は複数の機能及び機能の組み合わせが、特殊用途電子ハードウエアに基づくシステム及び/又は特定の機能を実施するプロセッサ、又は特殊用途ハードウエアとプログラムコード命令との組み合わせによって実行されうることも、理解されよう。図示のように、メモリに記憶されてプロセッサによって実行可能コンピュータプログラム(複数可)は、安全なアプリケーションプログラム111(更に簡単に安全なアプリケーションとも呼ばれる)を含み得る。
【0028】
幾つかの実施例では、図示のように、システム100は、複数の独立した第1のエントロピー値を生成するようにハードウエア源102に命令又はハードウエア源を制御するように構成された制御回路101を含む。独立した第1のエントロピー値は、ハードウエア源によって生成された真の乱数、例えば、真のランダムビットのシーケンスを含み得る。ハードウエア源は、位相トラッキングアタックによって攻撃され得る。権限を有さない第三者は、位相トラッキングアタックを介して独立した第1のエントロピー値を再現し得る。
【0029】
幾つかの実施例では、ハードウエア源102は、シード生成器103に複数の独立した第1のエントロピー値を提供するように構成される。シード生成器は、複数の独立した第1のエントロピー値を受け取り、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを、第2のエントロピー値を生成するための関数に適用するように構成される。第2のエントロピー値は、位相トラッキングアタックによって容易に攻撃され得ない安全な値である。つまり、権限を有さない第三者が第2のエントロピー値を再現することは、困難であるか、又は不可能である。
【0030】
幾つかの実施例では、シード生成器103は、システム100のホワイトニング関数104に第2のエントロピー値を提供するように構成される。ホワイトニング関数は、バイアス又は自己相関といった第2のエントロピー値の潜在的な非ランダム特性を除去して、第2のエントロピー値を疑似乱数生成器105に提供することができる。疑似乱数生成器は、シード(第2のエントロピー値)を用いて乱数(真の乱数ではなく疑似乱数)を生成するように構成される。第2のエントロピー値は安全な値であるので、疑似乱数生成器によって使用されるシードは安全である。したがって、疑似乱数生成器によって生成された乱数も安全である。つまり、権限を有さない第三者が疑似乱数生成器によって生成された乱数を再現することは、不可能ではないとしても困難である。
【0031】
幾つかの実施例では、疑似乱数生成器105は、安全なアプリケーション111の鍵生成器112に乱数を提供するように構成される。鍵生成器は、乱数を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成するように構成される。鍵生成器は、生成された暗号化テキスト又はメッセージ認証コードのブロックをコンピュータシステム110の安全なアプリケーション111に提供することができる。疑似乱数生成器によって生成された乱数は安全なので、生成された暗号化テキスト又はメッセージ認証コードのブロックも安全である。したがって、安全なアプリケーションで生成された暗号化テキスト又はメッセージ認証コードのブロックを使用することも安全である。
【0032】
幾つかの実施例では、安全な又は暗号のアプリケーション111は、乱数から構成される又は導かれる鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成するように構成される。幾つかの実施例では、鍵生成器112は、少なくとも、鍵が生成される、乱数を用いた鍵共有プロトコルを実施し、鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成するように構成される。
【0033】
幾つかの実施例では、ハードウエア源102はリングオシレータである(以下の
図2参照)。このような実施例では、シード生成器103は、リングオシレータから複数の独立した第1のエントロピー値を受け取るように構成される。
【0034】
幾つかの実施例では、ハードウエア源102は、単一のハードウエア源、例えば単一のリングオシレータである。このような実施例では、シード生成器103は、単一のハードウエア源から複数の独立した第1のエントロピー値を受け取るように構成される。幾つかの実施例では、ハードウエア源は、複数の独立したハードウエア源、例えば複数のリングオシレータである。シード生成器は、複数の独立したハードウエア源から複数の独立した第1のエントロピー値を受け取るように構成される。
【0035】
幾つかの実施例では、シード生成器103は順列関数を含む。シード生成器は、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを順列関数に適用するように構成される。幾つかの実施例では、シード生成器は、複数の独立した第1のエントロピー値を独立した第1のエントロピー値の複数のグループに分け、独立した第1のエントロピー値の複数のグループを順列関数に適用して順序変更されたエントロピー値のグループを生成し、順序変更されたエントロピー値のグループを連結して第2のエントロピー値を生成するように構成される。
【0036】
幾つかの実施例では、シード生成器103はハッシュ関数を含む。シード生成器は、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを、第2のエントロピー値を生成するように構成されたハッシュ関数に適用する。幾つかの実施例では、シード生成器はビットミキサーを含む。シード生成器は、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをビットミキサーに適用して第2のエントロピー値を生成するように構成される。
【0037】
幾つかの実施例では、シード生成器103は、複数の独立した第1のエントロピー値のうちの複数のエントロピー値を、第2のエントロピー値を生成するための関数に選択的に適用するように構成される。例えば、シード生成器は、選択アルゴリズムに従って、複数の独立した第1のエントロピー値のうちのすべてではなく一部を、第2のエントロピー値を生成するための関数に選択することができる。
【0038】
幾つかの実施例では、シード生成器103は、複数の独立した第1のエントロピー値のうちの少なくとも幾つかと秘密鍵とを、第2のエントロピー値を生成するための関数に適用するように構成される。例えば、図示のように、シード生成器は、二つの入力を有する。第1の入力は、ハードウエア源102から複数の独立した第1のエントロピー値を受け取るように構成される。第2の入力は、不揮発性メモリ106から秘密鍵を受け取るように構成される。シード生成器は、二つの入力からのデータを適用して第2のエントロピー値を生成することができる。シード生成器は、コンピュータシステム110の誤作動が秘密を曝露しないように、システム100のローカルビルディングブロックとすることができる。
【0039】
一実施例では、制御論理101は、乱数が要求されたとき、102において一又は複数のリングオシレータを起動及び停止させるように構成された電子制御論理とすることができる。リングオシレータは、リングオシレータが実行されている間に発振パルスを数えるようにカウンタを駆動する。シード生成器103は、電子論理回路において実施することのできる複数の関数を含む。シード生成器は、保護記憶域106に記憶された秘密鍵にしたがって、カウンタの値を、ハッシュ、順序変更、選択及び/又は組み合わせることができる。記憶域は、不揮発性メモリ、ROM又は磁気若しくは光ディスクドライブでよい。結果として得られた値は、バイアス又は自己相関といった非ランダム特性を除去するために、ホワイトニング関数104の電子論理回路で更に処理される。ホワイトニング関数でのプロセスは、時にデータ調整又はホワイトニングと呼ばれる。別の実施例では、ホワイトニング関数は、102と103の間に配置することもできる。疑似乱数生成器105は、電子論理回路又はマイクロプロセッサ機能とすることのできる、暗号疑似乱数生成器を含む。疑似乱数生成器は、ホワイトニング関数からの難読化された真の乱数によって初期値を与えられる。疑似乱数生成器は、このような値が利用可能であるときは常に、ホワイトニング関数からの真の乱数を更に難読化するために、その内部状態へ混合することができる。最後に、乱数の要求元は安全なアプリケーション111であり、これは暗号鍵の生成及び/又はセキュリティプロトコルに乱数を使用することができる。
【0040】
図2は、種々の例示的実装態様によるシステム100のリングオシレータ200を示す。幾つかの実施例では、
図1のハードウエア源102は、一又は複数のリングオシレータ200を含む。
【0041】
リングオシレータ200は複数の論理ゲートを含み、そのうち奇数の論理ゲートは、直列接続された直前の論理ゲートに接続されたそれらの入力を反転させ、例えば、
図2に示される201~204と否定積(NAND)ゲートとを反転させる。複数のインバータのうちの第1のインバータ、例えばインバータ201は、入力を受け取り、直列接続の次のインバータ、例えばインバータ202への入力として出力を生成する(入力の論理否定)。複数のインバータのうち最後のインバータを除く各インバータの出力は、複数のインバータのうちの次のインバータのための入力として使用される。複数のインバータのうちの最後のインバータ、例えばインバータ204の出力は、複数のインバータのうちの第1のインバータ、例えばインバータ201へフィードバックされて、その入力として使用される。
【0042】
リングオシレータ200の電子回路ノイズはインバータのスイッチング閾値をランダムに変化させ、これはオシレータ信号の位相「ジッタ」(ランダム位相変化)に変換することができる。位相ジッタは位相ドリフトにつれて経時的に蓄積し、これはオシレータ信号の位相を、同じ周波数の安定な信号の位相に対して大幅にゆっくりと変化させる。事前設定された期間の後でリングオシレータの発振期間を数えることによりカウンタを使用すること又はオシレータ信号のサンプルを取ることにより、真の乱数、例えば、1ビットの0又は1が生成される。事前設定期間は、独立のクロック信号により設定することができる。
【0043】
幾つかの実施例では、複数のインバータのうちの最後のインバータ、例えばインバータ204の出力は、所定の期間内の発振期間を数えることにより複数の独立した第1のエントロピー値を生成するためにカウンタ205に送られる。ハードウエア源102から複数の独立した第1のエントロピー値を生成するための複数の方法がある。一実施例では、ハードウエア源102は単一のリングオシレータを含み、複数の独立した第1のエントロピー値は、リングオシレータを複数回にわたって繰り返し起動及び停止させた後で、カウンタの多くの(例えば20の)カウンタ値を記憶することにより生成することができる。別の実施例では、カウンタを読み取るためにリングオシレータを繰り返し起動及び停止させる代わりに、リングオシレータの発振信号を、二つの(デュアル又はピンポン)カウンタのうちの一つへと所定の期間の間に交互にリダイレクトすることができる。リダイレクトの時点で、多くの(例えば20の)カウンタ値を複数の独立した第1のエントロピー値として記憶することができる。第3の実施例では、ハードウエア源102は、各々が各自のカウンタ205を有する複数のリングオシレータ(例えばn=20)を含む。複数のリングオシレータは、同じ又は異なる設計のものとすることができる。複数の独立した第1のエントロピー値は、特定の共通期間にわたり複数のリングオシレータを実施すること又は異なる期間にわたり複数のリングオシレータのうちの幾つかを実施すること、及びそれらのカウンタ値を保存することにより、生成することができる。
【0044】
リングオシレータ200に基づく乱数生成器のセキュリティに対する一つの可能な攻撃は、サイドチャネル上での情報漏洩を利用することにより発振信号の瞬時位相をトラッキングすることである。発振信号の周波数及び位相に関して十分な量の情報がサイドチャネル上で漏洩している場合、権限を有さない第三者がリングオシレータの位相ドリフトを学習することができ、リングオシレータによって生成された複数の独立した第1のエントロピー値を再現することができる。疑似乱数生成器105が複数の独立した第1のエントロピー値をシードとして使用する場合、権限を有さない第三者は、乱数疑似乱数生成器によって生成された乱数を再現し、この乱数を使用して生成された暗号化テキスト又はメッセージ認証コードのブロックを知ることができる。このような状況では、生成された暗号化テキスト又はメッセージ認証コードのブロックを用いるコンピュータシステム110は安全でない。
【0045】
本開示の例示的実装態様は、権限を有さない第三者には、一つだけでなく関与する多くのエントロピー値と、場合によっては更に第1のエントロピー値を混合するために使用される秘密鍵も必要となるように、複数の独立した第1のエントロピー値を使用する。本開示の実装態様は、漏出したオシレータ信号のみから権限を有さない第三者が疑似乱数生成器105で使用される実際のシードを決定することができないように、生成された第1のエントロピー値を難読化する様々な方法を再提示する。
【0046】
幾つかの実施例では、シード生成器103は順列関数を含む。第1のエントロピー値の一つとして使用されることになる単一のカウンタ値は、リングオシレータ200によって生成された利用可能なn個のカウンタ値から疑似ランダムに選択される。この単一のカウンタ値は、不揮発性メモリ106からの秘密鍵に基づいて、暗号アルゴリズムによって疑似ランダムに選択される。権限を有さない第三者は、疑似ランダム的選択のための秘密鍵なしでは、いずれのカウンタ値が実際に使用されるかを知ることがない。複数の(例えば、k=15)このようなステップが、k個の独立したカウンタ値のシーケンス、例えば、k個のビットのシーケンスを提供するために、リングオシレータにおいて実施される。このk個のカウンタ値のシーケンスがシード生成器によって順序変更されて、第2のエントロピー値が生成される。k個のカウンタ値(第2のエントロピー値)の順序変更されたシーケンスはシードとして使用される。権限を有さない第三者がk個のカウンタ値のうちのすべてのカウンタ値を、位相トラッキングアタックの成功により学習したとしても、シードを解き当てる可能性はわずか1/n^kである。n=20及びk=15という実際の値では、アタック成功の可能性は≒2-65であり、これは無視できるものである。n及びkの値が大きくなるほど、この可能性は更に低下する。
【0047】
より高いスループットを用いる別の実施例は、単一のリングオシレータ200を実行するn回の繰り返しにおいて、又はn個のリングオシレータを実行する一回の繰り返し(又は二回、例えば、n/2個のリングオシレータを実行する二回の繰り返しの組み合わせ)においてにおいて捕獲されるn個すべてのカウンタ値を使用する。捕獲されたカウンタの組の単一のカウンタ値をランダムに選択する代わりに、n個すべてのカウンタ値を、疑似ランダムな順序で(秘密鍵を用いて演算された)使用することができる。一実施例では、n=20のカウンタは、20!=2432902008176640000(約261)の順列に並べることができる。位相トラッキングアタックは、n!の順列すべてを検索しなければならず、これは時間が掛かり過ぎて現実的でない。
【0048】
上記方法の組み合わせも使用することができる。例えば、n=8のリングオシレータのカウンタが疑似ランダムに順序付けられ、順序変更されたカウンタ値のこのような組のうちの4つが、シードとして連結される(例えば、32ビットのシーケンス)。可能性の数は(n!)4≒261であり、これは現実的なアタックとして試みるには多すぎる。
【0049】
一又は複数のリングオシレータ200によって生成されたカウンタ値を疑似ランダムに選択するために、暗号アルゴリズムを用いるストリーム生成器を使用することができる。例えば、ストリーム生成器は、固定の秘密鍵(記憶域106に記憶された)を用いる高度暗号化標準(AES)といった標準の暗号を用いてカウンタを繰り返し暗号化することによりカウンタモードで、又は標準のフィードバックモードの一つで(例えば、直前の暗号化テキストを反復的に暗号化することにより)、ブロック暗号を含む。秘密の初期データブロック(記憶域106に記憶された鍵)と一定のメッセージブロックとを用いるハッシュ関数を、暗号ストリーム生成器を定義するために繰り返し呼び出すことができる。
【0050】
例示的な疑似ランダム選択アルゴリズムは、以下のように説明することができる。(A1、A2…、AN)から選択されるN個のアイテムが存在し、bはN≦2bとなる最小数である。上記ストリーム生成器によって生成されたストリームSから、次の未詳のbのビットが取得され、これが数Bを形成する。B≦Nである場合、選択される入力はABであり、bのビットはSから廃棄される。Bが>Nである場合、bのビットはSから廃棄され、B≦Nが見つかるまで再試行が行われる。疑似ランダム選択アルゴリズムは、シード生成器103の選択器において実施することができる。したがって、選択器を使用して、複数の独立した第1のエントロピー値のすべてではなく一部を、第2のエントロピー値を生成するための順列関数に適用することができる。
【0051】
第2のエントロピー値を生成するためにシード生成器103によって実施される例示的な疑似ランダム的順序変更は、以下のように説明することができる。エレメントを自然の順序A1、A2…、ANで用いて始める。i=N…2の場合、現在iの位置にあるエレメントを、位置1…iから疑似ランダムに選択されたエレメントとスワップする。スワップされるエレメントは、上述の疑似ランダム選択アルゴリズムによって選択することができる。例示的疑似ランダム順序変更は、クヌースのシャッフル(Knuth’s shuffle)として知られている。
【0052】
幾つかの実施例では、シード生成器103はハッシュ関数を含む。多数の(例えばn=20)カウンタ値を混ぜ合わせ、シード生成器103を用いてそれらの長さの合計より小さいサイズにハッシュする。アタッカーが正確に解き当てることができなかった、一又は複数のリングオシレータによって生成された第1のエントロピー値のうちのいずれかの単一ビットのエントロピーは、ハッシュ値を、正確なハッシュ値と相関しないものにする。ハッシングのプロセスは各シード毎に再開することができるか、又はハッシング作業は直前のシード生成の状態から継続することができる。
【0053】
別の実施例では、不揮発性メモリ106からの秘密鍵と多数の(例えば、n=20)カウンタ値とが、それらの長さの合計より小さいサイズにまとめてハッシュされる。アタッカーが正確に解き当てることのできなかったいずれかの単一の入力ビットは、ハッシュ値を、正確なハッシュ値と相関しないものにする。アタッカーは、エントロピービットを見つける必要があり、更には不揮発性メモリに記憶された秘密鍵を見つける必要がある。ハッシングのプロセスは、同じ秘密鍵を用いてシード毎に再開することができるか、又はハッシング作業は鍵を繰り返すことなく直前のシード生成の状態から継続することができる。また、シード生成器103への入力は、以前のシード生成呼び出しの数を含むことができ、これは出力(第2のエントロピー値)を更に多様化する。
【0054】
シード生成器103は暗号ハッシュ関数を実施することができる。この関数は、任意のサイズのデータを固定サイズのビット列にマッピングする数学的アルゴリズムであり、反転することが実行不可能な一方向関数となるようにも設計される。幾つかの実施例では、暗号ハッシュ関数は四つの主な特徴を有する:(1)演算が速い;(2)メッセージを少しでも変えると元のハッシュ値とは非相関のハッシュ値が生成される;(3)所与の値をハッシュするメッセージを見つけることは実行不可能である(時間がかかりすぎる);(4)同じハッシュ値を有する二つの異なるメッセージを見つけることは実行不可能である。
【0055】
幾つかの実施例では、シード生成器103はビットミキサーを含む。ビットミキサーは、ハードコーディングされた鍵(すべてのシステム又は装置で同じ)又は秘密鍵を含むことができる(異なるシステム、装置又は動作の異なるセッションは異なる秘密鍵を使用する)。ビットミキサーは、五つの主な特徴を有する関数である。第1の特徴は、固定長の入力及び出力を独立且つ任意とすることができることである。第2の特徴は、すべての入力ビットがすべての出力ビットに影響するということである。第3の特徴は、入力の単純な変化が出力ビットの平均で半分を変化させることである。第4の特徴は、入力の一連の単純な変化が、入力又はその変化のパターンに明らかな相関を有さない出力値を生成することである。第5の特徴は、パラメータ(鍵)が関数の挙動を変更することである。一実施例では、ビットミキサーの電子機器はハッシュ関数より高速且つ小型であり、ビットミキサーのサイドチャネル漏洩は無視できる程度である。
【0056】
上記実装態様は、カウンタ値を難読化し、位相トラッキングアタックの複雑性を増大させる。つまり、アタッカーは、複数のリングオシレータ200に対して位相トラッキングアタックを実施する、及び/又は同じリングオシレータに対して複数回の位相トラッキングアタックを実施する必要がある。また、アタッカーは、難読化に用いられている秘密暗号鍵(記憶域106に記憶された)及び/又はハッシュ/ビットミキサー関数の初期状態(シード生成器103における)を見つけて抽出しなければならない。これらデータは、コンピュータシステム110の誤作動により秘密が曝露されないように、保護された消去可能プログラマブルリードオンリーメモリ(EPROM)又は他の種類の不揮発性データ記憶域にセキュリティシステム100のローカルビルディングブロックとして記憶することができる。秘密鍵が使用されない場合も、アタッカーは、実際のシード(第2のエントロピー値)を解き当てることができるためには、膨大な数の可能な選択肢及び/又は使用されたカウンタ値の配列混合の殆どすべてを依然として試行しなければならない。
【0057】
図3は、種々の例示的実装態様による、コンピュータシステム110のセキュリティを提供する方法300の様々なステップを示すフロー図である。ブロック301において、方法は、ハードウエア源102から複数の独立した第1のエントロピー値を受け取ることを含む。ブロック302では、方法は、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをシード生成器103の関数に適用し、第2のエントロピー値を生成することを含む。ブロック303では、方法は、ホワイトニング関数104を第2のエントロピー値に適用することを含み得る。ブロック304では、方法は、第2のエントロピー値を初期値として疑似乱数生成器105に与えることを含む。ブロック305では、方法は、初期値として第2のエントロピー値を与えられた疑似乱数生成器を用いて乱数を生成することを含む。ブロック306では、方法は、乱数を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成することを含む。ブロック306において、方法は、疑似乱数生成器の出力を、安全な乱数として、要求しているアプリケーションに提供することも含み得る。安全な乱数は、暗号化のため、又は他の安全目的のための鍵として使用することができる。
【0058】
このセクションでは、一連の段落として非限定的に提示される、本開示のシステム及び方法の追加の態様及び特徴が記載され、これらの一部又は全部は、明確性及び有効性のために英数字で指定され得る。
【0059】
A1. コンピュータシステムのセキュリティを提供するためのシステムであって、少なくとも:
複数の独立した第1のエントロピー値をハードウェア源から受け取り;
複数の独立した第1のエントロピー値のうちの少なくとも幾つかを第2のエントロピー値を生成するための関数に適用し;
疑似乱数生成器に第2のエントロピー値を初期値として与え;
初期値として第2のエントロピー値を与えられた疑似乱数生成器を用いて乱数を生成し;
前記乱数を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成する
ように構成された一又は複数の論理回路を備えるシステム。
A2. 一又は複数の論理回路が暗号化テキスト又はメッセージ認証コードのブロックを生成するように構成されていることが、前記乱数から構成される又は導かれる鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成するように構成されていることを含む、段落A1のシステム。
A3. 一又は複数の論理回路が暗号化テキスト又はメッセージ認証コードのブロックを生成するように構成されていることが、少なくとも:
鍵が生成される、乱数を用いた鍵共有プロトコルを実施し;
鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成する
ように構成されていることを含む、段落A1のシステム。
A4. ハードウエア源がリングオシレータであり、一又は複数の論理回路が複数の独立した第1のエントロピー値を受け取るように構成されていることが、リングオシレータから複数の独立した第1のエントロピー値を受け取るように構成されていることを含む、段落A1のシステム。
A5. ハードウエア源が単一のハードウエア源であり、一又は複数の論理回路が複数の独立した第1のエントロピー値を受け取るように構成されていることが、前記単一のハードウエア源から複数の独立した第1のエントロピー値を受け取るように構成されていることを含む、段落A1のシステム。
A6. ハードウエア源が複数の独立したハードウエア源であり、一又は複数の論理回路が複数の独立した第1のエントロピー値を受け取るように構成されていることが、複数の独立したハードウエア源から複数の独立した第1のエントロピー値を受け取るように構成されていることを含む、段落A1のシステム。
A7. 関数が順列関数であり、一又は複数の論理回路が複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを順列関数に適用するように構成されていることを含む、段落A1のシステム。
A8. 一又は複数の論理回路が複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが:
複数の独立した第1のエントロピー値を独立した第1のエントロピー値の複数のグループに分け;
独立した第1のエントロピー値の複数のグループを順列関数に適用して順序変更されたエントロピー値のグループを生成し;
順序変更されたエントロピー値のグループを連結して第2のエントロピー値を生成する
ように構成されていることを含む、段落A7のシステム。
A9. 関数がハッシュ関数であり、一又は複数の論理回路が複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをハッシュ関数に適用するように構成されていることを含む、段落A1のシステム。
A10. 関数がビットミキサーであり、一又は複数の論理回路が複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをビットミキサーに適用するように構成されていることを含む、段落A1のシステム。
A11. 一又は複数の論理回路が複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用するように構成されていることが、複数の独立した第1のエントロピー値のうちの複数のエントロピー値を、第2のエントロピー値を生成するための関数に選択的に適用するように構成されていることを含む、段落A1のシステム。
A12. 一又は複数の論理回路が複数の独立した第1のエントロピー値のうちの少なくとも幾つかを関数に適用するように構成されていることが、複数の独立した第1のエントロピー値のうちの少なくとも幾つかと秘密鍵とを、第2のエントロピー値を生成するための関数に適用するように構成されていることを含む、段落A1のシステム。
B13. コンピュータシステムのセキュリティを提供する方法であって:
ハードウエア源から複数の独立した第1のエントロピー値を受け取ること;
複数の独立した第1のエントロピー値のうちの少なくとも幾つかを第2のエントロピー値を生成するための関数に適用すること;
疑似乱数生成器に第2のエントロピー値を初期値として与えること;
初期値として第2のエントロピー値を与えられた疑似乱数生成器を用いて乱数を生成すること;及び
前記乱数を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成すること
を含む方法。
B14. 暗号化テキスト又はメッセージ認証コードのブロックを生成することが、前記乱数から構成される又は導かれる鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成することを含む、段落B13の方法。
B15. 暗号化テキスト又はメッセージ認証コードのブロックを生成することが、少なくとも:
鍵が生成される、乱数を用いた鍵共有プロトコルを実施すること;及び
鍵を用いて暗号化テキスト又はメッセージ認証コードのブロックを生成すること
を含む、段落B13の方法。
B16. ハードウエア源がリングオシレータであり、複数の独立した第1のエントロピー値を受け取ることが、リングオシレータから複数の独立した第1のエントロピー値を受け取ることを含む、段落B13の方法。
B17. ハードウエア源が単一のハードウエア源であり、複数の独立した第1のエントロピー値を受け取ることが、単一のハードウエア源から複数の独立した第1のエントロピー値を受け取ることを含む、段落B13の方法。
B18. ハードウエア源が複数の独立したハードウエア源であり、複数の独立した第1のエントロピー値を受け取ることが、複数の独立したハードウエア源から複数の独立した第1のエントロピー値を受け取ることを含む、段落B13の方法。
B19. 関数が順列関数であり、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することが、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを順列関数に適用することを含む、段落B13の方法。
B20. 複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することが:
複数の独立した第1のエントロピー値を独立した第1のエントロピー値の複数のグループに分けること;
独立した第1のエントロピー値の複数のグループを順列関数に適用して順序変更されたエントロピー値のグループを生成すること;及び
順序変更されたエントロピー値のグループを連結して第2のエントロピー値を生成すること
を含む、段落B19の方法。
B21. 関数がハッシュ関数であり、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することが、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをハッシュ関数に適用することを含む、段落B13の方法。
B22. 関数がビットミキサーであり、複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することが、複数の独立した第1のエントロピー値のうちの少なくとも幾つかをビットミキサーに適用することを含む、段落B13の方法。
B23. 複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することが、複数の独立した第1のエントロピー値のうちの複数のエントロピー値を、第2のエントロピー値を生成するための前記関数に選択的に適用することを含む、段落B13の方法。
B24. 複数の独立した第1のエントロピー値のうちの少なくとも幾つかを前記関数に適用することが、複数の独立した第1のエントロピー値のうちの少なくとも幾つか及び秘密鍵を、第2のエントロピー値を生成するための前記関数に適用することを含む、段落B13の方法。
【0060】
本開示に関連する分野の当業者には、上述の説明及び添付図面に提示されている教示の恩恵を受ける、本明細書に明記された本開示の多数の修正例及びその他の実装態様が想起されよう。したがって、本開示は開示される特定の実装態様に限定されるものではないこと、及び修正例及び他の実装態様が特許請求の範囲に含まれることが意図されていることを理解されたい。更に、上述の説明及び添付図面は、要素及び/又は機能の特定の実施例の組み合わせに照らして例示的実装態様を説明しているが、特許請求の範囲から逸脱せずに、代替的な実装態様によって要素及び/又は機能の異なる組み合わせが提供され得ることを理解されたい。これに関して、特許請求の範囲の一部に明記されるように、例えば、明示的に上述されているものとは異なる要素及び/又は機能の組み合わせも想定される。本明細書では特定の用語を用いるが、それらは、一般的及び説明的な意味でのみ使用されており、限定を目的とするものではない。