JP4485175B2 - 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 - Google Patents

鍵共有システム、共有鍵生成装置及び共有鍵復元装置 Download PDF

Info

Publication number
JP4485175B2
JP4485175B2 JP2003396217A JP2003396217A JP4485175B2 JP 4485175 B2 JP4485175 B2 JP 4485175B2 JP 2003396217 A JP2003396217 A JP 2003396217A JP 2003396217 A JP2003396217 A JP 2003396217A JP 4485175 B2 JP4485175 B2 JP 4485175B2
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.)
Expired - Fee Related
Application number
JP2003396217A
Other languages
English (en)
Other versions
JP2004201292A (ja
Inventor
将人 山道
裕一 布田
基司 大森
誠 館林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2003396217A priority Critical patent/JP4485175B2/ja
Publication of JP2004201292A publication Critical patent/JP2004201292A/ja
Application granted granted Critical
Publication of JP4485175B2 publication Critical patent/JP4485175B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、情報セキュリティ技術としての暗号技術に関し、特に、第三者に知られることなく、鍵を配送する技術に関する。
従来より、送信装置から受信装置へ情報を秘密に送信するために、公開鍵暗号方式が用いられる。
公開鍵暗号方式では、送信装置は、通信内容を受信装置の公開鍵を用いて暗号化して送信し、受信装置は、暗号化された通信内容を受信し、受信した通信内容を自身の秘密鍵を用いて復号して元の通信内容を得る。(例えば、非特許文献1参照)。
1996年、高速処理が可能な公開鍵暗号として、NTRU暗号が提案された(例えば、非特許文献2参照)。NTRU暗号では、高速に演算可能な多項式演算を用いて暗号化と復号化とを行うので、べき乗演算を行うRSA暗号や楕円曲線上の点のスカラ倍演算を行う楕円曲線暗号と比較すると、これら従来の公開鍵暗号よりもソフトウェアにより高速に処理することが可能である。
しかし、このNTRU暗号では、公開鍵を用いて平文を暗号化して暗号文を生成し、正規の秘密鍵を用いて暗号文を復号して復号文を生成する際に、復号文が元の平文と異なる場合が発生する。このことを復号エラーが発生するという。なお、復号エラーを回避する方法として、平文に付加情報を付加して暗号化し、平文のハッシュ関数値と共に送信する方法が開示されている(例えば、特許文献1参照)。
一方で、近年、公開鍵暗号の新しい概念として、鍵カプセル化メカニズム(Key Encapsulation Mechanisms)と呼ばれる方式が提案されている(例えば、非特許文献3参照)。この鍵カプセル化メカニズムは、公開鍵暗号を用いて送信装置と受信装置との間で共有鍵を配送するアルゴリズムであり、送信装置は、暗号化アルゴリズムEに受信者の公開鍵pkを入力して暗号文Cと共有鍵Kを生成し、暗号文Cを受信装置に伝送する。次に、受信装置は、復号アルゴリズムDに、秘密鍵skと暗号文Cを入力して送信装置と同じ共有鍵Kを求める。
このようにして鍵カプセル化メカニズムを用いて共有鍵Kを送信装置と受信装置とで共有した後に、送信装置は、受信装置ヘ送信すべき平文を、共有鍵Kを用いて共通鍵暗号方式により暗号化して暗号文を生成し、生成した暗号文を受信装置へ送信する。受信装置は、暗号文を受信し、受信した暗号文を共有鍵Kを用いて前記共通鍵暗号方式により復号して復号文を生成する。
鍵カプセル化メカニズムでは、送信者から受信者に一方的に情報の送信が行われていながら、送信者が作為的に共有鍵を作成できず、送信者による不正が抑制されている点が従来にない特徴である。
このような鍵カプセル化メカニズムとして、PSEC−KEMと呼ばれるアルゴリズムが開示されている(例えば非特許文献3、非特許文献4参照)。以下に、非特許文献4に記載されているPSEC−KEMアルゴリズムについて説明する。
(1)PSEC−KEMのシステムパラメータ
PSEC−KEMは、以下のシステムパラメータを持つ。
・楕円曲線:E
・楕円曲線上の位数nの点:P
・ハッシュ関数:G、H
なお、楕円曲線、位数及びハッシュ関数については、非特許文献1に詳細が記述されているので、ここでは説明を省略する。
(2)PSEC−KEMの公開鍵と秘密鍵
・ランダムにZnの要素xを選び、W=x*Pを生成する。
ここで、Znは、{0,1,...,n−1}からなる集合であり、x*Pは、楕円曲線上の点Pをx個、加算することにより得られる楕円曲線上の点を表す。なお、楕円曲線上の点の加算方法については、非特許文献1に記述されている。
・公開鍵pkを(E,P,W,n)とし、秘密鍵skをxとする。
(3)PSEC−KEMの暗号化
暗号化時には、以下に述べる暗号化アルゴリズムKemEに公開鍵pkを入力して共有鍵Kと暗号文Cを出力する。以下に暗号化アルゴリズムKemEについて説明する。
・ハッシュ関数Hの出力ビット長と同じ長さのsをランダムに生成する。
・G(s)を生成し、G(s)を分割して、aとKとを生成する。aは、G(s)の上位複数ビットからなるビット列であり、Kは、残りのビットからなるビット列である。ここで、G(s)=a||Kである。「||」は、ビット結合を表す演算子である。つまり、aとKとを結合すると、G(s)が得られる。
・R=a*P、Q=a*Wを生成する。
・v=s xor H(R||Q)を生成する。ここで、xorは排他的論理和演算を表す。
・共有鍵Kと暗号文C=(R,v)を出力する。
(4)PSEC−KEMの復号化
復号化時には、以下に述べる復号アルゴリズムKemDに暗号文C=(R,v)と公開鍵pkと秘密鍵skを入力して共有鍵Kを出力する。以下に復号アルゴリズムKemDについて説明する。
・Q=x*Rを生成する。
・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を受信装置へ送信する。
次に、受信装置は、送信装置から暗号文Cを受信し、受信した暗号文Cと自身が有する公開鍵pk・秘密鍵skを前述の復号アルゴリズムKemDに入力して、送信装置が導出したものと等しい共有鍵Kを導出する。
以下に、さらに詳細に説明する。
今、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を求めることができる。
従って、暗号化アルゴリズムKemEと復号アルゴリズムKemDは、ハッシュ関数Gに同じsの値を入力することができ、同じ共有鍵Kを導出することができる。この結果、秘密鍵skを有する受信装置は、送信装置が導出したものと同じ共有鍵Kを導出できることになる。
一方で、秘密鍵skを知らない他の受信装置は、たとえ公開鍵pkを取得して暗号文Cを受信したとしても、秘密鍵sk(=x)を知らないのでR=a*PからQ=a*W(=(ax)*P)を計算できず、送信装置が導出したものと同じ共有鍵Kを導出できない。
なぜならば、秘密鍵skを知らない他の受信装置は、公開鍵pkしか利用できないので、上記Qの計算には秘密鍵sk(=x)の代わりに公開鍵pkのW=x*Pを利用することになるが、一般に、a*PとW=x*Pから、Q=a*W(=(ax)*P)を求めることは、楕円曲線上のDiffie−Hellman問題と呼ばれ、aやxの値を知らない限り計算困難だからである(例えば、非特許文献5参照)。
すなわち、PSEC−KEMアルゴリズムは、秘密鍵を用いずにa*Pからa*Wを計算することが困難なDiffie−Hellman問題を用いて、最終的に共有鍵Kを導出することにより、秘密鍵を知らなければその共有鍵Kを導出できないようにしている。
以上により、送信装置と受信装置とは、共有鍵Kを秘密に共有することができ、この後、秘密鍵暗号を用いて、送信装置から受信装置へ通信される通信内容データを、共有鍵Kを用いて共通鍵暗号で暗号化する。
特開2002−252611号公報 岡本龍明、山本博資、「現代暗号」、シリーズ/情報科学の数学、産業図書、1997. Jeffery Hoffstein, Jill Pipher, and Joseph H. Silverman, "NTRU: A ring based public key cryptosystem", Lecture Notes in Computer Science, 1423, pp.267-288, Springer-Verlag, 1998. Victor Shoup, "A proposal for an ISO standard for public key encryption (version 2.1)"、[online]、2001年12月20日、[2002年9月29日検索]、インターネット<URL: http://shoup.net/papers/iso-2_1.pdf> Tatsuaki Okamoto, "Generic conversions for constructing IND-CCA2 public-key encryption in the random oracle model"、[online]、The 5th Workshop on Elliptic Curve Cryptography(ECC 2001)、2001年10月30日、[2002年9月29日検索]、インターネット<URL: http://www.cacr.math.uwaterloo.ca/conferences/2001/ecc/okamoto.ppt> Neal Koblitz, "Algebraic Aspects of Cryptography", Algorithms and Computation in Mathematics Vol.3, pp.132-133, Springer-Verlag, 1998.
上述したように、従来の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暗号は、鍵カプセル化メカニズムであるPSEC−KEMアルゴリズムを適用して共有鍵の配送を行うことができず、従って、送信装置と受信装置とは、その共有鍵を用いた送信装置から受信装置への暗号化通信ができないという問題点がある。
そこで、本発明は上記の問題点を解決するために、Diffie−Hellman問題を利用しない暗号化方式を用いる場合であっても、共有鍵生成装置から共有鍵復元装置へ第三者に知られることなく共有鍵を配送し、この際に、共有鍵生成装置と共有鍵復元装置との間で異なる共有鍵が導出されるのを防止できる鍵共有システム、共有鍵生成装置、共有鍵復元装置、共有鍵生成方法、共有鍵復元方法、共有鍵生成プログラム及び共有鍵復元プログラムを提供することを目的とする。
上記目的を達成するために、本発明は、第3者に知られることなく共有鍵を生成する共有鍵生成装置及び共有鍵復元装置から構成される鍵共有システムであって、前記共有鍵生成装置は、シード値を生成するシード値生成手段と、生成された前記シード値から検証値及び共有鍵を生成する第1共有鍵生成手段と、生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化手段と、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化手段と、生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信手段とを備え、前記共有鍵復元装置は、前記第1暗号化情報及び前記第2暗号化情報を受信する受信手段と、受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号手段と、生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号手段と、前記第1共有鍵生成手段と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する第2共有鍵生成手段と、生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断手段と、出力すると判断される場合に、生成された前記復号共有鍵を出力する出力手段とを備える。
上記の構成によると、前記共有鍵生成装置は、シード値から検証値及び共有鍵を生成し、前記検証値を暗号化して第1暗号化情報を生成し、前記検証値に基づいて、前記シード値を暗号化して第2暗号化情報を生成し、前記共有鍵復元装置は、前記第1暗号化情報を復号して第1復号検証値を生成し、前記第1復号検証値に基づいて、前記第2暗号化情報を復号して、復号シード値を生成し、前記共有鍵生成装置と同様にして、前記復号シード値から第2復号検証値及び復号共有鍵を生成し、生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断するので、共有鍵生成装置から共有鍵復元装置へ第三者に知られることなく共有鍵を配送できると共に、この際に、共有鍵生成装置と共有鍵復元装置との間で異なる共有鍵が導出されるのを防止できるという効果がある。
ここで、前記共有鍵生成装置は、さらに、コンテンツを取得する取得手段と、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成する暗号化手段とを備え、前記送信手段は、さらに、生成された前記暗号化コンテンツを送信し、前記受信手段は、さらに、前記暗号化コンテンツを受信し、前記共有鍵復元装置は、さらに、出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成する復号手段と、生成された復号コンテンツを出力する出力手段とを備える。
この構成によると、共有鍵生成装置は、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成し、前記共有鍵復元装置は、出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成するので、第三者に知られることなく、共有鍵生成装置から共有鍵復元装置へコンテンツを送信することができるという効果がある。
また、本発明は、第3者に知られることなく共有鍵を相手の装置へ伝える共有鍵生成装置であって、シード値を生成するシード値生成手段と、生成された前記シード値から検証値及び共有鍵を生成する共有鍵生成手段と、生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化手段と、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化手段と、生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信手段とを備える。
この構成によると、共有鍵生成装置は、検証値を暗号化して第1暗号化情報を生成し、前記検証値に基づいて、シード値を暗号化して第2暗号化情報を生成するので、二重の暗号化により、より安全性を高めることができるという効果がある。不正な第三者は、第1及び第2暗号化手段による2種の暗号化を知っていなければ、共有鍵を得ることはできない。
ここで、前記シード値生成手段は、乱数を生成し、生成した乱数を前記シード値とすることにより、前記シード値を生成する。
この構成によると、共有鍵生成装置は、乱数を生成し、生成した乱数を前記シード値とするので、シード値を生成し、検証値及び共有鍵を生成し、第1暗号化情報及び第2暗号化情報を生成し、第1暗号化情報及び第2暗号化情報を送信した後、次に、シード値を生成する際に、最初に生成されたシード値とは異なるように、後のシード値を生成することができる。従って、共有鍵生成装置により送信される第1暗号化情報及び第2暗号化情報は、毎回異なるものとなる。このため、不正な第三者が、共有鍵生成装置から相手の装置へ送信される第1暗号化情報及び第2暗号化情報をその都度、盗聴し、記録したとしても、記録している各第1暗号化情報及び第2暗号化情報から元のシード値を類推することは困難である。
ここで、前記共有鍵生成手段は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値及び前記共有鍵を生成する。
この構成によると、前記シード値に一方向性関数を施して、前記検証値を生成するので、前記検証値を第三者が知り得たとしても、前記検証値から前記シード値を求めることは困難である。このため、前記検証値からシード値を求め、さらに、共有鍵を求めることは事実上不可能である。
ここで、前記共有鍵生成手段は、前記シード値に、前記一方向性関数として、ハッシュ関数を施して前記関数値を生成する。
この構成によると、前記一方向性関数は、ハッシュ関数であるので、その演算アルゴリズムがよく知られており、適用が容易である。
ここで、前記共有鍵生成手段は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成する。
この構成によると、前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とするので、前記検証値及び前記共有鍵の生成が容易である。
ここで、前記共有鍵生成手段は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成する。
この構成によると、前記シード値に一方向性関数を施して、前記検証値を生成するので、前記検証値を第三者が知り得たとしても、前記検証値から前記シード値を求めることは困難である。このため、前記検証値からシード値を求め、さらに、共有鍵を求めることは事実上不可能である。
ここで、前記第1暗号化手段は、公開鍵を取得する公開鍵取得部と、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成する公開鍵暗号化部と含む。
また、前記第1暗号化手段は、公開鍵を取得する公開鍵取得部と、取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成する公開鍵暗号化部と含む。
この構成によると、第1暗号化手段は、公開鍵暗号方式を用いるので、共有鍵暗号方式を用いる場合と比較すると、鍵の管理が容易である。
ここで、前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、前記公開鍵取得部は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記公開鍵暗号化部は、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成する。
また、前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、前記公開鍵取得部は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記公開鍵暗号化部は、前記検証値から検証値多項式を生成し、ブラインド値を生成し、生成した前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成する。
この構成によると、NTRU暗号を採用することができる。
ここで、前記第2暗号化手段は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成する。
この構成によると、前記検証値に一方向性関数を施して得られた関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成するので、不正な第三者は、少なくとも、前記一方向性関数及び前記暗号化アルゴリズムを知っていなければ、前記第2暗号化情報から前記シード値を得ることはできない。
ここで、前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成する。
この構成によると、前記暗号化アルゴリズムは、排他的論理和であるので、演算が容易である。また、逆演算が可能である。
ここで、前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして共通鍵暗号化アルゴリズムを施すことにより、前記第2暗号化情報を生成する。
この構成によると、前記暗号化アルゴリズムは、共通鍵暗号化アルゴリズムであるので、よく知られており、適用が容易である。また、逆演算が可能である。
ここで、前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして加算を施すことにより、前記第2暗号化情報を生成する。
この構成によると、前記暗号化アルゴリズムは、加算であるので、演算が容易である。また、逆演算が可能である。
ここで、前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして乗算を施すことにより、前記第2暗号化情報を生成する。
この構成によると、前記暗号化アルゴリズムは、乗算であるので、演算が容易である。また、逆演算が可能である。
ここで、前記第2暗号化手段は、前記検証値に、前記一方向性関数としてハッシュ関数を施して前記関数値を生成する。
この構成によると、前記一方向性関数は、ハッシュ関数であるので、その演算アルゴリズムがよく知られており、適用が容易である。
ここで、前記第2暗号化手段は、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施して第2暗号化情報を生成する。
この構成によると、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施すので、演算が単純であり、適用が容易である。
ここで、前記第2暗号化手段は、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化する。
この構成によると、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化するので、不正な第三者は、前記検証値及び前記第1暗号化情報を知らなければ、シード値を得ることができず、安全性が高まる。
ここで、前記第2暗号化手段は、前記検証値及び前記第1暗号化情報に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成する。
この構成によると、一方向性関数と暗号化アルゴリズムとを用いるので、不正な第三者は、第1暗号化情報及び第2暗号化情報を知っていても、少なくとも一方向性関数と暗号化アルゴリズムとを知らなければ、シード値を得ることができず、安全性が高まる。
ここで、前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成する。
この構成によると、前記暗号化アルゴリズムは、排他的論理和であるので、演算が容易である。また、逆演算が可能である。
ここで、前記共有鍵生成装置は、さらに、コンテンツを取得する取得手段と、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成する暗号化手段とを備え、前記送信手段は、さらに、生成された前記暗号化コンテンツを送信する。
この構成によると、共有鍵生成装置は、第三者に知られることなく、コンテンツを相手の装置へ送信することができる。
ここで、第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置であって、前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、前記共有鍵復元装置は、前記第1暗号化情報及び前記第2暗号化情報を受信する受信手段と、受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号手段と、生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号手段と、前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成手段と、生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断手段と、出力すると判断される場合に、生成された前記復号共有鍵を出力する出力手段とを備える。
この構成によると、共有鍵生成装置から第三者に知られることなく共有鍵を受信できると共に、この際に、共有鍵生成装置と共有鍵復元装置との間で異なる共有鍵が導出されるのを防止できるという効果がある。
ここで、前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、前記第1復号手段は、前記公開鍵に対応する秘密鍵を取得する秘密鍵取得部と、取得された前記秘密鍵を用いて、受信した前記第1暗号化情報に、前記公開鍵暗号化アルゴリズムに対応する公開鍵復号アルゴリズムを施して前記第1復号検証値を生成する公開鍵復号部と含む。
この構成によると、第1復号手段は、公開鍵暗号方式を用いるので、共有鍵暗号方式を用いる場合と比較すると、鍵の管理が容易である。
ここで、前記公開鍵暗号化アルゴリズム及び前記公開鍵復号アルゴリズムは、NTRU暗号方式によるものであり、前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、ブラインド値を生成し、生成した前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、前記受信手段は、多項式としての前記第1暗号化情報を受信し、前記秘密鍵取得部は、前記秘密鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された秘密鍵多項式を取得し、前記公開鍵復号部は、NTRU暗号方式の前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記秘密鍵多項式を鍵として用いて、多項式としての前記第1暗号化情報を復号して、復号検証値多項式を生成し、生成した前記復号検証値多項式から前記第1復号検証値を生成する。
この構成によると、NTRU暗号を採用することができる。
ここで、前記共有鍵生成装置は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、前記第2復号手段は、生成された前記第1復号検証値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、受信された前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して前記復号シード値を生成する。
この構成によると、第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暗号化情報を用いて、前記シード値を暗号化し、前記第2復号手段は、生成された前記第1復号検証値及び受信された前記第1暗号化情報を用いて、前記第2暗号化情報を復号して前記復号シード値を生成する。
この構成によると、第1復号検証値及び第1暗号化情報を用いて、第2暗号化情報を復号するので、不正な第三者は、前記第1復号検証値及び前記第1暗号化情報を知らなければ、シード値を得ることができず、安全性が高まる。
ここで、前記共有鍵生成装置は、前記検証値及び前記第1暗号化情報に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、前記第2復号手段は、前記第1復号検証値及び前記第1暗号化情報に前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して、前記復号シード値を生成する。
この構成によると、第2復号手段は、一方向性関数及び復号アルゴリズムの2段階による演算方法を採用しているので、不正な第三者は、第1暗号化情報及び第2暗号化情報を知っていても、少なくとも一方向性関数と復号アルゴリズムとを知らなければ、シード値を得ることができず、安全性が高まる。
ここで、前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成し、前記第2復号手段は、前記復号関数値及び前記第2暗号化情報に、前記復号アルゴリズムとして、排他的論理和を施すことにより、前記復号シード値を生成する。
この構成によると、前記復号アルゴリズムは、排他的論理和であるので、演算が容易である。また、前記暗号化アルゴリズムの逆演算である。
ここで、前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値及び前記共有鍵を生成し、前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値及び前記復号共有鍵を生成する。
この構成によると、前記復号シード値に一方向性関数を施して、前記第2復号検証値を生成するので、前記第2復号検証値を第三者が知り得たとしても、前記第2復号検証値から前記シード値を求めることは困難である。このため、前記第2復号検証値からシード値を求め、さらに、共有鍵を求めることは事実上不可能である。
ここで、前記共有鍵生成装置は、前記シード値に、前記一方向性関数として、ハッシュ関数を施して前記関数値を生成し、前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数として、前記ハッシュ関数を施して前記復号関数値を生成する。
この構成によると、前記一方向性関数は、ハッシュ関数であるので、その演算アルゴリズムがよく知られており、適用が容易である。
ここで、前記共有鍵生成装置は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成し、前記共有鍵生成手段は、生成された前記復号関数値の一部を前記第2復号検証値とし、他の一部を前記復号共有鍵とすることにより、前記第2復号検証値及び前記復号共有鍵を生成する。
この構成によると、前記復号関数値の一部を前記第2復号検証値とし、他の一部を前記復号共有鍵とするので、前記第2復号検証値及び前記復号共有鍵の生成が容易である。
ここで、前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成し、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値、前記復号共有鍵及び復号ブラインド値を生成する。
この構成によると、前記復号シード値に一方向性関数を施して、前記第2復号検証値を生成するので、前記第2復号検証値を第三者が知り得たとしても、前記第2復号検証値から前記シード値を求めることは困難である。このため、前記第2復号検証値からシード値を求め、さらに、共有鍵を求めることは事実上不可能である。
ここで、前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、前記判断手段は、前記第1復号検証値及び前記第2復号検証値に基づく前記判断に代えて、前記公開鍵を取得する公開鍵取得部と、取得された前記公開鍵及び生成された前記復号ブラインド値を用いて、生成された前記第1復号検証値又は前記第2復号検証値に前記公開鍵暗号化アルゴリズムを施して再暗号化情報を生成する再暗号化部と、受信された前記第1暗号化情報及び生成された前記再暗号化情報に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断部とを備える。
この構成によると、受信された前記第1暗号化情報及び生成された前記再暗号化情報に基づいて、生成された前記復号共有鍵を出力するか否かを判断するので、共有鍵生成装置から第三者に知られることなく共有鍵を受信できると共に、この際に、共有鍵生成装置と共有鍵復元装置との間で異なる共有鍵が導出されるのを防止できるという効果がある。
ここで、前記判断部は、前記第1暗号化情報と前記再暗号化情報とを比較し、前記第1暗号化情報と前記再暗号化情報とが一致する場合に、前記復号共有鍵を出力すると判断する。また、前記判断手段は、前記第1復号検証値と前記第2復号検証値とを比較し、一致する場合に、前記復号共有鍵を出力すると判断する。
この構成によると、第1暗号化情報と再暗号化情報とが一致する場合に、復号共有鍵を出力するので、復号共有鍵を出力するか否かの判断が確実に行える。
ここで、前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、前記公開鍵取得部は、前記公開鍵多項式を取得し、前記再暗号化部は、前記第2復号検証値から復号検証値多項式を生成し、前記復号ブラインド値から復号ブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記復号検証値多項式を攪乱するために前記復号ブラインド値多項式を用いて、前記復号検証値多項式を暗号化して、多項式としての前記再暗号化情報を生成する。
この構成によると、NTRU暗号を採用することができる。
ここで、前記共有鍵生成装置は、さらに、コンテンツを取得し、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成し、生成された前記暗号化コンテンツを送信し、前記受信手段は、さらに、前記暗号化コンテンツを受信し、前記共有鍵復元装置は、さらに、出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成する復号手段と、生成された復号コンテンツを出力する出力手段とを備える。
この構成によると、共有鍵生成装置は、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成し、前記共有鍵復元装置は、出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成するので、第三者に知られることなく、共有鍵生成装置から共有鍵復元装置へコンテンツを送信することができるという効果がある。
1.実施の形態1
本発明に係る1個の実施の形態としてのコンテンツ配信システム10について説明する。コンテンツ配信システム10は、NTRU暗号を用いて鍵カプセル化メカニズムによる鍵配送を行って暗号化通信を行う暗号通信システムである。
1.1 NTRU暗号方式
コンテンツ配信システム10において用いるNTRU暗号方式について簡単に説明する。NTRU暗号方式は、多項式の演算を用いて暗号化と復号化とを行う公開鍵暗号方式である。
なお、NTRU暗号方式及びNTRU暗号方式における公開鍵と秘密鍵との生成方法については、非特許文献2に詳しく述べられている。
(1)NTRU暗号方式のシステムパラメータ
NTRU暗号方式においては、整数のシステムパラメータ、N、p、qが存在し、後述する暗号装置及び復号装置は、これらのシステムパラメータを有している。
上記文献には、システムパラメータの例として、(N,p,q)=(107,3,64)、(N,p,q)=(167,3,128)、(N,p,q)=(503,3,256)の3つの例が挙げられている。
以降、本実施の形態では、システムパラメータN=167として、説明を行う。
(2)NTRU暗号方式の多項式演算
NTRU暗号方式は、上述したように、多項式の演算により暗号化と復号化を行う公開鍵暗号方式である。
NTRU暗号方式で扱う多項式は、上記システムパラメータNに対し、N−1次元以下の多項式である。例えば、N=5のとき、X^4+X^3+1等の多項式である。ここで、「X^a」はXのa乗を意味することとする。
また、暗号化時又は復号化時に用いる公開鍵h、秘密鍵f、平文m、乱数r、暗号文cはいずれも、N−1次元以下の多項式として表現される(以降、それぞれを公開鍵多項式h、秘密鍵多項式f、平文多項式m、乱数多項式r、暗号文多項式cと呼ぶ)。
多項式演算において、上記システムパラメータNに対し、関係式X^N=1を用いて、演算結果が常にN−1次元以下の多項式になるように演算される。
例えば、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
となる。
このように、多項式演算において、常にN−1次元以下の多項式になるように演算される。
(3)NTRU暗号方式の暗号化
後述する暗号装置は、次に示すようにNTRU暗号方式の暗号化を行う。
暗号化時には、以下に述べる乱数多項式rと公開鍵多項式hとを用いて、平文多項式mに多項式演算である暗号化アルゴリズムEを施して、
暗号文多項式c=E(m,r,h)を生成する。
ここで、E(m,r,h)は、NTRU暗号方式の暗号化アルゴリズムEに、平文多項式m、乱数多項式r及び公開鍵多項式hを入力して得られる多項式演算の結果である。暗号化アルゴリズムEについては非特許文献2に詳しく述べられており、ここでは説明を省略する。
なお、NTRU暗号方式では、乱数多項式rを生成するためのパラメータdが予め決められている。乱数多項式rは、乱数多項式rを構成する各項のうち、d個の項についてはその係数が「1」となり、他のd個の項については係数が「−1」となり、残りの項については係数は「0」となるように、選ばれる。
すなわち、乱数多項式rは、N−1次元以下の多項式であり、0次元(定数項)からN−1次元までのN項について、N個の係数が存在する。乱数多項式rは、このN個の係数のうち、d個の係数が「1」であり、かつd個の係数が「−1」であり、かつ(N−2d)個の係数は「0」となるように、選ばれる。
非特許文献2によれば、パラメータN=167の場合、d=18である。すなわち、18個の係数が「1」であり、かつ18個の係数が「−1」であり、131(=167−36)個の係数が「0」となるように、乱数多項式rが選ばれる。
(4)NTRU暗号方式の復号化
後述する復号装置は、次に示すようにNTRU暗号方式の復号化を行う。
復号化時には、秘密鍵多項式fを用いて、暗号文多項式cに多項式演算である復号アルゴリズムDを施して、復号文多項式m'=D(c,f)を生成する。
ここで、D(c,f)は、NTRU暗号方式の復号アルゴリズムDに、暗号文多項式c、及び秘密鍵多項式fを入力して得られる多項式演算の結果である。復号アルゴリズムDについては非特許文献2に詳しく述べられており、ここでは説明を省略する。
(5)NTRU暗号方式の復号エラー
ところで、この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が装着される。
コンテンツサーバ装置140は、映像と音声から構成される映画などのコンテンツを専用回線20を介して暗号装置110へ送信する。
暗号装置110と復号装置120とは、それぞれ同一の共有鍵K及び共有鍵K’を生成する。次に、暗号装置110は、コンテンツサーバ装置140から受け取ったコンテンツを共有鍵Kを用いて暗号化して暗号化コンテンツを生成し、生成した暗号化コンテンツを送信し、復号装置120は、暗号化コンテンツを受信し、受信した暗号化コンテンツを復号して再生コンテンツを生成し、再生装置150は、再生コンテンツから映像信号及び音声信号を生成し、モニタ155は、映像を表示し、音声を出力する。
1.3 コンテンツサーバ装置140の構成
コンテンツサーバ装置140は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、通信ユニット、キーボード、マウスなどから構成されるコンピュータシステムである(図示していない)。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、コンテンツサーバ装置140は、その一部の機能を達成する。
コンテンツサーバ装置140は、前記コンテンツを予め記憶しており、前記コンテンツは、複数の部分コンテンツmi(1≦i≦n)から構成されている。コンテンツサーバ装置140は、暗号装置110の要求に応じて、部分コンテンツmiを読み出し、読み出した部分コンテンツmiを、専用回線20を介して暗号装置110へ送信する。
1.4 メモリカード160及びメモリカード170の構成
メモリカード160は、記憶媒体としてフラッシュメモリを採用しているカード型の記憶装置であり、予め公開鍵多項式hを記憶している。
また、メモリカード170は、メモリカード160と同様のカード型の記憶装置であり、予め秘密鍵多項式f及び公開鍵多項式hを記憶している。
ここで、秘密鍵多項式fと公開鍵多項式hとは、NTRU暗号方式により生成されたものであり、それぞれ対応している。
1.5 暗号装置110の構成
暗号装置110は、図2に示すように、公開鍵入力部111、乱数生成部112、第1関数部113、暗号化部114、第1送信部117、共通鍵暗号部118及び第2送信部119から構成されている。
暗号装置110は、具体的には、マイクロプロセッサ、ROM、RAM、通信ユニットなどから構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、暗号装置110は、その機能を達成する。
(1)公開鍵入力部111
公開鍵入力部111は、メモリカード160から復号装置120の公開鍵多項式hを読み出し、読み出した公開鍵多項式hを暗号化部114へ出力する。
(2)乱数生成部112
乱数生成部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へ出力する。
(4)暗号化部114
暗号化部114は、公開鍵入力部111から公開鍵多項式hを受け取り、乱数生成部112から乱数sを受け取り、第1関数部113から乱数値uを受け取る。次に、以下のようにして、NTRU暗号により、公開鍵多項式hと乱数値uとを用いて乱数sの第1暗号文c1を生成する。ここで、乱数値uは、ブラインド値であり、暗号化の対象である乱数sを不明瞭にするために用いられる。
暗号化部114は、NTRU暗号のパラメータdに対し、乱数多項式rのd個の項の係数が「1」であり、d個の項の係数が「−1」であり、残りの項の係数が「0」である乱数多項式rを乱数値uから一意に求まるように生成する。
例えば、暗号化部114は、乱数値uを擬似乱数系列の初期値(乱数シード)として設定し、{0,1,...,N−1}から重複しないように2d個の擬似乱数を生成し、最初のd個の疑似乱数によりそれぞれ示されるd個の次元の項の係数を「1」とし、残りのd個の擬似乱数によりそれぞれ示されるd個の次元の項の係数を「−1」とし、他の次元の項の係数は「0」とする。
次に、暗号化部114は、乱数sがNTRU暗号の暗号アルゴリズムEに適用できるように、乱数sを2進数表現した場合のN桁のビット列の各桁の値が、乱数多項式spの各項の係数に対応するように、乱数多項式spを構成する。例えば、乱数sの下位bビット目の値を、項X^bの係数とする。具体的には、s=10010(ビット表現)の場合、乱数多項式sp=X^5+X^2を生成する。
次に、暗号化部114は、公開鍵多項式hを使用して、乱数多項式rを用いて乱数多項式spに前記暗号アルゴリズムEを施して、
第1暗号文c1=暗号文多項式E(sp,r,h)を生成する。
次に、暗号化部114は、生成した第1暗号文c1を第1送信部117へ出力する。
なお、図2において、暗号装置110の各構成部を示す各ブロックは、接続線により他のブロックと接続されている。ここで、各接続線は、信号や情報が伝達される経路を示している。また、暗号化部114を示すブロックに接続している複数の接続線のうち、接続線上に鍵マークが付されているものは、暗号化部114へ鍵としての情報が伝達される経路を示している。共通鍵暗号部118を示すブロックについても同様である。また、他の図面についても同様である。
(5)第1送信部117
第1送信部117は、暗号化部114から第1暗号文c1を受け取り、第1暗号文c1をインターネット130を介して復号装置120へ送信する。
(6)共通鍵暗号部118
共通鍵暗号部118は、例えばDES暗号方式のような共通鍵暗号アルゴリズムSymを有している。
一般的に、共通鍵暗号では、暗号側の装置において、暗号鍵Kを用いて、平文mに共通鍵暗号アルゴリズムSymを施して、暗号文c=Sym(m,K)を生成し、復号側の装置において、暗号鍵Kを用いて、暗号文cに共通鍵暗号アルゴリズムSymを施して、復号文m'=Sym(c,K)を生成する。ここで、暗号文生成時に用いる暗号鍵Kと復号文生成時に用いる暗号鍵Kが同一であれば、m'=mとなる。なお、共通鍵暗号及びDES暗号方式については、非特許文献1に詳しく述べられているため、ここでの詳細な説明は省略する。
共通鍵暗号部118は、コンテンツサーバ装置140から複数の平文(部分コンテンツ)mi(1≦i≦n)を受け取り、第1関数部113から共有鍵Kを受け取り、受け取った共有鍵Kを使用して平文mi(1≦i≦n)に共通鍵暗号アルゴリズムSymを施して、共通鍵暗号文Ci=Sym(mi,K)(1≦i≦n)を生成する。
次に、共通鍵暗号部118は、共通鍵暗号文Ci(1≦i≦n)を第2送信部119へ出力する。
(7)第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から構成される。
復号装置120は、暗号装置110と同様のコンピュータシステムである。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、復号装置120は、その機能を達成する。
(1)秘密鍵入力部121
秘密鍵入力部121は、メモリカード170から、復号装置120の秘密鍵多項式fと公開鍵多項式hとを読み出し、読み出した秘密鍵多項式fを復号化部123へ出力し、読み出した公開鍵多項式hを比較部127へ出力する。
(2)第1受信部122
第1受信部122は、インターネット130を介して暗号装置110から第1暗号文c1を受け取り、受け取った第1暗号文c1を復号化部123へ出力する。
(3)復号化部123
復号化部123は、秘密鍵入力部121から秘密鍵多項式fを受け取り、第1受信部122から第1暗号文c1を受け取り、次に示すようにして、NTRU暗号により、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号乱数s’を生成する。
復号化部123は、秘密鍵多項式fを使用して、第1暗号文c1に前記復号アルゴリズムDを施して、復号乱数多項式sp’=D(c1,f)を生成する。次に、復号乱数多項式sp’は、NTRU暗号の復号文であり多項式で表現されているので、復号乱数多項式sp’の各項の係数が、復号乱数s’を2進数表現した場合のN桁のビット列の各値に対応するように、復号乱数s’を生成する。例えば、復号乱数多項式sp’のb次元の項X^bの係数は、復号乱数s’の下位bビット目の値となる。
具体的には、復号乱数多項式sp’=X^5+X^2の場合、復号乱数s’=10010(ビット表現)を生成する。
次に、復号化部123は、受け取った第1暗号文c1と生成した復号乱数s’とを比較部127へ出力し、生成した復号乱数s’を第2関数部126へ出力する。
(4)第2関数部126
第2関数部126は、第1関数部113が有している関数と同じ関数Gのアルゴリズムを有している。
第2関数部126は、復号化部123から復号乱数s’を受け取り、第1関数部113と同様にして、復号乱数s’の関数値G(s’)を生成し、次に、関数値G(s’)から乱数値u’と共有鍵K’とを生成し、生成した乱数値u’と共有鍵K’とを比較部127へ出力する。
(5)比較部127
比較部127は、図3に示すように、暗号化部127xと比較演算部127yとから構成されている。
暗号化部127xは、秘密鍵入力部121から公開鍵多項式hを受け取り、復号化部123から復号乱数s’を受け取り、第2関数部126から乱数値u’を受け取る。次に、暗号化部114と同様にして、公開鍵多項式hと乱数値u’とを用いて、復号乱数s’を暗号化して第1再暗号文c1’を生成し、生成した第1再暗号文c1’を比較演算部127yへ出力する。
比較演算部127yは、復号化部123から第1暗号文c1を受け取り、第2関数部126から共有鍵K’を受け取り、暗号化部127xから第1再暗号文c1’を受け取る。次に、第1暗号文c1と第1再暗号文c1’とを比較して、一致しているか否かを判断し、一致していると判断する場合に、受け取った共有鍵K’を共通鍵復号部128へ出力する。一致しないと判断する場合に、受け取った共有鍵K’を出力しない。
(6)第2受信部129
第2受信部129は、インターネット130を介して暗号装置110から共通鍵暗号文Ci(1≦i≦n)を受信し、受信した共通鍵暗号文Ci(1≦i≦n)を共通鍵復号部128へ出力する。
(7)共通鍵復号部128
共通鍵復号部128は、共通鍵暗号部118が有する共通鍵暗号アルゴリズムSymと同じ共通鍵暗号アルゴリズムSymを予め有している。
共通鍵復号部128は、比較部127から共有鍵K’を受け取り、第2受信部129から共通鍵暗号文Ci(1≦i≦n)を受け取り、受け取った共有鍵K’を使用して受け取った共通鍵暗号文Ci(1≦i≦n)に共通鍵暗号アルゴリズムSymを施して、復号文mi’=Sym(Ci,K)(1≦i≦n)を生成する。
次に、共通鍵復号部128は、生成した復号文mi’(1≦i≦n)を再生装置150へ出力する。
1.7 再生装置150及びモニタ155
再生装置150は、復号装置120から復号文mi’(1≦i≦n)を受け取り、受け取った復号文mi’(1≦i≦n)から映像信号及び音声信号を生成し、生成した映像信号及び音声信号をモニタ155へ出力する。
モニタ155は、再生装置150から映像信号及び音声信号を受け取り、受け取った映像信号及び音声信号により、映像を表示し、音声を出力する。
1.8 暗号装置110及び復号装置120の動作
暗号装置110及び復号装置120の動作について、図4に示す処理系統図及び図5に示すフローチャートを用いて説明する。
暗号装置110の公開鍵入力部111は、メモリカード160から復号装置120の公開鍵多項式hを読み出し、読み出した公開鍵多項式hを暗号化部114へ出力する(ステップS101)。
次に、乱数生成部112は、乱数sを生成し、生成した乱数sを第1関数部113と暗号化部114とへ出力する(ステップS102)。
次に、第1関数部113は、乱数生成部112から乱数sを受け取り、乱数sの関数値G(s)を生成し(ステップS103)、次に、第1関数部113は、関数値G(s)から乱数値uと共有鍵Kとを生成して、乱数値uを暗号化部114へ出力し、共有鍵Kを共通鍵暗号部118へ出力する(ステップS104)。
次に、暗号化部114は、公開鍵入力部111から公開鍵多項式hを受け取り、乱数生成部112から乱数sを受け取り、第1関数部113から乱数値uを受け取り、公開鍵多項式hと乱数値uを用いて乱数sの第1暗号文c1を生成し、第1暗号文c1を第1送信部117へ出力する(ステップS105)。
次に、第1送信部117は、暗号化部114から第1暗号文c1を受け取り、第1暗号文c1をインターネット130を介して復号装置120へ送信する(ステップS106)。
次に、復号装置120の秘密鍵入力部121は、メモリカード170から復号装置120の秘密鍵多項式fと公開鍵多項式hとを読み出し、読み出した秘密鍵多項式fを復号化部123へ出力し、読み出した公開鍵多項式hを比較部127へ出力する(ステップS151)。
次に、第1受信部122は、インターネット130を介して暗号装置110から第1暗号文c1を受け取り、第1暗号文c1を復号化部123へ出力する(ステップS106)。
次に、復号化部123は、秘密鍵入力部121から秘密鍵多項式fを受け取り、第1受信部122から第1暗号文c1を受け取り、次に、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号乱数s’を生成し、第1暗号文c1と復号乱数s’を比較部127へ出力し、復号乱数s’を第2関数部126へ出力する(ステップS152)。
次に、第2関数部126は、復号化部123から復号乱数s’を受け取り、復号乱数s’の関数値G(s’)を生成し(ステップS153)、関数値G(s’)から乱数値u’と共有鍵K’とを生成して、乱数値u’と共有鍵K’とを比較部127へ出力する(ステップS154)。
次に、比較部127は、復号化部123から第1暗号文c1を受け取り、第2関数部126から乱数値u’と共有鍵K’とを受け取り、第1再暗号文c1’を生成し(ステップS155)、第1暗号文c1が乱数値u’を用いた復号乱数s’の暗号文であるかどうかチェックを行い、第1暗号文c1が復号乱数s’の暗号文でなければ(ステップS156)、復号装置120は、処理を終了する。
共通鍵暗号部118は、外部から複数の平文mi(1≦i≦n)を受け取り、第1関数部113から共有鍵Kを受け取り、共有鍵Kを使用して平文mi(1≦i≦n)に共通鍵暗号アルゴリズムSymを施して、共通鍵暗号文Ci=Sym(mi,K)(1≦i≦n)を生成し、共通鍵暗号文Ci(1≦i≦n)を第2送信部119へ出力する(ステップS107)。
次に、第2送信部119は、共通鍵暗号部118から共通鍵暗号文Ci(1≦i≦n)を受け取り、インターネット130を介して復号装置120へ送信し(ステップS108)、処理を終了する。
第1暗号文c1が復号乱数s’の暗号文であれば(ステップS156)、比較部127は、共有鍵K’を共通鍵復号部128へ出力する(ステップS157)。次に、第2受信部129は、インターネット130を介して暗号装置110から暗号文Ci(1≦i≦n)を受信し、共通鍵復号部128へ出力する(ステップS108)。
次に、共通鍵復号部128は、比較部127から共有鍵K’を受け取り、第2受信部129から共通鍵暗号文Ci(1≦i≦n)を受け取り、共有鍵K’を使用して共通鍵暗号文Ci(1≦i≦n)に共通鍵暗号アルゴリズムSymを施して、復号文mi’=Sym(Ci,K)(1≦i≦n)を生成し、復号文mi’(1≦i≦n)を再生装置150へ出力し(ステップS158)、処理を終了する。
1.9 コンテンツ配信システム10の動作検証
以下に、実施の形態1におけるコンテンツ配信システム10の全体の動作について説明する。
まず、暗号装置110は、復号装置120の公開鍵多項式hを入力とし、乱数sを生成し、関数値G(s)から乱数値uと共有鍵Kとを導出する。次に、暗号装置110は、乱数sを、公開鍵多項式hと乱数値uを用いてNTRU暗号で暗号化して第1暗号文c1を生成し、第1暗号文c1をインターネット130を介して復号装置120へ送信する。
すなわち、この暗号装置110は、以下の処理を行い、第1暗号文c1を復号装置120へ送信する。
・乱数sを生成する。
・G(s)を生成し、G(s)からu、Kを生成する。
・公開鍵多項式hと乱数値uとを用いて乱数sの第1暗号文c1を生成する。
・共有鍵Kと第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’を出力する。
すなわち、この復号装置120は、以下の処理を行い、共有鍵K’を導出する。
・秘密鍵多項式fを用いて第1暗号文c1を復号してs’を生成する。
・G(s’)を生成し、G(s’)からu’、K’を生成する。
・公開鍵多項式h、乱数値u’を用いてs’の第1再暗号文c1’を生成する。
・c1’=c1が成立するかどうかチェックする。成立すれば共有鍵K’を出力する。
ここで、暗号装置110で用いられた公開鍵多項式hに対応する正しい秘密鍵多項式fが復号装置120で用いられれば、第1暗号文c1は正しく復号されて、復号乱数s’=sとなり、従って、G(s’)から導出される乱数値u’=uとなり、共有鍵K’=Kとなる。そして、s’=s及びu’=uが成り立つので、c1’=c1が成り立ち、復号装置120は暗号装置110と同じ共有鍵Kを導出できることになる。
次に、復号装置120は、導出した共有鍵K’(=K)を用いて、インターネットを介して暗号装置110から共通鍵暗号文Ci(1≦i≦n)を共通鍵暗号で復号して復号文mi’(1≦i≦n)を生成して外部へ出力する。ここで、共通鍵暗号文生成時に用いた暗号鍵Kと復号文生成時に用いる暗号鍵K’とは同一であるで、復号装置120は、正しくmi'=mi(1≦i≦n)を得ることができる。
なお、復号エラーが発生した場合には、復号乱数s’と乱数sとは異なるので、G(s’)から導出される乱数値u’及び共有鍵K’は、それぞれu、Kとは異なる。しかし、この場合、s’、u’がそれぞれs、uと異なるために第1再暗号文c1’が第1暗号文c1と異なるので、復号装置120は、共有鍵K’を出力しない。
1.10 実施の形態1における効果
従来のRSA−KEMアルゴリズムでは、秘密鍵を知らなければ暗号文Cから導出できない要素sをハッシュ関数Gに入力して共有鍵Kを導出する。しかしながら、NTRU暗号を用いて、鍵カプセル化メカニズムであるRSA−KEMアルゴリズムを適用して共有鍵の配送を行おうとすると、復号エラーが発生する場合があるため、秘密鍵を用いても要素sが導出できず、従って正しくない共有鍵K’を導出する場合がある。
しかしながら、実施の形態1のコンテンツ配信システム、暗号装置及び復号装置においては、乱数sのハッシュ関数値G(s)から共有鍵に加えて乱数値uを生成し、復号装置が乱数値uと公開鍵多項式hとを用いて復号乱数s’を再暗号化して第1再暗号文c1’を生成し、第1再暗号文c1’が第1暗号文c1と同じ値でない限り共有鍵K’を出力しないようにしたので、復号エラーが発生した場合、暗号装置と復号装置との間で異なる鍵が導出されるのを防止できる。
また、本発明による方式は、非特許文献3に記述されている証明方法と同様の方法により、理論的にその安全性が証明できる。
1.11 変形例
上記に説明した実施の形態1は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(1)用いるNTRU暗号のパラメータN=167に限定されない。パラメータNは、他の値をとるとしてもよい。
(2)暗号化部114及び復号化部123で行われるビット列の各ビットの値と多項式の各項の係数との変換方法は、上記において説明した方法に限られず他の変換方法でもよい。
例えば、乱数sから乱数多項式spへの変換は、ビット列の各ビットの値と多項式の各項の係数とを1対1に対応させる関数を用いて変換してもよいし、また、ビット列の各ビットの値と多項式の各項の係数とを1対1に対応させて記憶している関数値テーブルを用いて変換してもよい。
また、乱数値uから乱数多項式rへの変換は、uからrが一意に求まり、rのd個の次元の項の係数を「1」とし、d個の次元の項の係数を「一1」とし、他の次元の項の係数は「0」となるようにすれば、他の変換方法でもよく、例えば、乱数値uを多項式に対応させる関数、又は関数値テーブルを用いて変換してもよい。
(3)暗号化部114及び復号化部123で用いる公開鍵暗号方式は、暗号化部114において、乱数sを公開鍵と乱数値uを用いて暗号化して第1暗号文c1を生成し、復号化部123において、第1暗号文c1を秘密鍵で復号して乱数値sと等しい復号乱数s’を生成できるものであればよい。
従って、暗号化部114及び復号化部123で用いる公開鍵暗号は、NTRU暗号以外に、どんな公開鍵暗号でも利用できる。
例えば、ElGamal暗号を採用するならば、h、fをそれぞれElGamal暗号の公開鍵、秘密鍵とし、暗号化部114において、乱数sをhとuを用いて暗号化してc1を生成し、復号化部123において、c1をfを用いて復号してs’を生成すればよい。
なお、ElGamal暗号について非特許文献1に詳細に記載されているため、ここでは説明を省略する。
(4)第1関数部113は、関数値G(s)の上位kビットを乱数値uとし、下位kビットを共有鍵Kとする以外に、関数値G(s)から乱数値uと共有鍵Kとを導出すれば他の方法でもよい。
例えば、関数値G(s)の上位k/2ビットを乱数値uとし、下位k×3/2ビットを共有鍵Kとしてもよい。また、関数値G(s)の2kビットのうち、1ビット置きにkビットを選択して乱数値uとし、残りのkビットを共有鍵Kとしてもよい。
(5)乱数値uは、第1関数部113及び第2関数部126で生成される以外にも、暗号装置110と復号装置120とで同じ値を得られれば、他の生成方法を採用してもよい。
例えば、任意の関数Funcに対し、u=Func(s)として暗号装置110と復号装置120とで同じ値を得られるようにしてもよい。すなわち、暗号装置110と復号装置120とにおいて、
・G(s)を生成し、G(s)からKを生成する。
・Func(s)を生成し、u=Func(s)とする。
としてもよい。
(6)乱数値uは、第1関数部113及び第2関数部126で生成される以外にも、暗号装置110と復号装置120とで同じ値を得られればよいので、暗号装置110が乱数値uを復号装置120bに直接送信してもよい。
すなわち、以下のように、第1暗号文c1と乱数値uを復号装置120に送信してもよい。このとき、乱数値uは暗号化して送信されてもよい。
暗号装置110において、
・G(s)を生成し、G(s)からKを生成する。
・乱数値uを、別途、暗号装置110から復号装置120へ送信する。
復号装置120において、
・乱数値uを受信する。
・乱数値u’に代えて、受信した乱数値uを用いて第1再暗号文c1’を生成する。
このとき、暗号装置110は、乱数値uを暗号化して送信し、復号装置120は、暗号化された乱数値uを復号するとしてもよい。
(7)乱数値uは、暗号装置110と復号装置120とで同じ値を得られればよいので、乱数値uの一部分の部分情報を第1関数部113及び第2関数部126で生成し、乱数値uの残りの部分の部分情報を暗号装置110から復号装置120に直接送信してもよい。
例えば、以下のように、暗号装置110は、第1暗号文c1と乱数値u2とを復号装置120に送信してもよい。
暗号装置110において、
(a)G(s)を生成し、G(s)からK、u1を生成する。
(b)乱数値u2を生成し、別途、復号装置120へ送信する。
(c)乱数値uを、u=u1 xor u2から生成する。
(d)乱数値uを用いて、第1暗号文c1を生成する。
復号装置120において、
(e)乱数値u2を受信する。
(f)G(s’)を生成し、G(s’)からK’、u1’を生成する。
(g)乱数値u’を、u’=u1’ xor u2から生成する。
(h)生成した乱数値u’を用いて第1再暗号文c1’を生成する。
このとき、暗号装置110は、乱数値u2を暗号化して送信し、復号装置120は、暗号化された乱数値u2を復号するとしてもよい。
また、(c)及び(g)において、排他的論理和xorに代えて他の演算を用いるとしてもよい。例えば、(c)及び(g)において、それぞれ加算及び減算を用いてもよいし、また、乗算及び除算を用いてもよい。
(8)復号エラーの発生により暗号装置110と復号装置120との間で異なる共有鍵が導出されるのを防止するため、第1再暗号文c1’と第1暗号文c1とが同じである場合に、共有鍵K’を出力する代わりに、暗号装置110が乱数s、乱数値u、共有鍵Kのいずれか1つ以上について、ハッシュ関数値を生成し、生成したハッシュ関数値を復号装置120へ送信し、復号装置120がこのハッシュ関数値を検証することにより、共有鍵K’を出力するか否かを決定してもよい。例えば、このハッシュ関数値として、任意のハッシュ関数Hに対して、乱数sのハッシュ関数値H(s)を生成するようにしてもよいし、乱数s、乱数値u、共有鍵Kの組み合わせ、例えば、ハッシュ関数値H(s||u||k)やハッシュ関数値H(u||k)等を生成するようにしてもよい。
また、この場合、暗号装置110の第1関数部113は、関数値G(s)から乱数値uと共有鍵Kを導出する代わりに、G(s)から共有鍵Kのみを導出してもよい。
以下に、その具体例を述べる。
コンテンツ配信システム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を含む。
暗号装置110bが乱数sのハッシュ関数値を生成し、復号装置120bがこのハッシュ関数値を検証する際に、暗号装置110bにおいて、図8の処理系統図に示すように、第1関数部113bは、G(s)を生成し(ステップS103)、G(s)からKを生成する(ステップS104)。
次に、暗号化部114bは、乱数値uを生成し、生成した乱数値uから乱数多項式rを生成し、乱数多項式r及び公開鍵多項式hを用いて乱数sの第1暗号文c1を生成し(ステップS105)、ハッシュ関数値H(s)を生成する(ステップS111)。
次に、第1送信部117bは、第1暗号文c1を送信し(ステップS106)、ハッシュ関数値H(s)を送信する(ステップS112)。
次に、復号装置120bにおいて、第1受信部122bは、第1暗号文c1を受信し(ステップS106)、ハッシュ関数値H(s)を受信する(ステップS112)。
次に、復号化部123bは、秘密鍵多項式fを用いて第1暗号文c1を復号してs’を生成する(ステップS152)。
次に、第2関数部126は、G(s’)を生成し(ステップS153)、G(s’)からK’を生成する(ステップS154)。
次に、比較部127は、第3関数部127uにより、H(s’)を生成し(ステップS154)、比較演算部127vにより、H(s’)=H(s)が成立するかどうかチェックし(ステップS162)、成立すれば共有鍵K’を出力する(ステップS157)。
また、この場合、さらに安全性を高めるために、特許文献1に開示されている方法を用いて、乱数sに付加情報を附したものを暗号化して第1暗号文c1を生成してもよい。すなわち、図6において、暗号化部114bは、付加情報Raを生成し、sとRaのビット結合s||Raの値を暗号化して第1暗号文c1を生成し、図7において、復号化部123bは、第1暗号文c1を復号してs’||Ra’を生成し、Ra’を除去して復号乱数s’を生成してもよい。
また、特許文献1に開示されている通り、s||Raの値の代わりに、sとRaの可逆変換F(s,Ra)の値を用いてもよい。
2.実施の形態2
本発明に係る別の実施の形態としてのコンテンツ配信システム10c(図示していない)について説明する。
コンテンツ配信システム10cは、コンテンツ配信システム10を基本としてこれを変形したシステムであり、関数値G(s)から乱数値uと共有鍵Kとの他にさらに検証値aを生成する点と、暗号装置が、乱数sを暗号化した第1暗号文c1を生成して送信する代わりに、検証値aを暗号化した第1暗号文c1と、乱数sを検証値aに基づいて暗号化した第2暗号文c2とを生成して送信する点において、コンテンツ配信システム10と異なる。
以下、コンテンツ配信システム10cについて、上記差異点を中心に詳しく説明する。
2.1 コンテンツ配信システム10cの構成
コンテンツ配信システム10cは、コンテンツ配信システム10と同様の構成を有しており、暗号装置110及び復号装置120に代えて、暗号装置110c及び復号装置120cを含んでいる。その他の構成については、コンテンツ配信システム10におけるものと同様であるので説明を省略する。
2.2 暗号装置110cの構成
暗号装置110cは、図9に示すように、暗号装置110と同様の構成を有しており、乱数生成部112、第1関数部113、暗号化部114及び第1送信部117に代えて、乱数生成部112c、第1関数部113c、暗号化部114c、乱数マスク部116c及び第1送信部117cを含む。
ここでは、乱数生成部112c、第1関数部113c、暗号化部114c、乱数マスク部116c及び第1送信部117cについて説明する。
(1)乱数生成部112c
乱数生成部112cは、共有鍵Kを生成するための元となるシード値として、乱数sを生成し、生成した乱数sを第1関数部113bと乱数マスク部116cとへ出力する。
(2)第1関数部113c
第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とする。
次に、第1関数部113cは、生成した検証値aと乱数値uとを暗号化部114cへ出力し、生成した共有鍵Kを共通鍵暗号部118へ出力し、生成した検証値aを乱数マスク部116cへ出力する。
(3)暗号化部114c
暗号化部114cは、公開鍵入力部111から公開鍵多項式hを受け取り、第1関数部113cから検証値aと乱数値uとを受け取り、次に示すようにして、公開鍵多項式hと乱数値uとを用いて検証値aの第1暗号文c1を生成する。ここでは、第1暗号文c1はNTRU暗号による暗号文である。
暗号化部114cは、NTRU暗号のパラメータdに対し、d個の項の各係数が「1」であり、他のd個の項の各係数が「−1」であり、残りの項の各係数が「0」となる乱数多項式rを乱数値uから一意に求まるように生成する。具体的には、乱数値uを擬似乱数系列の初期値(乱数シード)として設定し、{0,1,...,N−1}から重複しないように2d個の擬似乱数を選択し、最初のd個の擬似乱数により示される次元の項の係数を「1」とし、他のd個の擬似乱数により示される次元の係数を「−1」とし、残りの項の係数を「0」とすることにより、乱数多項式rを生成する。
次に、受け取った検証値aがNTRU暗号の暗号アルゴリズムEに適用できるように、暗号化部114cは、検証値aを2進数表現した場合におけるN桁のビット列の各桁の値が、検証値多項式apの各項の係数に対応するように、検証値多項式apを構成することにより、検証値aを検証値多項式apに変換する。例えば、検証値aの下位bビット目の値は、項X^bの係数の値となる。具体的には、検証値a=10010(ビット表現)の場合、検証値多項式ap=X^5+X^2を生成する。
次に、暗号化部114cは、公開鍵多項式hを鍵として使用して、乱数多項式rを用いて検証値多項式apに前記暗号アルゴリズムEを施して、暗号文多項式である第1暗号文c1=E(ap,r,h)を生成する。
次に、暗号化部114cは、生成した第1暗号文c1を第1送信部117cへ出力する。
(4)乱数マスク部116c
乱数マスク部116cは、乱数生成部112cから乱数sを受け取り、第1関数部113cから検証値aを受け取り、次に、第2暗号文c2=s xor aを生成し、生成した第2暗号文c2を第1送信部117cへ出力する。
ここで、xorは排他的論理和演算を表す演算子である。
なお、乱数マスク部116cは、排他的論理和に代えて、共有鍵暗号アルゴリズム、加算又は乗算を用いるとしてもよい。
(5)第1送信部117c
第1送信部117cは、暗号化部114cから第1暗号文c1を受け取り、乱数マスク部116cから第2暗号文c2を受け取り、受け取った第1暗号文c1と第2暗号文c2とを、インターネット130を介して復号装置120cへ送信する。
2.2 復号装置120cの構成
復号装置120cは、図10に示すように、復号装置120と同様の構成を有しており、第1受信部122、復号化部123、第2関数部126及び比較部127に代えて、第1受信部122c、復号化部123c、乱数マスク除去部125c、第2関数部126c及び比較部127cを含む。
ここでは、第1受信部122c、復号化部123c、乱数マスク除去部125c、第2関数部126c及び比較部127cについて説明する。
(1)第1受信部122c
第1受信部122cは、インターネット130を介して、暗号装置110cから第1暗号文c1と第2暗号文c2とを受け取り、受け取った第1暗号文c1を復号化部123cへ出力し、受け取った第2暗号文c2を乱数マスク除去部125cへ出力する。
(2)復号化部123c
復号化部123cは、秘密鍵入力部121から秘密鍵多項式fを受け取り、第1受信部122cから第1暗号文c1を受け取り、次に示すようにして、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a’を生成する。ここでは、復号検証値a’はNTRU暗号による復号文である。
復号化部123cは、秘密鍵多項式fを鍵として使用して、第1暗号文c1に前記復号アルゴリズムDを施して、復号検証値多項式ap’=D(c1,f)を生成する。ここで、復号検証値多項式ap’は、NTRU暗号の復号文であり多項式で表現されているので、復号化部123cは、復号検証値多項式ap’の各項の係数が、2進数表現されたN桁のビット列である復号検証値a’の各桁の値に対応するように、復号検証値多項式ap’を復号検証値a’に変換する。例えば、復号検証値多項式ap’のb次元の項X^bの係数を、復号検証値a’の下位bビット目の値とする。具体的には、復号検証値多項式ap’=X^5+X^2の場合、復号検証値a’=10010(ビット表現)に変換する。
次に、復号化部123cは、生成した復号検証値a’を乱数マスク除去部125cへ出力し、受け取った第1暗号文c1を比較部127cへ出力する。
(3)乱数マスク除去部125c
乱数マスク除去部125cは、第1受信部122cから第2暗号文c2を受け取り、復号化部123cから復号検証値a’を受け取り、
復号乱数s’=c2 xor a’を生成し、生成した復号乱数s’を第2関数部126cへ出力する。
なお、乱数マスク部116cが、排他的論理和に代えて、共有鍵暗号アルゴリズム、加算又は乗算を用いる場合において、乱数マスク除去部125cは、それぞれ、共有鍵暗号アルゴリズムに対応する共有鍵復号アルゴリズム、減算、又は除算を用いるとしてもよい。
(4)第2関数部126c
第2関数部126cは、第1関数部113cが有する関数と同じ関数Gによるアルゴリズムを有している。
第2関数部126cは、乱数マスク除去部125cから復号乱数s’を受け取り、受け取った復号乱数s’の関数値G(s’)を生成する。次に、第1関数部113cと同様にして、関数値G(s’)から検証値a’’と共有鍵K’と乱数値u’とを生成し、生成した検証値a’’と共有鍵K’と乱数値u’とを比較部127cへ出力する。
(5)比較部127c
比較部127cは、図10に示すように、比較演算部127s及び暗号化部127tから構成されている。
暗号化部127tは、秘密鍵入力部121から公開鍵多項式hを受け取り、第2関数部126cから検証値a’’と乱数値u’とを受け取り、受け取った公開鍵多項式hと乱数値u’を用いて、暗号化部114cと同様にして検証値a’’を暗号化して第1再暗号文c1’を生成し、生成した第1再暗号文c1’を比較演算部127sへ出力する。
また、比較演算部127sは、第2関数部126cから共有鍵K’を受け取り、復号化部123cから第1暗号文c1を受け取り、暗号化部127tから第1再暗号文c1’を受け取り、次に、受け取った第1暗号文c1と、受け取った第1再暗号文c1’とを比較し、第1暗号文c1=第1再暗号文c1’であると判断する場合に、受け取った共有鍵K’を共通鍵復号部128へ出力する。
2.3 コンテンツ配信システム10cの動作
以下に、実施の形態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)。
すなわち、この暗号装置110cは、以下の処理を行い、暗号文C=(c1,c2)を復号装置120cへ送信する。
(a)乱数sを生成する。
(b)G(s)を生成し、G(s)からa、K、uを生成する。
(c)公開鍵多項式h、乱数値uを用いて検証値aの第1暗号文c1を生成する。
(d)c2=s xor aを生成する。
次に、暗号装置110cは、導出した共有鍵Kを用いて、コンテンツサーバ装置140から受け取った平文mi(1≦i≦n)を共通鍵暗号方式により暗号化して暗号文Ci(1≦i≦n)を生成し(ステップS107)、インターネット130を介して復号装置120cへ送信する(ステップS108)。
一方、復号装置120cは、復号装置120cの秘密鍵多項式f及び公開鍵多項式hを受け取り(ステップS151)、インターネット130を介して暗号装置110cから第1暗号文c1と第2暗号文c2を受信し(ステップS106)、第1暗号文c1を秘密鍵多項式fを用いて復号して復号検証値a’を生成する(ステップS152)。次に、復号検証値a’に基づき第2暗号文c2を復号して、復号乱数s’=c2 xor a’を生成する(ステップS171)。次に、復号装置120cは、復号乱数s’の関数値G(s’)から検証値a’’、共有鍵K’及び乱数値u’を導出する(ステップS172)。さらに、検証値a’’を暗号化して第1再暗号文c1’を生成し(ステップS155)、c1’=c1であれば(ステップS156)、共有鍵K’を出力する(ステップS157)。
すなわち、この復号装置120cは、以下の処理を行い、共有鍵K’を導出する。
(a)秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する。
(b)s’=c2 xor a’を生成する。
(c)G(s’)を生成し、G(s’)からa’’、K’、u’を生成する。
(d)公開鍵多項式h、乱数値u’を用いてa’’の第1再暗号文c1’を生成する。
(e)c1’=c1が成立するかどうかチェックする。成立すれば共有鍵K’を出力する。
ここで、暗号装置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を導出できることになる。
次に、復号装置120cは、インターネット130を介して暗号装置110cから共通鍵暗号文Ci(1≦i≦n)を受信し(ステップS108)、導出した共有鍵K’(=K)を用いて、受信した共通鍵暗号文Ci(1≦i≦n)を共通鍵暗号方式により復号して復号文mi’(1≦i≦n)を生成し(ステップS158)、復号文mi’(1≦i≦n)を再生装置150へ出力する。
ここで、共通鍵暗号文生成時に用いた暗号鍵Kと復号文生成時に用いる暗号鍵K’とは同一であるので、復号装置120cは、正しい復号文mi'=mi(1≦i≦n)を得ることができる。
なお、復号エラーが発生した場合には、復号検証値a’と検証値aとは異なるので、第2暗号文c2から得られる復号乱数s’はsと異なる。従って、G(s’)から導出される乱数値u’及び共有鍵K’は、それぞれu、Kとは異なる。しかし、この場合、a’、u’がそれぞれa、uと異なるために第1再暗号文c1’は第1暗号文c1と異なるので、復号装置120cは、共有鍵K’を出力しない。
2.4 実施の形態2における効果
従来のRSA−KEMアルゴリズムでは、秘密鍵を知らなければ暗号文Cから導出できない要素sをハッシュ関数Gに入力して共有鍵Kを導出する。しかしながら、NTRU暗号を用いて、鍵カプセル化メカニズムであるRSA−KEMアルゴリズムを適用して共有鍵の配送を行おうとすると、復号エラーが発生する場合があるため、秘密鍵を用いても要素sが導出できず、従って正しくない共有鍵K’を導出する場合がある。
しかしながら、実施の形態2のコンテンツ配信システム、暗号装置及び復号装置は、乱数sのハッシュ関数値G(s)から共有鍵に加えて検証値aと乱数値uとを生成し、復号装置が乱数値uと公開鍵多項式hとを用いて復号検証値a’を再暗号化して第1再暗号文c1’を生成し、第1再暗号文c1’が第1暗号文c1と同じ値でない限り共有鍵Kを出力しないので、復号エラーが発生した場合、暗号装置と復号装置との間で異なる鍵が導出されるのを防止できる。
また、本発明による方式は、非特許文献3に記述されている証明方法と同様の方法により、理論的にその安全性が証明できる。
2.5 変形例
上記に説明した実施の形態2は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。実施の形態1におけるのと同様の変形を施すことができるのはもちろんであるが、以下のような場合も本発明に含まれる。
(1)検証値aから検証値多項式apへの変換は、他の変換方法でもよい。例えば、ビット列の各ビットの値と多項式の各項の係数とを1対1に対応させる関数を用いて変換してもよいし、また、ビット列の各ビットの値と多項式の各項の係数とを1対1に対応させて記憶している関数値テーブルを用いて変換してもよい。
また、乱数値uから乱数多項式rへの変換は、他の変換方法でもよい。例えば、uからrが一意に求まり、d個の次元の項の係数を「1」とし、d個の次元の項の係数を「一1」とし、他の次元の項の係数は「0」となるようにすれば、他の変換方法でもよい。例えば、乱数値uを多項式に対応させる関数、又は関数値テーブルを用いて変換してもよい。
(2)暗号化部114c及び復号化部123cで用いる公開鍵暗号は、暗号化部114cにおいて、検証値aを公開鍵と乱数値uを用いて暗号化して第1暗号文c1を生成し、復号化部123cにおいて、第1暗号文c1を秘密鍵で復号して、検証値aと等しい復号検証値a’を生成できればよい。従って、暗号化部114c及び復号化部123cで用いる公開鍵暗号は、NTRU暗号以外に、乱数を用いる公開鍵暗号ならばどんな暗号であってもよい。
例えば、ElGamal暗号ならば、h、fをそれぞれElGamal暗号の公開鍵、秘密鍵とし、暗号化部114cにおいて、aをhと乱数値uを用いて暗号化してc1を生成し、復号化部123cにおいて、c1をfを用いて復号してa’を生成すればよい。
(3)乱数値uは、第1関数部113c及び第2関数部126cで生成される以外にも、暗号装置110cと復号装置120cとで同じ値を得られれば、他の生成方法でもよい。
例えば、任意の関数Funcに対し、u=Func(s)として暗号装置110cと復号装置120cとで同じ値を得られるようにしてもよい。すなわち、
・G(s)を生成し、G(s)からa、Kを生成する。
・Func(s)を生成し、u=Func(s)とする。
としてもよい。
(4)さらに、乱数値uについては、第1関数部113c及び第2関数部126cで生成される以外にも、暗号装置110cと復号装置120cとで同じ値が得られればよいため、暗号装置110cが乱数値uを復号装置120cに直接送信してもよい。
すなわち、以下のように、暗号装置110cは、暗号文Cと乱数値uとを復号装置120bに送信してもよい。また、乱数値uを暗号化して送信してもよい。
・G(s)を生成し、G(s)からa、Kを生成する。
・暗号装置110cは、別途、乱数値uを、120bへ送信する。
(5)さらに、乱数値uについては、暗号装置110cと復号装置120cとで同じ値が得られればよいため、乱数値uの一部である部分情報を第1関数部113c及び第2関数部126cで生成し、乱数値uの残りの部分情報を暗号装置110cから復号装置120cに直接送信してもよい。
例えば、以下のように、暗号装置110cは、暗号文Cと乱数値u2を復号装置120cに送信してもよい。また、暗号装置110cは、乱数値u2を暗号化して送信してもよい。
・G(s)を生成し、G(s)からa、K、u1を生成する。
・暗号装置110cは、別途、乱数値u2を復号装置120cへ送信する。
・暗号装置110cは、乱数値u=u1 xor u2を生成する。
(6)復号装置120cは、第1暗号文c1が第2関数部126cで得られる検証値a’’の暗号文かどうかチェックを行い、c1がa’’の暗号文であるときに共有鍵K’を用いて共通鍵暗号文Ciを復号しているが、第1暗号文c1が復号検証値a’の暗号文かどうかをチェックしてもよい。
(7)復号装置120cは、第1暗号文c1が第2関数部126cで得られる検証値a’’の暗号文かどうかチェックを行い、c1がa’’の暗号文であるときに共有鍵K’を用いて共通鍵暗号文Ciを復号しているが、図12の処理系統図のステップS156に示すように、比較部127cにおいて、復号化部123cが復号したa’の値と第2関数部126cが生成したa’’の値が等しいかどうかをチェックしてもよい。
(8)復号エラー発生により暗号装置110cと復号装置120cとの間で異なる鍵が導出されるのを防止するため、第1再暗号文c1’が第1暗号文c1と同じ値かどうかを検証して共有鍵K’を出力する代わりに、暗号装置110cが乱数s、検証値a、乱数値u、共有鍵Kのいずれか1つ以上について、ハッシュ関数値を生成し、生成したハッシュ関数値を復号装置120cへ送信し、復号装置120cがこのハッシュ関数値を検証して共有鍵K’を出力するか否かを決定してもよいし、安全性を高めるために、特許文献1に開示されている方法を用いてもよい。すなわち、実施の形態1の変形例(8)を適用してもよい。
3.実施の形態1及び実施の形態2のまとめ
以上説明したように、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて乱数データと前記共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して暗号化共有鍵データを生成する第1の暗号化部とを備える。
また、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと乱数データと前記共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データと前記乱数データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記秘密数データを前記検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
ここで、前記第2の暗号化部は、前記秘密数データと前記検証値データの排他的論理和演算を行って前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データを、前記検証値データを暗号鍵として用いて共通鍵暗号方式により暗号化して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データに前記検証値データを加算して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データに前記検証値データを乗算して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2暗号予備データのビット連結データであるとしてもよい。
ここで、前記第1の暗号化部は、NTRU暗号方式により暗号化して前記暗号化共有鍵データを生成するとしてもよい。
ここで、前記第1の暗号化部は、NTRU暗号方式により暗号化して前記第1の暗号予備データを生成するとしてもよい。
ここで、前記秘密数データは、ランダムに生成される乱数であるとしてもよい。
ここで、前記共有鍵導出部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記暗号化共有鍵データを前記秘密鍵データに基づいて復号化して秘密数データを生成する第1の復号化部と、前記秘密数データを所定の処理に基づいて乱数データと前記共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して再暗号化共有鍵データを生成する第3の暗号化部とを備え、前記暗号化共有鍵データと前記再暗号化共有鍵データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記第2の暗号予備データを前記検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部と、前記検証値検証データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記第2の暗号予備データを前記検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記共有鍵データを出力する。
ここで、前記第2の復号化部は、前記第2の暗号予備データと前記検証値データの排他的論理和演算を行って前記秘密数データを生成するとしてもよい。
ここで、前記第2の復号化部は、前記第2の暗号予備データを、前記検証値データを暗号鍵として用いて共通鍵暗号方式により復号化して前記秘密数データを生成するとしてもよい。
ここで、前記第2の復号化部は、前記第2の暗号予備データに前記検証値データを減算して前記秘密数データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記第2の暗号予備データを前記検証値データで除算して前記秘密数データ第2の秘密数データを生成するとしてもよい。
ここで、前記第1の復号化部は、NTRU暗号方式により復号化して前記共有鍵データを生成するとしてもよい。
ここで、前記第1の復号化部は、NTRU暗号方式により復号化して前記検証値データを生成するとしてもよい。
ここで、前記共有鍵導出部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
また、本発明は、予め与えられた公開鍵データに基づいて平文データを暗号化した暗号文データを生成する暗号装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて乱数データと共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記平文データを前記共有鍵データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号文データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号文データを復号して復号文データを出力する復号装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して秘密数データを生成する第1の復号化部と、前記秘密数データを所定の処理に基づいて乱数データと共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記第2の暗号予備データを前記共有鍵に基づいて復号化して前記復号文データを生成する復号部とを備える。
また、本発明は、予め与えられた公開鍵データに基づいて平文データを暗号化した暗号文データを生成する暗号装置、及び予め与えられた秘密鍵データ及び公開鍵データに基づいて暗号文データを復号して復号文データを出力する復号装置からなる暗号システムである。前記暗号装置は、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて乱数データと共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記平文データを前記共有鍵データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号文データは、前記第1の暗号予備データと前記第2の暗号予備データと前記第3の暗号予備データから構成される。前記復号装置は、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して秘密数データを生成する第1の復号化部と、前記秘密数データを所定の処理に基づいて乱数データと共有鍵データに変換する共有鍵導出部と、前記秘密数データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記第2の暗号予備データを前記共有鍵に基づいて復号化して前記復号文データを生成する復号部とを備える。
以上に説明したように、本発明は、従来システムにおける問題点を鑑みて行われたもので、暗号システムにおいて、NTRU暗号を適用できる新しい鍵カプセル化メカニズムを構成することで、暗号装置と復号装置との間で異なる鍵が導出されるのを防止でき、鍵カプセル化メカニズムにより導出される鍵を用いた送信装置から受信装置への確実な暗号化通信ができる。
以上により、従来技術では達成できなかった暗号システムを提供することができ、その価値は大きい。
4.実施の形態3
本発明に係るさらに別の実施の形態としてのコンテンツ配信システム10d(図示していない)について説明する。
なお、コンテンツ配信システム10dは、コンテンツ配信システム10を変形したシステムである。ここでは、コンテンツ配信システム10dについて、コンテンツ配信システム10との差異点を中心に詳しく説明する。
4.1 コンテンツ配信システム10dの構成
コンテンツ配信システム10dは、コンテンツ配信システム10と同様の構成を有しており、暗号装置110及び復号装置120に代えて、暗号装置110d及び復号装置120dを含んでいる。その他の構成については、コンテンツ配信システム10におけるものと同様であるので説明を省略する。
コンテンツ配信システム10dは、NTRU暗号を用いて鍵カプセル化メカニズムによる鍵配送を行って暗号化通信を行う暗号通信システムであり、暗号装置110dと復号装置120dとは、インターネット130を介して接続されている。
4.2 暗号装置110dの構成
暗号装置110dは、図13に示すように、公開鍵入力部111d、乱数生成部112d、第1関数部113d、暗号化部114d、第2関数部115d、乱数マスク部116d、第1送信部117d、共通鍵暗号部118及び第2送信部119から構成されている。
暗号装置110dは、暗号装置110と同様のコンピュータシステムであり、マイクロプロセッサが、コンピュータプログラムに従って動作することにより、暗号装置110dは、その機能を達成する。
(1)公開鍵入力部111d
公開鍵入力部111dは、メモリカード160から復号装置120の公開鍵多項式hを読み出し、読み出した公開鍵多項式hを暗号化部114dへ出力する。
(2)乱数生成部112d
乱数生成部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とする。
次に、第1関数部113dは、生成した検証値aを暗号化部114dと第2関数部115dとへ出力し、生成した共有鍵Kを共通鍵暗号部118へ出力する。
(4)暗号化部114d
暗号化部114dは、公開鍵入力部111dから公開鍵多項式hを受け取り、第1関数部113dから検証値aを受け取り、次に示すようにして、受け取った公開鍵多項式hを用いて検証値aの第1暗号文c1を生成する。ここで、生成される第1暗号文c1は、NTRU暗号による暗号文である。
暗号化部114dは、NTRU暗号のパラメータdに対し、d個の項の各係数が「1」であり、別のd個の項の各係数が「−1」であり、その他の項の各係数が「0」となる乱数多項式rをランダムに生成する。次に、検証値aがNTRU暗号の暗号アルゴリズムEに適用できるように、検証値aを2進数表現した場合のN桁のビット列の各桁の値が、検証値多項式apの各項の係数に対応するように、検証値多項式apを生成する。例えば、検証値aの下位bビット目の値を、検証値多項式apの項X^bの係数とする。こうして、検証値aを検証値多項式apに変換する。具体的には、検証値a=10010(ビット表現)の場合、検証値多項式ap=X^5+X^2と変換する。次に、公開鍵多項式hを使用して、乱数多項式rを用いて検証値多項式apに前記暗号アルゴリズムEを施して、暗号文多項式である第1暗号文c1=E(ap,r,h)を生成する。
次に、暗号化部114dは、生成した第1暗号文c1を第2関数部115dと第1送信部117dとへ出力する。
(5)第2関数部115d
第2関数部115dは、第1関数部113dから検証値aを受け取り、暗号化部114dから第1暗号文c1を受け取り、次に示すようにして、検証値aと第1暗号文c1の関数値H(a,c1)を生成する。
ここでは、関数Hはハッシュ関数であり、一方向性関数の一種である。
第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と第1暗号文ビット列c1’とのビット結合a||c1’を入力して、関数値H(a,c1)=H(a||c1’)を生成する。ここで、「||」は、ビット結合を示す演算子である。
次に、第2関数部115dは、生成した関数値H(a,c1)を乱数マスク部116dへ出力する。
(6)乱数マスク部116d
乱数マスク部116dは、乱数生成部112dから乱数sを受け取り、第2関数部115dから関数値H(a,c1)を受け取る。次に、第2暗号文c2=s xor H(a,c1)を生成し、生成した第2暗号文c2を第1送信部117dへ出力する。
なお、乱数マスク部116dは、排他的論理和xorに代えて、共有鍵暗号アルゴリズム、加算又は乗算を用いるとしてもよい。
(7)第1送信部117d
第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と同じである。
共通鍵暗号部118は、第1関数部113dから共有鍵Kを受け取る。
4.3 復号装置120dの構成
復号装置120dは、図14に示すように、秘密鍵入力部121d、第1受信部122d、復号化部123d、第3関数部124d、乱数マスク除去部125d、第4関数部126d、比較部127d、共通鍵復号部128及び第2受信部129から構成されている。
復号装置120dは、復号装置120と同様のコンピュータシステムであり、マイクロプロセッサが、コンピュータプログラムに従って動作することにより、復号装置120dは、その機能を達成する。
なお、共通鍵復号部128及び第2受信部129は、それぞれ、復号装置120に含まれている共通鍵復号部128及び第2受信部129と同じであるので、ここでは、説明を省略する。
(1)秘密鍵入力部121d
秘密鍵入力部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へ出力する。
なお、乱数マスク部116dが、排他的論理和に代えて、共有鍵暗号アルゴリズム、加算又は乗算を用いる場合において、乱数マスク除去部125dは、それぞれ、共有鍵暗号アルゴリズムに対応する共有鍵復号アルゴリズム、減算、又は除算を用いるとしてもよい。
(3)復号化部123d
復号化部123dは、秘密鍵入力部121dから秘密鍵多項式fを受け取り、第1受信部122dから第1暗号文c1を受け取り、次に示すようにして、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a’を生成する。ここでは、復号検証値a’はNTRU暗号による復号文である。
復号化部123dは、秘密鍵多項式fを使用して、第1暗号文c1に前記復号アルゴリズムDを施して、復号検証値多項式ap’=D(c1,f)を生成する。次に、復号検証値多項式ap’は、NTRU暗号の復号文であり多項式で表現されているので、復号化部123dは、復号検証値多項式ap’の各係数が、復号検証値a’を2進数表現した場合のN桁のビット列の各桁の数に対応するように、復号検証値a’を生成する。例えば、復号検証値多項式ap’のb次元の項X^bの係数を、復号検証値a’の下位bビット目の値とする。こうして、復号検証値多項式ap’を復号検証値a’に変換する。具体的には、復号検証値多項式ap’=X^5+X^2の場合、復号検証値a’=10010(ビット表現)に変換する。
次に、復号化部123dは、生成した復号検証値a’を第3関数部124dと比較部127dとへ出力する。
(4)第3関数部124d
第3関数部124dは、第2関数部115dが有する関数と同じ関数Hのアルゴリズムを有している。
第3関数部124dは、第1受信部122dから第1暗号文c1を受け取り、復号化部123dから復号検証値a’を受け取る。次に、第2関数部115dと同様にして、検証値a’と第1暗号文c1との関数値H(a’,c1)を生成し、生成した関数値H(a’,c1)を乱数マスク除去部125dへ出力する。
(5)乱数マスク除去部125d
乱数マスク除去部125dは、第1受信部122dから第2暗号文c2を受け取り、第3関数部124dからハッシュ関数値H(a’,c1)を受け取り、次に、復号乱数s’=c2 xor H(a’,c1)を生成し、生成した復号乱数sを第4関数部126dへ出力する。
(6)第4関数部126d
第4関数部126dは、第1関数部113dが有する関数と同じ関数Gのアルゴリズムを有している。
第4関数部126dは、乱数マスク除去部125dから復号乱数s’を受け取り、復号乱数s’のハッシュ関数値G(s’)を生成する。次に、第1関数部113dと同様にして、関数値G(s’)から検証値a’’と共有鍵K’とを生成し、生成した検証値a’’と共有鍵K’とを比較部127dへ出力する。
(7)比較部127d
比較部127dは、復号化部123dから復号検証値a’を受け取り、第4関数部126dから検証値a’’と共有鍵K’とを受け取り、次に、復号検証値a’と検証値a’’が等しいかどうかチェックを行い、復号検証値a’と検証値a’’とが等しければ、共有鍵K’を共通鍵復号部128へ出力する。
(8)共通鍵復号部128及び第2受信部129
共通鍵復号部128は、比較部127dから共有鍵K’を受け取る。
その他の点については、共通鍵復号部128は、復号装置120に含まれている共通鍵復号部128と同じであるので、ここでは、説明を省略する。
また、第2受信部129は、復号装置120に含まれている第2受信部129と同じであるので、ここでは、説明を省略する。
4.4 コンテンツ配信システム10dの動作
コンテンツ配信システム10dの動作について、図15に示すフローチャート及び図16に示す処理系統図を用いて説明する。
公開鍵入力部111dは、メモリカード160から復号装置120dの公開鍵多項式hを受け取り、公開鍵多項式hを暗号化部114dへ出力する(ステップS201)。
次に、乱数生成部112dは、乱数sを生成して、乱数sを第1関数部113dと乱数マスク部116dとへ出力する(ステップS202)。
次に、第1関数部113dは、乱数生成部112dから乱数sを受け取り、乱数sの関数値G(s)を生成する(ステップS203)。そして、第1関数部113dは、関数値G(s)から検証値aと共有鍵Kを生成して、検証値aを暗号化部114dと第2関数部115dとへ出力し、共有鍵Kを共通鍵暗号部118へ出力する(ステップS204)。
次に、暗号化部114dは、公開鍵入力部111dから公開鍵多項式hを受け取り、第1関数部113dから検証値aを受け取る。そして、暗号化部114dは、公開鍵多項式hを用いて検証値aの第1暗号文c1を生成し、第1暗号文c1を第2関数部115dと第1送信部117dとへ出力する(ステップS205)。
次に、第2関数部115dは、第1関数部113dから検証値aを受け取り、暗号化部114dから第1暗号文c1を受け取り、検証値aと第1暗号文c1との関数値H(a,c1)を生成し、関数値H(a,c1)を乱数マスク部116へ出力する(ステップS206)。
次に、乱数マスク部116dは、乱数生成部112dから乱数sを受け取り、第2関数部115dから関数値H(a,c1)を受け取り、乱数マスク部116dは、第2暗号文c2=s xor H(a,c1)を生成し、第2暗号文c2を第1送信部117dへ出力する(ステップS207)。
次に、第1送信部117dは、暗号化部114dから第1暗号文c1を受け取り、乱数マスク部116dから第2暗号文c2を受け取り、第1暗号文c1と第2暗号文c2とをインターネット130を介して復号装置120dへ送信する(ステップS208)。
次に、共通鍵暗号部118は、コンテンツサーバ装置140から複数の平文mi(1≦i≦n)を受け取り、第1関数部113dから共有鍵Kを受け取り、共有鍵Kを使用して平文mi(1≦i≦n)に共通鍵暗号アルゴリズムSymを施して、共通鍵暗号文Ci=Sym(mi,K)(1≦i≦n)を生成し、共通鍵暗号文Ci(1≦i≦n)を第2送信部119へ出力する(ステップS209)。
次に、第2送信部119は、共通鍵暗号部118から共通鍵暗号文Ci(1≦i≦n)を受け取り、インターネット130を介して復号装置120dへ送信し(ステップS210)、処理を終了する。
一方、秘密鍵入力部121dは、メモリカード170から復号装置120dの秘密鍵多項式fを受け取り、秘密鍵多項式fを復号化部123へ出力する(ステップS251)。
次に、第1受信部122dは、インターネット130を介して暗号装置110dから第1暗号文c1と第2暗号文c2とを受け取り、第1暗号文c1を復号化部123dと第3関数部124dとへ出力し、第2暗号文c2を乱数マスク除去部125dへ出力する(ステップS208)。
次に、復号化部123dは、秘密鍵入力部121から秘密鍵多項式fを受け取り、第1受信部122dから第1暗号文c1を受け取り、次に、秘密鍵多項式fを用いて、第1暗号文c1を復号して復号検証値a’を生成し、復号検証値a’を第3関数部124dと比較部127dへ出力する(ステップS252)。
次に、第3関数部124dは、第1受信部122dから第1暗号文c1を受け取り、復号化部123dから復号検証値a’を受け取り、次に、第2関数部115dと同様にして、検証値a’と第1暗号文c1の関数値H(a’,c1)を生成し、関数値H(a’,c1)を乱数マスク除去部125dへ出力する(ステップS253)。
次に、乱数マスク除去部125dは、第1受信部122dから第2暗号文c2を受け取り、第3関数部124dからハッシュ関数値H(a’,c1)を受け取り、次に、復号乱数s’=c2 xor H(a’,c1)を生成し、復号乱数sを第4関数部126dへ出力する(ステップS254)。
次に、第4関数部126dは、乱数マスク除去部125から復号乱数s’を受け取り、復号乱数s’のハッシュ関数値G(s’)を生成し(ステップS255)、第1関数部113dと同様にして、関数値G(s’)から検証値a’’と共有鍵K’とを生成して、検証値a’’と共有鍵K’とを比較部127dへ出力する(ステップS256)。
次に、比較部127dは、復号化部123から復号検証値a’を受け取り、第4関数部126dから検証値a’’と共有鍵K’とを受け取り、復号検証値a’と検証値a’’とが等しいかどうかチェックを行い、等しくなければ(ステップS257)、処理を終了する。
復号検証値a’と検証値a’’とが等しければ(ステップS257)、比較部127dは、共有鍵K’を共通鍵復号部128へ出力する(ステップS258)。
次に、第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)、処理を終了する。
4.5 コンテンツ配信システム10dの動作検証
以下に、コンテンツ配信システム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へ送信する。
すなわち、この暗号装置110dは、以下の処理を行い、暗号文C=(c1,c2)を復号装置120dへ送信する。
・乱数sを生成する。
・G(s)を生成し、G(s)からa,Kを生成する。
・公開鍵多項式hを用いて検証値aの第1暗号文c1を生成する。
・c2=s xor H(a,c1)を生成する。
・共有鍵Kと暗号文C=(c1,c2)を出力する。
次に、暗号装置110dは、導出した共有鍵Kを用いて、コンテンツサーバ装置140から入力された平文mi(1≦i≦n)を共通鍵暗号で暗号化して暗号文Ci(1≦i≦n)を生成し、インターネット130を介して復号装置120dへ送信する。
一方、復号装置120dは、復号装置120dの秘密鍵多項式fを入力とし、インターネット130を介して暗号装置110dから第1暗号文c1と第2暗号文c2とを受信し、第1暗号文c1を秘密鍵多項式fを用いて復号して復号検証値a’を生成する。復号検証値a’と第1暗号文c1から関数値H(a’,c1)を生成し、第2暗号文c2と関数値H(a’,c1)から復号乱数s’=c2 xor H(a’,c1)を生成する。次に、復号装置120dは、復号乱数s’の関数値G(s’)から検証値a’’と共有鍵K’を導出し、検証値a’’=a’であれば共有鍵K’を出力する。
すなわち、この復号装置120dは、以下の処理を行い、共有鍵K’を導出する。
・秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する。
・s’=c2 xor H(a’,c1)を生成する。
・G(s’)を生成し、G(s’)からa’’,K’を生成する。
・a’’=a’が成立するかどうかチェックする。成立すれば共有鍵K’を出力する。
ここで、暗号装置110dで用いられた公開鍵多項式hに対応する正しい秘密鍵多項式fが復号装置120dで用いられれば、第1暗号文c1は正しく復号されて、復号検証値a’=aとなり、第2暗号文c2とH(a’,c1)から生成される復号乱数s’=sとなる。従って、G(s’)から導出される検証値a’’=aとなり、共有鍵K’=Kとなる。そして、a’’=a’が成り立つので、復号装置120dは暗号装置110dと同じ共有鍵Kを導出できることになる。
次に、復号装置120dは、導出した共有鍵K’(=K)を用いて、インターネット130を介して暗号装置110dから共通鍵暗号文Ci(1≦i≦n)を受け取り、受け取った共通鍵暗号文Ci(1≦i≦n)を共通鍵暗号で復号して復号文mi’(1≦i≦n)を生成して再生装置150へ出力する。
ここで、共通鍵暗号文生成時に用いた暗号鍵Kと復号文生成時に用いる暗号鍵K’は同一であるので、復号装置120dは、正しくmi’=mi(1≦i≦n)を得ることができる。
4.6 実施の形態3における効果
従来の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アルゴリズムを適用できないという問題点がある。
しかしながら、本発明のコンテンツ配信システム、暗号装置及び復号装置は、ハッシュ関数Hの入力を検証値aとその暗号文c1としているので、PSEC−KEMアルゴリズムを適用して、NTRU暗号や他の公開鍵暗号を利用できる。
なお、NTRU暗号では、公開鍵を用いて平文を暗号化して暗号文を生成し、正規の秘密鍵を用いて暗号文を復号して復号文を生成しても、復号文が元の平文と異なる場合が発生する(例えば、非特許文献2参照。)。このような復号エラーが発生すると、復号装置は誤った復号検証値a’を得ることになるが、G(s’)から得られる検証値a’’はa’と等しくならないために、共有鍵K’を出力しない。従って、復号エラーが発生しても、暗号装置と復号装置との間で誤った鍵を共有することを防止できるという効果がある。
また、復号装置において、再度暗号文を生成する処理を行わないので、従来技術と比較すると、演算量を削減することができる。
これにより、NTRU暗号を用いて鍵カプセル化メカニズムを構成することができ、暗号装置と復号装置との間でNTRU暗号を用いて鍵配送が行えるようになる。
また、本発明による方式は、非特許文献3に記述されている証明方法と同様の方法により、理論的にその安全性が証明できる。
4.7 変形例
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。以下のような場合も本発明に含まれる。
(1)用いるNTRU暗号のパラメータN=167に限定されない。パラメータNは、他の値をとるとしてもよい。
(2)暗号化部114d、第2関数部115d、復号化部123d及び第3関数部124dで行われるビット列と多項式との変換方法は、この方法に限られず他の変換方法でもよい。
例えば、ビット列と多項式を1対1に対応させる関数、又は関数値のテーブルを用いて変換してもよい。
また、例えば、実施の形態2の変形例(1)に述べた変換方法を用いて変換してもよい。
(3)暗号化部114d及び復号化部123dで用いる公開鍵暗号方式は、暗号化部114dにおいて、検証値aを公開鍵で暗号化して第1暗号文c1を生成し、復号化部123dにおいて、第1暗号文c1を秘密鍵で復号して、検証値aと等しい復号検証値a’を生成できればよい。
従って、暗号化部114d、復号化部123dで用いる公開鍵暗号は、NTRU暗号以外に、どんな公開鍵暗号でも利用できる。
例えば、RSA暗号を採用するならば、h、fをそれぞれRSA暗号の公開鍵、秘密鍵とし、暗号化部114dにおいて、aをhを用いて暗号化してc1を生成し、復号化部123dにおいて、c1をfを用いて復号してa’を生成すればよい。
また、例えば、ElGamal暗号採用するならば、h,fをそれぞれElGamal暗号の公開鍵,秘密鍵とし、暗号化部114dにおいて、乱数rを生成してaをhとrを用いて暗号化してc1を生成し、復号化部123dにおいて、c1をfを用いて復号してa’を生成すればよい。
なお、RSA暗号やElGamal暗号について非特許文献1に詳細に記載されているため、ここでは説明を省略する。
(4)第1関数部113dは、関数値G(s)の上位kビットを検証値aをして下位kビットを共有鍵Kとする以外に、関数値G(s)から検証値aと共有鍵Kを導出すれば他の方法でもよい。
(5)第2関数部115dは、検証値aと第1暗号文c1から関数値H(a,c1)を導出すれば他の方法でもよい。
例えば、任意の2項演算#に対し、a#c1を関数Hに入力して関数値を導出してもよい。なお、NTRU暗号では第1暗号文c1は多項式であるので、第1暗号文c1から第1暗号文ビット列c1’に変換し、a#c1’を関数Hに入力して関数値を導出してもよい。
(6)さらに、第2関数部115dは、検証値aを用いて関数値を導出すれば、他の方法でもよい。
例えば、第2関数部115dは、H(a)を出力してもよいし、検証値aをそのまま出力してもよい。すなわち、暗号装置110dにおいて、第2暗号文c2を
・c2=s xor H(a)、又は
・c2=s xor aとして導出してもよい。
これらの場合において、復号装置120dの第3関数部124dは、それぞれ、
・H(a’) 又は
・a’
を出力する。
(7)乱数マスク部116dは、乱数sと関数値H(a,c1)とから第2暗号文c2を導出し、乱数マスク除去部125dは、第2暗号文c2と関数値H(a,c1)とから乱数sが導出できれば、他の方法でもよい。
例えば、乱数マスク部116dは、第2暗号文c2を
・c2=s+H(a,c1)、又は
・c2=s・H(a,c1)
として導出してもよい。
5.実施の形態4
本発明に係るさらに別の実施の形態としてのコンテンツ配信システム10e(図示していない)について説明する。
コンテンツ配信システム10eは、実施の形態3に示すコンテンツ配信システム10dを基本として、これを変形したシステムであり、暗号装置が、関数値G(s)から検証値aと共有鍵Kの他に乱数値uを生成し、乱数値uを用いて検証値aを暗号化して第1暗号文c1を生成する点と、復号装置が、共有鍵Kを出力するときの判断の方法とにおいて、コンテンツ配信システム10dと異なる。
ここでは、コンテンツ配信システム10eについて、コンテンツ配信システム10dとの差異点を中心に詳しく説明する。
5.1 コンテンツ配信システム10eの構成
コンテンツ配信システム10eは、コンテンツ配信システム10dと同様の構成を有しており、暗号装置110d及び復号装置120dに代えて、暗号装置110e及び復号装置120eを含んでいる。その他の構成については、コンテンツ配信システム10dにおけるものと同様であるので説明を省略する。
コンテンツ配信システム10eは、NTRU暗号を用いて鍵配送を行うシステムである。暗号装置110eと復号装置120eとは、インターネット130を介して接続されている。
5.2 暗号装置110eの構成
暗号装置110eは、図17に示すように、公開鍵入力部111d、乱数生成部112d、第1関数部113e、暗号化部114e、第2関数部115d、乱数マスク部116d、第1送信部117d、共通鍵暗号部118及び第2送信部119から構成されている。
公開鍵入力部111d、乱数生成部112d、第2関数部115d、乱数マスク部116d、第1送信部117d、共通鍵暗号部118及び第2送信部119は、暗号装置110dを構成する構成要素と同一であるので、説明を省略し、ここでは、暗号装置110dを構成する構成要素と異なる第1関数部113e及び暗号化部114eについてその構成と動作を説明する。
(1)第1関数部113e
第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とする。
次に、第1関数部113eは、生成した検証値aを暗号化部114eと第2関数部115dとへ出力し、生成した共有鍵Kを共通鍵暗号部118へ出力し、生成した乱数値uを暗号化部114eへ出力する。
(2)暗号化部114e
暗号化部114eは、公開鍵入力部111dから公開鍵多項式hを受け取り、第1関数部113eから検証値aと乱数値uとを受け取る。次に、以下に示すようにして、公開鍵多項式hと乱数値uとを用いて検証値aの第1暗号文c1を生成する。ここで、第1暗号文c1は、NTRU暗号による暗号文である。また、乱数値uは、ブラインド値であり、暗号化の対象である検証値aを不明瞭にするために用いられる。
暗号化部114eは、NTRU暗号のパラメータdに対し、d個の項の各係数が「1」であり、他のd個の項の各係数が「−1」であり、残りの項の各係数が「0」となる乱数多項式rを乱数値uから一意に求まるように生成する。
具体的には、例えば、暗号化部114eは、乱数値uを擬似乱数系列の初期値(乱数シード)として設定し、{0,1,...,N−1}から重複しない2d個の擬似乱数を生成し、最初のd個の擬似乱数により示される次元の項の係数を「1」とし、次のd個の擬似乱数により示される次元の項の係数を「−1」とし、残りの次元の項の係数を「0」とすることにより、乱数多項式rを生成する。
次に、暗号化部114eは、生成した乱数多項式rを用いて、暗号化部114dと同様にして、第1暗号文c1=E(ap,r,h)を生成する。
次に、暗号化部114eは、生成した第1暗号文c1を第2関数部115dと第1送信部117dとへ出力する。
5.3 復号装置120eの構成
復号装置120eは、図18に示すように、秘密鍵入力部121e、復号化部123e、第3関数部124d、乱数マスク除去部125d、第4関数部126e、比較部127e、共通鍵復号部128及び第2受信部129から構成されている。
ここで、第3関数部124d、乱数マスク除去部125d、共通鍵復号部128及び第2受信部129については、復号装置120dに含まれている各構成要素と同一であるので、説明を省略し、復号装置120dに含まれている各構成要素と異なる秘密鍵入力部121e、復号化部123e、第4関数部126e及び第2比較部127eについてその構成と動作を説明する。
(1)秘密鍵入力部121e
秘密鍵入力部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へ出力する。
(3)第4関数部126e
第4関数部126eは、第1関数部113eが有する関数と同じ関数Gによるアルゴリズムを有している。
第4関数部126eは、乱数マスク除去部125dから復号乱数s’を受け取り、受け取った復号乱数s’のハッシュ関数値G(s’)を生成する。次に、第1関数部113eと同様にして、関数値G(s’)から検証値a’’と共有鍵K’と乱数値u’とを生成し、検証値a’’と共有鍵K’と乱数値u’とを比較部127eへ出力する。
(4)比較部127e
比較部127eは、図18に示すように、比較演算部127p及び暗号化部127qから構成されている。
暗号化部127qは、秘密鍵入力部121eから公開鍵多項式hを受け取り、第4関数部126eから検証値a’’と乱数値u’とを受け取る。次に、受け取った公開鍵多項式hと乱数値u’とを用いて、暗号化部114dと同様にして、受け取った検証値a’’を暗号化して第1再暗号文c1’を生成し、生成した第1再暗号文c1’を比較演算部127pへ出力する。
比較演算部127pは、復号化部123bから第1暗号文c1を受け取り、暗号化部127qから第1再暗号文c1’を受け取る。次に、受け取った第1暗号文c1と第1再暗号文c1’とを比較して、c1’=c1であるか否かを判断する。c1’=c1であれば、受け取った共有鍵K’を共通鍵復号部128へ出力し、c1’=c1でなければ、受け取った共有鍵K’を出力しない。
5.4 コンテンツ配信システム10eの動作検証
以下に、コンテンツ配信システム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)。
すなわち、この暗号装置110eは、以下の処理(a)〜(d)を行い、暗号文C=(c1,c2)を復号装置120eへ送信する。
(a)乱数sを生成する。
(b)G(s)を生成し、G(s)からa,K,uを生成する。
(c)公開鍵多項式h,乱数値uを用いて検証値aの第1暗号文c1を生成する。
(d)c2=s xor H(a,c1)を生成する。
次に、暗号装置110eは、導出した共有鍵Kを用いて、コンテンツサーバ装置140から入力された平文mi(1≦i≦n)を共通鍵暗号で暗号化して暗号文Ci(1≦i≦n)を生成し(ステップS209)、インターネット130を介して復号装置120eへ送信する(ステップS210)。
一方、復号装置120eは、復号装置120eの秘密鍵多項式f及び公開鍵多項式hを受け取り(ステップS251、ステップS251e)、インターネット130を介して暗号装置110eから第1暗号文c1と第2暗号文c2を受信し(ステップS208)、第1暗号文c1を秘密鍵多項式fを用いて復号して復号検証値a’を生成する(ステップS252)。次に、復号検証値a’と第1暗号文c1から関数値H(a’,c1)を生成し(ステップS253)、第2暗号文c2と関数値H(a’,c1)から復号乱数s’=c2 xor H(a’,c1)を生成する(ステップS254)。次に、復号装置120eは、復号乱数s’の関数値G(s’)を生成し(ステップS255)、生成した関数値G(s’)から検証値a’’、共有鍵K’及び乱数値u’を導出する(ステップS256e)。次に、検証値a’’を暗号化して第1再暗号文c1’を生成し(ステップS261)、c1’=c1であれば(ステップS257e)、共有鍵K’を出力する(ステップS258)。
すなわち、復号装置120eは、以下の処理(a)〜(e)を行い、共有鍵K’を導出する。
(a)秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する。
(b)s’=c2 xor H(a’,c1)を生成する。
(c)G(s’)を生成し、G(s’)からa’’,K’,u’を生成する。
(d)公開鍵多項式h及び乱数値u’を用いてa’’の第1再暗号文c1’を生成する。
(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を導出できることになる。
次に、復号装置120eは、導出した共有鍵K’(=K)を用いて、インターネット130を介して暗号装置110eから共通鍵暗号文Ci(1≦i≦n)を受信し(ステップS210)、受信した共通鍵暗号文Ci(1≦i≦n)を共通鍵暗号で復号して復号文mi’(1≦i≦n)を生成し(ステップS259)、生成した復号文mi’(1≦i≦n)を再生装置150へ出力する。
ここで、共通鍵暗号文生成時に用いた暗号鍵Kと復号文生成時に用いる暗号鍵K’とは同一であるので、復号装置120eは、正しくmi’=mi(1≦i≦n)を得ることができる。
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アルゴリズムを適用できないという問題点がある。
しかしながら、本発明のコンテンツ配信システム、暗号装置及び復号装置では、ハッシュ関数Hの入力を検証値aとその暗号文c1としたので、実施の形態3と同様に、NTRU暗号や他の公開鍵暗号を適用できる。
なお、復号エラーが発生すると、復号装置は誤った復号検証値a’を得ることになるが、c1’はc1と等しくならないために、共有鍵K’を出力しない。従って、復号エラーが発生しても、暗号装置と復号装置との間で誤った鍵を共有することを防止できるという効果もある。
これにより、NTRU暗号を用いて鍵カプセル化メカニズムを構成することができ、暗号装置と復号装置との間でNTRU暗号を用いて鍵配送が行えるようになる。
また、本発明による方式は、非特許文献3に記述されている証明方法と同様の方法により、理論的にその安全性が証明できる。
5.6 変形例
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その主旨を逸脱しない範囲において種々なる態様で実施し得るものである。実施の形態3におけるのと同様の変形を施すことができるのはもちろんであるが、以下のような場合も本発明に含まれる。
(1)暗号化部114eで行われる乱数値uから乱数多項式rへの変換方法は、この方法に限られずuからrが一意に求まれば他の変換方法でもよい。例えば、乱数値uを多項式に対応させる関数、又は関数値テーブルを用いて変換してもよい。
また、例えば、実施の形態2の変形例(1)に述べた変換方法を用いて変換してもよい。
(2)暗号化部114e及び復号化部123eで用いる公開鍵暗号は、暗号化部114eにおいて、検証値aを公開鍵と乱数値uとを用いて暗号化して第1暗号文c1を生成し、復号化部123eにおいて、第1暗号文c1を秘密鍵で復号して、検証値aと等しい復号検証値a’を生成できればよい。従って、暗号化部114e及び復号化部123eで用いる公開鍵暗号は、NTRU暗号以外に、乱数を用いる公開鍵暗号ならばどんな暗号でも利用できる。
例えば、ElGamal暗号ならば、h、fをそれぞれElGamal暗号の公開鍵、秘密鍵とし、暗号化部114eにおいて、aをhと乱数値uとを用いて暗号化してc1を生成し、復号化部123eにおいて、c1をfを用いて復号してa’を生成すればよい。
(3)乱数値uは、第1関数部113e及び第4関数部126eで生成される以外にも、暗号装置110eと復号装置120eとで同じ値を得られれば、他の生成方法でもよい。
例えば、任意の関数Funcに対し、u=Func(s)として暗号装置110eと復号装置120eとで同じ値を得られるようにしてもよい。すなわち、
・G(s)を生成し、G(s)からa、Kを生成する。
・Func(s)を生成し、u=Func(s)とする。
としてもよい。
(4)さらに、乱数値uは、第1関数部113e及び第4関数部126eで生成される以外にも、暗号装置110eと復号装置120eとで同じ値を得られればよいため、暗号装置110eが乱数値uを復号装置120eに直接送信してもよい。
すなわち、以下のように、暗号文Cと乱数値uとを復号装置120eに送信してもよい。
・G(s)を生成し、G(s)からa、Kを生成する。
・暗号装置110eは、別途、乱数値uを、復号装置120eへ送信する。
また、暗号装置110eは、乱数値uを暗号化して送信してもよい。
(5)さらに、乱数値uは、暗号装置110eと復号装置120eとで同じ値を得られればよいため、乱数値uの一部から構成される部分情報を第1関数部113e及び第4関数部126eで生成し、乱数値uの残りの部分情報を暗号装置110eから復号装置120eに直接送信してもよい。
例えば、以下のように、暗号文Cと乱数値u2とを復号装置120eに送信してもよい。
・G(s)を生成し、G(s)からa、K、u1を生成する。
・暗号装置110eは、別途、乱数値u2を、復号装置120eへ送信する。
・乱数値uを、u=u1 xor u2により生成する。
また、暗号装置110eは、乱数値u2を暗号化して送信してもよい。
(6)復号装置120eは、第1暗号文c1が第4関数部126eで得られる検証値a’’の暗号文かどうかチェックを行い、c1がa’’の暗号文であるときに共有鍵K’を用いて共通鍵暗号文Ciを復号しているが、実施の形態3の復号装置120dと同じチェック方法により行うとしてもよい。
すなわち、図20の処理系統図に示すように、復号装置120dと同じ復号化部123d及び比較部127dを用いて、以下のように、チェックしてもよい。
(a)秘密鍵多項式fを用いて第1暗号文c1を復号してa’を生成する(ステップS252)。
(b)s’=c2 xor H(a’,c1)を生成する(ステップS254)。
(c)G(s’)を生成し(ステップS255)、G(s’)からa’’、K’、u’を生成する(ステップS256e)。
(d)a’’=a’が成立するかどうかチェックする(ステップS257)。成立すれば共有鍵K’を出力する(ステップS258)。
また、このチェックは、第1暗号文c1が復号検証値a’の暗号文かどうかのチェックでもよい。
7.実施の形態3及び実施の形態4のまとめ
以上説明したように、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと前記共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
また、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データと前記第1の暗号予備データを所定の処理に基づいて検証値データと前記共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
また、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと乱数データと前記共有鍵データとに変換する共有鍵導出部と、前記検証値データを前記公開鍵データと前記乱数データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
また、本発明は、共有鍵データと、予め与えられた公開鍵データに基づいて前記共有鍵データを暗号化した暗号化共有鍵データを出力する共有鍵生成装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと乱数データと前記共有鍵データとに変換する共有鍵導出部と、前記検証値データを前記公開鍵データと前記乱数データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データと前記第1の暗号予備データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部とを備え、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2の暗号予備データから構成される。
ここで、前記秘密数データは、ランダムに生成される乱数であるとしてもよい。
ここで、前記共有鍵導出部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
ここで、前記第1の暗号化部は、NTRU暗号方式により暗号化して前記第1の暗号予備データを生成するとしてもよい。
ここで、前記検証値変換部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
ここで、前記検証値変換部は、所定の処理として、前記検証値データをそのまま前記変換検証値データとするとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データと前記変換検証値データの排他的論理和演算を行って前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データを、前記変換検証値データを暗号鍵として用いて共通鍵暗号方式により暗号化して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データに前記変換検証値データを加算して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記秘密数データに前記変換検証値データを乗算して前記第2の暗号予備データを生成するとしてもよい。
ここで、前記暗号化共有鍵データは、前記第1の暗号予備データと前記第2暗号予備データのビット連結データであるとしてもよい。
また、本発明は、予め与えられた秘密鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力すると有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと前記共有鍵データに変換する共有鍵導出部とを備え、前記検証値データと前記検証値検証データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データと前記第1の暗号予備データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと前記共有鍵データに変換する共有鍵導出部とを備え、前記検証値データと前記検証値検証データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部とを備え、前記検証値データと前記検証値検証データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データと前記第1の暗号予備データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部とを備え、前記検証値データと前記検証値検証データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部と、前記検証値検証データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データと前記第1の暗号予備データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部と、前記検証値検証データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記共有鍵データを出力する。
また、本発明は、予め与えられた秘密鍵データ及び公開鍵データに基づいて、第1の暗号予備データと第2の暗号予備データから構成される暗号化共有鍵データを復号して共有鍵データを出力する共有鍵復元装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データと前記第1の暗号予備データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと乱数データと前記共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データと前記乱数データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記第1の暗号予備データと前記第3の暗号予備データが一致する場合に、前記共有鍵データを出力する。
ここで、前記共有鍵導出部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
ここで、前記第1の復号化部は、NTRU暗号方式により復号化して検証値データを生成するとしてもよい。
ここで、前記検証値変換部は、所定の処理として、一方向性ハッシュ関数を用いるとしてもよい。
ここで、前記検証値変換部は、所定の処理として、前記検証値データをそのまま前記変換検証値データとするとしてもよい。
ここで、前記第2の復号化部は、前記第2の暗号予備データと前記変換検証値データの排他的論理和演算を行って前記秘密数データを生成するとしてもよい。
ここで、前記第2の復号化部は、前記第2の暗号予備データを、前記変換検証値データを暗号鍵として用いて共通鍵暗号方式により復号化して前記秘密数データを生成するとしてもよい。
ここで、前記第2の復号化部は、前記第2の暗号予備データに前記変換検証値データを減算して前記秘密数データを生成するとしてもよい。
ここで、前記第2の暗号化部は、前記第2の暗号予備データを前記変換検証値データで除算して前記秘密数データを生成するとしてもよい。
また、本発明は、予め与えられた公開鍵データに基づいて平文データを暗号化した暗号文データを生成する暗号装置であって、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部と、前記平文データを前記共有鍵データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記暗号文データは、前記第1の暗号予備データと前記第2の暗号予備データと前記第3の暗号予備データから構成される。
また、本発明は、予め与えられた秘密鍵データに基づいて、第1の暗号予備データと第2の暗号予備データと第3の暗号予備データから構成される暗号文データを復号して復号文データを出力する復号装置であって、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して検証値データを生成する第1の復号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと共有鍵データに変換する共有鍵導出部とを備え、前記検証値データと前記検証値検証データが一致する場合に、前記第3の暗号予備データを前記共有鍵データに基づいて復号化して前記復号文データを生成する復号部とを備える。
また、本発明は、予め与えられた公開鍵データに基づいて平文データを暗号化した暗号文データを生成する暗号装置、及び予め与えられた秘密鍵データに基づいて暗号文データを復号して復号文データを出力する復号装置からなる暗号システムである。前記暗号装置は、秘密数データを生成する秘密数データ生成部と、前記秘密数データを所定の処理に基づいて検証値データと共有鍵データに変換する共有鍵導出部と、前記検証値データを前記公開鍵データに基づいて暗号化して第1の暗号予備データを生成する第1の暗号化部と、前記検証値データを所定の処理に基づいて変換検証値データに変換する検証値変換部と、前記秘密数データを前記変換検証値データに基づいて暗号化して第2の暗号予備データを生成する第2の暗号化部と、前記平文データを前記共有鍵データに基づいて暗号化して第3の暗号予備データを生成する第3の暗号化部とを備え、前記暗号文データは、前記第1の暗号予備データと前記第2の暗号予備データと前記第3の暗号予備データから構成される。前記復号装置は、前記第1の暗号予備データを前記秘密鍵データに基づいて復号化して前記検証値データを生成する第1の復号化部と、前記検証値データを所定の処理に基づいて前記変換検証値データに変換する検証値変換部と、前記第2の暗号予備データを前記変換検証値データに基づいて復号化して前記秘密数データを生成する第2の復号化部と、前記秘密数データを所定の処理に基づいて検証値検証データと共有鍵データに変換する共有鍵導出部とを備え、前記検証値データと前記検証値検証データが一致する場合に、前記第3の暗号予備データを前記共有鍵データに基づいて復号化して前記復号文データを生成する復号部とを備える。
以上に説明したように、本発明は、従来システムにおける問題点を鑑みて行われたもので、暗号システムにおいて、NTRU暗号を適用できる鍵カプセル化メカニズムを構成することで、暗号装置と復号装置との間でNTRU暗号を用いて鍵配送が行えるようになる。
以上により、従来技術では達成できなかった暗号システムを提供することができ、その価値は大きい。
8.その他の変形例
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)暗号装置が、インターネットを介して、各暗号文を復号装置へ送信する代わりに、暗号装置は、各暗号文をDVDなどの記録媒体に書き込み、復号装置は、記録媒体から各暗号文を読み出すとしてもよい。
(2)本発明で用いるNTRU暗号は、非特許文献2に記載の方式以外に、EESS(Efficient Embedded Security Standard)方式のNTRU暗号であってもよい。EESS方式のNTRU暗号については、“EESS;Consortium for Efficient Embedded Security, Efficient Embedded Security Standards #1:Implementation Aspects of NTRU Encrypt and NTRU Sign, Version 2.0 ," available at http://ceesstandards.org , May 2003.に詳細に記述されている。このため、ここではその詳細については説明を省くが、以下に簡単に説明する。
EESS方式のNTRU暗号では、乱数多項式rは、d個の係数が1であり、(N−d)個の係数が0である多項式、もしくはこのような複数の多項式を用いて計算される多項式である。従って、上記の実施の形態において、乱数多項式rを生成する際に、このような多項式となるように生成すれば、NTRU暗号の代わりにEESS方式のNTRU暗号を用いることができ、同様の効果が得られる。
(3)コンテンツ配信システムは、次に示すように構成してもよい。
コンテンツ配信システムは、コンテンツサーバ装置と暗号装置と放送装置と受信装置と復号装置と再生装置とモニタとから構成されている。
暗号装置と復号装置とは、コンテンツ配信システム10の暗号装置110と復号装置120とに対応している。
コンテンツサーバ装置と暗号装置とは、専用回線を介して接続されており、コンテンツサーバ装置は、映像と音声から構成される映画などのコンテンツを専用回線を介して暗号装置へ送信する。暗号装置と放送装置とは、専用回線を介して接続されている。暗号装置は、各暗号文を放送装置へ送信し、放送装置は、各暗号文を多重化し、デジタル放送波に乗せて放送する。
受信装置と復号装置とは、接続されており、復号装置と再生装置とは、接続されている。受信装置は、デジタル放送波を受信し、受信したデジタル放送波から各暗号文を抽出し、抽出した各暗号文を復号装置へ送信する。復号装置は、各暗号文を受け取り、受け取った各暗号文を用いて、再生コンテンツを生成し、生成した再生コンテンツを再生装置へ出力する。再生装置は、復号装置及びスピーカを内蔵するモニタに接続されている。再生装置は、再生コンテンツを受け取り、受け取った再生コンテンツから映像信号及び音声信号を生成し、モニタは、映像を表示し、音声を出力する。
(4)コンテンツサーバ装置と暗号装置とは、一体となった装置から構成されているとしてもよい。また、復号装置と再生装置とは、一体となった装置から構成されているとしてもよい。
(5)上記の各実施の形態において、メモリカード160は、予め公開鍵多項式hを記憶しており、メモリカード170は、予め秘密鍵多項式f及び公開鍵多項式hを記憶しており、暗号装置110及び復号装置120は、メモリカード160及びメモリカード170から、それぞれ公開鍵多項式、秘密鍵多項式を取得するとしているが、これには限定されない。
暗号装置110は、予め公開鍵多項式を記憶しており、復号装置120は、予め公開鍵多項式及び秘密鍵多項式を記憶しているとしてもよい。
また、鍵管理装置は、秘密鍵多項式及び公開鍵多項式を生成し、生成した秘密鍵多項式及び公開鍵多項式を秘密にかつ安全に復号装置120へ送信し、生成した公開鍵多項式を暗号装置110へ送信するとしてもよい。
(6)コンテンツ配信システムにおいて配信されるコンテンツは、映像と音声とからなる映画などのコンテンツには、限定されない。動画像、静止画像、音声、音楽、文書、小説、DBソフトにより生成されるデータベース、表計算ソフトにより生成される電子的な表データ、コンピュータプログラム、その他コンピュータ用データなどあってもよい。
また、前記コンテンツは、上記のような著作物ではなく、暗号化及び復号化、デジタル署名及び署名検証などに用いる鍵情報であるとしてもよい。
例えば、上記の各実施の形態により示されるようにして、暗号装置及び復号装置は、共有鍵を共有し、暗号装置は、コンテンツ鍵を共有鍵を用いて暗号化して暗号化コンテンツ鍵を生成し、コンテンツをコンテンツ鍵を用いて暗号化して暗号化コンテンツを生成し、生成した暗号化コンテンツ鍵と生成した暗号化コンテンツとを復号装置に送信する。復号装置は、暗号化コンテンツ鍵と暗号化コンテンツとを受信し、共有鍵を用いて、暗号化コンテンツ鍵を復号してコンテンツ鍵を生成し、生成したコンテンツ鍵を用いて暗号化コンテンツを復号してコンテンツを生成するとしてもよい。
(7)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(8)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
上記において説明したコンテンツ配布システムは、コンテンツ供給者から利用者に対して、音楽、映画、小説などのデジタル化された著作物を供給する産業において、経営的、反復的かつ継続的に使用される。また、コンテンツ配布システムを構成する暗号装置及び復号装置は、電化製品などを製造する電機機器産業において、製造され、販売される。
特に、デシタル化された著作物を、DVDなどの記録媒体に格納して市場に流通させることにより、ネットワークを介して流通させることにより、又は放送により、供給する産業において好適である。
図1は、コンテンツ配信システム10の構成と、構成要素の間の接続形態とを示す概念図である。 図2は、暗号装置110の構成を示すブロック図である。 図3は、復号装置120の構成を示すブロック図である。 図4は、暗号装置110及び復号装置120の動作を示す処理系統図である。 図5は、暗号装置110及び復号装置120の動作を示すフローチャートである。 図6は、暗号装置110bの構成を示すブロック図である。 図7は、復号装置120bの構成を示すブロック図である。 図8は、暗号装置110b及び復号装置120bの動作を示す処理系統図である。 図9は、暗号装置110cの構成を示すブロック図である。 図10は、復号装置120cの構成を示すブロック図である。 図11は、暗号装置110c及び復号装置120cの動作を示す処理系統図である。 図12は、暗号装置110c及び復号装置120cの変形例の動作を示す処理系統図である。 図13は、暗号装置110dの構成を示すブロック図である。 図14は、復号装置120dの構成を示すブロック図である。 図15は、暗号装置110d及び復号装置120dの動作を示すフローチャートである。 図16は、暗号装置110d及び復号装置120dの動作を示す処理系統図である。 図17は、暗号装置110eの構成を示すブロック図である。 図18は、復号装置120eの構成を示すブロック図である。 図19は、暗号装置110e及び復号装置120eの動作を示す処理系統図である。 図20は、暗号装置110e及び復号装置120eの変形例の動作を示す処理系統図である。
符号の説明
10 コンテンツ配信システム
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)

  1. 第3者に知られることなく共有鍵を生成する共有鍵生成装置及び共有鍵復元装置から構成される鍵共有システムであって、
    前記共有鍵生成装置は、
    シード値を生成するシード値生成手段と、
    生成された前記シード値から検証値及び共有鍵を生成する第1共有鍵生成手段と、
    生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化手段と、
    生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化手段と、
    生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信手段とを備え、
    前記共有鍵復元装置は、
    前記第1暗号化情報及び前記第2暗号化情報を受信する受信手段と、
    受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号手段と、
    生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号手段と、
    前記第1共有鍵生成手段と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する第2共有鍵生成手段と、
    生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断手段と、
    出力すると判断される場合に、生成された前記復号共有鍵を出力する出力手段とを備える
    ことを特徴とする鍵共有システム。
  2. 前記共有鍵生成装置は、さらに、
    コンテンツを取得する取得手段と、
    生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成する暗号化手段とを備え、
    前記送信手段は、さらに、生成された前記暗号化コンテンツを送信し、
    前記受信手段は、さらに、前記暗号化コンテンツを受信し、
    前記共有鍵復元装置は、さらに、
    出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成する復号手段と、
    生成された復号コンテンツを出力する出力手段とを備える
    ことを特徴とする請求項1に記載の鍵共有システム。
  3. 第3者に知られることなく共有鍵を相手の装置へ伝える共有鍵生成装置であって、
    シード値を生成するシード値生成手段と、
    生成された前記シード値から検証値及び共有鍵を生成する共有鍵生成手段と、
    生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化手段と、
    生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化手段と、
    生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信手段と
    を備えることを特徴とする共有鍵生成装置。
  4. 前記シード値生成手段は、乱数を生成し、生成した乱数を前記シード値とすることにより、前記シード値を生成する
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  5. 前記共有鍵生成手段は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値及び前記共有鍵を生成する
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  6. 前記共有鍵生成手段は、前記シード値に、前記一方向性関数として、ハッシュ関数を施して前記関数値を生成する
    ことを特徴とする請求項5に記載の共有鍵生成装置。
  7. 前記共有鍵生成手段は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成する
    ことを特徴とする請求項5に記載の共有鍵生成装置。
  8. 前記共有鍵生成手段は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成する
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  9. 前記第1暗号化手段は、
    公開鍵を取得する公開鍵取得部と、
    取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成する公開鍵暗号化部と含む
    ことを特徴とする請求項8に記載の共有鍵生成装置。
  10. 前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、
    前記公開鍵取得部は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し
    前記公開鍵暗号化部は、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成する
    ことを特徴とする請求項9に記載の共有鍵生成装置。
  11. 前記第1暗号化手段は、
    公開鍵を取得する公開鍵取得部と、
    取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成する公開鍵暗号化部と含む
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  12. 前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、
    前記公開鍵取得部は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し
    前記公開鍵暗号化部は、前記検証値から検証値多項式を生成し、ブラインド値を生成し、生成した前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成する
    ことを特徴とする請求項11に記載の共有鍵生成装置。
  13. 前記第2暗号化手段は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成する
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  14. 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成する
    ことを特徴とする請求項13に記載の共有鍵生成装置。
  15. 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして共通鍵暗号化アルゴリズムを施すことにより、前記第2暗号化情報を生成する
    ことを特徴とする請求項13に記載の共有鍵生成装置。
  16. 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして加算を施すことにより、前記第2暗号化情報を生成する
    ことを特徴とする請求項13に記載の共有鍵生成装置。
  17. 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして乗算を施すことにより、前記第2暗号化情報を生成する
    ことを特徴とする請求項13に記載の共有鍵生成装置。
  18. 前記第2暗号化手段は、前記検証値に、前記一方向性関数としてハッシュ関数を施して前記関数値を生成する
    ことを特徴とする請求項13に記載の共有鍵生成装置。
  19. 前記第2暗号化手段は、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施して第2暗号化情報を生成する
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  20. 前記第2暗号化手段は、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化する
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  21. 前記第2暗号化手段は、前記検証値及び前記第1暗号化情報に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成する
    ことを特徴とする請求項20に記載の共有鍵生成装置。
  22. 前記第2暗号化手段は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成する
    ことを特徴とする請求項21に記載の共有鍵生成装置。
  23. 前記共有鍵生成装置は、さらに、
    コンテンツを取得する取得手段と、
    生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成する暗号化手段とを備え、
    前記送信手段は、さらに、生成された前記暗号化コンテンツを送信する
    ことを特徴とする請求項3に記載の共有鍵生成装置。
  24. 第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置であって、
    前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、
    前記共有鍵復元装置は、
    前記第1暗号化情報及び前記第2暗号化情報を受信する受信手段と、
    受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号手段と、
    生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号手段と、
    前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成手段と、
    生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断手段と、
    出力すると判断される場合に、生成された前記復号共有鍵を出力する出力手段と
    を備えることを特徴とする共有鍵復元装置。
  25. 前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、
    前記第1復号手段は、
    前記公開鍵に対応する秘密鍵を取得する秘密鍵取得部と、
    取得された前記秘密鍵を用いて、受信した前記第1暗号化情報に、前記公開鍵暗号化アルゴリズムに対応する公開鍵復号アルゴリズムを施して前記第1復号検証値を生成する公開鍵復号部と含む
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  26. 前記公開鍵暗号化アルゴリズム及び前記公開鍵復号アルゴリズムは、NTRU暗号方式によるものであり、
    前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、ブラインド値を生成し、生成した前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、
    前記受信手段は、多項式としての前記第1暗号化情報を受信し、
    前記秘密鍵取得部は、前記秘密鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された秘密鍵多項式を取得し、
    前記公開鍵復号部は、NTRU暗号方式の前記暗号化アルゴリズムに対応する復号アルゴリズムにより、前記秘密鍵多項式を鍵として用いて、多項式としての前記第1暗号化情報を復号して、復号検証値多項式を生成し、生成した前記復号検証値多項式から前記第1復号検証値を生成する
    ことを特徴とする請求項25に記載の共有鍵復元装置。
  27. 前記共有鍵生成装置は、前記検証値に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、
    前記第2復号手段は、生成された前記第1復号検証値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、受信された前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して前記復号シード値を生成する
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  28. 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成し、
    前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして排他的論理和を施すことにより、前記復号シード値を生成する
    ことを特徴とする請求項27に記載の共有鍵復元装置。
  29. 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして共通鍵暗号化アルゴリズムを施すことにより、前記第2暗号化情報を生成し、
    前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、前記共通鍵暗号化アルゴリズムに対応する共通鍵復号アルゴリズムを施すことにより、前記復号シード値を生成する
    ことを特徴とする請求項27に記載の共有鍵復元装置。
  30. 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして加算を施すことにより、前記第2暗号化情報を生成し、
    前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、減算を施すことにより、前記復号シード値を生成する
    ことを特徴とする請求項27に記載の共有鍵復元装置。
  31. 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして乗算を施すことにより、前記第2暗号化情報を生成し、
    前記第2復号手段は、生成した前記復号関数値と前記第2暗号化情報とに、前記復号アルゴリズムとして、除算を施すことにより、前記復号シード値を生成する
    ことを特徴とする請求項27に記載の共有鍵復元装置。
  32. 前記共有鍵生成装置は、前記検証値に、前記一方向性関数としてハッシュ関数を施して前記関数値を生成し、
    前記第2復号手段は、生成された前記第1復号検証値に、前記一方向性関数として前記ハッシュ関数を施して前記復号関数値を生成する
    ことを特徴とする請求項27に記載の共有鍵復元装置。
  33. 前記共有鍵生成装置は、前記検証値を用いて、前記シード値に暗号化アルゴリズムを施して第2暗号化情報を生成し、
    前記第2復号手段は、生成された前記第1復号検証値を用いて、前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して、前記復号シード値を生成する
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  34. 前記共有鍵生成装置は、前記検証値及び前記第1暗号化情報を用いて、前記シード値を暗号化し、
    前記第2復号手段は、生成された前記第1復号検証値及び受信された前記第1暗号化情報を用いて、前記第2暗号化情報を復号して前記復号シード値を生成する
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  35. 前記共有鍵生成装置は、前記検証値及び前記第1暗号化情報に一方向性関数を施して関数値を生成し、生成した前記関数値を用いて、前記シード値に暗号化アルゴリズムを施して前記第2暗号化情報を生成し、
    前記第2復号手段は、前記第1復号検証値及び前記第1暗号化情報に前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値を用いて、前記第2暗号化情報に、前記暗号化アルゴリズムに対応する復号アルゴリズムを施して、前記復号シード値を生成する
    ことを特徴とする請求項34に記載の共有鍵復元装置。
  36. 前記共有鍵生成装置は、生成した前記関数値と前記シード値とに、前記暗号化アルゴリズムとして排他的論理和を施すことにより、前記第2暗号化情報を生成し、
    前記第2復号手段は、前記復号関数値及び前記第2暗号化情報に、前記復号アルゴリズムとして、排他的論理和を施すことにより、前記復号シード値を生成する
    ことを特徴とする請求項35に記載の共有鍵復元装置。
  37. 前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値及び前記共有鍵を生成し、
    前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値及び前記復号共有鍵を生成する
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  38. 前記共有鍵生成装置は、前記シード値に、前記一方向性関数として、ハッシュ関数を施して前記関数値を生成し、
    前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数として、前記ハッシュ関数を施して前記復号関数値を生成する
    ことを特徴とする請求項37に記載の共有鍵復元装置。
  39. 前記共有鍵生成装置は、生成された前記関数値の一部を前記検証値とし、他の一部を前記共有鍵とすることにより、前記検証値及び前記共有鍵を生成し、
    前記共有鍵生成手段は、生成された前記復号関数値の一部を前記第2復号検証値とし、他の一部を前記復号共有鍵とすることにより、前記第2復号検証値及び前記復号共有鍵を生成する
    ことを特徴とする請求項37に記載の共有鍵復元装置。
  40. 前記共有鍵生成装置は、前記シード値に一方向性関数を施して関数値を生成し、生成した前記関数値から前記検証値、前記共有鍵及びブラインド値を生成し、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、
    前記共有鍵生成手段は、生成された前記復号シード値に、前記一方向性関数を施して復号関数値を生成し、生成した前記復号関数値から前記第2復号検証値、前記復号共有鍵及び復号ブラインド値を生成する
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  41. 前記共有鍵生成装置は、公開鍵を取得し、取得された前記公開鍵及び生成された前記ブラインド値を用いて、前記検証値に公開鍵暗号化アルゴリズムを施して前記第1暗号化情報を生成し、
    前記判断手段は、前記第1復号検証値及び前記第2復号検証値に基づく前記判断に代えて、
    前記公開鍵を取得する公開鍵取得部と、
    取得された前記公開鍵及び生成された前記復号ブラインド値を用いて、生成された前記第1復号検証値又は前記第2復号検証値に前記公開鍵暗号化アルゴリズムを施して再暗号化情報を生成する再暗号化部と、
    受信された前記第1暗号化情報及び生成された前記再暗号化情報に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断部とを備える
    ことを特徴とする請求項40に記載の共有鍵復元装置。
  42. 前記判断部は、前記第1暗号化情報と前記再暗号化情報とを比較し、前記第1暗号化情報と前記再暗号化情報とが一致する場合に、前記復号共有鍵を出力すると判断する
    ことを特徴とする請求項41に記載の共有鍵復元装置。
  43. 前記公開鍵暗号化アルゴリズムは、NTRU暗号方式によるものであり、
    前記共有鍵生成装置は、前記公開鍵として、NTRU暗号方式の鍵生成アルゴリズムにより生成された公開鍵多項式を取得し、前記検証値から検証値多項式を生成し、前記ブラインド値からブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記検証値多項式を攪乱するために前記ブラインド値多項式を用いて、前記検証値多項式を暗号化して、多項式としての前記第1暗号化情報を生成し、
    前記公開鍵取得部は、前記公開鍵多項式を取得し、
    前記再暗号化部は、前記第2復号検証値から復号検証値多項式を生成し、前記復号ブラインド値から復号ブラインド値多項式を生成し、NTRU暗号方式の暗号化アルゴリズムにより、前記公開鍵多項式を鍵として用い、前記復号検証値多項式を攪乱するために前記復号ブラインド値多項式を用いて、前記復号検証値多項式を暗号化して、多項式としての前記再暗号化情報を生成する
    ことを特徴とする請求項41に記載の共有鍵復元装置。
  44. 前記判断手段は、前記第1復号検証値と前記第2復号検証値とを比較し、一致する場合に、前記復号共有鍵を出力すると判断する
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  45. 前記共有鍵生成装置は、さらに、コンテンツを取得し、生成された前記共有鍵を用いて、取得されたコンテンツを暗号化して、暗号化コンテンツを生成し、生成された前記暗号化コンテンツを送信し、
    前記受信手段は、さらに、前記暗号化コンテンツを受信し、
    前記共有鍵復元装置は、さらに、
    出力された前記復号共有鍵を用いて、受信された前記暗号化コンテンツを復号して、復号コンテンツを生成する復号手段と、
    生成された復号コンテンツを出力する出力手段とを備える
    ことを特徴とする請求項24に記載の共有鍵復元装置。
  46. 第3者に知られることなく共有鍵を相手の装置へ伝える共有鍵生成装置で用いられる共有鍵生成方法であって、
    シード値を生成するシード値生成ステップと、
    生成された前記シード値から検証値及び共有鍵を生成する共有鍵生成ステップと、
    生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化ステップと、
    生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化ステップと、
    生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信ステップと
    を含むことを特徴とする共有鍵生成方法。
  47. 第3者に知られることなく共有鍵を相手の装置へ伝える共有鍵生成装置で用いられる共有鍵生成プログラムであって、
    シード値を生成するシード値生成ステップと、
    生成された前記シード値から検証値及び共有鍵を生成する共有鍵生成ステップと、
    生成された前記検証値を暗号化して、第1暗号化情報を生成する第1暗号化ステップと、
    生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成する第2暗号化ステップと、
    生成された前記第1暗号化情報及び前記第2暗号化情報を送信する送信ステップと
    を含むことを特徴とする共有鍵生成プログラム。
  48. 前記共有鍵生成プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項48に記載の共有鍵生成プログラム。
  49. 第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置で用いられる共有鍵復元方法であって、
    前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、
    前記共有鍵復元方法は、
    前記第1暗号化情報及び前記第2暗号化情報を受信する受信ステップと、
    受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号ステップと、
    生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号ステップと、
    前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成ステップと、
    生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断ステップと、
    出力すると判断される場合に、生成された前記復号共有鍵を出力する出力ステップと
    を含むことを特徴とする共有鍵復元方法。
  50. 第3者に知られることなく共有鍵生成装置から共有鍵を受け取る共有鍵復元装置で用いられる共有鍵復元プログラムであって、
    前記共有鍵生成装置は、シード値を生成し、生成された前記シード値から検証値及び共有鍵を生成し、生成された前記検証値を暗号化して、第1暗号化情報を生成し、生成された前記検証値に基づいて、生成された前記シード値を暗号化して、第2暗号化情報を生成し、生成された前記第1暗号化情報及び前記第2暗号化情報を送信し、
    前記共有鍵復元プログラムは、
    前記第1暗号化情報及び前記第2暗号化情報を受信する受信ステップと、
    受信された前記第1暗号化情報を復号して第1復号検証値を生成する第1復号ステップと、
    生成された前記第1復号検証値に基づいて、受信された前記第2暗号化情報を復号して、復号シード値を生成する第2復号ステップと、
    前記共有鍵生成装置と同一の方法により、生成された前記復号シード値から第2復号検証値及び復号共有鍵を生成する共有鍵生成ステップと、
    生成された前記第1復号検証値及び前記第2復号検証値に基づいて、生成された前記復号共有鍵を出力するか否かを判断する判断ステップと、
    出力すると判断される場合に、生成された前記復号共有鍵を出力する出力ステップと
    を含むことを特徴とする共有鍵復元プログラム。
  51. 前記共有鍵復元プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項50に記載の共有鍵復元プログラム。
