(57)【特許請求の範囲】
【請求項１】
第１データを格納する記憶部と、
第１データと第２データとの差分データ、および第２データの電子署名を含むデータを取得する取得部と、
第１データと差分データとをもとに第２データを生成する差分適用部と、
前記差分適用部が生成した第２データを、前記取得部が取得した電子署名で検証する検証部を含み、
前記取得部が取得するデータは、差分データの電子署名も含み、
前記検証部による第２データの検証が失敗した場合、前記検証部は、前記取得部が取得した差分データを前記取得部が取得した差分データの電子署名で検証し、前記検証部による第２データの検証が成功した場合、前記検証部は、前記取得部が取得した差分データを前記取得部が取得した差分データの電子署名で検証しないことを特徴とする情報処理装置。
【請求項２】
第１データと第２データとの差分データ、および第２データの電子署名を含むデータを取得するステップと、
第１データと差分データとをもとに、第２データを生成するステップと、
生成した第２データを、取得した電子署名で検証するステップとをプロセッサに実行させ、
前記取得するステップが取得するデータは、差分データの電子署名も含み、
前記検証するステップによる第２データの検証が失敗した場合、前記検証するステップは、前記取得するステップが取得した差分データを前記取得するステップが取得した差分データの電子署名で検証し、前記検証するステップによる第２データの検証が成功した場合、前記検証するステップは、前記取得するステップが取得した差分データを前記取得するステップが取得した差分データの電子署名で検証しないことを特徴とする情報処理方法。
【請求項３】
第１データと第２データとの差分データ、および第２データの電子署名を含むデータを取得する機能と、
第１データと差分データとをもとに、第２データを生成する機能と、
生成した第２データを、取得した電子署名で検証する機能とをコンピュータに実現させ、
前記取得する機能が取得するデータは、差分データの電子署名も含み、
前記検証する機能による第２データの検証が失敗した場合、前記検証する機能は、前記取得する機能が取得した差分データを前記取得する機能が取得した差分データの電子署名で検証し、前記検証する機能による第２データの検証が成功した場合、前記検証する機能は、前記取得する機能が取得した差分データを前記取得する機能が取得した差分データの電子署名で検証しないことを特徴とするプログラム。
【請求項４】
第１データと第２データとを保持するサーバと、
ネットワークを介して前記サーバと通信可能な、第１データを保持する情報処理装置とを含み、
前記サーバは、第１データと第２データとの差分データ、および第２データの電子署名を前記情報処理装置に送信し、
前記情報処理装置は、前記サーバから受信した差分データを第１データに適用して生成した第２データを、前記サーバから受信した電子署名で検証し、
前記情報処理装置が前記サーバから受信するデータは、差分データの電子署名も含み、
前記情報処理装置による第２データの検証が失敗した場合、前記情報処理装置は、前記情報処理装置が受信した差分データを前記情報処理装置が受信した差分データの電子署名で検証し、前記情報処理装置による第２データの検証が成功した場合、前記情報処理装置は、前記情報処理装置が受信した差分データを前記情報処理装置が受信した差分データの電子署名で検証しないことを特徴とする情報処理システム。
【請求項５】
第１データと第２データとを保持する第１情報処理装置のプロセッサが、第１データと第２データとの差分データ、および第２データの電子署名を、ネットワークを介して第１データを保持する第２情報処理装置に送信するステップを実行し、
第２情報処理装置のプロセッサが、第１情報処理装置から受信した差分データを第１データに適用して生成した第２データを、第１情報処理装置から受信した電子署名で検証するステップを実行し、
第２情報処理装置が第１情報処理装置から受信するデータは、差分データの電子署名も含み、
第２情報処理装置による第２データの検証が失敗した場合、第２情報処理装置は、第２情報処理装置が受信した差分データを第２情報処理装置が受信した差分データの電子署名で検証し、第２情報処理装置による第２データの検証が成功した場合、第２情報処理装置は、第２情報処理装置が受信した差分データを第２情報処理装置が受信した差分データの電子署名で検証しないことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ生成方法、その方法を実現する情報処理装置、および情報処理装置を含む情報処理システムに関する。
【背景技術】
【０００２】
近年、コンピュータの進展とともにソフトウェアも急速に発達しており、ひとつのアプリケーションプログラムを実現するソフトウェアのデータ量が数ギガバイトから数十ギガバイトに達するものも出現している。これらのソフトウェアの中には、ひとたびリリースされた後も、データや機能の追加や変更、プログラムの修正等を目的としてアップデートされることもある。
【０００３】
あるデータファイルをアップデートして別のデータファイルに更新しようとする場合、更新後のデータファイルを送信して更新前のデータファイルと置換することが一般に行われる。しかしながら、多くの場合、更新前のデータファイルと更新後のデータファイルとは相関があり、ファイル間の差分は小さくなる。このため、差分ファイルを作成して更新対象ファイルを保持する機器に送信し、送信先で更新前のデータファイルと差分ファイルから、更新後のデータファイルを生成することができれば配信コストを小さくすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一方で、セキュリティ等の観点から、更新前後のデータファイルが暗号化・署名されている場合もある。そのような場合、更新前のデータファイルと更新後のデータファイルとの相関はほとんど見られず、それらの差分は小さくならない。そのため差分を配信しても配信コストを小さくすることができない。当然ながら、更新後のデータファイルを送信するのも配信コストがかかる。更新対象のデータの容量が大きい場合、ネットワークを介して更新後のデータを丸ごと送信しようとすると、データの送受信に時間を要する。また、ユーザの環境によっては、データの送受信のための通信コストがかさんでしまう場合もありうる。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、使用帯域を抑制しつつ安全に更新データを提供する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様は情報処理装置である。この装置は、第１データと第２データとの差分データを生成する差分生成部と、データを暗号化する暗号化部と、データの電子署名を生成する電子署名生成部と、送信データを生成する送信データ生成部とを含む。ここで前記暗号化部は、前記差分生成部が生成した差分データを暗号化して暗号化差分データを生成し、前記送信データ生成部は、前記暗号化部が生成した暗号化差分データと前記電子署名生成部が生成した第２データの電子署名とを含む送信データを生成する。
【０００７】
本発明の別の態様は、データ生成方法である。この方法は、第１データと第２データとの差分データを生成するステップと、生成した差分データを暗号化して暗号化差分データを生成するステップと、第２データの電子署名を生成するステップと、暗号化差分データと第２データの電子署名とを含む送信データを生成するステップとをプロセッサに実行させる。
【０００８】
本発明のさらに別の態様も、情報処理装置である。この装置は、第１データを格納する記憶部と、第１データと第２データとの差分データ、および第２データの電子署名を含むデータを取得する取得部と、第１データと差分データとをもとに第２データを生成する差分適用部と、前記差分適用部が生成した第２データを、前記取得部が取得した電子署名で検証する検証部を含む。
【０００９】
本発明のさらに別の態様は、情報処理方法である。この方法は、第１データと第２データとの差分データ、および第２データの電子署名を含むデータを取得するステップと、第１データと差分データとをもとに、第２データを生成するステップと、生成した第２データを取得した電子署名で検証するステップとをプロセッサに実行させる。
【００１０】
本発明のさらに別の態様は、情報処理システムである。このシステムは、第１データと第２データとを保持するサーバと、ネットワークを介して前記サーバと通信可能な、第１データを保持する情報処理装置とを含む。ここで前記サーバは、第１データと第２データとの差分データ、および第２データの電子署名を前記情報処理装置に送信し、前記情報処理装置は、前記サーバから受信した差分データを第１データに適用して生成した第２データを、前記サーバから受信した電子署名で検証する。
【００１１】
本発明のさらに別の態様も、情報処理方法である。この方法は、第１データと第２データとを保持する第１情報処理装置のプロセッサが、第１データと第２データとの差分データ、および第２データの電子署名を、ネットワークを介して第１データを保持する第２情報処理装置に送信するステップを実行し、第２情報処理装置のプロセッサが、第１情報処理装置から受信した差分データを第１データに適用して生成した第２データを、第２情報処理装置から受信した電子署名で検証するステップを実行する。
【００１２】
本発明のさらに別の態様は、上記のいずれかの方法の各ステップをコンピュータに実現させるプログラムである。
【００１３】
このプログラムは、ビデオやオーディオのデコーダ等のハードウェア資源の基本的な制御を行なうために機器に組み込まれるファームウェアの一部として提供されてもよい。このファームウェアは、たとえば、機器内のＲＯＭ（Read Only Memory）やフラッシュメモリなどの半導体メモリに格納される。このファームウェアを提供するため、あるいはファームウェアの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
【００１４】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明によれば、使用帯域を抑制しつつ安全に更新データを提供する技術を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態に係る情報処理システムの全体構成を模式的に示す図である。
【図２】実施の形態に係るサーバの内部構成を模式的に示す図である。
【図３】実施の形態に係る情報処理装置の内部構成を模式的に示す図である。
【図４】実施の形態に係る情報処理システムによるアップデート処理の流れを示すシーケンス図である。
【図５】実施の形態に係るサーバにおける送信データの生成処理の流れを説明するフローチャートである。
【図６】実施の形態に係るサーバによって処理されるデータを模式的に示す図である。
【図７】実施の形態に係るサーバ内の前処理の流れを説明するフローチャートである。
【図８】実施の形態に係るアップデート処理の過程における、サーバおよび情報処理装置内のデータの状態遷移を示す図である。
【発明を実施するための形態】
【００１７】
本発明の実施の形態の概要を述べる。本発明の実施の形態は、異なる情報処理装置が同一のデジタルデータを所持するとともに、一方の情報処理装置が、所持するデジタルデータを更新した新たなデジタルデータを所持している。新たなデジタルデータを所持している情報処理装置が、新たなデジタルデータと更新前のデジタルデータとの差分データを、新たなデジタルデータの電子署名とともに他方の情報処理装置に送信する。他方の情報処理装置は、受信した差分データをもとにデジタルデータを更新して新たなデジタルデータを作成し、新たなデジタルデータの電子署名を検証する。
【００１８】
図１は、実施の形態に係る情報処理システム４００の全体構成を模式的に示す図である。実施の形態に係る情報処理システム４００は、サーバ１００と、サーバ１００とネットワーク３００を介して通信可能な１以上の情報処理装置２００とを含む。図１に示す例では、３つの情報処理装置２００ａ、２００ｂ、および２００ｃが図示されているが、情報処理システム４００が含む情報処理装置２００の数は３つに限られず、それ以上でもそれ以下であってもよい。以下、特に区別の必要がない限り、単に「情報処理装置２００」と総称する。情報処理装置２００の例としては、例えば据置型のゲーム機や携帯ゲーム機等があげられる。
【００１９】
サーバ１００は、例えばゲームアプリケーション等、情報処理装置２００で実行可能なソフトウェアをデジタルデータの形式で格納する。情報処理装置２００のユーザは、ネットワーク３００を介してサーバ１００または別のサーバからデジタルデータをダウンロードしたり、あるいはデジタルデータを格納する記録媒体を購入してインストールしたりすることにより、デジタルデータを取得する。このように、実施の形態に係る情報処理システム４００においては、サーバ１００と情報処理装置２００とはともに同一のデジタルデータ（以下、「第１データ」と記載する。）を所持する。
【００２０】
第１データとしては、例えば文書作成や表計算等、およびそれらを含むオフィススイート、オペレーティングシステムやファームウェア等の基本ソフト、あるいはゲームアプリケーションが挙げられる。これらのソフトウェアは、データや機能の追加や変更、修正等を目的として、アップデートが行われることがある。このアップデートはしばしばネットワーク３００を介してオンラインで行われる。特に、実行のために専用のハードウェアを必要とするゲームアプリケーションのアップデートの際には、ゲームアプリケーションの提供者が、ハードウェアの提供者等、アップデートのためのサーバを管理するサーバ管理者にアップデートのためのソフトウェアを委託することもある。以下、第１データを更新した新たなデジタルデータを「第２データ」と記載する。
【００２１】
オペレーティングシステムやゲームアプリケーションのデータサイズは数ギガバイトを超える場合もあり、第１データを第２データにアップデートするために時間を要することもある。また、情報処理装置２００のユーザのネットワーク環境、あるいは国や地域によっては通信費が従量制で課金される場合もあり、第１データを第２データにアップデートするための通信費がかさむことも起こりうる。そこで実施の形態に係るサーバ１００は、第１データと第２データとの差分データを、第１データを所持する情報処理装置２００に送信する。情報処理装置２００は、自信が所持する第１データとサーバ１００から取得した差分データとをもとに、第２データを生成することにより、第１データを第２データにアップデートする。
【００２２】
図２は、実施の形態に係るサーバ１００の内部構成を模式的に示す図である。実施の形態に係るサーバ１００は、記憶部１０２、復号部１０４、伸張部１０６、差分生成部１０８、電子署名生成部１１０、圧縮部１１２、暗号化部１１４、送信データ生成部１１６、送信部１１８、要求受付部１２０、鍵生成部１２２、および検証部１３２を含む。
【００２３】
記憶部１０２は、サーバ１００によるアップデート処理に要する情報を格納する。具体的には、記憶部１０２は、第１データ１２４、第１データ１２４をアップデートしたデータである第２データ１２６、および情報処理装置２００に送信するための送信データ１３０を含む。記憶部１０２はまた、送信データ１３０として公開鍵方式の暗号化データを採用する場合には、秘密鍵および公開鍵をペアとする暗号鍵１２８も格納する。
【００２４】
ここで記憶部１０２は、データを暗号化した後に格納するようにしてもよい。これにより、万が一記憶部１０２が格納するデータが第三者に漏洩したとしても情報の秘密を守ることができる。また記憶部１０２は、データを圧縮した後に格納するようにしてもよい。これにより、記憶部１０２のデータ容量を効率よく利用することができる。さらに、記憶部１０２は、データに対して暗号化および圧縮をした後に格納してもよい。この場合、データを圧縮した後に暗号化することが好ましい。データを暗号化するとデータのエントロピーが増大するため、その後の圧縮効率が悪くなるからである。したがって、以下、「圧縮暗号化」という場合、データを圧縮した後に暗号化したことを意味することとする。
【００２５】
第１データ１２４または第２データ１２６の少なくとも一方が暗号化されている場合、復号部１０４は、暗号化されたデータを復号して平文データを生成する。第１データ１２４または第２データ１２６の少なくとも一方が圧縮されている場合、伸張部１０６は、圧縮されているデータを伸張する。したがって、第１データ１２４および第２データ１２６が暗号化されていない場合は、復号部１０４は不要である。同様に、第１データ１２４および第２データ１２６が圧縮されていない場合は、伸張部１０６は不要である。この意味で、復号部１０４と伸張部１０６は、実施の形態に係るサーバ１００の必須の構成要素ではないが、データの機密保持や記憶部１０２の効率的な利用をする上で有用である。検証部１３２は、第１データ１２４および第２データ１２６それぞれの検証用の署名データ（図示せず）を用いて、第１データ１２４および第２データ１２６を検証する。
【００２６】
差分生成部１０８は、第１データ１２４の平文データと第２データ１２６の平文データとの差分データを生成する。電子署名生成部１１０は、秘密鍵を用いてデータの電子署名を生成する。電子署名生成部１１０が電子署名を生成するデータは、例えば第２データ１２６の平文データである。電子署名生成部１１０は、データの電子署名を生成するためにそのデータのハッシュ値を生成することもある。データのハッシュ値の生成は、例えばＳＨＡ−１（Secure Hash Algorithm-1）、ＳＨＡ−２、ＭＤ５（Message Digest Algorithm 5）等の既知のハッシュ生成アルゴリズムを用いて実現できる。
【００２７】
圧縮部１１２は、差分生成部１０８が生成した差分データを圧縮する。圧縮部１１２は、例えばＲＬＥ（Run Length Encoding）やハフマン符号化等の既知のデータ圧縮アルゴリズムを用いて実現できる。なお圧縮部１１２は実施の形態に係るサーバ１００の必須の構成要素ではないが、情報処理装置２００に送信するための送信データ１３０を圧縮することによってデータのサイズを小さくすることができるため、ネットワーク３００の使用帯域を抑制できる点で有利である。
【００２８】
暗号化部１１４は、データを暗号化する。具体的には、暗号化部１１４は差分生成部が生成して圧縮部が圧縮した圧縮差分データを暗号化して、圧縮暗号化差分データを生成する。電子署名生成部１１０は第２データ１２６の電子署名を生成する。
【００２９】
送信データ生成部１１６は、情報処理装置２００に送信するための送信データ１３０を生成して記憶部１０２に格納する。具体的には、送信データ生成部１１６は、暗号化部１１４が生成した圧縮暗号化差分データと電子署名生成部１１０が生成した第２データ１２６の電子署名とを含む送信データ１３０を生成する。ここで送信データ生成部１１６が生成する送信データ１３０は、圧縮暗号化差分データと電子署名とが関連づけられていればよく、例えば圧縮暗号化差分データのヘッダ領域に電子署名を格納してひとつのデータファイルとしてもよいし、別々のデータファイルであってもよい。
【００３０】
送信部１１８は、送信データ生成部１１６が生成して記憶部１０２に格納した送信データ１３０を、情報処理装置２００に送信する。ここで送信部１１８は、情報処理装置２００のうち、第１データ１２４を所持している情報処理装置２００に送信データ１３０を送信するようにしてもよい。これを実現するため、要求受付部１２０は、第１データ１２４を保持する情報処理装置２００からのデータ送信要求を受け付ける。送信部１１８は、要求受付部１２０が第１データ１２４を保持する情報処理装置２００からのデータ送信要求を受け付けた場合、その情報処理装置２００に送信データ１３０を送信する。要求受付部１２０は、例えば情報処理装置２００から第１データ１２４の電子署名やハッシュ値を取得したり、あるいは第１データ１２４を格納する記録媒体を一意に特定する識別子を取得したりする等の方法で、データ送信要求をした情報処理装置２００が第１データ１２４を所持することを確認できる。
【００３１】
これにより、第１データ１２４を保持しない情報処理装置２００には不要な第１データ１２４のアップデート用の送信データ１３０を送信することを防止し、ネットワーク３００の使用帯域を抑制することも可能となる。また、データの送信先を制限することで、データの改竄等の悪意を持った第三者が送信データ１３０を取得しにくくなる点でも有利である。
【００３２】
サーバ１００と情報処理装置２００とが公開鍵方式の暗号化手法を用いてデータの送受信をする場合、鍵生成部１２２は、暗号化および復号に用いる秘密鍵と公開鍵とを生成する。鍵生成部１２２は、例えばＲＳＡ暗号や楕円曲線暗号等の既知のアルゴリズムを用いて実現できる。なお、サーバ１００と情報処理装置２００とが共通鍵方式の暗号化手法のみを用いてデータの送受信をする場合、情報処理装置２００内の共通鍵は、例えば情報処理装置２００の製造時等の外部から共通鍵にアクセスされる可能性の低い時期に、情報処理装置２００内の耐タンパ性のある安全な記憶領域（図示せず）に格納される。この場合、鍵生成部１２２は不要となるため、鍵生成部１２２は実施の形態に係るサーバ１００の必須の構成要素ではない。
【００３３】
図３は、実施の形態に係る情報処理装置２００の内部構成を模式的に示す図である。実施の形態に係る情報処理装置２００は、通信部２０２、取得部２０４、復号部２０６、伸張部２０８、差分適用部２１０、記憶部２１２、検証部２１６、および要求部２１８を含む。
【００３４】
通信部２０２は、情報処理装置２００がネットワーク３００と通信するための通信インタフェースである。通信部２０２は、例えばＬＡＮ（Local Area Network）カードやＷｉ−Ｆｉ（登録商標）モジュール等の既知の通信技術を用いて実現できる。要求部２１８は、通信部２０２を介して、サーバ１００に第１データ１２４を第２データ１２６にアップデートするためのデータの有無を確認する。第１データ１２４のアップデートがある場合、要求部２１８は、サーバ１００に対してアップデートのためのデータを要求する。取得部２０４は、通信部２０２を介してサーバ１００から第１データ１２４と第２データ１２６との差分データ、および第２データ１２６の電子署名を含むデータを取得する。
【００３５】
復号部２０６は、取得部２０４が取得したデータが暗号化されている場合、復号して平文データを生成する。伸張部２０８は、取得部２０４が取得したデータが圧縮されている場合、そのデータを伸張する。
【００３６】
記憶部２１２は、情報処理装置２００によるアップデート処理に要する情報を格納する。具体的には、記憶部２１２は、第１データ１２４、およびデータを復号するための復号鍵２２０を格納する。記憶部２１２はまた、後述する差分適用部２１０が生成した第２データ１２６も格納する。
【００３７】
差分適用部２１０は、記憶部２１２が格納する第１データ１２４と取得部２０４が取得した差分データとをもとに、第２データ１２６を生成する。
【００３８】
検証部２１６は、差分適用部２１０が生成した第２データ１２６を、サーバ１００中の電子署名生成部１１０が生成した電子署名で検証する。
【００３９】
ここで、検証部２１６による検証が失敗したときの原因として、少なくとも次のふたつの原因が考えられる。
【００４０】
第１に、通信エラーや第三者による改竄等、サーバ１００から情報処理装置２００への伝達途中に差分データが変化することに起因するものである。差分データが変化したため、情報処理装置２００中の差分適用部２１０が生成した第２データ１２６は、サーバ１００中の第２データ１２６と異なるものとなり、結果として両者の電子署名が異なるものとなる。
【００４１】
第２に、情報処理装置２００内の差分適用部２１０が第２データ１２６を生成する際に、何らかのエラーが生じたことに起因するものである。例えば差分適用部２１０が第１データ１２４に差分データを適用するときのアルゴリズムにバグがあったり、アルゴリズムの適用時に使用したメモリ内でメモリエラーが生じてデータの一部が変化したりする場合である。この場合も差分適用部２１０が生成した第２データ１２６は、サーバ１００中の第２データ１２６と異なるものとなり、結果として両者の電子署名が異なるものとなる。もちろん、第１の原因と第２の原因とが同時に発生しても、検証部２１６による検証は失敗する。
【００４２】
ここで、差分適用部２１０が生成する第２データ１２６は、当然ながらサーバ１００から送信されたデータではない点に留意すべきである。情報処理装置２００内の検証部２１６は、サーバ１００から送信された差分データではなく、情報処理装置２００内の差分適用部２１０が生成する第２データ１２６の検証をする。これにより、検証部２１６による１度の検証で、伝達途中のデータの変化のみならず、差分適用時のエラーの検出もすることができる。
【００４３】
差分適用部２１０は、検証部２１６による検証が成功した場合、生成した第２データ１２６を記憶部２１２に格納する。検証部２１６は、検証が失敗した場合、要求部２１８にアップデートのためのデータをサーバ１００に再度要求させてもよい。
【００４４】
ところで、検証部２１６による１度の検証で、伝達途中のデータの変化のみならず差分適用時のエラーの検出もすることができるが、いずれの原因によって検証が失敗したかを切り分けることは難しい。そこで、サーバ１００が情報処理装置２００に送信するデータに差分データの電子署名を含めることにより、検証失敗の原因を切り分けることが容易となる。以下その原理を説明する。
【００４５】
図２の説明に戻り、サーバ１００内の電子署名生成部１１０は、差分生成部１０８が生成した差分データの電子署名も生成する。ここで電子署名生成部１１０は、圧縮部１１２がデータを圧縮する場合、差分生成部１０８が生成した差分データに代えて圧縮部１１２が生成した圧縮差分データの電子署名を生成してもよい。本発明の実施の形態においてはいずれを採用してもよいことは当業者であれば容易に理解されよう。
【００４６】
送信データ生成部１１６は、電子署名生成部１１０が生成した差分データの電子署名も含めて送信データ１３０を生成する。
【００４７】
図３の説明に戻り、情報処理装置２００内の取得部２０４は、サーバ１００から差分データの電子署名を含むデータを取得する。検証部２１６による第２データ１２６の検証が失敗した場合、検証部２１６は、取得部２０４が取得した差分データを、取得部２０４がサーバ１００から取得した電子署名で検証する。
【００４８】
差分データの検証が成功した場合、第２データ１２６の検証が失敗した原因は上記第２の原因である可能性が高い。また、差分データの検証が成功した場合は、少なくとも上記第１の原因がある可能性が高い。このように、サーバ１００が情報処理装置２００に送信するデータに差分データの電子署名を含めることにより、検証失敗の原因を切り分けることが可能となる。
【００４９】
上述したように、検証部２１６による第２データ１２６の検証が失敗した場合に、はじめて検証部２１６は差分データを検証する。つまり、検証部２１６による第２データ１２６の検証が成功したときは、検証部２１６が差分データの検証をしない。これにより、アップデート処理の高速化を図り、電力消費を抑えることが可能となる。
【００５０】
図４は、実施の形態に係る情報処理システム４００によるアップデート処理の流れを示すシーケンス図である。
【００５１】
サーバ１００は、第１データ１２４をアップデートして第２データ１２６を生成するための送信データ１３０を生成する（Ｓ２）。情報処理装置２００内の要求部２１８は、サーバ１００に第１データ１２４を第２データ１２６にアップデートするためのデータの有無を確認する更新有無確認要求を送信する（Ｓ４）。サーバ１００中の要求受付部１２０は、情報処理装置２００から更新有無確認要求を受信すると、その情報処理装置２００に更新有無の情報を通知する（Ｓ６）。
【００５２】
情報処理装置２００内の取得部２０４は、サーバ１００から更新有無の情報を受信し（Ｓ８）、その内容を要求部２１８に通知する。第１データ１２４の更新がある場合（Ｓ１０のＹ）、要求部２１８は、サーバ１００にデータの更新を要求する（Ｓ１２）。サーバ１００内の要求受付部１２０は、情報処理装置２００から更新要求を受信すると（Ｓ１４）、送信部１１８は、更新を要求した情報処理装置２００に更新用の送信データ１３０を送信する（Ｓ１６）。
【００５３】
情報処理装置２００内の通信部２０２はサーバ１００から送信データ１３０を受信し（Ｓ１８）、差分適用部２１０は、送信データ１３０に含まれる差分データを第１データ１２４に適用して第１データ１２４を更新する（Ｓ２０）。検証部２１６は、差分適用部２１０が第１データ１２４を更新して生成した第２データ１２６の署名を検証する（Ｓ２２）。なお、「第２データの署名を検証する」とは、差分適用部２１０が生成した第２データ１２６を、サーバ１００から取得した第２データ１２６の電子署名で検証することを意味する。
【００５４】
検証部２１６が第２データ１２６の署名を検証するか、第１データ１２４の更新がない場合（Ｓ１０のＮ）、情報処理装置２００におけるアップデート処理は終了する。
【００５５】
図５は、実施の形態に係るサーバ１００における送信データ１３０の生成処理の流れを説明するフローチャートであり、図４におけるステップＳ２を詳細に説明する図である。
【００５６】
サーバ１００内の各部は送信データ１３０を生成するための前処理を実行する（Ｓ３０）。なお、前処理の流れの詳細は後述する。差分生成部１０８は、第１データ１２４と第２データ１２６との差分データを生成する（Ｓ３２）。圧縮部１１２は、差分生成部１０８が生成した差分データを圧縮して圧縮差分データを生成する（Ｓ３４）。暗号化部１１４は、圧縮部１１２が生成した圧縮差分データを暗号化して圧縮暗号化差分データを生成する（Ｓ３６）。
【００５７】
電子署名生成部１１０は第２データ１２６の電子署名を生成する（Ｓ３８）。送信データ生成部１１６は、第２データ１２６の電子署名と圧縮暗号化差分データとを含む送信データ１３０を生成する（Ｓ４０）。
【００５８】
図６は、実施の形態に係るサーバ１００によって処理されるデータを模式的に示す図である。上述したとおり、第１データ１２４と第２データ１２６とはともにデジタルデータである。図６においては、第１データ１２４と第２データ１２６とは「０」または「１」の列によって示されている。
【００５９】
実施の形態に係る差分生成部１０８は、例えば第１データ１２４と第２データ１２６とを一列に並べ、対応する桁同士の差分をとることによって差分データを生成する。このとき第１データ１２４と第２データ１２６との長さが異なる場合、短い方のデータに０をパディングするか、あるいは短い方のデータと同じ長さになるまで長い方のデータを切り詰める等の処理をする。パディングした０の数や、切り詰めたデータも差分情報となる。
【００６０】
図６においては、第１データ１２４と第２データ１２６との対応する桁の数が同じ場合、その桁に対応する差分データは０となる。第１データ１２４が「１」で第２データ１２６が「０」となる桁は、対応する差分データは「１」となる。同様に、第１データ１２４が「０」で第２データ１２６が「−１」となる桁は、対応する差分データは「−１」となる。
【００６１】
ここで、第２データ１２６は、第１データ１２４をアップデートしたデータであることに留意する。一般にデータや機能の追加、修正等を目的とするアップデートでは、データの大部分はもとのデータと共通する可能性が高い。そのため、上述の方法で求めた差分データを構成するデータの多くは「０」であることが期待できる。第１データ１２４と第２データ１２６とが同じデータである桁は、対応する差分データが「０」となるからである。同じ値が連続するデータは一般に圧縮効率も高いため、差分データは効率よく圧縮することができる。
【００６２】
暗号化部１１４によって暗号化された圧縮差分データは、復号しなければ意味のあるデータ列として認識することはできない。図６においては、暗号化によって「０」、「１」、「−１」以外のデータに変換され、差分データよりも短いデータとして、圧縮暗号化差分データを示している。
【００６３】
図７は、実施の形態に係るサーバ１００内の前処理の流れを説明するフローチャートであり、図５におけるステップＳ３０を詳細に説明する図である。図７に示すフローチャートは、サーバ１００内の記憶部１０２に、第１データ１２４と第２データ１２６がそれぞれ圧縮暗号化されて格納されていることを前提とする。
【００６４】
復号部１０４は、記憶部１０２から暗号化された第１データ１２４を取得する（Ｓ５０）。復号部１０４は、暗号化された第１データ１２４を復号して、第１データ１２４の平文データを生成する（Ｓ５２）。伸張部１０６は、第１データ１２４の平文データを伸張する（Ｓ５４）。検証部１３２は、復号および伸張された第１データ１２４を検証する（Ｓ５６）検証に成功しない場合（Ｓ５８のＮ）、ステップＳ５２に戻って、ステップＳ５２からステップＳ５６に至るまでの処理を繰り返す。
【００６５】
検証に成功した場合（Ｓ５８のＹ）、復号部１０４は、記憶部１０２から暗号化された第２データ１２６を取得する（Ｓ６０）。復号部１０４は、暗号化された第２データ１２６を復号して、第２データ１２６の平文データを生成する（Ｓ６２）。伸張部１０６は、第２データ１２６の平文データを伸張する（Ｓ６４）。検証部１３２は、復号および伸張された第２データ１２６を検証する（Ｓ６６）検証に成功しない場合（Ｓ６８のＮ）、ステップＳ６２に戻って、ステップＳ６２からステップＳ６６に至るまでの処理を繰り返す。検証に成功した場合（Ｓ６８のＹ）、本フローチャートにおける処理は終了する。
【００６６】
図８は、実施の形態に係るアップデート処理の過程における、サーバ１００および情報処理装置２００内のデータの状態遷移を示す図である。
【００６７】
初期状態において、サーバ１００は第１データ１２４と第２データ１２６とを所持するが、情報処理装置２００は第１データ１２４のみを所持する。差分生成状態において、サーバ１００には差分データが追加される。差分配信状態においては、情報処理装置２００に差分データが追加され、この結果、情報処理装置２００は第１データ１２４と差分データとを所持する。第２データ１２６の生成状態において、情報処理装置２００内で第２データ１２６が生成される。この結果、サーバ１００と情報処理装置２００とはともに、第１データ１２４、第２データ１２６、および差分データを所持する。
【００６８】
以上の構成による情報処理システム４００の動作は以下のとおりである。第１データ１２４と第２データ１２６とを保持するサーバ１００は、ネットワーク３００を介してサーバ１００と通信可能な情報処理装置２００であって、第１データ１２４を保持する情報処理装置２００に対して、第１データ１２４と第２データ１２６との差分データ、および第２データ１２６の電子署名を送信する。
【００６９】
情報処理装置２００は、サーバ１００から受信した差分データを、自身が所持する第１データ１２４に適用して第２データ１２６を生成する。情報処理装置２００はさらに、生成した第２データ１２６を、サーバ１００から受信した電子署名で検証する。検証に成功すれば、情報処理装置２００は、サーバ１００から第２データ１２６そのものを受信することなく、第１データ１２４のアップデートデータである第２データ１２６を取得することができる。
【００７０】
以上述べたように、実施の形態に係る情報処理システム４００によれば、使用帯域を抑制しつつ安全に更新データを提供することができる。
【００７１】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７２】
（第１の変形例）
上記の説明では、第２データ１２６は第１データ１２４を更新した新たなデジタルデータであることを前提として説明したが、第２データ１２６は第１データ１２４を更新したデータであることには限られず、第１データ１２４と何らかの相関があるデータであればよい。一例としては、第１データ１２４を左目用の視差画像とし第２データ１２６を右目用の視差画像としてもよい。
【００７３】
（第２の変形例）
上記の説明では、情報処理システム４００は、サーバ１００とサーバ１００と通信可能な複数の情報処理装置２００とから構成される、いわゆるサーバ・クライアントモデルのシステムを前提とした。しかしながら、送信データ１３０を生成し送信する装置はサーバ・クライアントモデルにおけるサーバ１００に限られず、ピアツーピアで通信する１対１の情報処理装置２００における、一方の情報処理装置であってもよい。この意味で、サーバ１００は、情報処理装置の一種である。
【００７４】
（第３の変形例）
図１は、ネットワーク３００を介して情報処理装置２００とサーバ１００が接続している様子を図示しており、現実のシステム構成を模式的に図示するものである。ここで情報処理システム４００中のサーバ１００は１台とは限らず、複数のサーバ１００やデータベース（図示せず）を用いてクラウドコンピューティングシステムを構成してもよい。一般に、情報処理装置２００を利用するユーザは、ネットワーク３００やサーバ１００からなる情報処理システム４００の構成を認識することはあまりない。情報処理システム４００を利用するユーザの立場から見ると、サービスの提供を受ける上で情報処理システム４００の物理構成やソフトウェア構成等を理解する必要はなく、あたかもネットワークの雲（Ｃｌｏｕｄ；クラウド）の中から出てきたサービスを利用するかのような印象を受ける。
【００７５】
情報処理装置２００は、ほとんどの場合ＣＰＵ（Central Processing Unit）等の計算リソースを持っており、アプリケーションの少なくとも一部を情報処理装置２００のローカルな環境で実行することも可能である。しかしながら、情報処理装置２００を利用するユーザにとっては、アプリケーションがローカルな計算リソースで実行されるか、あるいはネットワーク上のクラウドコンピューティングシステムの計算リソースで実行されるかは重要な問題ではなく、サービスを利用できるという点では同じである。
【００７６】
実施の形態に係る情報処理システム４００は、クラウドコンピューティングシステムを用いて実現してもよい。この場合、上述した情報処理システム４００における各ステップは、クラウドコンピューティングシステムの計算リソースによって実行される。ここで、「クラウドコンピューティングシステムの計算リソース」あるいは単に「計算リソース」という場合、情報処理装置２００の計算リソースとサーバ１００等の計算リソースの少なくともいずれか一方を意味することとする。
【符号の説明】
【００７７】
１００  サーバ、  １０２  記憶部、  １０４  復号部、  １０６  伸張部、  １０８  差分生成部、  １１０  電子署名生成部、  １１２  圧縮部、  １１４  暗号化部、  １１６  送信データ生成部、  １１８  送信部、  １２０  要求受付部、  １２２  鍵生成部、  １２４  第１データ、  １２６  第２データ、  １２８  暗号鍵、  １３０  送信データ、  １３２  検証部、  ２００  情報処理装置、  ２０２  通信部、  ２０４  取得部、  ２０６  復号部、  ２０８  伸張部、  ２１０  差分適用部、  ２１２  記憶部、  ２１６  検証部、  ２１８  要求部、  ２２０  復号鍵、  ３００  ネットワーク、  ４００  情報処理システム。
【図１】
0005985884.tif 000002
【図２】
0005985884.tif 000003
【図３】
0005985884.tif 000004
【図４】
0005985884.tif 000005
【図５】
0005985884.tif 000006
【図６】
0005985884.tif 000007
【図７】
0005985884.tif 000008
【図８】
0005985884.tif 000009