(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-21
(45)【発行日】2023-11-30
(54)【発明の名称】暗号化/復号化装置、暗号化/復号化方法並びに該方法を実行するためのコンピュータプログラム
(51)【国際特許分類】
G09C 1/04 20060101AFI20231122BHJP
【FI】
G09C1/04
(21)【出願番号】P 2019091000
(22)【出願日】2019-05-13
【審査請求日】2022-03-04
(73)【特許権者】
【識別番号】317015917
【氏名又は名称】株式会社I.Meisters
(74)【代理人】
【識別番号】100109715
【氏名又は名称】塩谷 英明
(74)【代理人】
【識別番号】100205693
【氏名又は名称】鈴木 協一郎
(72)【発明者】
【氏名】今井 星
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2009-139722(JP,A)
【文献】特表2018-527775(JP,A)
【文献】特表2002-528770(JP,A)
【文献】特開2010-108365(JP,A)
【文献】特開2007-011630(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/04
(57)【特許請求の範囲】
【請求項1】
暗号化対象であるデジタルデータ列を暗号化するための暗号化装置を備えるシステムであって、
前記暗号化装置は、
前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得する取得部と、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成する暗号鍵生成部と、
前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出する暗号化処理部と、
前記算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行う出力制御部と
、を備え、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値に設定する2項演算であ
り、
前記暗号化処理部は、
前記暗号化対象であるデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、
前記複数の所定の領域のそれぞれに対応する暗号化対象配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、複数の暗号化配列のそれぞれを算出する演算部と、
前記複数の所定の領域におけるいくつかに基づく拡大領域を新たな所定の領域として設定する拡大領域設定部と、を備え、
前記演算部は、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、新たな暗号化配列を算出する、
システム。
【請求項2】
前記暗号化処理部は、N重暗号化に従って、前記拡大領域設定部による拡大領域の設定及び前記演算部による暗号化配列の算出を繰り返すように構成される、
請求項
1に記載のシステム。
【請求項3】
前記暗号化装置は、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵を生成するユーザ鍵生成部と、
前記暗号鍵と前記ユーザ鍵の逆写像鍵とに基づいて、補助鍵を生成する補助鍵生成部と、
をさらに備える、請求項1
又は2に記載のシステム。
【請求項4】
暗号化対象であるデジタルデータ列を暗号化するための暗号化装置を備えるシステムであって、
前記暗号化装置は、
前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得する取得部と、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成する暗号鍵生成部と、
前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出する暗号化処理部と、
前記算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行う出力制御部と、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵を生成するユーザ鍵生成部と、
前記暗号鍵と前記ユーザ鍵の逆写像鍵とに基づいて、補助鍵を生成する補助鍵生成部と、
を備え、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値に設定する2項演算である、
システム。
【請求項5】
前記暗号化装置は、前記暗号化されたデジタルデータ列の復号化を可能にするために、前記ユーザ鍵に基づく第1配布鍵と前記補助鍵に基づく第2配布鍵とを外部に出力するように構成される、
請求項
3又は4に記載のシステム。
【請求項6】
前記第1配布鍵は、前記ユーザ鍵の逆像であり、前記第2配布鍵は、前記暗号鍵の逆写像である、請求項
5に記載のシステム。
【請求項7】
請求項
5又は6に記載の前記暗号化装置により暗号化された前記デジタルデータ列を、前記第1配布鍵と前記第2配布鍵とに基づいて、復号化する復号化装置をさらに備えるシステム。
【請求項8】
前記復号化装置は、
前記第1配布鍵と前記第2配布鍵とに基づいて、復号鍵を生成する復号鍵生成部と、
前記暗号化されたデジタルデータ列に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、前記デジタルデータ列を復号化する復号化処理部と、
をさらに備える請求項
7に記載のシステム。
【請求項9】
前記暗号化装置は、
前記取得された第1のデータファイルからメタデータを抽出するメタデータ抽出部と、
前記暗号化されたデジタルデータ列に前記抽出されたメタデータを付与して前記第2のデータファイルを生成するメタデータ付与部と、をさらに備える、
請求項1
乃至8のいずれか一項に記載のシステム。
【請求項10】
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化する復号化装置であって、
前記暗号鍵に対応する復号鍵を生成する復号鍵生成部と、
前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出する復号化処理部と、
前記算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行う出力制御部と
、を備え、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記復号化対象配列のi番目の要素の値を、前記復号化配列のi番目の要素の値とする2項演算であ
り、
前記復号化処理部は、
前記暗号化されたデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、
前記複数の所定の領域のそれぞれに対応する復号化対象配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、複数の復号化配列のそれぞれを算出する演算部と、を備え、
前記領域分割部は、前記複数の所定の領域のそれぞれをさらに分割して新たな所定の領域を設定し、
前記演算部は、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、新たな復号化配列を算出する、
復号化装置。
【請求項11】
前記復号化処理部は、N重暗号化が適用された前記暗号化されたデジタルデータ列に対応して、前記領域分割部による所定の領域の設定及び前記演算部による復号化配列の算出を繰り返すように構成される、
請求項
10に記載の復号化装置。
【請求項12】
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化する復号化装置であって、
前記暗号鍵に対応する復号鍵を生成する復号鍵生成部と、
前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出する復号化処理部と、
前記算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行う出力制御部と、
前記暗号鍵に基づく第1配布鍵を取得する第1配布鍵取得部と、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵に基づく第2配布鍵を取得する第2配布鍵取得部と、
を備え、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記復号化対象配列のi番目の要素の値を、前記復号化配列のi番目の要素の値とする2項演算であり、
前記第1配布鍵は、前記ユーザ鍵の逆写像であり、
前記第2配布鍵は、前記暗号鍵と前記ユーザ鍵の逆写像とに基づいて生成され、
前記復号鍵生成部は
、前記第1配布鍵と前記第2配布鍵とに基づいて、前記復号鍵とを生成する、
復号化装置。
【請求項13】
コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であって、
前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得することと、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成することと、
前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出することと、
算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと
、を含み、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算であ
り、
前記暗号化配列を算出することは、
前記暗号化対象であるデジタルデータ列を分割して複数の前記所定の領域を設定することと、
前記複数の所定の領域のそれぞれに対応する暗号化対象配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、複数の暗号化配列のそれぞれを算出することと、
前記複数の所定の領域におけるいくつかに基づく拡大領域を新たな所定の領域として設定することと、を含み、
前記複数の暗号化配列のそれぞれを算出することは、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、新たな暗号化配列を算出することを含む、
暗号化方法。
【請求項14】
コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であって、
前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得することと、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成することと、
前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出することと、
算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと
、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵を生成することと、
前記暗号鍵と前記ユーザ鍵の逆写像鍵とに基づいて、補助鍵を生成することと、を含み、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算である、
暗号化方法。
【請求項15】
コンピュータデバイスにおいて実行される、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法であって、
前記暗号鍵に対応する復号鍵を生成することと、
前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出することと、
算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと、を含み、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記復号化対象配列のi番目の要素の値を、前記復号化配列のi番目の要素の値とする2項演算であ
り、
前記復号化配列を算出することは、
前記暗号化されたデジタルデータ列を分割して複数の前記所定の領域を設定することと、
前記複数の所定の領域のそれぞれに対応する復号化対象配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、複数の復号化配列のそれぞれを算出することと、を含み、
前記複数の所定の領域を設定することは、前記複数の所定の領域のそれぞれをさらに分割して新たな所定の領域を設定することを含み、
前記複数の復号化配列のそれぞれを算出することは、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、新たな復号化配列を算出することを含む、
復号化方法。
【請求項16】
コンピュータデバイスにおいて実行される、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法であって、
前記暗号鍵に対応する復号鍵を生成することと、
前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出することと、
算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと、
前記暗号鍵に基づく第1配布鍵を取得することと、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵に基づく第2配布鍵を取得することと、を含み、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記復号化対象配列のi番目の要素の値を、前記復号化配列のi番目の要素の値とする2項演算であり、
前記第1配布鍵は、前記ユーザ鍵の逆写像であり、
前記第2配布鍵は、前記暗号鍵と前記ユーザ鍵の逆写像とに基づいて生成され、
前記復号鍵を生成することは、前記第1配布鍵と前記第2配布鍵とに基づいて、前記復号鍵とを生成することを含む、
復号化方法。
【請求項17】
コンピューティングデバイスに、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法を実現させるコンピュータプログラムであって、
前記暗号化方法は、
前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得することと、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成することと、
前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出することと、
算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと
、を含み、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算であ
り、
前記暗号化配列を算出することは、
前記暗号化対象であるデジタルデータ列を分割して複数の前記所定の領域を設定することと、
前記複数の所定の領域のそれぞれに対応する暗号化対象配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、複数の暗号化配列のそれぞれを算出することと、
前記複数の所定の領域におけるいくつかに基づく拡大領域を新たな所定の領域として設定することを含み、
前記複数の暗号化配列のそれぞれを算出することは、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、新たな暗号化配列を算出することと、を含む、
コンピュータプログラム。
【請求項18】
コンピューティングデバイスに、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法を実現させるコンピュータプログラムであって、
前記暗号化方法は、
前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得することと、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成することと、
前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出することと、
算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵を生成することと、
前記暗号鍵と前記ユーザ鍵の逆写像鍵とに基づいて、補助鍵を生成することと、を含み、
前記暗号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算である、
コンピュータプログラム。
【請求項19】
コンピュータデバイスにおいて実行される、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法を実現させるコンピュータプログラムであって、
前記復号化方法は、
前記暗号鍵に対応する復号鍵を生成することと、
前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出することと、
算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと、を含み、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記復号化対象配列のi番目の要素の値を、前記復号化配列のi番目の要素の値とする2項演算であ
り、
前記復号化配列を算出することは、
前記暗号化されたデジタルデータ列を分割して複数の前記所定の領域を設定することと、
前記複数の所定の領域のそれぞれに対応する復号化対象配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、複数の復号化配列のそれぞれを算出することと、を含み、
前記複数の所定の領域を設定することは、前記複数の所定の領域のそれぞれをさらに分割して新たな所定の領域を設定することを含み、
前記複数の復号化配列のそれぞれを算出することは、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、新たな復号化配列を算出することを含む、
コンピュータプログラム。
【請求項20】
コンピュータデバイスにおいて実行される、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法を実現させるコンピュータプログラムであって、
前記復号化方法は、
前記暗号鍵に対応する復号鍵を生成することと、
前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出することと、
算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うことと、
前記暗号鍵に基づく第1配布鍵を取得することと、
順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵に基づく第2配布鍵を取得することと、を含み、
前記復号化対象配列と前記順列写像との組が、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、
前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記復号化対象配列のi番目の要素の値を、前記復号化配列のi番目の要素の値とする2項演算であり、
前記第1配布鍵は、前記ユーザ鍵の逆写像であり、
前記第2配布鍵は、前記暗号鍵と前記ユーザ鍵の逆写像とに基づいて生成され、
前記復号鍵を生成することは、前記第1配布鍵と前記第2配布鍵とに基づいて、前記復号鍵とを生成することを含む、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタルデータの暗号化及び復号化技術に関し、特に、デジタルデータの暗号化/復号化機能を有する装置、デジタルデータの暗号化/復号化方法、並びに、コンピュータにデジタルデータの暗号化/復号化機能を実現させるためのプログラムに関する。
【背景技術】
【0002】
現在、インターネット上の様々なサイトには、リソースとしての膨大な数のデジタルデータが格納され、人々に利用されている。例えば、多くのWebサイトは、デジタル化されたドキュメントや、イラスト、写真、映像等のデジタルコンテンツ(デジタルデータ)を含むWebページを提供している。また、幾つかのWebサイトでは、特定のクライアントシステムを持つユーザに向けて、漫画や動画といったデジタルコンテンツを配信するサービス(いわゆるネット配信サービス)を展開している。
【0003】
このようなデジタルコンテンツには、一般に、著作権が化体しており、著作権保護の観点から、第三者による不正利用を防止する必要がある。特に、デジタルコンテンツの配信サービスでは、デジタルコンテンツの無断複製による海賊版の流通が大きな問題となる。このため、例えば、Webサイトには、ユーザ登録を行った正規のユーザのみアクセス可能にし、さらに、ストリーミングでのみ利用するという方法や、デジタルコンテンツ自体を暗号化しておき、鍵(アクセスキー)を有する正規のユーザのみが復号化(解読)可能にするという方法が採られている。このような暗号化及び復号化技術として、従前より、様々な手法が提案されている。
【0004】
例えば、下記の特許文献1は、グラフィカルオブジェクトを暗号化する方法を開示している。具体的には、特許文献1の暗号化装置は、グラフィカルオブジェクトを受信し、秘密鍵Kを用いて秘密ファンクションセットを生成し、該秘密ファンクションセットから暗号化ファンクションを選択し、暗号化されたグラフィカルオブジェクトを取得するため、該暗号化ファンクションを用いて該グラフィカルオブジェクトを暗号化し、該暗号化されたグラフィカルオブジェクトと該選択された暗号化ファンクションの表示とを出力する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
デジタルデータの暗号化/復号化については、情報化社会の進展により、その必要性が高く、様々な手法が提案されている。しかしながら、より強固な暗号化を図ろうとすると、暗号化の手順が複雑化したり、計算負荷が高くなってしまったりするという問題がある。
【0007】
そこで、本発明は、計算負荷を低く抑えつつ、デジタルデータの強固かつ高速な暗号化/復号化処理を行うことができる暗号化/復号化技術を提供することを目的とする。
【0008】
また、本発明は、GPU上で演算を行うことに適した暗号化/復号化処理を提供することを目的とする。
【0009】
また、本発明は、デジタルデータのファイルフォーマットが変更されることなく、該デジタルデータを暗号化することできる技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するための本発明は、以下に示す発明特定事項ないしは技術的特徴を含んで構成される。
【0011】
すなわち、ある観点に従う本発明は、暗号化対象であるデジタルデータ列を暗号化するための暗号化装置を備えるシステムであり得る。前記暗号化装置は、前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得する取得部と、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成する暗号鍵生成部と、前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出する暗号化処理部と、前記算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行う出力制御部とを備え得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり得る。また、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値に設定する2項演算であり得る。
【0012】
また、前記暗号化処理部は、前記暗号化対象であるデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、前記複数の所定の領域のそれぞれに対応する暗号化対象配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、複数の暗号化配列のそれぞれを算出する演算部と、を備え得る。
【0013】
また、前記暗号化処理部は、前記複数の所定の領域におけるいくつかに基づく拡大領域を新たな所定の領域として設定する拡大領域設定部をさらに備え得る。また、前記演算部は、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記暗号鍵を用いて、前記順列写像を適用することにより、新たな暗号化配列を算出し得る。
また、前記暗号化処理部は、N重暗号化に従って、前記拡大領域設定部による拡大領域の設定及び前記演算部による暗号化配列の算出を繰り返すように構成される、
【0014】
また、前記暗号化装置は、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵を生成するユーザ鍵生成部と、前記暗号鍵と前記ユーザ鍵の逆写像鍵とに基づいて、補助鍵を生成する補助鍵生成部と、をさらに備え得る。
【0015】
前記暗号化装置は、前記暗号化されたデジタルデータ列の復号化を可能にするために、前記ユーザ鍵に基づく第1配布鍵と前記補助鍵に基づく第2配布鍵とを外部に出力するように構成され得る。
【0016】
前記第1配布鍵は、前記ユーザ鍵の逆像であり、前記第2配布鍵は、前記暗号鍵の逆写像であり得る。
【0017】
また、別の観点に従う本発明は、前記暗号化装置により暗号化された前記デジタルデータ列を、前記第1配布鍵と前記第2配布鍵とに基づいて、復号化する復号化装置をさらに備えるシステムであり得る。
【0018】
また、前記復号化装置は、前記第1配布鍵と前記第2配布鍵とに基づいて、復号鍵を生成する復号鍵生成部と、前記暗号化されたデジタルデータ列に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、前記デジタルデータ列を復号化する復号化処理部と、をさらに備え得る。
【0019】
また、前記暗号化装置は、前記取得された第1のデータファイルからメタデータを抽出するメタデータ抽出部と、前記暗号化されたデジタルデータ列に前記抽出されたメタデータを付与して前記第2のデータファイルを生成するメタデータ付与部と、をさらに備え得る。
【0020】
さらに、別の観点に従う本発明は、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化する復号化装置であり得る。前記暗号鍵に対応する復号鍵を生成する復号鍵生成部と、前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出する復号化処理部と、前記算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行う出力制御部とを備え得る。ここで、前記復号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり得る。また、前記順列写像は、前記復号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記復号化対象配列のi番目の要素の値を、前記復号化配列のi番目の要素の値とする2項演算であり得る。
【0021】
前記復号化処理部は、前記暗号化されたデジタルデータ列を分割して複数の前記所定の領域を設定する領域分割部と、前記複数の所定の領域のそれぞれに対応する復号化対象配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、複数の復号化配列のそれぞれを算出する演算部と、を備え得る。
【0022】
前記領域分割部は、前記複数の所定の領域のそれぞれをさらに分割して新たな所定の領域を設定し得る。また、前記演算部は、前記新たな所定の領域に対応する1つ前に算出された暗号化配列の要素値に対して、前記復号鍵を用いて、前記順列写像を適用することにより、新たな復号化配列を算出し得る。
【0023】
また、前記復号化処理部は、N重暗号化が適用された前記暗号化されたデジタルデータ列に対応して、前記領域分割部による所定の領域の設定及び前記演算部による復号化配列の算出を繰り返すように構成され得る。
【0024】
また、前記復号化装置は、前記暗号鍵に基づく第1配布鍵を取得する第1配布鍵取得部と、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含むユーザ鍵に基づく第2配布鍵を取得する第2配布鍵取得部と、をさらに備え得る。ここで、前記第1配布鍵は、前記ユーザ鍵の逆写像であり、前記第2配布鍵は、前記暗号鍵と前記ユーザ鍵の逆写像とに基づいて生成され得る。そして、前記復号鍵生成部は、前記第1配布鍵と前記第2配布鍵とに基づいて、前記復号鍵とを生成し得る。
【0025】
さらに、別の観点に従う本発明は、コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であり得る。前記方法は、前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得することと、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成することと、前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出することと、算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算であり得る。
【0026】
さらに、別の観点に従う本発明は、コンピュータデバイスにおいて実行される、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法であり得る。前記方法は、前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得することと、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成することと、前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出することと、算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算であり得る。
【0027】
さらに、別の観点に従う本発明は、コンピュータデバイスにおいて実行される、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法であり得る。前期方法は、前記暗号鍵に対応する復号鍵を生成することと、前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出することと、算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算であり得る。
【0028】
さらに、別の観点に従う本発明は、コンピューティングデバイスに、暗号化対象であるデジタルデータ列を暗号化するための暗号化方法を実現させるコンピュータプログラム又は当該プログラムを記録した記録媒体であり得る。前記暗号化方法は、前記暗号化対象であるデジタルデータ列を含む第1のデータファイルを取得することと、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を生成することと、前記暗号化対象であるデジタルデータ列を構成する少なくとも1つの所定の領域に対応する暗号化対象配列の要素値に対して、前記生成された暗号鍵を用いて、順列写像を適用することにより、少なくとも1つの暗号化配列を算出することと、算出された少なくとも1つの暗号化配列が示す暗号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算であり得る。
【0029】
コンピュータデバイスにおいて実行される、順列の関係を有するn個の要素からなる少なくとも1つの単位鍵を含む暗号鍵を用いて暗号化されたデジタルデータ列を復号化するための復号化方法を実現させるコンピュータプログラム又は当該プログラムを記録した記録媒体であり得る。前記復号化方法は、前記暗号鍵に対応する復号鍵を生成することと、前記暗号化されたデジタルデータ列を構成する少なくとも1つの所定の領域に対応する復号化対象配列の要素値に対して、前記生成された復号鍵を用いて、順列写像を適用することにより、少なくとも1つの復号化配列を算出することと、算出された少なくとも1つの復号化配列が示す復号化されたデジタルデータ列を含む第2のデータファイルを出力先に出力するための制御を行うこととを含み得る。ここで、前記暗号化対象配列と前記順列写像との組は、結合法則、単位元の存在、及び逆元の存在の条件を満たす群であり、前記順列写像は、前記暗号鍵における一の前記単位鍵の要素の値Xi(i∈n)が示す、前記暗号化対象配列のi番目の要素の値を、前記暗号化配列のi番目の要素の値とする2項演算であり得る。
【0030】
なお、本明細書等において、「手段」(又は「部」)とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。また、1つの手段が有する機能が2つ以上の物理的手段により実現されても、2つ以上の手段の機能が1つの物理的手段により実現されてもよい。
【発明の効果】
【0031】
本発明によれば、計算負荷を低く抑えつつ、デジタルデータの強固かつ高速な暗号化/復号化処理を行うことができる暗号化/復号化技術が提供される。
【0032】
また、本発明によれば、GPU上で演算を行うことに適した暗号化/復号化処理が提供される。
【0033】
さらに本発明によれば、デジタルデータのファイルフォーマットが変更されることなく、該デジタルデータを暗号化することできる技術が提供される。
【0034】
本発明の他の技術的特徴、目的、及び作用効果ないしは利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【図面の簡単な説明】
【0035】
【
図1】本発明の一実施形態に係るコンピュータシステムの一例を説明するためのブロックダイアグラムである。
【
図2】本発明の一実施形態に係るコンテンツ管理装置の構成の一例を示すブロックダイアグラムである。
【
図3】本発明の一実施形態に係るシステムで使用されるデジタルデータを所定の領域に分割した分割領域を説明するための概念図である。
【
図4A】本発明の一実施形態に係るコンテンツ管理装置による暗号化処理を説明するための概念図である。
【
図4B】本発明の一実施形態に係るコンテンツ管理装置による暗号化処理を説明するための概念図である。
【
図5】本発明の一実施形態に係るシステムで使用されるデジタルデータの分割領域に基づく拡大領域を説明するための概念図である。
【
図6】本発明の一実施形態に係るコンテンツ管理装置による暗号化処理を説明するための概念図である。
【
図7】本発明の一実施形態に係るコンテンツ管理装置における暗号化処理の一例を説明するフローチャートである。
【
図8】本発明の一実施形態に係るシステムにおけるクライアントの構成の一例を示すブロックダイアグラムである。
【
図9】本発明の一実施形態に係るシステムにおける暗号鍵及び復号鍵を説明するための概念図である。
【
図10】本発明の一実施形態に係るクライアントによる復号化処理を説明するための概念図である。
【
図11】本発明の一実施形態に係るクライアントにおける復号化処理の一例を説明するフローチャートである。
【
図12A】所定のファイルフォーマットのもとの画像の例を示す図である。
【
図12B】
図12Aに示す元画像に対して本発明に係る暗号化技術を適用することにより得られた暗号化画像の例を示す図である。
【
図12C】
図12Bに示す暗号化された本発明に係る復号化技術を適用することにより得られた復号化画像(もとの画像)の例を示す図である。
【
図13】本発明に係る暗号化/復号化技術における暗号鍵及びユーザ鍵の一例を示す図である。
【
図14】本発明の一実施形態に係るシステムにおけるコンピューティングデバイスの構成の一例を示す図である。
【発明を実施するための形態】
【0036】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形(例えば各実施形態を組み合わせる等)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【0037】
[第1の実施形態]
本実施形態は、有限要素の多重配列から構成される、デジタルコンテンツとしてのデジタルデータ列を、「順列写像群」という概念を用いて、暗号化及び復号化する技術を開示する。以下では、まず、順列写像群について説明し、その後、順列写像群を用いた暗号化/復号化装置の例について説明する。
【0038】
(群)
任意の集合Gと該集合G上の2項演算子μとの組が、一定の条件を満たす場合、該組(G,μ)を群という。つまり、μ:G×G→Gである(G,μ)が群であるとは、3つの条件、すなわち、(1)結合法則、(2)単位元の存在、及び(3)逆元の存在、を満たすことである。なお、集合Gは、2項演算子μに関して群であると称することもできる。
【0039】
(結合法則)
任意の集合Gの元g,h,kに対して、μ(g,μ(h,k))=μ(μ(g,h),k)を満たす:
(∀g,h,k,∈G)[μ(g,μ(h,k))=μ(μ(g,h),k)] …式1
【0040】
(単位元の存在)
任意の元gに対して、μ(g,e)=μ(e,g)=gを満たす元e∈Gが存在する:
(∃e∈G)(∀g∈G)[μ(g,e)=μ(e,g)=g] …式2
【0041】
(逆元の存在)
任意の元g∈Gに対して、μ(g,x)=μ(x,g)を満たす元x∈Gが存在する:
(∀g∈G)(∃x∈G)[μ(g,x)=μ(x,g)=e] …式3
【0042】
(n-順列写像群)
n∈Nとする。ここで、Nは、0以上n以下の整数の集合である。該集合Nの要素xiが互いに排他的に並んだ数列をn-順列と称する。今、n-順列であるgについて、g=[x0,x1,...,xn]|xi≠xj,xi∈Nであるとし、該順列の集合をg∈Gとする。このとき、該順列集合の個数は、|G|=n!となる。例えば、n=3の場合の順列(3-順列)を例にとると、集合Gは、順列[0,1,2],[0,2,1],[1,0,2],[1,2,0],[2,0,1],[2,1,0]のそれぞれを元に持つ集合であり、位数(集合の要素の数)は、6である。
【0043】
写像とは、一般に、ある集合の元のそれぞれを他の元のそれぞれに対応させることをいう。本開示において、n-順列を元とする集合をGとし、その任意の元g1,g2に対して、g2のi番目(i∈n)の要素が示す値(Xi)を取り出し、g1のXi番目の要素の値をi番目の要素の値に移動するという写像μを適用することで、元g3となるものをn-順列写像群(G,μ)と称することとする。以下では、4-順列について、順列集合Gの元g=[1,2,0,3],h=[3,0,1,2],k=[2,0,3,1]を例に、群の3つの条件について考える。
【0044】
上記式1から、μ(g,μ(h,k))=μ(g,[1,3,2,0])=[2,3,0,1]となる一方、μ(μ(g,h),k)=μ([3,1,2,0],k)=[2,3,0,1]となる。したがって、(G,μ)は、結合法則を満たす。
【0045】
上記式2から、e=[0,1,2,3]について、μ(g,e)=[1,2,0,3]=gであり、また、μ(e,g)=[1,2,0,3]=gである。元gに限らず、任意の元に対して成立することから、元eは、単位元である。したがって、(G,μ)には、単位元が存在する。
【0046】
上記式3から、x=[2,0,1,3]は、μ(g,x)=[0,1,2,3]=eであり、また、μ(x,g)=[0,1,2,3]=eであるため、xは、gの逆元である。したがって、(G,μ)には、逆元が存在する。
【0047】
n-順列写像群は、一般に、非可換、すなわち、μ(g,h)≠μ(h,g)である。上記の例でいえば、μ(g,h)=[3,1,2,0]であるところ、μ(h,g)=「0,1,3,2]であり、非可換となっている。
【0048】
(n-順列写像を用いた暗号化/復号化の基本概念)
あるi∈N=[0,n]について、これらの順列写像を用いて暗号化及び復号化することを考える。上述のとおり、n-順列写像とは、n-順列fを用いた演算子f(i)を、n-順列fのi番目の値を返す写像である(以下では、n-順列写像を単に「順列写像」又は「写像」ということもある。)。例えば、暗号化しようとする値xについて、n-順列写像f(x)を作用させることで、暗号化された値yが得られる。これをy=f(x)と表す。また、fの逆元f-1を用いた逆写像f-1(y)をyに作用させることで、もとの値xに復号化することができる。つまり、x=f-1(y)である。
【0049】
例えば、上述した順列集合Gの元g=[1,2,0,3]について、暗号化の場合、写像g(2)は、元gの2番目の要素の値を返すことを意味することから、g(2)=0となり、したがって、「2」は「0」に暗号化されたことになる。一方、復号化の場合、元gの逆元、すなわち、g-1=[2,0,1,3]を用いる。つまり、逆写像g-1(0)は、g-1の0番目の要素の値を返すことを意味するから、g-1(0)=2となり、正しく復号化されたことになる。
【0050】
上記のことは、数字単体のみならず、数列に拡張することができる。例えば、暗号化の対象となる数列をX={x1,x2,…,xm},x∈Nと表す。そして、写像f(x)を数列Xの全ての要素に適用する、F:X→Xである写像F(X)について考える。
【0051】
すなわち、まず、F(X)={f(x1),f(x2),…,f(xm)}を生成する。このような写像F(X)を用いることにより、もとの数列に対して暗号化することができる。この意味において、該写像は、暗号化写像ないしは暗号鍵ということができる。
【0052】
一方、順列fの逆元f-1を用いた逆写像f-1(x)を、数列Xの全ての要素に適用した逆写像F-1(X)について考える。このとき、逆写像F-1(X)は、F-1={f-1(x1),f-1(x2),…,f-1(xm)}となる。
【0053】
より具体的には、例えば、数列X={3,3,2,0,1}について、順列集合Gの写像G(X)を適用すると、G(X)={g(3),g(3),g(2),g(0),g(1)}={3,3,0,1,2}=Yとなる。この結果に対して、逆写像G-1(Y)は、G-1(Y)={g-1(3),g-1(3),g-1(0),g-1(1),g-1(2)}={3,3,2,0,1}となり、これは、正しく復号化されたことを意味する。
【0054】
(多次元配列の暗号化及び復号化)
上記の考え方を、さらに、多重配列X∈Nnに拡張する。本開示では、理解の容易のため、所定のファイルフォーマットないしはコンテナフォーマット(以下、単に、「ファイルフォーマット」という。)からなる画像などのデジタルデータを扱うための2次元配列X∈N2による暗号化/復号化を説明するが、これに限られるものでなく、本開示に係る暗号化/復号化技術は、n次元配列に適用することができる。
【0055】
今、配列Xのi行j列の要素をxijとする。このとき、上述した数列の暗号化と同様に、
yij=f(xij) …式4
とすることで、配列Xを暗号化することができる。
【0056】
例えば、配列Xを、
【数1】
とする。これに、F=[2,0,1]を配列Xに作用させた写像F(X)は、
【数2】
となる。
【0057】
反対に、F
-1=[1,2,0]を配列Yに作用させた逆写像F
-1(Y)は、
【数3】
となる。
【0058】
(多次元写像)
上述したように、n-順列写像を用いることにより、ある配列(例えばラスタライズされた画像を示すデジタルデータ列)Xを暗号化して配列Yを求めることができ、また、その逆写像を用いることにより、暗号化された配列Yを復号化して、もとの配列Xを求めることができる。本開示では、暗号化をより複雑化してセキュリティレベルを上げるために、異なる配列に対して異なる写像となるような多次元写像F(X)を考える。ここで、
【数4】
であり、その要素をf
ij(x
ij)と定義する。f
ijは、一次元の順列写像であり、したがって、F(X)は、3階のテンソルとなる。すなわち、
y
ij=f
ij(x
ij) …式8
となる。このようにすることで、暗号化及び復号化がより複雑化される。
【0059】
例えば、w=h=2,n=3の場合の例について考える。
【数5】
に対して、
【数6】
を配列Xに適用した写像は、
【数7】
となる。
【0060】
反対に、
【数8】
を配列Yに適用した逆写像は、
【数9】
となる。
【0061】
なお、より一般化した多重配列X∈Nnに対して写像を適用する場合は、F∈Nn+1,F:X→Xとなる。
【0062】
(写像の縮小化)
2次元配列である画像(幅w×高さh)に対する写像のテンソル要素のサイズは、w×h×nとなる。例えば、1024×1024ピクセル、8ビット階調の画像を暗号化する場合、非圧縮データのサイズは256MBに達し、これを扱うために非常に大きなサイズの配列が必要になる。そこで、配列サイズを小さくするために、縮小化した写像を導入する。本開示では、縮小化した写像を「カーネル」と称し(OSのカーネルとは区別される。)、特に、暗号化写像におけるカーネルを「暗号化写像カーネルK」と称するとともに、復号化写像におけるカーネルを「復号化写像カーネルK-1」と称するものとする。
【0063】
すなわち、カーネルの幅をkw、高さをkhとすると、このときのテンソル要素のサイズは、kw×kh×nとなる。例えば、kw=kh=64であり、n=256の場合、配列サイズは、64×64×256=約1MBとなる。
【0064】
したがって、暗号化の対象となる画像を所定のサイズの領域ないしはセグメントに分割し、該分割した領域のそれぞれに対応するサイズのカーネルを適用することにより、配列サイズを小さくすることができ、メモリの消費を少なくすることができる。
【0065】
(システムの概略構成)
次に、上述したn-順列写像を用いた暗号化及び復号化を実現するためのシステムについて、説明する。
図1は、本発明の一実施形態に係るコンピュータシステムの一例を説明するためのブロックダイアグラムである。同図に示すように、本開示のコンピュータシステム1は、例えば、通信ネットワーク10を介して相互に通信可能に接続される、コンテンツ管理装置20と、クライアント30とを含み構成され得る。
【0066】
通信ネットワーク10は、例えば、IPベースのコンピュータネットワークを含み構成される。本開示では、コンピュータネットワークは、IPネットワークによって構築されたインターネット("the Internet")を含む広い概念で用いられているが、IPネットワークに限らず、ノード間通信を可能とするあらゆるプロトコルのネットワークが適用可能である。したがって、通信ネットワーク10は、図示されていない無線基地局(例えばWi-Fi(登録商標))によって構築される無線ネットワークを含み得る。また、通信ネットワーク10は、移動通信システム規格に準拠した移動通信ネットワークを含み得る。
【0067】
コンテンツ管理装置20は、デジタルコンテンツとしてのデータファイルを適正に管理するためのサーバシステムであり、例えば、データベース22とサーバ24とを含み構成され得る。コンテンツ管理装置20は、例えば、Webサイトを構成するWebサーバやクラウドサービスを提供するクラウドサーバであり得る。サーバ24とデータベース22とは、個々のコンピューティングデバイス上にそれぞれ構築されても良いし、物理的に1つの又は論理的に1つのコンピューティングデバイス上にそれぞれ構築されても良い。このようなコンピューティングデバイスのハードウェア構成は、
図14に例示されるが、既知であるため、その詳細な説明は省略する。なお、図中、プロセッサモジュールは、CPU、コアプロセッサ、コプロセッサ、及び/又はGPU等の各種のプロセッサを含み得る。コンテンツ管理装置20は、例えば、通信ネットワーク10を介して、SSL等のセキュア通信技術を利用することによって、クライアント30及びその他の外部装置とのセキュアな通信セッションを構築し得る。
【0068】
本開示において、コンテンツ管理装置20は、上述した暗号化及び復号化処理を実現する暗号化及び/又は復号化装置(以下「暗号化/復号化装置」といい、単に「暗号化装置」及び「復号化装置」ということもある。)として機能し得る。言い換えれば、コンテンツ管理装置20のプロセッサ(プロセッサモジュール)は、暗号化及び/又は復号化プログラム(以下「暗号化/復号化プログラム」といい、単に「暗号化プログラム」及び「復号化プログラム」ということもある。)を実行することにより、コンテンツ管理装置20を暗号化/復号化装置として機能させる。
【0069】
本開示では、コンテンツ管理装置20が、ラスタライズされた画像及び動画に関するデジタルデータを暗号化し、暗号化されたデジタルデータを復号化する例を説明する。とりわけ、コンテンツ管理装置20は、GPUの制御の下で、そのピクセルシェーダやコンピュートシェーダにより、暗号化及び復号化処理を実行し得るので、該処理が高速化される。
【0070】
データベース22は、例えば、ドキュメントや、漫画、イラスト、写真、動画ないしは映像等の各種のデジタルコンテンツ(デジタルデータ)を所定のファイルフォーマットのデータファイルとして格納し得る。本開示では、デジタルコンテンツのファイルフォーマットは特に限定されるものでなく、既知のあらゆるファイルフォーマットを用いることができる。デジタルコンテンツのデータファイルは、本開示に係る暗号化技術により暗号化された状態でデータベース22に格納されても良い。また、データベース22は、例えば、デジタルコンテンツを利用するユーザに関するユーザ情報(ユーザアカウント及びパスワード)を管理し得る。さらに、データベース22は、例えば、ユーザごとに、各デジタルコンテンツを利用するための所定の暗号鍵及び/又は復号のための鍵(配布鍵)を管理し得る。
【0071】
サーバ24は、正当なユーザからのリクエストに対して、データベース22に格納されたデジタルコンテンツ及び/又は所定の配布鍵を提供し得る。正当なユーザとは、典型的には、コンテンツ管理装置20の運営主体から、所定のデジタルコンテンツを使用する権利を与えられたユーザであり、例えば、正規のユーザ登録手続を経たり、さらには、相当の対価を支払ったりしたユーザであり得る。
【0072】
クライアント30は、典型的には、ユーザによって使用されるコンピューティングデバイスである。クライアント30は、例えば、デスクトップコンピュータやノートブックコンピュータといったパーソナルコンピュータ、タブレット型コンピュータ、フィーチャフォン、スマートフォン、PDA、ハンドヘルド型コンピュータ、及びその他のインテリジェントデバイスであり得る。本開示では、クライアント30は、パーソナルコンピュータであるものとする。
【0073】
すなわち、クライアント30は、各種のプロセッサ(例えば、CPU、コアプロセッサ、コプロセッサ、及び/又はGPU等)やチップセット及びメモリ、通信モジュール、ユーザインタフェース(例えばディスプレイないしはタッチパネル、スピーカー及びバイブレータ)等のハードウェア資源及びオペレーティングシステム(例えばカーネル、各種のデバイスドライバ、標準ライブラリ等を含み構成され得る。以下「OS」という。)のソフトウェア資源から構成される。クライアント30は、プロセッサの制御の下、OS上で各種のアプリケーションプログラムを実行し、所望の機能を実現する。本開示では、クライアント30は、アプリケーションプログラムの一つとして、暗号化されたデジタルデータを復号化するためのアプリケーションプログラム(以下「復号化プログラム」という。)を実装する。代替的に又は追加的に、クライアント30は、例えば、Webブラウザプログラムを実装し得る。復号化プログラムは、Webブラウザプログラムのプラグインプログラムとして実装されても良い。とりわけ、クライアント30は、GPUの制御の下で、そのピクセルシェーダにより、復号化処理を実行し得るので、該処理が高速化される。
【0074】
なお、本開示においては、デジタルコンテンツ配信の一般的な利用態様を想定して、コンテンツ管理装置20が、デジタルコンテンツの暗号化及び復号化を行い、ユーザのクライアント30が復号化のみを行うシステムとして説明されるが、これに限られるものではない。例えば、ユーザのクライアント30に、暗号化/復号化プログラムが実装され、クライアント30もまた、暗号化を行うように構成されても良い。
【0075】
(暗号化装置の説明)
図2は、本発明の一実施形態に係るシステムにおけるコンテンツ管理装置の構成の一例を示すブロックダイアグラムである。同図では、暗号化装置として機能するコンテンツ管理装置20の各種の構成要素(コンポーネント)のうち、本開示に関連する構成要素が示されているが、当業者にとって自明である限り、図示されていない他の構成要素も含まれ得る。すなわち、同図に示すように、コンテンツ管理装置20は、デジタルコンテンツ取得部210と、メタデータ抽出部220と、鍵生成部230と、暗号化処理部240と、メタデータ付与部250と、出力制御部260とを含み構成され得る。当業者にとって自明なように、かかるコンポーネントは、ハードウェアコンポーネントそのもの、或いは、例えば、サーバ24のプロセッサが、OS上で暗号化プログラムを実行することにより、各種のハードウェア資源と協働して、実現され得る。
【0076】
デジタルコンテンツ取得部210は、暗号化の対象となるデジタルコンテンツを、例えばデータベース22から取得する。或いは、デジタルコンテンツ取得部210は、クライアント30からアップロードされたデジタルコンテンツを取得し得る。一例として、デジタルコンテンツは、ラスタライズされた画像(例えば320×280ピクセル、8ビット階調の画像)のデータファイルであるが、これに限られるものではなく、ある情報に関するデジタルデータ列であれば良い。例えば、デジタルコンテンツは、動画像のデータファイルや音楽データファイルであり得る。また、デジタルコンテンツは、ドキュメントデータであり得る。また、医療用画像装置等で用いられるDiCOMフォーマットのデータファイルであり得る。他の例として、デジタルコンテンツは、ストリーミングデータであり得る。以下では、暗号化の対象となるデジタルコンテンツは、320×280ピクセル、8ビット階調のラスタライズされた画像データであるものとする。デジタルコンテンツ取得部210は、取得したデジタルコンテンツをメタデータ抽出部220に出力する。なお、本開示において、「データを出力する」といった表現は、システムないしはプログラム上、字句どおり、データを出力先に出力するといった意味の他、例えば、データを所定の変数に直接代入したり、ポインタ渡しをしたりするといった意味を含み、限定的に解釈されるべきではない。
【0077】
メタデータ抽出部220は、取得したデジタルコンテンツを検査し、デジタルコンテンツが所定のメタデータを含む場合には、デジタルコンテンツからメタデータを抽出・分離する。メタデータ抽出部220は、抽出したメタデータをメタデータ付与部250に出力する一方、デジタルコンテンツ本体(以下、特に区別する必要がない限り、単に「デジタルコンテンツ」と称する。)を暗号化処理部240に出力する。一例として、メタデータ抽出部220は、JPEGファイルフォーマットのデジタルコンテンツの場合、Exif形式で記述されたデータをメタデータとして抽出・分離する。他の例として、メタデータ抽出部220は、デジタルコンテンツに対して所定のファイルフォーマットを認識できない場合には、デジタルコンテンツ全体を暗号化処理部240に出力し、メタデータ付与部250にはNullデータを出力する。
【0078】
鍵生成部230は、本開示に係る暗号化/復号化処理を実現するために必要な各種の鍵を生成する。概略的には、鍵生成部230は、所定の鍵生成アルゴリズム(例えばシードに基づく乱数関数)に基づいて、暗号鍵F及びユーザ鍵Uをそれぞれ生成する。本開示では、暗号鍵Fは、暗号化写像カーネルKとして形成される。ユーザ鍵Uは、暗号化対象となるデジタルコンテンツを利用しようとする個々のユーザに対して割り当てられる鍵である。また、鍵生成部230は、暗号鍵Fとユーザ鍵Uとに基づいて、補助鍵Vを生成する。つまり、補助鍵Vは、ユーザ鍵Uに関連付けられた鍵である。また、ユーザ鍵U及び補助鍵Vは、ユーザに配布するための鍵である。一例として、鍵生成部230は、ユーザ鍵Uに基づいて、第1配布鍵D1を生成するとともに、補助鍵Vに基づいて、第2配布鍵D2を生成する。鍵生成部230の詳細については、後述する。
【0079】
暗号化処理部240は、鍵生成部230により生成された暗号化写像カーネルKに基づいて、デジタルコンテンツを暗号化する。概略的には、暗号化処理部240は、まず、デジタルコンテンツを所定のサイズの領域ないしはセグメントに分割し、その後、分割した領域(以下「分割領域」という。)を示す配列に暗号化写像カーネルKを適用することにより、暗号化配列を算出する。また、多重暗号化が適用される場合、暗号化処理部240は、隣接する複数の分割領域に基づいて拡大領域を設定し、拡大領域を示す配列に暗号化写像カーネルKを適用して、暗号化配列を算出することを繰り返す。本開示では、拡大領域は、隣接する複数の分割領域に基づいて設定されるものとするが、これに限られず、例えば、所定の幾何学的パターン(例えば市松模様パターン)に基づいて拡大領域が設定されても良い。暗号化処理部240は、算出した暗号化配列をメタデータ付与部250に出力する。暗号化処理部240の詳細については、後述する。
【0080】
メタデータ付与部250は、算出された暗号化配列に、メタデータ抽出部220により抽出されたメタデータを付与することにより、もとのファイルフォーマットを復元する。メタデータ付与部250は、復元したファイルフォーマットの暗号化配列のデータセットを出力制御部260に出力する。メタデータ抽出部220からNullデータが与えられる場合、メタデータ付与部250は、暗号化処理部240から受け取った暗号化配列のデータセットをそのまま出力制御部260に出力する。
【0081】
出力制御部260は、受け取った各種のデータセットを任意の対応する出力先に出力する。例えば、出力制御部260は、算出された暗号化配列のデータセットを受け取ると、暗号化されたデジタルコンテンツのデータファイルとして、データベース22に格納されるように制御を行う。また、例えば、出力制御部260は、ユーザ鍵及び補助鍵を、それぞれ、ユーザ及びデジタルコンテンツに関連付けて、データベース22に格納されるように制御を行う。さらに、例えば、出力制御部260は、第1配布鍵及び第2配布鍵をクライアント30に送信するように制御を行う。
【0082】
ここで、鍵生成部230の詳細について説明する。同図に示すように、鍵生成部230は、例えば、暗号鍵生成部2310と、ユーザ鍵生成部2320と、補助鍵生成部2330とを含み構成され得る。さらに、鍵生成部230は、第1配布鍵生成部2340と、第2配布鍵生成部2350とを含み構成され得る。
【0083】
暗号鍵生成部2310は、上述したように、デジタルコンテンツを暗号化するための暗号鍵Fを生成する。暗号鍵Fは、複数の単位鍵の集合体であり、各暗号鍵Fは、例えば、0~255までの数字のそれぞれを排他的に並べた数列(すなわち、順列f=[f0,f1,…,f255])である。つまり、要素の値f0,f1,…,f255は、順列の関係にあるといえる。暗号鍵生成部2310は、例えば、所定のシードに基づいた乱数関数を用いて、このような数列を生成する。暗号鍵Fに係る順列の要素数は、ピクセルの8ビット階調値に対応している。また、暗号鍵Fの数は、後述するように、デジタルコンテンツの分割領域内の要素(すなわち、ピクセル)の数に対応している。例えば、デジタルコンテンツが64×64ピクセルの領域に分割される場合、暗号鍵Fは、64×64個である。このような暗号鍵Fは、配列サイズの縮減のために用いられる、暗号化写像カーネルKである。暗号化写像カーネルKは、複数の順列が配置された3Dテクスチャと捉えることもできる。本開示では、暗号化写像カーネルKは、暗号化対象となるデジタルコンテンツのデータファイルに対して例えば1つだけ生成されるが、これに限られず、画像を構成する1つ又は複数の分割領域に対して、1つの暗号化写像カーネルKが割り当てられても良い。暗号鍵生成部2310は、生成した暗号鍵F(すなわち、暗号化写像カーネルK)を暗号化処理部240及び補助鍵生成部2330にそれぞれ出力する。
【0084】
ユーザ鍵生成部2320は、デジタルコンテンツを利用しようとする個々のユーザに対して割り当てられるユーザ鍵Uを生成する。ユーザ鍵生成部2320は、例えば、データベース22に格納されているユーザ情報に従って、ユーザごとのユーザ鍵Uを生成し得る。ユーザ鍵Uもまた、複数の単位鍵の集合体であり、各単位鍵は、例えば、0~255までの数字のそれぞれを排他的に並べた数列(すなわち、順列u=[u0,u1,…,u255])である。ユーザ鍵生成部2320は、例えば、所定のシードに基づいた乱数関数を用いて、このような数列を生成する。順列の要素数は、ピクセルの8ビット階調値に対応している。また、ユーザ鍵Uを構成する単位鍵の数は、分割領域内の要素の数に対応している。ユーザ鍵Uは、暗号鍵Fに対応する鍵であるが、独立に(無関係)に生成される鍵である。ユーザ鍵生成部2320は、生成したユーザ鍵Uを補助鍵生成部2330と第1配布鍵生成部2340とにそれぞれ出力する。本開示では、ユーザごとに異なるユーザ鍵Uが生成されるものとして説明されるが、これに限られず、ユーザ鍵Uは、例えば、複数のユーザからなるユーザグループごとに割り当てられるものであっても良い。
【0085】
第1配布鍵生成部2340は、生成されたユーザ鍵Uに基づいて、第1配布鍵D1を生成する。具体的には、第1配布鍵生成部2340は、生成されたユーザ鍵Uの逆写像鍵U-1を算出し、これを第1配布鍵D1として設定する。第1配布鍵生成部2340は、生成した第1配布鍵D1を補助鍵生成部2330及び出力制御部260に出力する。なお、本例では、第1配布鍵生成部2340は、コンテンツ管理装置20に設けられる態様が示されているが、第1配布鍵生成部2340は、クライアント30に設けられても良い。この場合、ユーザ鍵生成部2320は、第1配布鍵生成部2340に代わって、生成したユーザ鍵Uの逆写像鍵U-1を算出し得る。
【0086】
補助鍵生成部2330は、暗号鍵Fとユーザ鍵U(の逆写像U-1)とに基づいて、補助鍵Vを生成する。例えば、暗号鍵生成部2310は、暗号鍵Fと逆写像鍵U-1との2項演算を行うことにより、補助鍵Vを生成する。より具体的には、暗号鍵生成部2310は、逆写像U-1に対して、暗号鍵Fを用いて、順列写像を適用して、補助鍵F(V=U-1・F)を生成する。したがって、補助鍵Vもまた、0~255までの数字のそれぞれを排他的に並べた数列(すなわち、順列v=[v0,v1,…,v255])の集合体である。
【0087】
第2配布鍵生成部230は、生成された補助鍵Vに基づいて、第2配布鍵D2を生成する。具体的には、第2配布鍵生成部230は、生成された補助鍵Vの逆写像鍵V-1を算出し、これを第2配布鍵D2として設定する。第2配布鍵生成部230は、生成した第2配布鍵D2を出力制御部260に出力する。なお、本例では、第2配布鍵生成部230は、コンテンツ管理装置20に設けられる態様が示されているが、第2配布鍵生成部230は、クライアント30に設けられても良い。
【0088】
次に、暗号化処理部240の詳細について説明する。同図に示すように、暗号化処理部240は、例えば、領域分割部2410と、演算部2420と、拡大領域設定部2430とを含み構成され得る。
【0089】
領域分割部2410は、取得したデジタルコンテンツを、
図3に示すような、所定サイズの領域、例えば、幅w×高さhの領域に分割する。すなわち、領域分割部2410は、例えば、デジタルコンテンツが320×280ピクセルの画像であれば、これを64×64ピクセルの領域に分割する。これは、暗号化の対象となるデータのサイズを小さくすることにより、暗号化写像カーネルKの配列のサイズを小さくするためである。例えば、320×280ピクセル、8ビット階調値の(非圧縮)画像のサイズは、約90KB(=320×280×8/8)であるところ、配列要素の数n=256とすれば、配列のサイズは、約22.9MBとなる。一方、分割された領域の画像であれば、配列要素の数n=256として、配列のサイズは、約1MB(=64×64×256)となる。このことは、画像サイズが大きく、及び/又はカラー画像(RGB24ビット)であれば、その差はより顕著になる。なお、例えば、320×280ピクセルの画像の場合、64×64ピクセルで分割すると、高さ方向は余りが生じることとなる。この場合、高さ方向の分割数は、商より大きい最小の整数の値として、もとのサイズを超える部分のピクセルには、ゼロパディングにより、「0」が割り当てられる。領域分割部2410は、分割領域ごとのデータブロック(配列データ)を演算部2420に出力する。
【0090】
演算部2420は、分割領域における各ピクセルの値(階調値)に対して、暗号化写像カーネルKをそれぞれ適用して、暗号化配列を算出する。すなわち、演算部2420は、式6に示したように、分割領域を示す配列Xの全ての要素(ピクセル)のそれぞれについて、暗号化写像カーネルKとしての順列fの順列写像F(X)を適用して、配列Yを算出する。
【0091】
なお、多重暗号化が適用される場合、暗号化処理部240は、領域を拡張しながら、所定回数の順列写像F(X)の適用を繰り返し、最終的に算出された配列Yを、多重暗号化配列Zとして、メタデータ付与部250に出力する。このように、暗号化処理部240が、領域を拡張しながら、所定回数の順列写像F(X)の適用を繰り返すので、隣接する要素どうしの値が同じであっても、その特徴が消されるため、復号化のヒントが第三者に把握されにくくなる。
【0092】
理解の容易のため、2×2ピクセルの分割領域に対して3-順列写像を適用する例を、
図4A及び4Bを用いて説明する。
【0093】
図4A(a)に示すように、ある画像における2×2ピクセルの分割領域の各ピクセルの値を示す配列X及び暗号化写像カーネルKがあったとする。また、図中、暗号化写像カーネルKの#で始まる数字は、暗号化写像カーネルKの要素の番号を示している。
【0094】
演算部2420は、まず、配列Xの最初の要素、すなわち、左上の「0」に着目する。このときの対応する暗号鍵は、暗号化写像カーネルKの左上の順列である(図中、ハッチングで示されている。以下同じ。)。演算部2420は、この要素の値「0」に従って、暗号化写像カーネルKにおける0番目の要素を参照すべき要素として(図中(i))、その要素の値「0」を配列Yの対応する要素の値に設定する(図中(ii))。
【0095】
続いて、
図4A(b)に示すように、演算部2420は、配列Xの次の要素、すなわち、右上の「2」に着目する。このときの対応する暗号鍵は、暗号化写像カーネルKの右上の順列である。演算部2420は、この要素の値「2」に従って、該暗号鍵における2番目の要素を参照すべき要素として(図中(i))、その要素の値「2」を配列Yの対応する要素の値に設定する(図中(ii))。
【0096】
続いて、
図4B(a)に示すように、演算部2420は、配列Xの次の要素、すなわち、左下の「1」に着目する。同様に、演算部2420は、この要素の値「1」に従って、対応する暗号鍵における1番目の要素を参照すべき要素として(図中(i))、その要素の値「0」を配列Yの対応する要素の値に設定する(図中(ii))。
【0097】
同様にして、
図4B(b)に示すように、演算部2420は、配列Xの右下の要素「0」に従って、対応する暗号鍵における0番目の要素を参照すべき要素として(図中(i))、その要素の値「2」を配列Yの対応する要素の値に設定する(図中(ii))。
【0098】
以上のようにして、演算部2420は、分割領域における各ピクセルの値(階調値)を示す配列Xに対して、暗号化写像カーネルK中の対応する暗号鍵をそれぞれ適用して、配列Yを算出する。算出された配列Yは、多重暗号化が適用される場合、後述するように、順列写像F(X)が繰り返し適用され、これにより、最終的に、多重暗号化された配列Yとなる。
【0099】
図2に戻り、拡大領域設定部2430は、暗号化された配列に対応する隣接する分割領域を含む拡大した領域(以下「拡大領域」という。)を設定する。拡大領域は、例えば、
図5に示すように、64×64ピクセルの分割領域の配列を1つのブロックとした、2×2ブロックの領域である。同様に、拡大領域の余り部分のピクセルには、ゼロパディングにより、「0」が割り当てられる。拡大領域設定部2430は、設定した拡大領域に対応する配列(以下「拡大配列」という。)を演算部2420に出力する。
【0100】
演算部2420は、拡大領域設定部2430から拡大配列を受け取ると、式6に示したように、拡大領域の配列Yにおける全ての要素について、順列写像F(Y)を適用して、重畳的に暗号化された配列Zを算出する。
【0101】
理解の容易のため、
図4A及び4
Bで示した例を前提に、拡大領域の配列に対して暗号化写像カーネルKを適用する例を、
図6を用いて説明する。
【0102】
図6に示すように、ある画像における2×2ピクセルの4つの分割領域に対応する4つの配列Xを考える。上述したように、演算部2420は、配列Xのそれぞれについて、暗号化写像カーネルKにおける各暗号鍵Fを適用し、4つの暗号化配列Yを算出する。
【0103】
次に、拡大領域設定部2430は、4つの暗号化配列Yのそれぞれをブロックとして、2×2ブロックの拡張領域を作成する。続いて、演算部2420は、各ブロックにおける全ての要素について、暗号鍵による写像を適用にして、暗号化配列Zを算出する。
【0104】
より具体的には、演算部2420は、まず、左上の配列Xにおける左上の要素「0」に着目する。要素「0」は、左上の配列Xの左上にあるので、暗号鍵は、カーネルの左上の順列が用いられる。演算部2420は、この要素の値「0」に従って、対応する暗号鍵における0番目の要素「0」を配列Yの対応する位置の要素の値に設定する。同様に、演算部2420は、左上の配列Xにおける右上の要素「2」については、暗号鍵における2番目の右上の要素「2」を、左上の配列Xにおける左下の要素「1」については、暗号鍵における0番目の左下の要素「0」を、左上の配列Xにおける右下の要素「0」については、暗号鍵における0番目の右下の要素「2」を、それぞれ、配列Yの対応する位置の要素の値に設定する。
【0105】
同様に、右上の配列Xに関して、演算部2420は、左上の要素「0」について、右上の暗号鍵における0番目の要素「1」を、配列Yの対応する要素の値に設定する。同様に、演算部2420は、左下及び右下の配列Xに関して、対応する暗号鍵による写像を適用する。
【0106】
同様に、演算部2420は、配列Yのそれぞれにおける全ての要素に関して、配列Yの位置に対応する暗号鍵による写像を適用する。この例では、右上の配列Zの要素の値は、右上の配列Yの要素の値が全て同じであるため、全て同じになる。そして、演算部2420は、上記の処理を暗号化の対象であるデジタルコンテンツにおける全ての拡大領域に対して行う。
【0107】
図7は、本発明の一実施形態に係るコンテンツ管理装置における暗号化処理の一例を説明するフローチャートである。かかる処理は、例えば、コンテンツ管理装置20が、プロセッサ(プロセッサモジュール)の制御の下、暗号化プログラムを実行することにより、実現される。なお、かかる処理は、シーケンシャルに実行されても良いし、処理の結果に矛盾を生じない限り、並列又は並行に実行され得る。以下では、デジタルコンテンツは、画像データであるものとして説明する。
【0108】
同図示すように、コンテンツ管理装置20は、暗号化の対象となるデジタルコンテンツを、例えばデータベース22から取得する(S701)。或いは、コンテンツ管理装置20は、クライアント30からアップロードされたデジタルコンテンツを取得し得る。
【0109】
続いて、コンテンツ管理装置20は、取得したデジタルコンテンツからメタデータを抽出し、メタデータとデジタルコンテンツ本体とに抽出する(S702)。抽出したメタデータは、一時的に、メモリ及び/又は作業ファイルに保持される。
【0110】
次に、コンテンツ管理装置20は、デジタルコンテンツ本体を、所定サイズの領域、例えば、幅kw×高さkhの領域に分割する(S703)。上述したように、例えば、もとのデジタルコンテンツが320×280ピクセルの画像であれば、該画像は、64×64ピクセルの領域に分割される。なお、もとの画像のサイズが分割領域のサイズの整数倍でない場合には、もとの画像のサイズが分割領域のサイズの整数倍として扱うことができるように、もとの画像のサイズを超える部分にはゼロパディングがなされる。
【0111】
コンテンツ管理装置20は、次に、N重暗号化を行うために、カウンタCOUNT(ただし、COUNT≦N)に「1」をセットする(S704)。なお、本例では、N=2とする。続いて、コンテンツ管理装置20は、分割領域における各ピクセルに対する暗号鍵に基づく暗号化写像カーネルKを生成する(S705)。例えば、各暗号鍵は、ピクセルの8ビット階調値に対応するように、0~255までの数字のそれぞれが排他的にランダムに並べられた数列(すなわち、順列f=[f0,f1,…,f255])である。
【0112】
次に、コンテンツ管理装置20は、分割領域における各要素(すなわち、ピクセル)の値に対して、式6に示したように、対応する暗号鍵による順列写像を適用し、暗号化配列を算出する(S706)。コンテンツ管理装置20は、全ての分割領域について、暗号化写像カーネルKによる順列写像を適用する。
【0113】
暗号化写像カーネルKによる順列写像の適用後、コンテンツ管理装置20は、カウンタCOUNTの値を1つインクリメントし、(S707)、N重暗号化が完了したか否かを判定する(S708)。本例の場合、カウンタCOUNTの値がN=2を超えていないため(S708のNo)、コンテンツ管理装置20は、2回目の暗号化を行うため、暗号化された分割領域の配列のそれぞれを要素にした拡大領域を設定し(S709)、S706の処理に戻る。
【0114】
そして、コンテンツ管理装置20は、各拡大領域に対応する拡大配列に対して、暗号化写像カーネルKにおける対応する暗号鍵による順列写像をそれぞれ適用して、暗号化配列を算出する(S706)。コンテンツ管理装置20は、同様に、カウンタの値を1つインクリメントし、(S707)、N重暗号化が完了したか否かを判定する(S708)。この場合、カウンタCOUNTの値がN=2を超えるため、N重暗号化処理を終了する(S708のYes)。続いて、コンテンツ管理装置20は、一時的に記憶しておいたメタデータを読み出し、算出された全ての暗号化配列に基づくデータに、該メタデータを付与し(S710)、該メタデータが付与されたデータを暗号化されたデジタルコンテンツとして出力する(S711)。
【0115】
以上のように、コンテンツ管理装置20は、デジタルコンテンツとしてのデジタルデータを取得すると、これを上述したn-順列写像を用いて暗号化し、暗号化されたデジタルコンテンツを出力し得る。本開示に係る暗号化技術では、デジタルコンテンツからメタデータを抽出したデータ本体に対して、暗号化処理を行い、その後、抽出したメタデータを、暗号化されたデータに付与しているので、暗号化処理後においても、そのファイルフォーマットは変更されない(そのまま維持される)。したがって、デジタルコンテンツのファイルフォーマットが例えばPNG(Portable Network Graphics)である場合に、暗号化されたデジタルコンテンツは、PNGに対応したビューアにより解釈可能であるが、表示された画像は、ランダムな多数の点が現れたスノーノイズ(いわゆる砂嵐)様の画像となり、もとの画像が認識できない(
図12A及び12B参照)。
【0116】
このように、本開示に係る暗号化技術によれば、ファイルフォーマットは変更されないので、例えば、HTMLスクリプトのページ内にリンクにより埋め込まれる画像を暗号化することにより、ブラウザ上に、HTMLに基づくページを表示させる一方、そこに埋め込まれた画像は、復号化されるまで認識できない状態で表示させるといった提供が可能になる。
【0117】
コンテンツ管理装置20は、暗号化処理に対応した復号化処理を行う復号化装置としても機能し得る。復号化処理については、クライアント30を例にして以下に述べる。
【0118】
(復号化装置の説明)
図8は、本発明の一実施形態に係るシステムにおけるクライアントの構成の一例を示すブロックダイアグラムである。同図では、クライアント30の各種の構成要素(コンポーネント)のうち、本開示に関連する構成要素が示されているが、当業者にとって自明である限り、図示されていない他の構成要素も含まれ得る。すなわち、同図に示すように、クライアント30は、例えば、デジタルコンテンツ取得部310と、鍵取得部320と、メタデータ抽出部330と、復号鍵生成部340と、復号化処理部350と、メタデータ付与部360と、出力制御部370とを含み構成され得る。当業者にとって自明なように、かかるコンポーネントは、ハードウェアコンポーネントそのもの、或いは、例えば、サーバのプロセッサが、OS上で暗号化プログラムを実行することにより、各種のハードウェア資源と協働して、実現され得る。
【0119】
デジタルコンテンツ取得部310は、本開示に係る暗号化技術に従って暗号化されたデジタルコンテンツを、例えば、図示しないストレージデバイス上のファイルシステムから取得する。典型的には、復号化処理に先立ち、暗号化されたデジタルコンテンツは、通信ネットワーク10を介して、コンテンツ管理装置20からダウンロードされ、クライアント30のファイルシステムに格納されている。一例として、ユーザは、Webブラウザを用いて、Webサイトとしてのコンテンツ管理装置20にアクセスし、例えば所定のユーザ認証を受けた後、暗号化されたデジタルコンテンツをダウンロードし、ファイルシステムに保存する。
【0120】
鍵取得部320は、暗号化されたデジタルコンテンツを復号化するために配布された鍵(以下「配布鍵」という。)を、例えば、図示しないストレージデバイス上のファイルシステムから取得する。本開示では、配布鍵は、例えば、第1配布鍵と第2配布鍵とのペアで構成され、したがって、鍵取得部320は、第1配布鍵取得部3210と、第2配布鍵取得部3220とを含み構成され得る。上述したように、第1配布鍵D1は、ユーザ鍵Uの逆写像U-1であり、第2配布鍵D2は、補助鍵Vの逆写像V-1である。なお、ユーザ鍵U及び補助鍵Vがそのまま配布鍵としてユーザに配布される態様にあっては、第1配布鍵取得部3210及び第2配布鍵取得部3220は、受け取った配布鍵の逆元をそれぞれ算出することにより、第1配布鍵D1及び第2配布鍵D2を取得する。配布鍵取得部320は、例えば、第1配布鍵と第2配布鍵とを同時に取得しても良いし、別々に取得しても良い。典型的には、復号化処理に先立ち、配布鍵は、通信ネットワーク10を介して、コンテンツ管理装置20からダウンロードされ、クライアント30のファイルシステムに格納されている。例えば、ユーザは、Webブラウザを介して、Webサイトとしてのコンテンツ管理装置20にアクセスし、例えば所定のユーザ認証を受けた後、配布鍵をダウンロードし、ファイルシステムに保存する。或いは、ユーザは、メーラーを介して、復号鍵がアーカイブされた添付ファイルを含むメール受信し、該添付ファイルをファイルシステムに保存する。他の形態として、配布鍵は、例えば、USBメモリデバイスやドングルによってユーザに配布されても良い。
【0121】
メタデータ抽出部330は、取得したデジタルコンテンツを検査し、デジタルコンテンツが所定のメタデータを含む場合には、デジタルコンテンツからメタデータを抽出する。メタデータ抽出部330は、抽出したメタデータをメタデータ付与部360に出力する一方、デジタルコンテンツ本体を復号化処理部350に出力する。
【0122】
復号鍵生成部340は、本開示に係る復号化処理を実現するために必要な復号鍵を生成する。すなわち、復号鍵生成部340は、第1配布鍵D1と第2配布鍵D2とに基づいて、復号鍵F-1を生成する。より具体的には、復号鍵生成部340は、第2配布鍵D2(すなわち、補助鍵Vの逆写像V-1)に対して、第1配布鍵D1(すなわち、ユーザ鍵Uの逆写像U-1)を用いて、順列写像を適用して、復号鍵F-1(すなわち、F-1=V-1・U-1)生成する。これまでの説明から明らかなように、復号鍵F-1もまた、0~255までの数字のそれぞれを排他的に並べた数列(順列)の集合体である。また、復号鍵F-1は、復号化写像カーネルK-1として形成される。
【0123】
復号化処理部350は、復号鍵生成部340により生成された復号化写像カーネルに基づいて、暗号化されたデジタルコンテンツを復号化する。概略的には、復号化処理部350は、まず、暗号化されたデジタルコンテンツを所定のサイズの複数の領域に分割し、その後、各分割領域を示す配列に復号化写像カーネルを適用することにより、復号化配列を算出する。また、多重暗号化が適用されている場合、復号化処理部350は、各分割領域をさらに分割した分割領域を設定し、該分割領域を示す配列に暗号化写像カーネルKを適用して、復号化配列を算出することを繰り返す。復号化処理部350は、算出した復号化配列をメタデータ付与部360に出力する。暗号化処理部240は、例えば、領域分割部3510と、演算部3520とを含み構成され得る。
【0124】
領域分割部3510は、取得したデジタルコンテンツを、所定サイズの領域、すなわち、上述した暗号化処理における拡大領域のサイズの領域に分割する。すなわち、復号化処理は、暗号化処理の逆の手順をとることから、分割領域は、暗号化処理時の拡大領域のサイズの領域となる。例えば、暗号化処理時の分割領域が、64×64ピクセルであり、これを1ブロックとして、拡大領域は、縦横2×2ブロックであるものとすれば、復号化処理時の最初の分割領域は、128×128ピクセルとなる。
【0125】
演算部3520は、分割領域のブロックごとに、該ブロックに対応する配列の各ピクセルの値に対して、復号化写像カーネルK-1における対応する復号鍵をそれぞれ適用して、復号化配列を算出する。すなわち、演算部3520は、式6に示したように、分割領域を示す配列Zの全ての要素(ピクセル)のそれぞれについて、順列逆写像F-1(X)を適用して、配列Yを算出する。
【0126】
なお、多重暗号化が適用されている場合、復号化処理部350は、領域を分割しながら、定回数の順列逆写像F-1(X)の適用を繰り返し、最終的に算出された配列Yを、復号化されたもとの配列X(復号化されたデジタルコンテンツ)として、メタデータ付与部250に出力する。
【0127】
メタデータ付与部360は、算出された復号化配列に、メタデータ抽出部330により抽出されたメタデータを付与することにより、もとのファイルフォーマットを復元する。メタデータ付与部360は、復元したファイルフォーマットの復号化配列のデータセットを出力制御部260に出力する。メタデータ抽出部330からNullデータが与えられる場合、メタデータ付与部360は、復号化処理部350から受け取った復号化配列のデータセットをそのまま出力制御部370に出力する。
【0128】
出力制御部370は、受け取った復号化配列のデータセットを任意の出力先に出力する。例えば、出力制御部370は、受け取った復号化配列のデータセットをデータファイルとしてファイルシステムに格納されるように制御を行う。或いは、出力制御部370は、復号化配列のデータセットをビューアに出力し、これにより、クライアント30のビューアは、データセットを解釈して、画像として表示し得る。
【0129】
図9は、本発明の一実施形態に係るシステムにおける暗号鍵及び復号鍵を説明するための概念図である。
【0130】
同図(a)を参照して、上述したように、コンテンツ管理装置20は、暗号鍵F及びユーザ鍵Uをそれぞれ生成し、暗号鍵F及びユーザ鍵Uの逆像U-1Vに基づいて補助鍵Vを生成する。さらに、コンテンツ管理装置20は、ユーザ鍵Uの逆像U-1及び補助鍵Vの逆像V-1を、それぞれ、第1配布鍵D1及び第2配布鍵D2として、クライアント30に配布する。
【0131】
一方、クライアント30は、第1配布鍵D1と第2配布鍵D2とに基づいて、復号鍵F-1(復号化写像カーネルK-1)を算出する。
【0132】
また、同図(b)に示すように、第1配布鍵D1及び第2配布鍵D2は、クライアント30側において生成されても良い(この例では、第1配布鍵D1及び第2配布鍵D2は、配布されるものではないが、便宜上、配布鍵と称している。)。すなわち、コンテンツ管理装置20は、生成したユーザ鍵U及び補助鍵Vをそのままクライアント30に配布する。クライアント30は、受け取ったユーザ鍵U及び補助鍵Vのそれぞれについて逆像を算出し、上記(a)に等価な、第1配布鍵D1及び第2配布鍵D2を生成する。
【0133】
次に、理解の容易のため、
図6で示した例を前提に、復号化処理の例を、
図10を用いて説明する。
図10に示すように、拡大配列(すなわち、最初の分割領域)は、二重暗号化された配列Zのそれぞれを要素(ブロック)とする配列である。
【0134】
演算部3520は、まず、左上の配列Zにおける左上の要素「0」に着目する。左上の配列Zについては、復号化写像カーネルK-1における左上の復号鍵が用いられる。演算部3520は、この要素の値「0」に従って、対応する復号鍵における0番目の要素「0」を配列Yの対応する位置の要素の値に設定する。同様に、演算部3520は、左上の配列Zにおける右上の要素「2」については、対応する復号鍵における0番目の要素「2」を、左上の配列Zにおける左下の要素「0」については、対応する復号鍵における0番目の要素「0」を、左上の配列Xにおける右下の要素「2」については、対応する復号鍵における2番目の要素「2」を、それぞれ、配列Yの対応する位置の要素の値に設定する。
【0135】
同様に、右上の配列Zに関して、演算部3520は、左上の要素「2」について、右上の復号鍵における2番目の要素「2」を、配列Yの対応する要素の値に設定する。なお、この例では、右上の配列Yの要素の値は、配列Zの要素の値が全て同じであるため、全て同じになる。
【0136】
同様に、演算部3520は、左下の配列Z及び右下の配列Zに関して、それぞれ、上述したような対応する復号鍵による写像を適用する。
【0137】
分割領域がさらに分割された後、演算部3520は、上記の演算を行う。すなわち、演算部3520は、拡大配列が分割された配列Yのそれぞれに対して、復号化写像カーネルによる写像をさらに適用する。より具体的には、演算部3520は、は、左上の配列Yにおける左上の要素「0」について、左上の復号鍵における0番目の要素「0」を配列Xの対応する位置の要素の値に設定する。同様に、演算部3520は、左上の配列Yにおける右上の要素「2」については、右上の復号鍵における2番目の要素「2」を配列Xの対応する位置の要素の値に設定する。この場合の復号化においては、配列Yの要素の位置にそれぞれ対応する復号鍵が用いられることに留意されたい。同様に、演算部3520は、左上の配列Yにおける左下の要素「0」については、左下の復号鍵における0番目の要素「1」を、左上の配列Xにおける右下の要素「2」については、右下の復号鍵における2番目の要素「0」を、それぞれ、配列Xの対応する位置の要素の値に設定する。
【0138】
同様に、拡大配列における右上の配列Y、左下の配列Y、及び右下の配列Yに関して、演算部3520は、対応する復号鍵による写像を適用する。そして、演算部3520は、復号化の対象であるデジタルコンテンツにおける全ての拡大領域に対して行う。
【0139】
図11は、本発明の一実施形態に係るクライアントにおける復号化処理の一例を説明するフローチャートである。かかる処理は、例えば、クライアント30が、プロセッサ(プロセッサモジュール)の制御の下、復号化プログラムを実行することにより、実現される。かかる処理は、シーケンシャルに実行されても良いし、処理の結果に矛盾を生じない限り、並列又は並行に実行され得る。以下では、クライアント30における復号化処理を説明するが、コンテンツ管理装置20における復号化処理も同様である。
【0140】
同図示すように、クライアント30は、復号化の対象となるデジタルコンテンツを、例えばコンテンツ管理装置20から取得する(S1101)。例えば、クライアント30は、コンテンツ管理装置20にアクセスし、所望のデジタルコンテンツをダウンロードする。ダウンロードされたデジタルコンテンツは、本開示に係る暗号化技術により暗号化されたデジタルデータである。
【0141】
続いて、クライアント30は、取得したデジタルコンテンツからメタデータを抽出し、メタデータとデジタルコンテンツ本体とに抽出する(S1102)。抽出したメタデータは、一時的に、メモリ及び/又は作業ファイルに保持される。
【0142】
次に、クライアント30は、復号鍵を既に保持しているか否かを判定する(S1103)。クライアント30は、復号鍵F-1を既に保持していると判定した場合(S1103のYes)、S1106の処理に移行する。これに対して、クライアント30は、復号鍵F-1を未だ保持していないと判定した場合(S1103のNo)、配布鍵を、例えばコンテンツ管理装置20から取得する(S1104)。本例では、配布鍵は、第1配布鍵と第2配布鍵とからなる。クライアント30は、取得した配布鍵に基づいて、復号鍵F-1(すなわち、復号化写像カーネルK-1)を生成する(S1105)。
【0143】
なお、本例では、クライアント30は、デジタルコンテンツを取得した後に、配布鍵を取得しているが、これに限られるものではなく、配布鍵を予め取得しておき、その後、デジタルコンテンツを取得しても良い。
【0144】
復号鍵F-1を獲得したクライアント30は、続いて、取得したデジタルコンテンツを、適用されたN重暗号化(本例ではN=2)に対応した所定サイズの領域に分割する(S1102)。上述した例に従えば、320×280ピクセルの画像は、128×128ピクセルの領域にそれぞれ分割される。なお、もとの画像のサイズが該領域のサイズの整数倍でない場合には、もとの画像のサイズを超える領域の部分にはゼロパディングがなされる。
【0145】
クライアント30は、次に、N重復号化を行うために、カウンタCOUNT(ただし、COUNT≦N)に「1」をセットする(S1107)。続いて、クライアント30は、該分割領域に対応する配列の各要素の値に対して、対応する復号化写像カーネルK-1による写像を適用し、復号化された配列を算出する(S1108)。コンテンツ管理装置20は、全ての分割領域について、復号化写像カーネルK-1による順列写像を適用する。
【0146】
復号化写像カーネルK-1による写像の適用後、クライアント30は、カウンタの値を1つインクリメントし、(S1109)、N重復号化が完了したか否かを判定する(S1110)。本例の場合、カウンタCOUNTの値がN=2を超えていないため(S1109のNo)、クライアント30は、S1106の処理に戻り、復号化された分割領域をさらに小さな領域に分割する(S1106)。
【0147】
以降、同様にして、クライアント30は、各分割領域に対して、復号化写像カーネルK-1による写像を適用し、復号化を行う。すなわち、クライアント30は、各分割領域の配列に対して、復号化写像カーネルK-1における対応する復号鍵による写像をそれぞれ適用して、復号化配列を算出する(S1108)。続いて、クライアント30は、カウンタCOUNTの値を1つインクリメントし、(S1109)、N重暗号化が完了したか否かを判定する(S1110)。この場合、カウンタCOUNTの値がN=2を超えるため、N重復号化処理を終了する(S1110のYes)。続いて、クライアント30は、一時的に記憶しておいたメタデータを読み出し、算出された全ての復号化配列に基づくデータに該メタデータを付与し(S1111)、該メタデータが付与されたデータを復号化されたデジタルコンテンツとして出力する(S1112)。
【0148】
以上のように、クライアント30は、暗号化されたデジタルコンテンツとしてのデジタルデータを取得すると、これを上述したn-順列写像を用いて復号化し、もとのデジタルコンテンツに復元し、出力し得る。
【0149】
(実験例)
図12A~12Cは、本開示に係る暗号化/復号化技術を、所定のファイルフォーマットの画像に適用した例を示している。すなわち、
図12Aは、320×280ピクセル、8ビット階調(グレイスケール)の画像を示している。このもとの画像に対し、本開示に係る暗号化技術を適用すると、
図12Bに示すような画像となった。同図から明らかなように、暗号化技術が施された画像は、ファイルフォーマットが維持されるため、ユーザは、ビューアで確認することができるが、ユーザにとっては何ら意味をなさないものとなる。なお、
図12Bに示す画像に対し、本開示に係る復号化技術を適用することにより、
図12Cに示すようなもとの画像に復元された。なお、
図13は、暗号鍵F又はユーザ鍵Uの一例である。本例では、暗号鍵F又はユーザ鍵Uは、4×1024ピクセルの所定のファイルフォーマット(例えばPNG形式)の画像データで表現されている。
【0150】
[第2の実施形態]
本実施形態は、第1の実施形態の変形であり、上述したユーザ鍵U及び補助鍵Vを、オフセット値を適用して、隠蔽する技術を開示する。
【0151】
上述した
図2を用いて説明すれば、例えば、ユーザ鍵生成部2320は、第1のオフセット値(p,q)を保持する一方、補助鍵生成部2330は、第2のオフセット値(r,s)を保持している。ここで、p及びrは、2次元平面におけるx方向へオフセット値を示し、q及びsは、y方向へのオフセット値を示しているが、これに限られず、3次元空間におけるオフセット値が用いられても良い。一例として、暗号化プログラムには、第1のオフセット値(p,q)及び第2のオフセット値(r,s)が隠蔽的に埋め込まれている。
【0152】
ユーザ鍵生成部2320は、生成したユーザ鍵Uに対して、第1のオフセット値(p,q)を適用した後、オフセットされたユーザ鍵UOFFSETを第1配布鍵生成部2340に出力する。同様に、補助鍵生成部2330は、生成した補助鍵Vに対して、第2のオフセット値(r,s)を適用した後、オフセットされた補助鍵VOFFSETを第2配布鍵生成部230に出力する。
【0153】
第1配布鍵生成部2340及び第2配布鍵生成部230は、それぞれ、上述したように、オフセットされたユーザ鍵UOFFSET及びオフセットされた補助鍵VOFFSETの逆像を算出し、それらを第1配布鍵及び第2配布鍵として出力する。
【0154】
一方、暗号化されたデジタルコンテンツを復号化しようとするクライアント30は、上記の第1のオフセット値(p,q)及び第2のオフセット値(r,s)を知らなければ、本来の第1配布鍵及び第2配布鍵を取得できないことになる。そこで、クライアント30の第1配布鍵取得部3210及び第2配布鍵取得部3220(
図8参照)は、予め第1のオフセット値(p,q)及び第2のオフセット値(r,s)が与えられている。一例として、クライアント30に配布される復号化プログラムには、第1のオフセット値(p,q)及び第2のオフセット値(r,s)が隠蔽的に埋め込まれている。第1配布鍵取得部3210及び第2配布鍵取得部3220は、外部から第1配布鍵及び第2配布鍵を取得すると、保持している第1のオフセット値(p,q)及び第2のオフセット値(r,s)をそれぞれ適用して、本来の第1配布鍵及び第2配布鍵を生成する。
【0155】
なお、オフセット値は、例えば、ユーザごとに設定され得る。したがって、復号化プログラムもまた、ユーザごとに異なるオフセット値が隠蔽的に埋め込まれ、クライアント30に配布され得る。
【0156】
以上のように、本実施形態によれば、ユーザごとに異なるオフセット値によりユーザ鍵及び補助鍵がオフセットされ、これらが配布鍵として配布されるので、たとえ配布鍵が意図せずに流出したとしても、正当なユーザ以外の第三者は、オフセット値を知らなければ、復号化することができない。
【0157】
以上のように、本開示によれば、有限要素からなる多次元配列(N次元配列)の任意のデジタルデータに対して、n-順列写像を適用することにより、外形的枠組みを変えることなく、すなわち、ファイルフォーマットを維持したまま、暗号化及び復号化を行うことができるようになる。これは、暗号化/復号化処理の実装及び運用等を、既存のシステム上に最小限の工数及び運用負荷等で実現することができることを意味する。
【0158】
とりわけ、本開示に係る暗号化/復号化技術は、汎用的なファイルフォーマットが広く用いられている分野において、そのようなファイルフォーマットに適合した装置(例えば動/静止画カメラ、音響音声機器等の各種装置)に容易に実装することができ、これにより、高い機密性を必要とするデジタルデータの保護を図ることができるようになる。
【0159】
また、本開示に係る暗号化/復号化技術を実装した装置は、各配列の要素に対して、1オーダーで暗号化及び復号化処理を行うことができる。また、暗号化/復号化装置は、GPUを用いる場合、そのピクセルシェーダにより、その処理をさらに高速化することができる。
【0160】
また、本開示に係る暗号化/復号化技術を実装した装置において、オフセット値を用いることにより、ユーザ鍵及び補助鍵を隠蔽した上で、これらを配布鍵として配布するので、たとえ配布鍵が意図せずに流出したとしても、正当なユーザ以外の第三者は、オフセット値を知らなければ、正しく暗号化/復号化することができないので、デジタルコンテンツのより強固な暗号化/復号化が達成される。
【0161】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
【0162】
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【0163】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
【符号の説明】
【0164】
1…コンピュータシステム
10…通信ネットワーク
20…コンテンツ管理装置
22…データベース
24…サーバ
210…デジタルコンテンツ取得部
220…メタデータ抽出部
230…鍵生成部
2310…暗号鍵生成部
2320…ユーザ鍵生成部
2330…補助鍵生成部
2340…第1配布鍵生成部
2350…第2配布鍵生成部
240…暗号化処理部
2410…領域分割部
2420…演算部
2430…拡大領域設定部
250…メタデータ抽出部
260…出力制御部
30…クライアント
310…デジタルコンテンツ取得部
320…メタデータ抽出部
320…鍵取得部
3210…第1配布鍵取得部
3220…第2配布鍵取得部
340…復号鍵生成部
350…復号化処理部
3510…領域分割部
3520…演算部
360…メタデータ抽出部
370…出力制御部