説明

データ圧縮方法、データ復元方法、データ圧縮装置、データ復元装置、データ圧縮プログラムおよびデータ復元プログラム

【課題】圧縮データ自体に秘匿性をもたせてデータ量削減とデータ秘匿とを両立させること。
【解決手段】圧縮処理側では、元データに任意のビット列を付加して圧縮処理をおこない、先頭部分と後半部分とに分離して別ルートで復元処理側に渡すこととし、復元処理側では、別ルートで渡された先頭部分と後半部分とから圧縮データを再現して復号処理をおこない元データを復元する。また、圧縮処理側で、後半部分をさらに複数の部分データに分割し、分割された最初の部分データ以外の部分データと先頭部分とを結合して出力する。さらに、圧縮処理側で先頭部分を削除して後半部分のみを復元処理側に渡し、復元処理側では、圧縮処理側と共通の手法を用いることにより削除された先頭部分を再現する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、被圧縮データ列から秘匿性を有する圧縮データ列を生成するデータ圧縮方法、データ復元方法、データ圧縮装置、データ復元装置、データ圧縮プログラムおよびデータ復元プログラムに関し、特に、圧縮データ自体に秘匿性をもたせてセキュリティ強度を高めることにより、データ量削減とデータ秘匿とを両立させることができるデータ圧縮方法、データ復元方法、データ圧縮装置、データ復元装置、データ圧縮プログラムおよびデータ復元プログラムに関するものである。
【背景技術】
【0002】
近年、インターネットや携帯端末の普及にともない、各装置内に格納されるデータや、各装置間で通信されるデータのデータ量削減およびセキュリティ(データ秘匿)に対する関心が高まっている。データ量削減に関する技術としては種々の圧縮技術が広く知られており、かかる圧縮技術を用いることによりデータ量削減のニーズを満たすことができる。
【0003】
一方、データ秘匿に関する技術としては、データにパスワード機能を付加したり、データを暗号化したりする技術が広く知られており、これらの技術と、かかる圧縮技術とをあわせて用いることにより、データ量削減とデータ秘匿との両立を図ることが可能となる。
【0004】
データ量削減とデータ秘匿との両立を図ったものとしては、たとえば、圧縮データにパスワード情報を添付するパスワード機能付きデータ圧縮方法がある。このパスワード機能付きデータ圧縮方法では、圧縮済のデータにパスワードを付加することによりパスワード情報を含んだ圧縮データを生成する。そして、復元側であらたに入力されたパスワードと、圧縮側で入力されたパスワードとが一致した場合にのみ圧縮データの復元をおこなうこととしている。
【0005】
また、特許文献1には、圧縮後の画像データにダミーデータを挿入することにより、画像データの秘匿をおこなうファクシミリ装置についての技術が開示されており、データ量削減とデータ秘匿との両立が図られている。
【0006】
【特許文献1】特開2001−119588号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、上記したパスワード機能付きデータ圧縮方法では、圧縮データそのものにはデータを秘匿するための加工をおこなっていないので、パスワード情報を含んだ圧縮データからパスワード情報を除去するだけで、圧縮データを復元できてしまうという問題があった。すなわち、かかるデータ圧縮方法においては、圧縮データのセキュリティ強度が低いという問題があった。
【0008】
また、上記した特許文献1の技術においても、圧縮データ(圧縮後の画像データ)そのものにはデータを秘匿するための加工はなされておらず、挿入されたダミーデータを除去するだけで、圧縮データを復元できてしまうという、同様の問題がある。
【0009】
これらのことから、圧縮データ自体に秘匿性をもたせることによりデータ量削減とデータ秘匿とを両立させることができる圧縮方法およびその復元方法をいかにして実現するかが大きな課題となっている。
【0010】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、圧縮データ自体に秘匿性をもたせてセキュリティ強度を高めることにより、データ量削減とデータ秘匿とを両立させることができるデータ圧縮方法、データ復元方法、データ圧縮装置、データ復元装置、データ圧縮プログラムおよびデータ復元プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
上述した課題を解決し、目的を達成するため、本発明は、被圧縮データ列から秘匿性を有する圧縮データ列を生成するデータ圧縮方法であって、所定長のビット列を前記被圧縮データ列の先頭に付加するビット列付加工程と、前記ビット列付加工程により前記ビット列が付加された前記被圧縮データ列を圧縮する圧縮工程と、前記圧縮工程により生成された圧縮データ列の先頭位置から該データ圧縮工程により圧縮された前記ビット列の所定位置までの先頭部分を、該圧縮データ列から分割する分割工程とを含んだことを特徴とする。
【発明の効果】
【0012】
本発明によれば、所定長のビット列を被圧縮データ列の先頭に付加し、ビット列が付加された被圧縮データ列を圧縮し、生成された圧縮データ列の先頭位置から、圧縮されたビット列の所定位置までの先頭部分を、かかる圧縮データ列から分割するよう構成したので、圧縮データ自体に秘匿性をもたせてセキュリティ強度を高めることにより、データ量削減とデータ秘匿とを両立させることができるという効果を奏する。
【発明を実施するための最良の形態】
【0013】
以下に添付図面を参照して、この発明に係るデータ圧縮方法、データ復元方法、データ圧縮装置、データ復元装置、データ圧縮プログラムおよびデータ復元プログラムの好適な実施例1〜3を詳細に説明する。なお、これらの実施例によりこの発明が限定されるものではない。
【実施例1】
【0014】
まず、本実施例1のデータ圧縮方法およびデータ復元方法の概要について図1を用いて説明する。図1は、本実施例1に係るデータ圧縮方法およびデータ復元方法の概要を示す図である。なお、同図に示す11が本実施例1に係るデータ圧縮方法であり、同図に示す21が本実施例1に係るデータ復元方法である。
【0015】
図1の11に示したように、このデータ圧縮方法では、圧縮対象となる元データの先頭に乱数発生関数などで発生させたビット列を付加し、かかるビット列が付加された元データを所定の圧縮手法を用いて圧縮する。そして、この圧縮データを先頭部分と後半部分とに分離して異なる出力先に出力する。
【0016】
本実施例1は、かかる圧縮手法として、スプレイ符号(Splay tree coding)による圧縮手法を用い、さらに、圧縮データの分離位置を工夫することにより、分離された先頭部分および後半部分にデータ秘匿性をもたせている点に特徴がある。
【0017】
従来のパスワード機能付きデータ圧縮方法(図15の51)およびデータ復元方法(図15の52)では、図15の51に示すように、元データを圧縮して圧縮データを生成し、生成した圧縮データの先頭部分に、ハッシュ関数によりハッシュ値に変換されたパスワードを付加することとしていた。
【0018】
また、復元側では、図15の52に示すように、復元側であらたに入力されたパスワードを、圧縮側と同様にハッシュ関数によりハッシュ値に変換し、このハッシュ値と、圧縮データとともに渡されたハッシュ値とを照合して、一致する場合にのみ復元処理をおこなうこととしていた。
【0019】
しかしながら、このパスワード機能付きデータ圧縮方法では、圧縮データそのものには
データを秘匿するための加工をおこなっていないので、圧縮データに付加されたハッシュ値を除去するだけで圧縮データを復元できてしまうという問題があった。本発明に係るデータ圧縮方法およびデータ復元方法では、圧縮データそのものにデータを秘匿するための加工をおこなうことにより、上記した問題点を解決している。
【0020】
ここで、上記したスプレイ符号を用いた圧縮手法について図16を用いて説明しておく。図16は、スプレイ符号の概要を示す図である。スプレイ符号は、2分木を用いた符合であり、出現した文字の符号長が半分になるように木を折り曲げていくことにより、文字の符号長が文字の出現頻度に応じて随時変更されていく。
【0021】
まず、スプレイ符号木(以下、単に符号木と言う)の各部の名称について説明する。図16の61は、A〜Hの8文字からなる場合の符号木について示している。木の頂点にある「○」は「根」と呼ばれ、それ以外の「○」は「節」と呼ばれる。そして、A〜Hの文字が記された「○」は、「葉」と呼ばれる。
【0022】
また、「根」、「節」および「葉」を結ぶ直線は「経路」と呼ばれ、各経路に記されている「0」または「1」の数字は「符号」と呼ばれる。たとえば、文字「A」をあらわす符号は「00」であり、文字「F」をあらわす符号は「1100」である。
【0023】
61に示した状態の符号木において、あらたに文字「F」を読み込んで圧縮処理をおこなう場合の符号木折り曲げの手順を、図16の62および63を用いて説明する。62に示したように、あらたに読み込んだ文字「F」を「葉」から「根」へたどりながら2つずつ「節」の組をつくる。そして、それぞれの組で「F」から「根」までの経路を1つ減らすように、「節」の組の子供(「節」または「葉」)を交換する。
【0024】
図16の62では、「節6」の子供である「F」と、「節5」の子供である「H」とを交換し、つづいて、「節2」の子供である「節5」配下の木を、「根」(節0)のもう1つの子供である「節1」配下の木と交換する。
【0025】
このようにして折り曲げられた符号木を図16の63に示す。62に示した折り曲げ前の文字「F」の符号は「1100」であったが、63に示した折り曲げ後の文字「F」の符号は「01」となり、符号長が4ビットから2ビットに短縮されている。
【0026】
かかる折り曲げ処理は木全体に影響を及ぼすので、被圧縮データを木に反映するごとにまったく異なる構造の2分木が生成される。このため、このスプレイ符号による圧縮手法によりデータの圧縮をおこなうと、圧縮されたデータの途中から被圧縮データを復元することはできない。
【0027】
すなわち、被圧縮データを復元するためには、圧縮されたデータの先頭から復元処理をおこなう必要がある。したがって、スプレイ符号により圧縮された圧縮データを任意の位置で2つに分割した場合には、後半の圧縮データから元データの情報を取得することはできない。
【0028】
図1の説明にもどり、スプレイ符号を用いた圧縮手法により圧縮されたデータの分割について説明する。本実施例1に係るデータ圧縮方法では、上述した手順で生成された圧縮データを、「圧縮データ先頭部分」と、「圧縮データ後半部分」の2つに分離して取り出す。ここで、圧縮データを分離する際には、圧縮されたビット列を区切るような位置で分離することとする。そして、このようにして分離された「圧縮データ先頭部分」および「圧縮データ後半部分」は、それぞれ異なる出力先に出力される。
【0029】
かかる「圧縮データ先頭部分」は、スプレイ符号による圧縮データの先頭位置付近のデータに相当するため、悪意の第三者により解読されうるが、「圧縮データ先頭部分」は、乱数発生関数などで発生させた意味をもたないビット列の一部分のみからなるので、解読されたとしても、この「圧縮データ先頭部分」から元データに関する情報を取得することは不可能である。
【0030】
また、上述したように、スプレイ符号による圧縮手法により生成された圧縮データは、圧縮データの途中からは復元することができないことから、「圧縮データ後半部分」を解読することは不可能である。したがって、「圧縮データ後半部分」が悪意の第三者の手に渡ったとしても、「圧縮データ後半部分」が解読されることはない。
【0031】
このように、「圧縮データ先頭部分」から取得できる情報量は0であり、「圧縮データ後半部分」から取得できる情報量も0であるため、これらの部分データの片方が悪意の第三者の手に渡ったとしても、元データの秘匿性を確保することができる。
【0032】
次に、本実施例1に係るデータ復元方法の概要について説明する。図1の21に示したように、圧縮データを復元する場合には、別ルートで取得した先頭部分と、後半部分とを入力し、後半部分の先頭に先頭部分を付加することにより、圧縮データを再現する。そして、圧縮処理で用いたスプレイ符号により、再現した圧縮データを復号し、復号した圧縮データから、元データを取り出して出力することにより、元データを復元する。
【0033】
このように、本実施例1に係るデータ圧縮方法およびデータ復元方法は、圧縮処理側では、元データに任意のビット列を付加して圧縮処理をおこない、先頭部分と後半部分とに分離して別ルートで復元処理側に渡すこととし、復元処理側では、別ルートで渡された先頭部分と後半部分とから圧縮データを再現して復号処理をおこない、元データを復元することとした。分離された先頭部分および後半部分からは、それぞれ単独では元データの情報を取得することができないので、圧縮データ自体に秘匿性をもたせたことと等価となる。
【0034】
したがって、本実施例1に係るデータ圧縮方法およびデータ復元方法によれば、圧縮データ自体に秘匿性をもたせてセキュリティ強度を高めることにより、データ量削減とデータ秘匿とを両立させることができる。
【0035】
次に、本実施例1に係るデータ圧縮方法およびデータ復元方法を実行するデータ圧縮装置およびデータ復元装置について図2を用いて説明する。図2は、本実施例1に係るデータ圧縮装置およびデータ復元装置の構成を示す機能ブロック図である。
【0036】
まず、本実施例1に係るデータ圧縮装置について説明する。同図に示すように、データ圧縮装置10は、元データ入力部10aと、ビット列生成部10bと、ビット列付加部10cと、圧縮部10dと、部分取得部10eと、部分データ出力部10fとを備えている。
【0037】
元データ入力部10aは、圧縮対象データ(元データ)を入力する処理部である。この元データ入力部10aは、圧縮対象データ(元データ)を受け取ると、受け取った圧縮対象データをビット列付加部10cに渡す処理をおこなう。なお、かかる圧縮対象データ(元データ)の種類や大きさには制限はない。
【0038】
ビット列生成部10bは、乱数発生関数などで任意のビット列を生成し、生成したビット列をビット列付加部10cに渡す処理をおこなう処理部である。このビット列生成部10bが生成するビット列は、それ自体が意味を持たないビット列である。なお、生成するビット列のビット長は、後述するデータ復元装置20のビット列除去部20dにおいて用いられるビット長と共通である。
【0039】
ビット列付加部10cは、ビット列生成部10bから受け取ったビット列を、元データ入力部10aから受け取った元データの先頭に付加し、かかるビット列を付加した元データを圧縮部10dに渡す処理部である。
【0040】
圧縮部10dは、ビット列付加部10cから受け取ったビット列が付加された元データを、スプレイ符号による圧縮手法により圧縮し、部分取得部10eに渡す処理をおこなう処理部である。
【0041】
部分取得部10eは、圧縮部10dから受け取った圧縮データを、先頭部分と、後半部分とに分離し、分離した各データ列を部分データ出力部10fに渡す処理部である。具体的には、この部分取得部10eは、先頭部分を分離する際に、ビット列生成部10bが生成した任意のビット列が圧縮部10dにより圧縮された後のビット長と同じか、それよりも短くなるように先頭部分を分離する。
【0042】
このような分離処理をおこなうと、先頭部分には元データが全く含まれておらず、先頭部分は乱数発生関数などにより生成された意味をもたないビット列の一部分のみからなるので、先頭部分が悪意の第三者の手に渡った場合であっても、元データの情報の漏洩を防止することができる。
【0043】
部分データ出力部10fは、部分取得部10eから渡された先頭部分および後半部分をそれぞれ異なる出力先に出力する処理部である。たとえば、この部分データ出力部10fは、先頭部分を、通信ネットワークを介して復元側に送信するとともに、後半部分をCD−R(CD Recordable)などの可搬記憶媒体に出力する。このようにすることで、圧縮データを安全に復元側に渡すことができる。
【0044】
なお、圧縮データを安全に復元側に渡すためには、先頭部分および後半部分のいずれもが悪意の第三者に渡らないようにすればよいので、先頭部分を、通信ネットワークを介してサーバ装置に送信し、後半部分を復元側のコンピュータに送信することとしてもよい。さらに、前半部分を、通信ネットワークを介して第一のサーバ装置に送信し、後半部分を第二のサーバ装置に送信することとしてもよく、上記した前半部分および後半部分の出力先を入れ替えたり、組み合わせたりすることとしてもよい。
【0045】
また、先頭部分をUSB(Universal Serial Bus)メモリに出力し、後半部分をHDD(Hard Disk Drive)に記憶することとすることもできる。このようにすることで、コンピュータ上のデータを安全に管理することができる。
【0046】
なお、コンピュータ上のデータを安全に管理するためには、先頭部分および後半部分のいずれもが悪意の第三者に渡らないようにすればよいので、先頭部分を、通信ネットワークを介してサーバ装置に送信しておくこととしてもよく、CD−Rなどの可搬記憶媒体に出力することとしてもよい。
【0047】
次に、本実施例1に係るデータ復元装置の構成について説明する。同図に示すように、データ復元装置20は、部分データ入力部20aと、圧縮データ再現部20bと、復号部20cと、ビット列除去部20dと、元データ出力部20eとを備えている。
【0048】
部分データ入力部20aは、データ圧縮装置10により分離したうえで出力された先頭部分と、後半部分とを入力する処理部である。この部分データ入力部20aは、先頭部分および後半部分を受け取ると、これらのデータ列を圧縮データ再現部20bに渡す処理をおこなう。
【0049】
圧縮データ再現部20bは、部分データ入力部20aから受け取った先頭部分および後半部分から圧縮後のデータ(圧縮データ)を再現し、復号部20cに渡す処理をおこなう処理部である。具体的には、この圧縮データ再現部20bは、後半部分の先頭に先頭部分を付加することにより圧縮データを再現する。
【0050】
復号部20cは、データ圧縮装置10の圧縮処理において用いたスプレイ符号による圧縮手法に対応する復号手法により、圧縮データ再現部20bから渡された圧縮データを復号し、復号後のデータをビット列除去部20dに渡す処理をおこなう処理部である。
【0051】
ビット列除去部20dは、復号部20cから受け取った復号後のデータから先頭に付加されたビット列を除去して元データを取り出し、取り出した元データを元データ出力部20eに渡す処理をおこなう処理部である。なお、このビット列除去部20dがビット列を除去する際に用いるビット長は、ビット列生成部10bが生成したビット列のビット長と共通である。
【0052】
元データ出力部20eは、ビット列除去部20dから受け取った元データをHDDやRAM(Random Access Memory)などの出力用デバイスに出力する処理部である。
【0053】
次に、本実施例1に係るデータ圧縮処理の処理手順について図3を用いて説明する。図3は、本実施例1に係るデータ圧縮処理の処理手順を示すフローチャートである。同図に示すように、データ圧縮装置10の元データ入力部10aにより元データを入力すると(ステップS101)、ビット列付加部10cは、ビット列生成部10bにより生成されたビット列を元データの先頭に付加する(ステップS102)。
【0054】
つづいて、圧縮部10dは、ビット列が付加された元データを圧縮し(ステップS103)、圧縮データを部分取得部10eに渡す。そして、部分取得部10eは、圧縮データを所定位置で分離することにより、先頭部分および後半部分を取り出す(ステップS104)。
【0055】
先頭部分および後半部分を受け取った部分データ出力部10fは、先頭部分の出力をおこない(ステップS105)、後半部分の出力をおこなって(ステップS106)処理を終了する。
【0056】
次に、本実施例1に係るデータ復元処理の処理手順について図4を用いて説明する。図4は、本実施例1に係るデータ復元処理の処理手順を示すフローチャートである。同図に示すように、データ復元装置20の部分データ入力部20aは、データ圧縮装置10から出力された先頭部分を入力し(ステップS201)、つづいて、後半部分を入力する(ステップS202)。
【0057】
そして、圧縮データ再現部20bは、部分データ入力部20aにより入力された後半部分の先頭に、同じく入力された先頭部分を付加して(ステップS203)圧縮データを再現する。つづいて、復号部20cは、圧縮データ再現部20bにより再現された圧縮データを復号し(ステップS204)、ビット列除去部20dは、復号部20cにより再現された圧縮データから、元データを取り出す(ステップS205)。
【0058】
つづいて、元データ出力部20eは、ビット列除去部20dにより取り出された元データをHDDやRAMなどに出力して(ステップS206)処理を終了する。
【0059】
上述してきたように、本実施例1に係るデータ圧縮方法およびデータ復元方法によれば、圧縮データ自体に秘匿性をもたせることができるので、データ量削減とデータ秘匿とを両立させることができる。
【0060】
ところで、上述した実施例1では、圧縮側では、ビット列データを付加した元データを圧縮し、圧縮されたデータを先頭部分および後半部分の2個のデータ列に分離して出力することとした。しかしながら、本発明に係るデータ圧縮方法およびデータ復元方法は、かかる後半部分をさらに分離して出力することもできる。
【0061】
そこで、以下に示す実施例2では、かかる後半部分をさらに2個のデータ列に分離する場合について図5〜図7を用いて説明することとする。
【実施例2】
【0062】
まず、本実施例2のデータ圧縮方法およびデータ復元方法の概要について図5を用いて説明する。図5は、本実施例2に係るデータ圧縮方法およびデータ復元方法の概要を示す図である。なお、同図に示す12が本実施例2に係るデータ圧縮方法であり、同図に示す22が本実施例2に係るデータ復元方法である。
【0063】
図5の12に示したように、圧縮対象となる元データの先頭に乱数発生関数などで発生させたビット列を付加し、かかるビット列が付加された元データをスプレイ符号による圧縮手法を用いて圧縮する点については、上述した実施例1と同様である。
【0064】
このようにして生成された圧縮データを、圧縮データの先頭部分12aと、圧縮データ後半部分の2つに分離する点についても、上述した実施例1と同様であるが、本実施例2に係るデータ圧縮方法では、かかる後半部分を同図に示す12bと12cとにさらに分離して取り出すこととしている。
【0065】
そして、3つに分離された圧縮データ(12a、12bおよび12c)のうち、12bを前半部分として出力するとともに、12cの先頭に12aを付加したデータ列を後半部分として出力する。
【0066】
このようにして出力された「圧縮データ前半部分」から取得できる情報量は0である。なぜならば、スプレイ符号による圧縮データは、途中から復元することができないからである。また、「圧縮データ後半部分」から取得できる情報量も0である。なぜならば、後半部分の先頭に付加された12aは意味をもたないビット列の一部分のみからなり、12cは、圧縮データの途中以降のデータ列であるからである。したがって、これらの部分データ(圧縮データ前半部分および圧縮データ後半部分)の片方が悪意の第三者の手に渡ったとしても、元データの秘匿性を確保することができる。
【0067】
なお、本実施例2においては、圧縮データから先頭部分12aを除いた後半部分を、12bと12cとの2つのデータ列に分離する場合について説明したが、3つ以上のデータ列に分離することとしてもよい。この場合、先頭部分12aの直後に位置するデータ列と、先頭部分12aとを別々に出力することとする。
【0068】
たとえば、圧縮データから先頭部分12aを除いた後半部分を、12b、12cおよび12dの3つに分離した場合には、12aと12cとを結合したデータ列と、12bと、12dとをそれぞれ出力するか、12aと12dとを結合したデータ列と、12bと、12cとをそれぞれ出力する。
【0069】
上述した実施例1では、圧縮データを先頭部分および後半部分の2つに分離することとしていたので、先頭部分は、元データの先頭に付加されるビット列の長さによりサイズが限定され、先頭部分を鍵のように扱う使い方に限定されていた。
【0070】
しかしながら、本実施例2によれば、長さが限定される先頭部分12aを、12cと組み合わせて出力することとしたので、前半部分(12b)と後半部分(12aおよび12c)の長さを等分にするなど、分割するサイズを自由に設定することが可能となる。したがって、前半部分と後半部分とを、それぞれ異なるサーバ装置に送信するなど、実施例1の場合よりも広範な使い方することができる。
【0071】
次に、本実施例2に係るデータ復元方法の概要について説明する。図5の22に示したように、圧縮データを復元する場合には、別ルートで取得した前半部分(12b)と、後半部分(12aおよび12c)とを入力し、後半部分を12aと12cとに分離する。そして、12a、12bおよび12cの順序に並び替えることにより圧縮データを再現し、圧縮処理で用いたスプレイ符号により、再現した圧縮データを復号して復号した圧縮データから、元データを取り出して出力することにより、元データを復元する。
【0072】
次に、本実施例2に係るデータ圧縮処理の処理手順について図6を用いて説明する。図6は、本実施例2に係るデータ圧縮処理の処理手順を示すフローチャートである。同図に示すように、データ圧縮装置10の元データ入力部10aにより元データを入力すると(ステップS301)、ビット列付加部10cは、ビット列生成部10bにより生成されたビット列を元データの先頭に付加する(ステップS302)。
【0073】
つづいて、圧縮部10dは、ビット列が付加された元データを圧縮し(ステップS303)、圧縮データを部分取得部10eに渡す。そして、部分取得部10eは、圧縮データを所定位置で分離することにより、先頭部分および後半部分を取り出し(ステップS304)、さらに後半部分を部分Aと部分Bとの2つに分割し(ステップS305)、先頭部分、部分Aおよび部分Bを部分データ出力部10fに渡す。
【0074】
先頭部分、部分Aおよび部分Bを受け取った部分データ出力部10fは、部分Aを前半部分として出力するとともに(ステップS306)、部分Bの先頭に先頭部分を付加したうえで(ステップS307)、先頭部分が付加された部分Bを後半部分として出力して(ステップS308)処理を終了する。
【0075】
次に、本実施例2に係るデータ復元処理の処理手順について図7を用いて説明する。図7は、本実施例2に係るデータ復元処理の処理手順を示すフローチャートである。同図に示すように、データ復元装置20の部分データ入力部20aは、データ圧縮装置10から出力された前半部分を入力し(ステップS401)、つづいて、後半部分を入力する(ステップS402)。
【0076】
そして、圧縮データ再現部20bは、部分データ入力部20aにより入力されたデータを、後半部分に含まれる先頭部分、前半部分(部分A)および後半部分に含まれる部分Bの順序に並び替えることにより、圧縮データを再現する(ステップS403)。
【0077】
つづいて、復号部20cは、圧縮データ再現部20bにより再現された圧縮データを復号し(ステップS404)、ビット列除去部20dは、復号部20cにより再現された圧縮データから、元データを取り出す(ステップS405)。そして、元データ出力部20eは、ビット列除去部20dにより取り出された元データをHDDやRAMなどに出力して(ステップS406)処理を終了する。
【0078】
上述してきたように、本実施例2に係るデータ圧縮方法およびデータ復元方法によれば、分割するサイズを自由に設定することができるので、前半部分と後半部分とを、それぞれ異なるサーバ装置に送信するなど、広範な使い方をすることができる。
【0079】
ところで、上述した実施例1および実施例2では、元データに付加されたビット列を圧縮側から復元側に渡す場合について説明したが、かかるビット列を圧縮側から復元側に渡さずに、圧縮側で生成されたビット列と同じビット列を、復元側で生成することもできる。
【0080】
そこで、以下に示す実施例3では、ビット列を圧縮側から復元側に渡すことなく、復元側でかかるビット列を生成する場合について図8〜図14を用いて説明することとする。
【実施例3】
【0081】
まず、本実施例3のデータ圧縮方法およびデータ復元方法の概要について図8を用いて説明する。図8は、本実施例3に係るデータ圧縮方法およびデータ復元方法の概要を示す図である。なお、同図に示す13が本実施例3に係るデータ圧縮方法であり、同図に示す23が本実施例3に係るデータ復元方法である。
【0082】
図8の13に示したように、このデータ圧縮方法では、圧縮対象となる元データの先頭に乱数発生関数などで発生させたビット列13aを付加し、このビット列13aが付加された元データを所定の圧縮手法を用いて圧縮する。ここで、かかる圧縮手法として、上述したスプレイ符号(Splay tree coding)を用いる。
【0083】
このようにして生成された圧縮データを、圧縮データ先頭部分と、圧縮データ後半部分の2つに分離して取り出す。圧縮データを分離する際には、圧縮されたビット列13aを区切るような位置で分離することとする。そして、分離された先頭部分を削除し、分離された後半部分のみをネットワークや可搬記憶媒体に出力する。
【0084】
スプレイ符号による圧縮データの途中から復元することができないことから、この「圧縮データ後半部分」を解読することは不可能である。したがって、「圧縮データ後半部分」が悪意の第三者の手に渡ったとしても、元データを含む「圧縮データ後半部分」が解読されることはない。
【0085】
次に、本実施例3に係るデータ復元方法の概要について説明する。図8の23に示したように、圧縮データを復元する場合には、上述した実施例1と同様に後半部分を入力する。一方、復元側は圧縮側からビット列13aを含むデータを受け取っていないので、このビット列13aを生成し、圧縮側と同様の手法により、圧縮側で削除された先頭部分を再現する。
【0086】
具体的には、圧縮側でビット列13aを生成する際に用いた乱数発生関数と同一の乱数発生関数により、圧縮側で生成したものと同一のビット列13aを生成する。つづいて、圧縮側でデータ列を圧縮した際に用いたスプレイ符号によりビット列13aを圧縮し、圧縮側で先頭部分を分離した位置と同一の位置において、ビット列13aを図8に示した23aおよび23bに分離する。
【0087】
そして、この23aを、入力された後半部分の先頭に付加することにより、圧縮データを再現する。つづいて、圧縮処理で用いたスプレイ符号により、再現した圧縮データを復号し、復号した圧縮データから、元データを取り出して出力することにより、元データを復元する。
【0088】
このように、本実施例3に係るデータ圧縮方法およびデータ復元方法は、圧縮処理側では、元データに任意のビット列を付加して圧縮処理をおこない、先頭部分と後半部分とに分離して後半部分のみを復元処理側に渡すこととし、復元処理側では、渡された後半部分と、復元側で生成したビット列とを用いて圧縮データを再現して復号処理をおこない、元データを復元することとした。圧縮側から復元側に渡される後半部分からは、元データの情報を取得することができないので、圧縮データ自体に秘匿性をもたせたことになる。
【0089】
したがって、本実施例3に係るデータ圧縮方法およびデータ復元方法によれば、先頭部分を圧縮側から復元側に渡さないので、先頭部分と後半部分との双方ともを悪意の第三者に取得されることがない。したがって、より安全にデータの受渡しをおこなうことができる。
【0090】
次に、本実施例3に係るデータ圧縮方法およびデータ復元方法を実行するデータ圧縮装置およびデータ復元装置について図9を用いて説明する。図9は、本実施例3に係るデータ圧縮装置およびデータ復元装置の構成を示す機能ブロック図である。なお、実施例1と同様の処理をおこなう構成部分については、簡単な説明のみにとどめることとする。
【0091】
まず、本実施例3に係るデータ圧縮装置について説明する。同図に示すように、データ圧縮装置30は、元データ入力部30aと、ビット列生成部30bと、ビット列付加部30cと、圧縮部30dと、部分取得部30eと、後半データ出力部30fとを備えている。
【0092】
元データ入力部30a〜部分取得部30eは、実施例1における元データ入力部10a〜部分取得部10eと同一であるので、説明を省略する。後半データ出力部30fは、部分取得部30eから渡された先頭部分を削除するとともに、後半部分を、通信ネットワークを介して復元側に送信したり、可搬記憶媒体に出力したりする処理部である。
【0093】
このように、後半データ出力部30fは、圧縮データの後半部分のみを出力するので、この後半部分が悪意の第三者に渡ったとしても、後半部分のみを用いて元データが復元されることはない。
【0094】
次に、本実施例3に係るデータ復元装置の構成について説明する。同図に示すように、データ復元装置40は、後半データ入力部40aと、ビット列生成部40bと、圧縮部40cと、部分取得部40dと、圧縮データ再現部40eと、復号部40fと、ビット列除去部40gと、元データ出力部40hとを備えている。
【0095】
後半データ入力部40aは、データ圧縮装置30により出力された後半部分を入力する処理部である。この後半データ入力部40aは、かかる後半部分を受け取ると、受け取った後半部分を圧縮データ再現部40bに渡す処理をおこなう。
【0096】
ビット列生成部40bは、圧縮装置30のビット列生成部30bと同様の処理をおこなうことにより、ビット列生成部30bが生成したビット列と同一のビット列を生成し、生成したビット列を圧縮部40cに渡す処理をおこなう処理部である。
【0097】
圧縮部40cは、圧縮装置30の圧縮部30dと同様の処理をおこなうことにより、ビット列生成部40bが生成したビット列を圧縮し、圧縮されたビット列を部分取得部40dに渡す処理を行なう処理部である。
【0098】
部分取得部40dは、圧縮装置30の部分取得部30eと同様の処理をおこなうことにより、圧縮部40cから受け取った圧縮されたビット列から、圧縮装置30の部分取得部30eが取得した先頭部分と同じビット長の先頭部を取得し、圧縮データ再現部40eに渡す処理をおこなう処理部である。
【0099】
圧縮データ再現部40eは、後半データ入力部40aから受け取った後半データと、部分取得部40dから受け取った先頭データとから圧縮データを再現する処理部である。具体的には、この圧縮データ再現部40eは、かかる後半データの先頭に、かかる先頭データを付加することにより圧縮データを再現する。
【0100】
なお、復号部40f、ビット列除去部40gおよび元データ出力部40hがおこなう処理は、実施例1で示した復号部20c、ビット列除去部20dおよび元データ出力部20eがおこなう処理と同様であるので説明を省略する。
【0101】
次に、本実施例3に係るデータ圧縮処理の処理手順について図10を用いて説明する。図10は、本実施例3に係るデータ圧縮処理の処理手順を示すフローチャートである。同図に示すように、データ圧縮装置30の元データ入力部30aにより元データを入力すると(ステップS501)、ビット列付加部30cは、ビット列生成部30bにより生成されたビット列を元データの先頭に付加する(ステップS502)。
【0102】
つづいて、圧縮部30dは、ビット列が付加された元データを圧縮し(ステップS503)、圧縮データを部分取得部30eに渡す。そして、部分取得部30eは、圧縮データを所定位置で分離することにより、先頭部分および後半部分を取り出す(ステップS504)。先頭部分および後半部分を受け取った後半データ出力部30fは、かかる先頭部分を削除するとともに、後半部分の出力をおこなって(ステップS505)処理を終了する。
【0103】
次に、本実施例3に係るデータ復元処理の処理手順について図11を用いて説明する。図11は、本実施例3に係るデータ復元処理の処理手順を示すフローチャートである。同図に示すように、データ復元装置40のビット列生成部40bは、任意のビット列を生成し(ステップS601)、生成したビット列を圧縮部40cに渡す。そして、圧縮部40cは、渡されたビット列を圧縮し(ステップS602)、部分取得部40dは、圧縮されたビット列の先頭部分を取り出して(ステップS603)圧縮データ再現部40eに渡す。
【0104】
つづいて、データ復元装置40の後半データ入力部40aは、データ圧縮装置30から出力された先頭部分を入力し(ステップS604)、圧縮データ再現部40eに渡す。そして、圧縮データ再現部40eは、後半データ入力部40aから渡された後半部分の先頭に、部分取得部40dから渡された先頭部分を付加することにより圧縮データを再現する(ステップS605)。
【0105】
そして、復号部40fは、圧縮データ再現部40eにより再現された圧縮データを復号し(ステップS606)、ビット列除去部40gは、復号部40fにより再現された圧縮データから、元データを取り出す(ステップS607)。つづいて、元データ出力部20hは、ビット列除去部40gにより取り出された元データをHDDやRAMなどに出力して(ステップS608)処理を終了する。
【0106】
上述してきたように、本実施例3に係るデータ圧縮方法およびデータ復元方法によれば、分離した圧縮データの後半部分のみを圧縮側から復元側に渡すこととしたので、分離した圧縮データすべてが悪意の第三者の手に渡ることを防止することにより、安全なデータの受渡しをおこなうことができる。
【0107】
ところで、上述した実施例3では、圧縮側と復元側とで、同一の乱数発生関数を用いて共通のビット列を生成することとしたが、かかるビット列を生成する手法にはいくつかのバリエーションが存在する。以降では、かかるビット列生成のバリエーションを用いたデータ圧縮方法およびデータ復元方法の例を、図12〜図14を用いて説明することとする。
【0108】
最初に、実施例3の変形例1について図12を用いて説明する。図12は、本実施例3に係るデータ圧縮方法およびデータ復元方法の変形例1の概要を示す図である。なお、同図に示す14が本変形例1に係るデータ圧縮方法であり、同図に示す24が本変形例1に係るデータ復元方法である。
【0109】
図12の14に示したように、本変形例1に係るデータ圧縮方法では、元データの先頭に付加するビット列をシードおよび鍵から生成する。この場合、かかるシードおよび鍵からハッシュ関数(一方向性関数)を用いてビット列を生成する。そして、かかるビット列が付加された元データを圧縮し、この圧縮データを、圧縮データ先頭部分と、圧縮データ後半部分の2つに分離して取り出す。そして、分離された先頭部分を削除するとともに、後半部分の先頭にビット列生成において用いたシードを付加して出力する。
【0110】
次に、本変形例1に係るデータ復元方法の概要について説明する。図12の24に示したように、圧縮データを復元する場合には、図8に示した23と同様に後半部分を入力する。なお、この後半部分は、先頭にシードが付加されたデータ列である。復元側は、圧縮側からビット列を含むデータを受け取っていないので、このビット列を生成し、圧縮側において削除された先頭部分を再現することになる。
【0111】
かかるビット列を生成する際に、本変形例1に係るデータ復元方法では、圧縮側と共有している(圧縮側と同一の)鍵と、後半部分の先頭に付加されて渡されたシードとから、圧縮側と同様の手法によりビット列を生成する。なお、以降の処理については、図8に示した23の処理と同様であるため、説明を省略する。
【0112】
次に、実施例3の変形例2について図13を用いて説明する。図13は、本実施例3に係るデータ圧縮方法およびデータ復元方法の変形例2の概要を示す図である。なお、同図に示す15が本変形例2に係るデータ圧縮方法であり、同図に示す25が本変形例2に係るデータ復元方法である。
【0113】
図13の15に示したように、本変形例2に係るデータ圧縮方法では、元データの先頭に付加するビット列をカウンタ値および鍵から生成する。この場合、かかるカウンタ値を生成するカウンタは、圧縮側と復元側とで共通のものを用い、所定の規則でカウンタ値が変化していくようにする。このようにして生成されたカウンタ値および鍵からハッシュ関数(一方向性関数)を用いてビット列を生成する。
【0114】
そして、かかるビット列が付加された元データを圧縮し、この圧縮データを、圧縮データ先頭部分と、圧縮データ後半部分の2つに分離して取り出す。そして、分離された先頭部分を削除するとともに、後半部分のみを出力する。
【0115】
次に、本変形例2に係るデータ復元方法の概要について説明する。図13の25に示したように、圧縮データを復元する場合には、図8に示した23と同様に後半部分を入力する。復元側は、圧縮側からビット列を含むデータを受け取っていないので、このビット列を生成し、圧縮側において削除された先頭部分を再現することになる。
【0116】
かかるビット列を生成する際に、本変形例2に係るデータ復元方法では、圧縮側と共有している(圧縮側と同一の)鍵と、圧縮側と同期している(圧縮側と同一の規則でカウンタ値を生成する)カウンタが生成したカウンタ値とから、圧縮側と同様の手法によりビット列を生成する。なお、以降の処理については、図8に示した23の処理と同様であるため、説明を省略する。
【0117】
最後に、実施例3の変形例3について図14を用いて説明する。図14は、本実施例3に係るデータ圧縮方法およびデータ復元方法の変形例3の概要を示す図である。なお、同図に示す16が本変形例3に係るデータ圧縮方法であり、同図に示す26が本変形例3に係るデータ復元方法である。
【0118】
図14の16に示したように、本変形例3に係るデータ圧縮方法では、元データの先頭に付加するビット列をビット列群から選択する。この場合、選択されたビット列を特定する選択番号を一時的に記憶しておく。
【0119】
そして、かかるビット列が付加された元データを圧縮し、この圧縮データを、圧縮データ先頭部分と、圧縮データ後半部分の2つに分離して取り出す。そして、分離された先頭部分を削除するとともに、後半部分の先頭に、ビット列生成において一時的に記憶しておいた選択番号を付加して出力する。
【0120】
なお、本変形例3においては、ビット列群から選択されたビット列を特定するための認識情報として選択番号を用いた場合について説明したが、ビット列が格納されたアドレスなどのように、選択されたビット列を特定できる情報であればよい。
【0121】
次に、本変形例3に係るデータ復元方法の概要について説明する。図14の26に示したように、圧縮データを復元する場合には、図8に示した23と同様に後半部分を入力する。なお、この後半部分は、先頭に選択番号が付加されたデータ列である。
【0122】
復元側は、圧縮側からビット列を含むデータを受け取っていないので、このビット列を生成し、圧縮側において削除された先頭部分を再現することになる。かかるビット列を生成する際に、本変形例3に係るデータ復元方法では、圧縮側と共有している(圧縮側と同一の)ビット列群と、後半部分の先頭に付加されて渡された選択番号とから、圧縮側と同様の手法によりビット列を選択する。なお、以降の処理については、図8に示した23の処理と同様であるため、説明を省略する。
【0123】
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図17を用いて、上記の実施例と同様の機能を有するデータ圧縮プログラムおよびデータ復元プログラムを実行するコンピュータの一例を説明する。
【0124】
図17は、データ圧縮プログラムおよびデータ復元プログラムを実行するコンピュータを示す図である。なお、図17においては、データ圧縮プログラムおよびデータ復元プログラムを同一のコンピュータ上で動作させる場合について示しているが、データ圧縮プログラムおよびデータ復元プログラムのいずれか一方のみを各コンピュータ上で動作させることとしてもよい。
【0125】
同図に示すようにデータ圧縮・復元装置としてのコンピュータ100は、入力装置101、モニタ102、可搬媒体制御I/F部103、ネットワークI/F部104、HDD(Hard Disk Drive)105およびCPU(Central Processing Unit)106をバス107で接続して構成される。ここで、入力装置101はキーボードなどの入力用デバイスであり、モニタ102はディスプレイなどの表示用デバイスである。
【0126】
また、可搬媒体制御I/F部103は、CD−R装置などの可搬媒体装置制御用デバイスである。そして、ネットワークI/F部104は、LAN(Local Area Network)ボードなどの通信用デバイスであり、LANなどのネットワークを介して他のコンピュータ100や図示しないサーバ装置と通信をおこなう。
【0127】
HDD105には、データ圧縮プログラム105aおよびデータ復元プログラム105bがあらかじめ記憶されており、CPU106が、HDD105のデータ圧縮プログラム105aおよびデータ復元プログラム105bを読み出して実行することで、図17に示すように、データ圧縮プログラム105aはデータ圧縮プロセス106aとして、データ復元プログラム105bはデータ復元プログラム106bとして、それぞれ機能するようになる。
【0128】
ところで、上記したデータ圧縮プログラム105aおよびデータ復元プログラム105bについては、必ずしもあらかじめHDD105に記憶させておく必要はなく、たとえば、コンピュータ100が読み出し可能なフレキシブルディスク(FD)、CD−ROM、光磁気ディスクなどの可搬記憶媒体、または、公衆回線、インターネット、LAN、WAN(Wide Area Network)などを介してコンピュータ100に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておき、コンピュータ100がこれらからプログラムを読み出して実行するようにしてもよい。
【0129】
(付記1)被圧縮データ列から秘匿性を有する圧縮データ列を生成するデータ圧縮方法であって、
所定長のビット列を前記被圧縮データ列の先頭に付加するビット列付加工程と、
前記ビット列付加工程により前記ビット列が付加された前記被圧縮データ列を圧縮する圧縮工程と、
前記圧縮工程により生成された圧縮データ列の先頭位置から該データ圧縮工程により圧縮された前記ビット列の所定位置までの先頭部分を、該圧縮データ列から分割する分割工程と
を含んだことを特徴とするデータ圧縮方法。
【0130】
(付記2)前記圧縮データ列から前記先頭部分を除いた後半部分を1または複数のブロックとし、少なくとも、該先頭部分と最初のブロックとを別々に出力する出力工程をさらに含んだことを特徴とする付記1に記載のデータ圧縮方法。
【0131】
(付記3)前記出力工程は、前記先頭部分を出力する前半データ出力工程と、前記圧縮データ列から前記先頭部分を除いた後半部分を出力する後半データ出力工程とをさらに含んだことを特徴とする付記2に記載のデータ圧縮方法。
【0132】
(付記4)前記出力工程は、前記後半部分を2つのブロックに分割する後半部分分割工程と、最初の該ブロックを出力する前半データ出力工程と、最後の該ブロックの先頭に前記先頭部分を付加して出力する後半データ出力工程とをさらに含んだことを特徴とする付記2に記載のデータ圧縮方法。
【0133】
(付記5)前記前半データ出力工程と前記後半データ出力工程とは、それぞれ異なる出力先にデータ出力をおこなうことを特徴とする付記3または4に記載のデータ圧縮方法。
【0134】
(付記6)前記圧縮データ列から前記先頭部分を除いた後半部分を出力する後半部分出力工程をさらに含んだことを特徴とする付記1に記載のデータ圧縮方法。
【0135】
(付記7)鍵を生成する鍵生成工程と、
任意のシードを生成するシード生成工程と、
前記鍵生成工程により生成された前記鍵と、前記シード生成工程により生成された前記シードとから、ハッシュ関数を用いて前記ビット列を生成するビット列生成工程とをさらに含み、
前記後半部分出力工程は、該シードを前記後半部分に付加したデータを出力することを特徴とする付記6に記載のデータ圧縮方法。
【0136】
(付記8)鍵を生成する鍵生成工程と、
カウンタ値生成ごとに、所定の規則に基づいて異なるカウンタ値を生成するカウンタ値生成工程と、
前記鍵生成工程により生成された前記鍵と、前記カウンタ値生成工程により生成された前記カウンタ値とから、ハッシュ関数を用いて前記ビット列を生成するビット列生成工程と
をさらに含んだことを特徴とする付記6に記載のデータ圧縮方法。
【0137】
(付記9)ビット列群を記憶装置に保持させるビット列群保持工程と、
前記ビット列群保持工程から1つの前記ビット列を選択するビット列選択工程とをさらに含み、
前記後半部分出力工程は、前記ビット列選択工程により選択された前記ビット列の選択情報を前記後半部分に付加したデータを出力することを特徴とする付記6に記載のデータ圧縮方法。
【0138】
(付記10)付記2で出力されたデータから前記被圧縮データ列を復元するデータ復元方法であって、
前記先頭部分および1または複数の前記ブロックから前記圧縮データ列を再現する圧縮データ再現工程と、
前記圧縮データ再現工程により再現された前記圧縮データ列を復号する復号工程と、
前記復号工程により復号されたデータ列から前記ビット列を除去して前記被圧縮データ列を出力する出力工程と
を含んだことを特徴とするデータ復元方法。
【0139】
(付記11)付記6で出力されたデータを用いて前記被圧縮データ列を復元するデータ復元方法であって、
前記ビット列を前記圧縮工程により圧縮するビット列圧縮工程と、
前記ビット列圧縮工程により圧縮されたビット列から前記先頭部分を分割するビット列分割工程と、
前記後半部分出力工程により出力された前記後半部分を入力する入力工程と、
前記ビット列分割工程により分割された前記先頭部分を、前記入力工程により入力された前記後半部分の先頭に付加することにより前記圧縮データ列を再現する圧縮データ再現工程と、
前記圧縮データ再現工程により再現された前記圧縮データ列を復号する復号工程と、
前記復号工程により復号されたデータ列から前記ビット列を除去して前記被圧縮データ列を出力する出力工程と
を含んだことを特徴とするデータ復元方法。
【0140】
(付記12)付記7で出力されたデータを用いて前記被圧縮データ列を復元するデータ復元方法であって、
鍵を生成する鍵生成工程と、
前記鍵生成工程により生成された前記鍵と、前記後半部分出力工程により出力されたデータから分離した前記シードとから、前記ハッシュ関数を用いて前記ビット列を生成するビット列生成工程と、
前記ビット列生成工程により生成された前記ビット列を前記圧縮工程により圧縮するビット列圧縮工程と、
前記ビット列圧縮工程により圧縮されたビット列から前記先頭部分を分割するビット列分割工程と、
前記後半部分出力工程により出力されたデータから前記シードを分離して得られる前記後半部分を入力する入力工程と、
前記ビット列分割工程により分割された前記先頭部分を、前記入力工程により入力された前記後半部分の先頭に付加することにより前記圧縮データ列を再現する圧縮データ再現工程と、
前記圧縮データ再現工程により再現された前記圧縮データ列を復号する復号工程と、
前記復号工程により復号されたデータ列から前記ビット列を除去して前記被圧縮データ列を出力する出力工程と
を含んだことを特徴とするデータ復元方法。
【0141】
(付記13)付記8で出力されたデータを用いて前記被圧縮データ列を復元するデータ復元方法であって、
鍵を生成する鍵生成工程と、
カウンタ値生成ごとに、所定の規則に基づいて異なるカウンタ値を生成するカウンタ値生成工程と、
前記鍵生成工程により生成された前記鍵と、前記カウンタ値生成工程により生成された前記カウンタ値とから、ハッシュ関数を用いて前記ビット列を生成するビット列生成工程と、
前記ビット列生成工程により生成された前記ビット列を前記圧縮工程により圧縮するビット列圧縮工程と、
前記ビット列圧縮工程により圧縮されたビット列から前記先頭部分を分割するビット列分割工程と、
前記後半部分出力工程により出力された前記後半部分を入力する入力工程と、
前記ビット列分割工程により分割された前記先頭部分を、前記入力工程により入力された前記後半部分の先頭に付加することにより前記圧縮データ列を再現する圧縮データ再現工程と、
前記圧縮データ再現工程により再現された前記圧縮データ列を復号する復号工程と、
前記復号工程により復号されたデータ列から前記ビット列を除去して前記被圧縮データ列を出力する出力工程と
を含んだことを特徴とするデータ復元方法。
【0142】
(付記14)付記9で出力されたデータを用いて前記被圧縮データ列を復元するデータ復元方法であって、
ビット列群を記憶装置に保持させるビット列群保持工程と、
前記ビット列群保持工程から、前記後半部分出力工程により出力されたデータから分離した前記選択情報を用いて前記ビット列を選択するビット列選択工程と、
前記ビット列選択工程により選択された前記ビット列を前記圧縮工程により圧縮するビット列圧縮工程と、
前記ビット列圧縮工程により圧縮されたビット列から前記先頭部分を分割するビット列分割工程と、
前記後半部分出力工程により出力されたデータから前記選択情報を分離して得られる前記後半部分を入力する入力工程と、
前記ビット列分割工程により分割された前記先頭部分を、前記入力工程により入力された前記後半部分の先頭に付加することにより前記圧縮データ列を再現する圧縮データ再現工程と、
前記圧縮データ再現工程により再現された前記圧縮データ列を復号する復号工程と、
前記復号工程により復号されたデータ列から前記ビット列を除去して前記被圧縮データ列を出力する出力工程と
を含んだことを特徴とするデータ復元方法。
【0143】
(付記15)被圧縮データ列から秘匿性を有する圧縮データ列を生成するデータ圧縮装置であって、
所定長のビット列を前記被圧縮データ列の先頭に付加するビット列付加手段と、
前記ビット列付加手段により前記ビット列が付加された前記被圧縮データ列を圧縮する圧縮手段と、
前記圧縮手段により生成された圧縮データ列の先頭位置から該データ圧縮手段により圧縮された前記ビット列の所定位置までの先頭部分を、該圧縮データ列から分割する分割手段と
を備えたことを特徴とするデータ圧縮装置。
【0144】
(付記16)前記圧縮データ列から前記先頭部分を除いた後半部分を1または複数のブロックとし、少なくとも、該先頭部分と最初のブロックとを別々に出力する出力手段をさらに備えたことを特徴とする付記15に記載のデータ圧縮装置。
【0145】
(付記17)前記圧縮データ列から前記先頭部分を除いた後半部分を出力する後半部分出力手段をさらに含んだことを特徴とする付記15に記載のデータ圧縮装置。
【0146】
(付記18)被圧縮データ列から秘匿性を有する圧縮データ列を生成するデータ圧縮プログラムであって、
所定長のビット列を前記被圧縮データ列の先頭に付加するビット列付加手順と、
前記ビット列付加手順により前記ビット列が付加された前記被圧縮データ列を圧縮する圧縮手順と、
前記圧縮手順により生成された圧縮データ列の先頭位置から該データ圧縮手段により圧縮された前記ビット列の所定位置までの先頭部分を、該圧縮データ列から分割する分割手順と
をコンピュータに実行させることを特徴とするデータ圧縮プログラム。
【0147】
(付記19)前記圧縮データ列から前記先頭部分を除いた後半部分を1または複数のブロックとし、少なくとも、該先頭部分と最初のブロックとを別々に出力する出力手順をさらにコンピュータに実行させることを特徴とする付記18に記載のデータ圧縮プログラム。
【0148】
(付記20)前記圧縮データ列から前記先頭部分を除いた後半部分を出力する後半部分出力手順をさらにコンピュータに実行させることを特徴とする付記18に記載のデータ圧縮プログラム。
【産業上の利用可能性】
【0149】
以上のように、本発明に係るデータ圧縮方法、データ復元方法、データ圧縮装置、データ復元装置、データ圧縮プログラムおよびデータ復元プログラムは、文書データや画像データなどの各種データの圧縮処理および復元処理に有用であり、特に、データに秘匿性をもたせることが必要なデータの圧縮処理および復元処理に適している。
【図面の簡単な説明】
【0150】
【図1】本実施例1に係るデータ圧縮方法およびデータ復元方法の概要を示す図である。
【図2】本実施例1に係るデータ圧縮装置およびデータ復元装置の構成を示す機能ブロック図である。
【図3】本実施例1に係るデータ圧縮処理の処理手順を示すフローチャートである。
【図4】本実施例1に係るデータ復元処理の処理手順を示すフローチャートである。
【図5】本実施例2に係るデータ圧縮方法およびデータ復元方法の概要を示す図である。
【図6】本実施例2に係るデータ圧縮処理の処理手順を示すフローチャートである。
【図7】本実施例2に係るデータ復元処理の処理手順を示すフローチャートである。
【図8】本実施例3に係るデータ圧縮方法およびデータ復元方法の概要を示す図である。
【図9】本実施例3に係るデータ圧縮装置およびデータ復元装置の構成を示す機能ブロック図である。
【図10】本実施例3に係るデータ圧縮処理の処理手順を示すフローチャートである。
【図11】本実施例3に係るデータ復元処理の処理手順を示すフローチャートである。
【図12】本実施例3に係るデータ圧縮方法およびデータ復元方法の変形例1の概要を示す図である。
【図13】本実施例3に係るデータ圧縮方法およびデータ復元方法の変形例2の概要を示す図である。
【図14】本実施例3に係るデータ圧縮方法およびデータ復元方法の変形例3の概要を示す図である。
【図15】従来のデータ圧縮方法およびデータ復元方法の概要を示す図である。
【図16】スプレイ符号の概要を示す図である。
【図17】データ圧縮プログラムおよびデータ復元プログラムを実行するコンピュータを示す図である。
【符号の説明】
【0151】
10 圧縮装置
10a 元データ入力部
10b ビット列生成部
10c ビット列付加部
10d 圧縮部
10e 部分取得部
10f 部分データ出力部
11〜16 圧縮処理
20 復元装置
20a 部分データ入力部
20b 圧縮データ再現部
20c 復号部
20d ビット列除去部
20e 元データ出力部
21〜26 復元処理
30 圧縮装置
30a 元データ入力部
30b ビット列生成部
30c ビット列付加部
30d 圧縮部
30e 部分取得部
30f 後半データ出力部
40 復元装置
40a 後半データ入力部
40b ビット列生成部
40c 圧縮部
40d 部分取得部
40e 圧縮データ再現部
40f 復号部
40g ビット列除去部
40h 元データ出力部
51 従来の圧縮処理
52 従来の復元処理
61〜63 スプレイ符号木
100 データ圧縮・復元装置(コンピュータ)
101 入力装置
102 モニタ
103 可搬媒体制御I/F部
104 ネットワークI/F部
105 HDD
105a データ圧縮プログラム
105b データ復元プログラム
106 CPU
106a データ圧縮プロセス
106b データ復元プロセス
107 バス

