JP2004201292A - 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 - Google Patents
鍵共有システム、共有鍵生成装置及び共有鍵復元装置 Download PDFInfo
- Publication number
- JP2004201292A JP2004201292A JP2003396217A JP2003396217A JP2004201292A JP 2004201292 A JP2004201292 A JP 2004201292A JP 2003396217 A JP2003396217 A JP 2003396217A JP 2003396217 A JP2003396217 A JP 2003396217A JP 2004201292 A JP2004201292 A JP 2004201292A
- Authority
- JP
- Japan
- Prior art keywords
- value
- decryption
- shared key
- encryption
- generated
- 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
- 238000012795 verification Methods 0.000 claims description 565
- 238000004422 calculation algorithm Methods 0.000 claims description 212
- 238000000034 method Methods 0.000 claims description 143
- 230000005540 biological transmission Effects 0.000 claims description 40
- 238000011084 recovery Methods 0.000 claims description 26
- 230000000873 masking effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 410
- 238000006243 chemical reaction Methods 0.000 description 87
- 230000008569 process Effects 0.000 description 48
- 238000012545 processing Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 18
- 238000005538 encapsulation Methods 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 16
- 238000004590 computer program Methods 0.000 description 15
- 230000004048 modification Effects 0.000 description 13
- 238000012986 modification Methods 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 10
- 238000009795 derivation Methods 0.000 description 9
- 230000005236 sound signal Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Abstract
【解決手段】 乱数生成部112dは乱数sを生成し、第1関数部113dは乱数sの関数値G(s)を生成し、関数値G(s)から検証値aと共有鍵Kを生成し、暗号化部114dは公開鍵多項式hを用いて検証値aの第1暗号文c1を生成し、第2関数部115dは検証値aと第1暗号文c1の関数値H(a,c1)を生成し、乱数マスク部116dは第2暗号文c2=s xor H(a,c1)を生成する。復号化部123dは秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a'を生成し、第3関数部124dは検証値a'と第1暗号文c1の関数値H(a',c1)を生成し、乱数マスク除去部125dは復号乱数s'=c2 xor H(a',c1)を生成し、第4関数部126dは復号乱数s'のハッシュ関数値G(s')を生成し、関数値G(s')から検証値a''と共有鍵K'を生成し、比較部127dは復号検証値a'と検証値a''が等しければ、共有鍵K'を出力する。
【選択図】 図16
Description
公開鍵暗号方式では、送信装置は、通信内容を受信装置の公開鍵を用いて暗号化して送信し、受信装置は、暗号化された通信内容を受信し、受信した通信内容を自身の秘密鍵を用いて復号して元の通信内容を得る。(例えば、非特許文献1参照)。
このような鍵カプセル化メカニズムとして、PSEC−KEMと呼ばれるアルゴリズムが開示されている(例えば非特許文献3、非特許文献4参照)。以下に、非特許文献4に記載されているPSEC−KEMアルゴリズムについて説明する。
PSEC−KEMは、以下のシステムパラメータを持つ。
・楕円曲線:E
・楕円曲線上の位数nの点:P
・ハッシュ関数:G、H
なお、楕円曲線、位数及びハッシュ関数については、非特許文献1に詳細が記述されているので、ここでは説明を省略する。
・ランダムにZnの要素xを選び、W=x*Pを生成する。
ここで、Znは、{0,1,...,n−1}からなる集合であり、x*Pは、楕円曲線上の点Pをx個、加算することにより得られる楕円曲線上の点を表す。なお、楕円曲線上の点の加算方法については、非特許文献1に記述されている。
(3)PSEC−KEMの暗号化
暗号化時には、以下に述べる暗号化アルゴリズムKemEに公開鍵pkを入力して共有鍵Kと暗号文Cを出力する。以下に暗号化アルゴリズムKemEについて説明する。
・ハッシュ関数Hの出力ビット長と同じ長さのsをランダムに生成する。
・R=a*P、Q=a*Wを生成する。
・共有鍵Kと暗号文C=(R,v)を出力する。
(4)PSEC−KEMの復号化
復号化時には、以下に述べる復号アルゴリズムKemDに暗号文C=(R,v)と公開鍵pkと秘密鍵skを入力して共有鍵Kを出力する。以下に復号アルゴリズムKemDについて説明する。
・s=v xor H(R||Q)を生成する。
・G(s)を生成し、G(s)をG(s)=a||Kと分割する。
・R=a*Pが成立するかどうかチェックする。成立すれば共有鍵Kを出力する。
このPSEC−KEMアルゴリズムを、送信装置と受信装置の間で暗号化通信を行う暗号システムに応用する場合、まず、送信装置は、通信先受信装置の公開鍵pkを取得し、取得した公開鍵pkを前述の暗号化アルゴリズムKemEに入力して共有鍵Kと暗号文Cを導出して、暗号文Cを受信装置へ送信する。
以下に、さらに詳細に説明する。
今、PSEC−KEMアルゴリズムは、ハッシュ関数Hの入力を(a*P||a*W)としており、暗号化アルゴリズムKemEで、ランダムに生成した要素sにH(a*P||a*W)の値を作用させてvを生成する。そして、復号アルゴリズムKemDでは、R=a*Pから秘密鍵sk(=x)を用いてQ=x*R=x*(a*P)=a*(x*P)=a*Wを求めることができるので、vにH(a*P||a*W)の値を作用させて、暗号化アルゴリズムKemEにおいて生成されたランダムな要素sを求めることができる。
一方で、秘密鍵skを知らない他の受信装置は、たとえ公開鍵pkを取得して暗号文Cを受信したとしても、秘密鍵sk(=x)を知らないのでR=a*PからQ=a*W(=(ax)*P)を計算できず、送信装置が導出したものと同じ共有鍵Kを導出できない。
以上により、送信装置と受信装置とは、共有鍵Kを秘密に共有することができ、この後、秘密鍵暗号を用いて、送信装置から受信装置へ通信される通信内容データを、共有鍵Kを用いて共通鍵暗号で暗号化する。
しかしながら、NTRU暗号をはじめ、Diffie−Hellman問題を利用しない他の公開鍵暗号には、Diffie−Hellman問題のa*P、a*Wに相当するものがないため、PSEC−KEMアルゴリズムを適用できない。すなわち、高速処理が可能なNTRU暗号は、鍵カプセル化メカニズムであるPSEC−KEMアルゴリズムを適用して共有鍵の配送を行うことができず、従って、送信装置と受信装置とは、その共有鍵を用いた送信装置から受信装置への暗号化通信ができないという問題点がある。
この構成によると、共有鍵生成装置は、乱数を生成し、生成した乱数を前記シード値とするので、シード値を生成し、検証値及び共有鍵を生成し、第1暗号化情報及び第2暗号化情報を生成し、第1暗号化情報及び第2暗号化情報を送信した後、次に、シード値を生成する際に、最初に生成されたシード値とは異なるように、後のシード値を生成することができる。従って、共有鍵生成装置により送信される第1暗号化情報及び第2暗号化情報は、毎回異なるものとなる。このため、不正な第三者が、共有鍵生成装置から相手の装置へ送信される第1暗号化情報及び第2暗号化情報をその都度、盗聴し、記録したとしても、記録している各第1暗号化情報及び第2暗号化情報から元のシード値を類推することは困難である。
この構成によると、前記シード値に一方向性関数を施して、前記検証値を生成するので、前記検証値を第三者が知り得たとしても、前記検証値から前記シード値を求めることは困難である。このため、前記検証値からシード値を求め、さらに、共有鍵を求めることは事実上不可能である。
この構成によると、前記一方向性関数は、ハッシュ関数であるので、その演算アルゴリズムがよく知られており、適用が容易である。
ここで、前記共有鍵生成手段は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成する。
ここで、前記共有鍵生成手段は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成する。
この構成によると、前記シード値に一方向性関数を施して、前記検証値を生成するので、前記検証値を第三者が知り得たとしても、前記検証値から前記シード値を求めることは困難である。このため、前記検証値からシード値を求め、さらに、共有鍵を求めることは事実上不可能である。
また、前記第1暗号化手段は、公開鍵を取得する公開鍵取得部と、取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成する公開鍵暗号化部と含む。
ここで、前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、前記公開鍵取得部は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記公開鍵暗号化部は、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成する。
ここで、前記第2暗号化手段は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成する。
この構成によると、前記検証値に一方向性関数を施して得られた関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成するので、不正な第三者は、少なくとも、前記一方向性関数及び前記暗号化アルゴリズムを知っていなければ、前記第2暗号化情報から前記シード値を得ることはできない。
この構成によると、前記暗号化アルゴリズムは、排他的論理和であるので、演算が容易である。また、逆演算が可能である。
ここで、前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして共通鍵暗号化アルゴリズムを施すことにより、前記第2暗号化情報を生成する。
ここで、前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして加算を施すことにより、前記第2暗号化情報を生成する。
この構成によると、前記暗号化アルゴリズムは、加算であるので、演算が容易である。また、逆演算が可能である。
この構成によると、前記暗号化アルゴリズムは、乗算であるので、演算が容易である。また、逆演算が可能である。
ここで、前記第2暗号化手段は、前記検証値に、前記一方向性関数としてハッシュ関数を施して前記関数値を生成する。
ここで、前記第2暗号化手段は、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施して第2暗号化情報を生成する。
この構成によると、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施すので、演算が単純であり、適用が容易である。
この構成によると、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化するので、不正な第三者は、前記検証値及び前記第1暗号化情報を知らなければ、シード値を得ることができず、安全性が高まる。
この構成によると、一方向性関数と暗号化アルゴリズムとを用いるので、不正な第三者は、第1暗号化情報及び第2暗号化情報を知っていても、少なくとも一方向性関数と暗号化アルゴリズムとを知らなければ、シード値を得ることができず、安全性が高まる。
この構成によると、前記暗号化アルゴリズムは、排他的論理和であるので、演算が容易である。また、逆演算が可能である。
ここで、前記共有鍵生成装置は、さらに、コンテンツを取得する取得手段と、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成する暗号化手段とを備え、前記送信手段は、さらに、生成された前記暗号化コンテンツを送信する。
ここで、第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置であって、前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、前記共有鍵復元装置は、前記第1暗号化情報及び前記第2暗号化情報を受信する受信手段と、受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号手段と、生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号手段と、前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成手段と、生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断手段と、出力すると判断される場合に、生成された前記復号共有鍵を出力する出力手段とを備える。
ここで、前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、前記第1復号手段は、前記公開鍵に対応する秘密鍵を取得する秘密鍵取得部と、取得された前記秘密鍵を用いて、受信した前記第1暗号化情報に、前記公開鍵暗号化アルゴリズムに対応する公開鍵復号アルゴリズムを施して前記第1復号検証値を生成する公開鍵復号部と含む。
ここで、前記公開鍵暗号化アルゴリズム及び前記公開鍵復号アルゴリズムは、NTRU暗号方式によるものであり、前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、ブラインド値を生成し、生成した前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、前記受信手段は、多項式としての前記第1暗号化情報を受信し、前記秘密鍵取得部は、前記秘密鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された秘密鍵多項式を取得し、前記公開鍵復号部は、NTRU暗号方式の前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記秘密鍵多項式を鍵として用いて、多項式としての前記第1暗号化情報を復号して、復号検証値多項式を生成し、生成した前記復号検証値多項式から前記第1復号検証値を生成する。
ここで、前記共有鍵生成装置は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、前記第2復号手段は、生成された前記第1復号検証値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、受信された前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成し、前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして排他的論理和を施すことにより、前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして共通鍵暗号化アルゴリズムを施すことにより、前記第2暗号化情報を生成し、前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、前記共通鍵暗号化アルゴリズムに対応する共通鍵復号アルゴリズムを施すことにより、前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして加算を施すことにより、前記第2暗号化情報を生成し、前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、減算を施すことにより、前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして乗算を施すことにより、前記第2暗号化情報を生成し、前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、除算を施すことにより、前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、前記検証値に、前記一方向性関数としてハッシュ関数を施して前記関数値を生成し、前記第2復号手段は、生成された前記第1復号検証値に、前記一方向性関数として前記ハッシュ関数を施して前記復号関数値を生成する。
ここで、前記共有鍵生成装置は、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施して第2暗号化情報を生成し、前記第2復号手段は、生成された前記第1復号検証値を用いて、前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して、前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化し、前記第2復号手段は、生成された前記第1復号検証値及び受信された前記第1暗号化情報を用いて、前記第2暗号化情報を復号して前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、前記検証値及び前記第1暗号化情報に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、前記第2復号手段は、前記第1復号検証値及び前記第1暗号化情報に前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して、前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成し、前記第2復号手段は、前記復号関数値及び前記第2暗号化情報に、前記復号アルゴリズムとして、排他的論理和を施すことにより、前記復号シード値を生成する。
ここで、前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値及び前記共有鍵を生成し、前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値及び前記復号共有鍵を生成する。
ここで、前記共有鍵生成装置は、前記シード値に、前記一方向性関数として、ハッシュ関数を施して前記関数値を生成し、前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数として、前記ハッシュ関数を施して前記復号関数値を生成する。
ここで、前記共有鍵生成装置は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成し、前記共有鍵生成手段は、生成された前記復号関数値の一部を前記第2復号検証値とし、他の一部を前記復号共有鍵とすることにより、前記第2復号検証値及び前記復号共有鍵を生成する。
ここで、前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成し、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値、前記復号共有鍵及び復号ブラインド値を生成する。
ここで、前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、前記判断手段は、前記第1復号検証値及び前記第2復号検証値に基づく前記判断に代えて、前記公開鍵を取得する公開鍵取得部と、取得された前記公開鍵及び生成された前記復号ブラインド値を用いて、生成された前記第1復号検証値又は前記第2復号検証値に前記公開鍵暗号化アルゴリズムを施して再暗号化情報を生成する再暗号化部と、受信された前記第1暗号化情報及び生成された前記再暗号化情報に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断部とを備える。
ここで、前記判断部は、前記第1暗号化情報と前記再暗号化情報とを比較し、前記第1暗号化情報と前記再暗号化情報とが一致する場合に、前記復号共有鍵を出力すると判断する。また、前記判断手段は、前記第1復号検証値と前記第2復号検証値とを比較し、一致する場合に、前記復号共有鍵を出力すると判断する。
ここで、前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、前記公開鍵取得部は、前記公開鍵多項式を取得し、前記再暗号化部は、前記第2復号検証値から復号検証値多項式を生成し、前記復号ブラインド値から復号ブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記復号検証値多項式を攪乱するために前記復号ブラインド値多項式を用いて、前記復号検証値多項式を暗号化して、多項式としての前記再暗号化情報を生成する。
ここで、前記共有鍵生成装置は、さらに、コンテンツを取得し、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成し、生成された前記暗号化コンテンツを送信し、前記受信手段は、さらに、前記暗号化コンテンツを受信し、前記共有鍵復元装置は、さらに、出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成する復号手段と、生成された復号コンテンツを出力する出力手段とを備える。
本発明に係る1個の実施の形態としてのコンテンツ配信システム10について説明する。コンテンツ配信システム10は、NTRU暗号を用いて鍵カプセル化メカニズムによる鍵配送を行って暗号化通信を行う暗号通信システムである。
1.1 NTRU暗号方式
コンテンツ配信システム10において用いるNTRU暗号方式について簡単に説明する。NTRU暗号方式は、多項式の演算を用いて暗号化と復号化とを行う公開鍵暗号方式である。
(1)NTRU暗号方式のシステムパラメータ
NTRU暗号方式においては、整数のシステムパラメータ、N、p、qが存在し、後述する暗号装置及び復号装置は、これらのシステムパラメータを有している。
以降、本実施の形態では、システムパラメータN=167として、説明を行う。
(2)NTRU暗号方式の多項式演算
NTRU暗号方式は、上述したように、多項式の演算により暗号化と復号化を行う公開鍵暗号方式である。
また、暗号化時又は復号化時に用いる公開鍵h、秘密鍵f、平文m、乱数r、暗号文cはいずれも、N−1次元以下の多項式として表現される(以降、それぞれを公開鍵多項式h、秘密鍵多項式f、平文多項式m、乱数多項式r、暗号文多項式cと呼ぶ)。
例えば、N=5の場合、多項式X^4+X^2+1と多項式X^3+Xの積は、多項式と多項式の積を×、整数と多項式の積を・とすると、X^5=1という関係から、
(X^4+X^2+1)×(X^3+X)
=X^7+2・X^5+2・X^3+X
=X^2×1+2・1+2・X^3+X
=2・X^3+X^2+X+2
となる。
(3)NTRU暗号方式の暗号化
後述する暗号装置は、次に示すようにNTRU暗号方式の暗号化を行う。
暗号化時には、以下に述べる乱数多項式rと公開鍵多項式hとを用いて、平文多項式mに多項式演算である暗号化アルゴリズムEを施して、
暗号文多項式c=E(m,r,h)を生成する。
なお、NTRU暗号方式では、乱数多項式rを生成するためのパラメータdが予め決められている。乱数多項式rは、乱数多項式rを構成する各項のうち、d個の項についてはその係数が「1」となり、他のd個の項については係数が「−1」となり、残りの項については係数は「0」となるように、選ばれる。
非特許文献2によれば、パラメータN=167の場合、d=18である。すなわち、18個の係数が「1」であり、かつ18個の係数が「−1」であり、131(=167−36)個の係数が「0」となるように、乱数多項式rが選ばれる。
後述する復号装置は、次に示すようにNTRU暗号方式の復号化を行う。
復号化時には、秘密鍵多項式fを用いて、暗号文多項式cに多項式演算である復号アルゴリズムDを施して、復号文多項式m'=D(c,f)を生成する。
ここで、D(c,f)は、NTRU暗号方式の復号アルゴリズムDに、暗号文多項式c、及び秘密鍵多項式fを入力して得られる多項式演算の結果である。復号アルゴリズムDについては非特許文献2に詳しく述べられており、ここでは説明を省略する。
ところで、このNTRU暗号方式において、生成された復号文多項式m'が平文多項式mと異なる場合が発生する。この場合は、復号時に正しく平文多項式mが得られないことになる。このことを復号エラーが発生するという。
1.2 コンテンツ配信システム10の構成
コンテンツ配信システム10は、図1に示すように、コンテンツサーバ装置140と暗号装置110と復号装置120と再生装置150とモニタ155とから構成されており、コンテンツサーバ装置140と暗号装置110とは、専用回線20を介して接続されており、暗号装置110と復号装置120とは、インターネット130を介して接続されている。再生装置150は、復号装置120及びスピーカを内蔵するモニタ155に接続されている。暗号装置110には、メモリカード160が装着され、復号装置120には、メモリカード170が装着される。
暗号装置110と復号装置120とは、それぞれ同一の共有鍵K及び共有鍵K’を生成する。次に、暗号装置110は、コンテンツサーバ装置140から受け取ったコンテンツを共有鍵Kを用いて暗号化して暗号化コンテンツを生成し、生成した暗号化コンテンツを送信し、復号装置120は、暗号化コンテンツを受信し、受信した暗号化コンテンツを復号して再生コンテンツを生成し、再生装置150は、再生コンテンツから映像信号及び音声信号を生成し、モニタ155は、映像を表示し、音声を出力する。
コンテンツサーバ装置140は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、通信ユニット、キーボード、マウスなどから構成されるコンピュータシステムである(図示していない)。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、コンテンツサーバ装置140は、その一部の機能を達成する。
1.4 メモリカード160及びメモリカード170の構成
メモリカード160は、記憶媒体としてフラッシュメモリを採用しているカード型の記憶装置であり、予め公開鍵多項式hを記憶している。
ここで、秘密鍵多項式fと公開鍵多項式hとは、NTRU暗号方式により生成されたものであり、それぞれ対応している。
1.5 暗号装置110の構成
暗号装置110は、図2に示すように、公開鍵入力部111、乱数生成部112、第1関数部113、暗号化部114、第1送信部117、共通鍵暗号部118及び第2送信部119から構成されている。
(1)公開鍵入力部111
公開鍵入力部111は、メモリカード160から復号装置120の公開鍵多項式hを読み出し、読み出した公開鍵多項式hを暗号化部114へ出力する。
乱数生成部112は、共有鍵Kを生成するための元となるシード値として、乱数sを生成し、生成した乱数sを第1関数部113と暗号化部114とへ出力する。
(3)第1関数部113
第1関数部113は、乱数生成部112から乱数sを受け取り、乱数sの関数値G(s)を生成する。ここで、関数Gは、出力長が2kビットのハッシュ関数である。なお、ハッシュ関数は、一方向性関数の一種である。次に、第1関数部113は、関数値G(s)の上位kビットを乱数値uとし、G(s)の下位kビットを共有鍵Kとすることにより、生成した関数値G(s)から共有鍵Kと乱数値uとを生成し、生成した乱数値uを暗号化部114へ出力し、生成した共有鍵Kを共通鍵暗号部118へ出力する。
暗号化部114は、公開鍵入力部111から公開鍵多項式hを受け取り、乱数生成部112から乱数sを受け取り、第1関数部113から乱数値uを受け取る。次に、以下のようにして、NTRU暗号により、公開鍵多項式hと乱数値uとを用いて乱数sの第1暗号文c1を生成する。ここで、乱数値uは、ブラインド値であり、暗号化の対象である乱数sを不明瞭にするために用いられる。
例えば、暗号化部114は、乱数値uを擬似乱数系列の初期値(乱数シード)として設定し、{0,1,...,N−1}から重複しないように2d個の擬似乱数を生成し、最初のd個の疑似乱数によりそれぞれ示されるd個の次元の項の係数を「1」とし、残りのd個の擬似乱数によりそれぞれ示されるd個の次元の項の係数を「−1」とし、他の次元の項の係数は「0」とする。
第1暗号文c1=暗号文多項式E(sp,r,h)を生成する。
次に、暗号化部114は、生成した第1暗号文c1を第1送信部117へ出力する。
なお、図2において、暗号装置110の各構成部を示す各ブロックは、接続線により他のブロックと接続されている。ここで、各接続線は、信号や情報が伝達される経路を示している。また、暗号化部114を示すブロックに接続している複数の接続線のうち、接続線上に鍵マークが付されているものは、暗号化部114へ鍵としての情報が伝達される経路を示している。共通鍵暗号部118を示すブロックについても同様である。また、他の図面についても同様である。
第1送信部117は、暗号化部114から第1暗号文c1を受け取り、第1暗号文c1をインターネット130を介して復号装置120へ送信する。
(6)共通鍵暗号部118
共通鍵暗号部118は、例えばDES暗号方式のような共通鍵暗号アルゴリズムSymを有している。
次に、共通鍵暗号部118は、共通鍵暗号文Ci(1≦i≦n)を第2送信部119へ出力する。
第2送信部119は、共通鍵暗号部118から共通鍵暗号文Ci(1≦i≦n)を受け取り、受け取った共通鍵暗号文Ci(1≦i≦n)を、インターネット130を介して復号装置120へ送信する。
1.6 復号装置120の構成
復号装置120は、図3に示すように、秘密鍵入力部121、第1受信部122、復号化部123、第2関数部126、比較部127、共通鍵復号部128及び第2受信部129から構成される。
(1)秘密鍵入力部121
秘密鍵入力部121は、メモリカード170から、復号装置120の秘密鍵多項式fと公開鍵多項式hとを読み出し、読み出した秘密鍵多項式fを復号化部123へ出力し、読み出した公開鍵多項式hを比較部127へ出力する。
第1受信部122は、インターネット130を介して暗号装置110から第1暗号文c1を受け取り、受け取った第1暗号文c1を復号化部123へ出力する。
(3)復号化部123
復号化部123は、秘密鍵入力部121から秘密鍵多項式fを受け取り、第1受信部122から第1暗号文c1を受け取り、次に示すようにして、NTRU暗号により、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号乱数s’を生成する。
次に、復号化部123は、受け取った第1暗号文c1と生成した復号乱数s’とを比較部127へ出力し、生成した復号乱数s’を第2関数部126へ出力する。
(4)第2関数部126
第2関数部126は、第1関数部113が有している関数と同じ関数Gのアルゴリズムを有している。
(5)比較部127
比較部127は、図3に示すように、暗号化部127xと比較演算部127yとから構成されている。
第2受信部129は、インターネット130を介して暗号装置110から共通鍵暗号文Ci(1≦i≦n)を受信し、受信した共通鍵暗号文Ci(1≦i≦n)を共通鍵復号部128へ出力する。
(7)共通鍵復号部128
共通鍵復号部128は、共通鍵暗号部118が有する共通鍵暗号アルゴリズムSymと同じ共通鍵暗号アルゴリズムSymを予め有している。
次に、共通鍵復号部128は、生成した復号文mi’(1≦i≦n)を再生装置150へ出力する。
再生装置150は、復号装置120から復号文mi’(1≦i≦n)を受け取り、受け取った復号文mi’(1≦i≦n)から映像信号及び音声信号を生成し、生成した映像信号及び音声信号をモニタ155へ出力する。
モニタ155は、再生装置150から映像信号及び音声信号を受け取り、受け取った映像信号及び音声信号により、映像を表示し、音声を出力する。
暗号装置110及び復号装置120の動作について、図4に示す処理系統図及び図5に示すフローチャートを用いて説明する。
暗号装置110の公開鍵入力部111は、メモリカード160から復号装置120の公開鍵多項式hを読み出し、読み出した公開鍵多項式hを暗号化部114へ出力する(ステップS101)。
次に、第1関数部113は、乱数生成部112から乱数sを受け取り、乱数sの関数値G(s)を生成し(ステップS103)、次に、第1関数部113は、関数値G(s)から乱数値uと共有鍵Kとを生成して、乱数値uを暗号化部114へ出力し、共有鍵Kを共通鍵暗号部118へ出力する(ステップS104)。
次に、第1送信部117は、暗号化部114から第1暗号文c1を受け取り、第1暗号文c1をインターネット130を介して復号装置120へ送信する(ステップS106)。
次に、第1受信部122は、インターネット130を介して暗号装置110から第1暗号文c1を受け取り、第1暗号文c1を復号化部123へ出力する(ステップS106)。
次に、第2関数部126は、復号化部123から復号乱数s’を受け取り、復号乱数s’の関数値G(s’)を生成し(ステップS153)、関数値G(s’)から乱数値u’と共有鍵K’とを生成して、乱数値u’と共有鍵K’とを比較部127へ出力する(ステップS154)。
第1暗号文c1が復号乱数s’の暗号文であれば(ステップS156)、比較部127は、共有鍵K’を共通鍵復号部128へ出力する(ステップS157)。次に、第2受信部129は、インターネット130を介して暗号装置110から暗号文Ci(1≦i≦n)を受信し、共通鍵復号部128へ出力する(ステップS108)。
以下に、実施の形態1におけるコンテンツ配信システム10の全体の動作について説明する。
まず、暗号装置110は、復号装置120の公開鍵多項式hを入力とし、乱数sを生成し、関数値G(s)から乱数値uと共有鍵Kとを導出する。次に、暗号装置110は、乱数sを、公開鍵多項式hと乱数値uを用いてNTRU暗号で暗号化して第1暗号文c1を生成し、第1暗号文c1をインターネット130を介して復号装置120へ送信する。
・乱数sを生成する。
・G(s)を生成し、G(s)からu、Kを生成する。
・公開鍵多項式hと乱数値uとを用いて乱数sの第1暗号文c1を生成する。
次に、暗号装置110は、導出した共有鍵Kを用いて、外部から入力された平文mi(1≦i≦n)を共通鍵暗号で暗号化して暗号文Ci(1≦i≦n)を生成し、インターネット130を介して復号装置120へ送信する。
一方、復号装置120は、復号装置120の秘密鍵多項式f及び公開鍵多項式hを入力とし、インターネット130を介して暗号装置110から第1暗号文c1を受信し、第1暗号文c1を秘密鍵多項式fを用いて復号して復号乱数s’を生成する。次に、復号乱数s’の関数値G(s’)から乱数値u’と共有鍵K’を導出し、復号乱数s’を暗号化して第1再暗号文c1’を生成し、c1’=c1であれば、共有鍵K’を出力する。
・秘密鍵多項式fを用いて第1暗号文c1を復号してs’を生成する。
・G(s’)を生成し、G(s’)からu’、K’を生成する。
・公開鍵多項式h、乱数値u’を用いてs’の第1再暗号文c1’を生成する。
・c1’=c1が成立するかどうかチェックする。成立すれば共有鍵K’を出力する。
1.10 実施の形態1における効果
従来のRSA−KEMアルゴリズムでは、秘密鍵を知らなければ暗号文Cから導出できない要素sをハッシュ関数Gに入力して共有鍵Kを導出する。しかしながら、NTRU暗号を用いて、鍵カプセル化メカニズムであるRSA−KEMアルゴリズムを適用して共有鍵の配送を行おうとすると、復号エラーが発生する場合があるため、秘密鍵を用いても要素sが導出できず、従って正しくない共有鍵K’を導出する場合がある。
1.11 変形例
上記に説明した実施の形態1は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(2)暗号化部114及び復号化部123で行われるビット列の各ビットの値と多項式の各項の係数との変換方法は、上記において説明した方法に限られず他の変換方法でもよい。
また、乱数値uから乱数多項式rへの変換は、uからrが一意に求まり、rのd個の次元の項の係数を「1」とし、d個の次元の項の係数を「一1」とし、他の次元の項の係数は「0」となるようにすれば、他の変換方法でもよく、例えば、乱数値uを多項式に対応させる関数、又は関数値テーブルを用いて変換してもよい。
従って、暗号化部114及び復号化部123で用いる公開鍵暗号は、NTRU暗号以外に、どんな公開鍵暗号でも利用できる。
なお、ElGamal暗号について非特許文献1に詳細に記載されているため、ここでは説明を省略する。
例えば、関数値G(s)の上位k/2ビットを乱数値uとし、下位k×3/2ビットを共有鍵Kとしてもよい。また、関数値G(s)の2kビットのうち、1ビット置きにkビットを選択して乱数値uとし、残りのkビットを共有鍵Kとしてもよい。
例えば、任意の関数Funcに対し、u=Func(s)として暗号装置110と復号装置120とで同じ値を得られるようにしてもよい。すなわち、暗号装置110と復号装置120とにおいて、
・G(s)を生成し、G(s)からKを生成する。
としてもよい。
(6)乱数値uは、第1関数部113及び第2関数部126で生成される以外にも、暗号装置110と復号装置120とで同じ値を得られればよいので、暗号装置110が乱数値uを復号装置120bに直接送信してもよい。
暗号装置110において、
・G(s)を生成し、G(s)からKを生成する。
・乱数値uを、別途、暗号装置110から復号装置120へ送信する。
・乱数値uを受信する。
・乱数値u’に代えて、受信した乱数値uを用いて第1再暗号文c1’を生成する。
このとき、暗号装置110は、乱数値uを暗号化して送信し、復号装置120は、暗号化された乱数値uを復号するとしてもよい。
例えば、以下のように、暗号装置110は、第1暗号文c1と乱数値u2とを復号装置120に送信してもよい。
(a)G(s)を生成し、G(s)からK、u1を生成する。
(b)乱数値u2を生成し、別途、復号装置120へ送信する。
(c)乱数値uを、u=u1 xor u2から生成する。
(d)乱数値uを用いて、第1暗号文c1を生成する。
(e)乱数値u2を受信する。
(f)G(s’)を生成し、G(s’)からK’、u1’を生成する。
(g)乱数値u’を、u’=u1’ xor u2から生成する。
(h)生成した乱数値u’を用いて第1再暗号文c1’を生成する。
また、(c)及び(g)において、排他的論理和xorに代えて他の演算を用いるとしてもよい。例えば、(c)及び(g)において、それぞれ加算及び減算を用いてもよいし、また、乗算及び除算を用いてもよい。
以下に、その具体例を述べる。
コンテンツ配信システム10は、暗号装置110及び復号装置120に代えて、暗号装置110b及び復号装置120bを含み、暗号装置110bは、図6に示すように、公開鍵入力部111、乱数生成部112、第1関数部113b、暗号化部114b、第1送信部117b、共通鍵暗号部118及び第2送信部119から構成されており、復号装置120は、図7に示すように、秘密鍵入力部121b、第1受信部122b、復号化部123b、第2関数部126b、比較部127b、共通鍵復号部128及び第2受信部129から構成される。比較部127bは、第3関数部127u及び比較演算部127vを含む。
次に、暗号化部114bは、乱数値uを生成し、生成した乱数値uから乱数多項式rを生成し、乱数多項式r及び公開鍵多項式hを用いて乱数sの第1暗号文c1を生成し(ステップS105)、ハッシュ関数値H(s)を生成する(ステップS111)。
次に、復号装置120bにおいて、第1受信部122bは、第1暗号文c1を受信し(ステップS106)、ハッシュ関数値H(s)を受信する(ステップS112)。
次に、復号化部123bは、秘密鍵多項式fを用いて第1暗号文c1を復号してs’を生成する(ステップS152)。
次に、比較部127は、第3関数部127uにより、H(s’)を生成し(ステップS154)、比較演算部127vにより、H(s’)=H(s)が成立するかどうかチェックし(ステップS162)、成立すれば共有鍵K’を出力する(ステップS157)。
2.実施の形態2
本発明に係る別の実施の形態としてのコンテンツ配信システム10c(図示していない)について説明する。
2.1 コンテンツ配信システム10cの構成
コンテンツ配信システム10cは、コンテンツ配信システム10と同様の構成を有しており、暗号装置110及び復号装置120に代えて、暗号装置110c及び復号装置120cを含んでいる。その他の構成については、コンテンツ配信システム10におけるものと同様であるので説明を省略する。
暗号装置110cは、図9に示すように、暗号装置110と同様の構成を有しており、乱数生成部112、第1関数部113、暗号化部114及び第1送信部117に代えて、乱数生成部112c、第1関数部113c、暗号化部114c、乱数マスク部116c及び第1送信部117cを含む。
(1)乱数生成部112c
乱数生成部112cは、共有鍵Kを生成するための元となるシード値として、乱数sを生成し、生成した乱数sを第1関数部113bと乱数マスク部116cとへ出力する。
第1関数部113cは、乱数生成部112cから乱数sを受け取り、乱数sの関数値G(s)を生成する。次に、生成した関数値G(s)から検証値aと共有鍵Kと乱数値uとを生成する。
ここで、関数Gは、出力長が3kビットのハッシュ関数であり、第1関数部113cは、関数値G(s)の上位kビットを検証値aとし、関数値G(s)の中間のkビットを共有鍵Kとし、関数値G(s)の下位kビットを乱数値uとする。
(3)暗号化部114c
暗号化部114cは、公開鍵入力部111から公開鍵多項式hを受け取り、第1関数部113cから検証値aと乱数値uとを受け取り、次に示すようにして、公開鍵多項式hと乱数値uとを用いて検証値aの第1暗号文c1を生成する。ここでは、第1暗号文c1はNTRU暗号による暗号文である。
次に、暗号化部114cは、生成した第1暗号文c1を第1送信部117cへ出力する。
乱数マスク部116cは、乱数生成部112cから乱数sを受け取り、第1関数部113cから検証値aを受け取り、次に、第2暗号文c2=s xor aを生成し、生成した第2暗号文c2を第1送信部117cへ出力する。
ここで、xorは排他的論理和演算を表す演算子である。
(5)第1送信部117c
第1送信部117cは、暗号化部114cから第1暗号文c1を受け取り、乱数マスク部116cから第2暗号文c2を受け取り、受け取った第1暗号文c1と第2暗号文c2とを、インターネット130を介して復号装置120cへ送信する。
復号装置120cは、図10に示すように、復号装置120と同様の構成を有しており、第1受信部122、復号化部123、第2関数部126及び比較部127に代えて、第1受信部122c、復号化部123c、乱数マスク除去部125c、第2関数部126c及び比較部127cを含む。
(1)第1受信部122c
第1受信部122cは、インターネット130を介して、暗号装置110cから第1暗号文c1と第2暗号文c2とを受け取り、受け取った第1暗号文c1を復号化部123cへ出力し、受け取った第2暗号文c2を乱数マスク除去部125cへ出力する。
復号化部123cは、秘密鍵入力部121から秘密鍵多項式fを受け取り、第1受信部122cから第1暗号文c1を受け取り、次に示すようにして、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a’を生成する。ここでは、復号検証値a’はNTRU暗号による復号文である。
(3)乱数マスク除去部125c
乱数マスク除去部125cは、第1受信部122cから第2暗号文c2を受け取り、復号化部123cから復号検証値a’を受け取り、
復号乱数s’=c2 xor a’を生成し、生成した復号乱数s’を第2関数部126cへ出力する。
(4)第2関数部126c
第2関数部126cは、第1関数部113cが有する関数と同じ関数Gによるアルゴリズムを有している。
(5)比較部127c
比較部127cは、図10に示すように、比較演算部127s及び暗号化部127tから構成されている。
また、比較演算部127sは、第2関数部126cから共有鍵K’を受け取り、復号化部123cから第1暗号文c1を受け取り、暗号化部127tから第1再暗号文c1’を受け取り、次に、受け取った第1暗号文c1と、受け取った第1再暗号文c1’とを比較し、第1暗号文c1=第1再暗号文c1’であると判断する場合に、受け取った共有鍵K’を共通鍵復号部128へ出力する。
以下に、実施の形態2におけるコンテンツ配信システム10cの全体の動作について、図11に示す処理系統図を用いて、説明する。
暗号装置110cは、復号装置120cの公開鍵多項式hを受け取り(ステップS101)、乱数sを生成し(ステップS102)、関数値G(s)を求め、関数値G(s)から検証値a、共有鍵K及び乱数値uを導出する(ステップS121)。次に、暗号装置110cは、検証値aを、公開鍵多項式h及び乱数値uを用いてNTRU暗号により暗号化して第1暗号文c1を生成し(ステップS105)、検証値aに基づき乱数sを暗号化して第2暗号文c2=s xor aを生成する(ステップS122)。次に、暗号装置110cは、第1暗号文c1と第2暗号文c2とをインターネット130を介して復号装置120cへ送信する(ステップS106)。
(a)乱数sを生成する。
(b)G(s)を生成し、G(s)からa、K、uを生成する。
(c)公開鍵多項式h、乱数値uを用いて検証値aの第1暗号文c1を生成する。
次に、暗号装置110cは、導出した共有鍵Kを用いて、コンテンツサーバ装置140から受け取った平文mi(1≦i≦n)を共通鍵暗号方式により暗号化して暗号文Ci(1≦i≦n)を生成し(ステップS107)、インターネット130を介して復号装置120cへ送信する(ステップS108)。
(a)秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する。
(b)s’=c2 xor a’を生成する。
(c)G(s’)を生成し、G(s’)からa’’、K’、u’を生成する。
(d)公開鍵多項式h、乱数値u’を用いてa’’の第1再暗号文c1’を生成する。
ここで、暗号装置110cで用いられた公開鍵多項式hに対応する正しい秘密鍵多項式fが復号装置120cで用いられれば、第1暗号文c1は正しく復号されて、復号検証値a’=aとなり、第2暗号文c2とa’から生成される復号乱数s’=sとなる。従って、G(s’)から導出される検証値a’’=aとなり、共有鍵K’=Kとなり、乱数値u’=uとなる。こうして、a’’=a及びu’=uが成り立つので、c1’=c1が成り立ち、復号装置120cは暗号装置110cと同じ共有鍵Kを導出できることになる。
なお、復号エラーが発生した場合には、復号検証値a’と検証値aとは異なるので、第2暗号文c2から得られる復号乱数s’はsと異なる。従って、G(s’)から導出される乱数値u’及び共有鍵K’は、それぞれu、Kとは異なる。しかし、この場合、a’、u’がそれぞれa、uと異なるために第1再暗号文c1’は第1暗号文c1と異なるので、復号装置120cは、共有鍵K’を出力しない。
従来のRSA−KEMアルゴリズムでは、秘密鍵を知らなければ暗号文Cから導出できない要素sをハッシュ関数Gに入力して共有鍵Kを導出する。しかしながら、NTRU暗号を用いて、鍵カプセル化メカニズムであるRSA−KEMアルゴリズムを適用して共有鍵の配送を行おうとすると、復号エラーが発生する場合があるため、秘密鍵を用いても要素sが導出できず、従って正しくない共有鍵K’を導出する場合がある。
2.5 変形例
上記に説明した実施の形態2は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。実施の形態1におけるのと同様の変形を施すことができるのはもちろんであるが、以下のような場合も本発明に含まれる。
また、乱数値uから乱数多項式rへの変換は、他の変換方法でもよい。例えば、uからrが一意に求まり、d個の次元の項の係数を「1」とし、d個の次元の項の係数を「一1」とし、他の次元の項の係数は「0」となるようにすれば、他の変換方法でもよい。例えば、乱数値uを多項式に対応させる関数、又は関数値テーブルを用いて変換してもよい。
(3)乱数値uは、第1関数部113c及び第2関数部126cで生成される以外にも、暗号装置110cと復号装置120cとで同じ値を得られれば、他の生成方法でもよい。
・G(s)を生成し、G(s)からa、Kを生成する。
・Func(s)を生成し、u=Func(s)とする。
としてもよい。
すなわち、以下のように、暗号装置110cは、暗号文Cと乱数値uとを復号装置120bに送信してもよい。また、乱数値uを暗号化して送信してもよい。
・暗号装置110cは、別途、乱数値uを、120bへ送信する。
(5)さらに、乱数値uについては、暗号装置110cと復号装置120cとで同じ値が得られればよいため、乱数値uの一部である部分情報を第1関数部113c及び第2関数部126cで生成し、乱数値uの残りの部分情報を暗号装置110cから復号装置120cに直接送信してもよい。
・G(s)を生成し、G(s)からa、K、u1を生成する。
・暗号装置110cは、別途、乱数値u2を復号装置120cへ送信する。
(6)復号装置120cは、第1暗号文c1が第2関数部126cで得られる検証値a’’の暗号文かどうかチェックを行い、c1がa’’の暗号文であるときに共有鍵K’を用いて共通鍵暗号文Ciを復号しているが、第1暗号文c1が復号検証値a’の暗号文かどうかをチェックしてもよい。
以上説明したように、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて乱数データと前記共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して暗号化共有鍵データを生成する第1の暗号化部とを備える。
ここで、前記第2の暗号化部は、前記秘密数データを、前記検証値データを暗号鍵として用いて共通鍵暗号方式により暗号化して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データに前記検証値データを乗算して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2暗号予備データのビット連結データであるとしてもよい。
ここで、前記第1の暗号化部は、NTRU暗号方式により暗号化して前記第1の暗号予備データを生成するとしてもよい。
ここで、前記秘密数データは、ランダムに生成される乱数であるとしてもよい。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記暗号化共有鍵データを前記秘密鍵データに基づいて復号化して秘密数データを生成する第1の復号化部と、前記秘密数データを所定の処理に基づいて乱数データと前記共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して再暗号化共有鍵データを生成する第3の暗号化部とを備え、前記暗号化共有鍵データと前記再暗号化共有鍵データが一致する場合に、前記共有鍵データを出力する。
ここで、前記第2の復号化部は、前記第2の暗号予備データを、前記検証値データを暗号鍵として用いて共通鍵暗号方式により復号化して前記秘密数データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記第2の暗号予備データを前記検証値データで除算して前記秘密数データ第2の秘密数データを生成するとしてもよい。
ここで、前記第1の復号化部は、NTRU暗号方式により復号化して前記共有鍵データを生成するとしてもよい。
ここで、前記共有鍵導出部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
また、本発明は、予め与えられた公開鍵データに基づいて平文データを暗号化した暗号文データを生成する暗号装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて乱数データと共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記平文データを前記共有鍵データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号文データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
4.実施の形態3
本発明に係るさらに別の実施の形態としてのコンテンツ配信システム10d(図示していない)について説明する。
4.1 コンテンツ配信システム10dの構成
コンテンツ配信システム10dは、コンテンツ配信システム10と同様の構成を有しており、暗号装置110及び復号装置120に代えて、暗号装置110d及び復号装置120dを含んでいる。その他の構成については、コンテンツ配信システム10におけるものと同様であるので説明を省略する。
4.2 暗号装置110dの構成
暗号装置110dは、図13に示すように、公開鍵入力部111d、乱数生成部112d、第1関数部113d、暗号化部114d、第2関数部115d、乱数マスク部116d、第1送信部117d、共通鍵暗号部118及び第2送信部119から構成されている。
(1)公開鍵入力部111d
公開鍵入力部111dは、メモリカード160から復号装置120の公開鍵多項式hを読み出し、読み出した公開鍵多項式hを暗号化部114dへ出力する。
乱数生成部112dは、共有鍵Kを生成するための元となるシード値として、乱数sを生成し、生成した乱数sを第1関数部113と乱数マスク部116とへ出力する。
(3)第1関数部113d
第1関数部113dは、乱数生成部112dから乱数sを受け取り、受け取った乱数sの関数値G(s)を生成し、関数値G(s)から検証値aと共有鍵Kを生成する。ここでは、関数Gは、一方向性関数である出力長が2kビットのハッシュ関数であり、第1関数部113dは、G(s)の上位kビットを検証値aとし、G(s)の下位kビットを共有鍵Kとする。
(4)暗号化部114d
暗号化部114dは、公開鍵入力部111dから公開鍵多項式hを受け取り、第1関数部113dから検証値aを受け取り、次に示すようにして、受け取った公開鍵多項式hを用いて検証値aの第1暗号文c1を生成する。ここで、生成される第1暗号文c1は、NTRU暗号による暗号文である。
(5)第2関数部115d
第2関数部115dは、第1関数部113dから検証値aを受け取り、暗号化部114dから第1暗号文c1を受け取り、次に示すようにして、検証値aと第1暗号文c1の関数値H(a,c1)を生成する。
第1暗号文c1は、NTRU暗号の暗号文であり多項式で表現されているので、第2関数部115dは、第1暗号文c1の各項の係数が、2進数表現した場合のN桁の第1暗号文ビット列c1’の各桁の値に対応するように、第1暗号文ビット列c1’を生成する。例えば、第1暗号文c1のb次元の項X^bの係数を、第1暗号文ビット列c1’の下位bビット目の値とする。こうして、第1暗号文c1を第1暗号文ビット列c1’に変換する。具体的には、第1暗号文c1=X^5+X^2の場合、第1暗号文ビット列c1’=10010(ビット表現)と変換する。
次に、第2関数部115dは、生成した関数値H(a,c1)を乱数マスク部116dへ出力する。
乱数マスク部116dは、乱数生成部112dから乱数sを受け取り、第2関数部115dから関数値H(a,c1)を受け取る。次に、第2暗号文c2=s xor H(a,c1)を生成し、生成した第2暗号文c2を第1送信部117dへ出力する。
なお、乱数マスク部116dは、排他的論理和xorに代えて、共有鍵暗号アルゴリズム、加算又は乗算を用いるとしてもよい。
第1送信部117dは、暗号化部114dから第1暗号文c1を受け取り、乱数マスク部116dから第2暗号文c2を受け取り、受け取った第1暗号文c1と第2暗号文c2とを、インターネット130を介して、復号装置120dへ送信する。
(8)共通鍵暗号部118及び第2送信部119
共通鍵暗号部118及び第2送信部119は、以下に示す点を除いて、それぞれ、暗号装置110に含まれている共通鍵暗号部118及び第2送信部119と同じである。
4.3 復号装置120dの構成
復号装置120dは、図14に示すように、秘密鍵入力部121d、第1受信部122d、復号化部123d、第3関数部124d、乱数マスク除去部125d、第4関数部126d、比較部127d、共通鍵復号部128及び第2受信部129から構成されている。
なお、共通鍵復号部128及び第2受信部129は、それぞれ、復号装置120に含まれている共通鍵復号部128及び第2受信部129と同じであるので、ここでは、説明を省略する。
秘密鍵入力部121dは、メモリカード170から復号装置120dの秘密鍵多項式fを読み出し、読み出した秘密鍵多項式fを復号化部123dへ出力する。
(2)第1受信部122d
第1受信部122dは、インターネット130を介して暗号装置110dから第1暗号文c1と第2暗号文c2とを受け取り、受け取った第1暗号文c1を復号化部123dと第3関数部124dとへ出力し、受け取った第2暗号文c2を乱数マスク除去部125dへ出力する。
(3)復号化部123d
復号化部123dは、秘密鍵入力部121dから秘密鍵多項式fを受け取り、第1受信部122dから第1暗号文c1を受け取り、次に示すようにして、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a’を生成する。ここでは、復号検証値a’はNTRU暗号による復号文である。
(4)第3関数部124d
第3関数部124dは、第2関数部115dが有する関数と同じ関数Hのアルゴリズムを有している。
(5)乱数マスク除去部125d
乱数マスク除去部125dは、第1受信部122dから第2暗号文c2を受け取り、第3関数部124dからハッシュ関数値H(a’,c1)を受け取り、次に、復号乱数s’=c2 xor H(a’,c1)を生成し、生成した復号乱数sを第4関数部126dへ出力する。
第4関数部126dは、第1関数部113dが有する関数と同じ関数Gのアルゴリズムを有している。
第4関数部126dは、乱数マスク除去部125dから復号乱数s’を受け取り、復号乱数s’のハッシュ関数値G(s’)を生成する。次に、第1関数部113dと同様にして、関数値G(s’)から検証値a’’と共有鍵K’とを生成し、生成した検証値a’’と共有鍵K’とを比較部127dへ出力する。
比較部127dは、復号化部123dから復号検証値a’を受け取り、第4関数部126dから検証値a’’と共有鍵K’とを受け取り、次に、復号検証値a’と検証値a’’が等しいかどうかチェックを行い、復号検証値a’と検証値a’’とが等しければ、共有鍵K’を共通鍵復号部128へ出力する。
共通鍵復号部128は、比較部127dから共有鍵K’を受け取る。
その他の点については、共通鍵復号部128は、復号装置120に含まれている共通鍵復号部128と同じであるので、ここでは、説明を省略する。
また、第2受信部129は、復号装置120に含まれている第2受信部129と同じであるので、ここでは、説明を省略する。
コンテンツ配信システム10dの動作について、図15に示すフローチャート及び図16に示す処理系統図を用いて説明する。
公開鍵入力部111dは、メモリカード160から復号装置120dの公開鍵多項式hを受け取り、公開鍵多項式hを暗号化部114dへ出力する(ステップS201)。
次に、第1関数部113dは、乱数生成部112dから乱数sを受け取り、乱数sの関数値G(s)を生成する(ステップS203)。そして、第1関数部113dは、関数値G(s)から検証値aと共有鍵Kを生成して、検証値aを暗号化部114dと第2関数部115dとへ出力し、共有鍵Kを共通鍵暗号部118へ出力する(ステップS204)。
次に、第2関数部115dは、第1関数部113dから検証値aを受け取り、暗号化部114dから第1暗号文c1を受け取り、検証値aと第1暗号文c1との関数値H(a,c1)を生成し、関数値H(a,c1)を乱数マスク部116へ出力する(ステップS206)。
次に、第1送信部117dは、暗号化部114dから第1暗号文c1を受け取り、乱数マスク部116dから第2暗号文c2を受け取り、第1暗号文c1と第2暗号文c2とをインターネット130を介して復号装置120dへ送信する(ステップS208)。
一方、秘密鍵入力部121dは、メモリカード170から復号装置120dの秘密鍵多項式fを受け取り、秘密鍵多項式fを復号化部123へ出力する(ステップS251)。
次に、復号化部123dは、秘密鍵入力部121から秘密鍵多項式fを受け取り、第1受信部122dから第1暗号文c1を受け取り、次に、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a’を生成し、復号検証値a’を第3関数部124dと比較部127dへ出力する(ステップS252)。
次に、乱数マスク除去部125dは、第1受信部122dから第2暗号文c2を受け取り、第3関数部124dからハッシュ関数値H(a’,c1)を受け取り、次に、復号乱数s’=c2 xor H(a’,c1)を生成し、復号乱数sを第4関数部126dへ出力する(ステップS254)。
次に、比較部127dは、復号化部123から復号検証値a’を受け取り、第4関数部126dから検証値a’’と共有鍵K’とを受け取り、復号検証値a’と検証値a’’とが等しいかどうかチェックを行い、等しくなければ(ステップS257)、処理を終了する。
次に、第2受信部129は、インターネット130を介して暗号装置110dから暗号文Ci(1≦i≦n)を受信し、共通鍵復号部128へ出力する(ステップS210)。
次に、共通鍵復号部128は、比較部127dから共有鍵K’を受け取り、第2受信部129から共通鍵暗号文Ci(1≦i≦n)を受け取り、共有鍵K’を使用して共通鍵暗号文Ci(1≦i≦n)に共通鍵暗号アルゴリズムSymを施して、復号文mi’=Sym(Ci,K)(1≦i≦n)を生成し、復号文mi’(1≦i≦n)を外部へ出力し(ステップS259)、処理を終了する。
以下に、コンテンツ配信システム10dの全体の動作について説明する。
暗号装置110dは、復号装置120dの公開鍵多項式hを入力とし、乱数sを生成して、関数値G(s)から検証値aと共有鍵Kを導出する。次に、暗号装置110dは、検証値aを公開鍵多項式hを用いてNTRU暗号で暗号化して第1暗号文c1を生成し、検証値aと第1暗号文c1から関数値H(a,c1)を生成し、乱数sと関数値H(a,c1)から第2暗号文c2=s xor H(a,c1)を生成する。次に、暗号装置110dは、第1暗号文c1と第2暗号文c2をインターネット130を介して復号装置120dへ送信する。
・乱数sを生成する。
・G(s)を生成し、G(s)からa,Kを生成する。
・公開鍵多項式hを用いて検証値aの第1暗号文c1を生成する。
・共有鍵Kと暗号文C=(c1,c2)を出力する。
次に、暗号装置110dは、導出した共有鍵Kを用いて、コンテンツサーバ装置140から入力された平文mi(1≦i≦n)を共通鍵暗号で暗号化して暗号文Ci(1≦i≦n)を生成し、インターネット130を介して復号装置120dへ送信する。
・秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する。
・s’=c2 xor H(a’,c1)を生成する。
・G(s’)を生成し、G(s’)からa’’,K’を生成する。
・a’’=a’が成立するかどうかチェックする。成立すれば共有鍵K’を出力する。
ここで、共通鍵暗号文生成時に用いた暗号鍵Kと復号文生成時に用いる暗号鍵K’は同一であるので、復号装置120dは、正しくmi’=mi(1≦i≦n)を得ることができる。
従来のPSEC−KEMアルゴリズムでは、ハッシュ関数Hの入力にa*P,a*Wを用い、秘密鍵を用いずにa*Pからa*Wを計算することが困難なDiffie−Hellman問題を用いて、最終的に共有鍵Kを導出することにより、秘密鍵を知らなければその共有鍵Kを導出できないようにしている。従って、NTRU暗号をはじめ、Diffie−Hellman問題を利用しない他の公開鍵暗号は、Diffie−Hellman問題のa*P、a*Wに相当するものがないため、PSEC−KEMアルゴリズムを適用できないという問題点がある。
なお、NTRU暗号では、公開鍵を用いて平文を暗号化して暗号文を生成し、正規の秘密鍵を用いて暗号文を復号して復号文を生成しても、復号文が元の平文と異なる場合が発生する(例えば、非特許文献2参照。)。このような復号エラーが発生すると、復号装置は誤った復号検証値a’を得ることになるが、G(s’)から得られる検証値a’’はa’と等しくならないために、共有鍵K’を出力しない。従って、復号エラーが発生しても、暗号装置と復号装置との間で誤った鍵を共有することを防止できるという効果がある。
これにより、NTRU暗号を用いて鍵カプセル化メカニズムを構成することができ、暗号装置と復号装置との間でNTRU暗号を用いて鍵配送が行えるようになる。
また、本発明による方式は、非特許文献3に記述されている証明方法と同様の方法により、理論的にその安全性が証明できる。
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(1)用いるNTRU暗号のパラメータN=167に限定されない。パラメータNは、他の値をとるとしてもよい。
例えば、ビット列と多項式を1対1に対応させる関数、又は関数値のテーブルを用いて変換してもよい。
(3)暗号化部114d及び復号化部123dで用いる公開鍵暗号方式は、暗号化部114dにおいて、検証値aを公開鍵で暗号化して第1暗号文c1を生成し、復号化部123dにおいて、第1暗号文c1を秘密鍵で復号して、検証値aと等しい復号検証値a’を生成できればよい。
例えば、RSA暗号を採用するならば、h、fをそれぞれRSA暗号の公開鍵、秘密鍵とし、暗号化部114dにおいて、aをhを用いて暗号化してc1を生成し、復号化部123dにおいて、c1をfを用いて復号してa’を生成すればよい。
なお、RSA暗号やElGamal暗号について非特許文献1に詳細に記載されているため、ここでは説明を省略する。
(5)第2関数部115dは、検証値aと第1暗号文c1から関数値H(a,c1)を導出すれば他の方法でもよい。
(6)さらに、第2関数部115dは、検証値aを用いて関数値を導出すれば、他の方法でもよい。
・c2=s xor H(a)、又は
・c2=s xor aとして導出してもよい。
これらの場合において、復号装置120dの第3関数部124dは、それぞれ、
・H(a’) 又は
・a’
を出力する。
例えば、乱数マスク部116dは、第2暗号文c2を
・c2=s+H(a,c1)、又は
・c2=s・H(a,c1)
として導出してもよい。
本発明に係るさらに別の実施の形態としてのコンテンツ配信システム10e(図示していない)について説明する。
コンテンツ配信システム10eは、実施の形態3に示すコンテンツ配信システム10dを基本として、これを変形したシステムであり、暗号装置が、関数値G(s)から検証値aと共有鍵Kの他に乱数値uを生成し、乱数値uを用いて検証値aを暗号化して第1暗号文c1を生成する点と、復号装置が、共有鍵Kを出力するときの判断の方法とにおいて、コンテンツ配信システム10dと異なる。
5.1 コンテンツ配信システム10eの構成
コンテンツ配信システム10eは、コンテンツ配信システム10dと同様の構成を有しており、暗号装置110d及び復号装置120dに代えて、暗号装置110e及び復号装置120eを含んでいる。その他の構成については、コンテンツ配信システム10dにおけるものと同様であるので説明を省略する。
5.2 暗号装置110eの構成
暗号装置110eは、図17に示すように、公開鍵入力部111d、乱数生成部112d、第1関数部113e、暗号化部114e、第2関数部115d、乱数マスク部116d、第1送信部117d、共通鍵暗号部118及び第2送信部119から構成されている。
第1関数部113eは、乱数生成部112dから乱数sを受け取り、受け取った乱数sの関数値G(s)を生成する。次に、以下に示すようにして、生成した関数値G(s)から検証値aと共有鍵Kと乱数値uとを生成する。
ここで、関数Gは、出力長が3kビットのハッシュ関数であり、第1関数部113eは、G(s)の上位kビットを検証値aとし、G(s)の中間のkビットを共有鍵Kとし、G(s)の下位kビットを乱数値uとする。
(2)暗号化部114e
暗号化部114eは、公開鍵入力部111dから公開鍵多項式hを受け取り、第1関数部113eから検証値aと乱数値uとを受け取る。次に、以下に示すようにして、公開鍵多項式hと乱数値uとを用いて検証値aの第1暗号文c1を生成する。ここで、第1暗号文c1は、NTRU暗号による暗号文である。また、乱数値uは、ブラインド値であり、暗号化の対象である検証値aを不明瞭にするために用いられる。
具体的には、例えば、暗号化部114eは、乱数値uを擬似乱数系列の初期値(乱数シード)として設定し、{0,1,...,N−1}から重複しない2d個の擬似乱数を生成し、最初のd個の擬似乱数により示される次元の項の係数を「1」とし、次のd個の擬似乱数により示される次元の項の係数を「−1」とし、残りの次元の項の係数を「0」とすることにより、乱数多項式rを生成する。
次に、暗号化部114eは、生成した第1暗号文c1を第2関数部115dと第1送信部117dとへ出力する。
5.3 復号装置120eの構成
復号装置120eは、図18に示すように、秘密鍵入力部121e、復号化部123e、第3関数部124d、乱数マスク除去部125d、第4関数部126e、比較部127e、共通鍵復号部128及び第2受信部129から構成されている。
秘密鍵入力部121eは、メモリカード170から復号装置120eの秘密鍵多項式fと公開鍵多項式hとを受け取り、秘密鍵多項式fを復号化部123eへ出力し、公開鍵多項式hを比較部127eへ出力する。
(2)復号化部123e
復号化部123eは、秘密鍵入力部121eから秘密鍵多項式fを受け取り、第1受信部122dから第1暗号文c1を受け取る。次に、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a’を生成し、生成した復号検証値a’を第3関数部124dへ出力し、受け取った第1暗号文c1を比較部127eへ出力する。
第4関数部126eは、第1関数部113eが有する関数と同じ関数Gによるアルゴリズムを有している。
第4関数部126eは、乱数マスク除去部125dから復号乱数s’を受け取り、受け取った復号乱数s’のハッシュ関数値G(s’)を生成する。次に、第1関数部113eと同様にして、関数値G(s’)から検証値a’’と共有鍵K’と乱数値u’とを生成し、検証値a’’と共有鍵K’と乱数値u’とを比較部127eへ出力する。
比較部127eは、図18に示すように、比較演算部127p及び暗号化部127qから構成されている。
暗号化部127qは、秘密鍵入力部121eから公開鍵多項式hを受け取り、第4関数部126eから検証値a’’と乱数値u’とを受け取る。次に、受け取った公開鍵多項式hと乱数値u’とを用いて、暗号化部114dと同様にして、受け取った検証値a’’を暗号化して第1再暗号文c1’を生成し、生成した第1再暗号文c1’を比較演算部127pへ出力する。
以下に、コンテンツ配信システム10eの全体の動作について、図19に示す処理系統図を用いて説明する。
暗号装置110eは、復号装置120eの公開鍵多項式hを受け取り(ステップS201)、乱数sを生成し(ステップS202)、関数値G(s)を生成し(ステップS203)、関数値G(s)から検証値a、共有鍵K及び乱数値uを導出する(ステップS204e)。次に、暗号装置110eは、検証値aを、公開鍵多項式h及び乱数値uを用いてNTRU暗号で暗号化して第1暗号文c1を生成し(ステップS205)、検証値aと第1暗号文c1から関数値H(a,c1)を生成し(ステップS206)、乱数sと関数値H(a,c1)から第2暗号文c2=s xor H(a,c1)を生成する(ステップS207)。次に、暗号装置110bは、第1暗号文c1と第2暗号文c2とをインターネット130を介して復号装置120eへ送信する(ステップS208)。
(a)乱数sを生成する。
(b)G(s)を生成し、G(s)からa,K,uを生成する。
(c)公開鍵多項式h,乱数値uを用いて検証値aの第1暗号文c1を生成する。
次に、暗号装置110eは、導出した共有鍵Kを用いて、コンテンツサーバ装置140から入力された平文mi(1≦i≦n)を共通鍵暗号で暗号化して暗号文Ci(1≦i≦n)を生成し(ステップS209)、インターネット130を介して復号装置120eへ送信する(ステップS210)。
(a)秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する。
(b)s’=c2 xor H(a’,c1)を生成する。
(c)G(s’)を生成し、G(s’)からa’’,K’,u’を生成する。
(e)c1’=c1が成立するかどうかチェックする。成立すれば共有鍵K’を出力する。
ここで、暗号装置110eで用いられた公開鍵多項式hに対応する正しい秘密鍵多項式fが復号装置120eで用いられれば、第1暗号文c1は正しく復号されて、復号検証値a’=aとなり、第2暗号文c2とH(a’,c1)から生成される復号乱数s’=sとなる。従って、G(s’)から導出される検証値a’’=aとなり、共有鍵K’=Kとなり、乱数値u’=uとなる。そして、a’’=a及びu’=uが成り立つので、c1’=c1が成り立ち、復号装置120eは暗号装置110eと同じ共有鍵Kを導出できることになる。
5.5 コンテンツ配信システム10eにおける効果
従来のPSEC−KEMアルゴリズムでは、ハッシュ関数Hの入力にa*P、a*Wを用い、秘密鍵を用いずにa*Pからa*Wを計算することが困難なDiffie−Hellman問題を用いて、最終的に共有鍵Kを導出することにより、秘密鍵を知らなければその共有鍵Kを導出できないようにしている。従って、NTRU暗号をはじめ、Diffie−Hellman問題を利用しない他の公開鍵暗号では、Diffie−Hellman問題のa*P、a*Wに相当するものがないため、PSEC−KEMアルゴリズムを適用できないという問題点がある。
なお、復号エラーが発生すると、復号装置は誤った復号検証値a’を得ることになるが、c1’はc1と等しくならないために、共有鍵K’を出力しない。従って、復号エラーが発生しても、暗号装置と復号装置との間で誤った鍵を共有することを防止できるという効果もある。
また、本発明による方式は、非特許文献3に記述されている証明方法と同様の方法により、理論的にその安全性が証明できる。
5.6 変形例
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。実施の形態3におけるのと同様の変形を施すことができるのはもちろんであるが、以下のような場合も本発明に含まれる。
また、例えば、実施の形態2の変形例(1)に述べた変換方法を用いて変換してもよい。
(3)乱数値uは、第1関数部113e及び第4関数部126eで生成される以外にも、暗号装置110eと復号装置120eとで同じ値を得られれば、他の生成方法でもよい。
・G(s)を生成し、G(s)からa、Kを生成する。
・Func(s)を生成し、u=Func(s)とする。
としてもよい。
すなわち、以下のように、暗号文Cと乱数値uとを復号装置120eに送信してもよい。
・暗号装置110eは、別途、乱数値uを、復号装置120eへ送信する。
また、暗号装置110eは、乱数値uを暗号化して送信してもよい。
(5)さらに、乱数値uは、暗号装置110eと復号装置120eとで同じ値を得られればよいため、乱数値uの一部から構成される部分情報を第1関数部113e及び第4関数部126eで生成し、乱数値uの残りの部分情報を暗号装置110eから復号装置120eに直接送信してもよい。
・G(s)を生成し、G(s)からa、K、u1を生成する。
・暗号装置110eは、別途、乱数値u2を、復号装置120eへ送信する。
・乱数値uを、u=u1 xor u2により生成する。
(6)復号装置120eは、第1暗号文c1が第4関数部126eで得られる検証値a’’の暗号文かどうかチェックを行い、c1がa’’の暗号文であるときに共有鍵K’を用いて共通鍵暗号文Ciを復号しているが、実施の形態3の復号装置120dと同じチェック方法により行うとしてもよい。
(a)秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する(ステップS252)。
(b)s’=c2 xor H(a’,c1)を生成する(ステップS254)。
(d)a’’=a’が成立するかどうかチェックする(ステップS257)。成立すれば共有鍵K’を出力する(ステップS258)。
また、このチェックは、第1暗号文c1が復号検証値a’の暗号文かどうかのチェックでもよい。
以上説明したように、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと前記共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
ここで、前記共有鍵導出部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
ここで、前記第1の暗号化部は、NTRU暗号方式により暗号化して前記第1の暗号予備データを生成するとしてもよい。
ここで、前記検証値変換部は、所定の処理として、前記検証値データをそのまま前記変換検証値データとするとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データと前記変換検証値データの排他的論理和演算を行って前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データに前記変換検証値データを加算して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2暗号予備データのビット連結データであるとしてもよい。
また、本発明は、予め与えられた秘密鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力すると有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと前記共有鍵データに変換する共有鍵導出部とを備え、前記検証値データと前記検証値検証データが一致する場合に、前記共有鍵データを出力する。
ここで、前記第1の復号化部は、NTRU暗号方式により復号化して検証値データを生成するとしてもよい。
ここで、前記検証値変換部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
ここで、前記第2の復号化部は、前記第2の暗号予備データと前記変換検証値データの排他的論理和演算を行って前記秘密数データを生成するとしてもよい。
ここで、前記第2の復号化部は、前記第2の暗号予備データを、前記変換検証値データを暗号鍵として用いて共通鍵暗号方式により復号化して前記秘密数データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記第2の暗号予備データを前記変換検証値データで除算して前記秘密数データを生成するとしてもよい。
また、本発明は、予め与えられた公開鍵データに基づいて平文データを暗号化した暗号文データを生成する暗号装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部と、前記平文データを前記共有鍵データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記暗号文データは、前記第1の暗号予備データと前記第2の暗号予備データと前記第3の暗号予備データから構成される。
以上により、従来技術では達成できなかった暗号システムを提供することができ、その価値は大きい。
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)暗号装置が、インターネットを介して、各暗号文を復号装置へ送信する代わりに、暗号装置は、各暗号文をDVDなどの記録媒体に書き込み、復号装置は、記録媒体から各暗号文を読み出すとしてもよい。
コンテンツ配信システムは、コンテンツサーバ装置と暗号装置と放送装置と受信装置と復号装置と再生装置とモニタとから構成されている。
暗号装置と復号装置とは、コンテンツ配信システム10の暗号装置110と復号装置120とに対応している。
(5)上記の各実施の形態において、メモリカード160は、予め公開鍵多項式hを記憶しており、メモリカード170は、予め秘密鍵多項式f及び公開鍵多項式hを記憶しており、暗号装置110及び復号装置120は、メモリカード160及びメモリカード170から、それぞれ公開鍵多項式、秘密鍵多項式を取得するとしているが、これには限定されない。
また、鍵管理装置は、秘密鍵多項式及び公開鍵多項式を生成し、生成した秘密鍵多項式及び公開鍵多項式を秘密にかつ安全に復号装置120へ送信し、生成した公開鍵多項式を暗号装置110へ送信するとしてもよい。
また、前記コンテンツは、上記のような著作物ではなく、暗号化及び復号化、デジタル署名及び署名検証などに用いる鍵情報であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
(8)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
特に、デシタル化された著作物を、DVDなどの記録媒体に格納して市場に流通させることにより、ネットワークを介して流通させることにより、又は放送により、供給する産業において好適である。
110 暗号装置
111 公開鍵入力部
112 乱数生成部
113 第1関数部
114 暗号化部
117 第1送信部
118 共通鍵暗号部
119 第2送信部
120 復号装置
121 秘密鍵入力部
122 第1受信部
123 復号化部
126 第2関数部
127 比較部
128 共通鍵復号部
129 第2受信部
130 インターネット
140 コンテンツサーバ装置
150 再生装置
155 モニタ
160 メモリカード
170 メモリカード
Claims (51)
- 第3者に知られることなく共有鍵を生成する共有鍵生成装置及び共有鍵復元装置から構成される鍵共有システムであって、
前記共有鍵生成装置は、
シード値を生成するシード値生成手段と、
生成された前記シード値から検証値及び共有鍵を生成する第1共有鍵生成手段と、
生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化手段と、
生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化手段と、
生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信手段とを備え、
前記共有鍵復元装置は、
前記第1暗号化情報及び前記第2暗号化情報を受信する受信手段と、
受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号手段と、
生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号手段と、
前記第1共有鍵生成手段と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する第2共有鍵生成手段と、
生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断手段と、
出力すると判断される場合に、生成された前記復号共有鍵を出力する出力手段とを備える
ことを特徴とする鍵共有システム。 - 前記共有鍵生成装置は、さらに、
コンテンツを取得する取得手段と、
生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成する暗号化手段とを備え、
前記送信手段は、さらに、生成された前記暗号化コンテンツを送信し、
前記受信手段は、さらに、前記暗号化コンテンツを受信し、
前記共有鍵復元装置は、さらに、
出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成する復号手段と、
生成された復号コンテンツを出力する出力手段とを備える
ことを特徴とする請求項1に記載の鍵共有システム。 - 第3者に知られることなく共有鍵を相手の装置へ伝える共有鍵生成装置であって、
シード値を生成するシード値生成手段と、
生成された前記シード値から検証値及び共有鍵を生成する共有鍵生成手段と、
生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化手段と、
生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化手段と、
生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信手段と
を備えることを特徴とする共有鍵生成装置。 - 前記シード値生成手段は、乱数を生成し、生成した乱数を前記シード値とすることにより、前記シード値を生成する
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 前記共有鍵生成手段は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値及び前記共有鍵を生成する
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 前記共有鍵生成手段は、前記シード値に、前記一方向性関数として、ハッシュ関数を施して前記関数値を生成する
ことを特徴とする請求項5に記載の共有鍵生成装置。 - 前記共有鍵生成手段は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成する
ことを特徴とする請求項5に記載の共有鍵生成装置。 - 前記共有鍵生成手段は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成する
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 前記第1暗号化手段は、
公開鍵を取得する公開鍵取得部と、
取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成する公開鍵暗号化部と含む
ことを特徴とする請求項8に記載の共有鍵生成装置。 - 前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、
前記公開鍵取得部は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し
前記公開鍵暗号化部は、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成する
ことを特徴とする請求項9に記載の共有鍵生成装置。 - 前記第1暗号化手段は、
公開鍵を取得する公開鍵取得部と、
取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成する公開鍵暗号化部と含む
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、
前記公開鍵取得部は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し
前記公開鍵暗号化部は、前記検証値から検証値多項式を生成し、ブラインド値を生成し、生成した前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成する
ことを特徴とする請求項11に記載の共有鍵生成装置。 - 前記第2暗号化手段は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成する
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成する
ことを特徴とする請求項13に記載の共有鍵生成装置。 - 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして共通鍵暗号化アルゴリズムを施すことにより、前記第2暗号化情報を生成する
ことを特徴とする請求項13に記載の共有鍵生成装置。 - 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして加算を施すことにより、前記第2暗号化情報を生成する
ことを特徴とする請求項13に記載の共有鍵生成装置。 - 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして乗算を施すことにより、前記第2暗号化情報を生成する
ことを特徴とする請求項13に記載の共有鍵生成装置。 - 前記第2暗号化手段は、前記検証値に、前記一方向性関数としてハッシュ関数を施して前記関数値を生成する
ことを特徴とする請求項13に記載の共有鍵生成装置。 - 前記第2暗号化手段は、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施して第2暗号化情報を生成する
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 前記第2暗号化手段は、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化する
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 前記第2暗号化手段は、前記検証値及び前記第1暗号化情報に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成する
ことを特徴とする請求項20に記載の共有鍵生成装置。 - 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成する
ことを特徴とする請求項21に記載の共有鍵生成装置。 - 前記共有鍵生成装置は、さらに、
コンテンツを取得する取得手段と、
生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成する暗号化手段とを備え、
前記送信手段は、さらに、生成された前記暗号化コンテンツを送信する
ことを特徴とする請求項3に記載の共有鍵生成装置。 - 第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置であって、
前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、
前記共有鍵復元装置は、
前記第1暗号化情報及び前記第2暗号化情報を受信する受信手段と、
受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号手段と、
生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号手段と、
前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成手段と、
生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断手段と、
出力すると判断される場合に、生成された前記復号共有鍵を出力する出力手段と
を備えることを特徴とする共有鍵復元装置。 - 前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、
前記第1復号手段は、
前記公開鍵に対応する秘密鍵を取得する秘密鍵取得部と、
取得された前記秘密鍵を用いて、受信した前記第1暗号化情報に、前記公開鍵暗号化アルゴリズムに対応する公開鍵復号アルゴリズムを施して前記第1復号検証値を生成する公開鍵復号部と含む
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 前記公開鍵暗号化アルゴリズム及び前記公開鍵復号アルゴリズムは、NTRU暗号方式によるものであり、
前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、ブラインド値を生成し、生成した前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、
前記受信手段は、多項式としての前記第1暗号化情報を受信し、
前記秘密鍵取得部は、前記秘密鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された秘密鍵多項式を取得し、
前記公開鍵復号部は、NTRU暗号方式の前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記秘密鍵多項式を鍵として用いて、多項式としての前記第1暗号化情報を復号して、復号検証値多項式を生成し、生成した前記復号検証値多項式から前記第1復号検証値を生成する
ことを特徴とする請求項25に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、
前記第2復号手段は、生成された前記第1復号検証値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、受信された前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して前記復号シード値を生成する
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成し、
前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして排他的論理和を施すことにより、前記復号シード値を生成する
ことを特徴とする請求項27に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして共通鍵暗号化アルゴリズムを施すことにより、前記第2暗号化情報を生成し、
前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、前記共通鍵暗号化アルゴリズムに対応する共通鍵復号アルゴリズムを施すことにより、前記復号シード値を生成する
ことを特徴とする請求項27に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして加算を施すことにより、前記第2暗号化情報を生成し、
前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、減算を施すことにより、前記復号シード値を生成する
ことを特徴とする請求項27に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして乗算を施すことにより、前記第2暗号化情報を生成し、
前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、除算を施すことにより、前記復号シード値を生成する
ことを特徴とする請求項27に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記検証値に、前記一方向性関数としてハッシュ関数を施して前記関数値を生成し、
前記第2復号手段は、生成された前記第1復号検証値に、前記一方向性関数として前記ハッシュ関数を施して前記復号関数値を生成する
ことを特徴とする請求項27に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施して第2暗号化情報を生成し、
前記第2復号手段は、生成された前記第1復号検証値を用いて、前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して、前記復号シード値を生成する
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化し、
前記第2復号手段は、生成された前記第1復号検証値及び受信された前記第1暗号化情報を用いて、前記第2暗号化情報を復号して前記復号シード値を生成する
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記検証値及び前記第1暗号化情報に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、
前記第2復号手段は、前記第1復号検証値及び前記第1暗号化情報に前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して、前記復号シード値を生成する
ことを特徴とする請求項34に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成し、
前記第2復号手段は、前記復号関数値及び前記第2暗号化情報に、前記復号アルゴリズムとして、排他的論理和を施すことにより、前記復号シード値を生成する
ことを特徴とする請求項35に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値及び前記共有鍵を生成し、
前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値及び前記復号共有鍵を生成する
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記シード値に、前記一方向性関数として、ハッシュ関数を施して前記関数値を生成し、
前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数として、前記ハッシュ関数を施して前記復号関数値を生成する
ことを特徴とする請求項37に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成し、
前記共有鍵生成手段は、生成された前記復号関数値の一部を前記第2復号検証値とし、他の一部を前記復号共有鍵とすることにより、前記第2復号検証値及び前記復号共有鍵を生成する
ことを特徴とする請求項37に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成し、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、
前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値、前記復号共有鍵及び復号ブラインド値を生成する
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、
前記判断手段は、前記第1復号検証値及び前記第2復号検証値に基づく前記判断に代えて、
前記公開鍵を取得する公開鍵取得部と、
取得された前記公開鍵及び生成された前記復号ブラインド値を用いて、生成された前記第1復号検証値又は前記第2復号検証値に前記公開鍵暗号化アルゴリズムを施して再暗号化情報を生成する再暗号化部と、
受信された前記第1暗号化情報及び生成された前記再暗号化情報に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断部とを備える
ことを特徴とする請求項40に記載の共有鍵復元装置。 - 前記判断部は、前記第1暗号化情報と前記再暗号化情報とを比較し、前記第1暗号化情報と前記再暗号化情報とが一致する場合に、前記復号共有鍵を出力すると判断する
ことを特徴とする請求項41に記載の共有鍵復元装置。 - 前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、
前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、
前記公開鍵取得部は、前記公開鍵多項式を取得し、
前記再暗号化部は、前記第2復号検証値から復号検証値多項式を生成し、前記復号ブラインド値から復号ブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記復号検証値多項式を攪乱するために前記復号ブラインド値多項式を用いて、前記復号検証値多項式を暗号化して、多項式としての前記再暗号化情報を生成する
ことを特徴とする請求項41に記載の共有鍵復元装置。 - 前記判断手段は、前記第1復号検証値と前記第2復号検証値とを比較し、一致する場合に、前記復号共有鍵を出力すると判断する
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 前記共有鍵生成装置は、さらに、コンテンツを取得し、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成し、生成された前記暗号化コンテンツを送信し、
前記受信手段は、さらに、前記暗号化コンテンツを受信し、
前記共有鍵復元装置は、さらに、
出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成する復号手段と、
生成された復号コンテンツを出力する出力手段とを備える
ことを特徴とする請求項24に記載の共有鍵復元装置。 - 第3者に知られることなく共有鍵を相手の装置へ伝える共有鍵生成装置で用いられる共有鍵生成方法であって、
シード値を生成するシード値生成ステップと、
生成された前記シード値から検証値及び共有鍵を生成する共有鍵生成ステップと、
生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化ステップと、
生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化ステップと、
生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信ステップと
を含むことを特徴とする共有鍵生成方法。 - 第3者に知られることなく共有鍵を相手の装置へ伝える共有鍵生成装置で用いられる共有鍵生成プログラムであって、
シード値を生成するシード値生成ステップと、
生成された前記シード値から検証値及び共有鍵を生成する共有鍵生成ステップと、
生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化ステップと、
生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化ステップと、
生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信ステップと
を含むことを特徴とする共有鍵生成プログラム。 - 前記共有鍵生成プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項48に記載の共有鍵生成プログラム。 - 第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置で用いられる共有鍵復元方法であって、
前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、
前記共有鍵復元方法は、
前記第1暗号化情報及び前記第2暗号化情報を受信する受信ステップと、
受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号ステップと、
生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号ステップと、
前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成ステップと、
生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断ステップと、
出力すると判断される場合に、生成された前記復号共有鍵を出力する出力ステップと
を含むことを特徴とする共有鍵復元方法。 - 第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置で用いられる共有鍵復元プログラムであって、
前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、
前記共有鍵復元プログラムは、
前記第1暗号化情報及び前記第2暗号化情報を受信する受信ステップと、
受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号ステップと、
生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号ステップと、
前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成ステップと、
生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断ステップと、
出力すると判断される場合に、生成された前記復号共有鍵を出力する出力ステップと
を含むことを特徴とする共有鍵復元プログラム。 - 前記共有鍵復元プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項50に記載の共有鍵復元プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003396217A JP4485175B2 (ja) | 2002-12-03 | 2003-11-26 | 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002351063 | 2002-12-03 | ||
JP2002351062 | 2002-12-03 | ||
JP2003396217A JP4485175B2 (ja) | 2002-12-03 | 2003-11-26 | 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004201292A true JP2004201292A (ja) | 2004-07-15 |
JP4485175B2 JP4485175B2 (ja) | 2010-06-16 |
Family
ID=32776797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003396217A Expired - Fee Related JP4485175B2 (ja) | 2002-12-03 | 2003-11-26 | 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4485175B2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013066151A (ja) * | 2011-08-29 | 2013-04-11 | Sony Corp | 情報処理装置、情報処理方法、及びプログラム |
JP2020537191A (ja) * | 2017-10-17 | 2020-12-17 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 更新可能な共有マトリクスを備える暗号装置 |
JP2021034858A (ja) * | 2019-08-23 | 2021-03-01 | 日本電信電話株式会社 | 鍵交換システム、鍵交換装置、鍵交換方法及びプログラム |
-
2003
- 2003-11-26 JP JP2003396217A patent/JP4485175B2/ja not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013066151A (ja) * | 2011-08-29 | 2013-04-11 | Sony Corp | 情報処理装置、情報処理方法、及びプログラム |
JP2020537191A (ja) * | 2017-10-17 | 2020-12-17 | コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. | 更新可能な共有マトリクスを備える暗号装置 |
JP7208987B2 (ja) | 2017-10-17 | 2023-01-19 | コーニンクレッカ フィリップス エヌ ヴェ | 更新可能な共有マトリクスを備える暗号装置 |
JP2021034858A (ja) * | 2019-08-23 | 2021-03-01 | 日本電信電話株式会社 | 鍵交換システム、鍵交換装置、鍵交換方法及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP4485175B2 (ja) | 2010-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101027199B1 (ko) | 키공유 시스템, 공유키 생성장치 및 공유키 복원장치 | |
KR102040120B1 (ko) | 근사 암호화된 암호문에 대한 연산을 수행하는 장치 및 방법 | |
KR101965628B1 (ko) | 동형 암호화를 수행하는 단말 장치와 그 암호문을 처리하는 서버 장치 및 그 방법들 | |
JP3901909B2 (ja) | 暗号化装置およびプログラムを記録した記録媒体 | |
US7236589B2 (en) | Device for point compression for Jacobians of hyperelliptic curves | |
JP4384056B2 (ja) | 暗号装置、復号装置、鍵生成装置、プログラム及び方法 | |
US7936874B2 (en) | Information transfer system, encryption device, and decryption device | |
JPH09230787A (ja) | 暗号化方法および装置 | |
JPWO2009025220A1 (ja) | 秘密情報分散システム、方法及びプログラム並びに伝送システム | |
WO2007011071A1 (ja) | タイム装置、暗号化装置、復号化装置、暗号化/復号化システム | |
US7603554B2 (en) | Encryption communication system | |
US20020001383A1 (en) | Cryptosystem using multivariable polynomials | |
JP4989293B2 (ja) | コンテンツ配信システム | |
CN1745537B (zh) | 密钥共享系统、共享密钥生成装置及共享密钥复原装置 | |
US7321658B2 (en) | Padding application method ensuring security of cryptosystem and encryptor/decryptor | |
JP4485175B2 (ja) | 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 | |
US20020116612A1 (en) | Cryptocommunication system, transmission apparatus, and reception apparatus | |
JP2004201293A (ja) | 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 | |
JP6275536B2 (ja) | 限定受信システム、ならびに、コンテンツ配信装置、コンテンツ受信装置およびそれらのプログラム | |
JP2012227652A (ja) | 復号結果検証装置、方法、システム及びプログラム | |
JP2004135250A (ja) | 情報処理システム及び情報処理方法 | |
JP2003273863A (ja) | データ受配信システムおよび方法 | |
JP2004147270A (ja) | 情報処理システム及び情報処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060921 |
|
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: 20100223 |
|
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: 20100324 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4485175 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130402 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130402 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140402 Year of fee payment: 4 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees | ||
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |