説明

暗号化プログラム、復号化プログラム、暗号化方法、復号化方法、システムおよびコンテンツの生成方法

【課題】鍵情報が類推されてしまうことを抑制すること。
【解決手段】暗号・圧縮装置16は、暗号化対象データの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化する暗号化部16aを有する。暗号・圧縮装置16は、第1のデータ部分及び第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する生成部16bを有する。また、暗号化部16aは、暗号化対象データの第1のデータ部分と異なる一部分である第2のデータ部分を第2の鍵情報に基づいて暗号化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化プログラム、復号化プログラム、暗号化方法、復号化方法、システムおよびコンテンツの生成方法に関する。
【背景技術】
【0002】
従来、デジタルコンテンツを暗号化して送信する装置がある。例えば、従来の装置は、デジタルコンテンツを圧縮する。そして、従来の装置は、1つの暗号鍵などを用いて、圧縮したデジタルコンテンツを暗号化する。次に、従来の装置は、暗号化したデジタルコンテンツを、PC(Personal Computer)や携帯電話などの利用者端末に送信する。なお、デジタルコンテンツの一例としては、動画、音楽、書籍などが挙げられる。また、デジタルコンテンツを暗号化する理由としては、著作権を保護するためなどの理由が挙げられる。
【0003】
また、かかるデジタルコンテンツを受信した利用者端末は、デジタルコンテンツを復号化する。そして、利用者端末は、復号化したデジタルコンテンツを伸張し、デジタルコンテンツを利用する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11−306092号公報
【特許文献2】特表2009−500723号公報
【特許文献3】特開2003−296179号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記の従来の技術では、暗号化に用いられる暗号鍵の情報である鍵情報が類推される場合があるという問題がある。これを説明すると、例えば、従来の技術では、1つの暗号鍵によりデジタルコンテンツが暗号化されているため、複数の暗号鍵を用いてデジタルコンテンツを暗号化した場合と比較して、暗号化されたデジタルコンテンツ全体から暗号鍵が解読されやすい。なお、デジタルコンテンツを数k〜数10k[byte]のデータに分割し、分割したそれぞれのデータを異なる暗号鍵で暗号化する方式も存在する。しかしながら、このような方式の場合には、暗号化に用いられる全ての暗号鍵を管理する必要があり、暗号鍵の管理が煩雑となる。
【0006】
1つの側面では、本発明は、鍵情報が類推されてしまうことを抑制することができる暗号化プログラム、復号化プログラム、暗号化方法、復号化方法、システムおよびコンテンツの生成方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本願の開示する暗号化プログラムは、一つの態様において、コンピュータに、暗号化対象データの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化する処理を実行させる。また、本願の開示する暗号化プログラムは、コンピュータに、前記第1のデータ部分及び前記第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する処理を実行させる。また、本願の開示する暗号化プログラムは、コンピュータに、前記暗号化対象データの前記第1のデータ部分と異なる一部分である第2のデータ部分を前記第2の鍵情報に基づいて暗号化する処理を実行させる。
【発明の効果】
【0008】
1態様によれば、鍵情報が類推されてしまうことを抑制することができる。
【図面の簡単な説明】
【0009】
【図1】図1は、実施例1に係るシステムの構成の一例を示す図である。
【図2】図2は、暗号・圧縮装置での処理を仮想的に示した図である。
【図3】図3は、実施例1に係るシステムのシーケンス図である。
【図4】図4は、実施例1に係る圧縮・暗号化処理の手順を示すフローチャートである。
【図5】図5は、実施例1に係る復号化・伸張処理の手順を示すフローチャートである。
【図6】図6は、実施例2に係るシステムの構成を示す図である。
【図7】図7は、実施例2に係る圧縮・暗号化処理の手順を示すフローチャートである。
【図8】図8は、実施例2に係る復号化・伸張処理の手順を示すフローチャートである。
【図9】図9は、暗号化プログラムを実行するコンピュータを示す図である。
【図10】図10は、復号化プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0010】
以下に、本願の開示する暗号化プログラム、復号化プログラム、暗号化方法、復号化方法、システムおよびコンテンツの生成方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例1】
【0011】
[システムの構成]
実施例1に係るシステムについて説明する。図1は、実施例1に係るシステムの構成の一例を示す図である。本実施例に係るシステム10は、サーバ11と、利用者端末12とを有する。サーバ11と、利用者端末12とは、データの送受信が可能なように接続されている。図1の例では、サーバ11と、利用者端末12とは、インターネット13を介して接続されている。なお、サーバ11と、利用者端末12とは、無線で接続されてもよい。サーバ11は、コンテンツのデータを圧縮し、圧縮したコンテンツのデータを暗号化し、暗号化したコンテンツのデータを利用者端末12に送信する。利用者端末12は、受信したコンテンツのデータを復号し、復号したコンテンツのデータを伸張し、伸張したコンテンツのデータを再生する。なお、コンテンツのデータを、以下、「コンテンツデータ」と称する。
【0012】
サーバ11は、ライセンスサーバ14と、コンテンツサーバ15と、暗号・圧縮装置16とを有する。なお、暗号・圧縮装置は、暗号化装置とも称される。
【0013】
ライセンスサーバ14は、暗号化するための鍵を生成する。ライセンスサーバ14は、ライセンスDB(Data Base)14aを有する。例えば、ライセンスサーバ14は、コンテンツサーバ15に登録されたコンテンツごとに、各コンテンツを暗号化するための鍵の情報である鍵情報を生成する。そして、ライセンスサーバ14は、生成した鍵情報をライセンスDB14aに登録する。
【0014】
コンテンツサーバ15は、利用者端末12に配信するコンテンツを登録する。コンテンツサーバ15は、コンテンツDB15aを有する。例えば、コンテンツサーバ15は、動画、音楽、書籍などの各種コンテンツを、図示しない外部の装置から取得し、取得したコンテンツをコンテンツDB15aに登録する。また、コンテンツサーバ15は、暗号・圧縮装置16により圧縮され、暗号化されたコンテンツデータをコンテンツDB15aに登録する。
【0015】
暗号・圧縮装置16は、暗号化部16aと、生成部16bとを有する。
【0016】
暗号化部16aは、暗号化対象のデータであるコンテンツデータの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化する。例えば、暗号化部16aは、インターネット13を介して、利用者端末12から、コンテンツを提供する指示を受信した場合には、指示が示すコンテンツに対応するコンテンツデータをコンテンツDB15aから取得する。また、暗号化部16aは、取得したコンテンツデータに対応する鍵情報をライセンスDB14aから取得する。
【0017】
また、暗号化部16aは、データ圧縮アルゴリズムとして、例えば、LZ77を用いて、コンテンツデータを圧縮する。具体例を挙げて説明する。暗号化部16aは、LZ77のデータ圧縮アルゴリズムを用いて、参照部および符号化部を有するスライド窓を、コンテンツデータの先頭部分に適用する。そして、暗号化部16aは、参照部のコンテンツデータの中に、符号化部の先頭から始まるコンテンツデータの記号と一致するデータがある場合には、符号化部のデータのうち一致した最長部分のデータについて、圧縮を行うためにポインタを生成する。ここで、ポインタは、スライド窓の参照部におけるデータの出現位置、およびデータの長さの情報を含む。そして、暗号化部16aは、生成したポインタをバッファに出力する。なお、かかるバッファは、暗号・圧縮装置16に備えられているものとする。続いて、暗号化部16aは、一致した最長部分のデータの長さだけ、スライド窓をスライドさせる。
【0018】
また、暗号化部16aは、参照部のコンテンツデータの中に、符号化部の先頭から始まるコンテンツデータの記号と一致するデータがない場合に、データを圧縮せず、符号化部のデータを所定数分、バッファに出力する。なお、符号化部の先頭から始まるコンテンツデータの記号と一致するデータがない場合に、バッファに出力されるデータは、「リテラルバイト」とも称される。続いて、暗号化部16aは、バッファに出力したデータの長さだけ、スライド窓をスライドさせる。
【0019】
また、暗号化部16aが圧縮処理により、所定のブロック長の圧縮データ(ブロック1、第1のデータ部分)を生成すると、生成部16bは下記の処理を行う。まず、生成部16bは、スライド窓の参照部のデータのハッシュ値Xを算出する。生成部16bがハッシュ値を生成する場合に用いられるハッシュ関数の一例としては、SHA(Secure Hash Algorithm)−2が挙げられる。また、生成部16bが生成するハッシュ値の長さの一例としては、128、192、256ビットが挙げられる。なお、生成部16bがハッシュ値を生成する場合に用いられるハッシュ関数は、後述する復号・伸張装置19がハッシュ値を生成する場合に用いられるハッシュ関数と同一である。そして、生成部16bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部16bは、値Xのハッシュ値Xを算出する。
【0020】
そして、バッファのサイズが、所定のブロック長となった場合に、暗号化部16aは、所定のブロック長のデータ(ブロック1、第1のデータ部分)をバッファから取り出し、コンテンツの鍵情報Kcを暗号鍵として用いて、取り出したデータを暗号化する。暗号化部16aによる暗号化のアルゴリズムの一例としては、DES(Data Encryption Standard)、AES(Advanced Encryption Standard)などが挙げられる。また、「所定のブロック長」は、暗号化する際の単位である。「所定のブロック長」の長さとしては、例えば、128ビットが用いられる。ここで、暗号化部16aによる暗号化のアルゴリズムは、後述の暗号化処理に用いられる暗号化のアルゴリズム、および後述の復号・伸張装置19による復号化のアルゴリズムと対応するアルゴリズムであり、共通の鍵情報に基づいて暗号化及び復号化が行なわれる。続いて、暗号化部16aは、暗号化したデータを、コンテンツサーバ15へ送信する。これにより、コンテンツDB15aに暗号化されたデータが登録される。暗号化部16aは、このようにして暗号化されたデータをコンテンツサーバ15に送信する処理を、例えば1回だけ行う。なお、暗号化部16aは、暗号化したデータを、インターネット13を介して、利用者端末12へ送信することもできる。この場合、暗号化部16aは、このようにして暗号化されたデータを利用者端末12へ送信する処理を、例えば1回だけ行う。
【0021】
生成部16bは、コンテンツデータの一部分であるスライド窓の参照部のデータ、及びコンテンツの鍵情報に基づいて、所定のアルゴリズムで第2の鍵情報を生成する。
【0022】
具体例を挙げて説明する。生成部16bは、所定ブロック長のデータの圧縮処理を行なうごとに、以下の処理を行う。生成部16bは、スライド窓の参照部のハッシュ値Xを算出する。そして、生成部16bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部16bは、値Xのハッシュ値Xを算出する。生成部16bにより生成されたハッシュ値Xは、暗号化部16aで暗号化される際の暗号鍵となる。所定ブロック長のデータが圧縮されるごとに、生成部16bがハッシュ値Xを算出するので、暗号化部16aで暗号鍵として用いられるハッシュ値Xの値は、動的に変化する。
【0023】
暗号化部16aは、暗号化部16aにより先に暗号化された部分(第1のデータ部分)と異なるコンテンツデータの一部分である第2のデータ部分を第2の鍵情報に基づいて暗号化する。例えば、暗号化部16aは、データ圧縮アルゴリズムとして、生成部16bにより生成されたハッシュ値Xを暗号鍵として用いて、コンテンツデータを暗号化する。
【0024】
具体例を挙げて説明する。暗号化部16aは、LZ77のデータ圧縮アルゴリズムを用いて、スライド窓を、コンテンツデータ内をスライドさせるごとに、次のような処理を行う。暗号化部16aは、参照部のコンテンツデータの中に、符号化部の先頭から始まるコンテンツデータの記号と一致するデータがある場合には、符号化部のデータのうち一致した最長部分のデータについて、圧縮を行うためにポインタを生成する。そして、暗号化部16aは、生成したポインタをバッファに出力する。続いて、暗号化部16aは、一致した最長部分のデータの長さだけ、スライド窓をスライドさせる。
【0025】
また、暗号化部16aは、参照部のコンテンツデータの中に、符号化部の先頭から始まるコンテンツデータの記号と一致するデータがない場合に、データを圧縮せず、符号化部のデータを所定数分、バッファに出力する。
【0026】
そして、バッファのサイズが、所定のブロック長となった場合に、暗号化部16aは、バッファに出力された所定ブロック長のデータをバッファから取り出し、生成部16bにより、暗号化部16aが暗号化済みのブロックに基づいて生成されたハッシュ値Xを暗号鍵として用いて、取り出したデータを暗号化する。続いて、暗号化部16aは、暗号化したデータを、コンテンツサーバ15に送信する。これにより、コンテンツDB15aに暗号化されたデータが登録される。暗号化部16aは、このようにして暗号化されたデータをコンテンツサーバ15に送信する処理を繰り返し行う。なお、暗号化部16aは、暗号化したデータを、インターネット13を介して、利用者端末12へ送信することもできる。暗号化部16aは、このようにして暗号化されたデータを利用者端末12へ送信する処理を繰り返し行う。暗号化部16aでの暗号化に用いられる暗号鍵は、暗号化の対象となるコンテンツデータの部分に応じて、動的に変化するものである。そのため、単一の暗号鍵を用いてコンテンツデータを暗号化した場合と比較して、鍵情報を類推されてしまうことを抑制することができる。
【0027】
図2は、暗号・圧縮装置での処理を仮想的に示した図である。図2の例では、暗号・圧縮装置16は、スライド窓の参照部のデータ20と、コンテンツの鍵情報21とに基づいて、ブロック1〜3の各々のリテラルバイトおよびポインタを暗号化するための動的な暗号鍵である動的鍵22_1、22_2、22_3を生成する。ここで、スライド窓の参照部のデータ20は、動的に変化するため、各ブロックで生成される動的鍵も動的に変化する。ブロック2の暗号化に用いられる暗号化鍵22_2は、ブロック1の圧縮処理後にスライド窓に残っているデータ20とコンテンツの鍵情報21とに基づいて生成される。もしくは、暗号化鍵22_2は、ブロック1の圧縮処理後にスライド窓に残っているデータ20のみに基づいて生成される。ブロック1の暗号化に用いられる暗号化鍵22_1は、例えば、コンテンツの鍵情報21そのものなどである。
【0028】
利用者端末12は、再生装置17と、ライセンスDB18とを有する。ライセンスDB18には、各コンテンツを暗号化するための鍵の情報である鍵情報が登録される。なお、ライセンスDB18に登録される鍵情報は、上述したライセンスDB14aに登録された内容と同一である。利用者端末12の一例としては、PC(Personal Computer)や携帯電話などが挙げられる。
【0029】
再生装置17は、復号・伸張装置19と、DRM(Digital Rights Management)装置20とを有する。このうち、DRM装置20は、利用者端末12の利用者から、図示しないキーボードやマウスなどの受付部を介して、コンテンツを利用するための指示を受信した場合には、インターネット13を介して、サーバ11に、コンテンツを提供する指示を送信する。また、DRM装置20は、サーバ11から送信されたコンテンツを受信した場合には、受信したコンテンツに対応する鍵情報をライセンスDB18から取得し、取得した鍵情報を復号・伸張装置19へ送信する。また、DRM装置20は、復号・伸張装置19により伸張され、復号化されたコンテンツデータを再生する。
【0030】
復号・伸張装置19は、復号化部19aと、生成部19bと、を有する。なお、復号・伸張装置19は、復号化装置とも称される。
【0031】
復号化部19aは、サーバ11から送信された復号化対象のデータであるコンテンツデータの一部分である第1のデータ部分を第1の鍵情報(コンテンツの鍵情報)に基づいて復号化する。
【0032】
具体例を挙げて説明する。復号化部19aは、復号化された第1のデータ部分を、スライド窓を用いた伸張アルゴリズムを用いて伸張する。生成部19bは、スライド窓の参照部のデータのハッシュ値Xを算出する。生成部19bがハッシュ値を生成する場合に用いられるハッシュ関数の一例としては、上述した生成部16bがハッシュ値を生成する場合に用いられるSHA−2が挙げられる。そして、生成部19bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部19bは、値Xのハッシュ値Xを算出する。なお、ハッシュ値Xの値はスライド窓のスライドに伴い変化する。そして、復号化部19aは、ハッシュ値Xを復号化鍵として用いて、受信したコンテンツデータの次のブロック(ブロック2、第2のデータ部分)を復号化する。続いて、復号化部19aは、復号化したデータのうちポインタでない部分については、DRM装置20に送信する。また、復号化したデータのうちポインタの部分については、スライド窓の参照部のデータから、ポインタに含まれるデータの出現位置、およびデータの長さに基づいて、データを変換し、変換したデータをDRM装置20に送信する。なお、DRM装置20では、受信したデータが再生される。そして、復号化部19aは、DRM20に送信したデータの分だけスライド窓をスライドさせる。
【0033】
上記の通り、生成部19bは、第1のデータ部分および第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する。例えば、生成部19bは、LZ77を用いて所定のブロック長のデータについての伸張処理が行なわれるたびに、次のような処理を行う。生成部19bは、スライド窓の参照部のデータのハッシュ値Xを算出する。そして、生成部19bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部19bは、値Xのハッシュ値Xを算出する。なお、ハッシュ値Xの値はスライド窓のスライドに伴い変化する。
【0034】
復号化部19aは、第2のデータ部分を第2の鍵情報に基づいて復号化する。例えば、復号化部19aは、生成部19bにより算出されたハッシュ値Xを暗号鍵として用いて、受信したコンテンツデータの対応するブロックを復号化する。続いて、復号化部19aは、復号化したデータのうちポインタでない部分については、DRM装置20に送信する。また、復号化したデータのうちポインタの部分については、スライド窓の参照部のデータから、ポインタに含まれるデータの出現位置、およびデータの長さに基づいて、データを変換し、変換したデータをDRM装置20に送信する。そして、復号化部19cは、DRM20に送信したデータの分だけスライド窓をスライドさせる。
【0035】
上述したライセンスDB14a、コンテンツDB15a、ライセンスDB18は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置に登録される。なお、ライセンスDB14a、コンテンツDB15a、ライセンスDB18が登録される記憶装置は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
【0036】
暗号・圧縮装置16、復号・伸張装置19は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路を含む。なお、暗号・圧縮装置16、復号・伸張装置19は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路を含んでもよい。
【0037】
[処理の流れ]
次に、本実施例に係るシステム10の処理の流れを説明する。図3は、実施例1に係るシステムのシーケンス図である。
【0038】
図3に示すように、ライセンスサーバ14は、コンテンツを提供する指示が示すコンテンツに対応する鍵情報を生成する(ステップS101)。ライセンスサーバ14は、生成した鍵情報をライセンスDB14aに登録する(ステップS102)。暗号・圧縮装置16は、圧縮・暗号化処理を実行する(ステップS103)。なお、圧縮・暗号化処理については後述する。コンテンツサーバ15は、圧縮され、暗号化されたコンテンツデータをコンテンツDB15aに登録する(ステップS104)。
【0039】
DRM装置20は、サーバ11からコンテンツを取得する(ステップS105)。DRM装置20は、コンテンツに対応する鍵情報をライセンスDB18から取得し、取得した鍵情報を復号・伸張装置19へ送信する(ステップS106)。復号・伸張装置19は、復号化・伸張処理を実行する(ステップS107)。DRM装置20は、復号・伸張装置19により伸張され、復号化されたコンテンツデータを再生する(ステップS108)。
【0040】
次に、本実施例に係る暗号・圧縮装置16の処理の流れを説明する。図4は、実施例1に係る圧縮・暗号化処理の手順を示すフローチャートである。この圧縮・暗号化処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮・暗号化処理は、サーバ11が、コンテンツを提供する指示を受信した場合に実行されるようにしてもよい。
【0041】
図4に示すように、暗号化部16aは、スライド窓を初期化する(ステップS201)。暗号化部16aは、取得したコンテンツデータのうち、暗号化が未処理のデータがあるか否かを判定する(ステップS202)。暗号化が未処理のデータがない場合(ステップS202否定)には、処理を終了する。
【0042】
一方、暗号化が未処理のデータがある場合(ステップS202肯定)には、暗号化部16aは、参照部のコンテンツデータの中から、符号化部の先頭から始まるコンテンツデータの記号と一致するデータを検索し(ステップS203)、一致するデータがあるか否かを判定する(ステップS204)。一致するデータがある場合(ステップS204肯定)には、暗号化部16aは、符号化部のデータのうち一致した最長部分のデータについて、圧縮を行うためにポインタを生成する(ステップS205)。暗号化部16aは、生成したポインタをバッファに出力する。
【0043】
一方、一致するデータがない場合(ステップS204否定)には、暗号化部16aは、データを圧縮せず、符号化部のデータを所定数分、バッファに出力する(ステップS206)。
【0044】
暗号化部16aは、バッファのサイズが、所定のブロック長以上であるか否かを判定する(ステップS207)。バッファのサイズが、所定のブロック長以上でない場合(ステップS207否定)には、S204で一致したデータの長さだけスライド窓をスライドさせて(ステップS212)、ステップS202へ戻る。一方、バッファのサイズが、所定のブロック長以上である場合(ステップS207肯定)には、生成部16bは、スライド窓の参照部のデータのハッシュ値Xを算出する(ステップS208)。生成部16bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する(ステップS209)。生成部16bは、値Xのハッシュ値Xを算出する(ステップS210)。暗号化部16aは、バッファに出力されたデータをバッファから取り出し、ハッシュ値Xを暗号鍵として用いて、取り出したデータを暗号化する。そして、暗号化部16aは、暗号化したデータを、コンテンツサーバ15へ送信する(ステップS211)。そして、S204で一致したデータの長さだけスライド窓をスライドさせて(ステップS212)、ステップS202へ戻る。このようにして、利用者端末12へ送信されるコンテンツデータが生成される。
【0045】
次に、本実施例に係る復号・伸張装置19の処理の流れを説明する。図5は、実施例1に係る復号化・伸張処理の手順を示すフローチャートである。この復号化・伸張処理の実行タイミングとしては様々なタイミングが考えられる。例えば、復号化・伸張処理は、利用者端末12が、コンテンツデータを受信した場合に実行されるようにしてもよい。
【0046】
図5に示すように、復号化部19aは、スライド窓を初期化する(ステップS301)。復号化部19aは、受信したコンテンツデータのうち、未処理のデータがあるか否かを判定する(ステップS302)。未処理のデータがない場合(ステップS302否定)には、処理を終了する。
【0047】
一方、未処理のデータがある場合(ステップS302肯定)には、復号化部19aは、ハッシュ値Xを復号化鍵として用いて、受信したコンテンツデータの復号化が行われていないブロックであって、先頭に最も近いブロックを復号化する(ステップS303)。そして、復号化部19aは、復号化したデータのうちポインタでない部分については、DRM装置20に送信する。また、復号化したデータのうちポインタの部分については、スライド窓の参照部のデータから、ポインタに含まれるデータの出現位置、およびデータの長さに基づいて、データを変換し、変換したデータをDRM装置20に送信する(ステップS304)。生成部19bは、スライド窓の参照部のデータのハッシュ値Xを算出する(ステップS305)。生成部19bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する(ステップS306)。生成部19bは、値Xのハッシュ値Xを算出する(ステップS307)。そして、ステップS302へ戻る。
【0048】
[実施例1の効果]
上述してきたように、本実施例に係る暗号・圧縮装置16は、暗号化対象データの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化する。そして、本実施例に係る暗号・圧縮装置16は、第1のデータ部分及び第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する。続いて、本実施例に係る暗号・圧縮装置16は、暗号化対象データの第1のデータ部分と異なる一部分である第2のデータ部分を第2の鍵情報に基づいて暗号化する。このように、第1の鍵情報と第2の鍵情報は、暗号化の対象となるコンテンツデータの部分に応じて、動的に変化するものである。そのため、本実施例に係る暗号・圧縮装置16によれば、単一の暗号鍵を用いてコンテンツデータを暗号化した場合と比較して、鍵情報を類推されてしまうことを抑制することができる。
【0049】
また、本実施例に係る暗号・圧縮装置16は、スライド窓を用いて第2のデータ部分を圧縮しつつ、圧縮された第2のデータ部分を、第1のデータ部分の圧縮に用いたスライド窓のデータと、鍵情報とで暗号化する。したがって、本実施例に係る暗号・圧縮装置16によれば、圧縮と暗号化とを1パスで行うことができ、時間および資源量の観点から、効率的に、圧縮と暗号化とを行うことができる。同様の理由で、本実施例に係る復号・伸張装置19によれば、伸張と復号化とを1パスで行うことができ、時間および資源量の観点から、効率的に、伸張と復号化とを行うことができる。また、本実施例に係る復号・伸張装置19によれば、伸張と復号化とを1パスで行うことができることから、生データの展開を局所化することができ、情報漏洩の危険性を低下させることができる。また、1パスで処理を行なうため、暗号化処理時に、圧縮データを保持しておくメモリ領域を抑制できる。
【0050】
また、本実施例に係る暗号・圧縮装置16は、暗号化対象データの第2のデータ部分、及び第2の鍵情報に基づいて所定のアルゴリズムで新たな第3の鍵情報を生成する。そして、本実施例に係る暗号・圧縮装置16は、暗号化対象データの第3のデータ部分を、第3の鍵情報に基づいて暗号化する。したがって、本実施例に係る暗号・圧縮装置16によれば、暗号化対象データの位置(部分)に応じた鍵情報を変更しながら、暗号化対象データを暗号化することができる。
【0051】
また、本実施例に係る復号・伸張装置19は、第1のデータ部分を第1の鍵情報に基づいて復号化する。そして、本実施例に係る復号・伸張装置19は、第1のデータ部分および第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する。そして、本実施例に係る復号・伸張装置19は、第1のデータ部分を第2の鍵情報に基づいて復号化する。したがって、本実施例に係る復号・伸張装置19によれば、鍵情報を類推されてしまうことが抑制された暗号化対象データを復号化することができる。また、第1のデータ部分に対して適用する暗号化・復号化のアルゴリズムは、他のデータ部分に適用する暗号化・復号化のアルゴリズムと異なるアルゴリズムでもよい。復号化側では、第1のデータ部分についての復号化を行なえないと、それ以降のデータ部分についての復号化を行なうことができない。そのため、第1のデータ部分に比較的解読されにくく、演算コストがかかるアルゴリズムを用いれば、その他のデータ部分に対して比較的演算コストがかかりにくいアルゴリズムを用いたとしても、難読性が低下することを抑制できる。
【実施例2】
【0052】
さて、上記の実施例1では、LZ77を用いる場合を例示したが、開示の装置はこれに限定されない。そこで、実施例2では、LZ78を用いる場合について説明する。
【0053】
[システム50の構成]
図6は、実施例2に係るシステムの構成を示す図である。図6に示すように、システム50におけるサーバ51は、実施例1に係る暗号・圧縮装置16に代えて暗号・圧縮装置56を有する。暗号・圧縮装置56は、実施例1に係る暗号・圧縮装置16の暗号化部16a、生成部16bに代えて暗号化部56a、生成部56bを有する点が、暗号・圧縮装置16と異なる。また、システム50における利用者端末52は、実施例1に係る復号・伸張装置19に代えて復号・伸張装置59を有する。復号・伸張装置59は、実施例1に係る復号・伸張装置19の復号化部19a、生成部19bに代えて復号化部59a、生成部59bを有する点が、復号・伸張装置19と異なる。なお、以下では、上記の実施例1と同様の機能を果たす各部や各機器については図1と同様の符号を付し、その説明は省略することとする。
【0054】
暗号化部56aは、暗号化対象のデータであるコンテンツデータの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化する。例えば、暗号化部56aは、インターネット13を介して、利用者端末12から、コンテンツを提供する指示を受信した場合には、指示が示すコンテンツに対応するコンテンツデータをコンテンツDB15aから取得する。また、暗号化部56aは、取得したコンテンツデータに対応する鍵情報をライセンスDB14aから取得する。
【0055】
そして、暗号化部56aは、データ圧縮アルゴリズムとして、LZ78のデータ圧縮アルゴリズムを用いて、動的辞書を生成しつつ、コンテンツデータを圧縮する。例えば、暗号化部56aは、動的辞書に未登録のコンテンツデータの記号を登録しつつ、動的辞書を用いてコンテンツデータを圧縮し、圧縮したバッファデータを、暗号・圧縮装置56が有するバッファに登録する。
【0056】
また、生成部56bは、下記の処理を行う。すなわち、生成部56bは、動的辞書のデータのハッシュ値Xを算出する。生成部56bがハッシュ値を生成する場合に用いられるハッシュ関数の一例としては、SHA−2が挙げられる。また、生成部56bが生成するハッシュ値の長さの一例としては、128、192、256ビットが挙げられる。なお、生成部56bがハッシュ値を生成する場合に用いられるハッシュ関数は、後述する復号・伸張装置59がハッシュ値を生成する場合に用いられるハッシュ関数と同一である。そして、生成部56bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部56bは、値Xのハッシュ値Xを算出する。
【0057】
そして、バッファのサイズが、所定のブロック長となった場合に、暗号化部56aは、バッファに出力されたデータ(ブロック1、第1のデータ部分)をバッファから取り出し、ハッシュ値Xを暗号鍵として用いて、取り出したデータを暗号化する。暗号化部56aによる暗号化のアルゴリズムの一例としては、DES、AESなどが挙げられる。また、「所定のブロック長」は、暗号化する際の単位である。「所定のブロック長」の長さとしては、例えば、128ビットが用いられる。ここで、暗号化部56aによる暗号化のアルゴリズムは、後述の復号・伸張装置59による復号化のアルゴリズムと対応するアルゴリズムである。続いて、暗号化部56aは、暗号化したデータを、コンテンツサーバ15へ送信する。なお、暗号化部56aは、暗号化したデータを、インターネット13を介して、利用者端末52へ送信することもできる。
【0058】
生成部56bは、動的辞書、及びコンテンツの鍵情報に基づいて、所定のアルゴリズムで第2の鍵情報を生成する。なお、コンテンツデータの記号のうち、未登録の記号が動的辞書に登録されることで、動的辞書のデータは更新される。
【0059】
具体例を挙げて説明する。生成部56bは、動的辞書が更新されるごとに、以下の処理を行う。すなわち、生成部56bは、動的辞書のハッシュ値Xを算出する。そして、生成部56bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部56bは、値Xのハッシュ値Xを算出する。生成部56bにより生成されたハッシュ値Xは、暗号化部56aで暗号化される際の暗号鍵となる。また、所定ブロック長の圧縮データが生成されるごとに、生成部56bがハッシュ値Xを算出するので、暗号化部56aで暗号鍵として用いられるハッシュ値Xの値は、動的に変化する。
【0060】
暗号化部56aは、暗号化された第1のデータ部分と異なるコンテンツデータの一部分である第2のデータ部分を第2の鍵情報に基づいて暗号化する。例えば、暗号化部56aは、データ圧縮アルゴリズムとして、LZ78を用いて、生成部56bにより生成されたハッシュ値Xを暗号鍵として用いて、コンテンツデータを暗号化する。
【0061】
具体例を挙げて説明する。暗号化部56aは、データ圧縮アルゴリズムとして、LZ78のデータ圧縮アルゴリズムを用いて、動的辞書を生成しつつ、コンテンツデータを圧縮する。例えば、暗号化部56aは、動的辞書に未登録のコンテンツデータの記号を登録しつつ、動的辞書を用いてコンテンツデータを圧縮し、圧縮したバッファデータを、暗号・圧縮装置56が有するバッファに登録する。
【0062】
そして、バッファのサイズが、所定のブロック長となった場合に、暗号化部56aは、バッファに出力されたデータをバッファから取り出し、生成部56bにより生成されたハッシュ値Xを暗号鍵として用いて、取り出したデータを暗号化する。なお、暗号化部56aは、暗号化したデータを、インターネット13を介して、利用者端末52へ送信することもできる。この場合、暗号化部56aは、このようにして暗号化されたデータを利用者端末52へ送信する処理を繰り返し行う。暗号化部56aでの暗号化に用いられる暗号鍵は、暗号化の対象となるコンテンツデータの部分に応じて、動的に変化するものである。そのため、単一の暗号鍵を用いてコンテンツデータを暗号化した場合と比較して、鍵情報を類推されてしまうことを抑制することができる。
【0063】
復号化部59aは、サーバ11から送信された復号化対象のデータであるコンテンツデータの一部分である第1のデータ部分を第1の鍵情報(コンテンツデータの鍵情報)に基づいて復号化する。
【0064】
具体例を挙げて説明する。生成部59bは、動的辞書のハッシュ値Xを算出する。生成部59bがハッシュ値を生成する場合に用いられるハッシュ関数の一例としては、上述した生成部56bなどがハッシュ値を生成する場合に用いられるSHA−2が挙げられる。そして、生成部59bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部59bは、値Xのハッシュ値Xを算出する。なお、ハッシュ値Xの値は動的辞書の更新に伴い変化する。そして、復号化部59aは、ハッシュ値Xを復号化鍵として用いて、受信したコンテンツデータの先頭のブロックを復号化する。続いて、復号化部59aは、動的辞書を用いて、復号化したデータを伸張し、伸張したデータをDRM装置20に送信する。
【0065】
生成部59bは、第1のデータ部分および第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する。例えば、生成部59bは、LZ78を用いた伸張処理により動的辞書が更新されるたびに、次のような処理を行う。生成部59bは、動的辞書のハッシュ値Xを算出する。生成部59bがハッシュ値を生成する場合に用いられるハッシュ関数の一例としては、上述した暗号化部56aなどがハッシュ値を生成する場合に用いられるSHA−2が挙げられる。そして、生成部59bは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する。次に、生成部59bは、値Xのハッシュ値Xを算出する。なお、ハッシュ値Xの値は動的辞書の更新に伴い変化する。
【0066】
復号化部59aは、第2のデータ部分を第2の鍵情報に基づいて復号化する。例えば、復号化部59aは、生成部59bにより算出されたハッシュ値Xを暗号鍵として用いて、受信したコンテンツデータの対応するブロック2を復号化する。続いて、復号化部59aは、動的辞書を用いて、復号化したデータを伸張し、伸張したデータをDRM装置20に送信する。
【0067】
暗号・圧縮装置56、復号・伸張装置59は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路を含む。なお、暗号・圧縮装置56、復号・伸張装置59は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路を含んでもよい。
【0068】
[処理の流れ]
次に、本実施例に係る暗号・圧縮装置56の処理の流れを説明する。図7は、実施例2に係る圧縮・暗号化処理の手順を示すフローチャートである。この圧縮・暗号化処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮・暗号化処理は、サーバ51が、コンテンツを提供する指示を受信した場合に実行されるようにしてもよい。なお、本実施例に係るシステム50の処理の流れについては、実施例1と同様であるので説明を省略する。
【0069】
図7に示すように、暗号化部56aは、動的辞書を初期化する(ステップS401)。暗号化部56aは、取得したコンテンツデータのうち、未処理のデータがあるか否かを判定する(ステップS402)。未処理のデータがない場合(ステップS402否定)には、処理を終了する。一方、未処理のデータがある場合(ステップS402肯定)には、暗号化部56aは、動的辞書に未登録のコンテンツデータの記号を登録し、動的辞書を用いてコンテンツデータを圧縮し、圧縮したバッファデータを、暗号・圧縮装置56が有するバッファに登録する(ステップS403)。
【0070】
第1の暗号化部56aは、バッファのサイズが、所定のブロック長以上であるか否かを判定する(ステップS404)。バッファのサイズが、所定のブロック長以上でない場合(ステップS404否定)には、ステップS402へ戻る。一方、バッファのサイズが、所定のブロック長以上である場合(ステップS404肯定)には、暗号化部56aは、動的辞書のハッシュ値Xを算出する(ステップS405)。暗号化部56aは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する(ステップS406)。第1の暗号化部56aは、値Xのハッシュ値Xを算出する(ステップS407)。
【0071】
暗号化部56aは、バッファに出力されたデータをバッファから取り出し、本フローにおいて1つ前に生成したハッシュ値X(1つ前に生成したハッシュ値Xが存在しない場合にはコンテンツの鍵情報)を暗号鍵として用いて、取り出したデータを暗号化する。そして、暗号化部56aは、暗号化したデータを、コンテンツサーバ15へ送信する(ステップS408)。そして、ステップS402へ戻る。このようにして、利用者端末12へ送信されるコンテンツデータが生成される。
【0072】
次に、本実施例に係る復号・伸張装置59の処理の流れを説明する。図8は、実施例2に係る復号化・伸張処理の手順を示すフローチャートである。この復号化・伸張処理の実行タイミングとしては様々なタイミングが考えられる。例えば、復号化・伸張処理は、利用者端末52が、コンテンツデータを受信した場合に実行されるようにしてもよい。
【0073】
図8に示すように、復号化部59aは、動的辞書を初期化する(ステップS501)。復号化部59aは、受信したコンテンツデータのうち、未処理のデータがあるか否かを判定する(ステップS502)。未処理のデータがない場合(ステップS502否定)には、処理を終了する。一方、未処理のデータがある場合(ステップS502肯定)には、復号化部59aは、ハッシュ値X(生成されていない場合は、コンテンツデータの鍵情報)を復号化鍵として用いて、受信したコンテンツデータの復号化が行われていないブロックであって、先頭に最も近いブロックを復号化する(ステップS503)。そして、復号化部59aは、動的辞書を用いて、復号化したデータを伸張し、伸張したデータをDRM装置20に送信する(ステップS504)。
【0074】
復号化部59aは、動的辞書のハッシュ値Xを算出する(ステップS505)。復号化部59aは、ハッシュ値Xと、コンテンツの鍵情報Kcとを連結し、値X(=X+Kc)を算出する(ステップS506)。復号化部59aは、値Xのハッシュ値Xを算出する(ステップS507)。そして、ステップS502へ戻る。
【0075】
[実施例2の効果]
上述してきたように、本実施例に係る暗号・圧縮装置56は、暗号化対象データの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化する。そして、本実施例に係る暗号・圧縮装置56は、第1のデータ部分及び第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する。続いて、本実施例に係る暗号・圧縮装置56は、暗号化対象データの第1のデータ部分と異なる一部分である第2のデータ部分を第2の鍵情報に基づいて暗号化する。このように、第1の鍵情報と第2の鍵情報は、暗号化の対象となるコンテンツデータの部分に応じて、動的に変化するものである。そのため、本実施例に係る暗号・圧縮装置56によれば、単一の暗号鍵を用いてコンテンツデータを暗号化した場合と比較して、鍵情報を類推されてしまうことを抑制することができる。
【0076】
また、本実施例に係る暗号・圧縮装置56は、動的辞書を用いて第2のデータ部分を圧縮しつつ、圧縮された第2のデータ部分を動的辞書のデータと、暗号化対象データに応じて定まる鍵情報とで暗号化する。したがって、本実施例に係る暗号・圧縮装置56によれば、圧縮と暗号化とを1パスで行うことができ、時間および資源量の観点から、効率的に、圧縮と暗号化とを行うことができる。同様の理由で、本実施例に係る復号・伸張装置59によれば、伸張と復号化とを1パスで行うことができ、時間および資源量の観点から、効率的に、伸張と復号化とを行うことができる。また、本実施例に係る復号・伸張装置59によれば、伸張と復号化とを1パスで行うことができることから、生データの展開を局所化することができ、情報漏洩の危険性を低下させることができる。
【0077】
また、本実施例に係る暗号・圧縮装置56は、暗号化対象データの第2のデータ部分、及び第2の鍵情報に基づいて所定のアルゴリズムで第3の鍵情報を生成する。そして、本実施例に係る暗号・圧縮装置56は、暗号化対象データの第3のデータ部分を、第3の鍵情報に基づいて暗号化する。したがって、本実施例に係る暗号・圧縮装置56によれば、暗号化対象データの位置(部分)に応じた鍵情報で、暗号化対象データを暗号化することができる。
【0078】
また、本実施例に係る復号・伸張装置59は、第1のデータ部分を第1の鍵情報に基づいて復号化する。そして、本実施例に係る復号・伸張装置59は、第1のデータ部分および第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する。そして、本実施例に係る復号・伸張装置59は、第2のデータ部分を第2の鍵情報に基づいて復号化する。したがって、本実施例に係る復号・伸張装置59によれば、鍵情報を類推されてしまうことが抑制された暗号化対象データを復号化することができる。
【0079】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【0080】
例えば、実施例1、2において説明した処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【0081】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
【0082】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
【0083】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0084】
[暗号化プログラム、復号化プログラム]
また、上記の実施例1、2で説明した暗号・圧縮装置、復号・伸張装置の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図9、10を用いて、上記の実施例で説明した暗号・圧縮装置、復号・伸張装置と同様の機能を有する支援プログラムを実行するコンピュータの一例を説明する。図9は、暗号化プログラムを実行するコンピュータを示す図である。また、図10は、復号化プログラムを実行するコンピュータを示す図である。
【0085】
図9に示すように、コンピュータ300は、CPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340とを有する。これら310〜340の各部は、バスを介して接続される。CPU310は、暗号化プログラム320aを実行可能なプロセッサの一例である。
【0086】
ROM320には、上記の実施例で示す第1の暗号化部、第1の生成部、第2の暗号化部と同様の機能を発揮する暗号化プログラム320aが予め記憶される。なお、暗号化プログラム320aについては、適宜分離しても良い。
【0087】
そして、CPU310が、暗号化プログラム320aをROM320から読み出して実行する。
【0088】
そして、HDD330には、ライセンスDB、コンテンツDBが設けられる。これらライセンスDB、コンテンツDBのそれぞれは、ライセンスDB14a、コンテンツDB15aのそれぞれに対応する。
【0089】
そして、CPU310は、ライセンスDB、コンテンツDBを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納されたライセンスDB、コンテンツDBを用いて、暗号化プログラムを実行する。なお、RAM340に格納される各データは、常に全てのデータがRAM340に格納される必要はなく、処理に必要なデータのみがRAM340に格納されれば良い。
【0090】
図10に示すように、コンピュータ400は、CPU410、ROM420、HDD430、RAM440とを有する。これら410〜440の各部は、バスを介して接続される。CPU410は、復号化プログラム420aを実行可能なプロセッサの一例である。
【0091】
ROM420には、上記の実施例で示す第1の復号化部、第2の生成部、第2の復号化部と同様の機能を発揮する復号化プログラム420aが予め記憶される。なお、復号化プログラム420aについては、適宜分離しても良い。
【0092】
そして、CPU410が、復号化プログラム420aをROM420から読み出して実行する。
【0093】
そして、HDD430には、ライセンスDBが設けられる。このライセンスDBは、ライセンスDB18に対応する。
【0094】
そして、CPU410は、ライセンスDBを読み出してRAM440に格納する。さらに、CPU410は、RAM440に格納されたライセンスDBを用いて、復号化プログラムを実行する。
【0095】
なお、上記した暗号化プログラムおよび復号化プログラムについては、必ずしも最初からROMに記憶させておく必要はない。
【0096】
例えば、コンピュータに挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。
【0097】
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータに接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【0098】
10 システム
11 サーバ
12 利用者端末
16 暗号・圧縮装置
16a 暗号化部
16b 生成部
19 復号・伸張装置
19a 復号化部
19b 生成部

