(57)【要約】【課題】秘匿性が高い圧縮データの暗号文を生成する。【解決手段】圧縮暗号化装置１０が、データを圧縮した圧縮データを生成し、圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成し、パディング済み圧縮データを暗号化した暗号文を生成する。復号伸長装置２０が、この暗号文を復号してパディング済み圧縮データを得、パディング済み圧縮データの一部を圧縮データとして取り出し、圧縮データを伸長する。【選択図】図１
2012129920.tif 000002
【特許請求の範囲】
【請求項１】
データを圧縮した圧縮データを生成する圧縮部と、
前記圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成するパディング部と、
前記パディング済み圧縮データを暗号化した暗号文を生成する暗号化部と、
を有する圧縮暗号化装置。
【請求項２】
請求項１の圧縮暗号化装置であって、
前記パディングデータの長さをＰとし、前記圧縮データの長さをＣとし、任意の正整数をＮとした場合に、Ｐ＝Ｎ−｛Ｃ ｍｏｄ Ｎ｝を満たす、
ことを特徴とする圧縮暗号化装置。
【請求項３】
暗号文を復号してパディング済み圧縮データを得る復号部と、
前記パディング済み圧縮データの一部を圧縮データとして取り出す圧縮データ取り出し部と、
前記圧縮データを伸長する伸長部と、
を有する復号伸長装置。
【請求項４】
データを圧縮した圧縮データを生成する圧縮ステップと、
前記圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成するパディングステップと、
前記パディング済み圧縮データを暗号化した暗号文を生成する暗号化ステップと、
を有する圧縮暗号化方法。
【請求項５】
暗号文を復号してパディング済み圧縮データを得る復号ステップと、
前記パディング済み圧縮データの一部を圧縮データとして取り出す圧縮データ取り出しステップと、
前記圧縮データを伸長する伸長ステップと、
を有する復号伸長方法。
【請求項６】
データを圧縮した圧縮データを生成する圧縮ステップと、
前記圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成するパディングステップと、
前記パディング済み圧縮データを暗号化した暗号文を生成する暗号化ステップと、
をコンピュータに実行させるためのプログラム。
【請求項７】
暗号文を復号してパディング済み圧縮データを得る復号ステップと、
前記パディング済み圧縮データの一部を圧縮データとして取り出す圧縮データ取り出しステップと、
前記圧縮データを伸長する伸長ステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの圧縮・暗号化技術及びそれによって得られた暗号文の復号・伸長技術に関する。
【背景技術】
【０００２】
データの意味を保ったまま、データ量を削減するデータ圧縮処理が知られている（例えば、特許文献１〜３、非特許文献１等参照）。データ圧縮方式は可逆圧縮処理と不可逆圧縮処理とに大別され、それぞれ様々な方式が存在する。多くのデータ圧縮方式では、データの繰り返し回数、出現頻度、データ間の相関などのデータ内容に依存する情報（すなわち、データ内容から特定される情報）を用いてデータ量を削減する手法がとられる。この場合、データ圧縮処理による圧縮率はデータ内容に応じて相違し、圧縮されたデータ（圧縮データ）の長さ（データ長）から圧縮前のデータの情報が得られる場合がある。
【０００３】
また、データ（平文）を暗号化し、データを秘匿した暗号文を生成する暗号化処理が知られている（例えば、非特許文献２等参照）。暗号化方式には様々な方式が存在し、暗号化方式によっては、暗号文の長さからデータ（平文）の長さの情報が得られる場合がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第４４６４６５０号明細書
【特許文献２】米国特許第４８１４７４６号明細書
【特許文献３】米国特許第４５５８３０２号明細書
【非特許文献】
【０００５】
【非特許文献１】P. Deusch, "RFC1951: DEFLATE Compressed Data Format Specification version 1.3"
【非特許文献２】"ISO/IEC 10116: Information technology - Security techniques - Modes of operation for an n-nit block cipher"
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データ量を削減しつつデータを秘匿する方法として、データ（平文）に対するデータ圧縮処理を行って得られた圧縮データに対し、さらに、暗号化処理を行う圧縮・暗号化方法がある。しかし、従来の圧縮・暗号化方法では、暗号化処理によって得られた暗号文の長さから圧縮前のデータに関する情報が知られてしまう場合がある。なぜなら、暗号文の長さから圧縮データの長さの情報が得られる場合があり、圧縮データの長さから圧縮前のデータの情報が得られる場合があるからである。
【０００７】
本発明はこのような点に鑑みてなされたものであり、秘匿性が高い圧縮データの暗号文を生成可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の圧縮・暗号化技術では、データを圧縮した圧縮データを生成し、圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成し、パディング済み圧縮データを暗号化した暗号文を生成する。
【０００９】
本発明の復号・伸長技術では、この暗号文を復号してパディング済み圧縮データを得、パディング済み圧縮データの一部を圧縮データとして取り出し、圧縮データを伸長する。
【発明の効果】
【００１０】
本発明のパディングデータの長さは秘密とされるため、攻撃者はパディング済み圧縮データの長さから圧縮前のデータの情報を得ることはできない。そのため、パディング済み圧縮データを暗号化した暗号文の長さから圧縮前のデータの情報を得ることもできない。このように本発明では、秘匿性が高い圧縮データの暗号文を生成できる。
【図面の簡単な説明】
【００１１】
【図１】実施形態の圧縮暗号化装置及び復号伸長装置の構成を説明するためのブロック図。
【図２】実施形態のパディング済み圧縮データの構成を説明するためのブロック図。
【図３】実施形態の圧縮暗号化方法及び復号伸長方法を説明するためのブロック図。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施形態を説明する。
【００１３】
＜構成＞
図１は、本実施形態の圧縮暗号化装置及び復号伸長装置の機能構成を説明するためのブロック図である。
【００１４】
図１に例示するように、本実施形態の圧縮暗号化装置１０は、鍵メモリ１１とメモリ１２と制御部１３と圧縮部１４とパディング部１５と暗号化部１６と正整数入力部１７とデータ入力部１８とを有する。図１に例示するように、本実施形態の復号伸長装置２０は、鍵メモリ２１とメモリ２２と制御部２３と復号部２４と圧縮データ取り出し部２５と伸長部２６とを有する。
【００１５】
圧縮暗号化装置１０や復号伸長装置２０は、例えば、ＣＰＵ（central processing unit）、ＲＡＭ（random-access memory）、ＲＯＭ（read-only memory）等からなる公知又は専用のコンピュータに所定のプログラムが読み込まれて実行されることで構成される特別な装置である。制御部１３、圧縮部１４、パディング部１５、暗号化部１６、制御部２３、復号部２４、圧縮データ取り出し部２５、及び伸長部２６などの処理部は、例えば、所定のプログラムを実行するＣＰＵや集積回路である。鍵メモリ１１，２１、及びメモリ１２，２２は、例えば、補助記憶装置、ＲＡＭ、キャッシュメモリ、レジスタ若しくは集積回路の一部又はそれらの少なくとも一部を結合した記憶領域である。正整数入力部１７、及びデータ入力部１８は、例えば、入力端子、入力インタフェース、データ読み取り装置、所定のプログラムを実行するＣＰＵや集積回路などである。以下では説明を省略するが、圧縮暗号化装置１０は、制御部１３の制御のもと各処理を実行し、復号伸長装置２０は、制御部２３の制御のもと各処理を実行する。各処理部から出力されたデータは、逐一、メモリ１２，２２に格納され、必要に応じて他の処理部から読み出されて使用される。
【００１６】
＜事前処理＞
本形態の圧縮暗号化処理や復号伸長処理の前処理として、圧縮暗号化装置１０の鍵メモリ１１に暗号化のための鍵が格納され、復号伸長装置２０の鍵メモリ２１に復号のための鍵が格納される。これらの鍵は圧縮暗号化装置１０及び復号伸長装置２０で使用される暗号化方式に対応する。例えば、使用される暗号化方式がＲＳＡやＥｌＧａｍａｌ暗号などの公開鍵暗号方式である場合には、圧縮暗号化装置１０の鍵メモリ１１には公開鍵が格納され、復号伸長装置２０の鍵メモリ２１には当該公開鍵に対応する秘密鍵が格納される。例えば、使用される暗号化方式がＣａｍｅｌｌｉａ（登録商標）やＡＥＳなどの共通鍵暗号方式である場合には、圧縮暗号化装置１０の鍵メモリ１１と復号伸長装置２０の鍵メモリ２１には同一の共通鍵が格納される。
【００１７】
＜圧縮暗号化処理＞
図３Ａを用いて本実施形態の圧縮暗号化処理を説明する。
【００１８】
圧縮暗号化装置１０（図１）の正整数入力部１７に任意の正整数Ｎが入力される。例えば、正整数Ｎは圧縮暗号化処理が行われるたびにランダムに選択される値であってもよいし、複数回の圧縮暗号化処理に対して共通して用いられる値であってもよいし、すべての圧縮暗号化処理に共通する固定値であってもよい。安全性の観点からは正整数Ｎが固定値であることが望ましい。さらに、安全性の観点からは正整数Ｎが後述するデータＭやその圧縮データと独立した秘密値であり、正整数ＮがデータＭやその圧縮データの情報を含まないことが望ましい。このように正整数入力部１７に与えられた任意の正整数Ｎはパディング部１５に送られる（ステップＳ１１）。
【００１９】
データ入力部１８に処理対象のデータＭが入力され、圧縮部１４に送られる（ステップＳ１２）。
【００２０】
圧縮部１４はデータＭを圧縮して圧縮データを生成する。用いられる圧縮方式は、非可逆圧縮符号化方式であってもよいし、可逆圧縮符号化方式であってもよい。圧縮データはパディング部１５に送られる（ステップＳ１３）。
【００２１】
パディング部１５は、圧縮データに秘密の長さのパディングデータを連結したパディング済み圧縮データを生成する。「秘密の長さのパディングデータ」とは、長さが圧縮暗号化装置１０の外部に秘匿されたパディングデータを意味する。本形態では、圧縮データの長さとパディングデータの長さとの合計が任意な正整数の倍数であるものとする（ステップＳ１４）。
【００２２】
［ステップＳ１４の具体例］
パディング部１５は、送られた圧縮データの長さＣを計算し、この長さＣを表すデータを固定長符号化し、圧縮データの長さデータとする。圧縮データの長さデータは固定長Ｌ（Ｌは正整数）のデータであり、当該固定長Ｌは予め定められている。また、データの長さの例は、データのビット長やオクテット長などである。
【００２３】
次にパディング部１５は、正整数Ｎと圧縮データの長さＣとを用い、パディングデータの長さＰ（Ｐは正整数）を計算する。パディングデータの長さＰは、Ｐ＋Ｃが正整数Ｎの倍数Ｎ・Ａ（Ａは正整数）となるように定められる（Ｐ＋Ｃ＝Ｎ・Ａ）。Ｐ＋ＣがデータＭの長さ以上となったのではステップＳ１３でデータＭを圧縮する意義がなくなるため、ＰはＰ＋ＣがデータＭの長さ未満となるように定められることが望ましい。例えば、パディング部１５は以下の式に従ってパディングデータの長さＰを計算する。
【００２４】
Ｐ＝Ｎ−｛Ｃ ｍｏｄ Ｎ｝      …(1)
ここで、ｍｏｄは剰余演算であり、Ｎは２以上である。式（１）の場合にはＮの値が大きいほど安全性が高くなる。
【００２５】
次にパディング部１５は、長さＰのパディングデータを生成する。パディングデータは任意のデータであってもよい。パディングデータの例は、連続する「０」ビットからなる長さＰのデータ、連続する「１」ビットからなる長さＰのデータ、「０」ビットと「１」ビットとが混在した長さＰのデータなどである。
【００２６】
パディング部１５は、上述した圧縮データの長さデータと圧縮データとパディングデータとを予め定められた順序で連結し、パディング済み圧縮データを生成する。本形態では、例えば、圧縮データの長さデータの後に圧縮データを連結し、圧縮データの後にパディングデータを連結する。図２は、このように生成したパディング済み圧縮データの例である。この例のパディング済み圧縮データ１００は、長さＬの圧縮データの長さデータ１０１と、長さＣの圧縮データ１０２と、長さＰのパディングデータ１０３とを連結したデータである。圧縮データ１０２とパディングデータ１０３とを連結したデータの長さはＮ・Ａである（［ステップＳ１４の具体例］の説明終わり）。
【００２７】
パディング済み圧縮データは暗号化部１６に送られる。暗号化部１６は、鍵メモリ１１から暗号化のための鍵を抽出し、それを用いてパディング済み圧縮データを暗号化し、暗号文Ｅ（Ｍ）を生成する。暗号化部１６は、暗号文Ｅ（Ｍ）を出力する（ステップＳ１５）。
【００２８】
＜復号伸長処理＞
図３Ｂを用いて本実施形態の復号伸長処理を説明する。
【００２９】
暗号文Ｅ（Ｍ）が復号伸長装置２０（図１）の復号部２４に入力される。復号部２４は鍵メモリ２１から復号のための鍵を抽出し、それを用いて暗号文Ｅ（Ｍ）を復号してパディング済み圧縮データを得る。パディング済み圧縮データは圧縮データ取り出し部２５に送られる（ステップＳ２１）。
【００３０】
圧縮データ取り出し部２５は、パディング済み圧縮データの一部を圧縮データとして取り出す（ステップＳ２２）。
【００３１】
［ステップＳ２２の具体例］
圧縮データ取り出し部２５は、パディング済み圧縮データが含む圧縮データの長さデータを復号して圧縮データの長さＣを得る。本形態では、圧縮データの長さデータと圧縮データとパディングデータとを連結する順序が予め定められており、圧縮データの長さデータが固定長（長さＬ）である。そのため、パディング済み圧縮データから圧縮データの長さデータを抽出し、それを復号して圧縮データの長さＣを得ることができる。例えば、図２のパディング済み圧縮データ１００の場合、圧縮データ取り出し部２５は、パディング済み圧縮データ１００の先頭から長さＬのデータを、圧縮データの長さデータ１０１として抽出し、それを復号することで圧縮データの長さＣを得ることができる。
【００３２】
次に圧縮データ取り出し部２５は、圧縮データの長さＣを用い、パディング済み圧縮データが含む圧縮データを抽出する。本形態では、圧縮データの長さデータと圧縮データとパディングデータとを連結する順序が予め定められているため、圧縮データの長さＣを用いて圧縮データを抽出できる。例えば、図２のパディング済み圧縮データ１００の場合、圧縮データ取り出し部２５は、圧縮データの長さデータ１０１に続く長さＣのデータを、圧縮データ１０２として抽出できる（［ステップＳ２２の具体例］の説明終わり）。
【００３３】
圧縮データ１０２は伸長部２６に送られる。伸長部２６は、圧縮データを伸長してデータＭ’を得、それを出力する。
【００３４】
＜本実施形態の特徴＞
本実施形態では圧縮データに長さが秘密のパディングデータを追加するため、暗号文の長さからパディング済み圧縮データの長さの情報が得られても、圧縮データの長さの情報が得られることを抑制でき、圧縮前のデータの内容に関する情報が得られることを抑制できる。これにより、本実施形態では、秘匿性が高い暗号文を生成できる。
【００３５】
特に、式（１）のようにパディングデータの長さＰを定めた場合、パディングデータの長さＰをＮ以下に制限することができる。一方、この場合にはＮの値が大きいほど安全性が高くなる。すなわち、式（１）のようにパディングデータの長さＰを定めた場合、正整数Ｎの大きさを調整することで、安全性とパディング済み圧縮データの長さとのバランスを調整することができる。
【００３６】
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上記では圧縮暗号化処理ごとにステップＳ１１が実行されることとしたが、複数の圧縮暗号化処理ごとにステップＳ１１が実行されてもよいし、事前処理でステップＳ１１が実行されてもよい。また、ステップＳ１１がステップＳ１２とＳ１３との間や、ステップＳ１３とＳ１４との間に実行されてもよい。また、暗号化対象データがその他のデータを含んでもよい。
【００３７】
正整数Ｎを固定値とし、式（１）のようにパディングデータの長さＰを定める場合には、データＭごとにパディングデータの長さＰが定まる。そのため、同一のデータＭを複数回処理する場合などには、データＭとそれに対して計算したパディングデータの長さＰとを対応付けて記憶部に格納しておき、再びデータＭを処理する際には式（１）を計算することなく記憶領域に格納されたパディングデータの長さＰを用いて処理を行ってもよい。一方、毎回、式（１）のようにパディングデータの長さＰを定める場合には、このような記憶領域は不要となる。
【００３８】
上記では圧縮データの長さとパディングデータの長さとの合計が任意な正整数の倍数である例を示したが、パディングデータの長さが圧縮暗号化装置１０の外部に秘匿されるのであれば、どのような長さのパディングデータであってもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００３９】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【００４０】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体は、非一時的（non-transitory）な記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【００４１】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００４２】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００４３】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【００４４】
１０  圧縮暗号化装置
２０  復号伸長装置
【図１】
2012129920.tif 000003
【図２】
2012129920.tif 000004
【図３】
2012129920.tif 000005