(57)【特許請求の範囲】
【請求項１】
入力データをＡＥＳ方式で暗号化又は復号化する情報処理装置であって、
前記入力データのうち、４バイトのサブラウンドデータを選択する選択部と、
前記サブラウンドデータを１バイトのデータごとに、第１テーブルに基づいてそれぞれ１ステップで置換して難読化し、それぞれの置換データを生成する置換部と、
前記置換データのビットを並び替え、かつ、所定の値との排他的論理和となるように、第２テーブルに基づいて１ステップで前記置換データを置換して並替データを生成する並び替え部と、
前記並替データの排他的論理和を計算する排他的論理和計算部と
を含む情報処理装置。
【請求項２】
前記入力データは、１６バイトの１ラウンドデータである請求項１に記載の情報処理装置。
【請求項３】
前記第１テーブルに基づく置換には、第１変換が含まれ、前記第２テーブルに基づく置換には、前記第１変換に対する第１逆変換が含まれる請求項１又は２に記載の情報処理装置。
【請求項４】
前記第２テーブルに基づく置換及び前記排他的論理和の計算には、第２変換が含まれ、前記第１テーブルに基づく置換には、前記第２変換に対する第２逆変換が含まれる請求項１に記載の情報処理装置。
【請求項５】
前記選択が行われると、ＳｈｉｆｔＲｏｗｓ関数を実行した処理結果と同様の処理結果が得られる請求項１に記載の情報処理装置。
【請求項６】
前記第１テーブルに基づく置換が行われると、ＡｄｄＲｏｕｎｄＫｅｙ関数及びＳｕｂＢｙｔｅｓ関数をそれぞれ実行した処理結果と同様の処理結果が含まれる請求項１に記載の情報処理装置。
【請求項７】
前記第２テーブルに基づく置換及び前記排他的論理和の計算がそれぞれ行われると、ＭｉｘＣｏｌｕｍｎｓ関数を実行した処理結果と同様の処理結果が含まれる請求項１に記載の情報処理装置。
【請求項８】
前記第２テーブルは、サブラウンド、ラウンド、奇数ラウンド又は偶数ラウンドごとに共通して使用される請求項１に記載の情報処理装置。
【請求項９】
前記情報処理装置は、組み込みシステムである請求項１に記載の情報処理装置。
【請求項１０】
前記ＡＥＳ方式は、Ｗｈｉｔｅ  Ｂｏｘ  ＡＥＳである請求項１に記載の情報処理装置。
【請求項１１】
入力データをＡＥＳ方式で暗号化又は復号化し、演算装置及び記憶装置を有する情報処理装置が行う情報処理方法であって、
前記演算装置が、前記入力データのうち、４バイトのサブラウンドデータを選択する選択手順と、
前記演算装置が、前記サブラウンドデータを１バイトのデータごとに、前記記憶装置が記憶する第１テーブルに基づいてそれぞれ１ステップで置換して難読化し、それぞれの置換データを生成する置換手順と、
前記演算装置が、前記置換データのビットを並び替え、かつ、所定の値との排他的論理和となるように、前記記憶装置が記憶する第２テーブルに基づいて前記置換データを１ステップで置換して並替データを生成する並び替え手順と、
前記演算装置が、前記並替データの排他的論理和を計算する排他的論理和計算手順と
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、データの暗号化の方式として、ＦＩＰＳ（Ｆｅｄｅｒａｌ  Ｉｎｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄ）１９７（アメリカ国立標準技術研究所、２００１年公表）で定められているＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式が知られている。
【０００３】
また、スマートカードにおいて、Ｌｏｍｂｏｋ暗号化アルゴリズムのホワイトボックス実装を行うことによって、鍵を保護する方法が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１１−５１２７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＡＥＳにおける従来のホワイトボックス実装では、用いられるテーブルのデータ等の容量が大きいため、テーブルのデータ等を記憶するメモリ容量が大きくなる場合がある。
【０００６】
本発明の１つの側面は、ＡＥＳ方式において、テーブルのデータ等を記憶するメモリ容量を小さくすることを目的とする。
【課題を解決するための手段】
【０００７】
一態様における、入力データをＡＥＳ方式で暗号化又は復号化する情報処理装置は、前記入力データのうち、４バイトのサブラウンドデータを選択する選択部と、前記サブラウンドデータを１バイトのデータごとに、第１テーブルに基づいてそれぞれ１ステップで置換して難読化し、それぞれの置換データを生成する置換部と、前記置換データのビットを並び替え、かつ、所定の値との排他的論理和となるように、第２テーブルに基づいて前記置換データを１ステップで置換して並替データを生成する並び替え部と、前記並替データの排他的論理和を計算する排他的論理和計算部とを含む。
【発明の効果】
【０００８】
ＡＥＳ方式において、テーブルのデータ等を記憶するメモリ容量を小さくすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係る組み込みシステムのハードウェア構成の一例を説明するブロック図である。
【図２】本発明の一実施形態に係る暗号化の１ラウンド当たりの処理の一例を説明するフローチャートである。
【図３】本発明の一実施形態に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図である。
【図４】比較例に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図である。
【図５】本発明の一実施形態に係る暗号化の別の１ラウンド当たりの処理の一例を説明する模式図である。
【図６】本発明の一実施形態に係る組み込みシステムの機能構成の一例を示す機能ブロック図である。
【発明を実施するための形態】
【００１０】
情報処理装置は、例えば、組み込みシステム（Ｅｍｂｅｄｄｅｄ  ｓｙｓｔｅｍ）である。組み込みシステムは、産業機器又は家電製品等に内蔵され、特定の機能を実現するためのシステムである。なお、情報処理装置は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等でもよい。以下、本発明の実施形態を図面に基づいて、情報処理装置が組み込みシステムである例で説明する。
【００１１】
１．組み込みシステムのハードウェア構成例
２．組み込みシステムによる全体処理例
３．組み込みシステムの機能構成例
＜＜１．組み込みシステムのハードウェア構成例＞＞
図１は、本発明の一実施形態に係る組み込みシステムのハードウェア構成の一例を説明するブロック図である。図示するように、組み込みシステム１は、演算装置ＨＷ１と、記憶装置ＨＷ２と、Ｉ／Ｆ（ｉｎｔｅｒｆａｃｅ）ＨＷ３とを有する。
【００１２】
演算装置ＨＷ１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）又はＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。また、演算装置ＨＷ１は、組み込みシステム１が行う処理の全部又は一部を実現するための演算と、データの加工とを行う演算装置並びに組み込みシステム１が有するハードウェアを制御する制御装置である。さらに、演算装置ＨＷ１は、例えば、図示するように、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）ＨＷ１０及びＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＨＷ１１等の記憶装置を内蔵し、記憶領域を実現する。
【００１３】
ＲＡＭＨＷ１０は、演算装置ＨＷ１等が用いるプログラム、設定値又はデータ等を展開及び記憶するために用いられる記憶装置である。
【００１４】
ＲＯＭＨＷ１１は、演算装置ＨＷ１等が用いるプログラム、設定値又はデータ等を記憶する記憶装置である。
【００１５】
記憶装置ＨＷ２は、いわゆるメモリ（ｍｅｍｏｒｙ）等である。また、記憶装置ＨＷ２は、組み込みシステム１が用いるプログラム、設定値又はデータ等を記憶する記憶装置である。なお、記憶装置ＨＷ２は、補助記憶装置等を有してもよい。
【００１６】
Ｉ／ＦＨＷ３は、組み込みシステム１にデータ等を入出力するインタフェースである。Ｉ／ＦＨＷ３は、バス、コネクタ、ケーブル及びドライバ等で実現される。
【００１７】
なお、組み込みシステム１のハードウェア構成は、図示する構成に限られない。例えば組み込みシステム１は、記憶装置ＨＷ２を有さなくともよい。また、組み込みシステム１は、更に演算装置等の補助装置を外部又は内部に有してもよい。
【００１８】
＜＜２．組み込みシステムによる全体処理例＞＞
図２は、本発明の一実施形態に係る暗号化の１ラウンド当たりの処理の一例を説明するフローチャートである。以下、ＡＥＳ方式において、処理の単位となる１６バイト（ｂｙｔｅ）の入力データに対する処理単位（以下「１ラウンド（ｒｏｕｎｄ）」という。）について説明する。なお、１ラウンド当たりの処理は、ＡＥＳ方式に用いられる鍵のビット（ｂｉｔ）長等に合わせて、繰り返し行われる。
【００１９】
図３は、本発明の一実施形態に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図である。具体的には、１ラウンド当たりの処理は、図３に示す「０」乃至「１５」の１バイトのデータが１６個入力された入力データＤ＿ＩＮに対する処理である。さらに、１ラウンド当たりの処理は、１６バイトのうち、選択される４バイトのデータを処理単位（以下「１サブラウンド（ｓｕｂ−ｒｏｕｎｄ）」という。）として処理が繰り返し行われる。つまり、１ラウンド当たりの処理では、４サブラウンドの処理が繰り返し行われる。以下、図２及び図３では、１ラウンド当たりの処理のうち、１サブラウンド当たりの処理を中心に説明する。
【００２０】
＜＜サブラウンドデータの選択例（ステップＳ０１０１）＞＞
図２に示すステップＳ０１０１では、組み込みシステムは、サブラウンドデータを選択する。即ち、図２に示すステップＳ０１０１では、組み込みシステムは、図３に示す入力データＤ＿ＩＮのうち、１サブラウンド当たりの処理対象となる１サブラウンドデータを選択する。
【００２１】
以下、図３に示すように、図２に示すステップＳ０１０１で、入力データＤ＿ＩＮのうち、「０」、「５」、「１０」及び「１５」の１バイトのそれぞれのデータがサブラウンドデータとして選択される例で説明する。そのうち、選択されるサブラウンドデータのうち、「０」の１バイトのデータに対する処理を例に説明する。
【００２２】
＜＜第１テーブルに基づく置換例（ステップＳ０１０２）＞＞
図２に示すステップＳ０１０２では、組み込みシステムは、第１テーブルに基づいて置換を行う。即ち、図３に示すように、組み込みシステムは、入力される「０」の１バイトのデータを第１テーブルに基づいて置換する。第１テーブルに基づいて置換が行われると、置換データが生成される。また、第１テーブルに基づく置換には、第１変換「ｇ」と、第２逆変換「ｆ−１」とが含まれる。なお、ステップＳ０１０２の詳細は、後述する。
【００２３】
＜＜第２テーブルに基づいてビットの並び替え例（ステップＳ０１０３）＞＞
図２に示すステップＳ０１０３では、組み込みシステムは、第２テーブルに基づいてビットを並び替える。なお、ステップＳ０１０３の詳細は、後述する。
【００２４】
＜＜排他的論理和（ＸＯＲ、ｅｘｃｌｕｓｉｖｅ  ｏｒ）の計算例（ステップＳ０１０４）＞＞
図２に示すステップＳ０１０４では、組み込みシステムは、排他的論理和を計算する。なお、ステップＳ０１０４の詳細は、後述する。
【００２５】
また、第２テーブルに基づく置換及び排他的論理和が計算には、第２変換「ｆ」が含まれる。
【００２６】
「０」の１バイトのデータと同様に、入力データＤ＿ＩＮのうち、「５」、「１０」及び「１５」の１バイトのデータに対してステップＳ０１０１乃至ステップＳ０１０４がそれぞれ行われると、出力データＤ＿ＯＵＴのうち、「０」乃至「３」のデータがそれぞれ生成され、１サブラウンドの処理が完了する。
【００２７】
なお、図２に示す処理における各手順が行われる順序は、図２に示す順序に限られない。例えば、ステップＳ０１０１及びステップＳ０１０２が行われる順序は、逆でもよい。また、各手順の一部又は全部は、分散、並列、冗長又はこれらを組み合わせて行われてもよい。
【００２８】
＜＜比較例＞＞
図４は、比較例に係る暗号化の１ラウンド当たりの処理の一例を説明する模式図である。図４は、図３と同様に、入力データＤ＿ＩＮのうち、４つの１バイトのデータに対して処理が行われ、出力データＤ＿ＯＵＴのうち、４つの１バイトのデータが生成される１サブラウンド当たりの処理の一例を示す。図４に示す処理も、図３と同様に、１ラウンド当たりの処理では、４サブラウンドの処理が繰り返し行われる。以下、１サブラウンド当たりの処理を中心に説明する。
【００２９】
ステップＳ０２０１では、４つの１バイトのデータが選ばれる。また、ＦＩＰＳ１９７で定められている「ＳｈｉｆｔＲｏｗｓ」関数を実行した処理結果と、ステップＳ０２０１を行った処理結果とは、同様の結果となる。
【００３０】
ステップＳ０２０２では、ステップＳ０２０１で選ばれる１バイトのデータが、いわゆるＴ−Ｂｏｘ等によって変換され、変換されたデータが出力される。
【００３１】
ステップＳ０２０３では、ステップＳ０２０２で出力されるデータに対して、いわゆるＸＯＲ−Ｔａｂｌｅｓ等のテーブルによって変換が行われ、図示するように、排他的論理和の計算が行われた場合と同様の処理結果が出力される。
【００３２】
図示するように、ＦＩＰＳ１９７で定められている「ＡｄｄＲｏｕｎｄＫｅｙ」関数、「ＳｕｂＢｙｔｅｓ」関数及び「ＭｉｘＣｏｌｕｍｎｓ」関数をそれぞれ実行した処理結果と、ステップＳ０２０２及びステップＳ０２０３をそれぞれ行った処理結果とは、同様の結果となる。
【００３３】
図示するように、１サブラウンド当たりの処理が行われると、ステップＳ０２０３の出力である４つの１バイトのデータが、出力データＤ＿ＯＵＴのうちの「０」乃至「３」のデータとして、生成される。
【００３４】
この比較例では、処理で変換等に用いる各テーブルのデータは、鍵のビット長さが１２８ビットである場合には、合計して５０８キロバイト（ｋ  ｂｙｔｅ）の容量となり、鍵のビット長さが２５６ビットである場合には、合計して７３２キロバイトの容量となる。即ち、鍵のビット長さが１２８ビットである場合には、比較例を実現するのに、５０８キロバイト以上のメモリ領域が必要となり、情報処理装置は、５０８キロバイト以上を記憶できるＲＯＭ等を実装する必要がある。
【００３５】
＜＜本発明の一実施形態に係る組み込みシステムによる各処理の詳細及び処理結果例＞＞
図３に示すように、ＦＩＰＳ１９７で定められている「ＳｈｉｆｔＲｏｗｓ」関数を実行した処理結果に対して、ステップＳ０１０１（図２及び図３）を行うことによって、組み込みシステムは、同様の処理結果を得ることができる。
【００３６】
また、図３に示すように、ＦＩＰＳ１９７で定められている「ＡｄｄＲｏｕｎｄＫｅｙ」関数及び「ＳｕｂＢｙｔｅｓ」関数をそれぞれ実行した処理結果に対して、ステップＳ０１０２（図２及び図３）を行うことによって、組み込みシステムは、同様の処理結果を含むことができる。例えば、入力データＤ＿ＩＮ（図３）のうち、「０」の１バイトのデータに対して、ステップＳ０１０２が行われると、組み込みシステムは、第１変換「ｇ０」と、第２逆変換「ｆ０−１」と、図４に示す「Ｔ０１」による変換とがそれぞれ行われた場合と、同一の処理結果を含むことができる。
【００３７】
なお、第１変換「ｇ」と、第１逆変換「ｇ−１」とは、変換と、逆変換との関係である。同様に、第２変換「ｆ」と、第２逆変換「ｆ−１」とは、変換と、逆変換との関係である。変換と、逆変換との関係は、任意のデータに対して、変換が行われた後、更に逆変換が行われると、変換前のデータに戻る関係である。
【００３８】
図３に示すように、第１テーブルＴ１に基づく置換に第１変換「ｇ」が含まれると、いわゆる乱数成分が含まれることになり、組み込みシステムは、ステップＳ０１０２の出力において、いわゆる難読化が実現できる。
【００３９】
また、図３に示すように、ステップＳ０１０２は、第１テーブルＴ１、いわゆるＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）で実現される。第１テーブルＴ１による置換によって、１バイトのデータが「２８＝２５６」通りに置換されるとすると、第１テーブルＴ１は、「１バイト×２５６通り＝２５６バイト」の容量となる。
【００４０】
さらに、１ラウンド当たりの処理では、４サブラウンドが行われるので、１ラウンドに対して、第１テーブルＴ１に係る容量は、「２５６バイト×４個／サブラウンド＝１０２４バイト／サブラウンド＝１キロバイト／サブラウンド」となる。さらにまた、図３に示すように、第１テーブルＴ１は、４つの１バイトに対してそれぞれ用いられるため、第１テーブルＴ１の容量は、「１キロバイト×４個＝４キロバイト」となる。各ラウンドでそれぞれ異なる第１テーブルＴ１が用いられるとすると、第１テーブルＴ１に係る全ラウンドに必要な容量は、９ラウンドが行われる場合には、「４キロバイト×９ラウンド＝３６キロバイト」となる。
【００４１】
なお、各ラウンドでそれぞれ異なる第１テーブルＴ１が用いられ、かつ、９ラウンドが行われる場合には、第１テーブルＴ１の数は、「４個×４サブラウンド×９ラウンド＝１４４個」となる。
【００４２】
また、第１テーブルＴ１に係る全ラウンドに必要な容量及び第１テーブルＴ１の数は、ＡＥＳ方式における鍵のビット長によって異なる。具体的には、鍵のビット長が１９２ビットである場合には、鍵のビット長が１２８ビットである場合と行われるラウンド数等が異なるため、第１テーブルＴ１に係る全ラウンドに必要な容量は、「４４キロバイト」であり、第１テーブルＴ１の数は、「１７６個」となる。また、鍵のビット長が２５６ビットである場合には、第１テーブルＴ１に係る全ラウンドに必要な容量は、「５２キロバイト」であり、第１テーブルＴ１の数は、「２０８個」となる。
【００４３】
次に、図３に示すように、ＦＩＰＳ１９７で定められている「ＭｉｘＣｏｌｕｍｎｓ」関数を実行した処理結果に対して、ステップＳ０１０３（図２及び図３）及びステップＳ０１０４（図２及び図３）をそれぞれ行うことによって、組み込みシステムは、同様の処理結果を含ませることができる。
【００４４】
図３に示すように、ステップＳ０１０３は、第２テーブルＴ２、いわゆるＬＵＴで実現される。図３に示す処理では、「ＭｉｘＣｏｌｕｍｎｓ」関数を実行した処理結果と、同様の処理結果を含ませるため、ステップＳ０１０３で、第２テーブルＴ２による置換が行われる。
【００４５】
また、図３に示すように、第２テーブルＴ２による置換が行われると、ステップＳ０１０２による第１変換「ｇ」に対する第１逆変換「ｇ−１」が含まれる。
【００４６】
さらに、図３に示す第２テーブルＴ２による置換が行われると、ビットの並び替えが行われる。ビットの並び替えは、図３では、並び替え「ｈ」で示すとする。例えば、並び替え「ｈ」は、入力された１バイトのデータをそれぞれ１倍、１倍、２倍及び３倍にし、続いて、各計算結果の出力である４バイトの各ビットの並びを並び替える。これによって、並び替え「ｈ」は、１バイトのデータの入力に対して、それぞれ乗算し、かつ、並び替えた値をそれぞれ出力する、即ち、４つの１バイトのデータをそれぞれ出力する。
【００４７】
したがって、第２テーブルＴ２は、入力が２５６通りであり、２５６通りの入力に対して４つの出力を行うため、「２５６通り×４バイト＝１０２４バイト＝１キロバイト」の容量となる。また、図３に示すように、１サブラウンドでは、４個の第２テーブルＴ２がそれぞれ用いられるため、第２テーブルＴ２に係る容量は、「１キロバイト×４個＝４キロバイト」となる。
【００４８】
また、第２テーブルＴ２による置換及びステップＳ０１０４による排他的論理和の計算とそれぞれ行った処理結果には、図３に示すステップＳ０１０２における第２逆変換「ｆ−１」に対する第２変換「ｆ」が含まれる。具体的には、入力データＤ＿ＩＮのうち、「０」の１バイトのデータとして、「ａ」のデータが入力されるとすると、並び替え「ｈ０」及び排他的論理和の計算と、第２変換「ｆ０」との関係は、下記（１）式に示す関係となる。
【００４９】
【数１】
0006292195.tif 000002
【００５０】
上記（１）式と同様に、入力データＤ＿ＩＮのうち、「５」の１バイトのデータとして、「ａ」のデータが入力されるとすると、ステップＳ０１０３及びステップＳ０１０４を合わせた処理と、第２変換「ｆ」との関係は、下記（２）式に示すようになる。
【００５１】
【数２】
0006292195.tif 000003
【００５２】
第２テーブルＴ２による置換に含まれる並び替え「ｈ」は、１バイト、即ち、８ビットのビットを並び替えるため、並び替えのパターンは、「８！＝４０３２０≒２１５．３」通りとなる。また、ステップＳ０１０４による排他的論理和の計算は、「２３２＝４２９４９６７２９６」通りのパターンを作り出せる。したがって、ステップＳ０１０３における第２テーブルＴ２による置換及びステップＳ０１０４による排他的論理和の計算によって、組み込みシステムは、「ＭｉｘＣｏｌｕｍｎｓ」関数を実行した処理結果と同様の処理結果を含ませることができる。
【００５３】
図４に示す比較例と比較すると、ステップＳ０２０３で用いられる、いわゆるＸＯＲ−Ｔａｂｌｅｓ等のテーブルがなくとも、ステップＳ０１０３及びステップＳ０１０４によって、「ＭｉｘＣｏｌｕｍｎｓ」関数を実行した場合と同様程度に、組み込みシステムは、セキュリティの強度を確保することができる。
【００５４】
また、図３に示すように、「ＡｄｄＲｏｕｎｄＫｅｙ」関数、「ＳｕｂＢｙｔｅｓ」関数及び「ＭｉｘＣｏｌｕｍｎｓ」関数の実行を第１テーブルＴ１による置換、第２テーブルＴ２による置換及び排他的論理和の計算等をそれぞれ行うことによって実現して、組み込みシステムは、処理中のデータ等が解析された場合に、処理対象となっているデータの内容等が理解されにくい、即ち、データの内容等を難読化させることができる。
【００５５】
これは、処理対象となるデータを取得又は解析されにくくするＢｌａｃｋ  Ｂｏｘ  ＡＥＳに対して、何らかの方法によって処理対象となるデータが取得されてしまい、データが解析された場合でも、解析によってデータの内容等が理解されにくくできる、いわゆるＷｈｉｔｅ  Ｂｏｘ  ＡＥＳに相当する。したがって、組み込みシステムは、図２及び図３に示す処理をそれぞれ行うことで、Ｗｈｉｔｅ  Ｂｏｘ  ＡＥＳを実現することができる。
【００５６】
なお、第２テーブルＴ２は、サブラウンドにおける処理ごとにそれぞれ異なるテーブルが用意されると、サブラウンドにおけるそれぞれの処理で参照されるテーブルが異なるため、組み込みシステムは、第２テーブルＴ２による置換を解析する計算コストを高くすることができる。即ち、組み込みシステムは、よりセキュリティを向上させることができる。具体的には、図３では、入力データＤ＿ＩＮの「０」、「５」、「１０」及び「１５」に対する各処理において、それぞれの処理で用いられる第２テーブルＴ２が、それぞれ異なるようにテーブルを記憶する等である。
【００５７】
一方、第２テーブルＴ２は、ラウンドごとに異なるテーブルが用意されてもよい。即ち、第２テーブルＴ２は、サブラウンドごとには、使い回されてもよい。
【００５８】
図５は、本発明の一実施形態に係る暗号化の別の１ラウンド当たりの処理の一例を説明する模式図である。具体的には、図２及び図３に示す処理の次の処理として、図示するように、入力データＤ＿ＩＮのうち、「３」、「４」、「９」及び「１４」の１バイトのデータがそれぞれ選択され、図３と同様に、図２に示す各処理が選択された１バイトのデータに対してそれぞれ行われる例である。つまり、まず、図３に示す処理により、出力データとして、「０」乃至「３」のデータが、それぞれ生成され、１サブラウンドの処理が完了する。次に、図５に示す処理により、出力データＤ＿ＯＵＴのうち、「４」乃至「７」データが、それぞれ生成される場合の例である。
【００５９】
この例において、図５に示すように、前の処理である図３に示す処理と、図５に示す次の処理とで、共通して、同一の第２テーブルＴ２が使用されてもよい。
【００６０】
一方、第２テーブルＴ２は、奇数ラウンドと、偶数ラウンドとでそれぞれ異なるテーブルが用意されてもよい。
【００６１】
第２テーブルＴ２がサブラウンド、ラウンド、奇数ラウンド又は偶数ラウンドごとに共通して使用されると、組み込みシステムは、第２テーブルＴ２のデータを記憶するメモリ容量を小さくすることができる。
【００６２】
例えば、ラウンド内で同一の第２テーブルＴ２が共通して使用されると、１サブラウンド当たり４キロバイトの容量となるので、１ラウンド当たりの容量は、４キロバイトの容量とすることができる。これに対して、それぞれ異なる第２テーブルＴ２が使用されると、１ラウンド当たりの容量は、１６キロバイトの容量となる。
【００６３】
したがって、組み込みシステムは、第２テーブルＴ２のデータを記憶するメモリ容量をより小さくすることができる。
【００６４】
また、上述に示す構成は、組み合わせて実現されてもよい。例えば、サブラウンドにおける処理ごとに異なる第２テーブルＴ２が用意され、かつ、奇数ラウンドごと又は偶数ラウンドごとに、第２テーブルＴ２がそれぞれ共通して使用されると、第２テーブルＴ２の数は、「４個×２個＝８個」となる。また、第２テーブルＴ２に係る全ラウンドに必要な容量は、「４キロバイト×８個＝３２キロバイト」となる。
【００６５】
例えば、９ラウンドが行われ、かつ、奇数ラウンドごと又は偶数ラウンドごとに、第２テーブルＴ２がそれぞれ共通して使用されるとする。この場合には、第１テーブルＴ１に係る全ラウンドに必要な容量は、「３６キロバイト」であり、かつ、第２テーブルＴ２に係る全ラウンドに必要な容量は、「８キロバイト」である。したがって、組み込みシステムは、「３６キロバイト＋８キロバイト＝４４キロバイト」の小さいメモリ容量で、データの内容等が解析されにくいＷｈｉｔｅ  Ｂｏｘ  ＡＥＳを実現することができる。また、鍵のビット長が２５６ビットである場合には、組み込みシステムは、「６０キロバイト」の小さいメモリ容量で、データの内容等が解析されにくいＷｈｉｔｅ  Ｂｏｘ  ＡＥＳを実現することができる。
【００６６】
＜＜３．組み込みシステムの機能構成例＞＞
図６は、本発明の一実施形態に係る組み込みシステムの機能構成の一例を示す機能ブロック図である。図示するように、組み込みシステム１は、選択部ＦＮ１と、置換部ＦＮ２と、並び替え部ＦＮ３と、排他的論理和計算部ＦＮ４とを含む。
【００６７】
選択部ＦＮ１は、入力データＤ＿ＩＮのうち、４バイトのサブラウンドデータＤ＿ＳＲを選択する。なお、入力データＤ＿ＩＮは、図３に示すように、１６バイトの１ラウンドデータである。また、選択部ＦＮ１によって、サブラウンドデータＤ＿ＳＲが選択されると、ＦＩＰＳ１９７で定められている「ＳｈｉｆｔＲｏｗｓ」関数を実行した処理結果と同様の処理結果が得られる。さらに、選択部ＦＮ１は、例えば、演算装置ＨＷ１（図１）等によって実現される。
【００６８】
置換部ＦＮ２は、サブラウンドデータＤ＿ＳＲを１バイトのデータごとに、第１テーブルＴ１に基づいてそれぞれ置換して、それぞれの置換データＤ＿ＳＳを生成する。また、第１テーブルＴ１に基づく置換には、図３に示す第１変換「ｇ」等が含まれる。さらに、第１テーブルＴ１に基づく置換には、図３に示す第２逆変換「ｆ−１」等が含まれる。さらにまた、置換部ＦＮ２によって、第１テーブルＴ１に基づく置換が行われると、ＦＩＰＳ１９７で定められている「ＡｄｄＲｏｕｎｄＫｅｙ」関数及び「ＳｕｂＢｙｔｅｓ」関数をそれぞれ実行した処理結果と同様の処理結果が含まれる。なお、置換部ＦＮ２は、例えば、演算装置ＨＷ１等によって実現される。
【００６９】
並び替え部ＦＮ３は、置換データＤ＿ＳＳのビットを第２テーブルＴ２に基づく置換によって、並び替えて並替データＤ＿ＣＨを生成する。また、第２テーブルＴ２に基づく置換には、図３に示す第１逆変換「ｇ−１」等が含まれる。さらに、並び替え部ＦＮ３は、第２テーブルＴ２をサブラウンド、ラウンド、奇数ラウンド又は偶数ラウンドごとに共通して使用してもよい。なお、並び替え部ＦＮ３は、例えば、演算装置ＨＷ１等によって実現される。
【００７０】
排他的論理和計算部ＦＮ４は、並替データＤ＿ＣＨの排他的論理和を計算する。なお、排他的論理和計算部ＦＮ４は、例えば、演算装置ＨＷ１等によって実現される。
【００７１】
並び替え部ＦＮ３による第２テーブルＴ２に基づく置換及び排他的論理和計算部ＦＮ４による排他的論理和の計算がそれぞれ行われると、ＦＩＰＳ１９７で定められている「ＭｉｘＣｏｌｕｍｎｓ」関数を実行した処理結果と同様の処理結果が含まれる。
【００７２】
なお、組み込みシステムは、ＡＥＳ方式によって暗号化を行うに限られない。例えば、組み込みシステムは、各処理の逆関数に相当する処理を用いて、復号化を行ってもよい。なお、例えば、「ＳｈｉｆｔＲｏｗｓ」関数の逆関数は、「ＩｎｖＳｈｉｆｔＲｏｗｓ」関数等である。他にも、「ＳｕｂＢｙｔｅｓ」関数の逆関数は、「ＩｎｖＳｕｂＢｙｔｅｓ」関数であり、「ＭｉｘＣｏｌｕｍｎｓ」関数の逆関数は、「ＩｎｖＭｉｘＣｏｌｕｍｎｓ」関数である。
【００７３】
また、本発明は、使用できる記憶容量等に係る制約が多い組み込みシステムに適用される形態が望ましい。さらに、組み込みシステムは、プログラム及びデータの解読を難しくするため、図１に示すように、演算装置にメモリが内蔵されるハードウェア構成であるのが望ましい。
【００７４】
組み込みシステムは、例えば、いわゆるスマートメータ（Ｓｍａｒｔ  Ｍｅｔｅｒ）等に用いられる。スマートメータ等は、外部装置等とデータを送受信する場合が多い。この場合には、スマートメータ等は、組み込みシステムによって、ＡＥＳ方式で暗号化してデータを送受信できる。これによって、送受信されるデータは、暗号化されているため、スマートメータは、データの送受信においてセキュリティを向上させることができる。
【００７５】
なお、組み込みシステムは、スマートメータに応用されるに限られない。例えば、組み込みシステムは、組込機器全般、クラウド等によって他の装置と通信を行う装置、ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）に用いられる各装置、又はこれらを組み合わせた情報処理システム等に応用されてもよい。
【００７６】
また、組み込みシステムは、１つの情報処理装置によって実現される構成に限られない。即ち、組み込みシステムは、２つ以上の情報処理装置を有する情報処理システムによって実現されてもよい。なお、情報処理システムでは、各処理の一部又は全部が分散、冗長、並列又はこれらを組み合わせるように、処理が行われてもよい。
【００７７】
以上、本発明の好ましい実施例について詳述したが、本発明は、係る特定の実施形態に限定されるものではない。即ち、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形又は変更が可能である。
【符号の説明】
【００７８】
１  組み込みシステム
Ｄ＿ＩＮ  入力データ
Ｄ＿ＯＵＴ  出力データ
Ｔ１  第１テーブル
Ｔ２  第２テーブル
【図１】
0006292195.tif 000004
【図２】
0006292195.tif 000005
【図３】
0006292195.tif 000006
【図４】
0006292195.tif 000007
【図５】
0006292195.tif 000008
【図６】
0006292195.tif 000009