【特許請求の範囲】
【請求項1】
コンピュータに、
暗号化対象データの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化し、
前記第1のデータ部分及び前記第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成し、
前記暗号化対象データの前記第1のデータ部分と異なる一部分である第2のデータ部分を前記第2の鍵情報に基づいて暗号化する、
処理を実行させることを特徴とする暗号化プログラム。
【請求項2】
前記第2の鍵情報は、前記第1のデータ部分の圧縮処理に用いられたスライド窓に含まれるデータと、前記第1の鍵情報とに基づいて生成される、
ことを特徴とする請求項1に記載の暗号化プログラム。
【請求項3】
前記第2の鍵情報は、前記第1のデータ部分の圧縮処理に用いられた動的辞書に含まれるデータと、前記第1の鍵情報とに基づいて生成される、
ことを特徴とする請求項1に記載の暗号化プログラム。
【請求項4】
コンピュータに、さらに、
前記第2のデータ部分及び前記第1の鍵情報に基づいて所定のアルゴリズムで第3の鍵情報を生成し、
前記暗号化対象データの前記第1のデータ部分と前記第2のデータ部分とのいずれとも異なる一部分である第3のデータ部分を、前記第3の鍵情報に基づいて暗号化する
処理を実行させることを特徴とする請求項1〜3のいずれか1つに記載の暗号化プログラム。
【請求項5】
コンピュータに、
暗号化対象データの一部分であり、第1の鍵情報で暗号化された第1のデータ部分と、暗号化対象データのうち前記第1のデータ部分と異なる一部分であり、且つ、前記第1のデータ部分と前記第1の鍵情報に基づいて生成された第2の鍵情報で暗号化された、第2のデータ部分と、を含む暗号化対象データのうち、前記第1のデータ部分を前記第1の鍵情報に基づいて復号化し、
前記第1のデータ部分および前記第1の鍵情報に基づいて所定のアルゴリズムで前記第2の鍵情報を生成し、
前記第2のデータ部分を前記第2の鍵情報に基づいて復号化する、
処理を実行させることを特徴とする復号化プログラム。
【請求項6】
コンピュータが、
暗号化対象データの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化し、
前記第1のデータ部分及び前記第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成し、
前記暗号化対象データの前記第1のデータ部分と異なる一部分である第2のデータ部分を前記第2の鍵情報に基づいて暗号化する、
処理を実行させることを特徴とする暗号化方法。
【請求項7】
コンピュータが、
暗号化対象データの一部分であり、第1の鍵情報で暗号化された第1のデータ部分と、暗号化対象データのうち前記第1のデータ部分と異なる一部分であり、且つ、前記第1のデータ部分と前記第1の鍵情報に基づいて生成された第2の鍵情報で暗号化された、第2のデータ部分と、を含む暗号化対象データのうち、前記第1のデータ部分を前記第1の鍵情報に基づいて復号化し、
前記第1のデータ部分および前記第1の鍵情報に基づいて所定のアルゴリズムで前記第2の鍵情報を生成し、
前記第2のデータ部分を前記第2の鍵情報に基づいて復号化する、
処理を実行することを特徴とする復号化方法。
【請求項8】
暗号化対象データの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化する第1の暗号化部と、
前記第1のデータ部分及び前記第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成する第1の生成部と、
前記暗号化対象データの前記第1のデータ部分と異なる一部分である第2のデータ部分を前記第2の鍵情報に基づいて暗号化する第2の暗号化部と
を有する暗号化装置と、
暗号化された前記第1のデータ部分を前記第1の鍵情報に基づいて復号化する第1の復号化部と、
前記第1のデータ部分および前記第1の鍵情報に基づいて所定のアルゴリズムで前記第2の鍵情報を生成する第2の生成部と、
前記第2のデータ部分を前記第2の鍵情報に基づいて復号化する第2の復号化部と、
を有する復号化装置と、
を有することを特徴とするシステム。
【請求項9】
コンピュータが実行するコンテンツの生成方法であって、
コンテンツの一部分である第1のデータ部分を第1の鍵情報に基づいて暗号化し、
前記第1のデータ部分及び前記第1の鍵情報に基づいて所定のアルゴリズムで第2の鍵情報を生成し、
前記暗号化対象データの前記第1のデータ部分と異なる一部分である第2のデータ部分を前記第2の鍵情報に基づいて暗号化する、
ことを特徴とするコンテンツの生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−212138(P2012−212138A)
【公開日】平成24年11月1日(2012.11.1)
【国際特許分類】
【出願番号】特願2012−66203(P2012−66203)
【出願日】平成24年3月22日(2012.3.22)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】