(57)【要約】【課題】ＡＥＳ方式において、鍵データを難読化することを目的とする。【解決手段】入力データをＡＥＳ方式で暗号化又は復号化する情報処理装置が、処理対象となる前記入力データから４バイトのサブラウンドデータを選択し、第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含む第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換を行い、前記第１テーブルとは異なる第２テーブルに基づいて、前記第１データを第２データに変換する第２変換を行い、前記第１テーブル及び前記第２テーブルとは異なる第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換を行い、前記第３データの排他的論理和を計算することで上記課題を解決する。【選択図】図１１
2017216619.tif 000002
【特許請求の範囲】
【請求項１】
入力データをＡＥＳ方式で暗号化又は復号化する情報処理装置であって、
処理対象となる前記入力データから４バイトのサブラウンドデータを選択する選択部と、
第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含む第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換部と、
前記第１テーブルとは異なる第２テーブルに基づいて、前記第１データを第２データに変換する第２変換部と、
前記第１テーブル及び前記第２テーブルとは異なる第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換部と、
前記第３データの排他的論理和を計算する排他的論理和計算部と
を含む情報処理装置。
【請求項２】
前記選択が行われると、ＳｈｉｆｔＲｏｗｓ関数を実行した処理結果と同様の処理結果が得られる請求項１に記載の情報処理装置。
【請求項３】
前記第１変換部による第１変換、前記第２変換部による第２変換、前記第３変換部による第３変換及び前記排他的論理和計算部による計算が行われると、ＡｄｄＲｏｕｎｄＫｅｙ関数、ＳｕｂＢｙｔｅｓ関数及びＭｉｘＣｏｌｕｍｎｓ関数をそれぞれ実行した処理結果と同様の処理結果となる請求項１に記載の情報処理装置。
【請求項４】
最初のラウンドと、中間のラウンドと、最後のラウンドで異なる前記第２テーブルを使用する請求項１に記載の情報処理装置。
【請求項５】
前記最初のラウンド及び前記中間のラウンドで使用される前記第２テーブルには、前記第１乱数成分を打ち消す打消成分と、Ｓ−Ｂｏｘ変換に相当する変換成分と、第１関数による関数変換成分とが少なくとも含まれ、
前記最初のラウンド及び前記中間のラウンドで使用される前記第３テーブルには、前記第１関数とは逆関数となる逆関数変換成分と、データに対してＡＥＳ既約多項式に基づく乗算となる乗算成分と、前記第１関数とは異なる第２乱数成分と、データに含まれるビットを並び替える並替成分とが含まれる請求項４に記載の情報処理装置。
【請求項６】
前記第３テーブルは、各ラウンドで共通して使用する請求項１に記載の情報処理装置。
【請求項７】
前記第３テーブルは、４個使用される請求項６に記載の情報処理装置。
【請求項８】
前記最初のラウンド及び前記中間のラウンドでは、それぞれ異なる前記第２テーブルが１個ずつ使用される請求項４又は５に記載の情報処理装置。
【請求項９】
入力データをＡＥＳ方式で暗号化又は復号化する情報処理装置が行う情報処理方法であって、
前記情報処理装置が、処理対象となる前記入力データから４バイトのサブラウンドデータを選択する選択手順と、
前記情報処理装置が、第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含む第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換手順と、
前記情報処理装置が、前記第１テーブルとは異なる第２テーブルに基づいて、前記第１データを第２データに変換する第２変換手順と、
前記情報処理装置が、前記第１テーブル及び前記第２テーブルとは異なる第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換手順と、
前記情報処理装置が、前記第３データの排他的論理和を計算する排他的論理和計算手順と
を含む情報処理方法。
【請求項１０】
入力データをＡＥＳ方式で暗号化又は復号化するコンピュータに情報処理方法を実行させるためのプログラムであって、
前記コンピュータが、処理対象となる前記入力データから４バイトのサブラウンドデータを選択する選択手順と、
前記コンピュータが、第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含む第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換手順と、
前記コンピュータが、前記第１テーブルとは異なる第２テーブルに基づいて、前記第１データを第２データに変換する第２変換手順と、
前記コンピュータが、前記第１テーブル及び前記第２テーブルとは異なる第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換手順と、
前記コンピュータが、前記第３データの排他的論理和を計算する排他的論理和計算手順と
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、データの暗号化及び復号化の方式として、ＦＩＰＳ（Ｆｅｄｅｒａｌ  Ｉｎｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄ）１９７（アメリカ国立標準技術研究所、２００１年公表）で定められているＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式が知られている。
【０００３】
また、ＡＥＳ方式において、セキュリティを向上させるための方法として、ホワイトボックスクリプトグラフィ（Ｗｈｉｔｅ−Ｂｏｘ  Ｃｒｙｐｔｏｇｒａｐｈｙ）が知られている（例えば、非特許文献１及び非特許文献２等）。
【０００４】
さらに、入力に依存する符号化を行うホワイトボックスクリプトグラフィが知られている。具体的には、まず、システムが、暗号化に用いられる鍵を示す複数の基本ブロックから構成するネットワークを備える。そして、基本ブロックが、入力データを出力データにマッピングする。さらに、ネットワークが、複数の基本ブロックのうちの第１基本ブロックからの出力データを選択された符号化方式に従って符号化する。また、符号化方式の選択は、入力メッセージに依存するようにする。その上、符号化の影響を補償するため、システムが、複数の再復号化方式のうちから選択される再復号化方式に従って中間データを再符号化する補償器を有する。このようにして、リバースエンジニアリングに対して、複雑化させる方法が知られている（例えば、特許文献１等）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】"Ｗｈｉｔｅ−Ｂｏｘ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  ａｎ  ＡＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ．"Ｓ．Ｃｈｏｗ，Ｐ．Ｅｉｓｅｎ，Ｈ．Ｊｏｈｎｓｏｎ，Ｐ．Ｃ．ｖａｎ  Ｏｏｒｓｃｈｏｔ．Ｉｎ  ９ｔｈ  Ａｎｎｕａｌ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｓｅｌｅｃｔｅｄ  Ａｒｅａｓ  ｉｎ  Ｃｒｙｐｔｏｇｒａｐｈｙ  （ＳＡＣ  ２００２），Ａｕｇ．１５−１６  ２００２．
【非特許文献２】"Ａ  Ｔｕｔｏｒｉａｌ  ｏｎ  Ｗｈｉｔｅ−ｂｏｘ  ＡＥＳ．"Ｊａｍｅｓ  Ａ．  Ｍｕｉｒ．  Ａｄｖｎｃｅｓ  ｉｎ  Ｎｅｔｗｏｒｋ  Ａｎａｌｙｓｉｓ  ａｎｄ  ｉｔｓ  Ａｐｐｌｉｃａｔｉｏｎｓ，  Ｍａｔｈｅｍａｔｉｃｓ  ｉｎ  Ｉｎｄｕｓｔｒｙ  １８  （２０１３），  ２０９−２２９．
【特許文献】
【０００６】
【特許文献１】特表２０１２−５２０５８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の方法では、ＡＥＳ方式において、鍵データが解読される場合があり、鍵データの難読化ができていない場合がある。
【０００８】
本発明の１つの側面は、ＡＥＳ方式において、鍵データを難読化することを目的とする。
【課題を解決するための手段】
【０００９】
一態様における、入力データをＡＥＳ方式で暗号化又は復号化する情報処理装置は、
処理対象となる前記入力データから４バイトのサブラウンドデータを選択する選択部と、
第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含む第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換部と、
前記第１テーブルとは異なる第２テーブルに基づいて、前記第１データを第２データに変換する第２変換部と、
前記第１テーブル及び前記第２テーブルとは異なる第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換部と、
前記第３データの排他的論理和を計算する排他的論理和計算部と
を含む。
【発明の効果】
【００１０】
ＡＥＳ方式において、鍵データを難読化することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係る組み込みシステムのハードウェア構成の一例を説明するブロック図である。
【図２】本発明の一実施形態に係る暗号化の１ラウンド当たりの処理の一例を説明するフローチャートである。
【図３】本発明の一実施形態に係る最初のラウンドの処理の一例を説明する模式図である。
【図４】本発明の一実施形態に係る中間のラウンドの処理の一例を説明する模式図である。
【図５】本発明の一実施形態に係る最後のラウンドの処理の一例を説明する模式図である。
【図６】ホワイトボックスクリプトグラフィの一例の原理を示す概念図である。
【図７】ホワイトボックスクリプトグラフィにおけるラウンド処理の一例を示す模式図である。
【図８】比較例に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図（その１）である。
【図９】比較例に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図（その２）である。
【図１０】比較例に係るＬＵＴのデータ容量の一例を示す表である。
【図１１】本発明の一実施形態に係る組み込みシステムの機能構成の一例を示す機能ブロック図である。
【発明を実施するための形態】
【００１２】
情報処理装置は、例えば、組み込みシステム（Ｅｍｂｅｄｄｅｄ  ｓｙｓｔｅｍ）である。組み込みシステムは、産業機器又は家電製品等に内蔵され、特定の機能を実現するためのシステムである。なお、情報処理装置は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等でもよい。以下、本発明の実施形態を図面に基づいて、情報処理装置が組み込みシステムである例で説明する。
【００１３】
１．組み込みシステムのハードウェア構成例
２．組み込みシステムによる全体処理例
３．組み込みシステムの機能構成例
＜＜１．組み込みシステムのハードウェア構成例＞＞
図１は、本発明の一実施形態に係る組み込みシステムのハードウェア構成の一例を説明するブロック図である。図示するように、組み込みシステム１は、演算装置ＨＷ１と、記憶装置ＨＷ２と、Ｉ／Ｆ（ｉｎｔｅｒｆａｃｅ）ＨＷ３とを有する。
【００１４】
演算装置ＨＷ１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）又はＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。また、演算装置ＨＷ１は、組み込みシステム１が行う処理の全部又は一部を実現するための演算と、データの加工とを行う演算装置並びに組み込みシステム１が有するハードウェアを制御する制御装置である。さらに、演算装置ＨＷ１は、例えば、図示するように、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）ＨＷ１０及びＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＨＷ１１等の記憶装置を内蔵し、これらの記憶装置によって記憶領域を実現する。
【００１５】
ＲＡＭＨＷ１０は、演算装置ＨＷ１等が用いるプログラム、設定値又はデータ等を展開及び記憶するために用いられる記憶装置である。
【００１６】
ＲＯＭＨＷ１１は、演算装置ＨＷ１等が用いるプログラム、設定値又はデータ等を記憶する記憶装置である。
【００１７】
記憶装置ＨＷ２は、いわゆるメモリ（ｍｅｍｏｒｙ）等である。また、記憶装置ＨＷ２は、組み込みシステム１が用いるプログラム、設定値又はデータ等を記憶する主記憶装置である。なお、記憶装置ＨＷ２は、補助記憶装置等を有してもよい。
【００１８】
Ｉ／ＦＨＷ３は、組み込みシステム１にデータ等を入出力するインタフェースである。Ｉ／ＦＨＷ３は、バス、コネクタ、ケーブル及びドライバ等で実現される。
【００１９】
なお、組み込みシステム１のハードウェア構成は、図示する構成に限られない。例えば組み込みシステム１は、記憶装置ＨＷ２を有さなくともよい。また、組み込みシステム１は、更に演算装置等の補助装置を外部又は内部に有してもよい。
【００２０】
＜＜２．組み込みシステムによる全体処理例＞＞
本発明の実施形態に係る組み込みシステムは、データを暗号化又は復号化する。以下、組み込みシステムがデータを暗号化する場合を例に説明する。
【００２１】
図２は、本発明の一実施形態に係る暗号化の１ラウンド当たりの処理の一例を説明するフローチャートである。以下、ＡＥＳ方式において、処理の単位となる１６バイト（ｂｙｔｅ）の入力データに対する処理単位（以下「１ラウンド（ｒｏｕｎｄ）」という。）について説明する。なお、１ラウンド当たりの処理は、ＡＥＳ方式に用いられる鍵のビット（ｂｉｔ）長等に合わせて、繰り返し行われる。
【００２２】
また、以下の説明では、１ラウンド当たりの処理は、１６バイトのうち、選択される４バイトのデータを処理単位（以下「１サブラウンド（ｓｕｂ−ｒｏｕｎｄ）」という。）にする１サブラウンド当たりの処理が繰り返し行われる。つまり、１ラウンド当たりの処理では、４サブラウンドの処理が繰り返し行われる（４バイト（１サブラウンド）×４サブラウンド＝１６バイト、１ラウンド）。そして、１ラウンド当たりの処理は、図示する処理又は図示する処理と等価の処理である。
【００２３】
＜＜サブラウンドデータの選択例（ステップＳ０１０１）＞＞
ステップＳ０１０１では、組み込みシステムは、サブラウンドデータを選択する。すなわち、ステップＳ０１０１によって、入力される１６バイトの入力データのうち、４バイトのデータ（以下「サブラウンドデータ」という。）が選択される。なお、ステップＳ０１０１は、「ＳｈｉｆｔＲｏｗｓ」実行した処理結果と同様の処理結果となる処理である。以下、ステップＳ０１０１で選択される４バイトのデータのうち、１バイトのデータごとに行われる処理を説明する。すなわち、それぞれの１バイトのデータに対して、４回同様の処理が行われると、１サブラウンド当たりの処理となる。
【００２４】
＜＜第１テーブルに基づく第１変換例（ステップＳ０１０２）＞＞
ステップＳ０１０２では、組み込みシステムは、第１テーブルに基づいて第１変換を行う。なお、第１テーブルは、いわゆるＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）等である。第１テーブル及び第１変換の詳細は、後述する。以下、ステップＳ０１０２による変換結果となるデータを「第１データ」という。
【００２５】
＜＜第２テーブルに基づく第２変換例（ステップＳ０１０３）＞＞
ステップＳ０１０３では、組み込みシステムは、第２テーブルに基づいて第２変換を行う。なお、第２テーブルは、いわゆるＬＵＴ等である。第２テーブル及び第２変換の詳細は、後述する。以下、第１データ（ステップＳ０１０２の出力、かつ、ステップＳ０１０３の入力）を第２変換した結果を示すデータを「第２データ」という。
【００２６】
＜＜第３テーブルに基づく第３変換例（ステップＳ０１０４）＞＞
ステップＳ０１０４では、組み込みシステムは、第３テーブルに基づいて第３変換を行う。なお、第３テーブルは、いわゆるＬＵＴ等である。第３テーブル及び第３変換の詳細は、後述する。以下、第２データ（ステップＳ０１０３の出力、かつ、ステップＳ０１０４の入力）を第３変換した結果を示すデータを「第３データ」という。また、第３変換は、１バイトの第２データの入力に対して、４つの第３データを出力、すなわち、４バイト分の第３データを出力する変換である。
【００２７】
＜＜排他的論理和の計算例（ステップＳ０１０５）＞＞
ステップＳ０１０５では、組み込みシステムは、第３データ（ステップＳ０１０３の出力）の排他的論理和を計算する。
【００２８】
なお、ステップＳ０１０１乃至ステップＳ０１０５は、いわゆる「ＳｈｉｆｔＲｏｗｓ」、「ＡｄｄＲｏｕｎｄＫｅｙ関数」、「ＳｕｂＢｙｔｅｓ関数」及び「ＭｉｘＣｏｌｕｍｎｓ関数」をそれぞれ実行した処理結果と同様の処理結果となる処理である。
【００２９】
ステップＳ０１０１乃至ステップＳ０１０５は、ラウンドによって処理内容及び使用されるテーブル等が異なる。したがって、以下の説明では、ラウンドごとに、処理内容及び使用されるテーブルを説明する。
【００３０】
以下の説明では、ラウンド数を「ｒ」で示し、「ｒ＝１」（初期値）から順に「ｒ＝Ｒ」まで、１ラウンド当たりの処理が繰り返し行われる例を説明する。すなわち、最初に行われるラウンド（以下「最初のラウンド」という。）は、「ｒ＝１」とする。そして、最後に行われるラウンド（以下「最後のラウンド」という。）は、「ｒ＝Ｒ」とする。さらに、最初のラウンド及び最後のラウンド以外のラウンド（以下「中間のラウンド」という。）は、「ｒ＝２」乃至「ｒ＝Ｒ−１」とする。なお、鍵長によって、中間のラウンドの数が変化する。
【００３１】
最初のラウンドは、前に行われるラウンドがないラウンドである。一方で、最後のラウンドは、次に行われるラウンドがないラウンドである。これに対して、中間のラウンドは、前後に行われるラウンドがあるラウンドである。これらの点に対応するため、最初のラウンド、中間のラウンド及び最後のラウンドで行われるそれぞれの処理は、処理内容が異なる。そのため、以下の説明では、最初のラウンドと、中間のラウンドと、最後のラウンドとで行われるそれぞれの処理を分けて模式図を用いて説明する。
【００３２】
＜＜最初のラウンドの処理例＞＞
図３は、本発明の一実施形態に係る最初のラウンドの処理の一例を説明する模式図である。
【００３３】
＜＜選択例＞＞
図示する処理では、最初のラウンドにおいて、まず、１ラウンド当たりの処理対象となる１６バイトのデータ（以下「入力データＤＩＮ」という。）から、組み込みシステムは、４つの１バイトのデータ（以下「１バイトデータ」という。）を選択する（図２に示すステップＳ０１０１）。そして、図は、組み込みシステムが、サブラウンドデータが有する４つのそれぞれの１バイトデータに対してそれぞれ行う処理の例を示す。
【００３４】
具体的には、図示する例は、「０」乃至「１５」と示す１６個の１バイトデータから構成される入力データＤＩＮから、第０番目入力データＤＩＮ０、第５番目入力データＤＩＮ５、第１０番目入力データＤＩＮ１０及び第１５番目入力データＤＩＮ１５の１バイトデータが、それぞれ選択される例である（図２に示すステップＳ０１０１）。
【００３５】
以下、サブラウンドデータのうち、第０番目入力データＤＩＮ０の１バイトデータに対する処理を例に説明する。
【００３６】
＜＜第１テーブル及び第１変換例＞＞
まず、組み込みシステムは、あらかじめ記憶される第１テーブルＥに基づいて、第０番目入力データＤＩＮ０を第１変換する（図２に示すステップＳ０１０２）。また、第１テーブルＥは、あらかじめ定まる第１乱数成分と、鍵データとの排他的論理和を計算した混合成分「ｍ'１，０」を含む。なお、「ｍ'１，０」の添え字は、（ラウンド数（ｒ），データ番号（「０」乃至「１５」））を示す。
【００３７】
すなわち、第１テーブルＥに基づく変換が行われると、変換対象となる第０番目入力データＤＩＮ０と、「ｍ'１，０」との排他的論理和が計算され、排他的論理和の計算結果を示す第１データＤ１が生成される。なお、第１テーブルＥは、あらかじめ生成され、組み込みシステムに記憶される。また、第１乱数成分、すなわち、「ｍ」は、あらかじめ乱数を発生させる関数等を実行して生成される成分である。
【００３８】
また、混合成分には、鍵データが含まれるが、混合成分では、鍵データ成分は、第１乱数成分との排他的論理和が計算されているため、鍵データが難読化された状態である。したがって、第１テーブルＥを解析しても、鍵データが取得されにくい状態である。
【００３９】
＜＜第２テーブル及び第２変換例＞＞
次に、組み込みシステムは、第１変換によって生成される第１データＤ１に対して、第２テーブルＴ１，０に基づいて第２変換を行う（図２に示すステップＳ０１０３）。図示するように、第２テーブルＴ１，０には、第１テーブルＥに含まれる第１乱数成分を打ち消す打消成分「ｍ１，０」と、Ｓ−Ｂｏｘ変換に相当する変換成分「Ｓ」と、第１関数による関数変換成分「ｇ０」とが含まれる。すなわち、関数変換成分「ｇ０」は、８ビット入出力の任意の変換であり、組み合わせは、２５６！通り存在する。なお、「ｍ１，０」及び「Ｔ１，０」の添え字は、（ラウンド数（ｒ），データ番号（「０」乃至「１５」））を示す。すなわち、第２テーブルＴ１，０に基づいて第２変換されると、第１乱数成分を打ち消す計算、Ｓ−Ｂｏｘ変換、つまり、「ＳｕｂＢｙｔｅｓ関数」による変換及び第１関数による変換が行われた場合と等価の実行結果となる。
【００４０】
例えば、打消成分「ｍ１，０」は、第１乱数成分の排他的論理和を計算するのと等価となる成分である。具体的には、１バイトデータに対して第１変換が行われると、１バイトデータは、第１乱数成分との排他的論理和が計算された、第１乱数成分を含む状態となり、第１データＤ１となる。すなわち、第１データＤ１には、第１乱数成分が含まれる。さらに、第１データＤ１には、同様にして、鍵データ成分が含まれる。
【００４１】
次に、第１乱数成分を含む第１データＤ１に対して第２変換が行われると、第１データＤ１は、第１乱数成分との排他的論理和が更に計算される状態となる。データは、ある値との排他的論理和が計算され、再度、同一の値で排他的論理和が計算されると、値は、元に戻る性質がある。したがって、第１変換で第１乱数成分が含まれるようになっても、第２変換で更に第１乱数成分との排他的論理和が計算されると、第１データＤ１に含まれる第１乱数成分は、打ち消されることになる。したがって、第１データＤ１に対して第１変換が行われると、１バイトデータに対して、Ｓ−Ｂｏｘ変換（図では「Ｓ」成分で示す。）と、第１関数、すなわち、「ｇ」とが実行された結果と等価になる。
【００４２】
なお、第２テーブルＴ１，０は、あらかじめ生成され、組み込みシステムに記憶される。そして、第２変換が行われると、第１データＤ１は、変換され、第２データＤ２が生成される。
【００４３】
また、図では、排他的論理和計算によって成分を加える場合を「排他的論理和計算ＸＲ」で示す。つまり、排他的論理和計算ＸＲが併記されている成分は、排他的論理和計算によって加えられることを示す。以下、同様に記載する。
【００４４】
＜＜第３テーブル及び第３変換例＞＞
続いて、組み込みシステムは、第２変換によって生成される第２データＤ２に対して、第３テーブルＭ０に基づいて第３変換を行う（図２に示すステップＳ０１０４）。図示するように、第３テーブルＭ０には、第２テーブルＴ１，０における第１関数とは逆関数となる逆関数変換成分「ｇ０−１」と、ＡＥＳ既約多項式に基づく乗算成分「・０３」、「・０２」及び「・０１」（数値は係数を示す。）と、第２乱数成分「ｉ０，０」、「ｉ０，１」、「ｉ０，２」及び「ｉ０，３」と、データに含まれるビットを並び替える並替成分「ｈ０」、「ｈ１」、「ｈ２」及び「ｈ３」とが含まれる。
【００４５】
なお、図示するように、第３変換は、１バイトの第２データＤ２が入力されると、４つの１バイトの第３データＤ３を出力する変換である。
【００４６】
また、「Ｍ０」の添え字は、テーブル番号を示す。すなわち、テーブル番号が異なると、テーブルは、それぞれ異なるテーブルが使用されることを示し、一方で、テーブル番号が同一の場合には、同一のテーブルが共通して使用されることを示す。
【００４７】
なお、第２乱数成分は、あらかじめ乱数を発生させる関数等を実行して生成される成分である。
【００４８】
また、「ｇ０−１」と、「ｇ０」とは、関数と逆関数の関係である。つまり、「ｇ０−１」と、「ｇ０」とは、関数「ｇ０」による実行結果に更に逆関数「ｇ０−１」を実行すると、関数「ｇ０」の入力の状態に戻る関係である。したがって、関数「ｇ０」が実行されたデータであっても、逆関数「ｇ０−１」が実行されると、データは、関数「ｇ０」が実行される前の状態と同様となる。関数と逆関数の関係の詳細は、後述する。
【００４９】
＜＜排他的論理和計算例＞＞
さらに、組み込みシステムは、第３変換によって生成される第３データＤ３に対して、排他的論理和計算ＰＸを行う（図２に示すステップＳ０１０５）。図示するように、第０番目入力データＤＩＮ０、第５番目入力データＤＩＮ５、第１０番目入力データＤＩＮ１０及び第１５番目入力データＤＩＮ１５に対して、第３変換がそれぞれ行われると、それぞれの第３データＤ３が４つずつ生成される。そして、それぞれの第３データＤ３から１つずつ第３データＤ３が選ばれ、排他的論理和計算ＰＸが行われると、第０番目出力データＤＯＵＴ０、第１番目出力データＤＯＵＴ１、第２番目出力データＤＯＵＴ２及び第３番目出力データＤＯＵＴ３が、組み込みシステムによってそれぞれ生成される。また、図２に示すステップＳ０１０１乃至ステップＳ０１０５が４回繰り返し行われると、出力データＤＯＵＴが生成される。
【００５０】
＜＜中間のラウンドの処理例＞＞
図４は、本発明の一実施形態に係る中間のラウンドの処理の一例を説明する模式図である。なお、図示する処理は、中間のラウンドのうち、図３に示す処理（ｒ＝１）の次に行われるラウンド（ｒ＝２）である例とする。以下、図３に示す処理と異なる点を中心に説明する。
【００５１】
図示する処理は、図３に示す処理と比較すると、第２テーブルＴｍｄ，０、Ｔｍｄ，５、Ｔｍｄ，１０及びＴｍｄ，１５に、並替成分の逆成分となる「ｈ０−１」、「ｈ１−１」、「ｈ２−１」及び「ｈ３−１」と、第２乱数成分「ｉ０，０」、「ｉ０，１」、「ｉ０，２」及び「ｉ０，３」の排他的論理和計算ＸＲ成分がそれぞれ含まれる点が異なる。
【００５２】
まず、「ｈ０−１」、「ｈ１−１」、「ｈ２−１」及び「ｈ３−１」は、図３に示す並替成分「ｈ０」、「ｈ１」、「ｈ２」及び「ｈ３」とは逆の関係にある成分であり、例えば、並替成分「ｈ０」によって並び替えられたデータに対して、「ｈ０−１」による並び替えが行われると、データが最初のラウンドの並替成分「ｈ０」によって並び替えられる前の状態に戻る。
【００５３】
前のラウンド（最初のラウンド、ｒ＝１）では、第３テーブルに、並替成分「ｈ０」が含まれるため、次のラウンド（中間のラウンド、ｒ＝２）では、第０番目入力データＤＩＮ０は、並替成分「ｈ０」による並び替えが行われた状態である。そこで、第２テーブルＴｍｄ，０、Ｔｍｄ，５、Ｔｍｄ，１０及びＴｍｄ，１５に、並替成分の逆成分となる「ｈ０−１」、「ｈ１−１」、「ｈ２−１」及び「ｈ３−１」が含まれると、組み込みシステムは、本ラウンドの第２変換によって、前のラウンドにおける第３テーブルに含まれる並替成分による並び替えが行われる前の状態にすることができる。
【００５４】
次に、図４に示す（本のラウンドの）第２乱数成分「ｉ０，０」、「ｉ０，１」、「ｉ０，２」及び「ｉ０，３」は、図３に示す（前のラウンドの）第２乱数成分「ｉ０，０」、「ｉ０，１」、「ｉ０，２」及び「ｉ０，３」と同様の成分である。例えば、第２乱数成分「ｉ０，０」が排他的論理和計算ＸＲが加えられたデータに対して、第２乱数成分「ｉ０，０」の排他的論理和計算ＸＲが更に計算されると、データは、含まれる第２乱数成分が打ち消される。
【００５５】
前のラウンド（最初のラウンド、ｒ＝１）では、第３テーブルに、第２乱数成分「ｉ０，０」が含まれるため、次のラウンド（中間のラウンド、ｒ＝２）では、第０番目入力データＤＩＮ０は、第２乱数成分「ｉ０，０」との排他的論理和計算ＸＲが行われた状態である。そこで、第２テーブルＴｍｄ，０、Ｔｍｄ，５、Ｔｍｄ，１０及びＴｍｄ，１５に、第２乱数成分の打消成分となる第２乱数成分「ｉ０，０」、「ｉ０，１」、「ｉ０，２」及び「ｉ０，３」の排他的論理和計算ＸＲ成分が含まれると、組み込みシステムは、第２変換によって、前のラウンドにおける第３変換による第２乱数成分を打ち消すことができる。
【００５６】
したがって、最初のラウンドとは異なる第２テーブルが、中間のラウンド用に生成され、あらかじめ組み込みシステムに記憶される。一方で、第３テーブルＭ０、Ｍ１、Ｍ２及びＭ３は、最初のラウンド（ｒ＝１）と、中間のラウンド（ｒ＝１乃至Ｒ−１）とで、共通して使用されるのが望ましい。このように、第３テーブルＭ０、Ｍ１、Ｍ２及びＭ３が共通して使用されると、組み込みシステムは、各ラウンド用にそれぞれの第３テーブルを記憶する場合と比較して、第３テーブルのデータ容量を小さくすることができる。
【００５７】
＜＜最後のラウンドの処理例＞＞
図５は、本発明の一実施形態に係る最後のラウンドの処理の一例を説明する模式図である。なお、図示する処理は、図３及び図４に示す処理と比較すると、第１テーブルＥに基づく第１変換（図２に示すステップＳ０１０２）、第３テーブルＭ０、Ｍ１、Ｍ２並びにＭ３に基づく第３変換（図２に示すステップＳ０１０４）及び排他的論理和計算（図２に示すステップＳ０１０５）がない点が異なる。また、図４に示す中間のラウンドの処理と比較して、図示する処理では、「ＡｄｄＲｏｕｎｄＫｅｙ関数」に相当する処理、すなわち、鍵データ「ｋ」との排他的論理和計算が２回行われる点が異なる。
【００５８】
図３乃至図５に示す処理を順に行うと、組み込みシステムは、入力データＤＩＮをＡＥＳ方式に準じて暗号化することができる。
【００５９】
＜＜ホワイトボックスクリプトグラフィ、変換及び逆変換について＞＞
図６は、ホワイトボックスクリプトグラフィの一例の原理を示す概念図である。図示するように、暗号化処理は、入力データ（平文の状態のデータである。）に対して、「拡大鍵」等の鍵データを用いて暗号化し、出力データ（暗号文の状態のデータである。）を生成する処理である。そして、暗号化処理において、まず、鍵データに対してアクセスを難しくするためのブラックボックス（Ｂｌａｃｋ−Ｂｏｘ）的アプローチがある。一方で、暗号化処理において、鍵データに対してアクセスされても、鍵データと認識されるのを難しくするためのホワイトボックス（Ｗｈｉｔｅ−Ｂｏｘ）的アプローチがある。ホワイトボックスクリプトグラフィは、ホワイトボックス的アプローチの１つの方法である。
【００６０】
図示するように、ホワイトボックスクリプトグラフィでは、暗号化における各処理と鍵データ（拡大鍵）とを合成して、演算をＬＵＴによる変換とする。すなわち、演算と等価の結果となる変換ができるＬＵＴが用いられる。特に、本発明に係る実施形態のように、複数の演算を１つのＬＵＴで行うように、１つのＬＵＴに複数の成分が含まれると、複数の演算を行う場合よりも、１回の変換で複数の演算と等価の処理を行うことができるため、組み込みシステムは、処理負荷を小さくできる。また、ＬＵＴ等のテーブルによる変換が用いられるのは、演算装置パワーが比較的小さいことが多い、組み込みシステム等には、より望ましい。そして、ホワイトボックスクリプトグラフィでは、図示するように、各処理で（図では「処理Ａ」と「処理Ｂ」の間）で、変換と、逆変換が行われる。例えば、図３及び図４に示す処理では、「ｇ０−１」と、「ｇ０」との関係である。
【００６１】
このように、ホワイトボックスクリプトグラフィは、変換と逆変換を行う成分をＬＵＴに含ませることにより、鍵データを難読化する方法である。すなわち、図示するように、変換に使用されるテーブルは、「変換」と、「逆変換」と、「処理」とを１回の変換で行うように生成される。これを模式図で示すと、例えば、以下のように示せる。
【００６２】
図７は、ホワイトボックスクリプトグラフィにおけるラウンド処理の一例を示す模式図である。図示するようなラウンド処理が、鍵長に合わせて繰り返し行われる。図示するように、１ラウンド当たりの処理では、サブラウンドデータに対して、「ＳｈｉｆｔＲｏｗｓ関数」、「ＡｄｄＲｏｕｎｄＫｅｙ関数」、「ＳｕｂＢｙｔｅｓ関数」及び「ＭｉｘＣｏｌｕｍｎｓ関数」の処理が行われる。一方で、図２に示す全体処理が行われる場合も、図示する処理が行われた場合と、等価の処理結果となる。すなわち、図２に示す全体処理が行われると、ＡＥＳ方式に準じた暗号化が行われた結果となる。
【００６３】
＜＜比較例＞＞
図８は、比較例に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図（その１）である。図は、入力データＤＩＮのうち、４つの１バイトのデータに対して処理が行われ、出力データＤＯＵＴのうち、４つの１バイトのデータが生成される１サブラウンド当たりの処理の一例を示す。また、図示する処理、すなわち、１ラウンド当たりの処理では、４サブラウンドの処理が繰り返し行われる。以下、１サブラウンド当たりの処理を中心に説明する。
【００６４】
ステップＳ０２０１では、４つの１バイトのデータが選ばれる。また、ＦＩＰＳ１９７で定められている「ＳｈｉｆｔＲｏｗｓ関数」を実行した処理結果と、ステップＳ０２０１を行った処理結果とは、同様の結果となる。
【００６５】
ステップＳ０２０２では、ステップＳ０２０１で選ばれる１バイトのデータが、いわゆるＴ−Ｂｏｘ等によって変換され、変換されたデータが出力される。
【００６６】
ステップＳ０２０３では、ステップＳ０２０２で出力されるデータに対して、いわゆるＸＯＲ−Ｔａｂｌｅｓ等のテーブルによって変換が行われ、図示するように、排他的論理和の計算が行われた場合と同様の処理結果が出力される。
【００６７】
図示するように、ＦＩＰＳ１９７で定められている「ＡｄｄＲｏｕｎｄＫｅｙ関数」、「ＳｕｂＢｙｔｅｓ関数」及び「ＭｉｘＣｏｌｕｍｎｓ関数」をそれぞれ実行した処理結果と、ステップＳ０２０２及びステップＳ０２０３をそれぞれ行った処理結果とは、同様の結果となる。
【００６８】
図示するように、１サブラウンド当たりの処理が行われると、ステップＳ０２０３の出力である４つの１バイトのデータが、出力データＤＯＵＴのうちの「０」乃至「３」のデータとして、生成される。
【００６９】
また、比較例の処理は、以下のように示せる。
【００７０】
図９は、比較例に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図（その２）である。サブラウンド処理におけるＬＵＴの入力及び出力の関係は、図示するように示せる。また、この比較例に用いるＬＵＴのデータ容量は、以下のようになる。
【００７１】
図１０は、比較例に係るＬＵＴのデータ容量の一例を示す表である。図示するように、データ容量は、鍵長、すなわち、行われるラウンド数に応じて異なる。
【００７２】
＜＜本発明に係る実施形態において使用されるＬＵＴのデータ容量＞＞
図３及び図４に示すように、本発明に係る実施形態では、最初のラウンドと、中間のラウンドにおいて、第３テーブルＭ０、Ｍ１、Ｍ２及びＭ３は、共通して使用するのが望ましい。つまり、本発明に係る実施形態では、第３テーブルは、最初のラウンドと、中間のラウンドとで共通して使用することによって、４個とすることができる。
【００７３】
第３テーブルは、１個当たり１キロバイトのデータ容量である。したがって、全ラウンド分を合計すると、第３テーブルのデータ容量は、「１キロバイト／個×４個＝４キロバイト」である。
【００７４】
次に、図３乃至図５に示すように、本発明に係る実施形態では、最初のラウンドと、中間のラウンドと、最後のラウンドでは、第２テーブルは、それぞれ異なるデータである。まず、本発明に係る実施形態では、最初のラウンド用の第２テーブルは、「４個／サブラウンド×４サブラウンド＝１６個」である。また、第２テーブルは、１個当たり２５６バイト（＝１／４キロバイト）のデータ容量である。したがって、最初のラウンド分を合計すると、第２テーブルのデータ容量は、「１／４キロバイト／個×１６個＝４キロバイト」である。
【００７５】
同様に、中間のラウンド用の第２テーブルは、「４個／サブラウンド×４サブラウンド＝１６個」である。また、第２テーブルは、１個当たり２５６バイト（＝１／４キロバイト）のデータ容量である。したがって、中間のラウンド分を合計すると、第２テーブルのデータ容量は、「１／４キロバイト／個×１６個＝４キロバイト」である。また、最後のラウンド分も、合計すると、第２テーブルのデータ容量は、「１／４キロバイト／個×１６個＝４キロバイト」である。
【００７６】
そして、第１テーブルは、鍵データの鍵長によってデータ容量が異なる。例えば、鍵長が１２８ビットである場合には、最後のラウンド用の第２テーブルに２個分の鍵データ（図５では「ｋ」で示す。）が含まれるため、第１テーブルのデータ容量は、「１７６バイト−（１６バイト×２個）＝１４４バイト＝０．１４４キロバイト」となる。したがって、鍵長が１２８ビットである場合には、データ容量は、「４キロバイト（第３テーブル）＋４キロバイト（最初のラウンド）＋４キロバイト（中間のラウンド）＋４キロバイト（最後のラウンド）＋０．１４４キロバイト（第１テーブル）＝１６．１４４キロバイト」となる。
【００７７】
また、鍵長が２５６ビットである場合には、第１テーブルのデータ容量は、「２４０バイト−（１６バイト×２個）＝２０８バイト＝０．２０８キロバイト」となる。したがって、鍵長が２５６ビットである場合には、データ容量は、「４キロバイト（第３テーブル）＋４キロバイト（最初のラウンド）＋４キロバイト（中間のラウンド）＋４キロバイト（最後のラウンド）＋０．２０８キロバイト（第１テーブル）＝１６．２０８キロバイト」となる。
【００７８】
なお、第２テーブルは、最初のラウンド及び中間のラウンドで、それぞれ共通して使用されてもよい。例えば、最初のラウンドでは、第２テーブルは、すべて第２テーブルＴ１，０が使用されてもよい。このようにすると、最初のラウンド用に用意される第２テーブルは、１個となる。同様に、中間のラウンドで、同一の第２テーブルが共通して使用される。このようにすると、中間のラウンド用に用意される第２テーブルも、４個となる。
【００７９】
また、最後のラウンドでは、鍵データ「ｋＲ」の排他的論理和計算（図５）及び鍵データ「ｋＲ＋１」の排他的論理和計算（図５）を中間のラウンドのように、「ｍ'」とすると、中間ラウンドと同様に、第２テーブルを共通して使用することができる。このようにすると、「３キロバイト」データ容量を減らすことができる。
【００８０】
このように、最初のラウンド、中間のラウンド及び最後のラウンドで、それぞれ４個ずつ第２テーブルを用意し、各ラウンドでは、第２テーブルを共通して使用してもよい。このようにすると、第２テーブルのデータ容量を更に小さくすることができる。具体的には、上記の例と比較すると、更に最初のラウンド用の第２テーブルが１２個分、かつ、中間のラウンド用の第２テーブルが１２個分、最後のラウンド用の第２テーブルが１２個分のデータ容量を削減できる。すなわち、第２テーブルを更に共通して使用することで、組み込みシステムは、１２個×３（最初・中間・最後）の合計３６個分のデータ容量（９キロバイト）を削減することができ、組み込みシステムは、データ容量を「７．２５キロバイト」とすることができる。なお、鍵長が１２８ビットの場合には、組み込みシステムは、データ容量を「７．１８キロバイト」とすることができる。
【００８１】
＜＜３．組み込みシステムの機能構成例＞＞
図１１は、本発明の一実施形態に係る組み込みシステムの機能構成の一例を示す機能ブロック図である。図示するように、組み込みシステム１は、選択部ＦＮ１と、第１変換部ＦＮ２と、第２変換部ＦＮ３と、第３変換部ＦＮ４と、排他的論理和計算部ＦＮ５とを含む。
【００８２】
選択部ＦＮ１は、入力データＤＩＮから４バイトのサブラウンドデータを選択する。なお、入力データＤＩＮは、図３に示すように、１６バイトのデータである。また、選択部ＦＮ１によって、サブラウンドデータが選択されると、ＦＩＰＳ１９７で定められている「ＳｈｉｆｔＲｏｗｓ関数」を実行した処理結果と同様の処理結果が得られる。さらに、選択部ＦＮ１は、例えば、演算装置ＨＷ１（図１）等によって実現される。
【００８３】
第１変換部ＦＮ２は、サブラウンドデータを１バイトデータＤ１Ｂごとに、第１テーブルＥによる変換によって、第１データＤ１を生成する。第１テーブルＥには、第１乱数成分と、鍵データとの排他的論理和に基づく混合成分が含まれる。したがって、１バイトデータＤ１Ｂが第１テーブルＥに基づいて第１変換されると、１バイトデータＤ１Ｂと、混合成分との排他的論理和の計算結果に相当する第１データＤ１が生成される。例えば、第１変換部ＦＮ２は、演算装置ＨＷ１（図１）等によって実現される。
【００８４】
第２変換部ＦＮ３は、第２テーブルＴ（以下、添え字は、省略する。）に基づいて、第１データＤ１を変換して、第２データＤ２を生成する。図３に示すように、最初のラウンドでは、第２テーブルＴには、第１乱数成分を打ち消す打消成分が含まれる。さらに、最初のラウンドでは、第２テーブルＴには、Ｓ−Ｂｏｘ変換に相当する変換成分が含まれる。さらにまた、最初のラウンドでは、第２テーブルＴには、第１関数による関数変換成分が含まれる。また、図４及び図５に示すように、中間のラウンド及び最後のラウンドでは、前のラウンドの第３テーブルに含まれる並替成分による並び替えを元に戻す成分及び前のラウンドの第３テーブルに含まれる第２乱数成分を打ち消す打消成分が含まれる。例えば、第２変換部ＦＮ３は、演算装置ＨＷ１（図１）等によって実現される。
【００８５】
第３変換部ＦＮ４は、第３テーブルＭ（以下、添え字は、省略する。）に基づいて、第２データＤ２を変換して、複数の第３データＤ３を生成する。図３及び図４に示すように、第３テーブルＭには、第２テーブルＴに含まれる第１関数とは逆関数となる逆関数変換成分が含まれる。また、第３テーブルＭには、ＡＥＳ既約多項式に基づく乗算となる乗算成分が含まれる。さらに、第３テーブルＭには、第２乱数成分が含まれる。さらに、第３テーブルＭには、データに含まれるビットを並び替える並替成分が含まれる。例えば、第３変換部ＦＮ４は、演算装置ＨＷ１（図１）等によって実現される。
【００８６】
排他的論理和計算部ＦＮ５は、第３データＤ３の排他的論理和を計算する。例えば、排他的論理和計算部ＦＮ５は、演算装置ＨＷ１（図１）等によって実現される。
【００８７】
選択部ＦＮ１による選択によって、組み込みシステムは、「ＳｈｉｆｔＲｏｗｓ関数」を実行した処理結果と同様の処理結果を得ることができる。また、第１テーブルＥに鍵データが含まれるため、組み込みシステムは、「ＡｄｄＲｏｕｎｄＫｅｙ関数」を実行した処理結果と同様の処理結果を得ることができる。さらに、第２テーブルＴに「Ｓ」で示す変換成分が含まれるため、組み込みシステムは、「ＳｕｂＢｙｔｅｓ関数」を実行した処理結果と同様の処理結果を得ることができる。さらにまた、第３テーブルＭに「・０３等」で示す乗算成分が含まれ、かつ、排他的論理和計算部ＦＮ５によって排他的論理和が計算されるため、組み込みシステムは、「ＭｉｘＣｏｌｕｍｎｓ関数」を実行した処理結果と同様の処理結果を得ることができる。したがって、図示する構成とすると、ＦＩＰＳ１９７で定められている「ＡｄｄＲｏｕｎｄＫｅｙ」、「ＳｕｂＢｙｔｅｓ」及び「ＭｉｘＣｏｌｕｍｎｓ」の関数を実行した処理結果と同様の処理結果が得られ、ＡＥＳ方式に準拠した暗号化を行うことができる。
【００８８】
また、本発明は、使用できる記憶容量等に係る制約が多い組み込みシステムに適用される形態が望ましい。さらに、組み込みシステムは、プログラム及びデータの解読を難しくするため、図１に示すように、演算装置にメモリが内蔵されるハードウェア構成であるのが望ましい。
【００８９】
組み込みシステムは、例えば、いわゆるスマートメータ（Ｓｍａｒｔ  Ｍｅｔｅｒ）等に用いられる。そして、スマートメータ等は、外部装置等とデータを送受信する場合が多い。この場合には、スマートメータ等は、組み込みシステムによって、ＡＥＳ方式で暗号化してデータを送受信できる。これによって、送受信されるデータは、暗号化されているため、スマートメータは、データの送受信においてセキュリティを向上させることができる。
【００９０】
＜＜変形例＞＞
組み込みシステムは、ＡＥＳ方式によって、暗号化を行うに限られない。例えば、組み込みシステムは、各処理の逆関数に相当する処理を用いて、復号化を行ってもよい。なお、例えば、「ＳｈｉｆｔＲｏｗｓ」関数の逆関数は、「ＩｎｖＳｈｉｆｔＲｏｗｓ」関数等である。他にも、「ＳｕｂＢｙｔｅｓ」関数の逆関数は、「ＩｎｖＳｕｂＢｙｔｅｓ」関数であり、「ＭｉｘＣｏｌｕｍｎｓ」関数の逆関数は、「ＩｎｖＭｉｘＣｏｌｕｍｎｓ」関数である。
【００９１】
組み込みシステムは、スマートメータに限られない。例えば、組み込みシステムは、組込機器全般、クラウド等によって他の装置と通信を行う装置、ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）に用いられる各装置又はこれらを組み合わせた１以上の情報処理装置を有する情報処理システム等であってもよい。
【００９２】
また、組み込みシステムは、１つの情報処理装置によって実現される構成に限られない。即ち、組み込みシステムは、２つ以上の情報処理装置を有する情報処理システムによって実現されてもよい。なお、情報処理システムでは、各処理の一部又は全部が分散、冗長、並列又はこれらを組み合わせるように、処理が行われてもよい。
【００９３】
さらに、本発明に係る実施形態は、情報処理装置又は情報処理システム等のコンピュータに情報処理方法を実行させるためのプログラムによって実現されてもよい。すなわち、プログラムは、本発明に係る情報処理方法をコンピュータに実行させるためのプログラムであって、プログラミング言語等によって記述されるコンピュータプログラムである。
【００９４】
また、プログラムは、ＤＶＤ若しくはブルーレイ（登録商標）等の光ディスク、フラッシュメモリ、磁気ディスク又は光磁気ディスク等の記録媒体に記憶され、頒布されてもよい。さらに、プログラムは、電気通信回線等を介して、頒布されてもよい。
【００９５】
以上、本発明の好ましい実施例について詳述したが、本発明は、係る特定の実施形態に限定されるものではない。すなわち、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形又は変更が可能である。
【符号の説明】
【００９６】
１  組み込みシステム
ＤＩＮ  入力データ
ＤＯＵＴ  出力データ
Ｅ  第１テーブル
Ｔ１，０、Ｔ１，５、Ｔ１，１０、Ｔ１，１５、Ｔｍｄ，０、Ｔｍｄ，５、Ｔｍｄ，１０、Ｔｍｄ，１５、ＴＲ，０、ＴＲ，５、ＴＲ，１０、ＴＲ，１５  第２テーブル
Ｍ０、Ｍ１、Ｍ２、Ｍ３  第３テーブル
ＦＮ１  選択部
ＦＮ２  第１変換部
ＦＮ３  第２変換部
ＦＮ４  第３変換部
ＦＮ５  排他的論理和計算部
【図１】
2017216619.tif 000003
【図２】
2017216619.tif 000004
【図３】
2017216619.tif 000005
【図４】
2017216619.tif 000006
【図５】
2017216619.tif 000007
【図６】
2017216619.tif 000008
【図７】
2017216619.tif 000009
【図８】
2017216619.tif 000010
【図９】
2017216619.tif 000011
【図１０】
2017216619.tif 000012
【図１１】
2017216619.tif 000013
【手続補正書】
【提出日】平成29年3月13日(2017.3.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
入力データをＡＥＳ方式で暗号化又は復号化する情報処理装置であって、
処理対象となる前記入力データから４バイトのサブラウンドデータを選択する選択部と、
第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含む第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換部と、
前記第１テーブルとは異なる第２テーブルに基づいて、前記第１データを第２データに変換する第２変換部と、
前記第１テーブル及び前記第２テーブルとは異なる第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換部と、
前記第３データの排他的論理和を計算する排他的論理和計算部と
を含む情報処理装置。
【請求項２】
前記選択が行われると、ＳｈｉｆｔＲｏｗｓ関数を実行した処理結果と同様の処理結果が得られる請求項１に記載の情報処理装置。
【請求項３】
前記第１変換部による第１変換、前記第２変換部による第２変換、前記第３変換部による第３変換及び前記排他的論理和計算部による計算が行われると、ＡｄｄＲｏｕｎｄＫｅｙ関数、ＳｕｂＢｙｔｅｓ関数及びＭｉｘＣｏｌｕｍｎｓ関数をそれぞれ実行した処理結果と同様の処理結果となる請求項１に記載の情報処理装置。
【請求項４】
最初のラウンドと、中間のラウンドと、最後のラウンドで異なる前記第２テーブルを使用する請求項１に記載の情報処理装置。
【請求項５】
前記最初のラウンド及び前記中間のラウンドで使用される前記第２テーブルには、前記第１乱数成分を打ち消す打消成分と、Ｓ−Ｂｏｘ変換に相当する変換成分と、第１関数による関数変換成分とが少なくとも含まれ、
前記最初のラウンド及び前記中間のラウンドで使用される前記第３テーブルには、前記第１関数とは逆関数となる逆関数変換成分と、データに対してＡＥＳ既約多項式に基づく乗算となる乗算成分と、前記第１関数とは異なる第２乱数成分と、データに含まれるビットを並び替える並替成分とが含まれる請求項４に記載の情報処理装置。
【請求項６】
前記第３テーブルは、各ラウンドで共通して使用する請求項１に記載の情報処理装置。
【請求項７】
前記第３テーブルは、４個使用される請求項６に記載の情報処理装置。
【請求項８】
前記最初のラウンド及び前記中間のラウンドでは、それぞれ異なる前記第２テーブルが１個ずつ使用される請求項４又は５に記載の情報処理装置。
【請求項９】
入力データをＡＥＳ方式で暗号化又は復号化し、かつ、演算装置及び記憶装置を有する情報処理装置が行う情報処理方法であって、
前記演算装置が、処理対象となる前記入力データから４バイトのサブラウンドデータを選択する選択手順と、
前記演算装置が、第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含み、かつ、前記記憶装置が記憶する第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換手順と、
前記演算装置が、前記第１テーブルとは異なり、かつ、前記記憶装置が記憶する第２テーブルに基づいて、前記第１データを第２データに変換する第２変換手順と、
前記演算装置が、前記第１テーブル及び前記第２テーブルとは異なり、かつ、前記記憶装置が記憶する第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換手順と、
前記演算装置が、前記第３データの排他的論理和を計算する排他的論理和計算手順と
を含む情報処理方法。
【請求項１０】
入力データをＡＥＳ方式で暗号化又は復号化し、かつ、演算装置及び記憶装置を有するコンピュータに情報処理方法を実行させるためのプログラムであって、
前記演算装置が、処理対象となる前記入力データから４バイトのサブラウンドデータを選択する選択手順と、
前記演算装置が、第１乱数成分と、鍵データとの排他的論理和に基づく混合成分を含み、かつ、前記記憶装置が記憶する第１テーブルに基づいて、前記サブラウンドデータを１バイトデータごとに、前記１バイトデータと、前記混合成分との排他的論理和となる第１データを生成する第１変換手順と、
前記演算装置が、前記第１テーブルとは異なり、かつ、前記記憶装置が記憶する第２テーブルに基づいて、前記第１データを第２データに変換する第２変換手順と、
前記演算装置が、前記第１テーブル及び前記第２テーブルとは異なり、かつ、前記記憶装置が記憶する第３テーブルに基づいて、前記第２データを複数の第３データに変換する第３変換手順と、
前記演算装置が、前記第３データの排他的論理和を計算する排他的論理和計算手順と
を実行させるためのプログラム。