説明

圧縮暗号化装置、復号伸長装置、それらの方法、及びプログラム

【課題】秘匿性が高い圧縮データの暗号文を生成する。
【解決手段】圧縮暗号化装置10が、データを圧縮した圧縮データを生成し、圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成し、パディング済み圧縮データを暗号化した暗号文を生成する。復号伸長装置20が、この暗号文を復号してパディング済み圧縮データを得、パディング済み圧縮データの一部を圧縮データとして取り出し、圧縮データを伸長する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの圧縮・暗号化技術及びそれによって得られた暗号文の復号・伸長技術に関する。
【背景技術】
【0002】
データの意味を保ったまま、データ量を削減するデータ圧縮処理が知られている(例えば、特許文献1〜3、非特許文献1等参照)。データ圧縮方式は可逆圧縮処理と不可逆圧縮処理とに大別され、それぞれ様々な方式が存在する。多くのデータ圧縮方式では、データの繰り返し回数、出現頻度、データ間の相関などのデータ内容に依存する情報(すなわち、データ内容から特定される情報)を用いてデータ量を削減する手法がとられる。この場合、データ圧縮処理による圧縮率はデータ内容に応じて相違し、圧縮されたデータ(圧縮データ)の長さ(データ長)から圧縮前のデータの情報が得られる場合がある。
【0003】
また、データ(平文)を暗号化し、データを秘匿した暗号文を生成する暗号化処理が知られている(例えば、非特許文献2等参照)。暗号化方式には様々な方式が存在し、暗号化方式によっては、暗号文の長さからデータ(平文)の長さの情報が得られる場合がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第4464650号明細書
【特許文献2】米国特許第4814746号明細書
【特許文献3】米国特許第4558302号明細書
【非特許文献】
【0005】
【非特許文献1】P. Deusch, "RFC1951: DEFLATE Compressed Data Format Specification version 1.3"
【非特許文献2】"ISO/IEC 10116: Information technology - Security techniques - Modes of operation for an n-nit block cipher"
【発明の概要】
【発明が解決しようとする課題】
【0006】
データ量を削減しつつデータを秘匿する方法として、データ(平文)に対するデータ圧縮処理を行って得られた圧縮データに対し、さらに、暗号化処理を行う圧縮・暗号化方法がある。しかし、従来の圧縮・暗号化方法では、暗号化処理によって得られた暗号文の長さから圧縮前のデータに関する情報が知られてしまう場合がある。なぜなら、暗号文の長さから圧縮データの長さの情報が得られる場合があり、圧縮データの長さから圧縮前のデータの情報が得られる場合があるからである。
【0007】
本発明はこのような点に鑑みてなされたものであり、秘匿性が高い圧縮データの暗号文を生成可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の圧縮・暗号化技術では、データを圧縮した圧縮データを生成し、圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成し、パディング済み圧縮データを暗号化した暗号文を生成する。
【0009】
本発明の復号・伸長技術では、この暗号文を復号してパディング済み圧縮データを得、パディング済み圧縮データの一部を圧縮データとして取り出し、圧縮データを伸長する。
【発明の効果】
【0010】
本発明のパディングデータの長さは秘密とされるため、攻撃者はパディング済み圧縮データの長さから圧縮前のデータの情報を得ることはできない。そのため、パディング済み圧縮データを暗号化した暗号文の長さから圧縮前のデータの情報を得ることもできない。このように本発明では、秘匿性が高い圧縮データの暗号文を生成できる。
【図面の簡単な説明】
【0011】
【図1】実施形態の圧縮暗号化装置及び復号伸長装置の構成を説明するためのブロック図。
【図2】実施形態のパディング済み圧縮データの構成を説明するためのブロック図。
【図3】実施形態の圧縮暗号化方法及び復号伸長方法を説明するためのブロック図。
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施形態を説明する。
【0013】
<構成>
図1は、本実施形態の圧縮暗号化装置及び復号伸長装置の機能構成を説明するためのブロック図である。
【0014】
図1に例示するように、本実施形態の圧縮暗号化装置10は、鍵メモリ11とメモリ12と制御部13と圧縮部14とパディング部15と暗号化部16と正整数入力部17とデータ入力部18とを有する。図1に例示するように、本実施形態の復号伸長装置20は、鍵メモリ21とメモリ22と制御部23と復号部24と圧縮データ取り出し部25と伸長部26とを有する。
【0015】
圧縮暗号化装置10や復号伸長装置20は、例えば、CPU(central processing unit)、RAM(random-access memory)、ROM(read-only memory)等からなる公知又は専用のコンピュータに所定のプログラムが読み込まれて実行されることで構成される特別な装置である。制御部13、圧縮部14、パディング部15、暗号化部16、制御部23、復号部24、圧縮データ取り出し部25、及び伸長部26などの処理部は、例えば、所定のプログラムを実行するCPUや集積回路である。鍵メモリ11,21、及びメモリ12,22は、例えば、補助記憶装置、RAM、キャッシュメモリ、レジスタ若しくは集積回路の一部又はそれらの少なくとも一部を結合した記憶領域である。正整数入力部17、及びデータ入力部18は、例えば、入力端子、入力インタフェース、データ読み取り装置、所定のプログラムを実行するCPUや集積回路などである。以下では説明を省略するが、圧縮暗号化装置10は、制御部13の制御のもと各処理を実行し、復号伸長装置20は、制御部23の制御のもと各処理を実行する。各処理部から出力されたデータは、逐一、メモリ12,22に格納され、必要に応じて他の処理部から読み出されて使用される。
【0016】
<事前処理>
本形態の圧縮暗号化処理や復号伸長処理の前処理として、圧縮暗号化装置10の鍵メモリ11に暗号化のための鍵が格納され、復号伸長装置20の鍵メモリ21に復号のための鍵が格納される。これらの鍵は圧縮暗号化装置10及び復号伸長装置20で使用される暗号化方式に対応する。例えば、使用される暗号化方式がRSAやElGamal暗号などの公開鍵暗号方式である場合には、圧縮暗号化装置10の鍵メモリ11には公開鍵が格納され、復号伸長装置20の鍵メモリ21には当該公開鍵に対応する秘密鍵が格納される。例えば、使用される暗号化方式がCamellia(登録商標)やAESなどの共通鍵暗号方式である場合には、圧縮暗号化装置10の鍵メモリ11と復号伸長装置20の鍵メモリ21には同一の共通鍵が格納される。
【0017】
<圧縮暗号化処理>
図3Aを用いて本実施形態の圧縮暗号化処理を説明する。
【0018】
圧縮暗号化装置10(図1)の正整数入力部17に任意の正整数Nが入力される。例えば、正整数Nは圧縮暗号化処理が行われるたびにランダムに選択される値であってもよいし、複数回の圧縮暗号化処理に対して共通して用いられる値であってもよいし、すべての圧縮暗号化処理に共通する固定値であってもよい。安全性の観点からは正整数Nが固定値であることが望ましい。さらに、安全性の観点からは正整数Nが後述するデータMやその圧縮データと独立した秘密値であり、正整数NがデータMやその圧縮データの情報を含まないことが望ましい。このように正整数入力部17に与えられた任意の正整数Nはパディング部15に送られる(ステップS11)。
【0019】
データ入力部18に処理対象のデータMが入力され、圧縮部14に送られる(ステップS12)。
【0020】
圧縮部14はデータMを圧縮して圧縮データを生成する。用いられる圧縮方式は、非可逆圧縮符号化方式であってもよいし、可逆圧縮符号化方式であってもよい。圧縮データはパディング部15に送られる(ステップS13)。
【0021】
パディング部15は、圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成する。「秘密の長さのパディングデータ」とは、長さが圧縮暗号化装置10の外部に秘匿されたパディングデータを意味する。本形態では、圧縮データの長さとパディングデータの長さとの合計が任意な正整数の倍数であるものとする(ステップS14)。
【0022】
[ステップS14の具体例]
パディング部15は、送られた圧縮データの長さCを計算し、この長さCを表すデータを固定長符号化し、圧縮データの長さデータとする。圧縮データの長さデータは固定長L(Lは正整数)のデータであり、当該固定長Lは予め定められている。また、データの長さの例は、データのビット長やオクテット長などである。
【0023】
次にパディング部15は、正整数Nと圧縮データの長さCとを用い、パディングデータの長さP(Pは正整数)を計算する。パディングデータの長さPは、P+Cが正整数Nの倍数N・A(Aは正整数)となるように定められる(P+C=N・A)。P+CがデータMの長さ以上となったのではステップS13でデータMを圧縮する意義がなくなるため、PはP+CがデータMの長さ未満となるように定められることが望ましい。例えば、パディング部15は以下の式に従ってパディングデータの長さPを計算する。
【0024】
P=N−{C mod N} …(1)
ここで、modは剰余演算であり、Nは2以上である。式(1)の場合にはNの値が大きいほど安全性が高くなる。
【0025】
次にパディング部15は、長さPのパディングデータを生成する。パディングデータは任意のデータであってもよい。パディングデータの例は、連続する「0」ビットからなる長さPのデータ、連続する「1」ビットからなる長さPのデータ、「0」ビットと「1」ビットとが混在した長さPのデータなどである。
【0026】
パディング部15は、上述した圧縮データの長さデータと圧縮データとパディングデータとを予め定められた順序で連結し、パディング済み圧縮データを生成する。本形態では、例えば、圧縮データの長さデータの後に圧縮データを連結し、圧縮データの後にパディングデータを連結する。図2は、このように生成したパディング済み圧縮データの例である。この例のパディング済み圧縮データ100は、長さLの圧縮データの長さデータ101と、長さCの圧縮データ102と、長さPのパディングデータ103とを連結したデータである。圧縮データ102とパディングデータ103とを連結したデータの長さはN・Aである([ステップS14の具体例]の説明終わり)。
【0027】
パディング済み圧縮データは暗号化部16に送られる。暗号化部16は、鍵メモリ11から暗号化のための鍵を抽出し、それを用いてパディング済み圧縮データを暗号化し、暗号文E(M)を生成する。暗号化部16は、暗号文E(M)を出力する(ステップS15)。
【0028】
<復号伸長処理>
図3Bを用いて本実施形態の復号伸長処理を説明する。
【0029】
暗号文E(M)が復号伸長装置20(図1)の復号部24に入力される。復号部24は鍵メモリ21から復号のための鍵を抽出し、それを用いて暗号文E(M)を復号してパディング済み圧縮データを得る。パディング済み圧縮データは圧縮データ取り出し部25に送られる(ステップS21)。
【0030】
圧縮データ取り出し部25は、パディング済み圧縮データの一部を圧縮データとして取り出す(ステップS22)。
【0031】
[ステップS22の具体例]
圧縮データ取り出し部25は、パディング済み圧縮データが含む圧縮データの長さデータを復号して圧縮データの長さCを得る。本形態では、圧縮データの長さデータと圧縮データとパディングデータとを連結する順序が予め定められており、圧縮データの長さデータが固定長(長さL)である。そのため、パディング済み圧縮データから圧縮データの長さデータを抽出し、それを復号して圧縮データの長さCを得ることができる。例えば、図2のパディング済み圧縮データ100の場合、圧縮データ取り出し部25は、パディング済み圧縮データ100の先頭から長さLのデータを、圧縮データの長さデータ101として抽出し、それを復号することで圧縮データの長さCを得ることができる。
【0032】
次に圧縮データ取り出し部25は、圧縮データの長さCを用い、パディング済み圧縮データが含む圧縮データを抽出する。本形態では、圧縮データの長さデータと圧縮データとパディングデータとを連結する順序が予め定められているため、圧縮データの長さCを用いて圧縮データを抽出できる。例えば、図2のパディング済み圧縮データ100の場合、圧縮データ取り出し部25は、圧縮データの長さデータ101に続く長さCのデータを、圧縮データ102として抽出できる([ステップS22の具体例]の説明終わり)。
【0033】
圧縮データ102は伸長部26に送られる。伸長部26は、圧縮データを伸長してデータM’を得、それを出力する。
【0034】
<本実施形態の特徴>
本実施形態では圧縮データに長さが秘密のパディングデータを追加するため、暗号文の長さからパディング済み圧縮データの長さの情報が得られても、圧縮データの長さの情報が得られることを抑制でき、圧縮前のデータの内容に関する情報が得られることを抑制できる。これにより、本実施形態では、秘匿性が高い暗号文を生成できる。
【0035】
特に、式(1)のようにパディングデータの長さPを定めた場合、パディングデータの長さPをN以下に制限することができる。一方、この場合にはNの値が大きいほど安全性が高くなる。すなわち、式(1)のようにパディングデータの長さPを定めた場合、正整数Nの大きさを調整することで、安全性とパディング済み圧縮データの長さとのバランスを調整することができる。
【0036】
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上記では圧縮暗号化処理ごとにステップS11が実行されることとしたが、複数の圧縮暗号化処理ごとにステップS11が実行されてもよいし、事前処理でステップS11が実行されてもよい。また、ステップS11がステップS12とS13との間や、ステップS13とS14との間に実行されてもよい。また、暗号化対象データがその他のデータを含んでもよい。
【0037】
正整数Nを固定値とし、式(1)のようにパディングデータの長さPを定める場合には、データMごとにパディングデータの長さPが定まる。そのため、同一のデータMを複数回処理する場合などには、データMとそれに対して計算したパディングデータの長さPとを対応付けて記憶部に格納しておき、再びデータMを処理する際には式(1)を計算することなく記憶領域に格納されたパディングデータの長さPを用いて処理を行ってもよい。一方、毎回、式(1)のようにパディングデータの長さPを定める場合には、このような記憶領域は不要となる。
【0038】
上記では圧縮データの長さとパディングデータの長さとの合計が任意な正整数の倍数である例を示したが、パディングデータの長さが圧縮暗号化装置10の外部に秘匿されるのであれば、どのような長さのパディングデータであってもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0039】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0040】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体は、非一時的(non-transitory)な記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【0041】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0042】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0043】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0044】
10 圧縮暗号化装置
20 復号伸長装置

