JPWO2007052491A1 - セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 - Google Patents
セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 Download PDFInfo
- Publication number
- JPWO2007052491A1 JPWO2007052491A1 JP2007542571A JP2007542571A JPWO2007052491A1 JP WO2007052491 A1 JPWO2007052491 A1 JP WO2007052491A1 JP 2007542571 A JP2007542571 A JP 2007542571A JP 2007542571 A JP2007542571 A JP 2007542571A JP WO2007052491 A1 JPWO2007052491 A1 JP WO2007052491A1
- Authority
- JP
- Japan
- Prior art keywords
- secret information
- generation
- signature
- key
- secure
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3249—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
Description
上述した署名鍵dは保護しなくてはならない情報であり、以下、このような情報のことを秘密情報と呼ぶ。また、本明細書において、記号^は、ベキ乗演算を表し、記号*は、乗算を表すものとする。
このような署名鍵dの不正取得を防ぐための技術の1つとして、署名鍵dの値をメモリ上に出現させることなく署名生成を行う手法が非特許文献1に開示されている。
この分割鍵(d1、d2、d3)と署名鍵生成式に基づき
S1=M^d1 mod n
S2=S1^d2 mod n
S=S2*M^d3 mod n
の順に演算を行う。これにより、署名鍵dを使うことなく、RSA署名生成式S=M^d mod nと同じ署名Sが得られる。また、署名生成処理中には、メモリ上に、署名鍵dではなく、分割鍵(d1、d2、d3)が現れることとなるので、署名鍵dを保護することが出来る。
「署名生成ソフトウェアのランタイムデータ探索による耐タンパー性評価」 横浜国立大学 本田洋之 松本 勉 SCIS2005
さらに、毎回同一の分割鍵を利用するため、署名対象データを変えながら複数回の署名生成時のランタイムデータを収集し、収集した複数のランタイムデータ同士の差分を見て不変なデータを抽出するという動的解析を行うことにより、分割鍵を特定することができる。
上記課題に鑑み本発明は、不正解析者により静的解析や動的解析が成された場合であっても、秘密情報を秘匿することが出来るセキュア処理装置を提供することを目的とする。
また、前記第1の秘密情報生成式は1以上の演算を含み、各演算は、複数の被演算子と、被演算子同士の計算の内容を示す演算子とを含み、前記記憶手段は、前記第1の秘密情報生成式に係る前記被演算子と前記演算子との関係を示す属性情報を記憶しており、前記第1生成手段は、前記属性情報を用いて前記第2の秘密情報生成式を生成することとしてもよい。
また、前記第1生成手段は、更に、乱数情報を生成し、前記乱数情報を含んだ前記第2の秘密情報生成式を生成し、前記第2生成手段は、前記第2の秘密情報生成式に基づき、前記結合秘密情報と前記乱数情報とを用いて前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算式を生成し、前記実行手段は、前記メッセージに対し前記結合秘密情報と、前記乱数情報とを用いて前記第2のセキュア演算手順に従ったセキュア演算を施すこととしてもよい。
また、前記第1生成手段は、更に、前記秘密情報を用いた、演算処理の結果に影響を与えない冗長情報を生成し、当該冗長情報を用いて、前記第2の秘密情報生成式を生成することとしてもよい。
また、前記記憶手段は、前記分割秘密情報と共に前記実行手段により用いられないダミー情報を記憶していることとしてもよい。
この構成によれば、記憶手段に記憶されている情報に基づきセキュア処理を静的解析することを困難にすることができる。
この構成によれば、デジタル署名処理の実行において、静的解析による秘密情報の特定を困難にすることができる。
また、前記署名生成処理は、RSA(Rivest Shamir Adleman)署名生成処理であることとしてもよい。
また、前記署名生成処理は、楕円曲線デジタル署名方式による署名処理であることとしてもよい。
また、前記セキュア処理装置は、更に、乱数情報を生成する乱数情報生成手段を備え、前記実行手段は、前記楕円曲線デジタル署名方式における定義体GF(p)上の楕円曲線の位数qであるベースポイントPの乱数値k倍点を計算する処理と、定義体GF(q)上でのkの逆数の値を用いた処理とを、前記乱数kを直接利用することなく、少なくとも2つの前記乱数情報を用いて行うこととしてもよい。
また、前記秘密情報は前記公開鍵暗号の前記秘密鍵であり、前記実行手段は、前記セキュア演算として、公開鍵と秘密鍵を利用した公開鍵暗号系の処理を行うこととしてもよい。
また、前記公開鍵暗号はRSA暗号であることとしてもよい。
この構成によれば、RSA暗号によるセキュア処理の実行において、静的解析による秘密鍵の特定を困難にすることができる。
この構成によれば、楕円曲線暗号によるセキュア処理の実行において、静的解析による秘密鍵の特定を困難にすることができる。
また、前記セキュア処理装置は、更に、外部から、前記第1生成手段の更新用データを取得する取得手段と、前記更新用データを用いて、前記第1生成手段を更新する更新手段とを含むこととしてもよい。
また、前記セキュア処理装置は、更に、外部から、更新用の分割秘密情報を取得する取得手段と、前記記憶手段に記憶されている分割秘密情報を、前記取得手段が取得した更新用の分割秘密情報に更新する更新手段とを含むこととしてもよい。
また、生成される分割鍵の個数や結合分割鍵の個数を、装置外部から調整することが可能となり、セキュリティ強度を柔軟に設定することが可能となる。
本発明のセキュア処理方法は、メッセージに対し秘密情報を用いたセキュア演算を施した場合と同一の演算結果を得るセキュア処理装置において用いられるセキュア処理方法であって、前記セキュア処理装置は、秘密情報を少なくとも2つに分割した分割秘密情報が引数として入力され、当該分割秘密情報から前記秘密情報を算出する第1の秘密情報生成式と、前記秘密情報を用いたセキュア演算の手順を示す第1のセキュア演算手順とを記憶している記憶手段を備えており、前記セキュア処理方法は、少なくとも2つの前記分割秘密情報を演算した結果である結合秘密情報が引数として入力され、前記第1の秘密情報生成式と同一の結果を出力する第2の秘密情報生成式を生成する第1生成ステップと、前記第2の秘密情報生成式に含まれる演算子に基づいて、前記結合秘密情報が引数として入力され前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成する第2生成ステップと、前記メッセージに対し前記第2のセキュア演算手順に従ったセキュア演算を施す実行ステップとを含む。
本発明の集積回路は、メッセージに対して秘密情報を用いたセキュア演算を施した場合と同一の演算結果を得る集積回路であって、秘密情報を少なくとも2つに分割した分割秘密情報が引数として入力され、当該分割秘密情報から前記秘密情報を算出する第1の秘密情報生成式と、前記秘密情報を用いたセキュア演算の手順を示す第1のセキュア演算手順とを記憶している記憶手段と、少なくとも2つの前記分割秘密情報を演算した結果である結合秘密情報が引数として入力され、前記第1の秘密情報生成式と演算上等価な第2の秘密情報生成式を生成する第1生成手段と、前記第2の秘密情報生成式に含まれる演算子に基づいて、引数として前記結合秘密情報が入力され前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成する第2生成手段と、前記メッセージに対し前記第2のセキュア演算手順に従ったセキュア演算を施す実行手段とを備える。
また、前記難読化装置は、前記秘密情報の難読化の方法を決定するためのパラメータを入力として受け付ける入力手段を備え、前記秘密情報難読化ステップは、前記入力手段が前記パラメータを受け付ける受付ステップと、前記パラメータに基いて決定される難読化方法で、前記秘密情報を難読化する難読化ステップとを含んでもよい。
また、前記パラメータは、前記秘密情報の分割個数であり、前記難読化ステップは、前記分割個数に基づいて、前記秘密情報を少なくとも2つの分割秘密情報に分割する分割ステップを含むこととしてもよい。
この構成によれば、秘密情報の分割個数を装置外部から調整することが可能になるためセキュリティ強度を柔軟に設定することができる。
この構成によれば、第1の秘密情報生成式を装置外部から与えることが可能になるため、セキュリティ強度を柔軟に設定することができる。
20 署名鍵D
21 署名鍵生成式F
22 分割鍵生成装置
30 署名S
100 署名生成装置
110 分割鍵格納手段
120 署名鍵生成恒等式生成手段
121 署名鍵生成恒等式G
130 結合分割鍵生成手段
140 結合分割鍵格納手段
150 署名生成手段
200 分割識別情報テーブル
201 分割鍵識別子
1000 マトリックス
1001 結合箇所選択部
1900 ネットワーク
1901 更新サーバ
1902 更新用の署名鍵生成恒等式生成プログラム
1903 更新用の署名鍵生成恒等式生成プログラムの改ざん検出値
1910 送受信手段
1920 署名鍵生成恒等式生成プログラム更新手段
(実施の形態1)
本発明の実施の形態1に係る秘密情報を用いセキュア処理を行うセキュア処理装置について、署名鍵を用いて署名生成を行う署名生成装置を例として説明する。
本発明の一実施形態に係る署名生成装置は、入力されるメッセージMに対し、署名生成式S=M^d mod nに基づく署名Sを生成する場合に、署名鍵dを直接メモリ上に現さず、署名鍵dの代わりに分割鍵をメモリ上に現し署名を生成するものであり、かつ、分割鍵の生成手順、分割鍵の値、署名の生成手順を署名生成毎に動的に変更する。
<構成>
図1は、本実施の形態1における、署名生成装置100を含む署名生成システムの概要図である。
メッセージM10は、署名対象データであり、署名生成装置100に入力されるデータである。なお、図1において、メッセージM10は、外部から署名生成装置100に入力されているが、署名生成装置100内で生成したデータでもよく、署名鍵生成装置のメモリ内に格納されているプログラムコードやデータであってもよい。
図2に示す分割鍵111(D1、D2、D3…、Dn)は、署名生成時に署名鍵D20そのものの値がメモリ上に現れないようにするため、分割鍵生成装置22が、署名鍵D20の値を署名鍵生成恒等式F21に基づいて予め分割して得た分割鍵である。ここで、署名鍵生成式F21と分割鍵111(D1、D2、D3、…、Dn)との間には、分割鍵111(D1、D2、D3、…、Dn)を用いて署名鍵生成式F21を計算することにより、署名鍵D20の値が算出可能となるという関係がある。
(1)分割鍵生成装置22
分割鍵生成装置22は、外部から、署名鍵生成式F21と、署名鍵D20との入力を受け付けて、署名鍵生成式F21と署名鍵D20とに基づき、分割鍵識別情報テーブル200と、分割鍵情報テーブル400とを生成し、分割鍵識別情報テーブル200と、分割鍵情報テーブル400とを、後述する署名生成装置100が備える分割鍵格納手段110に書き込む。
F(d1,d2,d3,d4,d5,d6,d7,d8)=(d1+d2+d3+d4)*(d5+d6+d7+d8)
ここで、変数d1には分割鍵D1が代入され、変数d2には分割鍵D2が代入され、同様に、変数d3〜d8には、分割鍵D3〜D8がそれぞれ代入されるものとする。
図3は、署名鍵生成式F21「F(d1,d2,d3,d4,d5,d6,d7,d8)=(d1+d2+d3+d4)*(d5+d6+d7+d8)」をツリー構造で概念的に表現したものである。
ここで、グループ情報とは、署名生成式F21において、被演算子(d1〜d8)が他の被演算子とどのような演算(例えば、加算、乗算など)がされるかという関係を表す属性情報である。また、上記のグループを構成する各被演算子や、より小さなグループ等をメンバーと呼ぶ。
なお、複数の変数から構成されたグループ同士や、グループと他の変数とが、どのような演算子によって演算されるかという関係を表す属性情報についてもグループ情報と呼ぶものとする。
具体的には、「加算グループ」では、前述のように、各メンバーが演算子「+(加算)」で演算されるため、加算グループ1はd1+d2+d3+d4という式を表現していることになる。また、変数d5、d6、d7、d8は、加算グループ2というグループ情報と関連づけられている。加算グループ2は、加算グループ1の場合と同様にd5+d6+d7+d8という式を表現している。さらに、加算グループ1と加算グループ2とは、グループ情報として乗算グループ1と関連付けられている。
次に、図3の署名鍵生成式F21の構造を、情報として具体的に表した分割鍵情報テーブル400について、図4を用いて説明する。
分割鍵グループ識別子401は、上述したグループを識別する識別子であり、分割鍵グループメンバー識別子402は、各グループに属するメンバーを示す識別子である。
図4において、加算グループ1には、分割鍵グループ識別子401として「AG001」が割り当てられている。ここで、図3にて示したとおり、グループ「AG001」に属するメンバーは、変数d1、d2、d3、d4であるので、それぞれの変数を識別する「id001」、「id002」、「id003」、「id004」が、分割鍵グループメンバー識別子402として分割鍵情報テーブル400に登録されている。
次に、分割鍵生成装置22が、署名生成式F21に基づき、署名鍵Dを複数の分割鍵に分割する処理について説明する。
但し、D1〜D8には、F(D1,D2,D3,D4,D5,D6,D7,D8)=Dを満たす値がランダムに選択される。
ここで、分割鍵Dn(n:1〜8)は、署名鍵生成式の引数dnに代入される。即ち、分割鍵D1は、署名鍵生成式F21の引数d1に代入され、同様に分割鍵D2は、引数d2に代入され、分割鍵D3〜D8は、引数d3〜d8に代入される。
具体的には、まず、分割鍵生成装置22は、D=R1*R2が成り立つランダムな値R1、R2を選出する。
分割鍵生成装置22は、選出した分割鍵D1〜D8のそれぞれに対し、各分割鍵を識別するための識別情報である分割鍵識別子201を割り当てる。
(2)署名生成装置100
署名生成装置100は、図1に示すように、分割鍵格納手段110、署名鍵生成恒等式生成手段120、結合分割鍵生成手段130、結合分割鍵格納手段140、署名生成手段150を含んで構成される。
署名鍵生成恒等式生成手段120は、署名鍵生成式F21と恒等な式である署名鍵生成恒等式121を生成する。ここで、恒等とは、演算において等価である、演算結果が同一になるような関係のことを言う。
なお、以降、RSA署名生成を例とした説明を行う。
図5において、先ず、署名鍵生成恒等式生成手段120が、分割鍵格納手段110に記憶されている分割鍵情報テーブル400を読み取り、署名鍵生成式F21と同一結果を出力する署名鍵生成恒等式G121を生成する(ステップS501)。
次に、署名生成手段150にて、署名対象メッセージM10と、署名鍵生成恒等式G121と結合分割鍵141を用いて、署名鍵D20の値をメモリに出現させることなく、M^d mod nと同一の結果となる署名S30を算出し、署名S30を出力し署名生成処理を終了する(ステップS503)。
次に、上述した図5のステップS501の詳細について、図6を用いて説明する。
まず、署名鍵生成恒等式生成手段120は、分割鍵格納手段110に記憶されている分割鍵情報テーブル400を読み込み、各グループに属するメンバーの並びをランダムに並び替えるランダムシャッフル処理を行う(ステップS601)。ランダムシャッフルの詳細フローについては、図7を用いて後述する。
次に、ステップS602でランダムにグループ分けされた各グループを式展開して、後述するマトリックス表現というデータ構造に変形し、展開した各グループのうち結合する箇所をランダムに選択して結合を行う。この結果、署名鍵生成式F21と恒等な署名鍵生成恒等式121が生成されるので、これを出力する(ステップS603)。ステップS603については、図10を用いて後述する。
なお、本実施の形態におけるランダムシャッフルとは、例えば、式d1+d2+d3+d4を、交換法則を利用して、恒等な式に変換することを言う。また、加算などの場合に、式1+2+3の計算結果と式3+2+1の計算結果とが同一であるような関係、すなわち、式における被演算子の順序を入れ替えても計算結果が変わらないような関係を「交換法則が成立する」という。
ここで、分割鍵情報テーブル400は、二次元配列Tableとして表現されているものとする。また、Table[n][m]は、図4の分割鍵グループメンバー識別子401に対応しており、上からn行目のグループに属する、左からm個目の分割鍵グループ識別子を示す。また、単にTable[n]とだけ書く場合は、上からn行目のグループに属する分割鍵グループ識別子の集合を示す。
Table[0]={AG001,AG002}、
Table[1]={id001,id002,id003,id004}、
Table[2]={id005,id006,id007,id008}
なお、この例及び以下の例では、Tableの各インデックスは0から始まるものとする。
図4に示した分割鍵情報テーブル400の場合、グループ総数Nは3となる。
次に、変数iを0で初期化する(ステップS702)。
ここで、iは現在シャッフル対象となっている分割鍵グループが何番目の分割鍵グループであるかをカウントする変数である。
ここで、シャッフル回数snは、各分割鍵グループに対してあと何回シャッフルを行うかを示す変数である。ここで、シャッフル回数snとして乱数を利用することにより、シャッフルする回数を動的に設定することが出来、ひいては署名鍵生成恒等式を動的に生成することが出来る。
次に、0以上M未満のランダムな整数を2つ発生させ、それぞれを変数s1、s2に代入する(ステップS705)。
ここで、s1、s2としてランダムな整数を利用することにより、シャッフル対象となるメンバーの位置を動的に設定することができ、ひいては署名鍵生成恒等式を動的に生成することが出来る。
すなわち、i番目のグループに属するs1番目の構成要素とs2番目の構成要素とを入れ替えた上で、残りシャッフル回数snを1つ減らす。
次に、sn>0かどうか、すなわち現在シャッフルの対象となっているi番目の分割鍵グループについて、まだシャッフル回数が残っているか否かを判定する(ステップS707)。
そうでなく、判定の結果が「NO」ならば、iがN−1と等しいかどうか判定する(ステップS708)。すなわち、全グループについてシャッフルが終了したか否かを判定する。
ランダムグループ分けとは、例えば、式(d1+d2+d3)+d4を、結合法則を利用して恒等式d1+(d2+d3+d4)へと変換する処理である。ここで、例えば式(1+2)+3と式1+(2+3)は結果が同一の値となり、このような関係、すなわち、一度に計算を行う単位の分割の仕方に関わらず結果が同一の値となるような関係を「結合法則が成立する」という。
まず、署名鍵生成恒等式生成手段120は、分割鍵格納手段110に記憶されている分割鍵情報テーブル400のグループ総数Nを取得する(ステップS801)。
次に、変数iを0で初期化する(ステップS802)。ここでiは、現在ランダムグループ分けの対象となっている分割鍵グループの番号を示す変数である。
次に、Table[i]に登録されているメンバー数Mを取得し、1以上M以下の自然数をランダムに選び、選んだ値をグループ分割数kとする(ステップS804)。ここで、グループ分割数とは、分割鍵グループを何個のグループに分割するかを示す数である。グループ分割数kをランダムな自然数とすることにより、式の分割数を動的に設定することができ、ひいては署名鍵生成恒等式を動的に生成することが出来る。
このように、グループ分割リストGPの内容ランダムに設定することにより、式の分割位置を動的に設定することができ、ひいては署名鍵生成恒等式を動的に生成することが出来る。
次に、iがN−1と等しいかどうかチェックする(ステップS807)。すなわち、全分割鍵グループについて、ランダムグループ分けが終了したか否かを判定する。
図9には、図7のフローに従ってランダムシャッフルした結果、MG001では、Table[0][2]={AG001,AG002}であった並びが、{AG002,AG001}のようにシャッフルされ、AG001では、Table[1][4]={id001,id002,id003,id004}であった並びが、{id002,id001,id004,id003}のようにシャッフルされ、AG002では、Table[2][4]={id005,id006,id007,id008}であった並びが、{id007,id006,id008,id005}のようにシャッフルされたことが示されている。
F(d1,d2,d3,d4,d5,d6,d7,d8)=(d1+d2+d3+d4)*(d5+d6+d7+d8)
は、交換法則と結合法則により、署名鍵生成式F21と恒等な署名鍵生成恒等式
G’(d1,d2,d3,d4,d5,d6,d7,d8)=((d7+d6)+(d8+d5))*((d2+d1)+(d4+d3))
に変換されたことになる。
図10(a)は、図9で生成された署名鍵生成恒等式121の右辺((d7+d6)+(d8+d5))*((d2+d1)+(d4+d3))をマトリックス表現したものである。
より具体的な例を示すと、例えばマトリックス1000をMatrix[2][2]の2×2の配列で表現すると、
Matrix[0][0]=(d7+d6)*(d2+d1)
Matrix[0][1]=(d7+d6)*(d4+d3)
Matrix[1][0]=(d8+d5)*(d2+d1)
Matrix[1][1]=(d8+d5)*(d4+d3)
のようになる。
(d4+d3)*((d7+d6)*(d8+d5))
というように(d4+d3)で括ることで、結合することができる。
図10(b)は、マトリックス表現を用いて最終的な署名生成恒等式G121を生成するまでの式変形を、通常の式の変形で例示したものである。
図9で生成された署名鍵生成恒等式G’は、
G’=((d7+d6)+(d8+d5))*((d2+d1)+(d4+d3))…(式1)
であり、この式を分配法則を用いて展開すると、(式2)のようになる。
+(d8+d5)*(d2+d1)+(d8+d5)*(d4+d3)…(式2)
さらに(式2)を図10(a)のマトリックス1000内でステップS603にて結合する箇所としてランダムに指定された1001にあたる項を結合すると、(式3)となる。
+(d4+d3)*((d7+d6)*(d8+d5)) …(式3)
この(式3)が図6のS601からS603を経て生成された署名鍵生成恒等式G121となる。
結合分割鍵生成手段130は、署名鍵生成恒等式G121に基づき、分割鍵格納手段110に記憶された分割鍵同士を結合演算して、分割鍵111とは異なる値の結合分割鍵141(CD1、CD2、…、CDm)を生成する。生成した結合分割鍵141のそれぞれに対し、結合分割鍵141を識別するための結合分割鍵識別子1101を付与して、図11に示す、結合分割鍵識別子1101と結合分割鍵141を対応づけた結合分割鍵識別情報テーブル600を生成して、結合分割鍵識別情報テーブル600を、結合分割鍵格納手段140に書き込む。
また、結合演算とは、複数の値をまとめて新しい値を生成する演算であり、具体的な例としては加算、乗算やその組み合わせ等がある。すなわち、1+2=3という演算において、「3」は、「1」と「2」という値に対して「+」という結合演算を施して得られる値である。
署名鍵生成恒等式G’の(式3)で示された最小の括弧の単位で、結合分割鍵141を生成すると、以下の7個の結合分割鍵141が生成されることになる。
G’(d1,d2,d3,d4,d5,d6,d7,d8)
= G(cd1,cd2,cd3,cd4,cd5,cd6,cd7)
ここで、G’(d1,d2,d3,d4,d5,d6,d7,d8)の引数である変数d1には、id001に対応する分割鍵識別子ID001を持つ分割鍵D1が代入され、同様に変数d2には分割鍵D2が代入され、変数d3、d4、d5、d6、d7、d8のそれぞれには、分割鍵D3、D4、D5、D6、D7、D8がそれぞれ代入される。
ここで、CD1=D7+D6が成り立ち、CD2=D2+D1が成り立ち、CD3=D8+D5が成り立ち、CD4=D2+D1が成り立ち、CD5=D4+D3が成り立ち、CD6=D7+D6が成り立ち、CD7=D8+D5が成り立つ。
図11は、各結合分割鍵141(CD1、CD2、…、CD7)に、それぞれ結合分割鍵識別子1101(ID001、ID002、…、ID007)が付与されていることを示している。
G(cd1,cd2,cd3,cd4,cd5,cd6,cd7)
= (cd1*cd2)+(cd3*cd4)+cd5*(cd6+cd7)…(式4)
ここで、(式4)の引数cd1,cd2,…、cd7に結合分割鍵(CD1、CD2、…、CD7)の値を代入した結果と、(式3)の引数d1、d2、…、d8に(D1、D2、…、D8)を代入した結果は等しく、
さらに結合分割鍵141(CD1、CD2、…、CD7)は分割鍵111(D1、D2、…、D8)を結合演算した結果であることから、(式4)は署名鍵生成式F21と同一の結果を得ることができる式となるため、署名生成手段150は、(式4)を署名鍵生成恒等式121として利用する。
署名生成手段150は、メッセージM10を入力とし、結合分割鍵格納手段140に記憶されている結合分割鍵141を用いて署名S30を生成する。RSA署名生成における例を示すと、署名鍵D20を用いず、結合分割鍵141のみを用いてS=M^d mod nと同一の演算結果となる署名S30を生成する。
まず、署名Sの生成方法の概略を説明する。
署名生成に用いられる演算式は、署名鍵生成恒等式G121の構造により定まる。
署名Sは、例えば署名鍵生成恒等式Gの各引数cd1〜cd7に、CD1〜CD7が代入されており、(CD1*CD2)+(CD3*CD4)+CD5*(CD6+CD7)であったとき、メッセージMと、n(=p*q)とを用いて、
S0=(M^CD1)^CD2 mod n、
S1= S0*((M^CD3)^CD4) mod n、
S= S1*(((M^CD6)*(M^CD7))^CD5) mod n
という計算により、S=M^D mod nと同じ結果が生成される。
以下、フローの詳細な説明に移るが、以下の例でも、署名鍵生成恒等式G121は(式4)であるものとする。また、署名生成手段150は(式4)を逆ポーランド記法で式表現したものを利用して署名生成するものとする。ここで、逆ポーランド記法とは、演算子を演算対象の後ろに記述する記法であり、演算子が現れるたびに、その演算子の2つ前の値および1つ前の値に対して、その演算子を適用した値を計算していくような規則で示される記法である。
P[13]={CD1,CD2,*,CD3,CD4,*,+,CD5,CD6,CD7,+,*,+}
以下、図12、図13を用いて、署名生成フローについて詳細に説明する。
次に、iとjを1に、ChkとFlagを0に、Nを配列Pのサイズに設定し、スタックにP[0]をプッシュする(ステップS1202)。ここで、iは、現在着目している配列のインデックスであり、jは現在スタックに積まれている分割結合鍵の個数を示す。また、Chkは、配列中でどのインデックスまで演算子“+”であるか否かを確認したかを示す。ここで、Chkは、前述したjを用いて、現在アクセスしている配列P[i]からj−1個先の演算子が“+”であるかどうかを判定し、“+”演算子の有効区間内であるか判定する際に利用する。また、Flagは、“+”演算子の有効な区間内であるか否かを示すフラグとして利用される。より具体的には、署名鍵生成恒等式Gの区切りポイントの判定に利用される。
ステップS1203の判別の結果が、「YES」すなわち結合分割鍵であれば、スタックにP[i]の値をプッシュし、配列Pにおけるアクセスを1つ移すためにiをインクリメントし、また、スタックに積まれる分割結合鍵の個数が増えるためjをインクリメントする(ステップS1204)。
次に、i+j−1がChkの値より大きいか、且つi+j−1がN以下かどうかを判定する(ステップS1206)。
ステップS1208の判定結果が、「YES」であれば、Flagを0に設定する(ステップS1209)。
そうでなく、判定の結果がNOであれば、処理「A」へ処理を移す。
まず、Val1とVal2のパターンを判別する(ステップS1301)。
ステップS1301の判別の結果、Val1、Val2両者が結合分割鍵の場合ステップS1310へ処理を移す。
そうでなく、ステップS1301の判別の結果、Val1、Val2のどちらか一方が結合分割鍵で、他方が署名ベキ乗中間値の場合、ステップS1320へ処理を移す。ここでの署名ベキ乗中間値とは、メッセージM10を、少なくとも一つ以上の結合分割鍵でベキ乗した値を示し、署名S30を算出する過程での中間値となるものである。具体的には、後述するS0やS1等がこれに当たる。
ここから、S1301処理後にそれぞれ処理がS1310、S1320、S1330に分岐した際の、各処理以降の個別の処理について説明する。
ここから、ステップS1310へ処理が移った場合について説明する。
ステップS1310の判別の結果、Flag=0、すなわち、“+”演算子の有効区間内である場合は、ステップS1311へ処理を移す。
次に、P[i]の演算子を判別する(ステップS1311)。
ステップS1311の判別の結果、P[i]が“+”演算子であれば、ステップS1312へ処理を移す。
ステップS1312では、(M^Val)*(M^Val2) mod nの値をスタックにプッシュする(ステップS1312)。
ステップS1313では、((M^Val1)^Val2)mod nを演算した値をスタックにプッシュする(ステップS1313)。
次に、ステップS1315では、P[i]の演算子を判別する(ステップS1315)。
そうでなくステップS1315の判別の結果、P[i]が“*”演算子であれば、ステップS1317へ処理を移す。
ステップS1316では、Val1+Val2を演算した結果をスタックにプッシュする(ステップS1316)。
ステップS1316、S1317処理後、ステップS1340へ処理を移す。ステップS1340以降の処理については後述する。
ここから、ステップS1320へ処理が移った場合、すなわち、Val1とVal2との組、結合分割鍵と署名ベキ乗中間値の組であった場合について説明する。
まず、P[i]の演算子を判別する(ステップS1320)。
ステップS1320の判別の結果、P[i]が“+”演算子であれば、ステップS1321へ処理を移す。
以下、まず、ステップS1321に分岐した場合の流れについて説明する。
ステップS1321では、結合分割鍵の値をVal1、ベキ乗中間値をVal2とし、(M^Val1)*Val2 mod nを演算した値をスタックへプッシュする(ステップS1321)。
ステップS1321、S1322処理後は、ステップS1340へ処理を移す(ステップS1340)。なお、ステップS1340以降の処理については後述する。
(S1330以降の個別処理)
ここから、ステップS1330へ処理が移った場合、すなわち、Val1、Val2の両者が署名ベキ乗中間値の場合について説明する。
ステップS1330では、ベキ乗中間値であるVal1とVal2を利用し、Val1*Val2 mod nを演算した値をスタックにプッシュし、ステップS1341へ処理を移す(S1330)。
以上でS1310、S1320、S1330以降個別のフローについて説明を終わる。
(S1310、S1320、S1330以降の共通処理)
ここからは、S1310、S1320、S1330以降で共通のフローとなる部分について説明する。
ステップS1341の処理後、i<Nかどうか判別する(ステップS1342)。
ステップS1342での判別の結果が、「NO」であれば、配列Pの次の要素について同様の処理を続けるため、ステップS1343にてiをインクリメントしBへ処理を移す。
以上により、署名生成恒等式G’と結合分割鍵141を用いてメッセージM10に対する署名S30が生成される。
図14は、図12と図13で説明した署名生成フローにおけるスタックの様子を示した図である。
署名生成恒等式G121は、逆ポーランド記法で表現されたPに対して署名生成を順に説明する。
次にP[2]が演算子“*”であるので、スタックの上位2つの値をポップし、Flag=0かつ演算子“*”であるので、(M^CD1)^CD2 mod nをS0とし、S0をスタックにプッシュする(ステップS1402)。この処理が終わった段階で、i=2、j=0、Chk=3となる。また、ステップS1341の動作により、Flagの値は1に戻される。
次に、P[5]が演算子“*”であるため、スタックの上位2つの値をポップし、また、i=5、j=2であるので、Chkが6に更新される。ここで、P[Chk]の演算子は、“+”であるので、Flagの値は0に更新される。Flag=0かつP[5]の演算子が“*”であるので、(M^CD3)^CD4 mod nをS1とし、S1をスタックにプッシュし、Flagを1に更新する(ステップS1404)。この処理が終わった段階で、i=5、j=0、Chk=6、Flag=1となる。
次に、P[7]、P[8]、P[9]に相当する結合分割鍵CD5、CD6、CD7を順にスタックにプッシュする(スタックS1405)。
次に、P[12]が演算子“+”であるので、スタックの上位2つのS2とS4をポップする。このとき、S2とS4は共に署名ベキ乗中間値であるのでS2*S4 mod nを演算した結果スタックにプッシュする(ステップS1408)。
このように、本実施の形態では、署名鍵D21の値を一切利用せず、署名S30を生成することが可能である。さらに、結合分割鍵141が、署名生成時に動的に生成されるので、毎回異なる結合分割鍵を用いて署名生成が可能となる。さらに、署名鍵Dだけでなく、RSA署名における秘密情報(p、q)の値も一切利用せず署名生成が可能となる。また、署名生成恒等式Gも署名生成処理の実行の度に毎回異なるため、ランタイムデータの収集結果の差分をとっても、署名鍵dを算出するための鍵候補となる結合分割鍵特定は困難である。さらに、結合分割鍵が特定されたとしても、結合分割鍵から署名鍵Dを求めるためには、署名鍵生成式Gを特定する必要があり、署名鍵生成恒等式Gの取りうるパターンを総当りで解析しなければならなく、署名鍵Dの解析は非常に困難になる。さらに、署名生成フローも毎回異なるため、署名生成時の電力と署名生成処理時間も変化するので、電力差分攻撃やタイミング攻撃に対しても安全であるという効果も有する。
なお、本実施の形態1では、予め分割鍵格納手段に記憶された分割鍵同士を結合演算することで結合分割鍵を生成しているが、署名鍵Dを用いた署名生成結果である署名Sと同じ結果を生成することが出きればよく、同じ結果を生成する処理に影響を与えないような冗長な鍵を用いて、処理を行ってもよい。また冗長鍵は、乱数を発生させた値としてもよい。乱数値をはじめとした冗長鍵を利用した場合、署名鍵生成恒等式で生成される式もこの値を含むようにしてもよい。このように冗長な鍵を利用することにより、本来の処理では必要としない情報を利用することで、不正解析者による解析をさらに困難させる効果がある。
本発明の実施の形態2について、以下に説明する。
実施の形態1では、RSA署名生成における本発明の実施例を説明したが、本実施の形態2では、ECDSA(Elliptic Curve Digital Signature Algorithm)に適用した例について説明する。ECDSAは、楕円曲線上の離散対数問題に基づいて考案された署名方法である。ECDSA自体は公知技術であるため、詳細な説明は省略し、ECDSAに対して本発明を適用した場合の実施例を以下で説明する。なお、下記の図15の説明において、分割乱数情報や結合乱数情報等を用いて、メモリ上に秘密情報が現れないように計算する処理を除いた処理フローが、通常のECDSA署名の生成フローにあたる。
なお、本発明を適用した場合の署名生成装置100の構成、及び署名鍵生成恒等式G121と結合分割鍵141の作成方法は、実施の形態1と同じなので説明を省略する。
本実施の形態2では、ECDSAに適用した際に、本実施の形態1と異なる部分について説明する。
S = (h+r*d)/k mod q
ここで、Sは署名であり、dは署名鍵であり、rはベースポイントPのk倍点のx座標であり、qはベースポイントPの位数である。
また、hはMのハッシュ値でありh=Hash(M)と表され、Mは署名生成対象メッセージであり、Hash(M)は、署名生成対象メッセージMのハッシュ値を計算することを示す。
h=Hash(M)
d=(k*S−h)/r mod q
以降、図15を用いて、署名鍵dと乱数kの2つの情報を秘密にした場合の、ECDSAの署名生成フローについて説明する。なお、署名生成装置100は、図1の署名生成装置100では図示していないが、楕円曲線のシステムパラメータ(y^2=x^3+a*x+b、定義体GF(p)、ベースポイントP、ベースポイントPの位数q)を保持しており、乱数を生成する乱数生成手段を備えているものとする。
次に、楕円曲線のベースポイントPに対して乱数kを発生させ、Pのk倍点を計算し、k倍した点をRとする(ステップS1502)。このとき、乱数kは、秘密情報であるので、乱数kの値がメモリに直接現れないように、複数の分割乱数情報を生成し、生成した分割乱数情報のみを用いてPのk倍点を計算する。ステップS1502におけるこの処理については、後に図16を用いて詳細に説明する。
次に、乱数kと署名鍵dを用いた式S = (h+r*d)/k mod qと恒等な演算を、乱数kと署名鍵dの値を直接メモリ上に保持することなく、代わりに分割乱数情報と、署名鍵dを予め分割した分割鍵とをメモリ上に保持し、これらを用いて署名Sを生成する(ステップS1504)。
最後に、ステップS1503とS1504の結果から(r,S)のペアを署名として出力し、ECDSAの署名生成を終了する。
次に、ステップS1502の詳細について、図16に示すフローチャートを用いて説明する。
T = R1*R2*…Rm
更に、R1…Rmのそれぞれを更に細かな値(分割乱数情報)の和に分割する。
T = Σt(1,h)*Σt(2,i)*…*Σt(m,j)…(式T)
ここで、
Σt(1,h)=t(1,1)+t(1,2)+…+t(1,h)
Σt(2,i)=t(2,1)+t(2,2)+…+t(2,i)
・・・
Σt(m,j)=t(m,1)+t(m,2)+…+t(m,j)
である。
また、h、i、j…は、任意の数である。
次に、乱数生成式Tの項であるΣt(1,h)、Σt(2,i)、・・・、Σt(m,j)に用いられている分割乱数情報t(x,y)すなわちt(1,1)、t(1,2)、・・・、t(1,h)、t(2,1)、・・・、t(2,i)、t(m,1)、・・・、t(m,j)のそれぞれに対して、乱数を生成してセットする(ステップS1602)。
ここで、「qと互いに素となる」という条件は、乱数kが逆元を持つために必要な条件である。
ステップS1603の判定の結果が、「NO」であればステップS1602へ処理を戻し、上述した乱数の生成とセットを再度行う。
ステップS1604における、乱数生成式Tから乱数生成恒等式Uの作成は、実施の形態1における署名鍵生成式F21から署名鍵生成恒等式G121を生成する方法と同様の方法で行うことができるため説明を省略する。
次に、乱数生成恒等式UとステップS1605で作成された結合乱数情報を用いて、ベースポイントPのU倍点U*Pを計算し、その計算結果をRとする(ステップS1606)。
ステップS1606は、楕円曲線上の点同士の加算および、点のn倍点演算を行う。ここで、この計算を、実施の形態1との対応で説明すると、実施の形態1ではRSAの署名生成処理のベキ乗演算における「ベキ乗演算」が楕円曲線上の「n倍点演算」に、RSAの署名生成処理の「乗算」が楕円曲線上の加算に対応する。したがって、RSAの署名生成フローにおいて、適用する演算の種類を変更したフローにより、楕円曲線上の点同士の加算およびn倍点演算を行うことができる。
まず、ステップS1601において、上述した方法で生成した乱数生成式Tが以下の式であるとする。
T = Σt(1,4)*Σt(2,4)…(式T)
Σt(1,4)=t(1,1)+t(1,2)+t(1,3)+t(1,4)
Σt(2,4)=t(2,1)+t(2,2)+t(2,3)+t(2,4)
次に、t(1,1)、t(1,2)、…、t(1,4)、t(2,1)、t(2,2)、…、t(2、4)のそれぞれに乱数値を設定する(ステップS1602)。
続いて、乱数生成恒等式Uを、
乱数生成式T=(t(1,1)+t(1,2)+t(1,3)+t(1,4))
*(t(2,1)+t(2,2)+t(2,3)+t(2,4))
から、交換法則、結合法則、分配法則を利用し、例えば、
T = (((t(1,1)+t(1,3))+((t(1,2)+t(1,4)))
*((t(2,1)+t(2,3))
+(((t(1,1)+t(1,4))+((t(1,2)+t(1,3)))
*((t(2,2)+t(2,4))
のように恒等変換し、引数u1〜u6を
u1=t(1,1)+t(1,3)
u2=t(1,2)+t(1,4)
u3=t(2,1)+t(2,3)
u4=t(1,1)+t(1,4)
u5=t(1,2)+t(1,3)
u6=t(2,2)+t(2,4)と設定する(ステップS1605)。
U(u1,u2,u3,u4,u5,u6)
= (u1+u2)*u3+(u4+u5)*u6となる。
引数u1には、結合乱数情報U1が代入され、引数u2には、結合乱数情報U2が代入され、同様に、引数u3〜u6には、結合乱数情報U3〜U6が代入される。
また、ベースポイントPのU倍点U*Pは、
U*P = U3*(U1*P+U2*P)+U6*(U4*P+U5*P)
で計算可能となる。
ここで、乱数生成式Tと乱数生成恒等式Uとは恒等であるため、U*Pは、T*Pと同一の結果となる。さらに、Tは乱数kを計算する乱数生成式であるので、乱数kやその生成に用いる乱数生成式Tそのものをメモリ上に乗せることなく、Pのk倍点を計算することが可能となる。また、乱数生成恒等式Uや対応する結合乱数情報等は毎回ランダムに生成されるため、乱数kの値の解析を困難にすることができる。これにより、実施の形態2の署名生成装置は、ECDSA署名生成フローの解析を困難にすることができる。
まず、ランダムな値をm個生成し、それぞれを分割冗長鍵du1、du2、…、dumとし、各分割冗長鍵を加算したdu1+du2+…+dumを分割冗長鍵生成式Duとする(ステップS1701)。
Du = du1+du2+…+dum …(式Du)
これは、式 S = (h+r*d)/k mod qにおける、1/kをメモリ上に直接現すことなく計算するためのものである。
1/k = Du/(Du*k)
= du1/(Du*k)+ du2/(Du*k) +・・・+dum/(Du*k)
であり、かつ、S1502で生成したUはkと等価であるので、1/kの代わりに、
du1/(Du*U)+ du2/(Du*U) +・・・+dum/(Du*U)
を計算すればよい。
1/k = (du1/B1)+ (du2/B2) +・・・+ (dum/Bm)となり
この(du1/B1)をC1に置き換え、同様に(du2/B2)をC2に・・・(dum/Bm)をCmに置き換えると、
1/k = C1+C2+・・・Cm
となる。
S = (h/k + r*d/k) mod n
= (h*(C1+C2+・・・+Cm)
+ r*F*(C1+C2+…+Cm)) mod n
= (h*(C1+C2+・・・+Cm)
+ r*H) mod n
を計算すればよいことになる。
F(d1,d2,d3,d4,d5,d6,d7,d8)
=(d1+d2+d3+d4)*(d5+d6+d7+d8)
を示すものである。
また、Hは、式 F*(C1+C2+…+Cm)と恒等な式であり、Fは、上述の署名鍵生成式である。
次に、分割冗長鍵生成式Duの値がqと互いに素かどうか判定する(ステップS1702)。
ステップS1702の判定の結果が「NO」であれば、さらに別のdu1…dumを生成するために、ステップS1701へ処理を戻す。
ステップS1703で生成した恒等式B1、B2、…、Bmに基づき、結合分割鍵bij(i、j=1、2、…)を生成する(ステップS1704)。
次に、ステップS1701で生成したm個の分割冗長鍵du1、du2、…、dumとm個の恒等式B1、B2、…、Bmを用いて、次のようなm個のC1、C2、…、Cmを作成する(ステップS1705)。
C2=du2/B2
…
Cm=dum/Bm
このとき、C1+C2+…+Cmは、B1、B2、Bmは共にAと恒等であることと、Du=du1+du2+…+dumである性質を利用して、以下のように式変形できる。
=(du1/B1)+(du2/B2)+…+(dum/Bm)
=((du1+du2+…+dum)/A
=(du1+du2+…+dum)/U*Du
=1/U
Uは、ステップS1502の乱数kに相当するため、1/U mod qの値は、k^−1 mod qに相当することになる。これにより、k^−1 mod qの値を、kの値そのものはメモリに乗せることなく計算することができる。
次に、署名鍵生成式FとステップS1705で生成したm個のCi(i=1,2,…,m)式を用いて、(式E)を生成する(ステップS1706)。
次に、(式E)と恒等な(式H’)を生成する(ステップS1707)。
次に、(式H’)に基づき、署名鍵生成式Fの要素である分割鍵と、C1、C2、…、Cmの要素値に対して、実施の形態1で説明したフローを用いて結合演算し、結合演算した値を結合分割鍵とする(ステップS1708)。なお、ステップS1807およびステップS1708の処理は、実施の形態1における署名鍵生成式F21を(式E)と、C1、…、Cmの要素値と署名鍵生成式F21の要素値diとを実施の形態1における署名鍵生成式F21の要素値diと見ることにより、実施例1と同様の処理となるため、詳細な説明は省略する。このようにすると恒等式H’は、結合分割鍵を用いたHとして表すことができる。
次にステップS1501で算出したハッシュ値hと、ステップS1705で生成した式C1、C2、…、Cmと、ステップS1707で生成した恒等式Hと、ステップS1503で算出した点RのX座標の値rを用いて、
S = (h+r*d)/k mod q
と恒等な演算を、
S = h*(C1+C2+…+Cm)+r*H mod q
上式で算出し、算出値をSとする(ステップS1709)。
なお、ステップS1709の演算においては、h*(C1+C2+…+Cm)の演算結果値が直接メモリに出ないような順序で演算することが望ましい。
なぜならh*(C1+C2+…+Cm)の値から、乱数情報であるkを復元することが可能となるためである。
続いて、図17のフローを具体例を上げて説明する。
まず、3個の乱数を生成し、それぞれを分割冗長鍵du1、du2、du3とし、
Du=du1+du2+du3
とする(ステップS1701)。
続いて、乱数生成恒等式Uを用いた計算の説明に移るが、以下の説明においては、乱数生成恒等式Uは、図16の説明にて生成した以下の(式U)とする。
U = (U1+U2)*U3+(U4+U5)*U6…(式U)
このとき、(式A)は、例えば、以下のようになる。
*(du1+du2+du3) …(式A)
次に、(式A)と恒等な(式B1)、(式B2)、(式B3)を生成する。
恒等式B1の計算手順としては、まず、次のような式Aの恒等式1を生成し、
(((U1+U2)*U3)+((U4+U5)*U6))*(du1+du2)
+((U1+U2)*U3+(U4+U5)*U6)*du3
生成した恒等式1に基づいて結合分割鍵をそれぞれ以下のようにする。
b12=(U4+U5)*U6
b13=du1+du2
b14=(U1+U2)*U3+(U4+U5)*U6
b15=du3
すると、恒等式B1は、式Aの恒等式1と上記結合分割鍵を用いて以下の(式B1)になる。
同様に、恒等式B2の計算手順は、まず、以下のような式Aの恒等式2を生成し、
(U1*U3+U2*U3+U4*U6+U5*U6)
*((du1)+(du2+du3))
生成した恒等式B2について、結合分割鍵をそれぞれ以下のようにする。
b22=U2*U3
b23=U4*U6
b24=U5*U6
b25=du1
b26=du2+du3
すると、恒等式B2は、式Aの恒等式2と上記結合分割鍵を用いて以下の(式B2)になる。
さらに同様にして、恒等式B3の生成手順としては、まず、以下のような式Aの恒等式3を生成し、
((U1*U3+U4*U6)+(U2*U3+U5*U6))
*(du1+du2+du3)
生成した恒等式3に応じて、結合分割鍵をそれぞれ以下のようにする。
b32=U2*U3+U5*U6
d33=du1+du2+du3
すると、恒等式B3は、式Aの恒等式3と上記結合分割鍵を用いて以下の式B3になる。
続いて、生成した(式B1)、(式B2)、(式B3)を用い、ステップS1705にて、以下の3式C1、C2、C3が生成される。
C1=du1/B1=du1/((b11+b12)*b13+b14*b15)…(式C1)
C2=du2/B2=du2/((b21+b22+b23+b24)*(b25+b26))…(式C2)
C3=du3/B3=du3/((b31+b32)*b33)…(式C3)
このとき、上述したように、C1+C2+C3=k^(−1) mod qが成り立つことになる。
F = (d1+d2+d3+d4)*(d5+d6+d7+d8)…(式F)
このとき、次にステップS1706にて生成される(式E)は、
(d1+d2+d3+d4)*(d5+d6+d7+d8)*(C1+C2+C3)となる(ステップS1706)。続いて、(式E)から(式E)と恒等な(式H)を作成する(ステップS1707)。ここでは、(式E)の恒等変換例を
H = ((d1+d3)+(d2+d4))*((d6+d7)+(d8+d5))*C1
+((d2+d3)+(d1+d4))*((d6+d8)+(d7+d5))*(C2+C3)
とし、結合分割鍵をそれぞれ
H1=d1+d3
H2=d2+d4
H3=d6+d7
H4=d8+d5
H5=C1
H6=d2+d3
H7=d1+d4
H8=d6+d8
H9=d7+d5
H10=C2+C3
とする。この場合、恒等式Hは、上記の結合情報を利用して以下のような(式H)となる。
+((H6+H7)*(H8*H9))*H10…(式H)
次に、
h*(C1+C2+C3)+r*H
=h*(C1+C2+C3)+r*{((H1+H2)*(H3*H4))*H5+
((H6+H7)*(H8*H9))*H10}
を交換法則、結合法則、分配法則を用いてh*(C1+C2+C3)の値が直接メモリに出ないように算出し、算出結果を署名Sとする。h*(C1+C2+C3)の値を直接メモリに出さないようにする計算順序の一例としては、
h*(C1+C2+C3)+r*{((H1+H2)*(H3*H4))*H5+
((H6+H7)*(H8*H9))*H10}
=h*(C1+C2)+r*{((H1+H2)*(H3*H4))*H5}
+h*C3+r*{((H6+H7)*(H8*H9))*H10}
という式に変形して計算する。
以上のようにすることで、ステップS1502の乱数kに相当する値と署名鍵dの値を直接メモリに出現させることなく、且つ実行の度に署名Sの生成に用いる乱数生成恒等式Uと署名生成式Hを署名生成を実行するたびに変化させることが可能となるため、不正解析による署名鍵dの特定が非常に困難となるという効果がある。
本発明の実施の形態3について、以下に説明する。
本実施の形態3では、署名鍵を分割鍵に分割し、分割鍵を端末に埋め込むまでの工程を図18を用いて説明する。
鍵発行機関は、署名生成をするための署名鍵を発行する機関である。
分割鍵生成装置1802は、鍵発行機関から発行された署名鍵と、署名鍵生成式を入力とし、署名鍵生成式に基づき、署名鍵を分割する装置であり、分割鍵と署名鍵生成式を出力する。
ここで、情報端末1(1810)、情報端末2(1820)、…、情報端末n(1830)は、署名生成を行う情報端末である。これら情報端末の構成は、実施の形態1で説明した署名生成装置100と同じ構成であるため、本実施の形態3の説明に必要な構成のみを図示している。
分割鍵情報1804は、署名鍵1の分割鍵情報1811、署名鍵2の分割鍵情報1821、署名鍵nの分割鍵情報1831から構成されており、署名鍵1の分割鍵情報1811は、情報端末1810向けの分割鍵情報であり、署名鍵2の分割鍵情報1821は、情報端末2(1820)向けの分割鍵情報であり、署名鍵nの分割鍵情報1831は、情報端末n(1830)向けの分割鍵情報であることを示している。分割鍵情報(1811、1821、1831)は、実施の形態1で示した分割鍵識別情報テーブル200と分割鍵情報テーブル400としてもよく、また、署名鍵dと同じ値を算出できるように分割鍵と署名鍵生成式Fとの関係が識別できる情報であれば他の情報であってもよい。
ここで、書き込むまでのより具体的な一例を説明すると、分割鍵生成装置により生成された分割鍵情報(1811、1821、1831)は、分割鍵識別情報テーブル200と分割鍵情報テーブル400を表現したデータファイルであり、そのデータファイルをコンパイルしてバイナリデータとし、そのバイナリデータをROMライターなどの分割鍵書込み装置1805を用いて、分割鍵格納手段に書き込む。
なお、本実施の形態3では、情報端末(1810、1820、1830)の署名鍵生成式は、それぞれ異なる署名鍵生成式F1、F2、…Fnとしているが、情報端末全てで同じ署名鍵生成式としてもよい。この場合に情報端末ごとに異なる処理を行わせるためには、分割鍵生成装置1802が各情報端末毎に異なる分割鍵を生成し、生成された情報端末毎に異なる分割鍵を各情報端末(1810、1820、1830)に書き込めばよい。
(実施の形態4)
実施の形態4では、署名鍵生成恒等式生成手段120にて、署名鍵生成恒等式を算出する署名鍵生成恒等式生成プログラムを、ネットワークを介して更新する方法について図19、図20を用いて説明する。
更新サーバー1901は、署名生成装置100の署名鍵生成恒等式生成手段120の署名鍵生成恒等式生成プログラムとは別の署名鍵生成恒等式生成プログラムX1902を保持している。ここで、署名鍵生成恒等式生成プログラムX1902は、署名生成プログラムと同等な機能、すなわち、署名鍵生成式F21と恒等な式である署名鍵生成恒等式G121を生成する機能を有する。ただし、署名生成恒等式生成プログラムX1902が署名鍵生成恒等式G121を作成するフローは、署名鍵生成恒等式生成手段120の署名鍵生成恒等式生成プログラムとは異なるものとする。
署名生成装置100は、実施の形態1の図1で説明した構成要素に加え、本実施の形態4では、送受信手段1910と署名鍵生成恒等式生成プログラム更新手段1920とを備えるものとする。
署名鍵生成恒等式生成プログラム更新手段1920は、署名鍵生成恒等式生成プログラムの更新要求メッセージを、送受信手段1910を利用して、ネットワーク上に存在する更新サーバー1901に送信する。さらに、送受信手段1910を介して更新サーバー1901から署名鍵生成恒等式生成プログラムX1902を受信し、受信した署名鍵生成恒等式生成プログラムX1902で署名鍵生成恒等式生成手段120のプログラムを更新する。
まず、署名鍵生成恒等式生成プログラム更新手段1920が送受信手段1910に、署名鍵生成恒等式生成プログラムX1902のダウンロードを要求する(ステップS2001)。
次に、ダウンロード要求メッセージを受けた更新サーバー1901は、更新サーバー1901内で保持している署名鍵生成恒等式生成プログラムX1902と署名鍵生成恒等式生成プログラムX1902のハッシュ値1903を送受信手段1910に送信する(ステップS2003)。
次に、署名鍵生成恒等式生成プログラム更新手段1920は、署名鍵生成恒等式生成プログラムX1902のハッシュ値1903を利用して、署名鍵生成恒等式生成プログラムX1902が改竄されていないかを判定する。この判定の結果が「YES」、すなわち改ざんされていると判定された場合には更新フローを終了し、この判定結果が「NO」、すなわち改ざんされていないと判定された場合には更新処理を継続する(ステップS2005)。
書き込みが完了すると、署名鍵生成恒等式生成プログラム更新手段1920は書込み完了通知を受信し、これをもって更新フローは終了する(ステップS2006)。
このような更新機能を持たせることで、署名鍵生成恒等式プログラムが不正解析者により改竄された場合や、署名鍵生成恒等式生成プログラムの不具合があった場合に、署名鍵生成恒等式プログラムを更新することにより、署名生成装置100の安全性を確保することができる。
また、実施の形態4では、ネットワークを介して更新サーバー1901から更新用の署名鍵生成恒等式生成プログラムX1902をダウンロードしていたが、ネットワークでなく、署名鍵生成恒等式生成プログラムX1902が記録されたDVDやCD等の記録媒体を用いることで、署名鍵生成恒等式生成手段120のプログラムを更新するようにしてもよい。この処理を行う署名生成装置100は、図20における送受信手段1910を、記録媒体とのデータの読み書きを操作するようなドライバの機能を持たせたものとすることにより実現することができる。すなわち、上述のような署名生成装置100は、図20において、送受信手段1910を記録媒体ドライバとし、更新サーバー1901を記録メディアとし、ダウンロード要求を媒体からの読み込み要求と置き換えることにより実現できるため、詳細な説明は省略する。
<なお書き>
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
(3) 本実施の形態1では、分割鍵識別情報テーブル200や分割鍵情報テーブル400は、分割鍵生成装置22が書き込むこととしているが、これらのテーブルを署名生成装置100内部で生成してもよいことは言うまでもない。
例えば、先ず、ランダムに結合分割鍵を生成しておき、次いでその結合分割鍵に相当する部分が含まれる署名生成恒等式を生成することとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
(7)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
(8)明細書中での用語「交換法則」、「分配法則」、「結合法則」、「逆ポーランド記法」に関する記述は、公知の用語を念のために述べているに過ぎず、これらの用語に新たな定義を与えるものではない。
非特許文献1の手法では、まず、署名鍵生成式d=(d1*d2)+d3を満たすようなd1、d2、d3を求める。ここで、d1、d2およびd3が上述した分割鍵であり、署名鍵から分割鍵を生成することを署名鍵の分割と呼ぶ。
S1=M^d1 mod n
S2=S1^d2 mod n
S=S2*M^d3 mod n
の順に演算を行う。これにより、署名鍵dを使うことなく、RSA署名生成式S=M^d mod nと同じ署名Sが得られる。また、署名生成処理中には、メモリ上に、署名鍵dではなく、分割鍵(d1、d2、d3)が現れることとなるので、署名鍵dを保護することが出来る。
「署名生成ソフトウェアのランタイムデータ探索による耐タンパー性評価」 横浜国立大学 本田洋之 松本 勉 SCIS2005
さらに、毎回同一の分割鍵を利用するため、署名対象データを変えながら複数回の署名生成時のランタイムデータを収集し、収集した複数のランタイムデータ同士の差分を見て不変なデータを抽出するという動的解析を行うことにより、分割鍵を特定することができる。
上記課題に鑑み本発明は、不正解析者により静的解析や動的解析が成された場合であっても、秘密情報を秘匿することが出来るセキュア処理装置を提供することを目的とする。
また、前記記憶手段は、前記分割秘密情報と共に前記実行手段により用いられないダミー情報を記憶していることとしてもよい。
また、前記秘密情報は、デジタル署名を生成するための署名鍵であり、前記セキュア演算は、前記メッセージにデジタル署名を施す署名生成演算であることとしてもよい。
また、前記署名生成処理は、RSA(Rivest Shamir Adleman)署名生成処理であることとしてもよい。
また、前記署名生成処理は、楕円曲線デジタル署名方式による署名処理であることとしてもよい。
また、前記秘密情報は前記公開鍵暗号の前記秘密鍵であり、前記実行手段は、前記セキュア演算として、公開鍵と秘密鍵を利用した公開鍵暗号系の処理を行うこととしてもよい。
また、前記公開鍵暗号はRSA暗号であることとしてもよい。
また、前記公開鍵暗号は楕円曲線暗号であることとしてもよい。
また、前記セキュア処理装置は、更に、外部から、前記第1生成手段の更新用データを取得する取得手段と、前記更新用データを用いて、前記第1生成手段を更新する更新手段とを含むこととしてもよい。
また、生成される分割鍵の個数や結合分割鍵の個数を、装置外部から調整することが可能となり、セキュリティ強度を柔軟に設定することが可能となる。
本発明の集積回路は、メッセージに対して秘密情報を用いたセキュア演算を施した場合と同一の演算結果を得る集積回路であって、秘密情報を少なくとも2つに分割した分割秘密情報が引数として入力され、当該分割秘密情報から前記秘密情報を算出する第1の秘密情報生成式と、前記秘密情報を用いたセキュア演算の手順を示す第1のセキュア演算手順とを記憶している記憶手段と、少なくとも2つの前記分割秘密情報を演算した結果である結合秘密情報が引数として入力され、前記第1の秘密情報生成式と演算上等価な第2の秘密情報生成式を生成する第1生成手段と、前記第2の秘密情報生成式に含まれる演算子に基づいて、引数として前記結合秘密情報が入力され前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成する第2生成手段と、前記メッセージに対し前記第2のセキュア演算手順に従ったセキュア演算を施す実行手段とを備える。
また、前記難読化装置は、前記秘密情報の難読化の方法を決定するためのパラメータを入力として受け付ける入力手段を備え、前記秘密情報難読化ステップは、前記入力手段が前記パラメータを受け付ける受付ステップと、前記パラメータに基いて決定される難読化方法で、前記秘密情報を難読化する難読化ステップとを含んでもよい。
また、前記パラメータは、前記秘密情報の分割個数であり、前記難読化ステップは、前記分割個数に基づいて、前記秘密情報を少なくとも2つの分割秘密情報に分割する分割ステップを含むこととしてもよい。
また、前記パラメータは、第1の秘密情報生成式であり、前記難読化ステップは、前記第1の秘密情報生成式から前記秘密情報が算出されるように、前記秘密情報を少なくとも2つの分割秘密情報に分割するステップを含んでもよい。
また、前記秘密情報は、鍵発行機関から発行される秘密鍵であり、前記難読化秘密情報埋め込み方法は、前記鍵発行機関が前記秘密鍵を鍵発行機関の秘密鍵で暗号化する暗号化ステップと、前記難読化装置が、暗号化された前記鍵を公開鍵で復号および検証する検証ステップとをさらに有し、前記秘密情報難読化ステップは、検証された前記秘密鍵を難読化し、前記埋込ステップは、前記難読化装置により難読化された前記難読化情報をバイナリデータに変換するバイナリ変換ステップと、前記秘密情報を用いた演算結果と同一の結果を前記難読化秘密情報を用いて演算する機能を有するセキュア処理装置に、前記バイナリデータを埋め込むバイナリ埋込ステップとを含んでもよい。
(実施の形態1)
本発明の実施の形態1に係る秘密情報を用いセキュア処理を行うセキュア処理装置について、署名鍵を用いて署名生成を行う署名生成装置を例として説明する。
<構成>
図1は、本実施の形態1における、署名生成装置100を含む署名生成システムの概要図である。
(1)分割鍵生成装置22
分割鍵生成装置22は、外部から、署名鍵生成式F21と、署名鍵D20との入力を受け付けて、署名鍵生成式F21と署名鍵D20とに基づき、分割鍵識別情報テーブル200と、分割鍵情報テーブル400とを生成し、分割鍵識別情報テーブル200と、分割鍵情報テーブル400とを、後述する署名生成装置100が備える分割鍵格納手段110に書き込む。
F(d1,d2,d3,d4,d5,d6,d7,d8)=(d1+d2+d3+d4)*(d5+d6+d7+d8)
ここで、変数d1には分割鍵D1が代入され、変数d2には分割鍵D2が代入され、同様に、変数d3〜d8には、分割鍵D3〜D8がそれぞれ代入されるものとする。
ここで、グループ情報とは、署名生成式F21において、被演算子(d1〜d8)が他の被演算子とどのような演算(例えば、加算、乗算など)がされるかという関係を表す属性情報である。また、上記のグループを構成する各被演算子や、より小さなグループ等をメンバーと呼ぶ。
なお、複数の変数から構成されたグループ同士や、グループと他の変数とが、どのような演算子によって演算されるかという関係を表す属性情報についてもグループ情報と呼ぶものとする。
具体的には、「加算グループ」では、前述のように、各メンバーが演算子「+(加算)」で演算されるため、加算グループ1はd1+d2+d3+d4という式を表現していることになる。また、変数d5、d6、d7、d8は、加算グループ2というグループ情報と関連づけられている。加算グループ2は、加算グループ1の場合と同様にd5+d6+d7+d8という式を表現している。さらに、加算グループ1と加算グループ2とは、グループ情報として乗算グループ1と関連付けられている。
分割鍵情報テーブル400は、図4に示すように、分割鍵グループ識別子401と分割鍵グループメンバー識別子402とから構成される。
図4において、加算グループ1には、分割鍵グループ識別子401として「AG001」が割り当てられている。ここで、図3にて示したとおり、グループ「AG001」に属するメンバーは、変数d1、d2、d3、d4であるので、それぞれの変数を識別する「id001」、「id002」、「id003」、「id004」が、分割鍵グループメンバー識別子402として分割鍵情報テーブル400に登録されている。
本実施の形態では、署名鍵生成式F21の入力変数の数が8個であることから、分割鍵生成装置22は、署名鍵D20を8個の分割鍵D1〜D8に分割する。
ここで、分割鍵Dn(n:1〜8)は、署名鍵生成式の引数dnに代入される。即ち、分割鍵D1は、署名鍵生成式F21の引数d1に代入され、同様に分割鍵D2は、引数d2に代入され、分割鍵D3〜D8は、引数d3〜d8に代入される。
次に、R1=(D1+D2+D3+D4)が成り立つランダムな値D1、D2、D3、D4を選出し、R2=(D5+D6+D7+D8)が成り立つランダムな値D5、D6、D7、D8を選出する。
分割鍵生成装置22は、一例として、分割鍵D1に対し分割鍵識別子201として「ID001」を割り当て、分割鍵D2に対し分割鍵識別子201として「ID002」を割り当て、同様に、分割鍵D3、D4、D5、D6、D7、D8のそれぞれに対し、分割鍵識別子201として「ID003」、「ID004」、「ID005」、「ID006」、「ID007」、「ID008」を割り当てる。
(2)署名生成装置100
署名生成装置100は、図1に示すように、分割鍵格納手段110、署名鍵生成恒等式生成手段120、結合分割鍵生成手段130、結合分割鍵格納手段140、署名生成手段150を含んで構成される。
図5は、署名生成恒等式G121と後述する結合分割鍵141を動的に生成し、署名S30を生成して出力するまでの処理の概要を示すフローチャートである。但し、図5の各ステップは、図6〜図11のフローチャートを用いて詳細に説明する。
次に、上述した図5のステップS501の詳細について、図6を用いて説明する。
なお、本実施の形態におけるランダムシャッフルとは、例えば、式d1+d2+d3+d4を、交換法則を利用して、恒等な式に変換することを言う。また、加算などの場合に、式1+2+3の計算結果と式3+2+1の計算結果とが同一であるような関係、すなわち、式における被演算子の順序を入れ替えても計算結果が変わらないような関係を「交換法則が成立する」という。
ここで、分割鍵情報テーブル400は、二次元配列Tableとして表現されているものとする。また、Table[n][m]は、図4の分割鍵グループメンバー識別子401に対応しており、上からn行目のグループに属する、左からm個目の分割鍵グループ識別子を示す。また、単にTable[n]とだけ書く場合は、上からn行目のグループに属する分割鍵グループ識別子の集合を示す。
Table[0]={AG001,AG002}、
Table[1]={id001,id002,id003,id004}、
Table[2]={id005,id006,id007,id008}
なお、この例及び以下の例では、Tableの各インデックスは0から始まるものとする。
図4に示した分割鍵情報テーブル400の場合、グループ総数Nは3となる。
ここで、iは現在シャッフル対象となっている分割鍵グループが何番目の分割鍵グループであるかをカウントする変数である。
ここで、シャッフル回数snは、各分割鍵グループに対してあと何回シャッフルを行うかを示す変数である。ここで、シャッフル回数snとして乱数を利用することにより、シャッフルする回数を動的に設定することが出来、ひいては署名鍵生成恒等式を動的に生成することが出来る。
次に、0以上M未満のランダムな整数を2つ発生させ、それぞれを変数s1、s2に代入する(ステップS705)。
すなわち、i番目のグループに属するs1番目の構成要素とs2番目の構成要素とを入れ替えた上で、残りシャッフル回数snを1つ減らす。
そうでなく、判定の結果が「NO」ならば、iがN−1と等しいかどうか判定する(ステップS708)。すなわち、全グループについてシャッフルが終了したか否かを判定する。
ランダムグループ分けとは、例えば、式(d1+d2+d3)+d4を、結合法則を利用して恒等式d1+(d2+d3+d4)へと変換する処理である。ここで、例えば式(1+2)+3と式1+(2+3)は結果が同一の値となり、このような関係、すなわち、一度に計算を行う単位の分割の仕方に関わらず結果が同一の値となるような関係を「結合法則が成立する」という。
まず、署名鍵生成恒等式生成手段120は、分割鍵格納手段110に記憶されている分割鍵情報テーブル400のグループ総数Nを取得する(ステップS801)。
次に、グループ分割位置リストGPを空リストとしてセットする(ステップS803)。ここで、分割位置リストGPは、分割鍵グループのメンバーを、前から何番目の位置で分割するかを示す値のリストである。
このように、グループ分割リストGPの内容ランダムに設定することにより、式の分割位置を動的に設定することができ、ひいては署名鍵生成恒等式を動的に生成することが出来る。
ステップS807の判定の結果が「NO」であれば、iをインクリメントし、ステップS803へ戻ることにより、さらに次の分割鍵グループについてランダムグループ分けを行っていく(ステップS808)。そうでなく判定の結果が「YES」であれば、全分割鍵グループについてランダムグループ分けが終了したと判断しランダムグループ分けを終了する。
F(d1,d2,d3,d4,d5,d6,d7,d8)=(d1+d2+d3+d4)*(d5+d6+d7+d8)
は、交換法則と結合法則により、署名鍵生成式F21と恒等な署名鍵生成恒等式
G’(d1,d2,d3,d4,d5,d6,d7,d8)=((d7+d6)+(d8+d5))*((d2+d1)+(d4+d3))
に変換されたことになる。
図10(a)は、図9で生成された署名鍵生成恒等式121の右辺((d7+d6)+(d8+d5))*((d2+d1)+(d4+d3))をマトリックス表現したものである。
Matrix[0][0]=(d7+d6)*(d2+d1)
Matrix[0][1]=(d7+d6)*(d4+d3)
Matrix[1][0]=(d8+d5)*(d2+d1)
Matrix[1][1]=(d8+d5)*(d4+d3)
のようになる。
(d4+d3)*((d7+d6)*(d8+d5))
というように(d4+d3)で括ることで、結合することができる。
図10(b)は、マトリックス表現を用いて最終的な署名生成恒等式G121を生成するまでの式変形を、通常の式の変形で例示したものである。
G’=((d7+d6)+(d8+d5))*((d2+d1)+(d4+d3))…(式1)
であり、この式を分配法則を用いて展開すると、(式2)のようになる。
+(d8+d5)*(d2+d1)+(d8+d5)*(d4+d3)…(式2)
さらに(式2)を図10(a)のマトリックス1000内でステップS603にて結合する箇所としてランダムに指定された1001にあたる項を結合すると、(式3)となる。
+(d4+d3)*((d7+d6)*(d8+d5)) …(式3)
この(式3)が図6のS601からS603を経て生成された署名鍵生成恒等式G121となる。
変数cd1にはd7+d6を演算した結果値が格納され、cd2にはd2+d1を演算した結果値、cd3にはd8+d5を演算した結果値、cd4にはd2+d1を演算した結果値、cd5にはd4+d3を演算した結果値、cd6にはd7+d6を演算した結果値、cd7にはd8+d5を演算した結果値が格納される。すなわち、下式が成立する。
= G(cd1,cd2,cd3,cd4,cd5,cd6,cd7)
ここで、G’(d1,d2,d3,d4,d5,d6,d7,d8)の引数である変数d1には、id001に対応する分割鍵識別子ID001を持つ分割鍵D1が代入され、同様に変数d2には分割鍵D2が代入され、変数d3、d4、d5、d6、d7、d8のそれぞれには、分割鍵D3、D4、D5、D6、D7、D8がそれぞれ代入される。
図11は、各結合分割鍵141(CD1、CD2、…、CD7)に、それぞれ結合分割鍵識別子1101(ID001、ID002、…、ID007)が付与されていることを示している。
G(cd1,cd2,cd3,cd4,cd5,cd6,cd7)
= (cd1*cd2)+(cd3*cd4)+cd5*(cd6+cd7)…(式4)
ここで、(式4)の引数cd1,cd2,…、cd7に結合分割鍵(CD1、CD2、…、CD7)の値を代入した結果と、(式3)の引数d1、d2、…、d8に(D1、D2、…、D8)を代入した結果は等しく、
さらに結合分割鍵141(CD1、CD2、…、CD7)は分割鍵111(D1、D2、…、D8)を結合演算した結果であることから、(式4)は署名鍵生成式F21と同一の結果を得ることができる式となるため、署名生成手段150は、(式4)を署名鍵生成恒等式121として利用する。
署名生成手段150は、メッセージM10を入力とし、結合分割鍵格納手段140に記憶されている結合分割鍵141を用いて署名S30を生成する。RSA署名生成における例を示すと、署名鍵D20を用いず、結合分割鍵141のみを用いてS=M^d mod nと同一の演算結果となる署名S30を生成する。
まず、署名Sの生成方法の概略を説明する。
署名Sは、例えば署名鍵生成恒等式Gの各引数cd1〜cd7に、CD1〜CD7が代入されており、(CD1*CD2)+(CD3*CD4)+CD5*(CD6+CD7)であったとき、メッセージMと、n(=p*q)とを用いて、
S0=(M^CD1)^CD2 mod n、
S1= S0*((M^CD3)^CD4) mod n、
S= S1*(((M^CD6)*(M^CD7))^CD5) mod n
という計算により、S=M^D mod nと同じ結果が生成される。
P[13]={CD1,CD2,*,CD3,CD4,*,+,CD5,CD6,CD7,+,*,+}
以下、図12、図13を用いて、署名生成フローについて詳細に説明する。
次に、iとjを1に、ChkとFlagを0に、Nを配列Pのサイズに設定し、スタックにP[0]をプッシュする(ステップS1202)。ここで、iは、現在着目している配列のインデックスであり、jは現在スタックに積まれている分割結合鍵の個数を示す。また、Chkは、配列中でどのインデックスまで演算子“+”であるか否かを確認したかを示す。ここで、Chkは、前述したjを用いて、現在アクセスしている配列P[i]からj−1個先の演算子が“+”であるかどうかを判定し、“+”演算子の有効区間内であるか判定する際に利用する。また、Flagは、“+”演算子の有効な区間内であるか否かを示すフラグとして利用される。より具体的には、署名鍵生成恒等式Gの区切りポイントの判定に利用される。
ステップS1203の判別の結果が、「YES」すなわち結合分割鍵であれば、スタックにP[i]の値をプッシュし、配列Pにおけるアクセスを1つ移すためにiをインクリメントし、また、スタックに積まれる分割結合鍵の個数が増えるためjをインクリメントする(ステップS1204)。
ステップS1206の判定結果が「YES」であれば、Chkをi+j−1の値に設定する。すなわち、配列Pのi+j−1番目まで“+”であるかの判定が終了しているため、Chkの値が更新される。そうでなく「NO」であれば、ステップS1208へ処理を移す。なお、ステップS1206にて、i+j−1がN以下かどうかも確認しているのは、Chkが配列のサイズを超えた箇所を示すことを防止するためである。
ステップS1208の判定結果が、「YES」であれば、Flagを0に設定する(ステップS1209)。
次に図13を用いて、図12のフローの続きについて説明する。
まず、Val1とVal2のパターンを判別する(ステップS1301)。
そうでなく、ステップS1301の判別の結果、Val1、Val2のどちらか一方が結合分割鍵で、他方が署名ベキ乗中間値の場合、ステップS1320へ処理を移す。ここでの署名ベキ乗中間値とは、メッセージM10を、少なくとも一つ以上の結合分割鍵でベキ乗した値を示し、署名S30を算出する過程での中間値となるものである。具体的には、後述するS0やS1等がこれに当たる。
ここから、S1301処理後にそれぞれ処理がS1310、S1320、S1330に分岐した際の、各処理以降の個別の処理について説明する。
まず、Flagを判別する(ステップS1310)。
ステップS1310の判別の結果、Flag=0、すなわち、“+”演算子の有効区間内である場合は、ステップS1311へ処理を移す。
ステップS1311の判別の結果、P[i]が“+”演算子であれば、ステップS1312へ処理を移す。
ステップS1312では、(M^Val)*(M^Val2) mod nの値をスタックにプッシュする(ステップS1312)。
ステップS1312、S1313の処理後、j=j−2とし、ステップS1341へ処理を移す(ステップS1314)。ここで、j=j−2としているのは、一連の計算により、結合分割鍵(Val1とVal2に当たる)が使用されたため、スタックに積まれる結合分割鍵の数が減少するためである。なお、ステップS1312、S1313で計算結果をスタックにプッシュしているが、この値は上述した署名ベキ乗中間値であって結合分割鍵ではないため、jは2つ減ることになる。
ステップS1315の判別の結果、P[i]が“+”演算子であれば、ステップS1316へ処理を移す。
ステップS1316では、Val1+Val2を演算した結果をスタックにプッシュする(ステップS1316)。
ここまでが、S1310以降の個別の処理についての説明である。
まず、P[i]の演算子を判別する(ステップS1320)。
そうでなくステップS1311の判別の結果、P[i]が“*”演算子であれば、ステップS1322へ処理を移す。
ステップS1321では、結合分割鍵の値をVal1、ベキ乗中間値をVal2とし、(M^Val1)*Val2 mod nを演算した値をスタックへプッシュする(ステップS1321)。
ここまでが、S1310以降の個別の処理についての説明である。
ここから、ステップS1330へ処理が移った場合、すなわち、Val1、Val2の両者が署名ベキ乗中間値の場合について説明する。
以上でS1310、S1320、S1330以降個別のフローについて説明を終わる。
(S1310、S1320、S1330以降の共通処理)
ここからは、S1310、S1320、S1330以降で共通のフローとなる部分について説明する。
ステップS1341の処理後、i<Nかどうか判別する(ステップS1342)。
図13では署名生成フローチャートについて説明した。ここでは、図13のフローを利用した際のスタックの様子を図14を用いて示す。
署名生成恒等式G121は、逆ポーランド記法で表現されたPに対して署名生成を順に説明する。
次に、P[10]が演算子“+”であり、このときのiの値は10でjの値は3であり、Flag=1かつP[12]=“+”であるので、Flagを0に設定する。その後、スタックの上位2つの値CD6とCD7をポップし、Flag=0かつ演算子“+”であるので、(M^CD6)*(M^CD7) mod nを演算した値をS3とし、S3をスタックにプッシュする(ステップS1406)。
このように、本実施の形態では、署名鍵D21の値を一切利用せず、署名S30を生成することが可能である。さらに、結合分割鍵141が、署名生成時に動的に生成されるので、毎回異なる結合分割鍵を用いて署名生成が可能となる。さらに、署名鍵Dだけでなく、RSA署名における秘密情報(p、q)の値も一切利用せず署名生成が可能となる。また、署名生成恒等式Gも署名生成処理の実行の度に毎回異なるため、ランタイムデータの収集結果の差分をとっても、署名鍵dを算出するための鍵候補となる結合分割鍵特定は困難である。さらに、結合分割鍵が特定されたとしても、結合分割鍵から署名鍵Dを求めるためには、署名鍵生成式Gを特定する必要があり、署名鍵生成恒等式Gの取りうるパターンを総当りで解析しなければならなく、署名鍵Dの解析は非常に困難になる。さらに、署名生成フローも毎回異なるため、署名生成時の電力と署名生成処理時間も変化するので、電力差分攻撃やタイミング攻撃に対しても安全であるという効果も有する。
本発明の実施の形態2について、以下に説明する。
実施の形態1では、RSA署名生成における本発明の実施例を説明したが、本実施の形態2では、ECDSA(Elliptic Curve Digital Signature Algorithm)に適用した例について説明する。ECDSAは、楕円曲線上の離散対数問題に基づいて考案された署名方法である。ECDSA自体は公知技術であるため、詳細な説明は省略し、ECDSAに対して本発明を適用した場合の実施例を以下で説明する。なお、下記の図15の説明において、分割乱数情報や結合乱数情報等を用いて、メモリ上に秘密情報が現れないように計算する処理を除いた処理フローが、通常のECDSA署名の生成フローにあたる。
なお、本発明を適用した場合の署名生成装置100の構成、及び署名鍵生成恒等式G121と結合分割鍵141の作成方法は、実施の形態1と同じなので説明を省略する。
ECDSAにおける署名生成式は、次式で示される。
ここで、Sは署名であり、dは署名鍵であり、rはベースポイントPのk倍点のx座標であり、qはベースポイントPの位数である。
d=(k*S−h)/r mod q
以降、図15を用いて、署名鍵dと乱数kの2つの情報を秘密にした場合の、ECDSAの署名生成フローについて説明する。なお、署名生成装置100は、図1の署名生成装置100では図示していないが、楕円曲線のシステムパラメータ(y^2=x^3+a*x+b、定義体GF(p)、ベースポイントP、ベースポイントPの位数q)を保持しており、乱数を生成する乱数生成手段を備えているものとする。
次に、楕円曲線のベースポイントPに対して乱数kを発生させ、Pのk倍点を計算し、k倍した点をRとする(ステップS1502)。このとき、乱数kは、秘密情報であるので、乱数kの値がメモリに直接現れないように、複数の分割乱数情報を生成し、生成した分割乱数情報のみを用いてPのk倍点を計算する。ステップS1502におけるこの処理については、後に図16を用いて詳細に説明する。
次に、乱数kと署名鍵dを用いた式S = (h+r*d)/k mod qと恒等な演算を、乱数kと署名鍵dの値を直接メモリ上に保持することなく、代わりに分割乱数情報と、署名鍵dを予め分割した分割鍵とをメモリ上に保持し、これらを用いて署名Sを生成する(ステップS1504)。
最後に、ステップS1503とS1504の結果から(r,S)のペアを署名として出力し、ECDSAの署名生成を終了する。
まず、m個のランダムな式R1…Rmを生成し、その積を演算する乱数生成式Tを作成する。ここで、R1…Rmの積が乱数kにあたる(ステップS1601)。
更に、R1…Rmのそれぞれを更に細かな値(分割乱数情報)の和に分割する。
T = Σt(1,h)*Σt(2,i)*…*Σt(m,j)…(式T)
ここで、
Σt(1,h)=t(1,1)+t(1,2)+…+t(1,h)
Σt(2,i)=t(2,1)+t(2,2)+…+t(2,i)
・・・
Σt(m,j)=t(m,1)+t(m,2)+…+t(m,j)
である。
また、h、i、j…は、任意の数である。
ここで、「qと互いに素となる」という条件は、乱数kが逆元を持つために必要な条件である。
そうでなくステップS1603の判定の結果が、「YES」であれば、乱数生成式Tと恒等な乱数生成恒等式Uを作成する(ステップS1604)。
まず、ステップS1601において、上述した方法で生成した乱数生成式Tが以下の式であるとする。
Σt(1,4)=t(1,1)+t(1,2)+t(1,3)+t(1,4)
Σt(2,4)=t(2,1)+t(2,2)+t(2,3)+t(2,4)
次に、t(1,1)、t(1,2)、…、t(1,4)、t(2,1)、t(2,2)、…、t(2、4)のそれぞれに乱数値を設定する(ステップS1602)。
続いて、乱数生成恒等式Uを、
乱数生成式T=(t(1,1)+t(1,2)+t(1,3)+t(1,4))
*(t(2,1)+t(2,2)+t(2,3)+t(2,4))
から、交換法則、結合法則、分配法則を利用し、例えば、
T = (((t(1,1)+t(1,3))+((t(1,2)+t(1,4)))
*((t(2,1)+t(2,3))
+(((t(1,1)+t(1,4))+((t(1,2)+t(1,3)))
*((t(2,2)+t(2,4))
のように恒等変換し、引数u1〜u6を
u1=t(1,1)+t(1,3)
u2=t(1,2)+t(1,4)
u3=t(2,1)+t(2,3)
u4=t(1,1)+t(1,4)
u5=t(1,2)+t(1,3)
u6=t(2,2)+t(2,4)と設定する(ステップS1605)。
U(u1,u2,u3,u4,u5,u6)
= (u1+u2)*u3+(u4+u5)*u6となる。
U = (U1+U2)*U3+(U4+U5)*U6
また、ベースポイントPのU倍点U*Pは、
U*P = U3*(U1*P+U2*P)+U6*(U4*P+U5*P)
で計算可能となる。
まず、ランダムな値をm個生成し、それぞれを分割冗長鍵du1、du2、…、dumとし、各分割冗長鍵を加算したdu1+du2+…+dumを分割冗長鍵生成式Duとする(ステップS1701)。
これは、式 S = (h+r*d)/k mod qにおける、1/kをメモリ上に直接現すことなく計算するためのものである。
1/k = Du/(Du*k)
= du1/(Du*k)+ du2/(Du*k) +・・・+dum/(Du*k)
であり、かつ、S1502で生成したUはkと等価であるので、1/kの代わりに、
du1/(Du*U)+ du2/(Du*U) +・・・+dum/(Du*U)
を計算すればよい。
1/k = (du1/B1)+ (du2/B2) +・・・+ (dum/Bm)となり
この(du1/B1)をC1に置き換え、同様に(du2/B2)をC2に・・・(dum/Bm)をCmに置き換えると、
1/k = C1+C2+・・・Cm
となる。
S = (h/k + r*d/k) mod n
= (h*(C1+C2+・・・+Cm)
+ r*F*(C1+C2+…+Cm)) mod n
= (h*(C1+C2+・・・+Cm)
+ r*H) mod n
を計算すればよいことになる。
F(d1,d2,d3,d4,d5,d6,d7,d8)
=(d1+d2+d3+d4)*(d5+d6+d7+d8)
を示すものである。
以下、ステップS1702以降のフローチャートの説明に戻る。
ステップS1702の判定の結果が「NO」であれば、さらに別のdu1…dumを生成するために、ステップS1701へ処理を戻す。
ステップS1703とS1704は、Aを実施の形態1における署名鍵生成式F21と見て、Aの式を構成している分割冗長鍵du1、du2、…、dumおよびステップS1504にて作成した結合乱数情報U1、U2、…、Uiを分割鍵111と見て、実施の形態1と同様の処理を行うことにより、恒等式B1、B2、…、Bm、および、それぞれの恒等式に対応する結合分割鍵bij(i,j=1,2,…)を生成することができる。
C2=du2/B2
…
Cm=dum/Bm
このとき、C1+C2+…+Cmは、B1、B2、Bmは共にAと恒等であることと、Du=du1+du2+…+dumである性質を利用して、以下のように式変形できる。
=(du1/B1)+(du2/B2)+…+(dum/Bm)
=((du1+du2+…+dum)/A
=(du1+du2+…+dum)/U*Du
=1/U
Uは、ステップS1502の乱数kに相当するため、1/U mod qの値は、k^−1 mod qに相当することになる。これにより、k^−1 mod qの値を、kの値そのものはメモリに乗せることなく計算することができる。
F*(C1+C2+…+Cm)…(式E)
次に、(式E)と恒等な(式H’)を生成する(ステップS1707)。
次にステップS1501で算出したハッシュ値hと、ステップS1705で生成した式C1、C2、…、Cmと、ステップS1707で生成した恒等式Hと、ステップS1503で算出した点RのX座標の値rを用いて、
S = (h+r*d)/k mod q
と恒等な演算を、
S = h*(C1+C2+…+Cm)+r*H mod q
上式で算出し、算出値をSとする(ステップS1709)。
なお、ステップS1709の演算においては、h*(C1+C2+…+Cm)の演算結果値が直接メモリに出ないような順序で演算することが望ましい。
演算順序については、具体例を後述するので、ここでの説明は省略する。
まず、3個の乱数を生成し、それぞれを分割冗長鍵du1、du2、du3とし、
Du=du1+du2+du3
とする(ステップS1701)。
続いて、乱数生成恒等式Uを用いた計算の説明に移るが、以下の説明においては、乱数生成恒等式Uは、図16の説明にて生成した以下の(式U)とする。
このとき、(式A)は、例えば、以下のようになる。
((U1+U2)*U3+(U4+U5)*U6)
*(du1+du2+du3) …(式A)
次に、(式A)と恒等な(式B1)、(式B2)、(式B3)を生成する。
(((U1+U2)*U3)+((U4+U5)*U6))*(du1+du2)
+((U1+U2)*U3+(U4+U5)*U6)*du3
生成した恒等式1に基づいて結合分割鍵をそれぞれ以下のようにする。
b12=(U4+U5)*U6
b13=du1+du2
b14=(U1+U2)*U3+(U4+U5)*U6
b15=du3
すると、恒等式B1は、式Aの恒等式1と上記結合分割鍵を用いて以下の(式B1)になる。
同様に、恒等式B2の計算手順は、まず、以下のような式Aの恒等式2を生成し、
(U1*U3+U2*U3+U4*U6+U5*U6)
*((du1)+(du2+du3))
生成した恒等式B2について、結合分割鍵をそれぞれ以下のようにする。
b22=U2*U3
b23=U4*U6
b24=U5*U6
b25=du1
b26=du2+du3
すると、恒等式B2は、式Aの恒等式2と上記結合分割鍵を用いて以下の(式B2)になる。
さらに同様にして、恒等式B3の生成手順としては、まず、以下のような式Aの恒等式3を生成し、
((U1*U3+U4*U6)+(U2*U3+U5*U6))
*(du1+du2+du3)
生成した恒等式3に応じて、結合分割鍵をそれぞれ以下のようにする。
b32=U2*U3+U5*U6
d33=du1+du2+du3
すると、恒等式B3は、式Aの恒等式3と上記結合分割鍵を用いて以下の式B3になる。
続いて、生成した(式B1)、(式B2)、(式B3)を用い、ステップS1705にて、以下の3式C1、C2、C3が生成される。
C2=du2/B2=du2/((b21+b22+b23+b24)*(b25+b26))…(式C2)
C3=du3/B3=du3/((b31+b32)*b33)…(式C3)
このとき、上述したように、C1+C2+C3=k^(−1) mod qが成り立つことになる。
F = (d1+d2+d3+d4)*(d5+d6+d7+d8)…(式F)
このとき、次にステップS1706にて生成される(式E)は、
(d1+d2+d3+d4)*(d5+d6+d7+d8)*(C1+C2+C3)となる(ステップS1706)。続いて、(式E)から(式E)と恒等な(式H)を作成する(ステップS1707)。ここでは、(式E)の恒等変換例を
H = ((d1+d3)+(d2+d4))*((d6+d7)+(d8+d5))*C1
+((d2+d3)+(d1+d4))*((d6+d8)+(d7+d5))*(C2+C3)
とし、結合分割鍵をそれぞれ
H1=d1+d3
H2=d2+d4
H3=d6+d7
H4=d8+d5
H5=C1
H6=d2+d3
H7=d1+d4
H8=d6+d8
H9=d7+d5
H10=C2+C3
とする。この場合、恒等式Hは、上記の結合情報を利用して以下のような(式H)となる。
+((H6+H7)*(H8*H9))*H10…(式H)
次に、
h*(C1+C2+C3)+r*H
=h*(C1+C2+C3)+r*{((H1+H2)*(H3*H4))*H5+
((H6+H7)*(H8*H9))*H10}
を交換法則、結合法則、分配法則を用いてh*(C1+C2+C3)の値が直接メモリに出ないように算出し、算出結果を署名Sとする。h*(C1+C2+C3)の値を直接メモリに出さないようにする計算順序の一例としては、
h*(C1+C2+C3)+r*{((H1+H2)*(H3*H4))*H5+
((H6+H7)*(H8*H9))*H10}
=h*(C1+C2)+r*{((H1+H2)*(H3*H4))*H5}
+h*C3+r*{((H6+H7)*(H8*H9))*H10}
という式に変形して計算する。
本発明の実施の形態3について、以下に説明する。
本実施の形態3では、署名鍵を分割鍵に分割し、分割鍵を端末に埋め込むまでの工程を図18を用いて説明する。
鍵発行機関では、n台(情報端末1(1810)、情報端末2(1820)、…、情報端末n(1830))の端末向けに、それぞれ異なる署名鍵1、署名鍵2、…、署名鍵nを発行する。
実施の形態4では、署名鍵生成恒等式生成手段120にて、署名鍵生成恒等式を算出する署名鍵生成恒等式生成プログラムを、ネットワークを介して更新する方法について図19、図20を用いて説明する。
更新サーバー1901は、署名生成装置100の署名鍵生成恒等式生成手段120の署名鍵生成恒等式生成プログラムとは別の署名鍵生成恒等式生成プログラムX1902を保持している。ここで、署名鍵生成恒等式生成プログラムX1902は、署名生成プログラムと同等な機能、すなわち、署名鍵生成式F21と恒等な式である署名鍵生成恒等式G121を生成する機能を有する。ただし、署名生成恒等式生成プログラムX1902が署名鍵生成恒等式G121を作成するフローは、署名鍵生成恒等式生成手段120の署名鍵生成恒等式生成プログラムとは異なるものとする。
署名鍵生成恒等式生成プログラム更新手段1920は、署名鍵生成恒等式生成プログラムの更新要求メッセージを、送受信手段1910を利用して、ネットワーク上に存在する更新サーバー1901に送信する。さらに、送受信手段1910を介して更新サーバー1901から署名鍵生成恒等式生成プログラムX1902を受信し、受信した署名鍵生成恒等式生成プログラムX1902で署名鍵生成恒等式生成手段120のプログラムを更新する。
まず、署名鍵生成恒等式生成プログラム更新手段1920が送受信手段1910に、署名鍵生成恒等式生成プログラムX1902のダウンロードを要求する(ステップS2001)。
以上のように署名生成装置100は、ネットワーク1900を利用して、更新サーバー1901から新しい署名鍵生成恒等式生成プログラムX1902をダウンロードして署名鍵生成恒等式生成手段120の署名鍵生成恒等式プログラムの更新を行う。
<なお書き>
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
(5)上記の装置を構成する構成要素の一部または全部は、装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(8)明細書中での用語「交換法則」、「分配法則」、「結合法則」、「逆ポーランド記法」に関する記述は、公知の用語を念のために述べているに過ぎず、これらの用語に新たな定義を与えるものではない。
20 署名鍵D
21 署名鍵生成式F
22 分割鍵生成装置
30 署名S
100 署名生成装置
110 分割鍵格納手段
120 署名鍵生成恒等式生成手段
121 署名鍵生成恒等式G
130 結合分割鍵生成手段
140 結合分割鍵格納手段
150 署名生成手段
200 分割識別情報テーブル
201 分割鍵識別子
1000 マトリックス
1001 結合箇所選択部
1900 ネットワーク
1901 更新サーバ
1902 更新用の署名鍵生成恒等式生成プログラム
1903 更新用の署名鍵生成恒等式生成プログラムの改ざん検出値
1910 送受信手段
1920 署名鍵生成恒等式生成プログラム更新手段
Claims (27)
- メッセージに対して秘密情報を用いたセキュア演算を施した場合と同一の演算結果を得るセキュア処理装置であって、
秘密情報を少なくとも2つに分割した分割秘密情報が引数として入力され、当該分割秘密情報から前記秘密情報を算出する第1の秘密情報生成式と、前記秘密情報を用いたセキュア演算の手順を示す第1のセキュア演算手順とを記憶している記憶手段と、
少なくとも2つの前記分割秘密情報を演算した結果である結合秘密情報が引数として入力され、前記第1の秘密情報生成式と演算上等価な第2の秘密情報生成式を生成する第1生成手段と、
前記第2の秘密情報生成式に含まれる演算子に基づいて、引数として前記結合秘密情報が入力され前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成する第2生成手段と、
前記メッセージに対し前記第2のセキュア演算手順に従ったセキュア演算を施す実行手段と
を備えることを特徴とするセキュア処理装置。 - 前記第1の秘密情報生成式は、1以上の演算を含み、
前記第2生成手段は、前記第1の秘密情報生成式に含まれる演算から、交換法則、結合法則、分配法則のいずれかを前記演算との間で満たす代替演算のある演算をランダムに選択し、選択した演算を前記代替演算に置き換えることにより第2の秘密情報生成式を生成する
ことを特徴とする請求項1に記載のセキュア処理装置。 - 前記第1の秘密情報生成式は1以上の演算を含み、各演算は、複数の被演算子と、被演算子同士の計算の内容を示す演算子とを含み、
前記記憶手段は、前記第1の秘密情報生成式に係る前記被演算子と前記演算子との関係を示す属性情報を記憶しており、
前記第1生成手段は、前記属性情報を用いて前記第2の秘密情報生成式を生成する
ことを特徴とする請求項2に記載のセキュア処理装置。 - 前記第1の秘密情報生成式において、前記被演算子には引数の値が入力され、前記引数それぞれの値は、前記分割秘密情報のいずれかが重複無く対応し、
前記属性情報は、結合可能な複数の被演算子と対応する演算子を示し、
前記第1生成手段は、前記属性情報に基づき、前記第1の秘密情報生成式における前記複数の被演算子を前記演算子で結合し、
前記第2生成手段は、前記結合秘密情報を、前記結合された各被演算子に対応する分割秘密情報を、前記演算子を用いて結合することにより生成する
ことを特徴とする請求項3に記載のセキュア処理装置。 - 前記第2の秘密情報生成式は、1以上の演算を含み、各演算は、複数の被演算子と、被演算子同士の計算の内容を示す演算子とを含み、
前記記憶手段は、前記第2の秘密情報生成式に係る前記被演算子と前記演算子との関係を示す属性情報を記憶しており、
前記第2生成手段は、前記属性情報を用いて前記第2のセキュア演算手順を生成する
ことを特徴とする請求項2に記載のセキュア処理装置。 - 前記第1生成手段は、更に、
乱数情報を生成し、前記乱数情報を含んだ前記第2の秘密情報生成式を生成し、
前記第2生成手段は、
前記第2の秘密情報生成式に基づき、前記結合秘密情報と前記乱数情報とを用いて前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成し、
前記実行手段は、
前記メッセージに対し前記結合秘密情報と、前記乱数情報とを用いて前記第2のセキュア演算手順に従ったセキュア演算を施す
ことを特徴とする請求項1に記載のセキュア処理装置。 - 前記第1生成手段は、更に、
前記秘密情報を用いた、演算処理の結果に影響を与えない冗長情報を生成し、
当該冗長情報を用いて、前記第2の秘密情報生成式を生成する
ことを特徴とする請求項1に記載のセキュア処理装置。 - 前記記憶手段は、前記分割秘密情報と共に前記実行手段により用いられないダミー情報を記憶している
ことを特徴とする請求項1に記載のセキュア処理装置。 - 前記秘密情報は、デジタル署名を生成するための署名鍵であり、
前記セキュア演算は、前記メッセージにデジタル署名を施す署名生成演算である
ことを特徴とする請求項1に記載のセキュア処理装置。 - 前記署名生成処理は、RSA(Rivest Shamir Adleman)署名生成処理である
ことを特徴とする請求項9記載のセキュア処理装置。 - 前記署名生成処理は、楕円曲線デジタル署名方式による署名処理である
ことを特徴とする請求項9記載のセキュア処理装置。 - 前記セキュア処理装置は、更に、
乱数情報を生成する乱数情報生成手段を備え、
前記実行手段は、前記楕円曲線デジタル署名方式における定義体GF(p)上の楕円曲線の位数qであるベースポイントPの乱数値k倍点を計算する処理と、定義体GF(q)上でのkの逆数の値を用いた処理とを、前記乱数kを直接利用することなく、少なくとも2つの前記乱数情報を用いて行う
ことを特徴とする請求項11記載のセキュア処理装置。 - 前記秘密情報は前記公開鍵暗号の前記秘密鍵であり、
前記実行手段は、前記セキュア演算として、公開鍵と秘密鍵を利用した公開鍵暗号系の処理を行う
ことを特徴とする請求項1に記載のセキュア処理装置。 - 前記公開鍵暗号はRSA暗号である
ことを特徴とする請求項13記載のセキュア処理装置。 - 前記公開鍵暗号は楕円曲線暗号である
ことを特徴とする請求項13記載のセキュア処理装置。 - 前記セキュア処理装置は、更に、
外部から、前記第1生成手段の更新用データを取得する取得手段と、
前記更新用データを用いて、前記第1生成手段を更新する更新手段と
を含むことを特徴とする請求項1に記載のセキュア処理装置。 - 前記セキュア処理装置は、更に、
外部から、更新用の分割秘密情報を取得する取得手段と、
前記記憶手段に記憶されている分割秘密情報を、前記取得手段が取得した更新用の分割秘密情報に更新する更新手段と
を含むことを特徴とする請求項1に記載のセキュア処理装置。 - メッセージに対して秘密情報を用いたセキュア演算を施した場合と同一の演算結果を得るセキュア処理装置において用いられるセキュア処理方法であって、
前記セキュア処理装置は、
秘密情報を少なくとも2つに分割した分割秘密情報が引数として入力され、当該分割秘密情報から前記秘密情報を算出する第1の秘密情報生成式と、前記秘密情報を用いたセキュア演算の手順を示す第1のセキュア演算手順とを記憶している記憶手段を備えており、
前記セキュア処理方法は、
少なくとも2つの前記分割秘密情報を演算した結果である結合秘密情報が引数として入力され、前記第1の秘密情報生成式と同一の結果を出力する第2の秘密情報生成式を生成する第1生成ステップと、
前記第2の秘密情報生成式に含まれる演算子に基づいて、前記結合秘密情報が引数として入力され前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成する第2生成ステップと、
前記メッセージに対し前記第2のセキュア演算手順に従ったセキュア演算を施す実行ステップと
を含むことを特徴とするセキュア処理方法。 - メッセージに対して秘密情報を用いたセキュア演算を施した場合と同一の演算結果を得るセキュア処理装置において用いられるコンピュータプログラムであって、
前記セキュア処理装置は、
秘密情報を少なくとも2つに分割した分割秘密情報が引数として入力され、当該分割秘密情報から前記秘密情報を算出する第1の秘密情報生成式と、前記秘密情報を用いたセキュア演算の手順を示す第1のセキュア演算手順とを記憶している記憶手段を備えており、
前記コンピュータプログラムは、
少なくとも2つの前記分割秘密情報を演算した結果である結合秘密情報が引数として入力され、前記第1の秘密情報生成式と演算上等価な第2の秘密情報生成式を生成する第1生成ステップと、
前記第2の秘密情報生成式に含まれる演算子に基づいて、前記結合秘密情報が引数として入力され前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成する第2生成ステップと、
前記メッセージに対し前記第2のセキュア演算手順に従ったセキュア演算を施す実行ステップと
を含むことを特徴とするコンピュータプログラム。 - コンピュータ読み取り可能な記録媒体であって、請求項19に記載のコンピュータプログラムを記録していることを特徴とする記録媒体。
- メッセージに対して秘密情報を用いたセキュア演算を施した場合と同一の演算結果を得る集積回路であって、
秘密情報を少なくとも2つに分割した分割秘密情報が引数として入力され、当該分割秘密情報から前記秘密情報を算出する第1の秘密情報生成式と、前記秘密情報を用いたセキュア演算の手順を示す第1のセキュア演算手順とを記憶している記憶手段と、
少なくとも2つの前記分割秘密情報を演算した結果である結合秘密情報が引数として入力され、前記第1の秘密情報生成式と演算上等価な第2の秘密情報生成式を生成する第1生成手段と、
前記第2の秘密情報生成式に含まれる演算子に基づいて、引数として前記結合秘密情報が入力され前記第1のセキュア演算手順と等価な演算の手順を示す第2のセキュア演算手順を生成する第2生成手段と、
前記メッセージに対し前記第2のセキュア演算手順に従ったセキュア演算を施す実行手段と
を備えることを特徴とする集積回路。 - 秘密情報を用いた演算を行うセキュア処理装置に、前記秘密情報を難読化して埋め込む難読化秘密情報埋め込み方法であって、
前記秘密情報を解析が困難な状態に変換する難読化装置を用いて、前記秘密情報を難読化する秘密情報難読化ステップと、
難読化情報書き込み装置を用いて、難読化された秘密情報を前記セキュア処理装置に埋め込む埋込ステップと
を含むことを特徴とする難読化秘密情報埋め込み方法。 - 前記難読化装置は、前記秘密情報の難読化の方法を決定するためのパラメータを入力として受け付ける入力手段を備え、
前記秘密情報難読化ステップは、
前記入力手段が前記パラメータを受け付ける受付ステップと、
前記パラメータに基いて決定される難読化方法で、前記秘密情報を難読化する難読化ステップと
を含むことを特徴とする請求項22に記載の難読化秘密情報埋め込み方法。 - 前記パラメータは、前記秘密情報の分割個数であり、
前記難読化ステップは、前記分割個数に基づいて、前記秘密情報を少なくとも2つの分割秘密情報に分割する分割ステップを含む
ことを特徴とする請求項23に記載の難読化秘密情報埋め込み方法。 - 前記難読化ステップは、更に、
前記分割個数に基づき、少なくとも前記分割個数の項を含む第1の秘密情報生成式を生成する式生成ステップを含み、
前記分割ステップは、前記第1の秘密情報生成式から前記秘密情報が算出されるように、前記秘密情報を分割する
ことを特徴とする請求項24に記載の難読化秘密情報埋め込み方法。 - 前記パラメータは、第1の秘密情報生成式であり、
前記難読化ステップは、
前記第1の秘密情報生成式から前記秘密情報が算出されるように、前記秘密情報を少なくとも2つの分割秘密情報に分割するステップ
を含むことを特徴とする請求項23に記載の難読化秘密情報埋め込み方法。 - 前記秘密情報は、鍵発行機関から発行される秘密鍵であり、
前記難読化秘密情報埋め込み方法は、
前記鍵発行機関が前記秘密鍵を鍵発行機関の秘密鍵で暗号化する暗号化ステップと、
前記難読化装置が、暗号化された前記鍵を公開鍵で復号および検証する検証ステップとをさらに有し、
前記秘密情報難読化ステップは、検証された前記秘密鍵を難読化し、
前記埋込ステップは、
前記難読化装置により難読化された前記難読化情報をバイナリデータに変換するバイナリ変換ステップと、
前記秘密情報を用いた演算結果と同一の結果を前記難読化秘密情報を用いて演算する機能を有するセキュア処理装置に、前記バイナリデータを埋め込むバイナリ埋込ステップと
を含むことを特徴とする請求項22に記載の難読化秘密情報埋め込み方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007542571A JP4970279B2 (ja) | 2005-10-31 | 2006-10-24 | セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005316105 | 2005-10-31 | ||
JP2005316105 | 2005-10-31 | ||
JP2007542571A JP4970279B2 (ja) | 2005-10-31 | 2006-10-24 | セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 |
PCT/JP2006/321090 WO2007052491A1 (ja) | 2005-10-31 | 2006-10-24 | セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2007052491A1 true JPWO2007052491A1 (ja) | 2009-04-30 |
JP4970279B2 JP4970279B2 (ja) | 2012-07-04 |
Family
ID=38005643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007542571A Active JP4970279B2 (ja) | 2005-10-31 | 2006-10-24 | セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8656175B2 (ja) |
EP (1) | EP1944904A1 (ja) |
JP (1) | JP4970279B2 (ja) |
CN (1) | CN101300775B (ja) |
WO (1) | WO2007052491A1 (ja) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090157630A1 (en) * | 2007-10-26 | 2009-06-18 | Max Yuan | Method of extracting data and recommending and generating visual displays |
CN101937387B (zh) * | 2009-06-30 | 2013-04-17 | 中国电信股份有限公司 | 一种测试参数的生成方法和系统 |
KR101344402B1 (ko) * | 2010-08-12 | 2013-12-26 | 한국전자통신연구원 | Rsa 서명 방법 및 장치 |
IT1401937B1 (it) * | 2010-09-16 | 2013-08-28 | St Microelectronics Srl | Metodo di generazione di una firma digitale |
US8874991B2 (en) * | 2011-04-01 | 2014-10-28 | Cleversafe, Inc. | Appending data to existing data stored in a dispersed storage network |
US11418580B2 (en) | 2011-04-01 | 2022-08-16 | Pure Storage, Inc. | Selective generation of secure signatures in a distributed storage network |
US10298684B2 (en) | 2011-04-01 | 2019-05-21 | International Business Machines Corporation | Adaptive replication of dispersed data to improve data access performance |
KR101620246B1 (ko) * | 2011-10-24 | 2016-05-23 | 코닌클리즈케 케이피엔 엔.브이. | 콘텐츠의 보안 배포 |
US9094205B2 (en) | 2012-08-31 | 2015-07-28 | Freescale Semiconductor, Inc. | Secure provisioning in an untrusted environment |
US9129536B2 (en) | 2012-08-31 | 2015-09-08 | Freescale Semiconductor, Inc. | Circuit for secure provisioning in an untrusted environment |
US9100189B2 (en) | 2012-08-31 | 2015-08-04 | Freescale Semiconductor, Inc. | Secure provisioning in an untrusted environment |
US9100174B2 (en) | 2012-08-31 | 2015-08-04 | Freescale Semiconductor, Inc. | Secure provisioning in an untrusted environment |
CN102932147B (zh) * | 2012-10-09 | 2015-08-12 | 上海大学 | 基于隐马尔科夫模型的椭圆曲线密码计时攻击方法 |
EP2765720A1 (en) * | 2013-02-06 | 2014-08-13 | Koninklijke Philips N.V. | Body coupled communication system |
US10068228B1 (en) | 2013-06-28 | 2018-09-04 | Winklevoss Ip, Llc | Systems and methods for storing digital math-based assets using a secure portal |
US11282139B1 (en) | 2013-06-28 | 2022-03-22 | Gemini Ip, Llc | Systems, methods, and program products for verifying digital assets held in a custodial digital asset wallet |
US10354325B1 (en) | 2013-06-28 | 2019-07-16 | Winklevoss Ip, Llc | Computer-generated graphical user interface |
US9892460B1 (en) | 2013-06-28 | 2018-02-13 | Winklevoss Ip, Llc | Systems, methods, and program products for operating exchange traded products holding digital math-based assets |
US10269009B1 (en) | 2013-06-28 | 2019-04-23 | Winklevoss Ip, Llc | Systems, methods, and program products for a digital math-based asset exchange |
US9928263B2 (en) * | 2013-10-03 | 2018-03-27 | Google Llc | Persistent shuffle system |
CN103607645B (zh) * | 2013-11-22 | 2017-06-23 | 深圳市九洲电器有限公司 | 一种机顶盒防盗版方法和机顶盒 |
US9264048B2 (en) * | 2013-12-18 | 2016-02-16 | Intel Corporation | Secret operations using reconfigurable logics |
US9489525B2 (en) * | 2014-07-24 | 2016-11-08 | International Business Machines Corporation | Secure storage system |
US9430658B2 (en) | 2014-12-16 | 2016-08-30 | Freescale Semiconductor, Inc. | Systems and methods for secure provisioning of production electronic circuits |
US9853977B1 (en) | 2015-01-26 | 2017-12-26 | Winklevoss Ip, Llc | System, method, and program product for processing secure transactions within a cloud computing system |
US9674162B1 (en) * | 2015-03-13 | 2017-06-06 | Amazon Technologies, Inc. | Updating encrypted cryptographic key pair |
US10158480B1 (en) | 2015-03-16 | 2018-12-18 | Winklevoss Ip, Llc | Autonomous devices |
US10915891B1 (en) | 2015-03-16 | 2021-02-09 | Winklevoss Ip, Llc | Autonomous devices |
US9479340B1 (en) | 2015-03-30 | 2016-10-25 | Amazon Technologies, Inc. | Controlling use of encryption keys |
CN107154921A (zh) * | 2016-03-03 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 共管账户的授权方法和装置、共管账户的认证方法和装置 |
JP6721832B2 (ja) * | 2016-08-24 | 2020-07-15 | 富士通株式会社 | データ変換プログラム、データ変換装置及びデータ変換方法 |
CN111108540B (zh) * | 2017-09-21 | 2023-03-21 | 日本电信电话株式会社 | 秘密读写装置、秘密读写方法、以及记录介质 |
US11200569B1 (en) | 2018-02-12 | 2021-12-14 | Winklevoss Ip, Llc | System, method and program product for making payments using fiat-backed digital assets |
US11308487B1 (en) | 2018-02-12 | 2022-04-19 | Gemini Ip, Llc | System, method and program product for obtaining digital assets |
US10438290B1 (en) | 2018-03-05 | 2019-10-08 | Winklevoss Ip, Llc | System, method and program product for generating and utilizing stable value digital assets |
US10373129B1 (en) | 2018-03-05 | 2019-08-06 | Winklevoss Ip, Llc | System, method and program product for generating and utilizing stable value digital assets |
US11909860B1 (en) | 2018-02-12 | 2024-02-20 | Gemini Ip, Llc | Systems, methods, and program products for loaning digital assets and for depositing, holding and/or distributing collateral as a token in the form of digital assets on an underlying blockchain |
US11522700B1 (en) | 2018-02-12 | 2022-12-06 | Gemini Ip, Llc | Systems, methods, and program products for depositing, holding and/or distributing collateral as a token in the form of digital assets on an underlying blockchain |
US11139955B1 (en) | 2018-02-12 | 2021-10-05 | Winklevoss Ip, Llc | Systems, methods, and program products for loaning digital assets and for depositing, holding and/or distributing collateral as a token in the form of digital assets on an underlying blockchain |
US10540654B1 (en) | 2018-02-12 | 2020-01-21 | Winklevoss Ip, Llc | System, method and program product for generating and utilizing stable value digital assets |
US10373158B1 (en) | 2018-02-12 | 2019-08-06 | Winklevoss Ip, Llc | System, method and program product for modifying a supply of stable value digital asset tokens |
US11475442B1 (en) | 2018-02-12 | 2022-10-18 | Gemini Ip, Llc | System, method and program product for modifying a supply of stable value digital asset tokens |
US10929842B1 (en) | 2018-03-05 | 2021-02-23 | Winklevoss Ip, Llc | System, method and program product for depositing and withdrawing stable value digital assets in exchange for fiat |
US11334883B1 (en) | 2018-03-05 | 2022-05-17 | Gemini Ip, Llc | Systems, methods, and program products for modifying the supply, depositing, holding and/or distributing collateral as a stable value token in the form of digital assets |
US11736457B2 (en) * | 2018-11-13 | 2023-08-22 | Splitbyte Inc. | Systems and methods for managing data based on secret sharing |
US10985911B2 (en) * | 2018-11-13 | 2021-04-20 | KapiSoft Inc. | Systems and methods for managing data based on secret sharing |
US11501370B1 (en) | 2019-06-17 | 2022-11-15 | Gemini Ip, Llc | Systems, methods, and program products for non-custodial trading of digital assets on a digital asset exchange |
US11314876B2 (en) | 2020-05-28 | 2022-04-26 | Bank Of America Corporation | System and method for managing built-in security for content distribution |
CN112769553B (zh) * | 2020-12-30 | 2022-08-19 | 北京宏思电子技术有限责任公司 | 嵌入式系统中加快sm9双线性对运算的实现方法及装置 |
CN116881986B (zh) * | 2023-07-03 | 2024-05-07 | 深圳市博德越科技有限公司 | 一种硬盘数据保密方法和系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5497423A (en) * | 1993-06-18 | 1996-03-05 | Matsushita Electric Industrial Co., Ltd. | Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication |
US20020013898A1 (en) * | 1997-06-04 | 2002-01-31 | Sudia Frank W. | Method and apparatus for roaming use of cryptographic values |
US7212632B2 (en) * | 1998-02-13 | 2007-05-01 | Tecsec, Inc. | Cryptographic key split combiner |
WO1999001815A1 (en) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
EP1090480B1 (en) * | 1998-06-03 | 2019-01-09 | Cryptography Research, Inc. | Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems |
US7599491B2 (en) * | 1999-01-11 | 2009-10-06 | Certicom Corp. | Method for strengthening the implementation of ECDSA against power analysis |
FR2789535B1 (fr) * | 1999-02-04 | 2001-09-28 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique |
US6594761B1 (en) * | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
FR2800478B1 (fr) * | 1999-10-28 | 2001-11-30 | Bull Cp8 | Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique |
JP3659178B2 (ja) * | 2001-02-22 | 2005-06-15 | 日本電信電話株式会社 | 分散ディジタル署名作成方法及び装置及び分散ディジタル署名付ディジタル文書作成方法及び装置及び分散ディジタル署名作成プログラム及び分散ディジタル署名作成プログラムを格納した記憶媒体 |
EP1249964A3 (en) * | 2001-04-12 | 2004-01-07 | Matsushita Electric Industrial Co., Ltd. | Reception terminal, key management apparatus, and key updating method for public key cryptosystem |
JP2002368735A (ja) | 2001-06-11 | 2002-12-20 | Sharp Corp | マスタ用ic装置、マスタ用ic装置のためのバックアップ用ic装置、マスタ用ic装置にダミー鍵を与えるダミー鍵格納装置、マスタ用ic装置とバックアップ用ic装置とのための補助装置、及び二つ以上の補助装置を用いた鍵バックアップシステム |
CN1207867C (zh) * | 2001-09-28 | 2005-06-22 | 中国科学院研究生院 | 一种安全的数字签名系统及其数字签名方法 |
AU2002362696B2 (en) * | 2001-10-05 | 2008-05-29 | Cytos Biotechnology Ag | Angiotensin peptide-carrier conjugates and uses thereof |
JP2004004341A (ja) * | 2002-05-31 | 2004-01-08 | Toshiba Corp | べき乗剰余計算装置、べき乗剰余計算方法及びプログラム |
US7062043B1 (en) * | 2002-06-28 | 2006-06-13 | The United States Of America As Represented By The National Security Agency | Method of elliptic curve digital signature using coefficient splitting |
GB2405958A (en) * | 2003-08-20 | 2005-03-16 | Macrovision Europ Ltd | Code obfuscation and controlling a processor by emulation |
-
2006
- 2006-10-24 US US12/091,250 patent/US8656175B2/en active Active
- 2006-10-24 JP JP2007542571A patent/JP4970279B2/ja active Active
- 2006-10-24 EP EP06812150A patent/EP1944904A1/en not_active Withdrawn
- 2006-10-24 CN CN2006800408828A patent/CN101300775B/zh active Active
- 2006-10-24 WO PCT/JP2006/321090 patent/WO2007052491A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2007052491A1 (ja) | 2007-05-10 |
US20090132830A1 (en) | 2009-05-21 |
CN101300775B (zh) | 2012-12-19 |
JP4970279B2 (ja) | 2012-07-04 |
EP1944904A1 (en) | 2008-07-16 |
CN101300775A (zh) | 2008-11-05 |
US8656175B2 (en) | 2014-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4970279B2 (ja) | セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路 | |
CN107465505B (zh) | 一种密钥数据处理方法、装置及服务器 | |
US20190356666A1 (en) | Generating Cryptographic Function Parameters From Compact Source Code | |
JP2022507796A (ja) | ブロックチェーン上にデータを格納するコンピュータにより実施されるシステム及び方法 | |
CN102016871B (zh) | 密码系统 | |
CN109784931B (zh) | 一种基于区块链的数据查询平台的查询方法 | |
US8670559B2 (en) | White-box implementation | |
JP4840782B2 (ja) | プログラム変換装置、セキュア処理装置、コンピュータプログラム及び記録媒体 | |
CN110061840A (zh) | 数据加密方法、装置、计算机设备及存储介质 | |
US20070192622A1 (en) | Computer system, computer program, and addition method | |
CN1941691B (zh) | 生成用于检测在处理期间加密数据的虚假改造的数据的设备及方法 | |
KR20110014630A (ko) | 지수 불명료화 | |
EP3488553A1 (en) | Device and method for performing obfuscated arithmetic | |
CN105721156A (zh) | 用于模幂加密方案的通用编码函数 | |
Ertaul et al. | Novel obfuscation algorithms for software security | |
EP3127271B1 (en) | Obfuscated performance of a predetermined function | |
CN108805574B (zh) | 基于隐私保护的交易方法和系统 | |
JP7318490B2 (ja) | 暗号処理システム及び暗号処理方法 | |
Ahmad et al. | A secure network communication protocol based on text to barcode encryption algorithm | |
EP3483867B1 (en) | System, device, method, and program for indexing a secret-shared array with secure multiparty computations | |
EP2286610B1 (en) | Techniques for peforming symmetric cryptography | |
EP3238365B1 (en) | Cryptographic system and method | |
Carminati et al. | Secure web service composition with untrusted broker | |
CN104050399B (zh) | 用户验证方法和装置以及盗版追踪方法和装置 | |
JP6881588B2 (ja) | 秘密計算装置、秘密計算方法、プログラム、および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120117 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120210 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120306 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120404 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150413 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4970279 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |