(57)【要約】 【課題】  情報を暗号化して伝送するのに好適な暗号通信システム等を提供する。【解決手段】  暗号通信システム１０１の送信装置１３１と受信装置１５１とは、それぞれ秘密鍵と公開鍵を生成するとともに、現在時刻をもとに乱数を生成し、この乱数を用いてセッション鍵を作り、ＲＳＡ暗号の技術を用いてセッション鍵を共有する。共有されたセッション鍵は、乱数の暗号化にも用いられ、暗号化された乱数を復号したときに元の乱数と一致することをもって、セッション鍵が認証される。伝送すべき情報は、認証されたセッション鍵により、ベクトルストリーム暗号によって伝送され、通信の秘密を保つことができる。【選択図】  図１
2006067412.tif 000002
【特許請求の範囲】
【請求項１】
送信装置と、受信装置と、を備える暗号伝送システムであって、
（ａ）前記送信装置は、
送信側秘密鍵と、これに対応する送信側公開鍵と、を生成する送信側鍵生成部、
前記生成された送信側公開鍵を前記受信装置に通知する送信側鍵通知部、
を備え、
（ｂ）前記受信装置は、
受信側秘密鍵と、これに対応する受信側公開鍵と、を生成する受信側鍵生成部、
前記送信装置から通知された送信側公開鍵を受け付ける受信側鍵受付部、
少なくとも前記生成された受信側秘密鍵に基づいて、受信側乱数を生成する受信側乱数生成部、
前記生成された受信側乱数を、前記受信された送信側公開鍵で暗号化した受信側第１暗号を得る受信側乱数暗号化部、
前記得られた受信側第１暗号と、前記生成された受信側公開鍵と、を前記送信装置に通知する受信側通知部、
を備え、
（ｃ）前記送信装置は、
前記受信装置から通知された受信側第１暗号と、受信側公開鍵と、を受け付ける送信側鍵受付部、
前記受け付けられた受信側第１暗号を、前記生成された送信側秘密鍵で復号化して、受信側乱数を得る送信側乱数復号化部、
送信側乱数を生成する送信側乱数生成部、
前記生成された送信側乱数と、前記生成された送信側秘密鍵と、に基づいて、セッション鍵を得るセッション鍵生成部、
伝送すべき情報を、前記得られたセッション鍵で暗号化した送信側第１暗号を得る送信側情報暗号化部、
前記得られた受信側乱数を、前記得られたセッション鍵で暗号化した送信側第２暗号を得る送信側乱数暗号化部、
前記得られたセッション鍵を、前記受け付けられた受信側公開鍵で暗号化した送信側第３暗号を得るセッション鍵暗号化部、
前記得られた送信側第１暗号と、前記得られた送信側第２暗号と、前記得られた送信側第３暗号と、を、前記受信装置に送信する送信部
をさらに備え、
（ｄ）前記受信装置は、
前記送信装置から送信される送信側第１暗号と、送信側第２暗号と、送信側第３暗号と、を受信する受信部、
前記受信された送信側第３暗号を、前記生成された受信側秘密鍵で復号化して、セッション鍵を得るセッション鍵復号化部、
前記受信された送信側第２暗号を、前記復号化されたセッション鍵で復号化して、受信側乱数を得る受信側乱数復号化部、
前記受信側乱数生成部により生成された受信側乱数と、前記受信側乱数復号化部により得られた受信側乱数と、が一致する場合、前記受信された送信側第１暗号を、前記復号化されたセッション鍵で復号化して、伝送された情報を得る受信側情報復号化部
を備える
ことを特徴とする物。
【請求項２】
請求項１に記載の暗号伝送システムであって、
前記受信側乱数生成部は、前記生成された受信側秘密鍵と、前記受信側鍵生成部により受信側秘密鍵と受信側送信鍵とが生成された時刻と、に基づいて、受信側乱数を生成する
ことを特徴とする物。
【請求項３】
請求項１に記載の暗号伝送システムであって、
前記送信側乱数生成部は、現在の時刻と、前記得られた受信側乱数と、に基づいて、送信側乱数を生成する
ことを特徴とする物。
【請求項４】
請求項１に記載の暗号伝送システムであって、
前記送信側乱数生成部は、現在の時刻と、前記得られた受信側乱数と、当該伝送すべき情報の属性と、に基づいて、送信側乱数を生成する
ことを特徴とする物。
【請求項５】
請求項４に記載の暗号伝送システムであって、
当該伝送すべき情報の属性は、当該情報が含まれるファイルのファイル名および／またはパス名である
ことを特徴とする物。
【請求項６】
請求項１に記載の暗号伝送システムであって、
受信側乱数暗号化部、セッション鍵生成部、セッション鍵暗号化部における暗号化はＲＳＡ（Rivest Shamir Adleman）暗号化であり、
セッション鍵復号化部、送信側乱数復号化部、における復号化はＲＳＡ復号化である
ことを特徴とする物。
【請求項７】
請求項１に記載の暗号伝送システムであって、
送信側情報暗号化部、送信側乱数暗号化部、における暗号化は、鍵をカオス乱数生成の種として生成される乱数列によって情報を順次暗号化するストリーム暗号の暗号化であり、
受信側乱数復号化部、受信側情報復号化部における復号化は、鍵をカオス乱数生成の種として生成される乱数列によって情報を順次復号化するストリーム暗号の復号化である
ことを特徴とする物。
【請求項８】
請求項１に記載の暗号伝送システムであって、
前記送信側乱数生成部と、前記受信側乱数生成部と、は、互いに同じハッシュ関数を用いて、当該送信側乱数と、当該受信側乱数と、を生成する
ことを特徴とする物。
【請求項９】
請求項１に記載の暗号伝送システムであって、
前記送信側乱数生成部と、前記受信側乱数生成部と、は、互いに異なるハッシュ関数を用いて、当該送信側乱数と、当該受信側乱数と、を生成する
ことを特徴とする物。
【請求項１０】
請求項１に記載の暗号伝送システムであって、
前記送信部は、送信側第１暗号、送信側第２暗号、送信側第３暗号を、第三者がアクセス可能なサーバ装置にアップロードし、
前記受信部は、前記サーバ装置にアップロードされた送信側第１暗号、送信側第２暗号、送信側第３暗号をダウンロードすることによって、
前記送信部による送信と、前記受信部による受信が行われる
ことを特徴とする物。
【請求項１１】
請求項１に記載の暗号伝送システムであって、前記送信装置と、前記受信装置と、は、少なくとも第１の種類および第２の種類を含む種類のいずれかに該当し、
前記送信部は、前記送信装置が該当する種類を指定する種類情報をあわせて送信し、
前記受信部は、前記送信装置から送信される種類情報をあわせて受信し、
前記受信側情報復号化部は、
（ｘ）前記受信された種類情報が第１の種類を指定し、かつ、当該受信装置の種類が第１の種類に該当するならば、当該復号化を行わなず、
（ｙ）「前記受信された種類情報が第１の種類を指定し、かつ、当該受信装置の種類が第２の種類に該当する」もしくは「前記受信された種類情報が第２の種類を指定する」ならば、当該復号化を行う
ことを特徴とする物。
【請求項１２】
請求項１１に記載の暗号伝送システムであって、
前記種類情報は、前記得られたセッション鍵により暗号化されてから前記送信部により送信され、
これが前記受信部により受信されると、前記復号化されたセッション鍵で復号化されて当該送信装置が該当する種類が得られる
ことを特徴とする物。
【請求項１３】
請求項１から１２のいずれか１項に記載の暗号伝送システムにおける送信装置。
【請求項１４】
請求項１から１２のいずれか１項に記載の暗号伝送システムにおける受信装置。
【請求項１５】
受信装置と通信する送信装置にて実行される送信方法であって、
送信側秘密鍵と、これに対応する送信側公開鍵と、を生成する送信側鍵生成工程、
前記生成された送信側公開鍵を前記受信装置に通知する送信側鍵通知工程、
前記受信装置から通知された受信側第１暗号と、受信側公開鍵と、を受け付ける送信側鍵受付工程、
前記受け付けられた受信側第１暗号を、前記生成された送信側秘密鍵で復号化して、受信側乱数を得る送信側乱数復号化工程、
送信側乱数を生成する送信側乱数生成工程、
前記生成された送信側乱数と、前記生成された送信側秘密鍵と、に基づいて、セッション鍵を得るセッション鍵生成工程、
伝送すべき情報を、前記得られたセッション鍵で暗号化した送信側第１暗号を得る送信側情報暗号化工程、
前記得られた受信側乱数を、前記得られたセッション鍵で暗号化した送信側第２暗号を得る送信側乱数暗号化工程、
前記得られたセッション鍵を、前記受け付けられた受信側公開鍵で暗号化した送信側第３暗号を得るセッション鍵暗号化工程、
前記得られた送信側第１暗号と、前記得られた送信側第２暗号と、前記得られた送信側第３暗号と、を、前記受信装置に送信する送信工程
を備えることを特徴とする方法。
【請求項１６】
請求項１５に記載の送信方法であって、
前記送信側乱数生成工程では、現在の時刻と、前記得られた受信側乱数と、に基づいて、送信側乱数を生成する
ことを特徴とする方法。
【請求項１７】
請求項１５に記載の送信方法であって、
前記送信側乱数生成工程では、現在の時刻と、前記得られた受信側乱数と、当該伝送すべき情報の属性と、に基づいて、送信側乱数を生成する
ことを特徴とする方法。
【請求項１８】
請求項１７に記載の送信方法であって、
当該伝送すべき情報の属性は、当該情報が含まれるファイルのファイル名および／またはパス名である
ことを特徴とする方法。
【請求項１９】
請求項１５に記載の送信方法であって、
送信側情報暗号化工程、送信側乱数暗号化工程、における暗号化は、鍵をカオス乱数生成の種として生成される乱数列によって情報を順次暗号化するストリーム暗号の暗号化である
ことを特徴とする方法。
【請求項２０】
請求項１５に記載の送信方法であって、
前記送信工程では、送信側第１暗号、送信側第２暗号、送信側第３暗号を、第三者がアクセス可能なサーバ装置にアップロードすることによって、前記送信工程における送信が行われる
ことを特徴とする方法。
【請求項２１】
請求項１５に記載の送信方法であって、前記送信装置と、前記受信装置と、は、少なくとも第１の種類および第２の種類を含む種類のいずれかに該当し、
前記送信工程では、前記送信装置が該当する種類を指定する種類情報をあわせて送信する
ことを特徴とする方法。
【請求項２２】
請求項２１に記載の送信方法であって、
前記種類情報は、前記得られたセッション鍵により暗号化されてから前記送信工程にて送信される
ことを特徴とする方法。
【請求項２３】
送信装置と通信する受信装置にて実行される受信方法であって、
受信側秘密鍵と、これに対応する受信側公開鍵と、を生成する受信側鍵生成工程、
前記送信装置から通知された送信側公開鍵を受け付ける受信側鍵受付工程、
少なくとも前記生成された受信側秘密鍵に基づいて、受信側乱数を生成する受信側乱数生成工程、
前記生成された受信側乱数を、前記受信された送信側公開鍵で暗号化した受信側第１暗号を得る受信側乱数暗号化工程、
前記得られた受信側第１暗号と、前記生成された受信側公開鍵と、を前記送信装置に通知する受信側通知工程、
前記送信装置から送信される送信側第１暗号と、送信側第２暗号と、送信側第３暗号と、を受信する受信工程、
前記受信された送信側第３暗号を、前記生成された受信側秘密鍵で復号化して、セッション鍵を得るセッション鍵復号化工程、
前記受信された送信側第２暗号を、前記復号化されたセッション鍵で復号化して、受信側乱数を得る受信側乱数復号化工程、
前記受信側乱数生成工程にて生成された受信側乱数と、前記受信側乱数復号化工程にて得られた受信側乱数と、が一致する場合、前記受信された送信側第１暗号を、前記復号化されたセッション鍵で復号化して、伝送された情報を得る受信側情報復号化工程
を備えることを特徴とする方法。
【請求項２４】
請求項２３に記載の受信方法であって、
前記受信側乱数生成工程では、前記生成された受信側秘密鍵と、前記鍵生成工程にて受信側秘密鍵と受信側送信鍵とが生成された時刻と、に基づいて、受信側乱数を生成する
ことを特徴とする方法。
【請求項２５】
請求項２３に記載の受信方法であって、
受信側乱数暗号化工程における暗号化はＲＳＡ（Rivest Shamir Adleman）暗号化である
ことを特徴とする方法。
【請求項２６】
請求項２３に記載の受信方法であって、
受信側乱数復号化工程、受信側情報復号化工程における復号化は、鍵をカオス乱数生成の種として生成される乱数列によって情報を順次復号化するストリーム暗号の復号化である
ことを特徴とする方法。
【請求項２７】
請求項２３に記載の受信方法であって、
前記受信工程は、前記サーバ装置にアップロードされた送信側第１暗号、送信側第２暗号、送信側第３暗号をダウンロードすることによって、前記受信工程における受信が行われる
ことを特徴とする方法。
【請求項２８】
請求項２３に記載の受信方法であって、前記送信装置と、前記受信装置と、は、少なくとも第１の種類および第２の種類を含む種類のいずれかに該当し、
前記受信工程では、前記送信装置から送信される種類情報をあわせて受信し、
前記受信側情報復号化工程では、
（ｘ）前記受信された種類情報が第１の種類を指定し、かつ、当該受信装置の種類が第１の種類に該当するならば、当該復号化を行わなず、
（ｙ）「前記受信された種類情報が第１の種類を指定し、かつ、当該受信装置の種類が第２の種類に該当する」もしくは「前記受信された種類情報が第２の種類を指定する」ならば、当該復号化を行う
ことを特徴とする方法。
【請求項２９】
請求項２８に記載の受信方法であって、
種類情報が前記受信工程によって受信されると、前記復号化されたセッション鍵で復号化されて当該送信装置が該当する種類が得られる
ことを特徴とする方法。
【請求項３０】
コンピュータを、請求項１３に記載の送信装置として機能させることを特徴とするプログラム。
【請求項３１】
コンピュータを、請求項１４に記載の受信装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を暗号化して伝送するのに好適な暗号伝送システム、送信装置、受信装置、送信方法、受信方法、ならびに、これらをコンピュータ上にて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、暗号技術の分野においては、情報を伝送する際の漏曳を防止するため、種々の技術が提案されている。たとえば、公開鍵暗号と共通鍵暗号の技術を用いて通信路を暗号化するＳＳＬ(Secure Socket Layer)技術などがある。
【０００３】
一方で、共通鍵暗号の技術として、発明者らはカオス乱数を用いたベクターストリーム暗号を以下の文献で提案している。
【特許文献１】特開２００３−０６６８３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、情報を伝送する際の漏曳を防止するための技術は、常に新しいものが求められていることはいうまでもない。また、送信側と受信側とでピアツーピア的に情報を暗号化して安全に伝送したい場合や、送信側からＦＴＰ(File Transfer Protocol)サーバに暗号化された情報をアップロードし、受信側ではＦＴＰサーバからこれをダウンロードして復号化する際にも、安全な伝送を行いたい場合は多い。
【０００５】
本発明は、上記のような課題を解決するものであって、情報を暗号化して伝送するのに好適な暗号伝送システム、送信装置、受信装置、送信方法、受信方法、ならびに、これらをコンピュータ上にて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００７】
本発明の第１の観点に係る暗号伝送システムは、送信装置と、受信装置と、を備え、以下のように構成する。
【０００８】
すなわち、送信装置は、送信側鍵生成部、送信側鍵通知部、を備える。
【０００９】
ここで、送信側鍵生成部は、送信側秘密鍵と、これに対応する送信側公開鍵と、を生成する。
【００１０】
一方、送信側鍵通知部は、生成された送信側公開鍵を受信装置に通知する。
【００１１】
また、受信装置は、受信側鍵生成部、受信側鍵受付部、受信側乱数生成部、受信側乱数暗号化部、受信側通知部、を備える。
【００１２】
ここで、受信側鍵生成部は、受信側秘密鍵と、これに対応する受信側公開鍵と、を生成する。
【００１３】
一方、受信側鍵受付部は、送信装置から通知された送信側公開鍵を受け付ける。
【００１４】
さらに、受信側乱数生成部は、少なくとも生成された受信側秘密鍵に基づいて、受信側乱数を生成する。
【００１５】
そして、受信側乱数暗号化部は、生成された受信側乱数を、受信された送信側公開鍵で暗号化した受信側第１暗号を得る。
【００１６】
一方、受信側通知部は、得られた受信側第１暗号と、生成された受信側公開鍵と、を送信装置に通知する。
【００１７】
また、送信装置は、送信側鍵受付部、送信側乱数復号化部、送信側乱数生成部、セッション鍵生成部、送信側情報暗号化部、送信側乱数暗号化部、セッション鍵暗号化部、送信部をさらに備える。
【００１８】
ここで、送信側鍵受付部は、受信装置から通知された受信側第１暗号と、受信側公開鍵と、を受け付ける。
【００１９】
一方、送信側乱数復号化部は、受け付けられた受信側第１暗号を、生成された送信側秘密鍵で復号化して、受信側乱数を得る。
【００２０】
さらに、送信側乱数生成部は、送信側乱数を生成する。
【００２１】
そして、セッション鍵生成部は、生成された送信側乱数と、生成された送信側秘密鍵と、に基づいて、セッション鍵を得る。
【００２２】
一方、送信側情報暗号化部は、伝送すべき情報を、得られたセッション鍵で暗号化した送信側第１暗号を得る。
【００２３】
さらに、送信側乱数暗号化部は、得られた受信側乱数を、得られたセッション鍵で暗号化した送信側第２暗号を得る。
【００２４】
そして、セッション鍵暗号化部は、得られたセッション鍵を、受け付けられた受信側公開鍵で暗号化した送信側第３暗号を得る。
【００２５】
一方、送信部は、得られた送信側第１暗号と、得られた送信側第２暗号と、得られた送信側第３暗号と、を、受信装置に送信する。
【００２６】
また、受信装置は、受信部、セッション鍵復号化部、受信側乱数復号化部、受信側情報復号化部をさらに備える。
【００２７】
ここで、受信部は、送信装置から送信される送信側第１暗号と、送信側第２暗号と、送信側第３暗号と、を受信する。
【００２８】
一方、セッション鍵復号化部は、受信された送信側第３暗号を、生成された受信側秘密鍵で復号化して、セッション鍵を得る。
【００２９】
さらに、受信側乱数復号化部は、受信された送信側第２暗号を、復号化されたセッション鍵で復号化して、受信側乱数を得る。
【００３０】
そして、受信側情報復号化部は、受信側乱数生成部により生成された受信側乱数と、受信側乱数復号化部により得られた受信側乱数と、が一致する場合、受信された送信側第１暗号を、復号化されたセッション鍵で復号化して、伝送された情報を得る。
【００３１】
また、本発明の暗号伝送システムにおいて、受信側乱数生成部は、生成された受信側秘密鍵と、受信側鍵生成部により受信側秘密鍵と受信側送信鍵とが生成された時刻と、に基づいて、受信側乱数を生成するように構成することができる。
【００３２】
また、本発明の暗号伝送システムにおいて、送信側乱数生成部は、現在の時刻と、得られた受信側乱数と、に基づいて、送信側乱数を生成するように構成することができる。
【００３３】
また、本発明の暗号伝送システムにおいて、送信側乱数生成部は、現在の時刻と、得られた受信側乱数と、当該伝送すべき情報の属性と、に基づいて、送信側乱数を生成するように構成することができる。
【００３４】
また、本発明の暗号伝送システムにおいて、当該伝送すべき情報の属性は、当該情報が含まれるファイルのファイル名および／またはパス名であるように構成することができる。
【００３５】
また、本発明の暗号伝送システムにおいて、受信側乱数暗号化部、セッション鍵生成部、セッション鍵暗号化部における暗号化はＲＳＡ（Rivest Shamir Adleman）暗号化であり、セッション鍵復号化部、送信側乱数復号化部、における復号化はＲＳＡ復号化であるように構成することができる。
【００３６】
また、本発明の暗号伝送システムにおいて、送信側情報暗号化部、送信側乱数暗号化部、における暗号化は、鍵をカオス乱数生成の種として生成される乱数列によって情報を順次暗号化するストリーム暗号の暗号化であり、受信側乱数復号化部、受信側情報復号化部における復号化は、鍵をカオス乱数生成の種として生成される乱数列によって情報を順次復号化するストリーム暗号の復号化であるように構成することができる。
【００３７】
また、本発明の暗号伝送システムにおいて、送信側乱数生成部と、受信側乱数生成部と、は、互いに同じハッシュ関数を用いて、当該送信側乱数と、当該受信側乱数と、を生成するように構成することができる。
【００３８】
また、本発明の暗号伝送システムにおいて、送信側乱数生成部と、受信側乱数生成部と、は、互いに異なるハッシュ関数を用いて、当該送信側乱数と、当該受信側乱数と、を生成するように構成することができる。
【００３９】
また、本発明の暗号伝送システムにおいて、送信部は、送信側第１暗号、送信側第２暗号、送信側第３暗号を、第三者がアクセス可能なサーバ装置にアップロードし、受信部は、サーバ装置にアップロードされた送信側第１暗号、送信側第２暗号、送信側第３暗号をダウンロードすることによって、送信部による送信と、受信部による受信が行われるように構成することができる。
【００４０】
また、本発明の暗号伝送システムにおいて、送信装置と、受信装置と、は、少なくとも第１の種類および第２の種類を含む種類のいずれかに該当し、以下のように構成することができる。
【００４１】
すなわち、送信部は、送信装置が該当する種類を指定する種類情報をあわせて送信する。
【００４２】
一方、受信部は、送信装置から送信される種類情報をあわせて受信する。
【００４３】
さらに、受信側情報復号化部は、
（ｘ）受信された種類情報が第１の種類を指定し、かつ、当該受信装置の種類が第１の種類に該当するならば、当該復号化を行わなず、
（ｙ）「受信された種類情報が第１の種類を指定し、かつ、当該受信装置の種類が第２の種類に該当する」もしくは「受信された種類情報が第２の種類を指定する」ならば、当該復号化を行う。
【００４４】
また、本発明の暗号伝送システムにおいて、種類情報は、得られたセッション鍵により暗号化されてから送信部により送信され、これが受信部により受信されると、復号化されたセッション鍵で復号化されて当該送信装置が該当する種類が得られるように構成することができる。
【００４５】
本発明のその他の観点に係る送信装置は、上記の暗号伝送システムにおける送信装置である。
【００４６】
本発明のその他の観点に係る受信装置は、上記の暗号伝送システムにおける受信装置である。
【００４７】
本発明のその他の観点に係る送信方法は、上記の送信装置において実行される方法である。
【００４８】
本発明のその他の観点に係る受信方法は、上記の受信装置において実行される方法である。
【００４９】
本発明の他の観点に係るプログラムは、コンピュータを、上記の送信装置、もしくは、受信装置として機能させ、コンピュータに、上記の送信方法もしくは受信方法を実行させるように構成する。
【００５０】
当該プログラムは、コンピュータ読取可能な情報記録媒体（コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、または、半導体メモリを含む。）に記録することができる。
【００５１】
そして、上記の情報記録媒体は、コンピュータとは独立して配布、販売することができるほか、インターネット等のコンピュータ通信網を介して上記のプログラムそのものを配布、販売することができる。
【発明の効果】
【００５２】
本発明によれば、情報を暗号化して伝送するのに好適な暗号伝送システム、送信装置、受信装置、送信方法、受信方法、ならびに、これらをコンピュータ上にて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００５３】
以下に本発明の実施形態を説明する。なお、以下にあげる実施形態は、説明のためのものであり、本発明の範囲を制限する物ではない。したがって、当業者であれば、これらの各要素または全要素を、これと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も、本発明の範囲に含まれる。
【実施例１】
【００５４】
図１は、本発明の暗号通信システムの実施形態の概要構成を示す説明図である。以下、本図を参照して説明する。
【００５５】
本図に示す通り、暗号通信システム１０１は、送信装置１３１と受信装置１５１とを有し、両者はインターネット１７１を介してピアツーピアで通信したり、送信と受信とに時間差を設けたい場合には、ＦＴＰサーバ１９１を介して通信したりする。
【００５６】
送信装置１３１と受信装置１５１は、伝送したい情報のやりとりに先立って、暗号化に用いる鍵のやりとりを行う。以下、両者の通信の様子について説明する。なお、理解を容易にするため、以下では送信装置１３１側について符号「A」を、受信装置１５１側について符号「B」を、適宜使用する。
【００５７】
図２は、本暗号通信システム１０１における通信の様子を示すセッション図である。以下、本図を参照して説明する。
【００５８】
まず、通信を行う前に、送信装置１３１と受信装置１５１とは、送信側公開鍵A.pub／送信側秘密鍵A.priと受信側公開鍵B.pub／受信側秘密鍵B.priとをそれぞれ生成する。本実施形態では、公開鍵／秘密鍵を用いた暗号化システムとして、ＲＳＡ暗号を例としてあげて説明するが、他の暗号化システムを適用することも可能であり、当該実施形態も本発明の範囲に含まれる。
【００５９】
そして、送信装置１３１は、受信装置１５１へ、送信側公開鍵A.pubを通知する（２０１）。
【００６０】
受信装置１５１は、送信側公開鍵A.pubの通知（２０１）を受け付けると、受信側乱数B.rndを生成して、これを送信側公開鍵A.pubでＲＳＡ暗号化し、得られた結果RSA(B.rnd,A.pub)と受信側公開鍵B.pubとを送信装置１３１に通知する（２０２）。
【００６１】
送信装置は、これの通知（２０２）を受け付けると、RSA(B.rnd,A.pub)を送信側秘密鍵B.priによって復号して、受信側乱数B.rndを得る。そして、送信側乱数A.rndを生成して、送信側秘密鍵A.priと送信側乱数A.rndとからセッション鍵Kを生成する。
【００６２】
そして、送信装置１３１は、以下の暗号を受信装置１５１に送信する（２０３）。
（１）伝送すべき情報dataをセッション鍵Kでベクトルストリーム暗号化した送信側第１暗号VSC(data,K)
（２）受信側乱数B.rndをセッション鍵Kでベクトルストリーム暗号化した送信側第２暗号VSC(B.rnd,K)
（３）セッション鍵Kを受信側公開鍵B.pubでＲＳＡ暗号化した送信側第３暗号RSA(K,B.pub)
【００６３】
ここで、ベクトルストリーム暗号としては、長いデータ列を高速に暗号化したり復号したりするのに適した暗号化を適用することができる。特に、ＲＳＡ暗号などの公開鍵／秘密鍵を用いた暗号システムは、暗号化や復号が遅いため、これよりも高速なベクトルストリーム暗号を用いるのは有用である。また、セッション毎に異なるセッション鍵Kを使うことによって、解読をできるだけ防止することができる。
【００６４】
受信装置１５１は、これら（２０３）を受信すると、送信側第３暗号RSA(K,B.pub)を受信側秘密鍵B.priを用いて復号してセッション鍵Kを得る。そして、得られたセッション鍵Kを用いて、送信側第２暗号VSC(B.rnd,K)を復号して、受信側乱数B.rndを得る。
【００６５】
途中で外乱や干渉、改変等がない限り、この復号で得られた受信側乱数B.rndと、元々受信装置１５１が自分で生成した受信側乱数B.rndは一致するはずである。そこで、これらが一致することをもって、セッション鍵Kを「認証」する。
【００６６】
セッション鍵Kが認証された場合は、送信側第１暗号VSC(data,K)を、得られたセッション鍵Kで復号して、伝送された情報dataを得る。
【００６７】
以下、さらに詳細に説明する。
【００６８】
（送信装置）
図３は、本実施形態に係る暗号通信システムの送信装置の概要構成を示す模式図である。図４は、本送信装置にて実行される送信処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００６９】
送信装置１３１は、送信側鍵生成部３０１、送信側鍵通知部３０２、送信側鍵受付部３０３、送信側乱数復号化部３０４、送信側乱数生成部３０５、セッション鍵生成部３０６、送信側情報暗号化部３０７、送信側乱数暗号化部３０８、セッション鍵暗号化部３０９、送信部３１０を備える。なお本図においては、理解を容易にするため、適宜要素の名称中の「送信側」を省略して、図示している。
【００７０】
送信処理が開始されると、送信側鍵生成部３０１は、送信側秘密鍵A.priと、これに対応する送信側公開鍵A.pubと、を生成する（ステップＳ４０１）。
【００７１】
上記のように、公開鍵と秘密鍵を用いた任意の暗号化システムを利用することができるが、本実施形態ではＲＳＡ暗号を用いている。送信側秘密鍵A.priの生成には、たとえば、ユーザに秘密鍵A.priの全部を入力させたり、ユーザに秘密鍵A.priの一部を入力させて乱数により生成されたものと組み合わせたり、現在の時刻などを種に生成した乱数を秘密鍵A.priとしたりなど、種々の手法を採用することができる。公開鍵A.pubは、当該暗号化システムにおいて、秘密鍵A.priと対応付けられるものである。
【００７２】
次に、送信側鍵通知部３０２は、生成された送信側公開鍵A.pubを受信装置に通知する（ステップＳ４０２）。
【００７３】
通知の手法としては、送信装置１３１と受信装置１５１との間であらかじめ何らかの通信路を確立しておき、これを介して通知を行うこととしても良いし、電子メールに添付したり、ＦＴＰサーバ１９１に当該送信側公開鍵A.pubを配置することとしても良い。
【００７４】
なお、ステップＳ４０１における公開鍵A.pubと秘密鍵A.priの生成は、本送信処理が実行されるたびに新規に行われることが望ましいが、一定期間有効なものをあらかじめ生成しておき、これを再利用することも可能である。いずれの場合であっても、送信装置１３１側では、公開鍵A.pubに対応する秘密鍵A.priを何らかの形で入手可能にしておく必要がある。すなわち、ユーザの頭に秘密鍵A.priを記憶させておくこととしても良いし、データの暗号化伝送のたびに秘密鍵A.priを生成するのであれば、一時的にＲＡＭ（Random Access Memory）やハードディスクに記憶して、後の処理での使用後に消去することとしても良い。
【００７５】
ついで、送信側鍵受付部３０３は、受信装置から通知された受信側第１暗号RSA(B.rnd,A.pub)と、受信側公開鍵B.pubと、を受け付ける（ステップＳ４０３）。
【００７６】
前述のように、送信装置１３１では送信側秘密鍵A.priと送信側公開鍵A.pubが生成されるが、これと同様に、受信装置１５１でも、受信側秘密鍵B.priと受信側公開鍵B.pubが生成される。ここでは、受信側第１暗号RSA(B.rnd,A.pub)のほか、その受信側公開鍵B.pubの通知を受け付けるのである。
【００７７】
そして、送信側乱数復号化部３０４は、受け付けられた受信側第１暗号RSA(B.rnd,A.pub)を、生成された送信側秘密鍵A.priで復号化して、受信側乱数B.rndを得る（ステップＳ４０４）。
【００７８】
送信装置１３１と受信装置１５１との間の通信路で通信用パケットの改変や受信装置１５１のなりすましなどがない限り、ステップＳ４０４で得られる受信側乱数B.rndは、後述するように、受信装置１５１で生成された乱数と一致するはずである。本発明では、この乱数を後の「認証」で用いる。
【００７９】
さらに、送信側乱数生成部３０５は、送信側乱数A.rndを生成する（ステップＳ４０５）。
【００８０】
送信側乱数A.rndの生成方法としては、種々の技術が考えられる。たとえば、以下のようなものを送信側乱数そのものとして、もしくは、送信側乱数を生成する種として、利用することができる。
（１）現在の時刻
（２）ステップＳ４０４で得られた受信側乱数B.rnd
（３）ユーザからの指示入力
（４）伝送すべき情報を表すデータが含まれるファイルのファイル名、絶対パス名、相対パス名、ＵＲＬ（Uniform Resource Locator）
（５）伝送すべき情報を表すデータのハッシュ値
（６）これらを所定の演算（四則演算、各種論理演算、各種ビット演算、各種ハッシュ関数の適用、各種の漸化式の所定回数の適用、各種の暗号化）で組み合わせたもの
上記（４）（５）は、伝送すべき情報の属性と考えることができる。
【００８１】
そして、セッション鍵生成部３０６は、生成された送信側乱数A.rndと、生成された送信側秘密鍵A.priと、に基づいて、セッション鍵Kを得る（ステップＳ４０６）。
【００８２】
セッション鍵Kの生成手法にも、種々の技術を適用することができる。典型的には、送信側乱数A.rndを、送信側秘密鍵A.priで、ＲＳＡ暗号化することが考えられる。この場合、
K = RSA(A.rnd，A.pri)
となる。なお、セッション鍵Kは、受信装置１５１側でそのまま利用するものであり、受信装置１５１でA.rndを必要とするわけではないので、このほかの手法によってセッション鍵Kを生成しても良い。要は、セッション鍵Kとして、ワンタイムパスワード的なものが得られれば十分である。
【００８３】
ついで、送信側情報暗号化部３０７は、伝送すべき情報dataを、ステップＳ４０６で得られたセッション鍵Kで暗号化した送信側第１暗号VSC(data,K)を得る（ステップＳ４０７）。本実施形態では、暗号化にベクトルストリーム暗号（Vector Stream Cipher）を用いている。ベクトルストリーム暗号は、[特許文献１]にも開示する通り、本願の発明者らが開発したものである。
【００８４】
たとえば、セッション鍵Kを初期値とし、所定のチェビシェフ多項式により定義される漸化式を繰り返し適用することによって得られる数列と、dataを表現する数列と、各要素の排他的論理和（そのほか、逆演算が可能な演算）をとることによって、新たな数列を得て、この数列を送信側第１暗号とするのである。
【００８５】
さらに、送信側乱数暗号化部３０８は、ステップＳ４０４で得られた受信側乱数B.rndを、ステップＳ４０６で得られたセッション鍵Kで暗号化した送信側第２暗号VSC(B.rnd,K)を得る（ステップＳ４０８）。本実施形態では、ここでもベクトルストリーム暗号を利用している。
【００８６】
そして、セッション鍵暗号化部３０９は、ステップＳ４０６で得られたセッション鍵Kを、ステップＳ４０３で受け付けられた受信側公開鍵B.pubで暗号化した送信側第３暗号RSA(K,B.pub)を得る。ここでの暗号化は、後述するように受信装置１５１側での「認証」に用いるので、本実施形態ではＲＳＡ暗号を用いている。公開鍵と秘密鍵を用いた認証が可能なものであれば、ＲＳＡ暗号以外の暗号化手法を適用することもできる。
【００８７】
最後に、送信部３１０は、ステップＳ４０７で得られた送信側第１暗号VSC(data,K)と、ステップＳ４０８で得られた送信側第２暗号VSC(B.rnd,K)と、ステップＳ４０９で得られた送信側第３暗号RSA(K,B.pub)と、を、受信装置１５１に送信して（ステップＳ４１０）、本処理を終了する。
【００８８】
上記のように、ステップＳ４１０における送受通信の形態としては、通常のピアツーピア通信によるもののほか、送信部３１０では、これらの暗号を公知のＦＴＰサーバ１９１にアップロードし、受信装置１５１側で当該ＦＴＰサーバ１９１からダウンロードする、等による送受通信の形態を採用しても良い。
【００８９】
（受信装置）
図５は、本実施形態に係る暗号通信システムの受信装置の概要構成を示す模式図である。図６は、本送信装置１３１にて実行される受信処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００９０】
受信装置１５１は、受信側鍵生成部５０１、受信側鍵受付部５０２、受信側乱数生成部５０３、受信側乱数暗号化部５０４、受信側鍵通知部５０５、受信部５０６、セッション鍵復号化部５０７、受信側乱数復号化部５０８、受信側情報復号化部５０９を備える。なお本図においては、理解を容易にするため、適宜要素の名称中の「受信側」を省略して、図示している。
【００９１】
本処理が開始されると、まず、受信側鍵生成部５０１が、受信側秘密鍵B.priと、これに対応する受信側公開鍵B.pubと、を生成する（ステップＳ６０１）。この生成の手法は、送信装置１３１におけるものと同様である。
【００９２】
次に、受信側鍵受付部５０２は、送信装置１３１から通知された送信側公開鍵A.pubを受け付ける（ステップＳ６０２）。
【００９３】
さらに、受信側乱数生成部５０３は、少なくとも生成された受信側秘密鍵B.priに基づいて、受信側乱数B.rndを生成する（ステップＳ６０３）。
【００９４】
受信側乱数B.rndの生成についても、送信側乱数A.rndの生成と同様の手法を採用することができる。たとえば、現在の時刻を、受信側秘密鍵B.priでＲＳＡ暗号化することによって得られるものを受信側乱数B.rndとすることができる。
【００９５】
送信側乱数A.rndや受信側乱数B.rndが、現在の時刻等をそれぞれの秘密鍵で暗号化したものとすると、後の処理で、対応する公開鍵を使うことにより、その乱数を認証することができる、という利点がある。すなわち、送信装置１３１では、受信側公開鍵B.pubを利用して受信側乱数B.rndを認証する処理を追加することができ、受信装置１５１では、送信側公開鍵A.pubを利用して送信側乱数A.rndを認証する処理を追加することができる。
【００９６】
これらの処理を追加することにより、送信装置１３１にとっては、受信者のなりすましを防止でき、受信装置１５１にとっては、送信者のなりすましを防止することができる。
【００９７】
ついで、受信側乱数暗号化部５０４は、生成された受信側乱数B.rndを、受信された送信側公開鍵A.pubで暗号化した受信側第１暗号RSA(B.rnd,A.pub)を得る（ステップＳ６０４）。本実施形態では、送信装置１３１の説明で述べたように、ＲＳＡ暗号を用いて暗号化を行う。
【００９８】
そして、受信側鍵通知部５０５は、得られた受信側第１暗号RSA(B.rnd,A.pub)と、生成された受信側公開鍵B.pubと、を送信装置１３１に通知する（ステップＳ６０５）。当該通知は、送信装置１３１の説明で述べたように、ピアツーピア通信を用いても良いし、ＦＴＰサーバ１９１等を介して情報を受け渡すこととしても良い。
【００９９】
さて、受信部５０６は、送信装置１３１から送信される送信側第１暗号VSC(data,K)と、送信側第２暗号VSC(B.rnd,K)と、送信側第３暗号RSA(K,B.pub)と、を受信する（ステップＳ６０６）。この受信も、送信装置１３１の説明で述べたように、ピアツーピア通信を用いても良いし、ＦＴＰサーバ１９１等を介して情報を受け渡すこととしても良い。
【０１００】
ついで、セッション鍵復号化部５０７は、受信された送信側第３暗号RSA(K,B.pub)を、生成された受信側秘密鍵B.priで復号化して、セッション鍵Kを得る（ステップＳ６０７）。
【０１０１】
さらに、受信側乱数復号化部５０８は、受信された送信側第２暗号VSC(B.rnd,K)を、復号化されたセッション鍵Kで復号化して、受信側乱数B.rndを得る（ステップＳ６０８）。
【０１０２】
さて、受信側情報復号化部５０９は、ステップＳ６０２において受信側乱数生成部５０３により生成された受信側乱数B.rndと、ステップＳ６０８において受信側乱数復号化部５０８により得られた受信側乱数B.rndと、が一致するか否かを判定し（ステップＳ６０９）、一致する場合（ステップＳ６０９；Ｙｅｓ）、受信された送信側第１暗号VSC(data,K)を、復号化されたセッション鍵Kで復号化して、伝送された情報dataを得る（ステップＳ６１０）。
【０１０３】
このように、自身が生成した受信側乱数B.rndと、送信装置１３１に送って戻ってきた受信側乱数B.rndと、が一致することをもって、正しい送信元であることを確認するのである。
【０１０４】
なお、本実施形態では、セッション鍵Kによる復号は、セッション鍵Kによる暗号化と同じ演算を行うことによってできる。
【０１０５】
一方、一致しない場合（ステップＳ６０９；Ｎｏ）、エラーを報告して（ステップＳ６１１）、本処理を終了する。
【０１０６】
本実施形態によれば、高速なベクトルストリーム暗号を用いて伝送するデータを暗号化して送ることができる一方で、セッション鍵を安全にやりとりすることができる。
【０１０７】
送信装置１３１、受信装置１５１は、いずれも、「各種の演算を行うことができ、何らかの形態で互いに通信ができるようなハードウェア」上に実現することができる。典型的には、ビジネス用コンピュータ、電子ゲーム装置、携帯電話、ＰＤＡ（Portable Data Assistant）、大型計算機等、各種のコンピュータ上に実現することとなる。すなわち、コンピュータを、送信装置１３１の各部として機能させる送信側プログラムや、受信装置１５１の各部として機能させる受信側プログラムを用意し、これを適宜コンピュータに読み込ませ、コンピュータのＣＰＵ（Central Processing Unit）が、ＲＡＭやハードディスクなどのハードウェアと共働しながら、送信装置１３１や受信装置１５１を実現する。
【０１０８】
送信側プログラムと受信側プログラムは、それぞれ独立して配布することができる。また、単独で実行することができる。
【０１０９】
なお、上記実施形態では、送信装置１３１では送信側第１暗号ＶＳＣ（ｄａｔａ,Ｋ）と、送信側第２暗号ＶＳＣ（Ｂ.ｒｎｄ,Ｋ）と、を独立に生成しているが、まず受信側乱数B.rndを先に、情報dataを後に結合して一列のデータ列とした後に、セッション鍵Kを用いてベクトルストリーム暗号により暗号化することとしても良い。この場合は、受信装置１５１ではこれに対応する逆の処理を行うことになる。すなわち、セッション鍵Kを用いてベクトルストリーム暗号により復号を途中まで行って受信側乱数B.rndを得てから上記の一致チェックを行い、しかる後に残りの復号を行うのである。
【実施例２】
【０１１０】
本実施形態は、上記実施形態に加えて、送信側プログラムや受信側プログラムに、有償版や無償版といったバージョンを追加するものである。したがって、これらのバージョンに係る処理以外の構成については、上記実施形態と同様である。
【０１１１】
このような版の違いは、送信装置１３１および受信装置１５１の「種類」として処理される。
【０１１２】
本実施形態では、送信装置１３１は、第１の種類（無償版）、第２の種類（有償版）のいずれかの種類をとる。一方、受信装置１５１も、第１の種類（無償版）、第２の種類（有償版）のいずれかの種類をとる。これらは、インストールされた送信側プログラムや受信側プログラムの種類によって定まる。
【０１１３】
そして、送信装置１３１の送信部３１０は、送信側第１暗号、送信側第２暗号、送信側第３暗号に加えて、当該送信装置１３１の種類が第１の種類（無償版）か第２の種類（有償版）か、を示す種類情報をあわせて送信する。
【０１１４】
この種類情報は、受信側公開鍵B.pubでＲＳＡ暗号化することとし、受信装置１５１でＲＳＡ復号しても良いが、セッション鍵Kを用いてベクトルストリーム暗号で暗号化し、受信装置１５１でベクトルストリーム暗号で復号することとしても良い。
【０１１５】
一方、受信装置１５１の受信部５０６は、これらの情報を受信する。そして、受信側情報復号化部５０９は、以下のように復号化の処理を行うか否かを決める。
【０１１６】
すなわち、送信装置１３１が第１の種類（無償版）であり、かつ、受信装置１５１が第１の種類（無償版）である場合は、復号化の処理を行わず、「無償版同士の組み合わせでは、利用できない。少なくとも一方が有償版を利用しなければならない。」旨のエラーメッセージを表示して、処理を中止する。
【０１１７】
一方、送信装置１３１と受信装置１５１の一方が第２の種類（有償版）であるか、双方が第２の種類（有償版）である場合は、上記実施形態と同様の復号化の処理を実行するのである。
【０１１８】
本実施形態によって、提供されるプログラムのバージョンによって振舞いを種々変更し、利用者の利便性をできるだけ下げずに、暗号処理を実行することができる。
【産業上の利用可能性】
【０１１９】
以上説明したように、本発明によれば、情報を暗号化して伝送するのに好適な暗号伝送システム、送信装置、受信装置、送信方法、受信方法、ならびに、これらをコンピュータ上にて実現するプログラムを提供することができ、暗号通信の分野に適用することができる。
【図面の簡単な説明】
【０１２０】
【図１】本発明の実施形態に係る暗号通信システムの概要構成を示す模式図である。
【図２】暗号通信システムにおける通信の様子を示すセッション図である。
【図３】暗号通信システムの送信装置の概要構成を示す模式図である。
【図４】送信装置にて実行される送信処理の制御の流れを示すフローチャートである。
【図５】暗号通信システムの受信装置の概要構成を示す模式図である。
【図６】送信装置にて実行される受信処理の制御の流れを示すフローチャートである。
【符号の説明】
【０１２１】
１０１  暗号通信システム
１３１  送信装置
１５１  受信装置
１７１  インターネット
１９１  ＦＴＰサーバ
３０１  送信側鍵生成部
３０２  送信側鍵通知部
３０３  送信側鍵受付部
３０４  送信側乱数復号化部
３０５  送信側乱数生成部
３０６  セッション鍵生成部
３０７  送信側情報暗号化部
３０８  送信側乱数暗号化部
３０９  セッション鍵暗号化部
３１０  送信部
５０１  受信側鍵生成部
５０２  受信側鍵受付部
５０３  受信側乱数生成部
５０４  受信側乱数暗号化部
５０５  受信側鍵通知部
５０６  受信部
５０７  セッション鍵復号化部
５０８  受信側乱数復号化部
５０９  受信側情報復号化部
【図１】
2006067412.tif 000003
【図２】
2006067412.tif 000004
【図３】
2006067412.tif 000005
【図４】
2006067412.tif 000006
【図５】
2006067412.tif 000007
【図６】
2006067412.tif 000008