(57)【特許請求の範囲】
【請求項１】
入力シンボル系列からシンボルの出現確率を動的に予測する予測手段と、
前記予測手段によるシンボルの出現確率の動的な予測結果に基づく動的な区分線形写像を暗号鍵で制御する制御手段と、
前記暗号鍵で制御された動的な区分線形写像に基づいて前記シンボルの符号化をおこなう圧縮符号化手段と
を備えたことを特徴とする算術型圧縮暗号装置。
【請求項２】
前記制御手段は、前記動的な区分線形写像の位置を前記暗号鍵で入れ替えて前記圧縮符号化手段から出力される出力符号を攪乱することを特徴とする請求項１に記載の算術型圧縮暗号装置。
【請求項３】
前記制御手段は、前記動的な区分線形写像の傾きに前記暗号鍵で摂動をかけて前記圧縮符号化手段から出力される出力符号を攪乱することを特徴とする請求項１に記載の算術型圧縮暗号装置。
【請求項４】
前記動的な区分線形写像の傾きおよび位置の内の少なくとも一方を前記暗号鍵に基づいて制御する際に、前記入力シンボル系列の複数のシンボルをひとまとめにして取り扱う操作を行って前記圧縮符号化手段の出力符号を攪乱することを特徴とする請求項２または３のいずれかに記載の算術型圧縮暗号装置。
【請求項５】
入力シンボル系列からシンボルの出現確率を動的に予測する予測手段と、前記予測手段によるシンボルの出現確率の動的な予測結果に基づく動的な区分線形写像を暗号鍵で制御する制御手段と、前記暗号鍵で制御された動的な区分線形写像に基づいて前記シンボルの符号化をおこなう圧縮符号化手段とを備えた算術型圧縮暗号装置によって符号化された符号を入力し、前記暗号鍵を使用して符号を前記シンボルに復号する復号化手段を備えたことを特徴とする算術型圧縮暗号復号装置。
【発明の詳細な説明】
技術分野
この発明は、シンボルの出現確率を予測するモデル器から出力された該シンボルの出現確率に基づいて前記シンボルの符号化をおこなう算術型圧縮暗号装置、算術型圧縮暗号方法およびプログラムに関し、特に、算術符号化法を用いてデータ圧縮と暗号化を同時に行う場合に、算術符号化による本来のデータ圧縮率を損なうことなく、高い安全性を得ることができる算術型圧縮暗号装置、算術型圧縮暗号方法およびプログラムに関する。
従来の技術
近年のインターネットの著しい普及と充実により、利用者は自分のパソコンを用いて様々な情報を手軽に、瞬時に、そして世界中の相手と送受信できるようになった。特に最近は、コンピュータネットワークの容量が限られているにもかかわらず、通信トラフィックや通信容量は増加する一途であるため、高速なリアルタイム通信を保証するデータ圧縮技術への要求が高まっている。
一方、インターネットは世界中の多数のコンピュータが自由に接続されて構成され、特定の管理者のもとで運営されるものではないので、送信情報の安全性が必ずしも保障されるわけではない。また、インターネット上での諸問題に対する法的整備も不十分であり、しばしば秘匿性の高い重要情報が第三者に漏洩するなどの問題が生じ、送信情報の安全性を確保するための方策、すなわち情報セキュリティに対する必要性もますます高まっている。
これらのことから、今日では「データ圧縮技術」と「暗号化技術」が極めて重要な技術として位置づけられているが、従来はデータ圧縮技術と暗号化技術はそれぞれ別個の技術として開発されていた。このため、データ圧縮と暗号化の両者をおこなう場合には、まずデータを圧縮した後に暗号化を行ういわゆる２パス方式が採用されることになる。
しかし、対象となる送信情報によっては、かかる２パス方式では処理が複雑となるので、データ圧縮と暗号化を同時に１パスで行うことが求められる場合がある。例えば、オンデマンド出版などの応用では、極めて容量の大きい超高精細印刷画像（Ａ４版カラー画像１枚の情報量は数百Ｍバイトにも及ぶ）を圧縮符号化しなければならず、かつ内容保全のためにさらに暗号化を施さなければならないので、従来の２パス方式では極めて処理が不便であり、処理を高速化することが望まれている。
このような立場から、高能率なデータ圧縮技術として知られる算術符号化法を用いてデータ圧縮と暗号化を同時に行う技術が提案されている。具体的には、この算術符号化法を実現する算術符号化器は、一般に、シンボルの出現確率を予測するモデル器と、このモデル器から出力されるシンボルの出現確率と実際の入力シンボルにより符号化を行う符号化器とから構成されるので、このモデル器または符号化器を対象として暗号化をおこなうことになる。
例えば、モデル器を暗号化対象とする技術としては、「Ｗｉｔｔｅｎ，″Ｏｎ  ｔｈｅ  Ｐｒｉｖａｃｙ  Ａｆｆｏｒｄｅｄ  ｂｙ  Ａｄａｐｔｉｖｅ  Ｔｅｘｔ  Ｃｏｍｐｒｅｓｓｉｏｎ″，Ｃｏｍｐｕｔｅｒ  ＆  Ｓｅｃｕｒｉｔｙ，Ｖｏｌ．７，ｐｐ．３９７−４０８，１９９８（以下「Ｗｉｔｔｅｎ法」と言う）」や、「Ｌｉｕ，″Ｒｅｓｉｓｔｉｎｇ  ｔｈｅ  Ｂｅｒｇｅｎ−Ｈｏｇａｎ  Ａｔｔａｃｋ  ｏｎ  Ａｄａｐｔｉｖｅ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ″，Ｐｒｏｃ．ＩＭＡ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｄｉｎｇ  ａｎｄ  Ｃｒｙｐｔｏｇｒａｐｈｙ，ｐｐ．１９９−２０８，１９９８（以下「Ｌｉｕ法」と言う）」や、「Ｕｅｈａｒａ，″Ａｔｔａｃｋｉｎｇ  ａｎｄ  Ｍｅｎｄｉｎｇ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｃｈｅｍｅｓ″，Ｐｒｏｃ．Ｔｗｅｎｔｙ−Ｓｅｃｏｎｄ  Ａｕｓｔｒａｌｉａｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  Ｃｏｎｆｅｒｅｎｃｅ，ｐｐ．４０８−４１９，１９９８（以下「Ｕｅｈａｒａ法」と言う）」などが知られている。
このＷｉｔｔｅｎ法は、使用するモデル器とその初期値を暗号鍵とする技術であり、Ｌｉｕ法は、Ｗｉｔｔｅｎ法と同様にモデル器の初期値を暗号鍵とするとともに、符号化器において初期写像区間を鍵で選定し、さらに当初ダミーシンボルを符号化する技術であり、Ｕｅｈａｒａ法は、Ｗｉｔｔｅｎ法と同様にモデル器の初期値を暗号鍵とするとともに、符号化器から出力される符号語にＸＯＲによるマスクキング演算を行う技術である。
また、符号化器を対象とする暗号化技術としては、「樽川，″算術符号を用いた秘密鍵暗号方式″，電子情報通信学会技術研究報告，ＩＴ９１−３４，１９９１（以下「樽川法」と言う）」や、特開平１１−７３１０２号公報に開示される秘密鍵暗号化復号化方法や、特開平６−１１２８４０号公報に開示される符号化復号化方法などが知られている。
この樽川法は、符号化器において鍵によりシンボルに対応する区間の入れ替えを行い符号化し、さらに当初ダミーシンボルを符号化する技術であり、特開平１１−７３１０２号公報に係る発明は、符号化器における初期写像区間の上限値を鍵としたものであり、特開平６−１１２８４０号公報に係る発明は、符号化器における初期シンボルの出現確率を鍵としたものである。
しかしながら、上記Ｗｉｔｔｅｎ法、Ｌｉｕ法およびＵｅｈａｒａ法のようなモデル器を暗号化対象とする従来技術によれば、使用するモデル器やその初期値を暗号鍵として使用しているために、モデル器が特定されると鍵が特定されやすいという問題がある。特に、算術符号化法を採用する国際標準方式などではモデル器が既知であるので、安全性が低下することになる。
一方、樽川法、特開平１１−７３１０２号公報、特開平６−１１２８４０号公報のような符号化器を暗号化対象とする従来技術によれば、出力符号に十分な攪拌性が得られないという問題や、ダミーシンボルの符号化により圧縮率が低下するという問題がある。
これらのことから、算術符号化法を用いてデータ圧縮と暗号化を同時に行う場合に、データ圧縮率および安全性を損なわない圧縮暗号化器をいかに実現するかが極めて重要な課題となっている。
発明の開示
この発明は、上述した従来技術による問題点（課題）を解消するためになされたものであり、算術符号化法を用いてデータ圧縮と暗号化を同時に行う場合に、算術符号化による本来のデータ圧縮率を損なうことなく、高い安全性を得ることができる算術型圧縮暗号装置、算術型圧縮暗号方法およびプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明に係る算術型圧縮暗号装置は、シンボルの出現確率を予測するモデル器から出力された該シンボルの出現確率に基づいて前記シンボルの符号化をおこなう算術型圧縮暗号装置であって、前記モデル器から前記シンボルの出現確率を入力する出現確率入力手段と、前記出現確率入力手段により入力したシンボルの出現確率に基づく動的な区分線形写像を暗号鍵で制御して出力符号を圧縮および暗号化する圧縮暗号化手段とを備えたことを特徴とする。
更に、前記圧縮暗号化手段は、前記動的な区分線形写像の位置を前記暗号鍵で入れ替えて出力符号を攪乱する点に特徴がある。
また、前記圧縮暗号化手段は、前記動的な区分線形写像の傾きに前記暗号鍵で摂動をかけて出力符号を攪乱する点に特徴がある。
また、前記動的な区分線形写像の傾きおよび／または位置を前記暗号鍵に基づいて変動制御する際に、情報源の拡大を行って出力符号を攪乱する点に特徴がある。
発明を実施するための最良の形態
以下に添付図面を参照して、この発明に係る算術型圧縮暗号装置、算術型圧縮暗号方法およびプログラムの好適な実施の形態について詳細に説明する。
算術型圧縮暗号装置の構成について
図１は、本実施の形態に係る算術型圧縮暗号装置の構成を示すブロック図である。同図に示すように、この算術型圧縮暗号装置１０は、モデル器Ｍと、符号化器Ｎとからなる。
モデル器Ｍは、入力シンボル系列ａｎを受け付け、時刻ｉ（ｉ＝１，２，．．．，ｎ）においてシンボル０，１をそれぞれ出現確率Ｐ（０）＝αｉ、Ｐ（１）＝１−αｉで符号化器Ｎに出力するものである。
符号化器Ｎは、本発明に係る暗号化をおこなう処理部であり、算術符号化法の符号化過程において動的な区分線形写像を鍵で制御することにより、データ圧縮と暗号化を同時に行う。すなわち、この算術型圧縮暗号装置１０は、算術符号化法の復号過程を、カオス軌道を生成する区分線形写像として知られるベルヌーイシフト写像の反復として捉えて、算術符号化法の符号化器Ｎにおいて暗号化を行っている。
なお、モデル器Ｍから出力される動的なシンボルの出現確率を考慮し、用いられる区分線形写像を一般化された動的なベルヌーイシフト写像として解釈しているため、任意のモデル器Ｍを使用することができる。このため、実用上の高いデータ圧縮率と安全性を同時に満たすことができる。また、従来技術の欄で説明したＷｉｔｔｅｎ法、Ｌｉｕ法及びＵｅｈａｒａ法などのモデル器を対象とする暗号化法やダミーシンボルを符号化する方法、出力符号にマスキング演算を行う方法と組み合わせて使用することもできる。
また、この算術型圧縮暗号装置１０では、動的な区分線形写像を鍵を用いて制御することとしているので、得られる出力符号は算術符号化による本来のデータ圧縮率を損なわず、写像のドメイン［０，１］全体に乱雑かつ一様に分布し、第三者に解読の手がかりを与えにくくすることができる。
算術符号化法について
次に、本実施の形態の前提となる算術符号化法について説明する。なおここでは、モデル器Ｍが出力する第ｉ番目のシンボルをａｉ∈Ｍ、長さｎのシンボル系列をａｎ＝ａ１ａ２．．．ａｎ、空列をａ０＝λと表すこととする。
このとき、１ビットのシンボルａｉについて、半開区間［０，１］はシンボルの出現確率によって図２に示す区間に割当てられる。符号化器では、当初、空列λに区間［０，１］を割当て、その下限をＸ（λ）＝０、区間幅をＷ（λ）＝１に設定する。
一般に、第ｉシンボルａｉまでのシンボル系列ａｉ＝ａ１ａ２．．．ａｉに対する区間幅Ｗ（ａｉ）とその下限Ｘ（ａｉ）は
Ｗ（ａｉ）＝Ｗ（ａｉ−１）Ｐ（ａｉ）                      （１）
Ｘ（ａｉ）＝Ｘ（ａｉ−１）＋Ｗ（ａｉ−１）Ｙ（ａｉ）      （２）
により再帰的に決定される。ただし、このとき、Ｘ（ａｉ）はｉビットのシンボル系列ａｉに対して割当てられる区間の下限を示し、図２における１ビットのシンボルａｉに割当てられる区間の下限Ｙ（ａｉ）とは異なる。
このような操作により、符号化されるｎビットのシンボル系列ａｎに対応する半開部分区間［Ｘ（ａｎ），Ｘ（ａｎ）＋Ｗ（ａｎ）］が求められる。ａｎに対応する符号語ψ（ａｎ）としては、区間［Ｘ（ａｎ），Ｘ（ａｎ）＋Ｗ（ａｎ）］に含まれる１点を指定するが、通常その下限Ｘ（ａｎ）が採用される。
算術符号化法の復号は、符号化に使用した図２を使用して行う。まず、符号語をｚ１＝ψ（ａｎ）とする。ｚ１が図２のどちらのシンボルに対応する区間内に存在するかを判定することにより、復号すべきシンボル系列ａｎの第１シンボルａ１が復号される。
一般に、第ｉ番目のシンボルａｉは、
ｚｉ＝｛ｚｉ−１−Ｙ（ａｉ−１）｝／Ｐ（ａｉ−１）        （３）
によって再帰的に得られるｚｉ（ｉ＝２，３，．．．，ｎ）が図２のどちらのシンボルに対応する区間内に存在するかを判定することにより復号される。
ところで、カオス軌道を生成する区分線形写像のひとつとして知られる一般化されたベルヌーイシフト写像は図３で示され、その反復過程は図４７の（４）式で与えられる。
このとき、Ｐ（０）＝αｉ、Ｐ（１）＝１−αｉ、符号語ψ（ａｎ）を写像の初期値ｘ１とみなしてベルヌーイシフト写像を繰り返すと、各反復によって得られる軌道の値ｘｉは（３）式と（４）式の対応関係から、明らかに算術符号の復号過程で得られるｚｉに等しいことがわかる。すなわち、算術符号の復号過程は、一般化された動的なベルヌーイシフト写像の反復で記述できる。
ベルヌーイシフト写像の反復によって得られる写像の軌道はエルゴード性を有し、暗号学上よい性質を示すことが知られている。これを一般化し、写像の傾きαｉを動的に変化させる（４）式による動的なベルヌーイシフト写像も同様な性質を有する。
データ圧縮および暗号化について
次に、本実施の形態に係る算術型圧縮暗号装置１０について説明する。すでに述べたように、この算術型圧縮暗号装置１０は、上記算術符号化法と異なり、算術符号化の符号化過程において動的な区分線形写像を鍵で制御することにより、データ圧縮と暗号化を同時に行っている。
具体的には、（１）動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する方法、（２）動的な区分線形写像の傾きを鍵で変化させて出力符号を攪乱する方法、（３）動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する方法、（４）動的な区分線形写像を（１）〜（３）の方法によって鍵で制御する際に情報源の拡大を行って出力符号を攪乱する方法を採用する。そこで、以下ではこれらの方法についてさらに詳細に説明する。
（１）動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する方法
この方法では、図４及び、図４７に示す（５）式、（６）式に示すように、図３の区分線形写像の位置を入れ替えた２種類の写像Ｍ０とＭ１を準備する。ただし、Ｐ（０）＝αｉ、Ｐ（１）＝１−αｉ（ｉ＝１，２，．．．，ｎ）である。
従来の算術符号化法では、シンボルの復号が写像Ｍ０のみの反復で行われるが、本実施の形態では写像反復毎にＭ０もしくはＭ１のいずれかを鍵で任意に切り替えて使用する。そこで、例えばＭ０を用いるときｋｒｉ＝０、Ｍ１を用いるときｋｒｉ＝１と表し、予め写像を切り替えるための鍵系列Ｋｒ＝ｋｒｉ□｛０，１｝（ｉ＝１，２，．．．，ｎ）を準備しておく（Ｍ０を用いるときｋｒｉ＝１、Ｍ１を用いるときｋｒｉ＝０として規則を反転してもよいことは自明である）。ただし、Ｋｒ＝ｋｒｊ（ｊ＝１，２，．．．，ｍ），ｍ＜ｎとしてｋｒｊを繰り返し使用してもよい。
復号時にＭ０もしくはＭ１を任意に切り替えて写像を行うので、符号化時には復号に用いる各写像の合成写像を考慮して符号語に相当する区間を定めて行く。ｋｒｉを考慮すると、図２で定義した下限値Ｙ（ａｉ）は図５に示すようにｋｒｉの値によって異なる値をとる。
このような修正を考慮して、第ｉ番目までのシンボル系列ａｉに対する区間幅Ｗ（ａｉ）及びその下限Ｘ（ａｉ）（ｉ＝１，２，．．．，ｎ）は、ｋｒｉの値を考慮して図５と（１）式および（２）式から決定される。
一例として、図６にｎ＝３（α１＝２／３，α２＝３／４，α３＝１／２），Ｋｒ＝１０１による区間分割の一例を従来法による分割（Ｋｒ＝０００と等価）と比較して示す。この図から、本実施の形態では鍵系列Ｋｒによってシンボル系列ａｎに対応する区間の位置、すなわち符号語を任意に攪拌することができる。
次に、この符号化方法の処理手順について説明する。図７は、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する場合の符号化時の処理手順を示すフローチャートである。同図に示すように、変数ｉを１に設定し（ステップＳ７０１）、αｉ、ｋｒｉおよびａｉを入力する（ステップＳ７０２）。
そして、このｋｒｉが０であるか否か、ａｉが０であるか否かを確認し（ステップＳ７０３，Ｓ７０４，Ｓ７０７）、ｋｒｉとａｉがともに０である場合には（ステップＳ７０４肯定）、
0004086661.tif 000002
とし（ステップＳ７０５）、変数ｉをインクリメントした後（ステップＳ７１０）、変数ｉをｎと比較し（ステップＳ７１１）、両者が等しい場合には（ステップＳ７１１肯定）、ψ（ａｎ）を出力する（ステップＳ７１２）。なお、両者が等しくない場合には（ステップＳ７１１否定）、ステップＳ７０２に移行して同様の処理を繰り返す。
また、ｋｒｉが０でａｉが１である場合には（ステップＳ７０４否定）、
0004086661.tif 000003
とし（ステップＳ７０６）、同様の処理（ステップＳ７１０〜Ｓ７１２）を行う。
また、ｋｒｉが１でａｉが０である場合には（ステップＳ７０７肯定）、
0004086661.tif 000004
とし（ステップＳ７０８）、同様の処理（ステップＳ７１０〜Ｓ７１２）を行う。
また、ｋｒｉとａｉがともに１である場合には（ステップＳ７０７否定）、
0004086661.tif 000005
とし（ステップＳ７０９）、同様の処理（ステップＳ７１０〜Ｓ７１２）を行う。
この方法で得られた符号語ψ（ａｎ）の復号は次のように行う。まず初期値ｘ１＝ψ（ａｎ）とする。ｋｒ１の値と図４からｘ１がどちらのシンボルに対応する区間にあるかを判定し、第１番目のシンボルａ１を復号する。次に、ｋｒ２＝０ならばｘ１を（５）式で写像し、ｋｒ２＝１ならばｘ１を（６）式で写像してｘ２を決定し、同様に図４を用いてａ２を復号する。
一般に、ｋｒｉに対応する写像から得られたｘｉが、図４のどちらのシンボルに対応する区間にあるかを判定してシンボルａ１を復号する。これをｎ回繰り返し、シンボル系列ａｎを復号する。
図８は、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する場合の復号化時の処理手順を示すフローチャートである。同図に示すように、ｘ１＝ψ（ａｎ）とし、変数ｉを１に設定した後に（ステップＳ８０１）、ｋｒｉを入力する（ステップＳ８０２）。
そして、このｋｒｉが０であるか否か、ｘｉがαｉよりも小さいか否かを確認し（ステップＳ８０３，Ｓ８０４，Ｓ８０７）、ｋｒｉが０でありｘｉがαｉよりも小さい場合には（ステップＳ８０４肯定）、
0004086661.tif 000006
とし（ステップＳ８０５）、変数ｉをインクリメントした後（ステップＳ８１０）、変数ｉをｎと比較し（ステップＳ８１１）、両者が等しい場合には（ステップＳ８１１肯定）、ａｎを出力する（ステップＳ８１２）。なお、両者が等しくない場合には（ステップＳ８１１否定）、ステップＳ８０２に移行して同様の処理を繰り返す。
また、ｋｒｉが０でありｘｉがαｉ以上である場合には（ステップＳ８０４否定）、
0004086661.tif 000007
とし（ステップＳ８０６）、同様の処理（ステップＳ８１０〜Ｓ８１２）を行う。
また、ｋｒｉが１でありｘｉがαｉよりも小さい場合には（ステップＳ８０７肯定）、
0004086661.tif 000008
とし（ステップＳ８０８）、同様の処理（ステップＳ８１０〜Ｓ８１２）を行う。
また、ｋｒｉが１でありｘｉがαｉ以上である場合には（ステップＳ８０７否定）、
0004086661.tif 000009
とし（ステップＳ８０９）、同様の処理（ステップＳ８１０〜Ｓ８１２）を行う。
このように、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱することにより、データ圧縮率を損なうことなく、出力される符号の撹拌性を向上させ、高い安全性を保持することができる。
（２）動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する方法
次に、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する方法について説明する。復号過程で用いる区分線形写像の傾きｆ’（ｘ１）は、明らかに１より大きく拡大写像となっている。従って、写像の傾きが摂動によって少しでも変化すると、得られる軌道はカオス的な性質から次第に全く異なる軌道を推移するようになる。その結果、シンボルの復号結果も同様に意味をなさなくなる。
このことを考慮し、ここでは図９に示すように第ｉシンボルａｉを符号化する際に、
0004086661.tif 000010
によって写像の傾きに摂動を加え、得られる出力符号を攪乱する。ただし、βｉを写像の摂動係数と呼び、鍵系列Ｋｓ＝ｋｓｉ（ｉ＝１，２，．．．，ｎ）の要素ｋｓｉから決定し、圧縮率の低下を招かないように１の近傍値に設定する。
そして、図４７に示す（８）式によって写像を反復する。ただし、Ｐ（０）＝αｉ、Ｐ（１）＝１−αｉである。
従来の算術符号化では、シンボルの復号を（４）式の反復によって行うが、本発明では写像反復毎にまず（７）式によってαｉに摂動をかけ、（８）式による区分線形写像を繰り返すことにより行う。
復号時に摂動のかかったαｉ’を用いて写像を行うので、符号化時には図１０に定義する下限値Ｙ（ａｉ）を用いる。このような修正を考慮して、第ｉ番目までのシンボル系列ａｉに対する区間幅Ｗ（ａｉ）及びその下限Ｘ（ａｉ）（ｉ＝１，２，．．．，ｎ）は、図１０と（１）式および（２）式から決定される。
鍵ｋｓｉの値から摂動係数βｉをどのように決めてもよいが、例えば１ビットの鍵を用いてｋｓｉ＝０のときβｉ＝０．９、ｋｓｉ＝１のときβｉ＝１．１とした場合、図１１にｎ＝３（α１＝２／３，α２＝３／４，α３＝１／２），Ｋｓ＝００１による区間分割の一例を従来法による分割（摂動なし）と比較して示す。この図から、本実施の形態では、鍵系列Ｋｓによって、用いる区分線形写像の傾きが摂動により変化し、シンボル系列ａｎに対応する区間の位置、すなわち符号語を任意に攪拌することができる。
次に、この符号化方法の処理手順について説明する。図１２は、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合の符号化時の処理手順を示すフローチャートである。
同図に示すように、変数ｉを１に設定し（ステップＳ１２０１）、αｉ、ｋｓｉおよびａｉを入力し（ステップＳ１２０２）、ｋｓｉからβｉを決定した後に（ステップＳ１２０３）、αｉ’＝βｉαｉとする（ステップＳ１２０４）。
その後、ａｉが０であるか否かを確認し（ステップＳ１２０５）、ａｉが０の場合には（ステップＳ１２０５肯定）、
0004086661.tif 000011
とし（ステップＳ１２０６）、変数ｉをインクリメントした後に（ステップＳ１２０８）、変数ｉをｎと比較し（ステップＳ１２０９）、両者が等しい場合には（ステップＳ１２０９肯定）、ψ（ａｎ）を出力する（ステップＳ１２１０）。なお、両者が等しくない場合には（ステップＳ１２０９否定）、ステップＳ１２０２に移行して同様の処理を繰り返す。
これに対して、ａｉが１である場合には（ステップＳ１２０５否定）、
0004086661.tif 000012
とし（ステップＳ１２０７）、同様の処理（ステップＳ１２０８〜Ｓ１２１０）を行う。
この方法で得られた符号語ψ（ａｎ）の復号は次のように行う。まず初期値ｘ１＝ψ（ａｎ）とし、鍵ｋｓ１の値から決定されるβ１を用いてα１をα１’に修正し、図１０からｘ１がどちらのシンボルに対応する区間にあるかを判定し、第１番目のシンボルａ１を復号する。次に、ｘ１に（８）式による写像を施しｘ２を得て、同様にｋｓ２の値から決定されるβ２を用いてα２をα２’に修正し、図１０からｘ２を復号する。
一般に、鍵ｋｓｉの値から決定されるβｉを用いてαｉをαｉ’に修正し、（８）式による写像から得られたｘｉが図１０のどちらのシンボルに対応する区間にあるかを判定してシンボルａｉを復号する。これをｎ回繰り返し、シンボル系列ａｎを復号する。
図１３は、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合の復号化時の処理手順を示すフローチャートである。同図に示すように、ｘ１＝ψ（ａｎ）とし、変数ｉを１に設定する（ステップＳ１３０１）。そして、ｋｓｉを入力し（ステップＳ１３０２）、このｋｓｉからβｉを決定した後に（ステップＳ１３０３）、αｉ’＝βｉαｉとする（ステップＳ１３０４）。
その後、ｘｉがαｉ’よりも小さいか否かを確認し（ステップＳ１３０５）、ｘｉがαｉ’よりも小さい場合には（ステップＳ１３０５肯定）、
0004086661.tif 000013
とし（ステップＳ１３０６）、変数ｉをインクリメントした後に（ステップＳ１３０８）、変数ｉをｎと比較し（ステップＳ１３０９）、両者が等しい場合には（ステップＳ１３０９肯定）、ａｎを出力する（ステップＳ１３１０）。なお、両者が等しくない場合には（ステップＳ１３０９否定）、ステップＳ１３０２に移行して同様の処理を繰り返す。
また、ｘｉがαｉ’以上である場合には（ステップＳ１３０５否定）、
0004086661.tif 000014
とし（ステップＳ１３０７）、同様の処理（ステップＳ１３０８〜Ｓ１３１０）を行う。
このように、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合にも、βｉ□１からほとんどデータ圧縮率を損なうことなく、出力される符号の撹拌性を向上させ、高い安全性を保持することができる。なお、（７）式によるαｉの摂動方法としては、（ｉ）αｉに直接βｉを乗算する方法、（ｉｉ）αｉに微小な数値を演算（加算、減算、ＸＯＲ等）する方法、（ｉｉｉ）αｉに対応するαｉ’のテーブルを予め作成して用いる方法、などを利用できる。
（３）動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する方法
上記（２）に示した方法では、βｉが１に近い値をとるため、得られる符号語は従来法による符号語の近傍に分布する。その結果、符号化する系列ａｎが決まると、鍵でβｉを変化させても得られる符号語は写像のドメイン［０，１］の一部に偏ってしまう。
そこで、図１４及び、図４７に示す（１０）式、（１１）式に示すように、まず鍵ｋｓｉ（ｉ＝１，２，．．．，ｎ）を用いて動的な区分線形写像の傾きに（７）式で摂動をかけ、さらに写像の位置を入れ替えた２種類の写像Ｍ０’とＭ１’を準備し、これらを復号時に１ビットの鍵ｋｒｉ∈｛０，１｝（ｉ＝１，２，．．．，ｎ）で切り替える。これにより、図１０は図１５に拡張され、図１５と（１）式および（２）式による符号化の結果は、従来法と比べてさらに異なるものとなる。その一例として、摂動に１ビットの鍵を使用し、ｎ＝３（α１＝２／３，α２＝３／４，α３＝１／２），Ｋｓ＝００１、Ｋｒ＝１０１とした場合の区間分割の一例を従来法と比較して図１６に示す。
摂動と写像入れ替えの効果により、得られる符号語の種類が著しく増加し、出力符号を写像のドメイン［０，１）全体に拡散させることができる。ただし、この方法を用いる場合、一般に写像反復毎に使用するｋｓｉとｋｒｉを合成した合成鍵Ｋ＝ｋｓｉｋｒｉ（ｉ＝１，２，．．．，ｎ）を予め準備して用いる。また、鍵Ｋ＝ｋｓｊｋｒｊ（ｊ＝１，２，．．．，ｍ）、ｍ＜ｎとしてｋｓｊｋｒｊを繰り返し使用してもよい。
次に、この符号化方法の処理手順について説明する。図１７は、動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する場合の符号化時の処理手順を示すフローチャートである。
同図に示すように、変数ｉを１に設定し（ステップＳ１７０１）、αｉ、ｋｓｉ、ｋｒｉおよびａｉを入力する（ステップＳ１７０２）。その後、このｋｓｉからβｉを決定し（ステップＳ１７０３）、αｉ’＝βｉαｉとする（ステップＳ１７０４）。
その後、このｋｒｉが０であるか否か、ａｉが０であるか否かを確認し（ステップＳ１７０５，Ｓ１７０６，Ｓ１７０９）、ｋｒｉとａｉがともに０である場合には（ステップＳ１７０６肯定）、
0004086661.tif 000015
とし（ステップＳ１７０７）、変数ｉをインクリメントした後に（ステップＳ１７１２）、変数ｉをｎと比較し（ステップＳ１７１３）、両者が等しい場合には（ステップＳ１７１３肯定）、ψ（ａｎ）を出力する（ステップＳ１７１４）。なお、両者が等しくない場合には（ステップＳ１７１３否定）、ステップＳ１７０２に移行して同様の処理を繰り返す。
また、ｋｒｉが０でａｉが１である場合には（ステップＳ１７０６否定）、
0004086661.tif 000016
とし（ステップＳ１７０８）、同様の処理（ステップＳ１７１２〜Ｓ１７１４）を行う。
また、ｋｒｉが１でａｉが０である場合には（ステップＳ１７０９肯定）、
0004086661.tif 000017
とし（ステップＳ１７１０）、同様の処理（ステップＳ１７１２〜Ｓ１７１４）を行う。
また、ｋｒｉとａｉがともに１である場合には（ステップＳ１７０９否定）、
0004086661.tif 000018
とし（ステップＳ１７１１）、同様の処理（ステップＳ１７１２〜Ｓ１７１４）を行う。
次に、復号化方法の処理手順について説明する。図１８は、動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する場合の復号化時の処理手順を示すフローチャートである。
同図に示すように、ｘ１＝ψ（ａｎ）とし、変数ｉを１に設定した後に（ステップＳ１８０１）、ｋｓｉおよびｋｒｉを入力する（ステップＳ１８０２）。その後、このｋｓｉからβｉを決定し（ステップＳ１８０３）、αｉ’＝βｉαｉとする（ステップＳ１８０４）。
その後、このｋｒｉが０であるか否か、ｘｉがαｉ’よりも小さいか否かを確認し（ステップＳ１８０５，Ｓ１８０６，Ｓ１８０９）、ｋｒｉが０でありｘｉがαｉ’よりも小さい場合には（ステップＳ１８０６肯定）、
0004086661.tif 000019
とし（ステップＳ１８０７）、変数ｉをインクリメントした後（ステップＳ１８１２）、変数ｉをｎと比較し（ステップＳ１８１３）、両者が等しい場合には（ステップＳ１８１３肯定）、ａｎを出力する（ステップＳ１８１４）。なお、両者が等しくない場合には（ステップＳ１８１３否定）、ステップＳ１８０２に移行して同様の処理を繰り返す。
また、ｋｒｉが０でありｘｉがαｉ’以上である場合には（ステップＳ１８０６否定）、
0004086661.tif 000020
とし（ステップＳ１８０８）、同様の処理（ステップＳ１８１２〜Ｓ１８１４）を行う。
また、ｋｒｉが１でありｘｉがαｉ’よりも小さい場合には（ステップＳ１８０９肯定）、
0004086661.tif 000021
とし（ステップＳ１８１０）、同様の処理（ステップＳ１８１２〜Ｓ１８１４）を行う。
また、ｋｒｉが１でありｘｉがαｉ’以上である場合には（ステップＳ１８０９否定）、
0004086661.tif 000022
とし（ステップＳ１８１１）、同様の処理（ステップＳ１８１２〜Ｓ１８１４）を行う。
このように、動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する場合にも、データ圧縮率を損なうことなく、出力される符号の撹拌性をさらに向上させ、高い安全性を保持することができる。
（４）動的な区分線形写像を（１）〜（３）の方法によって鍵で制御する際に情報源の拡大を行って出力符号を攪乱する方法
ここでは、得られる符号語の種類数をさらに増加させることを考える。そのためにＲビットのシンボル
ｃｊ＝ａＲｊａＲｊ＋１．．．ａＲ（ｊ＋１）−１      （１１）
をまとめて符号化し、その合成写像に現れる２Ｒ個の区分線形写像の［０，１］上の配置を任意に入れ替えて使用する。例えば、Ｒ＝２のとき図１９（ａ）に示すように４つの区分線形写像が現れるが、これを鍵によって任意に入れ替えた合成写像は図１９（ａ），（ｂ）に示す例を含めて４！＝２４通り存在する。
一般に、Ｒビットのシンボルをまとめて符号化する場合、（２Ｒ）！通りの合成写像が存在し、同じＲビットのシンボル系列に対応する符号語の種類数が著しく増加する。このとき、実際の符号の総数ｒは、図４７の（１２）式に示すような値となり、例えばＲ＝１（情報源の拡大なし）で６回写像を反復しても２６＝６４種類の符号語しか得られないのに対し、Ｒ＝３で情報源を拡大し２回写像を行うと（２７）２＝２１４＝１６，３８４種類もの異なる符号語を得ることができる。
ｃｊ（ｊ＝１，２，．．．）の符号化は、まずｃｊを構成する各シンボルの出現確率  Ｐ（ａｉ）を摂動係数βｉを用いてＰ’（ａｉ）に修正し、
Ｐ（ｃｊ）＝Ｐ’（ａＲｊ）Ｐ’（ａＲｊ＋１）．．．Ｐ’（ａＲ（ｊ＋ １）−１）                                    （１３）
を用いて、系列ｃｊ＝ｃ１ｃ２．．．ｃｊに対応する区間幅
Ｗ（ｃｊ）＝Ｗ（ｃｊ−１）Ｐ（ｃｊ）                      （１４）
とその下限
Ｘ（ｃｊ）＝Ｘ（ｃｊ−１）＋Ｗ（ｃｊ−１）Ｙ（ｃｊ）      （１５）
を再帰的に求めることにより行う。ただし、当初、空列λ（＝ｃ０）に区間［０，１）を割当て、その下限をＸ（λ）＝０、区間幅をＷ（λ）＝１に設定することは、これまでの方法と同様である。
このように、ｃｊの符号化および対応する復号化の方法は情報源を拡大しないａｉの場合と基本的に同様である。しかし、鍵系列Ｋｒ＝ｋｒｉ∈｛０，１｝（ｉ＝１，２，．．．，ｎ）を用いる代わりに、ｃｊに対応する合成写像を、（２Ｒ）！通りの合成写像の中から一意に選択するための鍵系列Ｋｅ＝ｋｅｊ（ｊ＝１，２，．．．）を用いる点が異なり、それによって出力符号の複雑さが著しく向上する。
このように動的な区分線形写像を（１）〜（３）の方法によって鍵で制御する際に情報源の拡大を行って出力符号を攪乱する場合にも、データ圧縮率を損なうことなく、出力される符号の撹拌性をより一層向上させ、高い安全性を保持することができる。
上述してきたように、本実施の形態では、算術型圧縮暗号装置１０の符号化器Ｎが、モデル器Ｍから入力した出現確率αｉに基づいて、動的な区分線形写像の位置を鍵で入れ替えるか、動的な区分線形写像の傾きを鍵で変化させるか、これらを組み合わせるか、情報源の拡大をおこなうよう構成したので、データ圧縮率を損なうことなく、出力される符号の撹拌性を向上させ、高い安全性を保持することができる。
（５）実施例３の方法をＪＢＩＧ２に適用した実施例
第５実施例として、実施例３と同様に本発明の摂動法と写像位置の入れ替えを組み合わせてＪＢＩＧ２の算術符号器として周知のＭＱコーダに適用した例を開示する。
図２４は、第５実施例において、摂動法により状態遷移図から得られる確率推定値ｑｋを理想的な値の方向に鍵で制御（移動）する方法を示す説明図である。
周知のＭＱコーダにおいては、区間幅Ａが１６進数で８０００（区間幅の最小値Ｒｍｉｎ）からＦＦＦＦ（区間幅の最大値Ｒｍａｘ）の間にある場合に、状態遷移図から得られる、区間幅Ａが１６進数でＡＡＡＡの時に正しい値となる確率推定値ｑｋをそのまま使用する。従って、図示するように、実際の区間幅Ａ（ａｉ）が１６進数でＡＡＡＡではない場合（図２４の中央はＡ（ａｉ）が１６進数でＡＡＡＡより小さい場合、右は大きい場合）には、符号化の計算に使用される確率推定値ｑｋと理想的な値ｑｋ’との間にはずれδが存在する。
第５実施例においては、このずれδの方向および大きさを求め、理想的な値ｑｋ’に近づく方向に符号化の計算に使用される確率推定値ｑｋを移動させる。そして、δが大きい場合には多数ビットの鍵データＫを使用し、δが小さい場合には最低０ビットの鍵データＫを使用して移動量を制御する。
従って、計算量は増すが、効率よく摂動をかけることができ、更に、摂動をかけることにより、符号化の計算に使用される確率推定値ｑｋがより理想的な値ｑｋ’に近づくので、通常のＭＱコーダより符号化効率（圧縮率）が向上するという効果がある。
図２０は、算術型圧縮暗号化装置をＪＢＩＧ２で実装する場合の構成を示すブロック図である。周知のＪＢＩＧ２の算術符号器（ＭＱコーダ）は、大きく３つのブロックから成る。コンテクスト生成器は、情報源（入力シンボル系列ａｎ）からａｉを入力して、後述するコンテクスト（ＣＸ）を出力する。
モデル器は、コンテクスト生成器からコンテクストＣＸを入力し、また符号化器から後述する正規化の有無およびａｉがＭＰＳか否かという情報を入力して、現在の状態であるインデックス（Ｉ（ＣＸ））およびＭＰＳの値を出力する。
符号化器は、内部状態として区間幅Ａ（ａｉ−１）および区間の下限Ｃ（ａｉ−１）の値を持ち、情報源ａｉ、インデックス（Ｉ（ＣＸ））およびＭＰＳの値をを入力し、更に鍵データＫを入力して、圧縮暗号データＣＤおよび正規化の有無およびａｉがＭＰＳか否かという情報を出力する。本発明においては、符号化器の構成あるいは処理に特徴があり、コンテクスト生成器およびモデル器については、周知のＭＱコーダの構成および処理をそのまま採用可能であるので、詳細な説明は省略する。
図２１は、ＪＢＩＧ２において、コンテクスト生成器で参照画素領域から１６ビットの参照画素を抽出してコンテクストＣＸを生成する方法を示す説明図である。注目画素に対して、予め任意の方法で定められた参照画素位置ｒ１からｒ１６の当該画素値が読み出され、１６ビットのコンテクストＣＸが生成される。
以下、図２０の符号化器およびモデル器の機能を実行する処理のフローチャートに従って動作を説明する。図２７は、符号化器およびモデル器の機能を含む圧縮暗号化器における符号化プロセス全体を示すフローチャートである。
Ｓ１０においては、後述する初期化処理（ＩＮＩＴＥＮＣ）が行われる。Ｓ１１においては、コンテクストＣＸと１ビットの入力シンボルａｉを読み込む。Ｓ１２においては、後述する符号化処理（ＥＮＣＯＤＥ）が行われる。Ｓ１３においては、全てのシンボルの符号化処理を終了したか否かが判定され、判定結果が否定の場合にはＳ１１に移行するが、肯定の場合にはＳ１４に移行して、後述する符号化完了処理（ＦＬＵＳＨ）を実行して処理を終了する。
図２８は、Ｓ１０の初期化処理（ＩＮＩＴＥＮＣ）を示すフローチャートである。Ｓ２０においては、区間幅Ａを１６進数で８０００、区間の下限Ｃを０、データを書き出すファイルポインタＢＰをＢＰＳＴ−１（書き出し初期値−１）、符号化ビット数の計数に使用する変数ＣＴ（０になるとデータを書き出す）を１２に設定する。Ｓ２１においては、ファイルポインタの指す値Ｂが１６進数でＦＦか否かが判定され、判定結果が否定の場合には処理を終了するが、肯定の場合にはＳ２２に移行してＣＴを１３に設定する。なお、図示はされていないが、初期化処理においてコンテクスト学習表の初期化も行われる。
図２９は、Ｓ１２の１ビットシンボルａｉの符号化処理（ＥＮＣＯＤＥ）を示すフローチャートである。Ｓ３０においては、シンボルａｉが０か否（＝１）かが判定され、判定結果が肯定の場合にはＳ３２に移行するが、否定の場合にはＳ３１に移行する。Ｓ３１においてはａｉが１である場合の符号化処理（ＣＯＤＥ１）が行われる。また、Ｓ３２においては、ａｉが０である場合の符号化処理（ＣＯＤＥ０）が行われる。
図３０は、Ｓ３１の符号化処理（ＣＯＤＥ１）を示すフローチャートである。Ｓ４０においては、後述する摂動処理（ＣＨＡＮＧＥＱＥ）によりＣＱｅを求める。Ｓ４１においては、図２２のコンテクスト学習表を参照して、コンテクストに対応するＭＰＳが１か否かが判定され、判定結果が肯定の場合にはＳ４３に移行し、否定の場合にはＳ４２に移行する。
図２２は、コンテクストに対応するインデックスＩ（ＣＸ）とＭＰＳを動的に管理するコンテクスト学習表を示す説明図である。図示するように、各コンテクスト値毎に、ＭＰＳ値およびその時点でのインデックスＩ（ＣＸ）を記憶する。ＭＰＳおよびＩ（ＣＸ）は時間と共に変化し、初期値は全て０である。
図３０に戻って、Ｓ４２においては、後述する、入力シンボルがＬＰＳだった場合の写像切替処理（ＣＯＤＥＬＰＳＥＮＣＲＹＰＴ）が行われ、また、Ｓ４３においては、後述する、入力シンボルがＭＰＳだった場合の写像切替処理（ＣＯＤＥＭＰＳＥＮＣＲＹＰＴ）が行われる。
図３１は、Ｓ３２の符号化処理（ＣＯＤＥ０）を示すフローチャートである。Ｓ５０においては、後述する摂動処理（ＣＨＡＮＧＥＱＥ）によりＣＱｅを求める。Ｓ５１においては、図２２のコンテクスト学習表を参照して、コンテクストに対応するＭＰＳが０か否かが判定され、判定結果が肯定の場合にはＳ５３に移行し、否定の場合にはＳ５２に移行する。
Ｓ５２においては、後述する、入力シンボルがＬＰＳだった場合の写像切替処理（ＣＯＤＥＬＰＳＥＮＣＲＹＰＴ）が行われ、また、Ｓ５３においては、後述する、入力シンボルがＭＰＳだった場合の写像切替処理（ＣＯＤＥＭＰＳＥＮＣＲＹＰＴ）が行われる。
図３２は、Ｓ４０、Ｓ５０の摂動処理（ＣＨＡＮＧＥＱＥ）を示すフローチャートである。この処理においては、まず使用する鍵データのビット数ＫｅｙＢｉｔＮｕｍを求め、これを使用してＱｅに摂動をかけたＣＱｅを得る。
そこで、まずビット数の生成方法について説明する。本発明においては、図２４の理想的なｑｋ’値と実際の値ｑｋ（＝Ｑｅ）との差δの対数ｌｏｇ２δを求め、これを使用する鍵データのビット数ｘとしている。
ｘ＝ｌｏｇ２｜Ｑｅ−（Ｑｅ／０ｘＡＡＡＡ）＊Ａ（ａｉ）｜
ここで、区間幅Ａ（ａｉ）の０ｘＡＡＡＡとの差をΔとすると、
Ａ（ａｉ）＝０ｘＡＡＡＡ＋Δ
であるので、
0004086661.tif 000023
となる。従って、インデックスから得られるＱｅおよび区間幅Ａ（ａｉ）から得られるΔから、ｌｏｇ２Ｑｅおよび（ｌｏｇ２｜Δ｜−ｌｏｇ２０ｘＡＡＡＡ）の近似値をそれぞれテーブルを使用して求め、鍵データのビット数ｘを算出することができる。
図２５は、ｌｏｇ２δを導出するためのｌｏｇ２｜Δ｜−ｌｏｇ２０ｘＡＡＡＡの近似値を与えるテーブルの内容を示す説明図である。区間幅Ａの所定の範囲毎に、ｌｏｇ２｜Δ｜−ｌｏｇ２０ｘＡＡＡＡの近似値が記載されている。
図２６は、ｌｏｇ２δを導出するために準備されるｌｏｇ２Ｑｅの近似値を与えるテーブルを示す説明図である。各インデックス毎にｌｏｇ２Ｑｅの近似値が記載されている。
但し、本発明においては、（ｌｏｇ２｜Δ｜−ｌｏｇ２０ｘＡＡＡＡ）の近似値を以下に示す方法により、図２５のテーブルは使用せずに高速に算出している。
図２５に示す表では、ｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）の計算値が？．５には少し正確ではないが、近似値として？．５を使用できる。この方式だと、Δに基づきテーブルを順に検索する必要はなく、上から（上位１５ビット目から）数えて何ビット目に初めて１が立っているかを調べるだけでｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）の値を求めることができる。例えば、Δ＝０ｘ０ＡＢ３だった場合、２進数に直すと「０００１０１０１０１１００１１」となり、上から数えて４番目に１が立っていることになる。ということは、１の立っているビット位置を確認するだけで図２５の表の下から４番目の値よりも大きく、下から３番目の値よりも小さいことが判り、ｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）は表の近似値から−４．５と−３．５の間のｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）＝−４が求まる。
また、ビットを確認する際にカウンターなどの変数を用いることで、すぐに目的のｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）を求めることができる。即ち、Δにおいて１が立っているビットが上位１５ビット目から数えてＮ番目とするとｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）＝−Ｎとなる。このように、図２５の表の概念を用いれば、１６進数のΔの値をメモリに記憶しておくこともなく、ｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）の計算した近似値もテーブルとしてメモリに記憶しておくことも不必要となる。
このようにそれぞれの値の近似値を求め、それらを足し合わせることで、目的であるｘ＝ｌｏｇ２δを求めることが可能となる。即ち、図２５の表の概念は用いているが、実際に図２５の表の中身をメモリ上に記憶して使用しているわけではない。具体的に図３２のアルゴリズムでは、ＫｅｙＢｉｔＮｕｍはｘ＝ｌｏｇ２δを表しており、ＫＥＹＢＩＴ（Ｉ（ＣＸ））がｌｏｇ２Ｑｅを表しており、ｌｏｇ２（｜Δ｜／０ｘＡＡＡＡ）はｃｏｕｎｔｅｒの値が表していることになり、Ｓ６７のＫｅｙＢｉｔＮｕｍ＝ＫＥＹＢＩＴ（Ｉ（ＣＸ））−ｃｏｕｎｔｅｒによって、鍵ビット数ｘを決定している。実際には近似値を使用しているため、Ｓ６８で示すように、ＫｅｙＢｉｔＮｕｍの計算された値がマイナスの値を示すことがあるので、そのときはＫｅｙＢｉｔＮｕｍ＝０に補正する。
図３２に戻って、Ｓ６０においては区間幅Ａが１６進数でＡＡＡＡより小さいか否かが判定され、判定結果が肯定の場合にはＳ６２に移行するが、否定の場合にはＳ６１に移行する。Ｓ６１においては、幅ＡからＡＡＡＡを減算し、また、Ｓ６２においてはＡＡＡＡから幅Ａを減算する。
Ｓ６３においては、鍵データのビット数ＫｅｙＢｉｔＮｕｍを０に、変数ＣｈｅｃｋＢｉｔを１５に、ｃｏｕｎｔｅｒを１に設定する。Ｓ６４においては図２５に示すテーブル（２進数欄）を参照してΔのＣｈｅｃｋＢｉｔ桁が１になっているか否かが判定され、判定結果が肯定の場合にはＳ６７に移行するが、否定の場合にはＳ６５に移行する。Ｓ６５においては、ＣｈｅｃｋＢｉｔから１を減算し、ｃｏｕｎｔｅｒに１を加算する。Ｓ６６においては、ＣｈｅｃｋＢｉｔが０か否かが判定され、判定結果が否定の場合にはＳ６４に戻るが、肯定の場合にはＳ７０に移行する。
Ｓ６７においては、図２６に示すテーブルを参照して、ＫＥＹＢＩＴ（Ｉ（ＣＸ））（＝ｌｏｇ２Ｑｅの近似値：図２６の近似値欄の値）を求め、ＫＥＹＢＩＴ（Ｉ（ＣＸ））からｃｏｕｎｔｅｒを減算した値をＫｅｙＢｉｔＮｕｍとする。
Ｓ６８においてはＫｅｙＢｉｔＮｕｍが負か否かが判定され、判定結果が肯定の場合にはＳ６９に移行してＫｅｙＢｉｔＮｕｍを０にする。Ｓ７０においては、変数ＫｅｙＢｉｔｓおよびｃｏｕｎｔｅｒを０に設定し、Ｓ７１においては、ｃｏｕｎｔｅｒ値とＫｅｙＢｉｔＮｕｍが等しいか否かが判定され、判定結果が肯定の場合にはＳ７４に移行するが、否定の場合にはＳ７２に移行する。Ｓ７２においては、鍵データＫから１ビット読み込み、ｋｓとする。Ｓ７３においては、ＫｅｙＢｉｔｓを１ビット左へシフトし、ＫｅｙＢｉｔｓの最下位ビットをｋｓとする。また、ｃｏｕｎｔｅｒに１を加算する。
Ｓ７４においては、ＡがＡＡＡＡより小さいか否かが判定され、判定結果が肯定の場合にはＳ７６に移行するが、否定の場合にはＳ７５に移行する。Ｓ７５においては、インデックスから図２３の状態遷移表を参照して得られたＱｅ値にＫｅｙＢｉｔｓを加算してＣＱｅを得る。また、Ｓ７６においては、図２３の状態遷移表を参照して得られたＱｅ値からＫｅｙＢｉｔｓを減算してＣＱｅを得る。
図２３は、ＪＢＩＧ２で用いられる状態（インデックス）遷移表を示す説明図である。０から４６の各インデックス毎に、Ｑｅ値、ＭＰＳあるいはＬＰＳが出現した場合それぞれの遷移先（次の）インデックス番号、ＳＷＩＴＣＨ値が記載されている。ＳＷＩＴＣＨ値とは、Ｑｅが０．５に近い場合、ＬＰＳで正規化されたときにＭＰＳの値を反転させるかいなかを示すフラグである。
図３３は、Ｓ４２、Ｓ５２の写像切替処理（ＣＯＤＥＬＰＳＥＮＣＲＹＰＴ）を示すフローチャートである。ここでは、鍵データＫから読み込んだ１ビットの値ｋｒが１の時に区間を入れ替えるという、本発明の写像区間の入れ替え処理を含んでいる。Ｓ８０においては、鍵データＫから１ビット読み込みｋｒとし、ＡからＣＱｅを減算する。そしてＡの値をＩｎｖＱｅに代入する。Ｓ８１においては、ＡがＣＱｅより小さいか否か判定され、判定結果が肯定の場合にはＳ８５に移行するが、否定の場合にはＳ８２に移行する。
Ｓ８２においてはＣＱｅをＡに代入し、Ｓ８３においては、鍵データｋｒが１か否かが判定され、結果が肯定の場合にはＳ８４に移行してＣにＩｎｖＱｅを加算する。Ｓ８５においては、鍵データｋｒが０か否かが判定され、結果が肯定の場合にはＳ８６に移行してＣにＣＱｅを加算する。
Ｓ８７においては、インデックスから図２３の状態遷移表を参照して得られるＳＷＩＴＣＨ（Ｉ（ＣＸ））が１か否かを判定し、判定結果が肯定の場合にはＳ８８に移行して（１−ＭＰＳ（ＣＸ））をＭＰＳ（ＣＸ）に代入する（反転させる）ことによって、図２２のコンテクスト学習表のＭＰＳを更新する。Ｓ８９においては、図２３の状態遷移表を参照して、ＮＬＰＳ（Ｉ（ＣＸ））を状態Ｉ（ＣＸ）に代入することによって、図２２のコンテクスト学習表のインデックスを更新する。Ｓ９０においては、後述する正規化処理（ＲＥＮＯＲＭＥ）が行われる。
図３４は、Ｓ４３、Ｓ５３の写像切替処理（ＣＯＤＥＭＰＳＥＮＣＲＹＰＴ）を示すフローチャートである。ここでも、鍵データＫから読み込んだ１ビットの値ｋｒが１の時に区間を入れ替えるという、本発明の写像区間の入れ替え処理を含んでいる。Ｓ１００においては、鍵データＫから１ビット読み込みｋｒとし、ＡからＣＱｅを減算する。そしてＡの値をＩｎｖＱｅに代入する。Ｓ１０１においては、Ａと１６進数の８０００の論理積が０か否か判定され、判定結果が肯定の場合にはＳ１０４に移行するが、否定の場合にはＳ１０２に移行する。Ｓ１０２においては鍵データｋｒが０か否かが判定され、結果が肯定の場合にはＳ１０３に移行してＣにＣＱｅを加算し、処理を終了する。
Ｓ１０４においては、ＡがＣＱｅより小さいか否か判定され、判定結果が肯定の場合にはＳ１０７に移行するが、否定の場合にはＳ１０５に移行する。Ｓ１０５においては、鍵データｋｒが０か否かが判定され、結果が肯定の場合にはＳ１０６に移行してＣにＣＱｅを加算する。Ｓ１０７においてはＣＱｅをＡに代入し、Ｓ１０８においては、鍵データｋｒが１か否かが判定され、結果が肯定の場合にはＳ１０９に移行してＣにＩｎｖＱｅを加算する。
Ｓ１１０においては、図２３の状態遷移表を参照して、ＮＬＰＳ（Ｉ（ＣＸ））を状態Ｉ（ＣＸ）に代入することによって、図２２のコンテクスト学習表を更新する。Ｓ１１１においては、後述する正規化処理（ＲＥＮＯＲＭＥ）が行われる。
図３５は、Ｓ９０、Ｓ１１１の区間幅正規化処理（ＲＥＮＯＲＭＥ）を示すフローチャートである。Ｓ１２０においては、Ａを１ビット左シフトし、Ｃを１ビット左シフトし、ＣＴから１を減算する。Ｓ１２１においてはＣＴが０か否かが判定され、結果が肯定の場合にはＳ１２２に移行して、後述するバイト単位出力処理（ＢＹＴＥＯＵＴ）が行われる。Ｓ１２３においては、Ａと１６進数８０００との論理積が０か否かが判定され、判定結果が肯定の場合にはＳ１２０に戻るが、否定の場合には処理を終了する。
図３６は、Ｓ１２２のバイト単位出力処理（ＢＹＴＥＯＵＴ）を示すフローチャートである。Ｓ１３０においては、ファイルポインタの指す値Ｂが１６進数でＦＦか否かが判定され、判定結果が肯定の場合にはＳ１３６に移行するが、否定の場合にはＳ１３１に移行する。Ｓ１３１においては、Ｃが１６進数で８００００００より小さいか否かが判定され、判定結果が肯定の場合にはＳ１３５に移行するが、否定の場合にはＳ１３２に移行する。Ｓ１３２においては、Ｂに１を加算する。
Ｓ１３３においては、Ｂが１６進数でＦＦか否かが判定され、判定結果が否定の場合にはＳ１３５に移行するが、肯定の場合にはＳ１３４に移行する。Ｓ１３４においては、Ｃと１６進数の７ＦＦＦＦＦＦとの論理積をＣに代入する。
Ｓ１３５においては、ファイルポインタＢＰに１を加算し、Ｃを１９ビット右シフトしたものをＢに代入し、Ｃと１６進数の７ＦＦＦＦとの論理積をＣに代入し、ＣＴを８に設定する。Ｓ１３６においては、ＢＰに１を加算し、Ｃを２０ビット右シフトしたものをＢに代入し、Ｃと１６進数のＦＦＦＦＦとの論理積をＣに代入し、ＣＴを７に設定する。
図３７は、Ｓ１４の符号化完了処理（ＦＬＵＳＨ）を示すフローチャートである。Ｓ１４０においては後述する最終ビット設定処理（ＳＥＴＢＩＴＳ）が行われる。Ｓ１４１においてはＣをＣＴビット左シフトする。Ｓ１４２においては前述したバイト単位出力処理（ＢＹＩＥＯＵＴ）が行われ、Ｓ１４３においてはＣをＣＴビット左シフトする。Ｓ１４４においては前述したバイト単位出力処理（ＢＹＴＥＯＵＴ）が行われる。
Ｓ１４５においてはＢが１６進数でＦＦか否かが判定され、肯定の場合にはＳ１４７に移行するが、否定の場合にはＳ１４６に移行する。Ｓ１４６においてはＢＰに１を加算し、Ｂを１６進数でＦＦに設定する。Ｓ１４７においては１６進数でＦＦの後に７ＦＦＦが続いている場合には７ＦＦＦを取り除く（任意）。Ｓ１４８においてはＢＰに１を加算し、Ｂを１６進数でＡＣに設定し、ＢＰに１を加算する。
図３８は、Ｓ１４０の最終ビット設定処理（ＳＥＴＢＩＴＳ）を示すフローチャートである。Ｓ１５０においては、（Ｃ＋Ａ）をＴＥＭＰＣに代入し、下限Ｃと１６進数のＦＦＦＦとの論理和をＣに代入する。Ｓ１５１においてはＣがＴＥＭＰＣ以上であるか否かが判定され、判定結果が否定の場合には処理を終了するが、肯定の場合にはＳ１５２に移行する。Ｓ１５２においてはＣから１６進数で８０００を減算する。
図３９は、算術型伸張復号装置をＪＢＩＧ２で実装する場合の構成を示すブロック図である。コンテクスト生成器およびモデル器の機能は符号化装置と同一である。復号器は、入力データＣＤ、鍵データＫ、インデックスＩ（ＣＸ）、ＭＰＳを入力し、基本的に符号化器と逆の処理を行って、復号したデータａｉ、正規化の有無、ａｉがＭＰＳか否かという情報を出力する。
図４０は、伸張復号器における復号プロセス全体を示すフローチャートである。Ｓ２００においては、後述する初期化処理（ＩＮＩＴＤＥＣ）を行う。Ｓ２０１においては、コンテクスト生成器からコンテクストＣＸを読み込む。Ｓ２０２においては後述する１ビットシンボルａｉの復号化処理（ＤＥＣＯＤＥ）が行われる。Ｓ２０３においては、全てのシンボルの処理を終了したか否かが判定され、判定結果が否定の場合にはＳ２０１に戻るが、肯定の場合には処理を終了する。
図４１は、Ｓ２００の初期化処理（ＩＮＩＴＤＥＣ）を示すフローチャートである。Ｓ２１０においては、データを読み込むファイルポインタＢＰにＢＰＳＴ（読み込みアドレス値の初期値）を代入し、Ｂを左へ１６ビットシフトしたものをＣに代入する。Ｓ２１１においては、後述するバイト単位読み込み処理（ＢＹＴＥＩＮ）が行われ、Ｓ２１２においては、Ｃが左へ７ビットシフトされ、ＣＴから７が減算され、Ａに１６進数で８０００が設定される。
図４２は、Ｓ２０２の１ビットシンボルａｉの復号処理（ＤＥＣＯＤＥ）を示すフローチャートである。Ｓ２２０においては、図３２に示す摂動処理（ＣＨＡＮＧＥＱＥ）が行われ、ＣＱｅが求められる。Ｓ２２１においては鍵データＫから１ビット読み込みｋｒとする。Ｓ２２２においては、ｋｒが１か否かが判定され、判定結果が肯定の場合にはＳ２２４に移行するが、否定の場合にはＳ２２３に移行する。Ｓ２２３においてはＣＱｅをＲｅｐＱｅに代入する。また、Ｓ２２４においては（Ａ−ＣＱｅ）をＲｅｐＱｅに代入する。
Ｓ２２５においてはＡからＣＱｅを減算する。Ｓ２２６においてはＣｈｉｇｈがＲｅｐＱｅより小さいか否かが判定され、判定結果が肯定の場合にはＳ２３３に移行するが、否定の場合にはＳ２２７に移行する。Ｓ２２７においてはＣｈｉｇｈからＲｅｐＱｅを減算し、Ｓ２２８においてはｋｒが１か否かが判定され、判定結果が肯定の場合にはＳ２３４に移行するが、否定の場合にはＳ２２９に移行する。
Ｓ２２９においては、Ａと１６進数の８０００の論理積が０か否かが判定され、判定結果が肯定の場合にはＳ２３０に移行するが、否定の場合にはＳ２３２に移行する。Ｓ２３０においては、後述する復号処理（ＭＰＳ＿ＥＸＣＨＡＮＧＥ  ＤＥＣＲＹＰＴ）が行われ、ａｉが求められる。Ｓ２３１においては後述する区間幅正規化処理（ＲＥＮＯＲＭＤ）が行われる。Ｓ２３２においては、ＭＰＳ（ＣＸ）の値がａｉに代入される。
Ｓ２３３においてはｋｒが１か否かが判定され、判定結果が肯定の場合にはＳ２２９に移行するが、否定の場合にはＳ２３４に移行する。Ｓ２３４においては、後述する復号処理（ＬＰＳ＿ＥＸＣＨＡＮＧＥ  ＤＥＣＲＹＰＴ）が行われ、ａｉが求められる。Ｓ２３５においては後述する区間幅正規化処理（ＲＥＮＯＲＭＤ）が行われる。
図４３は、Ｓ２３４の復号処理（ＬＰＳ＿ＥＸＣＨＡＮＧＥ  ＤＥＣＲＹＰＴ）を示すフローチャートである。この処理は１ビットシンボルがＬＰＳとして復号された場合の処理である。Ｓ２４０においては、ＡがＣＱｅより小さいか否かが判定され、判定結果が肯定の場合にはＳ２４１に移行するが、否定の場合にはＳ２４２に移行する。
Ｓ２４１においては、ＣＱｅがＡに代入され、コンテクスト学習表を参照して、ＭＰＳ（ＣＸ）の値がａｉに代入され、状態遷移表から得られるＮＭＰＳ（Ｉ（ＣＸ））がインデックスＩ（ＣＸ）に代入され、コンテクスト学習表が更新される。
Ｓ２４２においてはＣＱｅがＡに代入され、１−ＭＰＳ（ＣＸ）の値がａｉに代入される。Ｓ２４３においては状態遷移表から得られるＳＷＩＴＣＨ（Ｉ（ＣＸ））が１か否かが判定され、判定結果が肯定の場合にはＳ２４４に移行して、１−ＭＰＳ（ＣＸ）をＭＰＳ（ＣＸ）に代入する。Ｓ２４５においては、状態遷移表から得られるＮＬＰＳ（Ｉ（ＣＸ））がインデックスＩ（ＣＸ）に代入され、コンテクスト学習表が更新される。
図４４は、Ｓ２３０の復号処理（ＭＰＳ＿ＥＸＣＨＡＮＧＥ  ＤＥＣＲＹＰＴ）を示すフローチャートである。この処理は１ビットシンボルがＭＰＳとして復号された場合の処理である。Ｓ２５０においては、ＡがＣＱｅより小さいか否かが判定され、判定結果が肯定の場合にはＳ２５１に移行するが、否定の場合にはＳ２５２に移行する。
Ｓ２５１においては、コンテクスト学習表を参照して、ＭＰＳ（ＣＸ）の値がａｉに代入され、状態遷移表から得られる  ＮＭＰＳ（Ｉ（ＣＸ））がインデックスＩ（ＣＸ）に代入され、コンテクスト学習表が更新される。
Ｓ２５２においては、１−ＭＰＳ（ＣＸ）の値がａｉに代入される。Ｓ２５３においては状態遷移表から得られる  ＳＷＩＴＣＨ（Ｉ（ＣＸ））が１か否かが判定され、判定結果が肯定の場合にはＳ２５４に移行して、１−ＭＰＳ（ＣＸ）をＭＰＳ（ＣＸ）に代入する。Ｓ２５５においては、状態遷移表から得られるＮＬＰＳ（Ｉ（ＣＸ））がインデックスＩ（ＣＸ）に代入され、コンテクスト学習表が更新される。
図４５は、Ｓ２３１、Ｓ２３５の区間幅正規化処理（ＲＥＮＯＲＭＤ）を示すフローチャートである。Ｓ２６０においては、ＣＴが０か否かが判定され、判定結果が肯定の場合にはＳ２６１に移行して、後述するバイト単位読み込み処理（ＢＹＴＥＩＮ）を実行する。Ｓ２６２においてはＡおよびＣをそれぞれ１ビット左シフトし、ＣＴから１を減算する。Ｓ２６３においてはＡと１６進数の８０００の論理積が０か否かが判定され、判定結果が肯定の場合にはＳ２６０に移行するが、否定の場合には処理を終了する。
図４６は、Ｓ２６１のバイト単位読み込み処理（ＢＹＴＥＩＮ）を示すフローチャートである。Ｓ２７０においては、Ｂ（ファイルポインタＢＰが指す値）が１６進数でＦＦか否かが判定され、判定結果が肯定の場合にはＳ２７１に移行するが、否定の場合にはＳ２７４に移行する。
Ｓ２７１においては、Ｂ１（アドレスＢＰ＋１が指す値）が１６進数で８Ｆより大きいか否かが判定され、判定結果が肯定の場合にはＳ２７３に移行するが、否定の場合にはＳ２７２に移行する。Ｓ２７２においては、ＢＰに１を加算し、Ｂを９ビット左シフトしたものをＣに加算し、ＣＴを７に設定する。Ｓ２７３においては、Ｃに１６進数でＦＦ００を加算し、ＣＴを８に設定する。Ｓ２７４においては、ＢＰに１を加算し、Ｂを８ビット左シフトしたものをＣに加算し、ＣＴを８に設定する。
産業上の利用可能性
以上説明したように、本発明によれば、モデル器からシンボルの出現確率を入力し、入力したシンボルの出現確率に基づく動的な区分線形写像を暗号鍵で制御して出力符号を圧縮および暗号化するよう構成したので、算術符号化法を用いてデータ圧縮と暗号化を同時に行う場合に、算術符号化による本来のデータ圧縮率を損なうことなく、高い安全性を得ることが可能な算術型圧縮暗号装置が得られるという効果を奏する。
また、動的な区分線形写像の位置を暗号鍵で入れ替えて出力符号を攪乱するよう構成したので、単純な処理で効率良く出力符号を攪乱することが可能な算術型圧縮暗号装置が得られるという効果を奏する。
また、動的な区分線形写像の傾きに暗号鍵で摂動をかけて出力符号を攪乱するよう構成したので、符号化効率の過度に低下させることなく、効率良く出力符号を攪乱することが可能な算術型圧縮暗号装置が得られるという効果を奏する。
また、動的な区分線形写像の傾きおよび／または位置を暗号鍵に基づいて変動制御する際に、情報源の拡大を行って出力符号を攪乱するよう構成したので、より一層出力符号を攪乱することが可能な算術型圧縮暗号装置が得られるという効果を奏する。
【図面の簡単な説明】
図１は、この発明の実施の形態に係る算術型圧縮暗号装置の構成を示すブロック図である。
図２は、シンボルの出現確率によって割り当てられる区間を示す図である。
図３は、カオス軌道を生成する区分線形写像のひとつとして知られる一般化されたベルヌーイシフト写像を示す図である。
図４は、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する場合に用いる写像を示す図である。
図５は、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する場合の割り当て区間を示す図である。
図６は、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する場合の区間分割の一例を示す図である。
図７は、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する場合の符号化時の処理手順を示すフローチャートである。
図８は、動的な区分線形写像の位置を鍵で入れ替えて出力符号を攪乱する場合の復号化時の処理手順を示すフローチャートである。
図９は、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合に用いる写像を示す図である。
図１０、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合の割り当て区間を示す図である。
図１１は、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合の区間分割の一例を示す図である。
図１２は、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合の符号化時の処理手順を示すフローチャートである。
図１３は、動的な区分線形写像の傾きに鍵で摂動をかけて出力符号を攪乱する場合の復号化時の処理手順を示すフローチャートである。
図１４は、動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する場合に用いる写像を示す図である。
図１５は、図９および図１４に示した区分線型写像を用いた場合の割り当て区間を示す図である。
図１６は、動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する場合の区間分割の一例を示す図である。
図１７は、動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する場合の符号化時の処理手順を示すフローチャートである。
図１８は、動的な区分線形写像を鍵で制御する際に（１）〜（２）の方法を任意に組み合わせて出力符号を攪乱する場合の復号化時の処理手順を示すフローチャートである。
図１９は、情報源の拡大を行って出力符号を攪乱する場合の区分線形写像を示す図である。
図２０は、算術型圧縮暗号装置をＪＢＩＧ２で実装する場合の構成を示すブロック図である。
図２１は、ＪＢＩＧ２において、コンテクスト生成器で参照画素領域から１６ビットの参照画素を抽出してコンテクストを生成する方法を示す説明図である。
図２２は、コンテクストに対応するインデックスＩ（ＣＸ）とＭＰＳを動的に管理するコンテクスト学習表を示す説明図である。
図２３は、ＪＢＩＧ２で用いられる状態（インデックス）遷移表を示す説明図である。
図２４は、摂動法により状態遷移図から得られる確率推定値ｑｋを理想的な値の方向に鍵で制御（移動）する方法を示す説明図である。
図２５は、ｌｏｇ２δを導出するために準備されるｌｏｇ２Δ−ｌｏｇ２０ｘＡＡＡＡの近似値を与えるテーブルを示す説明図である。
図２６は、ｌｏｇ２δを導出するために準備されるｌｏｇ２Ｑｅの近似値を与えるテーブルを示す説明図である。
図２７は、圧縮暗号化器における符号化プロセス全体を示すフローチャートである。
図２８は、Ｓ１０の初期化処理（ＩＮＩＴＥＮＣ）を示すフローチャートである。
図２９は、Ｓ１２の１ビットシンボルａｉの符号化処理（ＥＮＣＯＤＥ）を示すフローチャートである。
図３０は、Ｓ３１の符号化処理（ＣＯＤＥ１）を示すフローチャートである。
図３１は、Ｓ３２の符号化処理（ＣＯＤＥ０）を示すフローチャートである。
図３２は、Ｓ４０、Ｓ５０、Ｓ２２０の摂動処理（ＣＨＡＮＧＥＱＥ）を示すフローチャートである。
図３３は、Ｓ４２、Ｓ５２の写像切替処理（ＣＯＤＥＬＰＳＥＮＣＲＹＰＴ）を示すフローチャートである。
図３４は、Ｓ４３、Ｓ５３の写像切替処理（ＣＯＤＥＭＰＳＥＮＣＲＹＰＴ）を示すフローチャートである。
図３５は、Ｓ９０、Ｓ１１１の区間幅正規化処理（ＲＥＮＯＲＭＥ）を示すフローチャートである。
図３６は、Ｓ１２２のバイト単位出力処理（ＢＹＴＥＯＵＴ）を示すフローチャートである。
図３７は、Ｓ１４の符号化完了処理（ＦＬＵＳＨ）を示すフローチャートである。
図３８は、Ｓ１４０の最終ビット設定処理（ＳＥＴＢＩＴＳ）を示すフローチャートである。
図３９は、算術型伸張復号装置をＪＢＩＧ２で実装する場合の構成を示すブロック図である。
図４０は、伸張復号器における復号プロセス全体を示すフローチャートである。である。
図４１は、Ｓ２００の初期化処理（ＩＮＩＴＤＥＣ）を示すフローチャートである。
図４２は、Ｓ２０２の１ビットシンボルａｉの復号処理（ＤＥＣＯＤＥ）を示すフローチャートである。
図４３は、Ｓ２３４の復号処理（ＬＰＳ＿ＥＸＣＨＡＮＧＥ  ＤＥＣＲＹＰＴ）を示すフローチャートである。
図４４は、Ｓ２３０の復号処理（ＭＰＳ＿ＥＸＣＨＡＮＧＥ  ＤＥＣＲＹＰＴ）を示すフローチャートである。
図４５は、Ｓ２３１、Ｓ２３５の区間幅正規化処理（ＲＥＮＯＲＭＤ）を示すフローチャートである。
図４６は、Ｓ２６１のバイト単位読み込み処理（ＢＹＴＥＩＮ）を示すフローチャートである。
図４７は、数式を示す説明図である。
符号の説明
１０は算術型圧縮暗号装置、Ｍはモデル器、Ｎは符号化器、αｉは  第ｉシンボルの出現確率、ａｉは１ビットの入力シンボル、Ｙ（ａｉ）はａｉに対する下限、ａｎはｎビットの入力シンボル系列、Ｗ（ａｎ）はａｎに対する区間幅、Ｘ（ａｎ）はＷ（ａｎ）の下限、Ｋは鍵系列、ψ（ａｎ）はａｎに対する符号語である。
【図１】
0004086661.tif 000024
【図２】
0004086661.tif 000025
【図３】
0004086661.tif 000026
【図４】
0004086661.tif 000027
【図５】
0004086661.tif 000028
【図６】
0004086661.tif 000029
【図７】
0004086661.tif 000030
【図８】
0004086661.tif 000031
【図９】
0004086661.tif 000032
【図１０】
0004086661.tif 000033
【図１１】
0004086661.tif 000034
【図１２】
0004086661.tif 000035
【図１３】
0004086661.tif 000036
【図１４】
0004086661.tif 000037
【図１５】
0004086661.tif 000038
【図１６】
0004086661.tif 000039
【図１７】
0004086661.tif 000040
【図１８】
0004086661.tif 000041
【図１９】
0004086661.tif 000042
【図２０】
0004086661.tif 000043
【図２１】
0004086661.tif 000044
【図２２】
0004086661.tif 000045
【図２３】
0004086661.tif 000046
【図２４】
0004086661.tif 000047
【図２５】
0004086661.tif 000048
【図２６】
0004086661.tif 000049
【図２７】
0004086661.tif 000050
【図２８】
0004086661.tif 000051
【図２９】
0004086661.tif 000052
【図３０】
0004086661.tif 000053
【図３１】
0004086661.tif 000054
【図３２】
0004086661.tif 000055
【図３３】
0004086661.tif 000056
【図３４】
0004086661.tif 000057
【図３５】
0004086661.tif 000058
【図３６】
0004086661.tif 000059
【図３７】
0004086661.tif 000060
【図３８】
0004086661.tif 000061
【図３９】
0004086661.tif 000062
【図４０】
0004086661.tif 000063
【図４１】
0004086661.tif 000064
【図４２】
0004086661.tif 000065
【図４３】
0004086661.tif 000066
【図４４】
0004086661.tif 000067
【図４５】
0004086661.tif 000068
【図４６】
0004086661.tif 000069
【図４７】
0004086661.tif 000070