JP2015102639A - 演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置 - Google Patents

演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置 Download PDF

Info

Publication number
JP2015102639A
JP2015102639A JP2013242244A JP2013242244A JP2015102639A JP 2015102639 A JP2015102639 A JP 2015102639A JP 2013242244 A JP2013242244 A JP 2013242244A JP 2013242244 A JP2013242244 A JP 2013242244A JP 2015102639 A JP2015102639 A JP 2015102639A
Authority
JP
Japan
Prior art keywords
mask
input
value
arithmetic
arithmetic expression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013242244A
Other languages
English (en)
Inventor
有登 仲野
Aritaka Nakano
有登 仲野
清本 晋作
Shinsaku Kiyomoto
晋作 清本
三宅 優
Masaru Miyake
優 三宅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2013242244A priority Critical patent/JP2015102639A/ja
Publication of JP2015102639A publication Critical patent/JP2015102639A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】演算時に使用されるレジスタに秘密情報自身が保持されることを防ぐことを図る。【解決手段】入力演算式を示す入力演算式情報、前記入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び前記マスク値を入力する入力部11と、前記マスク入力値、又は、前記マスク入力値と前記マスク値の両方を使用して、前記入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と前記入力演算式情報で示される入力演算式の演算結果値を前記マスク付き演算結果値から得るマスク解除処理に使用される解除マスク値、又は、前記入力演算式情報で示される入力演算式の演算結果値、を出力するマスク付き演算部12と、を備える。【選択図】図1

Description