JP2003396217A 2002-12-03 2003-11-26 鍵共有システム、共有鍵生成装置及び共有鍵復元装置 Expired - Fee Related JP4485175B2 (ja)

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
JP2002351062 2002-12-03
JP2002351063 2002-12-03
JP2003396217A JP4485175B2 (ja) 2002-12-03 2003-11-26 鍵共有システム、共有鍵生成装置及び共有鍵復元装置

Publications (2)

Publication Number Publication Date
JP2004201292A JP2004201292A (ja) 2004-07-15
JP4485175B2 true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6069852B2 (ja) * 2011-08-29 2017-02-01 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
EP3474484A1 (en) * 2017-10-17 2019-04-24 Koninklijke Philips N.V. Cryptographic device with updatable shared matrix
JP2021034858A (ja) * 2019-08-23 2021-03-01 日本電信電話株式会社 鍵交換システム、鍵交換装置、鍵交換方法及びプログラム

Also Published As

Publication number Publication date
JP2004201292A (ja) 2004-07-15

Similar Documents

Publication Publication Date Title
KR101027199B1 (ko) 키공유 시스템, 공유키 생성장치 및 공유키 복원장치
KR102040120B1 (ko) 근사 암호화된 암호문에 대한 연산을 수행하는 장치 및 방법
US7236589B2 (en) Device for point compression for Jacobians of hyperelliptic curves
JP4786531B2 (ja) 暗号システム、暗号装置、復号装置、プログラムおよび集積回路
JP5291795B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体
EP2656537B1 (en) Cryptography module for use with fragmented key and methods for use therewith
JP5257357B2 (ja) 鍵生成装置、暗号化装置及び復号装置
WO2001030020A1 (fr) Systeme de cryptage de cle a longueur variable
JPWO2009025220A1 (ja) 秘密情報分散システム、方法及びプログラム並びに伝送システム
US7936874B2 (en) Information transfer system, encryption device, and decryption device
JP4422981B2 (ja) 暗号通信システム
US20020001383A1 (en) Cryptosystem using multivariable polynomials
CN1745537B (zh) 密钥共享***、共享密钥生成装置及共享密钥复原装置
JP4485175B2 (ja) 鍵共有システム、共有鍵生成装置及び共有鍵復元装置
US7321658B2 (en) Padding application method ensuring security of cryptosystem and encryptor/decryptor
Encinas et al. Maple implementation of the Chor-Rivest cryptosystem
JP2004201293A (ja) 鍵共有システム、共有鍵生成装置及び共有鍵復元装置
JP3706398B2 (ja) 楕円曲線による署名、認証及び秘密通信方式
JP2005321719A (ja) 通信システム、復号装置、復元装置、鍵生成装置及び通信方法
JP3592118B2 (ja) 暗号化装置,暗号通信方法,暗号通信システム及び記録媒体
JP2012227652A (ja) 復号結果検証装置、方法、システム及びプログラム
JP2004135250A (ja) 情報処理システム及び情報処理方法
JPH11258986A (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