(57)【要約】【課題】ストリーム暗号において、パフォーマンスの低下を抑制しつつ鍵値を安全に実装できる装置、方法及びプログラムを提供すること。【解決手段】暗号化装置１は、ストリーム暗号における内部状態を初期化する際に、初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶する記憶部１０と、参照テーブルに基づいて、複数の演算を順次実行する実行部２１とを備える。【選択図】図１
2018097192.tif 000002
【特許請求の範囲】
【請求項１】
ストリーム暗号における内部状態の初期化装置であって、
初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶する記憶部と、
前記参照テーブルに基づいて、前記複数の演算を順次実行する実行部と、を備える初期化装置。
【請求項２】
前記複数の演算の入力及び出力は、前記初期ベクトル及び鍵値よりも短いビット長で構成される請求項１に記載の初期化装置。
【請求項３】
前記複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿される請求項１又は請求項２に記載の初期化装置。
【請求項４】
ストリーム暗号における内部状態の初期化方法であって、
コンピュータが、
初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶し、
前記参照テーブルに基づいて、前記複数の演算を順次実行する初期化方法。
【請求項５】
ストリーム暗号における内部状態の初期化プログラムであって、
初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶させたコンピュータに、
前記参照テーブルに基づいて、前記複数の演算を順次実行させるための初期化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム暗号における内部状態を初期化する装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来、ブロック暗号を実装する際に、鍵値を安全にソフトウェア内に格納する方法が提案されている。
例えば、非特許文献１では、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）について、非特許文献２では、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）について、それぞれ、暗号化アルゴリズムを参照テーブルにより実装し、鍵値を安全にソフトウェアに格納するホワイトボックス実装と呼ばれる方法が提案されている。
また、非特許文献１及び２においても、ブロック暗号をホワイトボックス実装する方法が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−５４３２４４号公報
【特許文献２】特開２０１１−２１１７０８号公報
【非特許文献】
【０００４】
【非特許文献１】Ｃｈｏｗ，  Ｓ．，  Ｅｉｓｅｎ，  Ｐ．，  Ｊｏｈｎｓｏｎ，  Ｈ．，  ａｎｄ  Ｖａｎ  Ｏｏｒｓｃｈｏｔ，  Ｐ．  Ｃ．，  “Ａ  Ｗｈｉｔｅ−Ｂｏｘ  ＤＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｆｏｒ  ＤＲＭ  Ａｐｐｌｉｃａｔｉｏｎｓ，”  Ｉｎ  Ｐｒｏｃ．  ｏｆ  ＡＣＭ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｄｉｇｉｔａｌ  Ｒｉｇｈｔｓ  Ｍａｎａｇｅｍｅｎｔ  （ＤＲＭ  ２００２），  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ２６９６，  ｐａｇｅｓ  １−１５，  ２００３．
【非特許文献２】Ｃｈｏｗ，  Ｓ．，  Ｅｉｓｅｎ，  Ｐ．，  Ｊｏｈｎｓｏｎ，  Ｈ．，  ａｎｄ  Ｖａｎ  Ｏｏｒｓｃｈｏｔ，  Ｐ．  Ｃ．，  “Ｗｈｉｔｅ−ｂｏｘ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  ａｎ  ＡＥＳ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ，”  Ｉｎ  Ｐｒｏｃ．  ｏｆ  Ｓｅｌｅｃｔｅｄ  Ａｒｅａｓ  ｉｎ  Ｃｒｙｐｔｏｇｒａｐｈｙ  （ＳＡＣ  ２００２），  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ２５９５，  ｐａｇｅｓ  ２５０−２７０，  ２００３．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のブロック暗号を対象とするホワイトボックス実装は、参照テーブルを用いた処理により、暗号化ブロック毎にオーバーヘッドが発生し、パフォーマンスが低下していた。
【０００６】
本発明は、ストリーム暗号において、パフォーマンスの低下を抑制しつつ鍵値を安全に実装できる装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る初期化装置は、ストリーム暗号における内部状態の初期化装置であって、初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶する記憶部と、前記参照テーブルに基づいて、前記複数の演算を順次実行する実行部と、を備える。
【０００８】
前記複数の演算の入力及び出力は、前記初期ベクトル及び鍵値よりも短いビット長で構成されてもよい。
【０００９】
前記複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿されてもよい。
【００１０】
本発明に係る初期化方法は、ストリーム暗号における内部状態の初期化方法であって、コンピュータが、初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶し、前記参照テーブルに基づいて、前記複数の演算を順次実行する。
【００１１】
本発明に係る初期化プログラムは、ストリーム暗号における内部状態の初期化プログラムであって、初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶させたコンピュータに、前記参照テーブルに基づいて、前記複数の演算を順次実行させる。
【発明の効果】
【００１２】
本発明によれば、ストリーム暗号において、パフォーマンスの低下を抑制したホワイトボックス実装を実現できる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係る暗号化装置の機能構成を示すブロック図である。
【図２】実施形態に係るホワイトボックス実装を説明する概念図である。
【図３】実施形態に係る参照テーブルの一例として、排他的論理和演算の入力値及び出力値を例示した図である。
【図４】実施形態に係る参照テーブルの一例として、加算の入力値及び出力値を例示した図である。
【図５】実施形態に係る排他的論理和演算の実装例を示す図である。
【図６】実施形態に係る加算の実装例を示す図である。
【図７】実施形態に係る乗算の実装例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態の一例について説明する。
図１は、本実施形態に係る暗号化装置１（初期化装置）の機能構成を示すブロック図である。
暗号化装置１は、サーバ装置又はパーソナルコンピュータ等の情報処理装置（コンピュータ）であり、記憶部１０及び制御部２０の他、各種データの入出力デバイス又は通信デバイス等を備える。
【００１５】
記憶部１０は、ハードウェア群を暗号化装置１として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ＲＯＭ、ＲＡＭ、フラッシュメモリ又はハードディスク（ＨＤＤ）等であってよい。具体的には、記憶部１０は、本実施形態の各機能を制御部２０に実行させるプログラム（初期化プログラム）の他、初期化処理で参照される参照テーブルを記憶する。
【００１６】
参照テーブルは、内部レジスタ３０に格納される内部状態の値を生成するために、初期ベクトルを鍵値により撹拌する初期化処理において、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述したテーブルである。
初期化処理は、例えば、排他的論理和演算、加算及び乗算の組み合わせにより構成されるが、各演算は、さらに初期ベクトル及び鍵値よりも短いビット長の複数の演算に分解され、これら複数の演算の入力値に対する出力値が参照テーブルに格納される。
【００１７】
また、複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿される。
例えば、入力Ｉから出力ＯがテーブルＴ１，Ｔ２及びＴ３を用いて、
Ｏ＝（Ｔ３・Ｔ２・Ｔ１）（Ｉ）＝Ｔ３（Ｔ２（Ｔ１（Ｉ）））
と計算できる場合、全単射の写像ｆ及びｇを用いて、Ｔ１，Ｔ２及びＴ３は、それぞれ、
Ｔ１’＝ｆ・Ｔ１
Ｔ２’＝ｇ・Ｔ２・ｆ−１
Ｔ３’＝Ｔ３・ｇ−１
と変換できる。このとき、
Ｏ＝（Ｔ３’・Ｔ２’・Ｔ１’）（Ｉ）
＝［（Ｔ３・ｇ−１）・（ｇ・Ｔ２・ｆ−１）・（ｆ・Ｔ１）］（Ｉ）
＝［Ｔ３・（ｇ−１・ｇ）・Ｔ２・（ｆ−１・ｆ）・Ｔ１］（Ｉ）
＝（Ｔ３・Ｔ２・Ｔ１）（Ｉ）
が成り立つ。しがたって、テーブルＴ１’，Ｔ２’及びＴ３’が参照テーブルとして格納され、元のテーブルＴ１，Ｔ２及びＴ３が保護される。
【００１８】
制御部２０は、暗号化装置１の全体を制御する部分であり、記憶部１０に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部２０は、ＣＰＵであってよい。
【００１９】
制御部２０は、実行部２１を備え、暗号化又は復号化を行う際に、初期ベクトルを入力とし、ストリーム暗号の鍵ストリームを出力するための内部レジスタ３０の値（内部状態）を初期化する。
実行部２１は、記憶部１０の参照テーブルに基づいて、初期化処理を構成する複数の演算を順次実行し、演算結果を内部レジスタ３０に格納する。制御部２０は、格納された内部レジスタ３０の値を所定の演算により更新しつつ、鍵ストリームを出力する。
【００２０】
図２は、本実施形態に係る初期化処理のホワイトボックス実装を説明する概念図である。
通常、鍵値及び初期ベクトルをアプリケーションからの入力として内部状態の値を計算する初期化処理は、ホワイトボックス実装において、鍵値を参照テーブルによる演算に内包させ、複数の参照テーブルの組み合わせによって全体の計算ロジックを構成する。
したがって、鍵値は保護され、初期化処理への入力は初期ベクトルのみとなり、ホワイトボックス実装された初期化処理の出力が内部状態の初期値として内部レジスタ３０に格納される。
【００２１】
ここで、ホワイトボックス実装される初期化処理の計算ロジックは、不可逆なもの、すなわち、初期化処理により生成された内部状態から、鍵値又は初期ベクトルを求めることができないものが採用される。
これにより、たとえ内部レジスタ３０の値が漏洩した場合でも、鍵値及び初期ベクトルが第三者に知られることがない。
【００２２】
図３は、本実施形態に係る参照テーブルの一例として、排他的論理和演算の入力値及び出力値を例示した図である。
この参照テーブルは、８ビットの入力と４ビットの出力を持ち、４ビットの入力値２つに対して、４ビットの演算結果を示している。
例えば、値１が「００１１」で値２が「０１０１」の場合、演算結果として「０１１０」が出力される。
【００２３】
図４は、本実施形態に係る参照テーブルの一例として、加算の入力値及び出力値を例示した図である。
この参照テーブルは、９ビットの入力と５ビットの出力を持つ。入力の９ビットは、４ビットの値２つと前の演算からの桁上がり１ビットを示し、出力の５ビットは、４ビットの加算結果と次の演算への桁上がり１ビットを示している。
例えば、入力として、値１が「０００１」、値２が「００１１」、前の演算からの桁上がりが「０」の場合、演算結果として「０１００」、次の演算への桁上がりとして「０」が出力される。また、入力として、値１が「１０００」、値２が「１０００」、前の演算からの桁上がりが「１」の場合、演算結果として「０００１」、次の演算への桁上がりとして「１」が出力される。
【００２４】
図５は、本実施形態に係る初期化処理における排他的論理和演算の実装例を示す図である。
この例では、２つの３２ビットの入力に対して、排他的論理和演算を行った３２ビットの演算結果が出力される。
【００２５】
３２ビットの排他的論理和演算は、８つの４ビット排他的論理和テーブル（図３）により実現される。具体的には、入力１及び入力２をそれぞれ４ビットずつに分割し、分割された４ビットずつを入力とした演算結果が排他的論理和テーブルから抽出され、８つの演算結果が連結されて出力となる。
【００２６】
図６は、本実施形態に係る初期化処理における加算の実装例を示す図である。
この例では、２つの３２ビットの入力に対して、加算を行った３２ビットの演算結果が出力される。
【００２７】
３２ビットの加算は、８つの４ビット加算テーブル（図４）を組み合わせて実現される。具体的には、入力１及び入力２をそれぞれ４ビットずつに分割し、分割された４ビットの値が２つと桁上がりとを順に入力とした演算結果が４ビット加算テーブルから抽出され、８つの演算結果が連結されて出力となる。
【００２８】
図７は、本実施形態に係る初期化処理における乗算の実装例を示す図である。
この例では、３２ビットの入力と拡大体ＧＦ（２３２）上の定数との乗算を行った３２ビットの演算結果が出力される。
【００２９】
３２ビットの乗算は、８ビットの入力と４ビットの出力を持つ参照テーブルを８つと、４ビットの排他的論理和テーブル（図３）を６つとを組み合わせて実現される。
具体的には、ＧＦ（２３２）上の定数と任意の値ｗとの乗算は、次式で計算できる。
α・ｗ＝（ｗ≪８）＋ａｌｐｈａ［ｗ≫２４］
ただし、「＋」は排他的論理和を、「≪」及び「≫」は、それぞれ左ビットシフト演算及び右ビットシフト演算を意味し、「ａｌｐｈａ」は、定数αによって決定される入力８ビット、出力４ビットの参照テーブルである。
【００３０】
本実施形態によれば、暗号化装置１は、ストリーム暗号における内部状態の初期化処理をホワイトボックス実装した。これにより、通常は上位のアプリケーションからインタフェースを介して入力される鍵値が保護される。さらに、初期化後の鍵ストリームの生成、及び暗号化若しくは復号化の処理は従来通りのため、ホワイトボックス実装によるオーバーヘッドは初期化処理のみとなる。したがって、暗号化装置１は、パフォーマンスの低下を抑制しつつ鍵値を安全に実装できる。
【００３１】
参照テーブルに格納される各演算の入力及び出力は、初期ベクトル及び鍵値よりも短いビット長で構成されるので、参照テーブルに格納すべきレコード数が抑制される。
参照テーブルで実装される複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿されるので、安全性が向上する。
【００３２】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【００３３】
暗号化装置１による内部状態の初期化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置（コンピュータ）にインストールされる。また、これらのプログラムは、ＣＤ−ＲＯＭのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【００３４】
１  暗号化装置（初期化装置）
１０  記憶部
２０  制御部
２１  実行部
３０  内部レジスタ
【図１】
2018097192.tif 000003
【図２】
2018097192.tif 000004
【図３】
2018097192.tif 000005
【図４】
2018097192.tif 000006
【図５】
2018097192.tif 000007
【図６】
2018097192.tif 000008
【図７】
2018097192.tif 000009