(57)【要約】  本発明は、最初のサブスティテューションボックスＳ０を複数の暗号化ラウンドにおいて使用する暗号プロセスを用いて、Ｎ次サイドチャネル攻撃からセキュアにする方法であって、−  最初のサブスティテューションボックスＳ０の任意の入力値ｘについて、ｍ１、ｍ２を一様分布乱数値として、Ｓ１（ｘ  ＸＯＲ  ｍ１）＝Ｓ０（ｘ）  ＸＯＲ  ｍ２であるように、前記最初のサブスティテューションボックスＳ０をマスクすることによって、第１のランダム化されたサブスティテューションボックスＳ１を生成するステップ（Ｅ１２）と、−  第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）の任意の入力値ｘについて、Ｓ（１，１）［ｘ］＝Ｓ１［ｘ  ｘｏｒ（ｍ１  ｘｏｒ  ｍ１，１）］ｘｏｒ（ｍ２  ｘｏｒ  ｍ’１，１）であるように、第１のランダム化されたサブスティテューションボックスＳ１から、およびマスクｍ１，１、ｍ’１，１から、第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）を生成するステップ（Ｅ１３）と、−  ｉを｛２，．．Ｎ−１｝に含まれる整数として、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）の任意の入力値ｘについて、Ｓ（１，ｉ）［ｘ］＝Ｓ（１，ｉ−１）［ｘ  ｘｏｒ  （ｍ１，ｉ−１  ｘｏｒ  ｍ１，ｉ）］ｘｏｒ（ｍ’１，ｉ−１  ｘｏｒ  ｍ’１，ｉ）であるように、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）の生成のステップを反復的にＮ−２回行うことによって、ｉ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ−１）から、および複数のマスクｍ１，ｉ、ｍ’１，ｉ、ｍ１，ｉ−１、ｍ’１，ｉ−１から、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を、第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）から生成するステップ（Ｅ１４）と、暗号プロセスの少なくとも前記第１のラウンドにおいて、最初のサブスティテューションボックスＳ０の代わりに、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を用いて暗号プロセスを行うステップ（Ｅ１５）とを含む、方法に関する。
2020527743.tif 000002
【特許請求の範囲】
【請求項１】
Ｎを所定の整数とするＮ次サイドチャネル攻撃から、暗号プロセスをセキュアにする方法であって、少なくとも１つのハードウェアプロセッサを有する処理システムを含む暗号デバイス（１０１）のコンピュータ可読メモリ回路に記憶された最初のサブスティテューションボックスＳ０を、複数の暗号化ラウンドにおいて使用し、処理システムによって行われる、
コンピュータ可読メモリ回路内で前記最初のサブスティテューションボックスＳ０にアクセスするステップ（Ｅ１１）と、
最初のサブスティテューションボックスＳ０の任意の入力値ｘについて、ｍ１、ｍ２を一様分布乱数値として、Ｓ１（ｘ  ＸＯＲ  ｍ１）＝Ｓ０（ｘ）  ＸＯＲ  ｍ２であるように、前記最初のサブスティテューションボックスＳ０をマスクすることによって、第１のランダム化されたサブスティテューションボックスＳ１を生成するステップ（Ｅ１２）と、
第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）の任意の入力値ｘについて、Ｓ（１，１）［ｘ］＝Ｓ１［ｘ  ｘｏｒ（ｍ１  ｘｏｒ  ｍ１，１）］ｘｏｒ（ｍ２  ｘｏｒ  ｍ’１，１）であるように、第１のランダム化されたサブスティテューションボックスＳ１から、およびマスクｍ１，１、ｍ’１，１から、第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）を生成するステップ（Ｅ１３）と、
ｉを｛２，．．Ｎ−１｝に含まれる整数として、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）の任意の入力値ｘについて、Ｓ（１，ｉ）［ｘ］＝Ｓ（１，ｉ−１）［ｘ  ｘｏｒ  （ｍ１，ｉ−１  ｘｏｒ  ｍ１，ｉ）］ｘｏｒ（ｍ’１，ｉ−１  ｘｏｒ  ｍ’１，ｉ）であるように、ｉ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ−１）から、および複数のマスクｍ１，ｉ、ｍ’１，ｉ、ｍ１，ｉ−１、ｍ’１，ｉ−１から、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）の生成のステップを反復的にＮ−２回行うことによって、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）から生成するステップ（Ｅ１４）と、
暗号プロセスの少なくとも前記第１のラウンドにおいて、最初のサブスティテューションボックスＳ０の代わりに、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を用いて暗号プロセスを行うステップ（Ｅ１５）と
を含み、
前記マスクは一様分布乱数値であり、「ＸＯＲ」はブール排他的論理和演算であり、（ｍｉ，ｍｊ）から（ｍｋ，ｍｌ）へのサブスティテューションボックスＳの前記演算「トランスランダム化」は、ｉ、ｊ、ｋおよびｌを｛２，．．Ｎ−１｝に含まれる整数として、前記マスクｍｉおよびｍｊでマスクされた前記サブスティテューションボックスＳから、トランスランダム化されたサブスティテューションボックスと呼ばれる前記マスクｍｋおよびｍｌでマスクされた前記サブスティテューションボックスＳを算出することにある、方法。
【請求項２】
Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）は、暗号プロセス全てのラウンドにおいて最初のサブスティテューションボックスＳ０の代わりに使用される、請求項１に記載の方法。
【請求項３】
現ラウンドと呼ばれる、前記複数の暗号化ラウンドのうちの各ラウンドｒ、ｒ＞１を行うときに、
現ラウンドについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）の任意の入力値ｘについて、Ｓ（ｒ，１）［ｘ］＝Ｓ（ｒ−１，Ｎ−１）［ｘ  ｘｏｒ  （ｍｒ−１，Ｎ−１  ｘｏｒ  ｍｒ，１）］ｘｏｒ（ｍ’ｒ−１，Ｎ−１  ｘｏｒ  ｍ’ｒ，１）であるように、現ラウンドｒの前に行われた最後のラウンド（ｒ−１）において、最初のサブスティテューションボックスＳ０の代わりに使用されたＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ−１，Ｎ−１）から、およびマスクｍｒ，１、ｍ’ｒ，１から、現ラウンドｒについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）を生成するステップ（Ｅ２１）と、
ｉを｛２，．．Ｎ−１｝に含まれる整数として、現ラウンドについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）の任意の入力値ｘについて、Ｓ（ｒ，ｉ）［ｘ］＝Ｓ（ｒ，ｉ−１）［ｘ  ｘｏｒ（ｍｒ，ｉ−１  ｘｏｒ  ｍｒ，ｉ）］ｘｏｒ（ｍ’ｒ，ｉ−１  ｘｏｒ  ｍ’ｒ，ｉ）であるように、現ラウンドｒについてのｉ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ−１）から、および複数のマスクｍｒ，ｉ、ｍ’ｒ，ｉ、ｍｒ，ｉ−１、ｍ’ｒ，ｉ−１から、現ラウンドｒについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ）の生成のステップを反復的にＮ−２回行うことによって、現ラウンドｒについてのＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，Ｎ−１）を、現ラウンドｒについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）から生成するステップ（Ｅ２２）と、
暗号プロセスの前記現ラウンドｒにおいて、最初のサブスティテューションボックスＳ０の代わりに、現ラウンドｒについてのＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，Ｎ−１）を使用するステップ（Ｅ２３）と
を含む、請求項１に記載の方法。
【請求項４】
暗号プロセスは、ブロック暗号アルゴリズムである、請求項１に記載の方法。
【請求項５】
ブロック暗号アルゴリズムは、高度暗号化標準（ＡＥＳ）アルゴリズム、データ暗号化標準（ＤＥＳ）、ブローフィッシュ、サーペント、Ｇｏｓｔアルゴリズムのうちの１つである、請求項２に記載の方法。
【請求項６】
メモリスクランブリングは、ｉを｛１，．．Ｎ−１｝に含まれる整数として、ラウンドｒにおいてトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ）を生成するように行われる、請求項３に記載の方法。
【請求項７】
少なくとも１つのコンピュータのメモリの中に直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で動かされるときに請求項１に記載の方法のステップを行うためのソフトウェアコード命令を含む、コンピュータプログラム製品。
【請求項８】
少なくとも１つのハードウェアプロセッサを有する処理システムを備えた暗号デバイスによって実行されるときに、請求項１に記載の方法を行う実行可能なコンピュータコードを記憶する、非一時的なコンピュータ可読媒体。
【請求項９】
請求項１に記載の方法のステップを実行するように構成された少なくとも１つのハードウェアプロセッサ（２０１）を有する処理システムと、
前記サブスティテューションボックスを記憶するために構成されたコンピュータ可読メモリ回路（２０３、２０４、２０５）と
を備えた、暗号デバイス（１０１）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック暗号暗号化および関連した暗号デバイスの分野に関し、より詳細には、高次サイドチャネル攻撃から防護されながらブロック暗号を実装する暗号デバイスに関する。
【背景技術】
【０００２】
暗号アルゴリズムは、暗号化によって通信のプライバシーを確保するため、認証のため、または検証可能なシグネチャを生成するために一般に使用される。そのようなアルゴリズムの一例は、暗号化または復号されるデータの入力ビットが、ブロックによって処理されるＤＥＳまたはＡＥＳなどのブロック暗号アルゴリズムである。しばしば、暗号ブロックアルゴリズムは、いくつかの暗号化または復号ラウンドを適用することによって暗号化または復号を行う。非線形性をプロセスにもたらし、したがってセキュリティを高めるために、通常、各ラウンドは、Ｓｂｏｘと呼ばれるサブスティテューション（ｓｕｂｓｔｉｔｕｔｉｏｎ）ボックスを伴う。
【０００３】
そのような暗号アルゴリズムは、図１に示されるように、暗号化を行う装置の消費電力または電磁シグネチャの解析に基づくサイドチャネル攻撃の影響を受けやすい。特定のタイプのサイドチャネル攻撃は、図３に示されるように、暗号化に使用される秘密鍵の少なくとも一部分を復元するためにいくつの暗号化ラウンドに関する消費電力の統計的解析を行う差分電力解析（ＤＰＡ）である。
【０００４】
ＤＰＡなどのサイドチャネル攻撃に対して一般に使用されている対抗策は、ランダムマスクを用いる暗号化プロセスの中間値のマスキングである。その場合には、暗号化プロセスの所与の時点でサイドチャネル攻撃を行う攻撃者は、乱数値を得るだけであり、暗号プロセスに使用される秘密鍵に関する情報を何ら取得しない。それにも関わらず、１つのマスクを用いる一次マスキングは、例えば、プロセスの２つの異なるラウンドにおける２つの攻撃からの情報を組み合わせた二次サイドチャネル攻撃によって打ち破られる可能性がある。
【０００５】
任意の変数がいくつかの部分に分けられてもよく、各部分が異なるマスクによってマスクされてもよい高次マスキングプロセスが提案されている。それで、Ｎ個の異なるマスクを用いたＮ次マスキングは、Ｎ次サイドチャネル攻撃を防護する。それにも関わらず、そのような解決策は、ブロック暗号アルゴリズムに使用されるＳｂｏｘなどの非線形演算をマスクする場合に、コストが非常に高くなり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、防護されるべき変数の高次分割を伴う既存の解決策よりもより少ないリソースを消費しながら高次サイドチャネル攻撃から防護されるブロック暗号アルゴリズム、および関連した暗号デバイスに対する必要性がある。
【課題を解決するための手段】
【０００７】
この目的のために、第１の態様によれば、したがって、本発明は、少なくとも１つのハードウェアプロセッサを有する処理システムを含む暗号デバイスのコンピュータ可読メモリ回路に記憶された最初のサブスティテューションボックスＳ０を複数の暗号化ラウンドにおいて使用する暗号プロセスを用いて、Ｎを所定の整数とする、Ｎ次サイドチャネル攻撃からセキュアにする方法であって、処理システムによって行われる：
−  コンピュータ可読メモリ回路内で前記最初のサブスティテューションボックスＳ０にアクセスするステップと、
−  最初のサブスティテューションボックスＳ０の任意の入力値ｘについて、ｍ１、ｍ２を一様分布乱数値として、Ｓ１（ｘ  ＸＯＲ  ｍ１）＝Ｓ０（ｘ）  ＸＯＲ  ｍ２であるように前記最初のサブスティテューションボックスＳ０をマスクすることによって、第１のランダム化されたサブスティテューションボックスＳ１を生成するステップと、
−  第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）の任意の入力値ｘについて、Ｓ（１，１）［ｘ］＝Ｓ１［ｘ  ｘｏｒ（ｍ１  ｘｏｒ  ｍ１，１）］ｘｏｒ（ｍ２  ｘｏｒ  ｍ’１，１）であるように、第１のランダム化されたサブスティテューションボックスＳ１から、およびマスクｍ１，１、ｍ’１，１から、第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）を生成するステップと、
−  ｉを｛２，．．Ｎ−１｝に含まれる整数として、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）の任意の入力値ｘについて、Ｓ（１，ｉ）［ｘ］＝Ｓ（１，ｉ−１）［ｘ  ｘｏｒ  （ｍ１，ｉ−１  ｘｏｒ  ｍ１，ｉ）］ｘｏｒ（ｍ’１，ｉ−１  ｘｏｒ  ｍ’１，ｉ）であるように、ｉ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ−１）から、および複数のマスクｍ１，ｉ、ｍ’１，ｉ、ｍ１，ｉ−１、ｍ’１，ｉ−１から、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）を生成するステップを反復的にＮ−２回行うことによって、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）から生成するステップと、
−  暗号プロセスの少なくとも前記第１のラウンドにおいて、最初のサブスティテューションボックスＳ０の代わりに、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を用いて暗号プロセスを行うステップと
を含み、
前記マスクは一様分布乱数値であり、「ＸＯＲ」はブール排他的論理和演算であり、（ｍｉ，ｍｊ）から（ｍｋ，ｍｌ）へのサブスティテューションボックスＳの前記演算「トランスランダム化」は、ｉ、ｊ、ｋおよびｌを｛２，．．Ｎ−１｝に含まれる整数として、前記マスクｍｉおよびｍｊでマスクされた前記サブスティテューションボックスＳから、トランスランダム化されたサブスティテューションボックスと呼ばれる前記マスクｍｋおよびｍｌでマスクされた前記サブスティテューションボックスＳを算出することにある、方法に関する。
【０００８】
Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）は、暗号プロセスの全てのラウンドにおいて最初のサブスティテューションボックスＳ０の代わりに用いることができる。
【０００９】
第１の態様による方法は、現ラウンドと呼ばれる、前記複数の暗号化ラウンドのうちの各ラウンドｒ、ｒ＞１を行うときに：
−  現ラウンドについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）の任意の入力値ｘについて、Ｓ（ｒ，１）［ｘ］＝Ｓ（ｒ−１，Ｎ−１）［ｘ  ｘｏｒ  （ｍｒ−１，Ｎ−１  ｘｏｒ  ｍｒ，１）］ｘｏｒ（ｍ’ｒ−１，Ｎ−１  ｘｏｒ  ｍ’ｒ，１）であるように、現ラウンドｒの前に行われた最後のラウンド（ｒ−１）において最初のサブスティテューションボックスＳ０の代わりに使用されたＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ−１，Ｎ−１）から、およびマスクｍｒ，１、ｍ’ｒ，１から、現ラウンドｒについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）を生成するステップと、
−  ｉを｛２，．．Ｎ−１｝に含まれる整数として、現ラウンドについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）の任意の入力値ｘについて、Ｓ（ｒ，ｉ）［ｘ］＝Ｓ（ｒ，ｉ−１）［ｘ  ｘｏｒ（ｍｒ，ｉ−１  ｘｏｒ  ｍｒ，ｉ）］ｘｏｒ（ｍ’ｒ，ｉ−１  ｘｏｒ  ｍ’ｒ，ｉ）であるように、現ラウンドｒについてのｉ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ−１）から、および複数のマスクｍｒ，ｉ、ｍ’ｒ，ｉ、ｍｒ，ｉ−１、ｍ’ｒ，ｉ−１から、現ラウンドｒについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ）の生成のステップを反復的にＮ−２回行うことによって、現ラウンドｒについてのＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，Ｎ−１）を、現ラウンドｒについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）から生成するステップと、
−  暗号プロセスの前記現ラウンドｒにおいて、最初のサブスティテューションボックスＳ０の代わりに、現ラウンドｒについてのＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，Ｎ−１）を使用するステップと
をさらに含むこともできる。
【００１０】
そのようにすることによって、暗号プロセスは、データを複数のシェアに分割することに頼る既存の解決策よりもずっと低いコストでＮ次サイドチャネル解析攻撃から防護される。
【００１１】
暗号プロセスは、ブロック暗号アルゴリズムであってもよい。
【００１２】
例えば、ブロック暗号アルゴリズムは、高度暗号化標準（ＡＥＳ）アルゴリズム、データ暗号化標準（ＤＥＳ）、ブローフィッシュ、サーペント、Ｇｏｓｔアルゴリズムのうちの１つであり得る。
【００１３】
したがって、本発明は、よく知られており非常に頻繁に使用される、このような暗号プロセスのブロック暗号化ラウンドをＮ次攻撃から防護することを可能にする。
【００１４】
メモリスクランブリングは、ｉを｛１，．．Ｎ−１｝に含まれる整数として、ラウンドｒにおいてトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ）を生成するように行われてもよい。
【００１５】
そのようなメモリスクランブリングは、元のサブスティテューションボックスの全ての要素を置換することによってマスクされたサブスティテューションボックスを実際に生成することに比べて、入力マスクをサブスティテューションボックスに適用するコストを減少させることを可能にする。
【００１６】
第２の態様によれば、したがって、本発明は、少なくとも１つのコンピュータのメモリの中に直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で動かされるときに第１の態様による方法のステップを行うソフトウェアコード命令を含む、コンピュータプログラム製品にも関する。
【００１７】
第３の態様によれば、したがって、本発明は、少なくとも１つのハードウェアプロセッサを有する処理システムを備えた暗号デバイスによって実行されるときに、第１の態様による方法を行う実行可能なコンピュータコードを記憶する、非一時的なコンピュータ可読媒体にも関する。
【００１８】
第４の態様によれば、したがって、本発明は：
−  第１の態様による方法のステップを実行するように構成された少なくとも１つのハードウェアプロセッサを有する処理システムと、
−  前記サブスティテューションボックスを記憶するために構成されたコンピュータ可読メモリ回路と
を備えた暗号デバイスにも関する。
【００１９】
以下の説明および添付図面は、いくつかの例示的な態様を詳細に記載し、実施形態の原理を用いることができる様々なやり方をその一部であるが示す。他の利点および新規な特徴は、図面と併せて検討されるときに以下の詳細な説明から明らかになるであろうし、開示された実施形態は、そのような態様およびそれらの均等物の全てを含むことが意図されている。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態によるシステムの概略図である。
【図２】本発明の一実施形態による暗号デバイスの概略図である。
【図３】高次サイドチャネル攻撃の概略図である。
【図４】本発明の一実施形態による反復的に繰り返されるトランスランダム化機構の概略図である。
【図５】本発明の一実施形態によるＮ次サイドチャネル攻撃からセキュアにする方法を概略説明する図である。
【発明を実施するための形態】
【００２１】
以下、詳細な説明において、本発明が実践され得る特定の実施形態を例示によって示す添付図面の参照がなされる。これらの実施形態は、当業者が本発明を実践することができるように十分詳細に説明されている。本発明の様々な実施形態は、異なるが、必ずしも相互に排他的でないと理解されたい。例えば、一実施形態に関連して本明細書中に説明された特定の特徴、構造、または特性は、本発明の趣旨および範囲から逸脱することなく他の実施形態内で実装され得る。さらに、各開示された実施形態内の個々の要素の位置および配置は、本発明の趣旨および範囲から逸脱することなく修正されてもよいことを理解されたい。したがって、以下詳述される説明は、限定的な意味でとらえられるべきではなく、本発明の範囲は、特許請求の範囲が権利付与される均等物の全範囲と共に、適切に解釈された添付の特許請求の範囲によってのみ定義される。
【００２２】
本発明は、暗号デバイス１０１によって行われるブロック暗号暗号化演算を高次サイドチャネル攻撃から防御する問題を解決するシステム、および関連した暗号化方法を提供することを目指している。
【００２３】
図１に示されるように、そのような暗号デバイス１０１は、ユーザによって操作されるとともに、高度暗号化標準（ＡＥＳ）アルゴリズム、データ暗号化標準（ＤＥＳ）、ブローフィッシュ、サーペント、またはＧｏｓｔアルゴリズムなどのブロック暗号アルゴリズムを用いてデータ暗号化または復号などの暗号演算をするための命令を暗号デバイスに送るパーソナルコンピュータまたはサーバ１０２に接続され得る。代替として、暗号デバイス１０１は、コンピュータ１０２に組み込まれてもよい。
【００２４】
暗号デバイス１０１は、暗号演算を行う少なくとも１つのハードウェアプロセッサを有する処理システムと、そのような演算に必要なデータを記憶するために構成されたコンピュータ可読メモリ回路とを含む、何らかの承認されていないアクセスからセキュアにされる耐タンパ装置１０３を含むことができる。そのような暗号デバイスは、例えば、スマートカードデバイスを収容するスマートカードリーダ、またはスマートチップを含むスマートフォンなどの電子デバイスであり得る。
【００２５】
図２は、暗号デバイス１０１の概略図である。暗号デバイス１０１は、ランダムアクセスメモリ（ＲＡＭ）２０３、リードオンリメモリ（ＲＯＭ）２０４、および／または不揮発性メモリ（ＮＶＭ）２０５を含むコンピュータ可読メモリ回路に、バス２０２を介して接続された少なくとも１つのハードウェアプロセッサを有する処理システム２０１を含むことができる。暗号デバイス１０１は、ハードウェアプロセッサに含まれた、またはバスを介してハードウェアプロセッサに接続された乱数発生器（ＲＮＧ）２０６を含むこともできる。暗号デバイス１０１は、暗号デバイス１０１をコンピュータ１０２に接続するために使用されるインタフェース２０７をさらに含むことができる。そのようなインタフェースは、ＵＳＢ、イーサネットインタフェースもしくはサンダーボルトインタフェースなどの有線インタフェース、またはＢｌｕｅｔｏｏｔｈインタフェースなどの無線インタフェースのどちらかであり得る。インタフェース２０７は、暗号デバイス１０１を無線ネットワーク、例えば、ワイドエリアネットワーク、ＷｉＦｉネットワーク、または携帯電話通信ネットワークに接続するために使用することもでき、通信が、このネットワークを通じてコンピュータ１０２と行われ得る。
【００２６】
以下のパラグラフは、本発明の第１の態様による暗号デバイス１０１によって行われる暗号プロセスを有する、Ｎを所定の整数とする、Ｎ次サイドチャネル攻撃からセキュアにする方法のステップを説明する。
【００２７】
上で説明されたように、ＤＰＡなどのサイドチャネル攻撃に対して一般に使用されている対抗策は、マスキングである。より詳細には、ブロック暗号暗号化計算を防護するために、ＳＢＯＸ計算は、ＳＢＯＸ計算に入力値として与えられる秘密データを防護するためにマスクされることができる。
【００２８】
本文献の残りでは、暗号プロセスに使用される全てのマスクは、暗号デバイスの乱数発生器２０６により発生される、一様分布乱数であると仮定される。例示的実施形態では、任意のデータのマスキングは、そのようなデータとマスク間でＸＯＲ演算、ブール排他的論理和演算を適用することによってなされるが、代わりに、加算、減算、乗算．．．などのデータとマスクを組み合わせる任意の他の算術演算が使用されてもよい。
【００２９】
ＳＢＯＸ計算は、入力側でマスクされてもよい。その場合、ＳＢＯＸ計算の入力として使用されるデータｘは、ＳＢＯＸ計算Ｓ（ｘ  ｘｏｒ  ｍ１）を行うためにＳＢＯＸ  Ｓへ与えられる前に、入力マスクｍ１によってマスクされる。
【００３０】
ＳＢＯＸ計算は、出力側でやはりマスクされてもよい。その場合、ＳＢＯＸ  Ｓ（ｘ）の任意の出力データは、出力マスクｍ２によってマスクされ、入力データｘから値Ｓ（ｘ）  ｘｏｒ  ｍ２を作り出す。
【００３１】
入力マスキングと出力マスキングの両方は、組み合わされてもよい。以下のパラグラフでは、入力マスクｍ１と出力マスクｍ２の両方を用いたＳＢＯＸ  Ｓを使用するＳＢＯＸ計算のマスキングは、「ＳＢＯＸ  Ｓをマスク（ｍ１，ｍ２）でマスクする」と呼ばれる。
【００３２】
ＳＢＯＸ計算の非線形性にも関わらず、マスクされた入力を入力として使用するＳＢＯＸ計算から出力マスクｍ２でマスクされた値Ｓ（ｘ）を得るために、（ｍ１，ｍ２）でマスクされたマスクされたＳＢＯＸ  Ｓ’は、Ｓ’（ｘ  ＸＯＲ  ｍ１）＝Ｓ（ｘ）  ＸＯＲ  ｍ２であるように元のマスクされていないＳＢＯＸ  Ｓから算出されることができる。
【００３３】
それで、Ｓ’におけるｍ１でマスクされたマスキング入力は、Ｓにおける値の置換と等価であり：入力データに対応する位置における、元のＳＢＯＸ  Ｓに位置する値Ｓ（ｘ）は、評価Ｓ’（ｘ  ＸＯＲ  ｍ１）からＳ（ｘ）を得るために、入力データｘ  ｘｏｒ  ｍ１に対応する位置においてマスクされたＳＢＯＸ  Ｓ’に位置するものとする。
【００３４】
元のＳＢＯＸの全ての要素を置換することによって、マスクされたＳＢＯＸを実際に生成する代わりに、入力マスキングは、メモリスクランブリングによって行われてもよい。その場合、マスクされたＳＢＯＸ  Ｓ’（ｘ  ｘｏｒ  ｍ１）の値と入力ｘ  ｘｏｒ  ｍ１の間のマッチングが、仮想メモリアドレシングを用いて記憶され、入力マスキングは、元の入力ｘの代わりにマスクされた入力ｘ  ｘｏｒ  ｍ１に向けてポイントするために、メモリポインタを更新することによって行われる。そのようなメモリスクランブリングは、暗号デバイス１０１の処理システム２０１によってまたは暗号デバイスに含まれる専用ハードウェア回路によってハンドヘルド（ｈａｎｄｈｅｌｄ）されるソフトウェア演算によって行うことができる。
【００３５】
そのような入力マスキングに加えて、Ｓ’（ｘ  ＸＯＲ  ｍ１）＝Ｓ（ｘ）  ＸＯＲ  ｍ２を有するために、マスクされたＳＢＯＸ  Ｓ’における値は、元のＳＢＯＸ  Ｓにおける全ての値を出力マスクｍ２でマスクすることによって取得される。そのような出力マスキングは、暗号デバイス１０１の処理システム２０１によってまたはこの暗号デバイスに含まれる専用ハードウェア回路によってハンドヘルドされるソフトウェア演算によって行われることもできる。
【００３６】
それで、マスクされたＳＢＯＸ  Ｓ’を用いてＳＢＯＸ計算を行うことは、入力としてマスクされた値（ｘ  ｘｏｒ  ｍ１）を用いてそのような計算を行い、出力マスクｍ２で防護された関心のある値Ｓ（ｘ）を出力において得ることを、ＳＯＸ演算の非線形性に関わらず、依然として可能にする。
【００３７】
残念なことに、そのような（ｍ１，ｍ２）マスキングは、一次攻撃を防護するのにすぎない。攻撃者は、例えば、図１に示されるように、オシロスコープ１０４を用いて、図３に示されるように、サイドチャネル解析攻撃によって取得された２つの漏洩を組み合わせることによって、そのようなＳＢＯＸ計算の入力データｘをまだ復元することができる。例えば、攻撃者は、ｘまたはＳ（ｘ）に関する情報を得るために、マスクされたＳＢＯＸ算出の解析から、（ｍ１，ｍ２）に関する漏洩を得るとともに、ブロック暗号暗号化自体から（ｍ１，ｍ２）でマスクされたｘまたはＳ（ｘ）に関する別の漏洩を得て、両方の漏洩を組み合わせることができる。
【００３８】
そのような攻撃を打ち破るために、本発明の第１の目標は、元のマスクされていないＳＢＯＸから１ステップでは算出されないマスクされたＳＢＯＸを用いて、ブロック暗号暗号化を行うことにより、ほんの２つの漏洩のそのような成功する組み合わせを防ぐことである。言い換えれば、元のマスクされていないＳＢＯＸからのマスクされたＳＢＯＸ算出は、ブロック暗号暗号化のために使用されるマスクされたＳＢＯＸをマスクするマスクと同じマスクを用いては、行われないこととする。
【００３９】
そうするために、ブロック暗号暗号化に使用されるマスクされるＳＢＯＸ、例えば、（ｍ３，ｍ４）でマスクされたＳ２は、異なるマスクを用いてすでにマスクされたＳＢＯＸテーブル、例えば、それ自体は元のテーブルから取得される（ｍ１，ｍ２）でマスクされたＳ１から算出されるものとする。そのような演算は、（ｍ１，ｍ２）から（ｍ３，ｍ４）への「トランスランダム化」と」呼ばれる。それで、トランスランダム化されたテーブルＳ２は、他のマスクされたテーブルＳ１の任意の入力値ｘについて、Ｓ２［ｘ］＝Ｓ１［ｘ  ｘｏｒ  （ｍ１  ｘｏｒ  ｍ３）］ｘｏｒ（ｍ２  ｘｏｒ  ｍ４）であるようになる。それは：
−  ｍ１を用いたＳ１の入力マスキングを、ｍ３を用いたＳ２の入力マスキングで置き換える、（ｍ１  ｘｏｒ  ｍ３）でＳ１の入力をマスクし、
−  ｍ２を用いたＳ１の出力マスキングを、ｍ４を用いたＳ２の出力マスキングで置き換える、（ｍ２  ｘｏｒ  ｍ４）でＳ２の出力をマスクする
ことによってＳ１から取得することができる。
【００４０】
ブロック暗号暗号化が、トランスランダム化によって取得されるそのようなマスクされたＳＢＯＸを用いて行われるとき、ブロック暗号暗号化が行われるときに、およびマスクされたＳＢＯＸ算出が行われるときに、攻撃者が、サイドチャネル解析攻撃を行うことができると仮定すると、そのような攻撃者は：
−  ブロック暗号暗号化の解析から、（ｍ３，ｍ４）でマスクされたｘまたはＳ（ｘ）に関する漏洩を、
−  および元のＳＢＯＸのマスキング、すなわち、Ｓ１の算出の解析から、（ｍ１，ｍ２）に関する漏洩を
得る。
【００４１】
したがって、攻撃者は、これらの２つの漏洩だけの組み合わせから秘密入力データｘまたはＳ（ｘ）に関する情報を得ることができない。攻撃者はさらに、これらの漏洩とトランスランダム化演算、すなわち、Ｓ１からのＳ２の算出の解析からの、（ｍ１，ｍ２）と（ｍ３，ｍ４）の間のリンクに関する情報をあたえる第３の漏洩とを組み合わせなければならない。
【００４２】
結果として、そのような単一のトランスランダム化は、二次攻撃からブロック暗号暗号化を防護することを可能にし、攻撃者に、成功するために第三次攻撃を行うことを必要とさせる。
【００４３】
より高次の攻撃からブロック暗号暗号化を防護するために、そのようなトランスランダム化は、図４に示されるように、反復的に繰り返されてもよい。この例では、マスクされていない最初のサブスティテューションボックスＳ０で行われるように最初に設計されたブロック暗号暗号化をＮ次サイドチャネル攻撃からセキュアにするために、まず、暗号デバイスの処理システムは、最初のサブスティテューションボックスＳ０の任意の入力値ｘについて、ｍ１、ｍ２を一様分布乱数値として、Ｓ１（ｘ  ＸＯＲ  ｍ１）＝Ｓ０（ｘ）  ＸＯＲ  ｍ２であるように、前記最初のサブスティテューションボックスＳ０をマスクすることによって、第１のランダム化されたサブスティテューションボックスＳ１を生成することができる。
【００４４】
次いで、暗号デバイスの処理システムは、ｉを｛１，．．Ｎ−１｝に含まれる整数として、ｉ番目のランダム化またはトランスランダム化されたサブスティテューションボックスＳｉの任意の入力値ｘについて、Ｓｉ＋１［ｘ］＝Ｓｉ［ｘ  ｘｏｒ  （ｍ２ｉ−１  ｘｏｒ  ｍ２（ｉ＋１）−１）］ｘｏｒ（ｍ２ｉ  ｘｏｒ  ｍ２ｉ＋２）であるように、ｉ＝１のときにｉ番目のランダム化された、またはｉ＞１のときにトランスランダム化されたサブスティテューションボックスＳｉから、および複数のマスクｍ２ｉ−１、ｍ２（ｉ＋１）−１、ｍ２ｉ、およびｍ２ｉ＋２から、（ｉ＋１）番目のトランスランダム化されたサブスティテューションボックスＳｉ＋１の生成のステップを反復的にＮ−１回行うことによって、Ｎ番目のサブスティテューションボックスＳＮを第１のランダム化されたサブスティテューションボックスＳ１から生成することができる。
【００４５】
最後に、暗号デバイスの処理システムは、最初のサブスティテューションボックスＳ０の代わりに、Ｎ番目のトランスランダム化されたサブスティテューションボックスＳＮを用いてブロック暗号暗号化を行うことができる。
【００４６】
マスクされたＳＢＯＸ  Ｓｉについてのマスクとして用いられる入力マスクｍ２ｉ−１および出力マスクｍ２ｉのセット（ｍ２ｉ−１，ｍ２ｉ）であるＲｉに留意しよう。最初のマスクされていないＳＢＯＸ  Ｓ０からまたはトランスランダム化によってブロック暗号暗号化が行われるときに、およびマスクされたＳＢＯＸ算出が行われるときに、攻撃者がサイドチャネル解析攻撃を行うことができると仮定すると、そのような攻撃者は：
−  ブロック暗号暗号化の解析から、ＲＮでマスクされたｘまたはＳ（ｘ）に関する漏洩を、
−  マスクされたＳＢＯＸ  Ｓｉを算出する任意のトランスランダム化から、Ｒｉ−１  ｘｏｒ  Ｒｉに関する漏洩を、
−  および最初のＳＢＯＸのマスキング、すなわち、Ｓ１の算出の解析から、Ｒ１に関する漏洩を
得る。
【００４７】
マスクされたＳＢＯＸ  Ｓｉのそのようなトランスランダム化算出は、Ｒｉ−１  ｘｏｒ  Ｒｉに関する情報だけを漏洩するやり方で行われるものとする。それは、例えば、Ｒｉ−１またはＲｉのマスクだけを用いた中間計算を行うことによって、Ｒｉ−１だけまたはＲｉだけに関する情報を漏洩させないものとする。例えば、暗号デバイスの処理システムは、トランスランダム化されたＳＢＯＸの値に関する「ｘｏｒ  （ｍ２ｉ  ｘｏｒ  ｍ２ｉ＋２）」演算を行うために、ｍ２ｉに関する漏洩を防ぐために第１の「ｘｏｒ  ｍ２ｉ」を行わないものとする。
【００４８】
したがって、ｘまたはＳ（ｘ）に関する情報を得るために、攻撃者は、Ｎ＋１個の漏洩を：ブロック暗号暗号化、全ての（Ｎ−１）個のトランスランダム化演算、および最初のＳＢＯＸのマスキングから、組み合わせなければならない。
【００４９】
一実施形態では、防護のレベルは、ブロック暗号暗号化演算を行う前に、行われるトランスランダム化演算数、すなわち、Ｎの値をオンザフライで（ｏｎ−ｔｈｅ−ｆｌｙ）選択することによって、演算の特定の内容に合うように適合され得る。
【００５０】
代替実施形態では、全ての必要とされるｍｊ  ｘｏｒ  ｍｊ＋２の値（ｊは整数である）は、事前計算され、暗号デバイス１０１のコンピュータ可読メモリ回路に記憶され、トランスランダム化演算を行うときに暗号デバイスの処理システムによって後で使用され得る。
【００５１】
ＡＥＳまたはＤＥＳブロック暗号などの暗号プロセスは、いくつかの暗号化ラウンドを行う。そのようなプロセスをセキュアにするために、トランスランダム化は、プロセスの第１の暗号化ラウンドを行う前に行われてもよい。
【００５２】
ｉを｛１，．．Ｎ−１｝に含まれる整数として、第１のラウンドについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳＢＯＸであるＳ（１，ｉ）、ならびに第１のラウンドＳ１の第１のランダム化されたＳＢＯＸについてマスクとして使用される入力／出力マスクのセット（ｍ１，ｍ２）であるＲ１，０、および第１のラウンドＳ（１，ｉ）についてのｉ番目のトランスランダム化されたサブスティテューションボックスＳＢＯＸについてのマスクとして使用される入力マスクｍ１，ｉおよび出力マスクｍ’１，ｉのセット（ｍ１，ｉ，ｍ’１，ｉ）であるＲ１，ｉに留意しよう。
【００５３】
第１の態様によれば、本発明は、Ｎを所定の整数とするＮ次サイドチャネル攻撃から、暗号プロセスをセキュアにする方法であって、暗号デバイスのコンピュータ可読メモリ回路に記憶された最初のサブスティテューションボックスＳ０を、複数の暗号化ラウンドにおいて使用し、図５に説明され、処理システムによって行われる以下の：
−  第１の初期化ステップＥ１１中に、コンピュータ可読メモリ回路内で前記最初のサブスティテューションボックスＳ０にアクセスするステップと、
−  第２の初期化ステップＥ１２中に、最初のサブスティテューションボックスＳ０の任意の入力値ｘについて、ｍ１、ｍ２を一様分布乱数値として、Ｓ１（ｘ  ＸＯＲ  ｍ１）＝Ｓ０（ｘ）  ＸＯＲ  ｍ２であるように、前記最初のサブスティテューションボックスＳ０をマスクすることによって、第１のランダム化されたサブスティテューションボックスＳ１を生成するステップと、
−  第３の初期化ステップＥ１３中に、第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）の任意の入力値ｘについて、Ｓ（１，１）［ｘ］＝Ｓ１［ｘ  ｘｏｒ（ｍ１  ｘｏｒ  ｍ１，１）］ｘｏｒ（ｍ２  ｘｏｒ  ｍ’１，１）であるように、第１のランダム化されたサブスティテューションボックスＳ１から、およびマスクｍ１，１、ｍ’１，１から、第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）を生成するステップと、
−  第４の初期化ステップＥ１４中に、ｉを｛２，．．Ｎ−１｝に含まれる整数として、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）の任意の入力値ｘについて、Ｓ（１，ｉ）［ｘ］＝Ｓ（１，ｉ−１）［ｘ  ｘｏｒ  （ｍ１，ｉ−１  ｘｏｒ  ｍ１，ｉ）］ｘｏｒ（ｍ’１，ｉ−１  ｘｏｒ  ｍ’１，ｉ）であるように、ｉ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ−１）から、および複数のマスクｍ１，ｉ、ｍ’１，ｉ、ｍ１，ｉ−１、ｍ’１，ｉ−１から、ｉ番目のトランスランダム化されたサブスティテューションボックスＳ（１，ｉ）の生成のステップを反復的にＮ−２回行うことによって、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を第１のトランスランダム化されたサブスティテューションボックスＳ（１，１）から生成するステップと、
−  第５の初期化ステップＥ１５中の暗号プロセスの少なくとも前記第１のラウンド中に、最初のサブスティテューションボックスＳ０の代わりに、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）を用いて暗号プロセスを行うステップと
を含む、方法に関する。
【００５４】
Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（１，Ｎ−１）は、暗号プロセスの全てのラウンドにおいて最初のサブスティテューションボックスＳ０の代わりに使用されてもよい。
【００５５】
残念なことに、攻撃者は、いくつかのラウンドのブロック暗号暗号化からの漏洩を組み合わせる可能性がある。２つのブロック暗号暗号化ラウンドが、同じマスクされたＳＢＯＸで算出された場合、これら２つのラウンドからの漏洩を組み合わせる攻撃者は、暗号化プロセス全体の入力として使用される秘密値に関する情報を取り出すことができる。
【００５６】
したがって、攻撃者がいくつかのラウンドからの漏洩を組み合わせるときでも、この暗号プロセスがＮ次攻撃から防護され続けるために、ＳＢＯＸマスキングは、プロセスの各新しいラウンドの前に変更されてもよい。そうするために、図５に示されるように、本発明によるトランスランダム化は、プロセスの各新しいラウンドの前に行われてもよい。
【００５７】
ｉを｛１，．．Ｎ−１｝に含まれる整数として、ｒ番目のラウンドについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳＢＯＸであるＳ（ｒ，ｉ）、ならびに第１のラウンドＳ１の第１のランダム化されたＳＢＯＸについてのマスクとして使用される入力／出力マスク（ｍ１，ｍ２）のセットであるＲ１，０、ならびにｒ番目のラウンドＳ（ｒ，ｉ）についてのｉ番目のトランスランダム化されたサブスティテューションボックスＳＢＯＸについてのマスクとして使用される入力マスクｍｒ，ｉおよび出力マスクｍ’ｒ，ｉのセット（ｍｒ，ｉ，ｍ’ｒ，ｉ）であるＲｒ，ｉに留意しよう。
【００５８】
したがって、第１の態様による方法は、現ラウンドと呼ばれる、前記複数の暗号化ラウンドのうちの各ラウンドｒ、ｒ＞１を行うときに：
−  第１の暗号化後ステップＥ２１中に、現ラウンドについての第１のランダム化サブスティテューションボックスＳ（ｒ，１）の任意の入力値ｘについて、Ｓ（ｒ，１）［ｘ］＝Ｓ（ｒ−１，Ｎ−１）［ｘ  ｘｏｒ  （ｍｒ−１，Ｎ−１  ｘｏｒ  ｍｒ，１）］ｘｏｒ（ｍ’ｒ−１，Ｎ−１  ｘｏｒ  ｍ’ｒ，１）であるように、現ラウンドｒの前に行われた最後のラウンド（ｒ−１）において、最初のサブスティテューションボックスＳ０の代わりに使用されたＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ−１，Ｎ−１）から、およびマスクｍｒ，１、ｍ’ｒ，１から、現ラウンドｒについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）を生成するステップと、
−  第２の暗号化後ステップＥ２２中に、ｉを｛２，．．Ｎ−１｝に含まれる整数として、現ラウンドについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）の任意の入力値ｘについて、Ｓ（ｒ，ｉ）［ｘ］＝Ｓ（ｒ，ｉ−１）［ｘ  ｘｏｒ（ｍｒ，ｉ−１  ｘｏｒ  ｍｒ，ｉ）］ｘｏｒ（ｍ’ｒ，ｉ−１  ｘｏｒ  ｍ’ｒ，ｉ）であるように、現ラウンドｒについてのｉ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ−１）から、および複数のマスクｍｒ，ｉ、ｍ’ｒ，ｉ、ｍｒ，ｉ−１、ｍ’ｒ，ｉ−１から、現ラウンドｒについてのｉ番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，ｉ）の生成のステップを反復的にＮ−２回行うことによって、現ラウンドｒについてのＮ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，Ｎ−１）を、現ラウンドｒについての第１のトランスランダム化されたサブスティテューションボックスＳ（ｒ，１）から生成するステップと、
−  第３の暗号化後ステップＥ２３中、暗号プロセスの前記現ラウンドｒにおいて、最初のサブスティテューションボックスＳ０の代わりに、Ｎ−１番目のトランスランダム化されたサブスティテューションボックスＳ（ｒ，Ｎ−１）を使用するステップと
を含むこともできる。
【００５９】
攻撃者が、ブロック暗号暗号化が行われるときに、およびマスクされたＳＢＯＸ算出がトランスランダム化によって行われるときに、サイドチャネル解析攻撃を行うことができると仮定すると、図５に示されるように、そのような攻撃者は：
−  ラウンドｒにおけるブロック暗号暗号化の解析から、Ｒｒ，Ｎ−１でマスクされたｘまたはＳ（ｘ）に関する漏洩、
−  ラウンドｒおよびｒ−１におけるブロック暗号暗号化の間に行われるトランスランダム化から、ｉを｛２，．．．，Ｎ−１｝として、（Ｒｒ−１，Ｎ−１  ｘｏｒ  Ｒｒ，１）およびＲｒ，ｉ−１  ｘｏｒ  Ｒｒ，ｉに関する漏洩、ならびに
−  ラウンドｒ−１におけるブロック暗号暗号化の解析から、Ｒｒ−１，Ｎ−１でマスクされたｘまたはＳ（ｘ）に関する漏洩
を得る。
【００６０】
したがって、ｘまたはＳ（ｘ）に関する情報を得るために、攻撃者は、Ｎ＋１個の漏洩を：ラウンドｒおよびｒ−１におけるブロック暗号暗号化から、ならびに中間で行われる全てのトランスランダム化演算から組み合わせなければならない。
【００６１】
結果として、そのような暗号デバイスによって防護されるブロック暗号アルゴリズムは、十分なトランスランダム化演算が各ブロック暗号計算間で行われる場合、入力データを複数のシェアに分割することを必要とさせず、およびメモリと処理パワーの両方の観点で限られたコストで、任意の次数のサイドチャネル攻撃から防護される。
【００６２】
第２の態様によれば、したがって、本発明は、少なくとも１つのコンピュータのメモリの中に直接ロード可能なコンピュータプログラム製品であって、前記製品がコンピュータ上で動かされるときに第１の態様による方法のステップを行うソフトウェアコード命令を含む、コンピュータプログラム製品にも関する。
【００６３】
第３の態様によれば、したがって、本発明は、少なくとも１つのハードウェアプロセッサを有する処理システムを備えた暗号デバイスによって実行されるときに、第１の態様による方法を実行する実行可能なコンピュータコードを記憶する、非一時的なコンピュータ可読媒体にも関する。
【００６４】
第４の態様によれば、したがって、本発明は：
−  第１の態様による方法のステップを実行するように構成された少なくとも１つのハードウェアプロセッサを有する処理システム２０１と、
−  前記サブスティテューションボックスを記憶するために構成されたコンピュータ可読メモリ回路２０３、２０４、２０５と
を備えた暗号デバイス１０１にも関する。
【図１】
2020527743.tif 000003
【図２】
2020527743.tif 000004
【図３】
2020527743.tif 000005
【図４】
2020527743.tif 000006
【図５】
2020527743.tif 000007
【国際調査報告】
2020527743.tif 000008
2020527743.tif 000009
2020527743.tif 000010