以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
(第1の実施形態)
<暗号鍵配信システムについて>
以下に、本発明の第1の実施形態に係る暗号鍵配信システムについて、詳細に説明する。
図1は、本実施形態に係る暗号鍵配信システム10を示した説明図である。暗号鍵配信システム10は、例えば、通信網12と、鍵生成装置20と、暗号化装置30と、受信装置40Aと、受信装置40Bと、を含む。
通信網12は、鍵生成装置20、暗号化装置30および受信装置40を双方向通信又は一方向通信可能に接続する通信回線網である。この通信網は、例えば、インターネット、電話回線網、衛星通信網、同報通信路等の公衆回線網や、WAN(Wide Area Network)、LAN(Local Area Network)、IP−VPN(Internet Protocol−Virtual Private Network)、ワイヤレスLAN等の専用回線網などで構成されており、有線/無線を問わない。
鍵生成装置20は、公開鍵と、複数の受信装置それぞれに固有の秘密鍵とを生成し、公開鍵を公開するとともに、各受信装置に対して、安全な通信路を介して、それぞれの秘密鍵を配信する。なお、この鍵生成装置20は、公開鍵および秘密鍵の生成・管理を行うセンタが所有する。
暗号化装置30は、鍵生成装置20によって生成および公開された公開鍵を用いて、任意のコンテンツを暗号化し、通信網12を介して、各受信装置に配信する。この暗号化装置30は、任意の第三者が所有することが可能であり、また、鍵生成装置20の所有者や、受信装置40の所有者が所有することも可能である。
受信装置40は、暗号化装置30から配信された暗号化されたコンテンツを、固有の秘密鍵によって復号化して利用することが可能である。なお、受信装置40Aと受信装置40Bとは、通信網12または有線を介して互いに接続可能である。なお、この受信装置40は、各契約者によって所有されるものである。
なお、受信装置40は、パーソナルコンピュータ(Personal Computer:PC)等のコンピュータ装置(ノート型、デスクトップ型を問わない。)例に限定されず、ネットワークを介した通信機能を有する機器であれば、例えばPDA(Personal Digital Assistant)、家庭用ゲーム機、DVD/HDDレコーダ、Blu−rayレコーダ、テレビジョン受像器等の情報家電、テレビジョン放送用のチューナやデコーダなどで構成することもできる。また、受信装置40は、契約者が持ち運びできるポータブルデバイス(Portabale Device)、例えば、携帯型ゲーム機、携帯電話、携帯型映像/音声プレーヤ、PDA、PHSなどであってもよい。
<鍵生成装置20のハードウェア構成について>
次に、本実施形態に係る鍵生成装置20のハードウェア構成について、図2を参照しながら簡単に説明する。
図2は、鍵生成装置20のハードウェア構成を示したブロック図である。鍵生成装置20は、例えば、CPU(Central Processing Unit)201と、ROM(Read Only Memory)203と、RAM(Random Access Memory)205と、HDD(Hard Disk Drive)207と、暗号処理部209と、メモリ(セキュアモジュール)211と、を主に備える。
CPU201は、演算処理装置および制御装置として機能し、ROM203、RAM205、HDD207、またはリムーバブル記録媒体14等に記録された各種プログラムに従って鍵生成装置20内の動作全般を制御する。ROM203は、CPU201が使用するプログラムや演算パラメータ等を記憶する。RAM205は、CPU201の実行において使用するプログラムや、このプログラムの実行において適宜変化するパラメータ等を、一次記憶する。
HDD207は、本実施形態に係る鍵生成装置20の記憶部の一例として構成されたデータ格納用の装置である。このHDD207は、ハードディスクを駆動し、CPU201が実行するプログラムや各種データを格納する。暗号処理部209は、本実施形態に係る鍵生成装置20がCPU201の制御のもとで実行する各種の暗号処理を実行する。メモリ(セキュアモジュール)211は、主に、個人秘密鍵や、センタ秘密である乱数等の秘匿が必要な情報を安全に格納するが、このメモリ211の内部に格納された情報は、外部から参照することができないという特徴がある。また、メモリ(セキュアモジュール)211は、例えば、耐タンパ性を有する記憶装置により構成されていてもよい。なお、セキュアモジュールはメモリである旨の記載をしているが、本発明に係るセキュアモジュールは、メモリに限定されるわけではなく、例えば、磁気ディスク、光ディスク、光磁気ディスクであってもよく、また、半導体メモリ等の記憶媒体であってもよい。
上記のCPU201、ROM203、RAM205、HDD207、暗号処理部209、および、メモリ211は、CPUバス等から構成されるバス213により、相互に接続されている。
バス213は、ブリッジを介して、PCI(Peripheral Component Interconnect/Interface)バスなどの入出力インターフェース215に接続されている。
入力装置217は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバー等のユーザが操作する操作手段と、使用者による操作に基づいて入力信号を生成し、CPU201に出力する入力制御回路等から構成されている。鍵生成装置20の使用者は、この入力部217を操作することにより、鍵生成装置20に対して各種のデータを入力したり処理動作を指示したりすることができる。
出力装置219は、例えば、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプ等の表示装置と、スピーカおよびヘッドホン等の音声出力装置等で構成される。出力部219は、例えば、再生されたコンテンツを出力することが可能である。具体的には、表示装置は、再生された映像データ等の各種情報を、テキストまたはイメージで表示する。一方、音声出力装置は、再生された音楽データ等を音声に変換して出力する。
通信装置221は、例えば、通信網12に接続するための通信デバイス等で構成された通信インターフェースである。この通信装置221は、例えば暗号化装置30や受信装置40A、40Bとの間で、通信網12を介して、暗号鍵に関する情報や、コンテンツ情報等といった、各種データを送受信する。
ドライブ223は、記憶媒体用リーダライタであり、鍵生成装置20に内蔵、あるいは外付けされる。ドライブ223は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体14に記録されている情報を読み出して、RAM205に出力する。また、ドライブ223は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体14に記録を書き込むことも可能である。リムーバブル記録媒体14は、例えば、DVDメディア、HD−DVDメディア、Blu−rayメディア、コンパクトフラッシュ(登録商標)(CompactFlash:CF)、メモリースティック、または、SDメモリカード(Secure Digital memory card)等である。また、リムーバブル記録媒体927は、例えば、非接触型ICチップを搭載したICカード(Integrated Circuit card)または電子機器等であってもよい。
なお、暗号化装置30および受信装置40のハードウェア構成は、鍵生成装置20のハードウェア構成と実質的に同一であるので、説明を省略する。
以上、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40の機能を実現可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。また、上記のハードウェア構成は、あくまでも一例であり、これに限定されるものでないことは言うまでもない。例えば、HDD207とメモリ(セキュアモジュール)211とを同一の記憶装置により構成してもよい。また、利用形態によっては、バス213、または入出力インターフェース215等を省略する構成も可能である。以下、上記のようなハードウェア構成により実現される暗号鍵生成方式について詳述する。
[基盤技術に関する説明]
まず、本発明に係る好適な実施形態について詳細なる説明をするに先立ち、本実施形態を実現する上で基盤を成す技術的事項について述べる。なお、本実施形態は、以下に記載する基盤技術の上に改良を加えることにより、より顕著な効果を得ることができるように構成されたものである。従って、その改良に係る技術こそが本実施形態の特徴を成す部分である。つまり、本実施形態は、ここで述べる技術的事項の基礎概念を踏襲するが、その本質はむしろ改良部分に集約されており、その構成が明確に相違すると共に、その効果において基盤技術とは一線を画するものであることに注意されたい。
まず、従来方式および本発明の実施形態に係る方式を説明する前に、これらを説明する上で必要となる記号、双線形写像、および双線形写像群について説明する。
<記号の定義>
従来方式および本発明の実施形態に係る方式を説明する上で使用する各記号を、以下のように定義する。
ui :ユーザiに固有の番号
n :ユーザの総数
r :排除されたユーザ(revoked users)の総数
R :排除されたユーザの集合。R={uR1,・・・uRr}
M :コンテンツ等の平文
K :配信毎に変更される一時的な鍵(セッション鍵)
C :平文Mをセッション鍵Kで暗号化したときの暗号文
EK(M) :鍵Kによる平文Mの暗号化演算。C=EK(M)
DK(C) :鍵Kによる暗号文Cの復号演算。M=DK(C)
H(M) :平文Mのハッシュ演算
<双線形群における双線形写像>
続いて、双線形群上の双線形写像に関して説明する。G、G’、G1を、それぞれ素数pを位数とする巡回群とする。双線形写像eとは、任意のG∈G、H∈G’およびa,b∈Zpに対して、以下2つの性質を満たす、e:G×G’→G1を実現する写像のことをいう。
1.双線形性:e(aG,bH)=e(G,H)ab
2.非退化性:e(G,H)≠1(G≠1、または、H≠1の場合)
また、G、G’における群演算が効率的に計算可能であり、かつ、双線形写像eが効率的に計算可能である群G1が存在する場合、G、G’を双線形写像群という。なお、G、G’は同一の群であってもよく、以降簡単のためにGとG’を同一の群として扱うものとするが、以下で説明する従来方式および本発明に係る方式のいずれにおいても、G∈G、H∈G’とし、これらに関連する部分を変更することによって、G、G’が異なる群である場合にも、各方式において同様のことが実現可能である。
<従来方式に関する説明>
非特許文献1に開示されている従来方式は、Setup、Join、Encryption、Decryptionという4つの基本処理から構成される。以下、各基本処理について、図3〜図8を参照しながら、詳細に説明する。
(Setup処理)
Setup処理は、鍵生成装置を有するセンタがシステム構築時に一度だけ実行する鍵生成処理である。センタは、セキュリティパラメータλを決定し、鍵生成装置は、入力されたセキュリティパラメータλを用いて、以下に説明するSetup処理を実行する。以下に、図3を参照しながら、本発明の基盤技術である従来方式における鍵生成処理について、詳細に説明する。図3は、本発明の基盤技術である従来方式における鍵生成処理について説明するための流れ図である。
まず、鍵生成装置は、λ−bitの素数pを生成し、pを位数とする双線形写像群Gおよび巡回乗法群G1を選択する(ステップS11)。
続いて、鍵生成装置は、双線形写像e:G×G→G1を決定する(ステップS12)。
次に、鍵生成装置は、G,H∈Gを選択して、V=e(G,H)∈G1を計算する(ステップS13)。
その後、鍵生成装置は、γ∈RZp *を選択し、W=γG∈Gを計算する(ステップS14)。このようにして得られたγおよびGは、センタのみがマスター鍵mk=(γ,G)として秘密保持する。
次に、鍵生成装置は、算出したデータを用いて、初期公開鍵ek0を以下のようにして構成する(ステップS15)。
ek0={p,G,G1,e,W,H,V} ・・・(式901)
鍵生成装置は、Setup処理の実行によって得られた初期公開鍵ek0を、システム全体の初期公開鍵として公開する。
(Join処理)
Join処理は、センタが、ユーザからのシステム加入要求がある毎に実行するユーザ登録処理である。この処理は、センタがシステム設定を終えた後に、任意のタイミングで実行されてよい。
センタは、公開鍵eki―1(1≦i≦n)、マスター鍵mkおよびi番目に加入したユーザのインデックスであるiを鍵生成装置に入力し、以下に説明するJoin処理を実行することで、システム加入要求を送信したユーザの秘密鍵を生成して、システムへの加入処理を行う。以下に、図4を参照しながら、本発明の基盤技術である従来方式におけるユーザ登録処理について、詳細に説明する。図4は、本発明の基盤技術である従来方式におけるユーザ登録処理について説明するための流れ図である。
まず、鍵生成装置は、ユーザiに固有の値である、ui∈Zp *を計算する(ステップS21)。その後、以下の式902に示す計算を行うことにより、センタは、システム加入要求を送信したユーザiの秘密鍵dkiを計算する(ステップS22)。
ここで、上記式902におけるBiは、秘密鍵dkiの一部としているが、Biは秘密の情報ではなく公開情報であり、ユーザiは、Biを秘密保持する必要はない。
次に、鍵生成装置は、ユーザiに対応する公開情報を以下の式903のようにして計算し、dkiおよび(ui,Vi)を得る(ステップS23)。
鍵生成装置は、Join処理の実行によって得られたユーザiの秘密鍵dkiを、安全な通信路を利用してユーザiに秘密裏に送信すると共に、現在の公開鍵eki−1にユーザiに対応する公開情報(ui,Bi,Vi)を追加し、公開鍵ekiとして更新、公開する。このとき、新たな公開鍵ekiは、以下の式904のような構成となっている。
(Encryption処理)
Encryption処理は、コンテンツ等の配信を希望する任意の送信者が、暗号化装置を用いて、配信毎に実行する処理である。
送信者は、公開鍵eki、排除されるユーザの集合R={uR1,・・・uRr}を暗号化装置に入力し、以下に説明するEncryption処理を実行することで、配信したいコンテンツ等の平文に暗号化処理を行う。以下に、図5を参照しながら、本発明の基盤技術である従来方式における暗号化処理について、詳細に説明する。図5は、本発明の基盤技術である従来方式における暗号化処理について説明するための流れ図である。
暗号化装置は、まず、Rの要素数をカウントして、カウント結果をrとする(ステップS31)。次に、送信者は、k∈Zp *を選択する(ステップS32)。
続いて、暗号化装置は、排除されたユーザの数rについて、判定を行う(ステップS33)。r=0の場合(すなわち、排除されたユーザが誰もいない場合)には、暗号化装置は、後述するステップS34を実行する。また、r=1の場合(すなわち、排除されたユーザが一人だけの場合)には、後述するステップS35を実行する。また、r≧2の場合(すなわち、排除されたユーザが2人以上存在する場合)には、後述するステップS36を実行する。
排除されたユーザが誰もいない場合には、暗号化装置は、以下の式905および式906に基づいて、PrおよびK’を決定し(ステップS34)、その後ステップS38を実行する。
また、排除されたユーザが一人である場合には、暗号化装置は、以下の式907および式908に基づいてPrおよびK’を決定し(ステップS35)、その後ステップS38を実行する。
また、排除されたユーザが2人以上である場合には、暗号化装置は、G上の演算に対して双線形群の演算処理(Aggregate(A)アルゴリズム)を行い、以下の式909に示した値を計算する(ステップS36)。なお、双線形群の演算処理アルゴリズムであるAggregate(A)アルゴリズムについては、以下で改めて詳細に説明する。
続いて、暗号化装置は、G1上の演算に対して双線形群の演算処理(Aggregate(A)アルゴリズム)を行い、以下の式910に示した値を計算する(ステップS37)。
それぞれの場合について、PrおよびK’の算出が終了すると、暗号化装置は、ヘッダhdrを、以下の式911のようにして計算する(ステップS38)。
次に、暗号化装置は、セッション鍵Kを以下の式912に基づいて計算し、ヘッダhdr、K’およびkとともに出力する。
暗号化装置は、平文Mのセッション鍵Kによる暗号文C=EK(M)を生成した後、(hdr,C)を同報配信する。かかる処理を行うことで、送信者は、希望するユーザに対して暗号化されたコンテンツ等を送信することができる。
なお、上記の処理に加えて、さらに平文Mの暗号化、または暗号化及び同報配信までをEncryption処理で実行する構成としてもよい。また、ステップS31は、送信者自身が実行し、Encryption処理を実行する暗号化装置に入力する形態をとってもよい。
(双線形群の演算処理−Aggregate(A)アルゴリズム)
続いて、図6を参照しながら、Encryption処理中で実施される双線形群演算処理であるAggregate(A)アルゴリズムについて、詳細に説明する。図6は、本発明の基盤技術に係る双線形群の演算処理を説明するための流れ図である。
Aggregate(A)アルゴリズムは、暗号化装置が(P1,・・・Pr)∈Gを算出する際に実行するアルゴリズムである。
まず、暗号化装置は、P0,m=VRm(m=1,・・・,r)とし、j=1と設定する(ステップS41)。続いて、暗号化装置は、l=j+1と設定する(ステップS42)。
ここで、暗号化装置は、uRjとuRlとの比較を行い、uRj=uRlであれば、エラーメッセージを出力し(ステップS44)、処理を終了する。uRj=uRlでなければ、以下に示すステップS45を実行する。
続いて、暗号化装置は、以下の式913を用いて、Pj,lを計算する(ステップS45)。
上記式913の計算が終了すると、暗号化装置は、lにl+1を代入し(ステップS46)、lとr+1の比較を行う(ステップS47)。l=r+1であれば、暗号化装置は、ステップS48を実行し、lがr+1と等しくなければ、暗号化装置は、ステップS43に戻って処理を続行する。
次に、暗号化装置は、jにj+1を代入し(ステップS48)、jとrの比較を行う(ステップS49)。j=rであれば、暗号化装置は、ステップS50を実行し、jがrと等しくなければ、暗号化装置は、ステップS42に戻って処理を続行する。
その後、暗号化装置は、Pj−1,lをPrとして出力する(ステップS50)。
例えば、r=3の場合には、暗号化装置は、上述のAggregate(A)アルゴリズムを実行することで、P2,3をP3として出力する。
なお、K’∈G1も、上述のAggregate(A)アルゴリズムによって算出することが可能である。この場合、P0,m=VRm(m=1,・・・,r)とし、加(減)算を乗(除)算に、乗算を冪乗算に変更した上で、ステップS45をG1上での演算として実行すればよい。ただし、Zp *上の演算である1/(uR1−uRj)は、いずれの場合においてもZp *上での減算及び逆元演算として計算する必要がある。
(Decryption処理)
Decryption処理は、コンテンツ等の配信を受けた受信者が暗号文を復号して平文を取得する際に、受信装置によって実行される処理である。
受信装置は、送信者により送信されたhdrと、秘密鍵dkiと、自身に固有の値であるuiと、に基づいて、以下に説明するDecryption処理を実行することで、配信されたコンテンツ等の暗号文に復号処理を行う。以下に、図7を参照しながら、本発明の基盤技術である従来方式における復号処理について、詳細に説明する。図7は、本発明の基盤技術である従来方式における復号処理について説明するための流れ図である。
まず、受信装置は、送信者から配信されたhdrの中に、自身に固有の値であるuiが存在するか否かを判断する(ステップS51)。hdrの中に自身に固有の値であるuiが存在する場合には、送信者により受信者が排除されたことを意味するため、受信装置は、エラーメッセージを出力し(ステップS52)、処理を終了する。また、hdrの中に自身に固有の値であるuiが存在しない場合には、受信装置は、以下のステップS53を実行する。
次に、受信装置は、rが0か否かを判定する(ステップS53)。r=0の場合には、受信装置は、後述するステップS54を実行する。また、rが0ではない場合には、受信装置は、後述するステップS55を実行する。
ここで、r=0の場合には、受信装置は、Bi,R=Biと設定し、後述するステップS56を実施する。
また、rが0ではない場合には、受信装置は、双線形群の演算処理(Aggregate(B)アルゴリズム)を行い、以下の式914に示した値を計算する(ステップS55)。なお、双線形群の演算処理アルゴリズムであるAggregate(B)アルゴリズムについては、以下で改めて詳細に説明する。
ステップS54またはステップS55が終了すると、受信装置は、取得したBi,Rを用いて、以下の式915によりセッション鍵Kを算出する(ステップS56)。
受信者は、上述のDecryption処理により得られたセッション鍵Kを利用して、送信者から送信されたコンテンツ等の暗号文Cを復号し、平文M=DK(C)を取得する。
(双線形群の演算処理−Aggregate(B)アルゴリズム)
続いて、図8を参照しながら、Decryption処理中で実施される双線形群演算処理であるAggregate(B)アルゴリズムについて、詳細に説明する。図8は、本発明の基盤技術に係る双線形群の演算処理を説明するための流れ図である。
Aggregate(B)アルゴリズムは、受信装置がBi,R∈Gを算出する際に実行するアルゴリズムである。
まず、受信装置は、パラメータtmpを設定し、tmpの初期値をBiとし(ステップS61)、続いて、受信装置は、j=1と設定する(ステップS62)。
次に、受信装置は、uRjとuiとの比較を行い、uRj=uiであれば、エラーメッセージを出力し(ステップS64)、処理を終了する。uRj=uiでなければ、以下に示すステップS65を実行する。
続いて、受信装置は、以下の式916を用いて、新たなtmpの値を計算する(ステップS68)。
ここで、上記式916から明らかなように、式中の分母に、受信装置に固有の値であるuiが含まれているため、暗号化装置から送信されたhdrに自身のuiが含まれている場合には、tmpが値を持たなくなる。これにより、排除されたユーザは、セッション鍵Kの算出に必要なBi,Rを得ることが出来なくなるため、暗号文を復号化することができない。
上記の演算が終了すると、受信装置は、jの値をj+1とし(ステップS66)、次いで、jとr+1の比較を行う(ステップS67)。j=r+1であれば、受信装置は、後述するステップS68を実行する。また、jがr+1と等しくない場合には、受信装置は、ステップS63に戻って処理を続行する。
次に、受信装置は、tmpを出力する(ステップS68)。出力されたtmpは、Bi,Rであり、受信装置は、かかる出力値を用いてセッション鍵Kを算出する。
<従来方式の問題点>
上記説明のように、従来方式では、暗号化時にG上及びG1上の両方においてAggregate(A)アルゴリズムを実行する必要がある。ここで、暗号化時に送信者が実行する必要がある計算量を、図9に示す。なお、図中の「Pairing」とは、双線形写像eによる演算を表し、∈GにおけるAddおよびMulは、それぞれ楕円曲線上の点の加算及びスカラー倍算を表すものとする。また、表中の∈G、∈G1および∈Zp *は各々その群上における演算を表すものとする。
図9(a)からも明らかなように、G上におけるAggregate(A)アルゴリズムを実行することにより、G上における演算、すなわち楕円曲線上の加算および乗算が各々r2回程度必要となる。さらに、K’を導出するためにG1上におけるAggregate(A)アルゴリズムをも実行する必要があるため、G1上における各演算、すなわち、ビットサイズが大きい群における乗算、冪乗算、逆元演算も各々r2回程度必要となる。
特に、G1上での演算は、安全性を確保するために80−bit等価安全性を確保する場合には1024−bit、128−bit等価安全性を確保する場合には3072−bit程度という、大きなビットサイズでの演算となるため、暗号化時には最も計算時間が多くなる部分であり、G1上での演算回数が多いという問題点があった。
そこで、本願発明者らは、上記の問題点を解決すべく鋭意研究を行い、以下に説明するような、本発明の一実施形態に係る暗号鍵配信システムを開発した。本実施形態に係る暗号鍵配信システムでは、従来方式において暗号化時に必要となるビット長が長い巡回群上での乗算、冪乗算、逆元演算を削除し、その代わりに1回の双線形写像演算(pairing)と楕円曲線上の点の演算等を若干数追加することによって、ユーザ、すなわち秘密鍵を保持するentity(人、デバイス、サーバ等の動作主体)が暗号化を実行する際には、特にrが増加するほど、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減可能となる。
[本実施形態に係る説明]
これまで説明したような基盤技術を踏まえながら、以下において、本発明の第1の実施形態に係る鍵生成装置20、暗号化装置30および受信装置40について、詳細に説明する。
本実施形態に係る暗号鍵配信システム10では、秘密鍵dkjを保持しているentity、すなわち、ユーザjが暗号化時に必要となる計算量を、従来方式におけるEncryption処理およびAggregate(A)アルゴリズムを、後述するEncryption’処理およびAggregate(C)アルゴリズムへと変更することによって、暗号化時に必要となる計算量の削減を達成するものである。よってこれら以外の基本処理であるSetup処理、Join処理、Decryption処理、および、Decryption処理において利用されるAggregate(B)アルゴリズムに関しては、従来方式と同一のものを使用する。
<本実施形態に係る鍵生成装置20について>
まず、図10を参照しながら、本実施形態に係る鍵生成装置20について、詳細に説明する。図10は、本実施形態に係る鍵生成装置20の構成について説明するためのブロック図である。
本実施形態に係る鍵生成装置20は、例えば図10に示したように、パラメータ決定部251と、双線形群選択部253と、鍵生成部255と、配布部261と、記憶部267と、を主に備える。
パラメータ決定部251は、本実施形態に係る鍵生成装置20が公開鍵や秘密鍵等を生成するために用いる様々なパラメータを所定の方法に基づいて決定する。かかるパラメータの例として、例えば、Setup処理等で用いられる素数pやG、H、V、γ等を挙げることができる。パラメータ決定部251は、例えば素数pやG、H、γを決定する際に、例えば乱数等を利用して無作為に値を決定する。また、パラメータ決定部251は、後述する双線形群選択部253から伝送された各種双線形群や双線形写像eを利用して、パラメータを決定してもよい。パラメータ決定部251は、決定した各種パラメータを、後述する双線形群選択部253や鍵生成部255に伝送する。また、パラメータ決定部251は、決定した各種パラメータを、後述する記憶部267に記録してもよい。
双線形群選択部253は、パラメータ決定部251から伝送されたパラメータである素数pを用いて、pを位数とする双線形写像群Gと、巡回乗法群G1を選択する。また、双線形群選択部253は、双線形写像e:G×G→G1を決定する。双線形群選択部253は、選択した双線形群G、G1と、決定した双線形写像eとを、パラメータ決定部251および後述する鍵生成部255に伝送する。また、双線形群選択部253は、選択した双線形群G、G1と、決定した双線形写像eとを、後述する記憶部267に記録してもよい。
鍵生成部255は、パラメータ決定部251および双線形群選択部253から伝送された各種データを利用して、公開鍵、各ユーザに配布される秘密鍵、マスター鍵等の鍵や、各ユーザに対応する公開情報等を生成する。生成された鍵や公開情報は、HDDやセキュアモジュールを備えたメモリ等から構成される記憶部に記録される。また、公開が必要な情報および配布する鍵類は、後述する配布部261へと伝送される。
配布部261は、鍵生成装置20が生成した公開鍵および秘密鍵と、公開が必要な情報とを、通信網12を介して配布する。かかる配布部261は、送受信部263と、公開鍵配布部265と、を更に備える。
送受信部263は、鍵生成部255が生成した秘密鍵を、安全な通信路を介して個々のユーザに送信するとともに、受信装置40から伝送されたシステム加入要求を受信する。受信されたシステム加入要求は鍵生成部255へと伝送され、鍵生成部255により新たな秘密鍵や公開鍵が生成される。
公開鍵配布部265は、鍵生成部255が生成した公開鍵や公開情報を、通信網12を介して暗号化装置30や受信装置40に配布する。暗号化装置30や受信装置40は、かかる公開鍵や公開情報を利用して、平文の暗号化処理や暗号文の復号処理を実行する。
記憶部267には、パラメータ決定部251が決定した各種パラメータや、双線形群選択部253が選択した双線形群や双線形写像が記録される。また、記憶部267には、鍵生成部255が生成した各種鍵や公開情報が、秘密保持される。更に、これらの各種データ以外にも、鍵生成装置20が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部267は、パラメータ決定部251、双線形群選択部253、鍵生成部255、配布部261等が、自由に読み書きを行うことが可能である。
<本実施形態に係る暗号化装置30について>
続いて、図11を参照しながら、本実施形態に係る暗号化装置30について、詳細に説明する。図11は、本実施形態に係る暗号化装置30の構成について説明するためのブロック図である。
本実施形態に係る暗号化装置30は、例えば図11に示したように、受信部301と、排除受信装置特定部303と、セッション鍵決定部307と、双線形写像演算部313と、暗号化部315と、暗号文送信部317と、記憶部319と、を主に備える。また、本実施形態に係る暗号化装置30は、更に、セッション鍵算出方法選択部321を備えても良い。
受信部301は、鍵生成装置20により生成され、公開された公開鍵と公開情報とを受信する。受信した公開鍵および公開情報は、後述する記憶部319に記録され、必要な際に読み出されて利用される。
排除受信装置特定部303は、暗号化装置30に通信網12を介して接続されている複数の受信装置40の中から、暗号文の配信を排除する受信装置を特定し、排除される受信装置の集合Rを決定する。集合Rの決定に際しては、排除受信装置特定部303は、後述する記憶部319に記憶されている様々なデータを参照することができる。決定された集合Rは、後述するセッション鍵決定部307に伝送され、配信するコンテンツ等の平文を暗号化するために用いられるセッション鍵等の算出に利用される。また、排除受信装置特定部303は、決定された集合Rを後述する記憶部319に記録してもよい。
セッション鍵決定部307は、受信部301が受信し記憶部319に記録されている公開鍵および公開情報と、排除受信装置特定部303が決定した集合R等とに基づいて、配信するコンテンツ等の平文を暗号化するために用いられるセッション鍵等を決定する。このセッション鍵決定部307は、セッション鍵算出部309と、ヘッダ算出部311と、を更に備える。
セッション鍵算出部309は、記憶部319から取得した公開鍵および公開情報と、排除受信装置特定部303から伝送される、排除される受信装置の集合R等と、に基づいて、配信するコンテンツ等の平文を暗号化するために利用するセッション鍵を算出する。セッション鍵算出部309が算出したセッション鍵は、後述する暗号化部315に伝送され、平文を暗号化する際に利用される。また、セッション鍵算出部309は、算出したセッション鍵を、記憶部319に記録してもよい。
ヘッダ算出部311は、セッション鍵算出部309がセッション鍵を算出する際に計算した各種データと、記憶部319に記録されている公開鍵や公開情報等とを利用して、暗号文と同時に受信装置40に配信されるヘッダを生成する。生成されたヘッダは、後述する暗号文送信部317へと伝送される。また、ヘッダ算出部311は、生成したヘッダ情報を、記憶部319に記録してもよい。
双線形写像演算部313は、セッション鍵の算出の際に実行する必要がある双線形写像に関する演算を行う処理部である。双線形写像演算部313は、記憶部319に記録されている公開情報に含まれる双線形群G,G1と、セッション鍵決定部307から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、セッション鍵決定部307に再度伝送され、セッション鍵やヘッダの算出に利用される。なお、双線形写像演算部313は、演算結果を記憶部319に記録してもよい。
暗号化部315は、記憶部319等から配信するコンテンツ等の平文を取得し、セッション鍵決定部307で算出されたセッション鍵を用いて暗号化処理を行い、平文を暗号化する。暗号化された平文は、暗号文送信部317へと伝送される。また、暗号化部315は、暗号化した平文を、記憶部319に記録してもよい。
暗号文送信部317は、暗号化部315によって暗号化された暗号文と、ヘッダ算出部311によって算出されたヘッダとを、通信網12等を介して、各受信装置に同報配信する。
記憶部319には、受信部301が受信した公開鍵および公開情報や、排除受信装置特定部303が決定した集合Rや、セッション鍵決定部307が算出したセッション鍵やヘッダ情報等が記録される。また、記憶部319には、これらの各種データ以外にも、暗号化装置30が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部319は、受信部301、排除受信装置特定部303、セッション鍵決定部307、双線形写像演算部313、暗号化部315、暗号文送信部317、セッション鍵算出方法選択部321等が、自由に読み書きを行うことが可能である。
セッション鍵算出方法選択部321は、本実施形態に係る暗号化装置30が複数のセッション鍵算出方法を記憶しており、複数のセッション鍵算出方法を適宜選択可能である場合に、排除される受信装置の台数に応じて利用するセッション鍵算出方法を選択する。セッション鍵算出方法の選択に際しては、排除される受信装置の台数と所定の閾値との比較を行って、選択するセッション鍵算出方法を決定してもよく、排除される受信装置の台数に基づいて、選択可能なセッション鍵算出方法に要する計算量をそれぞれ算出し、算出した計算量を比較することで、利用するセッション鍵算出方法を選択してもよい。
<本実施形態に係る受信装置40について>
続いて、図12を参照しながら、本実施形態に係る受信装置40について、詳細に説明する。図12は、本実施形態に係る受信装置40の構成について説明するためのブロック図である。
本実施形態に係る受信装置40は、例えば図12に示したように、受信部401と、セッション鍵算出部403と、双線形写像演算部405と、復号部407と、記憶部409と、を主に備える。
受信部401は、鍵生成装置20により生成された秘密鍵、公開鍵および公開情報を受信する。また、受信部401は、暗号化装置30によって暗号化された暗号文やヘッダ情報についても、受信することが可能である。受信部401は、鍵生成装置20から受信した秘密鍵、公開鍵および公開情報と、暗号化装置30から受信したヘッダを、後述するセッション鍵算出部403に伝送し、暗号化装置30から受信した暗号文を、後述する復号部407に伝送する。なお、受信部401は、受信した秘密鍵、公開情報、暗号文、ヘッダ情報等を、後述する記憶部409に記録してもよい。
セッション鍵算出部403は、鍵生成装置20から取得した秘密鍵、公開鍵および公開情報と、暗号化装置30から送信されたヘッダ等に基づいて、暗号化装置30から配信された暗号文を復号化処理する際に利用するセッション鍵を算出する。セッション鍵算出部403は、算出したセッション鍵を、後述する復号部403に伝送する。また、セッション鍵算出部403は、算出したセッション鍵を、後述する記憶部409に記録してもよい。
双線形写像演算部405は、セッション鍵の算出の際に実行する必要がある双線形写像に関する演算を行う処理部である。双線形写像演算部405は、公開情報に含まれる双線形群G,G1と、セッション鍵算出部403から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、セッション鍵算出部403に再度伝送され、セッション鍵の算出に利用される。なお、双線形写像演算部405は、演算結果を記憶部409に記録してもよい。
復号部407は、セッション鍵算出部403が算出したセッション鍵を利用して、暗号化装置30から配信されたコンテンツ等の暗号文を復号化し、平文に変換する。復号部407は、取得した平文を、記憶部409に格納することが可能である。
記憶部409には、受信部401が受信した秘密鍵、公開鍵および公開情報が記録される。また、記憶部409には、暗号化装置30から送信された暗号文およびヘッダや、セッション鍵算出部403が算出したセッション鍵や、復号部407が復号化処理を行った平文等が記録されてもよい。さらに、記憶部409には、これらの各種データ以外にも、受信装置40が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部409は、受信部401、セッション鍵算出部403、双線形写像演算部405、復号部407等が、自由に読み書きを行うことが可能である。
以上、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40の機能の一例を示した。上記の各構成要素は、汎用的な部材や回路を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、各構成要素の機能を、CPU等が全て行ってもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用する構成を変更することが可能である。
<鍵生成装置20の動作:Setup処理およびJoin処理>
センタは、所有する鍵生成装置20を操作し、以下の手順に従って、公開鍵および公開情報と、各ユーザに対応する個人秘密鍵とを生成する。本実施形態に係る鍵生成装置20が実行するSetup処理およびJoin処理は、従来方法におけるSetup処理およびJoin処理と同一であるため、図3および図4を参照しながら、本実施形態に係る鍵生成装置20の動作(すなわち、Setup処理およびJoin処理)について、詳細に説明する。
(鍵生成装置20におけるSetup処理)
Setup処理は、本実施形態に係る鍵生成装置20を有するセンタがシステム構築時に一度だけ実行する鍵生成処理である。センタは、セキュリティパラメータλを決定し、鍵生成装置は、入力されたセキュリティパラメータλを用いて、以下に説明するSetup処理を実行する。
まず、鍵生成装置20のパラメータ決定部251は、λ−bitの素数pを生成し、次いで、双線形群選択部253は、pを位数とする双線形写像群Gおよび巡回乗法群G1を選択する(ステップS11)。
次に、鍵生成装置20の双線形群選択部253は、双線形写像e:G×G→G1を決定する(ステップS12)。
続いて、鍵生成装置20のパラメータ決定部251は、G,H∈Gを選択して、V=e(G,H)∈G1を計算する(ステップS13)。
その後、鍵生成装置20のパラメータ決定部251は、γ∈RZp *を選択し、W=γG∈Gを計算する(ステップS14)。このようにして得られたγおよびGは、センタのみがマスター鍵mk=(γ,G)として秘密保持する。
次に、鍵生成装置20の鍵生成部255は、算出したデータを用いて、初期公開鍵ek0を以下のようにして構成する(ステップS15)。
公開鍵の生成が終了すると、鍵生成装置20の配布部261は、Setup処理の実行によって得られた初期公開鍵ek0を、システム全体の初期公開鍵として公開する。
(鍵生成装置20におけるJoin処理)
Join処理は、センタが、ユーザからのシステム加入要求がある毎に実行するユーザ登録処理である。この処理は、センタがシステム設定を終えた後に、任意のタイミングで実行されてよい。
センタは、公開鍵eki―1(1≦i≦n)、マスター鍵mkおよびi番目に加入したユーザのインデックスであるiを鍵生成装置20に入力し、以下に説明するJoin処理を実行することで、システム加入要求を送信したユーザの秘密鍵を生成して、システムへの加入処理を行う。
まず、鍵生成装置20の鍵生成部255は、ユーザiに固有の値である、ui∈Zp *を計算する(ステップS21)。その後、以下の式102に示す計算を行うことにより、鍵生成部255は、システム加入要求を送信したユーザiの秘密鍵dkiを計算する(ステップS22)。
ここで、上記式102におけるBiは、秘密鍵dkiの一部としているが、Biは秘密の情報ではなく公開情報であり、ユーザiは、Biを秘密保持する必要はない。
次に、鍵生成装置20の鍵生成部255は、ユーザiに対応する公開情報を以下の式103のようにして計算し、dkiおよび(ui,Vi)を得る(ステップS23)。
鍵生成装置30の配布部261は、Join処理の実行によって得られたユーザiの秘密鍵dkiを、安全な通信路を利用してユーザiに秘密裏に送信すると共に、現在の公開鍵eki−1にユーザiに対応する公開情報(ui,Bi,Vi)を追加し、公開鍵ekiとして更新、公開する。このとき、新たな公開鍵ekiは、以下の式104のような構成となっている。
以上、本実施形態に係る鍵生成装置20で実行されるSetup処理およびJoin処理について説明した。続いて、本実施形態に係る暗号化装置30で実行される暗号化処理(Encryption’処理)について、説明する。
<暗号化装置30の動作:Encryption’処理>
コンテンツ等の平文を配信する配信者は、所有する暗号化装置30を操作し、以下の手順に従って、暗号文とヘッダとを生成する。以下に、図13および図14を参照しながら、本実施形態に係る暗号化装置30の動作について、詳細に説明する。図13は、本実施形態に係る暗号化装置30で実行される暗号化処理を説明するための流れ図であり、図14は、本実施形態に係る暗号化装置30で実行される双線形群の演算処理を説明するための流れ図である。
Encryption’処理は、コンテンツ等の配信を希望する任意の送信者が、暗号化装置30を用いて、配信毎に実行する処理である。
送信者は、公開鍵eki、排除されるユーザの集合R={uR1,・・・uRr}を本実施形態に係る暗号化装置30に入力し、以下に説明するEncryption’処理を実行することで、配信したいコンテンツ等の平文に暗号化処理を行う。ユーザによって入力された集合Rは、暗号化装置30の排除受信装置特定部303により、暗号化装置30が利用可能なデジタルデータに変換され、Encryption’処理に用いられる。
暗号化装置30の排除受信装置特定部303は、まず、Rの要素数をカウントして、カウント結果をrとし(ステップS101)、カウント結果rをセッション鍵決定部307に出力する。次に、暗号化装置30のセッション鍵算出部309は、k∈Zp *を選択する(ステップS102)。
続いて、暗号化装置30のセッション鍵算出部309は、排除されたユーザの数rについて、判定を行う(ステップS103)。r=0の場合(すなわち、排除されたユーザが誰もいない場合)には、セッション鍵算出部309は、後述するステップS104を実行する。また、r=1の場合(すなわち、排除されたユーザが一人だけの場合)には、後述するステップS105を実行する。また、r≧2の場合(すなわち、排除されたユーザが2人以上存在する場合)には、後述するステップS106を実行する。
排除されたユーザが誰もいない場合には、セッション鍵算出部309は、以下の式105および式106に基づいて、PrおよびK’を決定し(ステップS104)、その後ステップS109を実行する。
また、排除されたユーザが一人である場合には、セッション鍵算出部309は、以下の式107および式108に基づいてPrおよびK’を決定し(ステップS105)、その後ステップS109を実行する。
また、排除されたユーザが2人以上である場合には、セッション鍵算出部309は、双線形写像演算部313に対して、G上で双線形群の演算処理(Aggregate(C)アルゴリズム)を行い、以下の式109〜式111に示した値を計算するよう要請し、双線形写像演算部313は、Aggregate(C)アルゴリズムを実行して、式109〜式111の値をセッション鍵算出部309に出力する(ステップS106)。なお、双線形群の演算処理アルゴリズムであるAggregate(C)アルゴリズムについては、以下で改めて詳細に説明する。
ここで、上記式110および式111は、式109(Pr)を導出する際に、計算の途中経過として算出される値であり、従来方式では、式110および式111の値は、計算値として出力されるものではなかった。本実施形態に係る暗号化処理では、以下で説明するように、式110および式111の計算値を効果的に利用することで、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減することが可能となる。
例えば、r=3の場合には、双線形写像演算部313は、上述のAggregate(C)アルゴリズムを実行することで、P1,2、P1,3およびP2,3の3つの値を、演算結果としてセッション鍵算出部309に出力する。
次に、セッション鍵算出部309は、双線形写像演算部313から出力された演算結果を利用して、以下の式112の値を算出する(ステップS107)。
上記式112を展開すると、以下の式113のようになる。本実施形態に係るセッション鍵算出部309は、上記γPrを算出することで、G1上でのAggregate(C)アルゴリズムが実行不要となり、Aggregate(C)アルゴリズムの実行回数を1回に減らすことが可能となる。
続いて、セッション鍵算出部309は、双線形写像演算部313の演算結果と、上記式113の値を用いて、以下の式114に示した値を計算する(ステップS108)。
それぞれの場合について、PrおよびK’の算出が終了すると、ヘッダ算出部307は、ヘッダhdrを、以下の式115のようにして計算する(ステップS109)。
次に、セッション鍵算出部309は、セッション鍵Kを以下の式116に基づいて計算し、ヘッダhdr、K’およびkとともに出力する(ステップS110)。
暗号化装置30の暗号化部315は、平文Mのセッション鍵Kによる暗号文C=EK(M)を生成し、暗号文送信部317は、(hdr,C)を同報配信する。かかる処理を行うことで、送信者は、希望するユーザに対して暗号化されたコンテンツ等を送信することができる。
なお、上記の処理に加えて、さらに平文Mの暗号化、または暗号化及び同報配信までをEncryption’処理で実行する構成としてもよい。また、ステップS101は、送信者自身が実行し、Encryption’処理を実行する暗号化装置30に入力する形態をとってもよい。
(双線形群の演算処理−Aggregate(C)アルゴリズム)
続いて、図14を参照しながら、Encryption’処理中で実施される双線形群演算処理であるAggregate(C)アルゴリズムについて、詳細に説明する。
Aggregate(C)アルゴリズムは、暗号化装置30の双線形写像演算部313が(P1,・・・Pr)∈Gを算出する際に実行するアルゴリズムである。
まず、暗号化装置30の双線形写像演算部313は、P0,m=BRm(m=1,・・・,r)とし、j=1と設定する(ステップS201)。続いて、双線形写像演算部313は、l=j+1と設定する(ステップS202)。
ここで、双線形写像演算部313は、uRjとuRlとの比較を行い(ステップS203)、uRj=uRlであれば、エラーメッセージを出力し(ステップS204)、処理を終了する。uRj=uRlでなければ、以下に示すステップS205を実行する。
続いて、双線形写像演算部313は、以下の式117を用いて、Pj,lを計算する(ステップS205)。
上記式111の計算が終了すると、双線形写像演算部313は、lにl+1を代入し(ステップS206)、lとr+1の比較を行う(ステップS207)。l=r+1であれば、双線形写像演算部313は、ステップS208を実行し、lがr+1と等しくなければ、双線形写像演算部313は、ステップS203に戻って処理を続行する。
次に、双線形写像演算部313は、jにj+1を代入し(ステップS208)、jとrの比較を行う(ステップS209)。j=rであれば、双線形写像演算部313は、ステップS210を実行し、jがrと等しくなければ、双線形写像演算部313は、ステップS202に戻って処理を続行する。
その後、双線形写像演算部313は、Pr=Pj−1,j、Pj−2,j−1およびPj−2,jをセッション鍵算出部309に出力する(ステップS210)。
<受信装置40の動作:Decryption処理>
本実施形態に係る受信装置40が実行するDecryption処理は、従来方法におけるDecryption処理と同一であるため、図7を参照しながら、本実施形態に係る受信装置40の動作(すなわち、Decryption処理)について、詳細に説明する。
Decryption処理は、コンテンツ等の配信を受けた受信者が暗号文を復号して平文を取得する際に、本実施形態に係る受信装置40によって実行される処理である。
受信装置40は、送信者により送信されたhdrと、秘密鍵dkiと、自身に固有の値であるuiと、に基づいて、以下に説明するDecryption処理を実行することで、配信されたコンテンツ等の暗号文に復号処理を行う。
まず、受信装置40のセッション鍵算出部403は、受信部401が受信したhdrの中に、自身に固有の値であるuiが存在するか否かを判断する(ステップS51)。hdrの中に自身に固有の値であるuiが存在する場合には、送信者により受信者が排除されたことを意味するため、受信装置40は、エラーメッセージを出力し(ステップS52)、処理を終了する。また、hdrの中に自身に固有の値であるuiが存在しない場合には、受信装置40は、以下のステップS53を実行する。
次に、セッション鍵算出部403は、rが0か否かを判定する(ステップS53)。r=0の場合には、セッション鍵算出部403は、後述するステップS54を実行する。また、rが0ではない場合には、セッション鍵算出部403は、後述するステップS55を実行する。
ここで、r=0の場合には、セッション鍵算出部403は、Bi,R=Biと設定し、後述するステップS56を実施する。
また、rが0ではない場合には、セッション鍵算出部403は、双線形写像演算部405に対して、G上で双線形群の演算処理(Aggregate(B)アルゴリズム)を行い、以下の式112に示した値を計算するよう要請し、双線形写像演算部405は、Aggregate(B)アルゴリズムを実行して、式118の値をセッション鍵算出部403に出力する(ステップS55)。なお、双線形群の演算処理アルゴリズムであるAggregate(B)アルゴリズムについては、以下で改めて詳細に説明する。
ステップS54またはステップS55が終了すると、セッション鍵算出部403は、取得したBi,Rを用いて、以下の式119によりセッション鍵Kを算出する(ステップS56)。
復号部407は、上述のDecryption処理により得られたセッション鍵Kを利用して、送信者から送信されたコンテンツ等の暗号文Cを復号し、平文M=DK(C)を取得する。
(双線形群の演算処理−Aggregate(B)アルゴリズム)
続いて、図8を参照しながら、Decryption処理中で実施される双線形群演算処理であるAggregate(B)アルゴリズムについて、詳細に説明する。
Aggregate(B)アルゴリズムは、双線形写像演算部405がBi,R∈Gを算出する際に実行するアルゴリズムである。
まず、双線形写像演算部405は、パラメータtmpを設定し、tmpの初期値をBiとし(ステップS61)、続いて、双線形写像演算部405は、j=1と設定する(ステップS62)。
次に、双線形写像演算部405は、uRjとuiとの比較を行い、uRj=uiであれば、エラーメッセージを出力し(ステップS64)、処理を終了する。uRj=uiでなければ、以下に示すステップS65を実行する。
続いて、双線形写像演算部405は、以下の式120を用いて、新たなtmpの値を計算する(ステップS68)。
ここで、上記式114から明らかなように、式中の分母に、受信装置に固有の値であるuiが含まれているため、暗号化装置から送信されたhdrに自身のuiが含まれている場合には、tmpが値を持たなくなる。これにより、排除されたユーザは、セッション鍵Kの算出に必要なBi,Rを得ることが出来なくなるため、暗号文を復号化することができない。
上記の演算が終了すると、双線形写像演算部405は、jの値をj+1とし(ステップS66)、次いで、jとr+1の比較を行う(ステップS67)。j=r+1であれば、双線形写像演算部405は、後述するステップS68を実行する。また、jがr+1と等しくない場合には、双線形写像演算部405は、ステップS63に戻って処理を続行する。
次に、双線形写像演算部405は、tmpをセッション鍵算出部403に出力する(ステップS68)。出力されたtmpは、Bi,Rであり、セッション鍵算出部403は、かかる出力値を用いてセッション鍵Kを算出する。
<従来方式との相違点について>
従来方式では、P1,・・・,Prを導出するために、r≧2で場合には、EncryptionアルゴリズムにおけるステップS36にて、G上の演算に対するAggregate(A)アルゴリズムを実行する。その後、K’を導出するために、ステップS37にてG1上の演算に対するAggregate(A)アルゴリズムを実行している。
これに対して、本実施形態に係る暗号化方法では、従来方式同様、Encryption’アルゴリズムのステップS106にてG上の演算に対するAggregate(C)を実行しているが、K’導出には、ステップS107におけるG上の演算と、ステップS108におけるG1上の演算を利用し、Aggregate(C)アルゴリズムを利用していない。ここで、Aggregate(A)アルゴリズムとAggregate(C)アルゴリズムは、ステップS50およびステップS210における出力値が異なるのみであり、かつ、Aggregate(C)アルゴリズムにおいて追加で出力されるPr-2,r-1、Pr-2,rは、Prを導出するために利用される値でもあるため、これらを追加出力したとしても、計算量はAggregate(A)アルゴリズムと同じである。
すなわち、秘密鍵dkjを持つユーザjが暗号化を実行する際の計算は、従来方式ではAggregate(A)アルゴリズム実行回数が必ず二回となるのに対し、本実施形態に係る暗号化方法では、若干回数のG上での演算と一回の双線形写像演算が追加される代わりに、Aggregate(C)アルゴリズム実行回数が一回へと削減されている。また、K’導出に必要な計算量に関しては、従来方式ではrが大きくなるにつれr2に比例して大きくなるのに対して、本実施形態に係る暗号化方法ではrに関係なく、一定の計算量となっている点が大きく異なる。
本実施形態に係る暗号化処理の効果を示すため、従来方式と本実施形態に係る方式の両方における暗号化時の計算量比較を、図15に示す。図15に示したように、本実施形態に係る方法は、従来方式と比較して、双線形写像演算が1回、G上における各演算、すなわち楕円曲線上の加算及び乗算が各々3回および4回、Zp *上における逆元演算が2回増加している。しかしながら、G1上、すなわちビットサイズが最も大きい群における乗算、冪乗算、逆元演算を、各々(r2-r)/2回削減することに成功している。従来方式および本実施形態に係る方式における暗号化時の計算量を比較するため、まず、図15の各演算を実行するために必要となる演算量を、以下のように定義する。この時、従来方式と比較して、本方式の暗号化時における計算量の増加分は、図15より、以下の式121であることがわかる。一方、減少分は、以下の式122となる。よって、rが以下の式123を満たす場合には、本実施形態に係る方式の方が、暗号化時における計算量を削減可能となっていることが分かる。
なお、図15および上記式121〜式123における記号の意味は、以下の通りである。
A :Gにおける楕円曲線上の点の加算
D :Gにおける楕円曲線上の点の二倍算
S :Gにおける楕円曲線上の点のスカラー倍算
M :G1における乗算
Q :G1における二乗算
E :G1における冪乗算
I :G1における逆元演算
mul:Zp *における乗算
sqr:Zp *における二乗算
inv:Zp *における逆元演算
P :双線形写像演算
式123を満たすrを、数値例を用いて導出する。なお,以下では、128−bit等価安全性を満たす場合について考える。この時、pのビットサイズは256−bit、G1の元のビットサイズは3072−bitとなる。以降、Zp *上での乗算mulを基準として、具体的な数値例を示す。従来方式および本実施形態に係る方式の両方とも、G上における楕円曲線上の点の演算、G1、Zp *上における各種演算、および、双線形写像演算を利用している。これらの演算には様々な演算手法が存在するため、ここでは非特許文献2に示された演算見積もりを利用する。
非特許文献2では、Zp *上における演算に対して、以下の式124の関係を適用している。また、3072/256=12=22×3より、G1上における演算に対しては、以下の式125のようになる。また、楕円曲線上の点の演算に関しては、projective座標系を利用することにより、以下の式126のようになる。ここで、スカラー倍算Sは、二倍算と加算を繰り返し実行することによって計算されるため、その平均的な計算量は、点の係数のビット長log2p回の二倍算と(1/2)log2p回の加算として見積もることができる。よって、Sは、以下の式127のように見積もることができる。また、G1上での冪乗算Eも、位数pより指数部のビットサイズがlog2pであり、二乗算と乗算を繰り返し実行することによって計算されるため、スカラー倍算と同様に見積もることが可能であり、以下の式128のように見積もることができる。
双線形写像演算Pに関しては、双線形写像演算自体がMiller’s algorithmによる演算と最終冪乗と呼ばれる冪乗剰余演算から構成されるため、CFullを楕円曲線パラメータによって変動するMiller’s algorithmの計算量とすると、CFull+3Eとして見積もることができる。ここで、3Eは、現在想定しているパラメータに対する最終冪乗のコストである。今、非特許文献2に記載の表より、projective座標系におけるAte pairing演算の平均値をCLiteとすると、双線形写像演算Pは、以下の式129となる。
上記式124〜式129を用いて、式123は、以下の式130と変形できる。この式130を図示すると、図16のようになる。
図16から明らかなように、前述したようなパラメータ設定を行った場合には、排除されるユーザ数が4人以上となった場合、本実施形態に係る方式の方が、非常に効率よく演算可能であることが分かる。
(本実施形態に係る暗号化方法の変形例)
本実施形態に係る暗号化方式は、暗号化処理中にユーザに固有な値であるuiを利用するため、ユーザであれば暗号化を効率的に実行可能であるが、ユーザではないentityは実行不可能である。そのため、上述の暗号化方式のみを利用した場合、従来方式よりも暗号化可能なentityが制限される。また、ユーザであっても、rが非常に小さい場合には、従来方式の方が高速に暗号化可能である場合が存在する。よって、従来方式と本実施形態に係る方式を切り替えて利用ことで、効率よく暗号化処理を行うことができる。
例えば、暗号化装置30がEncryption処理またはEncryption’処理を実行する前に、以下の処理を実行することにより、効率的な暗号化処理を選択することが可能である。
暗号化装置30のセッション鍵決定部307は、自身が秘密鍵dkjを保持しているか否かを判断する。自身が秘密鍵dkjを保持していなければ、Encryption処理を実行する。また、自身が秘密鍵dkjを保持している場合には、排除受信装置特定部303は、排除されるユーザの集合Rの要素数をカウントして、rとする。
次に、セッション鍵算出部309は、本実施形態に係る暗号化処理のステップS106まで処理を実行する。
続いて、セッション鍵算出方法選択部321は、rに対するEncryption処理の実行時の計算量と、Encryption’処理の実行時の計算量と、を比較して、使用するセッション鍵算出方法を判定する。
その結果、Encryption処理実行時の計算量が、Encryption’処理実行時の計算量よりも少ない場合には、セッション鍵算出方法選択部321は、Encryption処理を実行した方が効率が良い旨を、セッション鍵算出部309に出力する。その後、
セッション鍵算出部309は、Encryption処理のステップS37以降を実行する。
また、Encryption’処理実行時の計算量が、Encryption処理実行時の計算量よりも少ない場合には、セッション鍵算出方法選択部321は、Encryption’処理を実行した方が効率が良い旨を、セッション鍵算出部309に出力する。その後、セッション鍵算出部309は、Encryption’処理のステップS107以降を実行する。
暗号化装置30は、かかる判定を行うことにより、効率的な暗号化処理を選択することが可能である。
なお、上述の変形例では、暗号化装置30自身が、効率的な暗号化処理を選択する場合であったが、暗号化装置30を操作する送信者自身が、処理に要する計算量を算出して、用いる処理の選択を行っても良い。
以上説明したように、本実施形態に係る方式によれば、従来方式において暗号化時に必要となるビット長が長い巡回群上での乗算、冪乗算、逆元演算を削除し、その代わりに1回の双線形写像演算(pairing)と楕円曲線上の点の演算等を若干数追加することによって、ユーザ、すなわち秘密鍵を保持するentity(人、デバイス、サーバ等の動作主体)が暗号化を実行する際には、特にrが増加するほど、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減可能となる。
(第2の実施形態)
<従来方式の問題点>
従来方式では、上述の問題点に加えて、以下のような問題点も存在する。従来方式では、Setup処理の実行時に生成される初期公開鍵ek0={p,G,G1,e,W,H,V}に加え、Join処理が実行されるたびに、ユーザiに対する公開情報(ui,Bi,Vi)が追加される。従って、n人のユーザが存在する場合には、従来方式における公開鍵は、以下の式917のようになる。
すなわち、従来方式では、図9(b)に示したように、n人のユーザに対する公開鍵の要素数が3n+3となり、ユーザ数の増加に応じて、公開鍵のサイズが非常に大きくなるという問題があった。例えば、128−bit等価安全性を考えた場合、素数pのビットサイズが256−bitとなり、G1上の元のビットサイズが3072−bitとなる。ここで、各ユーザの固有値ui(i=1,・・・,n)のビットサイズを32−bitとし、n=10000人程度のシステムを考える。このとき、従来方式における公開鍵サイズは、最終的に、約4.3MBとなってしまう。
なお、上述の公開鍵のうち、p,G,G1,eは、システムパラメータであるため、公開鍵の要素数にはカウントしない。
そこで、本願発明者らは、上記の問題点を解決すべく鋭意研究を行い、以下に説明するような、公開鍵サイズ及び暗号化時に必要となる計算量の削減を可能とした本発明の一実施形態に係る暗号鍵配信システムを開発した。
[本実施形態に係る説明]
これまで説明したような基盤技術を踏まえながら、以下において、本発明の第2の実施形態に係る暗号鍵配信システム10について、詳細に説明する。なお、本実施形態に係る暗号鍵配信システム10は、本発明の第1の実施形態に係る暗号鍵配信システムと同様の構成を有するため、構成に関する詳細な説明は省略する。
本実施形態に係る暗号鍵配信システム10では、従来方式におけるSetup処理、Join処理、Encryption処理の各基本処理をSetup’処理、Join’処理、Encryption”処理へと変更し、Aggregate(A)アルゴリズムの代わりに、第1の実施形態において説明したAggregate(C)アルゴリズムを利用することによって、公開鍵サイズおよび暗号化時に必要となる計算量の削減を達成するものである。よって、Decryption処理およびDecryption処理において利用されるAggregate(B)アルゴリズムに関しては、本発明の第1の実施形態に係る方式と同一のものを使用する。
また、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40のハードウェア構成は、本発明の第1の実施形態に係る鍵生成装置20、暗号化装置30および受信装置40のハードウェア構成と同一であるため、詳細な説明は省略する。
<本実施形態に係る鍵生成装置20について>
まず、図17を参照しながら、本実施形態に係る鍵生成装置20について、詳細に説明する。図17は、本実施形態に係る鍵生成装置20の構成について説明するためのブロック図である。
本実施形態に係る鍵生成装置20は、例えば図17に示したように、パラメータ決定部251と、双線形群選択部253と、鍵生成部255と、配布部261と、を主に備える。
パラメータ決定部251は、本実施形態に係る鍵生成装置20が公開鍵や秘密鍵等を生成するために用いる様々なパラメータを所定の方法に基づいて決定する。かかるパラメータの例として、例えば、Setup処理等で用いられる素数pやG、H、V、γ等を挙げることができる。パラメータ決定部251は、例えば素数pやG、H、γを決定する際に、例えば乱数等を利用して無作為に値を決定する。また、パラメータ決定部251は、後述する双線形群選択部253から伝送された各種双線形群や双線形写像eを利用して、パラメータを決定してもよい。パラメータ決定部251は、決定した各種パラメータを、後述する双線形群選択部253や鍵生成部255に伝送する。また、パラメータ決定部251は、決定した各種パラメータを、後述する記憶部267に記録してもよい。
双線形群選択部253は、パラメータ決定部251から伝送されたパラメータである素数pを用いて、pを位数とする双線形写像群Gと、巡回乗法群G1を選択する。また、双線形群選択部253は、双線形写像e:G×G→G1を決定する。双線形群選択部253は、選択した双線形群G、G1と、決定した双線形写像eとを、パラメータ決定部251および後述する鍵生成部255に伝送する。また、双線形群選択部253は、選択した双線形群G、G1と、決定した双線形写像eとを、後述する記憶部267に記録してもよい。
鍵生成部255は、パラメータ決定部251および双線形群選択部253から伝送された各種データを利用して、公開鍵、各ユーザに配布される秘密鍵、マスター鍵、擬似秘密鍵等の鍵や、各ユーザに対応する公開情報等を生成する。鍵生成部255は、鍵算出部257と、擬似秘密鍵算出部259と、を更に備える。
鍵生成部255は、パラメータ決定部251および双線形群選択部253から伝送された各種データを利用して、公開鍵、各ユーザに配布される秘密鍵およびマスター鍵と、各ユーザに対応する公開情報を生成する。生成された鍵および公開情報は、HDDやセキュアモジュールを備えたメモリ等から構成される記憶部に記録される。また、公開が必要な情報および配布する鍵類は、後述する配布部261へと伝送される。
擬似密鍵算出部259は、パラメータ決定部251および双線形群選択部253から伝送された各種データを利用して、擬似秘密鍵dk0を生成する。生成された擬似秘密鍵は、後述する配布部261へと伝送されるとともに、HDDやセキュアモジュールを備えたメモリ等から構成される記憶部に記録される。
配布部261は、鍵生成装置20が生成した公開鍵、秘密鍵および擬似秘密鍵と、公開が必要な情報とを、通信網12を介して配布する。かかる配布部261は、送受信部263と、公開鍵配布部265と、を更に備える。
送受信部263は、鍵生成部255が生成した秘密鍵を、安全な通信路を介して個々のユーザに送信するとともに、受信装置40から伝送されたシステム加入要求を受信する。受信されたシステム加入要求は鍵生成部255へと伝送され、鍵生成部255により新たな秘密鍵や公開鍵が生成される。
公開鍵配布部261は、鍵生成部255が生成した公開鍵、擬似秘密鍵および公開情報を、通信網12を介して暗号化装置30や受信装置40に配布する。暗号化装置30や受信装置40は、かかる公開鍵、擬似秘密鍵および公開情報を利用して、平文の暗号化処理や暗号文の復号処理を実行する。
記憶部267には、パラメータ決定部251が決定した各種パラメータや、双線形群選択部253が選択した双線形群や双線形写像が記録される。また、記憶部267には、鍵生成部255が生成した各種鍵や公開情報が、秘密保持される。更に、これらの各種データ以外にも、鍵生成装置20が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部267は、パラメータ決定部251、双線形群選択部253、鍵生成部255、配布部261等が、自由に読み書きを行うことが可能である。
<本実施形態に係る暗号化装置30について>
続いて、図18を参照しながら、本実施形態に係る暗号化装置30について、詳細に説明する。図18は、本実施形態に係る暗号化装置30の構成について説明するためのブロック図である。
本実施形態に係る暗号化装置30は、例えば図18に示したように、受信部301と、排除受信装置特定部303と、使用鍵特定部305と、セッション鍵決定部307と、双線形写像演算部313と、暗号化部315と、暗号文送信部317と、記憶部319と、を主に備える。また、本実施形態に係る暗号化装置30は、更に、セッション鍵算出方法選択部321を備えても良い。
受信部301は、鍵生成装置20により生成され、公開された公開鍵および擬似秘密鍵と公開情報とを受信する。受信した公開鍵、擬似秘密鍵および公開情報は、後述する記憶部319に記録され、必要な際に読み出されて利用される。
排除受信装置特定部303は、暗号化装置30に通信網12を介して接続されている複数の受信装置40の中から、暗号文の配信を排除する受信装置を特定し、排除される受信装置の集合Rを決定する。集合Rの決定に際しては、排除受信装置特定部303は、後述する記憶部317に記憶されている様々なデータを参照することができる。決定された集合Rは、後述するセッション鍵決定部307に伝送され、配信するコンテンツ等の平文を暗号化するために用いられるセッション鍵等の算出に利用される。また、排除受信装置特定部303は、決定された集合Rを後述する記憶部319に記録してもよい。
使用鍵特定部305は、後述する記憶部319を参照して、暗号化装置30自体に個人秘密鍵が提供されているか否かを判定する。記憶部319に個人秘密鍵が記録されている場合には、使用鍵特定部305は、個人秘密鍵が存在する旨を後述するセッション鍵決定部305に出力する。また、記憶部319に個人秘密鍵が記録されていない場合には、使用鍵特定部305は、個人秘密鍵は存在せず擬似秘密鍵のみが存在する旨をセッション鍵決定部305に出力する。また、使用鍵特定部305は、判定結果を後述する記憶部319に記録して、次回以降の判定処理を省略するようにしてもよい。
セッション鍵決定部307は、受信部301が受信し記憶部319に記録されている公開鍵、個人秘密鍵および公開情報と、排除受信装置特定部303が決定した集合Rと、使用鍵特定部305が出力した判定結果とに基づいて、配信するコンテンツ等の平文を暗号化するために用いられるセッション鍵等を決定する。このセッション鍵決定部307は、セッション鍵算出部309と、ヘッダ算出部311と、を更に備える。
セッション鍵算出部309は、記憶部319から取得した公開鍵および公開情報と、排除受信装置特定部303から伝送される、排除される受信装置の集合Rと、使用鍵特定部305が出力した判定結果とに基づいて、配信するコンテンツ等の平文を暗号化するために利用するセッション鍵を算出する。セッション鍵算出部309が算出したセッション鍵は、後述する暗号化部315に伝送され、平文を暗号化する際に利用される。また、セッション鍵算出部309は、算出したセッション鍵を、記憶部319に記録してもよい。
ヘッダ算出部311は、セッション鍵算出部309がセッション鍵を算出する際に計算した各種データと、記憶部319に記録されている公開鍵や公開情報等とを利用して、暗号文と同時に受信装置40に配信されるヘッダを生成する。生成されたヘッダは、後述する暗号文送信部317へと伝送される。また、ヘッダ算出部311は、生成したヘッダ情報を、記憶部319に記録してもよい。
双線形写像演算部313は、セッション鍵の算出の際に実行する必要がある双線形写像に関する演算を行う処理部である。双線形写像演算部313は、記憶部319に記録されている公開情報に含まれる双線形群G,G1と、セッション鍵決定部307から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、セッション鍵決定部307に再度伝送され、セッション鍵やヘッダの算出に利用される。なお、双線形写像演算部313は、演算結果を記憶部319に記録してもよい。
暗号化部315は、記憶部319等から配信するコンテンツ等の平文を取得し、セッション鍵決定部307で算出されたセッション鍵を用いて暗号化処理を行い、平文を暗号化する。暗号化された平文は、暗号文送信部317へと伝送される。また、暗号化部315は、暗号化した平文を、記憶部319に記録してもよい。
暗号文送信部317は、暗号化部315によって暗号化された暗号文と、ヘッダ算出部311によって算出されたヘッダとを、通信網12等を介して、各受信装置に同報配信する。
記憶部319には、受信部301が受信した公開鍵、擬似秘密鍵および公開情報や、排除受信装置特定部303が決定した集合Rや、セッション鍵決定部307が算出したセッション鍵やヘッダ情報等が記録される。また、記憶部319には、これらの各種データ以外にも、暗号化装置30が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部319は、受信部301、排除受信装置特定部303、使用鍵特定部305、セッション鍵決定部307、双線形写像演算部313、暗号化部315、暗号文送信部317、セッション鍵算出方法選択部321等が、自由に読み書きを行うことが可能である。
セッション鍵算出方法選択部321は、本実施形態に係る暗号化装置30が複数のセッション鍵算出方法を記憶しており、複数のセッション鍵算出方法を適宜選択可能である場合に、排除される受信装置の台数に応じて利用するセッション鍵算出方法を選択する。セッション鍵算出方法の選択に際しては、排除される受信装置の台数と所定の閾値との比較を行って、選択するセッション鍵算出方法を決定してもよく、排除される受信装置の台数に基づいて、選択可能なセッション鍵算出方法に要する計算量をそれぞれ算出し、算出した計算量を比較することで、利用するセッション鍵算出方法を選択してもよい。
<本実施形態に係る受信装置40について>
続いて、図19を参照しながら、本実施形態に係る受信装置40について、詳細に説明する。図19は、本実施形態に係る受信装置40の構成について説明するためのブロック図である。
本実施形態に係る受信装置40は、例えば図19に示したように、受信部401と、セッション鍵算出部403と、双線形写像演算部405と、復号部407と、記憶部409と、を主に備える。
受信部401は、鍵生成装置20により生成された秘密鍵、公開鍵および公開情報を受信する。また、受信部401は、暗号化装置30によって暗号化された暗号文やヘッダ情報についても、受信することが可能である。受信部401は、鍵生成装置20から受信した秘密鍵、公開鍵および公開情報と、暗号化装置30から受信したヘッダを、後述するセッション鍵算出部403に伝送し、暗号化装置30から受信した暗号文を、後述する復号部407に伝送する。なお、受信部401は、受信した秘密鍵、公開情報、暗号文、ヘッダ情報等を、後述する記憶部409に記録してもよい。
セッション鍵算出部403は、鍵生成装置20から取得した秘密鍵、公開鍵および公開情報と、暗号化装置30から送信されたヘッダ等に基づいて、暗号化装置30から配信された暗号文を復号化処理する際に利用するセッション鍵を算出する。セッション鍵算出部403は、算出したセッション鍵を、後述する復号部403に伝送する。また、セッション鍵算出部403は、算出したセッション鍵を、後述する記憶部409に記録してもよい。
双線形写像演算部405は、セッション鍵の算出の際に実行する必要がある双線形写像に関する演算を行う処理部である。双線形写像演算部405は、公開情報に含まれる双線形群G,G1と、セッション鍵算出部403から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、セッション鍵算出部403に再度伝送され、セッション鍵の算出に利用される。なお、双線形写像演算部405は、演算結果を記憶部409に記録してもよい。
復号部407は、セッション鍵算出部403が算出したセッション鍵を利用して、暗号化装置30から配信されたコンテンツ等の暗号文を復号化し、平文に変換する。復号部407は、取得した平文を、記憶部409に格納することが可能である。
記憶部409には、受信部401が受信した秘密鍵、公開鍵および公開情報が記録される。また、記憶部409には、暗号化装置30から送信された暗号文およびヘッダや、セッション鍵算出部403が算出したセッション鍵や、復号部407が復号化処理を行った平文等が記録されてもよい。さらに、記憶部409には、これらの各種データ以外にも、受信装置40が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部409は、受信部401、セッション鍵算出部403、双線形写像演算部405、復号部407等が、自由に読み書きを行うことが可能である。
以上、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40の機能の一例を示した。上記の各構成要素は、汎用的な部材や回路を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、各構成要素の機能を、CPU等が全て行ってもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用する構成を変更することが可能である。
<鍵生成装置20の動作:Setup’処理およびJoin’処理>
センタは、所有する鍵生成装置20を操作し、以下の手順に従って、公開鍵および公開情報と、各ユーザに対応する個人秘密鍵とを生成する。以下に、図20および図21を参照しながら、本実施形態に係る鍵生成装置20の動作(すなわち、Setup’処理およびJoin’処理)について、詳細に説明する。図20は、本実施形態に係る鍵生成処理を説明するための流れ図であり、図21は、本実施形態に係るユーザ登録処理を説明するための流れ図である。
(鍵生成装置20におけるSetup’処理)
Setup’処理は、本実施形態に係る鍵生成装置20を有するセンタがシステム構築時に一度だけ実行する鍵生成処理である。センタは、セキュリティパラメータλを決定し、鍵生成装置は、入力されたセキュリティパラメータλを用いて、以下に説明するSetup’処理を実行する。
まず、鍵生成装置20のパラメータ決定部251は、λ−bitの素数pを生成し、次いで、双線形群選択部253は、pを位数とする双線形写像群Gおよび巡回乗法群G1を選択する(ステップS301)。
次に、鍵生成装置20の双線形群選択部253は、双線形写像e:G×G→G1を決定する(ステップS302)。
続いて、鍵生成装置20のパラメータ決定部251は、G,H∈Gを選択する(ステップS303)。
その後、鍵生成装置20のパラメータ決定部251は、γ∈RZp *を選択し、W=γG∈Gを計算する(ステップS304)。このようにして得られたγおよびGは、センタのみがマスター鍵mk=(γ,G)として秘密保持する。
続いて、鍵生成装置20のパラメータ決定部251は、ユーザ固有値として利用しない値u0∈RZp *を選択し、擬似秘密鍵算出部259に出力する。擬似秘密鍵算出部259は、伝送されたu0に基づいて、以下の式201を用いて擬似秘密鍵dk0を算出する(ステップS305)。
次に、鍵生成装置20の鍵算出部257は、算出したデータを用いて、初期公開鍵ek0を以下のようにして構成する(ステップS306)。
ek0={p,G,G1,e,W,H,u0,dk0} ・・・(式202)
公開鍵の生成が終了すると、鍵生成装置20の配布部261は、Setup処理の実行によって得られた擬似秘密鍵dk0および初期公開鍵ek0を、システム全体の初期公開鍵として公開する。
(鍵生成装置20におけるJoin’処理)
Join’処理は、センタが、ユーザからのシステム加入要求がある毎に実行するユーザ登録処理である。この処理は、センタがシステム設定を終えた後に、任意のタイミングで実行されてよい。
センタは、公開鍵eki―1(1≦i≦n)、マスター鍵mkおよびi番目に加入したユーザのインデックスであるiを鍵生成装置20に入力し、以下に説明するJoin’処理を実行することで、システム加入要求を送信したユーザの秘密鍵を生成して、システムへの加入処理を行う。
まず、鍵生成装置20の鍵算出部257は、ユーザiに固有の値である、ui∈Zp *\{u0}を計算する(ステップS401)。その後、以下の式203に示す計算を行うことにより、鍵算出部257は、システム加入要求を送信したユーザiの秘密鍵dkiを計算する(ステップS402)。
ここで、上記式203におけるBiは、秘密鍵dkiの一部としているが、Biは秘密の情報ではなく公開情報であり、ユーザiは、Biを秘密保持する必要はない。
鍵生成装置30の配布部261は、Join’処理の実行によって得られたユーザiの秘密鍵dkiを、安全な通信路を利用してユーザiに秘密裏に送信すると共に、現在の公開鍵eki−1にユーザiに対応する公開情報(ui,Bi)を追加し、公開鍵ekiとして更新、公開する。このとき、新たな公開鍵ekiは、以下の式204のような構成となっている。
以上、本実施形態に係る鍵生成装置20で実行されるSetup’処理およびJoin’処理について説明した。続いて、本実施形態に係る暗号化装置30で実行される暗号化処理(Encryption”処理)について、説明する。
<暗号化装置30の動作:Encryption”処理>
コンテンツ等の平文を配信する配信者は、所有する暗号化装置30を操作し、以下の手順に従って、暗号文とヘッダとを生成する。以下に、図22を参照しながら、本実施形態に係る暗号化装置30の動作について、詳細に説明する。図22は、本実施形態に係る暗号化装置30で実行される暗号化処理を説明するための流れ図である。
Encryption”処理は、コンテンツ等の配信を希望する任意の送信者が、暗号化装置30を用いて、配信毎に実行する処理である。
送信者は、公開鍵eki、排除されるユーザの集合R={uR1,・・・uRr}を本実施形態に係る暗号化装置30に入力し、以下に説明するEncryption”処理を実行することで、配信したいコンテンツ等の平文に暗号化処理を行う。ユーザによって入力された集合Rは、暗号化装置30の排除受信装置特定部303により、暗号化装置30が利用可能なデジタルデータに変換され、Encryption”処理に用いられる。
また、暗号化装置30の使用鍵特定部305は、暗号化装置30が個人秘密鍵dkjを保持しているか否かを判定し、結果をセッション鍵決定部305に予め通知しておく。セッション鍵決定部305は、使用鍵特定部305から個人秘密鍵dkjが存在する旨の通知を受けた場合には、以下で説明する処理において、暗号化装置30に固有の値であるujと、暗号化装置30に固有の秘密鍵であるdkjを使用する。また、使用鍵特定部305から個人秘密鍵dkjが存在しない旨の通知を受けた場合には、セッション鍵決定部305は、以下で説明する処理において、擬似ユーザに固有の値であるu0と、擬似秘密鍵dk0を使用する。
以下の説明では、ujおよびdkjを用いて式の表記を行うが、暗号化処理にu0およびdk0を用いる場合には、式中のujがu0となり、dkjがdk0となる。
暗号化装置30の排除受信装置特定部303は、まず、Rの要素数をカウントして、カウント結果をrとする(ステップS501)。続いて、排除受信装置特定部303は、集合Rにu0を追加して、r+1の値を新たにカウント結果rとする(ステップS502)。排除受信装置特定部303は、このカウント結果rをセッション鍵決定部307に出力する。
次に、暗号化装置30のセッション鍵算出部309は、k∈Zp *を選択する(ステップS503)。
続いて、暗号化装置30のセッション鍵算出部309は、排除されたユーザの数rについて、判定を行う(ステップS504)。r=1の場合(すなわち、排除されたユーザが一人だけの場合)には、後述するステップS505を実行する。また、r≧2の場合(すなわち、排除されたユーザが2人以上存在する場合)には、後述するステップS506を実行する。
排除されたユーザが一人である場合には、セッション鍵算出部309は、以下の式205および式206に基づいてPrおよびK’を決定し(ステップS505)、その後ステップS509を実行する。
また、排除されたユーザが2人以上である場合には、セッション鍵算出部309は、双線形写像演算部313に対して、G上で双線形群の演算処理(Aggregate(C)アルゴリズム)を行い、以下の式207〜式209に示した値を計算するよう要請し、双線形写像演算部313は、Aggregate(C)アルゴリズムを実行して、式207〜式209の値をセッション鍵算出部309に出力する(ステップS506)。なお、双線形群の演算処理アルゴリズムであるAggregate(C)アルゴリズムについては、本発明の第1の実施形態に係るAggregate(C)アルゴリズムと同一であるため、詳細な説明は省略する。
ここで、上記式208および式209は、式207(Pr)を導出する際に、計算の途中経過として算出される値であり、従来方式では、式208および式209の値は、計算値として出力されるものではなかった。本実施形態に係る暗号化処理では、式208および式209の計算値を効果的に利用することで、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減することが可能となる。
例えば、r=3の場合には、双線形写像演算部313は、上述のAggregate(C)アルゴリズムを実行することで、P1,2、P1,3およびP2,3の3つの値を、演算結果としてセッション鍵算出部307に出力する。
次に、セッション鍵算出部309は、双線形写像演算部313から出力された演算結果を利用して、以下の式210の値を算出する(ステップS507)。
上記式210を展開すると、以下の式211のようになる。本実施形態に係るセッション鍵算出部309は、上記γPrを算出することで、G1上でのAggregate(C)アルゴリズムが実行不要となり、Aggregate(C)アルゴリズムの実行回数を1回に減らすことが可能となる。
続いて、セッション鍵算出部309は、双線形写像演算部313の演算結果と、上記式211の値と、秘密鍵dkjまたはdk0を用いて、以下の式212に示した値を計算する(ステップS508)。
それぞれの場合について、PrおよびK’の算出が終了すると、ヘッダ算出部311は、ヘッダhdrを、以下の式213のようにして計算する(ステップS509)。
次に、セッション鍵算出部307は、セッション鍵Kを以下の式214に基づいて計算し、ヘッダhdr、K’およびkとともに出力する(ステップS510)。
暗号化装置30の暗号化部315は、平文Mのセッション鍵Kによる暗号文C=EK(M)を生成し、暗号文送信部317は、(hdr,C)を同報配信する。かかる処理を行うことで、送信者は、希望するユーザに対して暗号化されたコンテンツ等を送信することができる。
なお、上記の処理に加えて、さらに平文Mの暗号化、または暗号化及び同報配信までをEncryption”処理で実行する構成としてもよい。また、ステップS501およびステップS502は、送信者自身が実行し、Encryption”処理を実行する暗号化装置30に入力する形態をとってもよい。
なお、Encryption”処理においては、uR1は必ずu0となる。
<受信装置40の動作:Decryption処理>
本実施形態に係る受信装置40が実行するDecryption処理は、本発明の第1の実施形態におけるDecryption処理と同一であるため、詳細な説明は省略する。
<従来方式との相違点について>
従来方式では、P1,・・・,Prを導出するために、r≧2で場合には、EncryptionアルゴリズムにおけるステップS36にて、G上の演算に対するAggregate(A)アルゴリズムを実行する。その後、K’を導出するために、ステップS37にてG1上の演算に対するAggregate(A)アルゴリズムを実行している。
これに対して、本実施形態に係る暗号化方法では、従来方式同様、Encryption”アルゴリズムのステップS506にてG上の演算に対するAggregate(C)を実行しているが、K’導出には、ステップS507におけるG上の演算と、ステップS508におけるG1上の演算を利用し、Aggregate(C)アルゴリズムを利用していない。ここで、Aggregate(A)アルゴリズムとAggregate(C)アルゴリズムは、ステップS50およびステップS210における出力値が異なるのみであり、かつ、Aggregate(C)アルゴリズムにおいて追加で出力されるPr-2,r-1、Pr-2,rは、Prを導出するために利用される値でもあるため、これらを追加出力したとしても、計算量はAggregate(A)アルゴリズムと同じである。
すなわち、秘密鍵dkjを持つユーザjが暗号化を実行する際の計算は、従来方式ではAggregate(A)アルゴリズム実行回数が必ず二回となるのに対し、本実施形態に係る暗号化方法では、若干回数のG上での演算と一回の双線形写像演算が追加される代わりに、Aggregate(C)アルゴリズム実行回数が一回へと削減されている。また、K’導出に必要な計算量に関しては、従来方式ではrが大きくなるにつれr2に比例して大きくなるのに対して、本実施形態に係る暗号化方法ではrに関係なく、一定の計算量となっている点が大きく異なる。
また、Setup処理およびJoin処理をそれぞれSetup’処理およびJoin’処理へと変更することによって擬似ユーザの秘密鍵(擬似秘密鍵)dk0を生成、公開し、Encryption”処理では、常にRに擬似ユーザに固有の値であるu0を追加することによって、秘密鍵を保持しないユーザであってもEncryption”処理を実行可能としている。これにより、任意のユーザ、すなわち秘密鍵を保持しないユーザであっても、暗号化時に要する計算量を削減可能としている。
ここで、本実施形態に係る暗号化方式は、本発明の第1の実施形態におけるEncryption’処理を、任意のentityが利用可能とするように変更したものであるため、暗号化時における計算量に関しては,任意のentityが、本発明の第1の実施形態に記載の暗号化時における計算量削減効果を得ることが可能である。なお、得られる削減効果の詳細に関しては、第1の実施形態に記載されているため、ここでは省略する。
また、従来方式では、暗号化時にG上でのAggregate(A)アルゴリズムの実行に加えて、G1上でのAggregate(A)アルゴリズムの実行も必要となる。このとき、G1上でのAggregate(A)アルゴリズムでは、Viを利用する必要があるため、Join処理の実行時に、センタはViを公開しておく必要がある。よって、n人のユーザに対してJoin処理を実行した場合の公開鍵は、図23に示したようなものとなり、システムパラメータを除いた要素数は、3n+3となる。
これに対し、本実施形態に係る方式では、Setup’処理の実行により擬似ユーザの秘密鍵(擬似秘密鍵)dk0を公開しているため、任意のentityがEncryption”処理を実行可能となり、G1上でのAggregate(A)アルゴリズムを実行する必要がなくなる。そのため、センタはViを公開する必要が無くなるため、Join’処理では、Join処理において必要であったViの計算および出力が不要となる。これにより、n人のユーザに対してJoin’処理を実行した場合の公開鍵は、図23に示したようなものとなり、システムパラメータを除いた要素数は、2n+5となる。
以上の説明より、3n+3≧2n+5、すなわち、n≧2である場合には、従来方式と比較して、公開鍵サイズを削減可能であることがわかる。
公開鍵における要素数に関しては、n≧2を満たす場合には、本実施形態に係る方式が効果的であることを示した。しかしながら、公開鍵における各要素は、異なる群における元の集合であるため、安全性を確保するために必要となるビットサイズが異なる。よって以下では、具体的なビットサイズを想定した上で、公開鍵サイズの比較を行う。なお、以下では、128−bit等価安全性を満たす場合について考える。このとき、素数pのビットサイズは256−bitとなり、G1の元のビットサイズは3072−bitとなる。
従来方式における公開鍵の各要素は、W,H,Bi(i=1,・・・,n)が楕円曲線上の点、すなわち、Gの元であり、Vi(i=1,・・・,n)がG1の元となっている。今、簡単のため各ユーザに固有の値であるui(i=1,・・・,n)のビットサイズを32−bitとすると、従来方式における公開鍵のビットサイズは、以下の式215となる。
これに対して、本実施形態に係る方式では、公開鍵のビットサイズは、以下の式216のようになる。
nの増加に体得る各々の値を比較した結果を、図24に示す。図24から明らかなように、ビットサイズで比較した場合には、任意のnに対して本実施形態に係る方式の方が、ビットサイズを低く抑えられることがわかる。
(本実施形態に係る暗号化方法の変形例)
本実施形態に係る暗号化処理(Encryption”処理)では、排除されるユーザの数が実質0、すなわち、擬似ユーザのみが排除されるユーザとなっている場合には、ステップS505において式212を用いてK’を算出している。しかしながら、以下のような方法を用いることで、ステップS505におけるK’の算出を削減することが可能である。
すなわち、鍵生成装置20におけるSetup’処理において、以下の式217を予め計算しておき、公開鍵に係る値を追加することによって、ステップS505におけるK’の算出を削減することが可能である。
また、本実施形態に係るEncryption”処理では、送信者が秘密鍵を保持していない場合は擬似秘密鍵dk0を利用し、ユーザである、すなわち、個人秘密鍵を保持している場合には、自身の秘密鍵を利用することとしている。しかしながら、秘密鍵を安全に保持するためには、秘密鍵の利用頻度を必要最低限にとどめることが望ましい。従って、送信者が個人秘密鍵を保持しているか否かにかかわらず、暗号化時には常に擬似秘密鍵を利用するように構成することも可能である。
この場合、Encryption”処理におけるステップS508の式212式を、以下の式218とすることが可能である。
かかる方法を用いることで、ステップS508におけるK’の算出を削減することが可能である。
また、本実施形態に係るSetup’処理中において、ステップS306では、以下の式202を初期公開鍵ek0として公開している。
これに対し、以下の式219を計算し、初期公開鍵ek0を、以下の式220とする。かかる初期公開鍵を用いる場合には、以降Hの代わりに式219で算出したH0を利用することとする。かかる初期公開鍵を用いることで、Encryption”処理におけるステップS502を省略することが可能となる。
以上説明したように、本実施形態に係る方式によれば、従来方式において暗号化時に必要となるビット長が長い巡回群上での乗算、冪乗算、逆元演算を削除し、その代わりに1回の双線形写像演算(pairing)と楕円曲線上の点の演算等を若干数追加することによって、ユーザ、すなわち秘密鍵を保持するentity(人、デバイス、サーバ等の動作主体)が暗号化を実行する際には、特にrが増加するほど、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減可能となる。
また、公開情報として、擬似秘密鍵を公開することで、従来方式において暗号化時に必要となるビット長が長い巡回群上の要素を公開する必要がなくなるため、公開鍵サイズの削減も実現可能となる。
(第3の実施形態および第4の実施形態について)
ところで、従来方式では、任意のentityがヘッダを生成可能であるため、受信者がヘッダ作成者を確認することが不可能であるという問題があった。上記のような問題点を解決するためには、従来方式に加えて別途署名方式を利用することによって解決可能であるが、Broadcast Encryptionと署名を同時に実現する方式はこれまで存在しなかったため、Broadcast Encryption用の鍵と、署名生成用の鍵という二種類の秘密鍵を保持する必要があり、これらの秘密保持によるメモリ量が増加するという問題も存在した。
そこで、以下に示す本発明の第3の実施形態および第4の実施形態では、受信者側における受信内容の改ざん検知および送信者の確認が可能となるとともに、受信者側が保持する鍵数の増加を抑制することが可能な鍵生成装置、暗号化装置、受信装置、鍵生成方法、暗号化方法、鍵処理方法およびプログラムを提供することを目的とする。
本発明の第3の実施形態および第4の実施形態によれば、Broadcast Encryption用の鍵を利用して送信者認証用情報を生成し、生成した送信者認証用情報をヘッダ及び暗号文と共に配信することによって、受信者側における受信内容の改ざん検知および送信者の確認が可能となるとともに、受信者側が保持する鍵数の増加を抑制することが可能である。
(第3の実施形態)
<暗号鍵配信システムについて>
以下に、本発明の第3の実施形態に係る暗号鍵配信システムについて、詳細に説明する。
図25は、本実施形態に係る暗号鍵配信システム10を示した説明図である。暗号鍵配信システム10は、例えば、通信網12と、鍵生成装置20と、暗号化装置30と、受信装置40Aと、受信装置40Bと、を含む。
通信網12は、鍵生成装置20、暗号化装置30および受信装置40を双方向通信又は一方向通信可能に接続する通信回線網である。この通信網は、例えば、インターネット、電話回線網、衛星通信網、同報通信路等の公衆回線網や、WAN(Wide Area Network)、LAN(Local Area Network)、IP−VPN(Internet Protocol−Virtual Private Network)、ワイヤレスLAN等の専用回線網などで構成されており、有線/無線を問わない。
鍵生成装置20は、公開鍵と、複数の受信装置それぞれに固有の秘密鍵とを生成し、公開鍵を公開するとともに、各受信装置に対して、安全な通信路を介して、それぞれの秘密鍵を配信する。なお、この鍵生成装置20は、公開鍵および秘密鍵の生成・管理を行うセンタが所有する。
暗号化装置30は、鍵生成装置20によって生成および公開された公開鍵を用いて、任意のコンテンツを暗号化し、通信網12を介して、各受信装置に配信する。この暗号化装置30は、任意の第三者が所有することが可能であり、また、鍵生成装置20の所有者や、受信装置40の所有者が所有することも可能である。
受信装置40は、暗号化装置30から配信された暗号化されたコンテンツを、固有の秘密鍵によって復号化して利用することが可能である。なお、受信装置40Aと受信装置40Bとは、通信網12または有線を介して互いに接続可能である。なお、この受信装置40は、各契約者によって所有されるものである。
なお、受信装置40は、パーソナルコンピュータ(Personal Computer:PC)等のコンピュータ装置(ノート型、デスクトップ型を問わない。)例に限定されず、ネットワークを介した通信機能を有する機器であれば、例えばPDA(Personal Digital Assistant)、家庭用ゲーム機、DVD/HDDレコーダ、Blu−rayレコーダ、テレビジョン受像器等の情報家電、テレビジョン放送用のチューナやデコーダなどで構成することもできる。また、受信装置40は、契約者が持ち運びできるポータブルデバイス(Portabale Device)、例えば、携帯型ゲーム機、携帯電話、携帯型映像/音声プレーヤ、PDA、PHSなどであってもよい。
<鍵生成装置20のハードウェア構成について>
次に、本実施形態に係る鍵生成装置20のハードウェア構成について、図26を参照しながら簡単に説明する。
図26は、鍵生成装置20のハードウェア構成を示したブロック図である。鍵生成装置20は、例えば、CPU(Central Processing Unit)201と、ROM(Read Only Memory)203と、RAM(Random Access Memory)205と、HDD(Hard Disk Drive)207と、暗号処理部209と、メモリ(セキュアモジュール)211と、を主に備える。
CPU201は、演算処理装置および制御装置として機能し、ROM203、RAM205、HDD207、またはリムーバブル記録媒体14等に記録された各種プログラムに従って鍵生成装置20内の動作全般を制御する。ROM203は、CPU201が使用するプログラムや演算パラメータ等を記憶する。RAM205は、CPU201の実行において使用するプログラムや、このプログラムの実行において適宜変化するパラメータ等を、一次記憶する。
HDD207は、本実施形態に係る鍵生成装置20の記憶部の一例として構成されたデータ格納用の装置である。このHDD207は、ハードディスクを駆動し、CPU201が実行するプログラムや各種データを格納する。暗号処理部209は、本実施形態に係る鍵生成装置20がCPU201の制御のもとで実行する各種の暗号処理を実行する。メモリ(セキュアモジュール)211は、主に、個人秘密鍵や、センタ秘密である乱数等の秘匿が必要な情報を安全に格納するが、このメモリ211の内部に格納された情報は、外部から参照することができないという特徴がある。また、メモリ(セキュアモジュール)211は、例えば、耐タンパ性を有する記憶装置により構成されていてもよい。なお、セキュアモジュールはメモリである旨の記載をしているが、本発明に係るセキュアモジュールは、メモリに限定されるわけではなく、例えば、磁気ディスク、光ディスク、光磁気ディスクであってもよく、また、半導体メモリ等の記憶媒体であってもよい。
上記のCPU201、ROM203、RAM205、HDD207、暗号処理部209、および、メモリ211は、CPUバス等から構成されるバス213により、相互に接続されている。
バス213は、ブリッジを介して、PCI(Peripheral Component Interconnect/Interface)バスなどの入出力インターフェース215に接続されている。
入力装置217は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバー等のユーザが操作する操作手段と、使用者による操作に基づいて入力信号を生成し、CPU201に出力する入力制御回路等から構成されている。鍵生成装置20の使用者は、この入力部217を操作することにより、鍵生成装置20に対して各種のデータを入力したり処理動作を指示したりすることができる。
出力装置219は、例えば、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプ等の表示装置と、スピーカおよびヘッドホン等の音声出力装置等で構成される。出力部219は、例えば、再生されたコンテンツを出力することが可能である。具体的には、表示装置は、再生された映像データ等の各種情報を、テキストまたはイメージで表示する。一方、音声出力装置は、再生された音楽データ等を音声に変換して出力する。
通信装置221は、例えば、通信網12に接続するための通信デバイス等で構成された通信インターフェースである。この通信装置221は、例えば暗号化装置30や受信装置40A、40Bとの間で、通信網12を介して、暗号鍵に関する情報や、コンテンツ情報等といった、各種データを送受信する。
ドライブ223は、記憶媒体用リーダライタであり、鍵生成装置20に内蔵、あるいは外付けされる。ドライブ223は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体14に記録されている情報を読み出して、RAM205に出力する。また、ドライブ223は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体14に記録を書き込むことも可能である。リムーバブル記録媒体14は、例えば、DVDメディア、HD−DVDメディア、Blu−rayメディア、コンパクトフラッシュ(登録商標)(CompactFlash:CF)、メモリースティック、または、SDメモリカード(Secure Digital memory card)等である。また、リムーバブル記録媒体927は、例えば、非接触型ICチップを搭載したICカード(Integrated Circuit card)または電子機器等であってもよい。
なお、暗号化装置30および受信装置40のハードウェア構成は、鍵生成装置20のハードウェア構成と実質的に同一であるので、説明を省略する。
以上、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40の機能を実現可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。また、上記のハードウェア構成は、あくまでも一例であり、これに限定されるものでないことは言うまでもない。例えば、HDD207とメモリ(セキュアモジュール)211とを同一の記憶装置により構成してもよい。また、利用形態によっては、バス213、または入出力インターフェース215等を省略する構成も可能である。以下、上記のようなハードウェア構成により実現される暗号鍵生成方式について詳述する。
<従来方式の問題点>
ここで、先に説明したように、従来方式では、任意のentityによる暗号化と、送信者が指定したユーザ集合に属するユーザのみによる復号という、公開鍵Broadcast Encryption方式を実現している。しかしながら、ヘッダhdrを生成したentity自体の正当性を検証する手段が存在しないという問題点が存在する。
例えば、従来方式を利用して、インターネットを経由するコンテンツ配信システムにおいて、システムにおけるデバイスのアップデート用ファームウェアもコンテンツ同様の方法により暗号化し、配信する場合を考える。このような場合、従来方式の安全性により、ファームウェアの内容自体は送信者が指定したユーザ以外のentityが知ることはできない。しかしながら、従来方式を利用した場合には、送信者認証機能が付加されていないため、送信されたヘッダhdrおよび暗号化されたファームウェアが、正しいentity(デバイスの製造元等)によって作成されたものかどうかを、デバイス自身が判断不可能である。仮に、送信者を確認せずにhdrを復号し、そこで得られたセッション鍵を利用して暗号化されたファームウェアを復号および実行した場合、ヘッダhdrおよびセッション鍵Kは任意のentityが生成可能であるため、悪意のあるentityによって生成された不正なファームウェアであっても実行してしまうという問題(第1の問題点)が存在する。
上記のような問題点を回避するためには、通常、センタが各ユーザに対して従来方式における秘密鍵とは別に署名・検証用鍵ペアを提供し、ヘッダ送信時には、送信者がセッション鍵および暗号文と共にその署名を生成した後、ヘッダ、暗号文と共に配信する。受信者は、送信者の検証用鍵を利用してセッション鍵、暗号文および署名の正当性を検証し、検証に成功すれば、正当なユーザからのヘッダおよび暗号文であるとして復号する。このように構成することで前述の問題点は回避可能となるが、この場合には、各ユーザが従来方式における秘密鍵以外に、署名・検証用の鍵ペアを保持する必要がある。その結果、ユーザが所持するデバイスでは、保持する情報量、すなわちメモリ量が増加するという問題(第2の問題点)が存在する。
そこで、本願発明者らは、上述の問題点を解決すべく鋭意研究を行い、以下に説明するような、本発明の一実施形態に係る暗号鍵配信システムを開発した。
<本実施形態に係る説明>
これまで説明したような基盤技術を踏まえながら、以下において、本発明の第3の実施形態に係る鍵生成装置20、暗号化装置30および受信装置40について、詳細に説明する。
本実施形態に係る暗号鍵配信システム10では、従来方式におけるSetupアルゴリズムをSetup”アルゴリズムへと変更すると共に、ヘッダ署名用の処理として送信者認証用情報生成処理を追加するとともに、ヘッダ検証用の処理として受信内容検証処理を追加するものである。
よって、Join処理、Encryption処理、Decryption処理、Encryption処理において利用されるAggregate(A)アルゴリズム、および、Decryption処理において利用されるAggregate(B)アルゴリズムに関しては、従来方式と同一のものを使用する。
<本実施形態に係る鍵生成装置20について>
まず、図27を参照しながら、本実施形態に係る鍵生成装置20について、詳細に説明する。図27は、本実施形態に係る鍵生成装置20の構成について説明するためのブロック図である。
本実施形態に係る鍵生成装置20は、例えば図27に示したように、パラメータ決定部1251と、双線形群選択部1253と、鍵生成部1255と、配布部1261と、記憶部1267と、を主に備える。
パラメータ決定部1251は、本実施形態に係る鍵生成装置20が公開鍵や秘密鍵等を生成するために用いる様々なパラメータを所定の方法に基づいて決定する。かかるパラメータの例として、例えば、Setup処理等で用いられる素数pやG、H、V、γ等を挙げることができる。パラメータ決定部251は、例えば素数pやG、H、γを決定する際に、例えば乱数等を利用して無作為に値を決定する。また、パラメータ決定部1251は、後述する双線形群選択部1253から伝送された各種双線形群や双線形写像eを利用して、パラメータを決定してもよい。パラメータ決定部1251は、決定した各種パラメータを、後述する双線形群選択部1253や鍵生成部1255に伝送する。また、パラメータ決定部1251は、決定した各種パラメータを、後述する記憶部1267に記録してもよい。
双線形群選択部1253は、パラメータ決定部1251から伝送されたパラメータである素数pを用いて、pを位数とする双線形写像群Gと、巡回乗法群G1を選択する。また、双線形群選択部1253は、双線形写像e:G×G→G1を決定する。双線形群選択部1253は、選択した双線形群G、G1と、決定した双線形写像eとを、パラメータ決定部1251および後述する鍵生成部1255に伝送する。また、双線形群選択部1253は、選択した双線形群G、G1と、決定した双線形写像eとを、後述する記憶部1267に記録してもよい。
鍵生成部1255は、パラメータ決定部1251および双線形群選択部1253から伝送された各種データを利用して、公開鍵、各ユーザに配布される秘密鍵、マスター鍵等の鍵や、各ユーザに対応する公開情報等を生成する。生成された鍵や公開情報は、HDDやセキュアモジュールを備えたメモリ等から構成される記憶部に記録される。また、公開が必要な情報および配布する鍵類は、後述する配布部1261へと伝送される。
配布部1261は、鍵生成装置20が生成した公開鍵および秘密鍵と、公開が必要な情報とを、通信網12を介して配布する。かかる配布部1261は、送受信部1263と、公開鍵配布部1265と、を更に備える。
送受信部1263は、鍵生成部1255が生成した秘密鍵を、安全な通信路を介して個々のユーザに送信するとともに、受信装置40から伝送されたシステム加入要求を受信する。受信されたシステム加入要求は鍵生成部1255へと伝送され、鍵生成部1255により新たな秘密鍵や公開鍵が生成される。
公開鍵配布部1265は、鍵生成部1255が生成した公開鍵や公開情報を、通信網12を介して暗号化装置30や受信装置40に配布する。暗号化装置30や受信装置40は、かかる公開鍵や公開情報を利用して、平文の暗号化処理や暗号文の復号処理を実行する。
記憶部1267には、パラメータ決定部1251が決定した各種パラメータや、双線形群選択部1253が選択した双線形群や双線形写像が記録される。また、記憶部1267には、鍵生成部1255が生成した各種鍵や公開情報が、秘密保持される。更に、これらの各種データ以外にも、鍵生成装置20が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部1267は、パラメータ決定部1251、双線形群選択部1253、鍵生成部1255、配布部1261等が、自由に読み書きを行うことが可能である。
<本実施形態に係る暗号化装置30について>
続いて、図28を参照しながら、本実施形態に係る暗号化装置30について、詳細に説明する。図28は、本実施形態に係る暗号化装置30の構成について説明するためのブロック図である。
本実施形態に係る暗号化装置30は、例えば図28に示したように、受信部1301と、排除受信装置特定部1303と、セッション鍵決定部1307と、双線形写像演算部1313と、暗号化部1315と、暗号文送信部1317と、記憶部1319と、送信者認証用情報生成部1321と、を主に備える。
受信部1301は、鍵生成装置20により生成され、公開された公開鍵と公開情報とを受信する。受信した公開鍵および公開情報は、後述する記憶部1319に記録され、必要な際に読み出されて利用される。
排除受信装置特定部1303は、暗号化装置30に通信網12を介して接続されている複数の受信装置40の中から、暗号文の配信を排除する受信装置を特定し、排除される受信装置の集合Rを決定する。集合Rの決定に際しては、排除受信装置特定部1303は、後述する記憶部1319に記憶されている様々なデータを参照することができる。決定された集合Rは、後述するセッション鍵決定部1307に伝送され、配信するコンテンツ等の平文を暗号化するために用いられるセッション鍵等の算出に利用される。また、排除受信装置特定部1303は、決定された集合Rを後述する記憶部1319に記録してもよい。
セッション鍵決定部1307は、受信部1301が受信し記憶部1319に記録されている公開鍵および公開情報と、排除受信装置特定部1303が決定した集合R等とに基づいて、配信するコンテンツ等の平文を暗号化するために用いられるセッション鍵等を決定する。このセッション鍵決定部1307は、セッション鍵算出部1309と、ヘッダ算出部1311と、を更に備える。
セッション鍵算出部1309は、記憶部1319から取得した公開鍵および公開情報と、排除受信装置特定部1303から伝送される、排除される受信装置の集合R等と、に基づいて、配信するコンテンツ等の平文を暗号化するために利用するセッション鍵を算出する。セッション鍵算出部1309が算出したセッション鍵は、後述する暗号化部1315に伝送され、平文を暗号化する際に利用される。また、セッション鍵算出部1309が算出したセッション鍵と、セッション鍵の算出の際に用いられた各種パラメータは、後述する送信者認証用情報生成部1321に伝送され、送信者認証用情報の生成に利用される。なお、セッション鍵算出部1309は、算出したセッション鍵を、記憶部1319に記録してもよい。
ヘッダ算出部1311は、セッション鍵算出部1309がセッション鍵を算出する際に計算した各種データと、記憶部1319に記録されている公開鍵や公開情報等とを利用して、暗号文と同時に受信装置40に配信されるヘッダを生成する。生成されたヘッダは、後述する暗号文送信部1317および送信者認証用情報生成部1321へと伝送される。また、ヘッダ算出部1311は、生成したヘッダ情報を、記憶部1319に記録してもよい。
双線形写像演算部1313は、セッション鍵の算出の際および送信者認証用情報の生成の際に実行する必要がある双線形写像に関する演算を行う処理部である。セッション鍵の算出に際して、双線形写像演算部1313は、記憶部1319に記録されている公開情報に含まれる双線形群G,G1および層線形写像eと、セッション鍵決定部1307から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、セッション鍵決定部1307に再度伝送され、セッション鍵やヘッダの算出に利用される。
また、送信者認証用情報の生成に際して、双線形写像演算部1313は、記憶部1319に記録されている公開情報に含まれる双線形群G,G1および層線形写像eと、後述する送信者認証用情報生成部1321から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、送信者認証用情報生成部1321に再度伝送され、送信者認証用情報の生成に利用される。
なお、双線形写像演算部1313は、演算結果を記憶部1319に記録してもよい。
暗号化部1315は、記憶部1319等から配信するコンテンツ等の平文を取得し、セッション鍵決定部1307で算出されたセッション鍵を用いて暗号化処理を行い、平文を暗号化する。暗号化された平文は、暗号文送信部1317と送信者認証用情報生成部1321へと伝送される。また、暗号化部1315は、暗号化した平文を、記憶部1319に記録してもよい。
暗号文送信部1317は、暗号化部1315によって暗号化された暗号文と、ヘッダ算出部1311によって算出されたヘッダと、後述する送信者認証用情報生成部1321によって生成された送信者認証用情報とを、通信網12等を介して、各受信装置に同報配信する。
記憶部1319には、受信部1301が受信した公開鍵および公開情報や、排除受信装置特定部1303が決定した集合Rや、セッション鍵決定部1307が算出したセッション鍵やヘッダ情報等が記録される。また、記憶部1319には、これらの各種データ以外にも、暗号化装置30が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部1319は、受信部1301、排除受信装置特定部1303、セッション鍵決定部1307、双線形写像演算部1313、暗号化部1315、暗号文送信部1317、送信者認証用情報生成部1321等が、自由に読み書きを行うことが可能である。
送信者認証用情報生成部1321は、セッション鍵算出部1309から伝送されたセッション鍵および算出に用いられたパラメータと、ヘッダ算出部1311から伝送されたヘッダと、暗号化部1315から伝送された暗号文と、公開鍵および公開情報と、暗号化装置に固有の値および秘密鍵と、を利用して、送信者認証用情報を生成する。この送信者認証用情報は、受信者が受信装置において、送信された暗号文およびヘッダの改ざんの有無と、送信者の正当性とを検証するために用いられる情報である。送信者認証用情報生成部1321は、この送信者認証用情報を生成する際に、双線形写像演算部1313を利用してもよい。生成された送信者認証用情報は、暗号文送信部1317へと伝送され、ヘッダおよび暗号文とともに、各受信装置に同報配信される。また、送信者認証用情報生成部1321は、生成した送信者認証用情報を、記憶部1319に記録してもよい。
<本実施形態に係る受信装置40について>
続いて、図29を参照しながら、本実施形態に係る受信装置40について、詳細に説明する。図29は、本実施形態に係る受信装置40の構成について説明するためのブロック図である。
本実施形態に係る受信装置40は、例えば図29に示したように、受信部1401と、セッション鍵算出部1403と、双線形写像演算部1405と、受信内容検証部1407と、復号部1409と、記憶部1411と、を主に備える。
受信部1401は、鍵生成装置20により生成された秘密鍵、公開鍵および公開情報を受信する。また、受信部1401は、暗号化装置30によって暗号化された暗号文、ヘッダ情報および送信者認証用情報についても、受信することが可能である。受信部1401は、鍵生成装置20から受信した秘密鍵、公開鍵および公開情報と、暗号化装置30から受信したヘッダを、後述するセッション鍵算出部1403に伝送する。また、受信部1401は、暗号化装置30から受信した暗号文、ヘッダおよび送信者認証用情報を、後述する受信内容検証部1407に伝送する。さらに、受信部1401は、暗号化装置30から受信した暗号文を、後述する復号部1409に伝送する。なお、受信部1401は、受信した秘密鍵、公開情報、暗号文、ヘッダ情報、送信者認証用情報等を、後述する記憶部1411に記録してもよい。
セッション鍵算出部1403は、鍵生成装置20から取得した秘密鍵、公開鍵および公開情報と、暗号化装置30から送信されたヘッダ等に基づいて、暗号化装置30から配信された暗号文を復号化処理する際に利用するセッション鍵を算出する。セッション鍵算出部1403は、算出したセッション鍵を、後述する受信内容検証部1407および復号部1409に伝送する。また、セッション鍵算出部1403は、算出したセッション鍵を、後述する記憶部1411に記録してもよい。
双線形写像演算部1405は、セッション鍵の算出および受信内容の検証の際に実行する必要がある双線形写像に関する演算を行う処理部である。双線形写像演算部1405は、公開情報に含まれる双線形群G,G1と、セッション鍵算出部1403から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、セッション鍵算出部1403に再度伝送され、セッション鍵の算出に利用される。
また、受信内容の検証に際して、双線形写像演算部1405は、記憶部1411に記録されている公開情報に含まれる双線形群G,G1および層線形写像eと、後述する受信内容検証部1407から伝送されるデータとを用いて、双線形写像の演算を行う。演算結果は、受信内容検証部1407に再度伝送され、受信内容の検証に利用される。
なお、双線形写像演算部1405は、演算結果を記憶部1411に記録してもよい。
受信内容検証部1407は、セッション鍵算出部1403で算出したセッション鍵と、暗号化装置30から送信されたヘッダ、暗号文および送信者認証用情報とに基づいて、送信者の正当性と、受信した内容に施された改ざんの有無とを検証する。受信内容検証部1407は、検証処理を行う際に、双線形写像演算部1405を利用してもよい。受信内容検証部1407は、検証結果を、後述する復号部1409に出力する。また、受信内容検証部1407は、検証結果を、後述する記憶部1411に記録してもよい。
復号部1409は、セッション鍵算出部1403が算出したセッション鍵を利用して、暗号化装置30から配信されたコンテンツ等の暗号文を復号化し、平文に変換する。復号部1409により行われる復号化処理は、受信内容検証部1407から伝送される検証結果に応じて行われてもよい。すなわち、復号部1409は、受信内容検証部1407から受信内容の検証が成功した旨の通知を受けた場合に復号化処理を実行し、検証が失敗した旨の通知を受けた場合には復号化処理を実行しないようにすることが可能である。復号部1409は、取得した平文を、記憶部1411に格納することが可能である。
記憶部1411には、受信部1401が受信した秘密鍵、公開鍵および公開情報が記録される。また、記憶部1411には、暗号化装置30から送信された暗号文、ヘッダおよび送信者認証用情報や、セッション鍵算出部1403が算出したセッション鍵や、復号部1409が復号化処理を行った平文等が記録されてもよい。さらに、記憶部1411には、これらの各種データ以外にも、受信装置40が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部1411は、受信部1401、セッション鍵算出部1403、双線形写像演算部1405、受信内容検証部1407、復号部1409等が、自由に読み書きを行うことが可能である。
以上、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40の機能の一例を示した。上記の各構成要素は、汎用的な部材や回路を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、各構成要素の機能を、CPU等が全て行ってもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用する構成を変更することが可能である。
<鍵生成装置20の動作:Setup”処理およびJoin処理>
センタは、所有する鍵生成装置20を操作し、以下の手順に従って、公開鍵および公開情報と、各ユーザに対応する個人秘密鍵とを生成する。なお、本実施形態に係る鍵生成装置20が実行するJoin処理は、従来方法におけるJoin処理と同一であるため、図4を参照しながら、本実施形態に係る鍵生成装置20のJoin処理について、詳細に説明する。また、本実施形態に係る鍵生成装置20が実行するSetup”処理については、図30を参照しながら、詳細に説明する。図30は、本実施形態に係るSetup”処理を説明するための流れ図である。
[鍵生成装置20におけるSetup”処理]
Setup”処理は、本実施形態に係る鍵生成装置20を有するセンタがシステム構築時に一度だけ実行する鍵生成処理である。センタは、セキュリティパラメータλを決定し、鍵生成装置は、入力されたセキュリティパラメータλを用いて、以下に説明するSetup”処理を実行する。
まず、鍵生成装置20のパラメータ決定部1251は、λ−bitの素数pを生成し、次いで、双線形群選択部1253は、pを位数とする双線形写像群Gおよび巡回乗法群G1を選択する(ステップS1101)。
次に、鍵生成装置20の双線形群選択部1253は、双線形写像e:G×G→G1を決定する(ステップS1102)。
続いて、鍵生成装置20のパラメータ決定部1251は、G,H∈Gを選択して、V=e(G,H)∈G1を計算する(ステップS1103)。
その後、鍵生成装置20のパラメータ決定部1251は、γ∈RZp *を選択し、鍵生成装置20の鍵生成部1255は、W=γG∈GおよびX=γH∈Gを計算する(ステップS1104)。このようにして得られたγおよびGは、センタのみがマスター鍵mk=(γ,G)として秘密保持する。
次に、鍵生成装置20の鍵生成部1255は、算出したデータを用いて、初期公開鍵ek0を以下のようにして構成する(ステップS1105)。
ek0={p,G,G1,e,W,H,V,X} ・・・(式301)
公開鍵の生成が終了すると、鍵生成装置20の配布部1261は、Setup”処理の実行によって得られた初期公開鍵ek0を、システム全体の初期公開鍵として公開する。
本実施形態に係る鍵生成装置20は、公開情報として、X=γH∈Gを公開するため、暗号化装置30において暗号化処理を実行する際に、排除する受信装置がない場合(すなわち、全ての受信装置に対して送信を行う場合)の処理を簡略化することが可能となる。
[鍵生成装置20におけるJoin処理]
Join処理は、センタが、ユーザからのシステム加入要求がある毎に実行するユーザ登録処理である。この処理は、センタがシステム設定を終えた後に、任意のタイミングで実行されてよい。
センタは、公開鍵eki―1(1≦i≦n)、マスター鍵mkおよびi番目に加入したユーザのインデックスであるiを鍵生成装置20に入力し、以下に説明するJoin処理を実行することで、システム加入要求を送信したユーザの秘密鍵を生成して、システムへの加入処理を行う。
まず、鍵生成装置20の鍵生成部1255は、ユーザiに固有の値である、ui∈Zp *を計算する(ステップS21)。その後、以下の式302に示す計算を行うことにより、鍵生成部1255は、システム加入要求を送信したユーザiの秘密鍵dkiを計算する(ステップS22)。
ここで、上記式302におけるBiは、秘密鍵dkiの一部としているが、Biは秘密の情報ではなく公開情報であり、ユーザiは、Biを秘密保持する必要はない。
次に、鍵生成装置20の鍵生成部1255は、ユーザiに対応する公開情報を以下の式303のようにして計算し、dkiおよび(ui,Vi)を得る(ステップS23)。
鍵生成装置20の配布部1261は、Join処理の実行によって得られたユーザiの秘密鍵dkiを、安全な通信路を利用してユーザiに秘密裏に送信すると共に、現在の公開鍵eki−1にユーザiに対応する公開情報(ui,Bi,Vi)を追加し、公開鍵ekiとして更新、公開する。このとき、新たな公開鍵ekiは、以下の式304のような構成となっている。
以上、本実施形態に係る鍵生成装置20で実行されるSetup”処理およびJoin処理について説明した。続いて、本実施形態に係る暗号化装置30で実行される暗号化処理(Encryption処理)および送信者認証用情報の生成処理(Sign処理)について、説明する。
<暗号化装置30の動作:Encryption処理およびSign処理>
コンテンツ等の平文を配信する配信者は、所有する暗号化装置30を操作し、以下の手順に従って、暗号文とヘッダとを生成する。なお、本実施形態に係る暗号化装置30が実行するEncryption処理は、従来方法におけるEncryption処理と同一であるため、図5を参照しながら、本実施形態に係る暗号化装置30のEncryption処理について、詳細に説明する。また、配信者は、暗号化装置30を操作して、受信装置40において生成した暗号文とヘッダの正当性および改ざんの有無の検証に用いられる送信者認証用情報を、以下の手順に従って生成する。図31は、本実施形態に係る暗号化装置30が送信者認証用情報を生成する際に実行するSign処理を説明するための流れ図である。
[暗号化装置30におけるEncryption処理]
Encryption処理は、コンテンツ等の配信を希望する任意の送信者が、暗号化装置30を用いて、配信毎に実行する処理である。
送信者は、公開鍵eki、排除されるユーザの集合R={uR1,・・・uRr}を暗号化装置に入力し、以下に説明するEncryption処理を実行することで、配信したいコンテンツ等の平文に暗号化処理を行う。
暗号化装置30の排除受信装置特定部1303は、まず、Rの要素数をカウントして、カウント結果をrとし(ステップS31)、カウント結果rをセッション鍵決定部1307に出力する。次に、暗号化装置30のセッション鍵算出部1309は、k∈Zp *を選択する(ステップS32)。
続いて、暗号化装置30のセッション鍵算出部1309は、排除されたユーザの数rについて、判定を行う(ステップS33)。r=0の場合(すなわち、排除されたユーザが誰もいない場合)には、セッション鍵算出部1309は、後述するステップS34を実行する。また、r=1の場合(すなわち、排除されたユーザが一人だけの場合)には、後述するステップS35を実行する。また、r≧2の場合(すなわち、排除されたユーザが2人以上存在する場合)には、後述するステップS36を実行する。
排除されたユーザが誰もいない場合には、セッション鍵算出部1309は、以下の式305および式306に基づいて、PrおよびK’を決定し(ステップS34)、その後ステップS38を実行する。
また、排除されたユーザが一人である場合には、セッション鍵算出部1309は、以下の式307および式308に基づいてPrおよびK’を決定し(ステップS35)、その後ステップS38を実行する。
また、排除されたユーザが2人以上である場合には、セッション鍵算出部1309は、双線形写像演算部1313に対して、G上の演算における双線形群の演算処理(Aggregate(A)アルゴリズム)を行い、以下の式309に示した値を計算するよう要請し、双線形写像演算部1313は、Aggregate(A)アルゴリズムを実行して、式309の値をセッション鍵算出部1309に出力する(ステップS36)。なお、双線形群の演算処理アルゴリズムであるAggregate(A)アルゴリズムについては、以下で改めて詳細に説明する。
続いて、暗号化装置は、セッション鍵算出部1309は、双線形写像演算部1313に対して、G1上の演算における双線形群の演算処理(Aggregate(A)アルゴリズム)を行い、以下の式310に示した値を計算するよう要請し、双線形写像演算部1313は、Aggregate(A)アルゴリズムを実行して、式310の値をセッション鍵算出部1309に出力する(ステップS37)。
それぞれの場合について、PrおよびK’の算出が終了すると、暗号化装置30のヘッダ算出部1311は、ヘッダhdrを、以下の式311のようにして計算する(ステップS38)。
次に、暗号化装置のセッション鍵算出部1309は、セッション鍵Kを以下の式312に基づいて計算し、ヘッダhdr、K’およびkとともに出力する。
暗号化装置の暗号化部1315は、平文Mのセッション鍵Kによる暗号文C=EK(M)を生成し、送信者認証用情報生成部1321に伝送する。また、暗号文送信部1317は、生成された(hdr,C)を、後述する送信者認証用情報とともに同報配信する。かかる処理を行うことで、送信者は、希望するユーザに対して暗号化されたコンテンツ等を送信することができる。
なお、上記の処理に加えて、さらに平文Mの暗号化、または暗号化及び同報配信までをEncryption処理で実行する構成としてもよい。また、ステップS31は、送信者自身が実行し、Encryption処理を実行する暗号化装置に入力する形態をとってもよい。
[双線形群の演算処理−Aggregate(A)アルゴリズム]
続いて、図6を参照しながら、Encryption処理中で実施される双線形群演算処理であるAggregate(A)アルゴリズムについて、詳細に説明する。
Aggregate(A)アルゴリズムは、双線形写像演算部1313が(P1,・・・Pr)∈Gを算出する際に実行するアルゴリズムである。
まず、双線形写像演算部1313は、P0,m=VRm(m=1,・・・,r)とし、j=1と設定する(ステップS41)。続いて、双線形写像演算部1313は、l=j+1と設定する(ステップS42)。
ここで、双線形写像演算部1313は、uRjとuRlとの比較を行い、uRj=uRlであれば、エラーメッセージを出力し(ステップS44)、処理を終了する。uRj=uRlでなければ、以下に示すステップS45を実行する。
続いて、双線形写像演算部1313は、以下の式313を用いて、Pj,lを計算する(ステップS45)。
上記式313の計算が終了すると、双線形写像演算部1313は、lにl+1を代入し(ステップS46)、lとr+1の比較を行う(ステップS47)。l=r+1であれば、双線形写像演算部1313は、ステップS48を実行し、lがr+1と等しくなければ、双線形写像演算部1313は、ステップS43に戻って処理を続行する。
次に、双線形写像演算部1313は、jにj+1を代入し(ステップS48)、jとrの比較を行う(ステップS49)。j=rであれば、双線形写像演算部1313は、ステップS50を実行し、jがrと等しくなければ、双線形写像演算部1313は、ステップS42に戻って処理を続行する。
その後、双線形写像演算部1313は、Pj−1,lをPrとして出力する(ステップS50)。
例えば、r=3の場合には、双線形写像演算部1313は、上述のAggregate(A)アルゴリズムを実行することで、P2,3をP3として出力する。
なお、K’∈G1も、上述のAggregate(A)アルゴリズムによって算出することが可能である。この場合、双線形写像演算部1313は、P0,m=VRm(m=1,・・・,r)とし、加(減)算を乗(除)算に、乗算を冪乗算に変更した上で、ステップS45をG1上での演算として実行すればよい。ただし、Zp *上の演算である1/(uR1−uRj)は、いずれの場合においてもZp *上での減算及び逆元演算として計算する必要がある。
[送信者認証用情報の生成処理−Sign処理]
続いて、図31を参照しながら、本実施形態に係る送信者認証用情報生成部321が実行する送信者認証用情報の生成処理(Sign処理)について、詳細に説明する。図31は、本実施形態に係るSign処理を説明するための流れ図である。
Sign処理は、本実施形態に係る暗号化装置30を有する送信者がヘッダhdrの生成後に実行する処理である。なお,Sign処理は、正規の秘密鍵を有する送信者(暗号化装置30)にのみ実行可能な処理である。
送信者は、公開鍵eki、送信者自身に固有の値uj、送信者自身が保持する秘密鍵dkj、Encryption処理の実行後にセッション鍵算出部1309から出力されるk、K’、セッション鍵K、および、暗号文Cを暗号化装置30に入力し、以下で説明するSign処理を実行させる。
まず、送信者認証用情報生成部1321は、パラメータt∈Zp *を無作為に選択する(ステップS1201)。次に、送信者認証用情報生成部1321は、以下の式314に基づいて、送信者認証用情報の要素の一つであるsigj,0を算出する(ステップS1202)。
次に、送信者認証用情報生成部1321は、算出したsigj,0と、暗号文Cと、セッション鍵Kとを用いて、これらの値のハッシュ値hを、ハッシュ関数を用いて以下の式315のように計算する(ステップS1203)。
続いて、送信者認証用情報生成部1321は、算出したハッシュ値hと、選択したパラメータtと、セッション鍵算出部1309から伝送された値kとを用いて、送信者の秘密情報yを以下の式316のように算出する(ステップS1204)。
y=t−hk∈Zp * ・・・(式316)
次に、送信者認証用情報生成部1321は、算出した秘密情報yと、暗号化装置30に固有の秘密鍵dkjとを用いて、送信者認証用情報の要素の一つであるsigj,1を以下の式317に基づいて算出し、(uj,sigj,0,sigj,1)を送信者認証用情報として、暗号文送信部1317に出力する(ステップS1205)。
以上説明したように、本実施形態に係る送信者認証用情報生成部1321は、送信者が任意に選択したパラメータに基づいて算出された値と、暗号文Cと、セッション鍵Kとに関するハッシュ値を用いて送信者認証用情報を生成する。したがって、悪意のある第三者が暗号文の内容やセッション鍵を改ざんして送信者認証用情報を再生成した場合には、算出されるハッシュ値が異なる値となる。そのため、送信者認証用情報を受信した受信装置40は、この送信者認証用情報を利用することで、送信者の正当性および送信内容に改ざんがなされたか否かを検証することができる。
以上、本実施形態に係る暗号化装置30で実行されるEncryption処理およびSign処理について説明した。続いて、本実施形態に係る受信装置40で実行されるセッション鍵の算出処理(Decryption処理)および受信内容検証処理(Verification処理)について、説明する。
<受信装置40の動作:Decryption処理及びVerification処理>
暗号化装置30から暗号文等の送信を受けた受信者は、所有する受信装置40を操作し、以下の手順に従って、セッション鍵の算出処理であるDecryption処理を実行する。なお、本実施形態に係る受信装置40が実行するDecryption処理は、従来方法におけるDecryption処理と同一であるため、図7を参照しながら、本実施形態に係るDecryption処理について、詳細に説明する。また、受信者は、受信装置40を操作して、受信した内容の検証処理を、以下の手順に従って実行する。図32は、本実施形態に係る受信装置40が受信内容を検証する際に実行するVerification処理を説明するための流れ図である。
[セッション鍵の算出処理−Decryption処理]
Decryption処理は、コンテンツ等の配信を受けた受信者が暗号文を復号して平文を取得する際に必要となるセッション鍵を算出する処理であり、本実施形態に係る受信装置40によって実行される。
受信装置40は、送信者により送信されたhdrと、秘密鍵dkiと、自身に固有の値であるuiと、に基づいて、以下に説明するDecryption処理を実行することで、配信されたコンテンツ等の暗号文を復号するためのセッション鍵を算出する。また、受信装置40は、算出したセッション鍵を用いて暗号文の復号化処理を行う。
まず、受信装置40のセッション鍵算出部1403は、受信部1401が受信したhdrの中に、自身に固有の値であるuiが存在するか否かを判断する(ステップS51)。hdrの中に自身に固有の値であるuiが存在する場合には、送信者により受信者が排除されたことを意味するため、受信装置40は、エラーメッセージを出力し(ステップS52)、処理を終了する。また、hdrの中に自身に固有の値であるuiが存在しない場合には、受信装置40は、以下のステップS53を実行する。
次に、セッション鍵算出部1403は、rが0か否かを判定する(ステップS53)。r=0の場合には、セッション鍵算出部1403は、後述するステップS54を実行する。また、rが0ではない場合には、セッション鍵算出部1403は、後述するステップS55を実行する。
ここで、r=0の場合には、セッション鍵算出部1403は、Bi,R=Biと設定し、後述するステップS56を実施する。
また、rが0ではない場合には、セッション鍵算出部1403は、双線形写像演算部1405に対して、G上で双線形群の演算処理(Aggregate(B)アルゴリズム)を行い、以下の式318に示した値を計算するよう要請し、双線形写像演算部1405は、Aggregate(B)アルゴリズムを実行して、式318の値をセッション鍵算出部1403に出力する(ステップS55)。なお、双線形群の演算処理アルゴリズムであるAggregate(B)アルゴリズムについては、以下で改めて詳細に説明する。
ステップS54またはステップS55が終了すると、セッション鍵算出部1403は、取得したBi,Rを用いて、以下の式319によりセッション鍵Kを算出する(ステップS56)。
セッション鍵算出部1403は、上述のDecryption処理により得られたセッション鍵Kを、受信内容検証部1407へと出力する。受信内容検証部1407から検証が成功した旨の通知を受けた復号部1409は、上述のDecryption処理により得られたセッション鍵Kを利用して、送信者から送信されたコンテンツ等の暗号文Cを復号し、平文M=DK(C)を取得する。また、受信内容検証部1407から検証が失敗した旨の通知を受けた復号部1409は、受信した暗号文の復号処理を行わないようにしてもよい。
[双線形群の演算処理−Aggregate(B)アルゴリズム]
続いて、図8を参照しながら、Decryption処理中で実施される双線形群演算処理であるAggregate(B)アルゴリズムについて、詳細に説明する。
Aggregate(B)アルゴリズムは、双線形写像演算部1405がBi,R∈Gを算出する際に実行するアルゴリズムである。
まず、双線形写像演算部1405は、パラメータtmpを設定し、tmpの初期値をBiとし(ステップS61)、続いて、双線形写像演算部1405は、j=1と設定する(ステップS62)。
次に、双線形写像演算部1405は、uRjとuiとの比較を行い、uRj=uiであれば、エラーメッセージを出力し(ステップS64)、処理を終了する。uRj=uiでなければ、以下に示すステップS65を実行する。
続いて、双線形写像演算部1405は、以下の式320を用いて、新たなtmpの値を計算する(ステップS68)。
ここで、上記式314から明らかなように、式中の分母に、受信装置に固有の値であるuiが含まれているため、暗号化装置から送信されたhdrに自身のuiが含まれている場合には、tmpが値を持たなくなる。これにより、排除されたユーザは、セッション鍵Kの算出に必要なBi,Rを得ることが出来なくなるため、暗号文を復号化することができない。
上記の演算が終了すると、双線形写像演算部1405は、jの値をj+1とし(ステップS66)、次いで、jとr+1の比較を行う(ステップS67)。j=r+1であれば、双線形写像演算部1405は、後述するステップS68を実行する。また、jがr+1と等しくない場合には、双線形写像演算部1405は、ステップS63に戻って処理を続行する。
次に、双線形写像演算部1405は、tmpをセッション鍵算出部1403に出力する(ステップS68)。出力されたtmpは、Bi,Rであり、セッション鍵算出部1403は、かかる出力値を用いてセッション鍵Kを算出する。
[受信内容の検証処理−Verification処理]
Verification処理は、排除されていないユーザが、送信されたヘッダhdrと、送信者認証用情報である(uj,sigj,0,sigj,1)を利用して、ヘッダhdrおよび暗号文Cを生成したのが、正規の秘密鍵を有するユーザであり、かつ、ヘッダhdrおよび暗号文Cが改ざんされていないかどうかを確認する際に実行する処理である。
検証者は、受信したヘッダhdr、ヘッダhdrの復号結果として得られるセッション鍵K、暗号文C、および、送信者認証用情報(uj,sigj,0,sigj,1)を受信装置40に入力し、受信装置40は、以下で説明するVerification処理を実行する。
なお、Verification処理では、公開鍵ekiのシステムパラメータ部分である(p,G,G1,e)のみを利用するが、これらの値は、通常あらかじめ各ユーザ(あるいはユーザが保持する受信装置40)によって保持されているため、ここでは入力として公開鍵を与える必要がないものとする。
まず、受信装置40の受信内容検証部1407は、排除されるユーザの集合Rの要素数をカウントして、カウント結果をrとし(ステップS1301)、カウント結果の判定を行う(ステップS1302)。カウント結果rが0である場合(すなわち、排除されるユーザは存在せず、全てのユーザが復号可能である場合)には、受信内容検証部1407は、後述するステップS1303を実行する。また、カウント結果rが1である場合には、受信内容検証部1407は、後述するステップS1304を実行する。また、カウント結果rが2以上である場合には、受信内容検証部1407は、後述するステップS1305を実行する。
カウント結果rが0である場合には、受信内容検証部1407は、公開情報に含まれる値を利用してγPr=X、Pr=Hと設定し(ステップS1303)、後述するステップS1306を実行する。
また、カウント結果rが1である場合には、受信内容検証部1407は、下記式321に基づいてγPrを計算し(ステップS1304)、後述するステップS1306を実行する。
また、カウント結果rが2以上である場合には、受信内容検証部1407は、下記式322に基づいてγPrを計算し(ステップS1305)、後述するステップS1306を実行する。
次に、受信内容検証部1407は、算出したγPrと、送信者認証用情報と、公開情報とを利用して、下記式323に基づいて、検証用に用いられるパラメータCH1を計算する(ステップS1306)。
続いて、受信内容検証部1407は、暗号化装置30から送信された暗号文Cおよび送信者認証用情報と、セッション鍵算出部1403から伝送されたセッション鍵Kとを用いて、以下の式324に基づいてハッシュ値h’を算出する(ステップS1307)。
次に、受信内容検証部1407は、算出した検証用パラメータCH1およびハッシュ値h’と、セッション鍵算出部403から伝送されたセッション鍵Kとを用いて、検証用の値CH2を、以下の式325に基づいて算出する(ステップS1308)。
続いて、受信内容検証部1407は、算出した検証用の値CH2と、送信者認証用情報に含まれているsigj,0とを比較する(ステップS1309)。CH2=sigj,0であった場合には、受信内容検証部1407は、暗号化装置30から受信した暗号文Cおよびヘッダhdrは、正当な秘密鍵を持つユーザjから送信されたものであって、かつ、暗号文Cおよびヘッダhdrに改ざんがなされていない(すなわち、検証が成功した)と判定する(ステップS1310)。また、CH2≠sigj,0であった場合には、受信内容検証部1407は、暗号化装置30から受信した暗号文Cおよびヘッダhdrが正当な秘密鍵を持つユーザjから送信されたものではないか、または、暗号文Cおよびヘッダhdrに改ざんがなされたものである(すなわち、検証が失敗した)と判定する(ステップS1311)。
検証結果が確定すると、受信内容検証部1407は、検証結果を復号部1409へと伝送する。
なお、上述のステップS1301は、受信者自身が実行し、Verification処理を実行する受信装置40に入力する形態をとってもよい。
<検証の正当性について>
以上、本実施形態に係る受信装置40の動作について、詳細に説明した。続いて、暗号化装置30が送信者認証用情報(uj,sigj,0,sigj,1)を付加することにより、受信者側において,ヘッダhdrおよび暗号文Cがユーザjによって作成された(または、他者が生成したものをユーザjが認証した)こと、および、ヘッダhdrおよび暗号文Cが改ざんされていないこと、を確認可能であることを示す。
検証者であるユーザiは、受信装置40によってヘッダを復号してセッション鍵Kを取得した後、受信装置40によりVerification処理を実行する。Verification処理では、ステップS1303〜ステップS1305においてγPrを導出し、ステップS1306において検証用パラメータCH1を計算している.
ここで、sigj,1は、式317に示した値を有するものであるため、式323を展開すると、CH1は、以下の式326のような値となる。
他方、ヘッダhdr,暗号文Cおよび送信者認証用情報sigj,0が改ざんされておらず、送信者認証用情報sigj,0がユーザjにより生成され、かつ、ヘッダhdrより正しいセッション鍵Kが導出されている場合には、ステップS1307によりh=h’となる。したがって、上述のような場合には、ステップS1308で算出される検証用の値CH2は、以下の式327のようになる。
よって、CH2=sigj,0であるならば、検証が成立していることがわかる。
<従来方式との相違点>
従来方式では、ヘッダhdrを任意のentityが生成・送信可能であり、排除されていないユーザのみが復号可能であるという公開鍵Broadcast Encryptionの機能を実現している。これに対して本実施形態に係る方式では、従来方式において実現されている公開鍵Broadcast Encryptionの機能に加えて、正規のユーザであれば、ヘッダhdr生成後、Sign処理を実行することによって、送信者認証用情報を付加することが可能となっている。これにより、ヘッダhdrおよび送信者認証用情報(uj,sigj,0,sigj,1)を受信したユーザが、ヘッダhdr、暗号文Cの改ざん検出及び生成者の確認が可能となっている点が、従来方式と大きく異なる。
従来方式単独で利用した場合には、受信者が送信者の正当性を確認することが不可能であるが、従来方式に加え、別途既存の署名方式を適用すれば、ヘッダに送信者認証用情報を追加することは可能となる。しかしながら、この場合には、従来方式においてコンテンツを保護するための秘密鍵dkiと、署名方式において利用する送信者認証用情報を生成するための署名鍵の二種類の秘密鍵を秘密保持する必要が発生する。これに対して、本実施形態に係る方式では、公開鍵Broadcast Encryption方式を利用してコンテンツを保護する際に利用する演算と同様の演算を行うSign処理およびVerification処理を追加することにより、公開鍵Broadcast Encryption方式におけるコンテンツ保護用秘密鍵を利用して送信者認証用情報を生成することが可能となり、保持する秘密鍵が一つでよい、という点が、従来方式に署名を別途追加しただけの既存技術の組み合わせとは大きく異なる。
以上説明したように、従来方式においては、任意のentityが、指定したユーザ集合に属するユーザのみが復号可能となる暗号文を送信可能としている。しかしながら、ヘッダ生成が任意のentityによって可能であり、かつ、ヘッダhdrにはヘッダ生成者を確認する情報が含まれていないため、受信者は受信したヘッダhdrおよび暗号文Cに対する改ざんの有無、ならびに、正当なユーザによって生成されたものか否かの確認が不可能となっている。また、上述のような確認を実現するためには、別途、署名生成、検証を行う必要があるため、各ユーザが保持する鍵数が増加するという問題点が存在した。
これに対して、本実施形態に係る方式では、送信者側には、送信者であるユーザがヘッダ生成時に利用したパラメータk、自身の秘密鍵dkj、およびセッション鍵K等を利用してSign処理を実行することにより、自身が生成したヘッダhdrおよび暗号文Cの改ざん検知及び正当性確認を実行可能な状態とし、受信者側には、Verification処理を実行することによって、改ざん検知およびヘッダhdrの生成者検証を実現可能としている。これにより、例えば従来方式における第一の問題点で挙げた例では、悪意のあるentityが不正ファームウェアを送信したとしても、受信者側で生成者の検証が可能となるため、不正ファームウェアを実行する前に破棄できる、といった利点が生じる。また、従来方式では同様の機能を別途署名、検証用アルゴリズムおよびその鍵ペアを利用することによって実現可能であるが、この場合にはBroadcast Encryption用と署名用の二つの鍵が必要であるという第二の問題点が存在した。これに対して本実施形態に係る方式では、送信者は自身のBroadcast Encryption用秘密鍵のみを利用してヘッダhdrおよび送信者認証用情報(uj,sigj,0,sigj,1)を生成可能であり、受信者側においても、セッション鍵取得後、ヘッダhdrおよび送信者認証用情報(uj,sigj,0,sigj,1)を利用するだけで、同様の機能が実現可能である。そのため、本実施形態に係る方式では、デバイスが保持する鍵数を増加させる必要がないという利点が存在する。
(第1変形例)
続いて、図33〜図36を参照しながら、本実施形態に係る暗号化装置30の第1変形例について、詳細に説明する。本変形例に係る暗号化装置30は、本実施形態に係るセッション鍵決定部1307が実施するEncryption処理を、以下に説明するEncryption’処理に変更して実行する装置であり、送信者認証用情報生成処理は、本実施形態に係るSign処理を実行する。
本変形例に係る暗号化装置30では、かかる変更を行うことで、暗号化時における計算量の削減を実現することが可能である。
<暗号化装置30の動作:Encryption’処理>
コンテンツ等の平文を配信する配信者は、所有する暗号化装置30を操作し、以下の手順に従って、暗号文とヘッダとを生成する。以下に、図33および図34を参照しながら、本変形例に係る暗号化装置30の動作について、詳細に説明する。図33は、本変形例に係る暗号化装置30で実行される暗号化処理を説明するための流れ図であり、図34は、本変形例に係る暗号化装置30で実行される双線形群の演算処理を説明するための流れ図である。
Encryption’処理は、コンテンツ等の配信を希望する任意の送信者が、暗号化装置30を用いて、配信毎に実行する処理である。
送信者は、公開鍵eki、排除されるユーザの集合R={uR1,・・・uRr}を本変形例に係る暗号化装置30に入力し、以下に説明するEncryption’処理を実行することで、配信したいコンテンツ等の平文に暗号化処理を行う。ユーザによって入力された集合Rは、暗号化装置30の排除受信装置特定部1303により、暗号化装置30が利用可能なデジタルデータに変換され、Encryption’処理に用いられる。
暗号化装置30の排除受信装置特定部1303は、まず、Rの要素数をカウントして、カウント結果をrとし(ステップS1401)、カウント結果rをセッション鍵決定部1307に出力する。次に、暗号化装置30のセッション鍵算出部1309は、k∈Zp *を選択する(ステップS1402)。
続いて、暗号化装置30のセッション鍵算出部1309は、排除されたユーザの数rについて、判定を行う(ステップS1403)。r=0の場合(すなわち、排除されたユーザが誰もいない場合)には、セッション鍵算出部1309は、後述するステップS1404を実行する。また、r=1の場合(すなわち、排除されたユーザが一人だけの場合)には、後述するステップS1405を実行する。また、r≧2の場合(すなわち、排除されたユーザが2人以上存在する場合)には、後述するステップS1406を実行する。
排除されたユーザが誰もいない場合には、セッション鍵算出部1309は、以下の式351および式352に基づいて、PrおよびK’を決定し(ステップS1404)、その後ステップS1409を実行する。
また、排除されたユーザが一人である場合には、セッション鍵算出部1309は、以下の式353および式354に基づいてPrおよびK’を決定し(ステップS1405)、その後ステップS1409を実行する。
また、排除されたユーザが2人以上である場合には、セッション鍵算出部1309は、双線形写像演算部1313に対して、G上で双線形群の演算処理(Aggregate(C)アルゴリズム)を行い、以下の式355〜式357に示した値を計算するよう要請し、双線形写像演算部1313は、Aggregate(C)アルゴリズムを実行して、式355〜式357の値をセッション鍵算出部1309に出力する(ステップS1406)。なお、双線形群の演算処理アルゴリズムであるAggregate(C)アルゴリズムについては、以下で改めて詳細に説明する。
ここで、上記式356および式357は、式355(Pr)を導出する際に、計算の途中経過として算出される値であり、従来方式では、式356および式357の値は、計算値として出力されるものではなかった。本変形例に係る暗号化処理では、以下で説明するように、式356および式357の計算値を効果的に利用することで、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減することが可能となる。
例えば、r=3の場合には、双線形写像演算部1313は、上述のAggregate(C)アルゴリズムを実行することで、P1,2、P1,3およびP2,3の3つの値を、演算結果としてセッション鍵算出部1309に出力する。
次に、セッション鍵算出部1309は、双線形写像演算部1313から出力された演算結果を利用して、以下の式358の値を算出する(ステップS1407)。
上記式358を展開すると、以下の式359のようになる。本変形例に係るセッション鍵算出部1309は、上記γPrを算出することで、G1上でのAggregate(C)アルゴリズムが実行不要となり、Aggregate(C)アルゴリズムの実行回数を1回に減らすことが可能となる。
続いて、セッション鍵算出部1309は、双線形写像演算部1313の演算結果と、上記式359の値を用いて、以下の式360に示した値を計算する(ステップS1408)。
それぞれの場合について、PrおよびK’の算出が終了すると、ヘッダ算出部1307は、ヘッダhdrを、以下の式361のようにして計算する(ステップS1409)。
次に、セッション鍵算出部1309は、セッション鍵Kを以下の式362に基づいて計算し、ヘッダhdr、K’およびkとともに出力する(ステップS1410)。
暗号化装置の暗号化部1315は、平文Mのセッション鍵Kによる暗号文C=EK(M)を生成し、送信者認証用情報生成部1321に伝送する。また、暗号文送信部1317は、生成された(hdr,C)を、後述する送信者認証用情報とともに同報配信する。かかる処理を行うことで、送信者は、希望するユーザに対して暗号化されたコンテンツ等を送信することができる。
なお、上記の処理に加えて、さらに平文Mの暗号化、または暗号化及び同報配信までをEncryption’処理で実行する構成としてもよい。また、ステップS1401は、送信者自身が実行し、Encryption’処理を実行する暗号化装置30に入力する形態をとってもよい。
(双線形群の演算処理−Aggregate(C)アルゴリズム)
続いて、図34を参照しながら、Encryption’処理中で実施される双線形群演算処理であるAggregate(C)アルゴリズムについて、詳細に説明する。
Aggregate(C)アルゴリズムは、暗号化装置30の双線形写像演算部1313が(P1,・・・Pr)∈Gを算出する際に実行するアルゴリズムである。
まず、暗号化装置30の双線形写像演算部1313は、P0,m=BRm(m=1,・・・,r)とし、j=1と設定する(ステップS1501)。続いて、双線形写像演算部1313は、l=j+1と設定する(ステップS1502)。
ここで、双線形写像演算部1313は、uRjとuRlとの比較を行い(ステップS1503)、uRj=uRlであれば、エラーメッセージを出力し(ステップS1504)、処理を終了する。uRj=uRlでなければ、以下に示すステップS1505を実行する。
続いて、双線形写像演算部1313は、以下の式363を用いて、Pj,lを計算する(ステップS505)。
上記式363の計算が終了すると、双線形写像演算部1313は、lにl+1を代入し(ステップS1506)、lとr+1の比較を行う(ステップS1507)。l=r+1であれば、双線形写像演算部1313は、ステップS1508を実行し、lがr+1と等しくなければ、双線形写像演算部1313は、ステップS1503に戻って処理を続行する。
次に、双線形写像演算部1313は、jにj+1を代入し(ステップS1508)、jとrの比較を行う(ステップS1509)。j=rであれば、双線形写像演算部1313は、ステップS1510を実行し、jがrと等しくなければ、双線形写像演算部1313は、ステップS1502に戻って処理を続行する。
その後、双線形写像演算部1313は、Pr=Pj−1,j、Pj−2,j−1およびPj−2,jをセッション鍵算出部1309に出力する(ステップS1510)。
本変形例に係る暗号化処理の効果を示すため、従来方式と本変形例に係る方式の両方における暗号化時の計算量比較を、図35に示す。図35に示したように、本変形例に係る方法は、従来方式と比較して、双線形写像演算が1回、G上における各演算、すなわち楕円曲線上の加算及び乗算が各々3回および4回、Zp *上における逆元演算が2回増加している。しかしながら、G1上、すなわちビットサイズが最も大きい群における乗算、冪乗算、逆元演算を、各々(r2‐r)/2回削減することに成功している。従来方式および本変形例に係る方式における暗号化時の計算量を比較するため、まず、図35の各演算を実行するために必要となる演算量を、以下のように定義する。この時、従来方式と比較して、本方式の暗号化時における計算量の増加分は、図35より、以下の式364であることがわかる。一方、減少分は、以下の式365となる。よって、rが以下の式366を満たす場合には、本変形例に係る方式の方が、暗号化時における計算量を削減可能となっていることが分かる。
なお、図35および上記式364〜式366における記号の意味は、以下の通りである。
A :Gにおける楕円曲線上の点の加算
D :Gにおける楕円曲線上の点の二倍算
S :Gにおける楕円曲線上の点のスカラー倍算
M :G1における乗算
Q :G1における二乗算
E :G1における冪乗算
I :G1における逆元演算
mul:Zp *における乗算
sqr:Zp *における二乗算
inv:Zp *における逆元演算
P :双線形写像演算
式366を満たすrを、数値例を用いて導出する。なお,以下では、128−bit等価安全性を満たす場合について考える。この時、pのビットサイズは256−bit、G1の元のビットサイズは3072−bitとなる。以降、Zp *上での乗算mulを基準として、具体的な数値例を示す。従来方式および本変形例に係る方式の両方とも、G上における楕円曲線上の点の演算、G1、Zp *上における各種演算、および、双線形写像演算を利用している。これらの演算には様々な演算手法が存在するため、ここでは非特許文献2に示された演算見積もりを利用する。
非特許文献2では、Zp *上における演算に対して、以下の式367の関係を適用している。また、3072/256=12=22×3より、G1上における演算に対しては、以下の式368のようになる。また、楕円曲線上の点の演算に関しては、projective座標系を利用することにより、以下の式369のようになる。ここで、スカラー倍算Sは、二倍算と加算を繰り返し実行することによって計算されるため、その平均的な計算量は、点の係数のビット長log2p回の二倍算と(1/2)log2p回の加算として見積もることができる。よって、Sは、以下の式370のように見積もることができる。また、G1上での冪乗算Eも、位数pより指数部のビットサイズがlog2pであり、二乗算と乗算を繰り返し実行することによって計算されるため、スカラー倍算と同様に見積もることが可能であり、以下の式371のように見積もることができる。
双線形写像演算Pに関しては、双線形写像演算自体がMiller’s algorithmによる演算と最終冪乗と呼ばれる冪乗剰余演算から構成されるため、CFullを楕円曲線パラメータによって変動するMiller’s algorithmの計算量とすると、CFull+3Eとして見積もることができる。ここで、3Eは、現在想定しているパラメータに対する最終冪乗のコストである。今、非特許文献2に記載の表より、projective座標系におけるAte pairing演算の平均値をCLiteとすると、双線形写像演算Pは、以下の式372となる。
上記式367〜式372を用いて、式366は、以下の式373と変形できる。この式373を図示すると、図36のようになる。
図36から明らかなように、前述したようなパラメータ設定を行った場合には、排除されるユーザ数が4人以上となった場合、本変形例に係る方式の方が、非常に効率よく演算可能であることが分かる。
以上説明したように、本変形例に係る方式によれば、従来方式において暗号化時に必要となるビット長が長い巡回群上での乗算、冪乗算、逆元演算を削除し、その代わりに1回の双線形写像演算(pairing)と楕円曲線上の点の演算等を若干数追加することによって、ユーザ、すなわち秘密鍵を保持するentity(人、デバイス、サーバ等の動作主体)が暗号化を実行する際には、特にrが増加するほど、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減可能となる。
(第4の実施形態)
続いて、図37〜図46を参照しながら、本発明の第4の実施形態に係る暗号鍵配信システムについて詳細に説明する。なお、本実施形態に係る暗号鍵配信システム10は、本発明の第3の実施形態に係る暗号鍵配信システムと同様の構成を有するため、構成に関する詳細な説明は省略する。
本実施形態に係る暗号鍵配信システムは、本発明の第3の実施形態におけるSetup”処理、Join処理、Encryption処理およびEncryption処理において利用されるAggregate(A)アルゴリズムを、それぞれ以下で説明するSetup’処理、Join’処理、Encryption”処理および第3の実施形態の第1変形例に記載のAggregate(C)アルゴリズムへと変更するとともに、本発明の第3の実施形態におけるSign処理およびVerification処理を、以下で説明するSign’処理およびVerification’処理へと変更するものである。よってDecryption処理およびDecryption処理において利用されるAggregate(B)アルゴリズムは、本発明の第3の実施形態における処理と同一である。
また、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40のハードウェア構成は、本発明の第3の実施形態に係る鍵生成装置20、暗号化装置30および受信装置40のハードウェア構成と同一であるため、詳細な説明は省略する。
<本実施形態に係る鍵生成装置20について>
まず、図37を参照しながら、本実施形態に係る鍵生成装置20について、詳細に説明する。図37は、本実施形態に係る鍵生成装置20の構成について説明するためのブロック図である。
本実施形態に係る鍵生成装置20は、例えば図37に示したように、パラメータ決定部1251と、双線形群選択部1253と、鍵生成部1255と、配布部1261と、記憶部1267と、を主に備える。
ここで、本実施形態に係るパラメータ決定部1251、双線形群選択部1253および記憶部1267については、本発明の第3の実施形態に係るパラメータ決定部1251、双線形群選択部1253および記憶部1267とほぼ同一の構成を有し、同様の効果を奏するため、詳細な説明は省略する。
鍵生成部1255は、パラメータ決定部1251および双線形群選択部1253から伝送された各種データを利用して、公開鍵、各ユーザに配布される秘密鍵、マスター鍵、擬似秘密鍵等の鍵や、各ユーザに対応する公開情報等を生成する。鍵生成部1255は、鍵算出部1257と、擬似秘密鍵算出部1259と、を更に備える。
鍵生成部1255は、パラメータ決定部1251および双線形群選択部1253から伝送された各種データを利用して、公開鍵、各ユーザに配布される秘密鍵およびマスター鍵と、各ユーザに対応する公開情報を生成する。生成された鍵および公開情報は、HDDやセキュアモジュールを備えたメモリ等から構成される記憶部に記録される。また、公開が必要な情報および配布する鍵類は、後述する配布部1261へと伝送される。
擬似密鍵算出部1259は、パラメータ決定部1251および双線形群選択部1253から伝送された各種データを利用して、擬似秘密鍵dk0を生成する。生成された擬似秘密鍵は、後述する配布部1261へと伝送されるとともに、HDDやセキュアモジュールを備えたメモリ等から構成される記憶部に記録される。
配布部1261は、鍵生成装置20が生成した公開鍵、秘密鍵および擬似秘密鍵と、公開が必要な情報とを、通信網12を介して配布する。かかる配布部1261は、送受信部1263と、公開鍵配布部1265と、を更に備える。
送受信部1263は、鍵生成部1255が生成した秘密鍵を、安全な通信路を介して個々のユーザに送信するとともに、受信装置40から伝送されたシステム加入要求を受信する。受信されたシステム加入要求は鍵生成部1255へと伝送され、鍵生成部1255により新たな秘密鍵や公開鍵が生成される。
公開鍵配布部1265は、鍵生成部1255が生成した公開鍵、擬似秘密鍵および公開情報を、通信網12を介して暗号化装置30や受信装置40に配布する。暗号化装置30や受信装置40は、かかる公開鍵、擬似秘密鍵および公開情報を利用して、平文の暗号化処理や暗号文の復号処理を実行する。
<本実施形態に係る暗号化装置30について>
続いて、図38を参照しながら、本実施形態に係る暗号化装置30について、詳細に説明する。図38は、本実施形態に係る暗号化装置30の構成について説明するためのブロック図である。
本実施形態に係る暗号化装置30は、例えば図38に示したように、受信部1301と、排除受信装置特定部1303と、使用鍵特定部1305と、セッション鍵決定部1307と、双線形写像演算部1313と、暗号化部1315と、暗号文送信部1317と、記憶部1319と、送信者認証用情報生成部1321と、を主に備える。
ここで、本実施形態に係る受信部1301、排除受信装置特定部1303、双線形写像演算部1313、暗号化部1315、暗号文送信部1317および記憶部1319については、本発明の第3の実施形態に係る受信部1301、排除受信装置特定部1303、双線形写像演算部1313、暗号化部1315、暗号文送信部1317および記憶部1319とほぼ同一の構成を有し、同様の効果を奏するため、詳細な説明は省略する。
使用鍵特定部1305は、記憶部1319を参照して、暗号化装置30自体に個人秘密鍵が提供されているか否かを判定する。記憶部1319に個人秘密鍵が記録されている場合には、使用鍵特定部1305は、個人秘密鍵が存在する旨を後述するセッション鍵決定部1307に出力する。また、記憶部1319に個人秘密鍵が記録されていない場合には、使用鍵特定部1305は、個人秘密鍵は存在せず擬似秘密鍵のみが存在する旨をセッション鍵決定部1307に出力する。また、使用鍵特定部1305は、判定結果を記憶部1319に記録して、次回以降の判定処理を省略するようにしてもよい。
セッション鍵決定部1307は、受信部1301が受信し記憶部1319に記録されている公開鍵、個人秘密鍵および公開情報と、排除受信装置特定部1303が決定した集合Rと、使用鍵特定部1305が出力した判定結果とに基づいて、配信するコンテンツ等の平文を暗号化するために用いられるセッション鍵等を決定する。このセッション鍵決定部1307は、セッション鍵算出部1309と、ヘッダ算出部1311と、を更に備える。
セッション鍵算出部1309は、記憶部1319から取得した公開鍵および公開情報と、排除受信装置特定部1303から伝送される、排除される受信装置の集合Rと、使用鍵特定部1305が出力した判定結果とに基づいて、配信するコンテンツ等の平文を暗号化するために利用するセッション鍵を算出する。セッション鍵算出部1309が算出したセッション鍵は、暗号化部1315に伝送され、平文を暗号化する際に利用される。また、セッション鍵算出部1309は、算出したセッション鍵を、記憶部1319に記録してもよい。
ヘッダ算出部1311は、セッション鍵算出部1309がセッション鍵を算出する際に計算した各種データと、記憶部1319に記録されている公開鍵や公開情報等とを利用して、暗号文と同時に受信装置40に配信されるヘッダを生成する。生成されたヘッダは、暗号文送信部1317へと伝送される。また、ヘッダ算出部1311は、生成したヘッダ情報を、記憶部1319に記録してもよい。
送信者認証用情報生成部1321は、セッション鍵算出部1309から伝送されたセッション鍵および算出に用いられたパラメータと、ヘッダ算出部1311から伝送されたヘッダと、暗号化部1315から伝送された暗号文と、公開鍵および公開情報と、暗号化装置に固有の値および秘密鍵と、を利用して、送信者認証用情報を生成する。この送信者認証用情報は、受信者が受信装置において、送信された暗号文およびヘッダの改ざんの有無と、送信者の正当性とを検証するために用いられる情報である。送信者認証用情報生成部1321は、この送信者認証用情報を生成する際に、双線形写像演算部1313を利用してもよい。生成された送信者認証用情報は、暗号文送信部1317へと伝送され、ヘッダおよび暗号文とともに、各受信装置に同報配信される。また、送信者認証用情報生成部1321は、生成した送信者認証用情報を、記憶部1319に記録してもよい。
<本実施形態に係る受信装置40について>
続いて、図39を参照しながら、本実施形態に係る受信装置40について、詳細に説明する。図39は、本実施形態に係る受信装置40の構成について説明するためのブロック図である。
本実施形態に係る受信装置40は、例えば図39に示したように、受信部1401と、セッション鍵算出部1403と、双線形写像演算部1405と、受信内容検証部1407と、復号部1409と、記憶部1411と、を主に備える。
ここで、本実施形態に係る受信部1401、セッション鍵算出部1403、双線形写像演算部1405、復号部1409および記憶部1411は、本発明の第3の実施形態に係る受信部1401、セッション鍵算出部1403、双線形写像演算部1405、復号部1409および記憶部1411とほぼ同一の構成を有し、同様の効果を奏するため、詳細な説明は省略する。
受信内容検証部1407は、セッション鍵算出部1403で算出したセッション鍵と、暗号化装置30から送信されたヘッダ、暗号文および送信者認証用情報とに基づいて、送信者の正当性と、受信した内容に施された改ざんの有無とを検証する。受信内容検証部1407は、検証処理を行う際に、双線形写像演算部1405を利用してもよい。受信内容検証部1407は、検証結果を、復号部1409に出力する。また、受信内容検証部1407は、検証結果を、記憶部1411に記録してもよい。
以上、本実施形態に係る鍵生成装置20、暗号化装置30および受信装置40の機能の一例を示した。上記の各構成要素は、汎用的な部材や回路を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、各構成要素の機能を、CPU等が全て行ってもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用する構成を変更することが可能である。
<鍵生成装置20の動作:Setup’処理およびJoin’処理>
センタは、所有する鍵生成装置20を操作し、以下の手順に従って、公開鍵および公開情報と、各ユーザに対応する個人秘密鍵とを生成する。以下に、図40および図41を参照しながら、本実施形態に係る鍵生成装置20の動作(すなわち、Setup’処理およびJoin’処理)について、詳細に説明する。図40は、本実施形態に係る鍵生成処理を説明するための流れ図であり、図41は、本実施形態に係るユーザ登録処理を説明するための流れ図である。
[鍵生成装置20におけるSetup’処理]
Setup’処理は、本実施形態に係る鍵生成装置20を有するセンタがシステム構築時に一度だけ実行する鍵生成処理である。センタは、セキュリティパラメータλを決定し、鍵生成装置は、入力されたセキュリティパラメータλを用いて、以下に説明するSetup’処理を実行する。
まず、鍵生成装置20のパラメータ決定部1251は、λ−bitの素数pを生成し、次いで、双線形群選択部1253は、pを位数とする双線形写像群Gおよび巡回乗法群G1を選択する(ステップS1601)。
次に、鍵生成装置20の双線形群選択部1253は、双線形写像e:G×G→G1を決定する(ステップS1602)。
続いて、鍵生成装置20のパラメータ決定部1251は、G,H∈Gを選択する(ステップS1603)。
その後、鍵生成装置20のパラメータ決定部1251は、γ∈RZp *を選択し、W=γG∈Gを計算する(ステップS1604)。このようにして得られたγおよびGは、センタのみがマスター鍵mk=(γ,G)として秘密保持する。
続いて、鍵生成装置20のパラメータ決定部1251は、ユーザ固有値として利用しない値u0∈RZp *を選択し、擬似秘密鍵算出部1259に出力する。擬似秘密鍵算出部1259は、伝送されたu0に基づいて、以下の式401を用いて擬似秘密鍵dk0を算出する(ステップS1605)。
次に、鍵生成装置20の鍵算出部1257は、算出したデータを用いて、初期公開鍵ek0を以下のようにして構成する(ステップS1606)。
ek0={p,G,G1,e,W,H,u0,dk0} ・・・(式402)
公開鍵の生成が終了すると、鍵生成装置20の配布部1261は、Setup処理の実行によって得られた擬似秘密鍵dk0および初期公開鍵ek0を、システム全体の初期公開鍵として公開する。
[鍵生成装置20におけるJoin’処理]
Join’処理は、センタが、ユーザからのシステム加入要求がある毎に実行するユーザ登録処理である。この処理は、センタがシステム設定を終えた後に、任意のタイミングで実行されてよい。
センタは、公開鍵eki―1(1≦i≦n)、マスター鍵mkおよびi番目に加入したユーザのインデックスであるiを鍵生成装置20に入力し、以下に説明するJoin’処理を実行することで、システム加入要求を送信したユーザの秘密鍵を生成して、システムへの加入処理を行う。
まず、鍵生成装置20の鍵算出部1257は、ユーザiに固有の値である、ui∈Zp *\{u0}を計算する(ステップS1701)。その後、以下の式403に示す計算を行うことにより、鍵算出部1257は、システム加入要求を送信したユーザiの秘密鍵dkiを計算する(ステップS1702)。
ここで、上記式403におけるBiは、秘密鍵dkiの一部としているが、Biは秘密の情報ではなく公開情報であり、ユーザiは、Biを秘密保持する必要はない。
鍵生成装置30の配布部1261は、Join’処理の実行によって得られたユーザiの秘密鍵dkiを、安全な通信路を利用してユーザiに秘密裏に送信すると共に、現在の公開鍵eki−1にユーザiに対応する公開情報(ui,Bi)を追加し、公開鍵ekiとして更新、公開する。このとき、新たな公開鍵ekiは、以下の式404のような構成となっている。
以上、本実施形態に係る鍵生成装置20で実行されるSetup’処理およびJoin’処理について説明した。続いて、本実施形態に係る暗号化装置30で実行される暗号化処理(Encryption”処理)について、説明する。
<暗号化装置30の動作:Encryption”処理およびSign処理>
コンテンツ等の平文を配信する配信者は、所有する暗号化装置30を操作し、以下の手順に従って、暗号文とヘッダとを生成する。以下に、図42を参照しながら、本実施形態に係る暗号化装置30のEncryption”処理について、詳細に説明する。図42は、本実施形態に係る暗号化装置30で実行される暗号化処理を説明するための流れ図である。また、配信者は、暗号化装置30を操作して、受信装置40において生成した暗号文とヘッダの正当性および改ざんの有無の検証に用いられる送信者認証用情報を、以下の手順に従って生成する。図43は、本実施形態に係る暗号化装置30が送信者認証用情報を生成する際に実行するSign’処理を説明するための流れ図である。
[暗号化装置30におけるEncryption”処理]
Encryption”処理は、コンテンツ等の配信を希望する任意の送信者が、暗号化装置30を用いて、配信毎に実行する処理である。
送信者は、公開鍵eki、排除されるユーザの集合R={uR1,・・・uRr}を本実施形態に係る暗号化装置30に入力し、以下に説明するEncryption”処理を実行することで、配信したいコンテンツ等の平文に暗号化処理を行う。ユーザによって入力された集合Rは、暗号化装置30の排除受信装置特定部1303により、暗号化装置30が利用可能なデジタルデータに変換され、Encryption”処理に用いられる。
また、暗号化装置30の使用鍵特定部1305は、暗号化装置30が個人秘密鍵dkjを保持しているか否かを判定し、結果をセッション鍵決定部1307に予め通知しておく。セッション鍵決定部1307は、使用鍵特定部1305から個人秘密鍵dkjが存在する旨の通知を受けた場合には、以下で説明する処理において、暗号化装置30に固有の値であるujと、暗号化装置30に固有の秘密鍵であるdkjを使用する。また、使用鍵特定部1305から個人秘密鍵dkjが存在しない旨の通知を受けた場合には、セッション鍵決定部1307は、以下で説明する処理において、擬似ユーザに固有の値であるu0と、擬似秘密鍵dk0を使用する。
以下の説明では、ujおよびdkjを用いて式の表記を行うが、暗号化処理にu0およびdk0を用いる場合には、式中のujがu0となり、dkjがdk0となる。
暗号化装置30の排除受信装置特定部1303は、まず、Rの要素数をカウントして、カウント結果をrとする(ステップS1801)。続いて、排除受信装置特定部1303は、集合Rにu0を追加して、r+1の値を新たにカウント結果rとする(ステップS1802)。排除受信装置特定部1303は、このカウント結果rをセッション鍵決定部1307に出力する。
次に、暗号化装置30のセッション鍵算出部1309は、k∈Zp *を選択する(ステップS1803)。
続いて、暗号化装置30のセッション鍵算出部1309は、排除されたユーザの数rについて、判定を行う(ステップS1804)。r=1の場合(すなわち、排除されたユーザが一人だけの場合)には、後述するステップS1805を実行する。また、r≧2の場合(すなわち、排除されたユーザが2人以上存在する場合)には、後述するステップS1806を実行する。
排除されたユーザが一人である場合には、セッション鍵算出部1309は、以下の式405および式406に基づいてPrおよびK’を決定し(ステップS1805)、その後ステップS1809を実行する。
また、排除されたユーザが2人以上である場合には、セッション鍵算出部1309は、双線形写像演算部1313に対して、G上で双線形群の演算処理(Aggregate(C)アルゴリズム)を行い、以下の式407〜式409に示した値を計算するよう要請し、双線形写像演算部1313は、Aggregate(C)アルゴリズムを実行して、式407〜式409の値をセッション鍵算出部1309に出力する(ステップS1806)。なお、双線形群の演算処理アルゴリズムであるAggregate(C)アルゴリズムについては、本発明の第3の実施形態における第1変形例で説明したAggregate(C)アルゴリズムと同一であるため、詳細な説明は省略する。
ここで、上記式408および式409は、式407(Pr)を導出する際に、計算の途中経過として算出される値であり、従来方式では、式408および式409の値は、計算値として出力されるものではなかった。本実施形態に係る暗号化処理では、式408および式409の計算値を効果的に利用することで、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減することが可能となる。
例えば、r=3の場合には、双線形写像演算部1313は、上述のAggregate(C)アルゴリズムを実行することで、P1,2、P1,3およびP2,3の3つの値を、演算結果としてセッション鍵算出部1309に出力する。
次に、セッション鍵算出部1309は、双線形写像演算部1313から出力された演算結果を利用して、以下の式410の値を算出する(ステップS1807)。
上記式410を展開すると、以下の式411のようになる。本実施形態に係るセッション鍵算出部1309は、上記γPrを算出することで、G1上でのAggregate(C)アルゴリズムが実行不要となり、Aggregate(C)アルゴリズムの実行回数を1回に減らすことが可能となる。
続いて、セッション鍵算出部1309は、双線形写像演算部1313の演算結果と、上記式411の値と、秘密鍵dkjまたはdk0を用いて、以下の式412に示した値を計算する(ステップS1808)。
それぞれの場合について、PrおよびK’の算出が終了すると、ヘッダ算出部1311は、ヘッダhdrを、以下の式413のようにして計算する(ステップS1809)。
次に、セッション鍵算出部1309は、セッション鍵Kを以下の式414に基づいて計算し、ヘッダhdr、K’およびkとともに出力する(ステップS1810)。
暗号化装置の暗号化部1315は、平文Mのセッション鍵Kによる暗号文C=EK(M)を生成し、送信者認証用情報生成部1321に伝送する。また、暗号文送信部1317は、生成された(hdr,C)を、後述する送信者認証用情報とともに同報配信する。かかる処理を行うことで、送信者は、希望するユーザに対して暗号化されたコンテンツ等を送信することができる。
なお、上記の処理に加えて、さらに平文Mの暗号化、または暗号化及び同報配信までをEncryption”処理で実行する構成としてもよい。また、ステップS1801およびステップS1802は、送信者自身が実行し、Encryption”処理を実行する暗号化装置30に入力する形態をとってもよい。
なお、Encryption”処理においては、uR1は必ずu0となる。
[送信者認証用情報の生成処理−Sign’処理]
続いて、図43を参照しながら、本実施形態に係る送信者認証用情報生成部1321が実行する送信者認証用情報の生成処理(Sign’処理)について、詳細に説明する。
Sign’処理は、本実施形態に係る暗号化装置30を有する送信者がヘッダhdrの生成後に実行する処理である。なお,Sign’処理は、正規の秘密鍵を有する送信者(暗号化装置30)にのみ実行可能な処理である。
送信者は、公開鍵eki、送信者自身に固有の値uj、送信者自身が保持する秘密鍵dkj、Encryption”処理の実行後にセッション鍵算出部1309から出力されるk、K’、セッション鍵K、および、暗号文Cを暗号化装置30に入力し、以下で説明するSign’処理を実行させる。
まず、送信者認証用情報生成部1321は、パラメータt∈Zp *を無作為に選択する(ステップS1901)。次に、送信者認証用情報生成部1321は、以下の式415に基づいて、送信者認証用情報の要素の一つであるsigj,0を算出する(ステップS1902)。
次に、送信者認証用情報生成部1321は、算出したsigj,0と、暗号文Cと、セッション鍵Kとを用いて、これらの値のハッシュ値hを、ハッシュ関数を用いて以下の式416のように計算する(ステップS1903)。
続いて、送信者認証用情報生成部1321は、算出したハッシュ値hと、選択したパラメータtとを用いて、送信者の秘密情報yを以下の式417のように算出する(ステップS1904)。
y=t−h∈Zp * ・・・(式417)
次に、送信者認証用情報生成部1321は、算出した秘密情報yと、暗号化装置30に固有の秘密鍵dkjとを用いて、送信者認証用情報の要素の一つであるsigj,1を以下の式418に基づいて算出し、(uj,sigj,0,sigj,1)を送信者認証用情報として、暗号文送信部1317に出力する(ステップS1905)。
以上説明したように、本実施形態に係る送信者認証用情報生成部1321は、送信者が任意に選択したパラメータに基づいて算出された値と、暗号文Cと、セッション鍵Kとに関するハッシュ値を用いて送信者認証用情報を生成する。したがって、悪意のある第三者が暗号文の内容やセッション鍵を改ざんして送信者認証用情報を再生成した場合には、算出されるハッシュ値が異なる値となる。そのため、送信者認証用情報を受信した受信装置40は、この送信者認証用情報を利用することで、送信者の正当性および送信内容に改ざんがなされたか否かを検証することができる。
以上、本実施形態に係る暗号化装置30で実行されるEncryption”処理およびSign’処理について説明した。続いて、本実施形態に係る受信装置40で実行されるセッション鍵の算出処理(Decryption処理)および受信内容検証処理(Verification’処理)について、説明する。
<受信装置40の動作:Decryption処理およびVerification’処理>
暗号化装置30から暗号文等の送信を受けた受信者は、所有する受信装置40を操作し、以下の手順に従って、セッション鍵の算出処理であるDecryption処理を実行する。なお、本実施形態に係る受信装置40が実行するDecryption処理は、本発明の第3の実施形態に係る受信装置40が実行するDecryption処理と同一であるため、詳細な説明は省略する。また、受信者は、受信装置40を操作して、受信した内容の検証処理を、以下の手順に従って実行する。図44は、本実施形態に係る受信装置40が受信内容を検証する際に実行するVerification’処理を説明するための流れ図である。
[受信内容の検証処理−Verification’処理]
Verification’処理は、排除されていないユーザが、送信されたヘッダhdrと、送信者認証用情報である(uj,sigj,0,sigj,1)を利用して、ヘッダhdrおよび暗号文Cを生成したのが、正規の秘密鍵を有するユーザであり、かつ、ヘッダhdrおよび暗号文Cが改ざんされていないかどうかを確認する際に実行する処理である。
検証者は、受信したヘッダhdr、ヘッダhdrの復号結果として得られるセッション鍵K、暗号文C、および、送信者認証用情報(uj,sigj,0,sigj,1)を受信装置40に入力し、受信装置40は、以下で説明するVerification’処理を実行する。
なお、Verification処理では、公開鍵ekiのシステムパラメータ部分である(p,G,G1,e)のみを利用するが、これらの値は、通常あらかじめ各ユーザ(あるいはユーザが保持する受信装置40)によって保持されているため、ここでは入力として公開鍵を与える必要がないものとする。
まず、受信装置40の受信内容検証部1407は、排除されるユーザの集合Rの要素数をカウントして、カウント結果をrとし(ステップS2001)、カウント結果の判定を行う(ステップS2002)。カウント結果rが1である場合には、受信内容検証部1407は、後述するステップS2003を実行する。また、カウント結果rが2以上である場合には、受信内容検証部1407は、後述するステップS2004を実行する。
カウント結果rが1である場合には、受信内容検証部1407は、下記式419に基づいてγPrを計算し(ステップS2003)、後述するステップS2005を実行する。
また、カウント結果rが2以上である場合には、受信内容検証部1407は、下記式420に基づいてγPrを計算し(ステップS2004)、後述するステップS2005を実行する。
次に、受信内容検証部1407は、算出したγPrと、送信者認証用情報と、公開情報とを利用して、下記式421に基づいて、検証用に用いられるパラメータCH1を計算する(ステップS2005)。
続いて、受信内容検証部1407は、暗号化装置30から送信された暗号文Cおよび送信者認証用情報と、セッション鍵算出部1403から伝送されたセッション鍵Kとを用いて、以下の式422に基づいてハッシュ値h’を算出する(ステップS2006)。
次に、受信内容検証部1407は、算出したγPrと、公開情報とを利用して、以下の式423に基づいて、K’を算出する(ステップS2007)。
次に、受信内容検証部1407は、算出した検証用パラメータCH1およびハッシュ値h’と、算出したK’とを用いて、検証用の値CH2を、以下の式424に基づいて算出する(ステップS2008)。
続いて、受信内容検証部1407は、算出した検証用の値CH2と、送信者認証用情報に含まれているsigj,0とを比較する(ステップS2009)。CH2=sigj,0であった場合には、受信内容検証部1407は、暗号化装置30から受信した暗号文Cおよびヘッダhdrは、正当な秘密鍵を持つユーザjから送信されたものであって、かつ、暗号文Cおよびヘッダhdrに改ざんがなされていない(すなわち、検証が成功した)と判定する(ステップS2010)。また、CH2≠sigj,0であった場合には、受信内容検証部1407は、暗号化装置30から受信した暗号文Cおよびヘッダhdrが正当な秘密鍵を持つユーザjから送信されたものではないか、または、暗号文Cおよびヘッダhdrに改ざんがなされたものである(すなわち、検証が失敗した)と判定する(ステップS2011)。
検証結果が確定すると、受信内容検証部1407は、検証結果を復号部1409へと伝送する。
なお、上述のステップS2001は、受信者自身が実行し、Verification’処理を実行する受信装置40に入力する形態をとってもよい。
<検証の正当性について>
以上、本実施形態に係る受信装置40の動作について、詳細に説明した。続いて、暗号化装置30が送信者認証用情報(uj,sigj,0,sigj,1)を付加することにより,受信者側において,ヘッダhdrおよび暗号文Cがユーザjによって作成された(または、他者が生成したものをユーザjが認証した)こと、および、ヘッダhdrおよび暗号文Cが改ざんされていないこと、を確認可能であることを示す。
検証者であるユーザiは、受信装置40によってヘッダを復号してセッション鍵Kを取得した後、受信装置40によりVerification’処理を実行する。Verification’処理では、ステップS2003〜ステップS2004においてγPrを導出し、ステップS2005において検証用パラメータCH1を計算している.
ここで、sigj,1は、式418に示した値を有するものであるため、式421を展開すると、CH1は、以下の式425のような値となる。
他方、ヘッダhdr,暗号文Cおよび送信者認証用情報sigj,0が改ざんされておらず、送信者認証用情報sigj,0がユーザjにより生成され、かつ、ヘッダhdrより正しいセッション鍵Kが導出されている場合には、ステップS2006によりh=h’となる。したがって、上述のような場合には、ステップS2008で算出される検証用の値CH2は、以下の式426のようになる。
よって、CH2=sigj,0であるならば、検証が成立していることがわかる。
<従来方式との相違点について>
従来方式では、P1,・・・,Prを導出するために、r≧2で場合には、EncryptionアルゴリズムにおけるステップS36にて、G上の演算に対するAggregate(A)アルゴリズムを実行する。その後、K’を導出するために、ステップS37にてG1上の演算に対するAggregate(A)アルゴリズムを実行している。
これに対して、本実施形態に係る暗号化方法では、従来方式同様、Encryption”アルゴリズムのステップS1806にてG上の演算に対するAggregate(C)を実行しているが、K’導出には、ステップS1807におけるG上の演算と、ステップS1808におけるG1上の演算を利用し、Aggregate(C)アルゴリズムを利用していない。ここで、Aggregate(A)アルゴリズムとAggregate(C)アルゴリズムは、ステップS50およびステップS1510における出力値が異なるのみであり、かつ、Aggregate(C)アルゴリズムにおいて追加で出力されるPr-2,r-1、Pr-2,rは、Prを導出するために利用される値でもあるため、これらを追加出力したとしても、計算量はAggregate(A)アルゴリズムと同じである。
すなわち、秘密鍵dkjを持つユーザjが暗号化を実行する際の計算は、従来方式ではAggregate(A)アルゴリズム実行回数が必ず二回となるのに対し、本実施形態に係る暗号化方法では、若干回数のG上での演算と一回の双線形写像演算が追加される代わりに、Aggregate(C)アルゴリズム実行回数が一回へと削減されている。また、K’導出に必要な計算量に関しては、従来方式ではrが大きくなるにつれr2に比例して大きくなるのに対して、本実施形態に係る暗号化方法ではrに関係なく、一定の計算量となっている点が大きく異なる。
また、Setup処理およびJoin処理をそれぞれSetup’処理およびJoin’処理へと変更することによって擬似ユーザの秘密鍵(擬似秘密鍵)dk0を生成、公開し、Encryption”処理では、常にRに擬似ユーザに固有の値であるu0を追加することによって、秘密鍵を保持しないユーザであってもEncryption”処理を実行可能としている。これにより、任意のユーザ、すなわち秘密鍵を保持しないユーザであっても、暗号化時に要する計算量を削減可能としている。
ここで、本実施形態に係る暗号化方式は、本発明の第3の実施形態における第1変形例と同様であるため、暗号化時における計算量に関しては,任意のentityが、本発明の第3の実施形態の第1変形例に記載の計算量削減効果を得ることが可能である。なお、得られる削減効果の詳細に関しては、第3の実施形態の第1変形例に記載されているため、ここでは省略する。
また、従来方式では、暗号化時にG上でのAggregate(A)アルゴリズムの実行に加えて、G1上でのAggregate(A)アルゴリズムの実行も必要となる。このとき、G1上でのAggregate(A)アルゴリズムでは、Viを利用する必要があるため、Join処理の実行時に、センタはViを公開しておく必要がある。よって、n人のユーザに対してJoin処理を実行した場合の公開鍵は、図45に示したようなものとなり、システムパラメータを除いた要素数は、3n+3となる。
これに対し、本実施形態に係る方式では、Setup’処理の実行により擬似ユーザの秘密鍵(擬似秘密鍵)dk0を公開しているため、任意のentityがEncryption”処理を実行可能となり、G1上でのAggregate(A)アルゴリズムを実行する必要がなくなる。そのため、センタはViを公開する必要が無くなるため、Join’処理では、Join処理において必要であったViの計算および出力が不要となる。これにより、n人のユーザに対してJoin’処理を実行した場合の公開鍵は、図45に示したようなものとなり、システムパラメータを除いた要素数は、2n+5となる。
以上の説明より、3n+3≧2n+5、すなわち、n≧2である場合には、従来方式と比較して、公開鍵サイズを削減可能であることがわかる。
公開鍵における要素数に関しては、n≧2を満たす場合には、本実施形態に係る方式が効果的であることを示した。しかしながら、公開鍵における各要素は、異なる群における元の集合であるため、安全性を確保するために必要となるビットサイズが異なる。よって以下では、具体的なビットサイズを想定した上で、公開鍵サイズの比較を行う。なお、以下では、128−bit等価安全性を満たす場合について考える。このとき、素数pのビットサイズは256−bitとなり、G1の元のビットサイズは3072−bitとなる。
従来方式における公開鍵の各要素は、W,H,Bi(i=1,・・・,n)が楕円曲線上の点、すなわち、Gの元であり、Vi(i=1,・・・,n)がG1の元となっている。今、簡単のため各ユーザに固有の値であるui(i=1,・・・,n)のビットサイズを32−bitとすると、従来方式における公開鍵のビットサイズは、以下の式427となる。
これに対して、本実施形態に係る方式では、公開鍵のビットサイズは、以下の式428のようになる。
nの増加に体得る各々の値を比較した結果を、図46に示す。図46から明らかなように、ビットサイズで比較した場合には、任意のnに対して本実施形態に係る方式の方が、ビットサイズを低く抑えられることがわかる。
以上説明したように、本実施形態に係る方式によれば、従来方式において暗号化時に必要となるビット長が長い巡回群上での乗算、冪乗算、逆元演算を削除し、その代わりに1回の双線形写像演算(pairing)と楕円曲線上の点の演算等を若干数追加することによって、ユーザ、すなわち秘密鍵を保持するentity(人、デバイス、サーバ等の動作主体)が暗号化を実行する際には、特にrが増加するほど、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減可能となる。
また、公開情報として、擬似秘密鍵を公開することで、従来方式において暗号化時に必要となるビット長が長い巡回群上の要素を公開する必要がなくなるため、公開鍵サイズの削減も実現可能となる。
(本実施形態に係る暗号化方法の変形例)
本実施形態に係るSetup’処理中において、ステップS1606では、以下の式402を初期公開鍵ek0として公開している。
これに対し、以下の式429を計算し、初期公開鍵ek0を、以下の式430とする。かかる初期公開鍵を用いる場合には、以降Hの代わりに式429で算出したH0を利用することとする。かかる初期公開鍵を用いることで、Encryption”処理におけるステップS1802を省略することが可能となる。
また、式430に示した初期公開鍵を用いることで、受信装置40のVerification’処理におけるステップS2003の計算を、以下の式431のように変更する。
また、本実施形態に係る暗号鍵配信システムでは、送信者認証用情報の生成と、受信内容の検証に、それぞれSign’処理およびVerification’処理を用いているが、本発明の第3の実施形態に示したSign処理およびVerification処理を用いることも可能である。
また、本実施形態に係る方式では、Verification’処理において、受信者、すなわち検証者が、K’∈G1を計算しているが、送信者が送信者認証用情報としてヘッダと共にK’を配信してもよい。検証者は、送信者認証用情報に含まれるK’を利用することによって、Verification’処理におけるステップS2007を削除することも可能である。
また、本実施形態に係るEncryption”処理では、擬似秘密鍵dk0を利用した送信者認証用情報を生成することが可能である。しかしながら、擬似秘密鍵dk0は公開情報であるため、任意のentityが取得可能であり、擬似秘密鍵dk0を利用した送信者認証用情報(署名)は、その生成者を特定することが不可能となる。このような点を防止するために、本実施形態に係るVerification’処理において、受信装置40は、uj=u0の場合には、擬似秘密鍵dk0を用いて送信者認証用情報が生成されたと判断し、検証が不成立であったとして処理を終了するようにしてもよい。
以上説明したように、本実施形態に係る方式によれば、従来方式において暗号化時に必要となるビット長が長い巡回群上での乗算、冪乗算、逆元演算を削除し、その代わりに1回の双線形写像演算(pairing)と楕円曲線上の点の演算等を若干数追加することによって、ユーザ、すなわち秘密鍵を保持するentity(人、デバイス、サーバ等の動作主体)が暗号化を実行する際には、特にrが増加するほど、暗号化時に必要となる計算量、すなわち計算時間または計算に必要となる機器のコストを削減可能となる。
また、公開情報として、擬似秘密鍵を公開することで、従来方式において暗号化時に必要となるビット長が長い巡回群上の要素を公開する必要がなくなるため、公開鍵サイズの削減も実現可能となる。
さらに、本実施形態に係る方式では、正規のユーザであれば、ヘッダhdr生成後、Sign’処理を実行することによって、送信者認証用情報を付加することが可能となっている。これにより、ヘッダhdrおよび送信者認証用情報(uj,sigj,0,sigj,1)を受信したユーザが、ヘッダhdr、暗号文Cの改ざん検出及び生成者の確認を行うことが可能となる。
また、本実施形態に係る方式では、各処理を以下のように構成することにより、ユーザのみが署名生成可能となるように変更することも可能である。なお、以下の説明において、Decryption処理およびAggregate(B)処理については、従来方式と同一であるため、詳細な説明は省略する。
<鍵生成装置20の動作:Setup’’’処理およびJoin’’’処理>
センタは、所有する鍵生成装置20を操作し、以下の手順に従って、公開鍵および公開情報と、各ユーザに対応する個人秘密鍵とを生成する。以下に、図47および図48を参照しながら、本変形例に係る鍵生成装置20の動作(すなわち、Setup’’’処理およびJoin’’’処理)について、詳細に説明する。図47は、本変形例に係る鍵生成処理を説明するための流れ図であり、図48は、本変形例に係るユーザ登録処理を説明するための流れ図である。
[鍵生成装置20におけるSetup’’’処理]
Setup’’’処理は、本変形例に係る鍵生成装置20を有するセンタがシステム構築時に一度だけ実行する鍵生成処理である。センタは、セキュリティパラメータλを決定し、鍵生成装置は、入力されたセキュリティパラメータλを用いて、以下に説明するSetup’’’処理を実行する。
まず、鍵生成装置20のパラメータ決定部1251は、λ−bitの素数pを生成し、次いで、双線形群選択部1253は、pを位数とする双線形写像群Gおよび巡回乗法群G1を選択する(ステップS2101)。
次に、鍵生成装置20の双線形群選択部1253は、双線形写像e:G×G→G1を決定する(ステップS2102)。
続いて、鍵生成装置20のパラメータ決定部1251は、G,H∈Gを選択する(ステップS2103)。
その後、鍵生成装置20のパラメータ決定部1251は、γ∈RZp *を選択し、W=γG∈Gを計算する(ステップS2104)。このようにして得られたγおよびGは、センタのみがマスター鍵mk=(γ,G)として秘密保持する。
次に、鍵生成装置20の鍵算出部1257は、算出したデータを用いて、初期公開鍵ek0を以下のようにして構成する(ステップS2105)。
ek0={p,G,G1,e,W,H} ・・・(式432)
公開鍵の生成が終了すると、鍵生成装置20の配布部1261は、Setup処理の実行によって得られた初期公開鍵ek0を、システム全体の初期公開鍵として公開する。
[鍵生成装置20におけるJoin’’’処理]
Join’’’処理は、センタが、ユーザからのシステム加入要求がある毎に実行するユーザ登録処理である。この処理は、センタがシステム設定を終えた後に、任意のタイミングで実行されてよい。
センタは、公開鍵eki―1(1≦i≦n)、マスター鍵mkおよびi番目に加入したユーザのインデックスであるiを鍵生成装置20に入力し、以下に説明するJoin’’’処理を実行することで、システム加入要求を送信したユーザの秘密鍵を生成して、システムへの加入処理を行う。
まず、鍵生成装置20の鍵算出部1257は、ユーザiに固有の値である、ui∈Zp *\{u0}を計算する(ステップS2201)。その後、以下の式433に示す計算を行うことにより、鍵算出部1257は、システム加入要求を送信したユーザiの秘密鍵dkiを計算する(ステップS2202)。
ここで、上記式433におけるBiは、秘密鍵dkiの一部としているが、Biは秘密の情報ではなく公開情報であり、ユーザiは、Biを秘密保持する必要はない。
鍵生成装置30の配布部1261は、Join’’’処理の実行によって得られたユーザiの秘密鍵dkiを、安全な通信路を利用してユーザiに秘密裏に送信すると共に、現在の公開鍵eki−1にユーザiに対応する公開情報(ui,Bi)を追加し、公開鍵ekiとして更新、公開する。このとき、新たな公開鍵ekiは、以下の式434のような構成となっている。
以上、本実施形態に係る鍵生成装置20で実行されるSetup’’’処理およびJoin’’’処理について説明した。続いて、本変形例に係る暗号化装置30で実行される暗号化処理(Encryption’’’処理)について、説明する。
<暗号化装置30の動作:Encryption’’’処理及びSign’’’処理>
コンテンツ等の平文を配信する配信者は、所有する暗号化装置30を操作し、以下の手順に従って、暗号文とヘッダとを生成する。以下に、図49を参照しながら、本変形例に係る暗号化装置30のEncryption’’’処理について、詳細に説明する。図49は、本変形例に係る暗号化装置30で実行される暗号化処理を説明するための流れ図である。また、配信者は、暗号化装置30を操作して、受信装置40において生成した暗号文とヘッダの正当性および改ざんの有無の検証に用いられる送信者認証用情報を、以下の手順に従って生成する。図50は、本変形例に係る暗号化装置30が送信者認証用情報を生成する際に実行するSign’’’処理を説明するための流れ図である。
[暗号化装置30におけるEncryption’’’処理]
Encryption’’’処理は、コンテンツ等の配信を希望する任意の送信者が、暗号化装置30を用いて、配信毎に実行する処理である。
送信者は、公開鍵eki、排除されるユーザの集合R={uR1,・・・uRr}を本変形例に係る暗号化装置30に入力し、以下に説明するEncryption’’’処理を実行することで、配信したいコンテンツ等の平文に暗号化処理を行う。ユーザによって入力された集合Rは、暗号化装置30の排除受信装置特定部1303により、暗号化装置30が利用可能なデジタルデータに変換され、Encryption’’’処理に用いられる。
暗号化装置30の排除受信装置特定部1303は、まず、Rの要素数をカウントして、カウント結果をrとする(ステップS2301)。排除受信装置特定部1303は、このカウント結果rをセッション鍵決定部1307に出力する。
次に、暗号化装置30のセッション鍵算出部1309は、k∈Zp *を選択する(ステップS2302)。
続いて、暗号化装置30のセッション鍵算出部1309は、排除されたユーザの数rについて、判定を行う(ステップS2303)。r=0の場合(すなわち、排除されたユーザがいない場合)には、後述するステップS2304を実行する。また、r≧1の場合(すなわち、排除されたユーザが1人以上存在する場合)には、後述するステップS2305を実行する。
排除されたユーザがいない場合には、暗号化装置30は、自身を排除されたユーザとして設定する。すなわち、セッション鍵算出部1309は、R1=jとしたうえで、以下の式435および式436に基づいてPrおよびK’を決定し(ステップS2304)、その後ステップS2308を実行する。
また、排除されたユーザが1人以上である場合には、セッション鍵算出部1309は、双線形写像演算部1313に対して、G上で双線形群の演算処理(Aggregate(A)アルゴリズム)を行い、以下の式437に示した値を計算するよう要請し、双線形写像演算部1313は、Aggregate(A)アルゴリズムを実行して、式437の値をセッション鍵算出部1309に出力する(ステップS2305)。なお、双線形群の演算処理アルゴリズムであるAggregate(A)アルゴリズムについては、従来技術におけるAggregate(A)アルゴリズムと同一であるため、詳細な説明は省略する。
次に、セッション鍵算出部1309は、双線形写像演算部1313から出力された演算結果を利用して、以下の式438の値を算出する(ステップS2306)。
本実施形態に係るセッション鍵算出部1309は、上記γPrを算出することで、G1上でのAggregate(A)アルゴリズムが実行不要となり、Aggregate(A)アルゴリズムの実行回数を1回に減らすことが可能となる。
続いて、セッション鍵算出部1309は、双線形写像演算部1313の演算結果と、上記式438の値と、秘密鍵dkjを用いて、以下の式439に示した値を計算する(ステップS2307)。
それぞれの場合について、PrおよびK’の算出が終了すると、ヘッダ算出部1311は、ヘッダhdrを、以下の式440のようにして計算する(ステップS2308)。
次に、セッション鍵算出部1309は、セッション鍵Kを以下の式441に基づいて計算し、ヘッダhdr、K’およびkとともに出力する(ステップS2309)。
暗号化装置の暗号化部1315は、平文Mのセッション鍵Kによる暗号文C=EK(M)を生成し、送信者認証用情報生成部1321に伝送する。また、暗号文送信部1317は、生成された(hdr,C)を、後述する送信者認証用情報とともに同報配信する。かかる処理を行うことで、送信者は、希望するユーザに対して暗号化されたコンテンツ等を送信することができる。
なお、上記の処理に加えて、さらに平文Mの暗号化、または暗号化及び同報配信までをEncryption’’’処理で実行する構成としてもよい。また、ステップS2301は、送信者自身が実行し、Encryption’’’処理を実行する暗号化装置30に入力する形態をとってもよい。
[送信者認証用情報の生成処理−Sign’’’処理]
続いて、図50を参照しながら、本変形例に係る送信者認証用情報生成部1321が実行する送信者認証用情報の生成処理(Sign’’’処理)について、詳細に説明する。
Sign’’’処理は、本変形例に係る暗号化装置30を有する送信者がヘッダhdrの生成後に実行する処理である。なお,Sign’’’処理は、正規の秘密鍵を有する送信者(暗号化装置30)にのみ実行可能な処理である。
送信者は、公開鍵eki、送信者自身に固有の値uj、送信者自身が保持する秘密鍵dkj、Encryption’’’処理の実行後にセッション鍵算出部1309から出力されるk、K’、セッション鍵K、および、暗号文Cを暗号化装置30に入力し、以下で説明するSign’’’処理を実行させる。
まず、送信者認証用情報生成部1321は、パラメータt∈Zp *を無作為に選択する(ステップS2401)。次に、送信者認証用情報生成部1321は、以下の式442に基づいて、送信者認証用情報の要素の一つであるsigj,0を算出する(ステップS2402)。
次に、送信者認証用情報生成部1321は、算出したsigj,0と、暗号文Cと、セッション鍵Kとを用いて、これらの値のハッシュ値hjを、ハッシュ関数を用いて以下の式443のように計算する(ステップS2403)。
続いて、送信者認証用情報生成部1321は、算出したハッシュ値hjと、選択したパラメータtとを用いて、送信者の秘密情報yを以下の式444のように算出する(ステップS2404)。
y=t−hj∈Zp * ・・・(式444)
次に、送信者認証用情報生成部1321は、算出した秘密情報yと、暗号化装置30に固有の秘密鍵dkjとを用いて、送信者認証用情報の要素の一つであるsigj,1を以下の式445に基づいて算出し、(uj,hj,sigj,1)を送信者認証用情報として、暗号文送信部1317に出力する(ステップS2405)。
以上説明したように、本変形例に係る送信者認証用情報生成部1321は、送信者が任意に選択したパラメータに基づいて算出された値と、暗号文Cと、セッション鍵Kとに関するハッシュ値を用いて送信者認証用情報を生成する。したがって、悪意のある第三者が暗号文の内容やセッション鍵を改ざんして送信者認証用情報を再生成した場合には、算出されるハッシュ値が異なる値となる。そのため、送信者認証用情報を受信した受信装置40は、この送信者認証用情報を利用することで、送信者の正当性および送信内容に改ざんがなされたか否かを検証することができる。
以上、本変形例に係る暗号化装置30で実行されるEncryption’’’処理およびSign’’’処理について説明した。続いて、本変形例に係る受信装置40で実行される受信内容検証処理(Verification’’’処理)について、説明する。
<受信装置40の動作:Verification’’’処理>
暗号化装置30から暗号文等の送信を受けた受信者は、所有する受信装置40を操作し、以下の手順に従って、受信した内容の検証処理を実行する。図51は、本変形例に係る受信装置40が受信内容を検証する際に実行するVerification’’’処理を説明するための流れ図である。
Verification’’’処理は、排除されていないユーザが、送信されたヘッダhdrと、送信者認証用情報である(uj,hj,sigj,1)を利用して、ヘッダhdrおよび暗号文Cを生成したのが、正規の秘密鍵を有するユーザであり、かつ、ヘッダhdrおよび暗号文Cが改ざんされていないかどうかを確認する際に実行する処理である。
検証者は、受信したヘッダhdr、ヘッダhdrの復号結果として得られるセッション鍵K、暗号文C、および、送信者認証用情報(uj,sigj,0,sigj,1)を受信装置40に入力し、受信装置40は、以下で説明するVerification’’’処理を実行する。
なお、Verification’’’処理では、公開鍵ekiのシステムパラメータ部分である(p,G,G1,e)のみを利用するが、これらの値は、通常あらかじめ各ユーザ(あるいはユーザが保持する受信装置40)によって保持されているため、ここでは入力として公開鍵を与える必要がないものとする。
まず、受信装置40の受信内容検証部1407は、排除されるユーザの集合Rの要素数をカウントして、カウント結果をrとし(ステップS2501)、カウント結果の判定を行う(ステップS2502)。カウント結果rが1である場合には、受信内容検証部1407は、後述するステップS2503を実行する。また、カウント結果rが2以上である場合には、受信内容検証部1407は、後述するステップS2504を実行する。
カウント結果rが1である場合には、受信内容検証部1407は、下記式446に基づいてγPrを計算し(ステップS2503)、後述するステップS2505を実行する。
また、カウント結果rが2以上である場合には、受信内容検証部1407は、下記式447に基づいてγPrを計算し(ステップS2504)、後述するステップS2505を実行する。
次に、受信内容検証部1407は、算出したγPrと、送信者認証用情報と、公開情報とを利用して、下記式448に基づいて、検証用に用いられるパラメータCH1を計算する(ステップS2505)。
次に、受信内容検証部1407は、算出したγPrと、自身が保持する秘密鍵uiとを利用して、以下の式449に基づいて、K’を算出する(ステップS2506)。
次に、受信内容検証部1407は、算出した検証用パラメータCH1およびハッシュ値hjと、算出したK’とを用いて、検証用の値CH2を、以下の式450に基づいて算出する(ステップS2507)。
続いて、受信内容検証部1407は、暗号化装置30から送信された暗号文Cと、セッション鍵算出部1403から伝送されたセッション鍵Kと、算出したCH2とを用いて、以下の式451に基づいてハッシュ値h’を算出する(ステップS2508)。
続いて、受信内容検証部1407は、算出したハッシュ値h’と、送信者認証用情報に含まれているhjとを比較する(ステップS2509)。h’=hjであった場合には、受信内容検証部1407は、暗号化装置30から受信した暗号文Cおよびヘッダhdrは、正当な秘密鍵を持つユーザjから送信されたものであって、かつ、暗号文Cおよびヘッダhdrに改ざんがなされていない(すなわち、検証が成功した)と判定する(ステップS2510)。また、h’≠hjであった場合には、受信内容検証部1407は、暗号化装置30から受信した暗号文Cおよびヘッダhdrが正当な秘密鍵を持つユーザjから送信されたものではないか、または、暗号文Cおよびヘッダhdrに改ざんがなされたものである(すなわち、検証が失敗した)と判定する(ステップS2511)。
検証結果が確定すると、受信内容検証部1407は、検証結果を復号部1409へと伝送する。
なお、上述のステップS2501は、受信者自身が実行し、Verification’’’処理を実行する受信装置40に入力する形態をとってもよい。
以上説明したように、本変形例によれば、正規のユーザのみが署名の生成を実行できるようにすることが可能となる。
また、上述の第1の実施形態〜第4の実施形態における暗号化装置30では、Aggregate(C)アルゴリズムを利用し、以下の式501を用いてγPrの算出を行っている。
しかしながら、上記式501の代わりに以下の式502を用いることで、Aggregate(C)アルゴリズムではなく、Aggregate(A)アルゴリズムを利用して、γPrを算出することも可能である。
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
例えば、本明細書の各流れ図における各ステップは、必ずしも流れ図として記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むとしても良い。