(57)【要約】【課題】  情報漏れ攻撃を防止するためのガロア体上の乗算方法及び装置、逆変換装置そしてＡＥＳバイト置換演算装置が開示される。【解決手段】  本発明に係る情報漏れ攻撃を防止するためのガロア体上の乗算方法は、マスクされた複数の第１、第２入力データと、複数の第１、第２入力マスク及び出力マスクを受信するデータ受信ステップと、マスクされた前記複数の入力データ及び前記複数の入力マスクに対してＧＦ(２n)上の乗算を行なって、複数の中間値を算出する中間値算出ステップと、前記中間値と前記出力マスクとに対してＸＯＲ演算を行って、マスクされた最終出力値を算出する出力値算出ステップとを含む。【選択図】      図３
2006003905.tif 000002
【特許請求の範囲】
【請求項１】
マスクされたデータとマスクの変換を行なうことによって、情報漏れ攻撃を防止するためのＧＦ(２n)上の乗算方法において、
マスクされた複数の第１、第２入力データと、複数の第１、第２入力マスク及び出力マスクを受信するデータ受信ステップと、
マスクされた前記複数の第１、第２入力データ及び前記複数の入力マスクに対してＧＦ(２n)上の乗算を行なって、複数の中間値を算出する中間値算出ステップと、
前記中間値と前記出力マスクとに対してＸＯＲ演算を行って、マスクされた最終出力値を算出する出力値算出ステップと、
を含むことを特徴とするガロア体(Ｇａｌｏｉｓ  ｆｉｅｌｄ）上の乗算方法。
【請求項２】
前記第１入力データは、
所定の第１入力被演算子と前記第１入力マスクとに対して、ＸＯＲ演算を行った値であり、
前記第２入力データは、
所定の第２入力被演算子と前記第２入力マスクとに対して、ＸＯＲ演算を行なった値であることを特徴とする請求項１に記載のガロア体上の乗算方法。
【請求項３】
前記中間値算出ステップは、
前記第１入力データと前記第２入力データとに対してＸＯＲ演算を行なうことにより、第１中間値を算出するステップと、
前記第２入力データと前記第１入力マスクとに対してＸＯＲ演算を行なうことにより、第２中間値を算出するステップと、
前記第１入力データと前記第２入力マスクとに対してＸＯＲ演算を行なうことにより、第３中間値を算出するステップと、
前記第１入力マスクと前記第２入力マスクとに対してＸＯＲ演算を行なうことにより、第４中間値を算出するステップと、
を含むことを特徴とする請求項１に記載のガロア体上の乗算方法。
【請求項４】
前記最終出力値は、
次の式（１）により算出されることを特徴とする請求項１に記載のガロア体上の乗算方法。
【数１】
2006003905.tif 000060
ここで、？はＸＯＲ演算、ＯＭは出力マスク、Ａ１は第１中間値、Ａ２は第２中間値、Ａ３は第３中間値、Ａ４は第４中間値である。
【請求項５】
マスクデータとマスクの変換を行なうことによって、情報漏れ攻撃を防止するためのＧＦ(２n)上の乗算装置において、
マスクされた複数の第１、第２入力データと、複数の第１、第２入力マスクを外部から受信し、マスクされた前記複数の第１、第２入力データ及び前記複数の第１、第２入力マスクに対してＧＦ(２n)上の乗算を行なうことにより中間値を算出する複数の乗算器と、
前記中間値と前記出力マスクとに対してＸＯＲ演算を行なうことにより、マスクされた最終出力値を算出するＸＯＲ演算器と、
を備えることを特徴とするガロア体上の乗算装置。
【請求項６】
前記第１入力データは、
所定の第１入力被演算子と前記第１入力マスクとに対して、ＸＯＲ演算を行なった値であり、
前記第２入力データは、
所定の第２入力被演算子と前記第２入力マスクとに対して、ＸＯＲ演算を行なった値であることを特徴とする請求項５に記載のガロア体上の乗算装置。
【請求項７】
前記複数の乗算器は、
前記第１入力データと前記第２入力データとに対してＸＯＲ演算を行なうことにより、第１中間値を算出する第１乗算器と、
前記第２入力データと前記第１入力マスクとに対してＸＯＲ演算を行なうことにより、第２中間値を算出する第２乗算器と、
前記第１入力データと前記第２入力マスクとに対してＸＯＲ演算を行なうことにより、第３中間値を算出する第３乗算器と、
前記第１入力マスクと前記第２入力マスクとに対してＸＯＲ演算を行なうことにより、第４中間値を算出する第４乗算器と、
を備えることを特徴とする請求項５に記載のガロア体上の乗算装置。
【請求項８】
前記最終出力値は、
次の式（２）により算出されることを特徴とする請求項５に記載のＧＦ(２n)上の乗算装置。
【数２】
2006003905.tif 000061
ここで、？はＸＯＲ演算、ＯＭは出力マスク、Ａ１は第１中間値、Ａ２は第２中間値、Ａ３は第３中間値、Ａ４は第４中間値である。
【請求項９】
第１ないし第５入力データを外部から受信して、ＧＦ((２4)2)上の逆変換遂行のためのガロア体上の逆変換装置において、
８ビットからなる前記第５入力データの上位ビット部分と下位ビット部分とを各々入力とし、ＸＯＲ演算を行なうことにより、第１結果値(Ｔ１)を算出する第１ＸＯＲ演算器と、
８ビットからなる前記第３入力データの上位ビット部分と下位ビット部分とを各々入力し、所定のＸＯＲ演算を行なうことにより、前記第１結果値(Ｔ１)に対したマスク補正を行なうための第１補正値(Ｍ１)を算出する第２ＸＯＲ演算器と、
前記第１結果値(Ｔ１)と前記第５入力データの下位ビット部分と前記第１補正値(Ｍ１)と前記第３入力データの下位ビット部分と前記第４入力データを受信した後、ＧＦ(２4)上で乗算を行なって、第２演算値(Ｔ２)を算出する第１マスクド乗算器と、
前記第５入力データの上位ビット部分を受け取って所定演算を行なうことにより、第３演算値(Ｔ３)を算出する第１演算器と、
前記第３入力データの上位ビット部分を受け取って所定演算を行なうことにより、前記第３演算値(Ｔ３)を補正するための第２補正値(Ｍ２)を算出する第２演算器と、
前記第３演算値(Ｔ３)と前記第２演算値(Ｔ２)とを受け取って所定のＸＯＲ演算を行なうことにより、第４演算値(Ｔ４)を算出する第３ＸＯＲ演算器と、
前記第２補正値(Ｍ２)と前記第４入力データとを受け取って所定のＸＯＲ演算を行なうことにより、前記第４演算値(Ｔ４)に対したマスク補正を行なうための第３補正値(Ｍ３)を算出する第４ＸＯＲ演算器と、
前記第４演算値(Ｔ４)と、前記第３補正値(Ｍ３)及び前記第１入力データの下位ビット部分を受け取って、ＧＦ(２4)上で所定の逆変換演算を行なうことにより、第５演算値(Ｔ５)を算出するマスクドインバータと、
前記第５演算値と前記第１演算値と前記第２入力データと前記第１補正値と前記第１入力データの下位ビット部分とを受け取って、ＧＦ(２4)上で乗算を行なうことにより、最終出力値の下位ビット部分を算出する第２マスクド乗算器と、
前記第５演算値と前記第５入力データの下位ビット部分と前記第２入力データと前記第３入力データの上位ビット部分と前記第１入力データの上位ビット部分とを受け取って、ＧＦ(２4)上で乗算を行なうことにより、最終出力値の上位ビット部分を算出する第３マスクド乗算器と、
を備えることを特徴とするガロア体上の逆変換装置。
【請求項１０】
ＡＥＳバイト置換演算時、情報漏れ攻撃を防止するためのＡＥＳバイト置換演算装置において、
ＧＦ(２8)上のマスクされた入力データと変換選択データとを受け取った後、前記変換選択データの値にともなう所定の変換により、第１変換値を生成し出力する第１入力フィールド変換器と、
前記入力データのためのマスクと前記変換選択データとを受け取って、所定の変換により前記第１変換値に対してマスク補正を行なうための第２変換値を生成し出力する第２入力フィールド変換器と、
出力マスクと複数のランダム入力マスクと前記第１、第２変換値とを受け取って、所定の逆変換を行なうことにより、マスクされた逆変換値を算出するＧＦ((２4)2)上のマスクド逆変換装置と、
前記逆変換値と前記変換選択データとを受け取って、所定の変換によりＧＦ(２8)上に変換されたマスクされた出力値を算出する第１出力フィールド変換器と、
前記出力マスクと前記変換選択データとを受け取った後、前記変換選択データの値にともなう所定の変換により、前記出力値に対してマスク補正を行なうための補正値を算出する第２出力フィールド変換器と、
を備えることを特徴とするＡＥＳバイト置換演算装置。
【請求項１１】
第１ないし第５入力データを外部から受信し、ＧＦ((２4)2上の逆変換遂行のためのガロア体上の逆変換方法において、
８ビットからなる前記第５入力データの上位ビット部分と下位ビット部分とを各々入力し、ＸＯＲ演算を行なうことにより、第１結果値(Ｔ１)を算出するステップと、
８ビットからなる前記第３入力データの上位ビット部分と下位ビット部分とを各々入力し、所定のＸＯＲ演算を行なうことにより、前記第１結果値(Ｔ１)に対したマスク補正を行なうための第１補正値(Ｍ１)を算出するステップと、
前記第１結果値(Ｔ１)と、前記第５入力データの下位ビット部分と、前記第１補正値(Ｍ１)、前記第３入力データの下位ビット部分及び前記第４入力データを受信した後、ＧＦ(２4)上で乗算を行なうことにより、第２演算値(Ｔ２)を算出するステップと、
前記第５入力データの上位ビット部分を受け取って、所定演算を行なうことにより、第３演算値(Ｔ３)を算出するステップと、
前記第３入力データの上位ビット部分を受け取って、所定演算を行なうことにより、前記第３演算値(Ｔ３)を補正するための第２補正値(Ｍ２)を算出するステップと、
前記第３演算値(Ｔ３)と前記第２演算値(Ｔ２)とを受け取って、所定のＸＯＲ演算を行なうことにより、第４演算値(Ｔ４)を算出するステップと、
前記第２補正値(Ｍ２)と前記第４入力データとを受け取って、所定のＸＯＲ演算を行なうことにより、前記第４演算値(Ｔ４)に対したマスク補正を行なうための第３補正値(Ｍ３)を算出するステップと、
前記第４演算値(Ｔ４)と、前記第３補正値(Ｍ３)及び前記第１入力データの下位ビット部分を受け取って、ＧＦ(２4)上で所定の逆変換演算を行なうことにより、第５演算値(Ｔ５)を算出するステップと、
前記第５演算値と前記第１演算値と前記第２入力データと前記第１補正値と前記第１入力データの下位ビット部分を受け取って、ＧＦ(２4)上で乗算を行なうことにより、最終出力値の下位ビット部分を算出するステップと、
前記第５演算値と前記第５入力データの下位ビット部分と前記第２入力データと前記第３入力データの上位ビット部分と前記第１入力データの上位ビット部分を受け取って、ＧＦ(２4)上で乗算を行なうことにより、最終出力値の上位ビット部分を算出するステップと、
を含むことを特徴とするガロア体上の逆変換方法。
【請求項１２】
ＡＥＳバイト置換演算時、情報漏れ攻撃を防止するためのＡＥＳバイト置換演算方法において、
ＧＦ(２8)上のマスクされた入力データと変換選択データとを受け取った後、前記変換選択データの値にともなう所定の変換により、第１変換値を算出するステップと、
前記入力データのためのマスクと前記変換選択データとを受け取って、所定の変換により、前記第１変換値に対してマスク補正を行なうための第２変換値を算出するステップと、
出力マスク、複数のランダム入力マスクと前記第１、第２変換値を受け取って、所定逆変換を行なうことにより、マスクされた逆変換値を算出するステップと、
前記逆変換値と前記変換選択データとを受け取って、所定の変換によりＧＦ(２8)上に変換されたマスクされた出力値を算出するステップと、
前記出力マスクと前記変換選択データとを受け取った後、前記変換選択データの値にともなう所定の変換により、前記出力値に対してマスク補正を行なうための補正値を算出するステップと、
を含むことを特徴とするＡＥＳバイト置換演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スマートカードのようなマイクロ電子アセンブリーにおける暗号セキュリティ処理、特にＡＥＳ具現化時、差等電力分析攻撃が利用される場合に、暗号のセキュリティ侵害を防止する。
【背景技術】
【０００２】
差等電力分析(Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）は、秘密キーでデータを処理する機器の電力消費により漏れる情報を利用する極めて強力な攻撃技術である。しかし、侵入者は、電磁気放射、誤った出力、時間などの「サイドチャネル」と呼ばれる追加的な漏洩チャネルを利用できる。
【０００３】
秘密キーブロック暗号は、全ての周辺機能で秘密キーを利用して計算を行う。秘密キーが利用され、接近される時、侵入者は他のサイドチャネルを利用でき、秘密キーに関する情報を得ることができる。その後、デジタル処理と統計的方法を利用して、侵入者は漏洩された情報と秘密キーの実際値との間の相関性を発見できる。
【０００４】
対称的な複数のブロック暗号は、スマートカードのような暗号ブロックで幅広く利用される。対称的なブロック暗号は、固定された数の入力ビットで動作し、これらのビットを固定された数の出力ビットで暗号化及び復号化する。暗号化及び復号化機能は、「ラウンド機能」と呼ばれる単純な機能を利用して構築される。ラウンド機能を所定の回数繰り返し適用することによって、暗号化アルゴリズムのセキュリティを得ることができる。このような暗号は、また「反復的なブロック暗号(ｉｔｅｒａｔｉｖｅ  ｂｌｏｃｋ  ｃｉｐｈｅｒ)」と呼ばれる。
【０００５】
反復的なブロック暗号の一般的な例として知られているものがラインダール(Ｒｉｊｎｄａｅｌ)アルゴリズムである。ラインダールアルゴリズムは、ネットワークを介して伝送されたり、スマートカード及びコンピュータの格納装置に格納される文書及びデータ情報の暗号化のためのＡＥＳ標準として制定されることがある。ＡＥＳ標準によれば、ラインダールアルゴリズムは、１２８ビット、１９２ビット、及び２５６ビットの暗号キーを利用して１２８ビットのデータブロックを処理することにより、対称形ブロック暗号化を行ない、１２８ビットの暗号化されたデータを出力する。１２８ビット以外のデータブロックビット数も可能であるが、ＡＥＳ標準では１２８ビットが採択された。
【０００６】
図１は、通常のＡＥＳラインダールアルゴリズムにおいて、入力データ、入力データが変換された状態データ(ｓｔａｔｅ  ａｒｒａｙ)及び暗号化または復号化が行なわれた出力データの構造を示した図である。
【０００７】
図１に示されているように、入力データ１０１、状態データ１０２及び出力データ１０３の１２８ビットブロックを各々４つの３２ビット行で構成された行列構造で示す。入力データ１０１は、暗号化または復号化過程が行なわれて出力データ１０３が生成される。入力データ１０１に対して暗号化または復号化過程の各演算が行なわれて生成されたデータが状態データ１０２である。
【０００８】
一般に、ＡＥＳラインダールアルゴリズムは、「ラウンド」と称する一連の過程を複数回繰り返し行う。図２Ａ及び図２Ｂは、一般的なラインダールアルゴリズムにおいて１つのラウンドを示したフローチャートである。
【０００９】
図２Ａに示されているように、入力された状態データに対して複数の演算ステップが行なわれ、このように行なわれた一連の過程をＡＥＳラウンドという。入力された状態データは、ラインダールバイト置換(Ｂｙｔｅ  Ｓｕｂｓｔｉｔｕｔｉｏｎ)演算ステップ(Ｓ２０１)、シフトロー(Ｓｈｉｆｔ  ｒｏｗ)演算ステップ(Ｓ２０３)、ミックスコラム(Ｍｉｘｅｄ  ｃｏｌｕｍｎ)ステップ(Ｓ２０５)及びラウンドキー加算(Ｒｏｕｎｄ  Ｋｅｙ  Ａｄｄｉｔｉｏｎ)ステップ(Ｓ２０７)を経て、１つのＡＥＳラウンドが行われる。
【００１０】
バイト置換演算ステップ(Ｓ２０１)では「Ｓ−ｂｏｘ」と称する置換表を利用して、データの各バイトに対して独立的に非線形バイト置換演算を行う。「Ｓ−ｂｏｘ」は、有限体であるＧＦ(２8)上で乗算の逆元演算とＧＦ(２8)上でのアフィン変換(ａｆｆｉｎｅ  ｔｒａｎｓｆｏｒｍａｔｉｏｎ）を行なって構成される。
【００１１】
シフトロー演算ステップ(Ｓ２０３)では、状態データ１０２の最初の行を除外した残りの３つの行に対して、各バイト値は変化されずにその位置だけを変更する。
【００１２】
ミックスコラム演算ステップ(Ｓ２０５)では、状態データ１０２の各列をＧＦ(２8)上で４つの項を有した多項式の各項の係数として取り扱い、この多項式を既設定した多項式「ａ(ｘ)=[０３]ｘ3＋[０１]ｘ2+[０１]ｘ＋[０２]」と乗算し「ｘ4+１」で除算した残りに該当する多項式の４つの項の係数に変換する。
【００１３】
ラウンドキー加算ステップ(Ｓ２０７)では、状態データ１０２にラウンドキーをビット単位のＸＯＲ演算を行なって加算する。ＡＥＳラインダールアルゴリズムにおいて、ラウンドの各ステップに対するさらに具体的な演算過程は公知技術であるから、その詳細な説明は省略する。
【００１４】
一方、図２Ｂには、また他のＡＥＳラウンドが示されている。図２Ｂに示されているように、また他のＡＥＳラウンドは、シフトロー演算ステップ(Ｓ２１１)、バイト置換演算ステップ(Ｓ２１３)、ミックスコラム演算ステップ(Ｓ２１５)及びラウンドキー加算ステップ(Ｓ２１７)を含む。
【００１５】
図２Ｂのまた他のＡＥＳラウンドは、図２ＡのＡＥＳラウンドに対してシフトロー演算ステップ(Ｓ２１１)とラインダールバイト置換演算ステップ(Ｓ２１３)の順序が変わっている以外は同じである。シフトロー演算ステップ(Ｓ２１１)とラインダールバイト置換演算ステップ(Ｓ２１３)は、順序を変えて行なっても同じ結果を得ることができるので、図２Ｂにともなうまた他のＡＥＳラウンドを行なって、図２ＡにともなうＡＥＳラウンドと同じ結果を得ることができる。
【００１６】
ＡＥＳアルゴリズムによれば、このようなＡＥＳラウンドを所定の回数繰り返し行なってデータを暗号化する。ＡＥＳラウンドの繰り返し回数Ｎｒは、暗号キーの長さによって決められ、１２８ビットの暗号キーに対して「Ｎｒ＝１０」であり、１９２ビットの暗号キーに対しては「Ｎｒ＝１２」であり、２５６ビットの暗号キーに対して「Ｎｒ＝１４」である。
【００１７】
所定回数のＡＥＳラウンドが繰り返し行なわれた後、最後のＡＥＳラウンドではシフトローステップとラインダールバイト置換演算ステップ(上述したように、その逆の順序でも構わない。)が行なわれてから、ミックスコラムステップの遂行なしでラウンドキー加算ステップが行なわれて、図１の出力データ１０３が生成される。
【００１８】
一方、ＡＥＳラインダールアルゴリズムにともなう復号化過程は、上述したＡＥＳラインダールアルゴリズムにともなう暗号化過程の逆に該当する。したがって、入力されたデータは、逆ラインダール逆バイト置換演算ステップ、逆シフトロー演算ステップ、逆ミックスコラム演算ステップ及びラウンドキー加算ステップ(Ｓ２０７)を経て復号化される。また他のＡＥＳ演算に対する復号化過程も似ており、その詳細な説明は省略する。
【００１９】
現在まで上述したＡＥＳラインダールアルゴリズムを具現化するための複数の装置が考案された。従来のＡＥＳラインダールアルゴリズムを具現化した装置に、１つのデータプロセシングモジュールで全てのＡＥＳラウンドを繰り返し行なう構造を有した装置がある。したがって、「Ｎｒ」回のラウンドを行なう間、１つのデータに対して「Ｎｒ」回だけのデータプロセシングモジュールを介して演算が行なわれるので、結局、全体ラウンドを全て行うのに必要とする時間は、１つのラウンドを行なうのに必要とする時間の「Ｎｒ」倍となる。
【００２０】
ＡＥＳに対した情報漏れ攻撃を防止するための多くの方法及び装置がある。これらは、任意のレジスタ予備充電、実際及びランダムデータのインターリーブ処理、及びデータマスク技術を含む。情報漏れ攻撃に抵抗できる最も重要な技術は、データマスク技術である。この技術は、ＸＯＲ演算などを利用して、予測不可能なマスクによりデータがマスクされるようにすることである。この時、必要とする計算は、マスクされたデータに含まれている。最終データを得るために、マスクされた計算の結果は「アンマスクド(ｕｎｍａｓｋｅｄ)」でなければならない。このために、入力データをマスクするために利用されるマスクは、所定の方式で処理されなければならない。マスクが処理される方式は、「マスク補正(ｍａｓｋ  ｃｏｒｒｅｃｔｉｏｎ)」と称する。
【００２１】
ＡＥＳ暗号化ブロックがスマートカードのような資源限定的環境に統合されると仮定すれば、暗号化または復号化回路に要求される機能は、回路の規模を小さく維持しつつ所定レベルの処理速度を維持することである。ＡＥＳラウンド関数は、線形及び非線形部分を含む。線形部分に対するマスク補正は、直接的になされるが、非線形部分でのマスクされたデータ処理とマスク補正、すなわち、非線形部分でのバイト置換は、特別な計算が要求される。バイト置換のマスクされた計算のための従来の技術には、マスキング乗算とＡＮＤ演算マスク、テーブル検索などがある。
【００２２】
回路規模に影響を与える主要部分は、バイト置換演算部である。バイト置換演算と逆バイト置換演算が同じ回路で行われると、この回路の大きさはほぼ２倍となる。バイト置換及び逆バイト置換演算のための一般的な装置は、ＧＦ(２8)上の演算を利用し、バイト置換、逆バイト置換及びルックアップテーブルから直接的な論理的合成を含む。しかし、このような従来のバイト置換及び逆バイト置換演算装置に利用される回路の規模は、資源限定的な環境に適していない。バイト置換及び逆バイト置換のためには、規模の大きい回路を必要とするということが知られている。マスクされたデータのバイト置換演算のために、特別なクロスバーとマルチプレクサを生成する接近方法は、回路の規模が大きくなる結果を招く。
【００２３】
ハードウェアのマスクバイト置換において、効率的な逆変換遂行のために、フィールドＧＦ(２8)から反対フィールド、例えばＧＦ((２4)2)までデータ変換が要求され、反対フィールドの計算が行われる。この技術は、バイト置換のためにゲートの数を減らす。反対フィールドに対するバイト置換の計算において最も重要な作業の一つは、反対フィールドに対する被演算子の逆変換である。逆変換を行なうための一般的技術は、ＧＦ(２n)上の様々な演算、例えば、乗算、除乗算、継続的乗算、加算、逆変換を要求する。資源を消費する演算として最も重要なものがＧＦ(２n)上の乗算である。マスクされたバイト置換の具現化のため、全ての演算に対してマスキング演算が要求される。上述した従来の方法が乗算を行なうのに利用されると、要求されるハードウェアの量は回路の大きさ面で見る時、マスクバイト置換のための非効率的な解決策となるだろう。
【発明の開示】
【発明が解決しようとする課題】
【００２４】
本発明は、上述した従来の問題を解決するためになされたものであって、その目的は、ＧＦ(２n)上でマスクされたデータに対して効率的乗算を行なうためのガロア体上の乗算方法及び装置を提供することである。
【００２５】
また、本発明の他の目的は、ＧＦ(２4)上でマスクされた乗算を利用してマスクされたデータに対して、ＧＦ((２4)2)上の逆変換を行なうためのガロア体上の逆変換装置を提供することである。
【００２６】
また、本発明の他の目的は、ＧＦ((２4)2)上のマスクされた逆変換を利用してマスクされたデータのＡＥＳバイト置換演算を行なうためのＡＥＳバイト置換演算装置を提供することである。
【課題を解決するための手段】
【００２７】
上記の目的を達成するため、本発明に係るガロア体上の乗算方法は、マスクされたデータとマスクの変換を行なうことによって、情報漏れ攻撃を防止するためのＧＦ(２n)上の乗算方法において、マスクされた複数の第１、第２入力データと、複数の第１、第２入力マスク及び出力マスクを受信するデータ受信ステップと、マスクされた前記複数の入力データ及び前記複数の入力マスクに対してＧＦ(２n)上の乗算を行なって、複数の中間値を算出する中間値算出ステップと、前記中間値と前記出力マスクとに対してＸＯＲ(ＸＯＲ)演算を行って、マスクされた最終出力値を算出する出力値算出ステップとを含むことが好ましい。
【００２８】
また、本発明に係るガロア体上の乗算装置は、マスクデータとマスクの変換を行なうことによって、情報漏れ攻撃を防止するためのＧＦ(２n)上の乗算装置において、マスクされた複数の第１、第２入力データと、複数の第１、第２入力マスクを外部から受信し、マスクされた複数の入力データ及び複数の入力マスクに対してＧＦ(２n)上の乗算を行なうことにより、中間値を算出する複数の乗算器と、中間値と出力マスクとに対してＸＯＲ演算を行なうことにより、マスクされた最終出力値を算出するＸＯＲ演算器とを備えることが好ましい。
【００２９】
また、本発明に係るガロア体上の逆変換装置は、第１ないし第５入力データを外部から受信して、ＧＦ((２4)2)上の逆変換遂行のためのガロア体上の逆変換装置において、８ビットからなる第５入力データの上位ビット部分と下位ビット部分とを各々入力として受けて、ＸＯＲ演算を行なうことにより、第１結果値(Ｔ１)を算出する第１ＸＯＲ演算器と、８ビットからなる第３入力データの上位ビット部分と下位ビット部分とを各々入力として受けて、所定のＸＯＲ演算を行なうことにより、第１結果値(Ｔ１)に対したマスク補正を行なうための第１補正値(Ｍ１)を算出する第２ＸＯＲ演算器と、第１結果値(Ｔ１)と、第５入力データの下位ビット部分と、第１補正値(Ｍ１)、第３入力データの下位ビット部分及び第４入力データを受信した後、ＧＦ(２4)上で乗算を行なって、第２演算値(Ｔ２)を算出する第１マスクド乗算器と、第５入力データの上位ビット部分を受け取って所定演算を行なうことにより、第３演算値(Ｔ３)を算出する第１演算器と、第３入力データの上位ビット部分を受け取って所定演算を行なうことにより、第３演算値(Ｔ３)を補正するための第２補正値(Ｍ２)を算出する第２演算器と、第３演算値(Ｔ３)と第２演算値(Ｔ２)とを受け取って所定のＸＯＲ演算を行なうことにより、第４演算値(Ｔ４)を算出する第３ＸＯＲ演算器と、第２補正値(Ｍ２)と第４入力データとを受け取って所定のＸＯＲ演算を行なうことにより、第４演算値(Ｔ４)に対したマスク補正を行なうための第３補正値(Ｍ３)を算出する第４ＸＯＲ演算器と、第４演算値(Ｔ４)と、第３補正値(Ｍ３)及び第１入力データの下位ビット部分を受け取って、ＧＦ(２4)上で所定の逆変換演算を行なうことにより、第５演算値(Ｔ５)を算出するマスクドインバータと、第５演算値と第１演算値と第２入力データと第１補正値と第１入力データの下位ビット部分を受け取って、ＧＦ(２4)上で乗算を行なうことにより、最終出力値の下位ビット部分を算出する第２マスクド乗算器と、第５演算値と第５入力データの下位ビット部分と第２入力データと第３入力データの上位ビット部分と第１入力データの上位ビット部分を受け取って、ＧＦ(２4)上で乗算を行なうことにより、最終出力値の上位ビット部分を算出する第３マスクド乗算器とを備えることが好ましい。
【００３０】
また、本発明に係るＡＥＳバイト置換演算装置は、ＡＥＳバイト置換演算時、情報漏れ攻撃を防止するためのＡＥＳバイト置換演算装置において、ＧＦ(２8)上のマスクされた入力データと変換選択データとを受け取った後、変換選択データの値にともなう所定の変換により、第１変換値を生成し出力する第１入力フィールド変換器と、入力データのためのマスクと変換選択データとを受け取って、所定の変換により第１変換値に対してマスク補正を行なうための第２変換値を生成し出力する第２入力フィールド変換器と、出力マスク、複数のランダム入力マスクと第１、第２変換値を受け取って、所定の逆変換を行なうことにより、マスクされた逆変換値を算出するＧＦ((２4)2)上のマスクド逆変換装置と、逆変換値と変換選択データとを受け取って、所定の変換によりＧＦ(２8)上に変換されたマスクされた出力値を算出する第１出力フィールド変換器と、出力マスクと前記変換選択データとを受け取った後、変換選択データの値にともなう所定の変換により、出力値に対してマスク補正を行なうための補正値を算出する第２出力フィールド変換器とを備えることが好ましい。
【発明の効果】
【００３１】
本発明によれば、ＧＦ(２n)上でマスクされた乗算の複雑性を低減でき、入力データ及び出力結果がマスクされたデータであるため、情報漏れを防止できるという長所がある。また、本発明によれば、スマートカードのような資源限定的な環境に適合するように、ＡＥＳバイト置換演算時に要求されるハードウェアの規模を低減することができる。
【発明を実施するための最良の形態】
【００３２】
以下、添付された例示図面を参照し本発明に対して説明する。
本発明は、バイト置換演算時の情報漏れ攻撃を防止するためのものである。データマスク技術を利用して、入力データを無作為に抽出することによって、ＡＥＳ計算のセキュリティが増大することができる。このような方式により、漏洩された情報にアクセスする監視者が無作為に抽出されたデータから所望の情報を判別することができないため、情報漏れは最小となる。データマスク技術は、無作為に抽出されたマスク(以下、「ランダムマスク」と記す)を利用してデータを変換する過程を含む。ランダムマスクは、排他的論理和(以下、「ＸＯＲ」と記す)演算によりデータに適用される。
【００３３】
ＡＥＳ暗号化アルゴリズムは、秘密キーをもってデータ処理を行なうためのスマートカードで具現化される。ＡＥＳ暗号化アルゴリズムを具現化するにおいて、情報漏れを防止するために、本発明は入力データをマスキングする方法を利用する。ＡＥＳラウンドアルゴリズムにおいて、バイト置換演算ステップを除外した全てのステップは線形であるから、マスクされたデータ(Ｍａｓｋｅｄ  Ｄａｔａ)計算のためのマスク修正は、直接的な方式により行なわれることが出来る。マスクされたバイト置換演算では、非線形方式で処理されるマスクデータが要求される。本発明の実施形態では合成ＧＦ上でバイト置換演算の複雑性を低減するため、ＧＦ((２4)2)のようなガロア体が利用される。このようなガロア体を利用すれば、バイト置換演算はＧＦ(２n)上の複数の乗算結合、加算、二乗演算、定数乗算及び逆変換で表現される。ＧＦ(２4)上の様々な乗算は、バイト置換演算において重要な部分を占める。
【００３４】
フローチャートに示す方法の目的は、２つのマスクされたデータを受け取ってＧＦ(２n)上で乗算を行なって、マスクされた出力値を算出することによって、入力と出力の実際値が露出されないようにするためである。
【００３５】
図３は、本発明の第１実施形態に係るガロア体上のマスクド(Ｍａｓｋｅｄ)乗算器の構成を示したブロック図であり、図４は、本発明の第１実施形態に係るガロア体上のマスクド乗算器の動作過程を説明するためのフローチャートである。図３に示されているように、本ガロア体上のマスクド乗算器３００は、第１ないし第４乗算器３０７〜３１０、ＸＯＲ演算器３１１を含む。
【００３６】
第１ないし第４乗算器３０７〜３１０は、各々ｎビットからなる複数のデータを受け取って乗算を行なうことにより、ｎ−ビットの中間値Ａ１〜Ａ４を算出する。
【００３７】
ＸＯＲ演算器３１１は、第１ないし第４乗算器３０７〜３１０から各々第１ないし第４中間値Ａ１〜Ａ４を受け取り、外部から出力用マスクＯＭ３０５を受け取ってＸＯＲ演算を行なうことにより、最終出力値ＭＰ３０６を算出する。ここで、ＭＰは、マスクされた値である。
【００３８】
フローチャートに示されているように、まず、マスク乗算器３００に入力される全ての入力データは、ｎビットの大きさを有することと仮定する(Ｓ４１０)。入力データには、第１被演算子ＯＰ１、第２被演算子ＯＰ２、第１被演算子用マスクＩＭＯ１  ３０３、第２被演算子用マスクＩＭＯ２  ３０４、及び出力用マスクＯＭ３０５などがある。
【００３９】
その後、ｎビットの第１被演算子用マスクＩＭＯ１  ３０３、第２被演算子用マスクＩＭＯ２  ３０４、出力用ランダムマスクＯＭを選択する(Ｓ４２０)。
【００４０】
その後、第１ランダムマスクＩＯＭ１と第１被演算子ＯＰ１とに対しＸＯＲ演算を行なって、マスクされた値であるＴＭＰ１を算出し、同様に、第２ランダムマスクＩＭＯ２と第２被演算子ＯＰ２とに対しＸＯＲ演算を行なって、マスクされた値であるＴＭＰ２を算出する(Ｓ４３０)。
なお、ステップＳ４２０とステップＳ４３０は、マスクド乗算器に入力される値の前ステップとして、ソフトウエアにより行われる。
【００４１】
マスクされたＴＭＰ１、ＴＭＰ２と、３つのマスクＩＭＯ１  ３０３、ＩＭＯ２  ３０４、ＯＭ３０５は、各第１乗算器３０７〜第４乗算器３１０に被演算子として入力されて中間値Ａ１〜Ａ４を算出するのに利用される(Ｓ４４０)。
【００４２】
第１中間値Ａ１は、ＴＭＰ１とＴＭＰ２とをＧＦ(２n)上で乗算して算出する。これと同様に、第２中間値Ａ２は、ＴＭＰ２とＩＭＯ１ ３０３とをＧＦ(２n)上で乗算して算出する。また、第３中間値Ａ３は、ＴＭＰ１とＩＭＯ２ ３０４とをＧＦ(２n)上で乗算して算出し、第４中間値Ａ４は、ＩＭＯ１ ３０３とＩＭＯ２ ３０４とをＧＦ(２n)上で乗算して算出する。
【００４３】
最後に、最終的な出力値ＭＰ３０６は、ＸＯＲ演算器３１１でＯＭ、Ａ４、Ａ３、Ａ２及びＡ１を式（３）のようにＸＯＲ演算して算出する(Ｓ４５０)。
【００４４】
【数３】
2006003905.tif 000003
【００４５】
図５は、本発明の第２実施形態に係るＧＦ(２4)2）上のマスクド逆変換装置の構成を示したブロック図である。
【００４６】
本発明は、ＧＦ(２n)上で(ここで、ｎ=４)、マスク乗算を利用してＧＦ(２4)2）上のマスクドバイト置換変換を效率的に行なうためのものである。
【００４７】
ＧＦ(２4)2）上のバイト置換演算を行なうために、本発明は、ＧＦ(２4)2）上のマスクド逆変換のための装置を開示する。
【００４８】
図５に示されているように、マスクド逆変換装置５００は、第１ないし第４ＸＯＲ演算器５０６、５０７、５１１、５１２とＧＦ(２4)上の第１ないし第３マスクド乗算器５０８、５１４、５１５、第１、第２演算器５０９、５１０及びＧＦ(２4)上のマスクドインバータ５１３を含む。
【００４９】
ＧＦ((２4)2)上のマスクド逆変換装置５００は、外部から８ビットの出力マスクＯＭ、５０１と４ビットのランダムマスクＩＭ２、５０２と、８ビットの入力被演算子マスクＩＭＯ  ５０３、４ビットのランダムマスクＩＭＩ  ５０４及びマスクされた８ビットの被演算子ＩＤ５０５を受信して、演算過程を経て８ビットの出力値ＭＯＲ５１６を算出する。
ここで、マスクされた８ビットの被演算子ＩＤ５０５は、式（４）により表現される。
【００５０】
【数４】
2006003905.tif 000004
【００５１】
ここで、ＯＰは、ＧＦ((２4)2)上で逆変換された実際データ値である。８ビットの出力値ＭＯＲ  ５１６は、ＧＦ((２4)2)上で逆変換された実際データ値ＯＰを露出されずに式（５）で出力される。
【００５２】
【数５】
2006003905.tif 000005
【００５３】
８ビット入力データであるＯＭ５０１、ＩＭＯ５０３、ＩＤ５０５は、演算処理を経て各々２つの４ビットデータに分けられる。このうち１つは、各８ビット入力データの最下位ビット位置から４個のビット(ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔｓ)を抽出して構成し、図５においてインデックスＬと表示される。他の１つは、各８ビット入力データの最上位ビット位置から４個のビット(ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔｓ)を抽出して構成し、図５において、インデックスＨと表示される。例えば、図５において、ＯＭHは、ＯＭ５０１の最上位ビットから抽出された４個の上位ビットから構成され、ＯＭLは、ＯＭ５０１の最下位ビットから抽出された４個の下位ビットから構成される。
【００５４】
第１ないし第４ＸＯＲ演算器５０６、５０７、５１１、５１２は、４ビットのデータを受け取って、ビット方式のＸＯＲ演算を行なうことにより、４ビットのデータを出力する。
【００５５】
ＧＦ(２4)上の第１ないし第３マスクド乗算器５０８、５１４、５１５は、ＧＦ(２4)上でマスクド乗算を行う。
【００５６】
ＧＦ(２4)上の第１ないし第３マスクド乗算器５０８、５１４、５１５は、マスクされた第１被演算子Ａ、マスクされた第２被演算子Ｂ、第１被演算子用マスクＩＭＯ１、第２被演算子用マスクＩＭＯ２、及び出力用マスクＯＭを受け取って、ＧＦ(２4)上のマスク乗算を行なって、出力用マスクＯＭ５０１を含むマスクされた出力値を算出する。ここで、マスクされた第１被演算子Ａ及び第２被演算子Ｂは、式（６）、式（７）である。
【００５７】
【数６】
2006003905.tif 000006
【００５８】
【数７】
2006003905.tif 000007
【００５９】
一方、第１、第２演算器５０９、５１０は、ＧＦ(２4)上で多項式で表現された入力データに対して、二乗演算と定数乗算を行う。入力データａ(ｘ)がａ(ｘ)=ａ0+ａ1ｘ+ａ2ｘ2＋ａ3ｘ3であり、定数ｃ(ｘ)がｃ(ｘ)＝１＋ｘ3の場合、第１、第２演算器５０９、５１０を介して行なわれる演算は、式（８）である。
【００６０】
【数８】
2006003905.tif 000008
【００６１】
ここで、約分できない多項式ｆ(ｘ)＝１＋ｘ＋ｘ4が乗算のために利用される。
【００６２】
第１、第２演算器５０９、５１０の出力値は、各々第３、第４ＸＯＲ演算器５１１、５１２でＸＯＲ演算の被演算子だけで利用される。
【００６３】
ＧＦ(２4)上のマスクドインバータ５１３は、マスクされた４ビットの入力データに対してマスクド逆変換を行う。すなわち、ＧＦ(２4)上のマスクドインバータ５１３は、マスクされた被演算子Ｃを最初の入力、被演算子用マスクを第２の入力、出力用マスクを第３の入力として受け取って、マスクされた出力値を算出する。ここで、マスクされた被演算子は、ＯＰ  ＸＯＲ  ＭＩＮである。入力がＣであり、かつ逆変換結果がＤの場合、Ｄ=Ｃ-1ｍｏｄ ｆ(ｘ)である。ここで、Ｄの計算は、逆変換合成過程において一般的なマスク逆変換技術であるテーブル検索技術やマスクＡＮＤ演算を利用するので、実際のＣ値は表われない。
【００６４】
第１ＸＯＲ演算器５０６は、ＧＦ((２4)2)上のマスクド逆変換装置５００に入力されるデータであるＩＤ５０５の下位ビット部分ＩＤLと上位ビット部分ＩＤHを各々受け取って、ＸＯＲ演算を行った後、その結果値をＧＦ(２4)上の第１及び第２マスクド乗算器５０８、５１４に出力する。
第２ＸＯＲ演算器５０７はＴ１に対するマスク補正のための補正値Ｍ１を算出するため式（９）のような演算を行う。
【００６５】
【数９】
2006003905.tif 000009
【００６６】
ＧＦ(２4)上の第１マスクド乗算器５０８は、第１ＸＯＲ演算器５０６の出力値と、ＩＭＯ５０３の下位ビット部分ＩＭＯ２、第２ＸＯＲ演算器５０７の出力値、ＩＤ５０５の下位ビット部分ＩＤL及びＩＭ１  ５０４を受け取って乗算を行う。その後、乗算を行なった結果値を第３ＸＯＲ演算器５１１に出力する。
【００６７】
第１演算器５０９は、ＩＤ５０５の上位ビット部分であるＩＤHを受け取って、二乗演算及び定数乗算を行なった後、その結果値を第３ＸＯＲ演算器５１１に出力する。
【００６８】
第３ＸＯＲ演算器５１１は、ＧＦ(２4)上の第１マスクド乗算器５０８の出力値と第１演算器５０９の出力値とを入力として受け取って、ＸＯＲ演算を行なった後、その結果値をＧＦ(２4)上のマスクドインバータ５１３に出力する。
【００６９】
第２演算器５１０は、ＩＭＯ５０３の上位ビット部分であるＩＭＯHを受け取って、二乗演算及び定数乗算を行なった後、その結果値を第４ＸＯＲ演算器５１２に出力する。
【００７０】
第４ＸＯＲ演算器５１２は、第２演算器５１０の出力値とＩＭ１  ５０４を受け取って、ＸＯＲ演算を行なった後、その結果値をＧＦ(２4)上のマスクドインバータ５１３に出力する。
【００７１】
ＧＦ(２4)上のマスクドインバータ５１３は、第４ＸＯＲ演算器５１２の出力値と第３ＸＯＲ演算器５１１の出力値とＩＭ２  ５０２とを受け取って演算処理を行なった後、その結果値をＧＦ(２4)上の第２マスクド乗算器５１４及び第３マスクド乗算器５１５に出力する。
【００７２】
ＧＦ(２4)上の第２マスクド乗算器５１４は、第１ＸＯＲ演算器５０６の出力値と、第２ＸＯＲ演算器５０７の出力値及びＧＦ(２4)上のマスクドインバータ５１３の出力値とＯＭ５０１の下位ビット部分ＯＭL及びＩＭ２５０２を受け取って、演算処理を行なった後、最終出力値ＭＯＲ５１６の下位ビット部分ＭＯＲLに該当するデータ値を出力する。
【００７３】
ＧＦ(２4)上の第３マスクド乗算器５１５は、ＧＦ(２4)上のマスクドインバータ５１３の出力値と、ＩＤ５０５の上位ビット部分ＩＤHと、ＩＭ２  ５０２と、ＩＭＯ５０３の上位ビット部分ＩＭＯHと、ＯＭ５０１の上位ビット部分ＯＭHを受け取って、演算処理を行なった後、最終出力値ＭＯＲ５１６の上位ビット部分ＭＯＲHに該当するデータ値を出力する。
【００７４】
以下では、ＧＦ((２4)2)上のマスクド逆変換装置５００の動作過程について説明する。第２、第４ＸＯＲ演算器５０７、５１２及び第２演算器５１０は、マスクド逆変換装置５００においてマスク補正を担当する部分であり、残りの部分は、マスクされたデータを処理する部分である。
【００７５】
入力値がａであり、逆変換結果値がｂである場合、データをマスクしないＧＦ((２4)2)上での逆変換手順について参考に説明する。
【００７６】
まず、入力値ａを上位４ビット部分ａHと下位４ビット部分ａLに各々分割し、ＧＦ((２4)2)上での乗算と逆変換など、全ての演算を行う。演算過程を順次的に述べると、式（１０）から数式（１６）の通りである。
【００７７】
【数１０】
2006003905.tif 000010
【００７８】
【数１１】
2006003905.tif 000011
【００７９】
【数１２】
2006003905.tif 000012
【００８０】
【数１３】
2006003905.tif 000013
【００８１】
【数１４】
2006003905.tif 000014
【００８２】
【数１５】
2006003905.tif 000015
【００８３】
【数１６】
2006003905.tif 000016
【００８４】
前記のようなステップを経て算出されたｂHとｂLとを利用して、ＧＦ((２4)2)上の出力ｂを求めれば、ＧＦ((２4)2)においてｂ＝ａ-1である。
【００８５】
以下では、本発明に係るマスクド逆変換手順について、図５を参照し説明する。
【００８６】
以下の手順において、Ｔiはマスクされた変数を意味し、ＭiはＴiのために利用されるマスクである。
【００８７】
ランダムマスクを選択する。８ビットのＩＭＯ５０３、４ビットのＩＭ１  ５０４、４ビットのＩＭ２  ４０２、８ビットの出力マスクＯＭ５０１、ＩＤ５０５を式（１７）のように計算する。
【００８８】
【数１７】
2006003905.tif 000017
【００８９】
ＧＦ((２4)2)上のマスクド逆変換装置５００に入力されるＩＤ５０５は、上位４ビット部分ＩＤHと下位４ビット部分ＩＤLとに各々分割される。
【００９０】
ＧＦ((２4)2)上での乗算と逆変換など、全ての演算を行う。
(ａ)第１ＸＯＲ演算器５０６は、式（１８）のような演算を行う。
【００９１】
【数１８】
2006003905.tif 000018
【００９２】
これと同時に、第２ＸＯＲ演算器５０７は、Ｔ１に対したマスク補正のための補正値Ｍ１を算出するため、式（１９）のような演算を行う。
【００９３】
【数１９】
2006003905.tif 000019
【００９４】
(ｂ)ＧＦ(２4)上の第１マスクド乗算器５０８は、ＩＭ１  ５０４とＩＭＯ５０３の下位４ビット部分であるＩＭＯL及び第２ＸＯＲ演算器５０７の出力値であるＭ１などを利用して、式（２０）のような演算を行う。ここで、マスク補正は必要とせず、ＩＭ１が新しいマスクとして利用される。
【００９５】
【数２０】
2006003905.tif 000020
【００９６】
(ｃ)第１演算器５０９は、式（２１）のような演算を行う。
【００９７】
【数２１】
2006003905.tif 000021
【００９８】
これと同時に、第２演算器５１０は、第１演算器５０９の出力値であるＴ３に対してマスク補正を行なって、式（２２）のような補正値Ｍ２を算出する。
【００９９】
【数２２】
2006003905.tif 000022
【０１００】
(ｄ)その後、第３ＸＯＲ演算器５１１は、式（２３）のような演算を行う。
【０１０１】
【数２３】
2006003905.tif 000023
【０１０２】
そして、第４ＸＯＲ演算器５１２は、第３ＸＯＲ演算器５１１の出力値であるＴ４に対し、マスク補正を行なって、式（２４）のような補正値Ｍ３を算出する。
【０１０３】
【数２４】
2006003905.tif 000024
【０１０４】
(ｅ)ＧＦ(２4)上のマスクドインバータ５１３は、第４ＸＯＲ演算器５１２の出力値であるＭ３とＩＭ２  ５０２とを利用して、マスクド逆変換演算を式（２５）のように行う。ここで、マスク補正は必要とせず、ＩＭ２  ５０２は新しいマスクとして利用される。
【０１０５】
【数２５】
2006003905.tif 000025
【０１０６】
(ｆ)ＧＦ(２4)上の第２マスクド乗算器５１４は、ＯＭ５０１の下位４ビット部分であるＯＭLとＩＭ２  ５０２、第２ＸＯＲ演算器５１０の出力値であるＭ１などを利用して、次のような演算を行なうことで、最終出力値ＭＯＲ５１６の下位４ビット部分であるＭＯＲLを式（２６）のように算出する。ここで、マスク補正は必要としない。
【０１０７】
【数２６】
2006003905.tif 000026
【０１０８】
(ｇ)ＧＦ(２4)上の第３マスクド乗算器５１５は、ＯＭ５０１の上位４ビット部分であるＯＭHと、ＩＭ２  ５０２と、ＩＭＯ５０３の上位４ビット部分であるＩＭＯHなどを利用して、次のような演算を行なうことにより、最終出力値ＭＯＲ５１６の上位４ビット部分であるＭＯＲHを式（２７）のように算出する。ここで、マスク補正は必要としない。
【０１０９】
【数２７】
2006003905.tif 000027
【０１１０】
前記で算出されたＭＯＲHとＭＯＲLのマスクド乗算の連関として、最終出力値であるＭＯＲ５１６が式（２８）のように算出される。ここで、ＯＭ７０１は出力用マスクである。
【０１１１】
【数２８】
2006003905.tif 000028
【０１１２】
図６は、本発明の第３実施形態に係るＡＥＳバイト置換演算装置の構成を示したブロック図である。
図６に示されているように、ＧＦ((２)4)2上のマスクド逆変換装置５００は、図５に示されたＧＦ((２)4)2上のマスクド逆変換装置と同一であるので、同じ参照符号を使用して説明する。本マスクドＡＥＳバイト置換演算装置６００は、第１入力フィールド変換器６０７ａ、第２入力フィールド変換器６０７ｂ、ＧＦ((２)4)2上のマスクド逆変換装置５００、第１出力フィールド変換器６０８ａ、及び第２出力フィールド変換器６０８ｂを含む。
【０１１３】
本マスクドＡＥＳバイト置換演算装置６００は、外部からランダムマスクＩＭ１  ６０１と、ランダムマスクＩＭ２  ６０２、マスクされたデータＩＮＰＵＴ６０３、変換選択データＴＲ６０４、入力データ用マスクＩＭＡＳＫ６０５、及び出力マスクＯＭ６０６を受け取って、演算処理を行なった後、第１出力値のＯＵＴＰＵＴ６０９と第２出力値であるＯＭＡＳＫ６１０を出力する。ここで、ＯＭＡＳＫ６１０は、マスク補正値である。
【０１１４】
本マスクドＡＥＳバイト置換演算装置６００は、マスクされた入力と、入力マスク、出力マスク、追加のランダムマスクを利用して、ＡＥＳラインダールアルゴリズムのマスクされたバイトの置換演算を行う。このような方式で、入力データの実際値をあらわさない出力マスクを有したマスクされた結果値を出力する。
【０１１５】
第１入力フィールド変換器６０７ａは、マスクされたデータＩＮＰＵＴ６０３と変換選択データＴＲ６０４とを受け取って、所定の条件にともなう変換を行なって、出力値をＧＦ((２)4)2上のマスクド逆変換装置５００に提供する。
【０１１６】
第２入力フィールド変換器６０７ｂは、入力データ用マスクＩＭＡＳＫ６０５と変換選択データＴＲ６０４とを受け取って、所定の条件にともなう変換を行なって、出力値をＧＦ((２)4)2上のマスクド逆変換装置５００に提供する。
【０１１７】
ＧＦ((２)4)2上のマスクド逆変換装置５００は、ＯＭ６０６、ＩＭ１  ６０１、第２入力フィールド変換器６０７ｂの出力値、ＩＭ２  ６０２、及び第１入力フィールド変換器６０７ａの出力値を受け取って、逆変換を行なって、出力値を第１出力フィールド変換器６０８ａに提供する。
【０１１８】
第１出力フィールド変換器６０８ａは、ＧＦ((２)4)2上のマスクド逆変換装置５００の出力値と、変換選択データＴＲ６０４を受け取って、第１出力値ＯＵＴＰＵＴ６０９を算出する。
【０１１９】
第２出力フィールド変換器６０８ｂは、ＯＭ６０６と、変換選択データＴＲ６０４を受け取って、所定の条件にともなう変換を行なって第２出力値のＯＭＡＳＫ６１０を算出する。
【０１２０】
まず、ＧＦ(２8）上のマスクされたデータＩＮＰＵＴ６０３を受け取った第１入力フィールド変換器６０７ａは、また他の入力である変換選択データＴＲ６０４の値に応じて、ＧＦ((２)4)2上に変換されたマスクされたデータを出力したり、ＧＦ((２)8)上でラインダールの逆アフィン変換によって変換を行ない、その後、ＧＦ((２)4)2上に変換されたマスクされたデータを出力する。
【０１２１】
第２入力フィールド変換器６０７ｂは、変換選択データＴＲ６０４の値に応じて、入力データ用マスクＩＭＡＳＫ６０５を処理し、第１入力フィールド変換器６０８ａから出力されたデータに対してマスク補正を行なって、補正値であるＩＭＯをＧＦ((２)4)2上のマスクド逆変換装置５００に出力する。
【０１２２】
ＧＦ((２)4)2上のマスクド逆変換装置５００は、第１入力フィールド変換器６０７ａの出力値と、ランダムマスクＩＭ１  ６０１とＩＭ２  ６０２とを利用してデータを逆変換し、入力マスクＩＭＯをＧＦ((２4)2)上に変換して、マスクＯＭと共にマスクされた逆変換結果値ＭＯＲを出力する。
【０１２３】
第１出力フィールド変換器６０８ａは、ＧＦ((２4)2)上のマスクド逆変換装置５００からＧＦ((２4)2)上でマスクされたデータＭＯＲを受け取り、第２入力である変換選択データＴＲ６０４の値に応じてマスクされたデータをＧＦ(２8)上に変換し、その後、ラインダール逆アフィン変換を行なったり、ＧＦ(２8)上に変換されてマスクされたデータを出力する。
【０１２４】
第２出力フィールド変換器６０８ｂは、変換選択データＴＲ６０４の値に応じて出力マスクＯＭ６０６を処理し、第１出力フィールド変換器６０８ａから出力されたデータに対してマスク補正を行なって、補正値ＯＭＡＳＫ６１０を算出する。
【０１２５】
ＧＦ(２8)とＧＦ((２4)2)との間の変換は、各々フィールド同型変換及び逆フィールド同型変換である。フィールド同型及び逆フィールド同型変換は、式（２９）、式（３０）の通り定義される。
【０１２６】
【数２９】
2006003905.tif 000029
【０１２７】
【数３０】
2006003905.tif 000030
【０１２８】
ここで、ｘはガロア体ＧＦ(２8)の元素であり、ｙはガロア体ＧＦ((２4)2)の元素である。
Ｔは式（３１）、式（３２）に示すようなフィールド同型変換行列、Ｔ-1は逆フィールド同型変換行列である。
【０１２９】
【数３１】
2006003905.tif 000031
【０１３０】
【数３２】
2006003905.tif 000032
【０１３１】
式（２９）、式（３０）の変換は、入力データに対してそれぞれの行列による行列積を行なうことでなされる。
逆アフィン変換及び逆フィールド同型の演算は、式（３３）の通り定義される。
【０１３２】
【数３３】
2006003905.tif 000033
【０１３３】
式（３３）の変換は、入力データに対してそれぞれの行列による行列積と行列和を行なうことでなされる。
逆フィールド同型変換及びアフィン変換は、式（３４）、式（３５）のように定義される。
【０１３４】
【数３４】
2006003905.tif 000034
【０１３５】
【数３５】
2006003905.tif 000035
ここで、Ａ´-1は式（３６）の通りである。
【０１３６】
【数３６】
2006003905.tif 000036
【０１３７】
数式３の変換は、入力データに対してそれぞれの行列による行列積と行列和を行なうことでなされる。
フィールド同型変換と逆アフィン変換及び逆フィールド同型変換に対する方程式を式（３７）〜式（４４）により説明する。
【０１３８】
【数３７】
2006003905.tif 000037
【０１３９】
【数３８】
2006003905.tif 000038
【０１４０】
【数３９】
2006003905.tif 000039
【０１４１】
【数４０】
2006003905.tif 000040
【０１４２】
【数４１】
2006003905.tif 000041
【０１４３】
【数４２】
2006003905.tif 000042
【０１４４】
【数４３】
2006003905.tif 000043
【０１４５】
【数４４】
2006003905.tif 000044
【０１４６】
ここで、ａ？ｂは、ａとｂとの間のビット方式のＸＯＲ演算をいう。
逆フィールド同型変換と逆アフィン変換及び逆フィールド同型変換に対する方程式は、式（４５）〜式（５９）の通りである。
【０１４７】
【数４５】
2006003905.tif 000045
【０１４８】
【数４６】
2006003905.tif 000046
【０１４９】
【数４７】
2006003905.tif 000047
【０１５０】
【数４８】
2006003905.tif 000048
【０１５１】
【数４９】
2006003905.tif 000049
【０１５２】
【数５０】
2006003905.tif 000050
【０１５３】
【数５１】
2006003905.tif 000051
【０１５４】
【数５２】
2006003905.tif 000052
【０１５５】
【数５３】
2006003905.tif 000053
【０１５６】
【数５４】
2006003905.tif 000054
【０１５７】
【数５５】
2006003905.tif 000055
【０１５８】
【数５６】
2006003905.tif 000056
【０１５９】
【数５７】
2006003905.tif 000057
【０１６０】
【数５８】
2006003905.tif 000058
【０１６１】
【数５９】
2006003905.tif 000059
【０１６２】
したがって、第１、第２入力フィールド変換器６０７ａ、６０７ｂと第１、第２出力フィールド変換器６０８ａ、６０８ｂは、ＸＯＲ演算とＮＯＴ演算を利用して変換を行う。
【０１６３】
バイト置換演算を行なうために、変換選択データＴＲ信号は０と設定される。その後、第１入力フィールド変換器６０７ａは、ＧＦ((２4)2)上に変換されたマスクデータとマスクに対して変換を行う。その後、ＧＦ((２4)2)上のマスクド逆変換装置５００は、ＧＦ((２4)2)上でマスクド逆変換を行ない、マスクを出力値に適用する。最後に、第１出力フィールド変換器６０８ａは、マスクされたデータＭＯＲとマスクＯＭをＧＦ(２)8上に変換し、その後、ラインダールアフィン変換を行なって、第１出力値ＯＵＴＰＵＴ６０９を出力する。第１出力値ＯＵＴＰＵＴ６０９は、マスクされたデータに対してバイト置換演算を行なった結果値を含み、第２出力値ＯＭＡＳＫ６１０は、マスクされたデータのためのマスクを含む。
【０１６４】
逆バイト置換演算を行なうため、変換選択データＴＲ信号は１と設定される。その後、第１、第２入力フィールド変換器６０７ａ、６０７ｂは、ＧＦ(２8)上でラインダール逆アフィン変換によりマスクデータとマスクとに対して変換を行う。その後、ＧＦ((２4)2)上に逆変換する。その後、ＧＦ((２4)2)上のマスクド逆変換装置５００は、ＧＦ((２4)2)上でマスクド逆変換を行ない、マスクＯＭ６０６を結果値に適用する。最後に、第１、第２出力変換器は、ＧＦ(２8)上にマスクされたデータＭＯＲとマスクＯＭ６０６に対しＧＦ(２8)上に逆変換を行う。第１出力値ＯＵＰＵＴ６０９は、マスクされたデータに対する逆バイト置換演算を行った結果値を含み、第２出力値ＯＭＡＳＫ６１０は、マスクされたデータのためのマスクを含む。
【０１６５】
このように、本発明は、ＡＥＳバイト置換演算において、実際データが処理されることをあらわさないように、マスクされた計算を行なうことにより情報漏れ攻撃を防止できる。
【０１６６】
なお、本発明は、上記の実施の形態に限定されるものではなく、本発明に係る技術的思想から逸脱しない範囲内で様々な変更が可能であり、それらも本発明の技術的範囲に属する。
【図面の簡単な説明】
【０１６７】
【図１】一般的なＡＥＳラインダールアルゴリズムにおいて、入力データ、入力データが変換された状態データ(ｓｔａｔｅ  ａｒｒａｙ)及び暗号化または復号化が行なわれた出力データの構造を示した図である。
【図２Ａ】一般的なラインダールアルゴリズムにおいて、１つのラウンドを示したフローチャートである。
【図２Ｂ】一般的なラインダールアルゴリズムにおいて、１つのラウンドを示したフローチャートである。
【図３】本発明の第１実施形態に係るＧＦ(２n)上のマスクド乗算器の構成を示したブロック図である。
【図４】本発明の第１実施形態に係るＧＦ(２n)上のマスクド乗算器の動作を説明するためのフローチャートである。
【図５】本発明の第２実施形態に係るＧＦ(２4)2）上のマスクド逆変換装置の構成を示したブロック図である。
【図６】本発明の第３実施形態に係るマスクドＡＥＳバイト置換演算装置の構成を示したブロック図である。
【符号の説明】
【０１６８】
３００  ＧＦ(２n)上のマスクド乗算器
３０１  ＴＭＰ１
３０２  ＴＭＰ２
３０３  ＩＭＯ１
３０４  ＩＭＯ２
３０５  ＯＭ
３０６  ＭＰ
３０７  第１乗算器
３０８  第２乗算器
３０９  第３乗算器
３１０  第４乗算器
３１１  ＸＯＲ演算器
５００  ＧＦ((２4)2)上のマスクド逆変換装置
５０，６０６  ＯＭ
５０２，６０２  ＩＭ２
５０３  ＩＭＯ
５０４，６０１  ＩＭ１
５０５  ＩＤ
５０６  第１ＸＯＲ演算器
５０７  第２ＸＯＲ演算器
５１１  第３ＸＯＲ演算器
５１２  第４ＸＯＲ演算器
５０８  ＧＦ(２4)上の第１マスクド乗算器
５１４  ＧＦ(２4)上の第２マスクド乗算器、
５１５  ＧＦ(２4)上の第３マスクド乗算器
５０９、５１０  第１演算器
５１３  ＧＦ(２4)上のマスクドインバータ
５１６  ＭＯＲ
６００  マスクドＡＥＳバイト置換演算装置
６０３  ＩＮＰＵＴ
６０４  ＴＲ
６０５  ＩＭＡＳＫ
６０７ａ  第１入力フィールド変換器
６０７ｂ  第２入力フィールド変換器
６０８ａ  第１出力フィールド変換器
６０８ｂ  第２出力フィールド変換器
６０９  ＯＵＴＰＵＴ
６１０  ＯＭＡＳＫ
【図１】
2006003905.tif 000062
【図２Ａ】
2006003905.tif 000063
【図２Ｂ】
2006003905.tif 000064
【図３】
2006003905.tif 000065
【図４】
2006003905.tif 000066
【図５】
2006003905.tif 000067
【図６】
2006003905.tif 000068