本発明は、演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置に関する。
セキュリティ上の重要な秘密情報として、例えば暗号化に使用される鍵や認証に使用される個人情報などが知られている。そのような秘密情報をアプリケーションに埋め込むために直接ソースコードに秘密情報を書き込むと、秘密情報を使用して演算するときに、演算用のレジスタに秘密情報が保持される。この場合、攻撃者がデバッガなどのツールを用いてレジスタから秘密情報を入手できるので、秘密情報が漏洩する可能性がある。このため、攻撃者から秘密情報を保護するためには、秘密情報がレジスタ上に現れないようにする必要がある。
従来、難読化などによってプログラムおよびプログラムが扱う重要な情報を保護する技術が知られている(例えば非特許文献1)。この難読化による情報の保護は逆アセンブルなどの静的解析に対しては有効であるが、プログラムを実行しながら解析を行う動的解析に対して効果は限定的であった。その動的解析に対して有効な技術として、例えば非特許文献2に記載される「Oblivious RAM」が知られている。しかしながら、「Oblivious RAM」はメモリに対する攻撃に対しては効果があるが、CPUのレジスタからデータを抜き取る攻撃に対しては安全性を保障できない。
Boaz Barak, Oded Goldreich, Rusell Impagliazzo, Steven Rudich, Amit Sahai, Salil Vadhan, and Ke Yang, "On the (Im)possibility of Obfuscating Programs", CRYPTO 2001, Lecture Notes in Computer Science Volume 2139, 2001, pp 1-18, 2001. Oded Goldreich and Rafail Ostrovsky, "Software protection and simulation on oblivious rams", J. ACM, 43(3): pp 431-473, 1996. S. Kiyomoto, T. Tanaka, and K. Sakurai, "K2: A stream cipher algorithm using dynamic feedback control", in SECRYPT, 2007, pp. 204-213.
上述したように従来技術では、演算時に使用されるレジスタに秘密情報自身が保持されると、攻撃者によってレジスタから秘密情報を取得される可能性がある。
本発明は、このような事情を考慮してなされたもので、演算時に使用されるレジスタに秘密情報自身が保持されることを防ぐことができる演算装置、演算方法、コンピュータプログラムを提供することを課題とする。
また、本発明に係る演算装置を備えたストリーム暗号化装置を提供することを課題とする。
(1)本発明に係る演算装置は、入力演算式を示す入力演算式情報、前記入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び前記マスク値を入力する入力部と、前記マスク入力値、又は、前記マスク入力値と前記マスク値の両方を使用して、前記入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と前記入力演算式情報で示される入力演算式の演算結果値を前記マスク付き演算結果値から得るマスク解除処理に使用される解除マスク値、又は、前記入力演算式情報で示される入力演算式の演算結果値、を出力するマスク付き演算部と、を備えたことを特徴とする。
(2)本発明に係るストリーム暗号化装置は、ストリーム暗号化装置において、入力演算式情報で示される入力演算式に使用される元入力値をマスク値によりマスク処理し、マスク入力値を出力するマスク処理部と、前記入力演算式情報、前記マスク入力値および前記マスク値を使用する上記(1)の演算装置と、前記演算装置から出力されたマスク付き演算結果値および解除マスク値を使用して、前記マスク付き演算結果値に対するマスク解除処理を行うマスク解除処理部と、を備え、前記入力演算式であるストリーム暗号の内部状態更新演算式に対応するマスク付き演算式を前記演算装置により計算することを特徴とする。
(3)本発明に係る演算方法は、演算装置が、入力演算式を示す入力演算式情報、前記入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び前記マスク値を入力する入力ステップと、前記演算装置が、前記マスク入力値、又は、前記マスク入力値と前記マスク値の両方を使用して、前記入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と前記入力演算式情報で示される入力演算式の演算結果値を前記マスク付き演算結果値から得るマスク解除処理に使用される解除マスク値、又は、前記入力演算式情報で示される入力演算式の演算結果値、を出力するマスク付き演算ステップと、を含むことを特徴とする。
(4)本発明に係るコンピュータプログラムは、コンピュータに、入力演算式を示す入力演算式情報、前記入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び前記マスク値を入力する入力ステップと、前記マスク入力値、又は、前記マスク入力値と前記マスク値の両方を使用して、前記入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と前記入力演算式情報で示される入力演算式の演算結果値を前記マスク付き演算結果値から得るマスク解除処理に使用される解除マスク値、又は、前記入力演算式情報で示される入力演算式の演算結果値、を出力するマスク付き演算ステップと、を実行させるためのコンピュータプログラムであることを特徴とする。
本発明によれば、演算時に使用されるレジスタに秘密情報自身が保持されることを防ぐことができる。また、本発明に係る演算装置を備えたストリーム暗号化装置を提供することができる。
本発明の一実施形態に係る演算装置10の構成を示すブロック図である。 本発明の一実施形態に係る符号無し剰余演算(mod)に対応するマスク付き演算のプログラムの例を示す図である。 本発明の一実施形態に係る符号無し除算(/)に対応するマスク付き演算のプログラムの例を示す図である。 本発明に係るストリーム暗号化装置30の実施例の構成を示すブロック図である。 ストリーム暗号の初期化処理のアルゴリズムの例を示す図である。
以下、図面を参照し、本発明の実施形態について説明する。
図1は、本発明の一実施形態に係る演算装置10の構成を示すブロック図である。図1において、演算装置10は、入力部11とマスク付き演算部12を備える。
入力部11は、入力演算式を示す入力演算式情報、該入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び該マスク値を入力する。マスク付き演算部12は、入力部11から入力された、入力演算式情報と、マスク入力値、又は、マスク入力値とマスク値の両方とを使用する。マスク付き演算部12は、マスク入力値、又は、マスク入力値とマスク値の両方を使用して、入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と解除マスク値、又は、入力演算式情報で示される入力演算式の演算結果値、を出力する。解除マスク値は、入力演算式情報で示される入力演算式の演算結果値をマスク付き演算結果値から得るマスク解除処理に使用されるものである。
以下、本実施形態に係る演算装置10について具体的に説明する。
まず、本実施形態で使用される記号を[表1]に定義する。
Figure 2015102639
元入力値xに対するマスク処理は、マスク値rを使用して[数1]により表される。[数1]によりマスク処理された結果がマスク入力値である。
Figure 2015102639
本実施形態に係るアプリケーション(例えば、暗号化プログラム、認証プログラム等)では、演算前の秘密情報(元入力値)を使用せずに、マスク入力値およびマスク値を使用する。これにより、演算時に使用されるレジスタに演算前の秘密情報(元入力値)自身が保持されることを防ぐ。
本実施形態では、元入力値x、yを使用する入力演算式の演算結果値zを得たいとする。このために、本実施形態では、入力演算式を示す入力演算式情報と、元入力値xのマスク入力値「xとrのXOR」および該マスク値rと、元入力値yのマスク入力値「yとrのXOR」および該マスク値rと、を演算装置10に入力する。これにより、演算装置10のマスク付き演算部12は、該入力されたデータを使用して、入力演算式情報の入力演算式に対応するマスク付き演算式を計算し、入力演算式の演算結果値zを得るためのマスク付き演算結果値および解除マスク値を出力する、又は、入力演算式の演算結果値zを出力する。入力演算式の演算結果値z、マスク付き演算結果値および解除マスク値rは[数2]により表される。
Figure 2015102639
このマスク付き演算結果値「zとrのXOR」に対して解除マスク値rによりマスク解除処理を行うことによって、入力演算式の演算結果値zが得られる。
次に、本実施形態に係る入力演算式に対応するマスク付き演算式、解除マスク値の実施例を説明する。
まず、本実施形態で使用される演算の記号として、[表2]にビット演算の記号、[表3]に四則演算の記号、[表4]に比較演算の記号を定義する。
Figure 2015102639
Figure 2015102639
Figure 2015102639
[最上位ビットの判定]
ビット演算および四則演算では、最上位ビットの判定が必要となる。最上位ビットの値は、[数3]により算出できる。
Figure 2015102639
[数3]により、符号あり整数値の場合に負の数かどうかの判定が可能となる。但し、[数3]では、ゼロの判定はできないので、正の数かどうかの判定はできない。
[マスク値の引き算]
乗算において、マスク値の引き算が必要となる。マスク値の引き算は[数4]で表される。
Figure 2015102639
[ビット演算に係るマスク付き演算式、解除マスク値]
ビット演算に関して、入力演算式に対応するマスク付き演算式、解除マスク値は[表5]で定義される。
Figure 2015102639
但し、rは正の乱数である。r’は乱数である。なお、右シフト演算(>>)では、計算の途中でxの上位1ビットの値が現れることに注意する。
[四則演算に係るマスク付き演算式、解除マスク値]
四則演算に関して、入力演算式に対応するマスク付き演算式、解除マスク値は[表6]で定義される。
Figure 2015102639
なお、加算、減算、乗算では、計算の途中で、計算結果の2倍(2z)の値が現れることに注意する。
また、剰余演算(mod)に対応するマスク付き演算式は、以下に示されるように、符号の有りと無しの場合に分けて定義される。なお、
入力演算式:z=x(mod y)
xのマスク入力値:x_mask
yのマスク入力値:y_mask
とする。
また、剰余演算(mod)に対応するマスク付き演算では、マスク付き演算部12から、入力演算式の演算結果値zが出力される。
[剰余演算(mod)、符号有り]
符号有りの場合には、以下の手順で剰余演算(mod)に対応するマスク付き演算を行う。
手順1:x_maskが負の数である場合には、「x_mask_A=−1 × x_mask」とする。そうでない場合には、「x_mask_A=x_mask」とする。
手順2:y_maskが負の数である場合には、「y_mask_A=−1 × y_mask」とする。そうでない場合には、「y_mask_A=y_mask」とする。
手順3:「z_B=x_mask_A(mod y_mask_A)」を計算する。
手順4:x_maskが負の数である場合には、「z=−1 × z_B」とする。そうでない場合には、「z=z_B」とする。
手順5:手順4の結果であるzが入力演算式の演算結果値である。
[剰余演算(mod)、符号無し]
符号無しの場合には、以下の手順で剰余演算(mod)に対応するマスク付き演算を行う。nは変数である。
手順1:n=1とする。
手順2:「n × y_mask」の最上位ビットが1である場合には、手順5へ進む。
手順3:「n=2 × n」とする。
手順4:手順2へ戻る。
手順5:「z=x_mask」とする。
手順6:zが「n × y_mask」以上である場合には、「z=z − (n × y_mask)」とする。
手順7:「n=n/2」とする。
手順8:nが1以上である場合には、手順6に戻る。
手順9:zが入力演算式の演算結果値である。
図2に、符号無し剰余演算(mod)に対応するマスク付き演算のプログラムの例を示す。
また、除算(/)に対応するマスク付き演算式は、以下に示されるように、符号の有りと無しの場合に分けて定義される。なお、
入力演算式:z=x/y
xのマスク入力値:x_mask
yのマスク入力値:y_mask
とする。
また、除算(/)に対応するマスク付き演算では、マスク付き演算部12から、入力演算式の演算結果値zが出力される。
[除算(/)、符号有り]
符号有りの場合には、以下の手順で除算(/)に対応するマスク付き演算を行う。
手順1:x_maskが負の数である場合には、「x_mask_A=−1 × x_mask」とする。そうでない場合には、「x_mask_A=x_mask」とする。
手順2:y_maskが負の数である場合には、「y_mask_A=−1 × y_mask」とする。そうでない場合には、「y_mask_A=y_mask」とする。
手順3:「z_B=x_mask_A / y_mask_A」を計算する。
手順4:「x_mask × y_mask」が負の数である場合には、「z=−1 × z_B」とする。そうでない場合には、「z=z_B」とする。
手順5:手順4の結果であるzが入力演算式の演算結果値である。
なお、手順4、5に関し、zの符号は、x_mask、y_maskの符号から、[表7]で表される。
Figure 2015102639
[除算(/)、符号無し]
符号無しの場合には、以下の手順で除算(/)に対応するマスク付き演算を行う。nは変数である。
手順1:n=1とする。
手順2:「n × y_mask」の最上位ビットが1である場合には、手順5へ進む。
手順3:「n=2 × n」とする。
手順4:手順2へ戻る。
手順5:「t_x_mask=x_mask」、「z=0」とする。
手順6:t_x_maskが「n × y_mask」以上である場合には、「t_x_mask=t_x_mask − (n × y_mask)」、「z=z + n」とする。
手順7:「n=n/2」とする。
手順8:nが1以上である場合には、手順6に戻る。
手順9:zが入力演算式の演算結果値である。
図3に、符号無し除算(/)に対応するマスク付き演算のプログラムの例を示す。
[比較演算に係るマスク付き演算式、解除マスク値]
比較演算に関して、入力演算式に対応するマスク付き演算式、解除マスク値は[表8]で定義される。比較演算に対応するマスク付き演算では、マスク付き演算部12から、入力演算式の演算結果値zが出力される。入力演算式である比較演算の演算結果値zは1(真)または0(偽)である。
Figure 2015102639
また、小なり演算(<)に対応するマスク付き演算式は、理論上では[数5]で表される。
Figure 2015102639
但し、[数5]の演算式では、オーバーフローが発生する場合には正常に計算が行われない。これに対処するために、以下に示されるように、符号の有りと無しの場合に分けて、小なり演算(<)に対応するマスク付き演算式を定義する。なお、
入力演算式:x<y
xのマスク入力値:x_mask
yのマスク入力値:y_mask
入力演算式の演算結果値:z(1(真)または0(偽))
とする。
[小なり演算(<)、符号有り]
符号有りの場合には、以下の手順で小なり演算(<)に対応するマスク付き演算を行う。
手順1:「z_A=x_mask − y_mask」を計算する。
手順2:「x_mask >= 0」且つ「y_mask < 0」である場合には、「z=0(偽)」とする。
手順3:「x_mask < 0」且つ「y_mask >= 0」である場合には、「z=1(真)」とする。
手順4:「z_A >= 0」である場合には、「z=0(偽)」とする。
手順5:「z_A < 0」である場合には、「z=1(真)」とする。
[表9]に、符号有り小なり演算(<)のマスク付き演算式の定義を示す。
Figure 2015102639
[小なり演算(<)、符号無し]
符号無しの場合には、以下の手順で小なり演算(<)に対応するマスク付き演算を行う。
手順1:x_maskを符号有り変数x_mask_Aに設定し、y_maskを符号有り変数y_mask_Aに設定する。
手順2::「z_A=x_mask_A − y_mask_A」を計算する。z_Aは符号有り変数である。
手順3:「x_mask_A >= 0」且つ「y_mask_A < 0」である場合には、「z=0(偽)」とする。
手順4:「x_mask_A < 0」且つ「y_mask_A >= 0」である場合には、「z=1(真)」とする。
手順5:「z_A >= 0」である場合には、「z=0(偽)」とする。
手順6:「z_A < 0」である場合には、「z=1(真)」とする。
[表10]に、符号無し小なり演算(<)のマスク付き演算式の定義を示す。
Figure 2015102639
なお、秘密情報でない整数値Aとの小なり演算(<)である入力演算式「x<A」に対応するマスク付き演算式は、理論上では[数6]で表される。
Figure 2015102639
但し、[数6]の演算式では、[数5]と同様に、オーバーフローが発生する場合には正常に計算が行われない。これに対処するためには、上記[数5]に関する対処と同様に、符号の有りと無しの場合に分けて、秘密情報でない整数値Aとの小なり演算(<)に対応するマスク付き演算式を定義すればよい。
[小なりイコール演算(<=)]
入力演算式:x<=y
xのマスク入力値:x_mask
yのマスク入力値:y_mask
入力演算式の演算結果値:z(1(真)または0(偽))
とする。
以下の手順で小なりイコール演算(<=)に対応するマスク付き演算を行う。
手順1:「y_mask < x_mask」が「1(真)」である場合には「z=0(偽)」とする。
手順2:「y_mask < x_mask」が「0(偽)」である場合には「z=1(真)」とする。
なお、秘密情報でない整数値Aとの小なりイコール演算(<=)である入力演算式「x<=A」に対応するマスク付き演算は、以下の手順で行う。
手順1:「x_mask = A」である場合には「z=1(真)」とする。
手順2:「x_mask != A」且つ「x_mask < A」が「1(真)」である場合には「z=1(真)」とする。
手順3:「x_mask != A」且つ「x_mask < A」が「0(偽)」である場合には「z=0(偽)」とする。
[大なり演算(>)]
入力演算式:x>y
xのマスク入力値:x_mask
yのマスク入力値:y_mask
入力演算式の演算結果値:z(1(真)または0(偽))
とする。
以下の手順で大なり演算(>)に対応するマスク付き演算を行う。
手順1:「x_mask <= y_mask」が「1(真)」である場合には「z=0(偽)」とする。
手順2:「x_mask <= y_mask」が「0(偽)」である場合には「z=1(真)」とする。
なお、秘密情報でない整数値Aとの大なり演算(>)である入力演算式「x>A」に対応するマスク付き演算は、以下の手順で行う。
手順1:「x_mask <= A」が「1(真)」である場合には「z=0(偽)」とする。
手順2:「x_mask <= A」が「0(偽)」である場合には「z=1(真)」とする。
[大なりイコール演算(>=)]
入力演算式:x>=y
xのマスク入力値:x_mask
yのマスク入力値:y_mask
入力演算式の演算結果値:z(1(真)または0(偽))
とする。
以下の手順で大なりイコール演算(>=)に対応するマスク付き演算を行う。
手順1:「x_mask < y_mask」が「1(真)」である場合には「z=0(偽)」とする。
手順2:「x_mask < y_mask」が「0(偽)」である場合には「z=1(真)」とする。
なお、秘密情報でない整数値Aとの大なりイコール演算(>=)である入力演算式「x>=A」に対応するマスク付き演算は、以下の手順で行う。
手順1:「x_mask < A」が「1(真)」である場合には「z=0(偽)」とする。
手順2:「x_mask < A」が「0(偽)」である場合には「z=1(真)」とする。
以上が、本実施形態に係る入力演算式に対応するマスク付き演算式、解除マスク値の実施例の説明である。
上述した実施形態によれば、演算装置10のマスク付き演算部12は、演算前の秘密情報(元入力値)を使用することなく、マスク付き演算を行う。よって、演算装置10において、演算時に使用されるレジスタに演算前の秘密情報(元入力値)自身が保持されることを防ぐことができる。これにより、演算装置10を暗号化装置や認証装置などに使用することにより、セキュリティ上の重要な秘密情報である、暗号化に使用される鍵や認証に使用される個人情報などを保護することに寄与できる。
なお、本実施形態に係る演算装置10は、専用のハードウェアにより実現されるものであってもよく、或いは、メモリおよびCPU(中央処理装置)により構成され、演算装置10の機能を実現するためのプログラムをCPUが実行することによりその機能を実現させるものであってもよい。
次に、本実施形態に係る演算装置10を備えたストリーム暗号化装置の実施例を説明する。図4は、本発明に係るストリーム暗号化装置30の実施例の構成を示すブロック図である。図4において、ストリーム暗号化装置30は、暗号化部31と初期化部32を備える。初期化部32は、鍵ロード部33と内部状態更新部34を有する。内部状態更新部34は、本実施形態に係る演算装置10とマスク処理部35とマスク解除処理部36を有する。
暗号化部31は、入力データに対してストリーム暗号化を行い、暗号化データを出力する。初期化部32は、暗号化部31に対して、ストリーム暗号化に使用される暗号化パラメータを出力する。暗号化部31は、初期化部32から入力された暗号化パラメータを使用して、入力データに対するストリーム暗号化を行う。
鍵ロード部33は、鍵と初期ベクトルを内部状態更新部34へ出力する。内部状態更新部34は、鍵ロード部33から入力された鍵と初期ベクトルを撹拌し、撹拌によって得られた暗号化パラメータを出力する。
内部状態更新部34における鍵と初期ベクトルの撹拌において、鍵がそのまま使用されると、鍵自身がレジスタに保持されるので、レジスタに保持された鍵が攻撃者によって取得される可能性がある。これに対処するために、内部状態更新部34において、マスク処理部35によって鍵(元入力値)に対してマスク値によりマスク処理してマスク入力値を生成し、該マスク入力値およびマスク値を演算装置10へ入力する。そして、演算装置10は、該マスク入力値およびマスク値を使用して、入力演算式である内部状態更新演算式に対応するマスク付き演算式を計算する。そして、マスク解除処理部36は、演算装置10から出力されたマスク付き演算結果値および解除マスク値を使用して、該マスク付き演算結果値に対するマスク解除処理を行う。このマスク解除処理の結果として、暗号化パラメータが得られる。
図5に、ストリーム暗号の初期化処理のアルゴリズムの例を示す。この図5の例は、ストリーム暗号「KCipher-2」の初期化処理のアルゴリズム(Algorithm 1)の定義である。ストリーム暗号「KCipher-2」については、例えば非特許文献3に開示されている。図5において、鍵ロードステップ(Key loading step)で鍵と初期ベクトルが各レジスタに設定される。本実施形態では、その鍵をマスク処理部35でマスク処理した結果であるマスク入力値をレジスタに設定する。そして、内部状態更新ステップ(Internal state update step)では、該レジスタに設定されたマスク入力値を使用して、内部状態更新演算に対応するマスク付き演算を行う。これにより、内部状態更新演算において、鍵自身がレジスタに保持されることを防ぐことができるので、鍵の保護に寄与できる。
なお、図5に示されるストリーム暗号「KCipher-2」の初期化処理のアルゴリズム(Algorithm 1)において、Subは非線形関数であり、Sub関数内で32ビット演算と8ビット演算が行われる。その8ビット演算については、高速化のために表参照を用いることが一般的である。その表参照を用いる場合には、マスク付き演算に対応させるため、マスク付き演算に該当する表を事前に準備しておく。
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
例えば、本実施形態に係る演算装置10は、様々なアプリケーションに対して適用可能である。例えば、暗号化処理や認証処理など、秘密情報を使用して演算処理を行うアプリケーションに対して、本実施形態に係る演算装置10を適用することによって、該秘密情報の保護に寄与するという効果が得られる。
また、上述した演算装置10を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disk)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
10…演算装置、11…入力部、12…マスク付き演算部、30…ストリーム暗号化装置、31…暗号化部、32…初期化部、33…鍵ロード部、34…内部状態更新部、35…マスク処理部、36…マスク解除処理部

