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

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

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

特許7107670ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法
<>
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図1
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図2
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図3
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図4
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図5
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図6
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図7
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図8A
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図8B
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図8C
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図9
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図10
  • 特許-ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-19
(45)【発行日】2022-07-27
(54)【発明の名称】ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法
(51)【国際特許分類】
   G09C 1/00 20060101AFI20220720BHJP
【FI】
G09C1/00 610A
【請求項の数】 10
【外国語出願】
(21)【出願番号】P 2017233425
(22)【出願日】2017-12-05
(65)【公開番号】P2018109750
(43)【公開日】2018-07-12
【審査請求日】2020-11-26
(31)【優先権主張番号】15/381,540
(32)【優先日】2016-12-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500520743
【氏名又は名称】ザ・ボーイング・カンパニー
【氏名又は名称原語表記】The Boeing Company
(74)【代理人】
【識別番号】100086380
【弁理士】
【氏名又は名称】吉田 稔
(74)【代理人】
【識別番号】100103078
【弁理士】
【氏名又は名称】田中 達也
(74)【代理人】
【識別番号】100130650
【弁理士】
【氏名又は名称】鈴木 泰光
(74)【代理人】
【識別番号】100135389
【弁理士】
【氏名又は名称】臼井 尚
(74)【代理人】
【識別番号】100161274
【弁理士】
【氏名又は名称】土居 史明
(74)【代理人】
【識別番号】100168044
【弁理士】
【氏名又は名称】小淵 景太
(74)【代理人】
【識別番号】100168099
【弁理士】
【氏名又は名称】鈴木 伸太郎
(74)【代理人】
【識別番号】100200609
【弁理士】
【氏名又は名称】齊藤 智和
(72)【発明者】
【氏名】ラースロー ハース
【審査官】金沢 史明
(56)【参考文献】
【文献】特開平11-073101(JP,A)
【文献】特開2004-038103(JP,A)
【文献】特開2013-182148(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/06
(57)【特許請求の範囲】
【請求項1】
暗号処理のための1つ以上のラウンド鍵を生成する方法であって、
1つ以上の第1入力及び1つ以上の第2入力を取得することと、
少なくとも1つの電気回路によって、前記1つ以上の第1入力及び前記1つ以上の第2入力のそれぞれに対してビットミキサ処理を実行することと、
少なくとも1つの電気回路によって、1つ以上のラウンド鍵を前記ビットミキサ処理により、または、前記ビットミキサ処理の出力に基づいて生成することと、を含む方法であって、
前記ビットミキサ処理が有する特性は、すべての入力ビットがすべての出力ビットに影響すること、前記入力ビットの1ビットを変更すると、半数の出力ビットが変化すること、よって、前記入力ビットを変更すると、前記入力ビット又は前記入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、前記鍵を知らない観察者には処理の挙動が予測不可能になっていること、及び、前記入力ビット及び出力値の各固定長が任意に独立して選択可能であること、を含む、方法
【請求項2】
前記1つ以上の第2入力は、ランダムに生成された固定データ、又は、1つ以上の前のラウンド鍵、又は、ラウンド数を含む、請求項1に記載の方法。
【請求項3】
前記1つ以上の第1入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含む、請求項1又は2に記載の方法。
【請求項4】
前記ラウンド鍵の生成はXORツリーによって行われ、さらに、前記ビットミキサ処理の出力に対して、スクランブル処理を実行することにより、前記ビットミキサ処理を非線形処理にすることを含む、請求項1~3のいずれか1つに記載の方法。
【請求項5】
前に生成された前記1つ以上のラウンド鍵で、前記ビットミキサ処理の出力としての、更新されたデータブロックを生成することをさらに含む、請求項1~4のいずれか1つに記載の方法。
【請求項6】
前記ビットミキサ処理と前記1つ以上のラウンド鍵の前記ラウンド鍵の生成を、暗号化のために繰り返すことをさらに含む、請求項1~5のいずれか1つに記載の方法。
【請求項7】
前記ビットミキサ処理は、マージ対象のデータを選択するための複数の否定論理積NANDゲート又は複数のマルチプレクサを含む排他的論理和XORツリー、又は、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーション付きXOR(RAX)構成を含む、請求項1~6のいずれか1つに記載の方法。
【請求項8】
暗号処理のための1つ以上のラウンド鍵を生成するシステムであって、1つ以上の論理回路を含み、前記1つ以上の論理回路は、
1つ以上の第1入力及び1つ以上の第2入力を取得し、
少なくとも1つの電気回路によって、前記1つ以上の第1入力及び前記1つ以上の第2入力のそれぞれに対してビットミキサ処理を実行し、及び、
少なくとも1つの電気回路により、1つ以上のラウンド鍵を前記ビットミキサ処理により、または、前記ビットミキサ処理の出力に基づいて生成するよう動作する論理回路である、システムであって、
前記ビットミキサ処理が有する特性は、すべての入力ビットがすべての出力ビットに影響すること、前記入力ビットの1ビットを変更すると、半数の出力ビットが変化すること、よって、前記入力ビットを変更すると、前記入力ビット又は前記入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、前記鍵を知らない観察者には処理の挙動が予測不可能になっていること、及び、前記入力ビット及び出力値の各固定長が任意に独立して選択可能であること、を含む、システム
【請求項9】
前記1つ以上の第1入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵、又は、暗号鍵を含むとともに、前記1つ以上の第2入力は、ランダムな入力、又は、1つ以上の前のラウンド鍵、又は、ラウンド数を含む、請求項8に記載のシステム。
【請求項10】
前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む、請求項8~9のいずれか1つに記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、コンピュータシステムにおけるデータ保護に関し、特に、送信メッセージのセキュリティ保護、アーカイブデータのセキュリティ保護、及び、コンピュータシステムのメモリに格納されており、システム内の1つ又はバスを介して転送されることが多いデータの保護の3つの情報保証の分野のいずれかに関する。
【背景技術】
【0002】
財務データ、軍事データ、医療データの他、高レベルの保護を必要とするデータを安全に通信し、また、保護するため、コンピュータやマイクロプロセッサを含むシステムでは、現在、様々なセキュリティ対策が実施されている。これらの対策は、一般的に、攻撃者による不正なデータアクセスを排除することを目的とする。対象となるデータには、通信チャネル上の送信データ、ディスクドライブや光学的媒体などの不揮発性記憶媒体に格納されたデータ、あるいは、例えば、同じ回路基板上にある、及び/又は、バスで接続されているマイクロプロセッサからアクセスされるメモリに格納されたデータが含まれる。
【0003】
代表的な利用分野としては、セキュアなコンピューティングシステムのメモリに格納されたデータの保護があるが、その他にも同様に一般的で重要な利用分野がある。プロセッサに対する典型的な攻撃は、能動的攻撃と受動的攻撃とに分類することができる。受動的攻撃では、攻撃者はメモリの内容を読み取って、パスワードや著作物などの秘密情報の取得を試みる。プロセッサとメモリ(あるいは、その他の周辺機器)間のデータトラフィックを監視して秘密情報の取得を試みる受動的攻撃もある。
【0004】
能動的攻撃は、メモリの内容やメモリとプロセッサ間のデータトラフィックの改ざんを試みるものである。異なる位置にあるメモリブロックの内容を相互にコピー及びペーストしたり、同じ位置又は別の位置のメモリブロックの古い情報を再生したりする能動的攻撃もある。このような攻撃により、例えば、無限ループが形成されるなどして、セキュアなマイクロプロセッサで動作するプログラムが影響を受けたり、保護されたメモリのデータが使用されるなどの被害が発生しうる。既知データ認識攻撃(known data recognition attack)では、攻撃者は、同一アドレスへの既知データの書き込みを監視して暗号鍵の暴露を試みる。
【0005】
格納、処理、送信に際しての機密データの秘匿性(secrecy)と完全性(integrity)は、暗号技術により保証することができる。最も重要な暗号手法はブロック暗号である。ブロック暗号は、所定の暗号化アルゴリズムに対する挙動(behavior)を決定する秘密鍵を利用する。最もよく使用される暗号方式では、ラウンドと呼ばれる変換ステップが何度も繰り返し実行される。これらの変換ステップは、暗号鍵から導出される秘密ラウンド鍵に影響される。暗号のセキュリティと速度とは、これらラウンド鍵の生成の仕方に依存する。現在利用されている暗号方式の多くは、速度が遅く、多大な電力とエネルギーを必要とするが、その要因の一つは、無相関性の高いラウンド鍵の生成が複雑であることにある。また、鍵生成の際には、悪用されうる情報がサイドチャネルに漏洩する。現在使用されている他の暗号方式ではラウンド鍵ジェネレータが利用されているが、これにより生成される鍵は、低品質の(相関性が高い不利な)鍵である。
【0006】
ブロック暗号のラウンド鍵は、同一の暗号鍵から導出された鍵であっても、無相関性が高いことが求められる。ラウンド鍵を生成するアルゴリズムは、鍵スケジュールとも呼ばれる。多くの暗号方式は、LFSR(線形帰還シフトレジスタ)のような単純なキースケジュールを利用する。これらは、算出が容易で、高速ではであるが、相関性の高いラウンド鍵が生成される。例えば、LFSRの場合、全体の半分の場合において、ラウンド鍵は、前回のラウンド鍵を1ビットだけローテーションさせたものであり、残りの半分の場合でも、ビットローテションにより得た前回のラウンド鍵の一握りのビットが変更されるだけである。
【0007】
鍵スケジュールが無相関性のラウンド鍵を生成するために十分に複雑でない場合、その暗号方式では、ラウンドの回数を多くしてセキュリティを高める必要がある。一般的に使用されている暗号方式の鍵スケジュールは、ローテーション、XOR及びビットの並べ替え(bit rearrangement)などの単純なステップの繰り返しで構成されている。このような場合、適切な兼ね合いが難しい。つまり、ステップの数が少ないと、生成されるラウンド鍵の相関性が高くなるので、その暗号方式には多くの回数のラウンドが必要になる。しかしながら、鍵スケジュールステップの数が多いと、各ラウンドにかかる時間が長くなる。いずれにせよ、この暗号方式は、相当の時間を必要とする。
【0008】
現在利用されている鍵スケジュールアルゴリズムでは、ラウンド鍵は、前のラウンド鍵から生成する。よって、復号開始に用いる最後のラウンド鍵を生成するには、すべてのラウンド鍵を生成しなければならない。単一の暗号処理(single cipher operation)を複数の汎用のマイクロプロセッサで実行するのであれば、どの順序でラウンド鍵を生成しても全体の処理数は同じになる。よって、ソフトウェア実装においては、この鍵スケジュールの繰り返しによって暗号の速度が低下することはない。これに対し、電子的なハードウェアで実装されたシステムにおいては、ラウンド鍵を順に生成すると、復号に際し初期遅延が生じる。多数の復号処理に同一の鍵が使用される場合は例外であり、ラウンド鍵をキャッシュに保存しておくことができる。ただし、大きなキャッシュメモリは物理的な攻撃のターゲットになるので、同一の鍵を繰り返し使用すると、セキュリティシステムがサイドチャネル攻撃に晒されることになる。鍵ローリング(key-rolling)によれば、ほとんどの用途でセキュリティを強化できるが、ラウンド鍵をキャッシュすることができないので、復号の速度が遅くなる。(鍵ローリングとは、暗号鍵を一度あるいは数回使用する毎に差し替えることを意味する。)
【0009】
したがって、関連する産業において、上述の欠点及び不足についての解決が望まれている。
【発明の概要】
【0010】
本開示の実施例によれば、暗号処理のための1つ以上のラウンド鍵を生成する方法が提供される。本方法は、1つ以上の第1入力及び1つ以上の第2入力を取得することと、少なくとも1つの電気回路によって、前記1つ以上の第1入力及び前記1つ以上の第2入力のそれぞれに対してビットミキサ処理を実行することと、少なくとも1つの電気回路によって、1つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成することと、を含む。
【0011】
いくつかの実施例において、前記1つ以上の第1入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含む。前記1つ以上の第2入力は、ランダムに生成された固定入力、1つ以上の前のラウンド鍵、又は、ラウンド数を含む。いくつかの実施例において、本方法は、前記1つ以上の第1入力をより短い鍵から生成することをさらに含み、これに際し、暗号化処理、ハードコーディングされた鍵データを利用するビットミキサ、カウンタ入力、又は、これらの組合せを適用する。前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む。いくつかの実施例において、前記鍵データは秘匿データであり、通信者間で共有される。いくつかの実施例において、前記鍵データは、ハードコーディングされる。いくつかの実施例において、前記鍵データは、ランダムに生成される。
【0012】
いくつかの実施例において、前記暗号鍵の部分ごとに、ハードコーディングされたデータの部分との排他的論理和演算XORを実行することにより、前記暗号鍵を前記鍵データと結合する。いくつかの実施例において、前記ビットミキサ処理は、排他的論理和XORツリー、又は、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーション付きXOR(RAX)構成を含む。いくつかの実施例において、前記XORツリーは、複数の否定論理積(NAND)ゲート又は複数のマルチプレクサを含む。本明細書において、NANDは、論理演算NOT AND又はNegative ANDを意味する。いくつかの実施例において、前記ラウンド鍵の生成は、前記ビットミキサ処理の出力に対して、スクランブル処理を実行することを含む。いくつかの実施例において、本方法は、前に生成された前記1つ以上のラウンド鍵でデータブロックを生成することをさらに含む。いくつかの実施例において、本方法は、前記ビットミキサ処理と前記1つ以上のラウンド鍵の生成を、所与の暗号化方式用に繰り返すことをさらに含む。いくつかの実施例において、本方法は、前記ビットミキサを選択することをさらに含む。前記ビットミキサ処理が有する特性は、すべての入力ビットがすべての出力ビットに影響すること、前記入力ビットの1ビットを変更すると、平均して半数の出力ビットが変化すること、よって、前記入力ビットを変更すると、前記入力ビット又は前記入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、前記鍵を知らない観察者には処理の挙動が予測不可能になっていること、及び、前記入力ビット及び出力値の各固定長が任意に独立して選択可能であること、を含む。いくつかの実施例において、前記XORツリーは、さらに、前記1つ以上の第1入力のうちの各第1入力に対し、前記1つ以上の第2入力のうちの各第2入力との否定論理積演算NANDを実行して、前記複数の第1入力のうち、論理演算XORに入力するものを選択することを含む。前記XORツリーは、前記複数の第1入力のうち入力として使用されたものに対する出力を生成する。
【0013】
いくつかの実施例において、本方法は、前記XORツリーの前記出力に対してスクランブル処理を実行して、前記ビットミキサ関数を非線形にすることをさらに含む。
【0014】
いくつかの実施例において、前記換字・転置ネットワークは、さらに、前記複数の第1入力のそれぞれに対して、非線形の換字処理を実行することと、前記換字処理の各出力に対して転置処理を実行することと、前記転置処理の各出力に対し、前記第1入力のうち1つ又は前記第2入力のうちの1つとのXOR演算を実行することを含む。
【0015】
いくつかの実施例では、前記二重撹拌ファイステルネットワークにおいて、前記1つ以上の第1入力は、それぞれ最初の左半分データと最初の右半分データとに分割される。前記方法は、さらに、複数のラウンドの各ラウンドにおいて、更新後の左半分データと更新後の右半分データとを算出することを含む。前記更新後の左半分データを算出することは、入力された左半分データに第1関数を適用して第1結果を生成し、前記第1結果を、入力された右半分データに撹拌することを含む。前記更新後の右半分データを算出することは、前記入力された左半分データに第2関数を適用して第2結果を生成し、前記第2結果をラウンド鍵に撹拌することを含む。前記入力された左半分データ及び入力された右半分データは、前記複数のラウンドのうちの最初のラウンドでは、前記最初の左半分データ及び前記最初の右半分データであり、以降の各ラウンドでは、直前のラウンドにおける更新後の左半分データと更新後の右半分データである。
【0016】
本開示のいくつかの実施例において、暗号処理のための1つ以上のラウンド鍵を生成するシステムが提供される。本システムは、1つ以上の論理回路を含み、前記1つ以上の論理回路は、1つ以上の第1入力及び1つ以上の第2入力を取得し、少なくとも1つの電気回路によって、前記1つ以上の第1入力及び前記1つ以上の第2入力のそれぞれに対してビットミキサ処理を実行し、及び、少なくとも1つの電気回路により、1つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成するよう動作する。いくつかの実施例において、前記1つ以上の第1入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含むとともに、前記1つ以上の第2入力は、ランダムな入力、又は、1つ以上の前のラウンド鍵、又は、ラウンド数を含む。いくつかの実施例において、前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む。いくつかの実施例において、前記ビットミキサ処理は、排他的論理和(XOR)ツリー、又は、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーション付きXOR(RAX)構成を含む。
【0017】
上述した概要及び後述する詳細な説明は、あくまでも例示及び説明のためであって、請求した開示内容を限定するものではない。
【図面の簡単な説明】
【0018】
本明細書に組み込まれ、その一部を構成する添付図面は、明細書の記載とあわせて本開示を説明するものであり、本開示の原理を説明することを目的とする。
【0019】
図1】本開示の例示的な実施態様によるシステムを示す図である。
図2】いくつかの実施例において、図1のシステムに対応するシステムを示す図である。
図3】例示的な実施態様によるセキュアなメモリ転送部を示す図である。
図4】例示的な実施態様による、メモリ位置に格納された情報のデータ構造を示す図である。
図5】様々な例示的な実施態様による二重撹拌ファイステルネットワーク(DMFN)の「ハーフ鍵」変形の1ラウンドを示す図である。
図6】様々な例示的な実施態様による別のDMFNの「全鍵」変形の1ラウンドを示す図である。
図7】様々な例示的な実施態様による換字・転置ネットワークの1ラウンドを示す図である。
図8A-8C】図7で使用可能な各Sボックスの3つのコンポーネントを示す図である。
図9図7で使用可能な別のSボックスのコンポーネントを示す図である。
図10】様々例示的な実施態様における排他的論理和(XOR)演算の二分ツリーと「サブ鍵」選択レイヤとを併せて示す図である。
図11】例示的な実施態様における方法の様々な処理を示すフローチャートである。
【発明を実施するための形態】
【0020】
本開示の例示的な実施態様について、添付図面に示す実施例を参照して、以下に詳細に説明する。可能な場合には、図面全体において、同一又は類似の部材については、同一の参照符号を使用している。以下の説明で参照する添付図面は、説明の一部を構成するものであり、本開示を実施する具体的な実施態様を例として示している。これらの実施態様は、当業者が本開示を実施できるように十分に詳細に記載されているが、本開示の範囲から逸脱することなく、他の実施態様や変形が可能であることは理解されよう。以下の記載はあくまでも例示である。
【0021】
多くの情報セキュリティの分野では、固定長の入力及び出力を有し、入力値を充分に撹拌できる高性能な関数が望ましい。このような関数はビットミキサ(bit-mixer)と呼ばれ、入力値に対する統計的な相関性のない出力値を生成する。例えば、入力に対して単純な変更を加えると、平均して半数の出力ビットが変化する。さらに、ビットミキサは、鍵を用いることで、その挙動を変化させている。鍵が秘密であれば、ビットミキサの挙動は、観察者には予測不可能である。
【0022】
内蔵型の態様では、性能と消費電力とが懸念事項であるが、超大規模集積(VLSI)技術の進歩により、回路規模と引き換えにセキュリティを高めるような設計がいくらか可能になっている。他の態様も可能ではあるが、以下では、入力インターフェースと出力インターフェースの一方又は両方が内部に組み込まれており、観察者からは見えない態様について記載する。このような場合、一般化されている強なだれ規準(strict avalanche criterion)以上の暗号要件は、不要であるか、必要であってもごくわずかである。具体的には、主な攻撃対象領域(attack surface)として残されるのは、回路のサイドチャネル漏洩(side channel emanation)を通じて暴露されるデータ依存型の情報であり、これには、応答時間の変化、電磁放射及び消費電力の変動が含まれる。
【0023】
ブロック暗号では、ラウンドと呼ばれる変換ステップを、秘密鍵を用いて繰り返し実行する。これにより、平文と呼ばれるデータブロックを暗号化して暗号データブロックを生成する。暗号鍵から導出されるラウンド鍵が、変換処理に影響を与える。暗号のセキュリティと速度とは、これらラウンド鍵の生成の仕方に依存する。
【0024】
後述のように、ビットミキサを使って無相関性のラウンド鍵を生成する方法及びシステムが提案されている。ビットミキサは、複雑な非線形関数(nonlinear complex function)であり、大きな鍵データ(key material)による影響を受ける。電子機器で実装すれば、ラウンド鍵生成部は、現在使用されているアルゴリズムよりも高速で、悪用されうるサイドチャネル漏洩が皆無又はわずかであり、セキュリティが改善される。この結果、より高速で、より安全で、より消費電力の少ない新たな暗号方式が提供される。
【0025】
本開示の方法は、非線形性の高い非常に複雑なアルゴリズムであるビットミキサを用いることで、ブロック暗号用に生成されるラウンド鍵の質を改善する。ビットミキサは、電子ハードウェアによる実装に最適である。ビットミキサにより、暗号の生成速度、電力消費、セキュリティが向上する。ビットミキサは、内蔵型システム(例えば、航空機のボードコンピュータ)に低コストで利用可能である。ビットミキサは、回路サイズを大きく増大させることなく、全体の電力消費を低減させる。これを配置したシステムは、より低速な電子部品を利用可能であり、コンピューティングシステムのコスト、エネルギー消費及び電力消費をさらに低減することが可能である。加えて、処理速度とセキュリティも向上する。対象となるシステムには、航空機内コンピュータのサブシステム、軍事及び宇宙用プログラム、企業ネットワーク、パソコンやラップトップコンピュータ、携帯型スマート端末に加えて、セキュア通信ネットワークも含まれる。高性能コンピュータ、セキュアなマイクロプロセッサ、セキュリティ電子機器又はセキュリティソフトウェアのメーカーは、常に自社製品の品質、速度、セキュリティ、電力消費の向上を目指している。本開示の方法及びシステムによれば、コンピューティングシステムの電力消費、性能、セキュリティを改善でき、対象となるコンピューティングシステムには、航空機内コンピュータ、軍事及び宇宙用プログラム、企業ネットワーク、パーソナルコンピュータ及びラップトップコンピュータ、携帯用スマート端末に加えて、セキュア通信ネットワークがある。
【0026】
本開示の実施例によれば、ラウンド鍵(鍵スケジュール)は、(これらの鍵によって変化する)セキュアな繰り返し暗号の「内側」にある内部関数であり、改ざんのない暗号のためメイン鍵から生成される。ビットミキサへの入力は、一部(元の鍵又は、前回のラウンド鍵)は秘匿されるが、例えば、現在のラウンド数など、公開される情報も入力に含まれる。ビットミキサは、追加の鍵データを利用するが、このデータは秘匿されていてもよいし、従来の鍵生成と同様に公開されていてもよい。公開鍵データは、ハードコーディングすることもできるし、従来の鍵生成と同様に固定データとすることもできる。本開示の方法及びシステムを用いれば、ラウンド鍵の生成に用いるビットミキサに基づくアルゴリズムを、任意の繰り返し暗号の内部で使用することができる。これにより(並列の電子ハードウェアにおける)処理速度の向上と、電力要件及びエネルギー要件の低減と、適度な回路規模と、ラウンド鍵から相互の統計的相関性を排除することによるセキュリティの向上と、電子ハードウェア実装におけるサイドチャネル漏洩を低減することによるセキュリティの向上と、が得られる。ビットミキサにより使用される鍵データは、「サブ鍵」と呼ばれる等サイズの部分に分割される。ビットミキサは、相関性を高度に排除した任意のデータ長のラウンド鍵を生成するので、鍵生成アルゴリズムの拡大縮小が可能であり、任意のブロック長の暗号に適用することができる。
【0027】
ラウンド鍵生成に用いられるビットミキサへの入力は、その暗号の秘密鍵を含み、加えて、ラウンドカウンタと前のラウンド鍵とのうちの少なくとも1つを含みうる。ラウンド回数が128回を超えるような暗号は、現実的には存在しないので、このラウンドカウンタのデータ長は短い(4…7ビット)。カウンタのビットをシャッフル及び反復することによって、カウンタを鍵長と同じ長さに拡張することができ、いくつかのビットは、反転させてもよい。一実施例では、鍵スケジュールアルゴリズムは、拡張したカウンタをビットミキサへの入力として使用することができ、暗号鍵を、ビットミキサの鍵データ(の一部)とすることができる。最も単純なケースでは、暗号鍵をビットミキサの最初のサブ鍵とする。残りのサブ鍵は、(a)同じままでもよいし、あるいは、(b)単純なアルゴリズムを使って暗号鍵から導出してもよい。別の実施例では、その暗号の秘密鍵をビットミキサへの入力とし、拡張したカウンタを、ビットミキサの最初のサブ鍵とする。残りのサブ鍵は、(a)同じままでもよいし、あるいは、(b)単純なアルゴリズムを使って暗号鍵から導出してもよい。さらに別の実施例では、鍵スケジュールアルゴリズムは、拡張したカウンタと暗号鍵とに対してビット単位のXORを行い、その結果をビットミキサへの入力とすることもできる。上述した実施例について、他の変形や組み合わせも可能であり、これらによっても、セキュリティ及び速度について同様の効果が得られる。拡張したカウンタと暗号鍵のXORを取る場合(上述の第3の実施例)、拡張プロセスにおいては、どのカウンタビットも反転する必要はない。暗号鍵の各1ビットに対してXOR演算を行うと、結果として、対応するカウンタビットが反転されるからである。
【0028】
ビットミキサは、大きなサイズの鍵データを使用する。デジタルメモリやレジスタに格納すれば、この鍵データを使って暗号をパーソナライズすることができる(この鍵データに依存して、異なる暗号を定義できる)。代替の実施例では、ビットミキサのサブ鍵は、ハードコーディングしておくことができる。これにより、鍵スケジュールが高速化される。ただし、実行される暗号も固定されるので、パーソナライズすることはできなくなる。実際には、これが最も一般的なケースである。つまり、未知の相手先に対して暗号化データの送信あるいは受信が行われた場合に、その暗号をパーソナライズすることはできない。
【0029】
開示した鍵スケジュールの仕組みは、いずれもそのまま既存のブロック暗号の鍵スケジュールと置き換え可能である。置き換えにより、ハードウェア実装において元の暗号よりも高速でセキュリティの高い複数の新たな暗号を定義することができる。本開示の鍵スケジュールを利用して改善可能な暗号としては、限定するものではないが、トゥーフィッシュ(Twofish)、サーペント(Serpent)、AES(ラインダール:Rijndael)、ブローフィッシュ(Blowfish)、CAST5、RC4、3DES、スキップジャック(Skipjack)、Safer+/++、IDEA、SIMON、SPECK、Present、PRINTなどがある。
【0030】
ビットミキシングは、一般的には、ラウンドの回数を少なくした暗号方式において、XOR関数あるいはk入力1出力(k-to-1)のSボックスを(拡張や圧縮に必要なだけ)利用して入力のパディング又は出力のフォールディングを行うことで、任意のサイズのブロックに対して実行されると考えられている。他の構成も当然ながら可能ではあるが、本開示の実施例におけるビットミキサは、以下の特性を有する。即ち、すべての入力ビットがすべての出力ビットに影響すること;入力に単純な変更を加えると、平均して半数の出力ビットが影響されること;入力ビットに単純な変更を加えると、入力や入力の変更パターンに対する明らかな相関のない出力値、即ち、標準的な統計テストでランダムであると認められる出力シーケンス、が生成されることこと;鍵を利用しているので、観察者は、鍵を入手しなければビットミキサの挙動を予測できないこと;入力値及び出力値の各固定長を任意に独立して選択可能であること;などの特性である。「単純な変更」なる用語は、同時に変更するビット数が全体の半数未満である変更か、12未満の命令を用いるソフトウェアに基づく変更をいう。なお、上述した2番目の特徴は、強なだれ規準を一般化した内容である。繰り返しビットミキサのラウンド回数としては、1つの入力ビットを変更した後に、強なだれ規準を満たす、即ち、ランダムと区別できない出力値を生成するのに必要な回数を決定することができる。
【0031】
図1を参照すると、本開示の例示的な実施態様によるシステム100が図示されている。このシステムは、複数のコンポーネント、複数の処理部など(まとめて「コンポーネント」とする)のそれぞれを1つ又は複数含み、その内の少なくともいくつかは、マルチプレクサなどの論理回路、レジスタ、論理演算部、メモリ、マイクロプロセッサなどで構成される。このシステムは、複数の異なる用途のうちの任意のものに対応して設計されており、攻撃に対する脆弱性を有するメモリを含むか、そのようなメモリに接続されるシステムにおいて特に有用である。そのようなシステムの例としては、例えば、航空機内コンピュータ、軍事及び宇宙用プログラム、企業ネットワーク、パーソナルコンピュータ及びラップトップコンピュータ、携帯型スマート端末が含まれる。図示のとおり、このシステムは、例えば、本明細書では要求部(requestor)102と呼ぶ1つ以上のコンポーネントを含み、このコンポーネントは、1つ以上のメモリ104に対する読み出し及び/又は書き込み処理(read and/or write transactions)を開始又は要求する(例えば、そのように構成される)。いくつかの実施例では、これらの処理は、1つ以上のバスを介して実行される。
【0032】
例示的な実施態様によれば、システム100は、本明細書ではセキュアメモリ処理部(SMTU)106と呼ぶ1つ以上のコンポーネントをさらに含み、このコンポーネントは、要求部102とメモリ104との間のデータ転送を暗号化及び復号するよう動作可能であり、メモリに対する読み込み又は書き込み処理のすべて又は一部に使用される。後述するように、すべてではないが、いくつかの実施例において、SMTUは、メモリ内容を認証するよう動作可能である。様々な実施例において、SMTUの設計は、メモリ非依存型(memory agnostic)でもよく、メモリの種類や位置(内部又は外部)がSMTUには「不明」であっても構わない。
【0033】
いくつかの実施例では、SMTU106は、メモリ104の全メモリ位置に異なる暗号化を実行する可能性が高い。SMTUは、メモリ内容の暗号化及び/又は認証に、並列化が可能な暗号方式(parallelizable cipher construction)を利用することができる。いくつかの実施例では、SMTUは並列化が可能な暗号方式を暗号化及び認証のいずれか一方に用い、他方については、複数あるその他の暗号方式のいずれを用いてもよく、例えば、高度暗号化標準(AES)暗号における標準的な利用モード(operation mode)の組み合わせを、本明細書に記載のビットミキサによるラウンド鍵生成を用いて変形したものなどを使用することができる。平文データ(単に平文又はデータと記載する場合もある)は、一定サイズ(例えば16バイト)ごとに、メモリ位置の集合であるウィンドウに少なくとも含まれる各メモリ位置に格納されるが、格納する各データを、個別の暗号で暗号化し、データバージョン値及びデータ認証タグでタグ付けすることができる。タグは、暗号化されたデータ(暗号文と記載する場合もある)とともにそのメモリ位置に格納することができる。
【0034】
いくつかの実施例では、データバージョン値は、例えば、現在の演算セッションにおいて行われた暗号化書き込み処理の回数を示すグローバル書き込みカウンタ(GWC:global write counter)(例えば48ビットの値)から導出することができる。別の実施例では、データバージョン値は、複数の演算セッションにおける書き込み処理の回数やタイムスタンプなどから導出することができる。あるいは、さらに別の実施例では、データバージョン値は、クロックから導出することができる。
【0035】
いくつかの実施例では、GWCは、セキュアな処理の各セッションの開始時にリセットされる。GWC値は、平文の状態又はユーザデータで暗号化した状態で格納しておき、秘密のマスク値で変換した後に、鍵生成の一部に利用したり、その他の方法で、暗号化又はデータ認証を多様化させたりできる。GWC値は、各書き込み処理を行う前にインクリメントすることができ、この際のインクリメント値は、GWCと同様のサイズ(例えば、48ビットの値)にすることができる。このインクリメント値は、2進数表記において1の値あるいは0の値が多く連続しない大きな奇数であってもよい。適切なインクリメント値の例には、円周率(pi)、自然対数の底(e)、2の平方根、3の平方根、黄金比などのビット列の部分がある。このような値を用いることで、連続するGWC値が、全ビットのうち平均して半数が互いに異なる値になることが保証される。GWCインクリメント値を奇数にすることで、典型的用途においても、10年を超えて連続使用しても、GWCが同じ数値に帰還(wrap around)しないことを保証することができる。
【0036】
メモリ位置におけるデータ認証タグは、そのメモリ位置に格納された暗号文に依存しており、また暗号理論的に安全な状態にあり、攻撃者が、正しいデータ認証タグを生成することも、データ認証タグから暗号文についての情報を推測することもできない。いくつかの実施例では、データ認証タグは、メッセージ認証コードとして機能しうる。メッセージ認証コードとは、暗号文の認証、及び、データの改ざんや偽造の検出に利用できる短い情報である。このタグにより、暗号文の改ざんを検出することができるので、暗号文の完全性及び真正性の両方を保護することができる。いくつかの実施例では、鍵によって特定される変換を暗号文に施すアルゴリズムであるブロック暗号を利用して、タグを生成することができる。
【0037】
メモリ位置の暗号文及びデータ認証タグは、少なくともデータバージョン値とそのメモリ位置のアドレスとに基づく鍵を使って生成することができる。データバージョン値は、任意のメモリ位置への書き込み処理の度に更新することができるので、暗号文の生成に利用される鍵は、メモリ位置毎に異なるだけでなく、書き込み処理毎に異なることになる。データ認証タグは、暗号文ブロックの生成に用いた鍵とは異なる第2の鍵を使って生成することができる。第2の鍵も、最初の鍵と同様に、書き込み処理毎に異なり、また、メモリ位置毎に異なる。いくつかの実施例では、秘密の乱数や、例えば、セキュリティモード値(security mode value)などの他の値を利用して、暗号化及び認証をさらに多様化させることができる。本明細書では、「ランダム」なる用語を広義に用いており、ランダムと擬似ランダム(例えば、真にランダムな乱数種に決定的アルゴリズムを実行して繰り返し生成した数)のどちらも意味しうる。
【0038】
要求部102が要求したデータをメモリから読み出す処理においては、SMTUは、前に暗号化されたデータ(暗号文)をメモリから読み出す。SMTUは、暗号化データを復号し、改ざんの痕跡がないか確認する。データが正当であると判定すれば、SMTUは、復号したデータ(平文)を要求部に返す。書き込み処理においては、SMTUは読み出しアクセスの場合と同様に、対象位置のデータを読み出し、読み出したデータの復号及び認証を行う。これが完了すれば、SMTUは、書き込み対象のデータを、メモリ位置から読み出したデータとマージし、暗号化し、その後、メモリに書き戻す。本明細書において、マージとは、読み出したデータブロックのうち、変更があった部分を置換することである。暗号文ブロック全体を書き込むことが求められる場合には、別のアプローチを用いることもできる。この場合、マージ処理の代わりに置換処理が行われるので、最初の読み出し処理を省略することができる。これにより、セキュリティと引き換えではあるが、速度を高めることができる。
【0039】
様々な実施例において、システム100の処理部の間や内部で転送される読み出しデータのセキュリティを保証する方法は、メモリ104をアドレス指定可能な一連の位置に分割する(つまり、メモリは、アドレス指定可能なメモリということになる)ことを含む。各位置は、アドレスを有し、暗号化データと、データバージョン値(バージョン情報、又は、単にバージョン値と記載する場合もある)と、データ認証タグと、を格納する。本明細書に記載するように、アドレス指定可能なメモリ位置は、その時々で異なる呼び方を用いる場合があるが、いずれも同様に、アドレス、位置、又は、アドレス指定可能な位置のことを指す。各アドレスについて、固有の暗号鍵を暗号化データに用いることができ、これとは異なる固有の認証鍵をデータ認証タグに用いることができる。これらの鍵は、攻撃者に予測不可能であり、使用前、使用中、使用後を通じて秘匿状態に保たれる。
【0040】
各読み出し処理において、該当するアドレスのメモリ位置からデータバージョン値、データ認証タグ及び暗号文ブロックが読み出される。暗号文及びデータ認証タグの生成に用いられた各鍵は、データバージョン値とアドレスを用いて再生される。暗号文は、対応する鍵を用いて復号されて平文が生成される。また、第2の鍵をデータ認証タグに用いて、暗号文を認証タグと比較して、その完全性及び真正性を確認することができる。
【0041】
各書き込み処理において、メモリ104内のメモリ位置に新たな平文データが書き込まれる。いくつかの実施例では、各書き込み処理に先立って、その位置のデータをSMTU106により読み出し、データの有効性を検証してもよい。メモリ位置へのデータの書き込み処理には、SMTUによりデータバージョン値を更新して、新たなメモリ書き込み処理回数を反映させることを含んでもよい。次いで、SMTUは、更新後のデータバージョン値及びメモリ位置のアドレス(加えて、場合によっては、新たな乱数及び/又はその他の値)を用いた別の暗号化を、新たなデータに行うことができる。また、SMTUは、暗号化した新データに依存する新たなデータ認証タグを生成することができる。
【0042】
本開示の例示的な実施態様のさらなる側面によれば、SMTU106は、並列化が可能な暗号方式を実施するように動作可能である。この暗号方式は、不可逆ブロック暗号方式であり、複数の異なる並列の撹拌関数(mixing function)及び結合関数(combination function)を含む。詳細は後述するが、これらの撹拌関数は、異なる種類の関数の同一の組み合わせ又は異なる組み合わせを含みうる。関数の種類としては、ファイステルネットワーク(Feistel network)、二重撹拌ファイステルネットワーク(DMFN:double-mix Feistel network)、換字(substitution)・転置(permutation)ネットワーク、ビット単位の排他的論理和(XOR)演算の二分ツリー-単に、XORツリーと記載する場合がある-、ラウンド回数を少なくした標準的な暗号処理、などがある。例示的な実施態様における暗号方式は、暗号化又は認証に利用可能であり、1つ以上の論理回路において、最大でも各回路の1クロック周期で動作するように実施することができる。不可逆のビットミキサを暗号処理に用いる場合、電子コードブック(ECB)又は暗号ブロック連鎖(CBC)などの特定の暗号モードでの復号は不可能であるが、ストリーム暗号モードでは可能である。
【0043】
例示的な実施態様におけるこの付加的な側面によれば、SMTU106は、nビットの入力データブロックを受信し、暗号処理により、この入力ブロックテータからmビットのデータブロックを生成するように動作可能である。ブロック長nは任意であり、様々な実施例において、nは、64ビット、128ビット又は256ビットである。また、mとnとは、同じであってもよいし、異なっていてもよい。出力データブロックの生成では、SMTUは、複数の異なる並列の撹拌関数を入力データブロックに適用して、複数の更新データブロックを生成するように動作可能である。各撹拌関数は、入力データブロックを、複数の更新データブロックのうちの対応するブロックに写像(map)するように動作可能である。次いで、SMTUは、複数の更新データブロックを結合関数で結合して、出力データブロックを生成する。
【0044】
いくつかの実施例では、撹拌関数は可逆的である。上述のように、撹拌関数は、互いに異なるものでもよく、複数の異なる種類の撹拌関数のうちの任意の1つ又は複数でもよい。例えば、少なくともいくつかの撹拌関数は、それぞれ異なるラウンド関数を含むファイステルネットワークによって実現することができる。これに加えて、あるいは、これに代えて、例えば、撹拌関数のうちの少なくともいくつかは、それぞれ異なる第1ラウンド関数又は第2ラウンド関数を含むDMFNによって実現することができる。これに加えて、あるいは、これに代えて、例えば、撹拌関数のうちの少なくともいくつかは、それぞれ異なる換字レイヤ又は変換レイヤを含む換字・転置ネットワークによって実現することができる。さらに、これに加えて、あるいは、これに代えて、例えば、撹拌関数のうちの少なくともいくつかは、それぞれXORツリーにより実現することができる。この場合、入力データブロックから複数のサブ鍵が生成され、各二分ツリーを用いて撹拌される。
【0045】
いくつかの実施例では、結合関数において、出力データブロックの各ビットは、入力データブロックの1つ以上のビットに依存し、入力ブロックのすべてビットが、出力データブロックの1つ以上のビットに影響を与える。より具体的な実施例では、結合関数は、ビット単位のXOR演算、又は、その他の適切で、おそらくはより複雑な演算で構成することができる。
【0046】
いくつかの実施例では、ビットミキサ関数のmビットの出力データブロックとnビットの入力データブロックにおいて、mとnはと同じ値でもよい。別の実施例では、mとnは異なる値であってもよく、このビットミキサ関数は、ブロック長と呼ばれる入力長と出力長とが等しいビットミキサ関数から構成することができる。例えば、m>nとするならば、ビットミキサのブロック長をmにする。例えば、更新後のデータブロック(ビットミキサの出力)を、複数のブロック片に分割し、その後に結合して出力データブロックを生成する。他の実施例において、m<nとするならば、ビットミキサのブロック長をnにする。この場合、入力データブロックの長さをnに拡張するために、特定のビットを繰り返し、その内のいくつかのビットは反転させてもよく、その後、繰り返したこれらのビットを入力データブロックのビットに拡散させる。この際、各撹拌関数について拡散の仕方を変えてもよい。ビットミキサは、このようにブロック長を拡張した入力ブロックデータに対して処理を行う。
【0047】
暗号方式を認証に利用するいくつかの実施例では、出力データブロックは、データ認証タグであり、SMTU106は、メモリ104内のメモリ位置の各アドレスに依存したデータ認証タグを生成するように動作可能である。一実施例では、m=208及びn=80であり、暗号処理の入力データブロックは、128ビットの暗号文に対して32ビットのアドレスと48ビットのデータバージョン値とを連結したものであり、データ認証タグは、処理結果の80ビットから構成される。SMTUは、さらに、暗号文ブロック及びデータ認証タグを各アドレスのメモリ位置に書き込む書き込み処理を実行するように動作可能である。これらの実施例では、保護されたメモリは、データが記録されたメモリ位置に対する複数のウィンドウを有し、各メモリ位置には、平文を暗号化したデータブロックとともに、対応するデータ認証タグが記録されており、このデータ認証タグは、メモリ位置毎に異なる。
【0048】
暗号方式を暗号化に利用するいくつかの実施例では、出力データブロックは、多ビットパッド値(multi-bit pad value)であり、SMTU106は、メモリ104内のメモリ位置の各アドレスに依存したパッド値を生成するように動作可能である。一実施例では、n=m=128であり、パッド値は、32ビットのアドレスに48ビットのデータバージョン値と構成データ(configuration data)とを連結して生成される入力データブロックから算出することができる。次いでSMTUは、算出したパッド値をXOR演算により平文ブロックと結合して、暗号文ブロックを生成する。前述の実施例と同様、SMTUは、さらに、暗号文ブロックを各アドレスのメモリ位置に書き込む書き込み処理を実行するように動作可能である。加えて、メモリは、暗号文ブロックが格納されたメモリ位置に対するウィンドウを有し、各暗号文ブロックは、メモリ位置毎に異なる。
【0049】
図2は、いくつかの実施例において図1のシステム100に対応するシステム200の一例を示す図である。このシステムは、複数の異なるアプローチのうちの任意のアプローチにしたがって構築することができる。いくつかの実施例では、システムは、単一の集積回路(IC)(「チップ」と記載する場合もある)にコンポーネントを集積するシステムオンチップ(SoC)のアプローチで構築することができる。より具体的な実施例では、IBM社のマイクロプロセッサバス規格であるCoreConnectにしたがってシステムを構成することができる。本明細書では、システムの様々なコンポーネントやシステムコンポーネントの機能を、SoCやCoreConnectなどの特定の技術体系の用語を用いて説明することがある。ただし、本明細書で用いる特定の用語は、あくまでも説明を目的としており、本開示の例示的な実施態様の範囲を限定するものではない。
【0050】
図1のシステム100と同様に、図2のシステム200は、複数のコンポーネントを含み、そのうちの少なくともいくつかは、論理回路で構成することができる。図示のとおり、例えば、システムは、マイクロプロセッサコア202、メモリ204及びSMTU206を含む。いくつかの実施例では、これらは、図1の要求部102、メモリ104及びSMTU106として機能するか、あるいは、これらに相当する。図示はしていないが、システムは、要求部として機能するよう動作可能なその他のコンポーネントを含む場合がある。このようなコンポーネントも、メモリに対する読み出し処理及び/又は書き込み処理を開始又は要求するよう動作可能である。
【0051】
図2に示すように、マイクロプロセッサコア202は、第1バス208に加えて、メモリ204、SMTU206及びその他のコンポーネントに直接又は間接的に接続される。第1バスの使用は、調停回路210により割り当てられる。一実施例では、マイクロプロセッサコアは、IBM社から商業的に入手可能なPowerPCコアでもよく、第1バスは、プロセッサ・ローカル・バス(PLB)でもよい。適切なメモリの例には、組み込みダイナミック・ランダム・アクセス・メモリ(eDRAM)212、倍速同期型(又は他の種類の)ダイナミック・ランダム・アクセス・メモリ(DDR DRAM)214などが含まれ、そのいくつかは、第1バスに各メモリ制御部又はインターフェース216、218を介して接続可能である。いくつかの実施例では、システムは、1つの集積回路220に様々なコンポーネントを集積したSoCとして構成される。この場合、メモリは、システムの他のコンポーネントとは別にオフチップ(外部)に配置することができ、オンチップ(内部)のメモリ制御部を介して第1バスに接続することができる。これは、例えば、図2のDDR DRAMにより示されている。
【0052】
第1バス208に接続されたコンポーネントには、第1バスと別の第2バス224との間に設けられたバスブリッジ222も含まれる。第2バスは、例えば、転送バスであって、セキュリティプロセッサ226や、場合によっては要求部として機能しうるコンポーネントなどの追加のコンポーネントが接続されていてもよい。いくつかの実施例では、第1バスは高速のバスで構成して高性能のコンポーネントを接続し、第2バスは低速のバスで構成することができる。このような実施例では、バスブリッジは、高性能コンポーネントを低性能コンポーネントから分離する役割を果たし、これによりシステム性能を改善することができる。
【0053】
SMTU206は、マイクロプロセッサコア202などの要求部と、eDRAM212又はDDR DRAM214の一方又は両方と、の間の転送データを暗号化及び復号するよう動作可能である。SMTUは、マイクロプロセッサコア又はその他要求部から送出された読み出し要求及び書き込み要求を処理するスレーブユニット(slave unit)として機能することができ、この場合、SMTUは、要求にしたがって特定のメモリアドレスからの読み出し或いは書き込みを開始する。これにより、SMTUは、処理に高いセキュリティを保証することができる。
【0054】
SMTU206は、複数の異なる態様のうちの任意の態様で、システム200に接続することができる。図示の例では、SMTUは、3つの双方向外部データインターフェースによってバスブリッジ222に接続され、また、別の双方向外部データインターフェースによってセキュリティプロセッサ226に接続される。具体的には、SMTUは、マイクロプロセッサ・コアインタフェース228、第2バスインターフェース230及びメモリインターフェース232によってバスブリッジに接続され、コマンド・コントロールインターフェース234によってセキュリティプロセッサに接続される。
【0055】
マイクロプロセッサ・コアインタフェース228は、第1バス208を介してマイクロプロセッサコア202に接続されており、メモリ204に対するデータ読み出し要求及び/又はデータ書き込み要求などの制御情報を受信する。第2バスインターフェース230は、第2バス224に接続されており、メモリインターフェース232は、第1バスを介してメモリに接続される。バスブリッジ222は、マイクロプロセッサ・コアインタフェース及びメモリインターフェースを介した転送が第1バスのみを経由するようにし、第2バスインターフェースを介する転送が第2バスのみを経由するようにする。これにより、コマンド・コントロールインターフェース234は、セキュリティプロセッサ226が、独立したインターフェースを介してSMTUにコマンド及び制御情報を送出することを可能にする。
【0056】
図3は、図2のSMTU206の様々なコンポーネントを示す図である。繰り返しになるが、少なくともいくつかのコンポーネントは、論理回路で構成することができる。図示の通り、SMTUは、コマンド・コントロールインターフェース234に接続されたコマンド制御部302を含み、この制御部は、制御レジスタ304及び状態レジスタ306を含む。SMTUは、転送調停部308を含み、これは、マイクロプロセッサ・コアインタフェース228、第2バスインターフェース230及びメモリインターフェース232の使用割り当てを行うように接続されており、また、そのように動作可能である。マイクロプロセッサ・コアインタフェース上に設けられた先入れ先出し(FIFO)メモリ310は、調停部への転送のバッファリングを行うよう動作可能である。
【0057】
調停部308は、転送制御部312及びアドレス変換部314にも接続され、この転送制御部は、暗号部(cryptography unit)316に接続される。暗号部は、鍵生成部318、暗号化部(encryption unit)320、データハッシュ部(data-hashing unit)322を提供する。暗号部は、鍵データ記憶部(KMS)324に接続される。鍵データ記憶部は、暗号化部及びデータハッシュ部用の鍵を生成するための鍵生成部に乱数を供給するよう動作可能である。暗号化部は、SMTU206を起動させる読み出し又は書き込み要求に応じてメモリ204に対して実行されるすべての読み出し処理及び書き込み処理を暗号化及び復号するように動作可能である。また、データハッシュ部は、メモリに対して読み出し、又は、書き込みされる暗号化データ(暗号文)用のデータ認証タグを生成するように動作可能である。いくつかの実施例では、暗号化部とデータハッシュ部の一方又は両方において、本明細書に記載したような並列化可能な暗号方式を採用することができる。また、いくつかの実施例では、いずれか一方のみが並列化可能な暗号方式を採用し、他方は、複数ある他の構成のうちの任意のものを採用することができる。例えば、暗号化部は、暗号化及び復号処理にAES暗号を採用するよう動作可能である一方、データハッシュ部は、本明細書の記載のビットミキサラウンド鍵生成を利用するように変形した鍵付きハッシュ関数を採用するよう動作可能である。
【0058】
いくつかの実施例では、KMS324は、乱数を供給するように動作可能な1つ以上のレジスタ列326(KMSメモリと記載する場合もある)を含む。SMTUは、KMSから供給される乱数に依存するので、質の高い乱数を使用することが通常望ましい。よって、いくつかの実施例では、KMSは64×64のレジスタ列を4つ含んでおり、16Kビットの乱数を供給することができる。処理に先立って、KMSを16Kビットの乱数で初期化してもよい。いくつかの実施例では、この乱数は、SMTUの外部で生成されたものでもよい。
【0059】
いくつかの実施例では、真性乱数(true random number)を使用する代わりに、コンフィギュレーション/エントロピー(configuration/entropy)が記録された1つ以上の読み出し専用の内蔵メモリブロック(ROM)328を用いてKMS324を初期化することもできる。これらは、例えば512×16のROMであり、図には、ROM1、ROM2及びROM3の3つが示されている。これらのROMに含まれる乱数は、システム設計の段階で記録されたものでもよい。コンフィギュレーションROMを乱数のソースとして利用する場合、生成される鍵のランダム性が低くなる可能性があり、耐改ざん機能が低くなる。ただし、乱数のソースとしてROMを利用することが望ましい用途もいくつかある。1つは、時短有利(time critical)な用途であり、このような用途では、乱数生成の初期化に時間がかかって遅延が生じることが許容されない。他にも、システムリセット後に復元可能な暗号化画像データを生成したり、又は、別のシステムで復元可能な画像を生成することが必要な用途がある。
【0060】
例示的な実施態様によるシステム200及びSMTU206の様々な特徴についての情報は、以下の説明及び本願に援用する上述の関連出願’871号に記載されている。
【0061】
図4は、本開示のいくつかの例示的な実施態様による、メモリ104、204に格納された暗号化データのデータ構造を示す。図示のとおり、暗号化データは、32バイトのブロックを使って格納され、各ブロックは、16バイトの暗号化ペイロード(暗号文)及び16バイトのセキュリティデータを含む。セキュリティデータは、6バイトのデータバージョン値(図示の例では、書き込みカウンタ値)及び10バイトの認証タグを含む。6バイトの書き込みカウンタは、メモリ位置のアドレスに関わらず、メモリ位置への書き込み毎にインクリメントされるフィールドである。この結果、インクリメントされた値は、各アドレスに固有の値になる。あるメモリ位置に対する暗号化処理及び認証鍵は、そのアドレス、書き込みカウンタ値、及び乱数から導出することができる。別の実施例では、より多くのフィールド、あるいは、より少ないフィールドを暗号化に用いることができる。16バイトの暗号化データごとに、16バイトの認証タグ及び書き込みカウンタ値を付加する必要があるので、メモリ位置の集合である各ウィンドウの有効記憶容量は、物理的なサイズの1/2になる。ただし、別の実施例では異なるサイズのデータやタグにて、より大きな、あるいは、より小さなサイズのメモリを実現することができる。
【0062】
図5は、本開示の実施態様の一例によるDMFN500の1ラウンドを示す図である。DMFNでは、入力長と出力長のうちの大きい方をブロック長とすることができる。これは、ビットミキサにおける圧縮又は拡張の必要に合わせて、入力ビットを繰り返すか、出力ビットをフォールディング(folding)することにより行われる。具体的には、データは、LとRの2つに分けて半分ずつ処理される。各ラウンドRoundiにおいて、2つの関数FとGを用いて、Li及びRiからLi+1及びRi+1が算出される。最初の入力であるL0及びR0がビットミキサの入力とされ、最終の値であるLr及びRrが出力となる。以下に示すように、Li+1は、Fの出力とRiとを用いたビット単位のXOR演算を使って生成されるのに対して、Ri+1は、ビット単位のXOR演算を使ってGの出力にラウンド鍵kiを撹拌することで生成される。DMFNにおいて、各ラウンドi=0,1,…,r-1について、更新後の左半分データ(Li+1)及び更新後の右半分データ(Ri+1)は、下記により算出される。
【数1】
【0063】
上記において、最初の入力L0及びR0がビットミキサの入力として設定され、最後の値Lr及びRrが出力を構成し、F及びGは、第1ラウンド関数及び第2ラウンド関数を表し、kiは、ラウンド鍵を表す。ラウンドr-1における出力が、更新後のデータブロック(Lr,Rr)である。
【0064】
例示的な実施態様におけるファイステルネットワーク及び/又はDMFNの場合、ラウンド関数(F)は、非線形関数でもよい。この関数は、可逆であっても、なくてもよい。ただし、第1関数が可逆である場合、逆関数の算出が困難(一方向関数)であることが望ましい(ただし必須ではない)。この手法のセキュリティは、ラウンド鍵kiの秘匿性に依存し、また、Fの逆関数が存在しないか、存在しても、算出が困難な非線形関数であるとの要件に依存する。いくつかの実施例では、この関数はラウンド(例えば、Fi)に依存する。ただし、別の実施例では、第1関数がラウンドに依存しない構成でもよい。
【0065】
適切なラウンド関数(F)の一例は、入力の左側半分をシフトさせたもの同士のペアに対する複数回の論理演算NANDと、これらNAND演算の出力に対する論理演算XORとを含む。3回のNAND演算の場合、第1関数は、Liをシフトさせて得られる第1のペアに対する第1NAND演算と、Liをシフトさせて得られるの第2のペアに対する第2NAND演算と、Liをシフトさせて得られる第3のペアに対する第3NAND演算と、第1、第2、第3の各NAND演算の出力に対するXOR演算と、を含む。ハードウェア実装では、これらのシフト又はローテーションは、単に配線によって実現されるので、時間を要しない。よって、第1関数に必要な時間は、2つのXORゲート遅延に加えて、2入力NANDゲートの遅延の時間のみである(なお、ANDゲート又はNORゲートでも、同様に効果的に機能する)。この時間は、セルライブラリ(cell library)が最適化されていれば、4つのNAND2ゲート遅延に等しい。本明細書において、NORゲートは、Not-OR、Negative-OR又はNegated-ORの論理関数を実行するゲートである。
【0066】
DMFNの場合、第2ラウンド関数(G)は、可逆であってもよい。ただし、その逆関数が容易に演算できないことを要件とする。第1関数(F)と同様に、いくつかの実施例では、第2関数はラウンド(例えばGi)に依存するが、別の実施例では、第2関数は、ラウンドに依存しない構成でもよい。
【0067】
いくつかの実施例では、非線形の換字ボックス(sボックス)のレイヤを第2関数(G)に利用することができ、これにより、写像が非線形になる。別の実施例では、第2関数は、左半分データに対して循環シフト又はローテーションを施し、次いで、これらを相互に、且つ、ラウンド鍵と撹拌し、これにより更新後の右半分データが算出される。より具体的な実施例では、第2関数は、左半分データを巡回シフトさせたデータを3つ作成し、これらのデータにおいて同じビット位置にある各3つのビットのXORを取って結合し、ラウンド鍵において同じ位置にあるビットを使って、更新後の右半分データを構成するビットを生成する。この点に関し、ブロック長=2nの場合(nは、正の整数)、このデータを巡回シフトさせて得た任意の3つのデータに対するXOR演算は、可逆関数となることが知られている。第1関数と同様に、ハードウェア実装の場合、これらのシフト及びローテーションは、適切な配線によって実現されるので、時間を要しない。よって、第2関数及び撹拌処理に必要な時間は、2つのXORゲート遅延の時間のみである。各遅延は、セルライブラリが最適化されていれば、1.5から3のNAND2(2入力NAND)ゲート遅延に等しい。
【0068】
可逆のビットミキサが必要な場合、G(即ち、各Gi)は可逆関数でなくてはならない。Gの逆関数は、ビットミキサの逆関数も必要でない限り、容易に算出可能である必要はない。よって、典型的な非線形の可逆Sボックスレイヤよりも高速である。そのような関数Gの例としは、Gの各入力ビットに対して、所定の循環距離(circular distance)(d1,d2)からの2つの入力ビットとのXORを取る場合である。ブロック長が2の累乗である場合、出力ビットとして所定の循環距離からの3つの入力ビットのXORを算出すれば、可逆関数が得られる。ハードウェア実装では、d1及びd2が、過剰に長い配線を必要とするような大きさでなければ、関数Gの算出及びラウンド鍵のXOR演算に要する時間は最短ですむ。
【0069】
非線形のビットミキサが必要な場合、Fは非線形関数でなくてはならない。ただし、Fは可逆である必要はない。Fの逆関数は、ビットミキサの逆方向である逆関数についてさえも不要であるからである。以下のように、実施態様の一例では、高速かつ十分に複雑であり、バイナリ多項式のガロア域(Galois field of binary polynomials)において非線形な構成が用いられる。
1.Liを循環距離d3及びd4からシフトさせた2つのデータのNANDを行う。
2.Liを循環距離d5及びd6からシフトさせた2つのデータのNORを行う。
3.Liを循環距離d7及びd8からシフトさせた、さらに別の2つのデータのNANDを行う。
4.上述の3つのブロックのビットとLiとのXORを行う。
【0070】
ハードウェア実装では、シフトは、本質的に独立でほとんど時間を要しない処理である。このように、FとGとは、経路長がほとんど等しい。よって、少し手作業を加えるだけで、クリティカルなタイミングパスのバランスを取って、サイドチャネル漏洩のリスク低減することができる。F及びGを、すべての又は特定のラウンドにおいて異なるもので構成することもできるし、本明細書の実施態様のように、すべてのラウンドで同じ関数を維持する構成も可能である。
【0071】
なお、Gが可逆関数の場合、DMFNも可逆である。つまり、Liを下から順に、つまりRi+1から算出することができ、ラウンド鍵ki及びGの逆関数が分かれば、Liを算出することができる。Liが分かれば、F(Li)を算出することができ、その結果とLi+1とのXORを取れば、Riを算出することができる。可逆性は、有用な性質である場合が多い。これにより、あらゆる可能な出力値が得られること、及び、2つの異なる入力値に対して出力が同じにならないことが保証される。
【0072】
上記及び図5に示すように、各ラウンドで、半分のデータ長のサブ鍵kiがGに撹拌される。全ブロック長のサブ鍵、つまり、図6に示すように、残りの半分のサブ鍵をRiとあわせて撹拌した場合と比較して、撹拌についての顕著な改善は認められなかった。しかしながら、構成が異なるので、異なる用途に適している。
【0073】
次に、図6を参照する。この図は、別の例示的な実施態様によるDMFN600の1ラウンドを示す図である。DMFNでは、ラウンド鍵kiを適用して、Li+1ではなくRi+1を変換し、これにより、両方の半データの算出に要する負荷のバランスをとっている。つまり、2つの半データは、同時に算出される。ただし、第1関数(F)を適用する際に、Riは使用されない。よって、図6に示すように、Riは別のラウンド鍵hiに撹拌されるが、バランスは崩れない。また、Ri+1及びLi+1の両方が、鍵データの影響を受ける。図6に示すDMFNでは、第1関数(F)及び第2関数(G)として、同等に複雑な関数を選択すれば、全体の撹拌特性を改善することができる。第2関数が第1関数よりも演算が遅い場合など、さらに別の実施例では、kiの撹拌を省略することが可能である。このようにした手法は、図5のDMFNと撹拌特性は同等であるが、速度は若干速い。DMFNに関し、各ラウンドI=0,1,…,r-1について、更新後の左半分のデータ(Li+1)及び更新後の右半分のデータ(Ri+1)は、下記により算出される。
【数2】
【0074】
上記において、最初の入力L0及びR0がビットミキサの入力として設定され、最終の値Lr及びRrが出力を構成し、F及びGは、第1ラウンド関数及び第2ラウンド関数を表し、ki及びhiは、ラウンド鍵を表す。ラウンドr-1における出力が、ビットミキサの出力であり、更新後のデータブロック(Lr,Rr)である。
【0075】
また、周知の換字・転置ネットワークに基づく可逆のビットミキサも利用可能である。ファイステルネットワーク及びDMFNと同様に、例示的な実施態様における換字・転置ネットワークは、繰り返し(即ち、ラウンド)を伴う。例えば、ラウンド(i)において、入力データブロック(Di)がラウンド鍵(ki)と(例えば、XORにより)撹拌され、その結果が、複数のSボックス(Si)を含む換字レイヤと、転置(Pi)を含む線形変換レイヤとを、介して撹拌されて、更新後のデータブロック(Di+1)が生成される。別の実施例では、入力データブロックが、先ず、換字レイヤ及び線形変換レイヤを介して撹拌されて、更新後のブロックデータが生成され、ついで、このブロックデータがラウンド鍵(ki)と撹拌される。いずれの例でも、Sボックス及び転置のいずれか又は両方が、ラウンドに依存してもよいし、依存していなくてもよい。また、いくつかの実施例では、少なくとも1つのラウンドにおけるSボックスのうちの2つが異なるものでもよい。実施態様の一例では、最初のデータブロック(D0)は、さらに大きなデータブロックの部分データにすぎず、この他にも少なくとも1つの部分データ(B0)が含まれていてもよい。ラウンド鍵(ki)を、他の部分データ(B0)と(例えば、XORにより)撹拌して撹拌ラウンド鍵を生成し、この撹拌ラウンド鍵を、そのラウンドの入力データブロック(Di)と撹拌する構成でもよい。あるいは、別の実施例では、ラウンド鍵を他の部分データと撹拌し、この結果生成された撹拌ラウンド鍵を、換字レイヤ及び線形変換レイヤを通過させた後で更新データブロック(Di+1)と撹拌する構成でもよい。
【0076】
図7は、本開示の例示的な実施態様における換字・転置ネットワーク700の3つのラウンドを示す図である。周知の換字・転置ネットワークに基づく、可逆ビットミキサを利用することができる。圧縮であるか拡張であるかにより、所望の入力ブロック長及び出力ブロック長のうちの長い方がブロック長として選択される。入力長の方が短い場合には、使用されていない入力ビットについては、固定の値とするか、あるいは、使用された入力ビットを繰り返すことで、出力長と合致させる。必要な出力長の方が短い場合には、出力ビットを破棄するか、XORやその他の適切な関数を利用していくつかのビットをフォールディングすることで最終的な出力を生成する。換字・転置(SP)ネットワークは、図7にしたがって従来通りに構築され、以下の3つのステップを数回繰り返す。
1.一連の非線形関数Sボックスによって、入力を変換する。
2.変換結果のビットの、再配送(rerouted)/転置を行う。
3.転置したデータとラウンド鍵/サブ鍵のXORを取る。
注:第1ラウンド及最終ラウンドは、ステップを1つ又は2つ省略して、簡易化されること多い。
【0077】
Sボックスが可逆であれば、SPネットワークも可逆である。Sボックスが非線形であれば、SPネットワークも非線形である。SPネットワークは、任意の幅を有し、完全に撹拌するのに要するラウンドの数は、この幅に依存する。ハードウェア実装では、Sボックスが小さい方が高速のビットミキサを構成できる傾向がある。現実的な最小のSボックスとして、3つの入力ビット及び3つの出力ビットを有するものが、PRINTcipherにおいて実装される。この暗号は、Lars Knudsen、Gregor Leander、Axel Poschmann、Matthew J.B.Robshawによって公開されている。PRINTcipher:ICプリンティング用のブロック暗号。Cryptographic Hardware and Embedded Systems(暗号ハードウェア及び組込みシステム)CHES2010年、LectureNotes in Computer Scienceシリーズの第6225巻16~32ページ。この3×3のSボックスにおける3つの出力ビットは、下記のように定義される:
【数3】
【0078】
図8A図8Cは、このSボックスの実装に使用可能な小型で高速な回路を示す。図中、800はF0算出用の回路であり、820はF1算出用の回路であり、840は、F2算出用の回路である。これらの回路は、各出力ビットに少数のゲートしか必要としない。
【0079】
暗号PRESENTでは、4×4のSボックスが下記のように実装される。この暗号については、A.Bogdanov、L.R.Knudsen、G.Leander、C.Paar、A.Poschmann、M.J.B.Robshaw、Y.Seurin、C.Vikkelsoeによって公開されている。PRESENT:超軽量のブロック暗号。Cryptographic Hardware and Embedded Systems(暗号ハードウェア及び組込みシステム)-CHES 2007年、Lecture Notes in Computer Scienceシリーズの第4727巻450~466ページ。
【数4】
【0080】
図9は、この4つの出力信号のうちの1つを実装するのに利用可能な例示的な回路設計900を示す。このSボックスの方が、各出力に必要なゲートの数が若干多い。同様の性能及び撹拌特性が得られるものであれば、この他の4×4のSボックス設計も利用可能である。より簡易で、より高速なSボックスの実装も可能であるが、そのようなSボックスでは、同程度に十分な撹拌特性を得るためにラウンドの回数を増やす必要があり、結果的にビットミキサの全体性能が低下する。
【0081】
PRINTcipher、PRESENT及びAESなどの暗号、また、SHA3などのハッシュ関数で利用されている適切な転置処理を利用することが可能である。列挙した暗号手法のうちの最初の2つで用いられている簡易な転置処理は、最初の数ラウンドで入力ビットを完全に拡散させることができる。つまり、入力ビットを1ビット変更することにより影響を受けたビットが、異なるSボックスに供給される。撹拌対象の入力のブロック長をbとし、Sボックスの幅をsとすると、この転置処理は下記のように定義される。
【数5】
【0082】
m×mの完全Sボックス(perfect S-Box)は、1入力ビットに対する変更を、次のラウンドのmビットに拡散させる。適切な転置処理を行えば、これらのビットは、次のラウンドで異なるSボックスに供給され、m2ビットに変更が拡散される。r回のラウンドの後、1入力ビットに対する変更がmr個の出力ビットに影響し、最終的にはすべてのビットに影響する。なお、mr≧nであることが望ましく、つまり、r≧log(n)/log(m)とすることが望ましい。これにより、1入力ビットに対する変更が、すべての出力ビットに影響する。当然ながら、ラウンドの回数が多いほど、拡散の度合いが高くなる。
【0083】
PRINTcipherのSボックスを用いるSPネットワークの例示的な実施態様では、入力幅及び出力幅は、255ビットに設定される。完全な撹拌のために必要なラウンドの最小回数は、理論上は、r=log(255)/log(3)≒5である。1000組のランダム鍵で試した統計的な実験では、それより多くのラウンドが必要であるとの結果になった。ラウンドを9回行えば、常に統計的に完全な撹拌が得られた。ワーストケースで必要な9回のラウンドを1クロック周期で実行する場合、クロック速度は450MHz以上になる。別の例示的な実施態様では、SPネットワークに暗号PRESENTのSボックスを用い、入力幅及び出力幅は256ビットに設定される。完全な撹拌を得るために必要なラウンドの最小回数は、r=log(256)/log(4)=4である。1000組のランダム鍵で試した統計的な実験では、統計的に完全な撹拌を得るのに6ラウンドで十分であるとの結果になった。暗号PRESENTのSボックスを用いたSPネットワークは、ワーストケースである6回のラウンドであっても、PRINTcipherのSボックスを用いたものに比べてラウンド回数が3回少なく、各ラウンドにおける撹拌の度合いも、どの線形関数よりもはるかに高い。ラウンド回数の違いは、性能の向上につながり、全6ランドを1クロック周期で実行する場合、クロック速度は500MHz以上になる。
【0084】
図10は、様々な例示的な実施態様によるXORツリー1000を示す。XORツリーを用いる実施例では、撹拌関数は、秘密乱数(例えばKMS324)及び入力データブロックに基づく。この点に関し、サブ鍵は、秘密乱数のブロックで構成することができ、これは、一連のブロックにおいて、入力データブロックの特定のビット、例えば、値が2進数の1(あるいは、0)であるビットの位置に対応するもので構成することができる。次いで、サブ鍵は、XORツリーを用いて撹拌される。
【0085】
図10に示すように、XORツリー1000は、データのマージ処理を実行するために実装された複数のXOR論理ゲートを含む。図10では、各論理ゲートは、処理対象のサブ鍵の各ビットに対応するゲート群を表す。
【0086】
XORツリーに基づくビットミキサでは、入力は、任意長の連続ビットであって、空集合を含まない複数の組に分割されて、ビット群を形成する。マルチプレクサを用いて、各群のビットで鍵データからサブ鍵を選択し、マルチプレクサの出力をビット単位XORで結合して、ビットミキサの最終出力を生成する。XOR演算は、ASICにおいては、2入力のXORゲートをツリー構造で用いて実行することが多いが、例えば、幅の大きいルックアップテーブルを提供するFPGAなど、対象技術によっては、多入力ゲート又はパリティ生成回路も利用可能である。この構成のビットミキサは、実装が明瞭なだけでなく、高い性能、低い電力消費、及びセキュリティの改善を実現することができ、また、サイドチャネル攻撃の対象領域を最小にすることができる。
【0087】
XORツリーに基づくビットミキサの入力幅と出力幅は、それぞれ独立して選択することができ、選択された出力幅の方が大きければ拡張関数が生成され、入力幅の方が大きければ圧縮関数が生成される。ランダムな鍵データを有するので、入力ビットの任意の1ビットを変更することで、ランダムなサブ鍵により出力を変化させることができる。このように、どの入力ビットを変化させても、すべての出力ビットが影響を受ける。さらに、ビットミキサの構成によれば、複数の入力ビットを変更すると、ランダムなサブ鍵をXORにより結合した集合によって出力を変化させることができる。そのような集合そのものもランダムである。総合すると、XORツリーに基づくビットミキサは、上述した望ましい特性の各要件を満たし、理論上、完全な撹拌を保証する。
【0088】
実施態様の一例で、ASICにおける回路を評価した。この回路は、2入力1出力マルチプレクサを用いてサブ鍵を選択し、2入力XORゲートを用いて7層のXORツリーを実装して、80ビットの入力を256ビットの出力に拡張する構成である。ゲートのファンアウト/ローディング(fanout/loading)が限定的であっても、このビットミキサ回路は、クロック速度が1.2GHz超のシステムにおける1クロック周期で容易に動作することができる。
【0089】
XORツリー構成は、ビット選択及びXOR演算のみを利用するので、二値のガロア域において線形である。このような構成では、単純な相関関係を持つ入力値から算出される特定の出力値について、ある種の4通り相関関係(4-way correlations)が存在する。この例では、以下のような相関関係が存在する。少なくとも2つの入力ビット群があり、そのうちの1つの入力ビット群Bからビットbが選択され、別の入力ビット群Cからビットcが選択されたと想定する。ビット群Bにおいて、b以外のすべてのビットは固定とし、ビットbが論理0の場合に選択されるサブ鍵をK0とし、ビットbが論理1の場合に選択されるサブ鍵をK1とする。同様に、ビットcの論理値に基づいて選択されるサブ鍵を、L0及びL1とする。ビット群Cにおける他のビットは固定とする。最後に、Mは、入力が固定された他の入力ビット群により選択されるすべてのサブ鍵のXOR(他のビット群がない場合には、0)を表すとする。bとcの値が2×2通りの可能な組み合わせのいずれであっても、出力値のXORは0になり、これを本明細書では、「4通り相関関係」と呼ぶ。
【数6】
【0090】
出力値が見えない用途の場合は、この種の相関関係が回路のセキュリティに問題となることはない。この相関関係が懸念事項となる用途の場合は、以下のような非線形関数によって出力結果をさらに処理することができる。例えば、Sボックスなどの非線形関数を並列に集合させもの、Sボックスなどの非線形関数の集合の出力結果に対して元の出力とのXORを取るもの、ローテーションを加えたXOR(RAX:Rotate-Add-XOR)構成(マイクロプロセッサによる実装に適している)がある。非線形的な構成にするための別の方法では、XORツリーにおける1つ以上の層のXOR演算を、図9に示すような、k入力1出力の非線形Sボックスに置き換える。実装は単純であるが、不均一な回路遅延が加わるので、サイドチャネル漏洩を低減するためには、手作業で信号伝播のバランスをとる必要が生じうる。XORツリーの1つの層をSボックスに置き換えることにより、さほどの手間を必要とすることなく、1.0GHz超のクロック速度の1クロック周期で動作する構成が得られる。
【0091】
次に、図2及び図3を参照すると、例示的な実施態様において、メモリ204内のメモリ位置の集合であるウィンドウに含まれるメモリ位置への書き込み処理は、マイクロプロセッサコア202が、該当するアドレスのメモリ位置のデータに対する要求を生成し、そのアドレスをメモリ204に第1バス208を介して送出することを含む。当然ながら、マイクロプロセッサコアからアドレスを受け取る代わりに、例えば、ダイレクトメモリアクセス(DMA)コントローラなどの他の要求部からアドレスを受け取ることもできる。
【0092】
受け取ったアドレスは、SMTU206にも供給される。いくつかの実施例では、アドレスは論理アドレスであり、アドレス変換部314によって物理アドレスに変換される。アドレスは、転送制御部312を経由して鍵生成部318に供給される。この鍵生成部は、機能的に3つの鍵生成部を有する。これらは、鍵生成部W、C、Dと記載される場合もあり、それぞれそれぞれ鍵W、C、Dを生成するよう動作可能である。3つの鍵生成部のそれぞれは、KMS324において先に格納又は生成された乱数も受け取る。そのメモリ位置には、書き込みカウンタ値(例えば、データバージョン値)、データ認証タグ及び暗号文ブロックが格納されており、この情報は、転送制御部にも供給される。いくつかの実施例では、書き込みカウンタ値は暗号化される。この暗号化は、非常に簡易であっても、また、鍵が予め定められた固定値であっても、セキュリティを大きく低下させることにはならない。
【0093】
SMTU206の暗号化部320又は他のコンポーネントは、鍵Wを用いて書き込みカウンタ値を復号する。暗号化部は、鍵Cを用いて暗号文を復号し、この間に、転送制御部は、データハッシュ部322に、暗号文の完全性を検証させる。いくつかの実施例では、この検証は、暗号文、鍵D及びデータ認証タグに基づいて行われる。暗号文の完全性が確認された場合には、復号済みの暗号文(平文になったもの)がメモリ位置に書き戻される。一方、暗号文の真正性が確認されない場合には、エラーが発信される。
【0094】
エラーの発生は、ランダムなエラー又はデータ改ざんの可能性を示唆する。転送制御部312は、これに応じて複数の処理のうちのいずれかを行う。例えば、転送制御部は、システム200に命令して、(i)すべての読み出し要求及び書き込み要求の処理を停止させる、(ii)現セッションの暗号化に用いている乱数を消去させる、(iii)鍵生成処理に関係するすべてのレジスタをフラシュする、(iv)メモリフラッシュを発動して、メモリウィンドウの内容をすべてゼロで上書きさせる、(v)その他の処理、のうちのいずれかを行わせる。別の例では、転送制御部は、エラーカウンタを保持し、エラーが発生するとこのカウンタをインクリメントする構成でもよい。このアプローチでは、エラー回数が閾値に達した場合に、上述の処理のうちの1つ又は複数を転送制御部が実行するようにできる。このアプローチは、ノイズが多く、ランダムメモリの読み出しエラーが発生しやすい環境で有用である。
【0095】
いくつかの実施例では、メモリ204内のメモリ位置に対する書き込み処理に先立って、そのメモリ位置に対する読み出し処理を実行してもよい。上述したように、これにより、そのメモリ位置に格納されたデータの真正性を確認することができる。先に読み出しを実行する場合は、読み出し処理によりデータの真正性が確認された場合にのみ、書き込み処理が実行される。この場合、いくつかの実施例では、書き込み処理は、書き込み対象の新たなデータを、復号された暗号文(平文)にマージするように動作可能な転送制御部312を含む。
【0096】
転送制御部312は、GWCをインクリメントし、鍵生成部318の鍵生成部C及びDのそれぞれに更新後の値を供給するよう動作可能である。鍵生成部C及びDは、インクリメント後の書き込みカウンタ値及び該当するメモリ位置のアドレスを用いて、新たな鍵C及びDを生成し、生成した鍵をそれぞれ暗号化部320及びデータハッシュ部322に供給する。暗号化部は、マージされた平文を新たな鍵Cで改めて暗号化して、新たな暗号文を生成する。また、データハッシュ部は、新たに生成された暗号文及び鍵Dを用いて、新たなデータ認証タグを生成する。また、鍵Wとインクリメント後のGWCの値とを結合したものを用いて、暗号化書き込みカウンタ値を生成することも可能である。このように生成された書き込みカウンタ値、データ認証タグ及び暗号文は、メモリ位置に書き戻される。
【0097】
図11は、本開示の例示的な実施態様における、コンピュータシステムのセキュリティを保証するための方法1100に含まれるさまざまな処理を示す。セキュリティは、ある暗号手法における暗号処理を実行するための1つ以上のラウンド鍵を生成することで保証される。本明細書に記載するように、暗号処理は、1つ以上の暗号化関数を含む。本方法では、先ず1105で、1つ以上の第1入力及び1つ以上の第2入力を取得する。いくつかの実施例では、1つ以上の第1入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵、又は、暗号鍵を含む。また、1つ以上の第2入力は、ランダムに生成された固定の入力、1つ以上の前のラウンド鍵、又は、ラウンド数を含む。いくつかの実施例では、1つ以上の第1入力は、より短い鍵に対して、ハードコーディングされた鍵データ、カウンタ入力、又は、これらを結合したものを使って暗号関数、ビットミキサを適用することで生成される。いくつかの実施例では、暗号関数は、サイファ(cipher)、ハッシュ関数又はストリームジェネレータでもよい。いくつかの実施例では、鍵データは、秘密データであり通信者間で共有される。鍵データは、ハードコーディングすることが可能である。また、ランダムに生成し、格納することが可能である。いくつかの実施例では、暗号鍵は、ハードコーディングされた鍵データと結合することができ、これは、暗号鍵の部分ごとに鍵データの部分に対する排他的論理和(XOR)演算を実行することで行われる。
【0098】
次いで、本方法は1110において、少なくとも1つの電気回路により、1つ以上の第1入力及び1つ以上の第2入力の各々に対してビットミキサ処理を実行する。いくつかの実施例では、ビットミキサ処理は、排他的論理和(XOR)ツリー、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーションを付加したXOR(RAX)構成を含む。いくつかの実施例では、XORツリーは、XORツリーの第1レイヤとして、複数の否定論理和(NAND)ゲート又は複数のマルチプレクサを含む。ビットミキサ処理は、以下の特徴を備えるように選択される。即ち、すべての入力ビットがすべての出力ビットに影響すること、1入力ビットに変更を加えると、平均して半数の出力ビットに変更が生じること、よって、入力ビットに変更を加えると、入力ビットに対する相関性や、入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、鍵を知らない観察者にとって、処理挙動が予測不可能になっていること、入力値及び出力値それぞれの固定長が任意に独立して選択可能であること、という特徴を備えるように選択される。
【0099】
ビットミキサ処理がXORツリーを含む実施例では、上記方法は、1つ以上の各第1入力に対して、1つ以上の各第2入力との否定論理積(NAND)演算を実行して、複数の第1入力のうちXOR論理演算の入力とするものを選択することをさらに含む。この場合、XORツリーは、複数の第1入力のうち入力として使われたものに対する出力を生成する。
【0100】
ビットミキサ処理が換字・転置ネットワークを含む実施例では、上記方法は、複数の第1入力のそれぞれに対して非線形の換字処理を実行することと、非線形の換字処理の各出力に対して転置処理を実行することと、転置処理の各出力に対して、第1入力の1つ又は第2入力の1つにとのビット単位のXOR演算を実行することと、を含む。
【0101】
ビットミキサ処理が、二重撹拌ファイステルネットワークを含む実施例では、1つ以上の各第1入力は、最初の左半分データと最初の右半分データとに分割される。上記方法は、さらに、複数のラウンドの各々において、更新後の左半分データと更新後の右半分データとを算出することをさらに含む。更新後の左半分データの算出することは、入力の左半分データに第1関数を施して第1結果を生成することと、この第1結果を入力の右半分データに撹拌することを含む。また、更新後の右半分データを算出することは、入力の左半分データに第2関数を施して第2結果を生成することと、この第2結果をラウンド鍵と撹拌することを含む。この際に、入力の左半分データと入力の右半分データは、複数のラウンドのうちの最初のラウンドでは、最初の左半分データ及び最初の右半分データであり、以降の各ランドでは、直前のラウンドにおける更新後の左半分データ及び更新後の右半分データである。
【0102】
上記方法は、1115において、少なくとも1つの電気回路によって、先のビットミキサ処理に基づいて、1つ以上のラウンド鍵を生成する。いくつかの実施例では、この生成は、先の実行の出力に対してスクランブル処理を行うことをさらに含む。いくつかの実施例では、上記方法は、1つ以上のラウンド鍵でデータブロックを作成することをさらに含む。いくつかの実施例では、上記方法は、所与の暗号方式用の1つ以上のラウンド鍵の実行及び生成を繰り返すことをさらに含む。
【0103】
いくつかの実施例では、複数のサブ鍵を用いて暗号文ブロックが生成される。暗号文は、既存の暗号方式Cを変形して、より高速でよりセキュリティの高い暗号方式Dに変形することで生成される。この実施例では、繰り返し暗号方式C(「ラウンド」で処理をおこなう)を選択する。繰り返し暗号方式Cは、限定するものではないが、例えば、DES、TDES、AESなどである。ビットミキサBは、Cのラウンド鍵と同じ出力長のものが選択される。ビットミキサBは、限定するものではないが、例えば、上述したようにXORツリー、SPネットワーク、DMFネットワークでである。ビットミキサBには、固定の鍵データMが選択される。Mは、ランダムでない単純なパターンでなければ任意に選択可能である。Mは、ランダムに生成し、Dを使用するすべての通信相手に配送することができる。Cは、ラウンド鍵生成部関数Fを有し、この関数の入力は、前回までのラウンド鍵(第1回目の入力は、暗号鍵)のうちのいくつかである。CをDに変換するFをBに置き換える。Bの入力長は、出力長よりも大でもよい(圧縮関数)。この場合、追加のビットは、ラウンドカウンタの値を入れてもよいし、あるいは、複数の前のラウンド鍵を入れてもよいし、暗号鍵を入れてもよい。
【0104】
暗号関数が数学的に安全な場合でも、物理的な実装によって、サイドチャネルからデータや鍵についての情報が漏洩する可能性がある。サイドチャネルには、応答時間の変化、電磁放射、消費電力の変動が含まれ、さらには、デバイスピンにおける電圧の変化も含まれる。上述の関数は、単純な論理ゲートの組み合わせだけを利用したハードウェアで実現できるので、サイドチャネル漏洩を最小にすることができる。さらに、この回路構成には、サイドチャネル漏洩の主な情報源の典型的であるフリップフロップや、ラッチ、その他の種類の記憶装置が含まれていないので、このような回路は、サイドチャネル分析されにくい。
【0105】
それでも漏洩する情報がある場合でも、手作業のレイアウト技術を用いてマスクすることができる。即ち、内部信号経路の対称性は既に高いが、このバランスをさらに高めることで、同じタイミングの多数のスイッチングがほぼ完全に同時に発生するように保証できる。ただし、このバランスステップは、必須ではない。本願発明者がSOI技術を利用した32nmのASICで行ったテストによれば、過渡遷移(switching transient)はピコ秒単位である。よって、そのような過渡遷移から暴露される記録/分析情報を利用してテンプレート攻撃を行うには、THz範囲のサンプリングレートのデータ取得システムが必要となるが、このレートは予測可能な未来に実現可能な最速レートよりも桁違いに速い。DPAワークステーションを利用したサイドチャネル分析では、入力ビット変化させたときの電力遷移と出力ビットとの間の相関関係など、利用されうる情報のサイドチャネル漏洩は観測されなかった。
【0106】
鍵データから導出した異なるサブ鍵はビットを共有することができるが、いくつか制限がある。1つは、XORツリービットミキサに関する制限であり、異なる入力ビット群によって選択される複数のサブ鍵において、各サブ鍵の同じ位置に同一の鍵データビットが含まれないようにする必要がある。そのようなビットは、XOR演算で結果的に相殺されるからである。これを念頭におくと、ビットを再利用する簡易な方法は、1つのサブ鍵に対してビットローテションを行っていくつかのサブ鍵を生成する方法である。この方法によれば、より複雑な鍵データのマッピング同様に、記憶しておく鍵のサイズを小さくしたり、あるいは、鍵配送に必要な帯域幅を最小化することができる。
【0107】
帯域幅が限られている場合に効率的な鍵配送を実現する別の方法は、鍵データがハードコーディングされた第2のビットミキサを使用することである。第2ビットミキサは、鍵長がより短い鍵から第1ビットミキサ用のサブ鍵を繰り返し生成することができる。暗号関数と暗号化ハッシュ関数も繰り返し利用して、使用に先立って、鍵データ記憶部に蓄積しておくことができる。
【0108】
上記に列挙したビットミキサは、ハードウェア実装に最適化されたものであるが、ソフトウェア実装で好適に機能する構成もある。1クロック周期での動作は実現できないものの、上記の実施例におけるビットミキサは、ソフトウェアにおいても、同等の入力長及び出力長の暗号やハッシュ関数に比べて桁違いに高速である。高いセキュリティは不要で、生成したデータが統計的に独立であることだけが必要な場合には、ソフトウェア実装のビットミキサを利用すれば演算時間を大幅に節約することができる。
【0109】
一例を挙げると、ソフトウェア実装に適したビットミキサの種類として、ローテーションを付加したXOR(RAX)構成に基づくものがある。以下に、Cついて64ビットの例を示す。ハードコーティングされた定数であるサブ鍵が、鍵記憶部のサブ鍵の代わりに用いられる。下記の例では、関数ROLは、左ローテーション(ROtate-Left)させる関数である。L及びRは、例えば、4及び9などの小さな定数であり、内部変数kは、0に初期化される。
【数7】
【0110】
この他にも、多くの用途に置いてビットミキサは有用である。ビットミキサの鍵だけでなく、その入力及び/又は出力も観察者から秘匿しておくことができれば、特別なセキュリティ要件は不要になる。あるいは、入力及び出力が可視である設計において高いセキュリティを確保するための暗号や他の暗号関数にくらべてセキュリティ要件が緩和される。ハードウェアのビットミキサは、非常に高速であり、相関性のある入力から十分に相関性を弱めた出力を生成することができ、サイドチャネル漏洩の可能性も低い。これらの特徴を有するビットミキサを暗号関数に用いれば、セキュリティが改善される。
【0111】
さらに、本開示は、以下の付近による実施形態も包含する。
【0112】
付記1:暗号処理のための1つ以上のラウンド鍵を生成する方法であって、1つ以上の第1入力(1105)及び1つ以上の第2入力(1105)を取得することと、少なくとも1つの電気回路によって、前記1つ以上の第1入力及び前記1つ以上の第2入力のそれぞれに対してビットミキサ処理(500、600、700、1000)を実行する(1110)ことと、少なくとも1つの電気回路によって、1つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成する(1115)ことと、を含む方法。
【0113】
付記2:前記1つ以上の第2入力(1105)は、ランダムに生成された固定データ、又は、1つ以上の前のラウンド鍵、又は、ラウンド数を含む、付記1に記載の方法。
【0114】
付記3:前記1つ以上の第1入力(1105)は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含む、付記1に記載の方法。
【0115】
付記4:前記1つ以上の第1入力をより短い鍵から生成することをさらに含み、これに際し、暗号化処理、ハードコーディングされた鍵データを利用するビットミキサ、カウンタ入力、又は、これらの組合せを適用する、付記3に記載の方法。
【0116】
付記5:前記暗号関数は、サイファ、ハッシュ関数又はストリームジェネレータを含む、付記4に記載の方法。
【0117】
付記6:前記鍵データは秘匿データであり、通信者間で共有されるか、又は、ハードコーディングされるか、又は、ランダムに生成される、付記2に記載の方法。
【0118】
付記7:前記暗号鍵の部分ごとに、ハードコーディングされた鍵データの部分との排他的論理和演算XORを実行することにより、前記暗号鍵を前記鍵データと結合する、付記2に記載の方法。
【0119】
付記8:前記ビットミキサを選択することをさらに含み、前記ビットミキサ処理が有する特性は、すべての入力ビットがすべての出力ビットに影響すること、前記入力ビットの1ビットを変更すると、平均して半数の出力ビットが変化すること、よって、前記入力ビットを変更すると、前記入力ビット又は前記入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、前記鍵を知らない観察者には処理の挙動が予測不可能になっていること、及び、前記入力ビット及び出力値の各固定長が任意に独立して選択可能であること、を含む、付記1記載の方法。
【0120】
付記9:前記ラウンド鍵の生成はXORツリー(1000)によって行われ、さらに、前記ビットミキサ処理の出力に対して、スクランブル処理を実行することを含む、付記1に記載の方法。
【0121】
付記10:前に生成された前記1つ以上のラウンド鍵でデータブロックを生成することをさらに含む、付記1に記載の方法。
【0122】
付記11:前記実行と前記1つ以上のラウンド鍵の前記生成を、所与の暗号化方式用に繰り返すことをさらに含む、付記1に記載の方法。
【0123】
付記12:前記ビットミキサ処理は、マージ対象のデータを選択するための複数の否定論理積NANDゲート若しくは複数のマルチプレクサを含む排他的論理和XORツリー(1000)、又は、換字・転置ネットワーク(700)、又は、二重撹拌ファイステルネットワーク(500、600)、又は、ローテーション付きXOR(RAX)構成を含む、付記1に記載の方法。
【0124】
付記13:前記XORツリー(1000)は、さらに、前記1つ以上の第1入力のうちの各第1入力に対し、前記1つ以上の第2入力のうちの各第2入力との否定論理積演算NANDを実行して、前記複数の第1入力のうち、論理演算XORに入力するものを選択することを含み、前記XORツリーは、前記複数の第1入力のうち入力として使用されたものに対する出力を生成する、付記12に記載の方法。
【0125】
付記14.前記XORツリーの前記出力に対してスクランブル処理を実行して、前記ビットミキサ関数を非線形にすることをさらに含む、付記13に記載の方法。
【0126】
付記15:前記換字・転置ネットワーク(700)は、さらに、前記複数の第1入力のそれぞれに対して、非線形の換字処理を実行することと、前記換字処理の各出力に対して転置処理を実行することと、前記転置処理の各出力に対し、前記第1入力のうち1つ又は前記第2入力のうちの1つとのXOR演算を実行することを含む、付記12に記載の方法。
【0127】
付記16:前記二重撹拌ファイステルネットワーク(500、600)において、前記1つ以上の第1入力は、それぞれ最初の左半分データと最初の右半分データとに分割され、前記方法は、さらに、複数のラウンドの各ラウンドにおいて、更新後の左半分データと更新後の右半分データとを算出することを含み、前記更新後の左半分データを算出することは、入力された左半分データに第1関数を適用して第1結果を生成し、前記第1結果を、入力された右半分データと撹拌することを含み、前記更新後の右半分データを算出することは、前記入力された左半分データに第2関数を適用して第2結果を生成し、前記第2結果をラウンド鍵と撹拌することを含み、前記入力された左半分データ及び入力された右半分データは、前記複数のラウンドのうちの最初のラウンドでは、前記最初の左半分データ及び前記最初の右半分データであり、以降の各ラウンドでは、直前のラウンドにおける更新後の左半分データと更新後の右半分データである、付記12に記載の方法。
【0128】
付記17:暗号処理のための1つ以上のラウンド鍵を生成するシステムであって、1つ以上の論理回路を含み、前記1つ以上の論理回路は、1つ以上の第1入力及び1つ以上の第2入力を取得し(1105)、少なくとも1つの電気回路によって、前記1つ以上の第1入力及び前記1つ以上の第2入力のそれぞれに対してビットミキサ処理(500、600、700、1000)を実行し(1110)、及び、少なくとも1つの電気回路により、1つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成する(1115)よう動作する論理回路である、システム。
【0129】
付記18:前記1つ以上の第1入力(1105)は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵、又は、暗号鍵を含むとともに、前記1つ以上の第2入力(1105)は、ランダムな入力、1つ以上の前のラウンド鍵、又は、ラウンド数を含む、付記17に記載のシステム。
【0130】
付記19:前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む、付記17に記載のシステム。
【0131】
付記20:前記ビットミキサ処理は、排他的論理和XORツリー(1000)、又は、換字・転置ネットワーク(700)、又は、二重撹拌ファイステルネットワーク(500、600)、又は、ローテーション付きXOR(RAX)構成を含む、付記17に記載のシステム。
【0132】
簡潔性及び例示の観点から、主に本開示の様々な例示的な実施態様に言及して本開示の原理について説明した。しかしながら、当業者には容易に理解されるように、同じ原理がすべての種類の情報及びシステムについて同様に適用可能であり、また実施可能である。また、そのような変形例は、いずれも本開示の思想及び範囲から逸脱するものではない。加えて、上述の詳細な説明において参照している添付図面は、特定の実施態様を例として示している。これら例示的な実施態様には、本願の思想及び範囲から逸脱することなく、電気的、機械的、論理的及び構造的な変更が可能である。したがって、上述の説明は、限定的な意味に解釈されるべきではなく、本開示の範囲は、添付の請求の範囲及びその均等範囲により定められるものである。
【0133】
本明細書で使用した用語及説明は、あくまでも説明のためのものであり、限定として解釈されるべきではない。例えば、方法は、開始から終了まで順に説明したが、これらの方法ステップは、説明とは異なる順で実行することも、あるいは、同時に実行することも可能である。さらに、詳細な説明又は請求の範囲において、「含み」、「含む」、「有し」、「有する」、「備える」等、種々の表現が用いられているが、これらは、他の要素が排除されず、包括的に具備されることを意図したものである。本明細書において、「~のうちの1つ以上」という表現が、例えば、アイテムA及びBからなるリストについて用いられる場合、これらの表現は、Aのみ、Bのみ、或いは、A及びBであることを意味する。これらの変形やその他の変形が可能なことは、当業者であれば認識できるであろう。
【0134】
本明細書及び本開示の実施に鑑みれば、本開示に即したその他の実施態様も当業者には明らかであろう。明細書及び実施例の記載は、あくまでも例示であり、本開示の真の範囲及び思想は、添付の請求の範囲に示される。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図8C
図9
図10
図11