(57)【要約】  キー混合および置換（Ｓボックス）演算を採用する暗号アルゴリズムのための決定論的結合方法は、真のマスク（マスク［０］）およびあらゆる可能なＳボックス入力に対応する複数のダミーマスクで構成されるマスキング表（マスク［０］からマスク［６３］）を使用する。各マスクは、キー混合演算（例えば、ビット単位のＸＯＲ）において、暗号キー（Ｋ）またはラウンドサブキー（Ｋ１からＫ１６）に適用され、暗号アルゴリズム全体内または個別暗号ラウンド内のデータブロック（ＤＡＴＡ）に適用される真およびダミーキーまたはサブキーを生成する。マスク値は、サイドチャネル統計的分析が、ダミーキーまたはサブキーから真のキーを判定することを阻止する。真のマスクは、外部観察者によってではなく、暗号に識別可能である。
2009516964.tif 000002
【特許請求の範囲】
【請求項１】
真のマスクを含む、複数のマスクを有するマスキング表を構成するステップと、
暗号アルゴリズムの複数ループで使用するための、１つの真のキーおよび複数のダミーキーを含む、マスキングをかけたキーを生成するために、前記マスキング表の全マスクを暗号キーに適用するステップと、
メッセージデータを入力して処理されたメッセージデータ結果を得ると、暗号アルゴリズムの複数ループを実行するステップであって、前記暗号アルゴリズムの各ループは、全てのマスキングをかけたキーが一旦使用されるまで、前記マスキングをかけたキーのうちの異なる１つを使用して実行され、真のメッセージデータ結果を生じる前記真のキーを使用して、前記暗号アルゴリズムのループを実行するステップである一方で、ダミーメッセージデータ結果を生じる前記ダミーキーのいずれかを使用して、前記暗号アルゴリズムのループを実行するステップと、
第１のメモリロケーションに前記真のメッセージデータ結果を格納し、１つ以上の第２のメモリロケーションにダミーメッセージデータ結果を格納するステップと、
を含む、暗号化保護方法。
【請求項２】
前記マスキング表からのマスクは、ランダム順で適用される、請求項１に記載の方法。
【請求項３】
前記マスキング表のマスクを前記暗号キーに適用するステップは、ビット単位のＸＯＲ演算を伴い、前記マスクは、全てゼロである前記真のキーを生成する、請求項１に記載の方法。
【請求項４】
暗号アルゴリズムのループを実行する際、１組のラウンドサブキーは、前記暗号アルゴリズムのそのループに使用される前記マスキングをかけたキーから生成され、前記真のキーは、前記暗号アルゴリズムの１ループのラウンドにおいて、前記メッセージデータに適用される１組の真のラウンドサブキーを生成して前記真のメッセージデータ結果を生じ、前記複数のダミーキーは、前記暗号アルゴリズムの各ループのラウンドにおいて、前記メッセージデータに適用される対応する組のダミーラウンドサブキーを生成してダミーメッセージデータ結果を生じる、請求項１に記載の方法。
【請求項５】
前記暗号アルゴリズムは、１つ以上のキー混合演算、および１つ以上の置換（Ｓボックス）演算を含む、請求項１に記載の方法。
【請求項６】
前記暗号アルゴリズムは、ＤＥＳ変異型を備える、請求項１に記載の方法。
【請求項７】
真のマスクを含む、複数のマスクを有するマスキング表を構成するステップと、
暗号の各ラウンド中に、そのラウンドに対するキー混合演算の一部として、前記マスキング表の全マスクを、前記キー混合演算をマスキングするために、サブキーおよびデータブロックに適用するステップであって、前記真のマスクを前記サブキーおよびデータブロックに適用するステップは、前記キー混合演算において前記サブキーおよびデータブロック単独を適用するステップと同一の結果を得て、前記キー混合演算において前記複数のマスクの全てを適用するステップは、前記暗号に対する全ての可能なＳボックス入力値を得る、ステップと、
前記マスキングをかけたキー混合演算の前記結果を、置換表の入力または前記暗号のＳボックスに適用するステップと、
全ラウンドが完了するまで、前記真のマスクを適用するステップの結果を使用して、前記暗号の次のステップを続行するステップと、
を含む、暗号化保護方法。
【請求項８】
前記マスキング表は、前記真のマスクと、任意のラウンドに対する任意のサブキーに適用されると、そのサブキーの少なくともいくつかのビットを効果的にブラインドする複数のダミーマスクとを備え、前記ブラインドするステップは、前記真のマスクと共に、前記暗号に対するＳボックス入力値のあらゆる可能な組み合わせを生じる、請求項７に記載の方法。
【請求項９】
任意の暗号ラウンドにおける前記マスク、サブキー、およびデータブロックは、特定のＳボックス入力に別々に割り当てられる複数のｎビットブロックに細分され、前記マスク表は２ｎのマスクを含み、２ｎの可能なｎビット値のそれぞれは、前記マスクに対する前記別々に割り当てられたブロックにおいて一度および一度だけ発生する、請求項７に記載の方法。
【請求項１０】
特定のＳボックス入力に割り当てられる前記ｎビット値は、既定の選択およびそのマスクからのビットの順序付けによって、所与のマスクから抽出される、請求項９に記載の方法。
【請求項１１】
任意の暗号ラウンドにおけるマスク、サブキー、およびデータの前記別々に割り当てられたブロックは、前記暗号の明確なＳボックス表へのＳボックス入力を形成する、請求項９に記載の方法。
【請求項１２】
前記キー混合演算の一部として、前記マスキング表を前記サブキーおよびデータブロックに適用するステップは、ビット単位のＸＯＲ演算を伴い、前記真のマスクは１組のゼロ値を備える、請求項７に記載の方法。
【請求項１３】
前記マスキング表における各マスクは、前記キー混合演算において、ランダム順で１ラウンドにつき一度および一度だけ、アクセスおよび適用され、前記真のマスクは前記暗号に識別可能である、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算中に暗号ハードウェアエンジンを標的暗号解読攻撃から保護する方法に関し、具体的には、マスキング方法（偽またはダミー演算）の使用により、あるラウンドにおける暗号化アルゴリズム置換（Ｓボックス）演算の（キー側の）入力値のサイドチャネル攻撃からの保護に関する。
【背景技術】
【０００２】
米国特許出願公報第２００４／０１３９３４０号では、Ｊｏｈｎｓｏｎらは、実コードを隠すためにダミーコードを使用するステップを含む試行によって、統計的およびデータフロー分析などの、いわゆる「ホワイトボックス攻撃」に対して安全な暗号化アルゴリズムを製作するステップに関連する問題を論じている。Ｊｏｈｎｓｏｎらは、情報の転送、組み合わせ、または損失の場所を広く普及させるステップ、および攻撃者に見える処理活動を変えるさらなる機能および変換を生成するステップを含む、代替解決法を提供している。これらの解決法は、ＤＥＳアルゴリズムまたはその変異型を使用するスマートカードを守るステップに向けられる例示的実施において適用される。
【０００３】
米国特許出願公報第２００３／００４４００３では、Ｃｈａｒｉらは、サイドチャネル攻撃に耐性がある、表検索を実施するための方法およびシステムを開示している。マスキングをかけた表中の入力が元の表中の入力とは統計的に無関係である、表マスク演算を使用する。表マスク演算は、（１）より大きい表または指数サイズが大きい表に対する、表分割演算、または（２）多数の表が１つの表に集約される、表集約演算のいずれかまたは両方により行われる。
【０００４】
米国特許出願公報第２００３／００９３６８４では、Ｋａｉｓｅｒｗｅｒｔｈらは、特に電力分析攻撃に対する、暗号化アルゴリズムの潜在的脆弱性を論じている。これに関連して彼らは、単一ＤＥＳの小さいキーサイズ（効果的に５６ビット）はキー消耗攻撃に対してもはや安全とは考えられず、トリプルＤＥＳ（少なくとも２つ、および好ましくは３つの独立キーを使用して暗号化−複合化−暗号化として３回実行する）などの変異型への進化を余儀なくさせることに注目している。さらに、ＤＥＳにおけるＳボックスは、５６キービットから４８を得るためのＳボックス入力および出力の微分解析に対し、潜在的に脆弱である。Ｋａｉｓｅｒｗｅｒｔｈらは、マスキング演算およびハミング中立ビット列を使用するステップを含む、この種類の攻撃を阻止するいくつかの手段を開示している。
【０００５】
米国特許第６，２７８，７８３号では、Ｋｏｃｈｅｒらは、定期的にＳボックス表がブラインドされてランダムに順序を変えられ、キーおよびメッセージブロックの両方がブラインドされて、ビット単位のＸＯＲ演算による元の値に関連する順序変更可能な二部値を生じる、改良されたＤＥＳ実施を開示している。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
一般に、サイドチャネル攻撃は、標的暗号アルゴリズムの実行中に、暗号ハードウェアの電力消費または電磁放射線を外部から監視するステップ、およびキーに関する使用可能な情報を得るために、監視された特徴のタイミングプロファイルを標的アルゴリズムに相関させようとするステップを伴う。例えば、そのような１つの攻撃は、所与のラウンドにおいてデータがサブキーでＸＯＲされる、アルゴリズムのＳボックスの入力側におけるアルゴリズムの実行のその部分を直接標的にすることができる。暗号化アルゴリズムをサイドチャネル攻撃に対して保護する１つの方法は、ランダム化マスキングまたはブラインド
方法を使用すること、つまり、真の演算と共に、幾多の偽またはダミー演算を実行するステップであろう。しかし、そのようなランダム化マスキングに関連する問題は、追加されたダミー演算の実行において注入されるエントロピーが制御されないので、統計的手法を使用して真の演算を暴露することがなおも可能であるという点である。
【課題を解決するための手段】
【０００７】
本発明は、独占的ではないが特に、置換（Ｓボックス）演算を採用する、または暗号Ｓボックスの入力側でのビット単位のＸＯＲ演算によってなど、データをラウンドサブキーに論理的に組み合わせる暗号アルゴリズムのための、標的攻撃の影響を受けやすい暗号化アルゴリズムのための決定論的結合方法である。本発明の決定論的結合方法は、純粋にランダムなブラインドまたはマスキング手法よりも真の演算のさらなる保護を達成するために、１組の偽またはダミー演算を実行する時に、注入されたエントロピーを制御する。
【０００８】
該方法は概して、真のキーおよび様々な組み合わせにおけるキーの少なくともいくつかのビットをブランドするように構築されている幾多の保護列に対応する１列を含む、マスキング表を事前に構築するステップより始まる。該表からの列が論理的に所与のキーと組み合わせられると、該方法は１組のキーを得て、そのうちの１つだけが真である一方で、その他の全てはダミーキーである。（例えば、ビット単位のＸＯＲ連結演算の場合、真のキーに対応する該表中の列は、全０ビットを含むマスクとなる一方で、保護列は少なくともいくつかのビットが１であるマスクとなる。）暗号アルゴリズムは、ランダム順で真およびダミーキーを使用し、メッセージブロックで複数回実行して、対応する真およびダミーラウンドサブキーを生成する。真のキーを暗号演算に適用するステップより得られる結果はメモリに格納される一方で、ダミーキーからの間違った結果はダミーメモリロケーションに格納される。暗号がキーのそれぞれに対して実行された後、真の結果はメモリからアクセスされる。
【０００９】
あるいは、マスキング表の列は、暗号ラウンド内でサブキーに論理的に組み合わせて、ラウンドのそれぞれに対する真のサブキーおよび１組のダミーキーを得ることが可能である。その後これらのサブキーが適用され、次のラウンドに転送されている真の結果のみを伴う暗号ラウンドに従って、メッセージブロックを処理する。
【００１０】
Ｓボックス演算を採用する暗号アルゴリズムに対して、ある数ｎのビットは、Ｓボックスの入力側に進入する（一般的に検索表として実施される）。よって、Ｓボックスに対する２ｎの可能な入力値がある。本発明の例示的実施形態では、２ｎのマスクを含むマスキング表が構成され、マスクのうちの１つは全ての０を含み（真の演算に対応する）、その他のマスクの全ては１であるいくつかのビットを含む（ダミー演算に対応する）。これらのマスクは、（ａ）そこから対応する真またはダミーラウンドサブキーが生成される１組のキー（１つが真で残りはダミーキー）を得るためのキー、または（ｂ）ラウンドのそれぞれに対する１組のサブキーを得るための各ラウンドサブキー（再度、１つがラウンドに対する真のサブキーで、その他はラウンドに対するダミーサブキーである）で、ビット単位ＸＯＲされる。暗号ラウンド内で、サブキーのそれぞれは、ｎビットの集合内でデータと論理的に組み合わされてＳボックスに進入する。表中のダミーマスクは、Ｓボックスに進入する組み合わされたビットの集合が２ｎの可能な入力値全てを取るように特別に選ぶことができ、それによって攻撃者によって見られるエントロピーを完全に水平化するので、そのＳボックス演算で使用される真のラウンドサブキーは外部から解明することができない。
【発明を実施するための最良の形態】
【００１１】
決定論的結合は、「大域」マスキング方法または「内部」マスキング方法のいずれかとして、本発明に従って適用することができる。基本概念は、マスキング表の列のそれぞれ
をキーまたはラウンドサブキーに適用し、真およびダミーキーまたはサブキーを得ることである。大域マスキング方法では、マスキング表の列によるマスキングは、暗号アルゴリズムのラウンドの実行の外側の全体の暗号キーに適用される。これにより、内部変更なしで、暗号アルゴリズム自体の既存ハードウェアまたはソフトウェア実施を保つことができる。大域マスキングは、真の暗号キーおよび１組のダミー暗号キーを生成する。そしてこれらの暗号キーは、あるランダム順で、暗号アルゴリズムの複数ループにおけるメッセージブロックに引き続いて適用される。したがって、大域マスキング方法の実施は、暗号アルゴリズムの６４の演算のループを処理することができる。各ループ内で、マスキング表からマスク［ｉ］を得るように、表ランダムアクセスを使用して既に使用されていない指数ｉをランダムに選ぶことが可能である。一次マスク［ｉ］による暗号キーがある場合のビット単位ＸＯＲ演算は、マスキングをかけたキーを生じる。そしてこのマスキングをかけたキーは、暗号アルゴリズムにおいてメッセージブロックにより処理され、これはマスキングをかけたキーからのラウンドサブキーの生成を含むことができる。指数ｉがＩｎｄｅｘＭａｓｋＺｅｒｏである場合、マスキングをかけたキーは真のキーであり、暗号アルゴリズムのこのループをメッセージブロックに適用するステップの結果は、メモリに格納される真の結果である。指数ｉがＩｎｄｅｘＭａｓｋＺｅｒｏとは異なる場合、マスキングをかけたキーはダミーキーであり、ダミー結果はメモリ内のダミーロケーションに格納される。一旦ループの全てが実行されると、真の結果はメモリからアクセスすることができる。
【００１２】
代替方法は、「内部」マスキング方法である。本手法は、暗号アルゴリズムの内部を変更して、内部マスキングをラウンドキーに適用する。暗号ラウンドのそれぞれの中で、マスキング表中のマスキングの全ては、ランダム順でランドサブキーに引き続いて適用され、ラウンドに対する１つの真のラウンドサブキーおよび幾多のダミーキーを得る。これらのマスキングをかけたサブキーは、暗号アルゴリズムのラウンドの複数ループを処理するために使用される。特に、内部マスキング方法の実施は、各暗号ラウンドの６４の演算のループを処理することができ、マスキング表からマスク［ｉ］を得て、それをラウンドサブキーに適用するために、指数ｉはラウンドですでに使用されていない指数値からランダムに選択される。マスキングをかけたサブキーによるラウンドのそのループの処理後、指数がＩｎｄｅｘＭａｓｋＺｅｒｏで、真のサブキーに対応する場合、ラウンドの正しい結果がメモリに格納される。指数がＩｎｄｅｘＭａｓｋＺｅｒｏとは異なる場合、ラウンドのこのループはダミーサブキーにより処理されたことを意味し、間違った結果はメモリのダミーロケーションに格納される。正しい結果は次のラウンドで使用されるが、ダミー結果は上書きすることができる。
【００１３】
本発明の決定論的結合方法は、サイドチャネル攻撃の影響を受けやすいハードウェア暗号エンジンにおいて実行される様々な暗号化アルゴリズム、および特に、キー混合およびＳボックス演算を伴う、キースケジュールを採用する対称ブロック暗号のいずれかに適用することができる。解説目的で、下記の説明は、いくつかの変異型において広範な使用を保つ、１９９９年１０月２５日に再確認された（現在は撤回）、１９７７年１月１５日の米国規格基準局（現在は米国標準技術局）の連邦情報処理規格（ＦＩＰＳ）公報４６−３に説明されるデータ暗号化規格（ＤＥＳ）の本来核心であった、データ暗号化アルゴリズムを参照して行う。最も顕著に、トリプルＤＥＳ（３ＤＥＳ）として、およびトリプルデータ暗号化アルゴリズム（ＴＤＥＡ）としても知られる変異型は、ＮＩＳＴ特別公報８００−６７（２００４年５月）に説明されるように、独立キーにより連続して３回データ暗号化アルゴリズムを適用するステップを伴う。計算的に安い代替変異型は、キーホワイト化として知られる手法を使用して、コアＤＥＳラウンド（つまり、
【００１４】
【数１】
2009516964.tif 000003
【００１５】
の前および後の両方で、余分６４ビットキー物質をＸＯＲすることによって、有効キーサイズを増加させる、ＤＥＳ−Ｘである。これらおよびその他のＤＥＳ変異型は、その小さい有効キーサイズによる、消耗キー検索に対するＤＥＳの脆弱性を軽減する方法である。なおさらなる変異型は、線形暗号解読またはそれに対してＤＥＳが特異的に設計されなかったその他の潜在的脆弱性にさらに耐性を示すことを目指して、Ｓボックス表、キースケジュール、またはその他のコア関数を変更する。ＤＥＳおよびその変異型は、その容易なアクセスのしやすさのため、特にサイドチャネル攻撃に対して脆弱である、スマートカードにおける暗号化エンジンとしてよく使用される。本発明の決定論的結合方法は、スマートカードおよびその他の暗号ハードウェアにおけるこの脆弱性を大幅に軽減する。
【００１６】
ＤＥＳは、ブロックの最初および最後の順列間で、１６の同一ラウンドによる６４ビットメッセージブロックがあると動作する。演算のモードは、ＤＥＳを単一ブロックよりも長いメッセージに適用するステップに対して特定される。ＤＥＳは６４ビットキー（ＫＥＹ）を使用し、そのうち８ビットはパリティチェックのみに使用されるので、有効なキーの長さは５６ビットである。キースケジュール関数ＫＳは、ＫＥＹを使用して、各ラウンドに対して１つの、Ｋ１乃至Ｋ１６という１６のサブキーを生成する。複合化に対しては、サブキーが生成されて逆の順番で適用される。キースケジュールＫＳの完全定義は、ＦＩＰＳ  ＰＵＢ４６−３に説明されるように、ＰＣ−１およびＰＣ−２（典型的に表として実施される）という一対の順序を変えた選択肢、および選択されたキービットの２つの２８ビットブロックの一連のビット回転を伴う。しかし、これらの演算の究極の効果は、Ｋ１乃至Ｋ１６の各サブキーを、ＫＥＹから得られる４８ビットの特定の順序を変えた選択肢を設定するリストして表される、ＫＥＹの別関数として考えることが可能であることである。５６ＫＥＹビットのそれぞれは、１６サブキーのうち約１４における異なるロケーションで使用される。例として、ＤＥＳキースケジュール関数ＫＳによって定義されるサブキーＫ１は、
【００１７】
【数２】
2009516964.tif 000004
【００１８】
であり、
ここで、番号はＫＥＹからの選択されたビットを表し、サブキーは６ビットずつの８集団に編成される。
【００１９】
１６ＤＥＳラウンドには、６４ビットメッセージブロックが２（「左」および「右」）等分ブロックに分けられ、十字スキーム（Ｌｉ＝Ｒｉ−１および
【００２０】
【数３】
2009516964.tif 000005
【００２１】
ラウンドに対してｉ＝１から１６）で連続ラウンドにおいて交互に処理される、フェイステル構造がある。解読スキームは同様である。図１に図示されるように、ＤＥＳラウンドに対する暗号関数Ｆ（Ｒ，Ｋ）は、（１）３２ビット半ブロックＲｉ−１を取り、４８ビット出力をもたらす展開関数Ｅ、（２）ビット単位のＸＯＲ演算
【００２２】
【数４】
2009516964.tif 000006
【００２３】
を使用して、４８ビット展開出力をそのラウンドに対する４８ビットサブキーＫｉに組み合わせるキー混合機能、（３）４８ビットキー混合された出力ｊを取り、それを８つの６ビット断片に分けて、１組の８つの４ビット出力を得るように、８つの選択表またはＳボックスＳ１からＳ８にそれぞれ対応する入力としてこれらの断片を適用する、非線形置換変換、および（４）Ｓボックスからの３２出力ビットを再配列する順列関数Ｐの組み合わせを伴う。
【００２４】
各ＤＥＳのＳボックスＳ１からＳ８は、ＦＩＰＳ  ＰＵＢ４６−３に説明されるように、６ビット入力を４ビット出力に関連付ける関数である。６ビットの集合は、各Ｓボックスに進入して６４の４ビット入力のうちの１つを選択する。本発明の方法は、各Ｓボックスからの全６４の可能性がアクセスされることを確実にする。これを行うためには、６４のマスクを含むマスキング表が構成される。表中の各マスクは８バイト幅とすることができ、その４８ビットは、マスキング演算に使用され、残りの１６ビット（例えば、各バイトから２）は、（ａ）ＤＥＳキーのパリティ規則を適用することによって計算することが可能な８つのパリティビット（またはその他のエラーチェックビット）、および（ｂ）ランダムに選択するか、または１つ以上のその他のラウンドにおけるＳボックスを別にして、４８ビットと同じ機構により差し引くことによって計算することが可能な追加ビットとすることができる。マスキングに使用される４８ビットは、０から６３に及ぶ１組の８つの６ビット値を形成する。１組中の８つの６ビット値のそれぞれは、Ｓ１からＳ８の８つのＳボックスのうちの異なる１つに対応する。（注：ダミーマスクから真のマスクの同一性を隠すため、および使用されているダミー値も隠すために、８つの値を形成するマスクビットは、連続順または昇順でマスクから抽出する必要はない。例えば、ラウンド１に対するものなど、キースケジュールの１つを利用して、各マスクから値を得ることが可能である。したがって、ビット１０、５１、３４、６０、４９、および１７を使用して、ＳボックスＳ１に対応するマスク値を得る可能性がある。）最も簡素なマスキング表は下記のとおりであり、ここでは、カラムＳ１乃至Ｓ８は、各マスクに対してＳボックスに割り当てられる抽出された６ビット値の１０進等値を表す。
【００２５】
【表１】
2009516964.tif 000007
【００２６】
ここでは、表の各列は８つの同一値を含む。しかし、あるカラム（特定のＳボックスに対応する）内に０から６３の可能な値の全てが、一度および一度だけ現れるという条件で、その他のマスキング表を構成することが可能である。あるいは、各カラム内の値に対するランダム順があってもよい。典型的に、マスク［０］などのマスクの１つは、全ての０値を含み、「真の」マスクとして指定される。
【００２７】
大域マスク方法を使用する暗号の演算中に、再構成されたマスク表からのマスクの全ては、他の未修正暗号アルゴリズムを開始する前に、全体の暗号キーに適用される。したがって、暗号アルゴリズムは全体として、複数回ループすることができ、暗号全体の各ループに対して異なるマスキングをかけたキーを採用する。マスキングをかけたキーの１つは真のキーであり、暗号アルゴリズムの一部として真のラウンドサブキーを生成し、その場合、その他全てのマスキングをかけたキーは、ダミーサブキーを生成してダミー結果を得るダミーキーである。０値は単一マスクに割り当てられ、それにより、このマスクが使用されると真の結果を得ることが可能になる。
【００２８】
内部マスク方法を使用する暗号の演算中に、事前に構成されたマスク表からのマスクの全ては、ラウンドごとに全Ｓボックスの入力に適用される。図２は、第１の暗号ラウンド中に、マスク［１５］など、６４マスクのうちの代表的な１つを第１のＳボックスＳ１に適用するステップの説明に有用な例である。これは、内部マスキングを実施する時に、暗号アルゴリズムの内部に行われる変更を図示する。その他のマスクの適用のように、かつ後のラウンドでも、その他のＳボックスＳ２からＳ８へのそのマスクの適用は同様である。内部マスキングを採用する各ラウンドにおいて、真のマスクを含むマスクの全てをサブキーおよびデータに適用するために、プロセスは６４回ループする。各マスクが任意のラウンドで正確に一度使用されるという条件で、かつ真のマスクが暗号化エンジンに知られているという条件で、マスクは、任意の順番、例えば、各ラウンドに対して異なってもよいランダム化した順番で適用することができる。つまり、マスク表のランダムアクセスを使用することができる。真のマスクの同一性はレジスタに格納され、プロセスが１組のマスクをループすると指数と比較することができる。８つのＳボックスから出力される真の結果は、全６４のマスクが適用されるまで、例えばレジスタまたはメモリに保持され、そして真の結果は、暗号アルゴリズムにおける次のステップに渡される。ＤＥＳ順列関数Ｐは、Ｓボックス出力からの真の結果の格納と同時に適用することができる。所望に応じて、偽の結果もダミーメモリロケーションに保持し、場合により順序を変えることもできるが、必ずしも暗号における次のラウンドに転送されない。
【００２９】
８つのＳボックスへの入力は、（１）ＤＥＳ展開関数Ｅより得られる展開データブロックＤＡＴＡ、（２）ここではサブキーＫ１である、特定のラウンドに対するＤＥＳサブキー、および（３）ここではマスク［１５］である、適用されている特定のマスクを備える。ＤＥＳにとって通常のとおり、展開データブロックＤＡＴＡからのビットは、８つのＳボックスに連続的に割り当てられ、Ｓ１に対してはビット１〜６、Ｓ２に対しては７〜１
２などである。後のラウンドに対するその他のサブキーと同様に、サブキーＫ１自体は、主要キーＫＥＹからのビットの選択および再配列であることを念頭に置くべきであることを除いて、サブキーＫ１に対するビットは同様に８つのＳボックスに連続的に割り当てられ、Ｓ１に対してはＫ１のビット１〜６、Ｓ２に対してはＫ１のビット７〜１２などである。表中のその他のマスクとも同様に、マスク［１５］からの特定のビットは、既述のように、各Ｓボックスに割り当てられる値を抽出するように選択されて順序付けられる。よって、第１のＳボックスＳ１に対して、１０番目、５１番目、３４番目、６０番目、４９番目、および１７番目のビットは、マスク［１５］から抽出されて、Ｓ１に適用されるマスク［１５］Ｓ１という値を得る。ここではこの値は１０１０１０（または１０進の４２）として解説される。
【００３０】
これらのビットの集合のそれぞれ（マスク、サブキー、データ）は、図２の
【００３１】
【数５】
2009516964.tif 000008
【００３２】
によって記号で表されるビット単位のＸＯＲ演算を使用して、他のものと組み合わせられる。ここではマスクはまずサブキーに適用されるとして示され、そして結果として生じるマスキングをかけたキーはデータに適用される。しかし、ビット単位のＸＯＲ演算は可換および連合であるため、実際は任意の順番でこれら３つの集団（マスク、サブキー、およびデータ）に適用され、なおも同じＳボックス入力を得ることができる。任意の外部観察者にとって演算をさらに不明確にするように、異なるＳボックス、マスク、およびラウンドに対して適用の順番を変えることは、確実に有益となるであろう。
【００３３】
上記のように、本発明のマスキングプロセスは、ＤＥＳおよびその変異型以外の暗号に適用することができる。例えば、新暗号化規格（ＡＥＳ）として採択され、ＮＩＳＴ  ＦＩＰＳ  ＰＵＢ１９７に公表されたＲｉｊｎｄａｅｌは、８ビット入力および出力を伴うＳボックスを使用する。２５６（＝２８）の異なるマスクのマスク表を構成し、その暗号のＡｄｄＲｏｕｎｄＫｅｙ（  ）変換の一部として適用することができる。その他多くの暗号アルゴリズムは、Ｓボックスまたは同様の置換表を使用し、そのようなＳボックスの入力側にキー混合演算を提供する。本願でＤＥＳに対して説明されるような、限定的マスキングはそのような暗号に適用できる。
【００３４】
図３を参照して、本発明の大域マスキングの実施を行うための例示的ハードウェアが図示される。メモリ３１は、マスキングをかけたキーを含む、データに対する読み取り／書き込み格納場所である。乱数発生器３２は、マスク表の列にアクセスするためのランダム指数ｉを含む、その他のユニットによって使用するための乱数を生成する。当技術分野で周知の任意の適切な発生器を使用してもよい。マスク表生成ユニット３３は、マスク表の入力を生成し、それらをメモリ３１に書き込む。演算シーケンサ３４は、その他のユニットへコマンドを送信し、その作用を配列する。ＤＥＳアルゴリズムの各ループ中に、キーマスキングユニット３６は、（「真の」）暗号キーをメモリ３１から読み取り、メモリ３１に格納されるマスク表からの１つの入力によりそれをマスキングし、マスキングをかけたキーをメモリ３１に書き込む。ＤＥＳ計算ユニット３７は、メモリ３１からマスキングをかけたキーおよび入力データ（プレーンテキストまたは暗号テキストメッセージブロック）を読み取り、マスキングをかけたキーから任意のサブキーを生成するステップを含む、マスキングをかけたキーを使用してＤＥＳ暗号アルゴリズムを実行し、結果を出力データとしてメモリ３１に再び書き込む。結果を格納するために使用されるメモリロケーションは、マスキングをかけたキーが真のキーまたはダミーキーであるかどうかに左右される。
【００３５】
図４を参照して、本発明の内部マスキングの実施を行うための例示的ハードウェアが図示される。大域マスキングハードウェア実施と同様に、本内部マスキングの実施も、メモリ４１、乱数発生器４２、およびマスク表生成ユニット４３を含み、その基本機能の全ては、大域マスキングハードウェアの対応ユニット３１〜３３と実質的に同じである。演算シーケンサ４４は同様に、コマンドをその他のユニットに送信してその作用を配列するが、内部マスキング配列は、大域マスキング配列とは異なる。本ハードウェア実施は、ＤＥＳ初期計算ユニット４５、ラウンドサブキーマスキングユニット４６、ＤＥＳラウンド計算ユニット４７、およびＤＥＳ最終計算ユニット４８をさらに含む。ＤＥＳ初期計算ユニット４５は、ＤＥＳラウンド前計算を実施する。特に、メモリ４１から入力データ（処理されるプレーンテキストまたは暗号テキストメッセージブロック）を読み取り、第１ラウンド（ＤＥＳ−Ｘまたは同様の変形物からの任意のキーホワイト化を含む）前にＤＥＳの初期処理ステップを実施し、ステップの結果をメモリ４１に再び書き込む。また、ユニット４５は、メモリ４１から真の暗号キーを読み取り、定義されたＤＥＳキー生成ルーチンに従って１組のラウンドサブキーを生成し、ラウンドサブキーをメモリ４１に再び格納する。あるいは、サブキーの生成は、ＤＥＳラウンド計算ユニット４７によってラウンドごとに行うことが可能である。いずれにしても、ラウンドサブキーは、ラウンドサブキーマスキングユニット４６によってマスキングをかけられ、それはメモリ４１から対応サブキーを読み取り、ラウンドの各ループにおいて、メモリ４１からのマスク表の１つのエントリでそれをマスキングし、マスキングをかけたサブキーをメモリ４１に書き込む。ＤＥＳラウンド計算ユニット４７は、ＤＥＳラウンドの所与のループに対するマスキングをかけたサブキーおよびメモリ４１からのそのラウンドに対する入力データを読み取り、ラウンド計算を実施し、結果をメモリ４１に再び書き込む。ラウンドのそのループの結果を格納するためのメモリロケーションは、マスキングをかけたサブキーが、そのラウンドに対する真のサブキーまたはダミーサブキーであるかどうかに左右される。各ＤＥＳラウンドループは、ラウンドサブキーの全マスキングが採用されるまで、複数回ループする。データは、次のラウンドでメモリ４１からアクセスされるデータ入力における真のサブキーを適用するステップに由来する。ＤＥＳ最終計算ユニット４８は、メモリ４１から最終ラウンドの結果を読み取り、ＤＥＳラウンド後計算を実施し、結果（完全に処理されたメッセージブロック）をメモリ４１に書き込む。
【００３６】
マスキングユニット３６および４６を例外として、これらの例で示される処理ユニットは、ＤＥＳまたはその他の暗号アルゴリズムを実行するために周知である従来の構成要素である。メモリ３１および４１には、マスク表の入力を格納するため、真およびダミーキーの両方またはサブキーを格納するため、および真およびダミーの両方のデータ処理結果を格納するために割り当てられるロケーションがある。マスキングユニット３６および４６は、真およびダミーキーまたはサブキーを生成するためにマスク表入力を使用するキーまたはラウンドサブキーがあると、ビット単位のＸＯＲまたはその他の論理的組み合わせまたは算術演算を実施する。
【００３７】
上記の例からの変形物は、異なる暗号応用に対して容易に構成および適合することができる。例えば、適切な高速プロセッサ、およびラウンドデータ結果に対する真およびダミーアドレスを指定する際の注意により、本発明に従った大域および内部マスキング方法はいずれも、内部マスキングを対応する組のラウンドキーに適用するための暗号キーとして扱われる、大域手法から生成される真およびダミーキーと組み合わせて使用することが可能である。
【図面の簡単な説明】
【００３８】
【図１】図１は、従来技術のＤＥＳ規格に従ったＤＥＳ暗号化機能を図示する、略ブロック図である。
【図２】図２は、本発明の例示的実施形態に従って変更されるようなＤＥＳ暗号化機能を図示する、略ブロック図である。
【図３】図３は、本発明の方法に従ってそれぞれの大域マスキングおよび内部マスキングの実施を行う、例示的暗号化エンジンのブロック図の形のハードウェア概略図である。
【図４】図４は、本発明の方法に従ってそれぞれの大域マスキングおよび内部マスキングの実施を行う、例示的暗号化エンジンのブロック図の形のハードウェア概略図である。
【図１】
2009516964.tif 000009
【図２】
2009516964.tif 000010
【図３】
2009516964.tif 000011
【図４】
2009516964.tif 000012
【手続補正書】
【提出日】平成20年7月30日(2008.7.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
１または複数の処理部による暗号化保護方法であって、
マスクキング表生成処理部を用いて、真のマスクを含む、複数のマスクを有するマスキング表を構成してメモリに保存するステップと
キーマスキング処理部を用いて、暗号アルゴリズムの複数ループで使用するための、１つの真のキーおよび複数のダミーキーを含む、マスキングをかけたキーを生成するために、前記メモリ内のマスキング表の全マスクを暗号キーに適用するステップと、
暗号アルゴリズム処理部を用いて、メッセージデータを入力して処理されたメッセージデータ結果を得ると、暗号アルゴリズムの複数ループを実行するステップであって、前記暗号アルゴリズムの各ループは、全てのマスキングをかけたキーが一旦使用されるまで、前記マスキングをかけたキーのうちの異なる１つを使用して実行され、真のメッセージデータ結果を生じる前記真のキーを使用して、前記暗号アルゴリズムのループを実行するステップである一方で、ダミーメッセージデータ結果を生じる前記ダミーキーのいずれかを使用して、前記暗号アルゴリズムのループを実行するステップと、
前記暗号アルゴリズム処理部を用いて、前記メモリ内の第１のメモリロケーションに前記真のメッセージデータ結果を格納し、前記メモリ内の１つ以上の第２のメモリロケーションにダミーメッセージデータ結果を格納するステップと、
を含む、暗号化保護方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
１または複数の処理部による暗号化保護方法であって、
マスキング表生成処理部を用いて、真のマスクを含む、複数のマスクを有するマスキング表を構成してメモリに保存するステップと、
キーマスキング処理部を用いて、暗号の各ラウンド中に、そのラウンドに対するキー混合演算の一部として、前記メモリ内の前記マスキング表の全マスクを、前記キー混合演算をマスキングするために、サブキーおよびデータブロックに適用するステップであって、
前記真のマスクを前記サブキーおよびデータブロックに適用するステップは、前記キー混合演算において前記サブキーおよびデータブロック単独を適用するステップと同一の結果を得て、前記キー混合演算において前記複数のマスクの全てを適用するステップは、前記暗号に対する全ての可能なＳボックス入力値を得る、ステップと、
前記キーマスキング処理部を用いて、前記マスキングをかけたキー混合演算の前記結果を前記メモリに保存するステップと、
暗号アルゴリズム処理部を用いて、前記メモリ内の前記マスキングをかけたキー混合演算の前記結果を、置換表の入力または前記暗号のＳボックスに適用するステップと、
前記暗号アルゴリズム処理部を用いて、全ラウンドが完了するまで、前記真のマスクを適用するステップの結果を使用して、前記暗号の次のステップを続行するステップと、
を含む、暗号化保護方法。
【国際調査報告】
2009516964.tif 000013