Claims (4)

  1. 入力演算式を示す入力演算式情報、前記入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び前記マスク値を入力する入力部と、
    前記マスク入力値、又は、前記マスク入力値と前記マスク値の両方を使用して、前記入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と前記入力演算式情報で示される入力演算式の演算結果値を前記マスク付き演算結果値から得るマスク解除処理に使用される解除マスク値、又は、前記入力演算式情報で示される入力演算式の演算結果値、を出力するマスク付き演算部と、
    を備えたことを特徴とする演算装置。
  2. ストリーム暗号化装置において、
    入力演算式情報で示される入力演算式に使用される元入力値をマスク値によりマスク処理し、マスク入力値を出力するマスク処理部と、
    前記入力演算式情報、前記マスク入力値および前記マスク値を使用する請求項1に記載の演算装置と、
    前記演算装置から出力されたマスク付き演算結果値および解除マスク値を使用して、前記マスク付き演算結果値に対するマスク解除処理を行うマスク解除処理部と、を備え、
    前記入力演算式であるストリーム暗号の内部状態更新演算式に対応するマスク付き演算式を前記演算装置により計算することを特徴とするストリーム暗号化装置。
  3. 演算装置が、入力演算式を示す入力演算式情報、前記入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び前記マスク値を入力する入力ステップと、
    前記演算装置が、前記マスク入力値、又は、前記マスク入力値と前記マスク値の両方を使用して、前記入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と前記入力演算式情報で示される入力演算式の演算結果値を前記マスク付き演算結果値から得るマスク解除処理に使用される解除マスク値、又は、前記入力演算式情報で示される入力演算式の演算結果値、を出力するマスク付き演算ステップと、
    を含むことを特徴とする演算方法。
  4. コンピュータに、
    入力演算式を示す入力演算式情報、前記入力演算式に使用される元入力値がマスク値によりマスク処理されたマスク入力値、及び前記マスク値を入力する入力ステップと、
    前記マスク入力値、又は、前記マスク入力値と前記マスク値の両方を使用して、前記入力演算式情報で示される入力演算式に対応するマスク付き演算式を計算し、マスク付き演算結果値と前記入力演算式情報で示される入力演算式の演算結果値を前記マスク付き演算結果値から得るマスク解除処理に使用される解除マスク値、又は、前記入力演算式情報で示される入力演算式の演算結果値、を出力するマスク付き演算ステップと、
    を実行させるためのコンピュータプログラム。
