(57)【要約】【課題】セキュリティを向上させた重複除去通信を可能にする。【解決手段】本通信装置は、（Ａ）識別子に対応付けて暗号化データを格納するデータ格納部と、（Ｂ）他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されているか判定する判定部と、（Ｃ）受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されていると判定部により判定された場合には、受信データに含まれる暗号鍵で、データ格納部に識別子に対応付けて格納された暗号化データを復号する復号処理部と、（Ｄ）復号処理部により復号されたデータを出力する出力部とを有する。【選択図】図８
2015230379.tif 000002
【特許請求の範囲】
【請求項１】
識別子に対応付けて暗号化データを格納するデータ格納部と、
他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されているか判定する判定部と、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていると前記判定部により判定された場合には、前記受信データに含まれる暗号鍵で、前記データ格納部に前記識別子に対応付けて格納された暗号化データを復号する復号処理部と、
前記復号処理部により復号されたデータを出力する出力部と、
を有する通信装置。
【請求項２】
前記判定部は、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていない場合には、前記データ格納部に、前記識別子に対応付けて前記受信データに含まれる暗号化データを格納し、
前記復号処理部は、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていないと前記判定部により判定された場合には、前記受信データに含まれる暗号鍵で、前記受信データに含まれる暗号化データを復号する
請求項１記載の通信装置。
【請求項３】
前記判定部は、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていない場合には、前記データ格納部に、前記受信データに含まれる情報を前記暗号鍵で暗号化することで得られるデータを前記識別子に対応付けて格納し、
前記出力部は、
前記受信データに含まれる情報を出力する
請求項１記載の通信装置。
【請求項４】
送信されたデータの識別子に対応付けて暗号鍵を格納するデータ格納部と、
送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されているか判定する処理部と、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されていると前記処理部により判定された場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する送信制御部と、
を有する通信装置。
【請求項５】
前記処理部は、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されていない場合には、前記送信が依頼されたデータの暗号鍵を生成して、前記送信が依頼されたデータの識別子に対応付けて前記データ格納部に格納し、
前記送信が依頼されたデータを、前記暗号鍵で暗号化することで暗号化データを生成し、
前記送信制御部は、
前記送信が依頼されたデータの識別子と前記暗号鍵と前記暗号化データとを送信する
請求項４記載の通信装置。
【請求項６】
前記処理部は、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されていない場合には、前記送信が依頼されたデータの暗号鍵を生成して、前記送信が依頼されたデータの識別子に対応付けて前記データ格納部に格納し、
前記送信制御部は、
前記送信が依頼されたデータの識別子と前記暗号鍵と前記送信が依頼されたデータとを送信する
請求項４記載の通信装置。
【請求項７】
他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されているか判定し、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されている場合には、前記受信データに含まれる暗号鍵で、前記データ格納部に前記識別子に対応付けて格納された暗号化データを復号し、
復号されたデータを出力する
処理を含む通信処理方法。
【請求項８】
送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されているか判定し、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されている場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する
処理を含む通信処理方法。
【請求項９】
第１の通信装置と、
第２の通信装置と、
を有し、
前記第１の通信装置は、
送信されたデータの識別子に対応付けて暗号鍵を格納する第１のデータ格納部と、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記第１のデータ格納部に格納されているか判定する処理部と、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記第１のデータ格納部に格納されていると前記処理部により判定された場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、前記第２の通信装置に送信する送信制御部と
を有し、
前記第２の通信装置は、
識別子に対応付けて暗号化データを格納する第２のデータ格納部と、
前記第２の通信装置からの受信データに含まれる識別子に対応付けて暗号化データが前記第２のデータ格納部に格納されているか判定する判定部と、
前記受信データに含まれる識別子に対応付けて暗号化データが前記第２のデータ格納部に格納されていると前記判定部により判定された場合には、前記受信データに含まれる暗号鍵で、前記第２のデータ格納部に前記識別子に対応付けて格納された暗号化データを復号する復号処理部と、
前記復号処理部により復号されたデータを出力する出力部と、
を有するシステム。
【請求項１０】
他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されているか判定し、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されている場合には、前記受信データに含まれる暗号鍵で、前記データ格納部に前記識別子に対応付けて格納された暗号化データを復号し、
復号されたデータを出力する
処理を、コンピュータに実行させるための通信処理プログラム。
【請求項１１】
送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されているか判定し、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されている場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する
処理を、コンピュータに実行させるための通信処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信量の削減技術に関する。
【背景技術】
【０００２】
ある従来技術には、送信ノードでは既に送信したデータをキャッシュに格納しておき、受信ノードでも既に受信したデータをキャッシュに格納しておき、送信済みのデータについて再度送信が要求されると送信ノードから受信ノードへ識別子のみを送信することで、重複データの送信を回避する技術が開示されている。
【０００３】
より具体的には、図１に示すように、ユーザＡからユーザＢへセグメントＡ、Ｂ及びＣを含むデータを送信する場合（ステップ（１））を検討する。この場合、ノードＡのキャッシュに送信済みセグメントＡ、Ｃ及びＥが格納されていれば、ノードＡから、セグメントＢとセグメントＡの識別子ａとセグメントＣの識別子ｃとをノードＢへ送信する（ステップ（２））。
【０００４】
ノードＢのキャッシュには受信済みセグメントＡ、Ｃ及びＥが格納されており、ノードＢは、受信したセグメントＡの識別子ａとセグメントＣの識別子ｃとからセグメントＡ及びＣをキャッシュから読み出して、受信したセグメントＢと共にユーザＢへ出力する（ステップ（３））。
【０００５】
このようにすることで、異なるユーザ間の通信であっても、重複するデータの送信が抑制される。より具体的には、図２に示すように、ノードＡにはユーザＸ及びＷが接続され、ノードＢにはユーザＹ及びＺが接続されており、最初に、ユーザＸからユーザＹへ、セグメントＡ、Ｂ、Ｃ及びＤを含むデータを送信するものとする。この際、ユーザＸから、セグメントＡ、Ｂ、Ｃ及びＤを含むデータをノードＡに送信すると（ステップ（１１））、ノードＡは、セグメントＡ、Ｂ、Ｃ及びＤをキャッシュに格納すると共に（ステップ（１２））、ノードＢへ送信する（ステップ（１３））。
【０００６】
ノードＢは、セグメントＡ、Ｂ、Ｃ及びＤを受信すると、それらをキャッシュに格納すると共に（ステップ（１４））、ユーザＹへ、セグメントＡ、Ｂ、Ｃ及びＤを送信する（ステップ（１５））。
【０００７】
その後、図３に示すように、ユーザＷが、ユーザＺに対して、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを送信するものとする。この際、ユーザＷは、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを、ノードＡに送信する（ステップ（２１））。ノードＡは、キャッシュに格納されている送信済みセグメントＢ、Ｃ及びＤについては、その識別子ｂ、ｃ及びｄを特定し、キャッシュに格納されていないセグメントＥについてはキャッシュに格納する（ステップ（２２））。そして、ノードＡは、送信済みセグメントの識別子ｂ、ｃ及びｄとセグメントＥとを、ノードＢに送信する（ステップ（２３））。
【０００８】
ノードＢは、ノードＡから受信したがキャッシュに格納されていないセグメントＥについてはキャッシュに格納し（ステップ（２４））、受信した識別子ｂ、ｃ及びｄに対応するセグメントＢ、Ｃ及びＤをキャッシュから読み出して、ユーザＺに対して、セグメントＢ、Ｃ、Ｄ及びＥを送信する（ステップ（２５））。
【０００９】
このようにすれば、図３の段階では、セグメント自体については未送信のセグメントＥを送信するだけで、ノードＡ及びＢの間の通信量は削減されている。
【００１０】
しかしながら、ノードＡのキャッシュにも、ノードＢのキャッシュにも、セグメントのデータがそのまま格納されることになる。そうすると、無関係な第三者ユーザが、ノードＡ又はＢに不正にアクセスしてキャッシュを盗み見た場合、セグメントのデータが漏洩してしまう。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１０−０７２７４０号公報
【特許文献２】特開２００９−１７１６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
従って、本発明の目的は、一側面としては、セキュリティを向上させた重複除去通信を可能にするための技術を提供することである。
【課題を解決するための手段】
【００１３】
本発明の第１の態様に係る通信装置は、（Ａ）識別子に対応付けて暗号化データを格納するデータ格納部と、（Ｂ）他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されているか判定する判定部と、（Ｃ）受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されていると判定部により判定された場合には、受信データに含まれる暗号鍵で、データ格納部に識別子に対応付けて格納された暗号化データを復号する復号処理部と、（Ｄ）復号処理部により復号されたデータを出力する出力部とを有する。
【００１４】
また、本発明の第２の態様に係る通信装置は、（Ａ）送信されたデータの識別子に対応付けて暗号鍵を格納するデータ格納部と、（Ｂ）送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されているか判定する処理部と、（Ｃ）送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されていると処理部により判定された場合には、送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する送信制御部とを有する。
【００１５】
さらに、本発明の第３の態様に係るシステムは、（Ａ）第１の通信装置と、（Ｂ）第２の通信装置とを有する。そして、第１の通信装置は、（ａ１）送信されたデータの識別子に対応付けて暗号鍵を格納する第１のデータ格納部と、（ａ２）送信が依頼されたデータの識別子に対応付けて暗号鍵が第１のデータ格納部に格納されているか判定する処理部と、（ａ３）送信が依頼されたデータの識別子に対応付けて暗号鍵が第１のデータ格納部に格納されていると処理部により判定された場合には、送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、第２の通信装置に送信する送信制御部とを有する。また、第２の通信装置は、（ｂ１）識別子に対応付けて暗号化データを格納する第２のデータ格納部と、（ｂ２）第２の通信装置からの受信データに含まれる識別子に対応付けて暗号化データが第２のデータ格納部に格納されているか判定する判定部と、（ｂ３）受信データに含まれる識別子に対応付けて暗号化データが第２のデータ格納部に格納されていると判定部により判定された場合には、受信データに含まれる暗号鍵で、第２のデータ格納部に識別子に対応付けて格納された暗号化データを復号する復号処理部と、（ｂ４）復号処理部により復号されたデータを出力する出力部とを有する。
【発明の効果】
【００１６】
一側面としては、セキュリティを向上させた重複除去通信が可能になる。
【図面の簡単な説明】
【００１７】
【図１】図１は、従来技術を説明するための図である。
【図２】図２は、従来技術を説明するための図である。
【図３】図３は、従来技術を説明するための図である。
【図４】図４は、実施の形態に係るシステムの概要を示す図である。
【図５】図５は、送信側ノードの構成例を示す図である。
【図６】図６は、ハッシュデータ格納部に格納されるデータの一例を示す図である。
【図７】図７は、暗号鍵格納部に格納されているデータの一例を示す図である。
【図８】図８は、受信側ノードの構成例を示す図である。
【図９】図９は、索引格納部に格納されているデータの一例を示す図である。
【図１０】図１０は、暗号化キャッシュに格納されているデータの一例を示す図である。
【図１１】図１１は、第１の実施の形態に係る処理の概要を説明するための図である。
【図１２】図１２は、第１の実施の形態に係る処理の概要を説明するための図である。
【図１３】図１３は、送信側ノードの処理内容を示す図である。
【図１４】図１４は、送信側ノードの処理内容を示す図である。
【図１５】図１５は、ハッシュ処理の処理フローを示す図である。
【図１６】図１６は、受信側ノードの処理内容を示す図である。
【図１７】図１７は、受信側ノードの処理内容を示す図である。
【図１８】図１８は、比較例の処理の概要を示す図である。
【図１９】図１９は、比較例の処理の概要を示す図である。
【図２０】図２０は、第２の実施の形態において送信側ノードで用いられるデータの一例を示す図である。
【図２１】図２１は、第２の実施の形態において受信側ノードで用いられるデータの一例を示す図である。
【図２２】図２２は、第２の実施の形態に係る処理の概要を説明するための図である。
【図２３】図２３は、第２の実施の形態に係る処理の概要を説明するための図である。
【図２４】図２４は、第３の実施の形態に係る送信側ノードの構成例を示す図である。
【図２５】図２５は、第３の実施の形態に係る送信側ノードの処理内容を示す図である。
【図２６】図２６は、第３の実施の形態に係る受信側ノードの構成例を示す図である。
【図２７】図２７は、第３の実施の形態に係る受信側ノードの処理内容を示す図である。
【図２８】図２８は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１８】
［実施の形態１］
図４に、本実施の形態に係るシステムの概要を示す。本システムにおいては、ノード１とノード２とはネットワーク４００を介して接続されている。また、ノード１には、例えばファイルサーバである情報処理装置５０１及び５０２等が接続されており、ノード２には、端末装置３０１及び３０２などが接続されている。例えば、端末装置３０１から、あるファイルの要求を、ノード２、ネットワーク４００及びノード１を介して、情報処理装置５０１に送信すると、情報処理装置５０１は、要求に係るファイルのデータを、要求元の端末装置３０１宛に送信する。同様に、端末装置３０２から、同じ内容を含むファイルの要求を、ノード２、ネットワーク４００及びノード１を介して、情報処理装置５０２に送信すると、情報処理装置５０２は、要求に係るファイルのデータを、要求元の端末装置３０２宛に送信する。このような場合に、ノード１とノード２の間で通信されるデータ量を削減する。
【００１９】
次に、ノード１の構成例を図５に示す。ノード１は、受信部１０１と、入力バッファ１０２と、分割部１０３と、データ格納部１０４と、ハッシュ処理部１０５と、ハッシュデータ格納部１０６と、暗号鍵処理部１０７と、暗号鍵格納部１０８と、暗号処理部１０９と、送信バッファ１１０と、送信制御部１１１とを有する。
【００２０】
受信部１０１は、例えば情報処理装置５０１からデータを受信し、入力バッファ１０２に格納する。分割部１０３は、入力バッファ１０２に格納されたデータを、所定のルールに従って複数のセグメントに分割する処理を行い、処理結果をデータ格納部１０４に格納する。
【００２１】
ハッシュ処理部１０５は、データ格納部１０４に格納されているセグメントのハッシュ値を算出し、ハッシュ値でハッシュデータ格納部１０６を検索することで、セグメントの識別子が登録されているか否かを判断する。
【００２２】
例えば、ハッシュデータ格納部１０６には、例えば図６に示すようなデータが格納される。図６の例では、セグメントのハッシュ値と、セグメントの識別子とが対応付けられている。
【００２３】
ハッシュデータ格納部１０６に、セグメントの識別子が登録されていない場合には、ハッシュ処理部１０５は、セグメントの識別子を生成すると共に、算出したハッシュ値に対応付けてハッシュデータ格納部１０６に格納する。
【００２４】
セグメントの識別子が登録済みであれば、暗号鍵処理部１０７は、そのセグメントの識別子をハッシュ処理部１０５から受け取って、暗号鍵格納部１０８を、受け取ったセグメントの識別子で検索して、暗号鍵を読み出す。
【００２５】
一方、セグメントの識別子を新たに生成した場合には、暗号鍵処理部１０７は、そのセグメントの識別子とセグメントとを、ハッシュ処理部１０５から受け取って、暗号鍵を生成すると共に、セグメントの識別子に対応付けて暗号鍵を暗号鍵格納部１０８に格納する。
【００２６】
暗号鍵格納部１０８には、例えば図７に示すようなデータが格納される。図７の例では、セグメントの識別子と、暗号鍵とが対応付けられている。
【００２７】
そして、セグメントの識別子及び暗号鍵が暗号鍵格納部１０８に登録済みであれば、セグメントの識別子及び暗号鍵を、送信バッファ１１０に格納する。
【００２８】
一方、セグメントの識別子及び暗号鍵が暗号鍵格納部１０８に新たに登録された場合には、暗号鍵処理部１０７は、セグメント、当該セグメントの識別子及び暗号鍵を、暗号処理部１０９に出力する。
【００２９】
暗号処理部１０９は、暗号鍵処理部１０７からセグメント、セグメントの識別子及び暗号鍵を受け取ると、そのセグメントを暗号鍵で暗号化し、セグメントの識別子と、暗号鍵と、暗号化されたセグメントとを、送信バッファ１１０に格納する。
【００３０】
送信制御部１１１は、送信バッファ１１０に格納されたデータを、入力バッファ１０２に格納されている宛先データと共に、ノード２に対して送信する。
【００３１】
次に、ノード２の構成例を図８に示す。ノード２は、受信部２０１と、受信バッファ２０２と、判定部２０３と、索引格納部２０４と、暗号化キャッシュ２０５と、復号処理部２０６と、出力バッファ２０７と、出力処理部２０８とを有する。
【００３２】
受信部２０１は、ノード１からデータを受信すると、受信バッファ２０２に格納する。
【００３３】
判定部２０３は、受信バッファ２０２に格納されているセグメントの識別子で、索引格納部２０４を検索して、暗号化されたセグメントが登録済みであるか否かを判定する。登録済みであれば、判定部２０３は、索引格納部２０４にセグメントの識別子に対応付けて格納されているアドレスを読み出し、暗号化キャッシュ２０５から暗号化されたセグメントを読み出す。
【００３４】
一方、セグメントの識別子が未登録の場合には、判定部２０３は、受信バッファ２０２に格納されている暗号化されたセグメントを、暗号化キャッシュ２０５に格納すると共に、格納先のアドレスを、セグメントの識別子に対応付けて索引格納部２０４に格納する。
【００３５】
索引格納部２０４には、例えば図９に示すようなデータが格納される。図９の例では、セグメントの識別子と、暗号化されたセグメントの格納先のアドレスとが対応付けられている。
【００３６】
また、暗号化キャッシュ２０５には、例えば図１０に示すようなデータが格納される。図１０の例では、各アドレスに、暗号化されたセグメントのデータが格納されている。なお、暗号化されたセグメントは、例えばリングバッファ状に格納される。
【００３７】
そして、判定部２０３は、暗号化されたセグメントと受信バッファ２０２に格納されている暗号鍵とを、復号処理部２０６に出力する。
【００３８】
復号処理部２０６は、暗号化されたセグメントを暗号鍵で復号する処理を実行し、処理結果を出力バッファ２０７に格納する。
【００３９】
出力処理部２０８は、出力バッファ２０７に格納されているセグメントのデータを、受信バッファ２０２に格納されている宛先に出力する。
【００４０】
次に、図１１及び１２を用いて、本実施の形態に係る処理の概要を説明する。まず、情報処理装置５０１が、図１１に示すように、セグメントＡ、Ｂ、Ｃ及びＤを含むデータを端末装置３０１宛に送信する場合を考える。この場合、情報処理装置５０１は、セグメントＡ、Ｂ、Ｃ及びＤを含むデータをノード１に送信する（ステップ（５１））。
【００４１】
ノード１は、セグメントＡ、Ｂ、Ｃ及びＤを含むデータを受信すると、そのハッシュ値ｈ（Ａ）、ｈ（Ｂ）、ｈ（Ｃ）及びｈ（Ｄ）が、ハッシュデータ格納部１０６に登録されているか否かを判断する。ここでは未登録として、ノード１は、各セグメントについて識別子ｉｄＡ，ｉｄＢ、ｉｄＣ及びｉｄＤを生成し、ハッシュ値ｈ（Ａ）、ｈ（Ｂ）、ｈ（Ｃ）及びｈ（Ｄ）を、ハッシュデータ格納部１０６に登録する（ステップ（５２））。また、暗号鍵も未登録になるので、ノード１は、各セグメントについて暗号鍵ＫＡ、ＫＢ、ＫＣ及びＫＤを生成し、暗号鍵格納部１０８に格納する（ステップ（５３））。
【００４２】
そして、ノード１は、セグメントＡについて識別子ｉｄＡ、暗号鍵ＫＡ、暗号化されたセグメントｅ（Ａ）と、セグメントＢについて識別子ｉｄＢ、暗号鍵ＫＢ、暗号化されたセグメントｅ（Ｂ）と、セグメントＣについて識別子ｉｄＣ、暗号鍵ＫＣ、暗号化されたセグメントｅ（Ｃ）と、セグメントＤについて識別子ｉｄＤ、暗号鍵ＫＤ、暗号化されたセグメントｅ（Ｄ）とを、ネットワーク４００を介してノード２に送信する（ステップ（５４））。この通信は暗号化される場合もある。
【００４３】
ノード２は、ノード１からデータを受信すると、受信した識別子に係り且つ暗号化されたセグメントが暗号化キャッシュ２０５に登録されているかを判断する。この場合、登録されていないとして、ノード２は、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を、暗号化キャッシュ２０５に登録する（ステップ（５５））。
【００４４】
そして、ノード２は、受信した暗号鍵ＫＡ、ＫＢ、ＫＣ及びＫＤを用いて、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を復号して、復号されたデータＡ、Ｂ、Ｃ及びＤを、端末装置３０１に出力する（ステップ（５６））。
【００４５】
ノード２は、暗号鍵については保存せず、復号処理が終了すれば、消去する。
【００４６】
このように、暗号化されたセグメントはノード２にのみ保持され、暗号鍵についてはノード１のみに保持されているため、セグメントの内容を得るためには、ノード１及び２の両方に不正アクセスしてデータを読み出さなければならない。従って、セキュリティレベルが向上している。
【００４７】
その後、情報処理装置５０２が、図１２に示すように、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを端末装置３０２宛に送信する場合を考える。この場合、情報処理装置５０２は、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを、ノード１に送信する（ステップ（６１））。
【００４８】
ノード１は、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを受信すると、そのハッシュ値ｈ（Ｂ）、ｈ（Ｃ）、ｈ（Ｄ）及びｈ（Ｅ）が、ハッシュデータ格納部１０６に登録されているか否かを判断する。ハッシュ値ｈ（Ｂ）、ｈ（Ｃ）及びｈ（Ｄ）については登録されているが、ハッシュ値（Ｅ）については登録されていないものと判断される。そうすると、ノード１は、セグメントＥについて識別子ｉｄＥを生成し、ハッシュ値ｈ（Ｅ）を、ハッシュデータ格納部１０６に登録する（ステップ（６２））。また、暗号鍵も未登録なので、ノード１は、セグメントＥについて暗号鍵ＫＥを生成し、暗号鍵格納部１０８に格納する（ステップ（６３））。
【００４９】
そして、ノード１は、ハッシュ値が登録済みのセグメントＢについて識別子ｉｄＢ及び暗号鍵ＫＢと、ハッシュ値が登録済みのセグメントＣについて識別子ｉｄＣ及び暗号鍵ＫＣと、ハッシュ値が登録済みのセグメントＤについて識別子ｉｄＤ及び暗号鍵ＫＤと、ハッシュ値が未登録のセグメントＥについて識別子ｉｄＥ、暗号鍵ＫＥ、暗号化されたセグメントｅ（Ｅ）とを、ネットワーク４００を介してノード２に送信する（ステップ（６４））。
【００５０】
このように、送信したことがないセグメントＥについてのみ、暗号化されたセグメントｅ（Ｅ）が送信されることになり、ネットワーク４００を介して通信されるデータ量を削減できるようになる。
【００５１】
ノード２は、ノード１からデータを受信すると、受信した識別子に係り且つ暗号化されたセグメントが暗号化キャッシュ２０５に登録されているかを判断する。この場合、暗号化されたセグメントｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）については暗号化キャッシュ２０５に登録されているが、暗号化されたセグメントｅ（Ｅ）については登録されていない。従って、ノード２は、暗号化されたセグメントｅ（Ｅ）を、暗号化キャッシュ２０５に登録する（ステップ（６５））。
【００５２】
そして、ノード２は、受信した暗号鍵ＫＢ、ＫＣ、ＫＤ及びＫＥを用いて、暗号化されたセグメントｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）については暗号化キャッシュ２０５から読み出した上で復号し、暗号化されたセグメントｅ（Ｅ）について受信データを復号し、復号されたデータＢ、Ｃ、Ｄ及びＥを、端末装置３０１に出力する（ステップ（６６））。
【００５３】
このように、送信したことがないセグメントＥについてのみ、暗号化されたセグメントｅ（Ｅ）が送信されることになり、ネットワーク４００を介して通信されるデータ量を削減できるようになる。また、図１１について説明したように、ノード１にのみ暗号鍵が保持されており、ノード２にのみ暗号化されたセグメントが保持されているので、不正アクセスに対するセキュリティレベルが高くなっている。
【００５４】
次に、図１３乃至図１９を用いて、詳細な処理内容について説明する。
【００５５】
まず、ノード１の処理内容について、図１３乃至図１５を用いて説明する。
【００５６】
ノード１の受信部１０１は、情報処理装置５０１又は５０２からの送信データを受信すると（図１３：ステップＳ１）、当該送信データを、入力バッファ１０２に格納する（ステップＳ３）。
【００５７】
その後、ノード１の分割部１０３は、入力バッファ１０２からデータを読み出して、当該データをセグメントに分割し、データ格納部１０４に格納する（図１４：ステップＳ１１）。セグメント分割の方法は、どのような方法であっても良く、例えば特開２００９−１７１６３５号公報に開示されている方法を採用しても良い。
【００５８】
そして、ハッシュ処理部１０５は、データ格納部１０４に未処理のセグメントが存在するか否かを判断する（ステップＳ１３）。未処理のセグメントが存在する場合には（ステップＳ１３：Ｙｅｓルート）、ハッシュ処理部１０５は、未処理のセグメントを１つ特定し（ステップＳ１５）、そのセグメントについて、ハッシュ処理を実行する（ステップＳ１７）。ハッシュ処理については、図１５を用いて説明する。
【００５９】
ハッシュ処理部１０５は、特定されたセグメントのハッシュ値を算出する（図１５：ステップＳ３１）。ハッシュ関数には例えばＳＨＡ１のようなセキュアハッシュを用いることが好ましい。
【００６０】
ハッシュ処理部１０５は、算出したハッシュ値で、ハッシュデータ格納部１０６を検索する（ステップＳ３３）。
【００６１】
算出したハッシュ値が登録済みであれば（ステップＳ３５：Ｙｅｓルート）、ハッシュ処理部１０５は、ハッシュデータ格納部１０６において対応付けられているセグメントの識別子を特定する（ステップＳ３７）。そして呼び出し元の処理に戻る。
【００６２】
一方、算出したハッシュ値が未登録であれば（ステップＳ３５：Ｎｏルート）、ハッシュ処理部１０５は、セグメントの識別子を生成し、ハッシュ値に対応付けて当該セグメントの識別子を、ハッシュデータ格納部１０６に格納する（ステップＳ３９）。そして呼び出し元の処理に戻る。
【００６３】
そして、ハッシュ処理部１０５は、登録済みであれば、セグメントの識別子を暗号鍵処理部１０７に出力し、未登録であれば、セグメントと当該セグメントの識別子とを、暗号鍵処理部１０７に出力する。
【００６４】
図１４の説明に戻って、暗号鍵処理部１０７は、ハッシュ処理部１０５からの受け取ったデータ（すなわちセグメントを受け取ったか否か）から、暗号鍵が登録済みであるか否かを判断する（ステップＳ１９）。登録済みではない場合には（ステップＳ１９：Ｎｏルート）、暗号鍵処理部１０７は、特定されたセグメントについての暗号鍵を生成し、当該セグメントの識別子に対応付けて、暗号鍵格納部１０８に格納する（ステップＳ２１）。さらに、暗号鍵処理部１０７は、セグメント及び暗号鍵を暗号処理部１０９に出力する。
【００６５】
暗号処理部１０９は、暗号鍵でセグメントを暗号化し（ステップＳ２２）、送信バッファ１１０に、セグメントの識別子と、暗号化されたセグメントと、暗号鍵とを格納する（ステップＳ２３）。
【００６６】
一方、登録済みである場合には（ステップＳ１９：Ｙｅｓルート）、暗号鍵処理部１０７は、暗号鍵格納部１０８からセグメントの識別子に対応付けられている暗号鍵を読み出し（ステップＳ２５）、送信バッファ１１０に、セグメントの識別子と暗号鍵を格納する（ステップＳ２７）。
【００６７】
ステップＳ２３及びＳ２７の後に処理は、ステップＳ１３に戻る。
【００６８】
そして、未処理のセグメントが存在しない場合には（ステップＳ１３：Ｎｏルート）、ハッシュ処理部１０５は、送信制御部１１１に処理を依頼して、送信制御部１１１は、依頼に応じて、入力バッファ１０２などから宛先のデータを取得して、送信バッファ１１０に格納されているデータと共に、ノード２に送信する（ステップＳ２９）。
【００６９】
このような処理を実行することで、送信済みのセグメントについては、セグメントの識別子と暗号鍵の組み合わせを送信し、未送信のセグメントについては、セグメントの識別子、暗号鍵及び暗号化されたセグメントとの組み合わせを送信するようになる。
【００７０】
次に、ノード２の詳細な処理内容について図１６及び図１７を用いて説明する。
【００７１】
まず、受信部２０１は、ノード１からデータを受信すると、受信バッファ２０２に格納する（図１６：ステップＳ４１）。受信データには、宛先のデータも含まれる。
【００７２】
その後、判定部２０３は、受信バッファ２０２内の受信データに含まれる未処理のセグメント識別子を１つ特定する（ステップＳ４３）。そして、判定部２０３は、特定されたセグメント識別子で、索引格納部２０４を検索する（ステップＳ４５）。
【００７３】
索引格納部２０４にセグメント識別子が登録済みであれば（ステップＳ４７：Ｙｅｓルート）、判定部２０３は、受信バッファ２０２からセグメント識別子に対応する暗号鍵を読み出す（ステップＳ４９）。さらに判定部２０３は、当該セグメント識別子に対応付けられている暗号化キャッシュ２０５内のアドレスを読み出し、当該アドレスから暗号化されたセグメント（暗号化セグメント）を読み出す（ステップＳ５１）。その後、判定部２０３は、暗号鍵及び暗号化セグメントを復号処理部２０６に出力する。復号処理部２０６は、判定部２０３から受け取った暗号鍵で暗号化セグメントを復号して（ステップＳ５３）、セグメントを出力バッファ２０７に格納する（ステップＳ５５）。
【００７４】
一方、索引格納部２０４にセグメント識別子が登録済みでなければ（ステップＳ４７：Ｎｏルート）、判定部２０３は、受信バッファ２０２からセグメント識別子に対応する暗号鍵を読み出し（ステップＳ５９）、受信バッファ２０２から暗号化セグメントを読み出す（ステップＳ６１）。そして、判定部２０３は、暗号化セグメントを暗号化キャッシュ２０５に格納すると共に、格納先のアドレスを、セグメント識別子に対応付けて索引格納部２０４に格納する（ステップＳ６３）。その後、判定部２０３は、暗号鍵及び暗号化セグメントを復号処理部２０６に出力する。そして処理はステップＳ５３に移行する。
【００７５】
判定部２０３は、受信バッファ２０２に未処理のデータが存在するか否かを判断する（ステップＳ５７）。未処理のデータが存在する場合には（ステップＳ５７：Ｙｅｓルート）、処理はステップＳ４３に戻る。未処理のデータが存在しない場合には（ステップＳ５７：Ｎｏルート）、判定部２０３は、出力処理部２０８に処理を指示する。そうすると、図１７に示す処理が出力処理部２０８により行われる。
【００７６】
すなわち、出力処理部２０８は、出力バッファ２０７内のデータを読み出し（ステップＳ７１）、受信バッファ２０２に格納されている宛先のデータを読み出して、当該宛先に対して読み出したデータを送信する（ステップＳ７３）。なお、例えばこの段階で、受信バッファ２０２のデータを消去する。
【００７７】
以上のような処理を実行することで、セキュリティレベルを向上させつつ、重複データの再送を回避できるようになる。
【００７８】
なお、セキュリティレベルを上げるために、通信相手毎に共通鍵を用いて通信することも考えられる。例えば図１８に示すように、ユーザＸとユーザＹとが通信を行う際に、第１の共通鍵で暗号化するものとする。そうすると、ユーザＸは、送信すべきセグメントＡ、Ｂ、Ｃ及びＤから、第１の共通鍵で暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を生成し、ノードＡに送信することになる（ステップ（３１））。
【００７９】
ノードＡのキャッシュに、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）が格納されていないので、ノードＡは、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）をキャッシュに格納する（ステップ（３２））。また、ノードＡは、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を、ノードＢに送信する（ステップ（３３））。
【００８０】
ノードＢのキャッシュにも、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）が格納されていないので、ノードＢは、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を、キャッシュに格納する（ステップ（３４））。そして、ノードＢは、ユーザＹに対して、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を送信する（ステップ（３５））。
【００８１】
また、図１９に示すように、ユーザＷとユーザＺとが通信を行う際に、第１の共通鍵とは異なる第２の共通鍵で暗号化するものとする。そうすると、ユーザＷは、送信すべきセグメントＢ、Ｃ、Ｄ及びＥから、第２の共通鍵で暗号化されたセグメントｆ（Ｂ）、ｆ（Ｃ）、ｆ（Ｄ）及びｆ（Ｅ）を生成し、ノードＡに送信することになる（ステップ（４１））。
【００８２】
ノードＡのキャッシュに、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）は格納されているが、暗号鍵が異なるので、元のセグメントは同じであっても、暗号化されたセグメントｆ（Ｂ）、ｆ（Ｃ）及びｆ（Ｄ）は格納されていない。従って、ノードＡは、暗号化されたセグメントｆ（Ｂ）、ｆ（Ｃ）、ｆ（Ｄ）及びｆ（Ｅ）をキャッシュに格納する（ステップ（４２））。また、ノードＡは、暗号化されたセグメントｆ（Ｂ）、ｆ（Ｃ）、ｆ（Ｄ）及びｆ（Ｅ）を、ノードＢに送信する（ステップ（４３））。
【００８３】
ノードＢのキャッシュにも、暗号化されたセグメントｆ（Ｂ）、ｆ（Ｃ）、ｆ（Ｄ）及びｆ（Ｅ）は格納されていないので、ノードＢは、暗号化されたセグメントｆ（Ｂ）、ｆ（Ｃ）、ｆ（Ｄ）及びｆ（Ｅ）を、キャッシュに格納する（ステップ（４４））。そして、ノードＢは、ユーザＺに対して、暗号化されたセグメントｆ（Ｂ）、ｆ（Ｃ）、ｆ（Ｄ）及びｆ（Ｅ）を送信する（ステップ（４５））。
【００８４】
このようにユーザ間で単純に暗号化を行うようなセキュリティ対策を行うと、元のセグメントは同じであっても、暗号化すると異なるデータになるので、重複除去ができなくなってしまう。
【００８５】
これに対して、本実施の形態のようにノード間でセグメント単位で暗号化することで、セキュリティレベルを向上させつつ効果的に重複除去が行えるようになる。
【００８６】
［実施の形態２］
第１の実施の形態では、セグメントのハッシュ値とは異なるセグメント識別子を用いているが、セグメント識別子を用いない場合もある。すなわち、セグメントのハッシュ値を、セグメント識別子として用いるようにしても良い。
【００８７】
例えば、ノード１においてハッシュデータ格納部１０６と暗号鍵格納部１０８とを統合して、図２０に示すようなデータを用いるようにしても良い。図２０の例では、ハッシュ値に対応付けて暗号鍵が登録されている。
【００８８】
このようなデータを例えばハッシュデータ格納部１０６に格納するのであれば、暗号鍵格納部１０８に対する検索は省略される。
【００８９】
同様に、ノード２において索引格納部２０４と暗号化キャッシュ２０５とを用いているが、これについても統合することができる。例えば、図２１に示すようなデータを用いるようにしても良い。図２１の例では、ハッシュ値に対応付けて暗号化セグメントが格納されるようになっている。
【００９０】
このようなデータを例えば暗号化キャッシュ２０５に格納するのであれば、索引格納部２０４に対する検索は省略される。
【００９１】
このような変形を行うため、ノード１からノード２へ送信されるデータも異なる。図２２を用いて、本実施の形態に係る処理の概要を説明する。まず、情報処理装置５０１が、セグメントＡ、Ｂ、Ｃ及びＤを含むデータを端末装置３０１宛に送信する場合を考える。この場合、情報処理装置５０１は、セグメントＡ、Ｂ、Ｃ及びＤを含むデータをノード１に送信する（ステップ（７１））。
【００９２】
ノード１は、セグメントＡ、Ｂ、Ｃ及びＤを含むデータを受信すると、そのハッシュ値ｈ（Ａ）、ｈ（Ｂ）、ｈ（Ｃ）及びｈ（Ｄ）が、例えばハッシュデータ格納部１０６に登録されているか否かを判断する。ここでは未登録として、ノード１は、各セグメントについて暗号鍵ＫＡ、ＫＢ、ＫＣ及びＫＤを生成し、ハッシュ値ｈ（Ａ）、ｈ（Ｂ）、ｈ（Ｃ）及びｈ（Ｄ）に対応付けて格納する（ステップ（７２））。
【００９３】
そして、ノード１は、セグメントＡについてハッシュ値ｈ（Ａ）、暗号鍵ＫＡ、暗号化されたセグメントｅ（Ａ）と、セグメントＢについてハッシュ値ｈ（Ｂ）、暗号鍵ＫＢ、暗号化されたセグメントｅ（Ｂ）と、セグメントＣについてハッシュ値ｈ（Ｃ）、暗号鍵ＫＣ、暗号化されたセグメントｅ（Ｃ）と、セグメントＤについてハッシュ値ｈ（Ｄ）、暗号鍵ＫＤ、暗号化されたセグメントｅ（Ｄ）とを、ネットワーク４００を介してノード２に送信する（ステップ（７３））。この通信は暗号化される場合もある。
【００９４】
ノード２は、ノード１からデータを受信すると、受信したハッシュ値に係り且つ暗号化されたセグメントが暗号化キャッシュ２０５に登録されているかを判断する。この場合、登録されていないとして、ノード２は、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を、ハッシュ値ｈ（Ａ）、ｈ（Ｂ）、ｈ（Ｃ）及びｈ（Ｄ）に対応付けて暗号化キャッシュ２０５に登録する（ステップ（７４））。
【００９５】
そして、ノード２は、受信した暗号鍵ＫＡ、ＫＢ、ＫＣ及びＫＤを用いて、暗号化されたセグメントｅ（Ａ）、ｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）を復号して、復号されたデータＡ、Ｂ、Ｃ及びＤを、端末装置３０１に出力する（ステップ（７５））。ノード２は、暗号鍵については保存せず、復号処理が終了すれば、消去する。
【００９６】
その後、図２３に示すように、情報処理装置５０２が、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを端末装置３０２宛に送信する場合を考える。この場合、情報処理装置５０２は、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを、ノード１に送信する（ステップ（８１））。
【００９７】
ノード１は、セグメントＢ、Ｃ、Ｄ及びＥを含むデータを受信すると、そのハッシュ値ｈ（Ｂ）、ｈ（Ｃ）、ｈ（Ｄ）及びｈ（Ｅ）が、例えばハッシュデータ格納部１０６に登録されているか否かを判断する。ハッシュ値ｈ（Ｂ）、ｈ（Ｃ）及びｈ（Ｄ）については登録されているが、ハッシュ値ｈ（Ｅ）については登録されていないものと判断される。そうすると、ノード１は、セグメントＥについての暗号鍵ＫＥを生成し、ハッシュ値ｈ（Ｅ）に対応付けて、例えばハッシュデータ格納部１０６に格納する（ステップ（８２））。
【００９８】
そして、ノード１は、ハッシュ値が登録済みのセグメントＢについてハッシュ値ｈ（Ｂ）及び暗号鍵ＫＢと、ハッシュ値が登録済みのセグメントＣについてハッシュ値ｈ（Ｃ）及び暗号鍵ＫＣと、ハッシュ値が登録済みのセグメントＤについてハッシュ値ｈ（Ｄ）及び暗号鍵ＫＤと、ハッシュ値が未登録のセグメントＥについてハッシュ値ｈ（Ｅ）、暗号鍵ＫＥ及び暗号化されたセグメントｅ（Ｅ）とを、ネットワーク４００を介してノード２に送信する（ステップ（８３））。
【００９９】
ノード２は、ノード１からデータを受信すると、受信したハッシュ値に係り且つ暗号化されたセグメントが暗号化キャッシュ２０５に登録されているかを判断する。この場合、暗号化されたセグメントｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）については暗号化キャッシュ２０５に登録されているが、暗号化されたセグメントｅ（Ｅ）については登録されていない。従って、ノード２は、暗号化されたセグメントｅ（Ｅ）を、ハッシュ値ｈ（Ｅ）に対応付けて暗号化キャッシュ２０５に登録する（ステップ（８４））。
【０１００】
そして、ノード２は、受信した暗号鍵ＫＢ、ＫＣ、ＫＤ及びＫＥを用いて、暗号化されたセグメントｅ（Ｂ）、ｅ（Ｃ）及びｅ（Ｄ）については暗号化キャッシュ２０５から読み出した上で復号し、暗号化されたセグメントｅ（Ｅ）について受信データを復号し、復号されたデータＢ、Ｃ、Ｄ及びＥを、端末装置３０１に出力する（ステップ（８５））。
【０１０１】
このように送信されるデータは、セグメント識別子に代わってハッシュ値となっているが、セキュリティレベルを向上させつつ重複データの再送を回避できるようになっている。
【０１０２】
［実施の形態３］
ノード１及び２への不正アクセスに対処するのであれば、例えば本実施の形態のような変形例も採用可能である。より具体的には、ノード１では暗号化処理を行わず、ノード２で暗号化処理を行うものである。
【０１０３】
すなわち、ノード１については、図２４に示すようなノード１ｂに変更する。図５と比較すると、ノード１ｂには、暗号処理部１０９が含まれていない。
【０１０４】
暗号鍵処理部１０７は、ハッシュ値がハッシュデータ格納部１０６に格納されている場合には、暗号鍵及びセグメント識別子を送信バッファ１１０に格納するが、ハッシュ値がハッシュデータ格納部１０６に格納されていない場合には、セグメントとそのセグメント識別子と暗号鍵とを送信バッファ１１０に格納する。
【０１０５】
従って、図１４の処理フローについても、図２５に示すようなものに変更される。但し、上でも述べたように、ハッシュ値がハッシュデータ格納部１０６に格納されていない場合においても暗号化しないので、ステップＳ２２が行われず、ステップＳ２３の代わりにステップＳ２３ｂが実行される。ステップＳ２３ｂでは、暗号鍵処理部１０７は、送信バッファ１１０に、セグメント識別子とセグメントと暗号鍵とを格納する。
【０１０６】
一方、ノード２については、図２６に示すようなノード２ｂに変更する。変更点は、判定部２０３に代わって判定部２０３とは異なる処理を行う判定部２０３ｂを導入し、暗号処理部２０９を追加した点が異なる。
【０１０７】
また、具体的な処理内容は、図２７に示すようになる。
【０１０８】
まず、受信部２０１は、ノード１ｂからデータを受信すると、受信バッファ２０２に格納する（図２７：ステップＳ１４１）。受信データには、宛先のデータも含まれる。
【０１０９】
その後、判定部２０３ｂは、受信バッファ２０２内の受信データに含まれる未処理のセグメント識別子を１つ特定する（ステップＳ１４３）。そして、判定部２０３ｂは、特定されたセグメント識別子で、索引格納部２０４を検索する（ステップＳ１４５）。
【０１１０】
索引格納部２０４にセグメント識別子が登録済みであれば（ステップＳ１４７：Ｙｅｓルート）、判定部２０３ｂは、受信バッファ２０２からセグメント識別子に対応する暗号鍵を読み出す（ステップＳ１４９）。さらに判定部２０３ｂは、当該セグメント識別子に対応付けられている暗号化キャッシュ２０５内のアドレスを読み出し、当該アドレスから暗号化されたセグメント（暗号化セグメント）を読み出す（ステップＳ１５１）。その後、判定部２０３ｂは、暗号鍵及び暗号化セグメントを復号処理部２０６に出力する。復号処理部２０６は、判定部２０３ｂから受け取った暗号鍵で暗号化セグメントを復号して（ステップＳ１５３）、セグメントを出力バッファ２０７に格納する（ステップＳ１５５）。ここまでの処理は第１の実施の形態と同じである。
【０１１１】
一方、索引格納部２０４にセグメント識別子が登録済みでなければ（ステップＳ１４７：Ｎｏルート）、判定部２０３ｂは、受信バッファ２０２からセグメント識別子に対応する暗号鍵を読み出し（ステップＳ１５９）、受信バッファ２０２からセグメントを読み出す（ステップＳ１６１）。そして、判定部２０３ｂは、暗号鍵及びセグメントを暗号処理部２０９に出力して、暗号処理部２０９にセグメントを暗号化させ、暗号化されたセグメントを取得する。そうすると、判定部２０３ｂは、取得した暗号化セグメントを暗号化キャッシュ２０５に格納すると共に、格納先のアドレスを、セグメント識別子に対応付けて索引格納部２０４に格納する（ステップＳ１６３）。そして処理はステップＳ１５５に移行する。
【０１１２】
判定部２０３ｂは、受信バッファ２０２に未処理のデータが存在するか否かを判断する（ステップＳ１５７）。未処理のデータが存在する場合には（ステップＳ１５７：Ｙｅｓルート）、処理はステップＳ１４３に戻る。未処理のデータが存在しない場合には（ステップＳ１５７：Ｎｏルート）、判定部２０３ｂは、出力処理部２０８に処理を指示する。そうすると、図１７に示す処理が出力処理部２０８により行われる。
【０１１３】
なお、ノード１とノード２との間の通信を、一般的な暗号通信を行えば、セグメントが漏洩することもない。また、ノード１とノード２の両方に不正アクセスして、暗号鍵と暗号化されたセグメントを得ないとデータを復元できないので、セキュリティレベルを向上させつつ、重複データの再送を回避できるようになる。
【０１１４】
本実施の形態に対して、さらに第２の実施の形態を適用するようにしても良い。
【０１１５】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。
【０１１６】
例えば、上で述べたノードの機能ブロック構成は、プログラムモジュール構成とは一致しない場合がある。また、処理フローについても、処理結果が変わらない限り、順番を入れ替えたり、複数ステップを並列に実行する場合もある。
【０１１７】
さらに、実施の形態に係るノードは１台のコンピュータではなく、複数台のコンピュータで機能分担する場合もある。
【０１１８】
なお、上で述べたノード１、１ｂ、２及び２ｂ、情報処理装置５０１及び５０２並びに端末装置３０１及び３０２は、コンピュータ装置であって、図２８に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１９】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１２０】
実施の形態の第１の態様に係る通信装置（例えば実施の形態におけるノード２等）は、（Ａ）識別子（例えば実施の形態における識別子又はハッシュ値）に対応付けて暗号化データを格納するデータ格納部と、（Ｂ）他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されているか判定する判定部と、（Ｃ）受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されていると判定部により判定された場合には、受信データに含まれる暗号鍵で、データ格納部に識別子に対応付けて格納された暗号化データを復号する復号処理部と、（Ｄ）復号処理部により復号されたデータを出力する出力部とを有する。
【０１２１】
データ格納部に暗号化データが既に格納されている場合には他の通信装置からの受信データに暗号化データが含まなくても良いので、通信データ量を削減できる。また、暗号鍵を、この通信装置内に保持しておかなければ、この通信装置に不正アクセスがあって暗号化データが漏洩した場合でも、それだけではデータが復号されるわけではないので、セキュリティレベルが向上している。
【０１２２】
なお、上で述べた判定部は、（ｂ１）受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されていない場合には、データ格納部に、識別子に対応付けて受信データに含まれる暗号化データを格納するようにしても良い。この場合、上で述べた復号処理部は、（ｃ１）受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されていないと判定部により判定された場合には、受信データに含まれる暗号鍵で、受信データに含まれる暗号化データを復号するようにしても良い。初めて受信した暗号化データを後に有効活用できるようにするものである。
【０１２３】
さらに、上で述べた判定部は、（ｂ２）受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されていない場合には、データ格納部に、受信データに含まれる情報を暗号鍵で暗号化することで得られるデータを識別子に対応付けて格納するようにしても良い。この場合、上で述べた出力部は、（ｄ１）受信データに含まれる情報を出力するようにしても良い。このように、暗号化されずに情報が送信されてくるような場合もある。
【０１２４】
また、実施の形態の第２の態様に係る通信装置は、（Ａ）送信されたデータの識別子に対応付けて暗号鍵を格納するデータ格納部と、（Ｂ）送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されているか判定する処理部と、（Ｃ）送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されていると処理部により判定された場合には、送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する送信制御部とを有する。
【０１２５】
なお、上で述べた処理部は、（ｂ１）送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されていない場合には、送信が依頼されたデータの暗号鍵を生成して、送信が依頼されたデータの識別子に対応付けてデータ格納部に格納し、（ｂ２）送信が依頼されたデータを、暗号鍵で暗号化することで暗号化データを生成するようにしても良い。この場合、上で述べた送信制御部は、（ｃ１）送信が依頼されたデータの識別子と暗号鍵と暗号化データとを送信するようにしても良い。初めて送信するデータの場合には、次回の送信に備えるものである。
【０１２６】
また、上で述べた処理部は、（ｂ２）送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されていない場合には、送信が依頼されたデータの暗号鍵を生成して、送信が依頼されたデータの識別子に対応付けてデータ格納部に格納するようにしても良い。この場合、上で述べた送信制御部は、（ｃ２）送信が依頼されたデータの識別子と暗号鍵と送信が依頼されたデータとを送信するようにしても良い。このように暗号化せずとも、通信路が秘匿化されていれば問題はない。
【０１２７】
さらに、実施の形態の第３の態様に係るシステムは、（Ａ）第１の通信装置と、（Ｂ）第２の通信装置とを有する。そして、第１の通信装置は、（ａ１）送信されたデータの識別子に対応付けて暗号鍵を格納する第１のデータ格納部と、（ａ２）送信が依頼されたデータの識別子に対応付けて暗号鍵が第１のデータ格納部に格納されているか判定する処理部と、（ａ３）送信が依頼されたデータの識別子に対応付けて暗号鍵が第１のデータ格納部に格納されていると処理部により判定された場合には、送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、第２の通信装置に送信する送信制御部とを有する。また、第２の通信装置は、（ｂ１）識別子に対応付けて暗号化データを格納する第２のデータ格納部と、（ｂ２）第２の通信装置からの受信データに含まれる識別子に対応付けて暗号化データが第２のデータ格納部に格納されているか判定する判定部と、（ｂ３）受信データに含まれる識別子に対応付けて暗号化データが第２のデータ格納部に格納されていると判定部により判定された場合には、受信データに含まれる暗号鍵で、第２のデータ格納部に識別子に対応付けて格納された暗号化データを復号する復号処理部と、（ｂ４）復号処理部により復号されたデータを出力する出力部とを有する。
【０１２８】
このような２つの通信装置を設けることによって、セキュリティを向上させた重複除去通信が可能になる。
【０１２９】
なお、上で述べたような処理をコンピュータ又はプロセッサに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【０１３０】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１３１】
（付記１）
識別子に対応付けて暗号化データを格納するデータ格納部と、
他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されているか判定する判定部と、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていると前記判定部により判定された場合には、前記受信データに含まれる暗号鍵で、前記データ格納部に前記識別子に対応付けて格納された暗号化データを復号する復号処理部と、
前記復号処理部により復号されたデータを出力する出力部と、
を有する通信装置。
【０１３２】
（付記２）
前記判定部は、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていない場合には、前記データ格納部に、前記識別子に対応付けて前記受信データに含まれる暗号化データを格納し、
前記復号処理部は、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていないと前記判定部により判定された場合には、前記受信データに含まれる暗号鍵で、前記受信データに含まれる暗号化データを復号する
付記１記載の通信装置。
【０１３３】
（付記３）
前記判定部は、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されていない場合には、前記データ格納部に、前記受信データに含まれる情報を前記暗号鍵で暗号化することで得られるデータを前記識別子に対応付けて格納し、
前記出力部は、
前記受信データに含まれる情報を出力する
付記１記載の通信装置。
【０１３４】
（付記４）
送信されたデータの識別子に対応付けて暗号鍵を格納するデータ格納部と、
送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されているか判定する処理部と、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されていると前記処理部により判定された場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する送信制御部と、
を有する通信装置。
【０１３５】
（付記５）
前記処理部は、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されていない場合には、前記送信が依頼されたデータの暗号鍵を生成して、前記送信が依頼されたデータの識別子に対応付けて前記データ格納部に格納し、
前記送信が依頼されたデータを、前記暗号鍵で暗号化することで暗号化データを生成し、
前記送信制御部は、
前記送信が依頼されたデータの識別子と前記暗号鍵と前記暗号化データとを送信する
付記４記載の通信装置。
【０１３６】
（付記６）
前記処理部は、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されていない場合には、前記送信が依頼されたデータの暗号鍵を生成して、前記送信が依頼されたデータの識別子に対応付けて前記データ格納部に格納し、
前記送信制御部は、
前記送信が依頼されたデータの識別子と前記暗号鍵と前記送信が依頼されたデータとを送信する
付記４記載の通信装置。
【０１３７】
（付記７）
他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されているか判定し、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されている場合には、前記受信データに含まれる暗号鍵で、前記データ格納部に前記識別子に対応付けて格納された暗号化データを復号し、
復号されたデータを出力する
処理を含む通信処理方法。
【０１３８】
（付記８）
送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されているか判定し、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されている場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する
処理を含む通信処理方法。
【０１３９】
（付記９）
第１の通信装置と、
第２の通信装置と、
を有し、
前記第１の通信装置は、
送信されたデータの識別子に対応付けて暗号鍵を格納する第１のデータ格納部と、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記第１のデータ格納部に格納されているか判定する処理部と、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記第１のデータ格納部に格納されていると前記処理部により判定された場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、前記第２の通信装置に送信する送信制御部と
を有し、
前記第２の通信装置は、
識別子に対応付けて暗号化データを格納する第２のデータ格納部と、
前記第２の通信装置からの受信データに含まれる識別子に対応付けて暗号化データが前記第２のデータ格納部に格納されているか判定する判定部と、
前記受信データに含まれる識別子に対応付けて暗号化データが前記第２のデータ格納部に格納されていると前記判定部により判定された場合には、前記受信データに含まれる暗号鍵で、前記第２のデータ格納部に前記識別子に対応付けて格納された暗号化データを復号する復号処理部と、
前記復号処理部により復号されたデータを出力する出力部と、
を有するシステム。
【０１４０】
（付記１０）
他の通信装置からの受信データに含まれる識別子に対応付けて暗号化データがデータ格納部に格納されているか判定し、
前記受信データに含まれる識別子に対応付けて暗号化データが前記データ格納部に格納されている場合には、前記受信データに含まれる暗号鍵で、前記データ格納部に前記識別子に対応付けて格納された暗号化データを復号し、
復号されたデータを出力する
処理を、コンピュータに実行させるための通信処理プログラム。
【０１４１】
（付記１１）
送信が依頼されたデータの識別子に対応付けて暗号鍵がデータ格納部に格納されているか判定し、
前記送信が依頼されたデータの識別子に対応付けて暗号鍵が前記データ格納部に格納されている場合には、前記送信が依頼されたデータの識別子及び対応付けられている暗号鍵を、他の通信装置に送信する
処理を、コンピュータに実行させるための通信処理プログラム。
【符号の説明】
【０１４２】
１  ノード
１０１  受信部
１０２  入力バッファ
１０３  分割部
１０４  データ格納部
１０５  ハッシュ処理部
１０６  ハッシュデータ格納部
１０７  暗号鍵処理部
１０８  暗号鍵格納部
１０９  暗号処理部
１１０  送信バッファ
１１１  送信制御部
２  ノード
２０１  受信部
２０２  受信バッファ
２０３  判定部
２０４  索引格納部
２０５  暗号化キャッシュ
２０６  復号処理部
２０７  出力バッファ
２０８  出力処理部
【図１】
2015230379.tif 000003
【図２】
2015230379.tif 000004
【図３】
2015230379.tif 000005
【図４】
2015230379.tif 000006
【図５】
2015230379.tif 000007
【図６】
2015230379.tif 000008
【図７】
2015230379.tif 000009
【図８】
2015230379.tif 000010
【図９】
2015230379.tif 000011
【図１０】
2015230379.tif 000012
【図１１】
2015230379.tif 000013
【図１２】
2015230379.tif 000014
【図１３】
2015230379.tif 000015
【図１４】
2015230379.tif 000016
【図１５】
2015230379.tif 000017
【図１６】
2015230379.tif 000018
【図１７】
2015230379.tif 000019
【図１８】
2015230379.tif 000020
【図１９】
2015230379.tif 000021
【図２０】
2015230379.tif 000022
【図２１】
2015230379.tif 000023
【図２２】
2015230379.tif 000024
【図２３】
2015230379.tif 000025
【図２４】
2015230379.tif 000026
【図２５】
2015230379.tif 000027
【図２６】
2015230379.tif 000028
【図２７】
2015230379.tif 000029
【図２８】
2015230379.tif 000030