(57)【要約】  様々な特徴は、高度暗号化規格(AES)ブロック暗号などの暗号法暗号に関する。本明細書で説明するいくつかの例では、修正されたマスクされたAES SubBytes手順が、GF(22)におけるそれ自体の逆元である静的ルックアップテーブルを使用する。静的ルックアップテーブルは、GF(22)における非線形置換演算の間に乗法逆元の計算を促進する。AES暗号化の例では、AESデバイスは、組合せデータを取得するために平文とラウンド鍵とを組み合わせ、次いで置換データを取得するためにGF(22)におけるマスクされた乗法逆元を実行するために静的ルックアップテーブルおよび動的テーブルを利用するAES SubBytes置換ステージを通して組合せデータをルーティングする。次いで、置換データは、暗号文を生成するために追加の暗号法AESステージを通してルーティングされる。追加のステージは、同じく静的および動的テーブルを活用するさらなるSubBytesステージを含んでよい。他の例は、静的ルックアップテーブルまたは動的ルックアップテーブルのいずれかを利用するが、両方を利用することはない。
2018508044.tif 000002
【特許請求の範囲】
【請求項１】
暗号法デバイス内で動作可能な方法であって、
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせるステップと、
置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、
前記置換データを取得するためにすべての置換演算が転置を使用して実装される前記有限体の前記部分体内の動的ルックアップテーブル、または
前記置換データを取得するために必要なすべての転置を静的に記憶する前記有限体の前記部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して前記組合せデータの少なくとも一部をルーティングするステップと、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングするステップとを含む、方法。
【請求項２】
前記暗号法演算が暗号化演算であり、前記入力データが平文であり、前記出力データが暗号文である、請求項1に記載の方法。
【請求項３】
前記暗号法演算が復号演算であり、前記入力データが暗号文であり、前記出力データが平文である、請求項1に記載の方法。
【請求項４】
前記組合せデータが、平文の一部、マスクされた平文の一部、平文の関数である値、マスクされた平文の関数である値、暗号文の一部、マスクされた暗号文の一部、暗号文の関数である値、およびマスクされた暗号文の関数である値のうちの1つまたは複数を含む、請求項1に記載の方法。
【請求項５】
前記入力データとラウンド鍵とを組み合わせるステップが、AES暗号のAddRoundKeyステージを通して前記入力データをルーティングするステップを含み、前記入力データの初期状態の各バイトが、ラウンド鍵のブロックと組み合わされる、請求項1に記載の方法。
【請求項６】
前記暗号法演算が暗号化演算であり、前記置換ステージが、暗号化のためにそれ自体の逆元である前記静的ルックアップテーブルを使用してバイトの非線形置換を実行するように動作可能なマスクされたSubBytesステージである、請求項5に記載の方法。
【請求項７】
前記暗号法演算が復号演算であり、前記置換ステージが、復号のために前記静的ルックアップテーブルを使用してバイトの非線形置換を実行するように動作可能なマスクされたInvSubBytesステージである、請求項5に記載の方法。
【請求項８】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項1に記載の方法。
【請求項９】
前記置換ステージが、GF(22)におけるマスクされた乗法逆元演算を実行するように動作可能である、請求項8に記載の方法。
【請求項１０】
GF(22)における前記マスクされた乗法逆元演算が、GF(28)から分解された塔の体(GF(22)2)2を活用する、請求項9に記載の方法。
【請求項１１】
それ自体の逆元である前記静的ルックアップテーブルが、GF(22)における[・]={00, 01, 10, 11}およびそれの転置のうちの1つまたは複数である、請求項8に記載の方法。
【請求項１２】
前記置換ステージの動的ルックアップテーブルを、それ自体の逆元である前記静的テーブルとともに活用するステップをさらに含み、前記動的ルックアップテーブルが、入力マスクおよび出力マスクを受け取り、前記入力マスクによって訂正されたインデックスを有する前記出力マスクによってマスクされたそれ自体の逆元である前記静的テーブルに対応するマスクされたテーブルを生成する、請求項8に記載の方法。
【請求項１３】
前記置換ステージの前記動的ルックアップテーブルが、GF(24)におけるマスクされた逆元の低部および高部を決定するために利用される、請求項12に記載の方法。
【請求項１４】
処理回路であって、
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせることと、
置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、
前記置換データを取得するためにすべての置換演算が転置を使用して実装される前記有限体の前記部分体内の動的ルックアップテーブル、または
前記置換データを取得するために必要なすべての転置を静的に記憶する前記有限体の前記部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して前記組合せデータの少なくとも一部をルーティングすることと、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングすることとを行うように構成された、処理回路と、
前記出力データを記憶するように構成されたストレージデバイスとを備える、暗号法デバイス。
【請求項１５】
前記暗号法演算が暗号化演算であり、前記入力データが平文であり、前記出力データが暗号文である、請求項14に記載のデバイス。
【請求項１６】
前記暗号法演算が復号演算であり、前記入力データが暗号文であり、前記出力データが平文である、請求項14に記載のデバイス。
【請求項１７】
前記組合せデータが、平文の一部、マスクされた平文の一部、平文の関数である値、マスクされた平文の関数である値、暗号文の一部、マスクされた暗号文の一部、暗号文の関数である値、およびマスクされた暗号文の関数である値のうちの1つまたは複数を含む、請求項14に記載のデバイス。
【請求項１８】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項14に記載のデバイス。
【請求項１９】
前記置換ステージが、GF(22)におけるマスクされた乗法逆元演算を実行するように動作可能である、請求項18に記載のデバイス。
【請求項２０】
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせるための手段と、
置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、前記置換データを取得するためにすべての置換演算が転置を使用して実装される前記有限体の前記部分体内の動的ルックアップテーブル、または前記置換データを取得するために必要なすべての転置を静的に記憶する前記有限体の前記部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して前記組合せデータの少なくとも一部をルーティングするための手段と、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングするための手段とを含む、暗号法デバイス。
【請求項２１】
前記暗号法演算が暗号化演算であり、前記入力データが平文であり、前記出力データが暗号文である、請求項20に記載のデバイス。
【請求項２２】
前記暗号法演算が復号演算であり、前記入力データが暗号文であり、前記出力データが平文である、請求項20に記載のデバイス。
【請求項２３】
前記組合せデータが、平文の一部、マスクされた平文の一部、平文の関数である値、マスクされた平文の関数である値、暗号文の一部、マスクされた暗号文の一部、暗号文の関数である値、およびマスクされた暗号文の関数である値のうちの1つまたは複数を含む、請求項20に記載のデバイス。
【請求項２４】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項20に記載のデバイス。
【請求項２５】
前記置換ステージが、GF(22)におけるマスクされた乗法逆元演算を実行するように動作可能である、請求項24に記載のデバイス。
【請求項２６】
暗号法とともに使用するための機械可読記憶媒体であって、少なくとも1つの処理回路によって実行されたとき、前記少なくとも1つの処理回路に、
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせることと、
置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、
前記置換データを取得するためにすべての置換演算が転置を使用して実装される前記有限体の前記部分体内の動的ルックアップテーブル、または
前記置換データを取得するために必要なすべての転置を静的に記憶する前記有限体の前記部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して前記組合せデータの少なくとも一部をルーティングすることと、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングすることとを行わせる1つまたは複数の命令を有する、機械可読記憶媒体。
【請求項２７】
前記暗号法演算が暗号化演算であり、前記入力データが平文であり、前記出力データが暗号文である、請求項26に記載の記憶媒体。
【請求項２８】
前記暗号法演算が復号演算であり、前記入力データが暗号文であり、前記出力データが平文である、請求項26に記載の記憶媒体。
【請求項２９】
前記組合せデータが、平文の一部、マスクされた平文の一部、平文の関数である値、マスクされた平文の関数である値、暗号文の一部、マスクされた暗号文の一部、暗号文の関数である値、およびマスクされた暗号文の関数である値のうちの1つまたは複数を含む、請求項26に記載の記憶媒体。
【請求項３０】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項26に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、内容全体が参照により本明細書に組み込まれる、2015年3月9日に米国特許商標庁に出願された、米国非仮出願第14/642,591号の優先権および利益を主張する。
【０００２】
様々な特徴は、暗号化および復号のための暗号法暗号(cryptographic cipher)に関し、詳細には、高度暗号化規格(AES)暗号または他の対称鍵暗号に関する。
【背景技術】
【０００３】
高度暗号化規格(AES)は、同じ鍵が暗号化および復号に使用される対称鍵を用いる電子データの暗号化および復号に使用するために、2001年に米国標準技術局(NIST)によって確立された。AESのいくつかの実装形態は、GF(28)など、ガロア体(GF)上の有限体代数を活用する。一般的に、AES暗号は、暗号化されるべき平文の現在の「状態(state)」の各バイトがラウンド鍵(主暗号鍵から導出される)と組み合わされる、初期AddRoundKey演算から始まる。「状態」は、4×4のバイトのマトリクスである。その後、各暗号化ラウンドは、通常、(1)各バイトがルックアップテーブル(すなわち、「S-box」)または他の適切な置換ガイドに従って別のものと置き換えられる非線形置換ステップであるSubBytesステージ、(2)状態の最後の数行が巡回的に一定数のステップをシフトされる転移(transposition)ステップであるShiftRowsステージ、(3)状態の列上で演算する混合演算であり、各列内の4つのバイトを組み合わせるMixColumnsステージ、および(4)別のAddRoundKeyステージの4つの主ステージを含む。ステージの番号付けは任意であってよく、初期のAddRoundKeyステージを「第1の」ステージと代わりに呼ぶこともあり、それによってSubBytesステップは「第2の」ステージとなることに留意されたい。
【０００４】
実際的なAESハードウェアデバイスの設計における課題は、稠密度と性能との間の効果的なトレードオフを達成することであり、ここで全体的性能は、処理速度ならびにセキュリティなどの他の要因、たとえば暗号鍵を取得するために探索するサイドチャネル攻撃耐性によって影響を受ける。セキュリティを改善して攻撃から防護するために、特にSubBytesステージの間、マスキング演算が実行されてよい。暗号化または復号の間に少数の中間値を観測することで、秘密鍵などの機密の変数についての情報を与えることがないように、暗号の内部状態をランダム化するステップを伴うマスキングは、サイドチャネル攻撃に対する対抗手段である。AES内でマスキングに対応するために、8ビット乱数生成器を動的ルックアップテーブルなどの追加の回路とともに利用する乗法逆元演算が実行されてよい。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Canrightら: A Very Compact "Perfectly Masked" S-Box for AES(訂正済み)、IACR Cryptology ePrint Archive 2009: 11 (2009)
【非特許文献２】Canright, A Very Compact S-Box for AES. CHES 2005
【非特許文献３】Canright, A Very Compact Rijndael S-box, Naval Postgraduate School Technical Report: NPS-MA-05-001
【非特許文献４】Canright: Avoid Mask Re-use in Masked Galois Multipliers. IACR Cryptology ePrint Archive 2009:12 (2009)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
セキュリティを低減することなく処理効率を改善するためおよび/または有限体代数を活用する他の暗号の対応する置換ステージ内に同様の修正をもたらすために、マスクされたAESシステム内のSubBytesステージ(および任意の対応するInvSubBytesステージ)を修正することは有用である。
【課題を解決するための手段】
【０００７】
暗号法デバイス内で動作可能な方法は、組合せデータを取得するために暗号法演算の一部として入力データとラウンド鍵とを組み合わせるステップと、置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、置換データを取得するためにすべての置換演算が転置を使用して実装される有限体の部分体内の動的ルックアップテーブル、または置換データを取得するために必要なすべての転置を静的に記憶する有限体の部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して組合せデータの少なくとも一部をルーティングするステップと、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データをルーティングするステップとを含む。
【０００８】
別の態様では、暗号法デバイスは、処理回路であって、組合せデータを取得するために暗号法演算の一部として入力データとラウンド鍵とを組み合わせることと、置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、置換データを取得するためにすべての置換演算が転置を使用して実装される有限体の部分体内の動的ルックアップテーブル、または置換データを取得するために必要なすべての転置を静的に記憶する有限体の部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して組合せデータの少なくとも一部をルーティングすることと、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データをルーティングすることとを行うように構成された、処理回路と、出力データを記憶するように構成されたストレージデバイスとを含む。
【０００９】
さらに別の態様では、暗号法デバイスは、組合せデータを取得するために暗号法演算の一部として入力データとラウンド鍵とを組み合わせるための手段と、置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、置換データを取得するためにすべての置換演算が転置を使用して実装される有限体の部分体内の動的ルックアップテーブル、または置換データを取得するために必要なすべての転置を静的に記憶する有限体の部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して組合せデータの少なくとも一部をルーティングするための手段と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データをルーティングするための手段とを含む。
【００１０】
さらに別の態様では、暗号法とともに使用するための機械可読記憶媒体は、少なくとも1つの処理回路によって実行されたときに、少なくとも1つの処理回路に、組合せデータを取得するために暗号法演算の一部として入力データとラウンド鍵とを組み合わせることと、置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、置換データを取得するためにすべての置換演算が転置を使用して実装される有限体の部分体内の動的ルックアップテーブル、または置換データを取得するために必要なすべての転置を静的に記憶する有限体の部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して組合せデータの少なくとも一部をルーティングすることと、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データをルーティングすることとを行わせる1つまたは複数の命令を含む。
【図面の簡単な説明】
【００１１】
【図１】マスクされたSubBytesおよびInvSubBytes演算を利用する例示的なマスクされたAES暗号化および復号のシステムおよび方法を示す図である。
【図２】図1のAESシステムおよび方法とともに使用するための例示的なマスクされたSubBytesプロセッサを示す図である。
【図３】SubBytesまたはInvSubBytesなどのマスクされた置換演算を促進するために、それ自体の逆元である静的ルックアップテーブルを活用するための、AES暗号法デバイスが使用するための例示的な手順を示す図である。
【図４】暗号化/復号のためのマスクされた置換演算を促進するために、それ自体の逆元である静的ルックアップテーブルを有するAESプロセッサをシステムオンチップ(SoC)が含む、モバイルデバイスの例示的なSoCを示す図である。
【図５】GF(22)静的および動的ルックアップテーブルを活用するマスクされたSubBytesおよびInvSubBytes演算を利用する例示的なマスクされたAES暗号化および復号のシステムおよび方法を示す図である。
【図６】SubBytesプロセッサがGF(22)静的および動的ルックアップテーブルを活用する、図5のAESシステムおよび方法とともに使用するための例示的なマスクされたSubBytesプロセッサを示す図である。
【図７】静的および動的ルックアップテーブルを活用するAES SubByte処理に対するGF(22)における例示的なマスクされた反転を示す図である。
【図８】GF(22)における静的および動的ルックアップテーブルを活用するマスクされたSubBytesプロセッサの例示的な構成要素を示す図である。
【図９】図3〜図8のシステム、方法、および装置を活用することができる処理システムを用いる装置に関するハードウェア実装形態の一例を示すブロック図である。
【図１０】静的テーブルと動的テーブルの両方が置換ステージ内で利用されるハイブリッド実装形態とともに使用するための、図9の処理回路の例示的な構成要素を示すブロック図である。
【図１１】図9の機械可読媒体の例示的な命令構成要素を示すブロック図である。
【図１２】暗号法デバイスが使用するための例示的な手順を要約する図である。
【図１３】暗号法デバイス、とりわけAESブロック暗号が使用するための追加の例示的な手順を要約する図である。
【図１４】対応する静的テーブルなしに動的なテーブルが置換ステージ内で利用される一実装形態とともに使用するための、図9の処理回路の例示的な構成要素を示すブロック図である。
【図１５】図14の機械可読媒体の例示的な命令構成要素を示すブロック図である。
【図１６】対応する動的テーブルなしに静的テーブルが置換ステージ内で利用される一実装形態とともに使用するための、図9の処理回路の例示的な構成要素を示すブロック図である。
【図１７】図14の機械可読媒体の例示的な命令構成要素を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下の説明では、本開示の様々な態様を完全に理解できるように、具体的な詳細が与えられる。しかしながら、各態様がこれらの具体的な詳細なしに実施されてもよいことが、当業者には理解されよう。たとえば、回路は、不必要な詳細で態様を不明瞭にすることを避けるために、ブロック図で示されることがある。他の事例では、周知の回路、構造、および技法は、本開示の態様を不明瞭にしないために、詳細には示されないことがある。
【００１３】
「例示的な」という語は、本明細書において、「例、実例、または例証としての役割を果たすこと」を意味するために使用される。本明細書で「例示的」として説明されている任意の実施形態または態様は、必ずしも本開示の他の態様よりも好ましいまたは有利であると解釈されるべきではない。同様に、「態様」という用語は、本開示のすべての態様が、議論された特徴、利点、または動作モードを含むことを必要としない。
【００１４】
概説
いくつかの新規の特徴は、AESに従って構成されたシステムなどの暗号法システムとともに使用するためのデバイスおよび方法に関する。
【００１５】
図1は、バイト置換ステージであるSubBytesおよびInvSubBytesのステージの間にマスキングが利用される、暗号化100および復号101のための例示的なAESシステムのステージを示す。102において始まる暗号化に対して、初期のAddRoundKey演算が入力された平文に対して実行され、現在の状態の各バイトが、ラウンド鍵のブロックと組み合わされる。上述のように、「状態」は、4×4のバイトのマトリクスである。すなわち、AddRoundKeyの間、たとえば、各副鍵が状態と同じサイズであるラインドールの鍵スケジュールを使用して、副鍵が主鍵から導出される。次いで、副鍵は、ビットごとにXORを使用して状態の各バイトと副鍵の対応バイトとを組み合わせることによって加えられる。初期のAddRoundKey演算に続いて、暗号化ラウンド103が実行され、各ラウンドは、マスクされたSubBytesステージ104と、ShiftRowsステージ106と、MixColumnsステージ108と、別のAddRoundKeyステージ110とを含む。マスクされたSubBytesステージ104は、標準的AES SubBytesステージのマスクされたバージョンである。マスクされたSubBytesステージでは、状態マトリクス内の各バイトは、置換デバイスまたはプロセッサを使用して対応SubBytesと置き換えられ、そこにおいてマスキングがもたらされる。マスクされた置換は、同じくサイドチャネル攻撃に対する対抗手段として働きながら、暗号内に非線形をもたらす。いくつかの従来のAESの例では、SubBytesデバイスは、GF(28)にわたって乗法逆元を計算し、ここでGF(28)はガロア体(すなわち、有限体)である。以下で説明するように、代わりに、修正バージョンは、GF(22)部分体を使用して乗法逆元を実行することができる。暗号化ラウンド103の完了に続いて最後の暗号化ラウンド114が実行され、最後の暗号化ラウンド114は、最後のマスクされたSubBytesステージ116と、最後のShiftRowsステージ118と、最後のAddRoundKeyステージ120とを含む。出力は、暗号化された暗号文である。
【００１６】
復号101は、暗号文を平文に変換するように逆に演算する。簡略に言えば、124において始まって、初期のAddRoundKey演算が入力された暗号文に対して実行され、現在の状態の各バイトが、ラウンド鍵のブロックと組み合わされる。初期のAddRoundKey演算に続いて、復号ラウンド134が実行され、各ラウンドは、InvShiftRowsステージ126と、マスクされたInvSubBytes置換ステージ128と、InvMixColumnsステージ130と、別のAddRoundKeyステージ132とを含む。マスクされたInvSubBytesステージ104は、標準的AES InvSubBytesステージの修正バージョンである。復号ラウンド134に続いて最後の復号ラウンド136が実行され、最後の復号ラウンド136は、最後のInvShiftRowsステージ138と、最後のマスクされたInvSubBytes置換ステージ140と、最後のAddRoundKeyステージ142とを含み、最後の復号ラウンド136の出力は復号された平文である。
【００１７】
図2は、マスクされたSubBytes置換デバイスまたはプロセッサ200を示し、マスクされたSubBytes置換デバイスまたはプロセッサ200は、Am=(A+m)およびm、すなわちマスクされた値Amおよび入力マスクmの2つの入力を受け取り、ここでAは暗号化されるべきデータの現在状態の1バイトを表す。出力は、マスクされた逆元Am-1および出力マスクm'であり、ここでマスクされた逆元は、Am-1=(A-1+m')によって表されてもよい。マスクされたSubByteプロセッサ200を実装するステップは、一般的に、乗法逆元とアフィン変換とを実行するためにSubByte回路を必要とする。GF(28)の場合、SubBytes演算は、(1)体の要素またはバイトの逆元を計算すること、および(2)アフィン変換を実行するために、得られた逆元(GF(28)におけるビットのベクトルとして表される)と1ビットマトリクスとを乗算して定数ベクトルを加算すること、の2つの主たるサブステップを利用する。これらの演算は、図2に示されていない、プロセッサ200によって内部で生成される様々なランダムビットを活用してもよい。逆元を計算するステップは、時間および/または回路面積の観点から計算コストが高くなり得る。AESのGF実装形態に対して、バイトは多項式と見なされてよく、そこにおいて、ビットは対応する多項式のべき乗の係数であり、乗算は既約多項式を法とする。しかしながら、GF(2)にわたって8次元のベクトルを使用する代わりに、GF(24)にわたって2次元のベクトルを表すための1バイトを定義することができ、ここで各4ビットの要素はGF(22)にわたる2次元のベクトルであり、各2ビットの要素はGF(2)にわたる2次元のベクトルである。これは、合成体または塔の体(tower field)表現と呼ばれる場合がある。したがって、8ビット逆元演算はいくつかの4ビット演算に変換され、各々は2ビットの計算を利用する。Canrightら:A Very Compact "Perfectly Masked" S-Box for AES(訂正済み)、IACR Cryptology ePrint Archive 2009: 11 (2009)を参照のこと。合成体または塔体技法は、マスクされたSubByte演算ならびにアンマスクされたSubBytesに適用されてよい。
【００１８】
乗法逆元を計算するための前述の構成要素に加えて、従来のマスクされたSubByteプロセッサは、8ビット乱数生成器と、特定の実装形態に依存する場合がある追加の回路とを含む。たとえば、ルックアップテーブルは、いくつかの演算を促進するために設けられてよいが、これは、一般的に、追加のメモリを必要とし、したがってより多くの回路スペースを消費する。述べたように、合成体計算に対して、演算は、AES演算が実行される体の部分体を使用して実行される。この点について、合成体計算とともに使用するための乗法逆元の計算は、一般的に、たとえばGF(22)におけるCanright様の実装形態の場合には6つの新しいランダムビットの生成と、GF(22)およびGF(24)に対する補正項を計算するためにクリティカルパスに並列する追加の演算とを必要とする。また、一般的に、追加の演算が、セキュリティを改善し、補正項を適用するためにクリティカルパス上でもたらされる。また、様々なCanright様実装形態に対して、Canright, A Very Compact S-Box for AES. CHES 2005、Canright, A Very Compact Rijndael S-box, Naval Postgraduate School Technical Report: NPS-MA-05-001、Canright: Avoid Mask Re-use in Masked Galois Multipliers. IACR Cryptology ePrint Archive 2009:12 (2009)を参照のこと。
【００１９】
GF(22)における例示的なマスクされない反転では、B=[b1,b0]の入力に基づいて下式を計算するために、AESデバイス内に回路が設けられ、ここでb1およびb0は2つの2ビットペア、すなわちb1=(b11, b10)およびb0=(b01, b00)である。
中間計算:c=n×(b1+b0)2+(b1×b0)   (1)
中間計算:c-1=c2   (2)
【００２０】
【数１】
2018508044.tif 000003
【００２１】
これらの式では、nは定数であり、cは統合値(consolidation value)である。これらの式における「×」および「+」の演算はそれぞれ、ガロア体における乗算および加算の演算を示し、したがって通常の算術演算ではないことに留意されたい。具体的には、演算(1)、(2)ならびにpおよびqの計算は、GF(22)における乗算であり、ここでpおよびqは、B-1の上部および下部であり、B-1はGF(22)の要素である。
【００２２】
GF(22)における例示的なマスクされた反転に対して、Bm=[b1m, b0m], [q1m, q0m]の入力による以下の演算、
中間計算:cm=r+n×(b1m+b0m)2+(b1m×b0m)+
+n×(q1+q0)2+(q1+q0)+
+(b1m×q0)+(b0m×q1)   (4)
【００２３】
【数２】
2018508044.tif 000004
【００２４】
【数３】
2018508044.tif 000005
【００２５】
を実行するために、回路が代わりに設けられる。
これらの式では、q1m、q0mは2つの2ビット入力マスク値を表し、b1m、b0mは2つの2ビットのマスクされた入力値(すなわち、これらは、図2に示すマスクされた入力バイトAmのGF(22)成分である)を表し、nは再び定数であり、rは2つの2ビットの新しいマスクであり、tiもまた2ビットの新しいマスクである。中間値cmは統合値(consolidated value)であり、セキュアなマスクされた反転の実行によって計算される。rおよびtiの新しいマスクは、乱数生成器を使用してプロセッサ200によって内部的に生成され、セキュリティを改善するために統合ステージにおいて加算される。なぜならば、それらがなければ、計算する間に情報が漏洩する可能性があるからである。最終結果において、b0m +r2+...で始まる項は、補正項である。同様に、最終結果において、b1m x r2+...で始まる項もまた、補正項である。再び、これらの式における「×」および「+」の演算はそれぞれ、ガロア体における乗算および加算の演算を示すことに留意されたい。
【００２６】
【数４】
2018508044.tif 000006
【００２７】
の計算と同様に、
pmおよびqm、
【００２８】
【数５】
2018508044.tif 000007
【００２９】
の上部および下部の計算は、GF(22)におけるセキュアな乗算を使用して計算される。GF(28)ではなくGF(22)におけるこれらの演算を実行することで、入力から出力へのマスクの伝播は、セキュリティを保持しながら簡略化される。なぜならば、観測可能な中間値は、計算されている実際の値とまったく相関しないからである。しかしながら、計算はかなり複雑であり、したがって時間がかかり、述べたように、乱数生成器が内部の新しいビットを生成するために必要である。
【００３０】
したがって、合成体計算(たとえば、GF(22))の使用により、SubBytesの乗法逆元の複雑度は標準的GF(28)実装と比較して低減され得るが、マスクされたSubBytesプロセッサ200は、依然として、比較的多量の回路スペースを必要とし、比較的多量の時間を消費する場合があり、全体的性能に負担をかける。プロセッサ内の乱数生成器の使用により、プロセッサの処理速度が制限され得る。同様の問題が、暗号化部分のマスクされたSubBytesデバイスの逆元として動作する、AESの復号部分の対応するマスクされたInvSubBytesデバイスまたはプロセッサに当てはまる。
【００３１】
図3は、AES暗号のSubBytesステージもしくはInvSubBytesステージの間、または有限体内で合成体演算を活用する暗号法デバイスの対応する置換演算内で置換演算の数を低減するために、少なくともいくつかの実装形態において使用され得る修正された置換手順300を要約する。乱数生成器は、この手順を使用して内部の新しいビットを生成するために不要であるが、セキュリティは維持される。SubBytesデバイス内で乱数生成器の使用を回避することによって、処理速度は、上記の式(4)、(5)および(6)の結果を計算するデバイスと比較して改善される。しかしながら、このハイブリッド実装形態では、静的ルックアップテーブルおよび動的ルックアップテーブルとともに、追加の数ビットが必要となる場合がある。この点について、図3の修正されたSubBytes手順は、乗法逆元の計算を促進するために、GF(22)におけるそれ自体の逆元である静的ルックアップテーブルを使用する。
【００３２】
302において開始して、有限体(GF(28)など)内の暗号化または復号のAES暗号法演算の一部として、AESデバイスは、(暗号化のために平文とラウンド鍵とを組み合わせることまたは復号のために暗号文とラウンド鍵とを組み合わせることなどによって)組合せデータを取得するために入力テキスト(本明細書では一般に「データ」と呼ばれる)とラウンド鍵とを組み合わせる。これは、たとえば、暗号化のための図1の初期のAddRoundKey演算102または復号のための初期のAddRoundKey演算124に対応する場合がある。本明細書では、「データ」は、一般に、演算がコンピューティングデバイス(AESデバイスまたはそれの構成要素など)によって実行される、様々な量、特性またはシンボルのうちのいずれかを指す場合があることに留意されたい。GF(22)において動作するコンピューティング構成要素に対して、データは、ステータスの一部分の関数である。
【００３３】
図3の304において、AESデバイスは、置換データを取得するために有限体の部分体(GF(22)など)内のそれ自体の逆元である静的ルックアップテーブルを利用するマスクされたAES置換ステージ(たとえば、暗号化のためのマスクされたSubBytesステージまたは復号のためのマスクされたInvSubBytesステージ)を通して組合せデータの少なくとも一部をルーティングする。これは、たとえば、暗号化のための図1のマスクされたSubBytes演算104の修正バージョン、または復号のための図1のマスクされたInvSubBytes演算128の修正バージョンに対応する場合がある。図3の306において、AESデバイスは、出力データ(たとえば、暗号化のための出力暗号文または復号のための出力の復号された平文)を生成するために1つまたは複数の追加の暗号法AESステージを通して置換されたデータをルーティングする。これは、図1の残りの暗号化ステージまたは復号ステージに対応する場合がある。
【００３４】
有限体がGF(28)であり、部分体がGF(22)である一例では、静的ルックアップテーブルは、GF(22)における1バイトを使用して、
T[・]={00,10,01,11}≡(・)-1   (7)
またはそれの転置として表されてよい。静的ルックアップテーブルに加えて、統合のために、AESデバイスは、前述の補正項(すなわち、入力マスク)が利用可能になるとすぐに、マスクされた項の再計算に使用するために1バイトのサイズの動的テーブルTm[・]を活用してよい。この例では、T[・]およびTm[・]は、別個のテーブルである。したがって、一例では、入力は補正項(入力マスク)T[(・)]および出力マスクの現在の値であり、出力はTm[・]であり、ここでTm[・]は出力マスクの現在の値でマスクされたT[・]であり、それのインデックスは入力マスクによって訂正される。
Tm[i+correction term]=T[i]+output mask for i=0, 1, 2, 3.   (8)
式(8)は、上記の式(4)および(5)の代わりに統合のために使用される。したがって、統合ステージのこの例示的な実装形態では、入力マスクは補正項の役目を果たし、出力マスクは入力マスクの単なる転置である。動的ルックアップテーブル内の要素の計算は、補正項が利用可能になるときにSubBytesステージの他の演算と同時にまたは並行して実行される。静的および動的ルックアップを伴うハイブリッド実装形態は、様々な中間計算のために、および乗法逆元を実行してマスクされたSubBytesステージの最終結果を得るために使用されてよい。
【００３５】
GF(22)部分体のレベルにおいて、転置の数は小さく、すなわち、GF(22)部分体に対して4つの要素が存在するにすぎないことに留意されたい。GF(22)部分体において乗算演算を計算するステップは、部分体の要素のうちのいくつかの転置を実行するステップに対応する(なぜならば、部分体は有限体であり、したがって部分体内のすべての乗算演算は部分体の要素を生じなければならないからである)。したがって、前述の静的テーブルは、様々な転置を記憶するので、乗算演算を効率的に促進するために使用され得る。その上、部分体内における反転は、ビットスワップである。より詳細には、GF(22)において、0の逆元は0、1の逆元は2、2の逆元は1、および3の逆元は3である(ここで、値0、1、2および3は、それらの通常の算術的等価ではなく、GF(22)部分体の許容値を表すように意図されている)。したがって、反転は、単に、静的テーブルを使用して逆値を検索するだけで容易に実行され得る。またさらに、入力値に補正項(すなわち、入力マスク)を加えると、静的テーブルの転置が得られることになることに留意されたい。GF(22)において4つだけの転置、すなわち入力マスクが0のときのアイデンティティテーブル(identity table)と、入力マスクが0でないときの3つの他のバイトとが存在する。それにより、転置は、入力マスクによって選択される。出力は、GF(22)におけるマスクされた入力値で除されたインデックス付けベクトルを使用することによって選択される。したがって、統合は、乱数生成器または任意の複雑な計算を必要とすることなく、簡便に実行される。項は同時に並べ替えられて計算されるので、セキュリティレベルは、上記で説明した前者の技法と実質的に同じである。その上、この技法に対して、任意の所与の時間に1に設定される1バイト中のビットの数は、常に同じである。これは、(場合によっては、秘密情報を取得するためにゼロに設定されるビットの数の変化を活用する場合がある)サイドチャネル攻撃を困難にすることによってセキュリティを維持する。
【００３６】
具体的な例として、以下は、それ自体の逆元であるテーブルTが使用される(および明快のため、数はGF(22)ではなく10進数で表される)アンマスクされた逆元演算を説明する。入力値a=2に対して、それの逆元は、テーブルのa番目の要素を検索することによってテーブルT[a]から取得され、この例では1である。
a=2→|
|
T[a]={0, 2, 1, 3}=a-1
|
|→T[a]=1
同様に、T[0]=0、T[1]=2、など。したがって、上記の演算は、ルックアップテーブルT[・]を用いて実装されるので、正則(すなわち、アンマスクされた)逆元を表す。
【００３７】
マスキングに対して、3つの主たるステップが存在する。
(a)T[・]のすべての要素が入力マスクによって同時に合計され、動的マトリクスTm[・]が生成される。
(b)Tmの要素が、(入力マスクおよび出力マスクが互いに一致して)出力マスクの量だけ左方に巡回的に並べ替えられる。
(c)対応する出力マスクが、入力マスク値を用いてTmをインデックス付けることによって取得される。
【００３８】
GF(22)における反転の中間演算を上記で論じた。乗算に対して、演算は同様であり、主たる差異は、左方へのおよび右方への両転置が許容されなければならないことである。その上、並べ替える要素は、ゼロでない要素だけである(なぜならば、ゼロからの乗算はゼロを返さなければならないからである)。たとえば、アンマスクされた乗算は、以下の演算と合成され得る(ここでもやはり、明快のために数は10進数で表される)、
a=1→|
|
M[a x b]=[0, 0, 0, 0,
0, 1, 2, 3,
b=2→0, 3, 2, 1,
0, 2, 1, 3]
|
|→a x b=3
M[]の各行/列は、すべての体要素{0, 1, 2, 3}を含むアレイの後続の転置によって取得され得ることに留意されたい。たとえば、M[ ]の各行/列は、T[ ]の転置によって取得され得る。単一のベクトルMT[ ]={0, 1, 2, 3}を考察する。オペランドのうちの1つがゼロであればゼロを返し、そうでなければ、非ゼロ要素をbだけ左シフトして、得られたベクトルをaでインデックス付ける。たとえば、a=1およびb=2であれば、MT'[ ]={0, 3, 1, 2}およびMT'[1]=3であり、それは、GF(22)における「a×b」に等しい。
【００３９】
マスクされた乗算「(a+m)×(b+m)」の結果は、以下の演算によって取得されてよい。
(a)マスクされた要素のうちの1つがゼロであるならば、0を返す。
(b)そうでない場合、MT'[ ]のすべての非ゼロ要素が、マスクmによって合計される。
(c)位置0におけるものを除くMT'[ ]のすべての要素は、マスクされたbの量だけ左にシフトされる。
(d)出力a×b+mは、得られたアレイMT'をaのマスクされた値でインデックス付けることによって取得される。
これらの演算は、左方におよび右方にシフト可能な単一の追加のバイトによって、またはフルサイズテーブルなどによって達成され得る。乗算の場合、2つのオペランドのうちの1つがゼロであれば、乗算の結果はゼロでなければならない。また、一般に、デバイスは出力マスクによって合計し、出力マスクは、この場合、マスクによる加算演算が同時に行われるので、入力マスクとして保持され得ることに留意されたい。また、これは、新しいランダムビットを低減してGF(22)におけるマスクを再使用することを可能にするメカニズムである。そうでなければ、たとえば、古典的なCanright様実装形態では、上記の事柄は可能性が低い。また、MTはTとは異なることに留意されたい。その上、MTは、単なるTの要素の巡回シフトによってTから取得することはできない。同様に、Tは、MT内の要素の巡回シフトによって取得され得ない。しかしながら、Tは、MTの位置1および3における要素を並べ替えることによって取得され得、その逆も同様である。
【００４０】
したがって、式(4)および(5)の中間計算は、上記のテーブルルックアップと置き換えられ、乗算演算は、たった今説明した演算を使用する。実際、乗算に対する値の転置の数は、反転に対する数より幾分小さい。式(6)に関する限り、最終結果
【００４１】
【数６】
2018508044.tif 000008
【００４２】
は、2つの2ビットのベクトル、pmおよびqmから構成され、一方はt0から始まり、他方はt1から始まり、それらは内部で生成された新しいビットであることに留意されたい。そのような新しいビットの使用を回避するために、最終の乗算結果は、たった今説明した他の転置に基づく。
【００４３】
したがって、上記の例は、動的テーブルと静的テーブルの両方によるハイブリッド実装形態を利用するマスクされたSubBytesデバイスによって処理されているバイトAmの2つの2ビットBm上で実行される計算を説明する。Amからのビットの他のペアは、特定のバイトのマスクされた反転を一括して計算するために、同様の成分を使用して逐次にまたは並列に処理されてよい。諒解され得るように、多くのそのようなバイトは、AES暗号化の様々なステージの間に処理される。各SubBytesステージの間のビットの各ペアの処理速度における比較的小さい増加によって、最終的に、暗号化を完了するための全体的処理速度における著しい増加を得ることができる。同様の斟酌が、復号のInvSubBytesステージに適用される。また、動的ルックアップテーブルが静的テーブルなしに利用される実装形態が本明細書で説明され、ならびに、静的ルックアップテーブルが動的テーブルなしに利用される実装形態も本明細書で説明される。
【００４４】
次に、これらおよび他の特徴が例示的な実装形態を参照しながら説明され、ここでAES処理デバイスは、スマートフォンまたは同様のユーザアクセス端末デバイス内のシステムオンチップ(SoC)プロセッサの構成要素である。そのようなデバイス内では、回路面積は限定される場合があり、したがって最小の回路面積を消費しながら、高い処理速度において十分なセキュリティを達成するAESプロセッサが、きわめて重要である。しかしながら、暗号法システムの態様は、多様なシステムおよびデバイスにおいて活用することができ、一般的に、どのようなAESまたは同様の暗号法処理が利用されても実装され得る。たとえば、暗号法システムが実装され得る他のハードウェア環境には、スマートカードまたは様々な他の記憶デバイスもしくは通信デバイス、およびそれらとともに使用するための構成要素もしくは周辺デバイスが含まれる。特にスマートカード内では、回路スペースは限定され、クロック速度は比較的遅い場合があり、したがって大きい回路スペースを消費せず、しかも迅速におよび効率的に動作するAESデバイスが有用である。
【００４５】
例示的なSoCハードウェア環境
図4に、様々な新規の特徴を活用できる一例によるモバイル通信デバイスのSoC処理回路400を示す。SoC処理回路は、Qualcomm Incorporated社のSnapdragon(商標)処理回路とすることができる。SoC処理回路400は、マスキングのための静的および動的ルックアップテーブル(それ自体の逆元である静的テーブルを含む)を利用するAESプロセッサ413とともに動作するように搭載されたマルチコアCPU412を含むアプリケーション処理回路410を含み、AES暗号化デバイス415およびAES復号デバイス417(両者はともに、そのような静的テーブルならびに1つまたは複数の動的ルックアップテーブルのうちの1つまたは複数を含んでよい)を含む。
【００４６】
アプリケーション処理回路410は、通常、モバイル通信デバイスのすべての構成要素の動作を制御する。一態様では、アプリケーション処理回路410は、内部共有ハードウェア(HW)リソース430の一部を形成する内部共有ストレージデバイス432の鍵記憶要素433におけるパスキーの記憶を含むデータの記憶を制御するためのホスト記憶コントローラ450に結合される。また、アプリケーション処理回路410は、SoC処理回路400の様々な構成要素のためのブートシーケンス命令を記憶するブート読取り専用メモリ(ROM)および/またはブートランダムアクセスメモリ(RAM) 418を含むことができる。SoC処理回路400は、アプリケーション処理回路410によって制御される1つまたは複数の周辺サブシステム420をさらに含む。周辺サブシステム420は、ストレージサブシステム(たとえば、ROM、RAM)、ビデオ/グラフィックスサブシステム(たとえば、デジタル信号処理回路(DSP)、グラフィックス処理回路ユニット(GPU))、オーディオサブシステム(たとえば、DSP、アナログ-デジタル変換器(ADC)、デジタル-アナログ変換器(DAC))、電力管理サブシステム、セキュリティサブシステム(たとえば、他の暗号化構成要素およびデジタル著作権管理(DRM)構成要素)、入出力(I/O)サブシステム(たとえば、キーボード、タッチスクリーン)、ならびに有線およびワイヤレスの接続性サブシステム(たとえば、universal serial bus(USB)、全地球測位システム(GPS)、Wi-Fi、Global System Mobile(GSM（登録商標）)、符号分割多元接続(CDMA)、4G Long Term Evolution(LTE)モデム)を含むことができるが、これに限定されない。モデムサブシステムである例示的な周辺サブシステム420は、DSP422、様々な他のハードウェア(HW)およびソフトウェア(SW)構成要素424、ならびに様々な無線周波数(RF)構成要素426を含む。一態様では、各周辺サブシステム420は、関連する周辺サブシステム420のプライマリブートイメージ(図示せず)を記憶するブートRAMまたはブートROM 428をも含む。
【００４７】
前述のように、SoC処理回路400は、さらに、内部共有ストレージ432(たとえば、スタティックRAM(SRAM)、フラッシュメモリなど)などの様々な内部共有HWリソース430を含み、内部共有ストレージ432は、様々なランタイムデータまたは他のパラメータを記憶するため、およびホストメモリを提供するために、アプリケーション処理回路410および様々な周辺サブシステム420によって共有される。図4の例では、内部共有ストレージ432は、暗号化鍵またはパスワードを記憶するために使用され得る、前述の鍵記憶要素、部分、または構成要素433を含む。他の例では、鍵は、モバイルデバイス内の他所において記憶される。
【００４８】
一態様では、SoC400の構成要素410、418、420、428、および430は、シングルチップ基板上に集積される。SoC処理回路400は、異なるチップ基板上に配置され得、1つまたは複数のバスを介してSoC処理回路400と通信することができる、様々な外部共有HWリソース440をさらに含む。外部共有HWリソース440は、たとえば、外部共有ストレージ442(たとえば、ダブルデータレート(DDR)ダイナミックRAM)および/または永久的もしくは半永久的データストレージ444(たとえば、セキュアデジタル(SD)カード、ハードディスクドライブ(HDD)、埋込み型マルチメディアカード、ユニバーサルフラッシュデバイス(UFS:universal flash device)、など)を含み得、それらは、オペレーティングシステム(OS)情報、システムファイル、プログラム、アプリケーション、ユーザデータ、オーディオ/ビデオファイル、などの様々なタイプのデータを記憶するために、アプリケーション処理回路410および様々な周辺サブシステム420によって共有され得る。SoC処理回路400を組み込んだモバイル通信デバイスがアクティブ化されるときに、SoC処理回路は、システムブートアッププロセスを開始し、このシステムブートアッププロセス内で、アプリケーション処理回路410は、様々な周辺サブシステム420のためのブートシーケンス命令を含む、SoC処理回路400のためのブート命令を取り出すために、ブートRAMまたはブートROM 418にアクセスすることができる。周辺サブシステム420は、追加の周辺ブートRAMまたは追加の周辺ブートROM 428を有することもできる。
【００４９】
例示的なAES暗号化/復号手順
図5は、暗号化500および復号501に使用するための図4のAESプロセッサ413に対する例示的なステージを示す。例示的なAESプロセッサ413は、SubBytes演算およびInvSubBytes演算のためのGF(22)静的ルックアップテーブルを用いるマスクされたAES暗号化/復号を利用する。502において始まる暗号化に対して、初期のAddRoundKey演算が入力された平文に対して実行され、現在の状態の各バイトが、ラウンド鍵のブロックと組み合わされる。初期のAddRoundKey演算に続いて、暗号化ラウンドのセット503が実行され、そこにおいて、各ラウンドは、SubBytes演算を促進するために1つまたは複数のGF(22)静的および動的ルックアップテーブルを活用するマスクされたSubBytesステージ504を含む。簡潔のために、マスクされたSubBytesステージ504は、図において、GF(22)静的テーブルを有するマスクされたSubBytes呼ばれるが、このデバイスは1つまたは複数の動的ルックアップテーブルなど、追加の構成要素を含む場合があることを諒解されたい。また、各暗号化ラウンド503は、ShiftRowsステージ506と、MixColumnsステージ508と、別のAddRoundKeyステージ510とを含む。暗号化ラウンドのセット503に続いて最後の暗号化ラウンド514が実行され、最後の暗号化ラウンド514は、最後のマスクされたSubBytesステージ516と、最後のShiftRowsステージ518と、最後のAddRoundKeyステージ520とを含む。マスクされたSubBytesステージ504と同様に、最後のマスクされたSubBytesステージ516は、SubBytes演算を促進するために1つまたは複数のGF(22)静的および動的ルックアップテーブルを活用する。出力は、暗号化された暗号文である。
【００５０】
復号501は、暗号文を平文に変換するように逆に演算する。簡略に言えば、524において始まって、初期のAddRoundKey演算が入力された暗号文に対して実行され、現在の状態の各バイトが、ラウンド鍵のブロックと組み合わされる。初期のAddRoundKey演算に続いて、復号ラウンドのセット534が実行され、各ラウンドは、InvShiftRowsステージ526と、マスクされたInvSubBytes置換ステージ528と、InvMixColumnsステージ530と、別のAddRoundKeyステージ532とを含む。マスクされたInvSubBytesステージ528は、InvSubBytes演算を促進するために1つまたは複数のGF(22)静的および動的ルックアップテーブルを活用する標準的マスクされたAES InvSubBytesステージの修正バージョンである。マスクされたInvSubBytesステージ528は、図において、GF(22)静的テーブルを有するマスクされたInvSubBytesと呼ばれるが、このデバイスは1つまたは複数の動的ルックアップテーブルなど、追加の構成要素を含む場合があることを再び諒解されたい。復号ラウンドのセット534に続いて最後の復号ラウンド536が実行され、最後の復号ラウンド514は、最後のInvShiftRowsステージ538と、最後のマスクされたInvSubBytes置換ステージ540と、最後のAddRoundKeyステージ542とを含む。マスクされたInvSubBytesステージ528と同様に、最後のマスクされたInvSubBytesステージ538は、逆元SubBytes演算を促進するために1つまたは複数のGF(22)静的および動的ルックアップテーブルを活用する。出力は、復号された平文である。
【００５１】
図6は、図5のSubBytesデバイス504および516の一構成要素として使用するため、または他の適切に搭載された構成要素、デバイス、システム、または処理回路が使用するための、GF(22)静的および動的ルックアップテーブルを有する例示的なマスクされたSubByte置換プロセッサ600を示す。図2のマスクされたSubByte置換プロセッサ200と同様に、図6のプロセッサ600は、2つの入力Am=(A+m)およびm、すなわちマスクされた値Amおよび入力マスクmを受け取り、ここでAは暗号化されるべきデータの一部(たとえば、データの現在の状態の1バイト)を表す。出力は、マスクされた逆元Am-1および出力マスクm'であり、ここでマスクされた逆元は、Am-1=(A-1+m')によって表されてよい。したがって、修正された置換プロセッサ600の入力および出力は、図2の置換プロセッサ200の入力および出力と同じであり、図6の修正された置換プロセッサは、本来ならば置換プロセッサ200が利用される場所ならどこでも利用され得る。しかしながら、図6の置換プロセッサ600の内部構成要素は、図2の内部構成要素とは異なる。なぜならば、置換プロセッサ600は、乗法逆元の計算を促進するためにそれ自体の逆元であるGF(22)における少なくとも1つの静的ルックアップテーブル、ならびに動的ルックアップテーブルなどの他の構成要素を含むからである。すなわち、図6の置換プロセッサ600は、GF(22)を使用する合成体または塔の体の計算を活用し、ここで静的および動的ルックアップテーブルはそれらのGF(22)計算を促進する。
【００５２】
図7は、図6のマスクされたSubByte置換デバイスもしくはプロセッサ600、または他の適切に搭載された構成要素、デバイス、システムもしくは処理回路が使用するための例示的な手順を示す。これは、静的テーブルと動的テーブルの両方を利用するので、「ハイブリッド」手順と見なされてよい。702において、置換プロセッサは、暗号の現在の状態のバイトAと、補正項として使用するための入力マスクmとを入力し、Am=A+mを計算する。704において、プロセッサは、GF(22)における処理のためのAmからのビットのペアBmを取得する。このプロセスの一部として、デバイスは、GF(24)の要素をGF(22)×GF(22)における要素のペアにさせる手順を利用する。たとえば、GF(24)における4ビットのストリングB=(b11,b10,b01,b00)を考察する。通常の基準(たとえば、上記のCanrightの文献において説明された基準)では、ビット分割が、GF(24)からGF(22)に変換するために使用される。したがって、マッピングは、B=[b1,b0]が、b1=(b11,b10);Bの左または上の部分、およびb0=(b01,b00);Bの右または下の部分、のビットペアのカスケードに対応するようになされる。b1およびb0は、GF(22)における要素であることに留意されたい。また、704において、置換プロセッサは、GF(22)静的ルックアップテーブルT[・]および出力マスクm'の現在値を入力するかまたはそれらにアクセスし、ここで静的ルックアップテーブルT[・]は、
T[・]={00,10,01,11}≡(・)-1   (9)
(またはそれの転置)として表されてよく、出力マスクm'に対する初期の現在値は、入力マスクの値または他の適切なデフォルト値に設定されてよい。706において、置換プロセッサは、GF(22)動的ルックアップTm[・]に対する現在値を計算し、ここでTm[・]は出力マスクm'に対する現在値によってマスクされ、それのインデックスiは補正項(すなわち、入力マスク)
Tm[i+correction term]=T[i]+output mask   (10)
によって訂正される。
708において、置換プロセッサは、Bのマスクされた値(すなわち、Bm)の乗法逆元を計算し、ここでBm-1=(B-1+m')は、Tm[・]、MT[ ]およびMT'[ ](少なくとも原則として)、ならびに出力マスクm'の現在値を使用する。この演算の詳細については上記参照。710において、追加のビットペアBmがマスクされた入力バイトAmから処理される必要がある場合、処理は704に戻る。ビットペアBmの最後のものが処理されると、ビットペアが集められてAm-1を生じ、Am-1は次いで、AESデバイスの次のステージに出力される。この点について、GF(22)の値は、結果の左および右の部分、たとえば
【００５３】
【数７】
2018508044.tif 000009
【００５４】
および
【００５５】
【数８】
2018508044.tif 000010
【００５６】
を生成するための計算に依存し、GF(22)の値は、一緒に集められてGF(24)における要素を生じ、その要素は、
【００５７】
【数９】
2018508044.tif 000011
【００５８】
である。この場合も、この演算の詳細については上記参照。
【００５９】
GF(24)における反転の場合、
【００６０】
【数１０】
2018508044.tif 000012
【００６１】
は、入力Bmの逆元となることに留意されたい。Canrightの表記と異なる表記の場合、たとえば、ガロア体の要素が古典的な多項式基底で表されるとき、GF(24)からGF(22)への、およびその逆の線形マッピングが存在し、そのマッピングはビット分割およびビット集積よりも複雑である。したがって、本明細書で説明する技法の態様は、ガロア体における要素の特定の表記とは無関係である。すなわち、上記の式(4)、(5)および(6)のすべての複素計算を実行する代わりに、デバイスは、(図7の演算706および708の中で)
cm-1=Tm[cm;m]   (11)
Bm-1=(pm, qm)=(MT'[cm-1;b0,q1], MT'[cm-1;b1,q0])   (12)
を計算することができる。
(11)では、cmはTmをインデックス付け、mは巡回転置を計算するのに役立つ。(12)では、cm-1はMT'をインデックス付け、一方で、biおよびqiは、巡回転置を計算するのに役立つ。GF(24)に対する結果は、2つのビットペアBm-1およびそれの対応するマスク(GF(22)における反転に対する入力マスク)であり、それはq=[q1, q0]であり、それらは最終的に組み合わされて出力Am-1を生じる。すでに説明したように、静的および動的テーブルを使用する計算は、Amから取得されるBmの成分に基づいて、たいていGF(22)において実行される。
【００６２】
図8は、静的と動的の両方のルックアップテーブルを有するハイブリッド構成を利用する、図6のマスクされたSubByte置換プロセッサ600の例示的な構成要素800を示す。マスク加算構成要素802は、マスク生成器804によって生成されるマスクmを暗号の現在の状態の入力バイトAに加算し、Am=A+mおよびmを生じる。これらの値は、GF(22)における反転に対するバイトAmから、Bm内に2ビットのペアを取得するように動作するビット選択構成要素806に入力される。GF(22)乗法逆元構成要素808は、GF(22)における静的ルックアップテーブル812(すなわち、T[・])を介して取得されたGF(22)における動的ルックアップテーブル810(すなわち、Tm[・])内の情報を活用することによって、すでに説明した技法を使用してBm内の2ビットのペアの乗法逆元を実行するように動作する。マスク値(すなわち、補正値)はマスク生成器804から利用可能になるので、動的ルックアップテーブル810は、「オンザフライで」計算される値を有する。また、乗法逆元構成要素808は、この例では、結果の値(たとえば、上記で説明した
【００６３】
【数１１】
2018508044.tif 000013
【００６４】
および
【００６５】
【数１２】
2018508044.tif 000014
【００６６】
)の左および右の部分を記憶するために、1つまたは複数のベクトル813を使用する。
【００６７】
乗法逆元構成要素808の出力は、Bm-1内の反転された2つの2ビットと、対応する出力マスクm'とを含む。次いで、反転されたビットペアBm-1は、Amから導出された他の反転されたビットペアとともに、反転されたビットペアBm-1を集める(またはさもなければマージするまたは組み合わせる)デバイス814を使用して、他のビットペアとともに集められて、反転されマスクされたバイトAm-1=(A-1+m')を生じる。この演算の説明については上記参照。一実装形態では、矢印816で示すように、構成要素806、808および814の動作は、マスクされたバイトAmのすべてのビットペアを処理するためにループで実行される。しかしながら、他の実装形態では、処理時間を低減するために、GF(22)乗法逆元構成要素のセット808は、マスクされたバイトAmのすべてのビットが同時に反転され得るように、並列に演算するように設けられる。図示されていないが、図8のプロセッサ800は、AES暗号化デバイスの次のステージによって処理するために、Am-1からマスクを除去して最後の出力A-1を生じるための構成要素を含んでもよいことに留意されたい。
【００６８】
復号の場合、同様の構成要素が、マスクされたSubBytesの代わりに、マスクされたInvSubBytes演算を実行するために設けられる。その上、部分体がGF(22)であるAESの例に関して説明したが、本明細書で説明するシステムおよび方法の態様は、AES以外の暗号およびGF(22)以外の有限部分体に適用可能である。
【００６９】
本明細書で提示する本開示の態様によれば、以下のうちの1つまたは複数を活用する実装形態が提供されてもよい。
a. 実装形態は、たとえばすべての必要とされる転置を静的に記憶することによって、完全に静的なテーブルを利用することができる。
b. 実装形態は、補正項と転置の形態で発生する演算の両方を有する動的テーブルを利用することができる。この場合のTmは、Tの転置とすることができる。
c. 実装形態は、静的と動的の両方のテーブルを利用する(すなわち、上記で当初説明したハイブリッド構成)ことができ、ここにおいていくつかのテーブルは静的に記憶され、たとえば{0, 1, 2, 3}およびアンマスクされた逆元{0, 2, 1, 3}、マスクされたバージョンのテーブルはビットごとのXOR演算によって導出され、マスク演算は最初にマスクされたバージョンのテーブルを並べ替え、インデックス付けることによって遂行される。説明したように、このプロセスは、マスクされた逆元の計算とGF(22)におけるマスクされた乗算の両方に対して同様であり得るが、特定の転置は異なる。
【００７０】
ハイブリッドバージョン(すなわち、実装形態「c」)は、上記で詳細に説明された。完全に静的なバージョン(すなわち、実装形態「a」)は、反転の間に以下の
Input:cm=c+m; Output:
【００７１】
【数１３】
2018508044.tif 000015
【００７２】
を考慮に入れながら、概して同様に実装されてよい。
この点について、m∈{0,1,2,3}であるので、デバイスは、T[ ]+mの可能な結果について事前計算された値を静的に記憶することができ、ここでT[ ] = {0, 2, 1, 3}。これは、以下に示すように、マスクされた反転に対して次の4バイトマトリクスを記憶することに対応する。第1の行はm=0のときのT[ ]+mであり、第2の行はm=1のときのT[ ]+mであり、第3の行はm=2のときのT[ ]+mであり、第4の行はm=3のときのT[ ]+mである。
{0, 2, 1, 3,
2, 1, 3, 0,
3, 1, 2, 0,
1, 2, 0, 3}
マスクされた逆元、すなわち出力
【００７３】
【数１４】
2018508044.tif 000016
【００７４】
を計算するために、補正項は上記のマトリクスの1つの行をインデックス付け(たとえば、m=0ならば、補正項は行をゼロにインデックス付け)、マスクされた入力、すなわち入力cm=c+mを使用して列をインデックス付ける。同じ原理が、マスクされた乗算に適用されるが、記憶する転置の数はより大きくなる。
【００７５】
完全に動的なバージョン(すなわち、実装形態「b」)は、反転(ここで入力および出力は、たった今示したものと同じである)の間、以下の
Input:cm=c+m; Output:
【００７６】
【数１５】
2018508044.tif 000017
【００７７】
を考慮に入れながら、概して同様に実装されてよい。
完全に動的な反転は単一のバイトから開始し、単一のバイトは、体、たとえば{0, 1, 2, 3}の要素と、体の中の要素の転置を可能にし、所望のマスク演算を実行するための一時的記憶とを含む。たとえば、マスクされた反転の場合、最初に要素1および2が交換され、次いで補正項の値によって並べ替えられる。この転置のシーケンスの結果が、入力cm=c+mによってインデックス付けられ、所望の出力
【００７８】
【数１６】
2018508044.tif 000018
【００７９】
を作成することができる。
【００８０】
たとえば、cm=2+1=3を仮定すると、デバイスは、体の算術においてマスクされた逆元
【００８１】
【数１７】
2018508044.tif 000019
【００８２】
を計算するように構成されてよい。前の事例で説明したように、選択およびシフトの転置に対応する転置が実行される。これらの転置の結果は、体(すなわち、{0, 1, 2, 3})の要素に対する以下の例、すなわち{3,2,1,0}である。より詳細には、{0, 1, 2, 3}の転置は、内側の2つの値(たとえば、1および2)を交換し、次いで最初および最後の値(たとえば、0および3)を交換するように演算して、{3,2,1,0}を生じる。上記のテーブルをマスクされた入力cm=3でインデックス付けた結果は、予想されるように
【００８３】
【数１８】
2018508044.tif 000020
【００８４】
になる。反転が完了すると、動的テーブルは、次の暗号化/復号の要求を受け入れるために、それの初期の値(すなわち、{0, 1, 2, 3})に復元される。同様に、他のタイプの転置が、乗算のために実装され得る。
【００８５】
例示的なシステムおよび方法
図9に、図3〜図8のシステム、方法、および装置を実施することができる全体的なシステムまたは装置900を示す。本開示の様々な態様によれば、要素、要素の任意の部分、または要素の任意の組合せを、図2のSoC処理回路などの1つまたは複数の処理回路904を含む処理システム914を用いて実施することができる。たとえば、装置900を、モバイル通信システムのユーザ機器(UE)とすることができる。装置900を、無線ネットワーク制御装置(RNC)とともに使用することができる。SoCに加えて、処理回路904の例は、マイクロプロセッシング回路、マイクロコントローラ、デジタル信号処理回路(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、ステートマシン、ゲーテッドロジック、ディスクリートハードウェア回路、および本開示全体で説明する様々な機能を実行するように構成された他の適切なハードウェアを含む。さらに、処理システム914は、図1に示されたサーバなどのサーバの構成要素とすることができる。すなわち、処理回路904は、装置900内で利用されるように、暗号化および復号に対するプロセスなどの、上記で説明し、図3、図4、図7および図8に示すプロセス(および、以下で説明する図12および図13に示すプロセス)のうちの任意の1つまたは複数を実施するために使用されてよい。
【００８６】
図9の例では、処理システム914は、全般にバス902によって表されるバスアーキテクチャを用いて実装され得る。バス902は、処理システム914の特定の用途と全体的な設計制約とに応じて、任意の数の相互接続バスとブリッジとを含むことができる。バス902は、1つまたは複数の処理回路を含む様々な回路(全般的に処理回路904によって表される)、ストレージデバイス905、および機械可読、プロセッサ可読、処理回路可読、またはコンピュータ可読の媒体(全般的に、非一時的機械可読媒体906によって表される)をリンクする。バス902は、タイミングソース、周辺機器、電圧レギュレータ、および電力管理回路などの様々な他の回路をリンクさせることもできるが、これらの回路は当技術分野でよく知られており、したがって、これ以上は説明しない。バスインターフェース908は、バス902とトランシーバ910との間のインターフェースを提供する。トランシーバ910は、伝送媒体を介して様々な他の装置と通信するための手段を提供する。装置の性質に依存して、ユーザインターフェース912(たとえば、キーパッド、ディスプレイ、スピーカ、マイクロフォン、ジョイスティック)を設けることもできる。
【００８７】
処理回路904は、バス902の管理と、機械可読媒体906上に記憶されたソフトウェアの実行を含む全般的な処理との責任を負う。ソフトウェアは、処理回路904によって実行されるときに、処理システム914に、任意の特定の装置について本明細書で説明される様々な機能を実行させる。機械可読媒体906は、ソフトウェアを実行するときに処理回路904によって操作されるデータを記憶するのにも使用され得る。
【００８８】
処理システム内の1つまたは複数の処理回路904は、ソフトウェアまたはソフトウェア構成要素を実行することができる。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、または他のいずれとして呼ばれる場合であっても、命令、命令セット、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行可能ファイル、実行のスレッド、手続き、関数、その他を意味するものとして幅広く解釈されなければならない。処理回路は、タスクを実行し得る。コードセグメントは、手続き、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造、もしくはプログラム文の任意の組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータを、またはメモリもしくはストレージの内容を渡すおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどを、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む任意の適切な手段を介して渡し、転送し、または伝送することができる。
【００８９】
ソフトウェアは、機械可読媒体906上に存在することができる。機械可読媒体906は、非一時的機械可読媒体とすることができる。非一時的な処理回路可読、機械可読、またはコンピュータ可読の媒体は、たとえば、磁気ストレージデバイス(たとえば、ハードディスク、フロッピディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、またはキードライブ)、RAM、ROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、リムーバブルディスク、ハードディスク、CD-ROM、ならびに機械またはコンピュータによってアクセスされ読み取られ得るソフトウェアおよび/または命令を記憶する任意の他の適切な媒体を含む。「機械可読媒体」、「コンピュータ可読媒体」、「処理回路可読媒体」、および/または「プロセッサ可読媒体」という用語は、ポータブルまたは固定式のストレージデバイス、光学ストレージデバイス、ならびに命令および/またはデータを記憶し、含み、または担持することのできる様々な他の媒体などの非一次的媒体を含むことができるが、これに限定されない。したがって、本明細書で説明される様々な方法を、「機械可読媒体」、「コンピュータ可読媒体」、「処理回路可読媒体」、および/または「プロセッサ可読媒体」内に記憶され、1つまたは複数の処理回路、機械、および/またはデバイスによって実行され得る命令および/またはデータによって完全にまたは部分的に実施することができる。機械可読媒体は、たとえば、搬送波、伝送線、およびコンピュータによってアクセスされ、読み取られ得るソフトウェアおよび/または命令を伝送するための任意の他の適切な媒体をも含むことができる。
【００９０】
機械可読媒体906は、処理システム914内に、処理システム914の外部に存在し、あるいは、処理システム914を含む複数のエンティティにまたがって分散され得る。機械可読媒体906を、コンピュータプログラム製品内で実施することができる。たとえば、コンピュータプログラム製品は、パッケージング材料内に機械可読媒体を含むことができる。当業者は、特定の応用例およびシステム全体に課せられる全体的な設計制約に依存して、本開示全体で提示される説明される機能性をどのようにして最もよく実施すべきかを認めるであろう。たとえば、機械可読記憶媒体906は、処理回路904によって実行されたとき、処理回路に、組合せデータを取得するために暗号法演算の一部として入力データとラウンド鍵とを組み合わせることと、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージを通して組合せデータの少なくとも一部分をルーティングすることと、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データをルーティングすることとを行わせる、1つまたは複数の命令を有してよい。
【００９１】
機能は図面に示す1つまたは複数の構成要素、ステップ、特徴、および/または機能は、単一の構成要素、ブロック、特徴もしくは機能に再配置および/または組み合わされ、複数の構成要素、ステップもしくは機能に具現化され得る。追加の要素、構成要素、ステップ、および/または機能はまた、本開示から逸脱することなく、追加され得る。図に示す装置、デバイス、および/または構成要素は、図に記載した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成され得る。また、本明細書で説明したアルゴリズムは、効率的にソフトウェアに実装されてもよく、かつ/またはハードウェアに組み込まれてもよい。
【００９２】
本明細書で開示する例に関連して説明する様々な例示的な論理ブロック、モジュール、回路、要素、および/または構成要素を、汎用処理回路、デジタル信号処理回路(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、ディスクリートゲートもしくはトランジスタ論理、ディスクリートハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実施または実行されてもよい。汎用処理回路は、マイクロプロセッシング回路であってもよいが、代替として、処理回路は、任意の従来の処理回路、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。処理回路は、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッシング回路との組合せ、複数のマイクロプロセッシング回路、DSPコアに関連する1つもしくは複数のマイクロプロセッシング回路、または任意の他のそのような構成として実施されてもよい。
【００９３】
したがって、本開示の一態様では、図4に示された処理回路413は、メッセージを暗号化および復号することを対象とするアルゴリズム、方法、および/またはブロックなど、図3、図4、図7および図8で説明する(および下で議論する図12および図13に示す)アルゴリズム、方法および/またはブロックのうちの少なくとも一部を実行するために特に設計され、かつ/または配線接続された専用の処理回路(たとえば、ASIC)とすることができる。したがって、そのような専用の処理回路(たとえば、ASIC)は、図3、図4、図7および図8で説明する(および下で議論する図12および図13に示す)アルゴリズム、方法および/またはブロックを実行するための手段の一例とすることができる。機械可読記憶媒体は、専用処理回路(たとえば、ASIC)によって実行されたとき、専用処理回路に、本明細書に記載のアルゴリズム、方法、および/またはブロックを実行させる命令を記憶し得る。本開示の別の態様では、図1のリモートサーバシステム108はまた、メッセージを暗号化および復号することを対象とするアルゴリズム、方法、および/またはブロックなど、図3、図4、図7および図8で説明する(および下で議論する図12および図13に示す)アルゴリズム、方法および/またはブロックのうちの少なくとも一部を実行するために特に設計され、かつ/または配線接続された専用の処理回路を含んでよい。したがって、そのような専用の処理回路は、図3、図4、図7および図8で説明する(および下で議論する図12および図13に示す)アルゴリズム、方法および/またはブロックを実行するための手段の一例とすることができる。機械可読記憶媒体は、専用処理回路(たとえば、ASIC)によって実行されたとき、専用処理回路に、本明細書に記載のアルゴリズム、方法、および/またはブロックを実行させる命令を記憶し得る。
【００９４】
少なくともいくつかの例では、組合せデータを取得するために暗号法演算の一部として入力データとラウンド鍵とを組み合わせるための手段と、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージを通して組合せデータの少なくとも一部分をルーティングするための手段と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データをルーティングするための手段とを含む暗号法デバイスが提供される。
【００９５】
図10は、たとえば、静的と動的の両方のテーブルを利用するハイブリッド実装形態とともに使用するためのAESデバイスまたは他の暗号法デバイス1000を含むモバイルデバイスまたはスマートカードの処理回路904の選択された例示的な構成要素を示す。暗号法デバイス1000は、組合せデータを取得するために、暗号法演算の一部として入力データ(暗号化のための平文または復号のための暗号文など)とラウンド鍵とを組み合わせるように動作可能な入力データ/ラウンド鍵組み合わせモジュール/回路1002(たとえば、AddRoundKeyモジュール/回路)を含む。また、暗号法デバイス1000は、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージモジュール/回路1004(たとえば、マスクされたSubBytesおよび/またはマスクされたInvSubBytesモジュール/回路)と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データを処理するように動作可能な1つまたは複数の追加の暗号法ステージモジュール/回路1006(たとえば、ShiftRows、MixColumns、など)とを含む。暗号化入力/出力コントローラ1008は、暗号化のためのデータの入力および出力を制御するように動作可能であり、暗号化されるべき平文を入力するように動作可能な平文入力モジュール/回路1010と、暗号文を出力するように動作可能な暗号文出力モジュール/回路1012とを含む。復号入力/出力コントローラ1014は、復号のためのデータの入力および出力を制御するように動作可能であり、復号されるべき暗号文を入力するように動作可能な暗号文入力モジュール/回路1016と、平文を出力するように動作可能な平文出力モジュール/回路1018とを含む。この例では、置換ステージモジュール/回路1004は、有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル1020(たとえば、GF(22)における[・]={00, 01, 10, 11}およびそれの転置、ここで有限体はGF(28)である)を含む。また、置換ステージモジュール/回路1004は、有限体の部分体内の動的ルックアップテーブル1022(たとえば、GF(22)動的テーブル、ここで有限体はGF(28)である)を含む。すでに説明したように、これらのテーブルは、マスクされた乗法逆元演算を促進し、マスクされた乗法逆元演算は、マスク生成器1024、ビットペア反転器1026、および乗算器1028の制御のもとで実行されてよく、それらの各々は、GF(22)または何らかの他の適切な有限体の部分体において動作する。
【００９６】
図11は、静的と動的の両方のテーブルを利用するハイブリッド実装形態とともに使用される暗号化および復号に使用するための機械またはコンピュータ可読媒体906の選択された例示的な命令を示す。図9の処理回路904によって実行されたとき、処理回路に、暗号化演算および復号演算を制御または実行させる、AESデバイスまたは他の暗号法デバイス処理命令のセット1100が提供される。暗号法デバイス処理命令1100は、組合せデータを取得するために、暗号法演算の一部として入力データ(暗号化のための平文または復号のための暗号文など)とラウンド鍵とを組み合わせるように動作可能な入力データ/ラウンド鍵組み合わせ命令1102(たとえば、AddRoundKey命令)を含む。また、暗号法命令1100は、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージ命令1104(たとえば、マスクされたSubBytesおよび/またはマスクされたInvSubBytes命令)と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データを処理するように動作可能な1つまたは複数の追加の暗号法ステージ命令1106(たとえば、ShiftRows命令、MixColumns命令、など)とを含む。暗号化入力/出力コントローラ命令1108は、暗号化のためのデータの入力および出力を制御するように動作可能であり、暗号化されるべき平文を入力するように動作可能な平文入力命令1110と、暗号文を出力するように動作可能な暗号文出力命令1112とを含む。復号入力/出力コントローラ命令1114は、復号のためのデータの入力および出力を制御するように動作可能であり、復号されるべき暗号文を入力するように動作可能な暗号文入力命令1116と、平文を出力するように動作可能な平文出力命令1118とを含む。この例では、置換ステージ命令1104は、有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル(たとえば、GF(22)における[・]={00, 01, 10, 11}およびそれの転置、ここで有限体はGF(28)である)とともに使用するための命令1120を含む。また、置換ステージ命令1104は、有限体の部分体内の動的ルックアップテーブル(たとえば、GF(22)動的テーブル、ここで有限体はGF(28)である)とともに使用するための命令1122を含んでよい。すでに説明したように、これらのテーブルは、マスクされた乗法逆元演算を促進し、マスクされた乗法逆元演算は、マスク生成器命令1124、ビットペア反転器命令1126、および乗算器命令1128の制御のもとで実行されてよく、それらの各々は、GF(22)または何らかの他の適切な有限体の部分体において動作する。
【００９７】
図12は、図9の処理回路904の暗号法デバイスまたは暗号化および/または復号のための他の適切に搭載された暗号法デバイスによって実行され得る方法または手順1200を幅広く示し、要約する。1202において、暗号法デバイスは、組合せデータを取得するために、暗号化演算の一部として入力データとラウンド鍵とを組み合わせる。組合せデータは、たとえば、平文の一部、マスクされた平文の一部、平文の関数である値、マスクされた平文の関数である値、暗号文の一部、マスクされた暗号文の一部、暗号文の関数である値、および/またはマスクされた暗号文の関数である値とすることができる。1204において、暗号法デバイスは、(a)置換データを取得するための有限体の部分体内のそれ自体の逆元である静的ルックアップテーブル、(b)置換データを取得するためにすべての置換演算が転置を使用して実装される有限体の部分体内の動的ルックアップテーブル、または(c)置換データを取得するために必要なすべての転置を静的に記憶する有限体の部分体内の代替の静的ルックアップテーブルのうちの少なくとも1つを利用する置換ステージを通して組合せデータの少なくとも一部をルーティングする。1206において、暗号法デバイスは、出力データを生成するために、1つまたは複数の追加の暗号法ステージを通して置換データをルーティングする。
【００９８】
図13は、さらに、図9の処理回路904の暗号法デバイスまたは暗号化および/または復号のための他の適切に搭載された暗号法デバイスによって実行され得る方法または手順1300を示し、要約する。1302において、暗号法デバイスは、組合せデータを取得するために、AES暗号の暗号法演算の一部として入力データとラウンド鍵とを組み合わせ、ここで暗号法演算は暗号化演算、入力データは平文、出力データは暗号文であり、および/または暗号法演算は復号演算、入力データは暗号文、出力データは平文であり、入力データとラウンド鍵とを組み合わせるステップはAES暗号のAddRoundKeyステージを通して入力データをルーティングするステップを含み、入力データの初期状態の各バイトはラウンド鍵のブロックと組み合わされる。1304において、暗号法デバイスは、置換データを取得するために、有限体(たとえば、GF(28))の部分体(たとえば、GF(22))内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージを通して組合せデータの少なくとも一部をルーティングし、暗号法演算は暗号化演算であり、置換ステージは暗号化のための静的ルックアップテーブルを使用してバイトの非線形置換を介してマスクされた乗法逆元を実行するように動作可能なマスクされたSubBytesステージであり、および/または暗号法演算は復号演算であり、置換ステージは復号のための静的ルックアップテーブルを使用してバイトの非線形置換を介してマスクされた乗法逆元を実行するように動作可能なマスクされたInvSubBytesステージであり、GF(22)におけるマスクされた乗法逆元演算はGF(28)から分解された塔の体(GF(22)2)2を活用し、同様に入力マスクおよび出力マスクを受け取り、GF(24)におけるマスクされた逆元の低部および高部を決定するために、入力マスクによって訂正されたインデックスを有する出力マスクによってマスクされた静的テーブルに対応するマスクされたテーブルを生成する動的ルックアップテーブルを活用する。1306において、暗号法デバイスは、出力データ(たとえば、暗号化のための暗号文または復号のための平文)を生成するために、ShiftRowsおよびMixColumnsなどの1つまたは複数の追加の暗号法ステージを通して置換データをルーティングする。
【００９９】
図14は、たとえば、動的テーブル実装形態とともに使用するためのAESデバイスまたは他の暗号法デバイス1400を含むモバイルデバイスまたはスマートカードの処理回路904の選択された例示的な構成要素を示し、置換演算が、置換データを取得するために転置を使用して実装される。暗号法デバイス1400は、組合せデータを取得するために、暗号法演算の一部として入力データ(暗号化のための平文または復号のための暗号文など)とラウンド鍵とを組み合わせるように動作可能な入力データ/ラウンド鍵組み合わせモジュール/回路1402(たとえば、AddRoundKeyモジュール/回路)を含む。また、暗号法デバイス1400は、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージモジュール/回路1404(たとえば、マスクされたSubBytesおよび/またはマスクされたInvSubBytesモジュール/回路)と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データを処理するように動作可能な1つまたは複数の追加の暗号法ステージモジュール/回路1406(たとえば、ShiftRows、MixColumns、など)とを含む。暗号化入力/出力コントローラ1408は、暗号化のためのデータの入力および出力を制御するように動作可能であり、暗号化されるべき平文を入力するように動作可能な平文入力モジュール/回路1410と、暗号文を出力するように動作可能な暗号文出力モジュール/回路1412とを含む。復号入力/出力コントローラ1414は、復号のためのデータの入力および出力を制御するように動作可能であり、復号されるべき暗号文を入力するように動作可能な暗号文入力モジュール/回路1416と、平文を出力するように動作可能な平文出力モジュール/回路1418とを含む。この例では、置換ステージモジュール/回路1404は、静的ルックアップテーブルを含まない。そうではなく、置換ステージモジュール/回路1404は、すべての置換演算が置換データを取得するために転置を使用して実装される、有限体の部分体内の動的ルックアップテーブル1422を含む。すでに説明したように、動的テーブルは、マスクされた乗法逆元演算を促進し、マスクされた乗法逆元演算は、マスク生成器1424、ビットペア反転器1426、および乗算器1428の制御のもとで実行されてよく、それらの各々は、GF(22)または何らかの他の適切な有限体の部分体において動作する。
【０１００】
図15は、動的テーブル実装形態とともに使用される暗号化および復号に使用するための機械またはコンピュータ可読媒体906の選択された例示的な命令を示し、置換演算が置換データを取得するために転置を使用して実装される。図9の処理回路904によって実行されたとき、処理回路に、暗号化演算および復号演算を制御または実行させる、AESまたは他の暗号法デバイス処理命令のセット1500が提供される。暗号法デバイス処理命令1500は、組合せデータを取得するために、暗号法演算の一部として入力データ(暗号化のための平文または復号のための暗号文など)とラウンド鍵とを組み合わせるように動作可能な入力データ/ラウンド鍵組み合わせ命令1502(たとえば、AddRoundKey命令)を含む。また、暗号法命令1500は、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージ命令1504(たとえば、マスクされたSubBytes命令および/またはマスクされたInvSubBytes命令)と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データを処理するように動作可能な1つまたは複数の追加の暗号法ステージ命令1506(たとえば、ShiftRows命令、MixColumns命令、など)とを含む。暗号化入力/出力コントローラ命令1508は、暗号化のためのデータの入力および出力を制御するように動作可能であり、暗号化されるべき平文を入力するように動作可能な平文入力命令1510と、暗号文を出力するように動作可能な暗号文出力命令1512とを含む。復号入力/出力コントローラ命令1514は、復号のためのデータの入力および出力を制御するように動作可能であり、復号されるべき暗号文を入力するように動作可能な暗号文入力命令1516と、平文を出力するように動作可能な平文出力命令1518とを含む。図14と同様に、置換ステージモジュール/回路1504は、静的ルックアップテーブルを含まない。そうではなく、置換ステージ命令1504は、すべての置換演算が置換データを取得するために転置を使用して実装される、有限体の部分体内の動的ルックアップテーブルとともに使用するための命令1522を含む。すでに説明したように、動的テーブルは、マスクされた乗法逆元演算を促進し、マスクされた乗法逆元演算は、マスク生成器命令1524、ビットペア反転器命令1526、および乗算器命令1528の制御のもとで実行されてよく、それらの各々は、GF(22)または何らかの他の適切な有限体の部分体において動作する。
【０１０１】
図16は、たとえば、静的テーブル実装形態とともに使用するためのAESデバイスまたは他の暗号法デバイス1600を含むモバイルデバイスまたはスマートカードの処理回路904の選択された例示的な構成要素を示し、すべての置換演算が、置換データを取得するために必要なすべての転置を静的に記憶する静的テーブルを使用して実装される。暗号法デバイス1600は、組合せデータを取得するために、暗号法演算の一部として入力データ(暗号化のための平文または復号のための暗号文など)とラウンド鍵とを組み合わせるように動作可能な入力データ/ラウンド鍵組み合わせモジュール/回路1602(たとえば、AddRoundKeyモジュール/回路)を含む。また、暗号法デバイス1600は、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージモジュール/回路1604(たとえば、マスクされたSubBytesおよび/またはマスクされたInvSubBytesのモジュール/回路)と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データを処理するように動作可能な1つまたは複数の追加の暗号法ステージモジュール/回路1606(たとえば、ShiftRows、MixColumns、など)とを含む。暗号化入力/出力コントローラ1608は、暗号化のためのデータの入力および出力を制御するように動作可能であり、暗号化されるべき平文を入力するように動作可能な平文入力モジュール/回路1610と、暗号文を出力するように動作可能な暗号文出力モジュール/回路1612とを含む。復号入力/出力コントローラ1614は、復号のためのデータの入力および出力を制御するように動作可能であり、復号されるべき暗号文を入力するように動作可能な暗号文入力モジュール/回路1616と、平文を出力するように動作可能な平文出力モジュール/回路1618とを含む。この例では、置換ステージモジュール/回路1604は、動的ルックアップテーブルを含まない。そうではなく、置換ステージモジュール/回路1604は、すべての置換演算が置換データを取得するために必要なすべての転置を静的に記憶する静的テーブルを使用して使用して実装される、有限体の部分体内の静的ルックアップテーブル1622を含む。すでに説明したように、静的テーブルは、マスクされた乗法逆元演算を促進し、マスクされた乗法逆元演算は、マスク生成器1624、ビットペア反転器1626、および乗算器1628の制御のもとで実行されてよく、それらの各々は、GF(22)または何らかの他の適切な有限体の部分体において動作する。
【０１０２】
図17は、静的テーブル実装形態とともに使用される暗号化および復号に使用するための機械またはコンピュータ可読媒体906の選択された例示的な命令を示し、すべての置換演算が置換データを取得するために必要なすべての転置を静的に記憶する静的テーブルを使用して実装される。図9の処理回路904によって実行されたとき、処理回路に、暗号化演算および復号演算を制御または実行させる、AESまたは他の暗号法デバイス処理命令のセット1700が提供される。暗号法デバイス処理命令1700は、組合せデータを取得するために、暗号法演算の一部として入力データ(暗号化のための平文または復号のための暗号文など)とラウンド鍵とを組み合わせるように動作可能な入力データ/ラウンド鍵組み合わせ命令1702(たとえば、AddRoundKey命令)を含む。また、暗号法命令1700は、置換データを取得するために有限体の部分体内のそれ自体の逆元である静的ルックアップテーブルを利用する置換ステージ命令1704(たとえば、マスクされたSubBytes命令および/またはマスクされたInvSubBytes命令)と、出力データを生成するために1つまたは複数の追加の暗号法ステージを通して置換データを処理するように動作可能な1つまたは複数の追加の暗号法ステージ命令1706(たとえば、ShiftRows命令、MixColumns命令、など)とを含む。暗号化入力/出力コントローラ命令1708は、暗号化のためのデータの入力および出力を制御するように動作可能であり、暗号化されるべき平文を入力するように動作可能な平文入力命令1710と、暗号文を出力するように動作可能な暗号文出力命令1712とを含む。復号入力/出力コントローラ命令1714は、復号のためのデータの入力および出力を制御するように動作可能であり、復号されるべき暗号文を入力するように動作可能な暗号文入力命令1716と、平文を出力するように動作可能な平文出力命令1718とを含む。この例では、置換ステージモジュール/回路1704は、動的ルックアップテーブルを含まない。そうではなく、置換ステージ命令1704は、すべての置換演算が置換データを取得するために必要なすべての転置を静的に記憶する静的テーブルを使用して実装される、有限体の部分体内の静的ルックアップテーブルとともに使用するための命令1720を含む。すでに説明したように、この静的テーブルは、マスクされた乗法逆元演算を促進し、マスクされた乗法逆元演算は、マスク生成器命令1724、ビットペア反転器命令1726、および乗算器命令1728の制御のもとで実行されてよく、それらの各々は、GF(22)または何らかの他の適切な有限体の部分体において動作する。
【０１０３】
本開示の態様が、フローチャート、流れ図、構造図、またはブロック図として示されるプロセスとして本明細書で説明される場合があることに留意されたい。フローチャートは、順次プロセスとして動作について説明するが、動作の多くが、並列にまたは同時に実行され得る。さらに、動作の順序は、再配置され得る。プロセスは、その動作が完了するときに終了される。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応するときに、その終了は、呼出し元関数またはメイン関数への関数のリターンに対応する。
【０１０４】
当業者には、本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装されてもよいことが、さらに諒解されよう。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上では全般的にそれらの機能に関して説明された。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の用途およびシステム全体に課される設計制約によって決まる。
【０１０５】
本明細書で開示する例に関連して説明する方法またはアルゴリズムは、処理ユニット、プログラミング命令、または他の指示の形で、ハードウェアにおいて直接、プロセッサによって実行可能なソフトウェアモジュール中で、またはこの両方の組合せで具現化されることがあり、単一のデバイスに含まれること、または複数のデバイスにわたって分散されることがある。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において既知の任意の他の形態の記憶媒体に存在し得る。プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、記憶媒体がプロセッサに結合され得る。代替的に、記憶媒体は、プロセッサと一体であり得る。
【０１０６】
本明細書に記載の本発明の様々な特徴は、本発明から逸脱することなく、異なるシステムで実現され得る。上記の実施形態は例にすぎず、本発明を限定するものと解釈すべきではないことに留意されたい。実施形態の説明は例示的なものであり、特許請求の範囲を限定するものではない。そのように、本教示は、他のタイプの装置に容易に適用され得、多くの代替、修正、変形が、当業者には明らかであろう。
【符号の説明】
【０１０７】
100  暗号化のための高度暗号化規格(AES)システム
101  復号のためのAESシステム
102  初期のAddRoundKey演算
103  暗号化ラウンド
104  マスクされたSubBytesステージ
106  ShiftRowsステージ
108  MixColumnsステージ
110  別のAddRoundKeyステージ
114  最後の暗号化ラウンド
116  最後のマスクされたSubBytesステージ
118  最後のShiftRowsステージ
120  最後のAddRoundKeyステージ
124  初期のAddRoundKey演算
126  InvShiftRowsステージ
128  マスクされたInvSubBytes置換ステージ
130  InvMixColumnsステージ
132  別のAddRoundKeyステージ
134  復号ラウンド
136  最後の復号ラウンド
138  最後のInvShiftRowsステージ
140  最後のマスクされたInvSubBytes置換ステージ
142  最後のAddRoundKeyステージ
200  マスクされたSubBytes置換デバイスまたはプロセッサ
400  システムオンチップ(SoC)処理回路
410  アプリケーション処理回路
412  マルチコアCPU
413  AESプロセッサ
415  AES暗号化デバイス
417  AES復号デバイス
418  ブート読取り専用メモリ(ROM)および/またはブートランダムアクセスメモリ(RAM)
420  周辺サブシステム
422  デジタル信号処理回路(DSP)
424  ハードウェア(HW)およびソフトウェア(SW)構成要素
426  ラジオ周波数(RF)構成要素
428  ブートRAMまたはブートROM
430  内部共有HWリソース
432  内部共有ストレージデバイス
433  鍵記憶要素
440  外部共有HWリソース
442  外部共有ストレージ
444  永久的もしくは半永久的データストレージ
450  ホスト記憶コントローラ
500  暗号化に使用するためのAESプロセッサに対するステージ
501  復号に使用するためのAESプロセッサに対するステージ
502  初期のAddRoundKey演算
503  暗号化ラウンドのセット
504  マスクされたSubBytesステージ
506  ShiftRowsステージ
508  MixColumnsステージ
510  別のAddRoundKeyステージ
514  最後の暗号化ラウンド
516  最後のマスクされたSubBytesステージ
518  最後のShiftRowsステージ
520  最後のAddRoundKeyステージ
524  初期のAddRoundKey演算
526  InvShiftRowsステージ
528  マスクされたInvSubBytes置換ステージ
530  InvMixColumnsステージ
532  別のAddRoundKeyステージ
534  復号ラウンドのセット
536  最後の復号ラウンド
538  最後のInvShiftRowsステージ
540  最後のマスクされたInvSubBytes置換ステージ
542  最後のAddRoundKeyステージ
600  マスクされたSubBytes置換プロセッサ
800  マスクされたSubBytes置換プロセッサの構成要素
802  マスク加算構成要素
804  マスク生成器
806  ビット選択構成要素
808  GF(22)乗法逆元構成要素
810  GF(22)における動的ルックアップテーブル
812  GF(22)における静的ルックアップテーブル
813  ベクトル
814  反転されたビットペアBm-1を集めるデバイス
816  矢印
900  全体的なシステムまたは装置
902  バス
904  処理回路
905  ストレージデバイス
906  非一時的機械可読媒体
908  バスインターフェース
910  トランシーバ
912  ユーザインターフェース
914  処理システム
1000  AESデバイスまたは他の暗号法デバイス
1002  入力データ/ラウンド鍵組み合わせモジュール/回路
1004  置換ステージモジュール/回路
1006  追加の暗号法ステージモジュール/回路
1008  暗号化入力/出力コントローラ
1010  平文入力モジュール/回路
1012  暗号文出力モジュール/回路
1014  復号入力/出力コントローラ
1016  暗号文入力モジュール/回路
1018  平文出力モジュール/回路
1020  静的ルックアップテーブル
1022  動的ルックアップテーブル
1024  マスク生成器
1026  ビットペア反転器
1028  乗算器
1100  AESデバイスまたは他の暗号法デバイス処理命令のセット
1102  入力データ/ラウンド鍵組み合わせ命令
1104  置換ステージ命令
1106  追加の暗号法ステージ命令
1108  暗号化入力/出力コントローラ命令
1110  平文入力命令
1112  暗号文出力命令
1114  復号入力/出力コントローラ命令
1116  暗号文入力命令
1118  平文出力命令
1120  静的ルックアップテーブルとともに使用するための命令
1122  動的ルックアップテーブルとともに使用するための命令
1124  マスク生成器命令
1126  ビットペア反転器命令
1128  乗算器命令
1400  動的テーブル実装形態とともに使用するためのAESデバイスまたは他の暗号法デバイス
1402  入力データ/ラウンド鍵組み合わせモジュール/回路
1404  置換ステージモジュール/回路
1406  追加の暗号法ステージモジュール/回路
1408  暗号化入力/出力コントローラ
1410  平文入力モジュール/回路
1412  暗号文出力モジュール/回路
1414  復号入力/出力コントローラ
1416  暗号文入力モジュール/回路
1418  平文出力モジュール/回路
1422  動的ルックアップテーブル
1424  マスク生成器
1426  ビットペア反転器
1428  乗算器
1500  AESまたは他の暗号法デバイス処理命令のセット
1502  入力データ/ラウンド鍵組み合わせ命令
1504  置換ステージ命令
1506  追加の暗号法ステージ命令
1508  暗号化入力/出力コントローラ命令
1510  平文入力命令
1512  暗号文出力命令
1514  復号入力/出力コントローラ命令
1516  暗号文入力命令
1518  平文出力命令
1522  動的ルックアップテーブルとともに使用するための命令
1524  マスク生成器命令
1526  ビットペア反転器命令
1528  乗算器命令
1600  暗号法デバイス
1602  入力データ/ラウンド鍵組み合わせモジュール/回路
1604  置換ステージモジュール/回路
1606  追加の暗号法ステージモジュール/回路
1608  暗号化入力/出力コントローラ
1610  平文入力モジュール/回路
1612  暗号文出力モジュール/回路
1614  復号入力/出力コントローラ
1616  暗号文入力モジュール/回路
1618  平文出力モジュール/回路
1622  静的ルックアップテーブル
1624  マスク生成器
1626  ビットペア反転器
1628  乗算器
1700  AESまたは他の暗号法デバイス処理命令のセット
1702  入力データ/ラウンド鍵組み合わせ命令
1704  置換ステージ命令
1706  追加の暗号法ステージ命令
1708  暗号化入力/出力コントローラ命令
1710  平文入力命令
1712  暗号文出力命令
1714  復号入力/出力コントローラ命令
1716  暗号文入力命令
1718  平文出力命令
1720  静的ルックアップテーブルとともに使用するための命令
1724  マスク生成器命令
1726  ビットペア反転器命令
1728  乗算器命令
【図１】
2018508044.tif 000021
【図２】
2018508044.tif 000022
【図３】
2018508044.tif 000023
【図４】
2018508044.tif 000024
【図５】
2018508044.tif 000025
【図６】
2018508044.tif 000026
【図７】
2018508044.tif 000027
【図８】
2018508044.tif 000028
【図９】
2018508044.tif 000029
【図１０】
2018508044.tif 000030
【図１１】
2018508044.tif 000031
【図１２】
2018508044.tif 000032
【図１３】
2018508044.tif 000033
【図１４】
2018508044.tif 000034
【図１５】
2018508044.tif 000035
【図１６】
2018508044.tif 000036
【図１７】
2018508044.tif 000037
【手続補正書】
【提出日】平成29年9月12日(2017.9.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
暗号法デバイス内で動作可能な方法であって、
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせるステップと、
置換データを取得するために置換ステージを通して前記組合せデータの少なくとも一部をルーティングするステップであって、前記置換ステージが、有限体の部分体内のそれの逆元に等しい静的ルックアップテーブルと、前記静的ルックアップテーブルのマスクされたバージョンである動的ルックアップテーブルとを利用する、ルーティングするステップと、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングするステップとを含む、方法。
【請求項２】
前記暗号法演算が暗号化演算であり、前記入力データが平文であり、前記出力データが暗号文である、請求項1に記載の方法。
【請求項３】
前記暗号法演算が復号演算であり、前記入力データが暗号文であり、前記出力データが平文である、請求項1に記載の方法。
【請求項４】
前記組合せデータが、平文の一部、マスクされた平文の一部、平文の関数である値、マスクされた平文の関数である値、暗号文の一部、マスクされた暗号文の一部、暗号文の関数である値、およびマスクされた暗号文の関数である値のうちの1つまたは複数を含む、請求項1に記載の方法。
【請求項５】
前記入力データとラウンド鍵とを組み合わせるステップが、高度暗号化規格(AES)暗号のAddRoundKeyステージを通して前記入力データをルーティングするステップを含み、前記入力データの初期状態の各バイトが、ラウンド鍵のブロックと組み合わされる、請求項1に記載の方法。
【請求項６】
前記暗号法演算が暗号化演算であり、前記置換ステージが、前記静的ルックアップテーブルおよび前記動的ルックアップテーブルを使用してバイトの非線形置換を実行するように動作可能なマスクされたSubBytesステージである、請求項5に記載の方法。
【請求項７】
前記暗号法演算が復号演算であり、前記置換ステージが、復号のために前記静的ルックアップテーブルおよび前記動的ルックアップテーブルを使用してバイトの非線形置換を実行するように動作可能なマスクされたInvSubBytesステージである、請求項5に記載の方法。
【請求項８】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項1に記載の方法。
【請求項９】
前記置換ステージが、GF(22)におけるマスクされた乗法逆元演算を実行するように動作可能である、請求項8に記載の方法。
【請求項１０】
GF(22)における前記マスクされた乗法逆元演算が、GF(28)から分解された塔の体(GF(22)2)2を活用する、請求項9に記載の方法。
【請求項１１】
前記静的ルックアップテーブル(T)が、GF(22)におけるT[・]={00, 01, 10, 11}およびそれの転置のうちの1つまたは複数である、請求項8に記載の方法。
【請求項１２】
前記動的ルックアップテーブルが、入力マスクおよび出力マスクを受け取り、前記動的ルックアップテーブルが、前記入力マスクによって訂正されたインデックスを有する前記出力マスクによってマスクされる前記静的テーブルに対応する、請求項8に記載の方法。
【請求項１３】
前記置換ステージの前記動的ルックアップテーブルが、GF(24)におけるマスクされた逆元の低部および高部を決定するために利用される、請求項12に記載の方法。
【請求項１４】
処理回路であって、
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせることと、
置換データを取得するために置換ステージを通して前記組合せデータの少なくとも一部をルーティングすることであって、前記置換ステージが、有限体の部分体内のそれの逆元に等しい静的ルックアップテーブルと、前記静的ルックアップテーブルのマスクされたバージョンである動的ルックアップテーブルとを利用する、ルーティングすることと、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングすることとを行うように構成された、処理回路と、
前記出力データを記憶するように構成されたストレージデバイスとを備える、暗号法デバイス。
【請求項１５】
前記暗号法演算が暗号化演算であり、前記入力データが平文であり、前記出力データが暗号文である、請求項14に記載のデバイス。
【請求項１６】
前記暗号法演算が復号演算であり、前記入力データが暗号文であり、前記出力データが平文である、請求項14に記載のデバイス。
【請求項１７】
前記組合せデータが、平文の一部、マスクされた平文の一部、平文の関数である値、マスクされた平文の関数である値、暗号文の一部、マスクされた暗号文の一部、暗号文の関数である値、およびマスクされた暗号文の関数である値のうちの1つまたは複数を含む、請求項14に記載のデバイス。
【請求項１８】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項14に記載のデバイス。
【請求項１９】
前記置換ステージが、GF(22)におけるマスクされた乗法逆元演算を実行するように動作可能である、請求項18に記載のデバイス。
【請求項２０】
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせるための手段と、
置換データを取得するために置換ステージを通して前記組合せデータの少なくとも一部をルーティングするための手段であって、前記置換ステージが、有限体の部分体内のそれの逆元に等しい静的ルックアップテーブルと、前記静的ルックアップテーブルのマスクされたバージョンである動的ルックアップテーブルとを利用する、ルーティングするための手段と、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングするための手段とを含む、暗号法デバイス。
【請求項２１】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項20に記載のデバイス。
【請求項２２】
前記置換ステージが、GF(22)におけるマスクされた乗法逆元演算を実行するように動作可能である、請求項21に記載のデバイス。
【請求項２３】
暗号法とともに使用するための非一時的機械可読記憶媒体であって、少なくとも1つの処理回路によって実行されたとき、前記少なくとも1つの処理回路に、
組合せデータを取得するために、暗号法演算の一部として入力データとラウンド鍵とを組み合わせることと、
置換データを取得するために置換ステージを通して前記組合せデータの少なくとも一部をルーティングすることであって、前記置換ステージが、有限体の部分体内のそれの逆元に等しい静的ルックアップテーブルと、前記静的ルックアップテーブルのマスクされたバージョンである動的ルックアップテーブルとを利用する、ルーティングすることと、
出力データを生成するために1つまたは複数の追加の暗号法ステージを通して前記置換データをルーティングすることとを行わせる1つまたは複数の命令を有する、非一時的機械可読記憶媒体。
【請求項２４】
前記有限体がガロア体(GF)であり、前記部分体がGF(22)である、請求項23に記載の非一時的記憶媒体。
【請求項２５】
前記動的ルックアップテーブルが入力マスクと出力マスクとを受け取り、前記動的ルックアップテーブルが、前記入力マスクによって訂正されたインデックスを有する前記出力マスクによってマスクされる前記静的テーブルに対応する、請求項18に記載のデバイス。
【請求項２６】
ルーティングするための前記手段が、入力マスクと出力マスクとを受信する動的ルックアップテーブルを利用し、前記動的ルックアップテーブルが、前記入力マスクによって訂正されたインデックスを有する前記出力マスクによってマスクされる前記静的テーブルに対応する、請求項21に記載のデバイス。
【請求項２７】
前記動的ルックアップテーブルが入力マスクと出力マスクとを受け取り、前記動的ルックアップテーブルが、前記入力マスクによって訂正されたインデックスを有する前記出力マスクによってマスクされる前記静的テーブルに対応する、請求項24に記載の非一時的記憶媒体。
【請求項２８】
前記静的ルックアップテーブルのマスクされたバージョン(Tm)、ベクトル(MT)、前記ベクトルのシフトされたバージョン(MT')、および出力マスクの現在値m'を使用して、GF(22)における入力値のペア(B)のマスクされた値(Bm)の乗法逆元を取得するステップをさらに含み、Bm-1=(B-1+m')である、請求項1に記載の方法。
【請求項２９】
前記処理回路が、前記静的ルックアップテーブルのマスクされたバージョン(Tm)、ベクトル(MT)、前記ベクトルのシフトされたバージョン(MT')、および出力マスクの現在値m'を使用して、GF(22)における入力値のペア(B)のマスクされた値(Bm)の乗法逆元を取得するようにさらに構成され、Bm-1=(B-1+m')である、請求項14に記載のデバイス。
【請求項３０】
前記静的ルックアップテーブルのマスクされたバージョン(Tm)、ベクトル(MT)、前記ベクトルのシフトされたバージョン(MT')、および出力マスクの現在値m'を使用して、GF(22)における入力値のペア(B)のマスクされた値(Bm)の乗法逆元を取得するための手段をさらに含み、Bm-1=(B-1+m')である、請求項20に記載のデバイス。
【国際調査報告】
2018508044.tif 000038
2018508044.tif 000039
2018508044.tif 000040