【特許請求の範囲】
【請求項1】
データを圧縮した圧縮データを生成する圧縮部と、
前記圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成するパディング部と、
前記パディング済み圧縮データを暗号化した暗号文を生成する暗号化部と、
を有する圧縮暗号化装置。
【請求項2】
請求項1の圧縮暗号化装置であって、
前記パディングデータの長さをPとし、前記圧縮データの長さをCとし、任意の正整数をNとした場合に、P=N−{C mod N}を満たす、
ことを特徴とする圧縮暗号化装置。
【請求項3】
暗号文を復号してパディング済み圧縮データを得る復号部と、
前記パディング済み圧縮データの一部を圧縮データとして取り出す圧縮データ取り出し部と、
前記圧縮データを伸長する伸長部と、
を有する復号伸長装置。
【請求項4】
データを圧縮した圧縮データを生成する圧縮ステップと、
前記圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成するパディングステップと、
前記パディング済み圧縮データを暗号化した暗号文を生成する暗号化ステップと、
を有する圧縮暗号化方法。
【請求項5】
暗号文を復号してパディング済み圧縮データを得る復号ステップと、
前記パディング済み圧縮データの一部を圧縮データとして取り出す圧縮データ取り出しステップと、
前記圧縮データを伸長する伸長ステップと、
を有する復号伸長方法。
【請求項6】
データを圧縮した圧縮データを生成する圧縮ステップと、
前記圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成するパディングステップと、
前記パディング済み圧縮データを暗号化した暗号文を生成する暗号化ステップと、
をコンピュータに実行させるためのプログラム。
【請求項7】
暗号文を復号してパディング済み圧縮データを得る復号ステップと、
前記パディング済み圧縮データの一部を圧縮データとして取り出す圧縮データ取り出しステップと、
前記圧縮データを伸長する伸長ステップと、
をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate