JP2011091517A - サインクリプションシステムおよびサインクリプション生成方法 - Google Patents
サインクリプションシステムおよびサインクリプション生成方法 Download PDFInfo
- Publication number
- JP2011091517A JP2011091517A JP2009241964A JP2009241964A JP2011091517A JP 2011091517 A JP2011091517 A JP 2011091517A JP 2009241964 A JP2009241964 A JP 2009241964A JP 2009241964 A JP2009241964 A JP 2009241964A JP 2011091517 A JP2011091517 A JP 2011091517A
- Authority
- JP
- Japan
- Prior art keywords
- user
- key
- public
- data
- public key
- 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
Abstract
【解決手段】署名付き暗号化時、署名付き暗号化対象データに対する署名生成後、署名付き暗号化対象データに対して暗号化を行い、また署名付き暗号化データの復号および検証時に、まず復号化を行って得られた復号データの正当性を署名検証行うことで検証する。この結果、サインクリプション生成時に不当な復号および検証者のユーザ公開鍵が使われるなどの問題があった場合でも検証時に検出することができる。さらに、実際の暗号化および復号は共通鍵暗号を用いることにより、幅広い共通鍵暗号と組み合わせることが可能となり、より安全性の高いサインクリプション技術を実現することが可能となる。
【選択図】図1
Description
1. 任意のP,Q∈G1および整数abに対してeは
e(aP,bQ)=e(P,Q)abを満たす。
2. 任意のP,Q∈G1に対してe(P,Q)≠ 1(1はG2の単位元)を満たす。
3. すべてのP, Q∈G1に対してe(P,Q)を効率的に計算できる。
具体的なペアリングとして、有限体上の楕円曲線上で定義されるWeilペアリングおよびTateペアリングなどが知られている。
1)公開パラメータおよびマスター鍵生成:システムで共通に用いる群やペアリングを含む公開パラメータの生成およびマスター鍵の生成を行う。公開パラメータは、外部に公開する。なお、システム全体の安全性を確保するため、マスター鍵は、システムの利用者を含む外部に漏洩しないように厳重に保管する。
2)部分秘密鍵生成:利用者のメールアドレス等、利用者と対応付けることができる文字列に対して、公開パラメータおよびマスター鍵を用いて、部分秘密鍵を生成する。利用者と対応付けられる文字列が公開鍵となる。
3)ユーザ鍵生成:公開パラメータおよび部分秘密鍵を用いて、ユーザ秘密鍵とユーザ公開鍵を生成する。
4)署名付き暗号化:公開パラメータ、署名付き暗号化データ生成者のユーザ秘密鍵、署名付き暗号文復号および検証者の公開鍵およびユーザ公開鍵を用いて、署名付き暗号化対象データの署名および暗号化を行い、署名付き暗号化データを生成する。
5)復号および検証:公開パラメータ、署名付き暗号化データ生成者の公開鍵およびユーザ公開鍵、署名付き暗号化データ復号および検証者の公開鍵、ユーザ公開鍵およびユーザ秘密鍵を用いて、署名付き暗号化データの復号および署名検証を行う。
公開パラメータおよびマスター鍵生成:
入力:正整数k(セキュリティパラメータ)
出力:公開パラメータparams、マスター鍵s
処理手順:
1. kビットの素数qを選択する。
2. 位数qの2つの群G1、G2およびG1の生成元Pを選択する。
3. ペアリングe: G1×G1 → G2を選択する。
4. 0<s<qを満たす整数sをランダムに生成しマスター鍵とする。
5. Ppub←sPを計算する。
6. 4つのハッシュ関数H1、H2、H3、H4を選択する。
それぞれのハッシュ関数は以下に示す入出力を持つ。
H1:{0,1}* → G1
H2:{0,1}* →{0,1}n
H3:{0,1}* → G1
H4:{0,1}* → G1
7.公開パラメータparams=
<q,G1,G2,e,P,Ppub,H1,H2,H3,H4>を出力する。
8.マスター鍵sを出力する。
2)部分秘密鍵生成:
入力:公開パラメータparams、マスター鍵s、利用者の公開鍵として用いる任意の文字列ID(ID∈{0,1}*)
出力:IDに対応する部分秘密鍵DID
処理手順:
1. QID ← H1(ID)を計算する。
2. DID ←sQIDを計算する。
3. 部分秘密鍵DIDを出力する。
3)ユーザ鍵生成:
入力:公開パラメータparams、IDに対応する部分秘密鍵DID
出力:IDに対応する秘密鍵SIDおよび公開鍵PKID
処理手順:
1. 0<xID<qを満たす整数xIDをランダムに選択する。
2. SID ←(xID,DID)とおく。
3. SIDをIDに対応する秘密鍵として出力する。
4. PKID ← xIDPを計算する。
5. PKIDをIDに対応する公開鍵として出力する。
4)署名付き暗号化:
入力:公開パラメータparams、署名付き暗号化データ生成者である利用者Aの公開鍵IDA、ユーザ公開鍵PKIDA、秘密鍵SIDA=(xIDA,DIDA)、署名付き暗号化データ検証者である利用者Bの公開鍵IDB、
ユーザ公開鍵PKIDB、署名付き暗号化対象データM
出力:署名付き暗号化データC=(U,V,W)
処理手順:
1. 0<r<qを満たす整数rをランダムに選択する。
2. U ←rPを計算する。
3. QIDB ← H1(IDB)を計算する。
4. T ← e(Ppub,QIDB)rを計算する。
5. J ←rPKIDBを計算する。
6. h ← H2(U,T,J,IDB,PKIDB)を計算する。ここでhのビット長はMのビット長と同じとする。
7. hをマスク値として用いて、V ← M XOR hを計算する(暗号化)。
8. H ← H3(U,V,IDA,PKIDA)を計算する。
9. I ← H4(U,V,IDA,PKIDA)を計算する。
10. W ← DIDA +rH+xIDAIを計算する(署名生成)。
11. 署名付き暗号化データC ← (U,V,W)を出力する。
署名付き暗号化データ復号および検証:
入力:公開パラメータparams、署名付き暗号化データ生成者AのID(公開鍵)、IDA 、ユーザ公開鍵PKIDA、署名付き暗号化データ検証者BのID(公開鍵)、IDB、ユーザ公開鍵PKIDB、秘密鍵SIDB=(xIDB,DIDB)、署名付き暗号化データC=(U, V, W)
出力:復号データM(署名検証成功時)またはInvalid(署名検証失敗時)
処理手順:
1. H ← H3(U,V,IDA,PKIDA)を計算する。
2. I ← H4(U,V,IDA,PKIDA)を計算する。
3. QIDA ← H1(IDA)を計算する。
4. e(Ppub,QIDA)e(U,H)e(PKIDA,I) = e(P,W)が成立するかどうか判定することで署名検証を行い、成立すればステップ5に進み、成立しなければInvalidを出力し終了する。
5. T ← e(DIDB,U)を計算する。
6. J ← xIDBUを計算する。
7. h ← H2(U,T,J,IDB,PKIDB)を計算する。ここでHのビット長はVのビット長と同じとする。
8. hをマスク値として用いて、M ← V XOR hを計算する。
9. 復号データMを出力する。
上記において説明したサインクリプションでは、署名付き暗号化時において、まず利用者Bの公開鍵およびユーザ公開鍵を用いて、署名付き暗号化対象データの暗号化を行った後、署名付き暗号化対象データそのものに対してではなく暗号化データに対して、利用者Aの秘密鍵、公開鍵およびユーザ公開鍵を用いて署名を行うことで署名付き暗号化データを生成し、署名付き暗号化データ復号および検証時において、利用者Aの公開鍵およびユーザ公開鍵を用いて署名付き暗号化データに含まれる暗号化データに対する署名検証後、利用者Bの秘密鍵、公開鍵およびユーザ公開鍵を用いて、暗号化データの復号を行い、元のデータを復元する。
このため、例えば署名付き暗号化時に署名付き暗号化データ復号および検証者である利用者Bが生成した正規のユーザ公開鍵と異なるユーザ公開鍵を用いて、署名付き暗号化データを生成し、利用者B自身が正しい手続きで作成した正規のユーザ公開鍵を用いて、署名付き暗号化データ復号および検証を行う場合、生成および復号および検証時に用いる利用者Bのユーザ公開鍵は異なるが、署名検証時において、利用者Bのユーザ公開鍵を用いる必要がないこと、復号された暗号化データに対して、ではなく署名付き暗号化データに含まれる暗号化データに対して、検証が行われることから問題なく署名検証が可能となるが、その後、行われる暗号化データの復号では作成時と異なる利用者Bのユーザ公開鍵が使われるため間違ったデータが復号されるが、検出する手段が無いためそのまま出力されてしまうという問題を持つ。
さらに署名生成時に作成される2種類のハッシュ値を作成する際の入力が同じで違いが明確ではないという問題もある。
また、署名付き暗号化時の暗号化はデータ長と同じ長さのマスク値を生成しデータと排他的論理和を行う方法に限定されており、例えばAESなど他の共通鍵暗号と組み合わせる手段が提供されていない。
本発明は、上述の問題を鑑みて本発明がなされたのであり、本発明は、より安全性のサインクリプションシステムおよび方法を実現することを目的とする。
また暗号化および復号で用いる共通鍵暗号を幅広く選択可能となることから、より高い安全性を確保することが可能となる。
以上より、安全性の高いサインクリプションの実現が可能となる。
1) 公開パラメータ生成時に、入力のセキュリティパラメータに正整数lを追加、さらにlビット共通鍵暗号Eの選択処理を追加し、Eを公開パラメータに加える。
2) 署名付き暗号化時の暗号化と署名生成の順序および署名生成対象を暗号化データから署名付き暗号化対象データに変更し、署名付き暗号化対象データに対する署名生成後、署名付き暗号化対象データの暗号化を行うようにする。
3)署名付き暗号化時において、ハッシュ関数H3およびH4の入力要素の暗号化データVを署名付き暗号化対象データMに変更する。
4)署名付き暗号化時において、暗号化の際に用いるTをハッシュ関数H4の入力要素に加える。
5)署名付き暗号化時において、ハッシュ関数H2の出力結果をマスク値として用いるのではなく共通鍵暗号Eの鍵として用いることで暗号化を行うように変更する。
6)署名付き暗号化データ復号および検証時の署名検証と復号の順序を変更し、暗号化データを復号した後、復号データに対する署名検証を行うように変更する。
7)署名付き暗号化対象データ復号および検証時において、ハッシュ関数H3およびH4の入力要素の暗号化データVを復号データMに変更する。
8)署名付き暗号化データ復号および検証時において、復号の際に用いるTをハッシュ関数H4の入力要素に加える。
9)署名付き暗号化データ復号および検証時において、ハッシュ関数H2の出力結果をマスク値として用いるのではなく共通鍵暗号Eの鍵として用いることで復号を行うように変更する。
公開パラメータおよびマスター鍵生成:
入力:正整数k,l(セキュリティパラメータ)
出力:公開パラメータparams、マスター鍵s
処理手順:
1. kビットの素数qを選択する。
2. 位数qの2つの群G1、G2およびG1の生成元Pを選択する。
3. ペアリングe:G1×G1 → G2を選択する。
4. 0<s<qを満たす整数sをランダムに生成する。
5. Ppub ←sPを計算する。
6. 4つのハッシュ関数H1、H2、H3、H4を選択する。
それぞれのハッシュ関数は以下に示す入出力を持つ。
H1:{0,1}* → G1
H2:{0,1}* → {0,1}l
H3:{0,1}* → G1
H4:{0,1}* → G1
7. 暗号化関数ENCおよび復号関数DECから構成されるlビット共通鍵暗号E={ENC, DEC}を選択する。
8. params=<q,G1,G2,e,P,Ppub,H1,H2,H3,H4,E>を公開パラメータとする。
9. sをマスター鍵とする。
入力:公開パラメータparams、マスター鍵s、利用者の公開鍵として用いる任意の文字列ID(ID∈{0,1}*)
出力:IDに対応する部分秘密鍵DID
処理手順:
1.QID ← H1(ID)を計算する。
2.DID ← sQIDを計算し部分秘密鍵とする。
入力:公開パラメータparams、IDに対応する部分秘密鍵DID
出力:IDに対応する秘密鍵SIDおよびユーザ公開鍵PKID
処理手順:
1. 0<xID<qを満たす整数xIDをランダムに選択する。
2.SID ←(xID,DID)と置き、SIDを秘密鍵とする。
3.PKID ← xIDPを計算し、PKIDを公開鍵とする。
入力:公開パラメータparams、署名付き暗号化データ生成である利用者Aの公開鍵IDA 、ユーザ公開鍵PKIDA、秘密鍵SIDA=(xIDA,DIDA)、署名付き暗号化データ検証者である利用者Bの公開鍵IDB、
ユーザ公開鍵PKIDB、署名付き暗号化対象データM
出力:署名付き暗号化データC=(U,V,W)
処理手順:
1. 0<r<qを満たす整数rをランダムに生成する。
2. U ← rPを計算する。
3. QIDB ← H1(IDB)を計算する。
4. T ← e(Ppub,QIDB)rを計算する。
5. H ← H3(M,U,IDA,PKIDA)を計算する。
6. I ← H4(M,U,T,IDA,PKIDA)を計算する。
7. W ← DIDA+rH+xIDAI を計算しMに対する署名を生成する。
8. J ← rPKIDBを計算する。
9. SK ← H2(U,T,J,IDB,PKIDB)を計算する。
10. SKを共通鍵暗号Eの鍵としてとしてV ← ENC(SK,M)を計算しMに対する暗号化データVを求める。
11. C=(U,V,W)を署名付き暗号化データとする。
入力:公開パラメータparams、署名付き暗号化データ生成者である利用者Aの公開鍵IDA 、公開鍵PKIDA、署名付き暗号化データ検証者である利用者Bの公開鍵IDB、ユーザ公開鍵PKIDB、秘密鍵SIDB=(xIDB,DIDB)、署名付き暗号化データC=(U,V,W)
出力:復号データM(署名検証成功時)またはInvalid(署名検証失敗時)
処理手順:
1. T ← e(DIDB,U)を計算する。
2. J ← xIDBUを計算する。
3. SK ← H2(U,T,J,IDB,PKIDB)を計算する。
4. 共通鍵暗号Eの共通鍵をSKとしてM ← DEC(SK, V)を計算し復号データMを求める。
5. H ← H3(M,U,IDA,PKIDA)を計算する。
6. I ← H4(M,U,T,IDA,PKIDA)を計算する。
7. QIDA ← H1(IDA)を計算する。
8. e(Ppub,QIDA)e(U,H)e(PKIDA,I)=e(P,W)が成立するかどうかを判定することで署名検証を行い、成立すればステップ10に進み、成立しなければステップ9に進む。
9.復号および検証結果をInvalid(復号および検証失敗)とし、終了する。
10.復号および検証結果を復号データMとし、終了する。
情報処理装置201において実際の処理を行う、公開パラメータおよびマスター鍵を生成処理、部分秘密鍵生成処理を行う部分秘密鍵生成処理部106は、プログラムがメモリ203上にロードされCPU202上で動作すること具現化されているものとする。またネットワーク105からの入出力は、ネットワーク接続装置206を、可搬性の記憶媒体を用いたデータの入出力は、外部入出力装置207を、それぞれ介して行うものとする。
情報処理装置201では、上述のようにサインクリプションシステム101全体で用いられる公開パラメータおよびマスター鍵を生成し、生成した公開パラメータを公開する。そして、部分秘密鍵の発行を要求する部分秘密鍵発行要求を受け付けると、当該利用者用の部分秘密鍵を生成し、要求元の利用者に発行する。
署名付き暗号化装置103は利用者Aのユーザ公開鍵生成および署名付き暗号化を行うものである。
次に、情報処理装置201の動作について説明する。情報処理装置201は利用者Aの依頼により利用者のユーザ鍵生成処理又は署名付き暗号化処理を行う。具体的な処理は以下のとおりである。
利用者Bの公開鍵およびユーザ公開鍵、利用者Aの公開鍵、ユーザ公開鍵および秘密鍵を用いて、署名付き暗号化プログラムは、予めメモリ203上にロードされている署名付き暗号化対象データに対して署名付き暗号化処理を実行し、その演算結果をメモリ203に記憶すると共に、必要に応じて外部記憶装置208等の記憶装置に保管する。利用者Bへの送付は外部入出力装置207を介して演算結果を保管した可搬性の記憶媒体、またはネットワーク接続装置を介してネットワーク105経由で配布する。なお、署名付き暗号化処理は、後述する図11に示す処理に従って行われる。
検証および復号装置104は利用者Bのユーザ公開鍵生成および署名付き暗号化データに対して復号および検証処理を行うものである。
情報処理装置201において実際の処理を行う、ユーザ鍵生成処理、検証および復号処理を行う復号および検証処理部108はメモリ203上にロードされCPU202上で動作することで具現化されているものとする。またネットワーク105からの入出力は、ネットワーク接続装置206を、可搬性の記憶媒体を用いたデータの入出力は、外部入出力装置207を、それぞれ介して行うものとする。
復号および検証処理に先立ち、情報処理装置201は、部分秘密鍵発行装置102で公開されている公開パラメータを、外部記憶装置208に既に保管されている場合、外部記憶装置208よりメモリ203にロードし、保管されていない場合、ネットワーク105または可搬性の記憶媒体を利用して入手しメモリ203にロードし、必要に応じて外部記憶装置208に保管する。
発行済の部分秘密鍵が、外部記憶装置208に保管されていれば、外部記憶装置208よりメモリ203にロードし、そうでない場合、可搬性の記憶媒体または、安全なネットワーク通信を利用して、部分秘密鍵を入手しメモリ203にロードし、必要に応じて外部記憶装置208に保管する。なお、本実施形態では、安全なネットワーク通信の方法として、例えば、SSL通信などの暗号化通信によるもの、部分秘密鍵送受信専用の通信回線によるものなどが考えられる。
ユーザ鍵生成処理が依頼された場合、復号および検証プログラムはユーザ鍵生成処理を実行し、その演算結果を公開鍵と合わせて、外部記憶装置208に保存するとともに、必要に応じてネットワーク105を、または可搬性の記憶媒体を、介して他の利用者に公開鍵およびユーザ公開鍵を配布する。なお、ユーザ鍵生成処理は、後述する図13に示す処理に従って行われる。
利用者Bの公開鍵およびユーザ公開鍵、利用者Aの公開鍵、ユーザ公開鍵および秘密鍵を用いて、復号および検証プログラムは予めメモリ203にロードされている復号および検証対象データに対して、署名付き暗号化処理を実行し、その演算結果をメモリ203に記憶すると共に、必要に応じて外部記憶装置208等の記憶装置に保管する。なお、復号および検証処理は、後述する図14に示す処理に従って行われる。
入出力データ保持部302に属する各保持領域311から315は、プログラム起動時に予め確保されても良いし、CPU202による制御の元、必要に応じて動的に確保し不必要となった時点で動的に開放しても良い。
<ステップ401>
CPU202による制御の元、処理の選択を受け付ける。公開パラメータおよびマスター鍵生成処理が選択された場合ステップ402に進み、部分秘密鍵生成処理が選択された場合ステップ403に進む。
<ステップ402>
公開パラメータおよびマスター鍵生成処理を行い終了する。詳細は、図5を用いて後述する。
<ステップ403>
部分秘密鍵生成処理を行った後に処理を終了する。詳細は、図6を用いて後述する。
<ステップ501>
セキュリティパラメータである正整数k、lを取得しセキュリティパラメータ保持領域311に保存する。
<ステップ502>
素数選択機能305を用いて、kビットの素数qを選択する。
<ステップ503>
群選択機能306を用いて位数qの2つの群G1、G2をおよびG1の生成元Pを選択する。
<ステップ504>
ペアリング選択機能307を用いてペアリングe: G1×G1 → G2を選択する。
<ステップ505>
乱数生成機能303を用いて0<s<qを満たす整数sをランダムに生成する。
<ステップ506>
基本演算機能304を用いてPpub ←sPを計算する。
<ステップ507>
ハッシュ関数選択機能308を用いて4つのハッシュ関数H1、H2、H3、H4を選択する。
それぞれのハッシュ関数は以下に示す入出力を持つ。
H1:{0,1}* → G1
H2:{0,1}* → {0,1}l
H3:{0,1}* → G1
H4:{0,1}* → G1
<ステップ508>
共通鍵暗号選択機能310を用いて、暗号化関数ENCおよび復号関数DECから構成されるlビット共通鍵暗号E={ENC,DEC}を選択する。
<ステップ509>
params=<q,G1,G2,e,P,Ppub,H1,H2,H3,H4,E>を公開パラメータとし、公開パラメータ保持領域312に保存する。
<ステップ510>
整数sをマスター鍵とし、マスター鍵保持領域313に保存する。
次に、上記図4のステップ403における部分秘密鍵生成処理を説明する。図6は、部分秘密鍵生成処理を説明するためのフローチャートである。
<ステップ601>
公開パラメータparamsを取得し公開パラメータ保持領域312に保存する。
<ステップ602>
マスター鍵sを取得し、マスター鍵保持領域313に保存する。
<ステップ603>
部分秘密鍵を要求する利用者の公開鍵ID(ID∈{0,1}*)を取得し利用者公開鍵保持領域314に保存する。
<ステップ604>
ハッシュ関数演算機能309を用いて、QID ← H1(ID)を計算する。
<ステップ605>
基本演算機能304を用いて、DID ← sQIDを計算する。
<ステップ606>
DIDを利用者の部分秘密鍵とし、利用者部分秘密鍵生成結果保持領域315に保存する。
図7は、署名付き暗号化装置103において、ユーザ鍵生成処理および、署名付き暗号化処理を行う、署名付き暗号化処理部107の、機能構成の概要を示す図である。情報処理装置201において、署名付き暗号化処理部107は、プログラムがメモリ203上にロードされCPU202上で動作することにより具現化される。
<ステップ801>
CPU202による制御の元、処理の指示を受け付ける。処理は、ユーザ鍵生成、署名付き暗号化の2つの処理から選択される。ユーザ鍵生成処理が選択された場合はステップ802に、署名付き暗号化処理が選択された場合はステップ803に進む。
<ステップ802>
ユーザ鍵生成処理を行う。ユーザ鍵生成処理の詳細は、図9を用いて後述する。
<ステップ803>
署名付き暗号化処理を行う。署名付き暗号化処理の詳細は、図10を用いて後述する。
<ステップ901>
公開パラメータparamsを取得し、公開パラメータ保持領域707に保存する。
<ステップ902>
利用者Aの部分秘密鍵DIDAを取得し、利用者A部分秘密鍵保持領域710に保存する。
<ステップ903>
乱数生成機能703を用いて、0<xIDA<qを満たす整数xIDAをランダムに生成する。
<ステップ904>
基本演算機能704を用いて、PKIDA ← xIDAPを計算する。
<ステップ905>
SIDA =(xIDA,DIDA)を利用者Aの公開鍵IDAに対応する秘密鍵とし、利用者A秘密鍵保持領域711に保存する。
<ステップ906>
PKIDAをIDAに対応するユーザ公開鍵とし、利用者Aユーザ公開鍵保持領域708において保存する。
<ステップ1001>
公開パラメータparamsを取得し、公開パラメータ保持領域707に保存する。
<ステップ1002>
署名付き暗号化処理の依頼者である利用者Aの公開鍵IDA、ユーザ公開鍵
PKIDAおよび秘密鍵SIDA=(xIDA,DIDA)を取得し、それぞれ利用者A公開鍵保持領域708、利用者Aユーザ公開鍵保持領域709および利用者A秘密鍵保持領域711に保存する。
<ステップ1003>
署名付き暗号化データの受信者である利用者Bの公開鍵IDBおよびユーザ公開鍵PKIDBを取得し、それぞれ利用者B公開鍵保持領域712および、利用者Bユーザ公開鍵保持領域713に保存する。
<ステップ1004>
利用者Aより指定された署名付き暗号化対象データMを取得し署名付き暗号化対象データ保持領域714に保存する。
<ステップ1005>
乱数生成機能703を用いて、0<r<qを満たす整数rをランダムに生成する。
<ステップ1006>
基本演算機能704を用いて、U ←rPを計算する。
<ステップ1007>
ハッシュ関数演算機能704を用いて、QIDB ← H1(IDB)を計算する。
<ステップ1008>
基本演算機能704を用いて、ペアリングの計算を行い
T ←e(Ppub,QIDB)rを計算する。
<ステップ1009>
ハッシュ関数演算機能705を用いて、署名付き暗号化対象データMを含む入力に対してハッシュ値H ← H3(M,U,IDA,PKIDA)を計算する。
<ステップ1010>
ハッシュ関数演算機能705を用いて署名付き暗号化対象データMおよびステップ1008におけるペアリング演算結果Tを含む入力に対して
ハッシュ値I← H4(M,U,T,IDA,PKIDA)を計算する。
<ステップ1011>
基本演算機能704を用いてW ← DIDA+rH+xIDAI を計算しMに対する署名を生成する。
<ステップ1012>
基本演算機能704を用いて、J←rPKIDBを計算する。
<ステップ1013>
ハッシュ関数演算機能705を用いて、共通鍵暗号で用いる鍵
SK ← H2(U,T,J,IDB,PKIDB)を計算し、共通鍵暗号で用いるlビットの鍵SKを求める。
<ステップ1014>
共通鍵暗号演算機能706を用いて、共通鍵暗号Eの共通鍵をSKとして
V ← ENC(SK,M)を計算しMの暗号化データVを生成する。
<ステップ1015>
C=(U,V,W)を署名付き暗号化データとし署名付き暗号化データ保持領域715に保存する。
<ステップ1201>
CPU202による制御の元、処理の指示を受け付ける。処理は、ユーザ鍵生成処理、復号および検証処理の2つの処理から選択される。ユーザ鍵生成処理が選択された場合はステップ1202に、復号および検証処理が選択された場合はステップ1203に進む。
<ステップ1202>
ユーザ鍵生成処理を行う。ユーザ鍵生成処理の詳細は、図13を用いて後述する。
<ステップ1203>
復号および検証処理を行う。復号および検証処理の詳細は、図14を用いて後述する。
以下、利用者Bの公開鍵をIDBとして処理を説明する。
<ステップ1301>
公開パラメータparamsを取得し公開パラメータ保持領域1107に保存する。
<ステップ1302>
利用者Bの部分秘密鍵DIDBを取得し利用者B部分秘密鍵保持領域1110に保存する。
<ステップ1303>
乱数生成機能1103を用いて、0<xIDB<qを満たす整数xIDBをランダムに生成する。
<ステップ1304>
基本演算機能1104を用いて、PKIDB ← xIDBPを計算する。
<ステップ1305>
SIDB =(xIDB,DIDB)を利用者Bの公開鍵IDBに対応する秘密鍵とし、利用者B秘密鍵保持領域1111に保存する。
<ステップ1306>
PKIDBをIDBに対応するユーザ公開鍵とし、利用者Bユーザ公開鍵保持領域1109において保存する。
<ステップ1401>
公開パラメータparamsを取得し公開パラメータ保持領域1107に保存する。
<ステップ1402>
復号および検証処理の依頼者である利用者Bの公開鍵IDB、ユーザ公開鍵
PKIDBおよび秘密鍵SIDB=(xIDB,DIDB)を取得し、それぞれ利用者B公開鍵保持領域1108、利用者Bユーザ公開鍵保持領域1109および利用者B秘密鍵保持領域1111に保存する。
<ステップ1403>
署名付き暗号化データの生成者である利用者Aの公開鍵IDAおよびユーザ公開鍵PKIDAを取得し、それぞれ利用者A公開鍵保持領域1112および、利用者Aユーザ公開鍵保持領域1113に保存する。
<ステップ1404>
利用者Bより指定された署名付き暗号化データC=(U,V,W)を取得し署名付き暗号化データ保持領域1114に保存する。
<ステップ1405>
基本演算機能1104を用いて、ペアリングの計算を行うことで、
T←e(DIDB,U)を計算する。
<ステップ1406>
基本演算機能1104を用いて、J ← xIDBUを計算する。
<ステップ1407>
ハッシュ関数演算機能1105を用いて、共通鍵暗号で用いる鍵
SK ← H2(U, T, J,IDB,PKIDB)を計算し、共通鍵暗号で用いるlビットの鍵SKを求める。
<ステップ1408>
共通鍵暗号演算機能1106を用いて、共通鍵暗号Eの共通鍵をSKとして
M ←DEC(SK,V)を計算することで、暗号化データVを復号し復号データMを求める。
<ステップ1409>
ハッシュ関数演算機能1105を用いて、復号データMを含む入力に対して、
H ← H3(M,U,IDA,PKIDA)を計算する。
<ステップ1410>
ハッシュ関数演算機能1105を用いて、復号データMおよびステップ1405におけるペアリング演算結果Tを含む入力に対して、
I ← H4(M,U,T,IDA,PKIDA)を計算する。
<ステップ1411>
ハッシュ関数演算機能1105を用いて、QIDA ← H1(IDA)を計算する。
<ステップ1412>
基本演算機能1104を用いて
e(Ppub,QIDA)e(U,H)e(PKIDA,I) = e(P,W)が成立するかどうかを判定することで署名検証を行い、成立すればステップ1414に進み、成立しなければステップ1413に進む。
<ステップ1413>
復号および検証結果をInvalid(復号および検証失敗)とし、復号および検証結果保持領域1115に保存し終了する。
<ステップ1414>
復号および検証結果を復号データMとし、復号および検証結果保持領域1115に保存し終了する。
Claims (6)
- 記憶装置を有するとともに任意の文字列を用いることのできる公開鍵に加えて、利用者自身が作成したユーザ公開鍵を用いて、暗号化と署名生成を同時に行うサインクリプションシステムにおける、サインクリプション生成方法であって、
制御装置による制御の元、素数qを選択し、位数qの2つの群G1、G2およびG1の生成元Pを、ペアリングe: G1×G1→G2を選択し、
乱数sを生成し、上記乱数sを用いてPpubを計算し、
4つのハッシュ関数H1、H2、H3、H4を選択し、
共通鍵暗号Eを選択し、公開パラメータparamsを
<q,G1,G2,e,P,Ppub,H1,H2,H3,H4,E>,整数sをマスター鍵とし、
前記記憶装置上に保存する公開パラメータおよびマスター鍵生成処理と、
任意の文字列である上記利用者の公開鍵に対して、制御装置による制御の元、上記公開パラメータおよび上記マスター鍵を用いて、上記利用者の部分秘密鍵を生成し、
前記記憶装置上に保存する部分秘密鍵生成処理と、を特徴とするサインクリプション生成方法。 - 前記生成した公開パラメータと、署名付き暗号化処理を行う利用者Aの公開鍵に対して前記部分秘密鍵生成方法を用いて生成した部分秘密鍵を用いて、秘密鍵とユーザ公開鍵から構成される利用者Aのユーザ鍵を生成し、記憶装置上に保存するユーザ鍵生成処理と、
制御装置による制御の元、前記公開パラメータと、署名付き暗号化対象データと、前記利用者Aの公開鍵、ユーザ公開鍵および秘密鍵と、署名付き暗号化データの復号および検証者である利用者Bの公開鍵およびユーザ公開鍵と、に対して、乱数を生成し、前記乱数と前記公開パラメータに含まれるデータを用いてデータUを計算し、
利用者Bの公開鍵から生成したハッシュ値と、前記公開パラメータに含まれるデータと、前記乱数と、からペアリングを用いてペアリング計算結果を計算し、
前記署名付き暗号化対象データと、前記Uと、を含むデータを用いて計算されるハッシュ値と、前記署名付き暗号化対象データと、前記Uと、前記ペアリング計算結果と、を含むデータを用いて計算されるハッシュ値と、利用者Aの秘密鍵と、を用いて、前記署名付き暗号化対象データに対する署名Wを生成し、
前記Uと、前記ペアリング計算結果と、前記乱数と前記利用者Aのユーザ公開鍵から計算したデータと、利用者Aの公開鍵およびユーザ公開鍵と、をハッシュ関数の入力として生成したハッシュ値を共通鍵暗号の鍵として、前記署名付き暗号化対象データを、共通鍵暗号を用いることにより暗号化することで暗号化データVを生成し、
前記U,VおよびWから構成されるC=(U,V,W)を署名付き暗号化結果として記憶装置上に保存する署名付き暗号化処理と、を特徴とする請求項1記載のサインクリプション生成方法。 - 前記生成した公開パラメータと、復号および検証処理を行う利用者Bの公開鍵に対して部分秘密鍵生成方法を用いて生成した部分秘密鍵を用いて、秘密鍵とユーザ公開鍵から構成される利用者Bのユーザ鍵を生成し、記憶装置上に保存するユーザ鍵生成処理と、
制御装置による制御の元、前記公開パラメータと、前記生成した署名付き暗号化データC=(U,V,W)と、前記利用者Bの公開鍵、ユーザ公開鍵および秘密鍵と、前記署名付き暗号化データの生成者である利用者Aの公開鍵およびユーザ公開鍵と、に対して、
前記署名付き暗号化データに含まれるデータUと、前記Uに加えて利用者Bの秘密鍵に含まれるデータを用いて計算したデータと、ペアリングを用いて前記Uに加えて利用者Bの秘密鍵に含まれるデータから計算したデータと、利用者Aの公開鍵およびユーザ公開鍵と、をハッシュ関数の入力として生成したハッシュ値を共通鍵暗号の鍵として、
前記署名付き暗号化データに含まれるデータVを、共通鍵暗号を用いることにより復号し、復号結果を含むデータより生成されたハッシュ値と、前記復号結果および前記ペアリング計算結果を含むデータより生成されたハッシュ値と、前記利用者Aの公開鍵から生成したハッシュ値と、利用者Aのユーザ公開鍵と、公開パラメータに含まれるいくつかのデータと、を用いて署名検証を行い、検証が成功すれば前記復号結果を、失敗した場合、復号および検証失敗を示すデータを、
復号および検証結果として記憶装置上に保存する復号および検証処理と、を特徴とする請求項2記載のサインクリプション生成方法。 - 記憶装置を有するとともに任意の文字列を用いることのできる公開鍵に加えて、利用者自身が作成したユーザ公開鍵を用いて、暗号化と署名生成を同時に行うサインクリプションシステムであって、
制御装置による制御の元となる素数qを選択し、位数qの2つの群G1、G2およびG1の生成元Pを、ペアリングe: G1×G1→G2を選択する手段と、
乱数sを生成し、上記乱数sを用いてPpubを計算計算する手段と、
4つのハッシュ関数H1、H2、H3、H4をする手段と、
共通鍵暗号Eを選択し、公開パラメータparamsを
<q,G1,G2,e,P,Ppub,H1,H2,H3,H4,E>,整数sをマスター鍵とする手段と、
前記記憶装置上に保存することを特徴とする公開パラメータおよびマスター鍵を生成する手段と、
任意の文字列である上記利用者の公開鍵に対して、制御装置による制御の元である上記マスター鍵を用いて、上記利用者の部分秘密鍵を生成する手段と、
前記記憶装置上に保存するする手段と、を備えたサインクリプションシステム。 - 前記生成した公開パラメータと、署名付き暗号化処理を行う利用者Aの公開鍵に対して部分秘密鍵生成方法を用いて生成した部分秘密鍵を用いて、秘密鍵とユーザ公開鍵から構成される利用者Aのユーザ鍵を生成し、記憶装置上に保存する手段と、
制御装置による制御の元、前記公開パラメータと、前記署名付き暗号化対象データと、前記利用者Aの公開鍵、ユーザ公開鍵および秘密鍵と、前記署名付き暗号化データの復号および検証者である利用者Bの公開鍵およびユーザ公開鍵と、に対して、乱数を生成し、前記乱数と前記公開パラメータに含まれるデータを用いてデータUを計算する手段と、
利用者Bの公開鍵から生成したハッシュ値と、前記公開パラメータに含まれるデータと、前記乱数と、からペアリングを用いてペアリング計算結果を計算する手段と、
前記署名付き暗号化対象データと、前記Uと、を含むデータを用いて計算されるハッシュ値と、前記署名付き暗号化対象データと、前記Uと、前記ペアリング計算結果と、を含むデータを用いて計算されるハッシュ値と、利用者Aの秘密鍵と、を用いて、前記署名付き暗号化対象データに対する署名Wを生成する手段と、
前記Uと、前記ペアリング計算結果と、前記乱数と前記利用者Aのユーザ公開鍵から計算したデータと、利用者Aの公開鍵およびユーザ公開鍵と、をハッシュ関数の入力として生成したハッシュ値を共通鍵暗号の鍵として、前記署名付き暗号化対象データを、共通鍵暗号を用いることにより暗号化することで暗号化データVを生成する手段と、
前記U,VおよびWから構成されるC=(U,V,W)を署名付き暗号化結果として記憶装置上に保存する手段と、を備えたことを特徴とする請求項4記載のサインクリプションシステム。 - 前記生成した公開パラメータと、復号および検証処理を行う利用者Bの公開鍵に対して部分秘密鍵生成方法を用いて生成した部分秘密鍵を用いて、秘密鍵とユーザ公開鍵から構成される利用者Bのユーザ鍵を生成し、記憶装置上に保存する手段と、
制御装置による制御の元、前記公開パラメータと、前記生成した署名付き暗号化データC=(U,V,W)と、前記利用者Bの公開鍵、ユーザ公開鍵および秘密鍵と、前記署名付き暗号化データの生成者である利用者Aの公開鍵およびユーザ公開鍵と、に対して、
前記署名付き暗号化データに含まれるデータUと、前記Uに加えて利用者Bの秘密鍵に含まれるデータを用いて計算したデータと、ペアリングを用いて前記Uに加えて利用者Bの秘密鍵に含まれるデータから計算したデータと、利用者Aの公開鍵およびユーザ公開鍵と、をハッシュ関数の入力として生成したハッシュ値を共通鍵暗号の鍵として、
前記署名付き暗号化データに含まれるデータVを、共通鍵暗号を用いることにより復号し、復号結果を含むデータより生成されたハッシュ値と、前記復号結果および前記ペアリング計算結果を含むデータより生成されたハッシュ値と、前記利用者Aの公開鍵から生成したハッシュ値と、利用者Aのユーザ公開鍵と、公開パラメータに含まれるいくつかのデータと、を用いて署名検証を行い、検証が成功すれば前記復号結果を、失敗した場合、復号および検証失敗を示すデータを、
復号および検証結果として記憶装置上に保存する手段と、を備えたことを特徴とする請求項5記載のサインクリプションシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009241964A JP5171787B2 (ja) | 2009-10-21 | 2009-10-21 | サインクリプションシステムおよびサインクリプション生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009241964A JP5171787B2 (ja) | 2009-10-21 | 2009-10-21 | サインクリプションシステムおよびサインクリプション生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011091517A true JP2011091517A (ja) | 2011-05-06 |
JP5171787B2 JP5171787B2 (ja) | 2013-03-27 |
Family
ID=44109385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009241964A Expired - Fee Related JP5171787B2 (ja) | 2009-10-21 | 2009-10-21 | サインクリプションシステムおよびサインクリプション生成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5171787B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112653547A (zh) * | 2019-10-10 | 2021-04-13 | 英飞凌科技股份有限公司 | 用于处理输入数据的设备和方法、车辆和存储介质 |
CN114128213A (zh) * | 2019-05-29 | 2022-03-01 | 比特飞翔区块链株式会社 | 用于验证公钥的可靠性的装置、方法以及其程序 |
CN117235813A (zh) * | 2023-11-16 | 2023-12-15 | 中国标准化研究院 | 一种电子签名数据质量检测方法和系统 |
CN117640085A (zh) * | 2023-12-07 | 2024-03-01 | 合肥讯标信息科技有限公司 | 一种一网统管工单数据安全流转方法及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106571912B (zh) * | 2016-10-31 | 2019-10-01 | 全球能源互联网研究院有限公司 | 一种面向电力系统的两方认证方法 |
-
2009
- 2009-10-21 JP JP2009241964A patent/JP5171787B2/ja not_active Expired - Fee Related
Non-Patent Citations (5)
Title |
---|
CSNJ201010031043; Fagen Li, Masaaki Shirase, Tsuyoshi Takagi: '"How to Construct an Identity-Based Hybrid Signcryption Scheme"' 2009年 暗号と情報セキュリティシンポジウム SCIS2009 [CD-ROM] 1C2 IDベース暗号,1C2-2, 20090120, p.1-6, 電子情報通信学会情報セキュリティ研究専門委員会 * |
JPN6012047384; M. Barbosa and P. Farshim: '"Certificateless Signcryption"' Cryptology ePrint Archive: Report 2008/143 Version: 20080331:142324, 20080331, [online] * |
JPN6012047386; Fagen Li, Masaaki Shirase, Tsuyoshi Takagi: '"How to Construct an Identity-Based Hybrid Signcryption Scheme"' 2009年 暗号と情報セキュリティシンポジウム SCIS2009 [CD-ROM] 1C2 IDベース暗号,1C2-2, 20090120, p.1-6, 電子情報通信学会情報セキュリティ研究専門委員会 * |
JPN6012047388; John Malone-Lee: '"Identity-Based Signcryption"' Cryptology ePrint Archive: Report 2002/098 Version: 20020720:235504, 20020720, [online] * |
JPN6012047389; Sattam S. Al-Riyami and Kenneth G. Paterson: '"Certificateless Public Key Cryptography"' Cryptology ePrint Archive: Report 2003/126 Version: 20031021:122149, 20031021, [online] * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114128213A (zh) * | 2019-05-29 | 2022-03-01 | 比特飞翔区块链株式会社 | 用于验证公钥的可靠性的装置、方法以及其程序 |
CN114128213B (zh) * | 2019-05-29 | 2024-05-28 | 比特飞翔区块链株式会社 | 用于验证公钥的可靠性的装置、方法以及其程序 |
CN112653547A (zh) * | 2019-10-10 | 2021-04-13 | 英飞凌科技股份有限公司 | 用于处理输入数据的设备和方法、车辆和存储介质 |
US11849024B2 (en) | 2019-10-10 | 2023-12-19 | Infineon Technologies Ag | Generating hash values |
CN112653547B (zh) * | 2019-10-10 | 2024-04-19 | 英飞凌科技股份有限公司 | 用于处理输入数据的设备和方法、车辆和存储介质 |
CN117235813A (zh) * | 2023-11-16 | 2023-12-15 | 中国标准化研究院 | 一种电子签名数据质量检测方法和系统 |
CN117235813B (zh) * | 2023-11-16 | 2024-01-23 | 中国标准化研究院 | 一种电子签名数据质量检测方法和系统 |
CN117640085A (zh) * | 2023-12-07 | 2024-03-01 | 合肥讯标信息科技有限公司 | 一种一网统管工单数据安全流转方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP5171787B2 (ja) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4546231B2 (ja) | Idベース署名及び暗号化システムおよび方法 | |
US7516321B2 (en) | Method, system and device for enabling delegation of authority and access control methods based on delegated authority | |
JP3560439B2 (ja) | 暗号キーの回復を実行する装置 | |
US8670563B2 (en) | System and method for designing secure client-server communication protocols based on certificateless public key infrastructure | |
JP4130653B2 (ja) | 擬似公開鍵暗号方法及びシステム | |
US20070058802A1 (en) | Cryptosystem Based on a Jacobian of a Curve | |
US9698984B2 (en) | Re-encrypted data verification program, re-encryption apparatus and re-encryption system | |
CN109547209B (zh) | 一种两方sm2数字签名生成方法 | |
CN109951276B (zh) | 基于tpm的嵌入式设备远程身份认证方法 | |
JP6041864B2 (ja) | データの暗号化のための方法、コンピュータ・プログラム、および装置 | |
JP5171787B2 (ja) | サインクリプションシステムおよびサインクリプション生成方法 | |
US20190294417A1 (en) | Method and system for deriving deterministic prime number | |
KR100396740B1 (ko) | 계산적 디피-헬만 가정에 기반하는 안전성 증명 가능한공개키 암호화 방법 | |
JP2004228916A (ja) | 署名暗号方法、その装置およびそのプログラム | |
KR101793528B1 (ko) | 무인증서 공개키 암호 시스템 | |
JP2004297755A (ja) | 暗号システムにおける鍵管理サーバおよび復号装置を制御するプログラム,ならびに署名/検証システムにおける鍵管理サーバおよび検証装置を制御するプログラム | |
CN113114458A (zh) | 加密证书生成、解密方法及装置、加密证书系统 | |
CN113141249B (zh) | 一种门限解密方法、系统及可读存储介质 | |
KR20160104603A (ko) | 인증서버 없이 공개키를 인증하는 방법 및 장치 | |
JP4000899B2 (ja) | 認証付暗号方法及び認証付復号方法及び装置及びプログラム及びコンピュータが読み取り可能な記録媒体 | |
JP2021196428A (ja) | 暗号システム、ユーザ端末、方法及びプログラム | |
JP6153454B2 (ja) | 署名装置、方法及びプログラム | |
CN116680710A (zh) | 一种密码机密钥认证方法及系统 | |
TW202245436A (zh) | 產生訊息的簽章的方法、訊息認證方法以及加密裝置 | |
JP2009296489A (ja) | 情報処理装置、暗号化通信システム、暗号化通信方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120824 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120911 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121105 |
|
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: 20121127 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121225 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160111 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |