IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社 エヌティーアイの特許一覧

特開2022-105403ユーザ装置、方法、コンピュータプログラム
<>
  • 特開-ユーザ装置、方法、コンピュータプログラム 図1
  • 特開-ユーザ装置、方法、コンピュータプログラム 図2
  • 特開-ユーザ装置、方法、コンピュータプログラム 図3
  • 特開-ユーザ装置、方法、コンピュータプログラム 図4
  • 特開-ユーザ装置、方法、コンピュータプログラム 図5
  • 特開-ユーザ装置、方法、コンピュータプログラム 図6
  • 特開-ユーザ装置、方法、コンピュータプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022105403
(43)【公開日】2022-07-14
(54)【発明の名称】ユーザ装置、方法、コンピュータプログラム
(51)【国際特許分類】
   H04L 9/08 20060101AFI20220707BHJP
【FI】
H04L9/00 601D
H04L9/00 601E
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021000170
(22)【出願日】2021-01-04
(71)【出願人】
【識別番号】398030229
【氏名又は名称】株式会社 エヌティーアイ
(74)【代理人】
【識別番号】100108604
【弁理士】
【氏名又は名称】村松 義人
(72)【発明者】
【氏名】中村 貴利
(57)【要約】
【課題】暗号化通信を行う2つの通信装置に共通の初期解を持たせるための安全な技術を提供する。
【解決手段】多数のユーザ装置はすべて、同じ初期解を持つのであれば同じ条件下では同じ解を生成する機能を持ち、同じ初期解から連続して生成される同期した解を用いて暗号化通信を行えるようになっている。2つのサーバ装置は、通信を行う2つのユーザ装置が同じ初期解を生成するために必要な初期解そのものではない情報であるそれぞれ同期情報を生成し(S2002)、暗号化通信を行う2つのユーザ装置に送信する(S2003)。2つのユーザ装置はそれぞれ、2つのサーバ装置200から受取った2つの同期情報に対して所定の演算を行い、同じ初期解を生成する(S1004)。その後2つのユーザ装置は、同じ初期解に基づいて暗号化通信を行う(S1005)。
【選択図】図6
【特許請求の範囲】
【請求項1】
ネットワークを介して互いに通信可能とされた、3つ以上のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続された2つ以上のサーバ装置と、を含んでなる通信システムを、2つ以上の前記サーバ装置との組合せによって構成するユーザ装置であり、
初期解に基づいて、文字、数字、記号の少なくとも1つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成部と、
送信の対象となる送信対象データを、前記ユーザ解生成部で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化部と、
前記ネットワークを介しての送受信を行うユーザ送受信部と、
前記ユーザ送受信部で受信した前記暗号化データを、前記ユーザ解生成部で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化部と、
を有しているとともに、
暗号化通信を行おうとしている2つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、2つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成部でそれぞれ生成することにより、相手方の前記ユーザ暗号化部で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送受信部から送られてきて自らの前記ユーザ送受信部により受取ったものを、自らの前記ユーザ復号化部によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっている場合において、
前記特定ユーザ装置にて実行される方法であって、
前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの1つである第1サーバ装置へ送信するとともに、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの他の1つである第2サーバ装置へ送信する第1過程と、
前記特定情報を受付けた前記第1サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である前記サーバ装置ごとにユニークな同期情報である第1同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付ける第2過程と、
前記特定情報を受付けた前記第2サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記同期情報である第2同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付ける第3過程と、
前記ユーザ装置のそれぞれが、前記第1同期情報と前記第2同期情報とを用いて予め定めた所定の演算を行うことにより共通の前記初期解を得る第4過程と、
を含む、方法。
【請求項2】
前記サーバ装置は、前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成部で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成部で生成されるものと同期された前記解を生成することができるサーバ装置解生成部と、前記サーバ装置毎にユニークな情報である基礎情報を連続して生成する基礎情報生成部と、前記基礎情報生成部で生成された前記基礎情報と前記サーバ装置解生成部で生成された前記解とを用いて可逆的な演算を行うサーバ装置演算部とを備えており、
前記第2過程では、
前記特定情報を受付けた前記第1サーバ装置が、当該第1サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第1サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の一方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第1サーバ装置の前記サーバ装置演算部で演算することによって前記第1同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記第1同期情報を、前記特定ユーザ装置の一方がその前記ユーザ送受信部で受付けるとともに、
前記特定情報を受付けた前記第1サーバ装置が、当該第1サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第1サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の他方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第1サーバ装置の前記サーバ装置演算部で演算することによって前記第1同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記特定ユーザ装置の一方に送られたものとは異なる前記第1同期情報を、前記特定ユーザ装置の他方がその前記ユーザ送受信部で受付け、
前記第3過程では、
前記特定情報を受付けた前記第2サーバ装置が、当該第2サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第2サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の一方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第2サーバ装置の前記サーバ装置演算部で演算することによって前記第2同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記第2同期情報を、前記特定ユーザ装置の一方がその前記ユーザ送受信部で受付けるとともに、
前記特定情報を受付けた前記第2サーバ装置が、当該第2サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第2サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の他方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第2サーバ装置の前記サーバ装置演算部で演算することによって前記第2同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記特定ユーザ装置の一方に送られたものとは異なる前記第2同期情報を、前記特定ユーザ装置の他方がその前記ユーザ送受信部で受付け、
前記第4過程では、
前記特定ユーザ装置の一方が、
前記第1サーバ装置から受付けた前記第1同期情報に対して、そのユーザ解生成部で生成された、当該第1同期情報を生成する際に前記第1サーバ装置で生成されたのと同じ前記解を用いて、前記第1サーバ装置の前記サーバ装置演算部で行われた演算の逆演算を行うことにより前記第1サーバ装置で前記第1同期情報を生成する際に生成された前記基礎情報を取り出すとともに、前記第2サーバ装置から受付けた前記第2同期情報に対して、そのユーザ解生成部で生成された、当該第2同期情報を生成する際に前記第2サーバ装置で生成されたのと同じ前記解を用いて、前記第2サーバ装置の前記サーバ装置演算部で行われた演算の逆演算を行うことにより前記第2サーバ装置で前記第2同期情報を生成する際に生成された前記基礎情報を取り出し、
前記特定ユーザ装置の他方が、
前記第1サーバ装置から受付けた前記第1同期情報に対して、そのユーザ解生成部で生成された、当該第1同期情報を生成する際に前記第1サーバ装置で生成されたのと同じ前記解を用いて、前記第1サーバ装置の前記サーバ装置演算部で行われた演算の逆演算を行うことにより前記第1サーバ装置で前記第1同期情報を生成する際に生成された前記基礎情報を取り出すとともに、前記第2サーバ装置から受付けた前記第2同期情報に対して、そのユーザ解生成部で生成された、当該第2同期情報を生成する際に前記第2サーバ装置で生成されたのと同じ前記解を用いて、前記第2サーバ装置の前記サーバ装置演算部で行われた演算の逆演算を行うことにより前記第2サーバ装置で前記第2同期情報を生成する際に生成された前記基礎情報を取り出し、
そして、前記特定ユーザ装置の双方が、前記第1サーバ装置と前記第2サーバ装置がそれぞれ生成した、2つの共通の前記基礎情報に対して予め定めた所定の演算を行うことにより共通の前記初期解を得る、
請求項1記載の方法。
【請求項3】
前記サーバ装置演算部で行われる演算が、前記基礎情報と前記解の排他的論理和を取ることである、
請求項2記載の方法。
【請求項4】
前記ユーザ解生成部で生成される解と、前記サーバ装置解生成部で生成される解とが常に、前記基礎情報生成部で生成される基礎情報と同じかそれより大きな情報量を持つ、
請求項2又は3のいずれかに記載の方法。
【請求項5】
ネットワークを介して互いに通信可能とされた、3つ以上のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続された2つ以上のサーバ装置と、を含んでなる通信システムを、2つ以上の前記サーバ装置との組合せによって構成するユーザ装置であり、
初期解に基づいて、文字、数字、記号の少なくとも1つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成部と、
送信の対象となる送信対象データを、前記ユーザ解生成部で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化部と、
前記ネットワークを介しての送受信を行うユーザ送受信部と、
前記ユーザ送受信部で受信した前記暗号化データを、前記ユーザ解生成部で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化部と、
を有しているとともに、
暗号化通信を行おうとしている2つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、2つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成部でそれぞれ生成することにより、相手方の前記ユーザ暗号化部で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送受信部から送られてきて自らの前記ユーザ送受信部により受取ったものを、自らの前記ユーザ復号化部によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、
前記ユーザ装置が前記特定ユーザ装置となるとき、
前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの1つである第1サーバ装置へ送信するとともに、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの他の1つである第2サーバ装置へ送信することと、
前記特定情報を受付けた前記第1サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である前記サーバ装置ごとにユニークな同期情報である第1同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、
前記特定情報を受付けた前記第2サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記同期情報である第2同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、
前記ユーザ装置のそれぞれが、前記第1同期情報と前記第2同期情報とを用いて予め定めた所定の演算を行うことにより共通の前記初期解を得ることと、
を実行するようになっている、ユーザ装置。
【請求項6】
ネットワークを介して互いに通信可能とされた、3つ以上のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続された2つ以上のサーバ装置と、を含んでなる通信システムを、2つ以上の前記サーバ装置との組合せによって構成するユーザ装置として所定のコンピュータを機能させるためのコンピュータプログラムであって、
前記コンピュータプログラムは、前記コンピュータを、
初期解に基づいて、文字、数字、記号の少なくとも1つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成部と、
送信の対象となる送信対象データを、前記ユーザ解生成部で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化部と、
前記ネットワークを介しての送受信を行うユーザ送受信部と、
前記ユーザ送受信部で受信した前記暗号化データを、前記ユーザ解生成部で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化部と、
して機能させるためのものであるとともに、
暗号化通信を行おうとしている2つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、2つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成部でそれぞれ生成することにより、相手方の前記ユーザ暗号化部で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送受信部から送られてきて自らの前記ユーザ送受信部により受取ったものを、自らの前記ユーザ復号化部によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようし、
且つ、前記ユーザ装置が前記特定ユーザ装置となるとき、前記特定ユーザ装置に、
前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの1つである第1サーバ装置へ送信するとともに、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの他の1つである第2サーバ装置へ送信することと、
前記特定情報を受付けた前記第1サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である前記サーバ装置ごとにユニークな同期情報である第1同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、
前記特定情報を受付けた前記第2サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記同期情報である第2同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、
前記ユーザ装置のそれぞれが、前記第1同期情報と前記第2同期情報とを用いて予め定めた所定の演算を行うことにより共通の前記初期解を得ることと、
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信技術、より詳細には暗号通信技術に関する。
【背景技術】
【0002】
例えば、インターネット上でインターネット上に存在する店舗への支払いを行う、インターネットバンキングで自らの口座の残高を見たり第三者への送金を行う等という場合には、それらを行うユーザは自らの端末と上記店舗等のサーバ装置との間でインターネットを介して通信を行う。かかる通信ではもちろん、悪意の第三者による通信の盗聴を防ぐことが必要である。
金銭にまつわるサービスをインターネットで受ける場合における上述の如き場合はもちろん、それ以外の一般的な通信を行う場合にも、通信の盗聴を防ぐ目的で、暗号化通信の技術が広く用いられている。
【0003】
そのような技術の1つとして、本願発明者は予てからある技術を開発し、その普及に努めている。本願発明者が提唱する技術は、次のような技術である。
概略を説明すると、その技術では、2つの通信装置がインターネット等のネットワークを介して通信を行う。この場合、2つの通信装置は、連続して文字、数字、記号の少なくとも1つを所定数羅列したものである解を生成する解生成部を備えている。かかる解生成部は、初期解に基づいて解を生成するものであり同じ条件下で生成されたものが常に同じものとなるようになっている。つまり、解には初期値依存性がある。例を挙げるのであれば、解生成部が生成する解は、擬似乱数である。
また、2つの通信装置は、暗号化部を備えている。暗号化部は、送信の対象となる送信対象データを、解生成部で生成された解を用いて暗号化して暗号化データにする処理を実行する。また、2つの通信装置は、暗号化部が生成した暗号化データを通信の相手方となる通信装置に送信する送信部を備えている。
また、2つの通信装置は、暗号化データを通信の相手方となる通信装置から受信する受信部を備えている。また、2つの通信装置は、受信した暗号化データを、解生成部で生成された解を用いて復号化して送信対象データにする処理を実行する復号化部を備えている。
そして、暗号化通信を行おうとしている2つの通信装置は、共通の初期解を有しており、それ故それらがともに持つ解生成部で同じ解を生成することができるようになっている。本願発明では、そのような状況を、2つの装置が同期した解を生成することができるようになっている、と称することとする。そして、2つの通信装置が同期した解を生成することができるようになっていることにより、かかる通信装置における暗号化通信は、極めて安全なものとなる。
【0004】
例えば、2つの装置が共通鍵方式の通信を実行する場合には、それら2つの装置は、暗号化或いは復号化の処理を規定するアルゴリズムと、そのアルゴリズムを実行する場合に用いられる共通鍵とを共有している。本願発明者が提唱する上述の通信装置では、通信を行う2つの通信装置における解生成部で、上述のように次々と新しい同期された共通の解が生成される。そして、上記2つの通信装置における暗号化部と復号化部とは、それら共通する解を、共通のタイミングで変化する共通鍵(或いは、共通鍵を生成するための共通する情報)として用いることにより、極めて高い通信の安全性を実現する。
本願発明者が提唱する上述の通信装置は、通信毎に解を発生させるのみならず、送信対象データを暗号化する場合の複数のタイミングで、最も頻繁な場合には、送信対象データを切断することにより、暗号化又は復号化の処理を一度に行う対象となる一単位のデータが生成される毎に新たな解を発生させることも可能である。つまり、本願発明者が提唱する上述の通信装置は、少なくとも1回の通信が行われる度に、場合によってはそれ以上のより頻繁なタイミングで暗号化通信を実行する場合の共通鍵を更新する、例えるなら、使い捨ての共通鍵を次々に生成して暗号化通信を行うものであるから、その暗号の強度が極めて高いのである。
なお、一応付言すると、上述の解によって変更される対象は、必ずしも共通鍵その他の鍵である必要はなく、アルゴリズムの方であっても構わない。
【0005】
上述の通信装置においては、2つの通信装置における解生成部で生成される解が互いに同期されていることが重要であり、かかる解の同期が達成できないのであれば2つの通信装置は暗号化通信を行うことができない。したがって、2つの通信装置は、暗号化通信を行う前に、解を同期させるために必要となる同じ初期解を共有することが要求される。
しかしながら、それが難しい場合もある。それは、通信装置が多数であって、且つそれら多数の通信装置のうちの2つが暗号化通信を行うような場合である。例えば、多数のパーソナルコンピュータ、携帯電話、スマートフォンが上述の通信装置である場合において、それら通信装置のうちの2つが通信の一例となる電子メールのやり取りを行う場合には、それら2つの通信装置が、通信の開始前に共通する初期解を持つ必要がある。この場合において、暗号化通信を行う必要のある2つの通信装置の対の数は膨大であり、そのすべての対における2つの通信装置に対して共通の初期解を持たせるのには手間がかかり、また困難である。
【0006】
もっとも本願発明者は、2つの通信装置に共通の初期解をどのようにして持たせるかという上述の問題を解決するための技術をも既に提案している。その技術は、インターネットに接続される多数の通信装置以外に、2つの通信装置間での暗号化通信を管理する、これもインターネットに接続される制御装置を用意するというものである。かかる制御装置は、暗号化通信を開始する前の2つの通信装置に対して、各通信装置が共通の初期解を生成するために必要な情報である同期情報を送信するようになっている。通信を行う2つの通信装置は、同期情報から共通の初期解を生成することにより、共通の初期解を共有することができる。
それにより、共通の初期解を得た2つの通信装置は、それ以降、暗号化通信を行う際に、同期した解をそれらの持つ解生成部で生成できるようになる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2018-093417
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述したように、制御装置から2つの通信装置に対して同期情報を送信することにより、2つの通信装置では初期解を共有すること、及び同期した解を生成することが可能となる。したがって、2つの通信装置は、極めて秘匿性が高い暗号化通信を実行することができる。
かかる暗号化通信は、悪意のある第三者に盗聴される可能性は極めて低い。しかしながら、制御装置は同期情報を知っているのであるから、制御装置或いはその管理者が悪意を持っていた場合、同期情報に基づいて2つの通信装置で用いられる初期解を生成することのできる制御装置、その管理者、或いはその管理者と共謀した者に、2つの通信装置間の暗号化通信を盗聴される可能性がある。
【0009】
本願発明は、多数の通信装置のうちの暗号化通信を行おうとする2つの通信装置に、暗号化通信に用いる同期された連続した解を生成するために必要となる共通の初期解を持たせるための、安全性の高い技術を提供することをその課題とする。
【課題を解決するための手段】
【0010】
上述の課題を解決するための本願発明は、以下のようなものである。
本願発明は、ネットワークを介して互いに通信可能とされた、3つ以上のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続された2つ以上のサーバ装置と、を含んでなる通信システムを、2つ以上の前記サーバ装置との組合せによって構成するユーザ装置のうちの2つである、後述する特定ユーザ装置にて実行される方法である。
上述の通信システムに含まれる前記ユーザ装置はそれぞれ、初期解に基づいて、文字、数字、記号の少なくとも1つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成部と、送信の対象となる送信対象データを、前記ユーザ解生成部で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化部と、前記ネットワークを介しての送受信を行うユーザ送受信部と、前記ユーザ送受信部で受信した前記暗号化データを、前記ユーザ解生成部で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化部と、を有している。また、各ユーザ装置は、暗号化通信を行おうとしている2つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、2つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成部でそれぞれ生成することにより、相手方の前記ユーザ暗号化部で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送受信部から送られてきて自らの前記ユーザ送受信部により受取ったものを、自らの前記ユーザ復号化部によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっている。
本願発明における方法は、前記特定ユーザ装置にて実行される方法であって、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの1つである第1サーバ装置へ送信するとともに、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの他の1つである第2サーバ装置へ送信する第1過程と、前記特定情報を受付けた前記第1サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である前記サーバ装置ごとにユニークな同期情報である第1同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付ける第2過程と、前記特定情報を受付けた前記第2サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記同期情報である第2同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付ける第3過程と、前記ユーザ装置のそれぞれが、前記第1同期情報と前記第2同期情報とを用いて予め定めた所定の演算を行うことにより共通の前記初期解を得る第4過程と、を含む。
【0011】
本願発明におけるユーザ装置とサーバ装置とは、概ね、背景技術の欄で説明した通信装置と制御装置とにそれぞれ該当する。
各ユーザ装置は、背景技術の欄で説明した通信装置における解生成部に相当するユーザ解生成部を備えており、かかるユーザ解生成部で解を連続して生成することが可能となっている。ユーザ装置のうちの暗号化通信を行う2つのユーザ装置である特定ユーザ装置は、それらが共通の初期解を持っている場合には、背景技術の欄で説明した通信装置と同様に、そのユーザ解生成部で同期された状態で同じ解を生成することができるようになっており、その解を用いて暗号化通信を行えるようになっている。解は、乱数であり、より詳細には、コンピュータで生成できる乱数であるから擬似乱数である。
【0012】
背景技術の欄で説明したように、特定ユーザ装置と本願発明で称する通信を行う2つのユーザ装置が解を同期した状態とするには、2つのユーザ装置が共通する初期解を持ち合うことが必要である。それを、本願発明では、以下のような第1から第4過程を実行することにより実現している。
第1過程は、特定ユーザ装置のいずれかが、特定ユーザ装置の双方を特定する情報である特定情報をユーザ送受信部によりサーバ装置のうちの1つである第1サーバ装置へ送信するとともに、特定ユーザ装置のいずれかが、特定ユーザ装置の双方を特定する情報である特定情報をユーザ送受信部によりサーバ装置のうちの他の1つである第2サーバ装置へ送信するというものである。
平たく言うと、第1過程は、これから通信を行う特定ユーザ装置のいずれかが、第1サーバ装置と第2サーバ装置という2つのサーバ装置に、通信を行う2つのユーザ装置がどれであるかということを通知する、というものである。例えば、各ユーザ装置に対して、各ユーザ装置毎にユニークな識別子、例えば、ID、IPアドレス、電話番号等が振られているのであれば、特定ユーザ装置である2つのユーザ装置に振られた識別子を、特定ユーザ装置に含まれるユーザ装置のいずれかが、第1サーバ装置と第2サーバ装置とに、特定情報として通知する。第1サーバ装置にかかる通知を行うユーザ装置と、第2サーバ装置にかかる通知を行うユーザ装置とは、同じであっても良いし、そうでなくても良い。
第2過程は、特定情報を受付けた第1サーバ装置が生成し、特定情報によって特定される特定ユーザ装置の双方に送信した、特定ユーザ装置が同じ初期解を得て特定ユーザ装置間で解を同期させるために必要な情報であるサーバ装置ごとにユニークな同期情報である第1同期情報を、特定ユーザ装置それぞれのユーザ送受信部で受付けるというものである。
平たく言うと、第2過程では、特定情報を受取った第1サーバ装置で同期情報が生成され、生成された同期情報である第1同期情報が、特定情報で特定された2つのユーザ装置に送られる。特定ユーザ装置である2つのユーザ装置は第1同期情報を受取る。第1同期情報は、後述するように、同じものである場合もあるし、そうでない場合もある。
第3過程は、特定情報を受付けた第2サーバ装置が生成し、特定情報によって特定される特定ユーザ装置の双方に送信した、同期情報である第2同期情報を、特定ユーザ装置それぞれのユーザ送受信部で受付けるというものである。
第3過程は、第2過程と殆ど同じである。第1サーバ装置の代わりに第2サーバ装置が登場するのが、第2過程と第3過程の違いである。平たく言うと、第3過程では、特定情報を受取った第2サーバ装置で同期情報が生成され、生成された同期情報である第2同期情報が、特定情報で特定された2つのユーザ装置に送られる。特定ユーザ装置である2つのユーザ装置は第2同期情報を受取る。第2同期情報は同じものである場合もあるし、後述するように、そうでない場合もある。
第4過程は、ユーザ装置のそれぞれが、第1同期情報と第2同期情報とを用いて予め定めた所定の演算を行うことにより共通の初期解を得るというものである。結果として、2つのユーザ装置は、共通の初期解を持ち合うことになる。例えば、第2過程で第1サーバ装置が特定ユーザ装置のそれぞれに送る第1同期情報が同じものであり、第3過程で第2サーバ装置が特定ユーザ装置のそれぞれに送る第2同期情報が同じものであるのであれば、2つのユーザ装置がそれぞれ、第1同期情報と第2同期情報とを乗算するとか、それらの排他的論理和を取ることにより、特定ユーザ装置である2つのユーザ装置は、同じ初期解を持ち合うことになる。
かかる方法により特定ユーザ装置に同一の初期解を持たせることによる利点は、以下の通りである。
かかる方法によって特定ユーザ装置が持つことになる初期解は、第1同期情報と第2同期情報との双方を用いずには生成できないものである。そして、第1サーバ装置は第1同期情報を知っているが、第2同期情報を知らず、第2サーバ装置は第2同期情報を知っているが、第1同期情報を知らない。したがって、第1サーバ装置或いはその管理者も、第2サーバ装置或いはその管理者も、第1同期情報と第2同期情報の双方を知ることが無いので、特定ユーザ装置である2つのユーザ装置で生成された初期解を生成することができない。
もちろん、第1サーバ装置の管理者と第2サーバ装置の管理者とが共謀すれば、第1同期情報と第2同期情報との双方を知ることができるため、特定ユーザ装置で生成された初期解を把握することも可能であろうが、そのような可能性は、背景技術の欄で説明した従来技術のように、第1サーバ装置或いはその管理者と、第2サーバ装置或いはその管理者の片方のみが悪意を持つ可能性に比較すれば極めて低いし、露見しやすい。したがって、本願発明の方法によって特定ユーザ装置としての2つのユーザ装置が初期解を持ち合う過程は、従来に比して極めて安全性が高い。
【0013】
本願発明におけるサーバ装置は、各ユーザ装置が持つユーザ解生成部と同様のサーバ装置解生成部を備えていてもよい。つまり、サーバ装置は、前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成部で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成部で生成されるものと同期された前記解を生成することができるサーバ装置解生成部を備えていてもよい。ここでいう「初期解」は、特定ユーザ装置間で同期した状態で解を生成するための初期解ではなく、サーバ装置と各ユーザ装置間で同期した状態で解を生成するための初期解である。この場合、各サーバ装置は、前記サーバ装置毎にユニークな情報である基礎情報を連続して生成する基礎情報生成部と、前記基礎情報生成部で生成された前記基礎情報と前記サーバ装置解生成部で生成された前記解とを用いて可逆的な演算を行うサーバ装置演算部とを備えていてもよい。
サーバ装置がそのようなものである場合、本願発明の方法における第2過程から第4過程は、以下のようなものとすることができる。
前記第2過程では、前記特定情報を受付けた前記第1サーバ装置が、当該第1サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第1サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の一方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第1サーバ装置の前記サーバ装置演算部で演算することによって前記第1同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記第1同期情報を、前記特定ユーザ装置の一方がその前記ユーザ送受信部で受付けるとともに、前記特定情報を受付けた前記第1サーバ装置が、当該第1サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第1サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の他方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第1サーバ装置の前記サーバ装置演算部で演算することによって前記第1同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記特定ユーザ装置の一方に送られたものとは異なる前記第1同期情報を、前記特定ユーザ装置の他方がその前記ユーザ送受信部で受付ける。
平たく言うと、この場合の第2過程では、第1サーバ装置が、第1サーバ装置が生成した基礎情報と、特定ユーザ装置の一方で生成可能な解とに可逆的な演算を行うことによって生成された第1同期情報を特定ユーザ装置の一方に送るとともに、上記基礎情報と同じ基礎情報と、特定ユーザ装置の他方で生成可能な解とに可逆的な演算を行うことによって生成された第1同期情報を特定ユーザ装置の他方に送る。この場合、特定ユーザ装置の一方と他方が受取る第1同期情報は、同じ基礎情報に基づくものではあるが、異なる解による演算がなされたものなので、互いに異なるものとなる。
前記第3過程では、前記特定情報を受付けた前記第2サーバ装置が、当該第2サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第2サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の一方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第2サーバ装置の前記サーバ装置演算部で演算することによって前記第2同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記第2同期情報を、前記特定ユーザ装置の一方がその前記ユーザ送受信部で受付けるとともに、前記特定情報を受付けた前記第2サーバ装置が、当該第2サーバ装置の前記基礎情報生成部で生成した前記基礎情報と、当該第2サーバ装置の前記サーバ装置解生成部で生成した前記特定ユーザ装置の他方の前記ユーザ解生成部で生成可能な前記解とを用いて、当該第2サーバ装置の前記サーバ装置演算部で演算することによって前記第2同期情報を生成し、前記特定情報によって特定される前記特定ユーザ装置の一方に送信した前記特定ユーザ装置の一方に送られたものとは異なる前記第2同期情報を、前記特定ユーザ装置の他方がその前記ユーザ送受信部で受付ける。
第3過程は、第2過程と殆ど同じである。第1サーバ装置の代わりに第2サーバ装置が登場するのが、第2過程と第3過程の違いである。平たく言うと、この場合の第3過程では、第2サーバ装置が、第2サーバ装置が生成した基礎情報と、特定ユーザ装置の一方で生成可能な解とに可逆的な演算を行うことによって生成された第2同期情報を特定ユーザ装置の一方に送るとともに、上記基礎情報と同じ基礎情報と、特定ユーザ装置の他方で生成可能な解とに可逆的な演算を行うことによって生成された第2同期情報を特定ユーザ装置の他方に送る。この場合、特定ユーザ装置の一方と他方が受取る第2同期情報は、同じ基礎情報に基づくものではあるが、異なる解による演算がなされたものなので、互いに異なるものとなる。
前記第4過程では、前記特定ユーザ装置の一方が、前記第1サーバ装置から受付けた前記第1同期情報に対して、そのユーザ解生成部で生成された、当該第1同期情報を生成する際に前記第1サーバ装置で生成されたのと同じ前記解を用いて、前記第1サーバ装置の前記サーバ装置演算部で行われた演算の逆演算を行うことにより前記第1サーバ装置で前記第1同期情報を生成する際に生成された前記基礎情報を取り出すとともに、前記第2サーバ装置から受付けた前記第2同期情報に対して、そのユーザ解生成部で生成された、当該第2同期情報を生成する際に前記第2サーバ装置で生成されたのと同じ前記解を用いて、前記第2サーバ装置の前記サーバ装置演算部で行われた演算の逆演算を行うことにより前記第2サーバ装置で前記第2同期情報を生成する際に生成された前記基礎情報を取り出し、前記特定ユーザ装置の他方が、前記第1サーバ装置から受付けた前記第1同期情報に対して、そのユーザ解生成部で生成された、当該第1同期情報を生成する際に前記第1サーバ装置で生成されたのと同じ前記解を用いて、前記第1サーバ装置の前記サーバ装置演算部で行われた演算の逆演算を行うことにより前記第1サーバ装置で前記第1同期情報を生成する際に生成された前記基礎情報を取り出すとともに、前記第2サーバ装置から受付けた前記第2同期情報に対して、そのユーザ解生成部で生成された、当該第2同期情報を生成する際に前記第2サーバ装置で生成されたのと同じ前記解を用いて、前記第2サーバ装置の前記演算部で行われた演算の逆演算を行うことにより前記第2サーバ装置で前記第2同期情報を生成する際に生成された前記基礎情報を取り出す。そして、前記特定ユーザ装置の双方が、前記第1サーバ装置と前記第2サーバ装置がそれぞれ生成した、2つの共通の前記基礎情報に対して予め定めた所定の演算を行うことにより共通の前記初期解を得る。
平たく言うと、特定ユーザ装置の一方は、第1サーバ装置から受取った第1同期情報から、第1サーバ装置で生成された基礎情報を取り出し、また、第2サーバ装置から受取った第2同期情報から、第2サーバ装置で生成された基礎情報を取り出し、それら2つの基礎情報に対して所定の演算を行うことにより、初期解を生成する。上述したように、第1サーバ装置で生成された第1同期情報は、第1サーバ装置で生成された基礎情報に、特定ユーザ装置の一方で生成可能な解を用いて可逆的な演算を行ったものであるから、特定ユーザ装置の一方で生成可能な、可逆的な演算を行う際に第1サーバ装置で使われた解を用いて第1同期情報に対して第1サーバ装置で行われた演算の逆演算を行えば、特定ユーザ装置の一方は、第1同期情報から第1サーバ装置で生成された基礎情報を取出すことができる。同様に、特定ユーザ装置の一方は、第2同期情報から第2サーバ装置で生成された基礎情報を取出すことができる。そのようにして取り出した2つの基礎情報に対して所定の演算を行うことにより、特定ユーザ装置の一方は、初期解を得ることができる。
同様の処理を特定ユーザ装置の他方も行う。平たく言うと、特定ユーザ装置の他方は、第1サーバ装置から受取った第1同期情報から、第1サーバ装置で生成された基礎情報を取り出し、また、第2サーバ装置から受取った第2同期情報から、第2サーバ装置で生成された基礎情報を取り出し、それら2つの基礎情報に対して所定の演算を行うことにより、初期解を生成する。特定ユーザ装置の他方が、第1サーバ装置から受取った第1同期情報から、第1サーバ装置で生成された基礎情報を取り出すことが可能であり、また、第2サーバ装置から受取った第2同期情報から、第2サーバ装置で生成された基礎情報を取り出すことが可能な理由は、特定ユーザ装置の一方でそれらが可能な理由と同じである。そして、特定ユーザ装置の他方は、それら2つの基礎情報に対して所定の演算を行い、初期解を得る。特定ユーザ装置の他方が第1同期情報と第2同期情報とからそれぞれ取り出した、第1サーバ装置で生成された基礎情報、及び第2サーバ装置で生成された基礎情報は、特定ユーザ装置の一方で取り出された、第1サーバ装置で生成された基礎情報、及び第2サーバ装置で生成された基礎情報と同じであるから、そのようにして取り出した2つの基礎情報に対して所定の演算を行うことにより、特定ユーザ装置の他方が得た初期解は、特定ユーザ装置の一方が得た初期解と同じものとなる。
【0014】
サーバ装置がサーバ装置演算部を持つとき、サーバ装置演算部で行われる演算は、上述したように可逆的なものでなければならない。さもなくば、ユーザ装置が第1同期情報又は第2同期情報から、基礎情報を取り出せないからである。サーバ装置演算部で行われる可逆的な演算の例は、基礎情報と解の排他的論理和を取ること、或いは基礎情報と解の積を取ることである。
また、サーバ装置がサーバ装置解生成部を持つとき、前記ユーザ解生成部で生成される解と、前記サーバ装置解生成部で生成される解とが常に、前記基礎情報生成部で生成される基礎情報と同じかそれより大きな情報量を持っても良い。これは、特に、サーバ装置演算部で行われる可逆的な演算が、基礎情報と解の排他的論理和を取ることである場合に次のような大きな効果を生じる。
サーバ装置において、基礎情報と解に対して行われる演算は、上述のように、排他的論理和の演算である場合がある。排他的論理和の演算は、暗号化通信の一種であるバーナム暗号やワンタイムパッド暗号で使用されている。そして、これらバーナム暗号等は、ある一定の条件を満たす場合には、完全に解読不可能であることが数学的に証明されている。その条件は、「隠したい文字列と同じだけの情報量を持つ乱数で、隠したい文字列に対して排他的論理和の演算を行うこと」である。
第1サーバ装置が、特定ユーザ装置である2つのユーザ装置に第1同期情報を送る際に隠したい情報は、第1サーバ装置が生成した基礎情報である。同様に、第2サーバ装置が、特定ユーザ装置である2つのユーザ装置に第2同期情報を送る際に隠したい情報は、第2サーバ装置が生成した基礎情報である。第1サーバ装置は、特定ユーザ装置の双方と、同じ解を生成することができる。第2サーバ装置も同様である。したがって、第1サーバ装置、第2サーバ装置、及び2つの特定ユーザ装置で生成される解を、バーナム暗号等でいうところの乱数として用いれば、第1サーバ装置で生成される第1同期情報は、完全に解読不可能に暗号化された状態となり、第2サーバ装置で生成される第2同期情報は、完全に解読不可能に暗号化された状態となる。したがって、仮に、悪意の第三者が第1同期情報や第2同期情報を得たとしても、それらに内包された正しい基礎情報を知り得ないということになる。特に、第1サーバ装置或いはその管理者が第2同期情報を入手したとしても、第1サーバ装置或いはその管理者は第2同期情報に内包された第2サーバ装置で生成された基礎情報を知ることができず、第2サーバ装置或いはその管理者が第1同期情報を入手したとしても、第2サーバ装置或いはその管理者は第1同期情報に内包された第1サーバ装置で生成された基礎情報を知ることができないことになる。もちろん、第1同期情報と第2同期情報は、更に暗号化された状態で特定ユーザ装置へ送られても良いが、第1サーバ装置と特定ユーザ装置間の、或いは第2サーバ装置と特定ユーザ装置間の暗号化通信が破られたとしても、基礎情報が、或いは2つの基礎情報によって生成される特定ユーザ装置間で使用される初期解が漏洩することがなくなる。
つまり、この方法によれば、第1サーバ装置の管理者と第2サーバ装置の管理者とが共謀するという人的な理由以外の理由で、特定ユーザ装置間で使用される初期解が漏洩する可能性が理論的には無くなる。
【0015】
本願発明者は、本願発明の方法を実行することができるユーザ装置をも、本願発明の一態様として提案する。かかるユーザ装置の効果は、本願発明の方法の効果に等しい。
一例となるユーザ装置は、ネットワークを介して互いに通信可能とされた、3つ以上のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続された2つ以上のサーバ装置と、を含んでなる通信システムを、2つ以上の前記サーバ装置との組合せによって構成するユーザ装置である。
このユーザ装置は、初期解に基づいて、文字、数字、記号の少なくとも1つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成部と、送信の対象となる送信対象データを、前記ユーザ解生成部で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化部と、前記ネットワークを介しての送受信を行うユーザ送受信部と、前記ユーザ送受部で信受信した前記暗号化データを、前記ユーザ解生成部で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化部と、を有している。
そして、ユーザ装置は、暗号化通信を行おうとしている2つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、2つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成部でそれぞれ生成することにより、相手方の前記ユーザ暗号化部で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送受信部から送られてきて自らの前記ユーザ送受信部により受取ったものを、自らの前記ユーザ復号化部によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっている。
また、ユーザ装置は、前記ユーザ装置が前記特定ユーザ装置となるとき、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの1つである第1サーバ装置へ送信するとともに、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの他の1つである第2サーバ装置へ送信することと、前記特定情報を受付けた前記第1サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である前記サーバ装置ごとにユニークな同期情報である第1同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、前記特定情報を受付けた前記第2サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記同期情報である第2同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、前記ユーザ装置のそれぞれが、前記第1同期情報と前記第2同期情報とを用いて予め定めた所定の演算を行うことにより共通の前記初期解を得ることと、を実行するようになっている。
【0016】
本願発明者は、本願の方法を所定のコンピュータで実行できるようにするためのコンピュータプログラムをも、本願発明の一態様として提案する。かかるコンピュータプログラムの効果は、本願発明による方法の効果と等しく、また、所定の(例えば、汎用の)コンピュータに本願発明の方法を実施させられるようにすることも、その効果の一つである。
一例となるコンピュータプログラムは、ネットワークを介して互いに通信可能とされた、3つ以上のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続された2つ以上のサーバ装置と、を含んでなる通信システムを、2つ以上の前記サーバ装置との組合せによって構成するユーザ装置として所定のコンピュータを機能させるためのコンピュータプログラムである。
前記コンピュータプログラムは、前記コンピュータを、初期解に基づいて、文字、数字、記号の少なくとも1つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成部と、送信の対象となる送信対象データを、前記ユーザ解生成部で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化部と、前記ネットワークを介しての送受信を行うユーザ送受信部と、前記ユーザ送受部で信受信した前記暗号化データを、前記ユーザ解生成部で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化部と、して機能させるためのものである。
また、そのコンピュータプログラムは、暗号化通信を行おうとしている2つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、2つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成部でそれぞれ生成することにより、相手方の前記ユーザ暗号化部で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送受信部から送られてきて自らの前記ユーザ送受信部により受取ったものを、自らの前記ユーザ復号化部によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようするためのコンピュータプログラムである。
そして、そのコンピュータプログラムは、前記ユーザ装置が前記特定ユーザ装置となるとき、前記特定ユーザ装置に、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの1つである第1サーバ装置へ送信するとともに、前記特定ユーザ装置のいずれかが、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送受信部により前記サーバ装置のうちの他の1つである第2サーバ装置へ送信することと、前記特定情報を受付けた前記第1サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である前記サーバ装置ごとにユニークな同期情報である第1同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、前記特定情報を受付けた前記第2サーバ装置が生成し、前記特定情報によって特定される前記特定ユーザ装置の双方に送信した、前記同期情報である第2同期情報を、前記特定ユーザ装置それぞれの前記ユーザ送受信部で受付けることと、前記ユーザ装置のそれぞれが、前記第1同期情報と前記第2同期情報とを用いて予め定めた所定の演算を行うことにより共通の前記初期解を得ることと、を実行させるためのコンピュータプログラムである。
【図面の簡単な説明】
【0017】
図1】この実施形態による通信システムの全体構成を示す図。
図2図1に示した通信システムに含まれるユーザ装置の外観を示す図。
図3図1に示した通信システムに含まれるユーザ装置のハードウェア構成を示す図。
図4図1に示した通信システムに含まれるユーザ装置の内部に生成される機能ブロックを示すブロック図。
図5図1に示した通信システムに含まれるサーバ装置の内部に生成される機能ブロックを示すブロック図。
図6図1に示した通信システムで通信が行われるときに実行される処理の流れを示す図。
図7】変形例2の通信システムにおけるサーバ装置とユーザ装置の管理関係と、サーバ装置間での暗号化通信の可否を概念的に示す図。
【発明を実施するための形態】
【0018】
以下、本発明の好ましい実施形態とその変形例について説明する。
なお、実施形態及びその変形例の説明では、共通の対象には重複する符号を付すものとし、且つ共通する説明は場合により省略するものとする。また、各実施形態及びそれらの変形例は、それらを組合せ或いはそれらの一部同士を置換することに特に矛盾することがない場合には、それらの2つ或いはそれ以上を適宜組合せ或いはそれらの一部を適宜置換することが可能である。
【0019】
図1に、本願発明の送受信システムの実施形態としての通信システムの全体構成を概略で示す。
この実施形態の通信システムは、多数のユーザ装置100-1~100-N(以後、単に、「ユーザ装置100」と記載する場合もある。)、及び複数のサーバ装置200-1~200-n(以後、単に、「サーバ装置200」と記載する場合もある。)を含んで構成されている。これらはすべて、ネットワーク400に接続可能とされている。ユーザ装置100は少なくとも3つ以上存在し、サーバ装置200は少なくとも2つ以上存在する。また、サーバ装置200は一般に、ユーザ装置100よりもその数は圧倒的に少ない。
ネットワーク400は、これには限られないが、この実施形態ではインターネットである。
この実施形態におけるユーザ装置100は、本願でいうユーザ装置に相当するものである。また、この実施形態におけるサーバ装置200は本願でいうサーバ装置に相当する。
ユーザ装置100-1~100-Nは、それらのうちの2つが互いに通信を行うことを前提としている。ユーザ装置100-1~100-Nは各ユーザが所有するものとされる。この実施形態ではその通信は後述するような、連続して発生させられる解を用いた暗号化通信であるものとするが、ユーザ装置100-1~100-Nは、そのような暗号化通信に加えて暗号化通信以外の平文での通信を行えるようになっていてももちろん構わない。かかる暗号化通信以外の通信は公知又は周知の技術によって実現すれば良い。ユーザ装置100は、他のユーザ装置100にネットワーク400を介してホームページを閲覧させるためのコンピュータであってもよい。
各サーバ装置200は、すべてのユーザ装置100を管理していても良いが、ユーザ装置100の一部ずつを管理していても構わない。これには限られないが、この実施形態では、すべてのサーバ装置200は、すべてのユーザ装置100を管理しているものとする。「管理」というのは、管理対象となるユーザ装置100と共通した解を生成できる、或いは、ユーザ装置100に対して同期情報(第1同期情報又は第2同期情報)を送信することができる、という意味である。これらの点については後述する。
これには限られないが、この実施形態におけるサーバ装置200は、ある程度の公的な性質を有する企業、例えば、SSLやTSLにおける認証局となれる程度の信用を持っている企業、或いは公的な団体が管理するものとすることができる。或いは、サーバ装置200は、ユーザ装置100がネットワーク400に接続する場合においてそのネットワーク400への接続をなすプロバイダや、ユーザ装置100が例えばスマートフォンであれば、携帯電話キャリアがその管理を行うものとなっていてもよい。
ユーザ装置100は、コンピュータを含んでいる。より詳細には、この実施形態におけるユーザ装置100は、汎用のコンピュータにより構成されている。
【0020】
次に、ユーザ装置100の構成を説明する。各ユーザ装置100-1~100-Nの構成は、本願発明との関連でいえば同じである。
ユーザ装置100は、携帯電話、スマートフォン、タブレット、ノート型パソコン、デスクトップ型パソコン等である。ユーザ装置100はすべて、ネットワーク400を介しての通信が可能なものであることが必要であり、また、後述するコンピュータプログラムをインストールすることによって後述する機能ブロックをその内部に生成し、そして後述する処理を実行できるものであることも求められる。もっともそれらが可能であるのであれば、ユーザ装置100のそれ以外の仕様は特に問わない。
例えば、ユーザ装置100がスマートフォンかタブレットなのであれば、スマートフォンとしてのユーザ装置100は例えば、Apple Japan合同会社が製造、販売を行うiPhoneシリーズの製品で良いし、タブレットとしてのユーザ装置100は例えば、Apple Japan合同会社が製造、販売を行うiPadシリーズの製品でよい。以下、これには限られないが、ユーザ装置100がスマートフォンであることとして話を進める。
【0021】
ユーザ装置100の外観の一例を図2に示す。
ユーザ装置100は、ディスプレイ101を備えている。ディスプレイ101は、静止画又は動画を表示するためのものであり、公知、或いは周知のものを用いることができる。ディスプレイ101は例えば、液晶ディスプレイである。ユーザ装置100は、また入力装置102を備えている。入力装置102は、ユーザが所望の入力をユーザ装置100に対して行うためのものである。入力装置102は、公知或いは周知のものを用いることができる。この実施形態におけるユーザ装置100の入力装置102はボタン式のものとなっているが、これには限られず、テンキー、キーボード、トラックボール、マウスなどを用いることも可能である。特に、ユーザ装置100がノート型パソコン、デスクトップ型パソコンである場合には、入力装置102はキーボードや、マウス等になるであろう。また、ディスプレイ101がタッチパネルである場合、ディスプレイ101は入力装置102の機能を兼ねることになり、この実施形態ではそうされている。
【0022】
ユーザ装置100のハードウェア構成を、図3に示す。
ハードウェアには、CPU(central processing unit)111、ROM(read only memory)112、RAM(random access memory)113、インターフェイス114が含まれており、これらはバス116によって相互に接続されている。
CPU111は、演算を行う演算装置である。CPU111は、例えば、ROM112、或いはRAM113に記録されたコンピュータプログラムを実行することにより、後述する処理を実行する。図示をしていないが、ユーザ装置100は、HDD(hard disk drive)その他の大容量記録装置を備えていてもよく、コンピュータプログラムは大容量記録装置に記録されていても構わない。
ここでいうコンピュータプログラムには、本願発明のユーザ装置としてこのユーザ装置100を機能させるためのコンピュータプログラムが少なくとも含まれる。このコンピュータプログラムは、ユーザ装置100にプリインストールされていたものであっても良いし、ポストインストールされたものであっても良い。このコンピュータプログラムのユーザ装置100へのインストールは、メモリカード等の所定の記録媒体を介して行なわれても良いし、LAN或いはインターネットなどのネットワークを介して行なわれても構わない。
ROM112は、CPU111が後述する処理を実行するために必要なコンピュータプログラムやデータを記録している。ROM112に記録されたコンピュータプログラムとしては、これに限られず、ユーザ装置100がスマートフォンであれば、ユーザをスマートフォンとして機能させるために必要な、例えば、通話や電子メールを実行するためのコンピュータプログラムやデータが記録されている。ユーザ装置100は、また、ネットワーク400を介して受取ったデータに基づいて、ホームページを閲覧することも可能とされており、それを可能とするための公知のwebブラウザを実装している。
RAM113は、CPU111が処理を行うために必要なワーク領域を提供する。場合によっては、上述のコンピュータプログラムやデータが記録されていてもよい。
インターフェイス114は、バス116で接続されたCPU111やRAM113等と外部との間でデータのやり取りを行うものである。インターフェイス114には、上述のディスプレイ101と、入力装置102とが接続されている。入力装置102から入力された操作内容は、インターフェイス114からバス116に入力されるようになっている。また、周知のようにディスプレイ101に画像を表示するための画像データは、インターフェイス114から、ディスプレイ101に出力されるようになっている。
インターフェイス114は、また、インターネットであるネットワーク400を介して外部と通信を行うための公知の手段である送受信機構(図示を省略)に接続されており、それにより、ユーザ装置100は、ネットワーク400を介してデータを送信することと、ネットワーク400を介してデータを受信することとが可能になっている。かかるネットワーク400を介してのデータの送受信は、有線で行われる場合もあるが無線で行われる場合もある。例えば、ユーザ装置100がスマートフォンである場合には、かかる通信は無線で行われるのが通常であろう。それが可能な限り、送受信機構の構成は、公知或いは周知のものとすることができる。送受信機構がネットワーク400から受取ったデータは、インターフェイス114により受取られるようになっており、インターフェイス114から送受信機構にわたされたデータは、送受信機構によって、ネットワーク400を介して外部、例えば、他のユーザ装置100かサーバ装置200に送られるようになっている。送受信機構がネットワーク400から受取るデータとしては、少なくともサーバ装置200から送られてきた同期情報(第1同期情報及び第2同期情報)と、他のユーザ装置100から送られてきた暗号化データがある。送受信機構から外部に送られるデータとしては、少なくともサーバ装置200に送られる特定情報と、他のユーザ装置100に送られる暗号化データがある。
【0023】
CPU111がコンピュータプログラムを実行することにより、ユーザ装置100内部には、図4で示されたような機能ブロックが生成される。なお、以下の機能ブロックは、ユーザ装置100を本願発明のユーザ装置として機能させるための上述のコンピュータプログラム単体の機能により生成されていても良いが、上述のコンピュータプログラムと、ユーザ装置100にインストールされたOSその他のコンピュータプログラムとの協働により生成されても良い。
ユーザ装置100内には、本願発明の機能との関係で、入力部121、主制御部122、ユーザ解生成部123、ユーザ解記録部124、ユーザ初期解生成部125、ユーザ暗号化復号化部126、出力部127が生成される。なお、以上の入力部121、主制御部122、ユーザ解生成部123、ユーザ解記録部124、ユーザ初期解生成部125、ユーザ暗号化復号化部126、出力部127の機能は、ユーザ装置100が例えばスマートフォン等のSIMカードを有するものである場合には、ユーザ装置100に内蔵されたSIMカード上に存在していても構わない。その場合、それらの機能は、ユーザ装置100にインストールされたコンピュータプログラムによって生成されるものとは限らない。
【0024】
入力部121は、インターフェイス114からの入力を受取るものである。
インターフェイス114からの入力には、例えば、入力装置102によって入力された特定情報がある。特定情報は、暗号化通信をこれから行おうとする2つのユーザ装置100(本願発明における特定ユーザ装置)を特定するためのものである。通信を自分から行う側のユーザ装置100に関する特定情報は、すべてのユーザ装置100についてユニークな情報であることが最低限必要とされ、例えば、ユーザ装置100のIPアドレス、電子メールアドレス、URL、SNS(social networking service)のID等であり、通信を受ける側のユーザ装置100についても同様である。この実施形態では、これには限られないが、特定ユーザ装置である2つのユーザ装置100の双方をともにIPアドレスで特定するものとする。なお、この実施形態ではこれには限られないが、ユーザが入力装置102を操作して暗号化通信をこれから行おうとする相手方のユーザ装置100を特定する情報を入力すると、そのユーザ装置100のIPアドレスと相手方のユーザ装置100のIPアドレスの双方を特定する特定情報が自動的に生成されるようになっている。これに代えて、ユーザが暗号化通信を行う2つのユーザ装置100のIPアドレスの双方を入力装置102に入力することによって、特定情報が生成されるようになっていても構わない。
また、ユーザは、入力装置102を操作することにより、特定情報を送信する先のサーバ装置200を特定するためのサーバ識別子のデータを生成することができる。各サーバ装置200には、ユーザ装置100と同様に、各サーバ装置200を識別するための各サーバ装置200毎にユニークなサーバ識別子が振られており、ユーザは、そのサーバ装置200を入力乃至選択することにより、特定情報の送信先となるサーバ装置200を選択することが可能となっている。サーバ識別子は例えば、各サーバ装置200のIPアドレスである。
また、ユーザは、入力装置102を操作することにより、送信対象データを生成或いは指定することができる。かかる送信対象データは、ユーザ装置100間で暗号化した状態で送受信される場合における送受信の対象となるデータである。例えば、かかる送受信が電子メールの送受信である場合には、そのデータは電子メールのデータになるし、一方のユーザ装置100がインターネット上の仮想店舗のホームページを提供するものであって他方のユーザ装置100がその仮想店舗で商品を購入しようとする顧客である場合には、仮想店舗のユーザ装置100側から顧客に送られるデータは、例えば、商品の選択画面や、顧客情報、送付先情報等の記載を顧客に行わせるためのフォーマットを顧客のユーザ装置100に提供するためのデータであり、顧客のユーザ装置100側から仮想店舗のユーザ装置100に送られるデータは、顧客が購入対象として選択した商品及びその数量を特定する情報であったり、上述の如きフォーマットに顧客が記入を行った顧客情報、送付先情報であったりする。送信対象データは、テキストデータ、画像データ、音声データ等その形式を問わない。送信対象データは、ユーザが入力装置102を操作して入力したデータそのものである必要はなく、それに対してユーザ装置100が所定の処理を行うことによって作られたデータであってもよく、むしろその方が通常である。
入力部121にインターフェイス114から入力されるものとしては他に、送受信機構からインターフェイス114に送られてくる、上述した同期情報(第1同期情報及び第2同期情報)と暗号化データがある。
以上のように、入力部121には、入力装置102から入力されるものとして特定情報と、送信対象データが、送受信機構から入力されるものとして、同期情報と、暗号化データが入力されることになる。
入力部121は、これらを受取ると、特定情報と同期情報を受取った場合には、それらを主制御部122へ、送信対象データと暗号化データを受取った場合にはそれらをユーザ暗号化復号化部126へと、それぞれ送るようになっている。
【0025】
主制御部122は、ユーザ装置100内に生成された各機能ブロック全体の制御を行うものである。
主制御部122は、入力部121から特定情報とサーバ識別子とを受取る場合がある。特定情報とサーバ識別子を受取った場合、主制御部122はそれらを出力部127に送るようになっている。
主制御部122は、同期情報を受取る場合がある。同期情報を受取った場合、主制御部122は、その同期情報をユーザ初期解生成部125に送るようになっている。
【0026】
ユーザ解生成部123は、解を生成するものである。解の生成の仕方については後述するが、この実施形態における解は、文字、数字、記号の少なくとも1つを所定数羅列したものであり、また、初期解に基いて、同じ条件下で生成されたものが常に同じものとなるようにされている。典型的には、解は擬似乱数であり、各解はこの実施形態では、その桁数乃至文字数が常に一定となるようにして生成されるようになっている。多数生成される解の持つ情報量は、常に一定である。
ユーザ解生成部123が解を生成するのは、まず、ユーザ暗号化復号化部126が後述するが如き暗号化の処理、又は復号化の処理を行う場合である。ユーザ暗号化復号化部126が暗号化の処理又は復号化の処理を行う場合というのは、このユーザ装置100が、他のユーザ装置100と暗号化通信を行うときであるが、その詳細は後に譲る。ユーザ解生成部123は、ユーザ装置100間での暗号化通信のために作られた解を、ユーザ暗号化復号化部126に送るようになっている。
また、ユーザ装置100におけるユーザ解生成部123は、同期情報(第1同期情報、及び第2同期情報)がユーザ初期解生成部125に送られた場合においても、解を生成する場合がある。このときに生成される解は、暗号化通信に用いられる初期解を生成する目的で生成される。暗号化通信に用いられる初期解を生成する目的で生成された解は、ユーザ解生成部123からユーザ初期解生成部125へと送られるようになっている。
【0027】
ユーザ解記録部124は、ユーザ解生成部123が解を生成する場合に必要となる情報が記録されている。ユーザ解記録部124に記録されることがあるデータは、真初期解のデータと初期解のデータである。
真初期解は、ユーザ装置100とサーバ装置200とが同期した状態での解の生成を行うために使用される、初期解である。初期解は、ユーザ装置100が他のユーザ装置100と暗号化通信を行う際に使用される、つまり、あるユーザ装置100と他のユーザ装置100とが同期した状態での解の生成を行うために使用されるものである。真初期解のデータ及び初期解のデータはともに、後に生成される解に影響を与えるものである。真初期解、及び初期解のデータは、解のデータと同じ形式、即ち、文字、数字、記号の少なくとも1つを所定数羅列したものであって、その桁数乃至文字数が解と同数であるものである場合もあるし、そうでない場合もある。この実施形態ではこれには限られないが、真初期解、及び初期解のデータは解のデータと同じ形式で、真初期解、及び初期解は解と同じ桁数乃至文字数とされている。
これには限られないがこの実施形態における各ユーザ装置100は、すべてのサーバ装置200と、同期した状態での解の生成を行えるようになっている。それ故、各ユーザ装置100は、各サーバ装置200が備えるそのユーザ装置100用の真初期解と同じ真初期解を、初期状態で有している。つまり、ユーザ解記録部124には、初期状態において、サーバ装置200の数と同数の真初期解が記録されている。各真初期解は、その真初期解がどのサーバ装置200が持つ真初期解であるのかを明らかにするために、各サーバ装置200毎にユニークな各サーバ装置200を識別するためのサーバ識別子と紐付けた状態で、ユーザ解記録部124に記録されている。
ユーザ解記録部124には、初期解が記録される場合もある。初期解は、後述するようにして、特定ユーザ装置である2つのユーザ装置100の双方で生成される。つまり、初期解の生成の処理が実行される以前においては、そもそも初期解が存在していないため、かかる処理が実行される以前においては、初期解はユーザ解記録部124には記録されていない。初期解が生成されたら初期解はユーザ解記録部124に記録されるが、そのとき、その初期解がどのユーザ装置100と共有される初期解であるのかを明らかにするために、各ユーザ装置100毎にユニークな各ユーザ装置100を識別するための識別子である例えば各ユーザ装置100のIPアドレスと紐付けた状態で、ユーザ解記録部124に記録されている。
真初期解のデータ、初期解のデータともに、後述するようにして更新される場合もあり得る。
ユーザ解生成部123は、解を生成する場合、ユーザ解記録部124に記録されているデータの中から、必要なデータを読み出しそれを用いて解を生成する。
ユーザ解生成部123は、ユーザ装置100とサーバ装置200とが同期して解を発生させることが必要になった場合には、真初期解か、後述する解を読み出してこれを行う。少なくとも最初の解を生成する場合、ユーザ解生成部123は、ユーザ解記録部124に記録されている真初期解のデータや必要に応じてその他のデータを用いる。
他方、ユーザ解生成部123は、ユーザ装置100同士が解を同期しての暗号化通信を行うにあたり両ユーザ装置100で同期した解を発生させる場合には、原則としてユーザ解記録部124に記録されている初期解のデータを読み出してこれを行う。
ユーザ解生成部123での解の生成方法の詳細については追って詳述することとする。
【0028】
ユーザ初期解生成部125は、同期情報を用いて、特定ユーザ装置たる2つのユーザ装置100が解を同期させての暗号化通信を行う場合において必要になる初期解を生成するためのものである。生成される初期解は、上述のように、ユーザ装置100同士が解を同期しての暗号化通信を行うにあたり両ユーザ装置100で同期した初期解を発生させるために用いられる。
上述したようにユーザ初期解生成部125には、主制御部122から、同期情報が送られてくる場合がある。かかる同期情報を受取った場合には、ユーザ初期解生成部125は、当該同期情報に基いて初期解を生成するようになっている。初期解を生成する際に、ユーザ初期解生成部125はユーザ解生成部123が生成した解を必要とする場合がある。かかる解は、サーバ装置200で生成された解と同期した解である。ユーザ初期解生成部125が解を必要とした場合には、ユーザ初期解生成部125は、ユーザ解生成部123に対して解を生成せよとの指示を送る。
かかる指示を受取ったユーザ解生成部123は、解を生成し、それをユーザ初期解生成部125に送るようになっている。
【0029】
ユーザ暗号化復号化部126は、暗号化と復号化の処理の少なくとも一方を行うものであり、これには限られないが、この実施形態では暗号化と復号化の処理の双方を行うものとされている。かかる暗号化と復号化は、ユーザ装置100同士で暗号化通信を行うために必要な処理である。
ユーザ暗号化復号化部126が暗号化、及び復号化の処理を行うのは、主制御部122から、暗号化、復号化を行って良いとの許可があったときのみである。
暗号化の方法の詳細は後述するが、暗号化を行う場合ユーザ暗号化復号化部126は、ユーザ解生成部123に対して解を生成せよとの指示を送る。ユーザ解生成部123は当該指示に基いて解を生成し、それをユーザ暗号化復号化部126に送る。その解がユーザ暗号化復号化部126における暗号化に用いられる。これには限られないが、この実施形態で暗号化されるデータは、入力装置102から入力されたデータに基いて生成された送信対象データである。入力装置102で生成された送信対象データは平文のデータであるが、それがユーザ暗号化復号化部126で暗号化された結果暗号化データになる。ユーザ暗号化復号化部126で生成された暗号化データは、出力部127に送られるようになっている。
復号化の方法の詳細は後述するが、復号化を行う場合ユーザ暗号化復号化部126は、ユーザ解生成部123に対して解を生成せよとの指示を送る。ユーザ解生成部123は当該指示に基いて解を生成し、それをユーザ暗号化復号化部126に送る。その解がユーザ暗号化復号化部126における復号化に用いられる。これには限られないが、この実施形態で復号化されるデータは、他のユーザ装置100から送られてきた暗号化データである。暗号化データは、それを送ってきたユーザ装置100におけるユーザ暗号化復号化部126で生成されたものであり、それがユーザ暗号化復号化部126で復号化された結果、元の送信対象データに戻る。ユーザ暗号化復号化部126で生成された平文の送信対象データは、出力部127に送られるようになっている。
【0030】
出力部127は、ユーザ装置100内の機能ブロックで生成されたデータをインターフェイス114に出力するものである。
出力部127には、上述のように主制御部122から特定情報とサーバ識別子とが送られてくる場合がある。出力部127は、かかる特定情報とサーバ識別子とを、インターフェイス114に出力する。この特定情報は、インターフェイス114から送受信機構に送られ、送受信機構から、ネットワーク400を介してサーバ識別子で特定されるサーバ装置200に送られるようになっている。
出力部127にはまた、ユーザ暗号化復号化部126から、暗号化データが送られてくる場合がある。暗号化データを受取った場合には、出力部127は、その暗号化データを、インターフェイス114に出力する。この暗号化データは、インターフェイス114から送受信機構に送られ、送受信機構から、ネットワーク400を介して暗号化通信の相手側となる他のユーザ装置100に送られるようになっている。
出力部127にはまた、ユーザ暗号化復号化部126から、平文の送信対象データが送られてくる場合がある。この送信対象データは、他のユーザ装置100で生成されたものである。送信対象データを受取った場合には、出力部127は、その送信対象データを、インターフェイス114に出力する。送信対象データは、ユーザ装置100内で適当に利用されるが、例えばディスプレイ101に送られ、それを受取ったディスプレイ101に送信対象データに応じた表示を行わせるようになっている。
【0031】
次に、サーバ装置200の構成について説明する。
サーバ装置200は、ハードウェアとして見た場合には、既存の公知又は周知のサーバ装置で構わない。また、そのハードウェア構成も一般的なものでよく、図示を省略するが、大雑把に言えば、CPU111、ROM112、RAM113、インターフェイス114をバス116で接続するという、ユーザ装置100のハードウェア構成を踏襲することができる。もっとも、サーバ装置200は通常、HDDその他の大容量記録装置を有するのが一般的であろうし、この実施形態でもそうなっている。
サーバ装置200が備えるCPU、ROM、RAM、インターフェイス、バス、及び大容量記録装置の構成、機能は、ユーザ装置100におけるそれらの構成、機能と変わらない。また、サーバ装置200が備えるインターフェイスには、ユーザ装置100が備えていたのと同様の、サーバ装置200外の機器とネットワーク400を介しての通信を行うための送受信機構が接続されている。サーバ装置200が備えるインターフェイスには、ユーザ装置100が備えていたのと同様のディスプレイ、入力装置が接続されていても構わないが、本願とはあまり関係がないのでその説明は省略する。
【0032】
サーバ装置200の内部におけるROM、大容量記録装置等に記録されていたコンピュータプログラムを実行することによって、サーバ装置200の内部には以下に説明するような機能ブロックが生成される。なお、以下の機能ブロックは、サーバ装置200を本願発明のサーバ装置として機能させるためのコンピュータプログラム単体の機能により生成されていても良いが、かかるコンピュータプログラムと、サーバ装置200にインストールされたOSその他のコンピュータプログラムとの協働により生成されても良い。また、上記コンピュータプログラムは、サーバ装置200にプリインストールされたものでもよいが、出荷後のサーバ装置200にインストールされたものでもあってもよい。その場合、上記コンピュータプログラムのサーバ装置200へのインストールは、メモリカード等の所定の記録媒体を介して行なわれても良いし、LAN或いはインターネットなどのネットワークを介して行なわれても構わない。これらの事情は、ユーザ装置100の場合と同様である。
サーバ装置200内には、本願発明の機能との関係で、入力部221、主制御部222、サーバ装置解生成部223、サーバ装置解記録部224、同期情報生成部225、出力部227、及び基礎情報生成部228が生成される(図5)。
【0033】
入力部221は、インターフェイスからの入力を受取るものである。
インターフェイスからの入力には、例えば特定情報がある。特定情報は、ユーザ装置100からネットワーク400を介して送られてきたものであり、サーバ装置200がその送受信機構で受取ったものである。入力部221は、特定情報を受取った場合には、それらを主制御部222に送るようになっている。
【0034】
主制御部222は、サーバ装置200内に生成された各機能ブロック全体の制御を行うものである。
主制御部222は、入力部221から特定情報のデータを受取る場合がある。特定情報のデータを受取った場合、主制御部222は、当該データを同期情報生成部225に送るようになっている。
【0035】
サーバ装置解生成部223は、解を生成せよとの指示を受取った場合に解を生成するものである。サーバ装置解生成部223は、解を生成せよとの指示を、後述するように、同期情報生成部225から受取る場合があり、そのような指示を受取った場合に解を生成するようになっている。その場合に生成される解は2つである。
解の生成の仕方については後述するが、サーバ装置解生成部223が実行する解の生成は、各ユーザ装置100のユーザ解生成部123が実行する解の生成と同じ方法とされる。
サーバ装置解生成部223は、解を生成する場合、サーバ装置解記録部224に記録されているデータの中から、必要なデータを読み出しそれを用いて解を生成する。
サーバ装置解記録部224には、サーバ装置解生成部223が解を生成する場合に必要となる情報が記録されている。かかる情報は、主に真初期解のデータである。真初期解のデータは、各ユーザ装置100のユーザ解記録部124に記録される真初期解のデータと同じものである。真初期解は、解を生成する場合に用いられるが、これには限られないがこの実施形態におけるサーバ装置200はすべてのユーザ装置100(ユーザ装置100-1~ユーザ装置100-N)と同期した解を生成する必要があるから、少なくとも1つも解が生成されていない状態では、サーバ装置解記録部224には、ユーザ装置100の数と同じ数の、N個の真初期解が記録されている。また、各真初期解は、どの真初期解がどのユーザ装置100に対応する真初期解であるかをサーバ装置解生成部223が把握する必要があるため、各真初期解は、各ユーザ装置100を特定するための情報と一対一で紐付けられた状態で、サーバ装置解記録部224に記録されている。各ユーザ装置100を特定するための情報は、特定情報に含まれうる各ユーザ装置100にユニークな情報であり、これには限られないがこの実施形態では、各ユーザ装置100のIPアドレスである。
サーバ装置200におけるサーバ装置解生成部223は、ユーザ装置100とサーバ装置200とが同期して解を発生させることが必要になった場合には、特定情報で特定される2つのユーザ装置100のIPアドレスと紐付けられた真初期解を読み出してこれを行う。少なくとも最初の解を生成する場合、サーバ装置解生成部223は、サーバ装置解記録部224に記録されている真初期解のデータを用い、必要に応じてその他のデータを用いる。
サーバ装置解生成部223は、上述のように同期情報生成部225から、解を生成せよとの指示を受ける場合があるが、その場合には特定情報に含まれていた、2つの特定ユーザ装置を特定するための情報である2つのIPアドレスをも同期情報生成部225から受取るようになっている。同期情報生成部225から2つのIPアドレスを受取った場合、サーバ装置解生成部223はそれら2つのIPアドレスのそれぞれと紐付けられた2つの真初期解又は解をサーバ装置解記録部224から読み出すようになっている。そして、サーバ装置解生成部223は、読み出したそれら真初期解を用いて、新たな2つの解を生成するようになっている。かかる真初期解に基いて、それに続く解は生成されることになる。詳細は後に譲るが、これにより、サーバ装置解生成部223は、各ユーザ装置100における各ユーザ解生成部123が生成する解と同じ解を生成することができるようになっている。つまり、サーバ装置200で生成される解と、ユーザ装置100で生成される解とは、互いに同期したものとなるようになっている。
サーバ装置解生成部223が生成した2つの解は、同期情報生成部225に送られるようになっている。
【0036】
基礎情報生成部228は、基礎情報を生成するものである。基礎情報は、後述するように、ユーザ装置100で初期解を生成するために用いられる情報である。基礎情報生成部228は、後述するように、同期情報生成部225から基礎情報を生成せよとの指示を受ける場合があり、それを受けた場合に基礎情報を生成する。
この実施形態では、基礎情報は、解と同様に、文字、数字、記号の少なくとも1つを所定数羅列したものである。基礎情報は、解の桁数乃至文字数と同じかそれよりも少ない桁数乃至文字数とされ、解よりもその情報量が小さくされる。これには限られないが、この実施形態では、基礎情報を構成する文字、数字、記号の桁数乃至文字数は、解の文字、数字、記号の桁数乃至文字数と同じである。基礎情報生成部228が生成する基礎情報は、これには限られないが、この実施形態では擬似乱数である。各サーバ装置200が生成する基礎情報は、各サーバ装置200毎にユニークである。
基礎情報生成部228が生成した基礎情報は、同期情報生成部225に送られるようになっている。
【0037】
同期情報生成部225は、同期情報を生成するものである。同期情報は、特定ユーザ装置に含まれる2つのユーザ装置100が暗号化通信を行うに当って、当該暗号化通信を行うために2つのユーザ装置100の双方で必要となる情報である。同期情報は、2つのユーザ装置100で解を同期させるために必要な情報であって、解それ自体ではないものである。同期情報の詳細は追って説明する。
なお、このような同期情報が必要となるのは、2つの装置が同期した解を生成する場合には、この実施形態で既に説明したように、サーバ装置200と各ユーザ装置100とが共通する真初期解を有するように、暗号化通信を行う特定ユーザ装置に含まれる2つのユーザ装置100が共通する解(本願でいう初期解)が必要であるところ、相手が持つ初期解を知ることのできない2つのユーザ装置100に何らかの情報を提供しなければ、2つのユーザ装置100が解を同期させることができないからである。
同期情報生成部225は、同期情報生成部225が主制御部222から特定情報を受取った場合に同期情報を生成する。同期情報生成部225は、主制御部222から特定情報を受取ると、サーバ装置解生成部223に解を生成せよとの指示を出してサーバ装置解生成部223から2つの解を受取るとともに、基礎情報生成部228に基礎情報を生成せよとの指示を出して基礎情報生成部228から基礎情報を受取る。
同期情報生成部225は、基礎情報と2つの解の一方とに所定の演算を行うことによって、また、基礎情報と2つの解の他方とに所定の演算を行うことによって、2つの同期情報を生成する。2つの同期情報の一方は、特定情報で特定される2つのユーザ装置100の一方のためのものであり、2つの同期情報の他方は、特定情報で特定される2つのユーザ装置100の他方のためのものである。所定の演算は可逆的な演算である。同期情報の生成方法の詳細については後述する。
同期情報生成部225が2つの同期情報を生成した場合、同期情報生成部225は、それら2つの同期情報を特定情報とともに出力部227に送るようになっている。
【0038】
出力部227は、サーバ装置200内の機能ブロックで生成されたデータをインターフェイスに出力するものである。
出力部227には、上述のように、同期情報生成部225から同期情報と特定情報とが送られてくる。出力部227は、同期情報を受取ると、それを特定情報とともにインターフェイスに出力する。これら同期情報及び特定情報は、インターフェイスから送受信機構に送られ、送受信機構から、ネットワーク400を介して、特定情報によって特定された2つのユーザ装置100の双方に送られるようになっている。当然に、2つの同期情報のうち特定ユーザ装置100の一方のためのものは特定ユーザ装置100の一方へ、2つの同期情報のうち特定ユーザ装置100の他方のためのものは特定ユーザ装置100の他方へ送られることになる。なお、サーバ装置200の送受信機構は、同期情報をユーザ装置100へ送信するとき、同期情報にサーバ装置200のサーバ識別子を付す。
【0039】
次に、以上で説明した通信システムの使用方法、及び動作について、図6を参照して説明する。
自分のユーザ装置100と他のユーザ装置100との間で暗号化通信を行おうとするユーザは、まず、自らが所有するユーザ装置100の入力装置102を操作して、暗号化通信をしようとする相手側のユーザ装置100を特定するための特定情報を入力する。これにより、暗号化通信を行おうとする特定ユーザ装置である2つのユーザ装置100の双方を特定するための情報である特定情報が生成される(S1001)。特定情報のデータは、入力装置102から、インターフェイス114を介して入力部121に送られ、入力部121から主制御部122に送られる。
同様に、ユーザは入力装置102を操作して、特定情報を送信する2つのサーバ装置200をそれぞれ特定するための2つのサーバ識別子を入力する。2つのサーバ識別子のデータは、特定情報のデータと同様にして、主制御部122へ送られる。
【0040】
特定情報及びサーバ識別子のデータを受取ると、主制御部122は、特定情報とサーバ識別子のデータを出力部127に送る。出力部127は、受取った特定情報とサーバ識別子をインターフェイス114に送る。インターフェイス114は、受取った特定情報とサーバ識別子を更に送受信機構に送る。特定情報は、送受信機構からネットワーク400を介して、サーバ識別子で特定される2つのサーバ装置200に同時に送られる(S1002)。
なお、2つのサーバ装置100は、基本的には、特定情報で特定される暗号化通信をこれから行う2つのユーザ装置100の双方を管理するものである必要がある。つまり、ユーザが入力すべきサーバ識別子は、特定情報で特定される2つのユーザ装置100の双方を管理しているものである必要がある。もっとも、この実施形態では、これには限られないが、すべてのサーバ装置200がすべてのユーザ装置100を管理しているので、ユーザがサーバ識別子で特定すべき2つのサーバ装置200は、サーバ装置200の中の任意の2つで良い。
この実施形態では、特定情報は、特定ユーザ装置のうち通信を開始しようとするユーザが所有する側の1つのユーザ装置100から、2つのサーバ装置200へと送られることとしていたが、これはこの限りではない。例えば、特定ユーザ装置のうち通信を始めようとするユーザが所有する側のユーザ装置100があるサーバ装置200へと特定情報を送るとともに、相手側のユーザ装置100が他のサーバ装置200へと特定情報を送っても良い。
また、この実施形態では、特定情報は、特定ユーザ装置のうち通信を開始しようとするユーザが所有する側のユーザ装置100から、2つのサーバ装置200へと同時に送られることとしていたが、これは必ずしもこの限りではない。特定ユーザ装置である2つのユーザ装置100にはともに、後述するように1つ目のサーバ装置200から2つの同期情報が送られるが、例えば、2つのユーザ装置100に1つ目の同期情報が到着した後に、2つ目のサーバ装置200に特定情報が送信されても良い。
【0041】
2つのサーバ装置200は、それらの送受信機構で、ユーザ装置100から送られてきた特定情報を受取る(S2001)。
両サーバ装置200において、特定情報は、サーバ装置200のインターフェイスに送られ、インターフェイスから入力部221に送られる。入力部221は、特定情報のデータをインターフェイスから受取ると、それを主制御部222に送る。
主制御部222は、入力部221から特定情報のデータを受取ると、特定情報を同期情報生成部225に送る。それをきっかけとして、同期情報生成部225は、特定情報によって特定される特定ユーザ装置に含まれる2つのユーザ装置100において、それらが暗号化通信を行う際に必要となる解を同期させるために必要となる情報である同期情報を生成する(S2002)。
【0042】
一例となる同期情報の生成方法について説明する。
特定情報を受取ると、同期情報生成部225は、サーバ装置解生成部223に特定情報とともに、解を生成せよとの指示を送り、また、基礎情報生成部228に基礎情報を生成せよとの指示を送る。
そうすると、サーバ装置解生成部223は2つの解を生成し、それを同期情報生成部225へと送り、基礎情報生成部228は基礎情報を生成し、それを同期情報生成部225へと送る。
それらを用いて、同期情報生成部225は同期情報を生成する。
【0043】
この実施形態におけるサーバ装置解生成部223は、特定情報に含まれる2つのIPアドレスにそれぞれ紐付けられている2つの真初期解を読み出す。真初期解は、既に述べたように、サーバ装置200と、各ユーザ装置100とが同期した解を生成するために用いられる初期値としての初期解である。
上述したように、この実施形態におけるサーバ装置解生成部223は、少なくとも初めて解を生成するとき、サーバ装置解記録部224に初期状態で記録されている真初期解のデータを読み出す。真初期解のデータは、例えば、20桁の数字と小文字の英字混じりの文字列である。これは、初期解のデータ、解のデータも同じである。かかる真初期解は、各ユーザ装置100毎にユニークなものであり、各ユーザ装置100に対して、サーバ装置200が、或いはサーバ装置200の管理者が割り当てたものである。真初期解は1つのこともあるが、複数の場合もある。この実施形態では真初期解は1つであるので、サーバ装置解生成部223は、1つの真初期解をサーバ装置解記録部224からを読み出す。
サーバ装置解生成部223は、それら真初期解に対して演算を行うことにより、その時点における解を生成する。
まず、演算が可能なように、真初期解を数字のみに直す。真初期解の中に、英字が含まれている場合には、それを2桁の数字に置き換える。置き換えの対象となる数字は、その英字のアルファベット中の順番である。例えば、「a」なら「01」に、「b」なら「02」に、「z」なら「26」にそれぞれ置き換える。例えば、真初期解が「5a6458p6556ff4272149」というものだったとする。この場合、真初期解を上述の約束にしたがって数字のみにすると、「501645816655606064272149」となる。数字のみにした場合の桁数は、真初期解に含まれていた英字の数に応じて増えることになる。なお、(、)、!、&、:等の記号をも解に含めたいのであれば、「(」に「27」、「)」に「28」、「!」に「29」等の適当な数字の割当てを行うようにすればよい。
次に、数字に対して演算を行う。この演算の結果求められるのは、解の元となる数字の列である。その数字の列をXとすると、Xは、所定の時点における西暦の年、月、日、時、分にしたがって以下のようにして求められる。以下の数式におけるXは、真初期解を数字に直したものである。この実施形態で真初期解を5つとしているのは、西暦の年、月、日、時、分という5つの要素にしたがって解を変化させることにしているからである。なお、時刻によって解の同期を取るこのような手法は、従来から存在する時間同期の手法と同様のものである。
X=X +X +X
ここで、P=西暦の年の数字を5で割った余りに1を足したもの、Q=月の数字を5で割った余りに1を足したもの、R=日の数字を5で割った余りに1を足したもの、S=時の数字を5で割った余りに1を足したもの、T=分の数字を5で割った余りに1を足したものである。このようにすることで、そのときの時刻に応じて異なる数列を得ることができる。なお、P~Tのすべてにおいて、1を足す過程を加えているのは、P~Tのすべてがたまたま0になった場合に最終的に得られる解Xが5になるが、そのような簡単な数字が頻出することを避けるためである。
上述の演算を行った結果、解の元となる数字の列Xが得られる。次いで、その数字の列の中の任意の2桁の中に01~26という数字が含まれていたら、先ほどの英字から数字への置き換えの約束事とは逆の約束事にしたがい、それらをa~zの英字に置き換える。
このようにして得られた数字と小文字の英字混じりの文字列は通常、20桁以上の桁数である。それが20桁以上であるときには、その文字列の例えば前から20文字を抜き出し、それを解とする。上述のようにして得られた数字と小文字の英字混じりの文字列がちょうど20桁の場合には、それをそのまま解とする。また、上述のようにして得られた数字と小文字の英字混じりの文字列が20桁よりも少ない場合には、何らかの決まり事に基いて桁数を増やす。例えば、その文字列の最初の数字又は英字に基いて何らかの数字又は文字を、桁数が20桁に至るまでに、その文字列中に挿入するようにしてもよい。或いは、上述の数式におけるPとTとを入れ替えて演算を行って得られる数字の列に対して数字を英字に置き換える上述の過程を実行することによって新たな数字と小文字の英字混じりの文字列を生成して、それを元の数字と小文字の英字混じりの後に繋げるというような作業を、その桁数が少なくとも20桁になるまで繰り返して、その前から20文字を抜き出して解とする、というような方法も採用しうる。
いずれにせよ、これにより、真初期解に基いて、ある時点の日時に対応した解が生成されることになる。これには限られないが、この実施形態では、サーバ装置200のサーバ装置解生成部223は、ユーザ装置100がサーバ装置200に特定情報を送信した時刻(例えば、特定情報の送信時において特定情報を送信するためのデータのパケットにユーザ装置100で付されたタイムスタンプで特定される時刻)の例えば「5分後」の時刻における解を生成するものとする。なお、以下も同様であるが、かかる時刻は、実際にその時刻が到来しているかどうかを問わない。
このようにして、サーバ装置解生成部223は、特定情報で特定されるユーザ装置100の一方についての真初期解を用いて、ユーザ装置100の一方で生成可能な解を生成する。同様にして、サーバ装置解生成部223は、特定情報で特定されるユーザ装置100の他方についての真初期解を用いて、ユーザ装置100の他方で生成可能な解を生成する。
サーバ装置解生成部223は生成した2つの解を、同期情報生成部225へ送る。そのとき、ユーザ装置100の一方で生成可能な解を、特定情報に含まれるユーザ装置100の一方を特定する情報と紐付け、また、ユーザ装置100の他方で生成可能な解を、特定情報に含まれるユーザ装置100の他方を特定する情報と紐付ける等して、どちらの解がユーザ装置100の一方のためのもので、どちらの解がユーザ装置100の他方のためのものであるかを明らかな状態として、2つの解を同期情報生成部225へと送る。
【0044】
他方、基礎情報生成部228が基礎情報を生成する方法は、擬似乱数を生成するための適当な方法とすれば良い。
例えば、基礎情報生成部228は、基礎情報を生成するための適当な初期解を有しており、サーバ装置解生成部223が新たな解を生成するのと同じ方法で基礎情報を生成するようにしても良い。これには限られないが、この実施形態では、基礎情報生成部228は、基礎情報を、サーバ装置解生成部223が解を生成するのと同じ方法で、サーバ装置200毎にユニークな基礎情報生成用の初期解に基づいて、20桁の数字と小文字の英字混じりの文字列として基礎情報を生成するものとする。
したがって、各サーバ装置200で生成される基礎情報はユニークであり、且つ、各サーバ装置200で生成される基礎情報を他のサーバ装置200或いはその管理者は、不正が無い限り知ることができない状態となる。
基礎情報生成部228は生成した基礎情報を、同期情報生成部225へ送る。
【0045】
同期情報生成部225は、以上のようにして、2つの解と基礎情報とを受取る。
それらに基づいて、同期情報生成部225は、同期情報を生成する。同期情報の生成方法は以下の通りである。
同期情報生成部225は、同期情報と、ユーザ装置100の一方のための解とに所定の演算、この実施形態では、可逆的な演算を行って、ユーザ装置100の一方のための同期情報を生成する。可逆的な演算の例は乗算や排他的論理和を取ることであるが、これには限られないがこの実施形態では、排他的論理和を取ることにより、可逆的な演算を行う。
同様に、同期情報生成部225は、同期情報と、ユーザ装置100の他方のための解とに所定の演算、この実施形態では、可逆的な演算を行って、ユーザ装置100の他方のための同期情報を生成する。
同期情報は同じであるが、ユーザ装置100の一方と他方とのための解はそれぞれ異なるものであるため、同期情報と解とに演算を行うことによって生成される2つの同期情報は、互いに異なるものとなる。
同期情報生成部225は、生成した2つの同期情報を出力部227へと送る。そのとき、ユーザ装置100の一方のための同期情報を、特定情報に含まれるユーザ装置100の一方を特定する情報と紐付け、また、ユーザ装置100の他方のための同期情報を、特定情報に含まれるユーザ装置100の他方を特定する情報と紐付ける等して、どちらの同期情報がユーザ装置100の一方のためのもので、どちらの同期情報がユーザ装置100の他方のためのものであるかを明らかな状態として、2つの同期情報を出力部227へと送る。
【0046】
出力部227は、ユーザ装置100の一方と他方とを特定情報と紐付けられたそれら2つの同期情報を、インターフェイスを介して送受信機構に送る。送受信機構は2つの同期情報を、特定情報によって特定される2つのユーザ装置100へと送る(S2003)。もちろん、ユーザ装置100の一方のための同期情報を、特定ユーザ装置に含まれるユーザ装置100の一方へ、ユーザ装置100の他方のための同期情報を、特定ユーザ装置に含まれるユーザ装置100の他方へと送る。ユーザ装置100へ送られる同期情報には、サーバ装置200の送受信機構により、サーバ識別子が付される。
以上のS2001~S2003までの処理は、2つのサーバ装置200で同じように実行される。
したがって、特定ユーザ装置である2つのユーザ装置100には、一方のサーバ装置200と他方のサーバ装置200からそれぞれ、同期情報が送られることになる。両ユーザ装置100が受取る同期情報のうち一方のサーバ装置200から送られたものが第1同期情報で、他方のサーバ装置200から送られたものが第2同期情報である。第1同期情報と第2同期情報という名称における「第1」と「第2」という文言は、ユーザ装置100が同期情報を受取った順序には関係ない。また、サーバ装置200からユーザ装置100へと同期情報を送信する際に、同期情報は更に暗号化されていても構わない。
【0047】
一方のサーバ装置200と他方のサーバ装置200からそれぞれ、送られた同期情報を、特定ユーザ装置である双方のユーザ装置100が受取る(S1003)。
2つの同期情報はそれらにそれぞれ付されたサーバ識別子とともに、ユーザ装置100の送受信機構により受付けられる。両ユーザ装置100において、受付けられた2つの同期情報はサーバ識別子とともに、インターフェイス114を介して入力部121に送られ、入力部121から、主制御部122を介してユーザ初期解生成部125に送られる。
【0048】
サーバ識別子の付された2つの同期情報を受取ったユーザ装置100のユーザ初期解生成部125では、2つの同期情報に基いて、以下のようにして初期解が生成される(S1004)。
ユーザ初期解生成部125は、上述のように、サーバ識別子が付された同期情報を受付けると、解を生成せよとの指示とともに、2つの同期情報に付されたサーバ識別子をユーザ解生成部123へと送る。
【0049】
ユーザ初期解生成部125から解を生成せよとの指示を受けたユーザ解生成部123は、解を生成する。
ユーザ解生成部123は以下のようにして新たな解を生成する。
ユーザ解生成部123は、2つのサーバ識別子のうちの一方と紐付けられていた真初期解をユーザ解記録部124から読み出す。ユーザ解生成部123は、そのサーバ識別子によって特定されるサーバ装置200のサーバ装置解生成部223が解を生成したときと同じ方法で解を生成する。サーバ装置解生成部223が解を生成したときに用いられる解と、ユーザ解生成部123が解を生成するときに用いられる解が同じで、また、サーバ装置解生成部223が解を生成した方法と、ユーザ解生成部123が解を生成する方法とが同じなのであるから、サーバ装置解生成部223で生成された解と同じ解が、ユーザ解生成部123で生成されることになる。つまり、ユーザ解生成部123は、2つのサーバ識別のうちの一方で特定されるサーバ装置200で生成されたのと同じ解を生成する。
また、ユーザ解生成部123は、2つのサーバ識別子のうちの他方と紐付けられていた真初期解をユーザ解記録部124から読み出す。その真初期解を用いることにより、ユーザ解生成部123は、2つのサーバ識別のうちの他方で特定されるサーバ装置200で生成されたのと同じ解を生成する。
このようにして生成された2つの解は、ユーザ解生成部123から、ユーザ初期解生成部125へと送られる。
【0050】
ユーザ初期解生成部125は、上述したように先に2つの同期情報を得ている。それに加えて、ユーザ初期解生成部125は、ユーザ解生成部123から2つの解を得ている。それらを用いて、ユーザ初期解生成部125は、初期解を生成する。
まず、ユーザ初期解生成部125は、2つのサーバ識別子の一方によって特定されるサーバ装置200から送られてきた同期情報に、当該サーバ装置200で生成可能なユーザ解生成部123から送られてきた解を用いて、サーバ装置200の同期情報生成部225で行われた可逆的な演算の逆演算を行う。それにより、ユーザ初期解生成部125は、2つのサーバ識別子の一方によって特定されるサーバ装置200の基礎情報生成部228で生成された基礎情報を、同期情報から取出すことができる。
同様に、ユーザ初期解生成部125は、2つのサーバ識別子の他方によって特定されるサーバ装置200から送られてきた同期情報に、当該サーバ装置200で生成可能なユーザ解生成部123から送られてきた解を用いて、サーバ装置200の同期情報生成部225で行われた可逆的な演算の逆演算を行う。それにより、ユーザ初期解生成部125は、2つのサーバ識別子の他方によって特定されるサーバ装置200の基礎情報生成部228で生成された基礎情報を、同期情報から取出すことができる。
それにより、ユーザ初期解生成部125は、2つのサーバ識別子によって特定される2つのサーバ装置200、つまり、同期情報を送ってきた2つのサーバ装置200で生成された2つの基礎情報を入手することができる。
ユーザ初期解生成部125は、それら2つの基礎情報に予め定められた所定の演算を行うことにより初期解を得る。所定の演算は、例えば、2つの基礎情報の乗算であっても良いし、排他的論理和を取る演算であっても良い。これには限られないが、この実施形態では後者を採用している。
生成された初期解は、ユーザ初期解生成部125からユーザ解記録部124へと送られ、ユーザ解記録部124に記録される。この解は、特定情報で特定される2つのユーザ装置100のうちの暗号化通信を行う相手方のユーザ装置100との暗号化通信を行う際に用いられるものであるから、それを明らかにするために、当該相手側のユーザ装置100を特定するための情報(この実施形態では、相手側のユーザ装置100のIPアドレス)と紐付けた状態で、ユーザ解記録部124に記録されることになる。
【0051】
同様の処理、つまり、S1003とS1004の処理が、特定ユーザ装置である2つのユーザ装置100のうちの他方でも実行される。
2つのユーザ装置100の他方においてユーザ初期解生成部125が初期解を生成するときに用いられる2つの基礎情報は、2つのユーザ装置100の一方で初期解を生成するときに用いられた2つの基礎情報と同じであり、また、両者で初期解を生成するときに2つの基礎情報に対して行われる演算は予め定められた同じ演算である。したがって、特定ユーザ装置に含まれる2つのユーザ装置100で生成される初期解は同じものとなる。
2つのユーザ装置100の他方においても、生成された初期解は、ユーザ解記録部124に記録される。このとき、その解は、特定ユーザ装置である2つのユーザ装置100の一方のIPアドレスと紐付けた状態でユーザ解記録部124に記録される。
これにて、特定ユーザ装置たる2つのユーザ装置100におけるユーザ解記録部124のそれぞれに共通する初期解が記録されることになった。言い換えれば、特定ユーザ装置たる2つのユーザ装置100が共通する初期解を持つ状態が形成された。つまり、これにより、特定ユーザ装置たる2つのユーザ装置100が暗号化通信を行う準備が整った。
【0052】
この状態で、特定ユーザ装置を構成する2つのユーザ装置100の間で暗号化通信が行われる(S1005)。
【0053】
暗号化通信についての以下の説明では、特定ユーザ装置である暗号化通信を行う2つのユーザ装置のうちの一方を、一方のユーザ装置100、その他方を、他方のユーザ装置100と称することにする。
まず、一方のユーザ装置100から他方のユーザ装置へ暗号化データが送信される場合について説明する。
なお、2つのユーザ装置100の間でどちらのユーザ装置100からどちらのユーザ装置100へ暗号化データが送信されるかは本来自由である。一方のユーザ装置100から他方のユーザ装置100に暗号化データが送信されても、他方のユーザ装置100から一方のユーザ装置100に暗号化データが送信されても、両ユーザ装置100で行われる処理が逆になるだけで、両ユーザ装置100で行われる処理そのものは変わらない。
一方のユーザ装置100を扱うユーザは、ユーザ装置100の入力装置102を操作して、送信対象データを生成或いは選択する。送信対象データは平文のデータである。
送信対象データは一方のユーザ装置100内で、インターフェイス114から入力部121に送られ、更にはユーザ暗号化復号化部126に送られる。ユーザ暗号化復号化部126で送信対象データは暗号化されるが、そのために解が用いられる。ユーザ暗号化復号化部126は、ユーザ解生成部123に解を生成させるべく、解を生成せよとの指示をユーザ解生成部123に送る。かかる指示を受取ると、ユーザ解生成部123は新たに解を生成する。
ユーザ解生成部123がどのようにして解を生成するかは、2つのユーザ装置100におけるユーザ解生成部123で生成される解が同期されている限り自由である。例えば、ユーザ解生成部123とサーバ装置解生成部223において生成される解を同期させるための方法と、特定ユーザ装置である2つのユーザ装置100におけるユーザ解生成部123において生成される解を同期させるための方法とが、同じものであっても、異なるものであっても構わない。
この実施形態では、一方のユーザ装置100におけるユーザ解生成部123は、この実施形態では、その時点の時刻とは無関係に、初期解を生成するときに用いられた上述の時刻の1年と、1月と、1日と、1時間と、1分後の時刻に対応した解を生成するようになっているものとする。更に、2つのユーザ装置100間で予め取り決めた、離れた場所にある2つのユーザ装置100が取得可能な共通の情報(例えば、ある都市の通信時における気温や、あるスポーツのある規則で特定される試合の勝敗)である環境情報を、解を生成するための情報として用いることもできる。
ユーザ解生成部123は、ユーザ解記録部124から読み出した初期解を用い、また上述した方法及び上述した時刻を用いて、新たな解を生成する。
新たな解は、一方のユーザ装置100内で、ユーザ解生成部123からユーザ暗号化復号化部126へと送られる。
ユーザ暗号化復号化部126は、ユーザ解生成部123から新たな解を受取り、それを用いて、送信対象データを暗号化する。
この場合の解の用い方は自由である。例えば、ユーザ装置100とサーバ装置200が共通鍵方式の暗号化通信を行う場合であれば、ユーザ暗号化復号化部126は、その新たな解を共通鍵として用いることができる。つまり、解は、暗号化の鍵として利用可能である。また、解は共通鍵を生成するための元となる情報として用いることもできる。他方、解は、暗号化のアルゴリズムを変化させるために用いることも可能である。解に基いて、複数種類のアルゴリズムの中から1つのアルゴリズムを選択する、といった解の用い方も可能である。
いずれにせよ、送信対象データはユーザ暗号化復号化部126で暗号化され、暗号化データにされる。
生成された暗号化データは、ユーザ暗号化復号化部126から出力部127へと送られる。
一方のユーザ装置100における出力部127は、暗号化データをインターフェイス114を介して送受信機構へと送る。暗号化データは、ネットワーク400を介して、他方のユーザ装置100へと送られる。
【0054】
他方のユーザ装置100は、その送受信機構でユーザ装置100から送られてきた暗号化データを受取る。暗号化データは、送受信機構から、インターフェイス114を介して入力部121へと送られる。入力部121は、ユーザ暗号化復号化部126へ暗号化データを送る。
暗号化データを受取った、他方のユーザ装置100におけるユーザ暗号化復号化部126は暗号化データを復号化する。そのために、ユーザ暗号化復号化部126は、ユーザ解生成部123が生成した解を用いる。ユーザ暗号化復号化部126は、ユーザ解生成部123に解を生成させるべく、解を生成せよとの指示をユーザ解生成部123に送る。かかる指示を受取ると、ユーザ解生成部123は新たに解を生成する。
他方のユーザ装置100におけるユーザ解生成部123が解を生成する方法は、一方のユーザ装置100のユーザ解生成部123が採用している方法と同じであり、ユーザ解生成部123がユーザ解記録部124から読み出す初期解は、一方のユーザ装置100で用いられた初期解と共通する。それにより、他方のユーザ装置100におけるユーザ解生成部123は、一方のユーザ装置100におけるユーザ解生成部123が生成するのと同じ新たな解を生成する。つまり、2つのユーザ装置100は、同期した解を生成することになる。
新たな解は、ユーザ解生成部123からユーザ暗号化復号化部126へと送られる。
ユーザ暗号化復号化部126は、ユーザ解生成部123から新たな解を受取り、それを用いて、暗号化データを復号化する。
この場合の解の用い方は、一方のユーザ装置100のユーザ暗号化復号化部126での解の用いられ方に倣う。例えば、2つのユーザ装置100が共通鍵方式の暗号化通信の共通鍵として解を用いるのであり、一方のユーザ装置100で解がそのように用いられたのであれば、他方のユーザ装置100におけるユーザ暗号化復号化部126も、その新たな解を共通鍵として用いる。
いずれにせよ、ユーザ暗号化復号化部126で、暗号化データは復号化され、元の平文の送信対象データに戻される。
送信対象データは、ユーザ暗号化復号化部126から、出力部127に送られ、出力部127からインターフェイス114を介して、他方のユーザ装置100内の例えば他のアプリケーションに送られたり、ディスプレイ101に送られて適当な表示がなされたりする。
【0055】
他方のユーザ装置100から一方のユーザ装置100へ暗号化データが送信される場合には、以上の説明における一方のユーザ装置100と他方のユーザ装置100の役割が入れ替わる。
【0056】
暗号化通信を行う必要がなくなったら、暗号化通信が終了する。
なお、この実施形態における通信システムでは、暗号化通信を行うS1005の過程で用いられる解は1つだけ、或いは固定であった。これに代えて、例えば共通鍵方式の暗号化通信を行うための共通鍵を次々と変更していくが如くに、暗号化或いは復号化に用いるための解を、特定ユーザ装置たる2つのユーザ装置100のユーザ解生成部123で、連続的に生成するようにすることも可能である。その場合には、例えば、認証に用いた解の次の新たな解を生成するために、認証に用いられた解が生成された時刻の1年と、1月と、1日と、1時間と、1分後の時刻に対応した解を生成するという取極めを、例えばすべてのユーザ解生成部123と、サーバ装置解生成部223との間でしていたのと同様に、その後に生成する解は、順にその1分後、2分後、3分後…の時刻に生成される解である、等の取極めを、例えば、すべてのユーザ装置100のユーザ解生成部123同士の間で行っておけばよい。もちろん、両者の間で、もっと複雑な取極めを交わしておくことも可能である。
他方、共通鍵方式の暗号化通信を行うための共通鍵を、次々と変更していくがごとくに、特定ユーザ装置たる2つのユーザ装置100のユーザ暗号化復号化部126において暗号化と復号化の処理を行う際に用いられる解を変更するタイミングは、適当に決定することができる。例えば、暗号化通信が開始されてから所定の時間が経過する度に、新しく生成された解に暗号化或いは復号化のために用いられる解が変更或いは更新されてもよく、或いは暗号化データの量が一定のデータ量を超える度に、解が変更或いは更新されても良い。例えば、平文のあるデータを暗号化する場合には通常、データの全体に対して何らかの演算を行うのではなく、通常は、平文のあるデータを所定のビット数毎に切断して小さいデータにしてから、その小さいデータのそれぞれに対して暗号化のための演算を行っていくという手法が用いられる。例えば、その小さいデータを10個暗号化する毎に新しい解を生成して共通鍵を変えるとか、場合によってはその小さいデータを1個暗号化する毎に新しい解を生成して共通鍵を変えるとか、そのような手法を採用しても良い。もちろんこのような暗号化を行う場合には、復号化を行う側でも暗号化を行う側と同じ方法で解を発生させ、同じ方法で共通鍵となる解を変更していく。そのようなことを、特定ユーザ装置たる2つのユーザ装置100の双方で実行することができる。
【0057】
なお、上述のようにして特定ユーザ装置たる2つのユーザ装置100が一度解を同期させたのであれば、特定ユーザ装置たる2つのユーザ装置100は解を同期させた状態を2つのユーザ装置100が機能している間永続的に保つことができる。
例えば、上述の暗号化通信が終わったときに双方のユーザ装置100で発生させた最後の解を、双方のユーザ装置100におけるユーザ解記録部124に、次回の暗号化通信の際に用いる初期解として記録するようにすれば、次回の暗号化通信の場合には、サーバ装置200の力を借りて同期情報をサーバ装置200に生成させずとも、2つのユーザ装置100は同期した解を用いての暗号化通信を実行することができる。特に、解を生成するときに上記の如き環境情報を用いることとすれば、サーバ装置200及びその管理者を含めた第三者には、解及び初期解を知得される可能性が略無くなる。
他方、各ユーザ装置100は、上記の如き初期解の保存を行わず、暗号化通信を行うたびにサーバ装置200から同期情報の提供を受け、上述の処理を繰り返すようになっていてももちろん構わない。
【0058】
<変形例1>
以下、上述した通信システムの変形例について説明する。
以下に説明する通信システムで上述の実施形態の通信システムと異なるのは、サーバ装置200と各ユーザ装置100とにおける解の同期のさせ方、及び特定ユーザ装置たる2つのユーザ装置100間での解の同期のさせ方のみである。
他の部分においては、変形例1と実施形態の通信システムの構成には違いがなく、またその使用方法、及び動作についても違いはない。
【0059】
実施形態においては、ユーザ装置100が備えるユーザ解生成部123、及びサーバ装置200が備えるサーバ装置解生成部223における解の発生のさせ方は、トークン等を用いて行われていた従来のワンタイムパスワードの生成の方法でいえば、時間同期の如き解の同期のさせ方を採用していた。これに対して、変形例1では、ワンタイムパスワードの発生のさせ方でいえば、イベント同期の如き、過去に発生させた解の数(或いは発生させられた解の順番(その解が幾つ目の解かということ))に基づき解を同期させる方法を採用している。
【0060】
変形例1では、ユーザ解生成部123、及びサーバ装置解生成部223で新しい解を生成するための手法は、例えば、ある初期解に対して決められた演算を行うことで解を得て、次いでその解に対して再び決められた演算を行うことで次の解を得て、次いでその解に対して再び決められた演算を行うことで次の解を得て…、という処理を繰り返すことで、連続して解を生成するものとすることができる。このような技術は、擬似乱数を生成するための技術として周知である。
【0061】
ユーザ解生成部123、及びサーバ装置解生成部223が、解を生成するより具体的な方法について説明する。ユーザ装置100のユーザ解生成部123で新しい解を生成する方法、及びサーバ装置200のサーバ装置解生成部223で新しい解を生成する方法とも共通であるので、以下の説明ではそれらの区別を行わずに説明を行う。また、初期解と真初期解も区別せずにそれらをともに初期解としてまとめて説明を行う。
解を生成するには、ある初期解(以下の、(a)、(c)のように2つ以上の場合もある)を用い、過去の解を所定の関数に代入することにより、新しい解を順次作るという方法を、解が必要となる度に実行すれば良い。そうすることにより、上記解を連続して生成することができる。この場合の解は、初期解依存性のある擬似乱数となる。
上述の解を作るのに使われる関数の例として、以下の(a)~(c)を挙げる。以下の(a)~(c)はいずれも、N番目の解であるXを作るための式である。また、P、Q、R、Sは適当な自然数である。
(a)(X)=(XN-1+(XN-2
(b)(X)=(XN-1
(c)(X)=(XN-1(XN-2(XN-3R(XN-4S
(a)は、過去の解2つを用い、それらをそれぞれP乗とQ乗したものを足し合わせることにより、新しい解を生成する。なお、正確には、過去の解2つを用い、それらをP乗とQ乗したものを足し合わせると通常、桁数が増えるため、実際には得られた値のうちの頭から適当な桁数を抜き出す、末尾から適当な桁数を抜き出す、或いはその値のうちの適当な部分から適当な桁数を抜き出すこと等により、新しい解を生成する。これには限られないが、実施形態では、解は20桁であるものとする。
(b)は、過去の解1つを用い、それをP乗したものの桁数を上述のように整理したものを新しい解とするものである。
(c)は、過去の解4つを用い、それらをそれぞれP乗、Q乗、R乗、S乗したものの積を取り、その後上述したように桁数を整理したものを新しい解とするものである。
上述の(a)~(c)は解を生成するためのアルゴリズムの一例であり、解を生成する際にアルゴリズムに変化を加える、例えば、上述の(a)~(c)を順番に用いる等の変化を加えることも可能である。
なお、上述の(a)~(c)の数式を用いる手法は、解が数字のみで構成されている場合に使用可能である。解に、文字、記号を含めたいのであれば、実施形態で説明した、文字、記号に数字を割り振る手法を採用すればよい。
上述の如き数式を用いて解を連続させる方法によれば、同じ順番で生成された解は、初期解が同一である場合においては常に同一のものとなる。
したがって、共通のアルゴリズムを用い、且つ共通の初期解を有するのであれば、サーバ装置200にあるサーバ装置解生成部223と、ユーザ装置100にあるユーザ解生成部123とは、共通する同期された解を生成することができ、また、特定ユーザ装置における2つのユーザ装置100にそれぞれあるユーザ解生成部123は、共通する同期された解を生成することができることになる。
これには限られないが、変形例1のユーザ解生成部123とサーバ装置解生成部223とは、上記(a)のアルゴリズムを用いて解を生成することとしている。また、変形例1における特定ユーザ装置に含まれる2つのユーザ装置100(或いは、すべてのユーザ装置100が特定ユーザ装置になり得ることまで考慮すれば、すべてのユーザ装置100)におけるユーザ解生成部123は、上記(a)のアルゴリズムを用いて解を生成することとしている。
【0062】
かかる通信システムの使用方法、及び動作をより具体的に説明することで、通信システムの構成をより明確にする。
変形例1の通信システムの動作は、図6に示した通りであり、大まかに言えば、実施形態の場合と変わらない。特に、特定ユーザ装置におけるS1001~S1002のステップとサーバ装置200におけるS2001のステップは、実施形態の場合と完全に同一である。
2つのサーバ装置200は、特定情報を受取る。特定情報は、送受信機構、インターフェイス、入力部221、主制御部222を経て、同期情報生成部225へと送られる。2つのサーバ装置200における同期情報生成部225は、特定情報によって特定される特定ユーザ装置に含まれる2つのユーザ装置100において、それらが暗号化通信を行う際に必要となる解を同期させるために必要となる情報である同期情報を生成する(S2002)。
【0063】
変形例1の場合も、実施形態の場合と同様に、サーバ装置200に送られてきた特定情報で特定される2つのユーザ装置100のうちの双方で生成することができる2つの解を、サーバ装置解生成部223が生成する。
サーバ装置解生成部223が2つの解を生成するのは、実施形態の場合と同様に、同期情報生成部225が特定情報とともに、解を生成せよとの指示をサーバ装置解生成部223に送ったときである。
変形例1におけるサーバ装置解生成部223は、特定情報に含まれる2つのIPアドレスにそれぞれ紐付けられた真初期解又は解を呼び出す。上述したように、実施形態におけるサーバ装置解生成部223は、少なくとも初めて解を生成するとき、サーバ装置解記録部224に記録されている真初期解のデータを読み出す。もっとも、変形例1のサーバ装置200におけるサーバ装置解記録部224には、真初期解に加えて、その真初期解を用いて過去に幾つの解を生成したか、という情報が記録されている。サーバ装置解生成部223は、真初期解のデータと、その真初期解に基いて過去に幾つの解を生成したかという情報とをサーバ装置解記録部224から読み出す。
【0064】
変形例1のサーバ装置解生成部223が解を生成する場合において、例えば、サーバ装置解生成部223は過去に3つの解を生成したとする。そうすると、サーバ装置解生成部223は、サーバ装置解記録部224から、真初期解と、過去に生成した解の数である3という数字を読み出す。サーバ装置解生成部223は、上述の数式(a)を用いて、真初期解((X)、(X-1))から1番目の解(X)を生成し、1番目の解を用いて(より正確には、(X)、(X)を用いて)2番目の解を生成し、それを繰り返して、4番目の解(X)を生成する。そして、サーバ装置解生成部223は、サーバ装置解記録部224に記録されていた過去に生成した解の数を1増やし「4」とする。これにより、次にサーバ装置解生成部223で生成される解は、5番目の解である(X)になる。
サーバ装置解生成部223は、実施形態の場合と同様に、特定情報で特定される2つのユーザ装置100のための2つの解を生成し、それを同期情報生成部225へと送る。
他方、実施形態の場合と同様に、同期情報生成部225からの求めにより、基礎情報生成部228は基礎情報を生成して、それを同期情報生成部225に送る。
同期情報生成部225は、サーバ装置解生成部223から受付けた2つの解と、基礎情報生成部228から受付けた基礎情報とに基づいて、2つの同期情報を生成する。その方法は、実施形態の場合と同じでよく、変形例1ではそうされている。
【0065】
実施形態の場合と同様に、同期情報は、特定ユーザ装置である2つのユーザ装置100に対して送られる(S2003)。
特定ユーザ装置である2つのユーザ装置100には、2つのサーバ装置200から、それぞれ同期情報が送られることになる。
【0066】
同期情報を受取った2つのユーザ装置において、同期情報は、実施形態の場合と同様に、ユーザ初期解生成部125に送られる。
2つのユーザ装置100におけるユーザ初期解生成部125は、実施形態の場合と同様に、同期情報に付されていた2つのサーバ識別子をユーザ解生成部123へと送る。
それを受取ったユーザ解生成部123は、ユーザ解記録部124に記録されている真初期解(或いは解)のうち、受取った2つのサーバ識別子と紐付けられていたものを読み出す。読み出される2つの真初期解(或いは解)は、ユーザ装置100に送られてきた同期情報を生成する場合に、サーバ装置200で使用されたものと同じである。読み出されるのが真初期解ではなく幾つか目に生成された解である場合には、サーバ解記録部224に記録されていたのと同様にユーザ解記録部124に記録されている、真初期解に基いて過去に幾つの解を生成したかという情報をユーザ解生成部123は読み出す。
ユーザ解生成部123、読みだしたそれら情報を用いて、新しい解を生成する。解の生成方法は、サーバ装置解生成部223における解の生成方法と同じである。新しい解を生成するために用いられる真初期解又は解は、ユーザ装置100に送られてきた同期情報をサーバ装置200が生成したときにおいて、サーバ装置解生成部223が解を生成する際に用いられた真初期解又は解と同じであり、また、それらに基づいて解を生成する方法もサーバ装置解生成部223で解を生成するときに用いられた方法と同じである。したがって、ユーザ解生成部123は、同期情報を送ってきたサーバ装置解生成部223で生成された解と同じ解を生成することになる。
ユーザ解生成部123は、同期情報を送ってきた2つのサーバ装置200で生成された解のそれぞれと同じ2つの解を生成する。
ユーザ解生成部123は、それら2つの解をユーザ初期解生成部125へと送る。
【0067】
そこから先の処理は実施形態と同じである。
ユーザ初期解生成部125は先に受取っていた2つの同期情報と、2つの解を用いて、所定の演算を行うことにより、2つの同期情報から、2つのサーバ装置200のそれぞれで生成された基礎情報を生成する。そして、ユーザ初期解生成部125は、2つのサーバ装置200のそれぞれで生成された基礎情報に予め定められた演算を行うことによって、初期解を生成する。
特定ユーザ装置である2つのユーザ装置100で生成される初期解は、実施形態の場合と同じく、同じものとなる。それにより、特定ユーザ装置である2つのユーザ装置100で同じ初期解が共有されることになる。
【0068】
以後の処理は、完全に実施形態の場合と同じでも良い。つまり、特定ユーザ装置である2つのユーザ装置において行われる暗号化通信(S1005)を実現するために必要とされる連続して、しかも同期して解を発生させるための処理は、トークン等でいう時間同期によってそれが実現されても構わない。
他方、変形例1では、かかる解の同期がトークン等で実現されるイベント同期により実現されるようにすることも可能であり、変形例1ではそのようにして解が生成されることとして以下の説明を行う。
【0069】
実施形態の場合と同様、以下の説明では、特定ユーザ装置である暗号化通信を行う2つのユーザ装置のうちの一方を、一方のユーザ装置100、その他方を、他方のユーザ装置100と称することにする。
まず、一方のユーザ装置100から他方のユーザ装置100へ暗号化データが送信される場合について説明する。
一方のユーザ装置100を扱うユーザは、ユーザ装置100の入力装置102を操作して、送信対象データを生成する。
送信対象データは一方のユーザ装置100内で、インターフェイス114から入力部121を介してユーザ暗号化復号化部126に送られる。ユーザ暗号化復号化部126で送信対象データは暗号化されるが、そのために解が用いられる。ユーザ暗号化復号化部126は、ユーザ解生成部123に解を生成させるべく、解を生成せよとの指示をユーザ解生成部123に送る。かかる指示を受取ると、ユーザ解生成部123は新たに解を生成する。
ユーザ解記録部124には、上述したように、2つの解である(X)と(X)とが記録されている。一方のユーザ装置100のユーザ解生成部123は、これら2つの解を読みだす。これらを上述した式(a)に代入すると、一方のユーザ装置100におけるユーザ解生成部123は、6番目の解である(X)を生成することができる。ユーザ解生成部123は、次の解を生成するために(X)と(X)とをユーザ解記録部124に記録するとともに、ユーザ暗号化復号化部126に、生成した解である(X)を送る。
ユーザ暗号化復号化部126は、この解(X)を用いて送信対象データを暗号化する。暗号化の処理における解の用い方は実施形態の場合と同じで良い。送信対象データはユーザ暗号化復号化部126で暗号化され、暗号化データにされる。生成された暗号化データは、ユーザ暗号化復号化部126から出力部127へと送られる。
かかる暗号化データは、実施形態の場合と同様に、一方のユーザ装置100から、他方のユーザ装置100へと送られる。
【0070】
他方のユーザ装置100は、その送受信機構でユーザ装置100から送られてきた暗号化データを受取る。暗号化データは、送受信機構から、インターフェイス114を介して入力部121へと送られ、更には、ユーザ暗号化復号化部126へ送られる。
暗号化データを受取った、他方のユーザ装置100におけるユーザ暗号化復号化部126は暗号化データを復号化する。そのために、ユーザ暗号化復号化部126は、ユーザ解生成部123が生成した解を用いる。ユーザ暗号化復号化部126は、ユーザ解生成部123に解を生成させるべく、解を生成せよとの指示をユーザ解生成部123に送る。かかる指示を受取ると、ユーザ解生成部123は新たに解を生成する。
他方のユーザ装置100におけるユーザ解生成部123が解を生成する方法は、一方のユーザ装置100のユーザ解生成部123が採用している方法と同じであり、ユーザ解生成部123がユーザ解記録部124から読み出す初期解は、一方のユーザ装置100で用いられた初期解((X)と(X))と共通する。それにより、他方のユーザ装置100におけるユーザ解生成部123は、一方のユーザ装置100におけるユーザ解生成部123が生成するのと同じ新たな解を生成する。つまり、2つのユーザ装置100は、同期した解を生成することになる。
新たな解は、ユーザ解生成部123からユーザ暗号化復号化部126へと送られる。ユーザ暗号化復号化部126は、ユーザ解生成部123から新たな解を受取り、それを用いて、暗号化データを復号化する。復号化の方法は、実施形態の場合と同様である。ユーザ暗号化復号化部126で、暗号化データは復号化され、元の平文の送信対象データに戻される。
【0071】
変形例1の通信システムにおける以後の処理は、実施形態の場合と同様である。
他方のユーザ装置100から一方のユーザ装置100へ暗号化データが送信される場合には、以上の説明における一方のユーザ装置100と他方のユーザ装置100の役割が入れ替わる。
暗号化通信を行う必要がなくなったら、暗号化通信が終了する。
【0072】
なお、変形例1の通信システムでは、暗号化通信を行うS1005の過程で用いられる解は1つだけ、或いは固定であった。これに代えて、例えば共通鍵方式の暗号化通信を行うための共通鍵を次々と変更していくが如くに、暗号化或いは復号化に用いるための解を、特定ユーザ装置たる2つのユーザ装置100のユーザ解生成部123で、連続的に生成するようにすることも可能である。
上述したように、同じ直前の解(1つとは限らないが)を用いれば、2つのユーザ装置100におけるユーザ解生成部123は、同期した解を次々と生成することができる。同期された共通の解を、2つのユーザ装置100におけるユーザ解生成部123で次々と生成することによって、特定ユーザ装置たる2つのユーザ装置100は、同期された解を用いて暗号化通信を行うことができる。
新たな解を生成するタイミングとして採用しうるタイミングは、実施形態で説明した通りである。
特定ユーザ装置に含まれるユーザ装置100間で一度同期させた解を、当該特定ユーザ装置に含まれる2つのユーザ装置100間での以後の暗号化通信でも使用するか否かは、実施形態の場合と同様に自由である。
なお、実施形態では、初期解となる解を生成できない側のユーザ装置100に同期情報が送られる。もっとも、双方のユーザ装置100に同期情報を送信して、双方のユーザ装置100で自らの解を用いて同期情報から取り出した相手側のユーザ装置100でしか生成できない解のうちの任意の一方(例えば双方のユーザ装置100の間で決定したもの)を、初期解とすることも可能である。
【0073】
<変形例2>
変形例2の通信システムについて説明する。
変形例2の通信システムは、殆ど実施形態で説明した通信システムと同じである。両者の間で異なるのは以下の点である。
以下に説明する通信システムで上述の実施形態の通信システムと異なるのは、サーバ装置200と各ユーザ装置100とにおける解の同期のさせ方、及び特定ユーザ装置たる2つのユーザ装置100間での解の同期のさせ方のみである。
他の部分においては、変形例1と実施形態の通信システムの構成には違いがなく、またその使用方法、及び動作についても違いはない。
上述の実施形態では、各サーバ装置200は、すべてのユーザ装置100を管理しており、すべてのユーザ装置100と共通した解を生成でき、また、すべてのユーザ装置100に対して同期情報(第1同期情報又は第2同期情報)を送信することができるようにされていた。それに対して、変形例2のサーバ装置200の少なくとも一部は、多数のユーザ装置100のうちの一部しか管理していない。このような状況は、例えば、ユーザ装置100がスマートフォンである場合において、携帯電話キャリアである例えばA社、D社、S社のそれぞれが、自社ユーザが所有するユーザ装置100のみを管理しているような場合に生じうる。
【0074】
変形例2の通信システムに含まれるユーザ装置100は、ユーザ装置100-1~ユーザ装置100-1000の1000個であり、サーバ装置200はサーバ装置200-1~サーバ装置200-6の6つであるものとする。
各ユーザ装置100は、実施形態で説明したものとその構成は変わらないものとすることができる。サーバ装置200のうちサーバ装置200-1~サーバ装置200-4も同様である。もっとも、サーバ装置200のうち以下に説明するものはそれらの間で互いに暗号化通信を行うことが可能になっている。
【0075】
これには限られないが、変形例2では、サーバ装置200-1はユーザ装置100-1~ユーザ装置100-300を上述した意味で管理するものとする。つまり、サーバ装置200-1は、ユーザ装置100-1~ユーザ装置100-300のすべてにおいて発生する解と同期した解を発生させることが可能である。また、サーバ装置200-1は、ユーザ装置100-1~ユーザ装置100-300のうちの任意の2つのユーザ装置100に対して、同期情報(第1同期情報又は第2同期情報)を提供することができるようになっている。
同様に、サーバ装置200-2はユーザ装置100-301~ユーザ装置100-600を管理し、サーバ装置200-3はユーザ装置100-601~ユーザ装置100-800を管理するようになっている。また、サーバ装置200-4はユーザ装置100-1~ユーザ装置100-1000、つまりすべてのユーザ装置100を管理するようになっている。
そして、サーバ装置200-1とサーバ装置200-2は、それらの間で暗号化通信を実現できるようになっている。かかる暗号化通信は、実施形態において特定ユーザ装置たる2つのユーザ装置100の間で実現された、同期して発生させられる解を用いて行われる暗号化通信であっても良いし、そうでなくても良い。
他方、変形例2におけるサーバ装置200-5とサーバ装置200-6は、いずれのユーザ装置100をも第1実施形態で説明した意味では管理しない。ただし、サーバ装置200-5は、サーバ装置200-1、及びサーバ装置200-3との間で暗号化通信を行えるようになっており、サーバ装置200-6はサーバ装置200-2、及びサーバ装置200-4との間で暗号化通信を行えるようになっている。サーバ装置200-5が、サーバ装置200-1又はサーバ装置200-3との間で行う暗号化通信、及びサーバ装置200-6がサーバ装置200-2又はサーバ装置200-4との間で行う暗号化通信は、実施形態において特定ユーザ装置たる2つのユーザ装置100の間で実現された、同期して発生させられる解を用いて行われる暗号化通信であっても良いし、そうでなくても良い。
【0076】
以上の説明を、図7に示す。図中の太い矢印は、矢印で結ばれたサーバ装置200同士が暗号化通信を行うことができるということを示している。なお、図7ではネットワーク400は捨象する。
以上のような通信システムにおいては、もちろん、共通するサーバ装置200に管理されている任意の2つのユーザ装置100同士であって、特定ユーザ装置をなすものは、それらを共通して管理するサーバ装置200の下で、当該サーバ装置200から供給される同期情報(第1同期情報又は第2同期情報)を得ることができる。
つまり、ユーザ装置100-1~ユーザ装置100-300は、サーバ装置200-1から共通する同期情報を得ることができ、ユーザ装置100-301~ユーザ装置100-600は、サーバ装置200-2から共通する同期情報を得ることができ、ユーザ装置100-601~ユーザ装置100-800は、サーバ装置200-3から共通する同期情報を得ることができ、また、ユーザ装置100-1~ユーザ装置100-1000、つまりすべてのユーザ装置100は、サーバ装置200-4から同期情報を得ることができる。
【0077】
例えば、ユーザ装置100-1と、ユーザ装置100-2とが、同期して発生させられる解を用いての暗号化通信を実行するために、共通する初期解を必要とする状況が生じたとする。その場合、特定ユーザ装置であるユーザ装置100-1と、ユーザ装置100-2とは、上述した実施形態で説明したように、共通する2つの同期情報である第1同期情報と第2同期情報の提供を2つのサーバ装置200のそれぞれから受けることが必要となる。
その場合、ユーザ装置100-1とユーザ装置100-2は、それらを共通して管理するサーバ装置200-1と、サーバ装置200-4とに特定情報を送信することにより、サーバ装置200-1と、サーバ装置200-4の一方から第1同期情報を、サーバ装置200-1と、サーバ装置200-4の他方から第2同期情報をそれぞれ受取ることができる。第1同期情報と第2同期情報の生成方法、受取り方は、実施形態で説明した通りである。
それにより、ユーザ装置100-1とユーザ装置100-2とは、それぞれが受取った第1同期情報と第2情報に対して例えば、排他的論理和の演算を行うことによって、共通する初期解を得ることができる。
この初期解を用いて、ユーザ装置100-1とユーザ装置100-2とは、同期して発生させられる解を用いての暗号化通信を実行することができる。
この場合は、上述の第1実施形態の場合と同じである。サーバ装置200-1とサーバ装置200-4の管理者は、それらの管理者が共謀しない限り、ユーザ装置100-1とユーザ装置100-2とが用いる初期解を知ることができない。
【0078】
これに対して、例えば、ユーザ装置100-1と、ユーザ装置100-400とが、同期して発生させられる解を用いての暗号化通信を実行するために、共通する初期解を必要とする状況が生じたとする。その場合、特定ユーザ装置であるユーザ装置100-1と、ユーザ装置100-400とは、共通する2つの同期情報である第1同期情報と第2同期情報の提供を2つのサーバ装置200のそれぞれから受けることが必要となる。
ユーザ装置100-1とユーザ装置100-400とを共通して管理するサーバ装置200としては、サーバ装置200-4が存在する。したがって、ユーザ装置100-1と、ユーザ装置100-400とは、それらのどちらかがサーバ装置200-4に特定情報を送ることにより、サーバ装置200-4から、第1同期情報と第2同期情報の一方を得ることができる。しかしながら、ユーザ装置100-1とユーザ装置100-400の双方を管理するサーバ装置200が他に無いため、ユーザ装置100-1及びユーザ装置100-400は、どのサーバ装置200から第1同期情報と第2同期情報の他方の提供を受けるかが問題となる。
【0079】
変形例2では、この問題を次のように解決する。
例えば、ユーザ装置100-1は、自己を管理するサーバ装置200-1に特定情報を送る。この場合、サーバ装置200-1は、ユーザ装置100-1を管理しているものの、特定情報によって特定されるもう1つのユーザ装置100-400を管理していないため、特定情報によって特定されるユーザ装置100-400を管理しているサーバ装置200であって、自己が暗号化通信を実行することのできるサーバ装置200を探す。例えば、サーバ装置200-1は、各サーバ装置200に対して、ユーザ装置100-400を管理しているか否かの問い合わせを出す。そして、サーバ装置200-1は、ユーザ装置100-400を管理しているサーバ装置200として、サーバ装置200-2を見出す。
サーバ装置200-1とサーバ装置200-2の一方が、第1同期情報と第2同期情報の他方を生成する。そして、サーバ装置200-1とサーバ装置200-2の同期情報を生成したものが、サーバ装置200-1とサーバ装置200-2の同期情報を生成しなかったものに、暗号化した状態で第1同期情報と第2同期情報との他方を送る。暗号化された状態の第1同期情報と第2同期情報との他方を受取ったサーバ装置200-1又はサーバ装置200-2は、第1同期情報と第2同期情報の他方を平文に戻す。この状態で、第1同期情報と第2同期情報の他方は、サーバ装置200-1とサーバ装置200-2との間で共有された。
次いで、サーバ装置200-1は、解の同期ができていることにより暗号化通信を行うことができるユーザ装置100-1に、暗号化した第1同期情報と第2同期情報の他方を送り、サーバ装置200-2は、解の同期ができていることにより暗号化通信を行うことができるユーザ装置100-400に、暗号化した第1同期情報と第2同期情報の他方を送る。ユーザ装置100-1とユーザ装置100-400は、暗号化された第1同期情報と第2同期情報の他方を復号化する。それにより、ユーザ装置100-1とユーザ装置100-400は、共通の第1同期情報と第2同期情報の他方を持ち合った状態となる。
これにて、ユーザ装置100-1とユーザ装置100-400とは、共通の第1同期情報と第2同期情報とを持ち合った状態となる。それにより、ユーザ装置100-1とユーザ装置100-400とは、それぞれが受取った第1同期情報と第2情報に対して例えば、排他的論理和の演算を行うことによって、共通する初期解を得ることができる。
この初期解を用いて、ユーザ装置100-1とユーザ装置100-400とは、同期して発生させられる解を用いての暗号化通信を実行することができる。
この例では、サーバ装置200-4は、第1同期情報と第2同期情報の一方しか把握することができず、サーバ装置200-1とサーバ装置200-2とは第1同期情報と第2同期情報の他方しか把握することができない。したがって、サーバ装置200-1又はサーバ装置200-2の管理者と、サーバ装置200-4の管理者とが共謀しない限り、ユーザ装置100-1とユーザ装置100-400とが用いる初期解を知ることができない。
【0080】
このように、特定ユーザ装置としての2つのユーザ装置100をそれぞれ管理する2つのサーバ装置200であって、互いに暗号化通信を行うことが可能なもの同士が協働して1つのサーバ装置200が実行するべき処理を実行することにより、それら2つのサーバ装置200が管理しているユーザ装置100に対して、第1同期情報と第2同期情報の少なくとも一方を提供することが可能となる。
もちろん、互いに暗号化通信を行うことが可能な3つ以上のサーバ装置200に、それらの協働により、1つのサーバ装置200が実行するべき処理を実行させるようにすることも可能である。
【0081】
たとえば、ユーザ装置100-1とユーザ装置100-800とが、同期して発生させられる解を用いての暗号化通信を実行するために、共通する初期解を必要とする状況が生じたとする。その場合、特定ユーザ装置であるユーザ装置100-1と、ユーザ装置100-800とは、共通する2つの同期情報である第1同期情報と第2同期情報の提供を2つのサーバ装置200のそれぞれから受けることが必要となる。
ユーザ装置100-1とユーザ装置100-400とを共通して管理するサーバ装置200としては、サーバ装置200-4が存在する。したがって、ユーザ装置100-1と、ユーザ装置100-400とは、それらのどちらかが、サーバ装置200-4に特定情報を送ることにより、サーバ装置200-4から、第1同期情報と第2同期情報の一方を得ることができる。しかしながら、ユーザ装置100-1とユーザ装置100-800の双方を管理するサーバ装置200が他に無いため、ユーザ装置100-1及びユーザ装置100-400は、どのサーバ装置200から第1同期情報と第2同期情報の他方の提供を受けるかが問題となる。
【0082】
この問題は次のようにして解決される。
例えば、ユーザ装置100-1は、自己を管理するサーバ装置200-1に特定情報を送る。この場合、サーバ装置200-1は、ユーザ装置100-1を管理しているものの、特定情報によって特定されるもう1つのユーザ装置100-800を管理していないため、特定情報によって特定されるユーザ装置100-800を管理しているサーバ装置200であって、自己が暗号化通信を実行することのできるサーバ装置200を探す。しかしながら、そのようなサーバ装置200は存在しない。そこで、サーバ装置200-1は、自己が暗号化通信を実行することのできるサーバ装置200であって、ユーザ装置100-800を管理しているサーバ装置200であるサーバ装置200-3と暗号化通信を行うことのできるサーバ装置200を探す。例えば、サーバ装置200-1は、自己が暗号化通信を行える各サーバ装置200に対して、ユーザ装置100-800を管理しているサーバ装置200であるサーバ装置200-3と暗号化通信が可能か否かの問い合わせを出す。そして、サーバ装置200-1は、ユーザ装置100-800を管理しているサーバ装置200としてのサーバ装置200-3と暗号化通信を行うことができるサーバ装置200として、サーバ装置200-5を見出す。
平たく言えば、サーバ装置200-1は、サーバ装置200-5を介して、サーバ装置200-3と暗号化通信を行うことが可能である。
【0083】
それが判明したところで、サーバ装置200-1、サーバ装置200-3、サーバ装置200-5の一つが、第1同期情報と第2同期情報の他方を生成する。そして、サーバ装置200-1、サーバ装置200-3、サーバ装置200-5は、それらのうちの互いに暗号化通信を行うことができるもの同士が暗号化通信を行うことによって、第1同期情報と第2同期情報の他方を共有する。
それにより、第1同期情報と第2同期情報の他方は、サーバ装置200-1とサーバ装置200-3で共有されることになる。
次いで、サーバ装置200-1は、解の同期ができていることにより暗号化通信を行うことができるユーザ装置100-1に、暗号化した第1同期情報と第2同期情報の他方を送り、サーバ装置200-3は、解の同期ができていることにより暗号化通信を行うことができるユーザ装置100-800に、暗号化した第1同期情報と第2同期情報の他方を送る。ユーザ装置100-1とユーザ装置100-800は、暗号化された第1同期情報と第2同期情報の他方を復号化する。それにより、ユーザ装置100-1とユーザ装置100-800は、共通の第1同期情報と第2同期情報の他方を持ち合った状態となる。
これにて、ユーザ装置100-1とユーザ装置100-800とは、共通の第1同期情報と第2同期情報とを持ち合った状態となる。それにより、ユーザ装置100-1とユーザ装置100-800とは、それぞれが受取った第1同期情報と第2情報に対して例えば、排他的論理和の演算を行うことによって、共通する初期解を得ることができる。
この初期解を用いて、ユーザ装置100-1とユーザ装置100-800とは、同期して発生させられる解を用いての暗号化通信を実行することができる。
この例では、サーバ装置200-4は、第1同期情報と第2同期情報の一方しか把握することができず、サーバ装置200-1、サーバ装置200-3、サーバ装置200-5は第1同期情報と第2同期情報の他方しか把握することができない。したがって、同期情報の供給にかかわった4つのサーバ装置200の管理者のすべては、サーバ装置200-1、サーバ装置200-3、サーバ装置200-5のいずれかの管理者と、サーバ装置200-4の管理者とが共謀しない限り、ユーザ装置100-1とユーザ装置100-800とが用いる初期解を知ることができない。
【0084】
このように、特定ユーザ装置としての2つのユーザ装置100に対して、協働する3つ以上のサーバ装置200に1つのサーバ装置200としての処理を事項させることにより、第1同期情報又は第2同期情報(或いはその双方)を配布することが可能である。
ただし、第1同期情報と第2同期情報の一方の供給にかかわるサーバ装置200と、第1同期情報と第2同期情報の他方の供給にかかわるサーバ装置200には重複がないことが必要である。かかる重複があると、第1同期情報と第2同期情報の双方を把握することができる、ひいては、特定ユーザ装置で用いられる初期解を把握することのできるサーバ装置200が存在することとなる可能性があるからである。
【符号の説明】
【0085】
100 ユーザ装置
101 ディスプレイ
102 入力装置
121 入力部
122 主制御部
123 ユーザ解生成部
124 ユーザ解記録部
125 ユーザ初期解生成部
126 ユーザ暗号化復号化部
127 出力部
221 入力部
222 主制御部
223 サーバ装置解生成部
224 サーバ装置解記録部
225 同期情報生成部
227 出力部
228 基礎情報生成部
図1
図2
図3
図4
図5
図6
図7