(57)【特許請求の範囲】
【請求項１】
暗号化手段と、判定手段と、暗号化結果決定手段とを備えた暗号化装置により実行される暗号化方法であって、
前記暗号化手段が、符号を暗号化する暗号化工程と、
前記判定手段が、該暗号化工程により注目符号を暗号化した暗号化注目符号について、該暗号化注目符号、該暗号化注目符号または前記注目符号と該注目符号の前後の符号または前記暗号化工程により当該前後の符号を暗号化した符号との所定の組み合わせの中に禁止符号が存在するか否かを判定する判定工程と、
前記暗号化結果決定手段が、該判定工程により禁止符号が存在しないと判定されたとき、前記暗号化注目符号を前記注目符号の暗号化結果として決定する暗号化結果決定工程とを有し、
前記判定工程が、
前記暗号化注目符号が禁止符号か否かを判定する第１の判定工程と、
前記暗号化注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第２の判定工程と、
前記注目符号の直前の符号の後ろから所定数のシンボルと前記暗号化注目符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第３の判定工程とを含むことを特徴とした暗号化方法。
【請求項２】
前記暗号化結果決定工程では、前記暗号化結果決定手段が、前記判定工程により禁止符号が存在すると判定されたとき、前記注目符号自体を当該注目符号の暗号化結果として決定することを特徴とした請求項１に記載の暗号化方法。
【請求項３】
前記暗号化工程では、前記暗号化手段が、所定符号おきに暗号化することを特徴とした請求項１に記載の暗号化方法。
【請求項４】
前記判定工程が更に、前記注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号を暗号化した符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第４の判定工程を含むことを特徴とした請求項１に記載の暗号化方法。
【請求項５】
前記暗号化工程では、前記暗号化手段が、共通鍵暗号方式を用いて暗号化を行なうことを特徴とした請求項１に記載の暗号化方法。
【請求項６】
前記禁止符号は、ＪＰＥＧ２０００におけるマーカコードの一部を含む符号であることを特徴とした請求項１に記載の暗号化方法。
【請求項７】
復号手段と、判定手段と、復号結果決定手段とを備えた暗号化装置により実行される暗号化方法であって、
前記復号手段が、暗号化された符号を復号する復号工程と、
前記判定手段が、該復号工程により注目符号を復号した復号注目符号について、該復号注目符号、該復号注目符号または前記注目符号と該注目符号の前後の符号または前記復号工程により当該前後の符号を復号した符号との所定の組み合わせの中に禁止符号が存在するか否かを判定する判定工程と、
前記復号結果決定手段が、該判定工程により禁止符号が存在しないと判定されたとき、前記復号注目符号を前記注目符号の復号結果として決定する復号結果決定工程とを有し、
前記判定工程が、
前記復号注目符号が禁止符号か否かを判定する第１の判定工程と、
前記復号注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第２の判定工程と、
前記注目符号の直前の符号の後ろから所定数のシンボルと前記復号注目符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第３の判定工程とを含むことを特徴とした復号方法。
【請求項８】
前記復号結果決定工程では、前記復号結果決定手段が、前記判定工程により禁止符号が存在すると判定されたとき、前記注目符号自体を当該注目符号の復号結果として決定することを特徴とした請求項７に記載の復号方法。
【請求項９】
前記復号工程では、前記復号手段が、所定符号おきに復号することを特徴とした請求項７に記載の復号方法。
【請求項１０】
前記判定工程が更に、前記注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号を復号した符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第４の判定工程を含むことを特徴とした請求項７に記載の復号方法。
【請求項１１】
前記復号工程では、前記復号手段が、共通鍵暗号方式を用いて復号を行なうことを特徴とした請求項７に記載の復号方法。
【請求項１２】
前記禁止符号は、ＪＰＥＧ２０００におけるマーカコードの一部を含む符号であることを特徴とした請求項７に記載の復号方法。
【請求項１３】
符号を暗号化する暗号化手段と、
該暗号化手段により注目符号を暗号化した暗号化注目符号について、該暗号化注目符号、該暗号化注目符号または前記注目符号と該注目符号の前後の符号または前記暗号化手段により当該前後の符号を暗号化した符号との所定の組み合わせの中に禁止符号が存在するか否かを判定する判定手段と、
該判定手段により禁止符号が存在しないと判定されたとき、前記暗号化注目符号を前記注目符号の暗号化結果として決定する暗号化結果決定手段とを有し、
前記判定手段が、
前記暗号化注目符号が禁止符号か否かを判定する第１の判定手段と、
前記暗号化注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第２の判定手段と、
前記注目符号の直前の符号の後ろから所定数のシンボルと前記暗号化注目符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第３の判定手段とを備えることを特徴とした暗号化装置。
【請求項１４】
暗号化された符号を復号する復号手段と、
該復号手段により注目符号を復号した復号注目符号について、該復号注目符号、該復号注目符号または前記注目符号と該注目符号の前後の符号または前記復号手段により当該前後の符号を復号した符号との所定の組み合わせの中に禁止符号が存在するか否かを判定する判定手段と、
該判定手段により禁止符号が存在しないと判定されたとき、前記復号注目符号を前記注目符号の復号結果として決定する復号結果決定手段とを有し、
前記判定手段が、
前記復号注目符号が禁止符号か否かを判定する第１の判定工程と、
前記復号注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第２の判定工程と、
前記注目符号の直前の符号の後ろから所定数のシンボルと前記復号注目符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第３の判定工程とを備えることを特徴とした復号装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データの暗号化・復号手法に関する。特に、フォーマットに特有のマーカーコードを含む画像データの暗号化復号を行う方法及び装置、プログラムに関するものである。
【０００２】
【従来の技術】
近年、コンピュータとそのネットワークの急速な発達及び普及により、文字データ、画像データ、音声データなど、多種の情報がデジタル化されている。デジタル情報は、経年変化などによる劣化がなく、いつまでも完全な状態で保存できる一方、容易に複製が可能であり、著作権の保護が大きな問題となっている。そのため著作権保護のためのセキュリティ技術は急速に重要性を増している。
【０００３】
著作権を保護する技術の一つに“暗号技術”がある。特に、画像データなどのデジタルコンテンツの暗号化方式として、送信者と受信者で同一の暗号鍵を秘密に共有する共通鍵暗号方式（秘密鍵暗号方式、対称暗号方式、慣用暗号方式とも呼ばれる）がある。共通鍵暗号方式は適当な長さの文字列（ブロック）ごとに同じ鍵で暗号化するブロック暗号と文字列またはビットごとに鍵を変えていくストリーム暗号に分けることができる。ブロック暗号の中ではＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などが良く知られている。
【０００４】
ストリーム暗号としては、多表を用いるビジネル暗号や１回限りの使い捨ての鍵を用いるバーナム暗号等が知られている（例えば非特許文献１を参照）。よって、画像データ全体の暗号化による著作権保護は、上記の共通鍵暗号方式のうちの一つを用いることにより容易に実現できる。すなわち、送信者と受信者で暗号鍵を共有し、送信者が暗号化した画像データを受信者がその鍵を用いて復号すればよい。
【０００５】
一方、画像データを圧縮する高能率符号化の１方式としては、静止画像の国際標準符号化方式としてＩＳＯとＩＴＵ−Ｔにより勧告されたＪＰＥＧ方式が広く用いられている。このＪＰＥＧ方式は離散コサイン変換を基本とした方式であるが、圧縮率を高めるとブロック状の歪みが生じるという問題点があった。そこで、画像のさらなる高解像度化要求と、より高い圧縮率を実現するために先の離散コサイン変換とは異なる変換方式として離散ウェーブレット変換を利用した符号化方式が提案され、現在ＪＰＥＧ２０００として標準化が進んでいる。
【０００６】
図１はＪＰＥＧ２０００エンコーダの機能ブロック図である。入力画像はまず離散ウェーブレット変換（ＤＷＴ）によりサブバンド分解され（１０１）、その後量子化される（１０２）。図２は分解レベルが２のとき（解像度レベル数３）のサブバンド分解の例であり、ｌｅｖｅｌ０からｌｅｖｅｌ２までの解像度レベルが存在する。このとき、小さい解像度レベルに属する係数ほど低い周波数の情報を含むことになる。量子化されたウェーブレット係数は、ＥＢＣＯＴアルゴリズムにより符号化される。以下ではこのアルゴリズムを、コードブロック分割（１０３）、係数モデリング（１０４）、算術符号化（１０５）とレート制御（１０６）、レイヤ形成（１０７）、パケット生成（１０８）の５つの部分に分けて説明する。
【０００７】
（１）コードブロック分割
各サブバンドは、コードブロックと呼ばれる正方形のブロック（例えば６４ｘ６４など）に分割される。これらのコードブロックは、それぞれ独立に符号化される。
【０００８】
（２）係数モデリング
各コードブロックのウェーブレット係数列に対し、ピットプレーンに基づく係数モデリングを行う。これにより、係数ビットが重要度順に並んだエンペデッド符号列を生成する。ＭＳＢからＬＳＢまでのすべてのビットプレーンは、それぞれ文脈に応じて三つのサブビットプレーン（パス）分解される。各サブビットブレーンの境界は打切り点（Ｔｒｕｎｃａｔｉｏｎ  ｐｏｉｎｔ）と呼ばれ、後でデータを切り捨てる際の最小の分割単位となる。
【０００９】
（３）算術符号化とレート制御
係数モデリングにより生成されたエンベデッド符号列に対して、適応算術符号化を施す。その後、サブビットブレーンの境界である打切り点を単位として、算術符号列を適宜打ち切ることにより、目的のビットレートを得る。
【００１０】
（４）レイヤ形成
複数の画質で順次表示する必要がある場合、すなわちＳＮＲスケーラブルが必要であるとき、次に符号のレイヤ形成を行う。各レイヤはそれぞれ、各コードブロックのエンベデッド符号の一部を含む。高いレイヤほど画像の再生にあたって重要な成分を含むことになる。
【００１１】
（５）パケット生成
各レイヤを複数のボディと呼ばれる単位に分解し、それぞれにヘッダ情報を付加してパケットを生成する。ここで各ボディは、それぞれ対応する解像度レベルの情報をもつ。したがって生成されるパケットの総数は、レイヤ数と解像度レベル数の積となる。ヘッダ情報には、各コードブロックの算術符号列の長さ、サブビットプレーンの個数などの情報が含まれる。図４のように、すべてのパケットをまとめ、グローバルヘッダ情報を付加したものが、最終的なＪＰＥＧ２０００の符号列となる。ただし、以上のような各種ヘッダ情報やデータ分割の最小単位であるサブビットプレーンは、１バイトの整数倍のサイズとすることをＪＰＥＧ２０００では規定している。
【００１２】
【非特許文献１】
池野、小山著「現代暗号理論」電子情報通信学会、１９８６．の第２章及び第４章
【００１３】
【発明が解決しようとする課題】
以上説明したように、ディジタル画像データにはセキュリティーの問題があり、画像全体の暗号化は前述のＤＥＳやＡＥＳなどの暗号方式を用いることにより解決される。しかし、この場合、復号すると画像全体の暗号化が復号され、部分的な保護はできない。そこで例えば、高解像度部分のみ（図２のｌｅｖｅｌ１以上）を暗号化し、ｌｅｖｅｌ０はそのままにすることにより、低解像度のｌｅｖｅｌ０の画像は開示するが、全体である高解像度画像は保護することができる。ただし、この場合、暗号化する高解像度部分以外は通常のＪＰＥＧ２０００の符号列になっているので、高解像度部分の暗号化方式としてＤＥＳやＡＥＳを単純にそのまま用いることはできない。
【００１４】
なぜなら、ＪＰＥＧ２０００の符号列の部分的な暗号化にはマーカコードに関する制約が伴うためである。マーカコードは、ＪＰＥＧ２０００において特別な意味を保つ符号であり、暗号化により偽のマーカコードが生成されると、正常な再生が妨げられることがある。すなわち、マーカコードは図４に示す圧縮データ部（ボディ）においては、生成が禁止された禁止符号的な役割をもつ。
【００１５】
ＪＰＥＧ２０００を対象とした場合、マーカコードとはＦＦ９０ｈ−ＦＦＦＦｈの値を有するマーカおよびマーカセグメントコードを意味する。マーカとは定義情報を格納するコードである。これらは２バイトで表され、先頭の１バイトはＦＦｈである。さらに用途に応じてＦＦｘｘｈという２バイトデータとしてマーカは表現される。一方、マーカセグメントは１つのマーカとそれに追随するパラメータとからなる。４種類のマーカ、ＳＯＣ（ＦＦ４Ｆｈ：ｓｔａｒｔ  ｏｆ  ｃｏｄｅ−ｓｔｒｅａｍ）、ＥＯＣ（ＦＦＤ９ｈ：ｅｎｄ  ｏｆ  ｃｏｄｅ−ｓｔｒｅａｍ）、ＳＯＤ（ＦＦ９３ｈ：ｓｔａｒｔ  ｏｆ  ｄａｔａ）、ＥＰＨ（ＦＦ９２ｈ：ｅｎｄ  ｏｆ  ｐａｃｋｅｔ  ｈｅａｄｅｒ）のみが独立したマーカであり、その他のマーカは、すべてマーカセグメントの一部である。以後、マーカおよびマーカセグメントをまとめてマーカとよぶ。ＪＰＥＧ２０００では、特にＦＦ９０ｈ−ＦＦＦＦｈの範囲のマーカに二つの特別な意味を持たせている。一つは、これらのマーカがコードストリームの区切りを意味することである。これにより、パケットおよびパケットヘッダを位置づけることが可能となる。他の一つは、これらのマーカが圧縮データ自身〈図４のボディ〉の中に存在しないことである。すなわち、ＪＰＥＧ２０００エンコーダはこれらのコードを発生しないように設計されている。よって、上記の部分的なＪＰＥＧ２０００データの暗号化において回避したいのは、この２バイトを単位とするＦＦ９０ｈ―ＦＦＦＦｈのマーカコードの生成である。
【００１６】
そこで、本発明は以上の問題に鑑みてなされたものであり、ＤＥＳやＡＥＳなどの既存の暗号方式を用いながら、暗号化データに禁止符号のマーカコードを発生させないようにすることを目的とする。
【００１７】
【課題を解決するための手段】
上記目的を達成するため、本発明によれば、暗号化手段と、判定手段と、暗号化結果決定手段とを備えた暗号化装置により実行される暗号化方法に、前記暗号化手段が、符号を暗号化する暗号化工程と、前記判定手段が、該暗号化工程により注目符号を暗号化した暗号化注目符号について、該暗号化注目符号、該暗号化注目符号または前記注目符号と該注目符号の前後の符号または前記暗号化工程により当該前後の符号を暗号化した符号との所定の組み合わせの中に禁止符号が存在するか否かを判定する判定工程と、前記暗号化結果決定手段が、該判定工程により禁止符号が存在しないと判定されたとき、前記暗号化注目符号を前記注目符号の暗号化結果として決定する暗号化結果決定工程とを有し、前記判定工程が、前記暗号化注目符号が禁止符号か否かを判定する第１の判定工程と、前記暗号化注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第２の判定工程と、前記注目符号の直前の符号の後ろから所定数のシンボルと前記暗号化注目符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第３の判定工程とを含むことを特徴とする。
【００１８】
また、本発明の他の態様によれば、復号手段と、判定手段と、復号結果決定手段とを備えた暗号化装置により実行される暗号化方法に、前記復号手段が、暗号化された符号を復号する復号工程と、前記判定手段が、該復号工程により注目符号を復号した復号注目符号について、該復号注目符号、該復号注目符号または前記注目符号と該注目符号の前後の符号または前記復号工程により当該前後の符号を復号した符号との所定の組み合わせの中に禁止符号が存在するか否かを判定する判定工程と、前記復号結果決定手段が、該判定工程により禁止符号が存在しないと判定されたとき、前記復号注目符号を前記注目符号の復号結果として決定する復号結果決定工程とを有し、前記判定工程が、前記復号注目符号が禁止符号か否かを判定する第１の判定工程と、前記復号注目符号の後ろから所定数のシンボルと前記注目符号の直後の符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第２の判定工程と、前記注目符号の直前の符号の後ろから所定数のシンボルと前記復号注目符号の始めから所定数のシンボルとの組合せが禁止符号か否かを判定する第３の判定工程とを含むことを特徴とする。
【００１９】
【発明の実施の形態】
以下、図面を参照しながら、本発明の実施形態について説明する。
【００２０】
［第１の実施形態］
まず、用いる暗号方式としてＤＥＳを例として考える。ＤＥＳの基本的な動作は、▲１▼データを６４ビット長のブロックに分割する、▲２▼各ブロックを５６ビット長のカギで暗号化する、の２つだが、ブロックとカギの使い方によってＥＣＢ、ＣＢ、ＯＦＢ、ＣＦＢの４つのモードがある。
【００２１】
ＤＥＳの基本型と言えるモードがＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｄｅ  Ｂｌｏｃｋ）だ。上で述べた基本動作がそのまま行われる。つまり、データをブロックに分割した後、各ブロックを秘密カギで暗号化し、それらのブロックを元の順番でつなぎ合わせる。ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）は、暗号化された前ブロックと、まだ暗号化されていない現在のブロックとのＸＯＲ（排他的論理和）をとり、これを秘密カギで暗号化するモード。“Ｃｈａｉｎｉｎｇ（連鎖）”という言葉が使われているように、各ブロックの暗号化が「連鎖的」に進められる。
【００２２】
一方ＣＦＢ（Ｃｉｐｈｅｒ  Ｆｅｅｄｂａｃｋ）は、前ブロックの暗号化結果の１部（ｍビット）が次ブロックのｍビットと  ＸＯＲ  をとる値としてフィードバックされるモードである。したがってＣＢＣとＣＦＢでは、ブロック内で発生したビット・エラーが、以降のブロックの暗号化に影響を与えることになる。
【００２３】
ＯＦＢ（Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ）は、ある初期値を第１ブロックとして暗号文を生成し、その暗号文（の１部）を次の暗号文の入力として用いると同時にその１部（ｍビット）を乱数として対応するｍビットのデータとＸＯＲ  をとるモードである。この仕組みによりブロック内のビット・エラーが、ほかのブロックを暗号化する際に影響を及ぼさない。“Ｏｕｔｐｕｔ  Ｆｅｅｄｂａｃｋ（出力フィードバック）”という名前は、前ブロックで生成された暗号文出力を次ブロックで使用する暗号文出力を生成させるためのパラメータとして、フィードバックさせることに由来している。上記各モードにおいて、ｍビットを適切に選択することにより、任意のビット長毎の暗号化を実現できる。
【００２４】
また、図３は、本発明における各実施形態を実現する情報処理装置のハードウェア構成を説明するためのブロック図である。尚、透かし情報処理装置の実現に当たっては、図３に示される全ての機能を使用することは必須ではない。
【００２５】
図３において、コンピュータ３０１は、一般に普及しているパーソナルコンピュータであり、スキャナ等の画像入力装置３１７から読み取られた画像を入力し、編集や保管を行うことが可能である。また、画像入力装置３１７で得られた画像をプリンタ３１６から印刷させることができる。尚、ユーザからの各種指示等は、マウス３１３、キーボード３１４からの入力操作により行われる。
【００２６】
コンピュータ３０１の内部では、バス３０７により後述する各ブロックが接続され、種々のデータの受け渡しが可能である。図３において、ＭＰＵ３０２は、コンピュータ３０１内部の各ブロックの動作を制御し、あるいは内部に記憶されたプログラムを実行することができる。主記憶装置３０３は、ＭＰＵ３０２において行われる処理のために、一時的にプログラムや処理対象の画像データを格納しておく装置である。特に、後述する暗号化・復号処理手順に対応するプログラムや、暗号化・復号対象となるデータ、暗号化・復号結果のデータなどを記憶する領域を有する。ハードディスク（ＨＤＤ）３０４は、主記憶装置３０３等に転送されるプログラムや画像データをあらかじめ格納したり、処理後の画像データを保存することのできる装置である。
【００２７】
スキャナインタフェース（Ｉ／Ｆ）３１５は、原稿やフィルム等を読み取って、画像データを生成するスキャナ３１７と接続され、スキャナ３１７で得られた画像データを入力することのできるＩ／Ｆである。プリンタインタフェース３０８は、画像データを印刷するプリンタ３１６と接続され、印刷する画像データをプリンタ３１６に送信することのできるＩ／Ｆである。
【００２８】
ＣＤドライブ３０９は、外部記憶媒体の一つであるＣＤ（ＣＤ−Ｒ／ＣＤ−ＲＷ）に記憶されたデータを読み込んだり、あるいは書き出すことができる装置である。ＦＤＤドライブ３１１は、ＣＤドライブ３０９と同様にＦＤＤからの読み込みや、ＦＤＤへの書き出しをすることができる装置である。ＤＶＤドライブ３１０は、ＦＤＤドライブ３１１と同様に、ＤＶＤからの読み込みや、ＤＶＤへの書き出しをすることができる装置である。尚、ＣＤ、ＦＤＤ、ＤＶＤ等に画像編集用のプログラム、あるいはプリンタドライバが記憶されている場合には、これらプログラムをＨＤＤ３０４上にインストールし、必要に応じて主記憶装置３０３に転送されるようになっている。
【００２９】
インタフェース（Ｉ／Ｆ）３１２は、マウス３１３やキーボード３１４からの入力指示を受け付けるために、これらと接続されるＩ／Ｆである。また、モニタ３０６は、透かし情報の抽出処理結果や処理過程を表示することのできる表示装置である。さらに、ビデオコントローラ３０５は、表示データをモニタ３０６に送信するための装置である。
【００３０】
図５に暗号化処理手順を表わすフローチャートを示す。このフローは図３に示す情報処理装置、特にマウス３１３やキーボード３１４からの入力指示により主記憶装置３０３にロードしたプログラムをＭＰＵ３０２などを用いて実行することによって実現できる。
【００３１】
まず、ＪＰＥＧ２０００  Ｓｔｒｅａｍ中の暗号化対象となる最初のデータ位置にある第ｉ符号を暗号化し、第ｉ暗号化符号を得る（ステップＳ５０１）。ここで、暗号化対象はＦＦ９０ｈ−ＦＦＦＦｈまでのマーカコード（以降、禁止符号と呼ぶ）が存在しない圧縮データ（図４のボディのデータ）の中の連続するデータを想定し、ｉ＝１とする。また、ここで符号とはＪＰＥＧ２０００の禁止符号の単位である２バイトからなるデータを想定する。
【００３２】
この元となるＪＰＥＧ２０００  Ｓｔｒｅａｍはハードディスク３０４やＣＤドライブ３０９、ＤＶＤドライブ３１０、ＦＤＤドライブ３１１などに接続された各記憶媒体にあらかじめ記憶されていてもよいし、主記憶装置３０３にロードしたＪＰＥＧ２０００の圧縮プログラムをＭＰＵ３０２などを用いて実行したものでもよいし、図３に不図示のネットワークを介して送られても良い。また、暗号化処理は前述したＤＥＳのＣＦＢやＯＦＢなどのモードを用いて実行できる。
【００３３】
次に、ｉ＋１番目の符号、すなわち２番目の符号を同様に暗号化する（ステップＳ５０２）。次に、第ｉ暗号化符号がＦＦ９０ｈ−ＦＦＦＦｈの禁止符号であるかどうかを調べる（ステップＳ５０３）。
【００３４】
第ｉ暗号化符号が禁止符号でない場合、第ｉ符号の後ろの１バイトと第ｉ＋１暗号化データの始めの１バイトをつなげて１つの符号（ここでは後連接符号１と呼ぶ）としてそれが禁止符号となっているかを調べる（ステップＳ５０４）。それが禁止符号でない場合、第ｉ暗号化データの後ろの１バイトと第ｉ＋１データの始めの１バイトを連接させた符号（ここでは後連接符号２と呼ぶ）が禁止符号となっているかを調べる（ステップＳ５０５）。
【００３５】
それが禁止符号でない場合、ｉ−１番目の符号の後ろの１バイトと第ｉ暗号化データの始めの１バイトをつなげて１つの符号（ここでは前連接符号１と呼ぶ）としてそれが禁止符号となっているかを調べる（ステップＳ５０６）。ここで、ｉ−１番目の符号とは、この時点で暗号化対象であるｉ番目の符号の前に位置する符号を指し、前の処理により暗号化されていてもよい。ただし、第ｉ符号が１番目の符号の場合のみ、第ｉ−１符号は存在しないのでステップＳ５０６の処理は省略できる。
【００３６】
以上が全て禁止符号でない場合、第ｉ暗号化符号は第ｉ符号の暗号化結果として確定される（ステップＳ５０７）。ステップＳ５０３〜５０６において、１つでも禁止符号となっている場合、第ｉ符号の暗号化は行わない。すなわち、第ｉ符号の暗号化結果出力は第ｉ符号のままとする。
【００３７】
次に、第ｉ符号が暗号化対象の最後の符号であるかどうかを調べ、最終符号なら終了する（ステップＳ５０８）。ただし、第ｉ符号が最終符号の場合、その後の第ｉ＋１符号はないので、ステップＳ５０２、５０４、５０６の処理は省略できる。第ｉ符号が最終符号でなければ、ステップＳ５０９でｉ＝ｉ＋１としてステップＳ５０２の処理から継続する。
【００３８】
ここで、後連接符号１〜２と前連接符号１を検査するのは、ＪＰＥＧ２０００Ｓｔｒｅａｍの最小単位は１バイトであるので、前後に連接された形でも禁止符号が存在することを防ぐためである。
【００３９】
次に、図６に復号処理手順を表わすフローチャートを示す。このフローも図３に示す情報処理装置、特にマウス３１３やキーボード３１４からの入力指示により主記憶装置３０３にロードしたプログラムをＭＰＵ３０２などを用いて実行することによって実現できる。
【００４０】
まず、ＪＰＥＧ２０００  Ｓｔｒｅａｍ中の復号対象となる最初のデータ位置にある第ｉ符号を復号し、第ｉ復号符号を得る（ステップＳ６０１）。この元となるＪＰＥＧ２０００  Ｓｔｒｅａｍはあらかじめ図５の手順によって暗号化されたデータであり、図５の手順により暗号化されなかった部分も含めて、ここでは暗号化データとして扱う（図５の手順で暗号化されなかった部分は以降の説明において復号されないことがわかる）。
【００４１】
さらに、この元となるＪＰＥＧ２０００  Ｓｔｒｅａｍは３０４のハードディスクや３０９のＣＤドライブ、ＤＶＤドライブ３１０、ＦＤＤドライブ３１１などに接続された各記憶媒体にあらかじめ記憶されていてもよいし、３０３の主記憶装置にロードしたＪＰＥＧ２０００の圧縮プログラムを３０２のＭＰＵなどを用いて実行したものでもよいし、図３に不図示のネットワークを介して送られても良い。また、復号処理は前述したＤＥＳのＣＦＢやＯＦＢなどのモードを用いて実行できる。
【００４２】
次に、ｉ＋１番目の暗号化符号、すなわち２番目の暗号化符号を同様に復号する（ステップＳ６０２）。次に、第ｉ復号符号がＦＦ９０ｈ−ＦＦＦＦｈの禁止符号であるかどうかを調べる（ステップＳ６０３）。
【００４３】
第ｉ復号符号が禁止符号でない場合、第ｉ復号符号の後ろの１バイトと第ｉ＋１暗号化データの始めの１バイトをつなげて１つの符号（ここでは後連接符号４と呼ぶ）としてそれが禁止符号となっているかを調べる（ステップＳ６０４）。それが禁止符号でない場合、第ｉ暗号化データの後ろの１バイトと第ｉ＋１復号データの始めの１バイトを連接させた符号（ここでは後連接符号５と呼ぶ）が禁止符号となっているかを調べる（ステップＳ６０５）。
【００４４】
それが禁止符号でない場合、第ｉ−１データの後ろの１バイトと第ｉ復号データの始めの１バイトを連接させた符号（ここでは前連接符号２と呼ぶ）が禁止符号となっているかを調べる（ステップＳ６０６）。ここで、ｉ−１番目の符号とは、この時点で復号対象であるｉ番目の符号の前に位置する符号を指し、前の処理により復号されていてもいなくてもよい。ただし、第ｉ符号が１番目の符号の場合のみ、第ｉ−１符号は存在しないのでステップＳ６０６の処理は省略できる。
【００４５】
以上が全て禁止符号でない場合、第ｉ復号符号は第ｉ暗号化符号の復号結果として確定される（ステップＳ６０７）。ステップＳ６０３〜６０６において、１つでも禁止符号となっている場合、第ｉ暗号化符号の復号は行わない。すなわち、第ｉ暗号化符号の復号結果出力は第ｉ暗号化符号のままとする。
【００４６】
次に、第ｉ暗号化符号が復号対象の最後の符号であるかどうかを調べ、最終符号なら終了する（ステップＳ６０８）。ただし、第ｉ暗号化符号が最終符号の場合、第ｉ＋１暗号化符号はないので、ステップＳ６０２、６０４、６０６の処理は省略できる。第ｉ暗号化符号が最終符号でなければ、ステップＳ６０９でｉ＝ｉ＋１として、ステップＳ６０２の処理から継続する。
【００４７】
ここで、ＤＥＳにおけるＯＦＢモードやＣＦＢモードは入力データに対して同じ乱数データをＥＸＯＲすることにより暗号化及び復号が実現される。よって、暗号化と復号は同じ処理になる。すなわち、図５の処理において暗号化された符号は、図６の処理において再度暗号化されることで復号されて元の符号に戻る。ここで、ステップＳ５０３〜５０６の検査はステップＳ６０３〜６０６の検査と同じ検査を行うことになり、図５の処理において暗号化されなかった符号は図６の処理において復号されない。よって、図６の処理で復号される符号は図５において暗号化された符号だけであるので、図５の処理が行われた符号は図６に処理により元の符号に戻すことができる。
【００４８】
［第２の実施形態］
図５の処理では暗号化する対象が連続している場合を想定したが、以下に暗号化対象が連続していない場合に対する処理を説明する。
【００４９】
図７に暗号化処理に関するフローチャートを示す。このフローは図３に示す情報処理装置、特にマウス３１３やキーボード３１４からの入力指示により主記憶装置３０３にロードしたプログラムをＭＰＵ３０２などを用いて実行することによって実現できる。
【００５０】
まず、ＪＰＥＧ２０００  Ｓｔｒｅａｍ中の暗号化対象となるデータ位置にある第ｉ符号へ行く（ステップＳ７０１）。
【００５１】
第ｉ符号を暗号化し、第ｉ暗号化符号を得る（ステップＳ７０２）。ここで、暗号化対象はＦＦ９０ｈ−ＦＦＦＦｈまでのマーカコード（以降、禁止符号と呼ぶ）が存在しない圧縮データ（図４のボディのデータ）を想定し、ｓ符号（ｓ＞１）おきに暗号化を行う場合を考える。
【００５２】
また、ここで符号とはＪＰＥＧ２０００の禁止符号の単位である２バイトからなるデータを想定する。この元となるＪＰＥＧ２０００  Ｓｔｒｅａｍはハードディスク３０４やＣＤドライブ３０９、ＤＶＤドライブ３１０、ＦＤＤドライブ３１１などに接続された各記憶媒体にあらかじめ記憶されていてもよいし、主記憶装置３０３にロードしたＪＰＥＧ２０００の圧縮プログラムをＭＰＵ３０２などを用いて実行したものでもよいし、図３に不図示のネットワークを介して送られても良い。また、暗号化処理は前述したＤＥＳのＣＦＢやＯＦＢなどのモードを用いて実行できる。
【００５３】
次に、第ｉ暗号化符号がＦＦ９０ｈ−ＦＦＦＦｈの禁止符号であるかどうかを調べる（ステップＳ７０３）。第ｉ暗号化符号が禁止符号でない場合、第ｉ暗号化データの後ろの１バイトと第ｉ＋１データの始めの１バイトを連接させた符号（ここでは後連接符号２と呼ぶ）が禁止符号となっているかを調べる（ステップＳ７０４）。
【００５４】
それが禁止符号でない場合、ｉ−１番目の符号の後ろの１バイトと第ｉ暗号化データの始めの１バイトをつなげて１つの符号（ここでは前連接符号１と呼ぶ）としてそれが禁止符号となっているかを調べる（ステップＳ７０５）。ここで、ｉ−１番目の符号とは、この時点で暗号化対象であるｉ番目の符号の前に位置する符号を指し、前の処理により暗号化されていてもよい。また、第ｉ符号が１番目の符号の場合のみ、第ｉ−１符号は存在しないのでステップＳ７０５の処理は省略できる。
【００５５】
以上が全て禁止符号でない場合、第ｉ暗号化符号は第ｉ符号の暗号化結果として確定される（ステップＳ７０６）。ステップＳ７０３〜７０５において、１つでも禁止符号となっている場合、第ｉ符号の暗号化は行わない。すなわち、第ｉ符号の暗号化結果出力は第ｉ符号のままとする。
【００５６】
次に、第ｉ符号が暗号化対象の最後の符号であるかどうかを調べ、最終符号なら終了する（ステップＳ７０７）。そうでなければ、ステップＳ７０８でｉ＝ｉ＋ｓとしてステップＳ７０２の処理から継続する。
【００５７】
ここで、図５と異なり、後連接符号２と前連接符号１のみを検査するのは、ｓは２以上であるので暗号化は離散的に行われ、第ｉ符号の前後の符号は暗号化されていないためである。
【００５８】
次に、図７の暗号化処理手順に対する復号処理手順を表わすフローチャートを図８に示す。このフローも、図３に示す情報処理装置、特にマウス３１３やキーボード３１４からの入力指示により主記憶装置３０３にロードしたプログラムをＭＰＵ３０２などを用いて実行することによって実現できる。
【００５９】
まず、ＪＰＥＧ２０００  Ｓｔｒｅａｍ中の復号対象となるデータ位置にある第ｉ暗号化符号へ行く（ステップＳ８０１）。次に、第ｉ暗号化符号を復号し、第ｉ復号符号を得る（ステップＳ８０２）。この元となるＪＰＥＧ２０００  Ｓｔｒｅａｍはあらかじめ図７の手法によって暗号化されたデータであり、図７の手順により暗号化されなかった部分も含めて、ここでは暗号化データとして扱う（図７の手順で暗号化されなかった部分は以降の説明において復号されないことがわかる）。
【００６０】
さらに、この元となるＪＰＥＧ２０００  Ｓｔｒｅａｍはハードディスク３０４やＣＤドライブ３０９、ＤＶＤドライブ３１０、ＦＤＤドライブ３１１などに接続された各記憶媒体にあらかじめ記憶されていてもよいし、主記憶装置３０３にロードしたＪＰＥＧ２０００の圧縮プログラムをＭＰＵ３０２などを用いて実行したものでもよいし、図３に不図示のネットワークを介して送られても良い。また、復号処理は前述したＤＥＳのＣＦＢやＯＦＢなどのモードを用いて実行できる。
【００６１】
次に、第ｉ復号符号がＦＦ９０ｈ−ＦＦＦＦｈの禁止符号であるかどうかを調べる（ステップＳ８０３）。第ｉ復号符号が禁止符号でない場合、第ｉ復号符号の後ろの１バイトと第ｉ＋１データの始めの１バイトをつなげて１つの符号（ここでは後連接符号４と呼ぶ）としてそれが禁止符号となっているかを調べる（ステップＳ８０４）。
【００６２】
それが禁止符号でない場合、第ｉ−１データの後ろの１バイトと第ｉ復号データの始めの１バイトを連接させた符号（ここでは前連接符号２と呼ぶ）が禁止符号となっているかを調べる（ステップＳ８０５）。ここで、ｉ−１番目の符号とは、この時点で復号対象であるｉ番目の符号の前に位置する符号を指し、前の処理により復号されていてもいなくてもよい。ただし、第ｉ符号が１番目の符号の場合のみ、第ｉ−１符号は存在しないのでステップＳ８０５の処理は省略できる。
【００６３】
以上が全て禁止符号でない場合、第ｉ復号符号は第ｉ暗号化符号の復号結果として確定される（ステップＳ８０７）。ステップＳ８０３〜８０５において、１つでも禁止符号となっている場合、第ｉ暗号化符号の復号は行わない。すなわち、第ｉ暗号化符号の復号結果出力は第ｉ暗号化符号のままとする。
【００６４】
次に、第ｉ暗号化符号が復号対象の最後の符号であるかどうかを調べ、最終符号なら終了する（ステップＳ８０８）。そうでなければ、ステップＳ８０８でｉ＝ｉ＋ｓとして、ステップＳ８０２の処理から継続する。
【００６５】
ここで、ＤＥＳにおけるＯＦＢモードやＣＦＢモードは入力データに対して同じ乱数データをＥＸＯＲすることにより暗号化及び復号が実現される。よって、暗号化と復号は同じ処理になる。すなわち、図５の処理において暗号化された符号は、図６の処理において再度暗号化されることで復号されて元の符号に戻る。ここで、ステップＳ７０３〜７０６の検査はステップＳ８０３〜８０６の検査と同じ検査を行うことになり、図７の処理において暗号化されなかった符号は図８の処理において復号されない。よって、図８の処理で復号される符号は図７において暗号化された符号だけであるので、図７の処理が行われた符号は図８に処理により元の符号に戻すことができる。
【００６６】
また、上述の実施例ではＤＥＳを例として説明したが、本発明はＤＥＳに限らずＡＥＳやＭＩＳＴＹ、Ｃａｍｅｌｌｉａなど通常の共通鍵暗号を用いることができるのは明らかである。また、バーナム暗号でも良い。この場合、本発明の暗号化・復号手法の強度は用いた暗号方式に応じた安全性をもつ。
【００６７】
また、暗号化モードもＣＦＢやＯＦＢに限らず任意長のデータを暗号化できる手法であれば、それらに限定されない。
【００６８】
また、上述の実施例では禁止符号はＦＦ９０ｈ−ＦＦＦＦｈのマーカコードとして説明したが、禁止符号はそれらを含む符号またはＦＦのみなどそれらの１部を含む符号であっても良い。
【００６９】
また、上述の実施例ではＪＰＥＧ２０００を対象に禁止符号はＦＦ９０ｈ−ＦＦＦＦｈのマーカコードとして説明したが、他の符号化標準を対象とするときはそれによって規定される禁止符号に対して、同様の原理で対応できることは明らかである。
【００７０】
また、上述の実施例では１バイトまたは２バイトを単位として説明したが、２バイト以上の場合に対しても適用可能である。
【００７１】
尚、本発明は、複数の機器（例えば、ホストコンピュータ、インタフェース機器、リーダ、プリンタ等）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置等）に適用してもよい。
【００７２】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００７３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７４】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７５】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【００７６】
【発明の効果】
以上説明したように、本発明によれば、既存の暗号方式を用いながら、暗号化データに禁止符号のマーカコードを発生させないようにすることができるという効果がある。この場合、暗号の強度は元の暗号方式と同等に保つことができる。
【図面の簡単な説明】
【図１】ＪＰＥＧ２０００エンコーダの機能ブロック図である。
【図２】ＪＰＥＧ２０００におけるＤＷＴによるサブバンド分解の説明図である。
【図３】本発明の実施の形態に係る処理装置の構成を示すブロックである。
【図４】ＪＰＥＧ２０００  Ｓｔｒｅａｍの構成を説明する概念図である。
【図５】第１の実施形態に係る暗号化処理手順を表わすフローチャートである。
【図６】第１の実施形態に係る復号処理手順を表わすフローチャートである。
【図７】第２の実施形態に係る暗号化処理手順を表わすフローチャートである。
【図８】第２の実施形態に係る復号処理手順を表わすフローチャートである。
【図１】
0004672971.tif 000002
【図２】
0004672971.tif 000003
【図３】
0004672971.tif 000004
【図４】
0004672971.tif 000005
【図５】
0004672971.tif 000006
【図６】
0004672971.tif 000007
【図７】
0004672971.tif 000008
【図８】
0004672971.tif 000009