(57)【要約】【課題】  デジタルデータの暗号化／復号化を強固に、かつ、その計算負荷を高くすることなく行うこと。【解決手段】  本発明は、暗号化対象であるデジタルデータ列を取得する取得部と、順列の関係を有するｎ個の要素からなる暗号鍵を生成する暗号鍵生成部と、前記デジタルデータ列を構成する所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、暗号化配列を算出する暗号化処理部と、前記算出された暗号化配列が示す暗号化されたデジタルデータ列を出力する出力制御部とを備える。ただし、前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値に設定する２項演算である。【選択図】  図２
2020187241.tif 000002
【特許請求の範囲】
【請求項１】
暗号化対象であるデジタルデータ列を暗号化するための暗号化装置を備えるシステムであって、
前記暗号化装置は、
前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得する取得部と、
順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成する暗号鍵生成部と、
前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出する暗号化処理部と、
前記算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行う出力制御部とを備え、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値に設定する２項演算である、
システム。
【請求項２】
前記暗号化処理部は、
前記暗号化対象であるデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、
前記複数の所定の領域のそれぞれに対応する暗号化対象配列の要素値に対して、前記暗鍵を用いて、前記順列写像を適用することにより、複数の暗号化配列のそれぞれを算出する演算部と、を備える、
請求項１に記載のシステム。
【請求項３】
前記暗号化処理部は、前記複数の所定の領域におけるいくつかに基づく拡大領域を新たな所定の領域として設定する拡大領域設定部をさらに備え、
前記演算部は、前記新たな所定の領域に対応する１つ前に算出された暗号化配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、新たな暗号化配列を算出する、
請求項２に記載のシステム。
【請求項４】
前記暗号化処理部は、Ｎ重暗号化に従って、前記拡大領域設定部による拡大領域の設定及び前記演算部による暗号化配列の算出を繰り返すように構成される、
請求項３に記載のシステム。
【請求項５】
前記暗号化装置は、
順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含むユーザ鍵を生成するユーザ鍵生成部と、
前記暗号鍵と前記ユーザ鍵の逆写像鍵とに基づいて、補助鍵を生成する補助鍵生成部と、
をさらに備える、請求項１乃至４のいずれか一項に記載のシステム。
【請求項６】
前記暗号化装置は、前記暗号化されたデジタルデータ列の復号化を可能にするために、前記ユーザ鍵に基づく第１配布鍵と前記補助鍵に基づく第２配布鍵とを外部に出力するように構成される、
請求項５に記載のシステム。
【請求項７】
前記第１配布鍵は、前記ユーザ鍵の逆像であり、前記第２配布鍵は、前記暗号鍵の逆写像である、請求項６に記載のシステム。
【請求項８】
請求項６に記載の前記暗号化装置により暗号化された前記デジタルデータ列を、前記第１配布鍵と前記第２配布鍵とに基づいて、復号化する復号化装置をさらに備えるシステム。
【請求項９】
前記復号化装置は、
前記第１配布鍵と前記第２配布とに基づいて、復号鍵を生成する復号鍵生成部と、
前記暗号化されたデジタルデータ列に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、前記デジタルデータ列を復号化する復号化処理部と、
をさらに備える請求項８に記載のシステム。
【請求項１０】
前記暗号化装置は、
前記取得された第１のデータファイルからメタデータを抽出するメタデータ抽出部と、
前記暗号化されたデジタルデータ列に前記抽出されたメタデータを付与して前記第２のデータファイルを生成するメタデータ付与部と、をさらに備える、
請求項１に記載のシステム。
【請求項１１】
順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化する復号化装置であって、
前記暗号鍵に対応する復号鍵を生成する復号鍵生成部と、
前記暗号化されたデジタルデータ列を構成する少なくとも１つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも１つの復号化配列を算出する復号化処理部と、
前記算出された少なくとも１つの復号化配列が示す復号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行う出力制御部とを備え、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記復号化対象配列のｉ番目の要素の値を、前記復号化配列のｉ番目の要素の値とする２項演算である、
復号化装置。
【請求項１２】
前記復号化処理部は、
前記暗号化されたデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、
前記複数の所定の領域のそれぞれに対応する復号化対象配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、複数の復号化配列のそれぞれを算出する演算部と、を備える、
請求項１１に記載の復号化装置。
【請求項１３】
前記領域分割部は、前記複数の所定の領域のそれぞれをさらに分割して新たな所定の領域を設定し、
前記演算部は、前記新たな所定の領域に対応する１つ前に算出された暗号化配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、新たな復号化配列を算出する、
請求項１２に記載の復号化装置。
【請求項１４】
前記復号化処理部は、Ｎ重暗号化が適用された前記暗号化されたデジタルデータ列に対応して、前記領域分割部による所定の領域の設定及び前記演算部による復号化配列の算出を繰り返すように構成される、
請求項１３に記載の復号化装置。
【請求項１５】
前記暗号鍵に基づく第１配布鍵を取得する第１配布鍵取得部と、
順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含むユーザ鍵に基づく第２配布鍵を取得する第２配布鍵取得部と、をさらに備え、
前記第１配布鍵は、前記ユーザ鍵の逆写像であり、
前記第２配布鍵は、前記暗号鍵と前記ユーザ鍵の逆写像とに基づいて生成され、
前記復号鍵生成部は、
前記第１配布鍵と前記第２配布鍵とに基づいて、前記復号鍵とを生成する、
請求項１１乃至１４のいずれか一項に記載の復号化装置。
【請求項１６】
コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であって、
前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得することと、
順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成することと、
前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出することと、
算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算である、
暗号化方法。
【請求項１７】
コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であって、
前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得することと、
順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成することと、
前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出することと、
算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算である、
暗号化方法。
【請求項１８】
コンピュータデバイスにおいて実行される、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法であって、
前記暗号鍵に対応する復号鍵を生成することと、
前記暗号化されたデジタルデータ列を構成する少なくとも１つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも１つの復号化配列を算出することと、
算出された少なくとも１つの復号化配列が示す復号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うことと、を含み、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記復号化対象配列のｉ番目の要素の値を、前記復号化配列のｉ番目の要素の値とする２項演算である、
復号化方法。
【請求項１９】
コンピューティングデバイスに、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法を実現させるコンピュータプログラムであって、
前記暗号化方法は、
前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得することと、
順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成することと、
前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出することと、
算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算である、
コンピュータプログラム。
【請求項２０】
コンピュータデバイスにおいて実行される、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法を実現させるコンピュータプログラムであって、
前記復号化方法は、
前記暗号鍵に対応する復号鍵を生成することと、
前記暗号化されたデジタルデータ列を構成する少なくとも１つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも１つの復号化配列を算出することと、
算出された少なくとも１つの復号化配列が示す復号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うことと、を含み、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記復号化対象配列のｉ番目の要素の値を、前記復号化配列のｉ番目の要素の値とする２項演算である、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータの暗号化及び復号化技術に関し、特に、デジタルデータの暗号化／復号化機能を有する装置、デジタルデータの暗号化／復号化方法、並びに、コンピュータにデジタルデータの暗号化／復号化機能を実現させるためのプログラムに関する。
【背景技術】
【０００２】
現在、インターネット上の様々なサイトには、リソースとしての膨大な数のデジタルデータが格納され、人々に利用されている。例えば、多くのＷｅｂサイトは、デジタル化されたドキュメントや、イラスト、写真、映像等のデジタルコンテンツ（デジタルデータ）を含むＷｅｂページを提供している。また、幾つかのＷｅｂサイトでは、特定のクライアントシステムを持つユーザに向けて、漫画や動画といったデジタルコンテンツを配信するサービス（いわゆるネット配信サービス）を展開している。
【０００３】
このようなデジタルコンテンツには、一般に、著作権が化体しており、著作権保護の観点から、第三者による不正利用を防止する必要がある。特に、デジタルコンテンツの配信サービスでは、デジタルコンテンツの無断複製による海賊版の流通が大きな問題となる。このため、例えば、Ｗｅｂサイトには、ユーザ登録を行った正規のユーザのみアクセス可能にし、さらに、ストリーミングでのみ利用するという方法や、デジタルコンテンツ自体を暗号化しておき、鍵（アクセスキー）を有する正規のユーザのみが復号化（解読）可能にするという方法が採られている。このような暗号化及び復号化技術として、従前より、様々な手法が提案されている。
【０００４】
例えば、下記の特許文献１は、グラフィカルオブジェクトを暗号化する方法を開示している。具体的には、特許文献１の暗号化装置は、グラフィカルオブジェクトを受信し、秘密鍵Ｋを用いて秘密ファンクションセットを生成し、該秘密ファンクションセットから暗号化ファンクションを選択し、暗号化されたグラフィカルオブジェクトを取得するため、該暗号化ファンクションを用いて該グラフィカルオブジェクトを暗号化し、該暗号化されたグラフィカルオブジェクトと該選択された暗号化ファンクションの表示とを出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４-８５６７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デジタルデータの暗号化／復号化については、情報化社会の進展により、その必要性が高く、様々な手法が提案されている。しかしながら、より強固な暗号化を図ろうとすると、暗号化の手順が複雑化したり、計算負荷が高くなってしまったりするという問題がある。
【０００７】
そこで、本発明は、計算負荷を低く抑えつつ、デジタルデータの強固かつ高速な暗号化／復号化処理を行うことができる暗号化／復号化技術を提供することを目的とする。
【０００８】
また、本発明は、ＧＰＵ上で演算を行うことに適した暗号化／復号化処理を提供することを目的とする。
【０００９】
また、本発明は、デジタルデータのファイルフォーマットが変更されることなく、該デジタルデータを暗号化することできる技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するための本発明は、以下に示す発明特定事項ないしは技術的特徴を含んで構成される。
【００１１】
すなわち、ある観点に従う本発明は、暗号化対象であるデジタルデータ列を暗号化するための暗号化装置を備えるシステムであり得る。前記暗号化装置は、前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得する取得部と、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成する暗号鍵生成部と、前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出する暗号化処理部と、前記算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行う出力制御部とを備え得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり得る。また、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値に設定する２項演算であり得る。
【００１２】
また、前記暗号化処理部は、前記暗号化対象であるデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、前記複数の所定の領域のそれぞれに対応する暗号化対象配列の要素値に対して、前記暗鍵を用いて、前記順列写像を適用することにより、複数の暗号化配列のそれぞれを算出する演算部と、を備え得る。
【００１３】
また、前記暗号化処理部は、前記複数の所定の領域におけるいくつかに基づく拡大領域を新たな所定の領域として設定する拡大領域設定部をさらに備え得る。また、前記演算部は、前記新たな所定の領域に対応する１つ前に算出された暗号化配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、新たな暗号化配列を算出し得る。
また、前記暗号化処理部は、Ｎ重暗号化に従って、前記拡大領域設定部による拡大領域の設定及び前記演算部による暗号化配列の算出を繰り返すように構成される、
【００１４】
また、前記暗号化装置は、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含むユーザ鍵を生成するユーザ鍵生成部と、前記暗号鍵と前記ユーザ鍵の逆写像鍵とに基づいて、補助鍵を生成する補助鍵生成部と、をさらに備え得る。
【００１５】
前記暗号化装置は、前記暗号化されたデジタルデータ列の復号化を可能にするために、前記ユーザ鍵に基づく第１配布鍵と前記補助鍵に基づく第２配布鍵とを外部に出力するように構成され得る。
【００１６】
前記第１配布鍵は、前記ユーザ鍵の逆像であり、前記第２配布鍵は、前記暗号鍵の逆写像であり得る。
【００１７】
また、別の観点に従う本発明は、前記暗号化装置により暗号化された前記デジタルデータ列を、前記第１配布鍵と前記第２配布鍵とに基づいて、復号化する復号化装置をさらに備えるシステムであり得る。
【００１８】
また、前記復号化装置は、前記第１配布鍵と前記第２配布とに基づいて、復号鍵を生成する復号鍵生成部と、前記暗号化されたデジタルデータ列に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、前記デジタルデータ列を復号化する復号化処理部と、をさらに備え得る。
【００１９】
また、前記暗号化装置は、前記取得された第１のデータファイルからメタデータを抽出するメタデータ抽出部と、前記暗号化されたデジタルデータ列に前記抽出されたメタデータを付与して前記第２のデータファイルを生成するメタデータ付与部と、をさらに備え得る。
【００２０】
さらに、別の観点に従う本発明は、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化する復号化装置であり得る。前記暗号鍵に対応する復号鍵を生成する復号鍵生成部と、前記暗号化されたデジタルデータ列を構成する少なくとも１つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも１つの復号化配列を算出する復号化処理部と、前記算出された少なくとも１つの復号化配列が示す復号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行う出力制御部とを備え得る。ここで、前記復号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり得る。また、前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記復号化対象配列のｉ番目の要素の値を、前記復号化配列のｉ番目の要素の値とする２項演算であり得る。
【００２１】
前記復号化処理部は、前記暗号化されたデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、前記複数の所定の領域のそれぞれに対応する復号化対象配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、複数の復号化配列のそれぞれを算出する演算部と、を備え得る。
【００２２】
前記領域分割部は、前記複数の所定の領域のそれぞれをさらに分割して新たな所定の領域を設定し得る。また、前記演算部は、前記新たな所定の領域に対応する１つ前に算出された暗号化配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、新たな復号化配列を算出し得る。
【００２３】
また、前記復号化処理部は、Ｎ重暗号化が適用された前記暗号化されたデジタルデータ列に対応して、前記領域分割部による所定の領域の設定及び前記演算部による復号化配列の算出を繰り返すように構成され得る。
【００２４】
また、前記復号化装置は、前記暗号鍵に基づく第１配布鍵を取得する第１配布鍵取得部と、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含むユーザ鍵に基づく第２配布鍵を取得する第２配布鍵取得部と、をさらに備え得る。ここで、前記第１配布鍵は、前記ユーザ鍵の逆写像であり、前記第２配布鍵は、前記暗号鍵と前記ユーザ鍵の逆写像とに基づいて生成され得る。そして、前記復号鍵生成部は、前記第１配布鍵と前記第２配布鍵とに基づいて、前記復号鍵とを生成し得る。
【００２５】
さらに、別の観点に従う本発明は、コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であり得る。前記方法は、前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得することと、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成することと、前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出することと、算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算であり得る。
【００２６】
さらに、別の観点に従う本発明は、コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であり得る。前記方法は、前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得することと、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成することと、前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出することと、算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算であり得る。
【００２７】
さらに、別の観点に従う本発明は、コンピュータデバイスにおいて実行される、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法であり得る。前期方法は、前記暗号鍵に対応する復号鍵を生成することと、前記暗号化されたデジタルデータ列を構成する少なくとも１つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも１つの復号化配列を算出することと、算出された少なくとも１つの復号化配列が示す復号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算であり得る。
【００２８】
さらに、別の観点に従う本発明は、コンピューティングデバイスに、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法を実現させるコンピュータプログラム又は当該プログラムを記録した記録媒体であり得る。前記暗号化方法は、前記暗号化対象であるデジタルデータ列を含む第１のデータファイルを取得することと、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を生成することと、前記暗号化対象であるデジタルデータ列を構成する少なくとも１つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも１つの暗号化配列を算出することと、算出された少なくとも１つの暗号化配列が示す暗号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算であり得る。
【００２９】
コンピュータデバイスにおいて実行される、順列の関係を有するｎ個の要素からなる少なくとも１つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法を実現させるコンピュータプログラム又は当該プログラムを記録した記録媒体であり得る。前記復号化方法は、前記暗号鍵に対応する復号鍵を生成することと、前記暗号化されたデジタルデータ列を構成する少なくとも１つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも１つの復号化配列を算出することと、算出された少なくとも１つの復号化配列が示す復号化されたデジタルデータ列を含む第２のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Ｘｉ（ｉ∈ｎ）が示す、前記暗号化対象配列のｉ番目の要素の値を、前記暗号化配列のｉ番目の要素の値とする２項演算であり得る。
【００３０】
なお、本明細書等において、「手段」（又は「部」）とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。また、１つの手段が有する機能が２つ以上の物理的手段により実現されても、２つ以上の手段の機能が１つの物理的手段により実現されてもよい。
【発明の効果】
【００３１】
本発明によれば、計算負荷を低く抑えつつ、デジタルデータの強固かつ高速な暗号化／復号化処理を行うことができる暗号化／復号化技術が提供される。
【００３２】
また、本発明によれば、ＧＰＵ上で演算を行うことに適した暗号化／復号化処理が提供される。
【００３３】
さらに本発明によれば、デジタルデータのファイルフォーマットが変更されることなく、該デジタルデータを暗号化することできる技術が提供される。
【００３４】
本発明の他の技術的特徴、目的、及び作用効果ないしは利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施形態に係るコンピュータシステムの一例を説明するためのブロックダイアグラムである。
【図２】本発明の一実施形態に係るコンテンツ管理装置の構成の一例を示すブロックダイアグラムである。
【図３】本発明の一実施形態に係るシステムで使用されるデジタルデータを所定の領域に分割した分割領域を説明するための概念図である。
【図４Ａ】本発明の一実施形態に係るコンテンツ管理装置による暗号化処理を説明するための概念図である。
【図４Ｂ】本発明の一実施形態に係るコンテンツ管理装置による暗号化処理を説明するための概念図である。
【図５】本発明の一実施形態に係るシステムで使用されるデジタルデータの分割領域に基づく拡大領域を説明するための概念図である。
【図６】本発明の一実施形態に係るコンテンツ管理装置による暗号化処理を説明するための概念図である。
【図７】本発明の一実施形態に係るコンテンツ管理装置における暗号化処理の一例を説明するフローチャートである。
【図８】本発明の一実施形態に係るシステムにおけるクライアントの構成の一例を示すブロックダイアグラムである。
【図９】本発明の一実施形態に係るシステムにおける暗号鍵及び復号鍵を説明するための概念図である。
【図１０】本発明の一実施形態に係るクライアントによる復号化処理を説明するための概念図である。
【図１１】本発明の一実施形態に係るクライアントにおける復号化処理の一例を説明するフローチャートである。
【図１２Ａ】所定のファイルフォーマットのもとの画像の例を示す図である。
【図１２Ｂ】図１２Ａに示す元画像に対して本発明に係る暗号化技術を適用することにより得られた暗号化画像の例を示す図である。
【図１２Ｃ】図１２Ｂに示す暗号化された本発明に係る復号化技術を適用することにより得られた復号化画像（もとの画像）の例を示す図である。
【図１３】本発明に係る暗号化／復号化技術における暗号鍵及びユーザ鍵の一例を示す図である。
【図１４】本発明の一実施形態に係るシステムにおけるコンピューティングデバイスの構成の一例を示す図である。
【発明を実施するための形態】
【００３６】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形（例えば各実施形態を組み合わせる等）して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【００３７】
［第１の実施形態］
本実施形態は、有限要素の多重配列から構成される、デジタルコンテンツとしてのデジタルデータ列を、「順列写像群」という概念を用いて、暗号化及び復号化する技術を開示する。以下では、まず、順列写像群について説明し、その後、順列写像群を用いた暗号化／復号化装置の例について説明する。
【００３８】
（群）
任意の集合Ｇと該集合Ｇ上の２項演算子μとの組が、一定の条件を満たす場合、該組（Ｇ，μ）を群という。つまり、μ：Ｇ×Ｇ→Ｇである（Ｇ，μ）が群であるとは、３つの条件、すなわち、(1)結合法則、（2）単位元の存在、及び(3)逆元の存在、を満たすことである。なお、集合Ｇは、２項演算子μに関して群であると称することもできる。
【００３９】
（結合法則）
任意の集合Ｇの元ｇ，ｈ，ｋに対して、μ（ｇ，μ（ｈ，ｋ））＝μ（μ（ｇ，ｈ），ｋ）を満たす：
（∀ｇ，ｈ，ｋ，∈Ｇ）［μ（ｇ，μ（ｈ，ｋ））＝μ（μ（ｇ，ｈ），ｋ）］    …式１
【００４０】
（単位元の存在）
任意の元ｇに対して、μ（ｇ，ｅ）＝μ（ｅ，ｇ）＝ｇを満たす元ｅ∈Ｇが存在する：
（∃ｅ∈Ｇ）（∀ｇ∈Ｇ）［μ（ｇ，ｅ）＝μ（ｅ，ｇ）＝ｇ］    …式２
【００４１】
（逆元の存在）
任意の元ｇ∈Ｇに対して、μ（ｇ，ｘ）＝μ（ｘ，ｇ）を満たす元ｘ∈Ｇが存在する：
（∀ｇ∈Ｇ）（∃ｘ∈Ｇ）［μ（ｇ，ｘ）＝μ（ｘ，ｇ）＝ｅ］    …式３
【００４２】
（ｎ−順列写像群）
ｎ∈Ｎとする。ここで、Ｎは、０以上ｎ以下の整数の集合である。該集合Ｎの要素ｘｉが互いに排他的に並んだ数列をｎ−順列と称する。今、ｎ−順列であるｇについて、ｇ＝［ｘ０，ｘ１，．．．，ｘｎ］｜ｘｉ≠ｘｊ，ｘｉ∈Ｎであるとし、該順列の集合をｇ∈Ｇとする。このとき、該順列集合の個数は、｜Ｇ｜＝ｎ！となる。例えば、ｎ＝３の場合の順列（３−順列）を例にとると、集合Ｇは、順列［０，１，２］，［０，２，１］，［１，０，２］，［１，２，０］，［２，０，１］，［２，１，０］のそれぞれを元に持つ集合であり、位数（集合の要素の数）は、６である。
【００４３】
写像とは、一般に、ある集合の元のそれぞれを他の元のそれぞれに対応させることをいう。本開示において、ｎ−順列を元とする集合をＧとし、その任意の元ｇ１，ｇ２に対して、ｇ２のｉ番目（ｉ∈ｎ）の要素が示す値（Ｘｉ）を取り出し、ｇ１のＸｉ番目の要素の値をｉ番目の要素の値に移動するという写像μを適用することで、元ｇ３となるものをｎ−順列写像群（Ｇ，μ）と称することとする。以下では、４−順列について、順列集合Ｇの元ｇ＝［１，２，０，３］，ｈ＝［３，０，１，２］，ｋ＝［２，０，３，１］を例に、群の３つの条件について考える。
【００４４】
上記式１から、μ（ｇ，μ（ｈ，ｋ））＝μ（ｇ，［１，３，２，０］）＝［２，３，０，１］となる一方、μ（μ（ｇ，ｈ），ｋ）＝μ（［３，１，２，０］，ｋ）＝［２，３，０，１］となる。したがって、（Ｇ，μ）は、結合法則を満たす。
【００４５】
上記式２から、ｅ＝［０，１，２，３］について、μ（ｇ，ｅ）＝［１，２，０，３］＝ｇであり、また、μ（ｅ，ｇ）＝［１，２，０，３］＝ｇである。元ｇに限らず、任意の元に対して成立することから、元ｅは、単位元である。したがって、（Ｇ，μ）には、単位元が存在する。
【００４６】
上記式３から、ｘ＝［２，０，１，３］は、μ（ｇ，ｘ）＝［０，１，２，３］＝ｅであり、また、μ（ｘ，ｇ）＝［０，１，２，３］＝ｅであるため、ｘは、ｇの逆元である。したがって、（Ｇ，μ）には、逆元が存在する。
【００４７】
ｎ−順列写像群は、一般に、非可換、すなわち、μ（ｇ，ｈ）≠μ（ｈ，ｇ）である。上記の例でいえば、μ（ｇ，ｈ）＝［３，１，２，０］であるところ、μ（ｈ，ｇ）＝「０，１，３，２］であり、非可換となっている。
【００４８】
（ｎ−順列写像を用いた暗号化／復号化の基本概念）
あるｉ∈Ｎ＝［０，ｎ］について、これらの順列写像を用いて暗号化及び復号化することを考える。上述のとおり、ｎ−順列写像とは、ｎ−順列ｆを用いた演算子ｆ（ｉ）を、ｎ−順列ｆのｉ番目の値を返す写像である（以下では、ｎ−順列写像を単に「順列写像」又は「写像」ということもある。）。例えば、暗号化しようとする値ｘについて、ｎ−順列写像ｆ（ｘ）を作用させることで、暗号化された値ｙが得られる。これをｙ＝ｆ（ｘ）と表す。また、ｆの逆元ｆ−１を用いた逆写像ｆ−１（ｙ）をｙに作用させることで、もとの値ｘに復号化することができる。つまり、ｘ＝ｆ−１（ｙ）である。
【００４９】
例えば、上述した順列集合Ｇの元ｇ＝［１，２，０，３］について、暗号化の場合、写像ｇ（２）は、元ｇの２番目の要素の値を返すことを意味することから、ｇ（２）＝０となり、したがって、「２」は「０」に暗号化されたことになる。一方、復号化の場合、元ｇの逆元、すなわち、ｇ−１＝［２，０，１，３］を用いる。つまり、逆写像ｇ−１（０）は、ｇ−１の０番目の要素の値を返すことを意味するから、ｇ−１（０）＝２となり、正しく復号化されたことになる。
【００５０】
上記のことは、数字単体のみならず、数列に拡張することができる。例えば、暗号化の対象となる数列をＸ＝｛ｘ１，ｘ２，…，ｘｍ｝，ｘ∈Ｎと表す。そして、写像ｆ（ｘ）を数列Ｘの全ての要素に適用する、Ｆ：Ｘ→Ｘである写像Ｆ（Ｘ）について考える。
【００５１】
すなわち、まず、Ｆ（Ｘ）＝｛ｆ（ｘ１），ｆ（ｘ２），…，ｆ（ｘｍ）｝を生成する。このような写像Ｆ（Ｘ）を用いることにより、もとの数列に対して暗号化することができる。この意味において、該写像は、暗号化写像ないしは暗号鍵ということができる。
【００５２】
一方、順列ｆの逆元ｆ−１を用いた逆写像ｆ−１（ｘ）を、数列Ｘの全ての要素に適用した逆写像Ｆ−１（Ｘ）について考える。このとき、逆写像Ｆ−１（Ｘ）は、Ｆ−１＝｛ｆ−１（ｘ１），ｆ−１（ｘ２），…，ｆ−１（ｘｍ）｝となる。
【００５３】
より具体的には、例えば、数列Ｘ＝｛３，３，２，０，１｝について、順列集合Ｇの写像Ｇ（Ｘ）を適用すると、Ｇ（Ｘ）＝｛ｇ（３），ｇ（３），ｇ（２），ｇ（０），ｇ（１）｝＝｛３，３，０，１，２｝＝Ｙとなる。この結果に対して、逆写像Ｇ−１（Ｙ）は、Ｇ−１（Ｙ）＝｛ｇ−１（３），ｇ−１（３），ｇ−１（０），ｇ−１（１），ｇ−１（２）｝＝｛３，３，２，０，１｝となり、これは、正しく復号化されたことを意味する。
【００５４】
（多次元配列の暗号化及び復号化）
上記の考え方を、さらに、多重配列Ｘ∈Ｎｎに拡張する。本開示では、理解の容易のため、所定のファイルフォーマットないしはコンテナフォーマット（以下、単に、「ファイルフォーマット」という。）からなる画像などのデジタルデータを扱うための２次元配列Ｘ∈Ｎ２による暗号化／復号化を説明するが、これに限られるものでなく、本開示に係る暗号化／復号化技術は、ｎ次元配列に適用することができる。
【００５５】
今、配列Ｘのｉ行ｊ列の要素をｘｉｊとする。このとき、上述した数列の暗号化と同様に、
ｙｉｊ＝ｆ（ｘｉｊ）    …式４
とすることで、配列Ｘを暗号化することができる。
【００５６】
例えば、配列Ｘを、
【数１】
2020187241.tif 000003
とする。これに、Ｆ＝［２，０，１］を配列Ｘに作用させた写像Ｆ（Ｘ）は、
【数２】
2020187241.tif 000004
となる。
【００５７】
反対に、Ｆ−１＝［１，２，０］を配列Ｙに作用させた逆写像Ｆ−１（Ｙ）は、
【数３】
2020187241.tif 000005
となる。
【００５８】
（多次元写像）
上述したように、ｎ−順列写像を用いることにより、ある配列（例えばラスタライズされた画像を示すデジタルデータ列）Ｘを暗号化して配列Ｙを求めることができ、また、その逆写像を用いることにより、暗号化された配列Ｙを復号化して、もとの配列Ｘを求めることができる。本開示では、暗号化をより複雑化してセキュリティレベルを上げるために、異なる配列に対して異なる写像となるような多次元写像Ｆ（Ｘ）を考える。ここで、
【数４】
2020187241.tif 000006
であり、その要素をｆｉｊ（ｘｉｊ）と定義する。ｆｉｊは、一次元の順列写像であり、したがって、Ｆ（Ｘ）は、３階のテンソルとなる。すなわち、
ｙｉｊ＝ｆｉｊ（ｘｉｊ）      …式８
となる。このようにすることで、暗号化及び復号化がより複雑化される。
【００５９】
例えば、ｗ＝ｈ＝２，ｎ＝３の場合の例について考える。
【数５】
2020187241.tif 000007
に対して、
【数６】
2020187241.tif 000008
を配列Ｘに適用した写像は、
【数７】
2020187241.tif 000009
となる。
【００６０】
反対に、
【数８】
2020187241.tif 000010
を配列Ｙに適用した逆写像は、
【数９】
2020187241.tif 000011
となる。
【００６１】
なお、より一般化した多重配列Ｘ∈Ｎｎに対して写像を適用する場合は、Ｆ∈Ｎｎ＋１，Ｆ：Ｘ→Ｘとなる。
【００６２】
（写像の縮小化）
２次元配列である画像（幅ｗ×高さｈ）に対する写像のテンソル要素のサイズは、ｗ×ｈ×ｎとなる。例えば、１０２４×１０２４ピクセル、８ビット階調の画像を暗号化する場合、非圧縮データのサイズは２５６ＭＢに達し、これを扱うために非常に大きなサイズの配列が必要になる。そこで、配列サイズを小さくするために、縮小化した写像を導入する。本開示では、縮小化した写像を「カーネル」と称し（ＯＳのカーネルとは区別される。）、特に、暗号化写像におけるカーネルを「暗号化写像カーネルＫ」と称するとともに、復号化写像におけるカーネルを「復号化写像カーネルＫ−１」と称するものとする。
【００６３】
すなわち、カーネルの幅をｋｗ、高さをｋｈとすると、このときのテンソル要素のサイズは、ｋｗ×ｋｈ×ｎとなる。例えば、ｋｗ＝ｋｈ＝６４であり、ｎ＝２５６の場合、配列サイズは、６４×６４×２５６＝約１ＭＢとなる。
【００６４】
したがって、暗号化の対象となる画像を所定のサイズの領域ないしはセグメントに分割し、該分割した領域のそれぞれに対応するサイズのカーネルを適用することにより、配列サイズを小さくすることができ、メモリの消費を少なくすることができる。
【００６５】
（システムの概略構成）
次に、上述したｎ−順列写像を用いた暗号化及び復号化を実現するためのシステムについて、説明する。
図１は、本発明の一実施形態に係るコンピュータシステムの一例を説明するためのブロックダイアグラムである。同図に示すように、本開示のコンピュータシステム１は、例えば、通信ネットワーク１０を介して相互に通信可能に接続される、コンテンツ管理装置２０と、クライアント３０とを含み構成され得る。
【００６６】
通信ネットワーク１０は、例えば、ＩＰベースのコンピュータネットワークを含み構成される。本開示では、コンピュータネットワークは、ＩＰネットワークによって構築されたインターネット（"the Internet"）を含む広い概念で用いられているが、ＩＰネットワークに限らず、ノード間通信を可能とするあらゆるプロトコルのネットワークが適用可能である。したがって、通信ネットワーク１０は、図示されていない無線基地局（例えばＷｉ−Ｆｉ（登録商標））によって構築される無線ネットワークを含み得る。また、通信ネットワーク１０は、移動通信システム規格に準拠した移動通信ネットワークを含み得る。
【００６７】
コンテンツ管理装置２０は、デジタルコンテンツとしてのデータファイルを適正に管理するためのサーバシステムであり、例えば、データベース２２とサーバ２４とを含み構成され得る。コンテンツ管理装置２０は、例えば、Ｗｅｂサイトを構成するＷｅｂサーバやクラウドサービスを提供するクラウドサーバであり得る。サーバ２４とデータベース２２とは、個々のコンピューティングデバイス上にそれぞれ構築されても良いし、物理的に１つの又は論理的に１つのコンピューティングデバイス上にそれぞれ構築されても良い。このようなコンピューティングデバイスのハードウェア構成は、図１４に例示されるが、既知であるため、その詳細な説明は省略する。なお、図中、プロセッサモジュールは、ＣＰＵ、コアプロセッサ、コプロセッサ、及び／又はＧＰＵ等の各種のプロセッサを含み得る。コンテンツ管理装置２０は、例えば、通信ネットワーク１０を介して、ＳＳＬ等のセキュア通信技術を利用することによって、クライアント３０及びその他の外部装置とのセキュアな通信セッションを構築し得る。
【００６８】
本開示において、コンテンツ管理装置２０は、上述した暗号化及び復号化処理を実現する暗号化及び／又は復号化装置（以下「暗号化／復号化装置」といい、単に「暗号化装置」及び「復号化装置」ということもある。）として機能し得る。言い換えれば、コンテンツ管理装置２０のプロセッサ（プロセッサモジュール）は、暗号化及び／又は復号化プログラム（以下「暗号化／復号化プログラム」といい、単に「暗号化プログラム」及び「復号化プログラム」ということもある。）を実行することにより、コンテンツ管理装置２０を暗号化／復号化装置として機能させる。
【００６９】
本開示では、コンテンツ管理装置２０が、ラスタライズされた画像及び動画に関するデジタルデータを暗号化し、暗号化されたデジタルデータを復号化する例を説明する。とりわけ、コンテンツ管理装置２０は、ＧＰＵの制御の下で、そのピクセルシェーダやコンピュートシェーダにより、暗号化及び復号化処理を実行し得るので、該処理が高速化される。
【００７０】
データベース２２は、例えば、ドキュメントや、漫画、イラスト、写真、動画ないしは映像等の各種のデジタルコンテンツ（デジタルデータ）を所定のファイルフォーマットのデータファイルとして格納し得る。本開示では、デジタルコンテンツのファイルフォーマットは特に限定されるものでなく、既知のあらゆるファイルフォーマットを用いることができる。デジタルコンテンツのデータファイルは、本開示に係る暗号化技術により暗号化された状態でデータベース２２に格納されても良い。また、データベース２２は、例えば、デジタルコンテンツを利用するユーザに関するユーザ情報（ユーザアカウント及びパスワード）を管理し得る。さらに、データベース２２は、例えば、ユーザごとに、各デジタルコンテンツを利用するための所定の暗号鍵及び／又は復号のための鍵（配布鍵）を管理し得る。
【００７１】
サーバ２４は、正当なユーザからのリクエストに対して、データベース２２に格納されたデジタルコンテンツ及び／又は所定の配布鍵を提供し得る。正当なユーザとは、典型的には、コンテンツ管理装置２０の運営主体から、所定のデジタルコンテンツを使用する権利を与えられたユーザであり、例えば、正規のユーザ登録手続を経たり、さらには、相当の対価を支払ったりしたユーザであり得る。
【００７２】
クライアント３０は、典型的には、ユーザによって使用されるコンピューティングデバイスである。クライアント３０は、例えば、デスクトップコンピュータやノートブックコンピュータといったパーソナルコンピュータ、タブレット型コンピュータ、フィーチャフォン、スマートフォン、ＰＤＡ、ハンドヘルド型コンピュータ、及びその他のインテリジェントデバイスであり得る。本開示では、クライアント３０は、パーソナルコンピュータであるものとする。
【００７３】
すなわち、クライアント３０は、各種のプロセッサ（例えば、ＣＰＵ、コアプロセッサ、コプロセッサ、及び／又はＧＰＵ等）やチップセット及びメモリ、通信モジュール、ユーザインタフェース（例えばディスプレイないしはタッチパネル、スピーカー及びバイブレータ）等のハードウェア資源及びオペレーティングシステム（例えばカーネル、各種のデバイスドライバ、標準ライブラリ等を含み構成され得る。以下「ＯＳ」という。）のソフトウェア資源から構成される。クライアント３０は、プロセッサの制御の下、ＯＳ上で各種のアプリケーションプログラムを実行し、所望の機能を実現する。本開示では、クライアント３０は、アプリケーションプログラムの一つとして、暗号化されたデジタルデータを復号化するためのアプリケーションプログラム（以下「復号化プログラム」という。）を実装する。代替的に又は追加的に、クライアント３０は、例えば、Ｗｅｂブラウザプログラムを実装し得る。復号化プログラムは、Ｗｅｂブラウザプログラムのプラグインプログラムとして実装されても良い。とりわけ、クライアント３０は、ＧＰＵの制御の下で、そのピクセルシェーダにより、復号化処理を実行し得るので、該処理が高速化される。
【００７４】
なお、本開示においては、デジタルコンテンツ配信の一般的な利用態様を想定して、コンテンツ管理装置２０が、デジタルコンテンツの暗号化及び復号化を行い、ユーザのクライアント３０が復号化のみを行うシステムとして説明されるが、これに限られるものではない。例えば、ユーザのクライアント３０に、暗号化／復号化プログラムが実装され、クライアント３０もまた、暗号化を行うように構成されても良い。
【００７５】
（暗号化装置の説明）
図２は、本発明の一実施形態に係るシステムにおけるコンテンツ管理装置の構成の一例を示すブロックダイアグラムである。同図では、暗号化装置として機能するコンテンツ管理装置２０の各種の構成要素（コンポーネント）のうち、本開示に関連する構成要素が示されているが、当業者にとって自明である限り、図示されていない他の構成要素も含まれ得る。すなわち、同図に示すように、コンテンツ管理装置２０は、デジタルコンテンツ取得部２１０と、メタデータ抽出部２２０と、鍵生成部２３０と、暗号化処理部２４０と、メタデータ付与部２５０と、出力制御部２６０とを含み構成され得る。当業者にとって自明なように、かかるコンポーネントは、ハードウェアコンポーネントそのもの、或いは、例えば、サーバ２４のプロセッサが、ＯＳ上で暗号化プログラムを実行することにより、各種のハードウェア資源と協働して、実現され得る。
【００７６】
デジタルコンテンツ取得部２１０は、暗号化の対象となるデジタルコンテンツを、例えばデータベース２２から取得する。或いは、デジタルコンテンツ取得部２１０は、クライアント３０からアップロードされたデジタルコンテンツを取得し得る。一例として、デジタルコンテンツは、ラスタライズされた画像（例えば３２０×２８０ピクセル、８ビット階調の画像）のデータファイルであるが、これに限られるものではなく、ある情報に関するデジタルデータ列であれば良い。例えば、デジタルコンテンツは、動画像のデータファイルや音楽データファイルであり得る。また、デジタルコンテンツは、ドキュメントデータであり得る。また、医療用画像装置等で用いられるＤｉＣＯＭフォーマットのデータファイルであり得る。他の例として、デジタルコンテンツは、ストリーミングデータであり得る。以下では、暗号化の対象となるデジタルコンテンツは、３２０×２８０ピクセル、８ビット階調のラスタライズされた画像データであるものとする。デジタルコンテンツ取得部２１０は、取得したデジタルコンテンツをメタデータ抽出部２２０に出力する。なお、本開示において、「データを出力する」といった表現は、システムないしはプログラム上、字句どおり、データを出力先に出力するといった意味の他、例えば、データを所定の変数に直接代入したり、ポインタ渡しをしたりするといった意味を含み、限定的に解釈されるべきではない。
【００７７】
メタデータ抽出部２２０は、取得したデジタルコンテンツを検査し、デジタルコンテンツが所定のメタデータを含む場合には、デジタルコンテンツからメタデータを抽出・分離する。メタデータ抽出部２２０は、抽出したメタデータをメタデータ付与部２５０に出力する一方、デジタルコンテンツ本体（以下、特に区別する必要がない限り、単に「デジタルコンテンツ」と称する。）を暗号化処理部２４０に出力する。一例として、メタデータ抽出部２２０は、ＪＰＥＧファイルフォーマットのデジタルコンテンツの場合、Ｅｘｉｆ形式で記述されたデータをメタデータとして抽出・分離する。他の例として、メタデータ抽出部２２０は、デジタルコンテンツに対して所定のファイルフォーマットを認識できない場合には、デジタルコンテンツ全体を暗号化処理部２４０に出力し、メタデータ付与部２５０にはＮｕｌｌデータを出力する。
【００７８】
鍵生成部２３０は、本開示に係る暗号化／復号化処理を実現するために必要な各種の鍵を生成する。概略的には、鍵生成部２３０は、所定の鍵生成アルゴリズム（例えばシードに基づく乱数関数）に基づいて、暗号鍵Ｆ及びユーザ鍵Ｕをそれぞれ生成する。本開示では、暗号鍵Ｆは、暗号化写像カーネルＫとして形成される。ユーザ鍵Ｕは、暗号化対象となるデジタルコンテンツを利用しようとする個々のユーザに対して割り当てられる鍵である。また、鍵生成部２３０は、暗号鍵Ｆとユーザ鍵Ｕとに基づいて、補助鍵Ｖを生成する。つまり、補助鍵Ｖは、ユーザ鍵Ｕに関連付けられた鍵である。また、ユーザ鍵Ｕ及び補助鍵Ｖは、ユーザに配布するための鍵である。一例として、鍵生成部２３０は、ユーザ鍵Ｕに基づいて、第１配布鍵Ｄ１を生成するとともに、補助鍵Ｖに基づいて、第２配布鍵Ｄ２を生成する。鍵生成部２３０の詳細については、後述する。
【００７９】
暗号化処理部２４０は、鍵生成部２３０により生成された暗号化写像カーネルＫに基づいて、デジタルコンテンツを暗号化する。概略的には、暗号化処理部２４０は、まず、デジタルコンテンツを所定のサイズの領域ないしはセグメントに分割し、その後、分割した領域（以下「分割領域」という。）を示す配列に暗号化写像カーネルＫを適用することにより、暗号化配列を算出する。また、多重暗号化が適用される場合、暗号化処理部２４０は、隣接する複数の分割領域に基づいて拡大領域を設定し、拡大領域を示す配列に暗号化写像カーネルＫを適用して、暗号化配列を算出することを繰り返す。本開示では、拡大領域は、隣接する複数の分割領域に基づいて設定されるものとするが、これに限られず、例えば、所定の幾何学的パターン（例えば市松模様パターン）に基づいて拡大領域が設定されても良い。暗号化処理部２４０は、算出した暗号化配列をメタデータ付与部２５０に出力する。暗号化処理部２４０の詳細については、後述する。
【００８０】
メタデータ付与部２５０は、算出された暗号化配列に、メタデータ抽出部２２０により抽出されたメタデータを付与することにより、もとのファイルフォーマットを復元する。メタデータ付与部２５０は、復元したファイルフォーマットの暗号化配列のデータセットを出力制御部２６０に出力する。メタデータ抽出部２２０からＮｕｌｌデータが与えられる場合、メタデータ付与部２５０は、暗号化処理部２４０から受け取った暗号化配列のデータセットをそのまま出力制御部２６０に出力する。
【００８１】
出力制御部２６０は、受け取った各種のデータセットを任意の対応する出力先に出力する。例えば、出力制御部２６０は、算出された暗号化配列のデータセットを受け取ると、暗号化されたデジタルコンテンツのデータファイルとして、データベース２２に格納されるように制御を行う。また、例えば、出力制御部２６０は、ユーザ鍵及び補助鍵を、それぞれ、ユーザ及びデジタルコンテンツに関連付けて、データベース２２に格納されるように制御を行う。さらに、例えば、出力制御部２６０は、第１配布鍵及び第２配布鍵をクライアント３０に送信するように制御を行う。
【００８２】
ここで、鍵生成部２３０の詳細について説明する。同図に示すように、鍵生成部２３０は、例えば、暗号鍵生成部２３１０と、ユーザ鍵生成部２３２０と、補助鍵生成部２３３０とを含み構成され得る。さらに、鍵生成部２３０は、第１配布鍵生成部２３４０と、第２配布鍵生成部２３５０とを含み構成され得る。
【００８３】
暗号鍵生成部２３１０は、上述したように、デジタルコンテンツを暗号化するための暗号鍵Ｆを生成する。暗号鍵Ｆは、複数の単位鍵の集合体であり、各暗号鍵Ｆは、例えば、０〜２５５までの数字のそれぞれを排他的に並べた数列（すなわち、順列ｆ＝［ｆ０，ｆ１，…，ｆ２５５］）である。つまり、要素の値ｆ０，ｆ１，…，ｆ２５５は、順列の関係にあるといえる。暗号鍵生成部２３１０は、例えば、所定のシードに基づいた乱数関数を用いて、このような数列を生成する。暗号鍵Ｆに係る順列の要素数は、ピクセルの８ビット階調値に対応している。また、暗号鍵Ｆの数は、後述するように、デジタルコンテンツの分割領域内の要素（すなわち、ピクセル）の数に対応している。例えば、デジタルコンテンツが６４×６４ピクセルの領域に分割される場合、暗号鍵Ｆは、６４×６４個である。このような暗号鍵Ｆは、配列サイズの縮減のために用いられる、暗号化写像カーネルＫである。暗号化写像カーネルＫは、複数の順列が配置された３Ｄテクスチャと捉えることもできる。本開示では、暗号化写像カーネルＫは、暗号化対象となるデジタルコンテンツのデータファイルに対して例えば１つだけ生成されるが、これに限られず、画像を構成する１つ又は複数の分割領域に対して、１つの暗号化写像カーネルＫが割り当てられても良い。暗号鍵生成部２３１０は、生成した暗号鍵Ｆ（すなわち、暗号化写像カーネルＫ）を暗号化処理部２４０及び補助鍵生成部２３３０にそれぞれ出力する。
【００８４】
ユーザ鍵生成部２３２０は、デジタルコンテンツを利用しようとする個々のユーザに対して割り当てられるユーザ鍵Ｕを生成する。ユーザ鍵生成部２３２０は、例えば、データベース２２に格納されているユーザ情報に従って、ユーザごとのユーザ鍵Ｕを生成し得る。ユーザ鍵Ｕもまた、複数の単位鍵の集合体であり、各単位鍵は、例えば、０〜２５５までの数字のそれぞれを排他的に並べた数列（すなわち、順列ｕ＝［ｕ０，ｕ１，…，ｕ２５５］）である。ユーザ鍵生成部２３２０は、例えば、所定のシードに基づいた乱数関数を用いて、このような数列を生成する。順列の要素数は、ピクセルの８ビット階調値に対応している。また、ユーザ鍵Ｕを構成する単位鍵の数は、分割領域内の要素の数に対応している。ユーザ鍵Ｕは、暗号鍵Ｆに対応する鍵であるが、独立に（無関係）に生成される鍵である。ユーザ鍵生成部２３２０は、生成したユーザ鍵Ｕを補助鍵生成部２３３０と第１配布鍵生成部２３４０とにそれぞれ出力する。本開示では、ユーザごとに異なるユーザ鍵Ｕが生成されるものとして説明されるが、これに限られず、ユーザ鍵Ｕは、例えば、複数のユーザからなるユーザグループごとに割り当てられるものであっても良い。
【００８５】
第１配布鍵生成部２３４０は、生成されたユーザ鍵Ｕに基づいて、第１配布鍵Ｄ１を生成する。具体的には、第１配布鍵生成部２３４０は、生成されたユーザ鍵Ｕの逆写像鍵Ｕ−１を算出し、これを第１配布鍵Ｄ１として設定する。第１配布鍵生成部２３４０は、生成した第１配布鍵Ｄ１を補助鍵生成部２３３０及び出力制御部２６０に出力する。なお、本例では、第１配布鍵生成部２３４０は、コンテンツ管理装置２０に設けられる態様が示されているが、第１配布鍵生成部２３４０は、クライアント３０に設けられても良い。この場合、ユーザ鍵生成部２３２０は、第１配布鍵生成部２３４０に代わって、生成したユーザ鍵Ｕの逆写像鍵Ｕ−１を算出し得る。
【００８６】
補助鍵生成部２３３０は、暗号鍵Ｆとユーザ鍵Ｕ（の逆写像Ｕ−１）とに基づいて、補助鍵Ｖを生成する。例えば、暗号鍵生成部２３１０は、暗号鍵Ｆと逆写像鍵Ｕ−１との２項演算を行うことにより、補助鍵Ｖを生成する。より具体的には、暗号鍵生成部２３１０は、逆写像Ｕ−１に対して、暗号鍵Ｆを用いて、順列写像を適用して、補助鍵Ｆ（Ｖ＝Ｕ−１・Ｆ）を生成する。したがって、補助鍵Ｖもまた、０〜２５５までの数字のそれぞれを排他的に並べた数列（すなわち、順列ｖ＝［ｖ０，ｖ１，…，ｖ２５５］）の集合体である。
【００８７】
第２配布鍵生成部２３０は、生成された補助鍵Ｖに基づいて、第２配布鍵Ｄ２を生成する。具体的には、第２配布鍵生成部２３０は、生成された補助鍵Ｖの逆写像鍵Ｖ−１を算出し、これを第２配布鍵Ｄ２として設定する。第２配布鍵生成部２３０は、生成した第２配布鍵Ｄ２を出力制御部２６０に出力する。なお、本例では、第２配布鍵生成部２３０は、コンテンツ管理装置２０に設けられる態様が示されているが、第２配布鍵生成部２３０は、クライアント３０に設けられても良い。
【００８８】
次に、暗号化処理部２４０の詳細について説明する。同図に示すように、暗号化処理部２４０は、例えば、領域分割部２４１０と、演算部２４２０と、拡大領域設定部２４３０とを含み構成され得る。
【００８９】
領域分割部２４１０は、取得したデジタルコンテンツを、図３に示すような、所定サイズの領域、例えば、幅ｗ×高さｈの領域に分割する。すなわち、領域分割部２４１０は、例えば、デジタルコンテンツが３２０×２８０ピクセルの画像であれば、これを６４×６４ピクセルの領域に分割する。これは、暗号化の対象となるデータのサイズを小さくすることにより、暗号化写像カーネルＫの配列のサイズを小さくするためである。例えば、３２０×２８０ピクセル、８ビット階調値の（非圧縮）画像のサイズは、約９０ＫＢ（＝３２０×２８０×８／８）であるところ、配列要素の数ｎ＝２５６とすれば、配列のサイズは、約２２．９ＭＢとなる。一方、分割された領域の画像であれば、配列要素の数ｎ＝２５６として、配列のサイズは、約１ＭＢ（＝６４×６４×２５６）となる。このことは、画像サイズが大きく、及び／又はカラー画像（ＲＧＢ２４ビット）であれば、その差はより顕著になる。なお、例えば、３２０×２８０ピクセルの画像の場合、６４×６４ピクセルで分割すると、高さ方向は余りが生じることとなる。この場合、高さ方向の分割数は、商より大きい最小の整数の値として、もとのサイズを超える部分のピクセルには、ゼロパディングにより、「０」が割り当てられる。領域分割部２４１０は、分割領域ごとのデータブロック（配列データ）を演算部２４２０に出力する。
【００９０】
演算部２４２０は、分割領域における各ピクセルの値（階調値）に対して、暗号化写像カーネルＫをそれぞれ適用して、暗号化配列を算出する。すなわち、演算部２４２０は、式６に示したように、分割領域を示す配列Ｘの全ての要素（ピクセル）のそれぞれについて、暗号化写像カーネルＫとしての順列ｆの順列写像Ｆ（Ｘ）を適用して、配列Ｙを算出する。
【００９１】
なお、多重暗号化が適用される場合、暗号化処理部２４０は、領域を拡張しながら、所定回数の順列写像Ｆ（Ｘ）の適用を繰り返し、最終的に算出された配列Ｙを、多重暗号化配列Ｚとして、メタデータ付与部２５０に出力する。このように、暗号化処理部２４０が、領域を拡張しながら、所定回数の順列写像Ｆ（Ｘ）の適用を繰り返すので、隣接する要素どうしの値が同じであっても、その特徴が消されるため、復号化のヒントが第三者に把握されにくくなる。
【００９２】
理解の容易のため、２×２ピクセルの分割領域に対して３−順列写像を適用する例を、図４Ａ及び４Ｂを用いて説明する。
【００９３】
図４Ａ（ａ）に示すように、ある画像における２×２ピクセルの分割領域の各ピクセルの値を示す配列Ｘ及び暗号化写像カーネルＫがあったとする。また、図中、暗号化写像カーネルＫの＃で始まる数字は、暗号化写像カーネルＫの要素の番号を示している。
【００９４】
演算部２４２０は、まず、配列Ｘの最初の要素、すなわち、左上の「０」に着目する。このときの対応する暗号鍵は、暗号化写像カーネルＫの左上の順列である（図中、ハッチングで示されている。以下同じ。）。演算部２４２０は、この要素の値「０」に従って、暗号化写像カーネルＫにおける０番目の要素を参照すべき要素として（図中(i)）、その要素の値「０」を配列Ｙの対応する要素の値に設定する（図中(ii)）。
【００９５】
続いて、図４Ａ（ｂ）に示すように、演算部２４２０は、配列Ｘの次の要素、すなわち、右上の「２」に着目する。このときの対応する暗号鍵は、暗号化写像カーネルＫの右上の順列である。演算部２４２０は、この要素の値「２」に従って、該暗号鍵における２番目の要素を参照すべき要素として（図中(i)）、その要素の値「２」を配列Ｙの対応する要素の値に設定する（図中(ii)）。
【００９６】
続いて、図４Ｂ（ａ）に示すように、演算部２４２０は、配列Ｘの次の要素、すなわち、左下の「１」に着目する。同様に、演算部２４２０は、この要素の値「１」に従って、対応する暗号鍵における１番目の要素を参照すべき要素として（図中(i)）、その要素の値「０」を配列Ｙの対応する要素の値に設定する（図中(ii)）。
【００９７】
同様にして、図４Ｂ（ｂ）に示すように、演算部２４２０は、配列Ｘの右下の要素「０」に従って、対応する暗号鍵における０番目の要素を参照すべき要素として（図中(i)）、その要素の値「２」を配列Ｙの対応する要素の値に設定する（図中(ii)）。
【００９８】
以上のようにして、演算部２４２０は、分割領域における各ピクセルの値（階調値）を示す配列Ｘに対して、暗号化写像カーネルＫ中の対応する暗号鍵をそれぞれ適用して、配列Ｙを算出する。算出された配列Ｙは、多重暗号化が適用される場合、後述するように、順列写像Ｆ（Ｘ）が繰り返し適用され、これにより、最終的に、多重暗号化された配列Ｙとなる。
【００９９】
図２に戻り、拡大領域設定部２４３０は、暗号化された配列に対応する隣接する分割領域を含む拡大した領域（以下「拡大領域」という。）を設定する。拡大領域は、例えば、図５に示すように、６４×６４ピクセルの分割領域の配列を１つのブロックとした、２×２ブロックの領域である。同様に、拡大領域の余り部分のピクセルには、ゼロパディングにより、「０」が割り当てられる。拡大領域設定部２４３０は、設定した拡大領域に対応する配列（以下「拡大配列」という。）を演算部２４２０に出力する。
【０１００】
演算部２４２０は、拡大領域設定部２４３０から拡大配列を受け取ると、式６に示したように、拡大領域の配列Ｙにおける全ての要素について、順列写像Ｆ（Ｙ）を適用して、重畳的に暗号化された配列Ｚを算出する。
【０１０１】
理解の容易のため、図４Ａ及び４Ａで示した例を前提に、拡大領域の配列に対して暗号化写像カーネルＫを適用する例を、図６を用いて説明する。
【０１０２】
図６に示すように、ある画像における２×２ピクセルの４つの分割領域に対応する４つの配列Ｘを考える。上述したように、演算部２４２０は、配列Ｘのそれぞれについて、暗号化写像カーネルＫにおける各暗号鍵Ｆを適用し、４つの暗号化配列Ｙを算出する。
【０１０３】
次に、拡大領域設定部２４３０は、４つの暗号化配列Ｙのそれぞれをブロックとして、２×２ブロックの拡張領域を作成する。続いて、演算部２４２０は、各ブロックにおける全ての要素について、暗号鍵による写像を適用にして、暗号化配列Ｚを算出する。
【０１０４】
より具体的には、演算部２４２０は、まず、左上の配列Ｙにおける左上の要素「０」に着目する。左上の配列Ｘについては、暗号鍵は、カーネルの左上の順列が用いられる。演算部２４２０は、この要素の値「０」に従って、対応する暗号鍵における０番目の要素「０」を配列Ｚの対応する位置の要素の値に設定する。同様に、演算部２４２０は、左上の配列Ｘにおける右上の要素「２」については、左上の暗号鍵における２番目の要素「２」を、左上の配列Ｘにおける左下の要素「０」については、左上の暗号鍵における０番目の要素「０」を、左上の配列Ｘにおける右下の要素「２」については、左上の暗号鍵における２番目の要素「２」を、それぞれ、配列Ｚの対応する位置の要素の値に設定する。
【０１０５】
同様に、右上の配列Ｙに関して、演算部２４２０は、左上の要素「０」について、右上の暗号鍵における０番目の要素「１」を、配列Ｚの対応する要素の値に設定する。なお、この例では、右上の配列Ｚの要素の値は、配列Ｙの要素の値が全て同じであるため、全て同じになる。
【０１０６】
同様に、演算部２４２０は、左下の配列Ｙ及び右下の配列Ｙに関して、それぞれ、上述したように、対応する暗号鍵による写像を適用する。そして、演算部２４２０は、上記の処理を暗号化の対象であるデジタルコンテンツにおける全ての拡大領域に対して行う。
【０１０７】
図７は、本発明の一実施形態に係るコンテンツ管理装置における暗号化処理の一例を説明するフローチャートである。かかる処理は、例えば、コンテンツ管理装置２０が、プロセッサ（プロセッサモジュール）の制御の下、暗号化プログラムを実行することにより、実現される。なお、かかる処理は、シーケンシャルに実行されても良いし、処理の結果に矛盾を生じない限り、並列又は並行に実行され得る。以下では、デジタルコンテンツは、画像データであるものとして説明する。
【０１０８】
同図示すように、コンテンツ管理装置２０は、暗号化の対象となるデジタルコンテンツを、例えばデータベース２２から取得する（Ｓ７０１）。或いは、コンテンツ管理装置２０は、クライアント３０からアップロードされたデジタルコンテンツを取得し得る。
【０１０９】
続いて、コンテンツ管理装置２０は、取得したデジタルコンテンツからメタデータを抽出し、メタデータとデジタルコンテンツ本体とに抽出する（Ｓ７０２）。抽出したメタデータは、一時的に、メモリ及び／又は作業ファイルに保持される。
【０１１０】
次に、コンテンツ管理装置２０は、デジタルコンテンツ本体を、所定サイズの領域、例えば、幅ｋｗ×高さｋｈの領域に分割する（Ｓ７０３）。上述したように、例えば、もとのデジタルコンテンツが３２０×２８０ピクセルの画像であれば、該画像は、６４×６４ピクセルの領域に分割される。なお、もとの画像のサイズが分割領域のサイズの整数倍でない場合には、もとの画像のサイズが分割領域のサイズの整数倍として扱うことができるように、もとの画像のサイズを超える部分にはゼロパディングがなされる。
【０１１１】
コンテンツ管理装置２０は、次に、Ｎ重暗号化を行うために、カウンタＣＯＵＮＴ（ただし、ＣＯＵＮＴ≦Ｎ）に「１」をセットする（Ｓ７０４）。なお、本例では、Ｎ＝２とする。続いて、コンテンツ管理装置２０は、分割領域における各ピクセルに対する暗号鍵に基づく暗号化写像カーネルＫを生成する（Ｓ７０５）。例えば、各暗号鍵は、ピクセルの８ビット階調値に対応するように、０〜２５５までの数字のそれぞれが排他的にランダムに並べられた数列（すなわち、順列ｆ＝［ｆ０，ｆ１，…，ｆ２５５］）である。
【０１１２】
次に、コンテンツ管理装置２０は、分割領域における各要素（すなわち、ピクセル）の値に対して、式６に示したように、対応する暗号鍵による順列写像を適用し、暗号化配列を算出する（Ｓ７０６）。コンテンツ管理装置２０は、全ての分割領域について、暗号化写像カーネルＫによる順列写像を適用する。
【０１１３】
暗号化写像カーネルＫによる順列写像の適用後、コンテンツ管理装置２０は、カウンタＣＯＵＮＴの値を１つインクリメントし、（Ｓ７０７）、Ｎ重暗号化が完了したか否かを判定する（Ｓ７０８）。本例の場合、カウンタＣＯＵＮＴの値がＮ＝２を超えていないため（Ｓ７０８のＮｏ）、コンテンツ管理装置２０は、２回目の暗号化を行うため、暗号化された分割領域の配列のそれぞれを要素にした拡大領域を設定し（Ｓ７０９）、Ｓ７０６の処理に戻る。
【０１１４】
そして、コンテンツ管理装置２０は、各拡大領域に対応する拡大配列に対して、暗号化写像カーネルＫにおける対応する暗号鍵による順列写像をそれぞれ適用して、暗号化配列を算出する（Ｓ７０６）。コンテンツ管理装置２０は、同様に、カウンタの値を１つインクリメントし、（Ｓ７０７）、Ｎ重暗号化が完了したか否かを判定する（Ｓ７０８）。この場合、カウンタＣＯＵＮＴの値がＮ＝２を超えるため、Ｎ重暗号化処理を終了する（Ｓ７０８のＹｅｓ）。続いて、コンテンツ管理装置２０は、一時的に記憶しておいたメタデータを読み出し、算出された全ての暗号化配列に基づくデータに、該メタデータを付与し（Ｓ７１０）、該メタデータが付与されたデータを暗号化されたデジタルコンテンツとして出力する（Ｓ７１１）。
【０１１５】
以上のように、コンテンツ管理装置２０は、デジタルコンテンツとしてのデジタルデータを取得すると、これを上述したｎ−順列写像を用いて暗号化し、暗号化されたデジタルコンテンツを出力し得る。本開示に係る暗号化技術では、デジタルコンテンツからメタデータを抽出したデータ本体に対して、暗号化処理を行い、その後、抽出したメタデータを、暗号化されたデータに付与しているので、暗号化処理後においても、そのファイルフォーマットは変更されない（そのまま維持される）。したがって、デジタルコンテンツのファイルフォーマットが例えばＰＮＧ（Portable Network Graphics）である場合に、暗号化されたデジタルコンテンツは、ＰＮＧに対応したビューアにより解釈可能であるが、表示された画像は、ランダムな多数の点が現れたスノーノイズ（いわゆる砂嵐）様の画像となり、もとの画像が認識できない（図１２Ａ及び１２Ｂ参照）。
【０１１６】
このように、本開示に係る暗号化技術によれば、ファイルフォーマットは変更されないので、例えば、ＨＴＭＬスクリプトのページ内にリンクにより埋め込まれる画像を暗号化することにより、ブラウザ上に、ＨＴＭＬに基づくページを表示させる一方、そこに埋め込まれた画像は、復号化されるまで認識できない状態で表示させるといった提供が可能になる。
【０１１７】
コンテンツ管理装置２０は、暗号化処理に対応した復号化処理を行う復号化装置としても機能し得る。復号化処理については、クライアント３０を例にして以下に述べる。
【０１１８】
（復号化装置の説明）
図８は、本発明の一実施形態に係るシステムにおけるクライアントの構成の一例を示すブロックダイアグラムである。同図では、クライアント３０の各種の構成要素（コンポーネント）のうち、本開示に関連する構成要素が示されているが、当業者にとって自明である限り、図示されていない他の構成要素も含まれ得る。すなわち、同図に示すように、クライアント３０は、例えば、デジタルコンテンツ取得部３１０と、鍵取得部３２０と、メタデータ抽出部３３０と、復号鍵生成部３４０と、復号化処理部３５０と、メタデータ付与部３６０と、出力制御部３７０とを含み構成され得る。当業者にとって自明なように、かかるコンポーネントは、ハードウェアコンポーネントそのもの、或いは、例えば、サーバのプロセッサが、ＯＳ上で暗号化プログラムを実行することにより、各種のハードウェア資源と協働して、実現され得る。
【０１１９】
デジタルコンテンツ取得部３１０は、本開示に係る暗号化技術に従って暗号化されたデジタルコンテンツを、例えば、図示しないストレージデバイス上のファイルシステムから取得する。典型的には、復号化処理に先立ち、暗号化されたデジタルコンテンツは、通信ネットワーク１０を介して、コンテンツ管理装置２０からダウンロードされ、クライアント３０のファイルシステムに格納されている。一例として、ユーザは、Ｗｅｂブラウザを用いて、Ｗｅｂサイトとしてのコンテンツ管理装置２０にアクセスし、例えば所定のユーザ認証を受けた後、暗号化されたデジタルコンテンツをダウンロードし、ファイルシステムに保存する。
【０１２０】
鍵取得部３２０は、暗号化されたデジタルコンテンツを復号化するために配布された鍵（以下「配布鍵」という。）を、例えば、図示しないストレージデバイス上のファイルシステムから取得する。本開示では、配布鍵は、例えば、第１配布鍵と第２配布鍵とのペアで構成され、したがって、鍵取得部３２０は、第１配布鍵取得部３２１０と、第２配布鍵取得部３２２０とを含み構成され得る。上述したように、第１配布鍵Ｄ１は、ユーザ鍵Ｕの逆写像Ｕ−１であり、第２配布鍵Ｄ２は、補助鍵Ｖの逆写像Ｖ−１である。なお、ユーザ鍵Ｕ及び補助鍵Ｖがそのまま配布鍵としてユーザに配布される態様にあっては、第１配布鍵取得部３２１０及び第２配布鍵取得部３２２０は、受け取った配布鍵の逆元をそれぞれ算出することにより、第１配布鍵Ｄ１及び第２配布鍵Ｄ２を取得する。配布鍵取得部３２０は、例えば、第１配布鍵と第２配布鍵とを同時に取得しても良いし、別々に取得しても良い。典型的には、復号化処理に先立ち、配布鍵は、通信ネットワーク１０を介して、コンテンツ管理装置２０からダウンロードされ、クライアント３０のファイルシステムに格納されている。例えば、ユーザは、Ｗｅｂブラウザを介して、Ｗｅｂサイトとしてのコンテンツ管理装置２０にアクセスし、例えば所定のユーザ認証を受けた後、配布鍵をダウンロードし、ファイルシステムに保存する。或いは、ユーザは、メーラーを介して、復号鍵がアーカイブされた添付ファイルを含むメール受信し、該添付ファイルをファイルシステムに保存する。他の形態として、配布鍵は、例えば、ＵＳＢメモリデバイスやドングルによってユーザに配布されても良い。
【０１２１】
メタデータ抽出部３３０は、取得したデジタルコンテンツを検査し、デジタルコンテンツが所定のメタデータを含む場合には、デジタルコンテンツからメタデータを抽出する。メタデータ抽出部３３０は、抽出したメタデータをメタデータ付与部３６０に出力する一方、デジタルコンテンツ本体を復号化処理部３５０に出力する。
【０１２２】
復号鍵生成部３４０は、本開示に係る復号化処理を実現するために必要な復号鍵を生成する。すなわち、復号鍵生成部３４０は、第１配布鍵Ｄ１と第２配布鍵Ｄ２とに基づいて、復号鍵Ｆ−１を生成する。より具体的には、復号鍵生成部３４０は、第２配布鍵Ｄ２（すなわち、補助鍵Ｖの逆写像Ｖ−１）に対して、第１配布鍵Ｄ１（すなわち、ユーザ鍵Ｕの逆写像Ｕ−１）を用いて、順列写像を適用して、復号鍵Ｆ−１（すなわち、Ｆ−１＝Ｖ−１・Ｕ−１）生成する。これまでの説明から明らかなように、復号鍵Ｆ−１もまた、０〜２５５までの数字のそれぞれを排他的に並べた数列（順列）の集合体である。また、復号鍵Ｆ−１は、復号化写像カーネルＫ−１として形成される。
【０１２３】
復号化処理部３５０は、復号鍵生成部３４０により生成された復号化写像カーネルに基づいて、暗号化されたデジタルコンテンツを復号化する。概略的には、復号化処理部３５０は、まず、暗号化されたデジタルコンテンツを所定のサイズの複数の領域に分割し、その後、各分割領域を示す配列に復号化写像カーネルを適用することにより、復号化配列を算出する。また、多重暗号化が適用されている場合、復号化処理部３５０は、各分割領域をさらに分割した分割領域を設定し、該分割領域を示す配列に暗号化写像カーネルＫを適用して、復号化配列を算出することを繰り返す。復号化処理部３５０は、算出した復号化配列をメタデータ付与部３６０に出力する。暗号化処理部２４０は、例えば、領域分割部３５１０と、演算部３５２０とを含み構成され得る。
【０１２４】
領域分割部３５１０は、取得したデジタルコンテンツを、所定サイズの領域、すなわち、上述した暗号化処理における拡大領域のサイズの領域に分割する。すなわち、復号化処理は、暗号化処理の逆の手順をとることから、分割領域は、暗号化処理時の拡大領域のサイズの領域となる。例えば、暗号化処理時の分割領域が、６４×６４ピクセルであり、これを１ブロックとして、拡大領域は、縦横２×２ブロックであるものとすれば、復号化処理時の最初の分割領域は、１２８×１２８ピクセルとなる。
【０１２５】
演算部３５２０は、分割領域のブロックごとに、該ブロックに対応する配列の各ピクセルの値に対して、復号化写像カーネルＫ−１における対応する復号鍵をそれぞれ適用して、復号化配列を算出する。すなわち、演算部３５２０は、式６に示したように、分割領域を示す配列Ｚの全ての要素（ピクセル）のそれぞれについて、順列逆写像Ｆ−１（Ｘ）を適用して、配列Ｙを算出する。
【０１２６】
なお、多重暗号化が適用されている場合、復号化処理部３５０は、領域を分割しながら、定回数の順列逆写像Ｆ−１（Ｘ）の適用を繰り返し、最終的に算出された配列Ｙを、復号化されたもとの配列Ｘ（復号化されたデジタルコンテンツ）として、メタデータ付与部２５０に出力する。
【０１２７】
メタデータ付与部３６０は、算出された復号化配列に、メタデータ抽出部３３０により抽出されたメタデータを付与することにより、もとのファイルフォーマットを復元する。メタデータ付与部３６０は、復元したファイルフォーマットの復号化配列のデータセットを出力制御部２６０に出力する。メタデータ抽出部３３０からＮｕｌｌデータが与えられる場合、メタデータ付与部３６０は、復号化処理部３５０から受け取った復号化配列のデータセットをそのまま出力制御部３７０に出力する。
【０１２８】
出力制御部３７０は、受け取った復号化配列のデータセットを任意の出力先に出力する。例えば、出力制御部３７０は、受け取った復号化配列のデータセットをデータファイルとしてファイルシステムに格納されるように制御を行う。或いは、出力制御部３７０は、復号化配列のデータセットをビューアに出力し、これにより、クライアント３０のビューアは、データセットを解釈して、画像として表示し得る。
【０１２９】
図９は、本発明の一実施形態に係るシステムにおける暗号鍵及び復号鍵を説明するための概念図である。
【０１３０】
同図（ａ）を参照して、上述したように、コンテンツ管理装置２０は、暗号鍵Ｆ及びユーザ鍵Ｕをそれぞれ生成し、暗号鍵Ｆ及びユーザ鍵Ｕの逆像Ｕ−１Ｖに基づいて補助鍵Ｖを生成する。さらに、コンテンツ管理装置２０は、ユーザ鍵Ｕの逆像Ｕ−１及び補助鍵Ｖの逆像Ｖ−１を、それぞれ、第１配布鍵Ｄ１及び第２配布鍵Ｄ２として、クライアント３０に配布する。
【０１３１】
一方、クライアント３０は、第１配布鍵Ｄ１と第２配布鍵Ｄ２とに基づいて、復号鍵Ｆ−１（復号化写像カーネルＫ−１）を算出する。
【０１３２】
また、同図（ｂ）に示すように、第１配布鍵Ｄ１及び第２配布鍵Ｄ２は、クライアント３０側において生成されても良い（この例では、第１配布鍵Ｄ１及び第２配布鍵Ｄ２は、配布されるものではないが、便宜上、配布鍵と称している。）。すなわち、コンテンツ管理装置２０は、生成したユーザ鍵Ｕ及び補助鍵Ｖをそのままクライアント３０に配布する。クライアント３０は、受け取ったユーザ鍵Ｕ及び補助鍵Ｖのそれぞれについて逆像を算出し、上記（ａ）に等価な、第１配布鍵Ｄ１及び第２配布鍵Ｄ２を生成する。
【０１３３】
次に、理解の容易のため、図６で示した例を前提に、復号化処理の例を、図１０を用いて説明する。図１０に示すように、拡大配列（すなわち、最初の分割領域）は、二重暗号化された配列Ｚのそれぞれを要素（ブロック）とする配列である。
【０１３４】
演算部３５２０は、まず、左上の配列Ｚにおける左上の要素「０」に着目する。左上の配列Ｚについては、復号化写像カーネルＫ−１における左上の復号鍵が用いられる。演算部３５２０は、この要素の値「０」に従って、対応する復号鍵における０番目の要素「０」を配列Ｙの対応する位置の要素の値に設定する。同様に、演算部３５２０は、左上の配列Ｚにおける右上の要素「２」については、対応する復号鍵における０番目の要素「２」を、左上の配列Ｚにおける左下の要素「０」については、対応する復号鍵における０番目の要素「０」を、左上の配列Ｘにおける右下の要素「２」については、対応する復号鍵における２番目の要素「２」を、それぞれ、配列Ｙの対応する位置の要素の値に設定する。
【０１３５】
同様に、右上の配列Ｚに関して、演算部３５２０は、左上の要素「２」について、右上の復号鍵における２番目の要素「２」を、配列Ｙの対応する要素の値に設定する。なお、この例では、右上の配列Ｙの要素の値は、配列Ｚの要素の値が全て同じであるため、全て同じになる。
【０１３６】
同様に、演算部３５２０は、左下の配列Ｚ及び右下の配列Ｚに関して、それぞれ、上述したような対応する復号鍵による写像を適用する。
【０１３７】
分割領域がさらに分割された後、演算部３５２０は、上記の演算を行う。すなわち、演算部３５２０は、拡大配列が分割された配列Ｙのそれぞれに対して、復号化写像カーネルによる写像をさらに適用する。より具体的には、演算部３５２０は、は、左上の配列Ｙにおける左上の要素「０」について、左上の復号鍵における０番目の要素「０」を配列Ｘの対応する位置の要素の値に設定する。同様に、演算部３５２０は、左上の配列Ｙにおける右上の要素「２」については、右上の復号鍵における２番目の要素「２」を配列Ｘの対応する位置の要素の値に設定する。この場合の復号化においては、配列Ｙの要素の位置にそれぞれ対応する復号鍵が用いられることに留意されたい。同様に、演算部３５２０は、左上の配列Ｙにおける左下の要素「０」については、左下の復号鍵における０番目の要素「１」を、左上の配列Ｘにおける右下の要素「２」については、右下の復号鍵における２番目の要素「０」を、それぞれ、配列Ｘの対応する位置の要素の値に設定する。
【０１３８】
同様に、拡大配列における右上の配列Ｙ、左下の配列Ｙ、及び右下の配列Ｙに関して、演算部３５２０は、対応する復号鍵による写像を適用する。そして、演算部３５２０は、復号化の対象であるデジタルコンテンツにおける全ての拡大領域に対して行う。
【０１３９】
図１１は、本発明の一実施形態に係るクライアントにおける復号化処理の一例を説明するフローチャートである。かかる処理は、例えば、クライアント３０が、プロセッサ（プロセッサモジュール）の制御の下、復号化プログラムを実行することにより、実現される。かかる処理は、シーケンシャルに実行されても良いし、処理の結果に矛盾を生じない限り、並列又は並行に実行され得る。以下では、クライアント３０における復号化処理を説明するが、コンテンツ管理装置２０における復号化処理も同様である。
【０１４０】
同図示すように、クライアント３０は、復号化の対象となるデジタルコンテンツを、例えばコンテンツ管理装置２０から取得する（Ｓ１１０１）。例えば、クライアント３０は、コンテンツ管理装置２０にアクセスし、所望のデジタルコンテンツをダウンロードする。ダウンロードされたデジタルコンテンツは、本開示に係る暗号化技術により暗号化されたデジタルデータである。
【０１４１】
続いて、クライアント３０は、取得したデジタルコンテンツからメタデータを抽出し、メタデータとデジタルコンテンツ本体とに抽出する（Ｓ１１０２）。抽出したメタデータは、一時的に、メモリ及び／又は作業ファイルに保持される。
【０１４２】
次に、クライアント３０は、復号鍵を既に保持しているか否かを判定する（Ｓ１１０３）。クライアント３０は、復号鍵Ｆ−１を既に保持していると判定した場合（Ｓ１１０３のＹｅｓ）、Ｓ１１０６の処理に移行する。これに対して、クライアント３０は、復号鍵Ｆ−１を未だ保持していないと判定した場合（Ｓ１１０３のＮｏ）、配布鍵を、例えばコンテンツ管理装置２０から取得する（Ｓ１１０４）。本例では、配布鍵は、第１配布鍵と第２配布鍵とからなる。クライアント３０は、取得した配布鍵に基づいて、復号鍵Ｆ−１（すなわち、復号化写像カーネルＫ−１）を生成する（Ｓ１１０５）。
【０１４３】
なお、本例では、クライアント３０は、デジタルコンテンツを取得した後に、配布鍵を取得しているが、これに限られるものではなく、配布鍵を予め取得しておき、その後、デジタルコンテンツを取得しても良い。
【０１４４】
復号鍵Ｆ−１を獲得したクライアント３０は、続いて、取得したデジタルコンテンツを、適用されたＮ重暗号化（本例ではＮ＝２）に対応した所定サイズの領域に分割する（Ｓ１１０２）。上述した例に従えば、３２０×２８０ピクセルの画像は、１２８×１２８ピクセルの領域にそれぞれ分割される。なお、もとの画像のサイズが該領域のサイズの整数倍でない場合には、もとの画像のサイズを超える領域の部分にはゼロパディングがなされる。
【０１４５】
クライアント３０は、次に、Ｎ重復号化を行うために、カウンタＣＯＵＮＴ（ただし、ＣＯＵＮＴ≦Ｎ）に「１」をセットする（Ｓ１１０７）。続いて、クライアント３０は、該分割領域に対応する配列の各要素の値に対して、対応する復号化写像カーネルＫ−１による写像を適用し、復号化された配列を算出する（Ｓ１１０８）。コンテンツ管理装置２０は、全ての分割領域について、復号化写像カーネルＫ−１による順列写像を適用する。
【０１４６】
復号化写像カーネルＫ−１による写像の適用後、クライアント３０は、カウンタの値を１つインクリメントし、（Ｓ１１０９）、Ｎ重復号化が完了したか否かを判定する（Ｓ１１１０）。本例の場合、カウンタＣＯＵＮＴの値がＮ＝２を超えていないため（Ｓ１１０９のＮｏ）、クライアント３０は、Ｓ１１０６の処理に戻り、復号化された分割領域をさらに小さな領域に分割する（Ｓ１１０６）。
【０１４７】
以降、同様にして、クライアント３０は、各分割領域に対して、復号化写像カーネルＫ−１による写像を適用し、復号化を行う。すなわち、クライアント３０は、各分割領域の配列に対して、復号化写像カーネルＫ−１における対応する復号鍵による写像をそれぞれ適用して、復号化配列を算出する（Ｓ１１０８）。続いて、クライアント３０は、カウンタＣＯＵＮＴの値を１つインクリメントし、（Ｓ１１０９）、Ｎ重暗号化が完了したか否かを判定する（Ｓ１１１０）。この場合、カウンタＣＯＵＮＴの値がＮ＝２を超えるため、Ｎ重復号化処理を終了する（Ｓ１１１０のＹｅｓ）。続いて、クライアント３０は、一時的に記憶しておいたメタデータを読み出し、算出された全ての復号化配列に基づくデータに該メタデータを付与し（Ｓ１１１１）、該メタデータが付与されたデータを復号化されたデジタルコンテンツとして出力する（Ｓ１１１２）。
【０１４８】
以上のように、クライアント３０は、暗号化されたデジタルコンテンツとしてのデジタルデータを取得すると、これを上述したｎ−順列写像を用いて復号化し、もとのデジタルコンテンツに復元し、出力し得る。
【０１４９】
（実験例）
図１２Ａ〜１２Ｃは、本開示に係る暗号化／復号化技術を、所定のファイルフォーマットの画像に適用した例を示している。すなわち、図１２Ａは、３２０×２８０ピクセル、８ビット階調（グレイスケール）の画像を示している。このもとの画像に対し、本開示に係る暗号化技術を適用すると、図１２Ｂに示すような画像となった。同図から明らかなように、暗号化技術が施された画像は、ファイルフォーマットが維持されるため、ユーザは、ビューアで確認することができるが、ユーザにとっては何ら意味をなさないものとなる。なお、図１２Ｂに示す画像に対し、本開示に係る復号化技術を適用することにより、図１２Ｃに示すようなもとの画像に復元された。なお、図１３は、暗号鍵Ｆ又はユーザ鍵Ｕの一例である。本例では、暗号鍵Ｆ又はユーザ鍵Ｕは、４×１０２４ピクセルの所定のファイルフォーマット（例えばＰＮＧ形式）の画像データで表現されている。
【０１５０】
［第２の実施形態］
本実施形態は、第１の実施形態の変形であり、上述したユーザ鍵Ｕ及び補助鍵Ｖを、オフセット値を適用して、隠蔽する技術を開示する。
【０１５１】
上述した図２を用いて説明すれば、例えば、ユーザ鍵生成部２３２０は、第１のオフセット値（ｐ，ｑ）を保持する一方、補助鍵生成部２３３０は、第２のオフセット値（ｒ，ｓ）を保持している。ここで、ｐ及びｒは、２次元平面におけるｘ方向へオフセット値を示し、ｑ及びｓは、ｙ方向へのオフセット値を示しているが、これに限られず、３次元空間におけるオフセット値が用いられても良い。一例として、暗号化プログラムには、第１のオフセット値（ｐ，ｑ）及び第２のオフセット値（ｒ，ｓ）が隠蔽的に埋め込まれている。
【０１５２】
ユーザ鍵生成部２３２０は、生成したユーザ鍵Ｕに対して、第１のオフセット値（ｐ，ｑ）を適用した後、オフセットされたユーザ鍵ＵＯＦＦＳＥＴを第１配布鍵生成部２３４０に出力する。同様に、補助鍵生成部２３３０は、生成した補助鍵Ｖに対して、第２のオフセット値（ｒ，ｓ）を適用した後、オフセットされた補助鍵ＶＯＦＦＳＥＴを第２配布鍵生成部２３０に出力する。
【０１５３】
第１配布鍵生成部２３４０及び第２配布鍵生成部２３０は、それぞれ、上述したように、オフセットされたユーザ鍵ＵＯＦＦＳＥＴ及びオフセットされた補助鍵ＶＯＦＦＳＥＴの逆像を算出し、それらを第１配布鍵及び第２配布鍵として出力する。
【０１５４】
一方、暗号化されたデジタルコンテンツを復号化しようとするクライアント３０は、上記の第１のオフセット値（ｐ，ｑ）及び第２のオフセット値（ｒ，ｓ）を知らなければ、本来の第１配布鍵及び第２配布鍵を取得できないことになる。そこで、クライアント３０の第１配布鍵取得部３２１０及び第２配布鍵取得部３２２０（図８参照）は、予め第１のオフセット値（ｐ，ｑ）及び第２のオフセット値（ｒ，ｓ）が与えられている。一例として、クライアント３０に配布される復号化プログラムには、第１のオフセット値（ｐ，ｑ）及び第２のオフセット値（ｒ，ｓ）が隠蔽的に埋め込まれている。第１配布鍵取得部３２１０及び第２配布鍵取得部３２２０は、外部から第１配布鍵及び第２配布鍵を取得すると、保持している第１のオフセット値（ｐ，ｑ）及び第２のオフセット値（ｒ，ｓ）をそれぞれ適用して、本来の第１配布鍵及び第２配布鍵を生成する。
【０１５５】
なお、オフセット値は、例えば、ユーザごとに設定され得る。したがって、復号化プログラムもまた、ユーザごとに異なるオフセット値が隠蔽的に埋め込まれ、クライアント３０に配布され得る。
【０１５６】
以上のように、本実施形態によれば、ユーザごとに異なるオフセット値によりユーザ鍵及び補助鍵がオフセットされ、これらが配布鍵として配布されるので、たとえ配布鍵が意図せずに流出したとしても、正当なユーザ以外の第三者は、オフセット値を知らなければ、復号化することができない。
【０１５７】
以上のように、本開示によれば、有限要素からなる多次元配列（Ｎ次元配列）の任意のデジタルデータに対して、ｎ−順列写像を適用することにより、外形的枠組みを変えることなく、すなわち、ファイルフォーマットを維持したまま、暗号化及び復号化を行うことができるようになる。これは、暗号化／復号化処理の実装及び運用等を、既存のシステム上に最小限の工数及び運用負荷等で実現することができることを意味する。
【０１５８】
とりわけ、本開示に係る暗号化／復号化技術は、汎用的なファイルフォーマットが広く用いられている分野において、そのようなファイルフォーマットに適合した装置（例えば動／静止画カメラ、音響音声機器等の各種装置）に容易に実装することができ、これにより、高い機密性を必要とするデジタルデータの保護を図ることができるようになる。
【０１５９】
また、本開示に係る暗号化／復号化技術を実装した装置は、各配列の要素に対して、１オーダーで暗号化及び復号化処理を行うことができる。また、暗号化／復号化装置は、ＧＰＵを用いる場合、そのピクセルシェーダにより、その処理をさらに高速化することができる。
【０１６０】
また、本開示に係る暗号化／復号化技術を実装した装置において、オフセット値を用いることにより、ユーザ鍵及び補助鍵を隠蔽した上で、これらを配布鍵として配布するので、たとえ配布鍵が意図せずに流出したとしても、正当なユーザ以外の第三者は、オフセット値を知らなければ、正しく暗号化／復号化することができないので、デジタルコンテンツのより強固な暗号化／復号化が達成される。
【０１６１】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
【０１６２】
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【０１６３】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ（技術的事項）を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
【符号の説明】
【０１６４】
１…コンピュータシステム
１０…通信ネットワーク
２０…コンテンツ管理装置
２２…データベース
２４…サーバ
２１０…デジタルコンテンツ取得部
２２０…メタデータ抽出部
２３０…鍵生成部
２３１０…暗号鍵生成部
２３２０…ユーザ鍵生成部
２３３０…補助鍵生成部
２３４０…第１配布鍵生成部
２３５０…第２配布鍵生成部
２４０…暗号化処理部
２４１０…領域分割部
２４２０…演算部
２４３０…拡大領域設定部
２５０…メタデータ抽出部
２６０…出力制御部
３０…クライアント
３１０…デジタルコンテンツ取得部
３２０…メタデータ抽出部
３２０…鍵取得部
３２１０…第１配布鍵取得部
３２２０…第２配布鍵取得部
３４０…復号鍵生成部
３５０…復号化処理部
３５１０…領域分割部
３５２０…演算部
３６０…メタデータ抽出部
３７０…出力制御部
【図１】
2020187241.tif 000012
【図２】
2020187241.tif 000013
【図３】
2020187241.tif 000014
【図４Ａ】
2020187241.tif 000015
【図４Ｂ】
2020187241.tif 000016
【図５】
2020187241.tif 000017
【図６】
2020187241.tif 000018
【図７】
2020187241.tif 000019
【図８】
2020187241.tif 000020
【図９】
2020187241.tif 000021
【図１０】
2020187241.tif 000022
【図１１】
2020187241.tif 000023
【図１２Ａ】
2020187241.tif 000024
【図１２Ｂ】
2020187241.tif 000025
【図１２Ｃ】
2020187241.tif 000026
【図１３】
2020187241.tif 000027
【図１４】
2020187241.tif 000028