【特許請求の範囲】
【請求項1】
被圧縮データ列から秘匿性を有する圧縮データ列を生成するデータ圧縮方法であって、
所定長のビット列を前記被圧縮データ列の先頭に付加するビット列付加工程と、
前記ビット列付加工程により前記ビット列が付加された前記被圧縮データ列を圧縮する圧縮工程と、
前記圧縮工程により生成された圧縮データ列の先頭位置から該データ圧縮工程により圧縮された前記ビット列の所定位置までの先頭部分を、該圧縮データ列から分割する分割工程と
を含んだことを特徴とするデータ圧縮方法。
【請求項2】
前記圧縮データ列から前記先頭部分を除いた後半部分を1または複数のブロックとし、少なくとも、該先頭部分と最初のブロックとを別々に出力する出力工程をさらに含んだことを特徴とする請求項1に記載のデータ圧縮方法。
【請求項3】
前記圧縮データ列から前記先頭部分を除いた後半部分を出力する後半部分出力工程をさらに含んだことを特徴とする請求項1に記載のデータ圧縮方法。
【請求項4】
請求項2で出力されたデータから前記被圧縮データ列を復元するデータ復元方法であって、
前記先頭部分および1または複数の前記ブロックから前記圧縮データ列を再現する圧縮データ再現工程と、
前記圧縮データ再現工程により再現された前記圧縮データ列を復号する復号工程と、
前記復号工程により復号されたデータ列から前記ビット列を除去して前記被圧縮データ列を出力する出力工程と
を含んだことを特徴とするデータ復元方法。
【請求項5】
請求項3で出力されたデータを用いて前記被圧縮データ列を復元するデータ復元方法であって、
前記ビット列を前記圧縮工程により圧縮するビット列圧縮工程と、
前記ビット列圧縮工程により圧縮されたビット列から前記先頭部分を分割するビット列分割工程と、
前記後半部分出力工程により出力された前記後半部分を入力する入力工程と、
前記ビット列分割工程により分割された前記先頭部分を、前記入力工程により入力された前記後半部分の先頭に付加することにより前記圧縮データ列を再現する圧縮データ再現工程と、
前記圧縮データ再現工程により再現された前記圧縮データ列を復号する復号工程と、
前記復号工程により復号されたデータ列から前記ビット列を除去して前記被圧縮データ列を出力する出力工程と
を含んだことを特徴とするデータ復元方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2006−208992(P2006−208992A)
【公開日】平成18年8月10日(2006.8.10)
【国際特許分類】
【出願番号】特願2005−23825(P2005−23825)
【出願日】平成17年1月31日(2005.1.31)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】