(57)【要約】      （修正有）【課題】ブロック暗号の無相関性が高いラウンド鍵を高速で生成するシステム及び方法を提供する。【解決手段】第１入力及び第２入力を取得し、第１入力及び第２入力のそれぞれに対してビットミキサ処理を実行し、そのビットミキサ処理に基づいてラウンド鍵を生成するよう動作する論理回路を使用する。第１入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含む。第２入力は、ランダムな入力、１つ以上の前のラウンド鍵、又は、ラウンド数を含む。暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む。ビットミキサ処理は、排他的論理和ＸＯＲツリー、又は、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーション付きＸＯＲ（ＲＡＸ）構成を含む。【選択図】図１１
2018109750.tif 000002
【特許請求の範囲】
【請求項１】
暗号処理のための１つ以上のラウンド鍵を生成する方法であって、
１つ以上の第１入力及び１つ以上の第２入力を取得することと、
少なくとも１つの電気回路によって、前記１つ以上の第１入力及び前記１つ以上の第２入力のそれぞれに対してビットミキサ処理を実行することと、
少なくとも１つの電気回路によって、１つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成することと、を含む方法。
【請求項２】
前記１つ以上の第２入力は、ランダムに生成された固定データ、又は、１つ以上の前のラウンド鍵、又は、ラウンド数を含む、請求項１に記載の方法。
【請求項３】
前記１つ以上の第１入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含む、請求項１又は２に記載の方法。
【請求項４】
前記ラウンド鍵の生成はＸＯＲツリーによって行われ、さらに、前記ビットミキサ処理の出力に対して、スクランブル処理を実行することを含む、請求項１〜３のいずれか１つに記載の方法。
【請求項５】
前に生成された前記１つ以上のラウンド鍵でデータブロックを生成することをさらに含む、請求項１〜４のいずれか１つに記載の方法。
【請求項６】
前記ビットミキサ処理と前記１つ以上のラウンド鍵の前記ラウンド鍵の生成を、暗号化のために繰り返すことをさらに含む、請求項１〜５のいずれか１つに記載の方法。
【請求項７】
前記ビットミキサ処理は、マージ対象のデータを選択するための複数の否定論理積ＮＡＮＤゲート又は複数のマルチプレクサを含む排他的論理和ＸＯＲツリー、又は、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーション付きＸＯＲ（ＲＡＸ）構成を含む、請求項１〜６のいずれか１つに記載の方法。
【請求項８】
暗号処理のための１つ以上のラウンド鍵を生成するシステムであって、１つ以上の論理回路を含み、前記１つ以上の論理回路は、
１つ以上の第１入力及び１つ以上の第２入力を取得し、
少なくとも１つの電気回路によって、前記１つ以上の第１入力及び前記１つ以上の第２入力のそれぞれに対してビットミキサ処理を実行し、及び、
少なくとも１つの電気回路により、１つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成するよう動作する論理回路である、システム。
【請求項９】
前記１つ以上の第１入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵、又は、暗号鍵を含むとともに、前記１つ以上の第２入力は、ランダムな入力、又は、１つ以上の前のラウンド鍵、又は、ラウンド数を含む、請求項８に記載のシステム。
【請求項１０】
前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む、請求項８〜９のいずれか１つに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、コンピュータシステムにおけるデータ保護に関し、特に、送信メッセージのセキュリティ保護、アーカイブデータのセキュリティ保護、及び、コンピュータシステムのメモリに格納されており、システム内の１つ又はバスを介して転送されることが多いデータの保護の３つの情報保証の分野のいずれかに関する。
【背景技術】
【０００２】
財務データ、軍事データ、医療データの他、高レベルの保護を必要とするデータを安全に通信し、また、保護するため、コンピュータやマイクロプロセッサを含むシステムでは、現在、様々なセキュリティ対策が実施されている。これらの対策は、一般的に、攻撃者による不正なデータアクセスを排除することを目的とする。対象となるデータには、通信チャネル上の送信データ、ディスクドライブや光学的媒体などの不揮発性記憶媒体に格納されたデータ、あるいは、例えば、同じ回路基板上にある、及び／又は、バスで接続されているマイクロプロセッサからアクセスされるメモリに格納されたデータが含まれる。
【０００３】
代表的な利用分野としては、セキュアなコンピューティングシステムのメモリに格納されたデータの保護があるが、その他にも同様に一般的で重要な利用分野がある。プロセッサに対する典型的な攻撃は、能動的攻撃と受動的攻撃とに分類することができる。受動的攻撃では、攻撃者はメモリの内容を読み取って、パスワードや著作物などの秘密情報の取得を試みる。プロセッサとメモリ（あるいは、その他の周辺機器）間のデータトラフィックを監視して秘密情報の取得を試みる受動的攻撃もある。
【０００４】
能動的攻撃は、メモリの内容やメモリとプロセッサ間のデータトラフィックの改ざんを試みるものである。異なる位置にあるメモリブロックの内容を相互にコピー及びペーストしたり、同じ位置又は別の位置のメモリブロックの古い情報を再生したりする能動的攻撃もある。このような攻撃により、例えば、無限ループが形成されるなどして、セキュアなマイクロプロセッサで動作するプログラムが影響を受けたり、保護されたメモリのデータが使用されるなどの被害が発生しうる。既知データ認識攻撃（known data recognition attack）では、攻撃者は、同一アドレスへの既知データの書き込みを監視して暗号鍵の暴露を試みる。
【０００５】
格納、処理、送信に際しての機密データの秘匿性（secrecy）と完全性（integrity）は、暗号技術により保証することができる。最も重要な暗号手法はブロック暗号である。ブロック暗号は、所定の暗号化アルゴリズムに対する挙動（behavior）を決定する秘密鍵を利用する。最もよく使用される暗号方式では、ラウンドと呼ばれる変換ステップが何度も繰り返し実行される。これらの変換ステップは、暗号鍵から導出される秘密ラウンド鍵に影響される。暗号のセキュリティと速度とは、これらラウンド鍵の生成の仕方に依存する。現在利用されている暗号方式の多くは、速度が遅く、多大な電力とエネルギーを必要とするが、その要因の一つは、無相関性の高いラウンド鍵の生成が複雑であることにある。また、鍵生成の際には、悪用されうる情報がサイドチャネルに漏洩する。現在使用されている他の暗号方式ではラウンド鍵ジェネレータが利用されているが、これにより生成される鍵は、低品質の（相関性が高い不利な）鍵である。
【０００６】
ブロック暗号のラウンド鍵は、同一の暗号鍵から導出された鍵であっても、無相関性が高いことが求められる。ラウンド鍵を生成するアルゴリズムは、鍵スケジュールとも呼ばれる。多くの暗号方式は、ＬＦＳＲ（線形帰還シフトレジスタ）のような単純なキースケジュールを利用する。これらは、算出が容易で、高速ではであるが、相関性の高いラウンド鍵が生成される。例えば、ＬＦＳＲの場合、全体の半分の場合において、ラウンド鍵は、前回のラウンド鍵を１ビットだけローテーションさせたものであり、残りの半分の場合でも、ビットローテションにより得た前回のラウンド鍵の一握りのビットが変更されるだけである。
【０００７】
鍵スケジュールが無相関性のラウンド鍵を生成するために十分に複雑でない場合、その暗号方式では、ラウンドの回数を多くしてセキュリティを高める必要がある。一般的に使用されている暗号方式の鍵スケジュールは、ローテーション、ＸＯＲ及びビットの並べ替え（bit rearrangement）などの単純なステップの繰り返しで構成されている。このような場合、適切な兼ね合いが難しい。つまり、ステップの数が少ないと、生成されるラウンド鍵の相関性が高くなるので、その暗号方式には多くの回数のラウンドが必要になる。しかしながら、鍵スケジュールステップの数が多いと、各ラウンドにかかる時間が長くなる。いずれにせよ、この暗号方式は、相当の時間を必要とする。
【０００８】
現在利用されている鍵スケジュールアルゴリズムでは、ラウンド鍵は、前のラウンド鍵から生成する。よって、復号開始に用いる最後のラウンド鍵を生成するには、すべてのラウンド鍵を生成しなければならない。単一の暗号処理（single cipher operation）を複数の汎用のマイクロプロセッサで実行するのであれば、どの順序でラウンド鍵を生成しても全体の処理数は同じになる。よって、ソフトウェア実装においては、この鍵スケジュールの繰り返しによって暗号の速度が低下することはない。これに対し、電子的なハードウェアで実装されたシステムにおいては、ラウンド鍵を順に生成すると、復号に際し初期遅延が生じる。多数の復号処理に同一の鍵が使用される場合は例外であり、ラウンド鍵をキャッシュに保存しておくことができる。ただし、大きなキャッシュメモリは物理的な攻撃のターゲットになるので、同一の鍵を繰り返し使用すると、セキュリティシステムがサイドチャネル攻撃に晒されることになる。鍵ローリング（key-rolling）によれば、ほとんどの用途でセキュリティを強化できるが、ラウンド鍵をキャッシュすることができないので、復号の速度が遅くなる。（鍵ローリングとは、暗号鍵を一度あるいは数回使用する毎に差し替えることを意味する。）
【０００９】
したがって、関連する産業において、上述の欠点及び不足についての解決が望まれている。
【発明の概要】
【００１０】
本開示の実施例によれば、暗号処理のための１つ以上のラウンド鍵を生成する方法が提供される。本方法は、１つ以上の第１入力及び１つ以上の第２入力を取得することと、少なくとも１つの電気回路によって、前記１つ以上の第１入力及び前記１つ以上の第２入力のそれぞれに対してビットミキサ処理を実行することと、少なくとも１つの電気回路によって、１つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成することと、を含む。
【００１１】
いくつかの実施例において、前記１つ以上の第１入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含む。前記１つ以上の第２入力は、ランダムに生成された固定入力、１つ以上の前のラウンド鍵、又は、ラウンド数を含む。いくつかの実施例において、本方法は、前記１つ以上の第１入力をより短い鍵から生成することをさらに含み、これに際し、暗号化処理、ハードコーディングされた鍵データを利用するビットミキサ、カウンタ入力、又は、これらの組合せを適用する。前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む。いくつかの実施例において、前記鍵データは秘匿データであり、通信者間で共有される。いくつかの実施例において、前記鍵データは、ハードコーディングされる。いくつかの実施例において、前記鍵データは、ランダムに生成される。
【００１２】
いくつかの実施例において、前記暗号鍵の部分ごとに、ハードコーディングされたデータの部分との排他的論理和演算ＸＯＲを実行することにより、前記暗号鍵を前記鍵データと結合する。いくつかの実施例において、前記ビットミキサ処理は、排他的論理和ＸＯＲツリー、又は、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーション付きＸＯＲ（ＲＡＸ）構成を含む。いくつかの実施例において、前記ＸＯＲツリーは、複数の否定論理積（ＮＡＮＤ）ゲート又は複数のマルチプレクサを含む。本明細書において、ＮＡＮＤは、論理演算ＮＯＴ ＡＮＤ又はＮｅｇａｔｉｖｅ ＡＮＤを意味する。いくつかの実施例において、前記ラウンド鍵の生成は、前記ビットミキサ処理の出力に対して、スクランブル処理を実行することを含む。いくつかの実施例において、本方法は、前に生成された前記１つ以上のラウンド鍵でデータブロックを生成することをさらに含む。いくつかの実施例において、本方法は、前記ビットミキサ処理と前記１つ以上のラウンド鍵の生成を、所与の暗号化方式用に繰り返すことをさらに含む。いくつかの実施例において、本方法は、前記ビットミキサを選択することをさらに含む。前記ビットミキサ処理が有する特性は、すべての入力ビットがすべての出力ビットに影響すること、前記入力ビットの１ビットを変更すると、平均して半数の出力ビットが変化すること、よって、前記入力ビットを変更すると、前記入力ビット又は前記入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、前記鍵を知らない観察者には処理の挙動が予測不可能になっていること、及び、前記入力ビット及び出力値の各固定長が任意に独立して選択可能であること、を含む。いくつかの実施例において、前記ＸＯＲツリーは、さらに、前記１つ以上の第１入力のうちの各第１入力に対し、前記１つ以上の第２入力のうちの各第２入力との否定論理積演算ＮＡＮＤを実行して、前記複数の第１入力のうち、論理演算ＸＯＲに入力するものを選択することを含む。前記ＸＯＲツリーは、前記複数の第１入力のうち入力として使用されたものに対する出力を生成する。
【００１３】
いくつかの実施例において、本方法は、前記ＸＯＲツリーの前記出力に対してスクランブル処理を実行して、前記ビットミキサ関数を非線形にすることをさらに含む。
【００１４】
いくつかの実施例において、前記換字・転置ネットワークは、さらに、前記複数の第１入力のそれぞれに対して、非線形の換字処理を実行することと、前記換字処理の各出力に対して転置処理を実行することと、前記転置処理の各出力に対し、前記第１入力のうち１つ又は前記第２入力のうちの１つとのＸＯＲ演算を実行することを含む。
【００１５】
いくつかの実施例では、前記二重撹拌ファイステルネットワークにおいて、前記１つ以上の第１入力は、それぞれ最初の左半分データと最初の右半分データとに分割される。前記方法は、さらに、複数のラウンドの各ラウンドにおいて、更新後の左半分データと更新後の右半分データとを算出することを含む。前記更新後の左半分データを算出することは、入力された左半分データに第１関数を適用して第１結果を生成し、前記第１結果を、入力された右半分データに撹拌することを含む。前記更新後の右半分データを算出することは、前記入力された左半分データに第２関数を適用して第２結果を生成し、前記第２結果をラウンド鍵に撹拌することを含む。前記入力された左半分データ及び入力された右半分データは、前記複数のラウンドのうちの最初のラウンドでは、前記最初の左半分データ及び前記最初の右半分データであり、以降の各ラウンドでは、直前のラウンドにおける更新後の左半分データと更新後の右半分データである。
【００１６】
本開示のいくつかの実施例において、暗号処理のための１つ以上のラウンド鍵を生成するシステムが提供される。本システムは、１つ以上の論理回路を含み、前記１つ以上の論理回路は、１つ以上の第１入力及び１つ以上の第２入力を取得し、少なくとも１つの電気回路によって、前記１つ以上の第１入力及び前記１つ以上の第２入力のそれぞれに対してビットミキサ処理を実行し、及び、少なくとも１つの電気回路により、１つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成するよう動作する。いくつかの実施例において、前記１つ以上の第１入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含むとともに、前記１つ以上の第２入力は、ランダムな入力、又は、１つ以上の前のラウンド鍵、又は、ラウンド数を含む。いくつかの実施例において、前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む。いくつかの実施例において、前記ビットミキサ処理は、排他的論理和（ＸＯＲ）ツリー、又は、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーション付きＸＯＲ（ＲＡＸ）構成を含む。
【００１７】
上述した概要及び後述する詳細な説明は、あくまでも例示及び説明のためであって、請求した開示内容を限定するものではない。
【図面の簡単な説明】
【００１８】
本明細書に組み込まれ、その一部を構成する添付図面は、明細書の記載とあわせて本開示を説明するものであり、本開示の原理を説明することを目的とする。
【００１９】
【図１】本開示の例示的な実施態様によるシステムを示す図である。
【図２】いくつかの実施例において、図１のシステムに対応するシステムを示す図である。
【図３】例示的な実施態様によるセキュアなメモリ転送部を示す図である。
【図４】例示的な実施態様による、メモリ位置に格納された情報のデータ構造を示す図である。
【図５】様々な例示的な実施態様による二重撹拌ファイステルネットワーク（ＤＭＦＮ）の「ハーフ鍵」変形の１ラウンドを示す図である。
【図６】様々な例示的な実施態様による別のＤＭＦＮの「全鍵」変形の１ラウンドを示す図である。
【図７】様々な例示的な実施態様による換字・転置ネットワークの１ラウンドを示す図である。
【図８Ａ−８Ｃ】図７で使用可能な各Ｓボックスの３つのコンポーネントを示す図である。
【図９】図７で使用可能な別のＳボックスのコンポーネントを示す図である。
【図１０】様々例示的な実施態様における排他的論理和（ＸＯＲ）演算の二分ツリーと「サブ鍵」選択レイヤとを併せて示す図である。
【図１１】例示的な実施態様における方法の様々な処理を示すフローチャートである。
【発明を実施するための形態】
【００２０】
本開示の例示的な実施態様について、添付図面に示す実施例を参照して、以下に詳細に説明する。可能な場合には、図面全体において、同一又は類似の部材については、同一の参照符号を使用している。以下の説明で参照する添付図面は、説明の一部を構成するものであり、本開示を実施する具体的な実施態様を例として示している。これらの実施態様は、当業者が本開示を実施できるように十分に詳細に記載されているが、本開示の範囲から逸脱することなく、他の実施態様や変形が可能であることは理解されよう。以下の記載はあくまでも例示である。
【００２１】
多くの情報セキュリティの分野では、固定長の入力及び出力を有し、入力値を充分に撹拌できる高性能な関数が望ましい。このような関数はビットミキサ（bit-mixer）と呼ばれ、入力値に対する統計的な相関性のない出力値を生成する。例えば、入力に対して単純な変更を加えると、平均して半数の出力ビットが変化する。さらに、ビットミキサは、鍵を用いることで、その挙動を変化させている。鍵が秘密であれば、ビットミキサの挙動は、観察者には予測不可能である。
【００２２】
内蔵型の態様では、性能と消費電力とが懸念事項であるが、超大規模集積（ＶＬＳＩ）技術の進歩により、回路規模と引き換えにセキュリティを高めるような設計がいくらか可能になっている。他の態様も可能ではあるが、以下では、入力インターフェースと出力インターフェースの一方又は両方が内部に組み込まれており、観察者からは見えない態様について記載する。このような場合、一般化されている強なだれ規準（strict avalanche criterion）以上の暗号要件は、不要であるか、必要であってもごくわずかである。具体的には、主な攻撃対象領域（attack surface）として残されるのは、回路のサイドチャネル漏洩（side channel emanation）を通じて暴露されるデータ依存型の情報であり、これには、応答時間の変化、電磁放射及び消費電力の変動が含まれる。
【００２３】
ブロック暗号では、ラウンドと呼ばれる変換ステップを、秘密鍵を用いて繰り返し実行する。これにより、平文と呼ばれるデータブロックを暗号化して暗号データブロックを生成する。暗号鍵から導出されるラウンド鍵が、変換処理に影響を与える。暗号のセキュリティと速度とは、これらラウンド鍵の生成の仕方に依存する。
【００２４】
後述のように、ビットミキサを使って無相関性のラウンド鍵を生成する方法及びシステムが提案されている。ビットミキサは、複雑な非線形関数（nonlinear complex function）であり、大きな鍵データ（key material）による影響を受ける。電子機器で実装すれば、ラウンド鍵生成部は、現在使用されているアルゴリズムよりも高速で、悪用されうるサイドチャネル漏洩が皆無又はわずかであり、セキュリティが改善される。この結果、より高速で、より安全で、より消費電力の少ない新たな暗号方式が提供される。
【００２５】
本開示の方法は、非線形性の高い非常に複雑なアルゴリズムであるビットミキサを用いることで、ブロック暗号用に生成されるラウンド鍵の質を改善する。ビットミキサは、電子ハードウェアによる実装に最適である。ビットミキサにより、暗号の生成速度、電力消費、セキュリティが向上する。ビットミキサは、内蔵型システム（例えば、航空機のボードコンピュータ）に低コストで利用可能である。ビットミキサは、回路サイズを大きく増大させることなく、全体の電力消費を低減させる。これを配置したシステムは、より低速な電子部品を利用可能であり、コンピューティングシステムのコスト、エネルギー消費及び電力消費をさらに低減することが可能である。加えて、処理速度とセキュリティも向上する。対象となるシステムには、航空機内コンピュータのサブシステム、軍事及び宇宙用プログラム、企業ネットワーク、パソコンやラップトップコンピュータ、携帯型スマート端末に加えて、セキュア通信ネットワークも含まれる。高性能コンピュータ、セキュアなマイクロプロセッサ、セキュリティ電子機器又はセキュリティソフトウェアのメーカーは、常に自社製品の品質、速度、セキュリティ、電力消費の向上を目指している。本開示の方法及びシステムによれば、コンピューティングシステムの電力消費、性能、セキュリティを改善でき、対象となるコンピューティングシステムには、航空機内コンピュータ、軍事及び宇宙用プログラム、企業ネットワーク、パーソナルコンピュータ及びラップトップコンピュータ、携帯用スマート端末に加えて、セキュア通信ネットワークがある。
【００２６】
本開示の実施例によれば、ラウンド鍵（鍵スケジュール）は、（これらの鍵によって変化する）セキュアな繰り返し暗号の「内側」にある内部関数であり、改ざんのない暗号のためメイン鍵から生成される。ビットミキサへの入力は、一部（元の鍵又は、前回のラウンド鍵）は秘匿されるが、例えば、現在のラウンド数など、公開される情報も入力に含まれる。ビットミキサは、追加の鍵データを利用するが、このデータは秘匿されていてもよいし、従来の鍵生成と同様に公開されていてもよい。公開鍵データは、ハードコーディングすることもできるし、従来の鍵生成と同様に固定データとすることもできる。本開示の方法及びシステムを用いれば、ラウンド鍵の生成に用いるビットミキサに基づくアルゴリズムを、任意の繰り返し暗号の内部で使用することができる。これにより（並列の電子ハードウェアにおける）処理速度の向上と、電力要件及びエネルギー要件の低減と、適度な回路規模と、ラウンド鍵から相互の統計的相関性を排除することによるセキュリティの向上と、電子ハードウェア実装におけるサイドチャネル漏洩を低減することによるセキュリティの向上と、が得られる。ビットミキサにより使用される鍵データは、「サブ鍵」と呼ばれる等サイズの部分に分割される。ビットミキサは、相関性を高度に排除した任意のデータ長のラウンド鍵を生成するので、鍵生成アルゴリズムの拡大縮小が可能であり、任意のブロック長の暗号に適用することができる。
【００２７】
ラウンド鍵生成に用いられるビットミキサへの入力は、その暗号の秘密鍵を含み、加えて、ラウンドカウンタと前のラウンド鍵とのうちの少なくとも１つを含みうる。ラウンド回数が１２８回を超えるような暗号は、現実的には存在しないので、このラウンドカウンタのデータ長は短い（４…７ビット）。カウンタのビットをシャッフル及び反復することによって、カウンタを鍵長と同じ長さに拡張することができ、いくつかのビットは、反転させてもよい。一実施例では、鍵スケジュールアルゴリズムは、拡張したカウンタをビットミキサへの入力として使用することができ、暗号鍵を、ビットミキサの鍵データ（の一部）とすることができる。最も単純なケースでは、暗号鍵をビットミキサの最初のサブ鍵とする。残りのサブ鍵は、（ａ）同じままでもよいし、あるいは、（ｂ）単純なアルゴリズムを使って暗号鍵から導出してもよい。別の実施例では、その暗号の秘密鍵をビットミキサへの入力とし、拡張したカウンタを、ビットミキサの最初のサブ鍵とする。残りのサブ鍵は、（ａ）同じままでもよいし、あるいは、（ｂ）単純なアルゴリズムを使って暗号鍵から導出してもよい。さらに別の実施例では、鍵スケジュールアルゴリズムは、拡張したカウンタと暗号鍵とに対してビット単位のＸＯＲを行い、その結果をビットミキサへの入力とすることもできる。上述した実施例について、他の変形や組み合わせも可能であり、これらによっても、セキュリティ及び速度について同様の効果が得られる。拡張したカウンタと暗号鍵のＸＯＲを取る場合（上述の第３の実施例）、拡張プロセスにおいては、どのカウンタビットも反転する必要はない。暗号鍵の各１ビットに対してＸＯＲ演算を行うと、結果として、対応するカウンタビットが反転されるからである。
【００２８】
ビットミキサは、大きなサイズの鍵データを使用する。デジタルメモリやレジスタに格納すれば、この鍵データを使って暗号をパーソナライズすることができる（この鍵データに依存して、異なる暗号を定義できる）。代替の実施例では、ビットミキサのサブ鍵は、ハードコーディングしておくことができる。これにより、鍵スケジュールが高速化される。ただし、実行される暗号も固定されるので、パーソナライズすることはできなくなる。実際には、これが最も一般的なケースである。つまり、未知の相手先に対して暗号化データの送信あるいは受信が行われた場合に、その暗号をパーソナライズすることはできない。
【００２９】
開示した鍵スケジュールの仕組みは、いずれもそのまま既存のブロック暗号の鍵スケジュールと置き換え可能である。置き換えにより、ハードウェア実装において元の暗号よりも高速でセキュリティの高い複数の新たな暗号を定義することができる。本開示の鍵スケジュールを利用して改善可能な暗号としては、限定するものではないが、トゥーフィッシュ（Twofish）、サーペント（Serpent）、ＡＥＳ（ラインダール：Rijndael）、ブローフィッシュ（Blowfish）、ＣＡＳＴ５、ＲＣ４、３ＤＥＳ、スキップジャック（Skipjack）、Ｓａｆｅｒ＋／＋＋、ＩＤＥＡ、ＳＩＭＯＮ、ＳＰＥＣＫ、Ｐｒｅｓｅｎｔ、ＰＲＩＮＴなどがある。
【００３０】
ビットミキシングは、一般的には、ラウンドの回数を少なくした暗号方式において、ＸＯＲ関数あるいはｋ入力１出力（k-to-1）のＳボックスを（拡張や圧縮に必要なだけ）利用して入力のパディング又は出力のフォールディングを行うことで、任意のサイズのブロックに対して実行されると考えられている。他の構成も当然ながら可能ではあるが、本開示の実施例におけるビットミキサは、以下の特性を有する。即ち、すべての入力ビットがすべての出力ビットに影響すること；入力に単純な変更を加えると、平均して半数の出力ビットが影響されること；入力ビットに単純な変更を加えると、入力や入力の変更パターンに対する明らかな相関のない出力値、即ち、標準的な統計テストでランダムであると認められる出力シーケンス、が生成されることこと；鍵を利用しているので、観察者は、鍵を入手しなければビットミキサの挙動を予測できないこと；入力値及び出力値の各固定長を任意に独立して選択可能であること；などの特性である。「単純な変更」なる用語は、同時に変更するビット数が全体の半数未満である変更か、１２未満の命令を用いるソフトウェアに基づく変更をいう。なお、上述した２番目の特徴は、強なだれ規準を一般化した内容である。繰り返しビットミキサのラウンド回数としては、１つの入力ビットを変更した後に、強なだれ規準を満たす、即ち、ランダムと区別できない出力値を生成するのに必要な回数を決定することができる。
【００３１】
図１を参照すると、本開示の例示的な実施態様によるシステム１００が図示されている。このシステムは、複数のコンポーネント、複数の処理部など（まとめて「コンポーネント」とする）のそれぞれを１つ又は複数含み、その内の少なくともいくつかは、マルチプレクサなどの論理回路、レジスタ、論理演算部、メモリ、マイクロプロセッサなどで構成される。このシステムは、複数の異なる用途のうちの任意のものに対応して設計されており、攻撃に対する脆弱性を有するメモリを含むか、そのようなメモリに接続されるシステムにおいて特に有用である。そのようなシステムの例としては、例えば、航空機内コンピュータ、軍事及び宇宙用プログラム、企業ネットワーク、パーソナルコンピュータ及びラップトップコンピュータ、携帯型スマート端末が含まれる。図示のとおり、このシステムは、例えば、本明細書では要求部（requestor）１０２と呼ぶ１つ以上のコンポーネントを含み、このコンポーネントは、１つ以上のメモリ１０４に対する読み出し及び／又は書き込み処理（read and/or write transactions）を開始又は要求する（例えば、そのように構成される）。いくつかの実施例では、これらの処理は、１つ以上のバスを介して実行される。
【００３２】
例示的な実施態様によれば、システム１００は、本明細書ではセキュアメモリ処理部（ＳＭＴＵ）１０６と呼ぶ１つ以上のコンポーネントをさらに含み、このコンポーネントは、要求部１０２とメモリ１０４との間のデータ転送を暗号化及び復号するよう動作可能であり、メモリに対する読み込み又は書き込み処理のすべて又は一部に使用される。後述するように、すべてではないが、いくつかの実施例において、ＳＭＴＵは、メモリ内容を認証するよう動作可能である。様々な実施例において、ＳＭＴＵの設計は、メモリ非依存型（memory agnostic）でもよく、メモリの種類や位置（内部又は外部）がＳＭＴＵには「不明」であっても構わない。
【００３３】
いくつかの実施例では、ＳＭＴＵ１０６は、メモリ１０４の全メモリ位置に異なる暗号化を実行する可能性が高い。ＳＭＴＵは、メモリ内容の暗号化及び／又は認証に、並列化が可能な暗号方式（parallelizable cipher construction）を利用することができる。いくつかの実施例では、ＳＭＴＵは並列化が可能な暗号方式を暗号化及び認証のいずれか一方に用い、他方については、複数あるその他の暗号方式のいずれを用いてもよく、例えば、高度暗号化標準（ＡＥＳ）暗号における標準的な利用モード（operation mode）の組み合わせを、本明細書に記載のビットミキサによるラウンド鍵生成を用いて変形したものなどを使用することができる。平文データ（単に平文又はデータと記載する場合もある）は、一定サイズ（例えば１６バイト）ごとに、メモリ位置の集合であるウィンドウに少なくとも含まれる各メモリ位置に格納されるが、格納する各データを、個別の暗号で暗号化し、データバージョン値及びデータ認証タグでタグ付けすることができる。タグは、暗号化されたデータ（暗号文と記載する場合もある）とともにそのメモリ位置に格納することができる。
【００３４】
いくつかの実施例では、データバージョン値は、例えば、現在の演算セッションにおいて行われた暗号化書き込み処理の回数を示すグローバル書き込みカウンタ（ＧＷＣ：global write counter）（例えば４８ビットの値）から導出することができる。別の実施例では、データバージョン値は、複数の演算セッションにおける書き込み処理の回数やタイムスタンプなどから導出することができる。あるいは、さらに別の実施例では、データバージョン値は、クロックから導出することができる。
【００３５】
いくつかの実施例では、ＧＷＣは、セキュアな処理の各セッションの開始時にリセットされる。ＧＷＣ値は、平文の状態又はユーザデータで暗号化した状態で格納しておき、秘密のマスク値で変換した後に、鍵生成の一部に利用したり、その他の方法で、暗号化又はデータ認証を多様化させたりできる。ＧＷＣ値は、各書き込み処理を行う前にインクリメントすることができ、この際のインクリメント値は、ＧＷＣと同様のサイズ（例えば、４８ビットの値）にすることができる。このインクリメント値は、２進数表記において１の値あるいは０の値が多く連続しない大きな奇数であってもよい。適切なインクリメント値の例には、円周率（ｐｉ）、自然対数の底（ｅ）、２の平方根、３の平方根、黄金比などのビット列の部分がある。このような値を用いることで、連続するＧＷＣ値が、全ビットのうち平均して半数が互いに異なる値になることが保証される。ＧＷＣインクリメント値を奇数にすることで、典型的用途においても、１０年を超えて連続使用しても、ＧＷＣが同じ数値に帰還（wrap around）しないことを保証することができる。
【００３６】
メモリ位置におけるデータ認証タグは、そのメモリ位置に格納された暗号文に依存しており、また暗号理論的に安全な状態にあり、攻撃者が、正しいデータ認証タグを生成することも、データ認証タグから暗号文についての情報を推測することもできない。いくつかの実施例では、データ認証タグは、メッセージ認証コードとして機能しうる。メッセージ認証コードとは、暗号文の認証、及び、データの改ざんや偽造の検出に利用できる短い情報である。このタグにより、暗号文の改ざんを検出することができるので、暗号文の完全性及び真正性の両方を保護することができる。いくつかの実施例では、鍵によって特定される変換を暗号文に施すアルゴリズムであるブロック暗号を利用して、タグを生成することができる。
【００３７】
メモリ位置の暗号文及びデータ認証タグは、少なくともデータバージョン値とそのメモリ位置のアドレスとに基づく鍵を使って生成することができる。データバージョン値は、任意のメモリ位置への書き込み処理の度に更新することができるので、暗号文の生成に利用される鍵は、メモリ位置毎に異なるだけでなく、書き込み処理毎に異なることになる。データ認証タグは、暗号文ブロックの生成に用いた鍵とは異なる第２の鍵を使って生成することができる。第２の鍵も、最初の鍵と同様に、書き込み処理毎に異なり、また、メモリ位置毎に異なる。いくつかの実施例では、秘密の乱数や、例えば、セキュリティモード値（security mode value）などの他の値を利用して、暗号化及び認証をさらに多様化させることができる。本明細書では、「ランダム」なる用語を広義に用いており、ランダムと擬似ランダム（例えば、真にランダムな乱数種に決定的アルゴリズムを実行して繰り返し生成した数）のどちらも意味しうる。
【００３８】
要求部１０２が要求したデータをメモリから読み出す処理においては、ＳＭＴＵは、前に暗号化されたデータ（暗号文）をメモリから読み出す。ＳＭＴＵは、暗号化データを復号し、改ざんの痕跡がないか確認する。データが正当であると判定すれば、ＳＭＴＵは、復号したデータ（平文）を要求部に返す。書き込み処理においては、ＳＭＴＵは読み出しアクセスの場合と同様に、対象位置のデータを読み出し、読み出したデータの復号及び認証を行う。これが完了すれば、ＳＭＴＵは、書き込み対象のデータを、メモリ位置から読み出したデータとマージし、暗号化し、その後、メモリに書き戻す。本明細書において、マージとは、読み出したデータブロックのうち、変更があった部分を置換することである。暗号文ブロック全体を書き込むことが求められる場合には、別のアプローチを用いることもできる。この場合、マージ処理の代わりに置換処理が行われるので、最初の読み出し処理を省略することができる。これにより、セキュリティと引き換えではあるが、速度を高めることができる。
【００３９】
様々な実施例において、システム１００の処理部の間や内部で転送される読み出しデータのセキュリティを保証する方法は、メモリ１０４をアドレス指定可能な一連の位置に分割する（つまり、メモリは、アドレス指定可能なメモリということになる）ことを含む。各位置は、アドレスを有し、暗号化データと、データバージョン値（バージョン情報、又は、単にバージョン値と記載する場合もある）と、データ認証タグと、を格納する。本明細書に記載するように、アドレス指定可能なメモリ位置は、その時々で異なる呼び方を用いる場合があるが、いずれも同様に、アドレス、位置、又は、アドレス指定可能な位置のことを指す。各アドレスについて、固有の暗号鍵を暗号化データに用いることができ、これとは異なる固有の認証鍵をデータ認証タグに用いることができる。これらの鍵は、攻撃者に予測不可能であり、使用前、使用中、使用後を通じて秘匿状態に保たれる。
【００４０】
各読み出し処理において、該当するアドレスのメモリ位置からデータバージョン値、データ認証タグ及び暗号文ブロックが読み出される。暗号文及びデータ認証タグの生成に用いられた各鍵は、データバージョン値とアドレスを用いて再生される。暗号文は、対応する鍵を用いて復号されて平文が生成される。また、第２の鍵をデータ認証タグに用いて、暗号文を認証タグと比較して、その完全性及び真正性を確認することができる。
【００４１】
各書き込み処理において、メモリ１０４内のメモリ位置に新たな平文データが書き込まれる。いくつかの実施例では、各書き込み処理に先立って、その位置のデータをＳＭＴＵ１０６により読み出し、データの有効性を検証してもよい。メモリ位置へのデータの書き込み処理には、ＳＭＴＵによりデータバージョン値を更新して、新たなメモリ書き込み処理回数を反映させることを含んでもよい。次いで、ＳＭＴＵは、更新後のデータバージョン値及びメモリ位置のアドレス（加えて、場合によっては、新たな乱数及び／又はその他の値）を用いた別の暗号化を、新たなデータに行うことができる。また、ＳＭＴＵは、暗号化した新データに依存する新たなデータ認証タグを生成することができる。
【００４２】
本開示の例示的な実施態様のさらなる側面によれば、ＳＭＴＵ１０６は、並列化が可能な暗号方式を実施するように動作可能である。この暗号方式は、不可逆ブロック暗号方式であり、複数の異なる並列の撹拌関数（mixing function）及び結合関数（combination function）を含む。詳細は後述するが、これらの撹拌関数は、異なる種類の関数の同一の組み合わせ又は異なる組み合わせを含みうる。関数の種類としては、ファイステルネットワーク（Feistel network）、二重撹拌ファイステルネットワーク（ＤＭＦＮ：double-mix Feistel network）、換字（substitution）・転置（permutation）ネットワーク、ビット単位の排他的論理和（ＸＯＲ）演算の二分ツリー−単に、ＸＯＲツリーと記載する場合がある−、ラウンド回数を少なくした標準的な暗号処理、などがある。例示的な実施態様における暗号方式は、暗号化又は認証に利用可能であり、１つ以上の論理回路において、最大でも各回路の１クロック周期で動作するように実施することができる。不可逆のビットミキサを暗号処理に用いる場合、電子コードブック（ＥＣＢ）又は暗号ブロック連鎖（ＣＢＣ）などの特定の暗号モードでの復号は不可能であるが、ストリーム暗号モードでは可能である。
【００４３】
例示的な実施態様におけるこの付加的な側面によれば、ＳＭＴＵ１０６は、ｎビットの入力データブロックを受信し、暗号処理により、この入力ブロックテータからｍビットのデータブロックを生成するように動作可能である。ブロック長ｎは任意であり、様々な実施例において、ｎは、６４ビット、１２８ビット又は２５６ビットである。また、ｍとｎとは、同じであってもよいし、異なっていてもよい。出力データブロックの生成では、ＳＭＴＵは、複数の異なる並列の撹拌関数を入力データブロックに適用して、複数の更新データブロックを生成するように動作可能である。各撹拌関数は、入力データブロックを、複数の更新データブロックのうちの対応するブロックに写像（map）するように動作可能である。次いで、ＳＭＴＵは、複数の更新データブロックを結合関数で結合して、出力データブロックを生成する。
【００４４】
いくつかの実施例では、撹拌関数は可逆的である。上述のように、撹拌関数は、互いに異なるものでもよく、複数の異なる種類の撹拌関数のうちの任意の１つ又は複数でもよい。例えば、少なくともいくつかの撹拌関数は、それぞれ異なるラウンド関数を含むファイステルネットワークによって実現することができる。これに加えて、あるいは、これに代えて、例えば、撹拌関数のうちの少なくともいくつかは、それぞれ異なる第１ラウンド関数又は第２ラウンド関数を含むＤＭＦＮによって実現することができる。これに加えて、あるいは、これに代えて、例えば、撹拌関数のうちの少なくともいくつかは、それぞれ異なる換字レイヤ又は変換レイヤを含む換字・転置ネットワークによって実現することができる。さらに、これに加えて、あるいは、これに代えて、例えば、撹拌関数のうちの少なくともいくつかは、それぞれＸＯＲツリーにより実現することができる。この場合、入力データブロックから複数のサブ鍵が生成され、各二分ツリーを用いて撹拌される。
【００４５】
いくつかの実施例では、結合関数において、出力データブロックの各ビットは、入力データブロックの１つ以上のビットに依存し、入力ブロックのすべてビットが、出力データブロックの１つ以上のビットに影響を与える。より具体的な実施例では、結合関数は、ビット単位のＸＯＲ演算、又は、その他の適切で、おそらくはより複雑な演算で構成することができる。
【００４６】
いくつかの実施例では、ビットミキサ関数のｍビットの出力データブロックとｎビットの入力データブロックにおいて、ｍとｎはと同じ値でもよい。別の実施例では、ｍとｎは異なる値であってもよく、このビットミキサ関数は、ブロック長と呼ばれる入力長と出力長とが等しいビットミキサ関数から構成することができる。例えば、ｍ＞ｎとするならば、ビットミキサのブロック長をｍにする。例えば、更新後のデータブロック（ビットミキサの出力）を、複数のブロック片に分割し、その後に結合して出力データブロックを生成する。他の実施例において、ｍ＜ｎとするならば、ビットミキサのブロック長をｎにする。この場合、入力データブロックの長さをｎに拡張するために、特定のビットを繰り返し、その内のいくつかのビットは反転させてもよく、その後、繰り返したこれらのビットを入力データブロックのビットに拡散させる。この際、各撹拌関数について拡散の仕方を変えてもよい。ビットミキサは、このようにブロック長を拡張した入力ブロックデータに対して処理を行う。
【００４７】
暗号方式を認証に利用するいくつかの実施例では、出力データブロックは、データ認証タグであり、ＳＭＴＵ１０６は、メモリ１０４内のメモリ位置の各アドレスに依存したデータ認証タグを生成するように動作可能である。一実施例では、ｍ＝２０８及びｎ＝８０であり、暗号処理の入力データブロックは、１２８ビットの暗号文に対して３２ビットのアドレスと４８ビットのデータバージョン値とを連結したものであり、データ認証タグは、処理結果の８０ビットから構成される。ＳＭＴＵは、さらに、暗号文ブロック及びデータ認証タグを各アドレスのメモリ位置に書き込む書き込み処理を実行するように動作可能である。これらの実施例では、保護されたメモリは、データが記録されたメモリ位置に対する複数のウィンドウを有し、各メモリ位置には、平文を暗号化したデータブロックとともに、対応するデータ認証タグが記録されており、このデータ認証タグは、メモリ位置毎に異なる。
【００４８】
暗号方式を暗号化に利用するいくつかの実施例では、出力データブロックは、多ビットパッド値（multi-bit pad value）であり、ＳＭＴＵ１０６は、メモリ１０４内のメモリ位置の各アドレスに依存したパッド値を生成するように動作可能である。一実施例では、ｎ＝ｍ＝１２８であり、パッド値は、３２ビットのアドレスに４８ビットのデータバージョン値と構成データ（configuration data）とを連結して生成される入力データブロックから算出することができる。次いでＳＭＴＵは、算出したパッド値をＸＯＲ演算により平文ブロックと結合して、暗号文ブロックを生成する。前述の実施例と同様、ＳＭＴＵは、さらに、暗号文ブロックを各アドレスのメモリ位置に書き込む書き込み処理を実行するように動作可能である。加えて、メモリは、暗号文ブロックが格納されたメモリ位置に対するウィンドウを有し、各暗号文ブロックは、メモリ位置毎に異なる。
【００４９】
図２は、いくつかの実施例において図１のシステム１００に対応するシステム２００の一例を示す図である。このシステムは、複数の異なるアプローチのうちの任意のアプローチにしたがって構築することができる。いくつかの実施例では、システムは、単一の集積回路（ＩＣ）（「チップ」と記載する場合もある）にコンポーネントを集積するシステムオンチップ（ＳｏＣ）のアプローチで構築することができる。より具体的な実施例では、ＩＢＭ社のマイクロプロセッサバス規格であるＣｏｒｅＣｏｎｎｅｃｔにしたがってシステムを構成することができる。本明細書では、システムの様々なコンポーネントやシステムコンポーネントの機能を、ＳｏＣやＣｏｒｅＣｏｎｎｅｃｔなどの特定の技術体系の用語を用いて説明することがある。ただし、本明細書で用いる特定の用語は、あくまでも説明を目的としており、本開示の例示的な実施態様の範囲を限定するものではない。
【００５０】
図１のシステム１００と同様に、図２のシステム２００は、複数のコンポーネントを含み、そのうちの少なくともいくつかは、論理回路で構成することができる。図示のとおり、例えば、システムは、マイクロプロセッサコア２０２、メモリ２０４及びＳＭＴＵ２０６を含む。いくつかの実施例では、これらは、図１の要求部１０２、メモリ１０４及びＳＭＴＵ１０６として機能するか、あるいは、これらに相当する。図示はしていないが、システムは、要求部として機能するよう動作可能なその他のコンポーネントを含む場合がある。このようなコンポーネントも、メモリに対する読み出し処理及び／又は書き込み処理を開始又は要求するよう動作可能である。
【００５１】
図２に示すように、マイクロプロセッサコア２０２は、第１バス２０８に加えて、メモリ２０４、ＳＭＴＵ２０６及びその他のコンポーネントに直接又は間接的に接続される。第１バスの使用は、調停回路２１０により割り当てられる。一実施例では、マイクロプロセッサコアは、ＩＢＭ社から商業的に入手可能なＰｏｗｅｒＰＣコアでもよく、第１バスは、プロセッサ・ローカル・バス（ＰＬＢ）でもよい。適切なメモリの例には、組み込みダイナミック・ランダム・アクセス・メモリ（ｅＤＲＡＭ）２１２、倍速同期型（又は他の種類の）ダイナミック・ランダム・アクセス・メモリ（ＤＤＲ ＤＲＡＭ）２１４などが含まれ、そのいくつかは、第１バスに各メモリ制御部又はインターフェース２１６、２１８を介して接続可能である。いくつかの実施例では、システムは、１つの集積回路２２０に様々なコンポーネントを集積したＳｏＣとして構成される。この場合、メモリは、システムの他のコンポーネントとは別にオフチップ（外部）に配置することができ、オンチップ（内部）のメモリ制御部を介して第１バスに接続することができる。これは、例えば、図２のＤＤＲ ＤＲＡＭにより示されている。
【００５２】
第１バス２０８に接続されたコンポーネントには、第１バスと別の第２バス２２４との間に設けられたバスブリッジ２２２も含まれる。第２バスは、例えば、転送バスであって、セキュリティプロセッサ２２６や、場合によっては要求部として機能しうるコンポーネントなどの追加のコンポーネントが接続されていてもよい。いくつかの実施例では、第１バスは高速のバスで構成して高性能のコンポーネントを接続し、第２バスは低速のバスで構成することができる。このような実施例では、バスブリッジは、高性能コンポーネントを低性能コンポーネントから分離する役割を果たし、これによりシステム性能を改善することができる。
【００５３】
ＳＭＴＵ２０６は、マイクロプロセッサコア２０２などの要求部と、ｅＤＲＡＭ２１２又はＤＤＲ ＤＲＡＭ２１４の一方又は両方と、の間の転送データを暗号化及び復号するよう動作可能である。ＳＭＴＵは、マイクロプロセッサコア又はその他要求部から送出された読み出し要求及び書き込み要求を処理するスレーブユニット（slave unit）として機能することができ、この場合、ＳＭＴＵは、要求にしたがって特定のメモリアドレスからの読み出し或いは書き込みを開始する。これにより、ＳＭＴＵは、処理に高いセキュリティを保証することができる。
【００５４】
ＳＭＴＵ２０６は、複数の異なる態様のうちの任意の態様で、システム２００に接続することができる。図示の例では、ＳＭＴＵは、３つの双方向外部データインターフェースによってバスブリッジ２２２に接続され、また、別の双方向外部データインターフェースによってセキュリティプロセッサ２２６に接続される。具体的には、ＳＭＴＵは、マイクロプロセッサ・コアインタフェース２２８、第２バスインターフェース２３０及びメモリインターフェース２３２によってバスブリッジに接続され、コマンド・コントロールインターフェース２３４によってセキュリティプロセッサに接続される。
【００５５】
マイクロプロセッサ・コアインタフェース２２８は、第１バス２０８を介してマイクロプロセッサコア２０２に接続されており、メモリ２０４に対するデータ読み出し要求及び／又はデータ書き込み要求などの制御情報を受信する。第２バスインターフェース２３０は、第２バス２２４に接続されており、メモリインターフェース２３２は、第１バスを介してメモリに接続される。バスブリッジ２２２は、マイクロプロセッサ・コアインタフェース及びメモリインターフェースを介した転送が第１バスのみを経由するようにし、第２バスインターフェースを介する転送が第２バスのみを経由するようにする。これにより、コマンド・コントロールインターフェース２３４は、セキュリティプロセッサ２２６が、独立したインターフェースを介してＳＭＴＵにコマンド及び制御情報を送出することを可能にする。
【００５６】
図３は、図２のＳＭＴＵ２０６の様々なコンポーネントを示す図である。繰り返しになるが、少なくともいくつかのコンポーネントは、論理回路で構成することができる。図示の通り、ＳＭＴＵは、コマンド・コントロールインターフェース２３４に接続されたコマンド制御部３０２を含み、この制御部は、制御レジスタ３０４及び状態レジスタ３０６を含む。ＳＭＴＵは、転送調停部３０８を含み、これは、マイクロプロセッサ・コアインタフェース２２８、第２バスインターフェース２３０及びメモリインターフェース２３２の使用割り当てを行うように接続されており、また、そのように動作可能である。マイクロプロセッサ・コアインタフェース上に設けられた先入れ先出し（ＦＩＦＯ）メモリ３１０は、調停部への転送のバッファリングを行うよう動作可能である。
【００５７】
調停部３０８は、転送制御部３１２及びアドレス変換部３１４にも接続され、この転送制御部は、暗号部（cryptography unit）３１６に接続される。暗号部は、鍵生成部３１８、暗号化部（encryption unit）３２０、データハッシュ部（data-hashing unit）３２２を提供する。暗号部は、鍵データ記憶部（ＫＭＳ）３２４に接続される。鍵データ記憶部は、暗号化部及びデータハッシュ部用の鍵を生成するための鍵生成部に乱数を供給するよう動作可能である。暗号化部は、ＳＭＴＵ２０６を起動させる読み出し又は書き込み要求に応じてメモリ２０４に対して実行されるすべての読み出し処理及び書き込み処理を暗号化及び復号するように動作可能である。また、データハッシュ部は、メモリに対して読み出し、又は、書き込みされる暗号化データ（暗号文）用のデータ認証タグを生成するように動作可能である。いくつかの実施例では、暗号化部とデータハッシュ部の一方又は両方において、本明細書に記載したような並列化可能な暗号方式を採用することができる。また、いくつかの実施例では、いずれか一方のみが並列化可能な暗号方式を採用し、他方は、複数ある他の構成のうちの任意のものを採用することができる。例えば、暗号化部は、暗号化及び復号処理にＡＥＳ暗号を採用するよう動作可能である一方、データハッシュ部は、本明細書の記載のビットミキサラウンド鍵生成を利用するように変形した鍵付きハッシュ関数を採用するよう動作可能である。
【００５８】
いくつかの実施例では、ＫＭＳ３２４は、乱数を供給するように動作可能な１つ以上のレジスタ列３２６（ＫＭＳメモリと記載する場合もある）を含む。ＳＭＴＵは、ＫＭＳから供給される乱数に依存するので、質の高い乱数を使用することが通常望ましい。よって、いくつかの実施例では、ＫＭＳは６４×６４のレジスタ列を４つ含んでおり、１６Ｋビットの乱数を供給することができる。処理に先立って、ＫＭＳを１６Ｋビットの乱数で初期化してもよい。いくつかの実施例では、この乱数は、ＳＭＴＵの外部で生成されたものでもよい。
【００５９】
いくつかの実施例では、真性乱数（true random number）を使用する代わりに、コンフィギュレーション／エントロピー（configuration/entropy）が記録された１つ以上の読み出し専用の内蔵メモリブロック（ＲＯＭ）３２８を用いてＫＭＳ３２４を初期化することもできる。これらは、例えば５１２×１６のＲＯＭであり、図には、ＲＯＭ１、ＲＯＭ２及びＲＯＭ３の３つが示されている。これらのＲＯＭに含まれる乱数は、システム設計の段階で記録されたものでもよい。コンフィギュレーションＲＯＭを乱数のソースとして利用する場合、生成される鍵のランダム性が低くなる可能性があり、耐改ざん機能が低くなる。ただし、乱数のソースとしてＲＯＭを利用することが望ましい用途もいくつかある。１つは、時短有利（time critical）な用途であり、このような用途では、乱数生成の初期化に時間がかかって遅延が生じることが許容されない。他にも、システムリセット後に復元可能な暗号化画像データを生成したり、又は、別のシステムで復元可能な画像を生成することが必要な用途がある。
【００６０】
例示的な実施態様によるシステム２００及びＳＭＴＵ２０６の様々な特徴についての情報は、以下の説明及び本願に援用する上述の関連出願’８７１号に記載されている。
【００６１】
図４は、本開示のいくつかの例示的な実施態様による、メモリ１０４、２０４に格納された暗号化データのデータ構造を示す。図示のとおり、暗号化データは、３２バイトのブロックを使って格納され、各ブロックは、１６バイトの暗号化ペイロード（暗号文）及び１６バイトのセキュリティデータを含む。セキュリティデータは、６バイトのデータバージョン値（図示の例では、書き込みカウンタ値）及び１０バイトの認証タグを含む。６バイトの書き込みカウンタは、メモリ位置のアドレスに関わらず、メモリ位置への書き込み毎にインクリメントされるフィールドである。この結果、インクリメントされた値は、各アドレスに固有の値になる。あるメモリ位置に対する暗号化処理及び認証鍵は、そのアドレス、書き込みカウンタ値、及び乱数から導出することができる。別の実施例では、より多くのフィールド、あるいは、より少ないフィールドを暗号化に用いることができる。１６バイトの暗号化データごとに、１６バイトの認証タグ及び書き込みカウンタ値を付加する必要があるので、メモリ位置の集合である各ウィンドウの有効記憶容量は、物理的なサイズの１／２になる。ただし、別の実施例では異なるサイズのデータやタグにて、より大きな、あるいは、より小さなサイズのメモリを実現することができる。
【００６２】
図５は、本開示の実施態様の一例によるＤＭＦＮ５００の１ラウンドを示す図である。ＤＭＦＮでは、入力長と出力長のうちの大きい方をブロック長とすることができる。これは、ビットミキサにおける圧縮又は拡張の必要に合わせて、入力ビットを繰り返すか、出力ビットをフォールディング（folding）することにより行われる。具体的には、データは、ＬとＲの２つに分けて半分ずつ処理される。各ラウンドＲｏｕｎｄiにおいて、２つの関数ＦとＧを用いて、Ｌi及びＲiからＬi+1及びＲi+1が算出される。最初の入力であるＬ0及びＲ0がビットミキサの入力とされ、最終の値であるＬr及びＲrが出力となる。以下に示すように、Ｌi+1は、Ｆの出力とＲiとを用いたビット単位のＸＯＲ演算を使って生成されるのに対して、Ｒi+1は、ビット単位のＸＯＲ演算を使ってＧの出力にラウンド鍵ｋiを撹拌することで生成される。ＤＭＦＮにおいて、各ラウンドｉ＝０，１，…，ｒ−１について、更新後の左半分データ（Ｌi+1）及び更新後の右半分データ（Ｒi+1）は、下記により算出される。
【数１】
2018109750.tif 000003
【００６３】
上記において、最初の入力Ｌ0及びＲ0がビットミキサの入力として設定され、最後の値Ｌr及びＲrが出力を構成し、Ｆ及びＧは、第１ラウンド関数及び第２ラウンド関数を表し、ｋiは、ラウンド鍵を表す。ラウンドｒ−１における出力が、更新後のデータブロック（Ｌr，Ｒr）である。
【００６４】
例示的な実施態様におけるファイステルネットワーク及び／又はＤＭＦＮの場合、ラウンド関数（Ｆ）は、非線形関数でもよい。この関数は、可逆であっても、なくてもよい。ただし、第１関数が可逆である場合、逆関数の算出が困難（一方向関数）であることが望ましい（ただし必須ではない）。この手法のセキュリティは、ラウンド鍵ｋiの秘匿性に依存し、また、Ｆの逆関数が存在しないか、存在しても、算出が困難な非線形関数であるとの要件に依存する。いくつかの実施例では、この関数はラウンド（例えば、Ｆi）に依存する。ただし、別の実施例では、第１関数がラウンドに依存しない構成でもよい。
【００６５】
適切なラウンド関数（Ｆ）の一例は、入力の左側半分をシフトさせたもの同士のペアに対する複数回の論理演算ＮＡＮＤと、これらＮＡＮＤ演算の出力に対する論理演算ＸＯＲとを含む。３回のＮＡＮＤ演算の場合、第１関数は、Ｌiをシフトさせて得られる第１のペアに対する第１ＮＡＮＤ演算と、Ｌiをシフトさせて得られるの第２のペアに対する第２ＮＡＮＤ演算と、Ｌiをシフトさせて得られる第３のペアに対する第３ＮＡＮＤ演算と、第１、第２、第３の各ＮＡＮＤ演算の出力に対するＸＯＲ演算と、を含む。ハードウェア実装では、これらのシフト又はローテーションは、単に配線によって実現されるので、時間を要しない。よって、第１関数に必要な時間は、２つのＸＯＲゲート遅延に加えて、２入力ＮＡＮＤゲートの遅延の時間のみである（なお、ＡＮＤゲート又はＮＯＲゲートでも、同様に効果的に機能する）。この時間は、セルライブラリ（cell library）が最適化されていれば、４つのＮＡＮＤ２ゲート遅延に等しい。本明細書において、ＮＯＲゲートは、Ｎｏｔ−ＯＲ、Ｎｅｇａｔｉｖｅ−ＯＲ又はＮｅｇａｔｅｄ−ＯＲの論理関数を実行するゲートである。
【００６６】
ＤＭＦＮの場合、第２ラウンド関数（Ｇ）は、可逆であってもよい。ただし、その逆関数が容易に演算できないことを要件とする。第１関数（Ｆ）と同様に、いくつかの実施例では、第２関数はラウンド（例えばＧi）に依存するが、別の実施例では、第２関数は、ラウンドに依存しない構成でもよい。
【００６７】
いくつかの実施例では、非線形の換字ボックス（ｓボックス）のレイヤを第２関数（Ｇ）に利用することができ、これにより、写像が非線形になる。別の実施例では、第２関数は、左半分データに対して循環シフト又はローテーションを施し、次いで、これらを相互に、且つ、ラウンド鍵と撹拌し、これにより更新後の右半分データが算出される。より具体的な実施例では、第２関数は、左半分データを巡回シフトさせたデータを３つ作成し、これらのデータにおいて同じビット位置にある各３つのビットのＸＯＲを取って結合し、ラウンド鍵において同じ位置にあるビットを使って、更新後の右半分データを構成するビットを生成する。この点に関し、ブロック長＝２nの場合（ｎは、正の整数）、このデータを巡回シフトさせて得た任意の３つのデータに対するＸＯＲ演算は、可逆関数となることが知られている。第１関数と同様に、ハードウェア実装の場合、これらのシフト及びローテーションは、適切な配線によって実現されるので、時間を要しない。よって、第２関数及び撹拌処理に必要な時間は、２つのＸＯＲゲート遅延の時間のみである。各遅延は、セルライブラリが最適化されていれば、１．５から３のＮＡＮＤ２（２入力ＮＡＮＤ）ゲート遅延に等しい。
【００６８】
可逆のビットミキサが必要な場合、Ｇ（即ち、各Ｇi）は可逆関数でなくてはならない。Ｇの逆関数は、ビットミキサの逆関数も必要でない限り、容易に算出可能である必要はない。よって、典型的な非線形の可逆Ｓボックスレイヤよりも高速である。そのような関数Ｇの例としは、Ｇの各入力ビットに対して、所定の循環距離（circular distance）（ｄ1，ｄ2）からの２つの入力ビットとのＸＯＲを取る場合である。ブロック長が２の累乗である場合、出力ビットとして所定の循環距離からの３つの入力ビットのＸＯＲを算出すれば、可逆関数が得られる。ハードウェア実装では、ｄ1及びｄ2が、過剰に長い配線を必要とするような大きさでなければ、関数Ｇの算出及びラウンド鍵のＸＯＲ演算に要する時間は最短ですむ。
【００６９】
非線形のビットミキサが必要な場合、Ｆは非線形関数でなくてはならない。ただし、Ｆは可逆である必要はない。Ｆの逆関数は、ビットミキサの逆方向である逆関数についてさえも不要であるからである。以下のように、実施態様の一例では、高速かつ十分に複雑であり、バイナリ多項式のガロア域（Galois field of binary polynomials）において非線形な構成が用いられる。
１．Ｌiを循環距離ｄ3及びｄ4からシフトさせた２つのデータのＮＡＮＤを行う。
２．Ｌiを循環距離ｄ5及びｄ6からシフトさせた２つのデータのＮＯＲを行う。
３．Ｌiを循環距離ｄ7及びｄ8からシフトさせた、さらに別の２つのデータのＮＡＮＤを行う。
４．上述の３つのブロックのビットとＬiとのＸＯＲを行う。
【００７０】
ハードウェア実装では、シフトは、本質的に独立でほとんど時間を要しない処理である。このように、ＦとＧとは、経路長がほとんど等しい。よって、少し手作業を加えるだけで、クリティカルなタイミングパスのバランスを取って、サイドチャネル漏洩のリスク低減することができる。Ｆ及びＧを、すべての又は特定のラウンドにおいて異なるもので構成することもできるし、本明細書の実施態様のように、すべてのラウンドで同じ関数を維持する構成も可能である。
【００７１】
なお、Ｇが可逆関数の場合、ＤＭＦＮも可逆である。つまり、Ｌiを下から順に、つまりＲi+1から算出することができ、ラウンド鍵ｋi及びＧの逆関数が分かれば、Ｌiを算出することができる。Ｌiが分かれば、Ｆ（Ｌi）を算出することができ、その結果とＬi+1とのＸＯＲを取れば、Ｒiを算出することができる。可逆性は、有用な性質である場合が多い。これにより、あらゆる可能な出力値が得られること、及び、２つの異なる入力値に対して出力が同じにならないことが保証される。
【００７２】
上記及び図５に示すように、各ラウンドで、半分のデータ長のサブ鍵ｋiがＧに撹拌される。全ブロック長のサブ鍵、つまり、図６に示すように、残りの半分のサブ鍵をＲiとあわせて撹拌した場合と比較して、撹拌についての顕著な改善は認められなかった。しかしながら、構成が異なるので、異なる用途に適している。
【００７３】
次に、図６を参照する。この図は、別の例示的な実施態様によるＤＭＦＮ６００の１ラウンドを示す図である。ＤＭＦＮでは、ラウンド鍵ｋiを適用して、Ｌi+1ではなくＲi+1を変換し、これにより、両方の半データの算出に要する負荷のバランスをとっている。つまり、２つの半データは、同時に算出される。ただし、第１関数（Ｆ）を適用する際に、Ｒiは使用されない。よって、図６に示すように、Ｒiは別のラウンド鍵ｈiに撹拌されるが、バランスは崩れない。また、Ｒi+1及びＬi+1の両方が、鍵データの影響を受ける。図６に示すＤＭＦＮでは、第１関数（Ｆ）及び第２関数（Ｇ）として、同等に複雑な関数を選択すれば、全体の撹拌特性を改善することができる。第２関数が第１関数よりも演算が遅い場合など、さらに別の実施例では、ｋiの撹拌を省略することが可能である。このようにした手法は、図５のＤＭＦＮと撹拌特性は同等であるが、速度は若干速い。ＤＭＦＮに関し、各ラウンドＩ＝０，１，…，ｒ−１について、更新後の左半分のデータ（Ｌi+1）及び更新後の右半分のデータ（Ｒi+1）は、下記により算出される。
【数２】
2018109750.tif 000004
【００７４】
上記において、最初の入力Ｌ0及びＲ0がビットミキサの入力として設定され、最終の値Ｌr及びＲrが出力を構成し、Ｆ及びＧは、第１ラウンド関数及び第２ラウンド関数を表し、ｋi及びｈiは、ラウンド鍵を表す。ラウンドｒ−１における出力が、ビットミキサの出力であり、更新後のデータブロック（Ｌr，Ｒr）である。
【００７５】
また、周知の換字・転置ネットワークに基づく可逆のビットミキサも利用可能である。ファイステルネットワーク及びＤＭＦＮと同様に、例示的な実施態様における換字・転置ネットワークは、繰り返し（即ち、ラウンド）を伴う。例えば、ラウンド（ｉ）において、入力データブロック（Ｄi）がラウンド鍵（ｋi）と（例えば、ＸＯＲにより）撹拌され、その結果が、複数のＳボックス（Ｓi）を含む換字レイヤと、転置（Ｐi）を含む線形変換レイヤとを、介して撹拌されて、更新後のデータブロック（Ｄi+1）が生成される。別の実施例では、入力データブロックが、先ず、換字レイヤ及び線形変換レイヤを介して撹拌されて、更新後のブロックデータが生成され、ついで、このブロックデータがラウンド鍵（ｋi）と撹拌される。いずれの例でも、Ｓボックス及び転置のいずれか又は両方が、ラウンドに依存してもよいし、依存していなくてもよい。また、いくつかの実施例では、少なくとも１つのラウンドにおけるＳボックスのうちの２つが異なるものでもよい。実施態様の一例では、最初のデータブロック（Ｄ0）は、さらに大きなデータブロックの部分データにすぎず、この他にも少なくとも１つの部分データ（Ｂ0）が含まれていてもよい。ラウンド鍵（ｋi）を、他の部分データ（Ｂ0）と（例えば、ＸＯＲにより）撹拌して撹拌ラウンド鍵を生成し、この撹拌ラウンド鍵を、そのラウンドの入力データブロック（Ｄi）と撹拌する構成でもよい。あるいは、別の実施例では、ラウンド鍵を他の部分データと撹拌し、この結果生成された撹拌ラウンド鍵を、換字レイヤ及び線形変換レイヤを通過させた後で更新データブロック（Ｄi+1）と撹拌する構成でもよい。
【００７６】
図７は、本開示の例示的な実施態様における換字・転置ネットワーク７００の３つのラウンドを示す図である。周知の換字・転置ネットワークに基づく、可逆ビットミキサを利用することができる。圧縮であるか拡張であるかにより、所望の入力ブロック長及び出力ブロック長のうちの長い方がブロック長として選択される。入力長の方が短い場合には、使用されていない入力ビットについては、固定の値とするか、あるいは、使用された入力ビットを繰り返すことで、出力長と合致させる。必要な出力長の方が短い場合には、出力ビットを破棄するか、ＸＯＲやその他の適切な関数を利用していくつかのビットをフォールディングすることで最終的な出力を生成する。換字・転置（ＳＰ）ネットワークは、図７にしたがって従来通りに構築され、以下の３つのステップを数回繰り返す。
１．一連の非線形関数Ｓボックスによって、入力を変換する。
２．変換結果のビットの、再配送（rerouted）／転置を行う。
３．転置したデータとラウンド鍵／サブ鍵のＸＯＲを取る。
注：第１ラウンド及最終ラウンドは、ステップを１つ又は２つ省略して、簡易化されること多い。
【００７７】
Ｓボックスが可逆であれば、ＳＰネットワークも可逆である。Ｓボックスが非線形であれば、ＳＰネットワークも非線形である。ＳＰネットワークは、任意の幅を有し、完全に撹拌するのに要するラウンドの数は、この幅に依存する。ハードウェア実装では、Ｓボックスが小さい方が高速のビットミキサを構成できる傾向がある。現実的な最小のＳボックスとして、３つの入力ビット及び３つの出力ビットを有するものが、ＰＲＩＮＴｃｉｐｈｅｒにおいて実装される。この暗号は、Lars Knudsen、Gregor Leander、Axel Poschmann、Matthew J.B.Robshawによって公開されている。ＰＲＩＮＴｃｉｐｈｅｒ：ＩＣプリンティング用のブロック暗号。Cryptographic Hardware and Embedded Systems（暗号ハードウェア及び組込みシステム）ＣＨＥＳ２０１０年、LectureNotes in Computer Scienceシリーズの第６２２５巻１６〜３２ページ。この３×３のＳボックスにおける３つの出力ビットは、下記のように定義される：
【数３】
2018109750.tif 000005
【００７８】
図８Ａ〜図８Ｃは、このＳボックスの実装に使用可能な小型で高速な回路を示す。図中、８００はＦ０算出用の回路であり、８２０はＦ１算出用の回路であり、８４０は、Ｆ２算出用の回路である。これらの回路は、各出力ビットに少数のゲートしか必要としない。
【００７９】
暗号ＰＲＥＳＥＮＴでは、４×４のＳボックスが下記のように実装される。この暗号については、A.Bogdanov、L.R.Knudsen、G.Leander、C.Paar、A.Poschmann、M.J.B.Robshaw、Y.Seurin、C.Vikkelsoeによって公開されている。ＰＲＥＳＥＮＴ：超軽量のブロック暗号。Cryptographic Hardware and Embedded Systems（暗号ハードウェア及び組込みシステム）−ＣＨＥＳ ２００７年、Lecture Notes in Computer Scienceシリーズの第４７２７巻４５０〜４６６ページ。
【数４】
2018109750.tif 000006
【００８０】
図９は、この４つの出力信号のうちの１つを実装するのに利用可能な例示的な回路設計９００を示す。このＳボックスの方が、各出力に必要なゲートの数が若干多い。同様の性能及び撹拌特性が得られるものであれば、この他の４×４のＳボックス設計も利用可能である。より簡易で、より高速なＳボックスの実装も可能であるが、そのようなＳボックスでは、同程度に十分な撹拌特性を得るためにラウンドの回数を増やす必要があり、結果的にビットミキサの全体性能が低下する。
【００８１】
ＰＲＩＮＴｃｉｐｈｅｒ、ＰＲＥＳＥＮＴ及びＡＥＳなどの暗号、また、ＳＨＡ３などのハッシュ関数で利用されている適切な転置処理を利用することが可能である。列挙した暗号手法のうちの最初の２つで用いられている簡易な転置処理は、最初の数ラウンドで入力ビットを完全に拡散させることができる。つまり、入力ビットを１ビット変更することにより影響を受けたビットが、異なるＳボックスに供給される。撹拌対象の入力のブロック長をｂとし、Ｓボックスの幅をｓとすると、この転置処理は下記のように定義される。
【数５】
2018109750.tif 000007
【００８２】
ｍ×ｍの完全Ｓボックス（perfect S-Box）は、１入力ビットに対する変更を、次のラウンドのｍビットに拡散させる。適切な転置処理を行えば、これらのビットは、次のラウンドで異なるＳボックスに供給され、ｍ2ビットに変更が拡散される。ｒ回のラウンドの後、１入力ビットに対する変更がｍr個の出力ビットに影響し、最終的にはすべてのビットに影響する。なお、ｍr≧ｎであることが望ましく、つまり、ｒ≧ｌｏｇ（ｎ）／ｌｏｇ（ｍ）とすることが望ましい。これにより、１入力ビットに対する変更が、すべての出力ビットに影響する。当然ながら、ラウンドの回数が多いほど、拡散の度合いが高くなる。
【００８３】
ＰＲＩＮＴｃｉｐｈｅｒのＳボックスを用いるＳＰネットワークの例示的な実施態様では、入力幅及び出力幅は、２５５ビットに設定される。完全な撹拌のために必要なラウンドの最小回数は、理論上は、ｒ＝ｌｏｇ（２５５）／ｌｏｇ（３）≒５である。１０００組のランダム鍵で試した統計的な実験では、それより多くのラウンドが必要であるとの結果になった。ラウンドを９回行えば、常に統計的に完全な撹拌が得られた。ワーストケースで必要な９回のラウンドを１クロック周期で実行する場合、クロック速度は４５０ＭＨｚ以上になる。別の例示的な実施態様では、ＳＰネットワークに暗号ＰＲＥＳＥＮＴのＳボックスを用い、入力幅及び出力幅は２５６ビットに設定される。完全な撹拌を得るために必要なラウンドの最小回数は、ｒ＝ｌｏｇ（２５６）／ｌｏｇ（４）＝４である。１０００組のランダム鍵で試した統計的な実験では、統計的に完全な撹拌を得るのに６ラウンドで十分であるとの結果になった。暗号ＰＲＥＳＥＮＴのＳボックスを用いたＳＰネットワークは、ワーストケースである６回のラウンドであっても、ＰＲＩＮＴｃｉｐｈｅｒのＳボックスを用いたものに比べてラウンド回数が３回少なく、各ラウンドにおける撹拌の度合いも、どの線形関数よりもはるかに高い。ラウンド回数の違いは、性能の向上につながり、全６ランドを１クロック周期で実行する場合、クロック速度は５００ＭＨｚ以上になる。
【００８４】
図１０は、様々な例示的な実施態様によるＸＯＲツリー１０００を示す。ＸＯＲツリーを用いる実施例では、撹拌関数は、秘密乱数（例えばＫＭＳ３２４）及び入力データブロックに基づく。この点に関し、サブ鍵は、秘密乱数のブロックで構成することができ、これは、一連のブロックにおいて、入力データブロックの特定のビット、例えば、値が２進数の１（あるいは、０）であるビットの位置に対応するもので構成することができる。次いで、サブ鍵は、ＸＯＲツリーを用いて撹拌される。
【００８５】
図１０に示すように、ＸＯＲツリー１０００は、データのマージ処理を実行するために実装された複数のＸＯＲ論理ゲートを含む。図１０では、各論理ゲートは、処理対象のサブ鍵の各ビットに対応するゲート群を表す。
【００８６】
ＸＯＲツリーに基づくビットミキサでは、入力は、任意長の連続ビットであって、空集合を含まない複数の組に分割されて、ビット群を形成する。マルチプレクサを用いて、各群のビットで鍵データからサブ鍵を選択し、マルチプレクサの出力をビット単位ＸＯＲで結合して、ビットミキサの最終出力を生成する。ＸＯＲ演算は、ＡＳＩＣにおいては、２入力のＸＯＲゲートをツリー構造で用いて実行することが多いが、例えば、幅の大きいルックアップテーブルを提供するＦＰＧＡなど、対象技術によっては、多入力ゲート又はパリティ生成回路も利用可能である。この構成のビットミキサは、実装が明瞭なだけでなく、高い性能、低い電力消費、及びセキュリティの改善を実現することができ、また、サイドチャネル攻撃の対象領域を最小にすることができる。
【００８７】
ＸＯＲツリーに基づくビットミキサの入力幅と出力幅は、それぞれ独立して選択することができ、選択された出力幅の方が大きければ拡張関数が生成され、入力幅の方が大きければ圧縮関数が生成される。ランダムな鍵データを有するので、入力ビットの任意の１ビットを変更することで、ランダムなサブ鍵により出力を変化させることができる。このように、どの入力ビットを変化させても、すべての出力ビットが影響を受ける。さらに、ビットミキサの構成によれば、複数の入力ビットを変更すると、ランダムなサブ鍵をＸＯＲにより結合した集合によって出力を変化させることができる。そのような集合そのものもランダムである。総合すると、ＸＯＲツリーに基づくビットミキサは、上述した望ましい特性の各要件を満たし、理論上、完全な撹拌を保証する。
【００８８】
実施態様の一例で、ＡＳＩＣにおける回路を評価した。この回路は、２入力１出力マルチプレクサを用いてサブ鍵を選択し、２入力ＸＯＲゲートを用いて７層のＸＯＲツリーを実装して、８０ビットの入力を２５６ビットの出力に拡張する構成である。ゲートのファンアウト／ローディング（fanout/loading）が限定的であっても、このビットミキサ回路は、クロック速度が１．２ＧＨｚ超のシステムにおける１クロック周期で容易に動作することができる。
【００８９】
ＸＯＲツリー構成は、ビット選択及びＸＯＲ演算のみを利用するので、二値のガロア域において線形である。このような構成では、単純な相関関係を持つ入力値から算出される特定の出力値について、ある種の４通り相関関係（4-way correlations）が存在する。この例では、以下のような相関関係が存在する。少なくとも２つの入力ビット群があり、そのうちの１つの入力ビット群Ｂからビットｂが選択され、別の入力ビット群Ｃからビットｃが選択されたと想定する。ビット群Ｂにおいて、ｂ以外のすべてのビットは固定とし、ビットｂが論理０の場合に選択されるサブ鍵をＫ０とし、ビットｂが論理１の場合に選択されるサブ鍵をＫ１とする。同様に、ビットｃの論理値に基づいて選択されるサブ鍵を、Ｌ０及びＬ１とする。ビット群Ｃにおける他のビットは固定とする。最後に、Ｍは、入力が固定された他の入力ビット群により選択されるすべてのサブ鍵のＸＯＲ（他のビット群がない場合には、０）を表すとする。ｂとｃの値が２×２通りの可能な組み合わせのいずれであっても、出力値のＸＯＲは０になり、これを本明細書では、「４通り相関関係」と呼ぶ。
【数６】
2018109750.tif 000008
【００９０】
出力値が見えない用途の場合は、この種の相関関係が回路のセキュリティに問題となることはない。この相関関係が懸念事項となる用途の場合は、以下のような非線形関数によって出力結果をさらに処理することができる。例えば、Ｓボックスなどの非線形関数を並列に集合させもの、Ｓボックスなどの非線形関数の集合の出力結果に対して元の出力とのＸＯＲを取るもの、ローテーションを加えたＸＯＲ（ＲＡＸ：Rotate-Add-XOR）構成（マイクロプロセッサによる実装に適している）がある。非線形的な構成にするための別の方法では、ＸＯＲツリーにおける１つ以上の層のＸＯＲ演算を、図９に示すような、ｋ入力１出力の非線形Ｓボックスに置き換える。実装は単純であるが、不均一な回路遅延が加わるので、サイドチャネル漏洩を低減するためには、手作業で信号伝播のバランスをとる必要が生じうる。ＸＯＲツリーの１つの層をＳボックスに置き換えることにより、さほどの手間を必要とすることなく、１．０ＧＨｚ超のクロック速度の１クロック周期で動作する構成が得られる。
【００９１】
次に、図２及び図３を参照すると、例示的な実施態様において、メモリ２０４内のメモリ位置の集合であるウィンドウに含まれるメモリ位置への書き込み処理は、マイクロプロセッサコア２０２が、該当するアドレスのメモリ位置のデータに対する要求を生成し、そのアドレスをメモリ２０４に第１バス２０８を介して送出することを含む。当然ながら、マイクロプロセッサコアからアドレスを受け取る代わりに、例えば、ダイレクトメモリアクセス（ＤＭＡ）コントローラなどの他の要求部からアドレスを受け取ることもできる。
【００９２】
受け取ったアドレスは、ＳＭＴＵ２０６にも供給される。いくつかの実施例では、アドレスは論理アドレスであり、アドレス変換部３１４によって物理アドレスに変換される。アドレスは、転送制御部３１２を経由して鍵生成部３１８に供給される。この鍵生成部は、機能的に３つの鍵生成部を有する。これらは、鍵生成部Ｗ、Ｃ、Ｄと記載される場合もあり、それぞれそれぞれ鍵Ｗ、Ｃ、Ｄを生成するよう動作可能である。３つの鍵生成部のそれぞれは、ＫＭＳ３２４において先に格納又は生成された乱数も受け取る。そのメモリ位置には、書き込みカウンタ値（例えば、データバージョン値）、データ認証タグ及び暗号文ブロックが格納されており、この情報は、転送制御部にも供給される。いくつかの実施例では、書き込みカウンタ値は暗号化される。この暗号化は、非常に簡易であっても、また、鍵が予め定められた固定値であっても、セキュリティを大きく低下させることにはならない。
【００９３】
ＳＭＴＵ２０６の暗号化部３２０又は他のコンポーネントは、鍵Ｗを用いて書き込みカウンタ値を復号する。暗号化部は、鍵Ｃを用いて暗号文を復号し、この間に、転送制御部は、データハッシュ部３２２に、暗号文の完全性を検証させる。いくつかの実施例では、この検証は、暗号文、鍵Ｄ及びデータ認証タグに基づいて行われる。暗号文の完全性が確認された場合には、復号済みの暗号文（平文になったもの）がメモリ位置に書き戻される。一方、暗号文の真正性が確認されない場合には、エラーが発信される。
【００９４】
エラーの発生は、ランダムなエラー又はデータ改ざんの可能性を示唆する。転送制御部３１２は、これに応じて複数の処理のうちのいずれかを行う。例えば、転送制御部は、システム２００に命令して、（ｉ）すべての読み出し要求及び書き込み要求の処理を停止させる、（ｉｉ）現セッションの暗号化に用いている乱数を消去させる、（ｉｉｉ）鍵生成処理に関係するすべてのレジスタをフラシュする、（ｉｖ）メモリフラッシュを発動して、メモリウィンドウの内容をすべてゼロで上書きさせる、（ｖ）その他の処理、のうちのいずれかを行わせる。別の例では、転送制御部は、エラーカウンタを保持し、エラーが発生するとこのカウンタをインクリメントする構成でもよい。このアプローチでは、エラー回数が閾値に達した場合に、上述の処理のうちの１つ又は複数を転送制御部が実行するようにできる。このアプローチは、ノイズが多く、ランダムメモリの読み出しエラーが発生しやすい環境で有用である。
【００９５】
いくつかの実施例では、メモリ２０４内のメモリ位置に対する書き込み処理に先立って、そのメモリ位置に対する読み出し処理を実行してもよい。上述したように、これにより、そのメモリ位置に格納されたデータの真正性を確認することができる。先に読み出しを実行する場合は、読み出し処理によりデータの真正性が確認された場合にのみ、書き込み処理が実行される。この場合、いくつかの実施例では、書き込み処理は、書き込み対象の新たなデータを、復号された暗号文（平文）にマージするように動作可能な転送制御部３１２を含む。
【００９６】
転送制御部３１２は、ＧＷＣをインクリメントし、鍵生成部３１８の鍵生成部Ｃ及びＤのそれぞれに更新後の値を供給するよう動作可能である。鍵生成部Ｃ及びＤは、インクリメント後の書き込みカウンタ値及び該当するメモリ位置のアドレスを用いて、新たな鍵Ｃ及びＤを生成し、生成した鍵をそれぞれ暗号化部３２０及びデータハッシュ部３２２に供給する。暗号化部は、マージされた平文を新たな鍵Ｃで改めて暗号化して、新たな暗号文を生成する。また、データハッシュ部は、新たに生成された暗号文及び鍵Ｄを用いて、新たなデータ認証タグを生成する。また、鍵Ｗとインクリメント後のＧＷＣの値とを結合したものを用いて、暗号化書き込みカウンタ値を生成することも可能である。このように生成された書き込みカウンタ値、データ認証タグ及び暗号文は、メモリ位置に書き戻される。
【００９７】
図１１は、本開示の例示的な実施態様における、コンピュータシステムのセキュリティを保証するための方法１１００に含まれるさまざまな処理を示す。セキュリティは、ある暗号手法における暗号処理を実行するための１つ以上のラウンド鍵を生成することで保証される。本明細書に記載するように、暗号処理は、１つ以上の暗号化関数を含む。本方法では、先ず１１０５で、１つ以上の第１入力及び１つ以上の第２入力を取得する。いくつかの実施例では、１つ以上の第１入力は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵、又は、暗号鍵を含む。また、１つ以上の第２入力は、ランダムに生成された固定の入力、１つ以上の前のラウンド鍵、又は、ラウンド数を含む。いくつかの実施例では、１つ以上の第１入力は、より短い鍵に対して、ハードコーディングされた鍵データ、カウンタ入力、又は、これらを結合したものを使って暗号関数、ビットミキサを適用することで生成される。いくつかの実施例では、暗号関数は、サイファ（cipher）、ハッシュ関数又はストリームジェネレータでもよい。いくつかの実施例では、鍵データは、秘密データであり通信者間で共有される。鍵データは、ハードコーディングすることが可能である。また、ランダムに生成し、格納することが可能である。いくつかの実施例では、暗号鍵は、ハードコーディングされた鍵データと結合することができ、これは、暗号鍵の部分ごとに鍵データの部分に対する排他的論理和（ＸＯＲ）演算を実行することで行われる。
【００９８】
次いで、本方法は１１１０において、少なくとも１つの電気回路により、１つ以上の第１入力及び１つ以上の第２入力の各々に対してビットミキサ処理を実行する。いくつかの実施例では、ビットミキサ処理は、排他的論理和（ＸＯＲ）ツリー、換字・転置ネットワーク、又は、二重撹拌ファイステルネットワーク、又は、ローテーションを付加したＸＯＲ（ＲＡＸ）構成を含む。いくつかの実施例では、ＸＯＲツリーは、ＸＯＲツリーの第１レイヤとして、複数の否定論理和（ＮＡＮＤ）ゲート又は複数のマルチプレクサを含む。ビットミキサ処理は、以下の特徴を備えるように選択される。即ち、すべての入力ビットがすべての出力ビットに影響すること、１入力ビットに変更を加えると、平均して半数の出力ビットに変更が生じること、よって、入力ビットに変更を加えると、入力ビットに対する相関性や、入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、鍵を知らない観察者にとって、処理挙動が予測不可能になっていること、入力値及び出力値それぞれの固定長が任意に独立して選択可能であること、という特徴を備えるように選択される。
【００９９】
ビットミキサ処理がＸＯＲツリーを含む実施例では、上記方法は、１つ以上の各第１入力に対して、１つ以上の各第２入力との否定論理積（ＮＡＮＤ）演算を実行して、複数の第１入力のうちＸＯＲ論理演算の入力とするものを選択することをさらに含む。この場合、ＸＯＲツリーは、複数の第１入力のうち入力として使われたものに対する出力を生成する。
【０１００】
ビットミキサ処理が換字・転置ネットワークを含む実施例では、上記方法は、複数の第１入力のそれぞれに対して非線形の換字処理を実行することと、非線形の換字処理の各出力に対して転置処理を実行することと、転置処理の各出力に対して、第１入力の１つ又は第２入力の１つにとのビット単位のＸＯＲ演算を実行することと、を含む。
【０１０１】
ビットミキサ処理が、二重撹拌ファイステルネットワークを含む実施例では、１つ以上の各第１入力は、最初の左半分データと最初の右半分データとに分割される。上記方法は、さらに、複数のラウンドの各々において、更新後の左半分データと更新後の右半分データとを算出することをさらに含む。更新後の左半分データの算出することは、入力の左半分データに第１関数を施して第１結果を生成することと、この第１結果を入力の右半分データに撹拌することを含む。また、更新後の右半分データを算出することは、入力の左半分データに第２関数を施して第２結果を生成することと、この第２結果をラウンド鍵と撹拌することを含む。この際に、入力の左半分データと入力の右半分データは、複数のラウンドのうちの最初のラウンドでは、最初の左半分データ及び最初の右半分データであり、以降の各ランドでは、直前のラウンドにおける更新後の左半分データ及び更新後の右半分データである。
【０１０２】
上記方法は、１１１５において、少なくとも１つの電気回路によって、先のビットミキサ処理に基づいて、１つ以上のラウンド鍵を生成する。いくつかの実施例では、この生成は、先の実行の出力に対してスクランブル処理を行うことをさらに含む。いくつかの実施例では、上記方法は、１つ以上のラウンド鍵でデータブロックを作成することをさらに含む。いくつかの実施例では、上記方法は、所与の暗号方式用の１つ以上のラウンド鍵の実行及び生成を繰り返すことをさらに含む。
【０１０３】
いくつかの実施例では、複数のサブ鍵を用いて暗号文ブロックが生成される。暗号文は、既存の暗号方式Ｃを変形して、より高速でよりセキュリティの高い暗号方式Ｄに変形することで生成される。この実施例では、繰り返し暗号方式Ｃ（「ラウンド」で処理をおこなう）を選択する。繰り返し暗号方式Ｃは、限定するものではないが、例えば、ＤＥＳ、ＴＤＥＳ、ＡＥＳなどである。ビットミキサＢは、Ｃのラウンド鍵と同じ出力長のものが選択される。ビットミキサＢは、限定するものではないが、例えば、上述したようにＸＯＲツリー、ＳＰネットワーク、ＤＭＦネットワークでである。ビットミキサＢには、固定の鍵データＭが選択される。Ｍは、ランダムでない単純なパターンでなければ任意に選択可能である。Ｍは、ランダムに生成し、Ｄを使用するすべての通信相手に配送することができる。Ｃは、ラウンド鍵生成部関数Ｆを有し、この関数の入力は、前回までのラウンド鍵（第１回目の入力は、暗号鍵）のうちのいくつかである。ＣをＤに変換するＦをＢに置き換える。Ｂの入力長は、出力長よりも大でもよい（圧縮関数）。この場合、追加のビットは、ラウンドカウンタの値を入れてもよいし、あるいは、複数の前のラウンド鍵を入れてもよいし、暗号鍵を入れてもよい。
【０１０４】
暗号関数が数学的に安全な場合でも、物理的な実装によって、サイドチャネルからデータや鍵についての情報が漏洩する可能性がある。サイドチャネルには、応答時間の変化、電磁放射、消費電力の変動が含まれ、さらには、デバイスピンにおける電圧の変化も含まれる。上述の関数は、単純な論理ゲートの組み合わせだけを利用したハードウェアで実現できるので、サイドチャネル漏洩を最小にすることができる。さらに、この回路構成には、サイドチャネル漏洩の主な情報源の典型的であるフリップフロップや、ラッチ、その他の種類の記憶装置が含まれていないので、このような回路は、サイドチャネル分析されにくい。
【０１０５】
それでも漏洩する情報がある場合でも、手作業のレイアウト技術を用いてマスクすることができる。即ち、内部信号経路の対称性は既に高いが、このバランスをさらに高めることで、同じタイミングの多数のスイッチングがほぼ完全に同時に発生するように保証できる。ただし、このバランスステップは、必須ではない。本願発明者がＳＯＩ技術を利用した３２ｎｍのＡＳＩＣで行ったテストによれば、過渡遷移（switching transient）はピコ秒単位である。よって、そのような過渡遷移から暴露される記録／分析情報を利用してテンプレート攻撃を行うには、ＴＨｚ範囲のサンプリングレートのデータ取得システムが必要となるが、このレートは予測可能な未来に実現可能な最速レートよりも桁違いに速い。ＤＰＡワークステーションを利用したサイドチャネル分析では、入力ビット変化させたときの電力遷移と出力ビットとの間の相関関係など、利用されうる情報のサイドチャネル漏洩は観測されなかった。
【０１０６】
鍵データから導出した異なるサブ鍵はビットを共有することができるが、いくつか制限がある。１つは、ＸＯＲツリービットミキサに関する制限であり、異なる入力ビット群によって選択される複数のサブ鍵において、各サブ鍵の同じ位置に同一の鍵データビットが含まれないようにする必要がある。そのようなビットは、ＸＯＲ演算で結果的に相殺されるからである。これを念頭におくと、ビットを再利用する簡易な方法は、１つのサブ鍵に対してビットローテションを行っていくつかのサブ鍵を生成する方法である。この方法によれば、より複雑な鍵データのマッピング同様に、記憶しておく鍵のサイズを小さくしたり、あるいは、鍵配送に必要な帯域幅を最小化することができる。
【０１０７】
帯域幅が限られている場合に効率的な鍵配送を実現する別の方法は、鍵データがハードコーディングされた第２のビットミキサを使用することである。第２ビットミキサは、鍵長がより短い鍵から第１ビットミキサ用のサブ鍵を繰り返し生成することができる。暗号関数と暗号化ハッシュ関数も繰り返し利用して、使用に先立って、鍵データ記憶部に蓄積しておくことができる。
【０１０８】
上記に列挙したビットミキサは、ハードウェア実装に最適化されたものであるが、ソフトウェア実装で好適に機能する構成もある。１クロック周期での動作は実現できないものの、上記の実施例におけるビットミキサは、ソフトウェアにおいても、同等の入力長及び出力長の暗号やハッシュ関数に比べて桁違いに高速である。高いセキュリティは不要で、生成したデータが統計的に独立であることだけが必要な場合には、ソフトウェア実装のビットミキサを利用すれば演算時間を大幅に節約することができる。
【０１０９】
一例を挙げると、ソフトウェア実装に適したビットミキサの種類として、ローテーションを付加したＸＯＲ（ＲＡＸ）構成に基づくものがある。以下に、Ｃついて６４ビットの例を示す。ハードコーティングされた定数であるサブ鍵が、鍵記憶部のサブ鍵の代わりに用いられる。下記の例では、関数ＲＯＬは、左ローテーション（ROtate-Left）させる関数である。Ｌ及びＲは、例えば、４及び９などの小さな定数であり、内部変数ｋは、０に初期化される。
【数７】
2018109750.tif 000009
【０１１０】
この他にも、多くの用途に置いてビットミキサは有用である。ビットミキサの鍵だけでなく、その入力及び／又は出力も観察者から秘匿しておくことができれば、特別なセキュリティ要件は不要になる。あるいは、入力及び出力が可視である設計において高いセキュリティを確保するための暗号や他の暗号関数にくらべてセキュリティ要件が緩和される。ハードウェアのビットミキサは、非常に高速であり、相関性のある入力から十分に相関性を弱めた出力を生成することができ、サイドチャネル漏洩の可能性も低い。これらの特徴を有するビットミキサを暗号関数に用いれば、セキュリティが改善される。
【０１１１】
さらに、本開示は、以下の付近による実施形態も包含する。
【０１１２】
付記１：暗号処理のための１つ以上のラウンド鍵を生成する方法であって、１つ以上の第１入力（１１０５）及び１つ以上の第２入力（１１０５）を取得することと、少なくとも１つの電気回路によって、前記１つ以上の第１入力及び前記１つ以上の第２入力のそれぞれに対してビットミキサ処理（５００、６００、７００、１０００）を実行する（１１１０）ことと、少なくとも１つの電気回路によって、１つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成する（１１１５）ことと、を含む方法。
【０１１３】
付記２：前記１つ以上の第２入力（１１０５）は、ランダムに生成された固定データ、又は、１つ以上の前のラウンド鍵、又は、ラウンド数を含む、付記１に記載の方法。
【０１１４】
付記３：前記１つ以上の第１入力（１１０５）は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵を含むか、又は、暗号鍵を含む、付記１に記載の方法。
【０１１５】
付記４：前記１つ以上の第１入力をより短い鍵から生成することをさらに含み、これに際し、暗号化処理、ハードコーディングされた鍵データを利用するビットミキサ、カウンタ入力、又は、これらの組合せを適用する、付記３に記載の方法。
【０１１６】
付記５：前記暗号関数は、サイファ、ハッシュ関数又はストリームジェネレータを含む、付記４に記載の方法。
【０１１７】
付記６：前記鍵データは秘匿データであり、通信者間で共有されるか、又は、ハードコーディングされるか、又は、ランダムに生成される、付記２に記載の方法。
【０１１８】
付記７：前記暗号鍵の部分ごとに、ハードコーディングされた鍵データの部分との排他的論理和演算ＸＯＲを実行することにより、前記暗号鍵を前記鍵データと結合する、付記２に記載の方法。
【０１１９】
付記８：前記ビットミキサを選択することをさらに含み、前記ビットミキサ処理が有する特性は、すべての入力ビットがすべての出力ビットに影響すること、前記入力ビットの１ビットを変更すると、平均して半数の出力ビットが変化すること、よって、前記入力ビットを変更すると、前記入力ビット又は前記入力に加えた変更のパターンに対する相関性を持たない出力値が生成されること、鍵を利用することで、前記鍵を知らない観察者には処理の挙動が予測不可能になっていること、及び、前記入力ビット及び出力値の各固定長が任意に独立して選択可能であること、を含む、付記１記載の方法。
【０１２０】
付記９：前記ラウンド鍵の生成はＸＯＲツリー（１０００）によって行われ、さらに、前記ビットミキサ処理の出力に対して、スクランブル処理を実行することを含む、付記１に記載の方法。
【０１２１】
付記１０：前に生成された前記１つ以上のラウンド鍵でデータブロックを生成することをさらに含む、付記１に記載の方法。
【０１２２】
付記１１：前記実行と前記１つ以上のラウンド鍵の前記生成を、所与の暗号化方式用に繰り返すことをさらに含む、付記１に記載の方法。
【０１２３】
付記１２：前記ビットミキサ処理は、マージ対象のデータを選択するための複数の否定論理積ＮＡＮＤゲート若しくは複数のマルチプレクサを含む排他的論理和ＸＯＲツリー（１０００）、又は、換字・転置ネットワーク（７００）、又は、二重撹拌ファイステルネットワーク（５００、６００）、又は、ローテーション付きＸＯＲ（ＲＡＸ）構成を含む、付記１に記載の方法。
【０１２４】
付記１３：前記ＸＯＲツリー（１０００）は、さらに、前記１つ以上の第１入力のうちの各第１入力に対し、前記１つ以上の第２入力のうちの各第２入力との否定論理積演算ＮＡＮＤを実行して、前記複数の第１入力のうち、論理演算ＸＯＲに入力するものを選択することを含み、前記ＸＯＲツリーは、前記複数の第１入力のうち入力として使用されたものに対する出力を生成する、付記１２に記載の方法。
【０１２５】
付記１４．前記ＸＯＲツリーの前記出力に対してスクランブル処理を実行して、前記ビットミキサ関数を非線形にすることをさらに含む、付記１３に記載の方法。
【０１２６】
付記１５：前記換字・転置ネットワーク（７００）は、さらに、前記複数の第１入力のそれぞれに対して、非線形の換字処理を実行することと、前記換字処理の各出力に対して転置処理を実行することと、前記転置処理の各出力に対し、前記第１入力のうち１つ又は前記第２入力のうちの１つとのＸＯＲ演算を実行することを含む、付記１２に記載の方法。
【０１２７】
付記１６：前記二重撹拌ファイステルネットワーク（５００、６００）において、前記１つ以上の第１入力は、それぞれ最初の左半分データと最初の右半分データとに分割され、前記方法は、さらに、複数のラウンドの各ラウンドにおいて、更新後の左半分データと更新後の右半分データとを算出することを含み、前記更新後の左半分データを算出することは、入力された左半分データに第１関数を適用して第１結果を生成し、前記第１結果を、入力された右半分データと撹拌することを含み、前記更新後の右半分データを算出することは、前記入力された左半分データに第２関数を適用して第２結果を生成し、前記第２結果をラウンド鍵と撹拌することを含み、前記入力された左半分データ及び入力された右半分データは、前記複数のラウンドのうちの最初のラウンドでは、前記最初の左半分データ及び前記最初の右半分データであり、以降の各ラウンドでは、直前のラウンドにおける更新後の左半分データと更新後の右半分データである、付記１２に記載の方法。
【０１２８】
付記１７：暗号処理のための１つ以上のラウンド鍵を生成するシステムであって、１つ以上の論理回路を含み、前記１つ以上の論理回路は、１つ以上の第１入力及び１つ以上の第２入力を取得し（１１０５）、少なくとも１つの電気回路によって、前記１つ以上の第１入力及び前記１つ以上の第２入力のそれぞれに対してビットミキサ処理（５００、６００、７００、１０００）を実行し（１１１０）、及び、少なくとも１つの電気回路により、１つ以上のラウンド鍵を前記ビットミキサ処理に基づいて生成する（１１１５）よう動作する論理回路である、システム。
【０１２９】
付記１８：前記１つ以上の第１入力（１１０５）は、複数の等サイズの鍵データサブブロックに分割された鍵データからの複数の等サイズのサブ鍵、又は、暗号鍵を含むとともに、前記１つ以上の第２入力（１１０５）は、ランダムな入力、１つ以上の前のラウンド鍵、又は、ラウンド数を含む、付記１７に記載のシステム。
【０１３０】
付記１９：前記暗号処理は、サイファ、ハッシュ関数又はストリームジェネレータを含む、付記１７に記載のシステム。
【０１３１】
付記２０：前記ビットミキサ処理は、排他的論理和ＸＯＲツリー（１０００）、又は、換字・転置ネットワーク（７００）、又は、二重撹拌ファイステルネットワーク（５００、６００）、又は、ローテーション付きＸＯＲ（ＲＡＸ）構成を含む、付記１７に記載のシステム。
【０１３２】
簡潔性及び例示の観点から、主に本開示の様々な例示的な実施態様に言及して本開示の原理について説明した。しかしながら、当業者には容易に理解されるように、同じ原理がすべての種類の情報及びシステムについて同様に適用可能であり、また実施可能である。また、そのような変形例は、いずれも本開示の思想及び範囲から逸脱するものではない。加えて、上述の詳細な説明において参照している添付図面は、特定の実施態様を例として示している。これら例示的な実施態様には、本願の思想及び範囲から逸脱することなく、電気的、機械的、論理的及び構造的な変更が可能である。したがって、上述の説明は、限定的な意味に解釈されるべきではなく、本開示の範囲は、添付の請求の範囲及びその均等範囲により定められるものである。
【０１３３】
本明細書で使用した用語及説明は、あくまでも説明のためのものであり、限定として解釈されるべきではない。例えば、方法は、開始から終了まで順に説明したが、これらの方法ステップは、説明とは異なる順で実行することも、あるいは、同時に実行することも可能である。さらに、詳細な説明又は請求の範囲において、「含み」、「含む」、「有し」、「有する」、「備える」等、種々の表現が用いられているが、これらは、他の要素が排除されず、包括的に具備されることを意図したものである。本明細書において、「〜のうちの１つ以上」という表現が、例えば、アイテムＡ及びＢからなるリストについて用いられる場合、これらの表現は、Ａのみ、Ｂのみ、或いは、Ａ及びＢであることを意味する。これらの変形やその他の変形が可能なことは、当業者であれば認識できるであろう。
【０１３４】
本明細書及び本開示の実施に鑑みれば、本開示に即したその他の実施態様も当業者には明らかであろう。明細書及び実施例の記載は、あくまでも例示であり、本開示の真の範囲及び思想は、添付の請求の範囲に示される。
【図１】
2018109750.tif 000010
【図２】
2018109750.tif 000011
【図３】
2018109750.tif 000012
【図４】
2018109750.tif 000013
【図５】
2018109750.tif 000014
【図６】
2018109750.tif 000015
【図７】
2018109750.tif 000016
【図８Ａ】
2018109750.tif 000017
【図８Ｂ】
2018109750.tif 000018
【図８Ｃ】
2018109750.tif 000019
【図９】
2018109750.tif 000020
【図１０】
2018109750.tif 000021
【図１１】
2018109750.tif 000022
【外国語明細書】
2018109750000001.pdf
2018109750000002.pdf
2018109750000003.pdf
2018109750000004.pdf