特許第6876423号(P6876423)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許6876423ストリーム暗号における内部状態の初期化装置、方法及びプログラム
<>
  • 特許6876423-ストリーム暗号における内部状態の初期化装置、方法及びプログラム 図000002
  • 特許6876423-ストリーム暗号における内部状態の初期化装置、方法及びプログラム 図000003
  • 特許6876423-ストリーム暗号における内部状態の初期化装置、方法及びプログラム 図000004
  • 特許6876423-ストリーム暗号における内部状態の初期化装置、方法及びプログラム 図000005
  • 特許6876423-ストリーム暗号における内部状態の初期化装置、方法及びプログラム 図000006
  • 特許6876423-ストリーム暗号における内部状態の初期化装置、方法及びプログラム 図000007
  • 特許6876423-ストリーム暗号における内部状態の初期化装置、方法及びプログラム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6876423
(24)【登録日】2021年4月28日
(45)【発行日】2021年5月26日
(54)【発明の名称】ストリーム暗号における内部状態の初期化装置、方法及びプログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20210517BHJP
【FI】
   G09C1/00 610D
【請求項の数】5
【全頁数】9
(21)【出願番号】特願2016-242343(P2016-242343)
(22)【出願日】2016年12月14日
(65)【公開番号】特開2018-97192(P2018-97192A)
(43)【公開日】2018年6月21日
【審査請求日】2018年12月21日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】福島 和英
(72)【発明者】
【氏名】清本 晋作
【審査官】 行田 悦資
(56)【参考文献】
【文献】 特開2007−060191(JP,A)
【文献】 特表2001−522167(JP,A)
【文献】 特開2015−109131(JP,A)
【文献】 特表2009−529819(JP,A)
【文献】 米国特許出願公開第2009/0158051(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
ストリーム暗号における内部状態の初期化装置であって、
初期ベクトルを鍵値により撹拌し、鍵ストリームを出力するための内部状態を生成するために、前記初期ベクトルのみを入力として順次実行する前記鍵値を内包した複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶する記憶部と、
前記初期ベクトルが入力されると、前記参照テーブルに基づいて、前記複数の演算を順次実行する実行部と、を備える初期化装置。
【請求項2】
前記複数の演算の入力及び出力は、前記初期ベクトル及び鍵値よりも短いビット長で構成される請求項1に記載の初期化装置。
【請求項3】
前記複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿される請求項1又は請求項2に記載の初期化装置。
【請求項4】
ストリーム暗号における内部状態の初期化方法であって、
コンピュータが、
初期ベクトルを鍵値により撹拌し、鍵ストリームを出力するための内部状態を生成するために、前記初期ベクトルのみを入力として順次実行する前記鍵値を内包した複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶し、
前記初期ベクトルが入力されると、前記参照テーブルに基づいて、前記複数の演算を順次実行する初期化方法。
【請求項5】
ストリーム暗号における内部状態の初期化プログラムであって、
初期ベクトルを鍵値により撹拌し、鍵ストリームを出力するための内部状態を生成するために、前記初期ベクトルのみを入力として順次実行する前記鍵値を内包した複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶させたコンピュータに、
前記初期ベクトルが入力されると、前記参照テーブルに基づいて、前記複数の演算を順次実行させるための初期化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストリーム暗号における内部状態を初期化する装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、ブロック暗号を実装する際に、鍵値を安全にソフトウェア内に格納する方法が提案されている。
例えば、非特許文献1では、DES(Data Encryption Standard)について、非特許文献2では、AES(Advanced Encryption Standard)について、それぞれ、暗号化アルゴリズムを参照テーブルにより実装し、鍵値を安全にソフトウェアに格納するホワイトボックス実装と呼ばれる方法が提案されている。
また、特許文献1及び2においても、ブロック暗号をホワイトボックス実装する方法が提案されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2009−543244号公報
【特許文献2】特開2011−211708号公報
【非特許文献】
【0004】
【非特許文献1】Chow, S., Eisen, P., Johnson, H., and Van Oorschot, P. C., “A White−Box DES Implementation for DRM Applications,” In Proc. of ACM Workshop on Digital Rights Management (DRM 2002), Lecture Notes in Computer Science 2696, pages 1−15, 2003.
【非特許文献2】Chow, S., Eisen, P., Johnson, H., and Van Oorschot, P. C., “White−box Cryptography and an AES Implementation,” In Proc. of Selected Areas in Cryptography (SAC 2002), Lecture Notes in Computer Science 2595, pages 250−270, 2003.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のブロック暗号を対象とするホワイトボックス実装は、参照テーブルを用いた処理により、暗号化ブロック毎にオーバーヘッドが発生し、パフォーマンスが低下していた。
【0006】
本発明は、ストリーム暗号において、パフォーマンスの低下を抑制しつつ鍵値を安全に実装できる装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る初期化装置は、ストリーム暗号における内部状態の初期化装置であって、初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶する記憶部と、前記参照テーブルに基づいて、前記複数の演算を順次実行する実行部と、を備える。
【0008】
前記複数の演算の入力及び出力は、前記初期ベクトル及び鍵値よりも短いビット長で構成されてもよい。
【0009】
前記複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿されてもよい。
【0010】
本発明に係る初期化方法は、ストリーム暗号における内部状態の初期化方法であって、コンピュータが、初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶し、前記参照テーブルに基づいて、前記複数の演算を順次実行する。
【0011】
本発明に係る初期化プログラムは、ストリーム暗号における内部状態の初期化プログラムであって、初期ベクトルを鍵値により撹拌し内部状態を生成するために、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述した参照テーブルを記憶させたコンピュータに、前記参照テーブルに基づいて、前記複数の演算を順次実行させる。
【発明の効果】
【0012】
本発明によれば、ストリーム暗号において、パフォーマンスの低下を抑制したホワイトボックス実装を実現できる。
【図面の簡単な説明】
【0013】
図1】実施形態に係る暗号化装置の機能構成を示すブロック図である。
図2】実施形態に係るホワイトボックス実装を説明する概念図である。
図3】実施形態に係る参照テーブルの一例として、排他的論理和演算の入力値及び出力値を例示した図である。
図4】実施形態に係る参照テーブルの一例として、加算の入力値及び出力値を例示した図である。
図5】実施形態に係る排他的論理和演算の実装例を示す図である。
図6】実施形態に係る加算の実装例を示す図である。
図7】実施形態に係る乗算の実装例を示す図である。
【発明を実施するための形態】
【0014】
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係る暗号化装置1(初期化装置)の機能構成を示すブロック図である。
暗号化装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、記憶部10及び制御部20の他、各種データの入出力デバイス又は通信デバイス等を備える。
【0015】
記憶部10は、ハードウェア群を暗号化装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部10は、本実施形態の各機能を制御部20に実行させるプログラム(初期化プログラム)の他、初期化処理で参照される参照テーブルを記憶する。
【0016】
参照テーブルは、内部レジスタ30に格納される内部状態の値を生成するために、初期ベクトルを鍵値により撹拌する初期化処理において、順次実行する複数の演算のそれぞれに対して、入力及び出力を記述したテーブルである。
初期化処理は、例えば、排他的論理和演算、加算及び乗算の組み合わせにより構成されるが、各演算は、さらに初期ベクトル及び鍵値よりも短いビット長の複数の演算に分解され、これら複数の演算の入力値に対する出力値が参照テーブルに格納される。
【0017】
また、複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿される。
例えば、入力Iから出力OがテーブルT,T及びTを用いて、
O=(T・T・T)(I)=T(T(T(I)))
と計算できる場合、全単射の写像f及びgを用いて、T,T及びTは、それぞれ、
’=f・T
’=g・T・f−1
’=T・g−1
と変換できる。このとき、
O=(T’・T’・T’)(I)
=[(T・g−1)・(g・T・f−1)・(f・T)](I)
=[T・(g−1・g)・T・(f−1・f)・T](I)
=(T・T・T)(I)
が成り立つ。しがたって、テーブルT’,T’及びT’が参照テーブルとして格納され、元のテーブルT,T及びTが保護される。
【0018】
制御部20は、暗号化装置1の全体を制御する部分であり、記憶部10に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部20は、CPUであってよい。
【0019】
制御部20は、実行部21を備え、暗号化又は復号化を行う際に、初期ベクトルを入力とし、ストリーム暗号の鍵ストリームを出力するための内部レジスタ30の値(内部状態)を初期化する。
実行部21は、記憶部10の参照テーブルに基づいて、初期化処理を構成する複数の演算を順次実行し、演算結果を内部レジスタ30に格納する。制御部20は、格納された内部レジスタ30の値を所定の演算により更新しつつ、鍵ストリームを出力する。
【0020】
図2は、本実施形態に係る初期化処理のホワイトボックス実装を説明する概念図である。
通常、鍵値及び初期ベクトルをアプリケーションからの入力として内部状態の値を計算する初期化処理は、ホワイトボックス実装において、鍵値を参照テーブルによる演算に内包させ、複数の参照テーブルの組み合わせによって全体の計算ロジックを構成する。
したがって、鍵値は保護され、初期化処理への入力は初期ベクトルのみとなり、ホワイトボックス実装された初期化処理の出力が内部状態の初期値として内部レジスタ30に格納される。
【0021】
ここで、ホワイトボックス実装される初期化処理の計算ロジックは、不可逆なもの、すなわち、初期化処理により生成された内部状態から、鍵値又は初期ベクトルを求めることができないものが採用される。
これにより、たとえ内部レジスタ30の値が漏洩した場合でも、鍵値及び初期ベクトルが第三者に知られることがない。
【0022】
図3は、本実施形態に係る参照テーブルの一例として、排他的論理和演算の入力値及び出力値を例示した図である。
この参照テーブルは、8ビットの入力と4ビットの出力を持ち、4ビットの入力値2つに対して、4ビットの演算結果を示している。
例えば、値1が「0011」で値2が「0101」の場合、演算結果として「0110」が出力される。
【0023】
図4は、本実施形態に係る参照テーブルの一例として、加算の入力値及び出力値を例示した図である。
この参照テーブルは、9ビットの入力と5ビットの出力を持つ。入力の9ビットは、4ビットの値2つと前の演算からの桁上がり1ビットを示し、出力の5ビットは、4ビットの加算結果と次の演算への桁上がり1ビットを示している。
例えば、入力として、値1が「0001」、値2が「0011」、前の演算からの桁上がりが「0」の場合、演算結果として「0100」、次の演算への桁上がりとして「0」が出力される。また、入力として、値1が「1000」、値2が「1000」、前の演算からの桁上がりが「1」の場合、演算結果として「0001」、次の演算への桁上がりとして「1」が出力される。
【0024】
図5は、本実施形態に係る初期化処理における排他的論理和演算の実装例を示す図である。
この例では、2つの32ビットの入力に対して、排他的論理和演算を行った32ビットの演算結果が出力される。
【0025】
32ビットの排他的論理和演算は、8つの4ビット排他的論理和テーブル(図3)により実現される。具体的には、入力1及び入力2をそれぞれ4ビットずつに分割し、分割された4ビットずつを入力とした演算結果が排他的論理和テーブルから抽出され、8つの演算結果が連結されて出力となる。
【0026】
図6は、本実施形態に係る初期化処理における加算の実装例を示す図である。
この例では、2つの32ビットの入力に対して、加算を行った32ビットの演算結果が出力される。
【0027】
32ビットの加算は、8つの4ビット加算テーブル(図4)を組み合わせて実現される。具体的には、入力1及び入力2をそれぞれ4ビットずつに分割し、分割された4ビットの値が2つと桁上がりとを順に入力とした演算結果が4ビット加算テーブルから抽出され、8つの演算結果が連結されて出力となる。
【0028】
図7は、本実施形態に係る初期化処理における乗算の実装例を示す図である。
この例では、32ビットの入力と拡大体GF(232)上の定数との乗算を行った32ビットの演算結果が出力される。
【0029】
32ビットの乗算は、8ビットの入力と4ビットの出力を持つ参照テーブルを8つと、4ビットの排他的論理和テーブル(図3)を6つとを組み合わせて実現される。
具体的には、GF(232)上の定数と任意の値wとの乗算は、次式で計算できる。
α・w=(w≪8)+alpha[w≫24]
ただし、「+」は排他的論理和を、「≪」及び「≫」は、それぞれ左ビットシフト演算及び右ビットシフト演算を意味し、「alpha」は、定数αによって決定される入力8ビット、出力4ビットの参照テーブルである。
【0030】
本実施形態によれば、暗号化装置1は、ストリーム暗号における内部状態の初期化処理をホワイトボックス実装した。これにより、通常は上位のアプリケーションからインタフェースを介して入力される鍵値が保護される。さらに、初期化後の鍵ストリームの生成、及び暗号化若しくは復号化の処理は従来通りのため、ホワイトボックス実装によるオーバーヘッドは初期化処理のみとなる。したがって、暗号化装置1は、パフォーマンスの低下を抑制しつつ鍵値を安全に実装できる。
【0031】
参照テーブルに格納される各演算の入力及び出力は、初期ベクトル及び鍵値よりも短いビット長で構成されるので、参照テーブルに格納すべきレコード数が抑制される。
参照テーブルで実装される複数の演算のそれぞれは、全単射の写像及び逆写像を用いて秘匿されるので、安全性が向上する。
【0032】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【0033】
暗号化装置1による内部状態の初期化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0034】
1 暗号化装置(初期化装置)
10 記憶部
20 制御部
21 実行部
30 内部レジスタ
図1
図2
図3
図4
図5
図6
図7