(57)【要約】【課題】暗号化通信を行う２つの通信装置に共通の初期解を持たせるための安全な技術を提供する。【解決手段】多数のユーザ装置はすべて、同じ初期解を持つのであれば同じ条件下では同じ解を生成する機能を持ち、同じ初期解から連続して生成される同期した解を用いて暗号化通信を行えるようになっている。また、すべてのユーザ装置とサーバとは、同じ初期解を持ち、同じ条件下では同じ解を生成する機能を持ち同期した解を生成できる。サーバは、初期解を生成するために必要な初期解そのものではない情報である同期情報を生成し（Ｓ２００２）暗号化通信を行う２つのユーザ装置のうちの少なくとも一方に送信する（Ｓ２００３）。２つのユーザ装置は、その同期情報を利用して同じ初期解を生成する（Ｓ１００４）。その後２つのユーザ装置は暗号化通信を行う（Ｓ１００５）。【選択図】図６
2018093417.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムであって、
前記ユーザ装置はそれぞれ、
初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、
送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、
前記暗号化データを他の装置に送信するユーザ送信手段と、
前記暗号化データを他の装置から受信するユーザ受信手段と、
受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、
を有しているとともに、
暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、
且つ、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっており、
前記サーバ装置は、
前記特定ユーザ装置の一方から、前記特定情報を受信するサーバ受信手段と、
前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段と、
前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する同期情報生成手段と、
前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信するサーバ送信手段と、
を備えている、
通信システム。
【請求項２】
ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムを、前記多数のユーザ装置との組合せによって構成するサーバ装置であって、
前記ユーザ装置はそれぞれ、
初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、
送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、
前記暗号化データを他の装置に送信するユーザ送信手段と、
前記暗号化データを他の装置から受信するユーザ受信手段と、
受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、
を有しているとともに、
暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、
且つ、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっており、
前記特定ユーザ装置の一方から、前記特定情報を受信するサーバ受信手段と、
前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段と、
前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する同期情報生成手段と、
前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信するサーバ送信手段と、
を備えている、
サーバ装置。
【請求項３】
前記サーバ装置は、前記初期解を生成するための元となる前記解を前記同期情報として前記特定ユーザ装置としての前記ユーザ装置の双方に送るようになっているとともに、
前記特定ユーザ装置としての前記ユーザ装置はともに、前記サーバ装置から送られてきた前記解を用いて、それらの前記ユーザ解生成手段で同一の条件下で新たな前記解を生成して、生成された共通の前記解を前記初期解とするようになっており、
それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっている、
請求項２記載のサーバ装置。
【請求項４】
前記サーバ装置は、前記初期解を生成するための元となる前記解であって、前記特定ユーザ装置のうちの一方における前記ユーザ解生成手段で生成することが可能なものを、前記同期情報として前記特定ユーザ装置としての前記ユーザ装置の他方に送るようになっているとともに、
前記特定ユーザ装置のうちの前記同期情報を受取らなかった一方の前記ユーザ装置は、その前記ユーザ解生成手段で所定の条件下で生成した新たな前記解を初期値とするようになっているとともに、前記特定ユーザ装置のうち前記同期情報を受取った他方の前記ユーザ装置は、前記サーバ装置から送られてきた前記解を用いて、その前記ユーザ解生成手段で、一方の前記ユーザ装置における前記ユーザ解生成手段で新たな前記解が生成されるときの条件と同一の条件下で新たな前記解を生成しそれを前記初期解とするようになっており、
それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっている、
請求項２記載のサーバ装置。
【請求項５】
前記サーバ装置は、前記初期解となる前記解であって、前記特定ユーザ装置のうちの一方における前記ユーザ解生成手段で生成することが可能なものと、前記特定ユーザ装置のうちの他方における前記ユーザ解生成手段で生成することが可能なものとの双方に対して可逆的な演算を行って得た情報を、前記同期情報として前記特定ユーザ装置としての前記ユーザ装置のいずれかに送るようになっているとともに、
前記特定ユーザ装置のうちの前記同期情報を受取らなかった前記ユーザ装置は、その前記ユーザ解生成手段で所定の条件下で生成した新たな前記解を前記初期解とするようになっているとともに、前記特定ユーザ装置のうち前記同期情報を受取った前記ユーザ装置は、前記サーバ装置から送られてきた前記同期情報に対して、その前記ユーザ解生成手段で生成された新たな前記解を用いて前記可逆的な演算の逆算を行うことによって前記同期情報を受取らなかった前記ユーザ装置で生成される前記解と共通する前記解を前記同期情報から取出してそれを前記初期解とするようになっており、
それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっている、
請求項２記載のサーバ装置。
【請求項６】
前記サーバ装置は、前記初期解となる前記解と、前記特定ユーザ装置のうちの一方における前記ユーザ解生成手段で生成することが可能な前記解との双方に対して可逆的な演算を行って得た第１の情報を前記同期情報として一方の前記ユーザ装置に送るようになっているとともに、前記初期解となる前記解と、前記特定ユーザ装置のうちの他方における前記ユーザ解生成手段で生成することが可能な前記解との双方に対して可逆的な演算を行って得た第２の情報を前記同期情報として他方の前記ユーザ装置に送るようになっており、
前記特定ユーザ装置のうちの一方の前記ユーザ装置は、前記サーバ装置から送られてきた前記同期情報に対して、その前記ユーザ解生成手段で生成された新たな前記解を用いて前記可逆的な演算の逆算を行うことによって、前記第１の情報である前記同期情報から前記解を取出してそれを前記初期解とするようになっているとともに、前記特定ユーザ装置のうちの他方の前記ユーザ装置は、前記サーバ装置から送られてきた前記同期情報に対して、その前記ユーザ解生成手段で生成された新たな前記解を用いて前記可逆的な演算の逆算を行うことによって、前記第２の情報である前記同期情報から、一方の前記ユーザ装置で取出されたのと共通する前記解を取出してそれを前記初期解とするようになっており、
それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっている、
請求項２記載のサーバ装置。
【請求項７】
前記サーバ装置は、前記ユーザ装置のうちの少なくとも複数との間で同期された前記初期解を生成することができるようになっており、且つ互いに前記ネットワークを介した暗号化通信を行うことができるようになっている、複数の副サーバ装置からなり、
前記特定ユーザ装置が、２つの副サーバ装置のそれぞれとの間で同期された初期解を生成するようになっている場合には、それら２つの副サーバ装置、或いはそれらの双方と暗号化通信を行うことができるようになっている他の副サーバ装置との協働により、前記同期情報生成手段と、前記サーバ送信手段とを構成するようになっている、
請求項２記載のサーバ装置。
【請求項８】
請求項７記載の副サーバ装置。
【請求項９】
請求項２記載のサーバ装置との組合せによって前記通信システムを構成するユーザ装置であって、
初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、
送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、
前記暗号化データを他の装置に送信するユーザ送信手段と、
前記暗号化データを他の装置から受信するユーザ受信手段と、
受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、
を有しているとともに、
暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、前記特定ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、
前記サーバ装置から前記同期情報を受取ったときに、前記特定情報を用いて前記初期解を生成する手段を備えている、
ユーザ装置。
【請求項１０】
前記ユーザ送信手段と、前記ユーザ受信手段とを備えた所定の通信装置との組合せにより請求項９記載のユーザ装置を構成するためのコンピュータ装置であって、
前記ユーザ解生成手段と、前記ユーザ暗号化手段と、前記ユーザ復号化手段と、前記初期解を生成する前記手段とを備えている、
コンピュータ装置。
【請求項１１】
ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムを、前記多数のユーザ装置との組合せによって構成するサーバ装置にて実行される方法であって、
前記ユーザ装置はそれぞれ、
初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、
送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、
前記暗号化データを他の装置に送信するユーザ送信手段と、
前記暗号化データを他の装置から受信するユーザ受信手段と、
受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、
を有しているとともに、
暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、
且つ、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっており、
前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段を備えた前記サーバ装置が実行する、
前記特定ユーザ装置の一方から、前記特定情報を受信する過程と、
前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する過程と、
前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信する過程と、
を含む、
方法。
【請求項１２】
請求項９記載のユーザ装置にて実行される方法であって、
前記ユーザ装置が実行する、
前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信する過程、
前記同期情報を受取ったときに、前記特定情報を用いて前記初期解を生成する過程、
を含む方法。
【請求項１３】
ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムを、前記多数のユーザ装置との組合せによって構成するサーバ装置として、コンピュータを機能させるためのコンピュータプログラムであって、
前記ユーザ装置はそれぞれ、
初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、
送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、
前記暗号化データを他の装置に送信するユーザ送信手段と、
前記暗号化データを他の装置から受信するユーザ受信手段と、
受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、
を有しているとともに、
暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、
且つ、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっており、
前記コンピュータを、
前記特定ユーザ装置の一方から、前記特定情報を受信するサーバ受信手段と、
前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段と、
前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する同期情報生成手段と、
前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信するサーバ送信手段と、
して機能させるためのコンピュータプログラム。
【請求項１４】
請求項２記載のサーバ装置との組合せによって前記通信システムを構成するユーザ装置としてコンピュータを機能させるためのコンピュータプログラムであって、
前記コンピュータを、
初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、
送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、
前記暗号化データを他の装置に送信するユーザ送信手段と、
前記暗号化データを他の装置から受信するユーザ受信手段と、
受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、
前記サーバ装置から前記同期情報を受取ったときに、前記特定情報を用いて前記初期解を生成する手段と、
して機能させるためのものであり、
暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、前記特定ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようにする、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信技術、より詳細には暗号通信技術に関する。
【背景技術】
【０００２】
例えば、インターネット上でインターネット上に存在する店舗への支払いを行う、インターネットバンキングで自らの口座の残高を見たり第三者への送金を行う等という場合には、それらを行うユーザは自らの端末と上記店舗等のサーバとの間でインターネットを介して通信を行う。かかる通信ではもちろん、悪意の第三者による通信の盗聴を防ぐことが必要である。
金銭にまつわるサービスをインターネットで受ける場合における上述の如き場合はもちろん、それ以外の一般的な通信を行う場合にも、通信の盗聴を防ぐ目的で、暗号化通信の技術が広く用いられている。
【０００３】
そのような技術の１つとして、本願発明者は予てからある技術を開発し、その普及に勤めている。本願発明者が提唱する技術は、次のような技術である。
概略を説明すると、その技術では、２つの通信装置がインターネット等のネットワークを介して通信を行う。この場合、２つの通信装置は、連続して文字、数字、記号の少なくとも１つを所定数羅列したものである解を生成する解生成手段を備えている。かかる解生成手段は、初期解に基づいて解を生成するものであり同じ条件下で生成されたものが常に同じものとなるようになっている。つまり、解には初期値依存性がある。例を挙げるのであれば、解生成手段が生成する解は、擬似乱数である。
また、２つの通信装置は、暗号化手段を備えている。暗号化手段は、送信の対象となる送信対象データを、解生成手段で生成された解を用いて暗号化して暗号化データにする処理を実行する。また、２つの通信装置は、暗号化手段が生成した暗号化データを通信の相手方となる通信装置に送信する送信手段を備えている。
また、２つの通信装置は、暗号化データを通信の相手方となる通信装置から受信する受信手段を備えている。また、２つの通信装置は、受信した暗号化データを、解生成手段で生成された解を用いて復号化して送信対象データにする処理を実行する復号化手段を備えている。
そして、暗号化通信を行おうとしている２つの通信装置は、共通の初期解を有しており、それ故それらがともに持つ解生成手段で同じ解を生成することができるようになっている。本願発明では、そのような状況を、２つの装置が同期した解を生成することができるようになっている、と称することとする。そして、２つの通信装置が同期した解を生成することができるようになっていることにより、かかる通信装置における暗号化通信は、極めて安全なものとなる。
【０００４】
例えば、２つの装置が共通鍵方式の通信を実行する場合には、それら２つの装置は、暗号化或いは復号化の処理を規定するアルゴリズムと、そのアルゴリズムを実行する場合に用いられる共通鍵とを共有している。本願発明者が提唱する上述の通信装置では、通信を行う２つの通信装置における解生成手段で、上述のように次々と新しい同期された共通の解が生成される。そして、上記２つの通信装置における暗号化手段と復号化手段とは、それら共通する解を、共通のタイミングで変化する共通鍵として用いることにより、極めて高い通信の安全性を実現する。
本願発明者が提唱する上述の通信装置は、通信毎に解を発生させるのみならず、送信対象データを暗号化する場合の複数のタイミングで、最も頻繁な場合には、送信対象データを切断することにより、暗号化又は復号化の処理を一度に行う対象となる一単位のデータが生成される毎に新たな解を発生させることも可能である。つまり、本願発明者が提唱する上述の通信装置は、少なくとも１回の通信が行われる度に、場合によってはそれ以上のより頻繁なタイミングで暗号化通信を実行する場合の共通鍵を更新する、例えるなら、使い捨ての共通鍵を次々に生成して暗号化通信を行うものであるから、その暗号の強度が極めて高いのである。
なお、一応付言すると、上述の解によって変更される対象は、必ずしも共通鍵その他の鍵である必要はなく、アルゴリズムの方であっても構わない。
【０００５】
上述の通信装置においては、２つの通信装置における解生成手段で生成される解が互いに同期されていることが重要であり、かかる解の同期が達成できないのであれば２つの通信装置は暗号化通信を行うことができない。したがって、２つの通信装置は、暗号化通信を行う前に、解を同期させるために必要となる同じ初期解を共有することが要求される。
しかしながら、それが難しい場合もある。それは、通信装置が多数であって、且つそれら多数の通信装置のうちの２つが暗号化通信を行うような場合である。例えば、多数のパーソナルコンピュータ、携帯電話、スマートフォンが上述の通信装置である場合において、それら通信装置のうちの２つが通信の一例となる電子メールのやり取りを行う場合には、それら２つの通信装置が、通信の開始前に共通する初期解を持つ必要がある。この場合において、暗号化通信を行う必要のある２つの通信装置の対の数は膨大であり、そのすべての対における２つの通信装置に対して共通の初期解を持たせるのには手間がかかり、また困難である。
【０００６】
もっとも本願発明者は、２つの通信装置に共通の初期解をどのようにして持たせるかという上述の問題を解決するための技術をも既に提案している。その技術は、インターネットに接続される多数の通信装置以外に、２つの通信装置間での暗号化通信を管理する、これもインターネットに接続される制御装置を用意するというものである。かかる制御装置は、暗号化通信を開始する前の２つの通信装置に対して共通の初期解を送信するようになっている。
それにより、２つの通信装置は、共通の初期解を得て、同期した解をそれらの持つ解生成手段で生成できるようになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−１７７６８４
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、制御装置から２つの通信装置に対して初期解を送信した場合には、制御装置から２つの通信装置に対して送信される初期解を第三者に盗まれる可能性があり、更にはその初期解を悪用され２つの通信装置の間で行われる暗号化通信を盗聴される可能性がある。
制御装置から２つの通信装置に対して送信される初期解を暗号化し、２つの通信装置で暗号化された初期解を復号化して用いることにすればそのような事態が生じる可能性を抑制することはできるが、暗号化されているとはいえ、初期解自体をインターネット上で送信することによるリスクを完全に消し去ることはできない。
【０００９】
本願発明は、多数の通信装置のうちの暗号化通信を行おうとする２つの通信装置に、暗号化通信に用いる同期された連続した解を生成するために必要となる共通の初期解を持たせるための、安全性の高い技術を提供することをその課題とする。
【課題を解決するための手段】
【００１０】
上述の課題を解決するための本願発明は、以下のようなものである。
本願発明は、ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムである。
かかる通信システムに含まれる前記ユーザ装置はそれぞれ、初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、前記暗号化データを他の装置に送信するユーザ送信手段と、前記暗号化データを他の装置から受信するユーザ受信手段と、受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、を有している。また、各ユーザ装置は、暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっている。更に各ユーザ装置は、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっている。
他方、前記サーバ装置は、前記特定ユーザ装置の一方から、前記特定情報を受信するサーバ受信手段と、前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段と、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する同期情報生成手段と、前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信するサーバ送信手段と、を備えている。
【００１１】
本願発明におけるユーザ装置とサーバ装置とは、背景技術の欄で説明した通信装置と制御装置とにそれぞれ該当する。
各ユーザ装置は、背景技術の欄で説明した通信装置における解生成手段に相当するユーザ解生成手段を備えており、かかるユーザ解生成手段で解を連続して生成することが可能となっている。ユーザ装置のうちの暗号化通信を行う２つのユーザ装置である特定ユーザ装置は、それらが共通の初期解を持っている場合には、背景技術の欄で説明した通信装置と同様に、そのユーザ解生成手段で同期された状態で同じ解を生成することができるようになっており、その解を用いて暗号化通信を行えるようになっている。
他方、背景技術の欄で説明した制御装置に相当する本願発明におけるサーバ装置は、制御装置と同様に、特定ユーザ装置が同じ初期解を持てるようにするための機能を有している。サーバ装置は、各ユーザ装置が持つユーザ解生成手段と同様のサーバ解生成手段を備えている。サーバ解生成手段は、ユーザ装置のそれぞれが持つユーザ解生成手段で生成される解と同じ、ユーザ装置のそれぞれのユーザ解生成手段で生成されるものと同期された前記解を生成することができる。サーバ装置は、特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に対して、同期情報を送る。同期情報は、初期解そのものではなく、同期情報を受取ったユーザ装置が、その同期情報に基づいて初期解を生成することのできる情報であって、サーバ解生成手段によって生成された解を用いて、或いはその解に基づいて生成されるものである。本願発明では、サーバ装置が、同期情報を特定ユーザ装置のうちの少なくとも片方のユーザ装置に送るようになっているが、かかる同期情報は初期解そのものではないから、仮にそれを悪意の第三者に盗まれたとしてもその悪意の第三者は、ユーザ装置間で行われる暗号化通信を盗聴することはできない。なお、サーバ装置が同期情報を送る相手方が、特定ユーザ装置のうちの片方のユーザ装置のみである場合には、特定ユーザ装置のうちの双方のユーザ装置に同期情報を送る場合よりも、同期情報を盗まれる可能性が下がるから、ユーザ装置間で行われる暗号化通信を盗聴される可能性はより低くなる。
もちろん、サーバ装置は、暗号化してから同期情報を特定ユーザ装置のうちの少なくとも片方のユーザ装置に送っても良い。この場合にサーバ装置とユーザ装置との間で実行される暗号化通信は、どのようなもの例えば、公知、周知の暗号化通信でも良いし、本願発明者が提唱しているような、連続して発生される解を用いてのものであっても良い。サーバ装置は、すべてのユーザ装置におけるユーザ解生成手段で発生されるのと同じ解を生成することのできるサーバ解生成手段を備えているので、すべてのユーザ装置と、発生される解を同期させることが可能である。つまり、サーバ解生成手段を備えたサーバ装置は、ユーザ装置間で実行される暗号化通信と同様の暗号化通信をユーザ装置との間で実行することに対して特に困難はない。
【００１２】
上述のように、本願発明では、特定ユーザ装置を構成する２つのユーザ装置間で暗号化通信が行われる場合、両ユーザ装置のユーザ解生成手段のそれぞれで同期した解が生成される。また、本願発明におけるサーバ装置のサーバ解生成手段と各ユーザ装置のユーザ解生成手段とは、同期した解を生成可能とされる。
これら２つの場合における解の同期のさせ方について説明する。２つのユーザ解生成手段で同期された解が生成される場合と、サーバ解生成手段とユーザ解生成手段とで同期された解が生成される場合とで解の同期のさせ方は変わらないので、簡単のため、以下の説明では、ユーザ解生成手段もサーバ解生成手段も単に「解生成手段」と称することにする。
解生成手段は、初期解を、その時点の時刻を変数として含む数式に代入することによって生成されるようなものになっていてもよい。これにより、離れた場所にある２つの独立した装置における解生成手段は、同期した解を生成できることになる。これは、インターネットバンキング等の分野で広く実用化されているトークン等で既に実用化されている時間同期と称される同期の方法に程近いものである。
他方、解生成手段で解を生成するための手法は、例えば、過去の解を所定の数式に代入することで新しい解を得て、次にその解を同じ数式に代入することで新しい解を得る、というようなものとすることができる。これは、上述の如きトークン等で既に実用化されているイベント同期と称される同期の方法に程近いものである。イベント同期が採用される場合、２つの解生成手段で生成される解は、同じ順番で生成されたもの同士を比較すると同じになるようになっている。例えば、２つの解生成手段は、解をＸとして、Ｘｎ＋１＝ｆ（Ｘｎ）という関数により、次の解を生成するというアルゴリズムにより解を生成するようなものとなっていてもよい。この場合、解生成手段は、直前に作った解を保持しておき、その前に生成した解をすべて削除するようになっていてもよい。つまり、次の解を生成するために必要な解のみを解生成手段が保持するようにすることが可能である。この場合、解生成手段は、例えば、４番目の解を生成するのであれば、保持していた３番目の解であるＸ３をＸｎ＋１＝ｆ（Ｘｎ）の式にＸ４＝ｆ（Ｘ３）のように代入することにより、４番目の解を生成する。なお、過去の複数の解を用いて、例えば、Ｘｎ＋１＝ｆ（Ｘｎ）＋ｆ（Ｘｎ−１）の如き数式を用いるのであれば、解生成手段が保持すべき解は、その直前に使われた２つの解となる。このように新しい解を生成するために解生成手段で使用される解は、必ずしも１つとは限らない。そして、この場合における初期解は、２つとなる。このように初期解は必ずしも１つとは限らず、複数である場合がある。
【００１３】
本願発明者は、上述の如き通信システムを構成するためのサーバ装置をも、本願発明の一態様として提案する。かかるサーバ装置の効果は、上述の通信システムの効果に同じである。
本願発明の一例となるサーバ装置は、ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムを、前記多数のユーザ装置との組合せによって構成するサーバ装置である。
この場合における前記ユーザ装置はそれぞれ、初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、前記暗号化データを他の装置に送信するユーザ送信手段と、前記暗号化データを他の装置から受信するユーザ受信手段と、受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、を有している。また、各ユーザ装置は、暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっている。また、各ユーザ装置は、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっている。
そして、サーバ装置は、前記特定ユーザ装置の一方から、前記特定情報を受信するサーバ受信手段と、前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段と、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する同期情報生成手段と、前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信するサーバ送信手段と、を備えている。
本願発明者は、このようなサーバ装置と組合せて本願発明の通信システムを構成するユーザ装置をも、本願発明の一態様として提案する。かかるユーザ装置の効果は、上述の通信システムの効果に同じである。
一例となるユーザ装置は、初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、前記暗号化データを他の装置に送信するユーザ送信手段と、前記暗号化データを他の装置から受信するユーザ受信手段と、受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、を有している。また、ユーザ装置は、暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、前記特定ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっている。また、ユーザ装置は、前記サーバ装置から前記同期情報を受取ったときに、前記特定情報を用いて前記初期解を生成する手段を備えている。
また、本願発明者は、前記ユーザ送信手段と、前記ユーザ受信手段とを備えた所定の通信装置との組合せにより本願発明によるユーザ装置を構成するためのコンピュータ装置であって、前記ユーザ解生成手段と、前記ユーザ暗号化手段と、前記ユーザ復号化手段と、前記初期解を生成する前記手段とを備えている、コンピュータ装置をも、本願発明の一態様として提案する。ここで、所定の通信装置の一例は、スマートフォン、或いは携帯電話であって、コンピュータ装置の一例は、所定の通信装置に搭載可能なＳＩＭカード（Subscriber Identity Module Card）である。
【００１４】
前記サーバ装置は、前記初期解を生成するための元となる前記解を前記同期情報として前記特定ユーザ装置としての前記ユーザ装置の双方に送るようになっていてもよい。この場合、前記特定ユーザ装置としての前記ユーザ装置はともに、前記サーバ装置から送られてきた前記解を用いて、それらの前記ユーザ解生成手段で同一の条件下で新たな前記解を生成して、生成された共通の前記解を前記初期解とするようになっていてもよく、それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっていてもよい。
この場合サーバ装置は、同期情報としての解を特定ユーザ装置である２つのユーザ装置の双方に送信する。かかる解は、サーバ解生成手段で生成されたものであっても良いし、そうでなくても良い。ユーザ装置のユーザ解生成手段は、当該解に基いて少なくとも１つの解を生成し、その生成された解を、初期解として用いる。つまり、この場合にサーバ装置から２つのユーザ装置に送られる解は、２つのユーザ装置が暗号化通信を行う場合における解を生成するための初期解ではなく、２つのユーザ装置におけるユーザ解生成手段が共通する初期解を生成するための初期解として用いられるのである。上述したように、共通した解を有するユーザ解生成手段は、同一の条件下においては、同じ解を同期して生成できるようになっている。同期情報としての解をサーバ装置から与えられた２つのユーザ装置におけるユーザ解生成手段は、同一の条件を互いに共有してさえいれば、同じ解を生成することができるから、その新たに生成した共通する解を初期解として用いることができるのである。
２つのユーザ装置のユーザ解生成手段は、上述の同一の条件を、予め共有していても良いし、サーバ装置から送信される情報によって共有しても良い。かかる条件は、例えば、ユーザ解生成手段が、上述したトークン等における時間同期に程近い方法で解の同期を取るようなものとなっているのであれば、『特定の時間（その時間は、過去でも良いし、まだ到来していない時間でも構わない。例えば、「その解を受取った日の１００日後の０時０分」とすることができる。）にその解を初期解として生成される解を新たな初期解とする』、というようなものとすることができる。また、かかる条件は、例えば、ユーザ解生成手段が、上述したトークン等におけるイベント同期に程近い方法で解の同期を取るようなものとなっているのであれば、『その解を初期解として生成される何番目、例えば３番目の解を新たな初期解とする』、というようなものとすることができる。
いずれの場合においても、サーバ装置から２つのユーザ装置に送られた解である同期情報は、特定ユーザ装置が暗号化通信を行う場合における初期解として用いられることはなく、当該初期解を生成するためにのみ用いられる。したがって、万が一同期情報を第三者に盗まれたとしてもそれによって特定ユーザ装置が行う暗号化通信を第三者に盗聴されることはない。
【００１５】
前記サーバ装置は、前記初期解を生成するための元となる前記解であって、前記特定ユーザ装置のうちの一方における前記ユーザ解生成手段で生成することが可能なものを、前記同期情報として前記特定ユーザ装置としての前記ユーザ装置の他方に送るようになっていてもよい。この場合、前記特定ユーザ装置のうちの前記同期情報を受取らなかった一方の前記ユーザ装置は、その前記ユーザ解生成手段で所定の条件下で生成した新たな前記解を初期値とするようになっているとともに、前記特定ユーザ装置のうち前記同期情報を受取った他方の前記ユーザ装置は、前記サーバ装置から送られてきた前記解を用いて、その前記ユーザ解生成手段で、一方の前記ユーザ装置における前記ユーザ解生成手段で新たな前記解が生成されるときの条件と同一の条件下で新たな前記解を生成しそれを前記初期解とするようになっていてもよく、それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっていてもよい。
この場合サーバ装置は、同期情報としての解を特定ユーザ装置である２つのユーザ装置の他方に送信する。かかる解は、特定ユーザ装置である２つのユーザ装置のうちの一方のユーザ解生成手段で生成することが可能なものである。上述したように、サーバ装置のサーバ解生成手段は、すべてのユーザ装置のユーザ解生成手段で生成される解と同期した解を生成することができる。したがって、ユーザ装置は、特定ユーザ装置である２つのユーザ装置のうちの一方のユーザ解生成手段で生成することが可能な解を把握することができるのである。
この場合、特定ユーザ装置のうちの同期情報を受取らなかった一方のユーザ装置は、そのユーザ解生成手段で所定の条件下で生成した新たな前記解を初期値とする。また、特定ユーザ装置のうち同期情報を受取った方のユーザ装置は、サーバ装置から送られてきた解を用いて、そのユーザ解生成手段で、一方のユーザ装置におけるユーザ解生成手段で新たな解が生成されるときの条件と同一の条件下で新たな解を生成しそれを初期解とする。つまり、特定ユーザ装置のうちの一方のユーザ装置は、自前の解（初期解）を用いて、特定ユーザ装置間で暗号化通信を行う際における初期解を生成し、特定ユーザ装置のうちの他方のユーザ装置は、サーバ装置から送られてきた同期情報としての解を初期解を生成するための初期解として用いることによって初期解を生成するのである。
２つのユーザ装置の解生成手段で共有されるべき同一の条件は、この場合においても、２つのユーザ装置間で予め共有されていても良いし、サーバ装置から送信される情報によって共有されても良い。条件の内容自体は上述したものと同様である。
この場合においても、サーバ装置から特定ユーザ装置における他方のユーザ装置に送られた解である同期情報は、特定ユーザ装置が暗号化通信を行う場合における初期解として用いられることはなく、当該初期解を生成するためにのみ用いられる。したがって、万が一同期情報を第三者に盗まれたとしてもそれによって特定ユーザ装置が行う暗号化通信を第三者に盗聴されることはない。しかも、この場合には、特定ユーザ装置における一方のユーザ装置には同期情報すら送られない。したがって、サーバ装置と上記一方のユーザ装置との間では、同期情報が盗まれる可能性すら、理論上存在しない。
【００１６】
前記サーバ装置は、前記初期解となる前記解であって、前記特定ユーザ装置のうちの一方における前記ユーザ解生成手段で生成することが可能なものと、前記特定ユーザ装置のうちの他方における前記ユーザ解生成手段で生成することが可能なものとの双方に対して可逆的な演算を行って得た情報を、前記同期情報として前記特定ユーザ装置としての前記ユーザ装置のいずれかに送るようになっていてもよい。この場合、前記特定ユーザ装置のうちの前記同期情報を受取らなかった前記ユーザ装置は、その前記ユーザ解生成手段で所定の条件下で生成した新たな前記解を前記初期解とするようになっているとともに、前記特定ユーザ装置のうち前記同期情報を受取った前記ユーザ装置は、前記サーバ装置から送られてきた前記同期情報に対して、その前記ユーザ解生成手段で生成された新たな前記解を用いて前記可逆的な演算の逆算を行うことによって前記同期情報を受取らなかった前記ユーザ装置で生成される前記解と共通する前記解を前記同期情報から取出してそれを前記初期解とするようになっていてもよく、それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっていてもよい。
この場合サーバ装置は、同期情報を特定ユーザ装置であるユーザ装置のいずれかに送信する。かかる同期情報は、特定ユーザ装置である２つのユーザ装置のユーザ解生成手段で生成することができる２つの解に対して可逆的な演算を行うことによって得られるものである。典型的には、これらの同期情報は、２つの解を乗算したものとすることができ、或いは２つの解の排他的論理和を取ったものとすることができる。上述のように、サーバ装置のサーバ解生成手段は、すべてのユーザ装置のユーザ解生成手段で生成される解と同期した解を生成することができる。したがって、ユーザ装置は、特定ユーザ装置である２つのユーザ装置の双方におけるユーザ解生成手段で生成することが可能な解をともに把握することができる。それ故、把握したそれら２つの解に対して上述の如き可逆的な演算を行うことにより、サーバ装置は、上述した如き同期情報を得ることができるのである。この同期情報は、特定ユーザ装置中の２つのユーザ装置のうちのいずれかのユーザ装置に送られる。
同期情報を受取ったユーザ装置は、自らのユーザ解生成手段で生成した新たな解を用いて、同期情報に対して上述の可逆的演算の逆の演算である逆算を行う。例えば、サーバ装置で同期情報を得るために実行される上述の可逆的演算が乗算であるのであれば、ユーザ装置は、自らのユーザ解生成手段で生成した解により、同期情報を割る除算を行う。そうすると、同期情報を受取ったユーザ装置は、そのユーザ装置では本来得ることのできない、同期情報を受け取っていない側のユーザ装置のユーザ解生成手段でなら生成することのできる解を手に入れることができる。言い換えれば、同期情報を受けったユーザ装置は、同期情報から、同期情報を受け取っていない側のユーザ装置のユーザ解生成手段でなら生成することのできる解を取出すことができる。これを、同期情報を受取ったユーザ装置は初期解とする。他方、同期情報を受取っていないユーザ装置は、自らのユーザ解生成手段で生成した解を初期解とする。かかる解は、同期情報を受取ったユーザ装置が初期解とした解と一致させることができる。
この場合には、同期情報を受取らなかったユーザ装置のユーザ解生成手段で解を生成するときの条件と、サーバ装置のサーバ解生成手段で同期情報を生成するために用いられた解を生成するときの条件とを一致させる必要がある。かかる条件は、当該ユーザ装置とサーバ装置との間で予め共有されていても良いし、サーバ装置から当該ユーザ装置に送信される情報によって、両者の間で共有されても良い。条件の内容自体は上述したものと同様である。
この場合においても、サーバ装置から特定ユーザ装置のうちのいずれかのユーザ装置に送られた解である同期情報は、特定ユーザ装置が暗号化通信を行う場合における初期解として用いられることはなく、当該初期解を生成するためにのみ用いられる。したがって、万が一同期情報を第三者に盗まれたとしてもそれによって特定ユーザ装置が行う暗号化通信を第三者に盗聴されることはない。しかも、この場合には、特定ユーザ装置におけるユーザ装置のうちの片方には同期情報すら送られない。したがって、サーバ装置とかかるユーザ装置との間では、同期情報が盗まれる可能性すら、理論上存在しない。
【００１７】
前記サーバ装置は、前記初期解となる前記解と、前記特定ユーザ装置のうちの一方における前記ユーザ解生成手段で生成することが可能な前記解との双方に対して可逆的な演算を行って得た第１の情報を前記同期情報として一方の前記ユーザ装置に送るようになっているとともに、前記初期解となる前記解と、前記特定ユーザ装置のうちの他方における前記ユーザ解生成手段で生成することが可能な前記解との双方に対して可逆的な演算を行って得た第２の情報を前記同期情報として他方の前記ユーザ装置に送るようになっていてもよい。この場合、前記特定ユーザ装置のうちの一方の前記ユーザ装置は、前記サーバ装置から送られてきた前記同期情報に対して、その前記ユーザ解生成手段で生成された新たな前記解を用いて前記可逆的な演算の逆算を行うことによって、前記第１の情報である前記同期情報から前記解を取出してそれを前記初期解とするようになっているとともに、前記特定ユーザ装置のうちの他方の前記ユーザ装置は、前記サーバ装置から送られてきた前記同期情報に対して、その前記ユーザ解生成手段で生成された新たな前記解を用いて前記可逆的な演算の逆算を行うことによって、前記第２の情報である前記同期情報から、一方の前記ユーザ装置で取出されたのと共通する前記解を取出してそれを前記初期解とするようになっていてもよく、それにより前記特定ユーザ装置間で前記解を同期させることを可能とするようになっていてもよい。
この場合サーバ装置は、同期情報を特定ユーザ装置である２つのユーザ装置の双方に送信する。この場合、２つのユーザ装置に送られる同期情報は、異なるものとなる。特定ユーザ装置である２つのユーザ装置のうちの一方に送られる同期情報は、初期解となる解と、特定ユーザ装置のうちの一方におけるユーザ解生成手段で生成することが可能な解との双方に対して可逆的な演算を行って得た第１の情報である。特定ユーザ装置である２つのユーザ装置のうちの他方に送られる同期情報は、初期解となる解と、特定ユーザ装置のうちの他方におけるユーザ解生成手段で生成することが可能な解との双方に対して可逆的な演算を行って得た第２の情報である。可逆的な演算の例は上述した通りである。サーバ装置のサーバ解生成手段は上述のように、すべてのユーザ装置におけるユーザ解生成手段で生成される解と同期した解を生成することができるから、特定ユーザ装置である２つのユーザ装置の双方におけるユーザ解生成手段で生成される解を生成することができる。それら２つの解のそれぞれと、後に特定ユーザ装置で初期解として用いられることになる同じ解とに対して可逆的な演算を行うことにより、サーバ装置は、上述した第１の情報と第２の情報とを生成することができる。後に特定ユーザ装置で初期解として用いられることになる上述の解は、サーバ解生成手段で生成されたものであっても良いし、そうでなくても良い。第１の情報についての同期情報は、特定ユーザ装置中の２つのユーザ装置の一方へ、第２の情報についての同期情報は、特定ユーザ装置中の２つのユーザ装置の他方へそれぞれ送られる。
第１の情報についての同期情報を受取った特定ユーザ装置中のユーザ装置の一方は、自らのユーザ解生成手段で生成された解を用いて、同期情報に対して上述の可逆的演算の逆の演算である逆算を行う。そうすると一方のユーザ装置は、そのユーザ装置では本来得ることのできない、サーバ装置が準備した解を手に入れることができる。言い換えれば、同期情報を受けった一方のユーザ装置は、同期情報から、初期解となる解を取出すことができる。これを、一方のユーザ装置は初期解とする。他方、第２の情報についての同期情報を受取った特定ユーザ装置中のユーザ装置の他方は、自らのユーザ解生成手段で生成された解を用いて、同期情報に対して上述の可逆的演算の逆の演算である逆算を行う。そうすると、他方のユーザ装置は、そのユーザ装置では本来得ることのできない、サーバ装置が準備した解を手に入れることができる。言い換えれば、同期情報を受けった他方のユーザ装置は、同期情報から、初期解となる解を取出すことができる。これを、他方のユーザ装置は初期解とする。これは一方のユーザ装置における初期解と一致する。
この場合には、一方のユーザ装置のユーザ解生成手段で解を生成するときの条件と、サーバ装置のサーバ解生成手段で当該ユーザ装置に送る同期情報を生成する場合に用いられた当該ユーザ装置のユーザ解生成手段で生成する解を生成したときの条件とを一致させる必要がある。同様に、他方のユーザ装置のユーザ解生成手段で解を生成するときの条件と、サーバ装置のサーバ解生成手段で当該ユーザ装置に送る同期情報を生成する場合に用いられた当該ユーザ装置のユーザ解生成手段で生成する解を生成したときの条件とを一致させる必要がある。かかる条件は、それらユーザ装置それぞれとサーバ装置との間で予め共有されていても良いし、サーバ装置からそれらユーザ装置に送信される情報によって、両者の間で共有されても良い。条件の内容自体は上述したものと同様である。
この場合においても、サーバ装置から特定ユーザ装置のうちのいずれかのユーザ装置に送られた解である同期情報は、特定ユーザ装置が暗号化通信を行う場合における初期解として用いられることはなく、当該初期解を生成するためにのみ用いられる。したがって、万が一同期情報を第三者に盗まれたとしてもそれによって特定ユーザ装置が行う暗号化通信を第三者に盗聴されることはない。
【００１８】
前記サーバ装置は、１つの装置からなるものとされていても良いが、そのそれぞれがネットワークに接続可能とされた複数の装置である副サーバ装置を有していても良い。
例えば、前記サーバ装置は、前記ユーザ装置のうちの少なくとも複数との間で同期された前記初期解を生成することができるようになっており、且つ互いに前記ネットワークを介した暗号化通信を行うことができるようになっている、複数の副サーバ装置からなっていてもよい。この場合、前記特定ユーザ装置が、２つの副サーバ装置のそれぞれとの間で同期された初期解を生成するようになっている場合には、それら２つの副サーバ装置、或いはそれらの双方と暗号化通信を行うことができるようになっている他の副サーバ装置との協働により、前記同期情報生成手段と、前記サーバ送信手段とを構成するようになっていてもよい。
例えば、１００個のユーザ装置が存在するとし、各ユーザ装置に、ユーザ装置１〜ユーザ装置１００と付番したとする。この場合において、２個のサーバ装置が存在するとし、各サーバ装置に、副サーバ装置１〜副サーバ装置２と付番したとする。更に、副サーバ装置１と、ユーザ装置１〜ユーザ装置５０とは、同期された解を生成可能となっているとし、副サーバ装置２と、ユーザ装置５１〜ユーザ装置１００とは、同期された解を生成可能となっているとする。このような場合において、ユーザ装置１〜ユーザ装置５０の中の任意の２つのユーザ装置は、これまでに説明したような１つのサーバ装置、つまりユーザ装置１〜ユーザ装置５０のすべてと解を同期して発生させることのできる副サーバ装置１によって同期情報を供給されることによって共通した初期解を持つことが可能であり、それにより、同期した解を生成できるようになるので、以上に説明したような同期した解を用いた暗号化通信を実行できるようになる。他方、ユーザ装置５１〜ユーザ装置１００の中の任意の２つのユーザ装置は、ユーザ装置５１〜ユーザ装置１００のすべてと解を同期して発生させることのできる副サーバ装置２によって同期情報を供給されることによって共通した初期解を持つことが可能であり、それにより、同期した解を生成できるようになるので、以上に説明したような同期した解を用いた暗号化通信を実行できるようになる。
しかしながら、副サーバ装置１と、副サーバ装置２とが、互いに通信を行わず、或いはユーザ装置への同期情報の提供に関する協力を行わないのであれば、ユーザ装置１〜５０の中の任意の１つのユーザ装置と、ユーザ装置５１〜１００の中の任意の１つのユーザ装置とは、共通する初期解を持つことができず、それにより同期した解を持つことができず、結果として以上に説明したような同期した解を用いた暗号化通信を実行できないことになる。例えて言うなら、副サーバ装置１に紐付けられた、或いは管理されるユーザ装置１〜ユーザ装置５０と、副サーバ装置２に紐付けられた、或いは管理されるユーザ装置５１〜ユーザ装置１００とは、異なるグループに属するものであり、異なるグループに属するユーザ装置間では、共通する初期解を持つことができず、結果として以上に説明したような同期した解を用いた暗号化通信を実行できないことになるのである。
これに対して、サーバ装置を構成する複数の副サーバ装置が、互いにネットワークを介した暗号化通信を行うことができるようになっている場合には、共通の副サーバ装置からは同期情報を受取ることのできない、異なるグループに属する２つのユーザ装置（これらが特定ユーザ装置となる）は、それら２つのユーザ装置と同期した解を生成することのできる副サーバ装置から、必要に応じて（上述のように、特定ユーザ装置を構成するユーザ装置の少なくとも片方には同期情報が供給されない場合がある。）同期情報の供給を受けることが可能となる。つまり、そのそれぞれが同一のグループの中では以上で説明したサーバ装置として機能しうる副サーバ装置が協働することにより、協働することになった複数の副サーバ装置は、当該協働した複数の副サーバ装置に管理される異なるグループに属するものが含まれるより多くのユーザ装置に対する新たなサーバ装置であるかのように振る舞うことが可能となる。それにより、異なるグループに属するユーザ装置が、以上に説明したような同期した解を用いた暗号化通信を実行できることになるのである。
この場合、複数の副サーバ装置のどれにより、同期情報が生成されても良い。ある副サーバ装置が同期情報を生成するために必要な情報であってその副サーバ装置が他の副サーバ装置と協働していなければ得ることができない情報、例えば、ある副サーバ装置が属するのとは異なるグループに属するあるユーザ装置で発生される解についての情報は、そのユーザ装置が属するグループにおける副サーバ装置から、同期情報を生成する副サーバ装置に暗号化した状態でネットワークを介して提供することが可能である。また、ある副サーバ装置が生成した同期情報を、その副サーバ装置が属さないグループに属するあるユーザ装置に提供することが必要となった場合には、同期情報を生成した副サーバ装置は、同期情報を送るべきユーザ装置が属するグループを管理する副サーバ装置に生成した同期情報を送ることにより、その副サーバ装置を介して、同期情報を送るべきユーザ装置を送ることが可能となるのである。
実際の実施の場面では、例えば、各プロバイダが、そのプロバイダと契約したユーザ装置を管理する副サーバ装置を準備し、各プロバイダが準備した副サーバ装置が他のプロバイダが準備した副サーバ装置と協働するというようなことが考えられる。もちろん、各副サーバ装置を準備するのはプロバイダに限らず、例えば、SSL（Secure Sockets Layer）或いはTLS（Transport Layer Security）の仕組みで実用されている認証局の如き機関が各副サーバ装置を準備する、という実施の態様も考えられる。
なお、上述した例においては、通信を行おうとする２つの異なるグループに属する２つのユーザ装置は、それらユーザ装置がそれぞれ属するグループに属している、互いに共同する２つの副サーバ装置からそれぞれ必要に応じて同期情報を提供されるようになっており、且つそれら２つの副サーバ装置は、それらのみで協働して、それらの間で直接必要な情報をやり取りするようになっていた。もっとも、この場合における２つの副サーバ装置は、２つの副サーバ装置の間で直接、必要な情報をやり取りする必要はなく、他の副サーバ装置を介して、必要な情報をやり取りするようになっていてもよい。この場合の他の副サーバ装置は、上記２つの副サーバ装置のそれぞれと暗号化通信を行える必要があるものの、上記２つの副サーバ装置は暗号化通信を行えるようになっている必要はない。例えば、上述の例であれば、ある２つのプロバイダが準備した副サーバ装置が各々複数のユーザ装置を管理して、各々のグループを形成しているとする。しかし、この場合において、それら２つのプロバイダが準備した副サーバ装置同士が、それら２つのプロバイダが異なる国に存在する等の理由で、上述の如き協働関係を形成していないとする。そのような場合において、それら２つの副サーバ装置のそれぞれと協働しうる、言葉を変えれば、それら２つの副サーバ装置のそれぞれと信頼関係を既に築けている他の副サーバ装置が存在するのであれば、当該他の副サーバ装置を間に入れて、互いに協働関係を築けていない副サーバ装置同士が暗号化通信を行えば良い。かかる通信の経路がすべて暗号化通信を行うものとなっているのであれば、そこでやり取りされる同期情報を生成するために必要な情報も、生成された同期情報も、第三者に盗聴されることは無いはずである。かかる場合において、上述の他の副サーバ装置は、必ずしもユーザ装置を管理して上述の如きグループを作っている必要はなく、ユーザ装置を管理して上述の如きグループを作っている２つの副サーバ装置を仲介する役割のみを果たせるようになっていても良い。そのような点において、他の副サーバ装置は、ユーザ装置と直接繋がっている、上述の２つの副サーバ装置とは異なるといえる。例えて言うなら、この場合の他の副サーバ装置は、SSL或いはTLSにおける上級認証局のようなものである。上級認証局のように機能する「他の副サーバ装置」が、３つ以上の副サーバ装置の中に存在する場合には、「他の副サーバ装置」が同期情報を生成することも可能である。また、他の副サーバ装置は必ずしも１つである必要はなく、上述の２つの副サーバ装置の間に、複数の他の副サーバ装置が入ることも可能である。このような場合、例えば、２つの副サーバ装置の間に、３つの副サーバ装置が入る場合には、２つの副サーバ装置は、例えば、２つの副サーバ装置の一方−他の副サーバ装置−他の副サーバ装置−他の副サーバ装置−２つの副サーバ装置の他方、のように接続されることになる。ここで、「−」で表現された部分では、その両側の副サーバ装置が暗号化通信を行うことになる。
なお、各副サーバ装置間において実行される暗号化通信は、公知、或いは周知のものであってもよいが、本願で繰り返し説明されている、同期した解を用いた暗号化通信であっても構わない。この場合には、暗号化通信を行う副サーバ装置同士は、同期した解を生成するための手段、機能を備えている必要がある。
【００１９】
本願発明者は、上述の如き通信システムを構成するためのサーバ装置で実行される方法をも、本願発明の一態様として提案する。かかる方法の効果は、上述の通信システムの効果に同じである。
その方法の一例は、ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムを、前記多数のユーザ装置との組合せによって構成するサーバ装置にて実行される方法である。
その場合、前記ユーザ装置はそれぞれ、初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、前記暗号化データを他の装置に送信するユーザ送信手段と、前記暗号化データを他の装置から受信するユーザ受信手段と、受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、を有している。ユーザ装置は、また、暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、且つ、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっている。
かかる方法の発明は、また、前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段を備えた前記サーバ装置が実行する、前記特定ユーザ装置の一方から、前記特定情報を受信する過程と、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する過程と、前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信する過程と、を含む。
本願発明者は、上述の如き通信システムを構成するためのユーザ装置で実行される方法をも、本願発明の一態様として提案する。かかる方法の効果は、上述の通信システムの効果に同じである。
かかる方法の一例は、これまでに説明したユーザ装置の１つで実行される方法であり、前記ユーザ装置が実行する、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信する過程、前記同期情報を受取ったときに、前記特定情報を用いて前記初期解を生成する過程、を含む方法である。
【００２０】
本願発明者は、上述の如き通信システムを構成するためのサーバ装置として、例えば汎用のコンピュータを機能させるためのコンピュータプログラムをも、本願発明の一態様として提案する。かかるコンピュータプログラムの効果は、上述の通信システムの効果に同じである。
そのコンピュータプログラムの一例は、ネットワークを介して互いに通信可能とされた、多数のユーザ装置と、前記ユーザ装置間の通信の制御を行う前記ネットワークに接続されたサーバ装置と、を含んでなる通信システムを、前記多数のユーザ装置との組合せによって構成するサーバ装置として、コンピュータを機能させるためのコンピュータプログラムである。
前記ユーザ装置はそれぞれ、初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、前記暗号化データを他の装置に送信するユーザ送信手段と、前記暗号化データを他の装置から受信するユーザ受信手段と、受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、を有している。ユーザ装置は、また、暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、２つの前記ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようになっており、且つ、前記特定ユーザ装置の双方を特定する情報である特定情報を前記ユーザ送信手段により前記サーバ装置へ送信できるようになっている。
コンピュータプログラムは、前記コンピュータを、前記特定ユーザ装置の一方から、前記特定情報を受信するサーバ受信手段と、前記ユーザ装置のそれぞれにおいて異なる前記ユーザ装置における前記初期解と同一の前記初期解に基づいて、前記ユーザ装置のそれぞれが持つ前記ユーザ解生成手段で生成される前記解と同じ、前記ユーザ装置のそれぞれの前記ユーザ解生成手段で生成されるものと同期された前記解を生成することができるサーバ解生成手段と、前記特定ユーザ装置が同じ前記初期解を得て前記特定ユーザ装置間で前記解を同期させるために必要な情報である同期情報を前記サーバ解生成手段で生成される前記解を用いて生成する同期情報生成手段と、前記同期情報を、前記特定ユーザ装置のうちの少なくとも片方の前記ユーザ装置に送信するサーバ送信手段と、して機能させるためのものである。
本願発明者は、上述の如き通信システムを構成するためのユーザ装置として、例えば汎用のコンピュータを機能させるためのコンピュータプログラムをも、本願発明の一態様として提案する。かかるコンピュータプログラムの効果は、上述の通信システムの効果に同じである。
かかるコンピュータプログラムの一例は、これまでに説明したサーバ装置の１つとの組合せによって前記通信システムを構成するユーザ装置としてコンピュータを機能させるためのコンピュータプログラムである。
かかるコンピュータプログラムは、前記コンピュータを、初期解に基づいて、文字、数字、記号の少なくとも１つを所定数羅列したものである解であり、同じ条件下で生成されたものが常に同じものとなるものを連続して生成することができるユーザ解生成手段と、送信の対象となる送信対象データを、前記ユーザ解生成手段で生成された前記解を用いて暗号化して暗号化データにする処理を実行するユーザ暗号化手段と、前記暗号化データを他の装置に送信するユーザ送信手段と、前記暗号化データを他の装置から受信するユーザ受信手段と、受信した前記暗号化データを、前記ユーザ解生成手段で生成された前記解を用いて復号化して前記送信対象データにする処理を実行するユーザ復号化手段と、前記サーバ装置から前記同期情報を受取ったときに、前記特定情報を用いて前記初期解を生成する手段と、して機能させるためのものでる。
かかるコンピュータプログラムは、暗号化通信を行おうとしている２つの前記ユーザ装置である特定ユーザ装置が共通の前記初期解を互いに有している場合には、前記特定ユーザ装置間で同期された共通の前記解をそれらの前記ユーザ解生成手段でそれぞれ生成することにより、相手方の前記ユーザ暗号化手段で前記送信対象データを暗号化することにより生成された暗号化データであって、相手方の前記ユーザ送信手段から送られてきて自らの前記ユーザ受信手段により受取ったものを、自らの前記ユーザ復号化手段によって復号化して前記送信対象データにすることができるようになっていることで、前記特定ユーザ装置が暗号化通信を行えるようにする。
【図面の簡単な説明】
【００２１】
【図１】第１実施形態による通信システムの全体構成を示す図。
【図２】図１に示した通信システムに含まれるユーザ装置の外観を示す図。
【図３】図１に示した通信システムに含まれるユーザ装置のハードウェア構成を示す図。
【図４】図１に示した通信システムに含まれるユーザ装置の内部に生成される機能ブロックを示すブロック図。
【図５】図１に示した通信システムに含まれるサーバの内部に生成される機能ブロックを示すブロック図。
【図６】図１に示した通信システムで通信が行われるときに実行される処理の流れを示す図。
【図７】第２実施形態による通信システムの全体構成を示す図。
【図８】図７に示した通信システムにおけるサーバと、ユーザ装置との関係を概念的に示す図。
【図９】図７に示した通信システムにおいて、サーバからユーザ装置へと同期情報を提供するために構築される一例となる通信状態を概念的に示す図。
【図１０】図７に示した通信システムにおいて、サーバからユーザ装置へと同期情報を提供するために構築される他の通信状態を概念的に示す図。
【図１１】図７に示した通信システムにおいて、サーバからユーザ装置へと同期情報を提供するために構築される更に他の通信状態を概念的に示す図。
【発明を実施するための形態】
【００２２】
以下、本発明の好ましい第１、第２実施形態について説明する。
なお、各実施形態及びその変形例の説明では、共通の対象には重複する符号を付すものとし、且つ共通する説明は場合により省略するものとする。また、各実施形態及びそれらの変形例は、それらを組合せ或いはそれらの一部同士を置換することに特に矛盾することがない場合には、それらの２つ或いはそれ以上を適宜組合せ或いはそれらの一部を適宜置換することが可能である。
【００２３】
≪第１実施形態≫
図１に、本願発明の送受信システムの第１実施形態としての通信システムの全体構成を概略で示す。
第１実施形態の通信システムは、多数のユーザ装置１００−１〜１００−Ｎ（以後、単に、「ユーザ装置１００」と記載する場合もある。）、及びサーバ２００を含んで構成されている。これらはすべて、ネットワーク４００に接続可能とされている。
ネットワーク４００は、これには限られないが、この実施形態ではインターネットである。
この実施形態におけるユーザ装置１００は、本願でいうユーザ装置に相当するものである。また、この実施形態におけるサーバ２００は本願でいうサーバ装置に相当する。
ユーザ装置１００−１〜１００−Ｎは、それらのうちの２つが互いに通信を行うことを前提としている。ユーザ装置１００−１〜１００−Ｎは各ユーザが所有するものとされる。この実施形態ではその通信は後述するような、連続して発生させられる解を用いた暗号化通信であるものとするが、ユーザ装置１００−１〜１００−Ｎ暗号化通信に加えて暗号化通信以外の通信を行えるようになっていてももちろん構わない。かかる暗号化通信以外の通信は公知又は周知の技術によって実現すれば良い。ユーザ装置１００は、他のユーザ装置１００にネットワーク４００を介してホームページを閲覧させるためのコンピュータであってもよい。
サーバ２００は、この実施形態では１つであり、１つのサーバ２００が、すべてのユーザ装置１００を管理している。逆にいえば、この実施形態では、１つのサーバ２００が管理するユーザ装置１００のみを図１に図示している。
これには限られないが、この実施形態におけるサーバ２００は、ある程度の公的な性質を有する企業、例えば、SSLやTSLにおける認証局となれる程度の信用を持っている企業、或いは公的な団体が管理するものとすることができる。或いは、サーバ２００は、ユーザ装置１００がネットワーク４００に接続する場合においてそのネットワーク４００への接続をなすプロバイダがその管理を行うものとなっていてもよい。
【００２４】
ユーザ装置１００は、コンピュータを含んでいる。より詳細には、この実施形態におけるユーザ装置１００は、汎用のコンピュータにより構成されている。
【００２５】
次に、ユーザ装置１００の構成を説明する。各ユーザ装置１００−１〜１００−Ｎの構成は、本願発明との関連でいえば同じである。
ユーザ装置１００は、携帯電話、スマートフォン、タブレット、ノート型パソコン、デスクトップ型パソコン等である。それらはすべて、ネットワーク４００を介しての通信が可能なものであり、また後述するコンピュータプログラムをインストールすることによって後述する機能ブロックをその内部に生成し、そして後述する処理を実行できるものであることが求められ、それが可能であるのであればそれ以外の仕様は特に問わない。
例えば、ユーザ装置１００がスマートフォンかタブレットなのであれば、スマートフォンとしてのユーザ装置１００は例えば、Ａｐｐｌｅ  Ｊａｐａｎ合同会社が製造、販売を行うｉＰｈｏｎｅで良いし、タブレットとしてのユーザ装置１００は例えば、Ａｐｐｌｅ  Ｊａｐａｎ合同会社が製造、販売を行うｉＰａｄでよい。以下、これには限られないが、ユーザ装置１００がスマートフォンであることとして話を進める。
【００２６】
ユーザ装置１００の外観の一例を図２に示す。
ユーザ装置１００は、ディスプレイ１０１を備えている。ディスプレイ１０１は、静止画又は動画を表示するためのものであり、公知、或いは周知のものを用いることができる。ディスプレイ１０１は例えば、液晶ディスプレイである。ユーザ装置１００は、また入力装置１０２を備えている。入力装置１０２は、ユーザが所望の入力をユーザ装置１００に対して行うためのものである。入力装置１０２は、公知或いは周知のものを用いることができる。この実施形態におけるユーザ装置１００の入力装置１０２はボタン式のものとなっているが、これには限られず、テンキー、キーボード、トラックボール、マウスなどを用いることも可能である。特に、ユーザ装置１００がノート型パソコン、デスクトップ型パソコンである場合には、入力装置１０２はキーボードや、マウス等になるであろう。また、ディスプレイ１０１がタッチパネルである場合、ディスプレイ１０１は入力装置１０２の機能を兼ねることになり、この実施形態ではそうされている。
【００２７】
ユーザ装置１００のハードウェア構成を、図３に示す。
ハードウェアには、ＣＰＵ（central processing unit）１１１、ＲＯＭ（read only memory）１１２、ＲＡＭ（random access memory）１１３、インターフェイス１１４が含まれており、これらはバス１１６によって相互に接続されている。
ＣＰＵ１１１は、演算を行う演算装置である。ＣＰＵ１１１は、例えば、ＲＯＭ１１２、或いはＲＡＭ１１３に記録されたコンピュータプログラムを実行することにより、後述する処理を実行する。図示をしていないが、ユーザ装置１００は、ハードウェアはＨＤＤ（hard disk drive）その他の大容量記録装置を備えていてもよく、コンピュータプログラムは大容量記録装置に記録されていても構わない。
ここでいうコンピュータプログラムには、本願発明のユーザ装置としてこのユーザ装置１００を機能させるためのコンピュータプログラムが少なくとも含まれる。このコンピュータプログラムは、ユーザ装置１００にプリインストールされていたものであっても良いし、事後的にインストールされたものであっても良い。このコンピュータプログラムのユーザ装置１００へのインストールは、メモリカード等の所定の記録媒体を介して行なわれても良いし、ＬＡＮ或いはインターネットなどのネットワークを介して行なわれても構わない。
ＲＯＭ１１２は、ＣＰＵ１１１が後述する処理を実行するために必要なコンピュータプログラムやデータを記録している。ＲＯＭ１１２に記録されたコンピュータプログラムとしては、これに限られず、ユーザ装置１００がスマートフォンであれば、ユーザをスマートフォンとして機能させるために必要な、例えば、通話や電子メールを実行するためのコンピュータプログラムやデータが記録されている。ユーザ装置１００は、また、ネットワーク４００を介して受取ったデータに基づいて、ホームページを閲覧することも可能とされており、それを可能とするための公知のｗｅｂブラウザを実装している。
ＲＡＭ１１３は、ＣＰＵ１１１が処理を行うために必要なワーク領域を提供する。場合によっては、上述のコンピュータプログラムやデータが記録されていてもよい。
インターフェイス１１４は、バス１１６で接続されたＣＰＵ１１１やＲＡＭ１１３等と外部との間でデータのやり取りを行うものである。インターフェイス１１４には、上述のディスプレイ１０１と、入力装置１０２とが接続されている。入力装置１０２から入力された操作内容は、インターフェイス１１４からバス１１６に入力されるようになっている。また、周知のようにディスプレイ１０１に画像を表示するための画像データは、インターフェイス１１４から、ディスプレイ１０１に出力されるようになっている。
インターフェイス１１４は、また、インターネットであるネットワーク４００を介して外部と通信を行うための公知の手段である送受信機構（図示を省略）に接続されており、それにより、ユーザ装置１００は、ネットワーク４００を介してデータを送信することと、ネットワーク４００を介してデータを受信することとが可能になっている。かかるネットワーク４００を介してのデータの送受信は、有線で行われる場合もあるが無線で行われる場合もある。例えば、ユーザ装置１００がスマートフォンである場合には、かかる通信は無線で行われるのが通常であろう。それが可能な限り、送受信機構の構成は、公知或いは周知のものとすることができる。送受信機構がネットワーク４００から受取ったデータは、インターフェイス１１４により受取られるようになっており、インターフェイス１１４から送受信機構にわたされたデータは、送受信機構によって、ネットワーク４００を介して外部、例えば、他のユーザ装置１００かサーバ２００に送られるようになっている。送受信機構がネットワーク４００から受取るデータとしては、少なくともサーバ２００から送られてきた同期情報と、他のユーザ装置１００から送られてきた暗号化データがある。送受信機構から外部に送られるデータとしては、少なくともサーバ２００に送られる特定情報と、他のユーザ装置１００に送られる暗号化データがある。
【００２８】
ＣＰＵ１１１がコンピュータプログラムを実行することにより、ユーザ装置１００内部には、図４で示されたような機能ブロックが生成される。なお、以下の機能ブロックは、ユーザ装置１００を本願発明のユーザ装置として機能させるための上述のコンピュータプログラム単体の機能により生成されていても良いが、上述のコンピュータプログラムと、ユーザ装置１００にインストールされたＯＳその他のコンピュータプログラムとの協働により生成されても良い。
ユーザ装置１００内には、本願発明の機能との関係で、入力部１２１、主制御部１２２、ユーザ解生成部１２３、ユーザ解記録部１２４、ユーザ初期解生成部１２５、ユーザ暗号化復号化部１２６、出力部１２７が生成される。なお、以上の入力部１２１、主制御部１２２、ユーザ解生成部１２３、ユーザ解記録部１２４、ユーザ初期解生成部１２５、ユーザ暗号化復号化部１２６、出力部１２７の機能は、ユーザ装置１００に内蔵されたＳＩＭカード上に存在していても構わない。その場合、それらの機能は、ユーザ装置１００にインストールされたコンピュータプログラムによって生成されるものとは限らない。
【００２９】
入力部１２１は、インターフェイス１１４からの入力を受取るものである。
インターフェイス１１４からの入力には、例えば、入力装置１０２によって入力された特定情報がある。特定情報は、暗号化通信をこれから行おうとする２つのユーザ装置１００（本願発明における特定ユーザ装置）を特定するためのものである。通信を自分から行う側のユーザ装置１００に関する特定情報は、すべてのユーザ装置１００についてユニークな情報であることが最低限必要とされ、例えば、ユーザ装置１００のＩＰアドレス、電子メールアドレス、ＵＲＬ、ＳＮＳ（social networking service）のＩＤ等であり、通信を受ける側のユーザ装置１００についても同様である。この実施形態では、これには限られないが、特定ユーザ装置である２つのユーザ装置１００の双方をともにＩＰアドレスで特定するものとする。なお、この実施形態ではこれには限られないが、ユーザが入力装置１０２を操作して暗号化通信をこれから行おうとする相手方のユーザ装置１００を特定する情報を入力すると、そのユーザ装置１００のＩＰアドレスと相手方のユーザ装置１００のＩＰアドレスの双方を特定する特定情報が自動的に生成されるようになっている。これにかえて、ユーザが暗号化通信を行う２つのユーザ装置１００のＩＰアドレスの双方を入力装置１０２に入力することによって、特定情報が生成されるようになっていても構わない。
また、ユーザは、入力装置１０２を操作することにより、送信対象データを生成することができる。かかる送信対象データは、ユーザ装置１００間で暗号化した状態で送受信される場合における送受信の対象となるデータである。例えば、かかる送受信が電子メールの送受信である場合には、そのデータは電子メールのデータになるし、一方のユーザ装置１００がインターネット上の仮想店舗のホームページを提供するものであって他方のユーザ装置１００がその仮想店舗で商品を購入しようとする顧客である場合には、仮想店舗のユーザ装置１００側から顧客に送られるデータは、例えば、商品の選択画面や、顧客情報、送付先情報等の記載を顧客に行わせるためのフォーマットを顧客のユーザ装置１００に提供するためのデータであり、顧客のユーザ装置１００側から仮想店舗のユーザ装置１００に送られるデータは、顧客が購入対象として選択した商品及びその数量を特定する情報であったり、上述の如きフォーマットに顧客が記入を行った顧客情報、送付先情報であったりする。送信対象データは、テキストデータ、画像データ、音声データ等その形式を問わない。送信対象データは、ユーザが入力装置１０２を操作して入力したデータそのものである必要はなく、それに対してユーザ装置１００が所定の処理を行うことによって作られたデータであってもよく、むしろその方が通常である。
入力部１２１にインターフェイス１１４から入力されるものとしては他に、に送受信機構からインターフェイス１１４に送られてくる、上述した同期情報と暗号化データがある。
以上のようにして、入力部１２１には、入力装置１０２から入力されるものとして特定情報と、送信対象データが、送受信機構から入力されるものとして、同期情報と、暗号化データが入力されることになる。
入力部１２１は、これらを受取ると、特定情報と同期情報を受取った場合には、それらを主制御部１２２へ、送信対象データと暗号化データを受取った場合にはそれらをユーザ暗号化復号化部１２６へと、それぞれ送るようになっている。
【００３０】
主制御部１２２は、ユーザ装置１００内に生成された各機能ブロック全体の制御を行うものである。
主制御部１２２は、入力部１２１から特定情報を受取る場合がある。特定情報を受取った場合、主制御部１２２はそれを出力部１２７に送るようになっている。
主制御部１２２は、同期情報を受取る場合がある。同期情報を受取った場合、主制御部１２２は、その同期情報をユーザ初期解生成部１２５に送るようになっている。
【００３１】
ユーザ解生成部１２３は、解を生成するものである。解の生成の仕方については後述するが、この実施形態における解は、文字、数字、記号の少なくとも１つを所定数羅列したものであり、また、初期解に基いて、同じ条件下で生成されたものが常に同じものとなるようにされている。典型的には、解は擬似乱数であり、各解はこの実施形態では、その桁数乃至文字数が常に一定となるようにして生成されるようになっている。
ユーザ解生成部１２３が解を生成するのは、まず、ユーザ暗号化復号化部１２６が後述するが如き暗号化の処理、又は復号化の処理を行う場合である。ユーザ暗号化復号化部１２６が暗号化の処理又は復号化の処理を行う場合というのは、このユーザ装置１００が、他のユーザ装置１００と暗号化通信を行うときであるが、その詳細は後に譲る。ユーザ解生成部１２３は、ユーザ装置１００間での暗号化通信のために作られた解を、ユーザ暗号化復号化部１２６に送るようになっている。
また、ユーザ装置１００におけるユーザ解生成部１２３は、同期情報がユーザ初期解生成部１２５に送られた場合においても、解を生成する場合がある。このときに生成される解は、暗号化通信に用いられる初期解を生成する目的で生成される。暗号化通信に用いられる初期解を生成する目的で生成された解は、ユーザ解生成部１２３からユーザ初期解生成部１２５へと送られるようになっている。
【００３２】
ユーザ解記録部１２４は、ユーザ解生成部１２３が解を生成する場合に必要となる情報が記録されている。かかる情報は、主に真初期解のデータと初期解のデータである。真初期解のデータ及び初期解のデータはともに、後に生成される解に影響を与えるものである。真初期解、及び初期解のデータは、解のデータと同じ形式、即ち、文字、数字、記号の少なくとも１つを所定数羅列したものであって、その桁数乃至文字数が解と同数であるものである場合もあるし、そうでない場合もある。この実施形態ではこれには限られないが、真初期解、及び初期解のデータは解のデータと同じ形式で、真初期解、及び初期解は解と同じ桁数乃至文字数とされている。
ユーザ解生成部１２３は、解を生成する場合、ユーザ解記録部１２４に記録されているデータの中から、必要なデータを読み出しそれを用いて解を生成する。
ユーザ解生成部１２３は、ユーザ装置１００とサーバ２００とが同期して解を発生させることが必要になった場合には、真初期解か、後述する解を読み出してこれを行う。少なくとも最初の解を生成する場合、ユーザ解生成部１２３は、ユーザ解記録部１２４に記録されている真初期解のデータ（なお、真初期解は、ユーザ装置１００とサーバ２００とが同期して解を発生させるために用いられる初期解であって、ユーザ装置１００同士が解を同期しての暗号化通信を行うにあたり両ユーザ装置１００で同期した初期解を発生させるために用いられる本願発明でいう初期解とは異なるものである。）、その他のデータを用いる。つまり、ユーザ解生成部１２３が少なくとも最初の解を生成する前の状態では、ユーザ解記録部１２４には、真初期解のデータが記録されている。
他方、ユーザ解生成部１２３は、ユーザ装置１００同士が解を同期しての暗号化通信を行うにあたり両ユーザ装置１００で同期した初期解を発生させる場合には、原則としてユーザ解記録部１２４に記録されている初期解のデータを読み出してこれを行う。
ユーザ解生成部１２３での解の生成方法の詳細については追って詳述することとする。
【００３３】
ユーザ初期解生成部１２５は、同期情報を用いて、特定ユーザたる２つのユーザ装置１００が解を同期させての暗号化通信を行う場合において必要になる初期解を生成するためのものである。生成される初期解は、上述のように、ユーザ装置１００同士が解を同期しての暗号化通信を行うにあたり両ユーザ装置１００で同期した初期解を発生させるために用いられる。
上述したようにユーザ初期解生成部１２５には、主制御部１２２から、同期情報が送られてくる場合がある。かかる同期情報を受取った場合には、ユーザ初期解生成部１２５は、当該同期情報に基いて初期解を生成するようになっている。初期解を生成する際に、ユーザ初期解生成部１２５はユーザ解生成部１２３が生成した解を必要とする場合がある。かかる解は、サーバ２００とで生成された解と同期した解である。ユーザ初期解生成部１２５が解を必要とした場合には、ユーザ初期解生成部１２５は、ユーザ解生成部１２３に対して解を生成せよとの指示を送る。
かかる指示を受取ったユーザ解生成部１２３は、解を生成し、それをユーザ初期解生成部１２５に送るようになっている。
【００３４】
ユーザ暗号化復号化部１２６は、暗号化と復号化の処理の少なくとも一方を行うものであり、これには限られないが、この実施形態では暗号化と復号化の処理の双方を行うものとされている。かかる暗号化と復号化は、ユーザ装置１００同士で暗号化通信を行うために必要な処理である。
ユーザ暗号化復号化部１２６が暗号化、及び復号化の処理を行うのは、主制御部１２２から、暗号化、復号化を行って良いとの許可があったときのみである。
暗号化の方法の詳細は後述するが、暗号化を行う場合ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３に対して解を生成せよとの指示を送る。ユーザ解生成部１２３は当該指示に基いて解を生成し、それをユーザ暗号化復号化部１２６に送る。その解がユーザ暗号化復号化部１２６における暗号化に用いられる。これには限られないが、この実施形態で暗号化されるデータは、入力装置１０２から入力されたデータに基いて生成された送信対象データである。入力装置１０２で生成された送信対象データは平文のデータであるが、それがユーザ暗号化復号化部１２６で暗号化された結果暗号化データになる。ユーザ暗号化復号化部１２６で生成された暗号化データは、出力部１２７に送られるようになっている。
復号化の方法の詳細は後述するが、復号化を行う場合ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３に対して解を生成せよとの指示を送る。ユーザ解生成部１２３は当該指示に基いて解を生成し、それをユーザ暗号化復号化部１２６に送る。その解がユーザ暗号化復号化部１２６における復号化に用いられる。これには限られないが、この実施形態で復号化されるデータは、他のユーザ装置１００から送られてきた暗号化データである。暗号化データは、それを送ってきたユーザ装置１００におけるユーザ暗号化復号化部１２６で生成されたものであり、それがユーザ暗号化復号化部１２６で復号化された結果、元の送信対象データに戻る。ユーザ暗号化復号化部１２６で生成された平文の復号化データは、出力部１２７に送られるようになっている。
【００３５】
出力部１２７は、ユーザ装置１００内の機能ブロックで生成されたデータをインターフェイス１１４に出力するものである。
出力部１２７には、上述のように主制御部１２２から特定情報が送られてくる場合がある。出力部１２７は、かかる特定情報を、インターフェイス１１４に出力する。この特定情報は、インターフェイス１１４から送受信機構に送られ、送受信機構から、ネットワーク４００を介してサーバ２００に送られるようになっている。
出力部１２７にはまた、ユーザ暗号化復号化部１２６から、暗号化データが送られてくる場合がある。暗号化データを受取った場合には、出力部１２７は、その暗号化データを、インターフェイス１１４に出力する。この暗号化データは、インターフェイス１１４から送受信機構に送られ、送受信機構から、ネットワーク４００を介して暗号化通信の相手側となる他のユーザ装置１００に送られるようになっている。
出力部１２７にはまた、ユーザ暗号化復号化部１２６から、平文の送信対象データが送られてくる場合がある。この送信対象データは、他のユーザ装置１００で生成されたものである。送信対象データを受取った場合には、出力部１２７は、その送信対象データを、インターフェイス１１４に出力する。送信対象データは、ユーザ装置１００内で適当に利用されるが、例えばディスプレイ１０１に送られ、それを受取ったディスプレイ１０１に送信対象データに応じた表示を行わせるようになっている。
【００３６】
次に、サーバ２００の構成について説明する。
サーバ２００は、ハードウェアとして見た場合には、既存の公知又は周知のサーバで構わない。また、そのハードウェア構成も一般的なものでよく、図示を省略するが、大雑把に言えば、ＣＰＵ１１１、ＲＯＭ１１２、ＲＡＭ１１３、インターフェイス１１４をバス１１６で接続するという、ユーザ装置１００のハードウェア構成を踏襲することができる。もっとも、サーバ２００は通常、ＨＤＤその他の大容量記録装置を有するのが一般的であろうし、この実施形態でもそうなっている。
サーバ２００が備えるＣＰＵ、ＲＯＭ、ＲＡＭ、インターフェイス、バス、及び大容量記録装置の構成、機能は、ユーザ装置１００におけるそれらの構成、機能と変わらない。また、サーバ２００が備えるインターフェイスには、ユーザ装置１００が備えていたのと同様の、サーバ２００外の機器とネットワーク４００を介しての通信を行うための送受信機構が接続されている。サーバ２００が備えるインターフェイスには、ユーザ装置１００が備えていたのと同様のディスプレイ、入力装置が接続されていても構わないが、本願とはあまり関係がないのでその説明は省略する。
【００３７】
サーバ２００の内部におけるＲＯＭ、大容量記録装置等に記録されていたコンピュータプログラムを実行することによって、サーバ２００の内部には以下に説明するような機能ブロックが生成される。なお、以下の機能ブロックは、サーバ２００を本願発明のサーバとして機能させるためのコンピュータプログラム単体の機能により生成されていても良いが、かかるコンピュータプログラムと、サーバ２００にインストールされたＯＳその他のコンピュータプログラムとの協働により生成されても良い。また、上記コンピュータプログラムは、サーバ２００にプリインストールされたものでもよいが、出荷後のサーバ２００にインストールされたものでもあってもよい。その場合、上記コンピュータプログラムのサーバ２００へのインストールは、メモリカード等の所定の記録媒体を介して行なわれても良いし、ＬＡＮ或いはインターネットなどのネットワークを介して行なわれても構わない。これらの事情は、ユーザ装置１００の場合と同様である。
サーバ２００内には、本願発明の機能との関係で、入力部２２１、主制御部２２２、サーバ解生成部２２３、サーバ解記録部２２４、同期情報生成部２２５、及び出力部２２７が生成される（図５）。
【００３８】
入力部２２１は、インターフェイスからの入力を受取るものである。
インターフェイスからの入力には、例えば特定情報がある。特定情報は、ユーザ装置１００からネットワーク４００を介して送られてきたものであり、サーバ２００がその送受信機構で受取ったものである。入力部２２１は、特定情報を受取った場合には、それらを主制御部２２２に送るようになっている。
【００３９】
主制御部２２２は、サーバ２００内に生成された各機能ブロック全体の制御を行うものである。
主制御部２２２は、入力部２２１から特定情報のデータを受取る場合がある。特定情報のデータを受取った場合、主制御部２２２は、当該データを同期情報生成部２２５に送るようになっている。
【００４０】
サーバ解生成部２２３は、解を生成せよとの指示を受取った場合に解を生成するものである。サーバ解生成部２２３は、解を生成せよとの指示を、後述するように同期情報生成部２２５からから受取る場合があり、そのような指示を受取った場合に解を生成するようになっている。
解の生成の仕方については後述するが、サーバ解生成部２２３が実行する解の生成は、各ユーザ装置１００のユーザ解生成部１２３が実行する解の生成と同じ方法とされる。
サーバ解生成部２２３は、解を生成する場合、サーバ解記録部２２４に記録されているデータの中から、必要なデータを読み出しそれを用いて解を生成する。
サーバ解記録部２２４には、サーバ解生成部２２３が解を生成する場合に必要となる情報が記録されている。かかる情報は、主に真初期解のデータ、或いは解のデータである。真初期解のデータは、各ユーザ装置１００のユーザ解記録部１２４に記録される真初期解のデータと同じものである。真初期解は、解を生成する場合に用いられるが、サーバ２００はすべてのユーザ装置１００（ユーザ装置１００−１〜ユーザ装置１００−Ｎ）と同期した解を生成する必要があるから、少なくとも１つも解が生成されていない状態では、サーバ解記録部２２４には、ユーザ装置１００の数と同じ数の、Ｎ個の真初期解が記録されている。また、各真初期解は、どの真初期解がどのユーザ装置１００で生成される解に対応する真初期解であるかをサーバ解生成部２２３が把握する必要があるため、各真初期解は、各ユーザ装置１００を特定するための情報と一対一で紐付けられた状態で、サーバ解記録部２２４に記録されている。各ユーザ装置１００を特定するための情報は、特定情報に含まれうる各ユーザ装置１００にユニークな情報であり、これには限られないがこの実施形態では、各ユーザ装置１００のＩＰアドレスである。
サーバ２００におけるサーバ解生成部２２３は、ユーザ装置１００とサーバ２００とが同期して解を発生させることが必要になった場合には、真初期解か、後述する解を読み出してこれを行う。少なくとも最初の解を生成する場合、サーバ解生成部２２３は、サーバ解記録部２２４に記録されている真初期解のデータその他のデータを用いる。
サーバ解生成部２２３での解の生成方法の詳細については追って詳述することとする。
サーバ解生成部２２３は、上述のように同期情報生成部２２５から、解を生成せよとの指示を受ける場合があるが、その場合には特定情報に含まれていた、２つの特定ユーザ装置を特定するための情報である２つのＩＰアドレスをも同期情報生成部２２５から受取るようになっている。同期情報生成部２２５から２つのＩＰアドレスを受取った場合、サーバ解生成部２２３はそれら２つのＩＰアドレスの少なくとも一方と紐付けられたＩＰアドレスに紐付けられた真初期解又は解をサーバ解記録部２２４から読み出すようになっている。そして、サーバ解生成部２２３は、読み出したその真初期解又は解を用いて、新たな解を生成するようになっている。少なくともあるＩＰアドレスで特定されるユーザ装置１００についての解が最初に作られる場合には、そのＩＰアドレスに紐付けられていた真初期解を、サーバ解生成部２２３はサーバ解記録部２２４から読みだすようになっている。かかる真初期解に基いて、それに続く解は生成されることになる。詳細は後に譲るが、これにより、サーバ解生成部２２３は、各ユーザ装置１００における各ユーザ解生成部１２３が生成する解と同じ解を、生成することができるようになっている。つまり、サーバ２００で生成される解と、ユーザ装置１００で生成される解とは、互いに同期したものとなるようになっている。
サーバ解生成部２２３が生成した解は、同期情報生成部２２５に送られるようになっている。
【００４１】
同期情報生成部２２５は、同期情報を生成するものである。同期情報は、特定ユーザ装置に含まれる２つのユーザ装置１００が暗号化通信を行うに当って、当該暗号化通信を行うために２つのユーザ装置１００の双方で必要となる解を同期させるために２つのユーザ装置１００の少なくとも片方で必要となる情報である。平たく言えば、同期情報は、２つのユーザ装置１００で解を同期させるために必要な情報であって、解それ自体ではないものである。同期情報の詳細は追って説明する。なお、このような同期情報が必要となるのは、２つの装置が同期した解を生成する場合には、この実施形態で既に説明したように、サーバ２００と各ユーザ装置１００とが共通する真初期解を有するように、暗号化通信を行う特定ユーザ装置に含まれる２つのユーザ装置１００が共通する解（例えば、この実施形態では初期解）が必要であるところ、相手が持つ解を知ることのできない２つのユーザ装置１００に解を同期させるための何らかの情報を提供しなければならないからである。この実施形態ではこれには限られないが、１つのサーバ２００にてそれを実現することとし、その具体的な手法として同期情報を用いることとしている。
同期情報生成部２２５は、同期情報生成部２２５が主制御部２２２から特定情報を受取った場合に同期情報を生成する。同期情報生成部２２５は、同期情報を生成する場合に、特定情報によって特定されるユーザ装置１００において生成される解と同期した解を用いる。解を生成させるために、同期情報生成部２２５は、サーバ解生成部２２３に対して解を生成せよとの指示を送り、解を生成するために必要な同期情報をサーバ解生成部２２３に送る。これにより、サーバ解生成部２２３が生成した解は、同期情報生成部２２５に送られ、同期情報生成部２２５は受取った解を用いて同期情報を生成することができる。
同期情報生成部２２５が同期情報を生成した場合、同期情報生成部２２５は、その同期情報を特定情報とともに出力部２２７に送るようになっている。
【００４２】
出力部２２７は、サーバ２００内の機能ブロックで生成されたデータをインターフェイスに出力するものである。
出力部２２７には、上述のように、同期情報生成部２２５から同期情報と特定情報とが送られてくる。出力部２２７は、同期情報を受取ると、それを特定情報とともにインターフェイスに出力する。これら同期情報及び特定情報は、インターフェイスから送受信機構に送られ、送受信機構から、ネットワーク４００を介して、特定情報によって特定された２つのユーザ装置１００の少なくとも片方に送られるようになっている。
【００４３】
次に、以上で説明した送受信システムの使用方法、及び動作について、図６を参照して説明する。
自分のユーザ装置１００と他のユーザ装置１００との間で暗号化通信を行おうとするユーザは、まず、自らが所有するユーザ装置１００の入力装置１０２を操作して、暗号化通信をしようとする相手側のユーザ装置１００を特定するための特定情報を入力する。これにより、暗号化通信を行おうとする２つのユーザ装置１００である特定ユーザ装置における２つのユーザ装置１００を特定するための情報である特定情報が生成される（Ｓ１００１）。特定情報のデータは、インターフェイス１１４を介して入力部１２１に送られ、入力部１２１から主制御部１２２に送られる。
【００４４】
特定情報を受取ると、主制御部１２２は、特定情報を出力部１２７に送る。出力部１２７は、受取った特定情報をインターフェイス１１４に送る。インターフェイス１１４は、受取った特定情報を更に送受信機構に送る。特定情報は、送受信機構からネットワーク４００を介してサーバ２００に送られる（Ｓ１００２）。
【００４５】
サーバ２００は、その送受信機構で、ユーザ装置１００から送られてきた特定情報を受取る（Ｓ２００１）。特定情報は、サーバ２００のインターフェイスに送られ、インターフェイスから入力部２２１に送られる。入力部２２１は、特定情報のデータをインターフェイスから受取ると、それを主制御部２２２に送る。
主制御部２２２は、入力部２２１から特定情報のデータを受取ると、特定情報を同期情報生成部２２５に送る。それにより、同期情報生成部２２５は、特定情報によって特定される特定ユーザ装置に含まれる２つのユーザ装置１００において、それらが暗号化通信を行う際に必要となる解を同期させるために必要となる情報である同期情報を生成する（Ｓ２００２）。
【００４６】
一例となる同期情報の生成方法について説明する。
この実施形態では、特定情報で特定される２つのユーザ装置１００のうちのいずれかで生成することができる解を、同期情報とする。これには限られないが、この実施形態では、特定情報を送ってきた側のユーザ装置１００のユーザ解生成部１２３で生成可能な解を同期情報とすることとする。
したがって、同期情報生成部２２５はそのような解が必要である。したがって、同期情報生成部２２５は、そのような解を生成せよとの指示を、特定情報とともにサーバ解生成部２２３に対して送る。ここで送る特定情報はもちろん、特定情報の全体でなく特定情報を送ってきたユーザ装置１００のＩＰアドレスのみでもよい。他の実施形態、変形例でも同様であるが、同期情報生成部２２５は必要なＩＰアドレスのみをサーバ解生成部２２３に送れば足りる。
【００４７】
この実施形態におけるサーバ解生成部２２３は、特定情報に含まれる２つのＩＰアドレスのうち、特定情報を送ってきたユーザ装置１００のＩＰアドレスに紐付けられている真初期解又は解を呼び出す。上述したように、この実施形態におけるサーバ解生成部２２３は、少なくとも初めて解を生成するとき、サーバ解記録部２２４に記録されている真初期解のデータを読み出す。真初期解のデータは、例えば、２０桁の数字と小文字の英字混じりの文字列であるものとする。かかる真初期解は、各ユーザ装置１００にユニークなものであり、各ユーザ装置１００に対して、サーバ２００が、或いはサーバ２００の管理者が割り当てたものである。真初期解は１つのこともあるが、複数の場合もある。この実施形態では真初期解は１つであるので、サーバ解生成部２２３は、１つの真初期解をサーバ解記録部２２４からを読み出す。
サーバ解生成部２２３は、それら真初期解に対して演算を行うことにより、その時点における解を生成する。
まず、演算が可能なように、真初期解を数字のみに直す。真初期解の中に、英字が含まれている場合には、それを２桁の数字に置き換える。置き換えの対象となる数字は、その英字のアルファベット中の順番である。例えば、「ａ」なら「０１」に、「ｂ」なら「０２」に、「ｚ」なら「２６」にそれぞれ置き換える。例えば、真初期解が「５ａ６４５８ｐ６５５６ｆｆ４２７２１４９」というものだったとする。この場合、真初期解を上述の約束にしたがって数字のみにすると、「５０１６４５８１６６５５６０６０６４２７２１４９」となる。数字のみにした場合の桁数は、真初期解に含まれていた英字の数に応じて増えることになる。なお、（、）、！、＆、：等の記号をも解に含めたいのであれば、「（」に「２７」、「）」に「２８」、「！」に「２９」等の適当な数字の割当てを行うようにすればよい。
次に、数字に対して演算を行う。この演算の結果求められるのは、解の元となる数字の列である。その数字の列をＸとすると、Ｘは、所定の時点における西暦の年、月、日、時、分にしたがって以下のようにして求められる。以下の数式におけるＸ１は、真初期解を数字に直したものである。この実施形態で真初期解を５つとしているのは、西暦の年、月、日、時、分という５つの要素にしたがって解を変化させることにしているからである。なお、時刻によって解の同期を取るこのような手法は、従来から存在する時間同期の手法と同様のものである。
Ｘ＝Ｘ１ＰＸ１Ｑ＋Ｘ１ＲＸ１Ｓ＋Ｘ１Ｔ
ここで、Ｐ＝西暦の年の数字を５で割った余りに１を足したもの、Ｑ＝月の数字を５で割った余りに１を足したもの、Ｒ＝日の数字を５で割った余りに１を足したもの、Ｓ＝時の数字を５で割った余りに１を足したもの、Ｔ＝分の数字を５で割った余りに１を足したものである。このようにすることで、そのときの時刻に応じて異なる数列を得ることができる。なお、Ｐ〜Ｔのすべてにおいて、１を足す過程を加えているのは、Ｐ〜Ｔのすべてがたまたま０になった場合に最終的に得られる解Ｘが５になるが、そのような簡単な数字が頻出することを避けるためである。
上述の演算を行った結果、解の元となる数字の列Ｘが得られる。次いで、その数字の列の中の任意の２桁の中に０１〜２６という数字が含まれていたら、先ほどの英字から数字への置き換えの約束事とは逆の約束事にしたがい、それらをａ〜ｚの英字に置き換える。
このようにして得られた数字と小文字の英字混じりの文字列は通常、２０桁以上の桁数である。それが２０桁以上であるときには、その文字列の例えば前から２０文字を抜き出し、それを解とする。上述のようにして得られた数字と小文字の英字混じりの文字列がちょうど２０桁の場合には、それをそのまま解とする。また、上述のようにして得られた数字と小文字の英字混じりの文字列が２０桁よりも少ない場合には、何らかの決まり事に基いて桁数を増やす。例えば、その文字列の最初の数字又は英字に基いて何らかの数字又は文字を、桁数が２０桁に至るまでに、その文字列中に挿入するようにしてもよい。或いは、上述の数式におけるＰとＴとを入れ替えて演算を行って得られる数字の列に対して数字を英字に置き換える上述の過程を実行することによって新たな数字と小文字の英字混じりの文字列を生成して、それを元の数字と小文字の英字混じりの後に繋げるというような作業を、その桁数が少なくとも２０桁になるまで繰り返して、その前から２０文字を抜き出して解とする、というような方法も採用しうる。
いずれにせよ、これにより、真初期解に基いて、ある時点の日時に対応した解が生成されることになる。これには限られないが、この実施形態では、サーバ２００のサーバ解生成部２２３は、ユーザ装置１００がサーバ２００に特定情報を送信した時刻（例えば、特定情報の送信時において特定情報を送信するためのデータのパケットにユーザ装置１００で付されたタイムスタンプで特定される時刻）の例えば「５分後」の時刻における解を生成するものとする。なお、以下も同様であるが、かかる時刻は、実際にその時刻が到来しているかどうかを問わないものである。
サーバ解生成部２２３は生成した解を、同期情報生成部２２５へ送る。
【００４８】
同期情報生成部２２５は、サーバ解生成部２２３から解を受取る。そして、受取った解を同期情報とし、それを特定情報として、出力部２２７へ送る。出力部２２７は、それらをインターフェイスを介して送受信機構に送る。送受信機構は同期情報を、特定情報によって特定されるＩＰアドレスのうち、特定情報を送って来たユーザ装置１００とは異なるもう片方のユーザ装置１００に対して送る（Ｓ２００３）。
特定情報に含まれるＩＰアドレスのうち必要なのは、同期情報を送るユーザ装置１００のものだけである。したがって、特定情報は、必ずしもその全体（２つのユーザ装置１００のＩＰアドレスの双方）が同期情報生成部２２５から、出力部２２７、インターフェイスを介して送受信機構に送られる必要はなく、必要なＩＰアドレスのみが送られれば十分である。これは以後の実施形態等でも同様である。
【００４９】
同期情報は、特定情報に含まれる２つのＩＰアドレスで特定されるユーザ装置１００のうち、特定情報をサーバ２００に送信したユーザ装置１００ではない方のユーザ装置１００に送られる。他方、特定情報をサーバ２００に送信したユーザ装置１００には、同期情報は送られない。なお、この場合の同期情報の送信は暗号化通信によって行うことも可能である。もっとも、ここで行う暗号化通信は、特定ユーザ装置を構成する２つのユーザ装置１００間で行われる暗号化通信の如き、連続して発生される解を用いたものである必要はなく、公知の手法によることもできる。
特定情報に含まれる２つのＩＰアドレスで特定されるユーザ装置１００のうち、特定情報をサーバ２００に送信したユーザ装置１００ではない方のユーザ装置１００はその送受信機構により同期情報を受付ける（Ｓ１００３）。受付けられた同期情報は、インターフェイス１１４を介して入力部１２１に送られ、入力部１２１から、主制御部１２２を介してユーザ初期解生成部１２５に送られる。
【００５０】
同期情報を受取ったユーザ装置１００のユーザ初期解生成部１２５では、同期情報に基いて、以下のようにして初期解が生成される。
ユーザ初期解生成部１２５は、上述のように同期情報を受付ける。同期情報は、特定情報で特定されるユーザのうち、特定情報を送信し、同期情報を受付けなかった方のユーザ装置１００で生成することが可能な解である。かかるユーザ初期解生成部１２５は、その解を用いて新たな解を生成する。もっとも解の生成は、ユーザ初期解生成部１２５から以下のようにして解を生成せよとの指示を受けたユーザ解生成部１２３が行う。ユーザ解生成部１２３は、ユーザ初期解生成部１２５から、そのような指示と、新たな解を生成するために必要な解である同期情報とを送られる。
ユーザ解生成部１２３は以下のようにして新たな解を生成する。
例えば、解である同期情報が、Ｘ２であったとする。そのとき、ユーザ初期解生成部１２５は、サーバ２００で解である同期情報を生成するときに用いられたのと同じ方法、具体的には、下記数式を用いて、新たな解を生成する。
Ｘ＝Ｘ２Ｐ＋Ｘ２Ｑ＋Ｘ２Ｒ＋Ｘ２Ｓ＋Ｘ２Ｔ
このような数式を用いて解を生成する際には、上述したように、Ｐ、Ｑ、Ｒ、Ｓ、Ｔを定めるための特定の時刻を定めることが必要である。この時刻は、同期情報を送られたユーザ装置１００と同期情報を送られないユーザ装置１００とで後に生成される解が同期されたものとなるようにするには（言い換えれば、初期解を一致させるには）、共通した同じものとされる必要があるが、例えば、『ユーザ装置１００がサーバ２００に対して特定情報を送信した時刻の「１０分後」の時刻における解を生成する』という取極めを予め、少なくとも特定ユーザ装置に含まれる２つのユーザ装置１００（好ましくはすべてのユーザ装置１００）の間で行っておけば、かかる条件は充足される。例えば、ユーザ装置１００を本願発明のユーザ装置として機能させるためのコンピュータプログラムによりそのような条件を満足させるためのコードを埋め込んでおけば良い。
いずれにせよ、これにより、同期情報を受取ったユーザ装置１００におけるユーザ解生成部１２３は、同期情報を用いて、ユーザ装置１００がサーバ２００に対して特定情報を送信した時刻の「１０分後」の時刻における解を生成する。このようにして生成された解は、ユーザ解生成部１２３からユーザ初期解生成部１２５へと送られる。
ユーザ初期解生成部１２５は、その解を、特定情報をサーバ２００に送ったユーザ装置１００との暗号化通信を行う際に解を発生させるための初期解として決定する。このようにして決定された初期解は、ユーザ解記録部１２４に記録される。
【００５１】
他方、同期情報を受取らなかったユーザ装置１００では、以下のようにして初期解が決定される。
上述したように行われるサーバ２００への特定情報の送信（Ｓ１００２）が終わった後、主制御部１２２は、ユーザ初期解生成部１２５に初期解を生成せよとの指示を出す。かかる指示を受付けたユーザ初期解生成部１２５は、解を生成せよとの指示をユーザ解生成部１２３に対して出す。ユーザ解生成部１２３は、ユーザ解記録部１２４に記録されている真初期解に基いて新しい解を生成する。
ユーザ解生成部１２３が解を生成する方法は、サーバ２００のサーバ解生成部２２３で解を生成する方法と同じである。したがって、ユーザ解生成部１２３が生成する解は、真初期解が共通である限り、サーバ解生成部２２３が生成して、もう片方のユーザ初期解生成部１２５にて初期解であると決定されることになった上述した解と同じものとなるはずである。そして、サーバ２００のサーバ解生成部２２３が、上述の解を生成する際にサーバ解記録部２２４から読み出して使用した真初期解は、ユーザ初期解生成部１２５が解を生成する際にユーザ解記録部１２４から読み出して使用する真初期解と同じものである。この実施形態では、両者はともにＸ１である。したがって、ユーザ初期解生成部１２５は、サーバ解生成部２２３が生成して、このユーザ装置１００が行う暗号化通信の相手側となるユーザ装置１００に対して送信した、同期情報としての解と同じ解（この実施形態では、Ｘ２である。）を生成することとなる。つまり、こちらのユーザ装置１００は、同期情報をサーバ２００から送られていないにも関わらず、Ｘ２という、同期情報を送られたユーザ装置１００が同期情報として得たのと同じ解を持った状態となる。
なお、この解がサーバ解生成部２２３が生成した解と同じものとなるには、ユーザ装置１００とサーバ２００とにおいて、ユーザ装置１００がサーバ２００に特定情報を送信した時刻（例えば、特定情報の送信時において特定情報を送信するためのデータのパケットにユーザ装置１００で付されたタイムスタンプで特定される時刻）の「５分後」の時刻における解を生成するという規則が共有されている必要がある。かかるルール、特には、『ユーザ装置１００がサーバ２００に対して特定情報を送信した時刻の「５分後」の時刻における解を生成する』という規則は、例えば、ユーザ装置１００を本願発明のユーザ装置１００として機能させるための上述のコンピュータプログラムの機能により、ユーザ装置１００に予め課されていても良い。或いは、サーバ２００は、同期情報を送信しない側のユーザ装置１００に対して、同期情報に代わり、『ユーザ装置１００がサーバ２００に対して特定情報を送信した時刻の「５分後」の時刻における解を生成せよ』との指示を送るようにすることができる。これによっても、かかる指示を、サーバ２００とユーザ装置１００との間で共有することが可能となる。
続けて、ユーザ解生成部１２３は、その解（Ｘ２）を用いて新たな解を生成する。この解は、他方のユーザ装置１００のユーザ解生成部１２３で新たな解を生成する場合に行われたのと同じ方法で生成される。具体的には、新たな解は、下記数式にＸ２を代入することによって生成される。
Ｘ＝Ｘ２Ｐ＋Ｘ２Ｑ＋Ｘ２Ｒ＋Ｘ２Ｓ＋Ｘ２Ｔ
このような数式を用いて解を生成する際には、上述したように、Ｐ、Ｑ、Ｒ、Ｓ、Ｔを定めるための特定の時刻を定めることが必要であるが、この時刻は上述したように特定ユーザ装置となる２つのユーザ装置１００の間で共有されており、その時刻は、『ユーザ装置１００がサーバ２００に対して特定情報を送信した時刻の「１０分後」の時刻における解を生成する』という規則から決定されるようになっている。そのような時刻によって一意に定まる解を、ユーザ解生成部１２３は生成する。もちろん、この解は、同期情報を受取ったユーザ装置１００で初期解として決定された解と同じものとなる。
ユーザ解生成部１２３は生成した解を、ユーザ初期解生成部１２５に送る。ユーザ初期解生成部１２５は、受取った解を初期解として決定し、その初期解をユーザ解記録部１２４に記録する。
これにて、特定ユーザ装置たる２つのユーザ装置１００におけるユーザ解記録部１２４のそれぞれに共通する初期解が記録されることになった。言い換えれば、特定ユーザ装置たる２つのユーザ装置１００が共通する初期解を持つ状態が形成された（Ｓ１００４）。つまり、これにより、特定ユーザ装置たる２つのユーザ装置１００が暗号化通信を行う準備が整った。
【００５２】
この状態で、特定ユーザ装置を構成する２つのユーザ装置１００の間で暗号化通信が行われる（Ｓ１００５）。
【００５３】
暗号化通信についての以下の説明では、特定ユーザ装置である暗号化通信を行う２つのユーザ装置のうちの一方を、一方のユーザ装置１００、その他方を、他方のユーザ装置１００と称することにする。
まず、一方のユーザ装置１００から他方のユーザ装置へ暗号化データが送信される場合について説明する。
なお、２つのユーザ装置１００の間でどちらのユーザ装置１００からどちらのユーザ装置１００へ暗号化データが送信されるかは本来自由である。一方のユーザ装置１００から他方のユーザ装置１００に暗号化データが送信されても、他方のユーザ装置１００から一方のユーザ装置１００に暗号化データが送信されても、両ユーザ装置１００で行われる処理が逆になるだけで、両ユーザ装置１００で行われる処理そのものには変わらない。
一方のユーザ装置１００を扱うユーザは、ユーザ装置１００の入力装置１０２を操作して、送信対象データを生成する。送信対象データは平文のデータである。
送信対象データは一方のユーザ装置１００内で、インターフェイス１１４から入力部１２１に送られ、更にはユーザ暗号化復号化部１２６に送られる。ユーザ暗号化復号化部１２６で送信対象データは暗号化されるが、そのために解が用いられる。ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３に解を生成させるべく、解を生成せよとの指示をユーザ解生成部１２３に送る。かかる指示を受取ると、ユーザ解生成部１２３は新たに解を生成する。
ユーザ解生成部１２３がどのようにして解を生成するかは、２つのユーザ装置１００におけるユーザ解生成部１２３で生成される解が同期されている限り自由である。例えば、ユーザ解生成部１２３とサーバ解生成部２２３において生成される解を同期させるための方法と、特定ユーザ装置である２つのユーザ装置１００におけるユーザ解生成部１２３において生成される解を同期させるための方法とが、異なるものであっても構わない。これには限られないが、この実施形態では、上記のうちの後者が採用されているものとする。
この実施形態では、一方のユーザ装置１００におけるユーザ解生成部１２３は、この実施形態では、その時点の時刻とは無関係に、初期解を生成するときに用いられた上述の時刻の１年後で、１月後で、１日後で、１時間後で、１分後の時刻に対応した解を生成するようになっているものとする。
ユーザ解生成部１２３は、ユーザ解記録部１２４から読み出した初期解を用い、また上述した方法及び上述した時刻を用いて、新たな解を生成する。
新たな解は、一方のユーザ装置内で、ユーザ解生成部１２３からユーザ暗号化復号化部１２６へと送られる。
ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３から新たな解を受取り、それを用いて、送信対象データを暗号化する。
この場合の解の用い方は自由である。例えば、ユーザ装置１００とサーバ２００が共通鍵方式の暗号化通信を行う場合であれば、ユーザ暗号化復号化部１２６は、その新たな解を共通鍵として用いることができる。つまり、解は、暗号化の鍵として利用可能である。他方、解は、暗号化のアルゴリズムを変化させるために用いることも可能である。解に基いて、複数種類のアルゴリズムの中から１つのアルゴリズムを選択する、といった解の用い方も可能である。
いずれにせよ、送信対象データはユーザ暗号化復号化部１２６で暗号化され、暗号化データにされる。
生成された暗号化データは、ユーザ暗号化復号化部１２６から出力部１２７へと送られる。
一方のユーザ装置１００における出力部１２７は、暗号化データをインターフェイス１１４を介して送受信機構へと送る。暗号化データは、ネットワーク４００を介して、他方のユーザ装置１００へと送られる。
【００５４】
他方のユーザ装置１００は、その送受信機構でユーザ装置１００から送られてきた暗号化データを受取る。暗号化データは、送受信機構から、インターフェイス１１４を介して入力部１２１へと送られる。入力部１２１は、ユーザ暗号化復号化部１２６へ暗号化データを送る。
暗号化データを受取った、他方のユーザ装置１００におけるユーザ暗号化復号化部１２６は暗号化データを復号化する。そのために、ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３が生成した解を用いる。ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３に解を生成させるべく、解を生成せよとの指示をユーザ解生成部１２３に送る。かかる指示を受取ると、ユーザ解生成部１２３は新たに解を生成する。
他方のユーザ装置１００におけるユーザ解生成部１２３が解を生成する方法は、一方のユーザ装置１００のユーザ解生成部１２３が採用している方法と同じであり、ユーザ解生成部１２３がユーザ解記録部１２４から読み出す初期解は、一方のユーザ装置１００で用いられた初期解と共通する。それにより、他方のユーザ装置１００におけるユーザ解生成部１２３は、一方のユーザ装置１００におけるユーザ解生成部１２３が生成するのと同じ新たな解を生成する。つまり、２つのユーザ装置１００は、同期した解を生成することになる。
新たな解は、ユーザ解生成部１２３からユーザ暗号化復号化部１２６へと送られる。
ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３から新たな解を受取り、それを用いて、暗号化データを復号化する。
この場合の解の用い方は、一方のユーザ装置１００のユーザ暗号化復号化部１２６での解の用いられ方に倣う。例えば、２つのユーザ装置１００が共通鍵方式の暗号化通信の共通鍵として解を用いるのであり、一方のユーザ装置１００で解がそのように用いられたのであれば、他方のユーザ装置１００におけるユーザ暗号化復号化部１２６も、その新たな解を共通鍵として用いる。
いずれにせよ、ユーザ暗号化復号化部１２６で、暗号化データは復号化され、元の平文の送信対象データに戻される。
送信対象データは、ユーザ暗号化復号化部１２６から、出力部１２７に送られ、出力部１２７からインターフェイス１１４を介して、他方のユーザ装置１００内の例えば他のアプリケーションに送られたり、ディスプレイ１０１に送られて適当な表示がなされたりする。
【００５５】
他方のユーザ装置１００から一方のユーザ装置１００へ暗号化データが送信される場合には、以上の説明における一方のユーザ装置１００と他方のユーザ装置１００の役割が入れ替わる。
【００５６】
暗号化通信を行う必要がなくなったら、暗号化通信が終了する。
なお、この実施形態における通信システムでは、暗号化通信を行うＳ１００５の過程で用いられる解は１つだけ、或いは固定であった。これに代えて、例えば共通鍵方式の暗号化通信を行うための共通鍵を次々と変更していくが如くに、暗号化或いは復号化に用いるための解を、特定ユーザ装置たる２つのユーザ装置１００のユーザ解生成部１２３で、連続的に生成するようにすることも可能である。その場合には、例えば、認証に用いた解の次の新たな解を生成するために、認証に用いられた解が生成された時刻の１年後で、１月後で、１日後で、１時間後で、１分後の時刻に対応した解を生成するという取極めをユーザ解生成部１２３と、サーバ解生成部２２３との間でしていたのと同様に、その後に生成する解は、順にその１分後、２分後、３分後…の時刻に生成される解である、等の取極めをユーザ解生成部１２３とサーバ解生成部２２３との間で行っておけばよい。もちろん、両者の間で、もっと複雑な取極めを交わしておくことも可能である。
他方、共通鍵方式の暗号化通信を行うための共通鍵を、次々と変更していくがごとくに、特定ユーザ装置たる２つのユーザ装置１００のユーザ暗号化復号化部１２６において暗号化と復号化の処理を行う際に用いられる解を変更するタイミングは、適当に決定することができる。例えば、暗号化通信が開始されてから所定の時間が経過する度に、新しく生成された解に暗号化或いは復号化のために用いられる解が変更或いは更新されてもよく、或いは暗号化データの量が一定のデータ量を超える度に、解が変更或いは更新されても良い。例えば、平文のあるデータを暗号化する場合には通常、データの全体に対して何らかの演算を行うのではなく、通常は、平文のあるデータを所定のビット数毎に切断して小さいデータにしてから、その小さいデータのそれぞれに対して暗号化のための演算を行っていくという手法が用いられる。例えば、その小さいデータを１０個暗号化する毎に新しい解を生成して共通鍵を変えるとか、場合によってはその小さいデータを１個暗号化する毎に新しい解を生成して共通鍵を変えるとか、そのような手法を採用しても良い。もちろんこのような暗号化を行う場合には、復号化を行う側でも暗号化を行う側と同じ方法で解を発生させ、同じ方法で共通鍵となる解を変更していく。そのようなことを、特定ユーザ装置たる２つのユーザ装置１００の双方で実行することができる。
【００５７】
なお、上述のようにして特定ユーザ装置たる２つのユーザ装置１００が一度解を同期させたのであれば、特定ユーザ装置たる２つのユーザ装置１００は解を同期させた状態を２つのユーザ装置１００が機能している間永続的に保つことができる。
例えば、上述の暗号化通信が終わったときに双方のユーザ装置１００で発生させた最後の解を、双方のユーザ装置１００におけるユーザ解記録部１２４に、次回の暗号化通信の際に用いる初期解として記録するようにすれば、次回の暗号化通信の場合には、サーバ２００の力を借りて同期情報をサーバ２００に生成させずとも、２つのユーザ装置１００は同期した解を用いての暗号化通信を実行することができる。
他方、各ユーザ装置１００は、上記の如き初期解の保存を行わず、暗号化通信を行うたびにサーバ２００から同期情報の提供を受け、上述の処理を繰り返すようになっていてももちろん構わない。
なおこの実施形態では、同期情報は、特定ユーザ装置たる２つのユーザ装置１００の片方にしか送らなかったが、これを２つのユーザ装置１００の双方に送ることも可能である。この実施形態で同期情報を受取らなかったユーザ装置１００が同期情報を受取った場合には、同期情報で特定される解をそのユーザ装置１００はそもそも自力で生成することができるが、自力で生成した解と同期情報で特定される解を比較し両者の一致を見ることで、少なくともその解に誤りがないことの確認をそのユーザ装置１００で行うことが可能となる。
【００５８】
＜変形例１＞
以下、上述した通信システムの変形例について説明する。
以下に説明する通信システムで上述の第１実施形態の通信システムと異なるのは、サーバ２００と各ユーザ装置１００とにおける解の同期のさせ方、及び特定ユーザ装置たる２つのユーザ装置１００間での解の同期のさせ方のみである。
他の部分においては、変形例１と第１実施形態の通信システムの構成には違いがなく、またその使用方法、及び動作についても違いはない。
【００５９】
第１実施形態においては、ユーザ装置１００が備えるユーザ解生成部１２３、及びサーバ２００が備えるサーバ解生成部２２３における解の発生のさせ方は、トークン等を用いて行われていた従来のワンタイムパスワードの生成の方法でいえば、時間同期の如き解の同期のさせ方を採用していた。これに対して、変形例１では、ワンタイムパスワードの発生のさせ方でいえば、イベント同期の如き、過去に発生させた解の数（或いは発生させられた解の順番（その解が幾つ目の解かということ））に基づき解を同期させる方法を採用している。
【００６０】
変形例１では、ユーザ解生成部１２３、及びサーバ解生成部２２３で新しい解を生成するための手法は、例えば、ある初期解に対して決められた演算を行うことで解を得て、次いでその解に対して再び決められた演算を行うことで次の解を得て、次いでその解に対して再び決められた演算を行うことで次の解を得て…、という処理を繰り返すことで、連続して解を生成するものとすることができる。このような技術は、擬似乱数を生成するための技術として周知である。
【００６１】
ユーザ解生成部１２３、及びサーバ解生成部２２３が、解を生成するより具体的な方法について説明する。ユーザ装置１００のユーザ解生成部１２３で新しい解を生成する方法、及びサーバ２００のサーバ解生成部２２３で新しい解を生成する方法とも共通であるので、以下の説明ではそれらの区別を行わずに説明を行う。また、初期解と真初期解も区別せずにそれらをともに初期解としてまとめて説明を行う。
解を生成するには、ある初期解（以下の、（ａ）、（ｃ）のように２つ以上の場合もある）を用い、過去の解を所定の関数に代入することにより、新しい解を順次作るという方法を、解が必要となる度に実行すれば良い。そうすることにより、上記解を連続して生成することができる。この場合の解は、初期解依存性のある擬似乱数となる。
上述の解を作るのに使われる関数の例として、以下の（ａ）〜（ｃ）を挙げる。以下の（ａ）〜（ｃ）はいずれも、Ｎ番目の解であるＸＮを作るための式である。また、Ｐ、Ｑ、Ｒ、Ｓは適当な自然数である。
（ａ）（ＸＮ）＝（ＸＮ−１）Ｐ＋（ＸＮ−２）Ｑ
（ｂ）（ＸＮ）＝（ＸＮ−１）Ｐ
（ｃ）（ＸＮ）＝（ＸＮ−１）Ｐ（ＸＮ−２）Ｑ（ＸＮ-3）R（ＸＮ−4）S
（ａ）は、過去の解２つを用い、それらをそれぞれＰ乗とＱ乗したものを足し合わせることにより、新しい解を生成する。なお、正確には、過去の解２つを用い、それらをＰ乗とＱ乗したものを足し合わせると通常、桁数が増えるため、実際には得られた値のうちの頭から適当な桁数を抜き出す、末尾から適当な桁数を抜き出す、或いはその値のうちの適当な部分から適当な桁数を抜き出すこと等により、新しい解を生成する。これには限られないが、この実施形態では、解は２０桁であるものとする。
（ｂ）は、過去の解１つを用い、それをＰ乗したものの桁数を上述のように整理したものを新しい解とするものである。
（ｃ）は、過去の解４つを用い、それらをそれぞれＰ乗、Ｑ乗、Ｒ乗、Ｓ乗したものの積を取り、その後上述したように桁数を整理したものを新しい解とするものである。
上述の（ａ）〜（ｃ）は解を生成するためのアルゴリズムの一例であり、解を生成する際にアルゴリズムに変化を加える、例えば、上述の（ａ）〜（ｃ）を順番に用いる等の変化を加えることも可能である。
なお、上述の（ａ）〜（ｃ）の数式を用いる手法は、解が数字のみで構成されている場合に使用可能である。解に、文字、記号を含めたいのであれば、第１実施形態で説明した、文字、記号に数字を割り振る手法を採用すればよい。
上述の如き数式を用いて解を連続させる方法によれば、同じ順番で生成された解は、初期解が同一である場合においては常に同一のものとなる。
したがって、共通のアルゴリズムを用い、且つ共通の初期解を有するのであれば、サーバ２００にあるサーバ解生成部２２３と、ユーザ装置１００にあるユーザ解生成部１２３とは、共通する同期された解を生成することができ、また、特定ユーザ装置における２つのユーザ装置１００にそれぞれあるユーザ解生成部１２３は、共通する同期された解を生成することができることになる。
これには限られないが、変形例１のユーザ解生成部１２３とサーバ解生成部２２３とは、上記（ａ）のアルゴリズムを用いて解を生成することとしている。また、変形例１における特定ユーザ装置に含まれる２つのユーザ装置１００（或いは、すべてのユーザ装置１００が特定ユーザ装置になり得ることまで考慮すれば、すべてのユーザ装置１００）におけるユーザ解生成部１２３は、上記（ａ）のアルゴリズムを用いて解を生成することとしている。
【００６２】
かかる通信システムの使用方法、及び動作をより具体的に説明することで、通信システムの構成をより明確にする。
変形例１の通信システムの動作は、図６に示した通りであり、大まかに言えば、第１実施形態の場合と変わらない。特に、特定ユーザ装置におけるＳ１００１〜Ｓ１００２のステップとサーバ２００におけるＳ２００１のステップは、第１実施形態の場合と完全に同一である。
サーバ２００は、特定情報を受取る。特定情報は、送受信機構、インターフェイス、入力部２２１、主制御部２２２を経て、同期情報生成部２２５へと送られる。同期情報生成部２２５は、特定情報によって特定される特定ユーザ装置に含まれる２つのユーザ装置１００において、それらが暗号化通信を行う際に必要となる解を同期させるために必要となる情報である同期情報を生成する（Ｓ２００２）。
【００６３】
変形例１の場合も、第１実施形態の場合と同様に、サーバ２００に送られてきた特定情報で特定される２つのユーザ装置１００のうちのいずれかで生成することができる解を、同期情報とすることにする。これには限られないが、変形例１でも第１実施形態の場合と同様に、特定情報を送ってきた側のユーザ装置１００のユーザ解生成部１２３で生成可能な解を同期情報とすることとする。
したがって、同期情報生成部２２５はそのような解が必要である。したがって、同期情報生成部２２５は、そのような解を生成せよとの指示を、特定情報とともにサーバ解生成部２２３に対して送る。
変形例１におけるサーバ解生成部２２３は、特定情報に含まれる２つのＩＰアドレスのうち、特定情報を送ってきたユーザ装置１００のＩＰアドレスに紐付けられている真初期解又は解を呼び出す。上述したように、この実施形態におけるサーバ解生成部２２３は、少なくとも初めて解を生成するとき、ユーザ解記録部１２４に記録されている真初期解のデータを読み出す。もっとも、変形例１のサーバ２００におけるサーバ解記録部２２４には、真初期解に加えて、その真初期解を用いて過去に幾つの解を生成したか、という情報が記録されている。サーバ解生成部２２３は、真初期解のデータと、その真初期解に基いて過去に幾つの解を生成したかという情報とをサーバ解記録部２２４から読み出す。
【００６４】
変形例１のサーバ解生成部２２３が解を生成する場合において、例えば、サーバ解生成部２２３は過去に３つの解を生成したとする。そうすると、サーバ解生成部２２３は、サーバ解記録部２２４から、真初期解と、過去に生成した解の数である３という数字を読み出す。サーバ解生成部２２３は、上述の数式（ａ）を用いて、真初期解（（Ｘ０）、（Ｘ−１））から１番目の解（Ｘ１）を生成し、１番目の解を用いて（より正確には、（Ｘ１）、（Ｘ０）を用いて）２番目の解を生成し、それを繰り返して、４番目の解（Ｘ４）を生成する。そして、サーバ解生成部２２３は、サーバ解記録部２２４に記録されていた過去に生成した解の数を１増やし「４」とする。これにより、次にサーバ解生成部２２３で生成される解は、５番目の解である（Ｘ５）になる。
サーバ解生成部２２３は、次の解（Ｘ５）を生成するために少なくとも必要となる解（（Ｘ３）と（Ｘ４））を同期情報生成部２２５に送る。同期情報生成部２２５は、第１実施形態の場合と同様にこれを同期情報とする（Ｓ２００２）。
【００６５】
第１実施形態の場合と同様に、同期情報は、特定ユーザ装置である２つのユーザ装置１００のうち、特定情報を送って来なかったユーザ装置１００に対して送られ（Ｓ２００３）、特定情報を送って来たユーザ装置１００には送られない。
【００６６】
同期情報を受取ったユーザ装置において、同期情報は、第１実施形態の場合と同様に、ユーザ初期解生成部１２５に送られる。ユーザ初期解生成部１２５は、同期情報を用いて新しい解を生成する。その解は同期情報である（Ｘ３）と（Ｘ４）を用いて作られる新しい解であり、それは５番目の解である（Ｘ５）でもよいし、それ以降のつまり、（Ｘ６）以降の解であっても良い。ただし、幾つめの解を生成すべきかということについての条件は、解の同期を取るために、２つの特定ユーザ装置にて共有されている必要がある。
例えば、この変形例１では、同期情報を受取ったユーザ装置１００におけるユーザ解生成部１２３は、５番目の解を生成することになっているものとする。ユーザ解生成部１２３は、下記の式（ａ）の（ＸＮ−１）に（Ｘ４）を（ＸＮ−２）に（Ｘ３）をそれぞれ代入することにより、５番目の解である（Ｘ５）を求める。
（ａ）（ＸＮ）＝（ＸＮ−１）Ｐ＋（ＸＮ−２）Ｑ
そして、生成された（Ｘ４）と（Ｘ５）を、ユーザ解生成部１２３は、ユーザ初期解生成部１２５へと送る。ユーザ初期解生成部１２５は、これを初期解として決定し、第１実施形態の場合と同様に、当該ユーザ装置１００におけるユーザ解記録部１２４に記録する。
【００６７】
他方、同期情報を受取らなかったユーザ装置１００は、同期情報に頼らず第１実施形態の場合と同様に自発的に初期解を生成する。
同期情報を受取らなかったユーザ装置１００は、サーバ２００への特定情報の送信（Ｓ１００２）が終わった後において、その主制御部１２２が、第１実施形態の場合と同様に、ユーザ初期解生成部１２５に初期解を生成せよとの指示を出す。かかる指示を受けたユーザ初期解生成部１２５は、ユーザ解生成部１２３に対して、新たな解を生成せよとの指示を出す。
ユーザ解生成部１２３が解を生成する方法は、サーバ２００のサーバ解生成部２２３で解を生成する方法と同じである。したがって、ユーザ解生成部１２３が生成する解は、真初期解が共通である限り、そして、真初期解から生成された順番が同じであるかぎり、サーバ解生成部２２３が生成する解と同じとなる。どこまで解を生成し、生成したどの解を初期解として用いるかという条件は、少なくともユーザ装置１００間では共通とされている。このユーザ装置１００のユーザ解記録部１２４には、少なくともサーバ２００で同期情報に必要な解を生成される前の状態と同じ情報、つまり真初期解と真初期解により過去に生成した解が３つであることが記録されている。これら真初期解と、読み出した「３」という数字に基づいて、ユーザ解生成部１２３は、同期情報を受取ったユーザ装置１００におけるユーザ解生成部１２３が生成したのと同じ順番までの解を生成する。つまり、同期情報を受取らなかったユーザ装置１００におけるユーザ解生成部１２３は、まず（Ｘ４）を生成し、続いて（Ｘ５）を生成する。このように、ユーザ装置１００とサーバ２００とが解を同期させる方法は同じとなっており、そのためにユーザ解記録部１２４に記録されるデータはサーバ解記録部２２４に記録されるデータと同じとなっている。
そして、ユーザ解生成部１２３は、これら２つの解を、ユーザ初期解生成部１２５に対して送る。ユーザ初期解生成部１２５は、これら２つの解を、以後の解を生成するために使用する初期解とし、それら２つの解を、ユーザ解記録部１２４に対して記録する。
これにて、特定ユーザ装置たる２つのユーザ装置１００におけるユーザ解記録部１２４のそれぞれに共通する初期解が記録されることになった（Ｓ１００４）。つまり、これにより第１実施形態の場合と同様に、特定ユーザ装置たる２つのユーザ装置１００が暗号化通信を行う準備が整った。
なお、変形例１では、サーバ２００におけるサーバ解記録部２２４には、真初期解と真初期解から過去に幾つの解を生成したかという情報が記録されており、且つユーザ装置１００におけるユーザ解記録部１２４には、真初期解と真初期解から過去に幾つの解を生成したかという情報が記録されており、それによりサーバ解生成部２２３と、ユーザ解生成部１２３とは、同期した状態で同じ順番のものどうしを比較すれば同じになる解を連続して生成することができた。この場合には、サーバ解記録部２２４とユーザ解記録部１２４には真初期解が記録され続ける。もっとも、同期情報を受けったユーザ装置１００における初期解となる解の生成方法についての上述の説明から判るように、解を同期させるには、必ずしも真初期解と真初期解から過去に幾つの解を生成したかという情報は必要ではなく、その直前に生成された解（複数の場合もある）さえ存在していれば、同じ順番で生成された解がいつも同じになるような状態で、新しい解を次々と発生させることが可能である。そのような場合には、真初期解から１番目の解を生成したら、サーバ解記録部２２４及びユーザ解記録部１２４に記録された解を２番目の解を生成させるための解に上書きし、次にその解から２番目の解を生成したら、サーバ解記録部２２４及びユーザ解記録部１２４に記録された解を３番目の解を生成させるための解に上書きし…、という処理をサーバ２００とユーザ装置１００との双方で連続して行えば良い。
なお、変形例１のような解の生成のさせ方を行うと、例えば、特定ユーザ装置たる２つのユーザ装置１００の間で暗号化通信を行うために、場合によっては多数の解を生成することが必要となることがあるため（後述）、ユーザ解生成部１２３で生成する解が、サーバ解生成部２２３で生成する解よりも先行してしまうことが生じうる。そのようなことが生じると、ユーザ解生成部１２３とサーバ解生成部２２３とで生成される解が同期されないこととなるので、ユーザ解記録部１２４は、ユーザ解生成部１２３がサーバ解生成部２２３と同期した状態で解を生成するために必要な情報と、特定ユーザ装置たる２つのユーザ装置１００間で同期された解をユーザ解生成部１２３が生成するために必要な情報とを、それぞれ独立した形で別個に記録しておくべきである。
【００６８】
以後の処理は、完全に第１実施形態の場合と同じでも良い。つまり、特定ユーザ装置である２つのユーザ装置において行われる暗号化通信（Ｓ１００５）を実現するために必要とされる連続して、しかも同期して解を発生させるための処理は、トークン等でいう時間同期によってそれが実現されても構わない。
他方、変形例１では、かかる解の同期がトークン等で実現されるイベント同期により実現されるようにすることも可能であり、変形例１ではそのようにして解が生成されることとして以下の説明を行う。
【００６９】
第１実施形態の場合と同様、以下の説明では、特定ユーザ装置である暗号化通信を行う２つのユーザ装置のうちの一方を、一方のユーザ装置１００、その他方を、他方のユーザ装置１００と称することにする。
まず、一方のユーザ装置１００から他方のユーザ装置１００へ暗号化データが送信される場合について説明する。
一方のユーザ装置１００を扱うユーザは、ユーザ装置１００の入力装置１０２を操作して、送信対象データを生成する。
送信対象データは一方のユーザ装置１００内で、インターフェイス１１４から入力部１２１を介してユーザ暗号化復号化部１２６に送られる。ユーザ暗号化復号化部１２６で送信対象データは暗号化されるが、そのために解が用いられる。ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３に解を生成させるべく、解を生成せよとの指示をユーザ解生成部１２３に送る。かかる指示を受取ると、ユーザ解生成部１２３は新たに解を生成する。
ユーザ解記録部１２４には、上述したように、２つの解である（Ｘ４）と（Ｘ５）とが記録されている。一方のユーザ装置１００のユーザ解生成部１２３は、これら２つの解を読みだす。これらを上述した式（ａ）に代入すると、一方のユーザ装置１００におけるユーザ解生成部１２３は、６番目の解である（Ｘ６）を生成することができる。ユーザ解生成部１２３は、次の解を生成するために（Ｘ４）と（Ｘ５）とをユーザ解記録部１２４に記録するとともに、ユーザ暗号化復号化部１２６に、生成した解である（Ｘ６）を送る。
ユーザ暗号化復号化部１２６は、この解（Ｘ６）を用いて送信対象データを暗号化する。暗号化の処理における解の用い方は第１実施形態の場合と同じで良い。送信対象データはユーザ暗号化復号化部１２６で暗号化され、暗号化データにされる。生成された暗号化データは、ユーザ暗号化復号化部１２６から出力部１２７へと送られる。
かかる暗号化データは、第１実施形態の場合と同様に、一方のユーザ装置１００から、他方のユーザ装置１００へと送られる。
【００７０】
他方のユーザ装置１００は、その送受信機構でユーザ装置１００から送られてきた暗号化データを受取る。暗号化データは、送受信機構から、インターフェイス１１４を介して入力部１２１へと送られ、更には、ユーザ暗号化復号化部１２６へ送られる。
暗号化データを受取った、他方のユーザ装置１００におけるユーザ暗号化復号化部１２６は暗号化データを復号化する。そのために、ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３が生成した解を用いる。ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３に解を生成させるべく、解を生成せよとの指示をユーザ解生成部１２３に送る。かかる指示を受取ると、ユーザ解生成部１２３は新たに解を生成する。
他方のユーザ装置１００におけるユーザ解生成部１２３が解を生成する方法は、一方のユーザ装置１００のユーザ解生成部１２３が採用している方法と同じであり、ユーザ解生成部１２３がユーザ解記録部１２４から読み出す初期解は、一方のユーザ装置１００で用いられた初期解（（Ｘ４）と（Ｘ５））と共通する。それにより、他方のユーザ装置１００におけるユーザ解生成部１２３は、一方のユーザ装置１００におけるユーザ解生成部１２３が生成するのと同じ新たな解を生成する。つまり、２つのユーザ装置１００は、同期した解を生成することになる。
新たな解は、ユーザ解生成部１２３からユーザ暗号化復号化部１２６へと送られる。ユーザ暗号化復号化部１２６は、ユーザ解生成部１２３から新たな解を受取り、それを用いて、暗号化データを復号化する。復号化の方法は、第１実施形態の場合と同様である。ユーザ暗号化復号化部１２６で、暗号化データは復号化され、元の平文の送信対象データに戻される。
【００７１】
変形例１の通信システムにおける以後の処理は、第１実施形態の場合と同様である。
他方のユーザ装置１００から一方のユーザ装置１００へ暗号化データが送信される場合には、以上の説明における一方のユーザ装置１００と他方のユーザ装置１００の役割が入れ替わる。
暗号化通信を行う必要がなくなったら、暗号化通信が終了する。
【００７２】
なお、変形例１の通信システムでは、暗号化通信を行うＳ１００５の過程で用いられる解は１つだけ、或いは固定であった。これに代えて、例えば共通鍵方式の暗号化通信を行うための共通鍵を次々と変更していくが如くに、暗号化或いは復号化に用いるための解を、特定ユーザ装置たる２つのユーザ装置１００のユーザ解生成部１２３で、連続的に生成するようにすることも可能である。
上述したように、同じ直前の解（１つとは限らないが）を用いれば、２つのユーザ装置１００におけるユーザ解生成部１２３は、同期した解を次々と生成することができる。同期された共通の解を、２つのユーザ装置１００におけるユーザ解生成部１２３で次々と生成することによって、特定ユーザ装置たる２つのユーザ装置１００は、同期された解を用いて暗号化通信を行うことができる。
新たな解を生成するタイミングとして採用しうるタイミングは、第１実施形態で説明した通りである。
特定ユーザ装置に含まれるユーザ装置１００間で一度同期させた解を、当該特定ユーザ装置に含まれる２つのユーザ装置１００間での以後の暗号化通信でも使用するか否かは、第１実施形態の場合と同様に自由である。
なお、第１実施形態では、初期解となる解を生成できない側のユーザ装置１００に同期情報が送られる。もっとも、双方のユーザ装置１００に同期情報を送信して、双方のユーザ装置１００で自らの解を用いて同期情報から取り出した相手側のユーザ装置１００でしか生成できない解のうちの任意の一方（例えば双方のユーザ装置１００の間で決定したもの）を、初期解とすることも可能である。
【００７３】
＜変形例２＞
変形例２の通信システムについて説明する。
なお、変形例２及び、以下に説明する変形例３、変形例４はいずれも、基本的には変形例１の通信システムと同様に構成されており、且つそれらの使用方法、及び動作も変形例１の通信システムと変わらない。
変形例２〜４は、いずれも変形例１においては、「特定情報で特定される２つのユーザ装置１００のうちのいずれかで生成することができる解」とされていた同期情報の他のバリエーションを提示するものである。したがって、変形例２〜４における同期情報は、変形例１の場合と異なるものとされ、またその送信先も、特定情報で特定される２つのユーザ装置１００のうちの片方である場合もあるが、２つのユーザ装置１００の双方である場合もある。また、特定ユーザ装置において、同期情報を用いて同一の初期解を持つまでの処理も、変形例１の場合と異なる。
変形例２〜変形例４では、変形例１からの変更点である、同期情報の内容、サーバ２００における同期情報の生成の方法、特定ユーザ装置における初期解の生成の方法について主に説明することにする。
なお、変形例２〜変形例４の説明では、解は、トークン等におけるイベント同期の如き方法で生成されるものとする。しかしながら、第１実施形態と変形例１との関係から明らかなように、解のイベント同期による生成は、時間同期にも置換可能である。つまり、変形例２〜変形例４は、時間同期によっても実施可能である。例えば、第１実施形態における、「真初期解に基いて生成された、ユーザ装置１００がサーバ２００に特定情報を送信した時刻の「５分後」の時刻における解（Ｘ２）」は、変形例１における真初期解から生成された１番目の解にあたり、「その解（Ｘ２）に基いて生成された、ユーザ装置１００がサーバ２００に特定情報を送信した時刻の「１０分後」の時刻における解」は、変形例２における真初期解に基いて生成された２番目の解と捉えられなくもない。初期解を決定するまでにユーザ装置１００では少なくとも１つの解を生成する必要が生じるが、時間同期を採用する場合においても、ある解に基いてある時刻の解を生成する、生成された解に基いてある時刻の解を生成する、ということをサーバ２００と特定ユーザ装置に含まれる２つのユーザ装置１００のうちの必要なものの間で取決めておけば、時間同期の手法を応用して生成される解をイベント同期の方法で生成される解と同様に扱う、或いはそう見做すことができるのである。
【００７４】
変形例２における通信システムの使用方法と動作について説明する。
そこまでは第１実施形態と変わらないので、同期情報生成部２２５が同期情報を生成するところからその説明を行う。
同期情報生成部２２５が同期情報を生成するのは、変形例１の場合と同様に、ユーザ装置１００からサーバ２００へ送られた特定情報が主制御部２２２から同期情報生成部２２５に送られた後である。かかるタイミングで同期情報生成部２２５は同期情報を生成する。
変形例２において同期情報は、解である。より具体的には、特定ユーザ装置たる２つのユーザ装置１００が新しい解を生成するための元となる解である。
変形例２のユーザ装置１００におけるユーザ解生成部１２３では、これには限られないが変形例１の場合と同様に下記の数式（ａ）を用いて新しい解を生成するので、新しい解を生成するために２つの解が必要となる。したがって、同期情報生成部２２５は、２つの解を生成する。かかる２つの解は、特定ユーザ装置たる２つのユーザ装置１００において生成されるサーバ２００のサーバ解生成部２２３で生成される解と同期された解とは無関係なもので良い。同期情報生成部２２５は、適当な方法で、例えばランダムに２つの解を生成する。
（ａ）（ＸＮ）＝（ＸＮ−１）Ｐ＋（ＸＮ−２）Ｑ
なお、例えば下記数式（ｂ）のように過去の１つの解から新しい解を生成するというアルゴリズムをユーザ装置１００で採用しているのであれば、生成する解は１つで良い。
（ｂ）（ＸＮ）＝（ＸＮ−１）Ｐ
同期情報生成部２２５は、それら２つの解（例えば（Ｘ０）と（Ｘ−１）とする。）をまとめたものを同期情報として生成する。同期情報は、特定情報で特定される特定ユーザ装置たる２つのユーザ装置１００に対してネットワーク４００を介して送られる。
【００７５】
２つのユーザ装置１００は受取った同期情報を用いて初期解を生成する。
変形例１の場合と同様に、同期情報は、ユーザ初期解生成部１２５に送られる。これを受取ったユーザ初期解生成部１２５は、特定ユーザ装置たる２つのユーザ装置１００が暗号化通信を行う際に用いられる初期解を生成する。
２つのユーザ装置１００における初期解の生成方法は同じであり、ともに以下のようなものとされる。
２つのユーザ装置１００におけるユーザ初期解生成部１２５は、同期情報から新しい解を生成せよとの指示を、同期情報とともにユーザ解生成部１２３に送る。そうすると、ユーザ解生成部１２３は同期情報に含まれる２つの解を用いて新たな解を生成する。数式（ａ）に、２つの解である（Ｘ０）と（Ｘ−１）を代入すると、（Ｘ１）＝（Ｘ０）Ｐ＋（Ｘ−１）Ｑ  のようして、１番目の解である（Ｘ１）が生成される。次に、新しく生成された解を含む２つの解である（Ｘ１）と（Ｘ０）とを用いて、（Ｘ２）＝（Ｘ１）Ｐ＋（Ｘ０）Ｑの如き演算を行うと、２番目の解である（Ｘ２）が生成される。２つのユーザ装置１００におけるユーザ解生成部１２３が生成する解は、共通する同期情報に含まれる同じ２つの解（（Ｘ０）と（Ｘ−１））に基いて生成されるので、同じ順番のもの同士を比較すると同じとなる。つまり、２つのユーザ装置１００で生成される解は同期されたものとなる。
特定ユーザ装置に含まれる２つのユーザ装置１００間で予め取決められた、或いはサーバ２００によって指定された、同じ順番で生成された解、例えば、（（Ｘ２）と（Ｘ１））とを２つのユーザ装置１００のユーザ初期解生成部１２５が初期解として決定することにより、２つのユーザ装置１００が共通の初期解を持った状態となる。かかる初期解は、変形例１の場合と同様に、ユーザ解記録部１２４に記録される。
【００７６】
以後、特定ユーザ装置たる２つのユーザ装置１００は、共通する上述した初期解を用いて、同期した解を生成し、変形例１、或いは第１実施形態の場合と同様に、暗号化通信を実行することができる。
【００７７】
＜変形例３＞
変形例３における通信システムの使用方法と動作について説明する。
そこまでは第１実施形態と変わらないので、同期情報生成部２２５が同期情報を生成するところからその説明を行う。
同期情報生成部２２５が同期情報を生成するのは、変形例１の場合と同様に、ユーザ装置１００からサーバ２００へ送られた特定情報が主制御部２２２から同期情報生成部２２５に送られた後である。かかるタイミングで同期情報生成部２２５は同期情報を生成する。
変形例３において同期情報は、「特定ユーザ装置たる２つのユーザ装置１００における２つのユーザ解生成部１２３でそれぞれ生成可能な解の双方に、それぞれ可逆的な演算を行って得た情報」である。そのような解を生成するには、２つのユーザ装置１００において生成可能な解が必要であるから、同期情報生成部２２５はサーバ解生成部２２３に、２つのユーザ装置１００で生成可能な解を生成せよ、との指示と特定情報とを送る。
かかる指示を受取るとサーバ解生成部２２３は、２つのユーザ装置１００のユーザ解生成部１２３でそれぞれ生成可能な解を生成する。２つのユーザ装置１００の一方において生成可能な解を、（ＸＡＮ）（ただし、Ｎは数字）、２つのユーザ装置１００の他方において生成可能な解を、（ＸＢＮ）（ただし、Ｎは数字）のように表記するものとして、以下話を進める。
変形例３のユーザ装置１００におけるユーザ解生成部１２３では、これには限られないが変形例１の場合と同様に数式（ａ）を用いて新しい解を生成するものとする。
サーバ解生成部２２３は、一方のユーザ装置１００が後に生成可能なものとして、例えば、４番目の解までが既に、サーバ２００とその一方のユーザ装置１００とで既に同期して生成されているのであれば、例えば、その後に生成される５番目の解（ＸＡ５）を生成して、６番目の解（ＸＡ６）を生成するために必要な２つの解となる（（ＸＡ５）、（ＸＡ４））の対を生成する。また、サーバ解生成部２２３は、他方のユーザ装置１００が後に生成可能なものとして、例えば、１５番目の解までが既に、サーバ２００とその他方のユーザ装置１００とで既に同期して生成されているのであれば、例えば、その後に生成される１６番目の解（ＸＢ１６）を生成して、１７番目の解（ＸＢ１７）を生成するために必要な２つの解となる（（ＸＢ１６）、（ＸＢ１５））の対を生成する。これらはすべて同期情報生成部２２５に対して送られる。
同期情報生成部２２５は、それら２つの解の対に対して演算を行う。かかる演算は可逆的な演算であり、例えば、２つの解の積、或いは２つの解の排他的論理和を取ることによってその演算が実行される。これには限られないが、変形例３では、２つの解の対の積を取ることにより、演算を実行することにする。２つの解の対にはそれぞれ、２つずつ解が含まれているので、（ＸＡ５）×（ＸＢ１６）と、（ＸＡ４）×（ＸＢ１５）の２つの演算が実行される。その結果、同期情報生成部２２５は、（（ＸＡ５）×（ＸＢ１６）、（ＸＡ４）×（ＸＢ１５））という一対の情報を得ることになる。同期情報生成部２２５は、この情報を同期情報とする。
同期情報は、特定ユーザ装置たる２つのユーザ装置１００のうちのどちらでも良いが、それらのいずれかに送られる。
【００７８】
同期情報を受取ったユーザ装置１００では、以下のようにして初期解が生成される。これには限られないが、上述した一方のユーザ装置１００に同期情報が送られたものとする。
変形例１の場合と同様に、同期情報は、一方のユーザ装置１００のユーザ初期解生成部１２５に送られる。これを受取ったユーザ初期解生成部１２５は、特定ユーザ装置たる２つのユーザ装置１００が暗号化通信を行う際に用いられる初期解を生成する。ユーザ初期解生成部１２５は、解を生成せよとの指示をユーザ解生成部１２３に送る。ユーザ解生成部１２３は解を生成する。一方のユーザ装置１００におけるユーザ解生成部１２３は、繰り返し述べているように、サーバ２００のサーバ解生成部２２３で生成される解と同期した解を生成することができる。したがって、ユーザ解生成部１２３は、サーバ２００の同期情報生成部２２５が同期情報を生成する際に一方のユーザ装置１００で生成可能な解として生成した解である（ＸＡ５）と（ＸＡ４）という２つの解を生成することができる。幾つ目の解をここで生成するかという条件は、サーバ２００とユーザ装置１００との間で、例えば予め共有されている。
ユーザ解生成部１２３は、生成したこの２つの解を、ユーザ初期解生成部１２５に送る。ユーザ初期解生成部１２５は、（ＸＡ５）と（ＸＡ４）という２つの解を用いて、サーバ２００から送られてきた同期情報に対して、サーバ２００の同期情報生成部２２５で行われた演算の逆演算を行う。かかる演算は、（（ＸＡ５）×（ＸＢ１６））に対しては、（（ＸＡ５）×（ＸＢ１６））÷（ＸＡ５）として実行され、（（ＸＡ４）×（ＸＢ１５））に対しては、（（ＸＡ４）×（ＸＢ１５））÷（ＸＡ４）として実行される。その結果、ユーザ初期解生成部１２５は、（（ＸＢ１６）、（ＸＢ１５））という解の対を得ることになる。
かかる解の対は、本来であれば一方のユーザ装置１００が入手することのできない、他方のユーザ装置１００で生成される解の対であって、当該装置における１７番目の解（ＸＢ１７）を生成するために必要な２つの解である。
この解の対を、ユーザ初期解生成部１２５は初期解として決定し、ユーザ解記録部１２４に記録する。
【００７９】
同期情報を受取らなかった他方のユーザ装置１００では、以下のようにして初期解が生成される。
他方のユーザ装置１００では、一方のユーザ装置１００と通信が開始される前に（例えば、一方のユーザ装置１００から暗号化通信を行うとの要求が来た際に）、その主制御部１２２がユーザ初期解生成部１２５に対して初期解を生成せよとの指示を出す。
かかる指示を受取ったユーザ初期解生成部１２５は、ユーザ解生成部１２３に対して解を生成せよとの指示を出す。他方のユーザ装置１００におけるユーザ解生成部１２３は、繰り返し述べているように、サーバ２００のサーバ解生成部２２３で生成される解と同期した解を生成することができる。したがって、ユーザ解生成部１２３は、サーバ２００の同期情報生成部２２５が同期情報を生成する際に他方のユーザ装置１００で生成可能な解として生成した解である（（ＸＢ１６）、（ＸＢ１５））という解の対を生成することができる。幾つ目の解をここで生成するかという条件は、例えば、サーバ２００とユーザ装置１００との間で予め共有されている。
この解の対を、ユーザ初期解生成部１２５は初期解として決定し、ユーザ解記録部１２４に記録する。
【００８０】
これにて、特定ユーザ装置たる２つのユーザ装置１００で同じ初期解が共有された。
以後、特定ユーザ装置たる２つのユーザ装置１００は、共通する上述した初期解を用いて、同期した解を生成し、変形例１、或いは第１実施形態の場合と同様に、暗号化通信を実行することができる。
以上の変形例３では、ユーザ装置１００で新たな解を生成するのに過去の２つの解が必要な場合について記載した。ユーザ装置１００で新たな解を生成するのに過去の１つの解しか必要ないのであれば、サーバ２００からユーザ装置１００に送信する同期情報は、解に基づく情報の対でなく、１つの情報で良い。変形例４でも同様である。
なお、この変形例３では、初期解となる解を生成できない側のユーザ装置１００に同期情報が送られる。もっとも、双方のユーザ装置１００に同期情報を送信して、双方のユーザ装置１００で自らの解を用いて同期情報から取り出した相手側のユーザ装置１００でしか生成できない解のうちの任意の一方（例えば双方のユーザ装置１００の間で決定したもの）を、初期解とすることも可能である。
【００８１】
＜変形例４＞
変形例４における通信システムの使用方法と動作について説明する。
そこまでは第１実施形態と変わらないので、同期情報生成部２２５が同期情報を生成するところからその説明を行う。
同期情報生成部２２５が同期情報を生成するのは、変形例１の場合と同様に、ユーザ装置１００からサーバ２００へ送られた特定情報が主制御部２２２から同期情報生成部２２５に送られた後である。かかるタイミングで同期情報生成部２２５は同期情報を生成する。
変形例４において同期情報は、２種類生成される。変形例４において生成される同期情報は、「特定ユーザ装置たる２つのユーザ装置１００における２つのユーザ解生成部１２３でそれぞれ生成可能な解のそれぞれと、特定ユーザ装置たる２つのユーザ装置１００で共通する初期解とに対して、可逆的な演算を行って得た情報」である。そのような解を生成するには、２つのユーザ装置１００において生成可能な解が必要であるから、同期情報生成部２２５はサーバ解生成部２２３に、２つのユーザ装置１００で生成可能な解を生成せよ、との指示と特定情報とを送る。
かかる指示を受取るとサーバ解生成部２２３は、２つのユーザ装置１００のユーザ解生成部１２３でそれぞれ生成可能な解を生成する。変形例３と同様に、２つのユーザ装置１００の一方において生成可能な解を、（ＸＡＮ）（ただし、Ｎは数字）、２つのユーザ装置１００の他方において生成可能な解を、（ＸＢＮ）（ただし、Ｎは数字）のように表記するものとして、以下話を進める。
変形例４のユーザ装置１００におけるユーザ解生成部１２３では、これには限られないが変形例１の場合と同様に数式（ａ）を用いて新しい解を生成するものとする。
サーバ解生成部２２３は、一方のユーザ装置１００が後に生成可能なものとして、例えば、４番目の解までが既に、サーバ２００とその一方のユーザ装置１００とで既に同期して生成されているのであれば、例えば、その後に生成される５番目の解（ＸＡ５）を生成して、６番目の解（ＸＡ６）を生成するために必要な２つの解となる（（ＸＡ５）、（ＸＡ４））の対を生成する。また、サーバ解生成部２２３は、他方のユーザ装置１００が後に生成可能なものとして、例えば、１５番目の解までが既に、サーバ２００とその他方のユーザ装置１００とで既に同期して生成されているのであれば、例えば、その後に生成される１６番目の解（ＸＢ１６）を生成して、１７番目の解（ＸＢ１７）を生成するために必要な２つの解となる（（ＸＢ１６）、（ＸＢ１５））の対を生成する。これらはすべて同期情報生成部２２５に対して送られる。
同期情報生成部２２５は、それら２つの解のそれぞれに対して演算を行う。かかる演算は可逆的な演算であり、例えば、解と、特定ユーザ装置たる２つのユーザ装置１００で共通して用いられる初期解の積、或いは解と初期解の排他的論理和を取ることによってその演算が実行される。これには限られないが、変形例４では、解と初期解の積を取ることにより、演算を実行することにする。初期解を、（（Ｙ１）、（Ｙ０））とする。なお、この初期解は、例えば同期情報生成部２２５が適当に生成したものとすることができる。２つの解の対にはそれぞれ、２つずつ解が含まれているので、（ＸＡ５）×（Ｙ１）と、（ＸＡ４）×（Ｙ０）の２つの演算が実行される。その結果、同期情報生成部２２５は、（（ＸＡ５）×（Ｙ１）、（ＸＡ４）×（Ｙ０））という一対の情報を得ることになる。同期情報生成部２２５はこれを、一方のユーザ装置１００のための同期情報とする。また、同期情報生成部２２５は、（ＸＢ１６）×（Ｙ１）と、（ＸＢ１５）×（Ｙ０）の２つの演算を実行する。その結果、同期情報生成２２５部は、（（ＸＢ１６）×（Ｙ１）、（ＸＢ１５）×（Ｙ０））という一対の情報を得ることになる。同期情報生成部２２５はこれを、他方のユーザ装置１００のための同期情報とする。
一方のユーザ装置１００のための同期情報は、特定ユーザ装置たる２つのユーザ装置１００のうちの一方のユーザ装置１００へ、他方のユーザ装置１００のための同期情報は、特定ユーザ装置たる２つのユーザ装置１００のうちの他方のユーザ装置１００へ、それぞれ送られる。
【００８２】
同期情報を受取った一方のユーザ装置１００では、以下のようにして初期解が生成される。
変形例１の場合と同様に、同期情報は、一方のユーザ装置１００のユーザ初期解生成部１２５に送られる。これを受取ったユーザ初期解生成部１２５は、特定ユーザ装置たる２つのユーザ装置１００が暗号化通信を行う際に用いられる初期解を生成する。ユーザ初期解生成部１２５は、解を生成せよとの指示をユーザ解生成部１２３に送る。ユーザ解生成部１２３は解を生成する。一方のユーザ装置１００におけるユーザ解生成部１２３は、繰り返し述べているように、サーバ２００のサーバ解生成部２２３で生成される解と同期した解を生成することができる。したがって、ユーザ解生成部１２３は、サーバ２００の同期情報生成部２２５が同期情報を生成する際に一方のユーザ装置１００で生成可能な解として生成した解である（ＸＡ５）と（ＸＡ４）という２つの解を生成することができる。幾つ目の解をここで生成するかという条件は、サーバ２００とユーザ装置１００との間で、例えば予め共有されている。
ユーザ解生成部１２３は、生成したこの２つの解を、ユーザ初期解生成部１２５に送る。ユーザ初期解生成部１２５は、（ＸＡ５）と（ＸＡ４）という２つの解を用いて、サーバ２００から送られてきた同期情報に対して、サーバ２００の同期情報生成部２２５で行われた演算の逆演算を行う。かかる演算は、（（ＸＡ５）×（Ｙ１））に対しては、（（ＸＡ５）×（Ｙ１））÷（ＸＡ５）として実行され、（（ＸＡ４）×（Ｙ０））に対しては、（（ＸＡ４）×（Ｙ０））÷（ＸＡ４）として実行される。その結果、ユーザ初期解生成部１２５は、（（Ｙ１）、（Ｙ０））という解の対を得ることになる。
この解の対を、ユーザ初期解生成部１２５は初期解として決定し、ユーザ解記録部１２４に記録する。
【００８３】
同期情報を受取った他方のユーザ装置１００でも同様の処理が行われ、初期解が生成される。
同期情報は、他方のユーザ装置１００のユーザ初期解生成部１２５に送られる。ユーザ初期解生成部１２５は、解を生成せよとの指示をユーザ解生成部１２３に送る。ユーザ解生成部１２３は解を生成する。ユーザ解生成部１２３は、サーバ２００の同期情報生成部２２５が同期情報を生成する際に他方のユーザ装置１００で生成可能な解として生成した解である（ＸＢ１６）と（ＸＢ１５）という２つの解を生成することができる。
ユーザ解生成部１２３は、生成したこの２つの解を、ユーザ初期解生成部１２５に送る。ユーザ初期解生成部１２５は、（ＸＢ１６）と（ＸＢ１５）という２つの解を用いて、サーバ２００から送られてきた同期情報に対して、サーバ２００の同期情報生成部２２５で行われた演算の逆演算を行う。かかる演算は、（（ＸＢ１６）×（Ｙ１））に対しては、（（ＸＢ１６）×（Ｙ１））÷（ＸＢ１６）として実行され、（（ＸＢ１５）×（Ｙ０））に対しては、（（ＸＢ１５）×（Ｙ０））÷（ＸＢ１５）として実行される。その結果、ユーザ初期解生成部１２５は、（（Ｙ１）、（Ｙ０））という解の対を得ることになる。
この解の対を、ユーザ初期解生成部１２５は初期解として決定し、ユーザ解記録部１２４に記録する。
【００８４】
これにて、特定ユーザ装置たる２つのユーザ装置１００で同じ初期解が共有された。
以後、特定ユーザ装置たる２つのユーザ装置１００は、共通する上述した初期解を用いて、同期した解を生成し、変形例１、或いは第１実施形態の場合と同様に、暗号化通信を実行することができる。
【００８５】
≪第２実施形態≫
第２実施形態の通信システムについて説明する。
第２実施形態の通信システムは、概ね第１実施形態の通信システムを踏襲したものとなっており、第１実施形態の通信システムをその内部に含んだものとなっている。
図７に第２実施形態の通信システムを概略的に示す。
第２実施形態の通信システムは、ユーザ装置１００とサーバ２００とを含んでいる。ユーザ装置１００は、ユーザ装置１００−１〜ユーザ装置１００−１０００の１０００個であり、サーバ２００はサーバ２００−１〜サーバ２００−６の６つであるものとする。
ユーザ装置１００は、第１実施形態及びその変形例で採用したものとその構成は変わらないものとすることができる。サーバ２００のうちサーバ２００−１〜サーバ２００−４も同様である。もっとも、サーバ２００のうち以下に説明するものはそれらの間で互いに暗号化通信を行うことが可能になっている。
【００８６】
これには限られないが、第２実施形態では、サーバ２００−１はユーザ装置１００−１〜ユーザ装置１００−３００を、第１実施形態で説明した意味で管理するものとする。つまり、サーバ２００−１は、ユーザ装置１００−１〜ユーザ装置１００−３００のすべてにおいて発生する解と同期した解を発生させることが可能である。また、サーバ２００−１は、ユーザ装置１００−１〜ユーザ装置１００−３００のうちの任意の２つのユーザ装置１００が特定ユーザ装置となって、特定ユーザ装置たる２つのユーザ装置１００の間で第１実施形態において説明した暗号化通信を実行しようとした場合には、それら２つのユーザ装置１００に対して同期情報を提供することができるようになっている。言い換えれば、サーバ２００−１に管理されるユーザ装置１００−１〜ユーザ装置１００−３００は、サーバ２００−１の管理下で、第１実施形態（変形例１〜変形例４であっても良い。）で説明した暗号化通信を実現できるようになっている。
同様に、サーバ２００−２はユーザ装置１００−３０１〜ユーザ装置１００−６００を、第１実施形態で説明した意味で管理し、サーバ２００−３はユーザ装置１００−６０１〜ユーザ装置１００−９００を、第１実施形態で説明した意味で管理し、サーバ２００−４はユーザ装置１００−９０１〜ユーザ装置１００−１０００を、第１実施形態で説明した意味で管理するようになっている。
そして、サーバ２００−１とサーバ２００−２は、それらの間で暗号化通信を実現できるようになっている。かかる暗号化通信は、第１実施形態等において特定ユーザ装置たる２つのユーザ装置１００の間で実現された同期して発生させられる解を用いて行われる暗号化通信であっても良いし、そうでなくても良い。
他方、サーバ２００−５とサーバ２００−６は、いずれのユーザ装置１００をも第１実施形態で説明した意味では管理しない。ただし、サーバ２００−５は、サーバ２００−１と、サーバ２００−３との間で暗号化通信を行えるようになっており、サーバ２００−６はサーバ２００−１とサーバ２００−４との間で暗号化通信を行えるようになっている。サーバ２００−５が、サーバ２００−１又はサーバ２００−３との間で行う暗号化通信、及びサーバ２００−６がサーバ２００−１又はサーバ２００−４との間で行う暗号化通信は、第１実施形態等において特定ユーザ装置たる２つのユーザ装置１００の間で実現された同期して発生させられる解を用いて行われる暗号化通信であっても良いし、そうでなくても良い。
【００８７】
以上の説明を、図８に示す。なお、図８ではネットワーク４００は捨象する。
以上のような通信システムにおいては、もちろん、共通するサーバ２００に管理されている任意の２つのユーザ装置１００同士であって、特定ユーザ装置をなすものは、それらを共通して管理するサーバ２００の下で、当該サーバ２００から供給される同期情報を得ることができ、また、その同期情報を用いて、第１実施形態等において特定ユーザ装置たる２つのユーザ装置１００の間で実現された同期して発生させられる解を用いて行われる暗号化通信を実現することができる。
例えば、サーバ２００−１に管理されたユーザ装置１００−１〜ユーザ装置１００−３００のうちの任意の２つであるユーザ装置１００−２とユーザ装置１００−１０５、サーバ２００−２に管理されたユーザ装置１００−４５１とユーザ装置１００−５０１等は、同期して発生させられる解を用いて行われる暗号化通信を実現することができる。
しかも、第２実施形態における通信システムによれば、共通するサーバ２００に管理されていない任意の２つのユーザ装置１００同士であっても、それらを管理するサーバ２００が直接暗号化通信を行えるようになっているか、或いは他のサーバ２００を間に挟んで間接的に暗号化通信を行えるようになっていれば、同期して発生させられる解を用いて行われる暗号化通信を実現することができる。
【００８８】
例えば、サーバ２００−１に管理されたユーザ装置１００−１と、サーバ２００−２に管理されたユーザ装置１００−３９０とが特定ユーザ装置となり、ユーザ装置１００−１とユーザ装置１００−３９０との間で、同期して発生させられる解を用いて行われる暗号化通信を行うことを希望したとする。例えば、ユーザ装置１００−１は、自分を管理するサーバ２００−１に対して、第１実施形態で説明したのと同様の特定情報、つまりユーザ装置１００−１とユーザ装置１００−３９０とを特定する特定情報を送信する。
サーバ２００−１は、特定情報を受取ったとき、他のサーバ２００の中から自分が管理しないユーザ装置１００−３９０を管理しているサーバ２００を探す。例えば、そのようなサーバ２００を探しているという通知を他のサーバ２００に送る。その結果、ユーザ装置１００−３９０を管理しているサーバ２００であるサーバ２００−２を、例えば当該サーバ２００−２からの通知により発見する。
上述したように、サーバ２００−１とサーバ２００−２とは、両者の間で暗号化通信を行えるようになっている。例えて言うのであれば、サーバ２００−１とサーバ２００−２の間には、或いはそれらを管理する者の間には、暗号化通信を行うだけの信頼関係が既に築かれている状態にある。サーバ２００−１とサーバ２００−２とは、暗号化通信を行う。かかる暗号化通信は、第１実施形態で説明したような同期情報を生成するための情報を、サーバ２００−１とサーバ２００−２との間でやり取りするものである。
同期情報を生成するために必須なのは、特定ユーザ装置たる２つのユーザ装置１００において生成される解と同期している解であり、それらの解は、特定ユーザ装置たる２つのユーザ装置１００であるユーザ装置１００−１とユーザ装置１００−３９０をそれぞれ管理する、サーバ２００−１とサーバ２００−２とのいずれかによって生成可能なものである。また、同期情報を生成するために必要な解を生成するためには、どのユーザ装置１００が特定ユーザ装置であるかということを示す特定情報が必要であるが、特定情報はサーバ２００−１が既に入手しているので、それを暗号化通信によりサーバ２００−２に送信することで、サーバ２００−１とサーバ２００−２とがその特定情報を共有することが可能である。また、特定ユーザ装置たる２つのユーザ装置１００のいずれの解とも同期していない解を、特定ユーザ装置たる２つのユーザ装置における初期解とする場合（例えば、変形例２、変形例４）もあるが、そのような解は、いずれのサーバ２００でも生成可能である。したがって、サーバ２００−１とサーバ２００−２との間で、それらが管理するユーザ装置１００によって生成可能な解、特定情報等を送受信することにより、サーバ２００−１とサーバ２００−２との少なくとも一方で、第１実施形態等で説明した通りの同期情報を生成することができる。
他方、生成された同期情報は、ユーザ装置１００−１とユーザ装置１００−３９０の少なくとも一方に送られることが必要になるが、ユーザ装置１００−１への同期情報の送信はサーバ２００−１が行えばよく、ユーザ装置１００−３９０への同期情報の送信はサーバ２００−２が行えば良い。
つまり、以上で説明した場合においては、互いに暗号化通信を実行するサーバ２００−１とサーバ２００−２は、協働することにより、サーバ２００−１とサーバ２００−２の少なくとも一方によって管理されているユーザ装置１００の全体についての第１実施形態でいうところのサーバ２００として機能することになり、サーバ２００−１と、サーバ２００−２とは、本願発明でいう副サーバ装置として機能することになる。以上の通信の状態を、概念的に図９に示す。図９でもネットワーク４００は捨象されている。
【００８９】
同様に、サーバ２００−１に管理されているユーザ装置１００である例えばユーザ装置１００−９０と、サーバ２００−３に管理されているユーザ装置１００である例えばユーザ装置１００−８００とが、特定ユーザ装置として、同期して発生させられる解を用いて行われる暗号化通信を行うことを希望したとする。例えば、ユーザ装置１００−９０は、自分を管理するサーバ２００−１に対して、第１実施形態で説明したのと同様の特定情報、つまりユーザ装置１００−１とユーザ装置１００−８００とを特定する特定情報を送信する。
サーバ２００−１は、特定情報を受取ったとき、他のサーバ２００の中から自分が管理しないユーザ装置１００−８００を管理しているサーバ２００を探す。その結果、ユーザ装置１００−８００を管理するサーバ２００−３を発見する。しかしながら、サーバ２００−１とサーバ２００−３は、両者の間で暗号化通信を行えるようになっていない。例えて言うのであれば、サーバ２００−１とサーバ２００−３は、或いはそれらの管理者はお互いを知らず、或いは暗号化通信を行うまでの信頼関係が築けていない。そのような場合、サーバ２００−１は、サーバ２００−１と、サーバ２００−３との間を暗号化通信で繋いでくれる他のサーバを探す。幸いなことに、上述した通り、サーバ２００−１とサーバ２００−３とを暗号化通信で結ぶことのできるサーバ２００として、サーバ２００−５が存在する。
サーバ２００−１とサーバ２００−３とは、サーバ２００−５を間に挟み、図１０に示したような通信状態を形成する。サーバ２００−１とサーバ２００−２との間で、特定ユーザ装置たる２つのユーザ装置１００が初期解を共有するための情報である同期情報を生成するのに必要な情報を共有できたように、サーバ２００−５を介して、サーバ２００−１と、サーバ２００−５と、サーバ２００−３とは、それら情報を共有することができる。これにより、サーバ２００−１と、サーバ２００−５と、サーバ２００−３とのいずれかにより、同期情報を生成することが可能となる。
生成された同期情報は、ユーザ装置１００−９０とユーザ装置１００−８００の少なくとも一方に送られることが必要になるが、ユーザ装置１００−９０への同期情報の送信はサーバ２００−１が行えばよく、ユーザ装置１００−８００への同期情報の送信はサーバ２００−３が行えば良い。
つまり、以上で説明した場合においては、互いに暗号化通信を実行するサーバ２００−１と、サーバ２００−５と、サーバ２００−３とは、協働することにより、サーバ２００−１とサーバ２００−３の少なくとも一方によって管理されているユーザ装置１００の全体についての第１実施形態でいうところのサーバ２００として機能することになる。この場合、サーバ２００−１と、サーバ２００−５と、サーバ２００−３とは、本願発明でいう副サーバ装置として機能することになる。副サーバ装置の中には、サーバ２００−５の如く、ユーザ装置１００を管理しないものが存在しうる。ユーザ装置１００を管理しない副サーバ装置は、ユーザ装置１００を管理するサーバ２００同士を暗号化通信により接続するものであって、ユーザ装置１００を管理するサーバ２００よりもより公的な色彩を帯びたものになる可能性が高い。
【００９０】
同様に、サーバ２００−３に管理されているユーザ装置１００である例えばユーザ装置１００−７００と、サーバ２００−４に管理されているユーザ装置１００である例えばユーザ装置１００−９９９とが、特定ユーザ装置として、同期して発生させられる解を用いて行われる暗号化通信を行うことを希望したとする。例えば、ユーザ装置１００−７００は、自分を管理するサーバ２００−３に対して、第１実施形態で説明したのと同様の特定情報、つまりユーザ装置１００−７００とユーザ装置１００−９９９とを特定する特定情報を送信する。
サーバ２００−３は、特定情報を受取ったとき、他のサーバ２００の中から自分が管理しないユーザ装置１００−９９９を管理しているサーバ２００を探す。その結果、ユーザ装置１００−９９９を管理するサーバ２００−４を発見する。しかしながら、サーバ２００−３とサーバ２００−４は、両者の間で暗号化通信を行えるようになっていない。また、サーバ２００−３とサーバ２００−４とを直接暗号化通信で結ぶことのできるサーバ２００も存在しない。しかしながら、サーバ２００−３と暗号化通信を行うことができるサーバ２００−５と、サーバ２００−４と暗号化通信を行うことができるサーバ２００−６とはともに、サーバ２００−１と暗号化通信を行うことが可能となっている。
したがって、サーバ２００−３とサーバ２００−４とは、サーバ２００−５、サーバ２００−１、及びサーバ２００−６を間に挟み、図１１に示したような通信状態を形成することができる。サーバ２００−１とサーバ２００−２との間で、特定ユーザ装置たる２つのユーザ装置１００が初期解を共有するための情報である同期情報を生成するのに必要な情報を共有できたように、サーバ２００−５、サーバ２００−１、及びサーバ２００−６を介して、サーバ２００−３と、サーバ２００−５と、サーバ２００−１と、サーバ２００−６と、サーバ２００−４とは、それら情報を共有することができる。これにより、サーバ２００−５、サーバ２００−１、及びサーバ２００−６を介して、サーバ２００−３と、サーバ２００−５と、サーバ２００−１と、サーバ２００−６と、サーバ２００−４とのいずれかにより、同期情報を生成することが可能となる。
生成された同期情報は、ユーザ装置１００−７００とユーザ装置１００−９９９の少なくとも一方に送られることが必要になるが、ユーザ装置１００−７００への同期情報の送信はサーバ２００−３が行えばよく、ユーザ装置１００−９９９への同期情報の送信はサーバ２００−４が行えば良い。
つまり、以上で説明した場合においては、互いに暗号化通信を実行するサーバ２００−３と、サーバ２００−５と、サーバ２００−１と、サーバ２００−６と、サーバ２００−４とは、互いに協働することにより、サーバ２００−３とサーバ２００−４の少なくとも一方によって管理されているユーザ装置１００の全体についての第１実施形態でいうところのサーバ２００として機能することになる。この場合、サーバ２００−３と、サーバ２００−５と、サーバ２００−１と、サーバ２００−６と、サーバ２００−４とは、本願発明でいう副サーバ装置として機能することになる。上述したように副サーバ装置の中には、サーバ２００−５、サーバ２００−６の如く、ユーザ装置１００を管理しないものが存在しうる。また、特定ユーザ装置に含まれるユーザ装置１００を管理せず且つ特定ユーザ装置に含まれないユーザ装置１００を管理するサーバ２００（この例ではサーバ２００−１）が、特定ユーザ装置たる２つのユーザ装置１００を管理する２つのサーバ２００（この例では、サーバ２００−３とサーバ２００−４）の間に入って、特定ユーザ装置たる２つのユーザ装置１００を管理する２つのサーバ２００の暗号化通信を成立させる手助けを行うことも可能である。
このようにサーバ２００と同様の機能をもつサーバ２００の集合体を、互いに暗号化通信を行うサーバ２００を組合せることにより構築することにより、同じサーバ２００に管理されていないユーザ装置１００間においても初期解の共有が可能となり、結果として同期した解を連続して発生させての暗号化通信を実行できるようになる。
例えば、図７に示した例によれば、ユーザ装置１００−１からユーザ装置１００−１０００のうちの任意の２つのユーザ装置１００は、少なくとも１つのサーバ２００を介して初期解を共有することが可能であり、且つ同期した解を連続して発生させての暗号化通信を実行できるようになっている。
【符号の説明】
【００９１】
１００  ユーザ装置
１０１  ディスプレイ
１０２  入力装置
１２１  入力部
１２２  主制御部
１２３  ユーザ解生成部
１２４  ユーザ解記録部
１２５  ユーザ初期解生成部
１２６  ユーザ暗号化復号化部
１２７  出力部
２２１  入力部
２２２  主制御部
２２３  サーバ解生成部
２２４  サーバ解記録部
２２５  同期情報生成部
２２７  出力部
【図１】
2018093417.tif 000003
【図２】
2018093417.tif 000004
【図３】
2018093417.tif 000005
【図４】
2018093417.tif 000006
【図５】
2018093417.tif 000007
【図６】
2018093417.tif 000008
【図７】
2018093417.tif 000009
【図８】
2018093417.tif 000010
【図９】
2018093417.tif 000011
【図１０】
2018093417.tif 000012
【図１１】
2018093417.tif 000013