JPWO2005098795A1 - コンピュータシステム、コンピュータプログラム及び加算方法 - Google Patents
コンピュータシステム、コンピュータプログラム及び加算方法 Download PDFInfo
- Publication number
- JPWO2005098795A1 JPWO2005098795A1 JP2006511988A JP2006511988A JPWO2005098795A1 JP WO2005098795 A1 JPWO2005098795 A1 JP WO2005098795A1 JP 2006511988 A JP2006511988 A JP 2006511988A JP 2006511988 A JP2006511988 A JP 2006511988A JP WO2005098795 A1 JPWO2005098795 A1 JP WO2005098795A1
- Authority
- JP
- Japan
- Prior art keywords
- group
- addition
- unit
- instruction
- mod
- 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.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/723—Modular exponentiation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
Description
このとき、鍵や暗号アルゴリズムなどを含む暗号ソフトウェアをコンピュータシステムにそのまま実装すると、実装された暗号ソフトウェアを解析された場合に、簡単に不正な使用がされてしまう。このような問題点を解決するために、特許文献1は、演算及びデータの領域を変換することにより、元の演算及びデータを推測困難にする技術を開示している。
予め、整数k1、k2を保持し、これらを用いて、入力データa、bを、それぞれta=k1×a+k2,tb=k1×b+k2に変換する。ここで、「×」は、乗算を示す演算子である。
さらに、tabに対して、c=(tab−2k2)/k1を計算する。
次に、演算結果cを出力する。
上記のように処理すると、
tab=ta+tb
=k1×a+k2+k1×b+k2
=k1×(a+b)+2k2より、
(tab−2k2)/k1=a+bが成り立つ。
ここで、前記コンピュータシステムは、対象情報を安全かつ確実に扱う情報セキュリティ装置であって、前記コンピュータプログラムは、さらに、対象情報にセキュリティ処理を施すセキュリティ命令群を含み、前記セキュリティ命令群は、加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いるとしてもよい。
ここで、前記群Gは、剰余整数環の乗法群であり、前記変換命令群は、各整数に冪乗を施し、演算命令群は、前記元に対して、乗算を施すとしてもよい。
この構成によると、変換後に施される演算は、乗算であり、加算と異なるので、演算を隠蔽することができる。
n=pm×qに対し、Z/nZの乗法群であり、前記変換命令群は、各整数に冪乗を施し、演算命令群は、前記元に対して、乗算を施すとしてもよい。
この構成によると、変換後に施される演算は、乗算であり、加算と異なるので、演算を隠蔽することができる。
ここで、さらに、前記逆変換命令群は、複数の冪数と、各冪数による冪乗値又は冪倍値とを対応付けて記憶しており、その対応付けを検索することにより、冪演算の逆算を求めるとしてもよい。
ここで、前記情報セキュリティ装置は、鍵情報に基づいて対象情報を暗号化し又は復号し、前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報を暗号化し又は復号し、暗号化又は復号において、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報との加算演算が含まれ、前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報とに、加算を施すとしてもよい。
ここで、前記情報セキュリティ装置は、鍵情報に基づいて対象情報にデジタル署名を施し又は署名検証を施し、前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報にデジタル署名を施し又は署名検証を施し、デジタル署名又は署名検証において、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報との加算演算が含まれ、前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報とに、加算を施すとしてもよい。
以上説明したように、本発明の構成によると、演算に使用する値の隠蔽だけでなく、演算そのものを隠蔽することができ、その価値は大きい。
本発明に係る第1の実施の形態としてのコンテンツ配信システム10について説明する。
1.1 コンテンツ配信システム10の構成
コンテンツ配信システム10は、図1に示すように、コンテンツサーバ装置100、配信サーバ装置300a、放送装置300b、BD製造装置300c、パーソナルコンピュータ200、デジタル放送受信装置200a及びBD再生装置200bから構成されている。
コンテンツサーバ装置100は、図2に示すように、マイクロプロセッサ101、ハードディスク部102、メモリ部103、入力制御部104、表示制御部105及び通信ユニット106などから構成されるコンピュータシステムである。入力制御部104及び表示制御部105は、それぞれ、キーボード107及びモニタ108に接続されている。また、通信ユニット106は、専用回線21、22及び23を介して、それぞれ、配信サーバ装置300a、放送装置300b及びBD製造装置300cに接続されている。
(1)ハードディスク部102
ハードディスク部102は、図2に示すように、コンテンツ120、コンテンツ121、コンテンツ122、・・・、鍵123、鍵124、鍵125、・・・、及び図示していないその他のコンピュータプログラムを記憶している。また、暗号化コンテンツ126、暗号化コンテンツ127、暗号化コンテンツ128、・・・を記憶するための領域を備えている。
コンテンツ120、コンテンツ121、コンテンツ122、・・・は、それぞれ、映像データ及び音データが高効率に圧縮符号化された圧縮データである。
(2)メモリ部103
メモリ部103は、図2に示すように、コンテンツ配信プログラム131、コンテンツ暗号プログラム132、暗号プログラム133、送信プログラム134及び図示していないその他のプログラムを記憶している。これらのプログラムは、それぞれ、機械語形式の複数の命令コードを組み合わせて構成されるコンピュータプログラムである。前記機械語形式は、マイクロプロセッサ101により解読され実行される形式である。
(a)コンテンツ配信プログラム131
コンテンツ配信プログラム131は、図3に示すように、命令コード群S101、S102、S103及びS104を含んで構成されており、これらの命令コード群は、コンテンツ配信プログラム131内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S102は、コンテンツの配信先の装置の指定を受け取ることを示す複数の命令コードを含む。
命令コード群S104は、受け取った指定による配信先の装置と、生成されハードディスク部102に書き込まれた暗号化コンテンツとを指定して、送信プログラム134を呼び出すことを示す複数の命令コードを含む。命令コード群S104が実行されることにより、受け取った指定により示される配信先の装置へ、生成された暗号化コンテンツが送信される。
コンテンツ暗号プログラム132は、図4に示すように、命令コード群S111、S112、S113、S114、S115及びS116を含んで構成されており、これらの命令コード群は、コンテンツ暗号プログラム132内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S114は、読み出された前記鍵及び読み出された前記1ブロックを伴って、暗号プログラム133を呼び出すことを示す複数の命令コードを含む。
命令コード群S116は、次に、制御を命令コード群S112へ移すことを示す命令コードを含む。
暗号プログラム133は、図5に示すように、暗号制御モジュール141、拡張鍵生成モジュール142及びローテーションモジュールA143、ローテーションモジュールB144、ローテーションモジュールC145及びローテーションモジュールD146から構成されている。
(拡張鍵生成モジュール142)
拡張鍵生成モジュール142は、呼出し元のプログラムから、64ビットの鍵Kを受け取り、受け取った鍵Kを用いて、8個の拡張鍵K1、K2、K3、・・・、K8を生成し、生成した8個の拡張鍵K1、K2、K3、・・・、K8を呼出し元のプログラムへ出力する複数の命令コードを含む。
(ローテーションモジュールA143)
ローテーションモジュールA143は、呼出し元のプログラムから32ビットのデータXを受け取り、データXに対して、Rot2(X)+X+1を演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
(ローテーションモジュールB144)
ローテーションモジュールB144は、呼出し元のプログラムから32ビットのデータXを受け取り、データXに対して、Rot4(X)XOR Xを演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
ローテーションモジュールC145は、呼出し元のプログラムから32ビットのデータXを受け取り、データXに対して、Rot8(X)XOR Xを演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
ここで、Rot8(X)は、データXを左へ8ビット循環シフトすることを示す。なお、32ビットのデータXを左へ8ビット循環シフトするとは、データXを最上位8ビットX1と最下位24ビットX2に分け、X2を、データXの最上位24ビットにシフトし、X1をデータXの最下位8ビットにシフトすることを言う。
ローテーションモジュールD146は、呼出し元のプログラムから32ビットのデータX及び32ビットのデータYを受け取り、データX及びデータYに対して、Rot16(X)+(X AND Y)を演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
暗号制御モジュール141は、図6及び図7に示すように、命令コード群S121〜命令コード群S140を含んで構成されており、これらの命令コード群は、暗号制御モジュール141内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含む。
命令コード群S122は、受け取った鍵Kを伴って、拡張鍵生成モジュール142を呼び出すことを示す複数の命令コードを含む。命令コード群S122が実行されると、その結果、8個の拡張鍵K1、K2、K3、・・・、K8が生成される。
命令コード群S124は、データM1とデータM2とに排他的論理和XORを施し、その演算結果を変数TMP1に格納することを示す複数の命令コードを含む。
命令コード群S125は、変数TMP1と拡張鍵K1とに加算を施し、その演算結果を変数TMP2に格納することを示す複数の命令コードを含む。
TMP2=TMP1 + K1
命令コード群S126は、変数TMP2を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP3に格納することを示す複数の命令コードを含む。
命令コード群S127は、変数TMP3を伴って、ローテーションモジュールB144を呼び出し、その演算結果を変数TMP4に格納することを示す複数の命令コードを含む。
TMP4=Rot4(TMP3) XOR TMP3
命令コード群S128は、変数TMP4とデータM1とに排他的論理和XORを施し、その演算結果を変数TMP5に格納することを示す複数の命令コードを含む。
命令コード群S129は、変数TMP5と拡張鍵K2とに加算を施し、その演算結果を変数TMP6に格納することを示す複数の命令コードを含む。
TMP6=TMP5 + K2
命令コード群S130は、変数TMP6を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP7に格納することを示す複数の命令コードを含む。
命令コード群S131は、変数TMP7を伴って、ローテーションモジュールC145を呼び出し、その演算結果を変数TMP8に格納することを示す複数の命令コードを含む。
TMP8=Rot8(TMP7)XOR TMP7
命令コード群S132は、変数TMP8と拡張鍵K3とに加算を施し、その演算結果を変数TMP9に格納することを示す複数の命令コードを含む。
命令コード群S133は、変数TMP9を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP10に格納することを示す複数の命令コードを含む。
TMP10=Rot2(TMP9)+TMP9+1
命令コード群S134は、変数TMP7及び変数TMP10を伴って、ローテーションモジュールD146を呼び出し、その演算結果を変数TMP11に格納することを示す複数の命令コードを含む。
命令コード群S135は、変数TMP11と変数TMP1とに排他的論理和XORを施し、その演算結果を変数TMP12に格納することを示す複数の命令コードを含む。
TMP12=TMP11 XOR TMP1
命令コード群S136は、変数TMP12と拡張鍵K4とに加算を施し、その演算結果を変数TMP13に格納することを示す複数の命令コードを含む。
命令コード群S137は、変数TMP13を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP14に格納することを示す複数の命令コードを含む。
TMP14=Rot2(TMP13)+TMP13+1
命令コード群S138は、変数TMP14と変数TMP4とに排他的論理和XORを施し、その演算結果を変数TMP15に格納することを示す複数の命令コードを含む。
命令コード群S139は、変数TMP15と変数TMP12とに排他的論理和XORを施し、その演算結果を変数TMP16に格納することを示す複数の命令コードを含む。
TMP16=TMP15 XOR TMP12
命令コード群S140は、変数TMP15を最上位32ビット、変数TMP16を最下位32ビットとする64ビットの整数を暗号文Cとして、呼出し元のプログラムへ出力することを示す複数の命令コードを含む。
送信プログラム134(図示していない)は、複数の命令コードが並べられて構成されており、呼出し元のプログラムから、データの指定及び配信先の装置の指定を受け取り、通信ユニット106を制御して、指示されたデータを指定された配信先の装置へ送信することを示す複数の命令コードを含む。
パーソナルコンピュータ200は、図8に示すように、マイクロプロセッサ201、ハードディスク部202、メモリ部203、入力制御部204、表示制御部205及び通信ユニット206などから構成されるコンピュータシステムである。入力制御部204及び表示制御部205は、それぞれ、キーボード707及びモニタ208に接続されている。また、通信ユニット206は、インターネット20に接続されている。
なお、デジタル放送受信装置200a及びBD再生装置200bは、パーソナルコンピュータ200と同様の構成を有しているので、これらの装置についての説明を省略する。
ハードディスク部202は、図8に示すように、鍵222を記憶しており、また暗号化コンテンツ221を記憶するための領域を備えている。暗号化コンテンツ221と鍵222とは、対応している。
暗号化コンテンツ221及び鍵222は、それぞれ、コンテンツサーバ装置100のハードディスク部102に記憶されている暗号化コンテンツ126及び鍵123と同じものである。
メモリ部203は、図8に示すように、コンテンツ受信プログラム231、コンテンツ復号プログラム232、再生プログラム233、復号プログラム234及び加算プログラム235を記憶している。また、メモリ部203は、復号コンテンツ領域236を含む。これらのプログラムは、それぞれ、機械語形式の複数の命令コードを組み合わせて構成されるコンピュータプログラムである。前記機械語形式は、マイクロプロセッサ201により解読され実行される形式である。
以下において、各コンピュータプログラムの内容を説明するが、各コンピュータプログラムの内容の理解を容易にするために、機械語形式の命令コードを用いた表現ではなく、フローチャートにより各コンピュータプログラムの内容を表現し、フローチャートを用いて、各コンピュータプログラムを説明する。
コンテンツ受信プログラム231は、図9に示すように、命令コード群S201、S202、S203及びS204を含んで構成されており、これらの命令コード群は、コンテンツ受信プログラム231内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S202は、指定を受け付けた前記コンテンツを識別するコンテンツ識別子を取得し、取得したコンテンツ識別子を、通信ユニット206及びインターネット20を介して、配信サーバ装置300aへ送信することを示す複数の命令コードを含んでいる。
命令コード群S204は、受信した暗号化コンテンツをハードディスク部202へ、暗号化コンテンツ221として書き込むことを示す複数の命令コードを含んでいる。
コンテンツ復号プログラム232は、図10に示すように、命令コード群S211、S212、S213、S214、S215、S216、S217及びS218を含んで構成されており、これらの命令コード群は、コンテンツ復号プログラム232内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S212は、メモリ部203に記憶されている再生プログラム233を呼び出すことを示す複数の命令コードを含んでいる。命令コード群S212が実行されることにより、その結果、コンテンツ復号プログラム232と再生プログラム233とが並行して実行される。
命令コード群S214は、前記読出しポイントに64ビットを加算し、次に、前記暗号化コンテンツにおいて、加算された読出しポイントにより示される位置から1ブロック分のデータの読出しを試みることを示す複数の命令コードと、読出しポイントにより示される位置が前記暗号化コンテンツ内であるならば、当該位置から1ブロック分のデータを読み出し、読出しポイントにより示される位置が前記暗号化コンテンツの外を示すならば、ブロックの読み出しが終了したことを示す終了コードを出力することを示す複数の命令コードとを含んでいる。ここで、1ブロックは、64ビット長のデータである。
命令コード群S216は、読み出された前記鍵及び読み出された前記1ブロックを伴って、復号プログラム234を呼び出すことを示す複数の命令コードを含んでいる。
命令コード群S218は、次に制御を命令コード群S214へ移すことを示す命令コードを含んでいる。
再生プログラム233は、図10に示すように、命令コード群S218、S219及びS220を含んで構成されており、これらの命令コード群は、再生プログラム233は内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S219は、読み出した前記復号ブロックから映像データ及び音データを生成し、生成した映像データ及び音データを映像信号及び音信号に変換して、表示制御部205を介して、モニタ208へ出力することを示す複数の命令コードを含んでいる。
(d)復号プログラム234
復号プログラム234は、図11に示すように、復号制御モジュール241、拡張鍵生成モジュール242、加算モジュール243、ローテーションモジュールA244、ローテーションモジュールB245、ローテーションモジュールC246及びローテーションモジュールD247から構成されている。
拡張鍵生成モジュール242、ローテーションモジュールA244、ローテーションモジュールB245、ローテーションモジュールC246及びローテーションモジュールD247は、それぞれ、図5に示す拡張鍵生成モジュール142、ローテーションモジュールA143、ローテーションモジュールB144、ローテーションモジュールC145及びローテーションモジュールD146と同じであるので、説明を省略する。
復号制御モジュール241は、図12及び図13に示すように、命令コード群S221〜命令コード群S240を含んで構成されており、これらの命令コード群は、復号制御モジュール241内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含む。
命令コード群S222は、受け取った鍵Kを伴って、拡張鍵生成モジュール242を呼び出すことを示す複数の命令コードを含む。命令コード群S222が実行されると、その結果、8個の拡張鍵K1、K2、K3、・・・、K8が生成される。
命令コード群S224は、データM1とデータM2とに排他的論理和XORを施し、その演算結果を変数TMP1に格納することを示す複数の命令コードを含む。
命令コード群S225は、変数TMP1と拡張鍵K1とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP2に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP2=TMP1 + K1が算出される。
TMP3=Rot2(TMP2)+TMP2+1
命令コード群S227は、変数TMP3を伴って、ローテーションモジュールB245を呼び出し、その演算結果を変数TMP4に格納することを示す複数の命令コードを含む。
命令コード群S228は、変数TMP4とデータM1とに排他的論理和XORを施し、その演算結果を変数TMP5に格納することを示す複数の命令コードを含む。
TMP5=TMP4 XOR M1
命令コード群S229は、変数TMP5と拡張鍵K2とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP6に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP6=TMP5 + K2が算出される。
TMP7=Rot2(TMP6)+TMP6+1
命令コード群S231は、変数TMP7を伴って、ローテーションモジュールC246を呼び出し、その演算結果を変数TMP8に格納することを示す複数の命令コードを含む。
命令コード群S232は、変数TMP8と拡張鍵K3とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP9に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP9=TMP8 + K3が算出される。
TMP10=Rot2(TMP9)+TMP9+1
命令コード群S234は、変数TMP7及び変数TMP10を伴って、ローテーションモジュールD247を呼び出し、その演算結果を変数TMP11に格納することを示す複数の命令コードを含む。
命令コード群S235は、変数TMP11と変数TMP1とに排他的論理和XORを施し、その演算結果を変数TMP12に格納することを示す複数の命令コードを含む。
TMP12=TMP11 XOR TMP1
命令コード群S236は、変数TMP12と拡張鍵K4とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP13に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP13=TMP12 + K4が算出される。
TMP14=Rot2(TMP13)+TMP13+1
命令コード群S238は、変数TMP14と変数TMP4とに排他的論理和XORを施し、その演算結果を変数TMP15に格納することを示す複数の命令コードを含む。
命令コード群S239は、変数TMP15と変数TMP12とに排他的論理和XORを施し、その演算結果を変数TMP16に格納することを示す複数の命令コードを含む。
TMP16=TMP15 XOR TMP12
命令コード群S240は、変数TMP15を最上位32ビット、変数TMP16を最下位32ビットとする64ビットの整数を復号文Cとして、呼出し元のプログラムへ出力することを示す複数の命令コードを含む。
加算モジュール243は、入力データa、bに対し、データa+bを演算し、データa+bを出力するコンピュータプログラムであり、図14に示すように、変換部251、主要演算部252及び逆変換部253から構成されており、変換部251は、パラメタ格納部261及びべき乗演算部262を含み、主要演算部252は、パラメタ格納部263及び乗算部264を含み、逆変換部253は、パラメタ格納部265、離散対数計算部266及びCRT(Chinese Remainder Theorem)部267を含む。
ここで、加算モジュール243で使用する各種パラメータ及び記号の定義、並びに入力データの条件について説明する。
pi(i=1,2,…,k)を、それぞれ異なる素数とする。例えば、pi
(i=1,2,…,k)は、p1=3、p2=5、p3=7、p4=13、・・・などのように、それぞれ小さい素数である。また、例えば、k=17である。また、それらの積p1×p2×…×pkをnとする。ここで、×は乗算を示す。nは、例えば、64ビット程度で表現できる数である。例えば、k=17のとき、n=p1×p2×…×pk>264となる。
加算モジュール243では、mod nの整数から構成される剰余整数環Z/nZの乗法群の演算を用いる。gは、その乗法群に属する予め与えられた数であり、pi(i=1,2,…,k)に対して原始元とする。
L=LCM(p1−1,p2−1,…,pk−1)とする。ここで、LCM(p1−1,p2−1,…,pk−1)は、p1−1,p2−1,…,pk−1の最小公倍数(Least Common Multiple)を示す。
(ii)変換部251の構成
変換部251は、パラメタ格納部261及びべき乗演算部262を含む。
パラメタ格納部261は、nとgとを格納している。
べき乗演算部262は、入力データa、bを受け取り、受け取った入力データa、bに対し、
ga=gamod n,及び
gb=gbmod nを計算し、得られたga及びgbを主要演算部252へ出力する。
主要演算部252は、パラメタ格納部263及び乗算部264を含む。
パラメタ格納部263は、nを格納している。
乗算部264は、べき乗演算部262からga及びgbを受け取り、受け取ったga及びgbに対し、
gab=ga×gbmod nを計算し、得られたgabを逆変換部253へ出力する。
逆変換部253は、パラメタ格納部265、離散対数計算部266及びCRT部267を含む。
パラメタ格納部265は、p1、p2、・・・、pkを格納している。
離散対数計算部266は、乗算部264からgabを受け取り、
受け取ったgabについて、g mod piに対するgabmod pi(i=1,2,…,k)の離散対数cimod pi−1(i=1,2,…,k)を計算する。
離散対数計算部266によるci mod pi−1の計算方法については、様々なものがあるが、以下にその一例を示す。
g(pi−2)mod piを計算した結果をテーブルとして保持し、そのテーブルの値から、gabmod piと一致するgwを探す、としてもよい。
CRT部267は、離散対数計算部266からcimod pi−1(i=1,2,…,k)を受け取り、中国人剰余定理(CRT)により、受け取ったcimod pi−1(i=1,2,…,k)から、gabmod nのg mod nに対する離散対数c mod Lを求める。つまり、中国人剰余定理により、ci=c mod pi−1(i=1,2,…,k)となるcを求める。
ここで、式が複雑になるのを避けるために、mi=pi−1とおく。
u2=m1×(m1 −1mod(m2/GCD(m1,m2)))×(c2−c1)+c1を計算する。
次に、
u3=(m1×m2)×((m1×m2)−1mod(m3/GCD(m1,m2,m3)))×(c3−u2)+u2
を計算し、
u4=(m1×m2×m3)×((m1×m2×m3)−1mod(m4/GCD(m1,m2,m3,m4)))
×(c4−u3)+u3を計算し、
以下順に、同様に、u5,u6,・・・,uk−1を計算し、
uk=(m1×m2×m3×・・・×mk−1)×((m1×m2×m3・・・×mk−1)−1
mod(mk/GCD(m1,m2,m3,m4・・・,mk−1)))×(ck−uk−1)+uk−1を計算する。
なお、CRT部267よるci(i=1,2,...,k)から,
c mod pi−1=ciを満たすc mod Lを計算する方法については、非特許文献2に詳しく述べられている。
次に、CRT部267は、得られたcを加算モジュール243の呼び出し元のプログラムへ出力する。
加算モジュール243による加算の動作について、図15に示すフローチャートを用いて説明する。
べき乗演算部262は、加算モジュール243の呼び出し元のプログラムから入力データa、bを受け取り(ステップS301)、受け取った入力データa、bに対し、ga=gamod n,gb=gbmod nを計算する(ステップS302〜S303)。
次に、離散対数計算部266は、gab=gcimod pi(i=1,2,…,k)となるcimod pi−1を求め(ステップS305)、CRT部267は、中国人剰余定理(CRT)により、ci=c mod pi−1(i=1,2,…,k)となるcを求め(ステップS306)、次に、得られたcを加算モジュール243の呼び出し元のプログラムへ出力する(ステップS307)。
以下で、加算モジュール243が、入力データa、bに対し、データa+bを出力していることを検証する。
変換部251において、入力データa、bに対し、ga=gamod n,
gb=gbmod nを計算し、主要演算部252において、
gab=ga×gbmod nを計算する。このとき、gab=g(a+b)mod nを満たすことは明らかである。
逆変換部253では、gとgabからgab=gcimod pi(i=1,2,…,k)を満たすciを計算し、その結果を用いて、c=cimod pi−1を満たすc mod Lを計算する。このとき、cはgab=gc
mod nを満たす。なぜなら、a+b=c mod Lより、g(a+b+c)=1 mod nとなるためである。したがって、g(a+b)mod n=gcmod nを満たすため、a+b=c mod((p1−1)×(p2−1)×…×(pk−1))を満たす。a<L/2,b<L/2よりa+b<Lであるので、加算モジュール243は、入力データaと入力データbとの加算結果であるデータa+bを出力していることになる。
加算モジュール243は、加算を行う値を変換している。変換部251及び逆変換部253が解析困難な場合であっても、解析者はga,gb,gabの値を知り、ga,gbからgabを計算する処理を知る可能性がある。このような場合であっても、変換後の値ga,gbから変換前の値a,bを推測することは困難である。さらに、加算モジュール243は、主要演算部252において、乗算を行っており、この乗算という演算から加算モジュール243が加算を実現していることを推測することは困難である。したがって、加算を行う入力の値の隠蔽だけではなく、加算という演算自体も隠蔽できることになり、第1の実施の形態は有効である。
第1の実施の形態における加算モジュール243の代わりに、加算モジュール501を採用するとしてもよい。ここでは、加算モジュール501について説明する。
2.1 加算モジュール501の構成
加算モジュール501は、加算モジュール243と同様に、入力データa、bに対し、データa+bを演算し、データa+bを出力するコンピュータプログラムであり、図16に示すように、変換部511、主要演算部512及び逆変換部513から構成されており、変換部511は、パラメタ格納部521、乱数発生部522及びべき乗演算部523を含み、主要演算部512は、パラメタ格納部524及び乗算部525を含み、逆変換部513は、パラメタ格納部526、離散対数計算部527及び還元部528を含む。
ここで、加算モジュール501で使用する各種パラメータ及び記号の定義、並びに入力データの条件について説明する。
p,qを素数とし、n=p2×qとする。p,qは、逆変換部513により保持され、nは、それぞれ、変換部511及び主要演算部512により保持される。
gp=g(p−1)mod p2と定義する。
入力データa、bは、p/2より小さい非負整数とする。
変換部511は、パラメタ格納部521、乱数発生部522及びべき乗演算部523から構成されている。
パラメタ格納部521は、nとgとを記憶している。
乱数発生部522は、n以下の乱数R1,R2を生成する。
ga=g^(a+n×R1)mod n、
gb=g^(b+n×R2)mod nを計算する。
なお、本明細書において、記号「^」は、べき乗を示す演算子である。例えば、a^b=abである。本明細書において、表現上の都合により、a^b及び
abの両方の表記を使い分けている。
2.4 主要演算部512の構成
主要演算部512は、パラメタ格納部524及び乗算部525から構成されている。
パラメタ格納部524は、nを記憶している。
乗算部525は、べき乗演算部523から計算結果ga,gbを受け取り、受け取ったga,gbに対し、
gab=ga×gbmod nを計算し、計算結果gabを逆変換部513へ出力する。
逆変換部513は、パラメタ格納部526、離散対数計算部527及び還元部528から構成されている。
パラメタ格納部526は、pを格納している。
離散対数計算部527は、乗算部525から計算結果gabを受け取り、受け取ったgabに対し、パラメタ格納部526に格納されているpを用いて、
cp=gab (p−1)mod p2を計算し、次に、cpを還元部528へ出力する。
受け取ったcpを用いて、mod p2におけるgpに対するcpの離散対数cを計算し、計算して得られたcを、呼び出し元のプログラムへ出力する。
還元部528におけるcの計算方法については、特許文献2に詳しく述べられている。具体的には、以下のように行う。
2.6 加算モジュール501による加算の動作
加算モジュール501による加算の動作について、図17に示すフローチャートを用いて説明する。
べき乗演算部523は、呼び出し元のプログラムから入力データa、bを受け取り(ステップS311)、乱数発生部522は、n以下の乱数R1,R2を生成し(ステップS312)、べき乗演算部523は、
ga=g^(a+n×R1)mod n、
gb=g^(b+n×R2)mod nを計算する(ステップS313〜S314)。
次に、乗算部525は、gab=ga×gbmod nを計算する(ステップS315)。
以下において、加算モジュール501が、入力データa、bに対し、a+bを出力していることを検証する。
変換部511において、a,bに対し、
ga=g^(a+n×R1)mod n、
gb=g^(b+n×R2)mod nを計算し、
主要演算部512において、gab=ga×gb mod nを計算する。このとき、gab=g^(a+b+n×(R1+R2))mod nを満たすことは明らかである。逆変換部513では、まず、
cp=gab (p−1)−gp^(a+b+n×(R1+R2))mod p2となり、
gp p=1 mod p2より、
gp n=1 mod p2であるため、
cp=gp (a+b)mod p2となる。
cp=gp cmod p2が成り立つ。したがって、
c=a+b mod pであり、a<p/2,b<p/2より、a+b<pであるため、加算モジュール501は、入力データaとbの加算結果a+bを出力していることになる。
加算モジュール501は、第1の実施の形態1の加算モジュール243と同様に、加算を行う値を変換しており、変換部511及び逆変換部513が解析困難な場合に、変換後の値から変換前の値を推測することは困難である。さらに、加算モジュール501は、主要演算部512において、乗算を行っており、この乗算という演算から加算モジュール501が加算を実現していることを推測することは困難である。したがって、加算を行う入力の値の隠蔽だけではなく、加算という演算自体も隠蔽できることになり、この発明は有効である。
加算モジュール501では、剰余整数環Z/nZの乗法群における冪乗演算を変換部511で行い、その乗法群の部分群である剰余整数環Z/p2Zの乗法群における離散対数問題を逆変換部513で解いている。ここで、もし、解析者がp,qは分からないが、変換部511で冪乗演算を行っていることを解析できた場合を考える。このケースは、すなわち、逆変換部513のみが解析者により解析困難である場合である。この場合においても、nの大きさが素因数分解が困難なぐらい、例えば、1024ビットぐらいであれば、nの素因数分解結果であるp,qを得ることが困難になる。また、p,qが得られなければ、剰余整数環Z/nZの乗法群における離散対数問題を解くことが困難になる。一般に乗法群の大きさ(元の数)が1024ビットの数のように大きい場合は、それ上の離散対数問題も困難になる。加算モジュール501では、pが既知の場合は逆変換部513における逆変換の方法によって、Z/p2Zの乗法群における離散対数問題を容易に解けるようになる。加算モジュール501における変換はこのように、pが既知であれば逆変換が容易であるが、既知でなければ困難であることを利用している点が、加算モジュール2431と異なる。
加算モジュール501は、次のように構成してもよい。
p,qを素数とし、n=pm×qとする。mは、正整数である。また、加算モジュール501では、mod nの整数から構成される剰余整数環Z/nZの乗法群の演算を用いる。gは、その乗法群に属する予め与えられた数でありg(p−1)mod pmの位数がpである数とする。また、gp=g(p−1)mod pmと定義する。
cp=gab (p−1)mod pmを計算し、次に、cpを還元部528へ出力する。
還元部528は、離散対数計算部527からcpを受け取り、
受け取ったcpを用いて、mod pmにおけるgpに対するcpの離散対数cを計算し、計算して得られたcを、呼び出し元のプログラムへ出力する。
第1の実施の形態における加算モジュール243の代わりに、加算モジュール601を採用するとしてもよい。ここでは、加算モジュール601について説明する。加算モジュール601は、楕円曲線上のスカラ倍演算を利用している。楕円曲線については、非特許文献3に詳しく説明されている。
加算モジュール601は、加算モジュール243と同様に、入力データa、bに対し、データa+bを演算し、データa+bを出力するコンピュータプログラムであり、図18に示すように、変換部611、主要演算部612及び逆変換部613から構成されており、変換部611は、パラメタ格納部621及びスカラ倍演算部622を含み、主要演算部612は、パラメタ格納部623及び楕円曲線加算部624を含み、逆変換部613は、パラメタ格納部625、還元部626及び離散対数計算部627を含む。
ここで、加算モジュール601で使用する各種パラメータ及び記号の定義、並びに入力データの条件について説明する。
p、qを素数とし、n=p×qとする。p、qは、逆変換部613により保持され、nは、それぞれ、変換部611及び主要演算部612により保持されている。
y2=x3+A×x+Bとする。ここで、A、Bは、楕円曲線Eのパラメータである。
G=(xg,yg)mod nを楕円曲線E上の点とする。すなわち、
yg 2=xg 3+A×xg+B mod nを満たす。
A、B、Gは、変換部611、主要演算部612、逆変換部613により保持される。
Z/nZ上の楕円曲線の群を
E(GF(p))とE(GF(q))との
直積E(GF(p))×E(GF(q))で表す。なお、Z/nZは体ではなく、環であるため、数学的には楕円曲線とは呼べないが、ここでは便宜上、その直積Z/nZ上の楕円曲線の群とよぶ。
E(GF(q))上の点Gq=(xgq,ygq)mod qとに対応するZ/nZ上の楕円曲線E(GF(p))×E(GF(q))の
点G=(xg,yg)mod nについて、
xgを
xgmod p=xgp及び
xgmod q=xgqを満たす数と定義し、
ygを
ygmod p=ygp及び
xgmod q=xgqを満たす数と定義する。
E(GF(p))×E(GF(q))上の点G=(xg,yg)mod nに対応するE(GF(p))上の点Gpを
Gp=(xgp,ygp)mod pとし、
E(GF(q))上の点GqをGq=(xgq,ygq)とすることで、
E(GF(p)),E(GF(q))をE(GF(p))×E(GF(q))の部分群とみなす。
さらに、mod qでの楕円曲線の位数がqである、すなわち、GF(q)上でもアノマラス楕円曲線であるとする。
このとき、Z/nZ上の楕円曲線の群はE(GF(p))×E(GF(q))であるので、楕円曲線の位数は、
n(=p×q)となる。
3.3 変換部611の構成
変換部611は、パラメタ格納部621及びスカラ倍演算部622から構成されている。
パラメタ格納部621は、n、A、B、Gを記憶している。
Ga=a*G mod n及び
Gb=b*G mod nを計算する。
スカラ倍演算部622は、計算結果Ga,Gbを主要演算部612へ出力する。
3.4 主要演算部612の構成
主要演算部612は、パラメタ格納部623及び楕円曲線加算部624から構成されている。
楕円曲線加算部624は、スカラ倍演算部622から計算結果Ga,Gbを受け取り、パラメタ格納部623に記憶されているn、A、Bを用いて、Ga及びGbに対して、楕円曲線加算を実行して、
Gab=Ga+Gbmod n
を計算し、その計算結果Gabを逆変換部613へ出力する。
逆変換部613は、パラメタ格納部625、還元部626及び離散対数計算部627から構成されている。
パラメタ格納部625は、p,A,B,G mod pを記憶している。
還元部626は、楕円曲線加算部624から計算結果Gabを受け取り、受け取ったGabに対し、パラメタ格納部625に格納されているpを用いて、
Gabp=Gabmod pを計算し、計算結果を離散対数計算部627へ出力する。
ここで、楕円離散対数計算部627におけるcは、アノマラス楕円曲線上の離散対数問題の解である。アノマラス楕円曲線上の離散対数問題を解く方法については、非特許文献3の88〜91ページに詳しく説明されている。計算方法はこの文献に記載されているため、ここでは説明を省略する。
加算モジュール601の動作について、図19に示すフローチャートを用いて説明する。
スカラ倍演算部622は、呼び出し元のプログラムから、入力データa、bを受け取り(ステップS321)、受け取った入力データa、bに対し、パラメータ格納部621に格納されているn、A、B、Gを用いて、
Ga=a*G mod n及び
Gb=b*G mod nを計算する(ステップS322〜S323)。
Gab=Ga+Gbmod nを計算する(ステップS324)。
次に、還元部626は、
Gabp=Gabmod pを計算し(ステップS325)、
離散対数計算部627は、G mod pに対するGabpの離散対数cを計算し(ステップS326)、次に、cを呼び出し元のプログラムへ出力する(ステップS327)。
以下において、加算モジュール601が、入力データa,bに対し、a+bを計算して出力していることを検証する。
変換部611において、a,bに対し、
Ga=a*G mod n,
Gb=b*G mod nを計算し、
主要演算部612において、
Gab=Ga+Gb mod nを計算する。
逆変換部613において、まず、
Gabp=Gab mod pを計算し、
G mod pに対するGabpの離散対数cを求める。
すなわち、Gabp=c*G mod pが成り立つ。
3.8 加算モジュール601の効果
加算モジュール601は、加算モジュール243及び、加算モジュール501と同様に、加算を行う値を変換しており、変換部611及び逆変換部613が解析困難な場合に、変換後の値から変換前の値を推測することは困難である。
従って、整数の加算を行う入力の値の隠蔽だけではなく、整数の加算という演算自体も隠蔽できることになり、加算モジュール601は、有効である。
加算モジュール601では、Z/nZ上の楕円曲線の群E(GF(p))×E(GF(q))のスカラ倍演算を変換部で行い、その部分群であるE(GF(p))における離散対数問題を逆変換部で解いている。
ここで、もし、解析者がp,qは分からないが、変換部で冪乗演算を行っていることを解析できた場合を考える。このケースは、すなわち、逆変換部のみが解析者により解析困難である場合である。
一般に群の大きさ(元の数)が1024ビットの数のように大きい場合は、それ上の離散対数問題も困難になる。加算モジュール601では、pが既知の場合は逆変換モジュールにおける逆変換の方法によって、楕円曲線の群E(GF(p))における離散対数問題を容易に解けるようになる。加算モジュール601における変換はこのように、pが既知であれば逆変換が容易であるが、既知でなければ困難であることを利用している点が、第1の実施の形態と異なる。
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)加算モジュール243、501及び601において、2個の非負整数a及びbの加算を行うとしているが、各加算モジュールは、3個、又はそれ以上の個数の非負整数の加算を行うとしてもよい。この場合に、各加算モジュールの変換部は、それぞれの非負整数を変換し、加算モジュール243及び501の主要演算部は、それぞれの変換結果に対して乗算を施し、加算モジュール601の主要演算部は、それぞれの変換結果に対して、楕円曲線加算を施す。
(3)第1の実施の形態では、各加算モジュールを復号制御モジュール241に適用するとしているが、上記の暗号制御モジュール141や、他の暗号プログラム、復号プログラム、デジタル署名を生成する署名生成プログラムに適用するとしてもよい。このように、加算による演算が出現する情報処理演算であれば、どのようなものであっても適用することができる。
また、加算モジュール243及び501においては、冪乗演算を行って、整数を変換し、加算モジュール601においては、楕円曲線のスカラ倍演算を行って、整数を変換するとしているが、その他の群の冪演算を行うことにより変換するとしてもよい。
したがって、剰余整数環の乗法群の冪演算は冪乗演算、楕円曲線上の群の冪演算は楕円曲線のスカラ倍演算である。
加算モジュール501では、剰余整数環Z/nZの乗法群の「部分群」である、剰余整数環Z/p2Zの乗法群において離散対数問題を解いている。その他の群を使用する場合は、加算モジュール501と同様に逆変換部でその他の群の「部分群」において離散対数問題を解くとしてもよい。
その場合は、gmi=1 mod pi(mi>0)となるmiに対し、
L=m1×m2×…×mkとする。
(6)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは、前記コンピュータプログラムに含まれる各命令を1個ずつ読み出し、読み出した命令を解読し、解読結果に従って動作する。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
(10)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(11)以上説明したように、本発明によると、演算に使用する値の隠蔽だけでなく、演算そのものを隠蔽することができる。したがって、本技術を用いた難読化ソフトウェアをICカード等の機器に組み込むことは有用である。
このとき、鍵や暗号アルゴリズムなどを含む暗号ソフトウェアをコンピュータシステムにそのまま実装すると、実装された暗号ソフトウェアを解析された場合に、簡単に不正な使用がされてしまう。このような問題点を解決するために、特許文献1は、演算及びデータの領域を変換することにより、元の演算及びデータを推測困難にする技術を開示している。
予め、整数k1 、k2 を保持し、これらを用いて、入力データa、bを、それぞれta =k1×a+k2 ,tb =k1 ×b+k2 に変換する。ここで、「×」は、乗算を示す演算子である。
次にta ,tb に対して、tab=ta +tbを計算する。
次に、演算結果cを出力する。
上記のように処理すると、
tab=ta +tb
=k1 ×a+k2 +k1 ×b+k2
=k1 ×(a+b)+2k2 より、
(tab−2k2 )/k1 =a+bが成り立つ。
ここで、前記コンピュータシステムは、対象情報を安全かつ確実に扱う情報セキュリティ装置であって、前記コンピュータプログラムは、さらに、対象情報にセキュリティ処理を施すセキュリティ命令群を含み、前記セキュリティ命令群は、加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いるとしてもよい。
ここで、前記群Gは、剰余整数環の乗法群であり、前記変換命令群は、各整数に冪乗を施し、演算命令群は、前記元に対して、乗算を施すとしてもよい。
この構成によると、変換後に施される演算は、乗算であり、加算と異なるので、演算を隠蔽することができる。
n=pm ×qに対し、Z/nZの乗法群であり、前記変換命令群は、各整数に冪乗を施し、演算命令群は、前記元に対して、乗算を施すとしてもよい。
この構成によると、変換後に施される演算は、乗算であり、加算と異なるので、演算を隠蔽することができる。
ここで、さらに、前記逆変換命令群は、複数の冪数と、各冪数による冪乗値又は冪倍値とを対応付けて記憶しており、その対応付けを検索することにより、冪演算の逆算を求めるとしてもよい。
ここで、前記情報セキュリティ装置は、鍵情報に基づいて対象情報を暗号化し又は復号し、前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報を暗号化し又は復号し、暗号化又は復号において、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報との加算演算が含まれ、前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報とに、加算を施すとしてもよい。
ここで、前記情報セキュリティ装置は、鍵情報に基づいて対象情報にデジタル署名を施し又は署名検証を施し、前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報にデジタル署名を施し又は署名検証を施し、デジタル署名又は署名検証において、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報との加算演算が含まれ、前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報とに、加算を施すとしてもよい。
以上説明したように、本発明の構成によると、演算に使用する値の隠蔽だけでなく、演算そのものを隠蔽することができ、その価値は大きい。
本発明に係る第1の実施の形態としてのコンテンツ配信システム10について説明する。
1.1 コンテンツ配信システム10の構成
コンテンツ配信システム10は、図1に示すように、コンテンツサーバ装置100、配信サーバ装置300a、放送装置300b、BD製造装置300c、パーソナルコンピュータ200、デジタル放送受信装置200a及びBD再生装置200bから構成されている。
コンテンツサーバ装置100は、図2に示すように、マイクロプロセッサ101、ハードディスク部102、メモリ部103、入力制御部104、表示制御部105及び通信ユニット106などから構成されるコンピュータシステムである。入力制御部104及び表示制御部105は、それぞれ、キーボード107及びモニタ108に接続されている。また、通信ユニット106は、専用回線21、22及び23を介して、それぞれ、配信サーバ装置300a、放送装置300b及びBD製造装置300cに接続されている。
(1)ハードディスク部102
ハードディスク部102は、図2に示すように、コンテンツ120、コンテンツ121、コンテンツ122、・・・、鍵123、鍵124、鍵125、・・・、及び図示していないその他のコンピュータプログラムを記憶している。また、暗号化コンテンツ126、暗号化コンテンツ127、暗号化コンテンツ128、・・・を記憶するための領域を備えている。
コンテンツ120、コンテンツ121、コンテンツ122、・・・は、それぞれ、映像データ及び音データが高効率に圧縮符号化された圧縮データである。
(2)メモリ部103
メモリ部103は、図2に示すように、コンテンツ配信プログラム131、コンテンツ暗号プログラム132、暗号プログラム133、送信プログラム134及び図示していないその他のプログラムを記憶している。これらのプログラムは、それぞれ、機械語形式の複数の命令コードを組み合わせて構成されるコンピュータプログラムである。前記機械語形式は、マイクロプロセッサ101により解読され実行される形式である。
(a)コンテンツ配信プログラム131
コンテンツ配信プログラム131は、図3に示すように、命令コード群S101、S102、S103及びS104を含んで構成されており、これらの命令コード群は、コンテンツ配信プログラム131内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S102は、コンテンツの配信先の装置の指定を受け取ることを示す複数の命令コードを含む。
命令コード群S104は、受け取った指定による配信先の装置と、生成されハードディスク部102に書き込まれた暗号化コンテンツとを指定して、送信プログラム134を呼び出すことを示す複数の命令コードを含む。命令コード群S104が実行されることにより、受け取った指定により示される配信先の装置へ、生成された暗号化コンテンツが送信される。
コンテンツ暗号プログラム132は、図4に示すように、命令コード群S111、S112、S113、S114、S115及びS116を含んで構成されており、これらの命令コード群は、コンテンツ暗号プログラム132内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S114は、読み出された前記鍵及び読み出された前記1ブロックを伴って、暗号プログラム133を呼び出すことを示す複数の命令コードを含む。
命令コード群S116は、次に、制御を命令コード群S112へ移すことを示す命令コードを含む。
暗号プログラム133は、図5に示すように、暗号制御モジュール141、拡張鍵生成モジュール142及びローテーションモジュールA143、ローテーションモジュールB144、ローテーションモジュールC145及びローテーションモジュールD146から構成されている。
(拡張鍵生成モジュール142)
拡張鍵生成モジュール142は、呼出し元のプログラムから、64ビットの鍵Kを受け取り、受け取った鍵Kを用いて、8個の拡張鍵K1、K2、K3、・・・、K8を生成し、生成した8個の拡張鍵K1、K2、K3、・・・、K8を呼出し元のプログラムへ出力する複数の命令コードを含む。
(ローテーションモジュールA143)
ローテーションモジュールA143は、呼出し元のプログラムから32ビットのデータXを受け取り、データXに対して、Rot2(X)+X+1を演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
(ローテーションモジュールB144)
ローテーションモジュールB144は、呼出し元のプログラムから32ビットのデータXを受け取り、データXに対して、Rot4(X) XOR Xを演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
ローテーションモジュールC145は、呼出し元のプログラムから32ビットのデータXを受け取り、データXに対して、Rot8(X) XOR Xを演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
ここで、Rot8(X)は、データXを左へ8ビット循環シフトすることを示す。なお、32ビットのデータXを左へ8ビット循環シフトするとは、データXを最上位8ビットX1と最下位24ビットX2に分け、X2を、データXの最上位24ビットにシフトし、X1をデータXの最下位8ビットにシフトすることを言う。
ローテーションモジュールD146は、呼出し元のプログラムから32ビットのデータX及び32ビットのデータYを受け取り、データX及びデータYに対して、Rot16(X)+(X AND Y)を演算し、演算結果を呼出し元のプログラムへ出力する複数の命令コードを含む。
暗号制御モジュール141は、図6及び図7に示すように、命令コード群S121〜命令コード群S140を含んで構成されており、これらの命令コード群は、暗号制御モジュール141内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含む。
命令コード群S122は、受け取った鍵Kを伴って、拡張鍵生成モジュール142を呼び出すことを示す複数の命令コードを含む。命令コード群S122が実行されると、その結果、8個の拡張鍵K1、K2、K3、・・・、K8が生成される。
命令コード群S124は、データM1とデータM2とに排他的論理和XORを施し、その演算結果を変数TMP1に格納することを示す複数の命令コードを含む。
命令コード群S125は、変数TMP1と拡張鍵K1とに加算を施し、その演算結果を変数TMP2に格納することを示す複数の命令コードを含む。
TMP2=TMP1 + K1
命令コード群S126は、変数TMP2を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP3に格納することを示す複数の命令コードを含む。
命令コード群S127は、変数TMP3を伴って、ローテーションモジュールB144を呼び出し、その演算結果を変数TMP4に格納することを示す複数の命令コードを含む。
TMP4=Rot4(TMP3) XOR TMP3
命令コード群S128は、変数TMP4とデータM1とに排他的論理和XORを施し、その演算結果を変数TMP5に格納することを示す複数の命令コードを含む。
命令コード群S129は、変数TMP5と拡張鍵K2とに加算を施し、その演算結果を変数TMP6に格納することを示す複数の命令コードを含む。
TMP6=TMP5 + K2
命令コード群S130は、変数TMP6を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP7に格納することを示す複数の命令コードを含む。
命令コード群S131は、変数TMP7を伴って、ローテーションモジュールC145を呼び出し、その演算結果を変数TMP8に格納することを示す複数の命令コードを含む。
TMP8=Rot8(TMP7) XOR TMP7
命令コード群S132は、変数TMP8と拡張鍵K3とに加算を施し、その演算結果を変数TMP9に格納することを示す複数の命令コードを含む。
命令コード群S133は、変数TMP9を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP10に格納することを示す複数の命令コードを含む。
TMP10=Rot2(TMP9)+TMP9+1
命令コード群S134は、変数TMP7及び変数TMP10を伴って、ローテーションモジュールD146を呼び出し、その演算結果を変数TMP11に格納することを示す複数の命令コードを含む。
命令コード群S135は、変数TMP11と変数TMP1とに排他的論理和XORを施し、その演算結果を変数TMP12に格納することを示す複数の命令コードを含む。
TMP12=TMP11 XOR TMP1
命令コード群S136は、変数TMP12と拡張鍵K4とに加算を施し、その演算結果を変数TMP13に格納することを示す複数の命令コードを含む。
命令コード群S137は、変数TMP13を伴って、ローテーションモジュールA143を呼び出し、その演算結果を変数TMP14に格納することを示す複数の命令コードを含む。
TMP14=Rot2(TMP13)+TMP13+1
命令コード群S138は、変数TMP14と変数TMP4とに排他的論理和XORを施し、その演算結果を変数TMP15に格納することを示す複数の命令コードを含む。
命令コード群S139は、変数TMP15と変数TMP12とに排他的論理和XORを施し、その演算結果を変数TMP16に格納することを示す複数の命令コードを含む。
TMP16=TMP15 XOR TMP12
命令コード群S140は、変数TMP15を最上位32ビット、変数TMP16を最下位32ビットとする64ビットの整数を暗号文Cとして、呼出し元のプログラムへ出力することを示す複数の命令コードを含む。
送信プログラム134(図示していない)は、複数の命令コードが並べられて構成されており、呼出し元のプログラムから、データの指定及び配信先の装置の指定を受け取り、通信ユニット106を制御して、指示されたデータを指定された配信先の装置へ送信することを示す複数の命令コードを含む。
パーソナルコンピュータ200は、図8に示すように、マイクロプロセッサ201、ハードディスク部202、メモリ部203、入力制御部204、表示制御部205及び通信ユニット206などから構成されるコンピュータシステムである。入力制御部204及び表示制御部205は、それぞれ、キーボード707及びモニタ208に接続されている。また、通信ユニット206は、インターネット20に接続されている。
なお、デジタル放送受信装置200a及びBD再生装置200bは、パーソナルコンピュータ200と同様の構成を有しているので、これらの装置についての説明を省略する。
ハードディスク部202は、図8に示すように、鍵222を記憶しており、また暗号化コンテンツ221を記憶するための領域を備えている。暗号化コンテンツ221と鍵222とは、対応している。
暗号化コンテンツ221及び鍵222は、それぞれ、コンテンツサーバ装置100のハードディスク部102に記憶されている暗号化コンテンツ126及び鍵123と同じものである。
メモリ部203は、図8に示すように、コンテンツ受信プログラム231、コンテンツ復号プログラム232、再生プログラム233、復号プログラム234及び加算プログラム235を記憶している。また、メモリ部203は、復号コンテンツ領域236を含む。これらのプログラムは、それぞれ、機械語形式の複数の命令コードを組み合わせて構成されるコンピュータプログラムである。前記機械語形式は、マイクロプロセッサ201により解読され実行される形式である。
以下において、各コンピュータプログラムの内容を説明するが、各コンピュータプログラムの内容の理解を容易にするために、機械語形式の命令コードを用いた表現ではなく、フローチャートにより各コンピュータプログラムの内容を表現し、フローチャートを用いて、各コンピュータプログラムを説明する。
コンテンツ受信プログラム231は、図9に示すように、命令コード群S201、S202、S203及びS204を含んで構成されており、これらの命令コード群は、コンテンツ受信プログラム231内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S202は、指定を受け付けた前記コンテンツを識別するコンテンツ識別子を取得し、取得したコンテンツ識別子を、通信ユニット206及びインターネット20を介して、配信サーバ装置300aへ送信することを示す複数の命令コードを含んでいる。
命令コード群S204は、受信した暗号化コンテンツをハードディスク部202へ、暗号化コンテンツ221として書き込むことを示す複数の命令コードを含んでいる。
コンテンツ復号プログラム232は、図10に示すように、命令コード群S211、S212、S213、S214、S215、S216、S217及びS218を含んで構成されており、これらの命令コード群は、コンテンツ復号プログラム232内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S212は、メモリ部203に記憶されている再生プログラム233を呼び出すことを示す複数の命令コードを含んでいる。命令コード群S212が実行されることにより、その結果、コンテンツ復号プログラム232と再生プログラム233とが並行して実行される。
命令コード群S214は、前記読出しポイントに64ビットを加算し、次に、前記暗号化コンテンツにおいて、加算された読出しポイントにより示される位置から1ブロック分のデータの読出しを試みることを示す複数の命令コードと、読出しポイントにより示される位置が前記暗号化コンテンツ内であるならば、当該位置から1ブロック分のデータを読み出し、読出しポイントにより示される位置が前記暗号化コンテンツの外を示すならば、ブロックの読み出しが終了したことを示す終了コードを出力することを示す複数の命令コードとを含んでいる。ここで、1ブロックは、64ビット長のデータである。
命令コード群S216は、読み出された前記鍵及び読み出された前記1ブロックを伴って、復号プログラム234を呼び出すことを示す複数の命令コードを含んでいる。
命令コード群S218は、次に制御を命令コード群S214へ移すことを示す命令コードを含んでいる。
再生プログラム233は、図10に示すように、命令コード群S218、S219及びS220を含んで構成されており、これらの命令コード群は、再生プログラム233は内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含んでいる。
命令コード群S219は、読み出した前記復号ブロックから映像データ及び音データを生成し、生成した映像データ及び音データを映像信号及び音信号に変換して、表示制御部205を介して、モニタ208へ出力することを示す複数の命令コードを含んでいる。
(d)復号プログラム234
復号プログラム234は、図11に示すように、復号制御モジュール241、拡張鍵生成モジュール242、加算モジュール243、ローテーションモジュールA244、ローテーションモジュールB245、ローテーションモジュールC246及びローテーションモジュールD247から構成されている。
拡張鍵生成モジュール242、ローテーションモジュールA244、ローテーションモジュールB245、ローテーションモジュールC246及びローテーションモジュールD247は、それぞれ、図5に示す拡張鍵生成モジュール142、ローテーションモジュールA143、ローテーションモジュールB144、ローテーションモジュールC145及びローテーションモジュールD146と同じであるので、説明を省略する。
復号制御モジュール241は、図12及び図13に示すように、命令コード群S221〜命令コード群S240を含んで構成されており、これらの命令コード群は、復号制御モジュール241内において、この順序で並べられている。各命令コード群は、1個又は複数個の命令コードを含む。
命令コード群S222は、受け取った鍵Kを伴って、拡張鍵生成モジュール242を呼び出すことを示す複数の命令コードを含む。命令コード群S222が実行されると、その結果、8個の拡張鍵K1、K2、K3、・・・、K8が生成される。
命令コード群S224は、データM1とデータM2とに排他的論理和XORを施し、その演算結果を変数TMP1に格納することを示す複数の命令コードを含む。
命令コード群S225は、変数TMP1と拡張鍵K1とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP2に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP2=TMP1 + K1が算出される。
TMP3=Rot2(TMP2)+TMP2+1
命令コード群S227は、変数TMP3を伴って、ローテーションモジュールB245を呼び出し、その演算結果を変数TMP4に格納することを示す複数の命令コードを含む。
命令コード群S228は、変数TMP4とデータM1とに排他的論理和XORを施し、その演算結果を変数TMP5に格納することを示す複数の命令コードを含む。
TMP5=TMP4 XOR M1
命令コード群S229は、変数TMP5と拡張鍵K2とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP6に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP6=TMP5 + K2が算出される。
TMP7=Rot2(TMP6)+TMP6+1
命令コード群S231は、変数TMP7を伴って、ローテーションモジュールC246を呼び出し、その演算結果を変数TMP8に格納することを示す複数の命令コードを含む。
命令コード群S232は、変数TMP8と拡張鍵K3とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP9に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP9=TMP8 + K3が算出される。
TMP10=Rot2(TMP9)+TMP9+1
命令コード群S234は、変数TMP7及び変数TMP10を伴って、ローテーションモジュールD247を呼び出し、その演算結果を変数TMP11に格納することを示す複数の命令コードを含む。
命令コード群S235は、変数TMP11と変数TMP1とに排他的論理和XORを施し、その演算結果を変数TMP12に格納することを示す複数の命令コードを含む。
TMP12=TMP11 XOR TMP1
命令コード群S236は、変数TMP12と拡張鍵K4とを伴って、加算モジュール243を呼び出し、その演算結果を変数TMP13に格納することを示す複数の命令コードを含む。この結果、加算モジュール243により、TMP13=TMP12 + K4が算出される。
TMP14=Rot2(TMP13)+TMP13+1
命令コード群S238は、変数TMP14と変数TMP4とに排他的論理和XORを施し、その演算結果を変数TMP15に格納することを示す複数の命令コードを含む。
命令コード群S239は、変数TMP15と変数TMP12とに排他的論理和XORを施し、その演算結果を変数TMP16に格納することを示す複数の命令コードを含む。
TMP16=TMP15 XOR TMP12
命令コード群S240は、変数TMP15を最上位32ビット、変数TMP16を最下位32ビットとする64ビットの整数を復号文Cとして、呼出し元のプログラムへ出力することを示す複数の命令コードを含む。
加算モジュール243は、入力データa、bに対し、データa+bを演算し、データa+bを出力するコンピュータプログラムであり、図14に示すように、変換部251、主要演算部252及び逆変換部253から構成されており、変換部251は、パラメタ格納部261及びべき乗演算部262を含み、主要演算部252は、パラメタ格納部263及び乗算部264を含み、逆変換部253は、パラメタ格納部265、離散対数計算部266及びCRT(Chinese Remainder Theorem)部267を含む。
ここで、加算モジュール243で使用する各種パラメータ及び記号の定義、並びに入力データの条件について説明する。
pi (i=1,2,…,k)を、それぞれ異なる素数とする。例えば、pi
(i=1,2,…,k)は、p1 =3、p2 =5、p3 =7、p4 =13、・・・などのように、それぞれ小さい素数である。また、例えば、k=17である。また、それらの積p1×p2 ×…×pk をnとする。ここで、×は乗算を示す。nは、例えば、64ビット程度で表現できる数である。例えば、k=17のとき、n=p1×p2 ×…×pk >264となる。
加算モジュール243では、mod nの整数から構成される剰余整数環Z/nZの乗法群の演算を用いる。gは、その乗法群に属する予め与えられた数であり、pi(i=1,2,…,k)に対して原始元とする。
L=LCM(p1 −1,p2 −1,…,pk −1)とする。ここで、LCM(p1−1,p2 −1,…,pk −1)は、p1 −1,p2 −1,…,pk−1の最小公倍数(Least Common Multiple)を示す。
(ii)変換部251の構成
変換部251は、パラメタ格納部261及びべき乗演算部262を含む。
パラメタ格納部261は、nとgとを格納している。
べき乗演算部262は、入力データa、bを受け取り、受け取った入力データa、bに対し、
ga =ga mod n,及び
gb =gb mod nを計算し、得られたga 及びgb を主要演算部252へ出力する。
主要演算部252は、パラメタ格納部263及び乗算部264を含む。
パラメタ格納部263は、nを格納している。
乗算部264は、べき乗演算部262からga 及びgb を受け取り、受け取ったga 及びgbに対し、
gab =ga ×gb mod nを計算し、得られたgabを逆変換部253へ出力する。
逆変換部253は、パラメタ格納部265、離散対数計算部266及びCRT部267を含む。
パラメタ格納部265は、p1 、p2 、・・・、pk を格納している。
離散対数計算部266は、乗算部264からgabを受け取り、
受け取ったgabについて、g mod pi に対するgab mod pi(i=1,2,…,k)の離散対数ci mod pi −1(i=1,2,…,k)を計算する。
離散対数計算部266によるci mod pi−1の計算方法については、様々なものがあるが、以下にその一例を示す。
g(pi-2) mod piを計算した結果をテーブルとして保持し、そのテーブルの値から、gab mod piと一致するgw を探す、としてもよい。
CRT部267は、離散対数計算部266からci mod pi −1(i=1,2,…,k)を受け取り、中国人剰余定理(CRT)により、受け取ったcimod pi −1(i=1,2,…,k)から、gab mod nのg mod nに対する離散対数c mod Lを求める。つまり、中国人剰余定理により、ci=c mod pi −1(i=1,2,…,k)となるcを求める。
ここで、式が複雑になるのを避けるために、mi =pi −1とおく。
u2 =m1×(m1 -1 mod (m2/GCD(m1,m2)))×(c2-c1)+c1 を計算する。
次に、
u3 =(m1×m2)×((m1×m2)-1mod (m3/GCD(m1,m2,m3 )))×(c3- u2)+u2
を計算し、
u4 =(m1×m2×m3)×((m1×m2×m3)-1mod (m4/GCD(m1,m2,m3,m4)))
×(c4 - u3)+u3 を計算し、
以下順に、同様に、u5,u6,・・・,uk-1を計算し、
uk =(m1×m2×m3×・・・×mk-1)×((m1×m2×m3・・・×mk-1)-1
mod (mk/GCD(m1,m2,m3,m4・・・,mk-1)))×(ck- uk-1)+uk-1 を計算する。
なお、CRT部267よるci (i=1,2,...,k)から,
c mod pi −1=ci を満たすc mod Lを計算する方法については、非特許文献2に詳しく述べられている。
次に、CRT部267は、得られたcを加算モジュール243の呼び出し元のプログラムへ出力する。
加算モジュール243による加算の動作について、図15に示すフローチャートを用いて説明する。
べき乗演算部262は、加算モジュール243の呼び出し元のプログラムから入力データa、bを受け取り(ステップS301)、受け取った入力データa、bに対し、ga=ga mod n,gb =gb mod nを計算する(ステップS302〜S303)。
次に、離散対数計算部266は、gab =gci mod pi (i=1,2,…,k)となるcimod pi −1を求め(ステップS305)、CRT部267は、中国人剰余定理(CRT)により、ci =c mod pi−1(i=1,2,…,k)となるcを求め(ステップS306)、次に、得られたcを加算モジュール243の呼び出し元のプログラムへ出力する(ステップS307)。
以下で、加算モジュール243が、入力データa、bに対し、データa+bを出力していることを検証する。
変換部251において、入力データa、bに対し、ga =ga mod n,
gb =gb mod nを計算し、主要演算部252において、
gab=ga ×gb mod nを計算する。このとき、gab=g(a+b)mod nを満たすことは明らかである。
逆変換部253では、gとgabからgab=gci mod pi (i=1,2,…,k)を満たすciを計算し、その結果を用いて、c=ci mod pi −1を満たすc mod Lを計算する。このとき、cはgab=gc
mod nを満たす。なぜなら、a+b=c mod Lより、g(a+b-c) =1 mod nとなるためである。したがって、g(a+b) mod n=gcmod nを満たすため、a+b=c mod ((p1−1)×(p2−1)×…×(pk−1))を満たす。a<L/2,b<L/2よりa+b<Lであるので、加算モジュール243は、入力データaと入力データbとの加算結果であるデータa+bを出力していることになる。
加算モジュール243は、加算を行う値を変換している。変換部251及び逆変換部253が解析困難な場合であっても、解析者はga ,gb,gabの値を知り、ga ,gb からgabを計算する処理を知る可能性がある。このような場合であっても、変換後の値ga,gb から変換前の値a,bを推測することは困難である。さらに、加算モジュール243は、主要演算部252において、乗算を行っており、この乗算という演算から加算モジュール243が加算を実現していることを推測することは困難である。したがって、加算を行う入力の値の隠蔽だけではなく、加算という演算自体も隠蔽できることになり、第1の実施の形態は有効である。
第1の実施の形態における加算モジュール243の代わりに、加算モジュール501を採用するとしてもよい。ここでは、加算モジュール501について説明する。
2.1 加算モジュール501の構成
加算モジュール501は、加算モジュール243と同様に、入力データa、bに対し、データa+bを演算し、データa+bを出力するコンピュータプログラムであり、図16に示すように、変換部511、主要演算部512及び逆変換部513から構成されており、変換部511は、パラメタ格納部521、乱数発生部522及びべき乗演算部523を含み、主要演算部512は、パラメタ格納部524及び乗算部525を含み、逆変換部513は、パラメタ格納部526、離散対数計算部527及び還元部528を含む。
ここで、加算モジュール501で使用する各種パラメータ及び記号の定義、並びに入力データの条件について説明する。
p,qを素数とし、n=p2 ×qとする。p,qは、逆変換部513により保持され、nは、それぞれ、変換部511及び主要演算部512により保持される。
gp =g(p-1) mod p2 と定義する。
入力データa、bは、p/2より小さい非負整数とする。
変換部511は、パラメタ格納部521、乱数発生部522及びべき乗演算部523から構成されている。
パラメタ格納部521は、nとgとを記憶している。
乱数発生部522は、n以下の乱数R1,R2を生成する。
ga =g^(a+n×R1) mod n、
gb =g^(b+n×R2) mod nを計算する。
なお、本明細書において、記号「^」は、べき乗を示す演算子である。例えば、a^b=ab である。本明細書において、表現上の都合により、a^b及び
ab の両方の表記を使い分けている。
2.4 主要演算部512の構成
主要演算部512は、パラメタ格納部524及び乗算部525から構成されている。
パラメタ格納部524は、nを記憶している。
乗算部525は、べき乗演算部523から計算結果ga ,gb を受け取り、受け取ったga ,gbに対し、
gab=ga ×gb mod nを計算し、計算結果gabを逆変換部513へ出力する。
逆変換部513は、パラメタ格納部526、離散対数計算部527及び還元部528から構成されている。
パラメタ格納部526は、pを格納している。
離散対数計算部527は、乗算部525から計算結果gabを受け取り、受け取ったgabに対し、パラメタ格納部526に格納されているpを用いて、
cp =gab (p-1) mod p2 を計算し、次に、cpを還元部528へ出力する。
受け取ったcp を用いて、mod p2 におけるgp に対するcp の離散対数cを計算し、計算して得られたcを、呼び出し元のプログラムへ出力する。
還元部528におけるcの計算方法については、特許文献2に詳しく述べられている。具体的には、以下のように行う。
2.6 加算モジュール501による加算の動作
加算モジュール501による加算の動作について、図17に示すフローチャートを用いて説明する。
べき乗演算部523は、呼び出し元のプログラムから入力データa、bを受け取り(ステップS311)、乱数発生部522は、n以下の乱数R1,R2を生成し(ステップS312)、べき乗演算部523は、
ga =g^(a+n×R1)mod n、
gb =g^(b+n×R2)mod nを計算する(ステップS313〜S314)。
次に、乗算部525は、gab=ga ×gb mod nを計算する(ステップS315)。
還元部528は、c=(cp −1)/(gp −1) mod pとしてcを求め(ステップS317)、次に、c(=a+b)を呼び出し元のプログラムへ出力する(ステップS318)。
以下において、加算モジュール501が、入力データa、bに対し、a+bを出力していることを検証する。
変換部511において、a,bに対し、
ga =g^(a+n×R1)mod n、
gb =g^(b+n×R2)mod nを計算し、
主要演算部512において、gab=ga ×gb mod nを計算する。このとき、gab=g^(a+b+n×(R1+R2))mod nを満たすことは明らかである。逆変換部513では、まず、
cp =gab (p-1) =gp^(a+b+n×(R1+R2))mod p2 となり、
gp p =1 mod p2 より、
gp n =1 mod p2 であるため、
cp =gp (a+b) mod p2 となる。
cp =gp c mod p2 が成り立つ。したがって、
c=a+b mod pであり、a<p/2,b<p/2より、a+b<pであるため、加算モジュール501は、入力データaとbの加算結果a+bを出力していることになる。
加算モジュール501は、第1の実施の形態1の加算モジュール243と同様に、加算を行う値を変換しており、変換部511及び逆変換部513が解析困難な場合に、変換後の値から変換前の値を推測することは困難である。さらに、加算モジュール501は、主要演算部512において、乗算を行っており、この乗算という演算から加算モジュール501が加算を実現していることを推測することは困難である。したがって、加算を行う入力の値の隠蔽だけではなく、加算という演算自体も隠蔽できることになり、この発明は有効である。
加算モジュール501では、剰余整数環Z/nZの乗法群における冪乗演算を変換部511で行い、その乗法群の部分群である剰余整数環Z/p2 Zの乗法群における離散対数問題を逆変換部513で解いている。ここで、もし、解析者がp,qは分からないが、変換部511で冪乗演算を行っていることを解析できた場合を考える。このケースは、すなわち、逆変換部513のみが解析者により解析困難である場合である。この場合においても、nの大きさが素因数分解が困難なぐらい、例えば、1024ビットぐらいであれば、nの素因数分解結果であるp,qを得ることが困難になる。また、p,qが得られなければ、剰余整数環Z/nZの乗法群における離散対数問題を解くことが困難になる。一般に乗法群の大きさ(元の数)が1024ビットの数のように大きい場合は、それ上の離散対数問題も困難になる。加算モジュール501では、pが既知の場合は逆変換部513における逆変換の方法によって、Z/p2Zの乗法群における離散対数問題を容易に解けるようになる。加算モジュール501における変換はこのように、pが既知であれば逆変換が容易であるが、既知でなければ困難であることを利用している点が、加算モジュール2431と異なる。
加算モジュール501は、次のように構成してもよい。
p,qを素数とし、n=pm ×qとする。mは、正整数である。また、加算モジュール501では、mod nの整数から構成される剰余整数環Z/nZの乗法群の演算を用いる。gは、その乗法群に属する予め与えられた数でありg(p-1) mod pm の位数がpである数とする。また、gp =g(p-1) mod pmと定義する。
cp =gab (p-1) mod pm を計算し、次に、cpを還元部528へ出力する。
還元部528は、離散対数計算部527からcp を受け取り、
受け取ったcp を用いて、mod pm におけるgp に対するcp の離散対数cを計算し、計算して得られたcを、呼び出し元のプログラムへ出力する。
第1の実施の形態における加算モジュール243の代わりに、加算モジュール601を採用するとしてもよい。ここでは、加算モジュール601について説明する。加算モジュール601は、楕円曲線上のスカラ倍演算を利用している。楕円曲線については、非特許文献3に詳しく説明されている。
加算モジュール601は、加算モジュール243と同様に、入力データa、bに対し、データa+bを演算し、データa+bを出力するコンピュータプログラムであり、図18に示すように、変換部611、主要演算部612及び逆変換部613から構成されており、変換部611は、パラメタ格納部621及びスカラ倍演算部622を含み、主要演算部612は、パラメタ格納部623及び楕円曲線加算部624を含み、逆変換部613は、パラメタ格納部625、還元部626及び離散対数計算部627を含む。
ここで、加算モジュール601で使用する各種パラメータ及び記号の定義、並びに入力データの条件について説明する。
p、qを素数とし、n=p×qとする。p、qは、逆変換部613により保持され、nは、それぞれ、変換部611及び主要演算部612により保持されている。
y2 =x3 +A×x+Bとする。ここで、A、Bは、楕円曲線Eのパラメータである。
G=(xg ,yg ) mod nを楕円曲線E上の点とする。すなわち、
yg 2 =xg 3 +A×xg +B mod nを満たす。
A、B、Gは、変換部611、主要演算部612、逆変換部613により保持される。
Z/nZ上の楕円曲線の群を
E(GF(p))とE(GF(q))との
直積E(GF(p))×E(GF(q))で表す。なお、Z/nZは体ではなく、環であるため、数学的には楕円曲線とは呼べないが、ここでは便宜上、その直積Z/nZ上の楕円曲線の群とよぶ。
E(GF(q))上の点Gq =(xgq,ygq) mod qとに対応するZ/nZ上の楕円曲線E(GF(p))×E(GF(q))の
点G=(xg ,yg ) mod nについて、
xg を
xg mod p=xgp及び
xg mod q=xgqを満たす数と定義し、
yg を
yg mod p=ygp及び
xg mod q=xgqを満たす数と定義する。
E(GF(p))×E(GF(q))上の点G=(xg ,yg ) mod nに対応するE(GF(p))上の点Gpを
Gp =(xgp,ygp ) mod pとし、
E(GF(q))上の点Gq をGq =(xgq,ygq)とすることで、
E(GF(p)),E(GF(q))をE(GF(p))×E(GF(q))の部分群とみなす。
さらに、mod qでの楕円曲線の位数がqである、すなわち、GF(q)上でもアノマラス楕円曲線であるとする。
このとき、Z/nZ上の楕円曲線の群はE(GF(p))×E(GF(q))であるので、楕円曲線の位数は、
n(=p×q)となる。
3.3 変換部611の構成
変換部611は、パラメタ格納部621及びスカラ倍演算部622から構成されている。
パラメタ格納部621は、n、A、B、Gを記憶している。
Ga =a*G mod n 及び
Gb =b*G mod nを計算する。
スカラ倍演算部622は、計算結果Ga ,Gb を主要演算部612へ出力する。
3.4 主要演算部612の構成
主要演算部612は、パラメタ格納部623及び楕円曲線加算部624から構成されている。
楕円曲線加算部624は、スカラ倍演算部622から計算結果Ga ,Gb を受け取り、パラメタ格納部623に記憶されているn、A、Bを用いて、Ga及びGb に対して、楕円曲線加算を実行して、
Gab =Ga +Gb mod n
を計算し、その計算結果Gabを逆変換部613へ出力する。
逆変換部613は、パラメタ格納部625、還元部626及び離散対数計算部627から構成されている。
パラメタ格納部625は、p,A,B,G mod pを記憶している。
還元部626は、楕円曲線加算部624から計算結果Gabを受け取り、受け取ったGabに対し、パラメタ格納部625に格納されているpを用いて、
Gabp =Gab mod p を計算し、計算結果を離散対数計算部627へ出力する。
ここで、楕円離散対数計算部627におけるcは、アノマラス楕円曲線上の離散対数問題の解である。アノマラス楕円曲線上の離散対数問題を解く方法については、非特許文献3の88〜91ページに詳しく説明されている。計算方法はこの文献に記載されているため、ここでは説明を省略する。
加算モジュール601の動作について、図19に示すフローチャートを用いて説明する。
スカラ倍演算部622は、呼び出し元のプログラムから、入力データa、bを受け取り(ステップS321)、受け取った入力データa、bに対し、パラメータ格納部621に格納されているn、A、B、Gを用いて、
Ga =a*G mod n 及び
Gb =b*G mod nを計算する(ステップS322〜S323)。
Gab =Ga +Gb mod nを計算する(ステップS324)。
次に、還元部626は、
Gabp =Gab mod p を計算し(ステップS325)、
離散対数計算部627は、G mod pに対するGabp の離散対数cを計算し(ステップS326)、次に、cを呼び出し元のプログラムへ出力する(ステップS327)。
以下において、加算モジュール601が、入力データa,bに対し、a+bを計算して出力していることを検証する。
変換部611において、a,bに対し、
Ga =a*G mod n,
Gb =b*G mod nを計算し、
主要演算部612において、
Gab=Ga+Gb mod nを計算する。
逆変換部613において、まず、
Gabp =Gab mod pを計算し、
G mod pに対するGabp の離散対数cを求める。
すなわち、Gabp =c*G mod pが成り立つ。
a+b<pであるため、加算モジュール601は、入力データaとbとの加算結果a+bを出力していることになる。
3.8 加算モジュール601の効果
加算モジュール601は、加算モジュール243及び、加算モジュール501と同様に、加算を行う値を変換しており、変換部611及び逆変換部613が解析困難な場合に、変換後の値から変換前の値を推測することは困難である。
従って、整数の加算を行う入力の値の隠蔽だけではなく、整数の加算という演算自体も隠蔽できることになり、加算モジュール601は、有効である。
加算モジュール601では、Z/nZ上の楕円曲線の群E(GF(p))×E(GF(q))のスカラ倍演算を変換部で行い、その部分群であるE(GF(p))における離散対数問題を逆変換部で解いている。
ここで、もし、解析者がp,qは分からないが、変換部で冪乗演算を行っていることを解析できた場合を考える。このケースは、すなわち、逆変換部のみが解析者により解析困難である場合である。
一般に群の大きさ(元の数)が1024ビットの数のように大きい場合は、それ上の離散対数問題も困難になる。加算モジュール601では、pが既知の場合は逆変換モジュールにおける逆変換の方法によって、楕円曲線の群E(GF(p))における離散対数問題を容易に解けるようになる。加算モジュール601における変換はこのように、pが既知であれば逆変換が容易であるが、既知でなければ困難であることを利用している点が、第1の実施の形態と異なる。
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)加算モジュール243、501及び601において、2個の非負整数a及びbの加算を行うとしているが、各加算モジュールは、3個、又はそれ以上の個数の非負整数の加算を行うとしてもよい。この場合に、各加算モジュールの変換部は、それぞれの非負整数を変換し、加算モジュール243及び501の主要演算部は、それぞれの変換結果に対して乗算を施し、加算モジュール601の主要演算部は、それぞれの変換結果に対して、楕円曲線加算を施す。
(3)第1の実施の形態では、各加算モジュールを復号制御モジュール241に適用するとしているが、上記の暗号制御モジュール141や、他の暗号プログラム、復号プログラム、デジタル署名を生成する署名生成プログラムに適用するとしてもよい。このように、加算による演算が出現する情報処理演算であれば、どのようなものであっても適用することができる。
また、加算モジュール243及び501においては、冪乗演算を行って、整数を変換し、加算モジュール601においては、楕円曲線のスカラ倍演算を行って、整数を変換するとしているが、その他の群の冪演算を行うことにより変換するとしてもよい。
したがって、剰余整数環の乗法群の冪演算は冪乗演算、楕円曲線上の群の冪演算は楕円曲線のスカラ倍演算である。
加算モジュール501では、剰余整数環Z/nZの乗法群の「部分群」である、剰余整数環Z/p2 Zの乗法群において離散対数問題を解いている。その他の群を使用する場合は、加算モジュール501と同様に逆変換部でその他の群の「部分群」において離散対数問題を解くとしてもよい。
その場合は、gmi =1 mod pi (mi >0)となるmi に対し、
L=m1 ×m2 ×…×mk とする。
(6)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは、前記コンピュータプログラムに含まれる各命令を1個ずつ読み出し、読み出した命令を解読し、解読結果に従って動作する。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
(10)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(11)以上説明したように、本発明によると、演算に使用する値の隠蔽だけでなく、演算そのものを隠蔽することができる。したがって、本技術を用いた難読化ソフトウェアをICカード等の機器に組み込むことは有用である。
Claims (22)
- 2個以上の整数を加算するコンピュータシステムであって、
複数のコンピュータ命令が組み合わされて構成されるコンピュータプログラムを記憶しているメモリ部と、
前記記憶手段に記憶されている前記コンピュータプログラムから1個ずつコンピュータ命令を読み出し、解読し、その解読結果に応じて動作するプロセッサとを備え、
前記コンピュータプログラムは、
各整数に、群G上の冪演算を施すことにより、群Gに属する元を生成する変換命令群と、
生成された全ての前記元に対して、前記加算とは異なる群G上の基本演算を施して、演算値を生成する演算命令群と、
群G又は群Gに真に含まれる部分群Sにおいて、前記演算値に対して、前記変換命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する逆変換命令群とを含む
ことを特徴とするコンピュータシステム。 - 前記コンピュータシステムは、対象情報を安全かつ確実に扱う情報セキュリティ装置であって、
前記コンピュータプログラムは、さらに、対象情報にセキュリティ処理を施すセキュリティ命令群を含み、
前記セキュリティ命令群は、加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いる
ことを特徴とする請求項1に記載のコンピュータシステム。 - 前記群Gは、剰余整数環の乗法群であり、
前記変換命令群は、各整数に冪乗を施し、
演算命令群は、前記元に対して、乗算を施す
ことを特徴とする請求項2に記載のコンピュータシステム。 - 前記群Gは、複数個の相異なる素数p1,p2,…,pk(k>1)の積n=p1×p2×…×pkに対し、Z/nZの乗法群であり、
×は、乗算を示す演算子であり、Zは、整数環であり、Z/nZは、mを法とし整数と合同である値から構成される剰余整数環である
ことを特徴とする請求項3に記載のコンピュータシステム。 - 前記逆変換命令群は、前記素数p1,p2,…,pkを用いたZ/p1Z、Z/p2Z、…、Z/pkZの乗法群における離散対数問題を解く命令を含む
ことを特徴とする請求項4に記載のコンピュータシステム。 - 前記逆変換命令群は、前記素数p1,p2,…,pkを用いたZ/p1Z,Z/p2Z,…,Z/pkZの乗法群における離散対数問題の解に対し、中国人の剰余定理を用いる命令を含む
ことを特徴とする請求項5に記載のコンピュータシステム。 - 前記群Gは、2つの素数p,qと正整数mを用いて表されるn=pm×qに対し、Z/nZの乗法群であり、
前記変換命令群は、各整数に冪乗を施し、
演算命令群は、前記元に対して、乗算を施す
ことを特徴とする請求項2に記載のコンピュータシステム。 - 前記部分群Sは、Z/pm Zの乗法群である
ことを特徴とする請求項7に記載のコンピュータシステム。 - 前記正整数mは、2である
ことを特徴とする請求項7に記載のコンピュータシステム。 - 前記部分群Sは、アノマラス楕円曲線の群であり、
前記変換命令群は、各整数に楕円曲線上の乗算を施し、
演算命令群は、前記元に対して、楕円曲線上の加算を施す
ことを特徴とする請求項2に記載のコンピュータシステム。 - 前記群Gは、二つのアノマラス楕円曲線の群の直積であり、
前記変換命令群は、各整数に楕円曲線上の乗算を施し、
演算命令群は、前記元に対して、楕円曲線上の加算を施す
ことを特徴とする請求項2に記載のコンピュータシステム。 - さらに、前記逆変換命令群は、複数の冪数と、各冪数による冪乗値又は冪倍値とを対応付けて記憶しており、その対応付けを検索することにより、冪演算の逆算を求める
ことを特徴とする請求項2に記載のコンピュータシステム。 - さらに、前記逆変換命令群は、前記群Gに属する元を前記部分群Sに属する元に還元する還元部を備える
ことを特徴とする請求項2に記載のコンピュータシステム。 - 前記情報セキュリティ装置は、鍵情報に基づいて対象情報を暗号化し又は復号し、
前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報を暗号化し又は復号し、暗号化又は復号において、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報との加算演算が含まれ、
前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報とに、加算を施す
ことを特徴とする請求項2に記載のコンピュータシステム。 - 前記暗号化又は復号は、共通鍵方式の暗号化又は復号アルゴリズムである
ことを特徴とする請求項14に記載のコンピュータシステム。 - 前記情報セキュリティ装置は、鍵情報に基づいて対象情報にデジタル署名を施し又は署名検証を施し、
前記セキュリティ命令群は、前記鍵情報に基づいて、対象情報にデジタル署名を施し又は署名検証を施し、デジタル署名又は署名検証において、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報との加算演算が含まれ、
前記加算演算において、前記変換命令群、前記演算命令群及び前記逆変換命令群を用いて、鍵情報又は鍵情報から得られる二次鍵情報と、対象情報又は対象情報から得られる二次対象情報とに、加算を施す
ことを特徴とする請求項2に記載のコンピュータシステム。 - 前記コンピュータシステムは、前記メモリ部と前記プロセッサとが高密度に集積された集積回路を含むICカードである
ことを特徴とする請求項2に記載のコンピュータシステム。 - メモリ部とプロセッサとを備えるコンピュータシステムにおいて用いられ、2個以上の整数を加算する加算方法であって、
各整数に、群G上の冪演算を施すことにより、群Gに属する元を生成する変換ステップと、
生成された全ての前記元に対して、前記加算とは異なる群G上の基本演算を施して、演算値を生成する演算ステップと、
群G又は群Gに真に含まれる部分群Sにおいて、前記演算値に対して、前記変換命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する逆変換ステップとを含む
ことを特徴とする加算方法。 - 2個以上の整数を加算するコンピュータプログラムであって、
各整数に、群G上の冪演算を施すことにより、群Gに属する元を生成する変換命令群と、
生成された全ての前記元に対して、前記加算とは異なる群G上の基本演算を施して、演算値を生成する演算命令群と、
群G又は群Gに真に含まれる部分群Sにおいて、前記演算値に対して、前記変換命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する逆変換命令群とを含む
ことを特徴とするコンピュータプログラム。 - 前記コンピュータプログラムは、コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項19に記載のコンピュータプログラム。 - 前記コンピュータプログラムは、搬送波に乗せられて送信される
ことを特徴とする請求項19に記載のコンピュータプログラム。 - 2個以上の整数を加算するコンピュータプログラムを記録しているコンピュータ読み取り可能な記録媒体であって、
前記コンピュータプログラムは、
各整数に、群G上の冪演算を施すことにより、群Gに属する元を生成する変換命令群と、
生成された全ての前記元に対して、前記加算とは異なる群G上の基本演算を施して、演算値を生成する演算命令群と、
群G又は群Gに真に含まれる部分群Sにおいて、前記演算値に対して、前記変換命令群により施される冪演算の逆算を施すことにより、前記整数の加算値を生成する逆変換命令群とを含む
ことを特徴とする記録媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004107778 | 2004-03-31 | ||
JP2004107778 | 2004-03-31 | ||
PCT/JP2005/005136 WO2005098795A1 (ja) | 2004-03-31 | 2005-03-22 | 整数を加算するコンピュータシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2005098795A1 true JPWO2005098795A1 (ja) | 2008-02-28 |
Family
ID=35125300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006511988A Ceased JPWO2005098795A1 (ja) | 2004-03-31 | 2005-03-22 | コンピュータシステム、コンピュータプログラム及び加算方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7434898B2 (ja) |
EP (1) | EP1732052B1 (ja) |
JP (1) | JPWO2005098795A1 (ja) |
KR (1) | KR20060134992A (ja) |
CN (1) | CN100585670C (ja) |
DE (1) | DE602005025615D1 (ja) |
WO (1) | WO2005098795A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8280039B2 (en) * | 2005-12-28 | 2012-10-02 | Panasonic Corporation | Signature generating device, signature generating method and signature generating program |
JP5133973B2 (ja) * | 2007-01-18 | 2013-01-30 | パナソニック株式会社 | 難読化支援装置、難読化支援方法、プログラムおよび集積回路 |
EP2242032B1 (en) * | 2008-01-21 | 2013-10-02 | Nippon Telegraph and Telephone Corporation | Secure computing system, secure computing method, secure computing apparatus and program therefor |
US20100290503A1 (en) * | 2009-05-13 | 2010-11-18 | Prime Photonics, Lc | Ultra-High Temperature Distributed Wireless Sensors |
US20110087861A1 (en) * | 2009-10-12 | 2011-04-14 | The Regents Of The University Of Michigan | System for High-Efficiency Post-Silicon Verification of a Processor |
EP2720403A1 (en) * | 2012-10-12 | 2014-04-16 | Thomson Licensing | Aggregator-oblivious encryption of time-series data |
JP5596835B2 (ja) * | 2013-08-14 | 2014-09-24 | 日本電信電話株式会社 | 離散対数計算装置、事前計算装置、離散対数計算方法、事前計算方法、プログラム |
CN106716345A (zh) | 2014-09-30 | 2017-05-24 | 皇家飞利浦有限公司 | 用于执行混淆算术的电子计算设备 |
JP6368051B2 (ja) | 2014-12-12 | 2018-08-01 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 電子生成装置 |
US10579337B1 (en) * | 2015-06-18 | 2020-03-03 | Chorus Call, Inc. | Method, software and apparatus for computing discrete logarithms modulo a prime |
WO2018135566A1 (ja) * | 2017-01-20 | 2018-07-26 | 日本電信電話株式会社 | 秘密計算システム、秘密計算装置、秘密計算方法、プログラム |
KR102336535B1 (ko) * | 2021-10-05 | 2021-12-08 | (주) 가온칩스 | 테일러 급수를 이용한 제곱근 연산 방법 및 이를 이용한 장치 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000155789A (ja) * | 1998-11-19 | 2000-06-06 | Nec Software Ltd | 電子投票システム、方法、及び記録媒体 |
JP2001522167A (ja) * | 1997-10-24 | 2001-11-13 | クゥアルコム・インコーポレイテッド | 暗号化ストリーム暗号を生成させる方法および装置 |
JP3402441B2 (ja) * | 1997-12-17 | 2003-05-06 | 日本電信電話株式会社 | 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5073935A (en) * | 1990-12-17 | 1991-12-17 | Jose Pastor | Method for secure communication |
AU7957998A (en) * | 1997-06-09 | 1999-01-25 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
DE69840959D1 (de) * | 1997-12-17 | 2009-08-20 | Nippon Telegraph & Telephone | Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen. |
US6594761B1 (en) * | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
US7164765B2 (en) * | 2001-04-11 | 2007-01-16 | Hitachi, Ltd. | Method of a public key encryption and a cypher communication both secure against a chosen-ciphertext attack |
JP2005049925A (ja) | 2003-07-29 | 2005-02-24 | Nara Institute Of Science & Technology | プログラム難読化装置、プログラム難読化プログラム及びプログラム難読化方法 |
-
2005
- 2005-03-22 US US10/591,846 patent/US7434898B2/en active Active
- 2005-03-22 KR KR1020067019184A patent/KR20060134992A/ko active IP Right Grant
- 2005-03-22 CN CN200580010699A patent/CN100585670C/zh not_active Expired - Fee Related
- 2005-03-22 WO PCT/JP2005/005136 patent/WO2005098795A1/ja not_active Application Discontinuation
- 2005-03-22 JP JP2006511988A patent/JPWO2005098795A1/ja not_active Ceased
- 2005-03-22 EP EP05727024A patent/EP1732052B1/en not_active Expired - Fee Related
- 2005-03-22 DE DE602005025615T patent/DE602005025615D1/de active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001522167A (ja) * | 1997-10-24 | 2001-11-13 | クゥアルコム・インコーポレイテッド | 暗号化ストリーム暗号を生成させる方法および装置 |
JP3402441B2 (ja) * | 1997-12-17 | 2003-05-06 | 日本電信電話株式会社 | 公開鍵暗号化装置、公開鍵暗号復号装置及び復号プログラム記録媒体 |
JP2000155789A (ja) * | 1998-11-19 | 2000-06-06 | Nec Software Ltd | 電子投票システム、方法、及び記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
EP1732052A1 (en) | 2006-12-13 |
EP1732052A4 (en) | 2009-07-08 |
CN100585670C (zh) | 2010-01-27 |
US20070192622A1 (en) | 2007-08-16 |
US7434898B2 (en) | 2008-10-14 |
EP1732052B1 (en) | 2010-12-29 |
WO2005098795A1 (ja) | 2005-10-20 |
CN1938740A (zh) | 2007-03-28 |
DE602005025615D1 (de) | 2011-02-10 |
KR20060134992A (ko) | 2006-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2005098795A1 (ja) | コンピュータシステム、コンピュータプログラム及び加算方法 | |
JP2020530577A (ja) | 暗号文に対する近似演算を行う装置及び方法 | |
US20140233727A1 (en) | Method for secure substring search | |
JP4611305B2 (ja) | 情報伝達システム、暗号装置及び復号装置 | |
KR20150122513A (ko) | 암호화 장치, 암호화 방법 및 컴퓨터 판독가능 기록매체 | |
JP2018502320A (ja) | 公開鍵暗号化システム | |
JP2011147074A (ja) | 暗号化された情報のためのキーワード検索システム、キーワード検索方法、検索要求装置、検索代行装置、プログラム、記録媒体 | |
JP2010049213A (ja) | 暗号化装置、復号装置、暗号通信システム、方法及びプログラム | |
JP2006311383A (ja) | データ管理方法、データ管理システムおよびデータ管理装置 | |
KR101533950B1 (ko) | 브로드캐스트 암호화 방법 및 시스템 | |
JP5730805B2 (ja) | 格子問題に基づく階層型内積暗号システム,格子問題に基づく階層型内積暗号方法,装置 | |
JPWO2015008623A1 (ja) | 鍵保管装置、鍵保管方法、及びそのプログラム | |
KR101440680B1 (ko) | 중국인 나머지 정리에 기반한 준동형 암복호화 방법 및 이를 이용한 장치 | |
US8731187B2 (en) | Computing genus-2 curves using general isogenies | |
WO2022137447A1 (ja) | 秘匿情報処理システムおよび秘匿情報処理方法 | |
JP5300374B2 (ja) | 表現変換装置、演算装置、表現変換方法及びプログラム | |
JP2013172178A (ja) | 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法、装置とプログラム | |
CN113890759A (zh) | 文件传输方法、装置、电子设备和存储介质 | |
JP5103407B2 (ja) | 暗号化数値二進変換システム、暗号化数値二進変換方法、暗号化数値二進変換プログラム | |
JP2010049211A (ja) | 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム | |
JP2007171412A (ja) | 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム | |
JP5880173B2 (ja) | 暗号処理方法、システム及び情報処理装置 | |
JP4485175B2 (ja) | 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 | |
JP2023156635A (ja) | 暗号化装置、復号装置、暗号変換装置、暗号化方法、復号方法及びプログラム | |
CN114547645A (zh) | 浮点数处理方法、装置、终端以及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080107 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101221 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110214 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110308 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110519 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110524 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110705 |
|
A313 | Final decision of rejection without a dissenting response from the applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A313 Effective date: 20111010 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20111028 |