(58)【調査した分野】(Int.Cl.,DB名)
前記2以上の端末が、それぞれ所定の認証局から署名を受けた認証用公開鍵と認証用秘密鍵の組を保持し、前記認証用公開鍵を用いて、他の端末に送信する情報に署名を付与する請求項1から4いずれか一の暗号通信方法。
前記暗号通信は、一の情報処理装置が所定の記憶媒体に暗号データを記録し、他の情報処理装置が、前記所定の記憶媒体から暗号データを読み出して、復号する形態で行われる請求項6又は7の情報処理装置。
【背景技術】
【0002】
特許文献1に、グループメンバが動的に変化する場合でも安全に同報暗号通信を行なえるという同報暗号通信方法が開示されている。具体的には、プロセスが、認証サーバから秘密鍵Aで暗号化された会話鍵aを得て、グループ管理サーバに会話鍵aを用いて加入を申請すること、グループ管理サーバが、この会話鍵aを用いてグループ毎に共有鍵暗号g1を暗号化してプロセスに配布することが記載されている。
【0003】
特許文献2には、信頼性が低いチャットサーバを利用する場合でも、通信の秘密を守ることができるというチャットシステムが開示されている。同文献によると、このチャットシステムの鍵管理サーバは、1又は複数のチャンネルを通じて交わされる通信データを暗号化/復号化する為の各チャンネル固有のチャンネル秘密鍵を作成するチャンネル秘密鍵作成手段を備える。そして、この鍵管理サーバは、このチャンネル秘密鍵を暗号化する暗号化手段と、他の端末装置からチャンネル固有のチャンネル秘密鍵の配送要求を受け付ける受付手段と、この配送要求に応じて端末装置へ暗号化済みのチャンネル秘密鍵を配送する配送手段とを備える、と記載されている。
【0004】
暗号通信には、大きく共通鍵暗号方式と公開鍵暗号方式の2つに分類される。以下、ユーザA〜ユーザDの4人のユーザで暗号通信を行う場合の例を挙げて説明する。
(1)共通鍵暗号方式(秘密鍵暗号方式)
図23は、[共通鍵]で暗号通信を実施する場合の手順を示している。この方式では、登場人物全員に共通の鍵を配布して共有する必要があるが、1対nの運用が可能であり、また、ユーザEが途中で増えた場合であっても、ユーザBが生成した暗号データを、ユーザEは復号できるという利点がある。一方で、この方式では、オンラインで共通鍵を配布する場合、通信の傍受等に対してのリスク対策が必要になる。オフラインで共通鍵を配布する場合、媒体に鍵を記録し、人手により配布といった方法が採られており、即時性が劣るとされている。また、紛失・盗難等に対してのリスク対策も必要になる。
(2)公開鍵暗号方式(非対称鍵暗号方式)
公開鍵暗号で暗号通信を実現する場合は以下の方法が考えられる。以降、公開鍵暗号で使われる鍵のうち、公開鍵を[Pub]、秘密鍵を[Pri]と記載する。また、ユーザXの公開鍵及び秘密鍵をそれぞれ[X.Pub]、[X.Pri]と記す。
(2−1)送信ユーザの[Pri]で暗号化/送信ユーザの[Pub]で復号を実施
図24は、データを送信するユーザの鍵を使用して暗号通信を実現する場合の手順を示している。
図24に示すように、データを送信するユーザAは、送信相手に、自身の公開鍵A.Pubを配布する。この方式では、1対nの運用が可能であり、また、ユーザEが途中で増えた場合であっても、ユーザEはユーザAの公開鍵を入手できるので、ユーザAが生成した暗号データを復号できるという利点がある。A.Pubは、外部に公開する為の鍵なので、オンラインでの鍵データの配布については、通信の傍受に対してのリスク対策は必要ない。しかしながら、Priで暗号化したデータとセットで傍受された場合には、通信データを復号されてしまうので、やはり通信の傍受に対してのリスク対策が必要となる。また、公開鍵暗号の処理は負荷が高く、高速でのデータ通信や、大容量データの暗号化には不向きである。
(2−2)受信ユーザの[Pub]で暗号化/受信ユーザの[Pri]で復号を実施
図25、
図26は、データを受信するユーザの鍵を使用して暗号通信を実現する場合の手順を示している。このケースでは、ユーザA〜Dは、お互いに、[Pub]を配布する。通信データは、送信先(送信相手)の[Pub]で暗号化し、受信ユーザは、自分の[Pri]で復号する。通信データを復号できるのは、[Pri]を持っている自分だけなので、[Pub]と通信データがセットで傍受された場合でも、リスク対策は必要ない。しかしながら、複数のユーザにデータを送ろうとした時は、あて先の各ユーザ毎の[Pub]でそれぞれ暗号化する必要が有り、利便性が劣る。つまり、1対nの運用は不可となる。また、この方式では、途中で参加したユーザEは、ユーザBから送られたデータを入手したとしても復号することはできない。ユーザEにもデータを送付したい場合、ユーザBは、ユーザEの公開鍵を入手して暗号化しなおす必要がある。また、この方式も(2−1)と同様、公開鍵暗号の処理に要する負荷が高く、高速でのデータ通信や、大容量データの暗号化には不向きである。
(2−3)公開鍵を用いて[共通鍵]を生成し、暗号化/復号を実施
図27、
図28は、データを送信するユーザと受信するユーザ両方の鍵を使用して暗号通信を実現する場合の手順を示している。
図27に示すように、ユーザA〜Dがお互いに[Pub]を配布するまでの動作は(2−2)と同様である。この方式では、次式に示すように、ユーザA〜Dがお互いに、配布された[Pub]と、自分の[Pri]でDH鍵共有を行い、共通鍵暗号の鍵を生成する。なお、DH鍵共有とは、Diffie−Hellman key exchangeの略であり、通信を行いたい2者が、互いに公開鍵のみを相手に送信し、各自、自分の秘密鍵と受信した公開鍵から共通鍵を作成する方法である。なお、DH鍵共有は、
ユーザA : 鍵共有([A.Pri] 、 [B.Pub] ) → [共通鍵]
ユーザB : 鍵共有([B.Pri] 、 [A.Pub] ) → [共通鍵]
なお、
図28において、「XY共通鍵」はXY間の通信においてXが使用(暗号化および複号)する共通鍵を示し、同じXY間の通信でYが使用(暗号化および複号)する共通鍵は「YX共通鍵」と示す。
このように、共通鍵暗号で通信データを暗号化するハイブリッド方式を採用することで、常時通信データを暗号化する際のリソース消費の問題を解決できる。また、DH鍵共有を行うことで、他者が復号できない安全な通信を実現できる。ただし、本方式においても、1対多の通信を実現しようとすると、総当りで1対1通信を行う事になり、利便性が劣る。また、第三者攻撃に対してのリスクが残る。
【発明を実施するための形態】
【0014】
はじめに本発明の一実施形態の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。また、以降の説明で参照する図面等のブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。また、図中の各ブロックの入出力の接続点には、ポート乃至インタフェースがあるが図示省略する。
【0015】
本発明は、その一実施形態において、
図1、
図2に示すように、複数のユーザが参加する1対nの暗号通信方法(nは1以上)として実現できる。まず、
図1に示すように、鍵情報の配布が行われる。まず、(A)複数のユーザA〜Dが、それぞれの端末に、送信用公開鍵(X.送信Pub)及び送信用秘密鍵(X.送信Pri)を準備する。なお、送信用公開鍵(X.送信Pub)及び送信用秘密鍵(X.送信Pri)が、第1の公開鍵と第1の秘密鍵の組に相当する。
【0016】
さらに、(B1)ユーザA〜Dのうちの任意のユーザ(
図1のユーザA)が、受信用公開鍵(A.受信Pub)及び受信用秘密鍵(A.受信Pri)を作成する(
図1の「(1)鍵を作成」参照)。なお、受信用公開鍵(A.受信Pub)及び受信用秘密鍵(A.受信Pri)が、第2の公開鍵と第1の秘密鍵の組に相当する。
【0017】
次に、ユーザA〜Dは、それぞれの送信用公開鍵(X.送信Pub)を自分以外のユーザに配布する。さらに、(B2)前記受信用公開鍵(A.受信Pub)及び受信用秘密鍵(A.受信Pri)を作成したユーザ(
図1のユーザA)は、作成した受信用公開鍵(A.受信Pub)及び受信用秘密鍵(A.受信Pri)を他のユーザに配布する。なお、ここでの鍵の配送手段としては、背景技術として説明した各種の鍵配送手段を用いることができる。以上の結果、それぞれのユーザは、あるユーザが作成した受信用公開鍵と秘密鍵(A.受信Pub、A.受信Pri)の組と、自分以外のユーザの送信用公開鍵(X.送信Pub)を保持した状態になる(
図1の「(2)鍵を配布」参照)。
【0018】
以上の準備が完了すると、
図2に示す共通鍵の作成と暗号通信を実施可能となる。(C)まず、ユーザA〜Dのうちの任意のユーザ(
図2のユーザB)が、前記(A)で準備した自身の送信用秘密鍵(B.送信Pri)と、(B2)で共有した受信用公開鍵(A.受信Pub)とを用いて、B.送信用共通鍵を作成する。(D)同様に、他のユーザは、前記(B1)、(B2)で共有した受信用秘密鍵(A.受信Pri)と、ユーザBの送信用公開鍵(B.送信Pub)とを用いて、ユーザBとの通信に用いるB.受信用共通鍵を作成する。以上により、ユーザB−ユーザA、ユーザB−ユーザC、ユーザB−ユーザD間の共通鍵が共有されたことになる(
図2の(3)鍵共有)。
【0019】
以降、ユーザB−ユーザA、ユーザB−ユーザC、ユーザB−ユーザD間で、前記送信用共通鍵と前記受信用共通鍵を用いて、暗号通信を実施することが可能となる。例えば、
図2の下段に示すように、ユーザBは、平文データをB.送信用共通鍵で暗号化して、ユーザA、C、Dに送信する。ユーザA、C、Dは、ユーザBから受信した暗号データを、B.受信用共通鍵で復号し、ユーザBが作成した復号データ(平文データ)を得ることができる。
【0020】
以上説明したように、本発明によれば、公開鍵暗号と共有鍵暗号のハイブリッド方式を採用した暗号通信が実現される。特に本発明では
図2の(3)のユーザBに代表されるように、ユーザは、データを暗号化する際、復号者の鍵を意識せずに処理できる様になっている。このため、本発明は、複数のユーザに対してデータを暗号化して送りたい時に、ユーザ毎に異なる暗号化を実施せずに済むという利点がある(
図25〜
図28の方式に対する優位性)。
【0021】
また、上記の点は、後から参加してきたユーザが、受信用公開鍵と受信用秘密鍵の組を入手することで、既に暗号化済みのデータを復号できることを意味する。このため、本発明は、時間的に隔絶した特定の2者間での秘密情報の授受にも適用できる。この点については、後に第2の実施形態として説明する。
【0022】
[第1の実施形態]
本発明をIRC(Internet Relay Chat)システムに適用した実施形態の前に、プロトコルの骨子を説明する。本発明は、認証局と連携させることでより好適に実施可能である。本実施形態では、上述の[受信鍵]、[送信鍵]に加えて、[証明鍵]、[認証鍵]が準備される。はじめに、これらの鍵について説明する。
【0023】
[証明鍵]、[認証鍵]、[受信鍵]、[送信鍵]・・・これらの鍵にはそれぞれ公開鍵(Pub)、秘密鍵(Pri)が存在する。
[証明鍵Pub]、[証明鍵Pri]は、ルート認証局(ルートCA)の鍵として位置づけられ、認証局は、証明鍵Priを用いて、必要なデータに署名を付与する。
【0024】
[認証鍵Pub]、[認証鍵Pri]は、ルート認証局(ルートCA)の下位の認証局である中間認証局(中間CA)の鍵として位置づけられ、各ユーザが作成し保持する。[認証鍵Pub]は、認証局の[証明鍵Pri]で署名される。
【0025】
[受信鍵Pub]、[受信鍵Pri]のうち[受信鍵Pri]は、データを復号するために使用する。[受信鍵Pub]、[受信鍵Pri]の組は、代表者が作成し、そのユーザの[認証鍵]で署名されて、他のユーザに配布される。
[送信鍵Pub]、[送信鍵Pri]のうち[送信鍵Pri]は、データを暗号化する為に使用する。[送信鍵Pub]、[送信鍵Pri]の組は、各ユーザが作成し、このうち、[送信鍵Pub]は、各ユーザの[認証鍵]で署名されて、他のユーザに配布される。
【0026】
鍵の配送は以下のように行われる。以下、ユーザA、B間の配送を例に説明する。なお、以下の説明において、署名付与(X、Y)は、公開鍵Xに、秘密鍵Yを用いた署名を付すことを示している。また、署名検証(X、Y)は、公開鍵Yを用いて公開鍵Xの正当性(署名)を検証することを示している。また、鍵共有(X、Y)→[共通鍵]は、秘密鍵Xと、通信相手の公開鍵Yを用いて共通鍵を作成することを示している。
【0027】
(1)まず、認証局が、ユーザA、Bの認証公開鍵の正当性を証明する公開鍵証明書を発行する。
認証局:署名付与([A.認証Pub]、[認証局.証明Pri])
認証局:署名付与([B.認証Pub]、[認証局.証明Pri])
【0028】
(2)ユーザAは、自身の認証秘密鍵を用いて、受信公開鍵及び送信公開鍵に署名を付与してユーザBに送る。また、ユーザAは、ユーザBの認証公開鍵を、認証局の証明公開鍵で検証し、その正当性を確認する。また、ユーザAは、ユーザBの送信公開鍵を、ユーザBの認証公開鍵で検証し、その正当性を確認する。
ユーザA:署名付与([A.受信Pub]、[A.認証Pri])
ユーザA:署名付与([A.送信Pub]、[A.認証Pri])
ユーザA:署名検証([B.認証Pub]、[認証局.証明Pub])
→[B.認証Pub]は正規
ユーザA:署名検証([B.送信Pub]、[B.認証Pub])
→[B.送信Pub]は正規
【0029】
(3)同様に、ユーザBは、自身の認証秘密鍵を用いて、送信公開鍵に署名を付与してユーザAに送る。また、ユーザBは、ユーザAの認証公開鍵を、認証局の証明公開鍵で検証し、その正当性を確認する。また、ユーザBは、ユーザAの受信公開鍵及び送信公開鍵を、ユーザAの認証公開鍵で検証し、その正当性を確認する。
ユーザB:署名付与([B.送信Pub]、[B.認証Pri])
ユーザB:署名検証([A.認証Pub]、[認証局.証明Pub])
→[A.認証Pub]は正規
ユーザB:署名検証([A.受信Pub]、[A.認証Pub])
→[A.受信Pub]は正規
ユーザB:署名検証([A.送信Pub]、[A.認証Pub])
→ [A.送信Pub]は正規
【0030】
(4)以上のように認証用公開鍵と秘密鍵を用意し、認証局の証明を得ておくことで以降、ユーザは、自分が生成した[受信鍵]/[送信鍵]への署名付与を自分だけで実施できるようになる。例えば、ユーザAは生成した[A.受信鍵Pub]の署名付与([A.受信鍵Pub]、[A.認証Pri])により、認証局に依頼せずに、自分で署名付与を行い、ユーザBに送ることができる。このように、本実施形態では、[受信鍵]/[送信鍵]の更新(生成)の頻度に対して、認証局への署名付与作業の依頼の頻度を軽減し、かつ、ユーザの利便性を向上させることが可能となっている。
【0031】
続けて、ユーザ間で共有した[受信鍵](第2の公開鍵と第2の秘密鍵の組)と、ユーザ個別で専有する[送信鍵](第1の公開鍵と第1の秘密鍵の組)で、鍵共有を行い、共通鍵暗号に使用する共通鍵を生成する。例えば、ユーザA、ユーザB、ユーザCの三者で共通鍵を作成する場合は、各ユーザがそれぞれ3つの共通鍵を作成することになる。
【0032】
ユーザA:鍵共有([A.送信鍵Pri]、[受信鍵Pub])→A送信用共通鍵(S)
ユーザA:鍵共有([受信鍵Pri]、[B.送信鍵Pub])→B受信用共通鍵
ユーザA:鍵共有([受信鍵Pri]、[C.送信鍵Pub])→C受信用共通鍵
【0033】
ユーザB:鍵共有([B.送信鍵Pri]、[受信鍵Pub])→B送信用共通鍵
ユーザB:鍵共有([受信鍵Pri]、[A.送信鍵Pub])→A受信用共通鍵(T)
ユーザB:鍵共有([受信鍵Pri]、[C.送信鍵Pub])→C受信用共通鍵
【0034】
ユーザC:鍵共有([C.送信鍵Pri]、[受信鍵Pub])→C送信用共通鍵
ユーザC:鍵共有([受信鍵Pri]、[A.送信鍵Pub])→A受信用共通鍵(U)
ユーザC:鍵共有([受信鍵Pri]、[B.送信鍵Pub])→B受信用共通鍵
【0035】
このとき、ユーザAが(S)の鍵で暗号化したデータを、ユーザB、Cは、それぞれ(T)、(U)で復号できる。この時、ユーザAは、(S)の鍵を生成する際に、自分の持っている鍵しか使用しない。
【0036】
従って、本実施形態では、各ユーザは、自分が持っている鍵のみを使用して、送信用共通鍵を生成できるので、他者(復号する者)を意識せずに、データを暗号化することができるようになる。また、これにより、総当りで1対1通信を行う必要が無くなるので、ユーザの利便性も向上させることができる(
図1、
図2参照)。
【0037】
[IRCシステム]
続いて、本発明をIRC方式のCHATシステムに適用する場合の具体例について説明する。IRC(Internet Relay Chat)とは、サーバを介してクライアント間で多対多の会話をする、クライアント/サーバ型のシステムとして構成される。
【0038】
図3は、本発明の適用対象とするチャットシステムの構成を示す図である。
図3を参照すると、互いに接続された複数のIRCサーバ20−A〜20−Dと、これらIRCサーバ20−A〜20−Dのいずれかに接続して他のIRCクライアントと会話をするIRCクライアント10−1〜10−6とが示されている。
【0039】
IRCサーバ20−A〜20−Dは、IRCクライアント10−1〜10−6からは1つのIRCサーバとして見える。
図4は、
図3のチャットシステムにより提供される会話空間(チャットルーム)を説明するための図である。
図4に示すように、IRCサーバ20(以下、IRCサーバ20−A〜20−Dを特に区別しない場合、「IRCサーバ20」と記す。)は部屋(チャットルーム)と呼ばれる会話空間を提供し、IRCクライアント10−1〜10−6は、所望の部屋に入り、その部屋の中で、会話を行う。例えば、
図4に示すように、ある部屋にいるIRCクライアント10−1の発言は、IRCサーバ20により、その部屋に在室しているIRCクライアント10−3とIRCクライアント10−5に転送される。
【0040】
本実施形態では、この部屋でやり取りされる発話内容の秘匿化を実現する。
図5は、本実施形態のチャットシステムの物理的構成を示す図である。
図5に示したとおり、本実施形態では、IRCサーバ20と、IRCクライアントが動作する情報処理装置(端末)100−1、100−2に加えて、認証サーバ30が追加されている。また、IRCクライアント10−1、10−2には、
図3、
図4に示したチャット機能を実現するIRC処理部11に加えて、IRCが送受信するメッセージの暗復号を行う暗復号処理部12が追加されている。基本的なメッセージの流れは、以下の通りとなる。あるIRCクライアントのユーザが、テキスト入力や発話等により発言を行うと、IRC処理部11は、暗復号処理部12に発言内容を送る。暗復号処理部12は、発言内容を暗号化し、IRC処理部11に返す。IRC処理部11は暗号化されたデータをIRCサーバ20に送る。IRCサーバ20は、受信した暗号化データを他のIRCクライアントに送る。IRCクライアントは、暗復号処理部12を用いて、IRCサーバ20から受信したデータを復号し、ユーザに提示する。
【0041】
図6は、本実施形態のチャットシステムのソフトウェア構成を説明するための図である。IRCサーバ20のIRC機能及びIRCクライアント10−1、10−2のIRC機能(上記IRC処理部11に相当)は、
図3、
図4に示したIRCクライアント/サーバが備えているものである。
図6のIRCクライアント10−1、10−2の暗号機能は、上記暗復号処理部12に相当し、認証サーバ30や他のIRCクライアントとの暗号鍵の授受を行い、最終的には共通鍵を作成して、IRCでやり取りするメッセージの暗復号を実施する(後に詳説)。なお、
図5の例では、説明を簡単にするため、2台のIRCクライアントを示しているが、当然に、IRCクライアントの数は3以上であってもよい。以下、IRCクライアントを特に区別しない場合、IRCクライアント10と記す。
【0042】
続いて、上記のIRCクライアント10、IRCサーバ20及び認証サーバ30によりCHATを実施するまでの動作について説明する。なお、以下の説明では、IRCサーバ20及び認証サーバ30を併せて「A.サーバ」と記す。また、IRCクライアントは3台あるものとし、それぞれを「B.クライアント」、「C.クライアント」、「D.クライアント」と記す。また、
図7〜
図19のテーブルの上段は、各エンティティが保持する情報や部屋を示し、下段がそれぞれのエンティティによる処理を示している。また、各エンティティが保持する情報は、ユーザ名.(鍵名)+Pub/Priの区分を基本とする。また、各エンティティが保持する情報に、「@」が付されている場合、「@」以下に記された鍵で作成された署名が付されているものとする。例えば、B.認証鍵Pub@A.証明鍵Priは、A.証明鍵Priで作成された署名が付されたB.クライアントの認証用公開鍵を意味する。
【0043】
はじめに、クライアントが部屋に入室してチャットを開始するまでの流れを説明する。以下の説明において、部屋を生成したユーザが、受信鍵を生成するものとした。また、受信鍵のライフタイムは、部屋が生成されてから消滅する迄の間とした。送信鍵のライフタイムは、ユーザが部屋に入ってから退室する迄の間とした。即ち、あるユーザが、部屋に入り直した場合は、送信鍵は更新され、再度ユーザ間で交換することになる。
【0044】
図7は、本発明の第1の実施形態の動作(クライアント登録)を説明するための図である。
図7を参照すると、B.クライアントが、自身の認証鍵(認証鍵Priと認証鍵Pub)を作成し(ステップS001)、A.サーバに対し、生成した認証鍵Pubを送る(ステップS002)。
【0045】
まず、A.サーバは、何らかの手段(例えば、パスワード、生体情報等)でB.クライアントの正当性を確認した上で、証明鍵Priを用いてクライアントの認証鍵Pubに署名をつける(ステップS003)。A.サーバは、B.クライアントに対して署名を付与した認証鍵Pubを返却する(ステップS004)。
【0046】
B.クライアントは、サーバから受信した署名付きの認証鍵Pubを、サーバの証明鍵Pubで検証する(S005)。以上の動作を、C.クライアント及びD.クライアントも実施して、署名付きの認証鍵Pubを入手する(順序はいずれのクライアントが先でも良い)。
【0047】
図8は、本発明の第1の実施形態の動作(送信鍵の作成)を説明するための図である。
図8を参照すると、まず、一番最初に入室したB.クライアントが、送信鍵(送信鍵Priと送信鍵Pub)を作成する(ステップS101)。B.クライアントは、作成した送信鍵Pubに対して、認証鍵Priを用いて署名を付与する(ステップS102)。C.クライアント及びD.クライアントも同様に、送信鍵(送信鍵Priと送信鍵Pub)を作成し、送信鍵Pubに、自身の認証鍵Priを用いて署名を付与する。これにより
図9の上段に示すように、各クライアントが、送信鍵Priと署名付きの送信鍵Pubを用意した状態となる。
【0048】
図9は、本発明の第1の実施形態の動作(部屋の作成)を説明するための図である。
図9を参照すると、部屋を生成しようとしているB.クライアント(親)が受信鍵(受信Priと受信Pub)を作成する(ステップS201)。
【0049】
B.クライアントは、作成した受信鍵Pubに対して、認証鍵Priを用いて署名を付与する(ステップS202)。次に、B.クライアントは、自身のB.送信鍵Priと、受信鍵Pubとを用いてDH共通鍵を作成する(ステップS203)。このDH共通鍵は、B.クライアント(親)が発言するメッセージを暗号化する際に使用される。以下、DH共通鍵は、送信鍵Pri×受信鍵Pub等と記す。
【0050】
DH共通鍵を作成したB.クライアントは、IRCサーバに部屋作成コマンドを送信する(ステップS204)。A.サーバ(IRCサーバ)は、部屋作成コマンドに基づいて部屋を作成する(ステップS205)。このステップS204、S205の処理はIRCプロトコルで行われる。以降、B.クライアントは部屋を作成したユーザであるので、B.クライアント(親)と記す。
【0051】
図10は、本発明の第1の実施形態の動作(C.クライアントの参加−1)を説明するための図である。
図10を参照すると、C.クライアント(子)が、B.クライアント(親)に対し、認証局の署名の付いたC.認証鍵Pubを送信する(ステップS301)。B.クライアント(親)は、C.認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS302)。
【0052】
C.認証鍵Pubの検証に成功すると、B.クライアント(親)は、C.クライアント(子)に対し、認証局の署名の付いたB.認証鍵Pubと、自身のB.認証鍵Priで作成した署名を付けた受信鍵Pubと、受信鍵Priを送信する(ステップS303)。C.クライアント(子)は、B.認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS304)。
【0053】
B.認証鍵Pubの検証に成功すると、C.クライアント(子)は、B.クライアント(親)の署名付きの受信鍵Pubを、B.クライアント(親)の認証鍵Pubで検証する(ステップS305)。受信鍵Pubの検証に成功すると、C.クライアント(子)は、自身のC.送信鍵Priと受信鍵Pubとを用いてDH共通鍵(送信用共通鍵)を作成する(ステップS306)。このDH共通鍵は、C.クライアント(子)が発言するメッセージを暗号化する際に使用される。
【0054】
図11は、
図10の続図である。
図11を参照すると、DH共通鍵(送信用共通鍵)の作成を終えたC.クライアント(子)は、B.クライアント(親)に対し、認証局の署名の付いたC.認証鍵Pub及び自身のC.認証鍵Priで作成した署名を付けたC.送信鍵Pubを送信する(ステップS401)。B.クライアント(親)は、C.認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS402)。
【0055】
C.認証鍵Pubの検証に成功すると、B.クライアント(親)は、C.送信鍵Pubを、C.クライアントのC.認証鍵Pubで検証する(ステップS403)。C.送信鍵Pubの検証に成功すると、B.クライアント(親)は、受信鍵PriとC.送信鍵Pubとを用いてDH共通鍵(受信用共通鍵)を作成する(ステップS404)。このDH共通鍵は、B.クライアント(親)がC.クライアント(子)から受信したメッセージを復号する際に使用される。
【0056】
DH共通鍵(受信用共通鍵)の作成を終えたB.クライアント(親)は、C.クライアント(子)に対し、認証局の署名の付いたB.認証鍵Pub及び自身のB.認証鍵Priで作成した署名を付けたB.送信鍵Pubを送信する(ステップS405)。C.クライアント(子)は、B.認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS406)。
【0057】
図12は、
図11の続図である。
図12を参照すると、B.認証鍵Pubの検証に成功すると、C.クライアント(子)は、B.送信鍵Pubを、B.クライアント(親)のB.認証鍵Pubで検証する(ステップS501)。B.送信鍵Pubの検証に成功すると、C.クライアント(子)は、受信鍵Priと自身のB.送信鍵Pubとを用いてDH共通鍵(受信用共通鍵)を作成する(ステップS502)。このDH共通鍵は、C.クライアント(子)がB.クライアント(親)から受信したメッセージを復号する際に使用される。
【0058】
以上により、B.クライアント(親)とC.クライアント(子)間でそれぞれ暗号通信に用いる共通鍵が配送された状態となる。
図13は、本発明の第1の実施形態の動作(チャット)を説明するための図である。
図13を参照すると、B.クライアント(親)はユーザから入力されたチャットメッセージを、ステップS203で作成した送信用のDH共通鍵(DH送信鍵)で暗号化し(ステップS601)、サーバ(IRCサーバ)に暗号化したチャットメッセージを送信する(ステップS602)。
【0059】
サーバ(IRCサーバ)は、暗号化されたチャットメッセージをログに保存した上で(ステップS603)、同じ部屋に在室しているC.クライアントに、暗号化されたチャットメッセージを送信する(ステップS604)。
図13に記したように、このステップS602〜S604の処理はIRCプロトコルで行われる。
【0060】
前記暗号化されたチャットメッセージを受信したC.クライアントは、ステップS502で作成した受信用のDH共通鍵(DH受信鍵)で、暗号化されたチャットメッセージを復号する(ステップS605)。C.クライアント(子)は、復号したチャットメッセージを表示する(ステップS606)。以下、同様に、C.クライアント(子)が送信するチャットメッセージは、ステップS306で作成したDH共通鍵で暗号化された上で、B.クライアント(親)に送信され、B.クライアント(親)は、ステップS404で作成したDH共通鍵で復号することになる。
【0061】
続いて、上記B.クライアント(親)及びC.クライアント(子)が在室している部屋に、新たにD.クライアントが入室した場合の動作について説明する。
図14は、本発明の第1の実施形態の動作(D.クライアントの途中参加−1)を説明するための図である。
図14を参照すると、D.クライアント(子)が、C.クライアント(子)に対し、認証局の署名の付いたD.認証鍵Pubを送信する(ステップS701)。C.クライアント(子)は、D.認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS702)。なお、
図14の例では、D.クライアント(子)が、C.クライアント(子)に、D.認証鍵Pubを送信しているが、B.クライアント(親)にD.認証鍵Pubを送信して検証を受けることも可能である。即ち、A.証明鍵Pubと受信鍵を持っている参加中のユーザは、新規ユーザに受信鍵を配布することができる。
【0062】
D.認証鍵Pubの検証に成功すると、C.クライアント(子)は、D.クライアント(子)に対し、認証局の署名の付いたB.認証鍵Pubと、Bの署名の付いた受信鍵Pubと、受信鍵Priを送信する(ステップS703)。D.クライアント(子)は、B.認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS704)。
【0063】
B.認証鍵Pubの検証に成功すると、D.クライアント(子)は、B.クライアント(親)の署名付きの受信鍵Pubを、B.クライアント(親)の認証鍵Pubで検証する(ステップS705)。受信鍵Pubの検証に成功すると、D.クライアント(子)は、自身のD.送信鍵Priと受信鍵Pubとを用いてDH共通鍵(送信用共通鍵)を作成する(ステップS706)。このDH共通鍵は、D.クライアント(子)が発言するメッセージを暗号化する際に使用される。
【0064】
図15は、
図14の続図である。
図15を参照すると、DH共通鍵(送信用共通鍵)の作成を終えたD.クライアント(子)は、B.クライアント(親)とC.クライアント(子)に対し、認証局の署名の付いたD.認証鍵Pub及び自身のD.認証鍵Priで作成した署名を付けたD.送信鍵Pubを送信する(ステップS801)。B.クライアント(親)とC.クライアント(子)は、それぞれD.認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS802)。
【0065】
D.認証鍵Pubの検証に成功すると、B.クライアント(親)とC.クライアント(子)は、それぞれD.送信鍵Pubを、D.クライアントのD.認証鍵Pubで検証する(ステップS803)。
【0066】
図16は、
図15の続図である。
図16を参照すると、D.送信鍵Pubの検証に成功すると、B.クライアント(親)とC.クライアント(子)は、それぞれ受信鍵PriとD.送信鍵Pubとを用いてDH共通鍵(受信用共通鍵)を作成する(ステップS901)。このDH共通鍵は、B.クライアント(親)及びC.クライアント(子)がD.クライアント(子)から受信したメッセージを復号する際に使用される。
【0067】
DH共通鍵(受信用共通鍵)の作成を終えたB.クライアント(親)は、D.クライアント(子)に対し、認証局の署名の付いたB.認証鍵Pub及び自身のB.認証鍵Priで作成した署名を付けたB.送信鍵Pubを送信する(ステップS902)。同様に、C.クライアント(子)は、D.クライアント(子)に対し、認証局の署名の付いたC.認証鍵Pub及び自身のC.認証鍵Priで作成した署名を付けたC.送信鍵Pubを送信する(ステップS902)。
【0068】
D.クライアント(子)は、B.クライアント(親)から受信した認証鍵Pubを認証局の証明鍵Pubで検証する(ステップS903)。
【0069】
図17は、
図16の続図である。
図17を参照すると、B.認証鍵Pubの検証に成功すると、D.クライアント(子)は、B.送信鍵Pubを、B.クライアントのB.認証鍵Pubで検証する(ステップS1001)。B.送信鍵Pubの検証に成功すると、D.クライアント(子)は、受信鍵Priと自身のB.送信鍵Pubとを用いてDH共通鍵(受信用共通鍵)を作成する(ステップS1002)。このDH共通鍵は、D.クライアント(子)がB.クライアント(親)から受信したメッセージを復号する際に使用される。D.クライアント(子)は、ステップS902で、C.クライアント(子)から受信したC.認証鍵PubとC.送信鍵Pubについても検証を行い、成功したら、受信鍵Priと自身のC.送信鍵Pubとを用いてDH共通鍵(受信用共通鍵)を作成する(ステップS1001〜S1002)。
【0070】
以上により、B.クライアント(親)とC.クライアント(子)とD.クライアント(子)間でそれぞれ暗号通信に用いる共通鍵が配送された状態となる。
図18は、D.クライアント(子)が、これまでB.クライアント(親)とC.クライアント(子)間で交わされたチャットメッセージを閲覧する際の動作を表した図である。IRCプロトコルを用いた要求等に応じて、サーバ(IRCサーバ)がD.クライアント(子)に対して会話ログを送信したとする(ステップS1101)。D.クライアント(子)は、会話ログの時系列に沿って、B.クライアント(親)又はC.クライアント(子)から発信されたチャットメッセージを復号し、表示する(ステップS1102)。この時、D.クライアント(子)は、ステップS1002で作成したDH共通鍵(受信用共通鍵)を用いて復号することができる。
【0071】
同様の原理でリアルタイムのチャットも可能となる。
図19は、本発明の第1の実施形態の動作(チャット)を説明するための図である。
図19を参照すると、C.クライアント(子)はユーザから入力されたチャットメッセージを、ステップS306で作成した送信用のDH共通鍵(DH送信鍵)で暗号化し(ステップS1201)、サーバ(IRCサーバ)に暗号化したチャットメッセージを送信する(ステップS1202)。
【0072】
サーバ(IRCサーバ)は、暗号化されたチャットメッセージをログに保存した上で(ステップS1203)、同じ部屋に在室しているB.クライアント(親)とD.クライアント(子)に、暗号化されたチャットメッセージを送信する(ステップS1204)。
図19に記したように、このステップS1202〜S1204の処理はIRCプロトコルで行われる。
【0073】
前記暗号化されたチャットメッセージを受信したB.クライアント(親)は、ステップS404で作成した受信用のDH共通鍵(DH受信鍵)で、暗号化されたチャットメッセージを復号、表示する(ステップS1205、S1206)。同様に、D.クライアント(子)は、ステップS1002で作成した受信用のDH共通鍵(DH受信鍵)で、暗号化されたチャットメッセージを復号、表示する(ステップS1205、S1206)。
【0074】
以上説明したように、本実施形態では、公開鍵暗号を用いて1対多暗号通信をする際、
図25〜
図28で示した方式のように、総当りで1対1通信を行う必要が無くなるため、利便性が向上する。また、本実施形態によれば、クライアント1組に対し、1つの共通鍵(送受信で分ける場合は2つ)で通信可能となるため、管理する鍵の数を減らすことができる。また、本実施形態によれば、上記D.クライアント(子)の途中参加時のように、途中から参加したユーザが、ログデータへアクセスすることが可能となる。
【0075】
また、本実施形態では、認証局への署名付与作業の依頼の頻度を軽減することにも成功しているので、この点でも利便性が向上する。その理由は、認証局から署名を付与された鍵(認証鍵)を使用して、中間認証局の要領で、それぞれのクライアントが、自分で生成した鍵に署名をつけることで、本人性を証明できる構成を採用したことにある。
【0076】
[第2の実施形態]
続いて、リアルタイムの通信ではなく、記憶媒体を媒介した情報の授受に、本発明を適用した第2の実施形態について説明する。第2の実施形態においても基本的な動作原理は、第1の実施形態と同様であるので、以下、その相違点を中心に説明する。
【0077】
図20は、本発明の第2の実施形態の暗号通信システムの構成を示す図である。
図4に示した第1の実施形態との相違点は、IRCサーバの代わりに記憶媒体40が用いられ、ディレクトリが、IRCの部屋のように、ユーザ端末50−1〜50−6間のデータの授受を行う場として機能する点である。なお、記憶媒体としては、USB(Universal Serial Bus)メモリ、SDカード、SSD(Solid State Drive)、その他各種のディスクドライブなどの読み書きが容易なメモリ装置を好適に用いることができる。そして、上記第1の実施形態と同様に、あるユーザ端末(例えば、ユーザ端末50−1)は、DH共通鍵を作成して、暗号化した上で、記憶媒体40の所望の位置に、データを保存する。そして、他のユーザ端末のうち、ユーザ端末50−1とDH共通鍵の交換を行ったユーザ端末(例えば、ユーザ端末50−3)は、記憶媒体40から読み出したデータを復号することができる。一方で、ユーザ端末50−1とDH共通鍵の交換を行っていないユーザ端末(例えば、ユーザ端末50−4)は、記憶媒体40から読み出したデータを復号することができない。
【0078】
図21は、本実施形態の物理的なシステムの構成を示す図である。
図5に示した構成との相違点は、IRCサーバ20と情報処理装置内のIRCクライアント10−1、10−2が、それぞれ記憶媒体40と、情報処理装置のオペレーティングシステム(OS)50−1、50−2に置き換わっただけで本質的には同じである。即ち、OS50−1、50−2内のファイル管理部51に加えて、ファイル管理部51で入出力するデータの暗復号を行う暗復号処理部52が追加されている。基本的なデータの流れは、第1の実施形態と同様に、以下の通りとなる。ある情報処理装置のユーザが、記憶媒体40にデータを保存する操作を行うと、ファイル管理部51は、暗復号処理部52に当該データを送る。暗復号処理部52は、データを暗号化し、ファイル管理部51に返す。ファイル管理部51は暗号化されたデータを記憶媒体40に保存する。一方、他の情報処理装置が、記憶媒体40に保存されている暗号化データを読み出すと、当該情報処理装置のOSは、暗復号処理部52を用いて、暗号化データを復号し、ユーザに提示する。
【0079】
図22は、本実施形態のチャットシステムのソフトウェア構成を説明するための図である。本図も本質的には
図6に示した第1の実施形態の構成と同じである。OS(ユーザ端末)50−1、50−2のファイル操作機能(上記ファイル管理部51に相当)は、一般的なOSが備えているものである。
図22のOS50−1、50−2内の暗号機能は、上記暗復号処理部52に相当し、認証サーバ30や他の情報処理装置との暗号鍵の授受を行い、最終的には共通鍵を作成して、データの暗復号を実施する。なお、
図21の例では、説明を簡単にするため、2台の情報処理装置を示しているが、当然に、情報処理装置の数は3以上であってもよい。
【0080】
第2の実施形態において、データの保存先となる記憶媒体40とは切り離して、鍵を管理し、別の記憶媒体を使用し、ユーザ間で交換を済ませる形態を採ることが好ましい。
【0081】
その他の動作は、第1の実施形態と同様であり、各ユーザが鍵の交換を行って、一のユーザが暗号化データを記憶媒体40に保存し、他のユーザがこれを共有した鍵で復号して利用する。このように、本実施形態によれば、コミュニティやユーザグループ毎に異なる暗号鍵を使用して、一つの記憶媒体のデータの共有を行うことが可能となる。また、第1の実施形態と同様に、これらコミュニティやユーザグループに後からユーザが増えても、すでに記憶媒体40に暗号化されているデータを再暗号化せずに復号させることが可能となる。
【0082】
上記第2の実施形態からも明らかなように、本発明は、暗号強度に関して、コンピュータの進歩や脆弱性の発見による、選定した公開鍵暗号技術の陳腐化を度外視すると、長い時間軸での暗号化/復号処理を実現できる。その理由は、Perfect Forward Security要件を満たす為に鍵を短期間で更新しつつ、その頻繁に変わっていく鍵に対しての正当性を保証する機構を、運用に負荷がかからない方法で実現したことによる。なお、本発明に適用する公開鍵暗号のロジックは、DH鍵共有(離散対数を利用した狭義のDH鍵共有のほか、楕円曲線暗号を用いた楕円曲線DH鍵共有(ECDH)等の改良方式を含む)がサポートされているものならどれでも適用可能である。
【0083】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、各図面に示したネットワーク構成、各要素の構成、メッセージの表現形態は、本発明の理解を助けるための一例であり、これらの図面に示した構成に限定されるものではない。
【0084】
なお、
図5、
図21に示した各装置の各部(処理手段)は、
図6、
図22にて説明したように、これらの装置に搭載されたプロセッサに、そのハードウェアを用いて、上記した各処理を実行させるコンピュータプログラムにより実現することもできる。
また、上記した実施形態は、ユーザの端末として機能するコンピュータ(
図29の9000)に、これらの端末としての機能を実現させるプログラムにより実現可能である。このようなコンピュータは、
図29のCPU(Central Processing Unit)9010、通信インタフェース9020、メモリ9030、補助記憶装置9040を備える構成に例示される。すなわち、
図16のCPU9010にて、秘密鍵配布プログラム、共通鍵作成プログラムや通信実施プログラムを実行し、その補助記憶装置9040等に保持された各計算パラメーターの更新処理を実施させればよい。
【0085】
最後に、本発明の好ましい形態を要約する。
[第1の形態]
(上記第1の視点による暗号通信方法参照)
[第2の形態]
上記暗号通信方法において、
前記他の端末が、前記(A)で準備した第1の秘密鍵と、前記(B)で共有した第2の公開鍵とを用いて、第2の共通鍵を作成するステップと、
前記一の端末が、前記(B)で共有した第2の秘密鍵と、前記(A)で準備した前記一の端末の第1の公開鍵とを用いて、第2の共通鍵を作成するステップと、を含み、
前記2以上の端末がそれぞれ、前記共通鍵と、前記第2の共通鍵のいずれか一方を送信に用い、他方を受信用に用いる構成を採ることができる。
[第3の形態]
上記暗号通信方法において、さらに、
(E)第3の端末が第1の公開鍵及び第1の秘密鍵を準備するステップと、
(F)前記2以上の端末のうち一の端末が、前記(B)で共有した第2の公開鍵及び第2の秘密鍵を前記第3の端末に配布するステップと、
(G)前記第3の端末が、前記(E)で準備した第1の秘密鍵と、前記(F)で共有した第2の公開鍵とを用いて、前記2以上の端末のそれぞれとの通信に用いる共通鍵を作成するステップと、
(H)前記2以上の端末がそれぞれ、前記(F)で共有した第2の秘密鍵と、前記(E)で準備した第1の公開鍵とを用いて、前記第3の端末との通信に用いる共通鍵を作成するステップと、
を含めることができる。
[第4の形態]
上記暗号通信方法において、
前記共通鍵の作成は、DH鍵交換を用いて行われることが好ましい。
[第5の形態]
上記暗号通信方法において、
前記2以上の端末が、それぞれ所定の認証局から署名を受けた認証用公開鍵と認証用秘密鍵の組を保持し、前記認証用公開鍵を用いて、他の端末に送信する情報に署名を付与する構成を採ることができる。
[第6の形態]
(A)第1の公開鍵及び第1の秘密鍵の組を準備する手段と、
(B1)第2の公開鍵及び第2の秘密鍵の組を作成し、他の端末に配布する手段と、
(C1)前記(A)で準備した第1の秘密鍵と、前記(B1)で共有した第2の公開鍵とを用いて、共通鍵を作成する手段と、
(D1)前記(B1)で共有した第2の秘密鍵と、予め準備した第1の公開鍵とを用いて共通鍵を作成する他の端末と、前記(C1)で作成した共通鍵を用いて、暗号通信を実施する手段と、
を含む情報処理装置。
[第7の形態]
(A)第1の公開鍵及び第1の秘密鍵の組を準備する手段と、
(B2)他の端末から第2の公開鍵及び第2の秘密鍵の組の配布を受ける手段と、
(C2)前記(B2)で共有した第2の秘密鍵と、前記(A)で準備した第1の公開鍵とを用いて、共通鍵を作成する手段と、
(D2)予め準備した第1の秘密鍵と、前記(B2)で共有した第2の公開鍵とを用いて共通鍵を作成する他の端末と、前記(C2)で作成した共通鍵を用いて、暗号通信を実施する手段と、
を含む情報処理装置。
[第8の形態]
前記暗号通信は、一の情報処理装置が所定の記憶媒体に暗号データを記録し、他の情報処理装置が、前記所定の記憶媒体から暗号データを読み出して、復号する形態で行われる構成とすることができる。
[第9の形態]
(A)第1の公開鍵及び第1の秘密鍵の組を準備する手段と、
(B1)第2の公開鍵及び第2の秘密鍵の組を作成し、他の端末に配布する手段と、
(C1)前記(A)で準備した第1の秘密鍵と、前記(B1)で共有した第2の公開鍵とを用いて、共通鍵を作成する手段と、
(D1)前記(B1)で共有した第2の秘密鍵と、予め準備した第1の公開鍵とを用いて共通鍵を作成する他の端末と、前記(C1)で作成した共通鍵を用いて、暗号通信を実施する手段と、を含む第1の情報処理装置と、
(A)第1の公開鍵及び第1の秘密鍵の組を準備する手段と、
(B2)他の端末から第2の公開鍵及び第2の秘密鍵の組の配布を受ける手段と、
(C2)前記(B2)で共有した第2の秘密鍵と、前記(A)で準備した第1の公開鍵とを用いて、共通鍵を作成する手段と、
(D2)予め準備した第1の秘密鍵と、前記(B2)で共有した第2の公開鍵とを用いて共通鍵を作成する他の端末と、前記(C2)で作成した共通鍵を用いて、暗号通信を実施する手段と、を含む第2の情報処理装置と、に接続され、
前記第1、第2の情報処理装置が本人性を証明するために使用する署名に認証を与える認証局装置。
[第10の形態]
(A)第1の公開鍵及び第1の秘密鍵の組を準備する処理と、
(B1)第2の公開鍵及び第2の秘密鍵の組を作成し、他の端末に配布する処理と、
(C1)前記(A)で準備した第1の秘密鍵と、前記(B1)で共有した第2の公開鍵とを用いて、共通鍵を作成する処理と、
(D1)前記(B1)で共有した第2の秘密鍵と、予め準備した第1の公開鍵とを用いて共通鍵を作成する他の端末と、前記(C1)で作成した共通鍵を用いて、暗号通信を実施する処理と、
を情報処理装置に実行させるプログラム。
[第11の形態]
(A)第1の公開鍵及び第1の秘密鍵の組を準備する処理と、
(B2)他の端末から第2の公開鍵及び第2の秘密鍵の組の配布を受ける処理と、
(C2)前記(B2)で共有した第2の秘密鍵と、前記(A)で準備した第1の公開鍵とを用いて、共通鍵を作成する処理と、
(D2)予め準備した第1の秘密鍵と、前記(B2)で共有した第2の公開鍵とを用いて共通鍵を作成する他の端末と、前記(C2)で作成した共通鍵を用いて、暗号通信を実施する処理と、
を情報処理装置に実行させるプログラム。
なお、上記第6〜第11の形態は、第1の形態と同様に、第2〜第5の形態に展開することが可能である。
【0086】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。