JP2013242244A 2013-11-22 2013-11-22 演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置 Pending JP2015102639A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013242244A JP2015102639A (ja) 2013-11-22 2013-11-22 演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013242244A JP2015102639A (ja) 2013-11-22 2013-11-22 演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置

Publications (1)

Publication Number Publication Date
JP2015102639A true JP2015102639A (ja) 2015-06-04

Family

ID=53378385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013242244A Pending JP2015102639A (ja) 2013-11-22 2013-11-22 演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置

Country Status (1)

Country Link
JP (1) JP2015102639A (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005318476A (ja) * 2004-04-30 2005-11-10 Toshiba Corp マスク論理回路及び暗号装置
JP2009005164A (ja) * 2007-06-22 2009-01-08 Dainippon Printing Co Ltd 暗号処理装置,暗号処理プログラム及び暗号処理方法
WO2013069392A1 (ja) * 2011-11-09 2013-05-16 Kddi株式会社 非線形処理器、ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、マスク処理方法、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005318476A (ja) * 2004-04-30 2005-11-10 Toshiba Corp マスク論理回路及び暗号装置
JP2009005164A (ja) * 2007-06-22 2009-01-08 Dainippon Printing Co Ltd 暗号処理装置,暗号処理プログラム及び暗号処理方法
WO2013069392A1 (ja) * 2011-11-09 2013-05-16 Kddi株式会社 非線形処理器、ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、マスク処理方法、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
伊藤 竜馬 ほか: "非線形変換を含む単純化ストリーム暗号KCipher−2へのGD攻撃", 情報処理学会研究報告 2012(平成24)年度▲6▼ [DVD−ROM], vol. 2013, no. 7, JPN6017018029, 15 April 2013 (2013-04-15), JP, pages p.1−7 *
響 崇史 ほか: "KCipher−2に対する相関電力解析とその対策", 2012 第29回 暗号と情報セキュリティシンポジウム [CD−ROM], vol. 3C1−2, JPN6017018031, 30 January 2012 (2012-01-30), JP, pages p.1−8 *

Similar Documents

Publication Publication Date Title
US8325928B2 (en) Security countermeasure for power analysis attacks
TW202013928A (zh) 多方安全計算方法及裝置、電子設備
JP5599728B2 (ja) ホワイトボックス実装
US20210165633A1 (en) Protection system and method
US20230379133A1 (en) Multiplicative masking for cryptographic operations
US20130259226A1 (en) Methods and apparatus for correlation protected processing of cryptographic operations
KR20110014630A (ko) 지수 불명료화
CN109495270A (zh) 数字签名生成中的临时乱数到消息的结合
US8707053B2 (en) Performing boolean logic operations using arithmetic operations by code obfuscation
CN114239019A (zh) 保护隐私数据的共有数据数目确定方法、装置和系统
Rao et al. A hybrid elliptic curve cryptography (HECC) technique for fast encryption of data for public cloud security
Brenna et al. TFHE-rs: A library for safe and secure remote computing using fully homomorphic encryption and trusted execution environments
TWI517655B (zh) 密碼裝置以及密鑰保護方法
US10075290B2 (en) Operator lifting in cryptographic algorithm
CN106788978A (zh) 变元分解限门掩码新方法
CN111602367B (zh) 用于保护在使白盒密码算法安全的对策中使用的熵源的方法
JP2015102639A (ja) 演算装置、演算方法、コンピュータプログラムおよびストリーム暗号化装置
JP6212377B2 (ja) 演算装置、演算方法およびコンピュータプログラム
EP3931999A1 (en) Method secured against side-channel attacks with a new masking scheme protecting linear operations of a cryptographic algorithm
JP6876423B2 (ja) ストリーム暗号における内部状態の初期化装置、方法及びプログラム
CN111480140A (zh) 计算设备和方法
WO2023021931A1 (ja) 情報処理プログラムおよび情報処理装置
US20230085577A1 (en) Secured performance of an elliptic curve cryptographic process
JP2006201641A (ja) 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム
KR20230018688A (ko) 경량 블록암호 pipo의 화이트박스 암호 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160721

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20160722

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170523

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20171114