JP3930697B2 - Data protection processing equipment - Google Patents
Data protection processing equipment Download PDFInfo
- Publication number
- JP3930697B2 JP3930697B2 JP2001135802A JP2001135802A JP3930697B2 JP 3930697 B2 JP3930697 B2 JP 3930697B2 JP 2001135802 A JP2001135802 A JP 2001135802A JP 2001135802 A JP2001135802 A JP 2001135802A JP 3930697 B2 JP3930697 B2 JP 3930697B2
- Authority
- JP
- Japan
- Prior art keywords
- predetermined
- data
- value
- processing
- processing means
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
Description
【0001】
【発明の属する技術分野】
この発明は、無権限者などによる盗聴(盗み見)を防止するために、データの符号化および復号化をおこなうデータ防護処理装置に関する。
【0002】
【従来の技術】
現在、送信者と受信者との間の通信を安全におこなうためのデータの符号化/復号化技術としては、(a)送信者・受信者の双方が同一の鍵を保持する共通秘密鍵方式と、(b)対になる二つの鍵を用意し、一つを秘密鍵として送信者が、もう一つを公開鍵として受信者が、それぞれ保持する公開鍵方式(代表的なものにRSAがある)とが広く知られている。
【0003】
【発明が解決しようとする課題】
しかしながら、上記従来技術による符号化/復号化は、処理が複雑で装置に負荷をかけてしまう、処理に時間を要する、符号化により全体のデータサイズが大きくなってしまうなどの問題点があった。また、上記従来技術による符号化/復号化をおこなうには、事前に符号化側から復号化側へ必要な鍵を渡しておかなければならないが、この際の安全性を確保するために厳密で複雑な手順を必要とするという問題点があった。
【0004】
この発明は、上記に鑑みてなされたものであって、データの符号化/復号化を簡易かつ高速な処理によっておこなうとともに、符号化されたデータの復号化のために必要な情報を安全かつ容易に受け渡しすることが可能なデータ防護処理装置を提供することを目的とする。
【0005】
【課題を解決するための手段】
上記の目的を達成するために、請求項1に記載の発明にかかるデータ防護処理装置は、連続するデジタルデータを所定の読込方向で順次読み込み、読み込んだデジタルデータが所定のビットパターンに一致するか否かを判定する判定処理手段と、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータについて、所定の演算値との排他的論理和を演算する演算処理手段と、前記演算処理手段により演算された連続するデジタルデータ(以下、「処理データ」という)を、読込方向で順次読み込み、読み込んだ処理データが所定のビットパターンに一致するか否かを判定する処理データ判定処理手段と、前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離の処理データに前記所定の演算値を所定のビット数ずつ埋め込む埋め込み処理手段と、を備えたことを特徴とする。
【0006】
また、請求項2に記載の発明にかかるデータ防護処理装置は、前記請求項1に記載の発明において、さらに、前記演算値に所定の変更値を加算あるいは乗算し、または前記演算値を所定の変更値で除算する第1の変更処理手段と、前記第1の変更処理手段により所定の変更値を加算あるいは乗算された演算値、または前記第1の変更処理手段により所定の変更値で除算された演算値にもとづいて、新たな演算値を算出する第2の変更処理手段と、を備え、前記演算処理手段は、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータについて、前記第2の変更処理手段により算出された新たな演算値との排他的論理和を演算することを特徴とする。
【0007】
また、請求項3に記載の発明にかかるデータ防護処理装置は、連続するデジタルデータを所定の読込方向で順次読み込み、読み込んだデジタルデータが所定のビットパターンに一致するか否かを判定する判定処理手段と、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータを、所定の回転値だけ回転する回転処理手段と、前記回転処理手段により回転された連続するデジタルデータ(以下、「処理データ」という)を、読込方向で順次読み込み、読み込んだ処理データが所定のビットパターンに一致するか否かを判定する処理データ判定処理手段と、前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離の処理データに前記所定の回転値を所定のビット数ずつ埋め込む埋め込み処理手段と、を備えたことを特徴とする。
【0008】
また、請求項4に記載の発明にかかるデータ防護処理装置は、前記請求項3に記載の発明において、さらに、前記回転値に所定の変更値を加算あるいは乗算し、または前記回転値を所定の変更値で除算する第1の変更処理手段と、前記第1の変更処理手段により所定の変更値を加算あるいは乗算された回転値、または前記第1の変更処理手段により所定の変更値で除算された回転値にもとづいて、新たな回転値を算出する第2の変更処理手段と、を備え、前記回転処理手段は、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータを、前記第2の変更処理手段により算出された新たな回転値だけ回転することを特徴とする。
【0009】
また、請求項5に記載の発明にかかるデータ防護処理装置は、連続するデジタルデータを所定の読込方向で順次読み込み、読み込んだデジタルデータが所定のビットパターンに一致するか否かを判定する判定処理手段と、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在するデジタルデータを、当該デジタルデータから所定の数値により示される距離だけ前記所定の読込方向における末尾側に存在するデジタルデータと、当該数値により示される長さ分だけ入れ替える入れ替え処理手段と、前記入れ替え処理手段により入れ替えされた連続するデジタルデータ(以下、「処理データ」という)を、読込方向で順次読み込み、読み込んだ処理データが所定のビットパターンに一致するか否かを判定する処理データ判定処理手段と、前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離の処理データに前記所定の数値を所定のビット数ずつ埋め込む埋め込み処理手段と、を備えたことを特徴とする。
【0010】
また、請求項6に記載の発明にかかるデータ防護処理装置は、前記請求項5に記載の発明において、さらに、前記数値に所定の変更値を加算あるいは乗算し、または前記数値を所定の変更値で除算する第1の変更処理手段と、前記第1の変更処理手段により所定の変更値を加算あるいは乗算された数値、または前記第1の変更処理手段により所定の変更値で除算された数値にもとづいて、新たな数値を算出する第2の変更処理手段と、を備え、前記演算処理手段は、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在するデジタルデータを、前記第2の変更処理手段により算出された新たな数値により示される距離だけ前記所定の読込方向における末尾側に存在するデジタルデータと、当該数値により示される長さ分だけ入れ替えることを特徴とする。
【0011】
また、請求項7に記載の発明にかかるデータ防護処理装置は、前記請求項1〜請求項6のいずれか一つに記載の発明において、前記埋め込み手段は、前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離だけ前記所定の読込方向における末尾側に存在する処理データの所定のビットを、所定のデジタルデータの所定のビットと入れ替えることを特徴とする。
【0012】
また、請求項8に記載の発明にかかるデータ防護処理装置は、前記請求項1〜請求項6のいずれか一つに記載の発明において、前記埋め込み手段は、前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離だけ前記所定の読込方向における末尾側に存在する処理データの所定のビットと、所定のデジタルデータの所定のビットとの排他的論理和とを演算することを特徴とする。
【0013】
また、請求項9に記載の発明にかかるデータ防護処理装置は、前記請求項1〜請求項6のいずれか一つに記載の発明において、前記埋め込み手段は、前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離だけ前記所定の読込方向における末尾側に存在する処理データに、所定のデジタルデータの所定のビットを挿入のうえ所定の回転値だけ回転することを特徴とする。
【0014】
【発明の実施の形態】
以下、この発明にかかるデータ防護処理装置およびデータ防護処理方法の好適な実施の形態について添付図面を参照し、詳細に説明する。なお、下記の実施の形態によってこの発明が限定されるものではない。
【0015】
個々の実施の形態の説明に入る前に、まず本発明の概要を簡単に説明する。本発明は、要約すれば、
(1)符号化/復号化対象データ中から順に読み出した1バイト分のビットデータが、所定のビットパターンと一致する場合に、
(2)当該1バイト分のビットデータから所定の距離だけ後ろの1バイト分のビットデータを開始位置、当該開始位置からさらに所定の距離だけ後ろの1バイト分のビットデータを終了位置とする範囲内のビットデータに対して、
(3)所定の値をパラメータとする所定の処理を施すことで符号化および復号化をおこなうこと、
を特徴としている。
【0016】
そして、以下では上記所定のビットパターンに一致するビットデータから上記開始位置のビットデータまでの距離(具体的にはバイト数)を「ワープ値」と呼ぶ。また、上記開始位置のビットデータから上記終了位置のビットデータまでの距離(これもバイト数)を「処理範囲」と呼ぶ。
【0017】
さらに、上記処理範囲内のビットデータについて施される種々の処理のパラメータを、「防護キー値」と呼ぶ。これらの処理の一例と、各処理における防護キー値の意味合いを下記に示す。
【0018】
(a)四則演算、たとえば加算の場合、処理範囲内のビットデータに1バイト単位で加算する値である。
(b)論理演算、たとえば排他的論理和(XOR)の場合、処理範囲内のビットデータと1バイト単位でXORする値である。
(c)回転(ROTATE)の場合、処理範囲内のビットデータを回転させるビット数である。
(d)入れ替え(SWAP)の場合、入れ替えるビットデータのサイズ(バイト数)および当該ビットデータから入れ替え先のビットデータまでの距離(バイト数)である。
【0019】
たとえば、所定のビットパターンを5D、ワープ値を1バイト、処理範囲を4バイト、防護キー値を1Eとし(いずれも16進表記)、処理を加算とすると、“3F 5D 9B 11 40 A9 DD”を意味するビットデータは、後述のように“3F 5D B9 2F 5E C7 DD”を意味するビットデータに符号化される。(1)所定のビットパターンと一致する5Dの1バイト後の9Bから、(2)4バイト分の9B、11、40、A9の各数値に、(3)それぞれ1Eが加算されているのが分かる(たとえば9B+1E=B9)。
【0020】
以下、上記(1)〜(3)の構成について、上記(a)〜(d)の各処理の具体例を示しつつ実施の形態1により説明する。また、防護キー値は符号化/復号化の途中で変化させることができ、この構成について実施の形態2で説明する。
【0021】
さらに、上記(1)〜(3)による符号化をおこなったデータの送信元は、受信先でその復号化が可能となるよう、符号化に使用した防護キー値などを何らかの形で受信先に通知しなければならない。そして、本発明ではこの防護キー値を、データと別に送信したりオフラインで受け渡ししたりといった迂遠な方法でなく、当該防護キー値により符号化したデータそのものに直に埋め込んで送信するようにしている。この構成について、実施の形態3で説明する。
【0022】
(実施の形態1)
まず、実施の形態1にかかるデータ防護処理装置およびデータ防護処理方法について説明する。図1は、実施の形態1にかかるデータ防護処理装置の概略構成を示すブロック図である。
【0023】
実施の形態1によるデータ防護処理装置は、上述のビットパターンなど符号化/復号化のための諸条件を保持する符号化/復号化条件記憶部100、通信回線や通信機器へ送信しようとする送信データに対して、上記諸条件にもとづく符号化処理を施す符号化処理部101、逆に通信回線や通信機器から受信した受信データに対して、上記諸条件にもとづく復号化処理を施す復号化処理部102、から構成される。
【0024】
まず、符号化/復号化条件記憶部100は、符号化あるいは復号化の条件を規定する上述のビットパターン、ワープ値、処理範囲および防護キー値を記憶するものである。これらは図示しないキーボードなどにより外部から書き換え可能であり、符号化/復号化条件記憶部100に書き込んである任意の符号化条件のもとで符号化したデータを、その符号化側(送信側)から復号化側(受信側)に上記条件とともに送信し、復号化側ではこれに対応する復号化条件をその符号化/復号化条件記憶部100に書き込むことで、受信したデータの復号化をおこなう。
【0025】
このように、特定の条件下で符号化されたデータは当該条件を知らされた特定の通信相手にしか復号化できないので、データの機密性を高めることができる。なお、このとき上記条件そのものが盗聴(盗み見)されては意味がないので、双方で共通の変換テーブル(暗号表)を保持しておき、符号化側ではデータの符号化時に使用した条件をこのテーブルにより変換のうえ復号化側に送信し、復号化側では受信した条件に上記テーブルによる変換を施してからその符号化/復号化条件記憶部100に書き込むようにしてもよい。
【0026】
また、各操作者の意図に関係なく、たとえばネットワーク上の時刻サーバやGPS(Global Pointing System)衛星の原子時計に同期して、一斉に各装置内の条件を変更することもできる。
【0027】
次に、符号化処理部101は第1送信バッファ101a、符号化位置判定部101b、(狭義の)符号化処理部101c、一時記憶領域101dおよび第2送信バッファ101eから構成される。
【0028】
まず、第1送信バッファ101aは外部から受け取ったデータ、特にシリアルビットデータを蓄積する記憶部である。あるいは、後述する符号化処理部101cによる符号化の対象となる送信データを蓄積する、といってもよい。また、この第1送信バッファ101aおよび後述する第2送信バッファ101eは、デジタルデータのシリアル−パラレル変換を可能としたFIFO(First In First Out)メモリとしての機能を果たす。
【0029】
符号化位置判定部101bは、第1送信バッファ101aに蓄積されたビットデータをその蓄積順に1バイト分ずつ読み出し、読み出したビットデータが上述のビットパターンと一致するかどうかを判定する。そして、両者が一致した場合に、その保持する位置カウンタにより次段の符号化処理部101cによる符号化対象となるビットデータを特定する。
【0030】
符号化処理部101cは、第1送信バッファ101aから読み出された1バイト分のビットデータが上述のビットパターンと一致した場合に、当該ビットデータからの相対位置で示される処理範囲内のビットデータに対して、防護キー値をパラメータとする(a)加算(b)XOR(c)回転あるいは(d)入れ替えのいずれかによる符号化処理をおこなう。また、一時記憶領域101dはこの符号化処理のために、符号化位置判定部101bおよび符号化処理部101cにより使用されるワークエリアである。
【0031】
第2送信バッファ101eは、符号化処理部101cにおいて上記処理が施されたビットデータ、および上記処理が施されなかったビットデータ(スルーされたビットデータ)を蓄積する記憶部である。あるいは、符号化処理部101cによる符号化の後の送信データを蓄積するといってもよい。
【0032】
次に、復号化処理部102は第1受信バッファ102a、復号化位置判定部102b、(狭義の)復号化処理部102c、一時記憶領域102dおよび第2受信バッファ102eから構成され、上述の符号化処理部101とちょうど逆の処理をおこなう。
【0033】
まず、第1受信バッファ102aは外部から受け取ったデータ、特にシリアルビットデータを蓄積する記憶部である。あるいは、後述する復号化処理部102cによる復号化の対象となる受信データを蓄積する、といってもよい。また、この第1受信バッファ102aおよび後述する第2受信バッファ102eは、デジタルデータのシリアル−パラレル変換を可能としたFIFO(First In First Out)メモリとしての機能を果たす。
【0034】
復号化位置判定部102bは、第1受信バッファ102aに蓄積されたビットデータをその蓄積順に1バイト分ずつ読み出し、読み出したビットデータが上述のビットパターンと一致するかどうかを判定する。そして、両者が一致した場合に、その保持する位置カウンタにより次段の復号化処理部102cによる復号化対象となるビットデータを特定する。
【0035】
復号化処理部102cは、第1受信バッファ102aから読み出された1バイト分のビットデータが上述のビットパターンと一致した場合に、当該ビットデータからの相対位置で示される処理範囲内のビットデータに対して、防護キー値をパラメータとする(a)減算(b)XOR(c)回転あるいは(d)入れ替えのいずれかによる復号化処理をおこなう。いずれの処理をおこなうかは、復号化対象のデータについて、その符号化時に符号化処理部101cにより施されたのが上述の(a)加算(b)XOR(c)回転あるいは(d)入れ替えのいずれであったかにより決定される。また、一時記憶領域102dはこの復号化処理のために、復号化位置判定部102bおよび復号化処理部102cにより使用されるワークエリアである。
【0036】
第2受信バッファ102eは、復号化処理部102cにおいて上記処理が施されたビットデータ、および上記処理が施されなかったビットデータ(スルーされたビットデータ)を蓄積する記憶部である。あるいは、復号化処理部102cによる復号化の後の受信データを蓄積するといってもよい。
【0037】
なお、上記の符号化位置判定部101bと復号化位置判定部102bとは機能的に同一となるので、実際には一つの判定部を符号化処理部101と復号化処理部102とで共用するようにしてもよい。また、符号化処理部101cと復号化処理部102cも、後述のように処理の概略が同一となるので、実際には重複部分を共用することができる。なお、上記各部は専用の回路などによりハードウエア的に実現するのであってもよいが、ここではHD、CD−ROM、MOなどの各種媒体に記録されたプログラムを、RAMなどに読み出してCPUにより実行することで、上記各部をソフトウエア的に実現するものとする。
【0038】
また、符号化処理部101の第1送信バッファ101aと復号化処理部102の第1受信バッファ102a、一時記憶領域101dと102d、および第2送信バッファ101eと第2受信バッファ102eも、蓄積する対象が異なるだけで機能的には同一となるので、それぞれ一つのバッファなどが両者を兼ねるようにしてもよい。実際には、これらはいずれもRAMにより実現される。
【0039】
なお、上記の符号化位置判定部101bおよび復号化位置判定部102bが請求項にいう「判定処理手段」に、そのおこなう処理が請求項にいう「判定処理工程」に、それぞれ相当する。また、上記の符号化処理部101cおよび復号化処理部102cが請求項にいう「演算処理手段」「回転処理手段」および「入れ替え処理手段」を兼ね、そのおこなう処理に請求項にいう「演算処理工程」「回転処理工程」および「入れ替え処理工程」が含まれる。
【0040】
次に、実施の形態1によるデータ防護処理装置の動作、具体的には(a)加算/減算(b)XOR(c)回転(d)入れ替えのそれぞれの場合における符号化処理と復号化処理の詳細について説明する。なお、以下では説明を簡単にするために、上述のワープ値を常に1とする。これはすなわち、処理範囲は常に所定のビットパターンに一致するビットデータの1バイト後から開始すること、言い換えれば、符号化/復号化は常に所定のビットパターンに一致するビットデータの直後からおこなわれることを意味する。
【0041】
(a)四則演算による符号化と復号化
図2は、実施の形態1にかかるデータ防護処理装置における、加算による符号化処理および減算による復号化処理の手順を示すフローチャートである。符号化処理と復号化処理との差異は、後述するステップS204における処理が前者では防護キー値の加算、後者では防護キー値の減算である点のみなので、同図には両処理の手順をまとめて示している。以下ではまず符号化処理の手順を説明し、次にそれとの差異を中心として、復号化処理の手順について説明する。
【0042】
本フローチャートによる処理の開始に先立って、符号化位置判定部101bが保持する位置カウンタの値は0に初期化されているものとする。まず、ステップS201で符号化位置判定部101bは、第1送信バッファ101aに蓄積された符号化対象の送信データから、蓄積順に1バイト分のビットデータを読み出す。
【0043】
次に、ステップS202で符号化位置判定部101bは、その保持する位置カウンタの値が0より大きいかどうかを判定する。そして、位置カウンタが0である場合(ステップS202:No)には、読み出したビットデータに対して符号化処理を施す必要はない、言い換えれば読み出したビットデータは符号化すべき位置にはないと判断する。そして、さらにステップS203で、当該ビットデータが上述のビットパターンと一致するか否かを判定する。
【0044】
そして、読み出したビットデータが所定のビットパターンとは一致しない場合(ステップS203:No)、ステップS208で符号化位置判定部101bは、読み出したビットデータを次段の符号化処理部101cに引き渡し、符号化処理部101cは当該ビットデータをそのまま第2送信バッファ101eに書き込む。
【0045】
また、読み出したビットデータが所定のビットパターンと一致する場合(ステップS203:Yes)、ステップS206で符号化位置判定部101bは、その保持する位置カウンタをインクリメントしたうえでステップS208に移行し、当該ビットデータをそのまま第2送信バッファ101eに書き込む。
【0046】
また、ステップS202で位置カウンタの値が0より大きい場合(ステップS202:Yes)には、符号化位置判定部101bは読み出したビットデータに対して符号化処理を施す必要がある、言い換えれば読み出したビットデータは符号化すべき位置にあると判断し、当該ビットデータを次段の符号化処理部101cに引き渡すとともに、その符号化を依頼する。そして、続くステップS204で上記依頼を受けた符号化処理部101cは、符号化/復号化条件記憶部100から読み出した防護キー値を上記ビットデータに加算する。
【0047】
次に、ステップS205で符号化位置判定部101bは、その保持する位置カウンタの値が符号化/復号化条件記憶部100から読み出した処理範囲より小さいかどうかを判定する。そして、位置カウンタの値が処理範囲よりも小さければ(ステップS205:Yes)、ステップS206で位置カウンタの値をインクリメントした後、また逆に処理範囲に達していれば(ステップS205:No)、ステップS207で位置カウンタの値を0に初期化した後、それぞれステップS208に移行して、防護キー値加算後の上記ビットデータを第2送信バッファ101eに書き込む。
【0048】
図3は、図2のフローチャートによる符号化処理を具体例で説明するための説明図である。符号化の諸条件は、図示するようにビットパターンが5D、ワープ値が1、処理範囲が4、防護キー値が1Eであるものとする。
【0049】
ステップS201で、まず第1送信バッファ101a内の符号化前データから、先頭の1バイト分である3Fが読み出され、この時点では位置カウンタの値は0なので(ステップS202:No)、ステップS203に移行する。そして、3Fは5Dとは一致しないので(ステップS203:No)、ステップS208で3Fがそのまま第2送信バッファ101eに蓄積される。
【0050】
次に、再度ステップS201でその直後の5Dが読み出され、この時点でも位置カウンタの値は0なので(ステップS202:No)、ステップS203に移行する。そして、この5Dは所定のビットパターンと一致するので(ステップS203:Yes)、ステップS206で位置カウンタの値がインクリメントされた後、ステップS208で5Dがそのまま第2送信バッファ101eに蓄積される。
【0051】
次に、再度ステップS201で直後の9Bが読み出され、この時点では位置カウンタの値は1なので(ステップS202:Yes)、ステップS204でこの9Bに防護キー値である1Eが加算される。なお、加算後の値が1バイトで表現できる値を超えたときは、その超えた分だけを加算後の値とする。
【0052】
そして、ステップS205で位置カウンタの1と処理範囲である4とが比較され、まだ前者は後者より小さいので(ステップS205:Yes)、ステップS206で位置カウンタがインクリメントされた後、ステップS208で加算後の値B9(=9B+1E)が第2送信バッファ101eに蓄積される。
【0053】
次に、再度ステップS201で直後の11が読み出され、この時点では位置カウンタの値は2なので(ステップS202:Yes)、同様にステップS204での防護キー値の加算、ステップS206での位置カウンタのインクリメントを経て、ステップS208で加算後の値2F(=11+1E)が第2送信バッファ101eに蓄積される。
【0054】
次に、再度ステップS201で直後の40が読み出され、この時点では位置カウンタの値は3なので(ステップS202:Yes)、同様にステップS204での防護キー値の加算、ステップS206での位置カウンタのインクリメントを経て、ステップS208で加算後の値5E(=40+1E)が第2送信バッファ101eに蓄積される。
【0055】
次に、再度ステップS201で直後のA9が読み出され、この時点では位置カウンタの値は4なので(ステップS202:Yes)、同様にステップS204で防護キー値を加算する。そして、この時点で位置カウンタの値が処理範囲に達するので(ステップS205:No)、ステップS207での位置カウンタの0への初期化を経て、ステップS208で加算後の値C7(=A9+1E)が第2送信バッファ101eに蓄積される。
【0056】
次に、再度ステップS201で最後のDDが読み出され、この時点では位置カウンタの値は0なので(ステップS202:No)、ステップS203でのビットパターンとの一致判定を経て、ステップS208でDDがそのまま第2送信バッファ101eに蓄積される。
【0057】
なお、上記により符号化されたデータの復号化は、同様に図2に示すフローチャートの手順によっておこなう。ただし、この場合ステップS204における処理は加算でなく減算となり、また上記説明における符号化処理部101の各部は、それぞれ復号化処理部102の対応する各部に読み替えるものとする。たとえば、図3に示す符号化後のデータであれば、符号化時に防護キー値1Eを加算されているB9からC7までの各数値について、復号化時には逆に防護キー値1Eが減算される結果、復号化後のデータは符号化前のもとのデータに戻ることが分かる。
【0058】
(b)論理演算による符号化と復号化
次に、図4は実施の形態1にかかるデータ防護処理装置における、XORによる符号化/復号化処理の手順を示すフローチャートである。XORの場合、符号化と復号化の手順は後述のように完全に同一となる。図2に示した四則演算による符号化/復号化処理との本質的な差異は、ステップS404における処理が加算や減算でなく論理演算のXOR(排他的論理和)である点のみであり、他のステップについては図2と同一である。
【0059】
図5は、図4のフローチャートによる符号化処理を具体例で説明するための説明図である。符号化の諸条件は、図示するようにビットパターンが5D、ワープ値が1、処理範囲が4、防護キー値が1Eであるものとする。
【0060】
ステップS401で、まず第1送信バッファ101a内の符号化前データから3Fが読み出され、この時点では位置カウンタの値は0なので(ステップS402:No)、ステップS403に移行する。そして、3Fは5Dとは一致しないので(ステップS403:No)、ステップS408で3Fがそのまま第2送信バッファ101eに蓄積される。
【0061】
次に、再度のステップS401で5Dが読み出され、この時点でも位置カウンタの値は0なので(ステップS402:No)、ステップS403に移行する。そして、この5Dは所定のビットパターンと一致するので(ステップS403:Yes)、ステップS406で位置カウンタの値がインクリメントされた後、ステップS408で5Dがそのまま第2送信バッファ101eに蓄積される。
【0062】
次に、再度のステップS401で9Bが読み出され、この時点では位置カウンタの値は1なので(ステップS402:Yes)、ステップS404でこの9Bと防護キー値である1EとのXORが計算される。9Bは2進表記で10011011、1Eは同じく00011110であり、そのXORは10000101、すなわち85となる。そして、ステップS405で位置カウンタの1と処理範囲である4とが比較され、まだ前者は後者より小さいので(ステップS405:Yes)、ステップS406で位置カウンタがインクリメントされた後、ステップS408でXOR後の値85が第2送信バッファ101eに蓄積される。
【0063】
次に、再度のステップS401で11が読み出され、この時点では位置カウンタの値は2なので(ステップS402:Yes)、同様にステップS404での防護キー値とのXOR、ステップS406での位置カウンタのインクリメントを経て、ステップS408でXOR後の値0Fが第2送信バッファ101eに蓄積される。
【0064】
次に、再度のステップS401で40が読み出され、この時点では位置カウンタの値は3なので(ステップS402:Yes)、同様にステップS404での防護キー値とのXOR、ステップS406での位置カウンタのインクリメントを経て、ステップS408でXOR後の値5Eが第2送信バッファ101eに蓄積される。
【0065】
次に、再度のステップS401でA9が読み出され、この時点では位置カウンタの値は4なので(ステップS402:Yes)、同様にステップS404で防護キー値とのXORを計算する。そして、この時点で位置カウンタの値が処理範囲に達するので(ステップS405:No)、ステップS407での位置カウンタの0への初期化を経て、ステップS408でXOR後の値B7が第2送信バッファ101eに蓄積される。
【0066】
次に、再度のステップS401で最後のDDが読み出され、この時点では位置カウンタの値は0なので(ステップS402:No)、ステップS403でのビットパターンとの一致判定を経て、ステップS408でDDがそのまま第2送信バッファ101eに蓄積される。
【0067】
なお、上記で符号化後のデータについてさらに同一の符号化を繰り返すと、2回目の符号化後のデータは1回目の符号化前のデータに戻る。図5に示す符号化後のデータでは、再度のXORがかかるのは5Dの1バイト後(=ワープ値だけ後)の85から、4バイト分(=処理範囲内)のB7までであるが、たとえば85は2進表記で10000101、防護キー値の1Eは同じく00011110であり、それらのXORは10011011、すなわちもとの9Bとなる。
【0068】
このように、XORの場合は符号化の手順と復号化の手順とが完全に同一となる。ただし、上記説明における符号化処理部101の各部は、復号化の場合はそれぞれ復号化処理部102の対応する各部に読み替えるものとする。
【0069】
(c)回転(ROTATE)による符号化と復号化
次に、図6は実施の形態1にかかるデータ防護処理装置における、回転(ROTATE)による符号化/復号化処理の手順を示すフローチャートである。符号化処理と復号化処理との差異は、後述するステップS609における回転が前者では防護キー値だけ左、後者では防護キー値だけ右である点のみなので、同図には両処理の手順をまとめて示している。
【0070】
図7は、図6のフローチャートによる符号化処理を具体例で説明するための説明図である。符号化の諸条件は、図示するようにビットパターンが5D、ワープ値が1、処理範囲が4、防護キー値が1Eであるものとする。
【0071】
ステップS601で、まず第1送信バッファ101a内の符号化前データから3Fが読み出され、この時点では位置カウンタの値は0なので(ステップS602:No)、ステップS603に移行する。そして、3Fは5Dとは一致しないので(ステップS603:No)、ステップS610で3Fがそのまま第2送信バッファ101eに蓄積される。
【0072】
次に、再度のステップS601で5Dが読み出され、この時点でも位置カウンタの値は0なので(ステップS602:No)、ステップS603に移行する。そして、この5Dは所定のビットパターンと一致するので(ステップS603:Yes)、ステップS604で位置カウンタの値がインクリメントされた後、ステップS610で5Dがそのまま第2送信バッファ101eに蓄積される。
【0073】
次に、再度のステップS601で9Bが読み出され、この時点では位置カウンタの値は1なので(ステップS602:Yes)、ステップS605で符号化位置判定部101bにより、この9Bが一時記憶領域101dに退避される。そして、ステップS606で位置カウンタの1と処理範囲である4とが比較され、まだ前者は後者より小さいので(ステップS606:Yes)、ステップS607で位置カウンタがインクリメントされた後、ステップS601で次の11が読み出される。
【0074】
そして、この時点では位置カウンタの値は2なので(ステップS602:Yes)、同様にステップS605での一時記憶領域101dへの退避、ステップS607での位置カウンタのインクリメントを経て、再度ステップS601に移行する。
【0075】
以後同様に40、A9を読み出して順に一時記憶領域101dに退避するが、A9を読み出した時点で位置カウンタの値が4となった後は(ステップS606:No)、ステップS608に移行して位置カウンタを0に初期化する。そして、ステップS609で符号化処理部101cにより、この時点までに一時記憶領域101dに退避されている全データを一つの数値として読み込んで、防護キー値である1Eビットだけ左に回転させる。
【0076】
この時点では、一時記憶領域101dには“9B 11 40 A9”を意味するビットデータ(10011011 00010001 01000000 10101001)が退避されている。この4バイト分のビットデータを左に1Eビットだけ回転するとは、右に2ビットだけ回転するのと結果的に同じであり、回転後の値は“66 C4 50 2A”(01100110 11000100 01010000 00101010)となる。そして、ステップS610でこれらの値が、第2送信バッファ101eに蓄積される。
【0077】
ただし、上記はMotorolaやSun SPARCなど、一般に「ビッグエンディアン」と呼ばれるCPUを使用した場合の結果であり、Intel系やDEC Alphaなど、一般に「リトルエンディアン」と呼ばれるCPUを採用した場合は結果が異なってくる。
【0078】
すなわち、符号化位置判定部101bにより一時記憶領域101d=スタックに順次退避された“9B 11 40 A9”を、回転のため符号化処理部101c=CPUのレジスタに取り込むと、リトルエンディアンでは順序が“A9 40 11 9B”のようにバイト単位で入れ替わるため、これを左に1Eビット回転させた結果は“EA 50 04 66”となる。さらに、これを第2送信バッファ101eに書き込む際にも、同様に順序が入れ替わるため、符号化後のデータでは“66 04 50 EA”という順序になる。もっとも、上記の差異はCPUが採用するバイトオーダーに起因する、もっぱら形式的なものであって、結果は異なるにせよ処理の本質は同じである。
【0079】
次に、再度のステップS601で最後のDDが読み出され、この時点では位置カウンタの値は0なので(ステップS602:No)、ステップS603でのビットパターンとの一致判定を経て、ステップS610でDDがそのまま第2送信バッファ101eに蓄積される。
【0080】
なお、上記により符号化されたデータの復号化は、同様に図6に示すフローチャートの手順によっておこなう。ただし、この場合ステップS609の回転は、符号化時とは逆の右方向へ、防護キー値だけおこなうものとする。また、上記説明における符号化処理部101の各部は、復号化の場合はそれぞれ復号化処理部102の対応する各部に読み替えるものとする。
【0081】
(d)入れ替え(SWAP)による符号化と復号化
次に、図8は実施の形態1にかかるデータ防護処理装置における、入れ替え(SWAP)による符号化/復号化処理の手順を示すフローチャートである。入れ替えの場合、符号化と復号化の手順は後述のように完全に同一となる。
【0082】
図9は、図8のフローチャートによる符号化処理を具体例で説明するための説明図である。符号化の諸条件は、図示するようにビットパターンが5D、ワープ値が1、防護キー値が32であるものとする。入れ替えの場合、防護キー値の下位4ビットは入れ替えるビットデータのサイズ(バイト数)を、上位4ビットは当該ビットデータから入れ替え先のビットデータまでの距離(バイト数)を、それぞれ示している。したがって、上記条件は全体として、5Dの直後(ワープ値=1バイトだけ後)の2バイトを、そこから3バイト先の2バイトと入れ替えることを意味している。
【0083】
ステップS801で、まず第1送信バッファ101a内の符号化前データから3Fが読み出され、この時点では位置カウンタの値は0なので(ステップS802:No)、ステップS803に移行する。そして、3Fは5Dとは一致しないので(ステップS803:No)、ステップS809で3Fがそのまま第2送信バッファ101eに蓄積される。
【0084】
次に、再度のステップS801で5Dが読み出され、この時点でも位置カウンタの値は0なので(ステップS802:No)、ステップS803に移行する。そして、この5Dは所定のビットパターンと一致するので(ステップS803:Yes)、ステップS804で位置カウンタの値がインクリメントされた後、ステップS809で5Dがそのまま第2送信バッファ101eに蓄積される。
【0085】
次に、再度のステップS801で9Bが読み出され、この時点では位置カウンタの値は1なので(ステップS802:Yes)、ステップS805で符号化位置判定部101bにより、この9Bが一時記憶領域101dに退避される。そして、ステップS806で位置カウンタの1と、入れ替えるビットデータのサイズ+入れ替え先までの距離、ここでは2+3=5とが比較され、まだ前者は後者より小さいので(ステップS806:Yes)、ステップS807で位置カウンタがインクリメントされた後、ステップS801で次の11が読み出される。
【0086】
そして、この時点では位置カウンタの値は2なので(ステップS802:Yes)、同様にステップS805での一時記憶領域101dへの退避、ステップS807での位置カウンタのインクリメントを経て、再度ステップS801に移行する。
【0087】
以後同様に40、A9、DDを読み出して順に一時記憶領域101dに退避するが、DDを読み出した時点で位置カウンタの値が5となった後は(ステップS806:No)、ステップS808での位置カウンタの0への初期化を経て、ステップS809で符号化処理部101cにより、一時記憶領域101d内のデータを順次取り出して第2送信バッファ101eに蓄積する。
【0088】
このとき、まず退避した順序が遅いほうのデータから入れ替えサイズ=2バイト分、ここではA9およびDDを取り出す。次に、退避した順序が早いほうのデータから入れ替えサイズ=2バイト分、ここでは9Bおよび11を残すように、それより後に退避したデータ、ここでは40を取り出す。そして、最後に残りのデータ、ここでは9Bおよび11を取り出すことで、9Bおよび11と、A9およびDDとを入れ替えることができる。
【0089】
次に、再度のステップS801で最後のE7が読み出され、この時点では位置カウンタの値は0なので(ステップS802:No)、ステップS803でのビットパターンとの一致判定を経て、ステップS809でE7がそのまま第2送信バッファ101eに蓄積される。
【0090】
なお、入れ替え後のデータについてさらに同一の入れ替えを繰り返すと、当然ながら2回目の入れ替え後のデータは1回目の入れ替え前のデータに戻ることになる。このように、入れ替えの場合は符号化の手順と復号化の手順とが完全に同一となる。ただし、上記説明における符号化処理部101の各部は、復号化の場合はそれぞれ復号化処理部102の対応する各部に読み替えるものとする。
【0091】
以上説明したように、実施の形態1にかかるデータ防護処理装置およびデータ防護処理方法によれば、データサイズを変化させない符号化が可能である。また、データを送信しながらの符号化、あるいはデータを受信しながらの復号化といった逐次処理が可能であり、個々の処理も四則演算や論理演算などきわめて単純であるので、高速であるとともに装置への負荷を少なくすることができる。
【0092】
なお、上述した実施の形態1では説明の便宜上、いずれもワープ値が1であるものとしたが、これは他の値であってももちろんよい。たとえば、図3に示した例でワープ値が2であった場合、防護キー値の加算の対象となるのは5Dから2バイト後の11、40、A9およびDDである。また、ワープ値は負の値、たとえば−1とすることもでき、この場合防護キー値の加算の対象となるのは5Dの直前の3Fである。
【0093】
また、上述した実施の形態1では、ビットパターンとして「01011101」(5D)のようにその全体を指定したが、たとえば「100*****」(*は0でも1でもよいことを示す)のように一部だけを指定するようにしてもよい。この後者のビットパターンと一致するのは、具体的には「10000000」(80)、「10000001」(81)、・・・、「10001111」(8F)、「10010000」(90)、「10010001」(91)、・・・、「10011111」(9F)の32個(=2の5乗)である。
【0094】
このように、一部のビットだけでも一致していれば一致ありとすることで、より多くのデータに符号化を施すことができ、無権限者などによる解読の難易度をさらに高めることができる。たとえば、日本語の文字コードの一つであるShift−JISでは、全角文字は8140〜9FF0およびE040〜EEFCの範囲に集中している。よって、この範囲の文字をより多くカバーできるようなビットパターン(上記の「100*****」はその典型例である)を工夫することで、もとの文字をなるべく残すことなく、上述の符号化をおこなうことができる。
【0095】
図10は、ビットパターンを「100*****」、ワープ値を1、処理範囲を1、防護キー値を35として、図2のフローチャートによる符号化処理(防護キーの加算による符号化処理)をおこなった前後のデータの一例を示す説明図である。同図に示す日本語のテキストデータは、ほぼ原型をとどめずに符号化されている。ただし、「痺」の1バイト目は「11100001」(E1)であって上記パターンに一致しないため、その2バイト目に防護キー値が加算されない結果、この文字だけが符号後のデータにもそのまま残っている。
【0096】
なお、上記ビットパターンとの一致は、技術的には所定のマスクを使用することにより判定する。あらかじめ、上記32個の値のうちいずれか一つ、たとえば最初の「10000000」(80)を代表値として選んでおく。そして、この値の中で一致判定の際に注目するビット位置(少なくともここが同一であれば一致ありとするビット位置、といってもよい)、ここでは左から3番目までのビットに1を立てたマスク値「11100000」(E0)を用意する。
【0097】
そして、上述のステップS203、S403、S603あるいはS803において、符号化位置判定部101bあるいは復号化位置判定部102bは、まず判定対象の値と上記マスク値との論理和(AND)を計算する。そして、これがあらかじめ計算してある上記代表値と上記マスク値との論理和と完全一致したときに、当該対象値が所定のビットパターンに一致すると判定する。たとえば、「10011111」(9F)と上記マスク値とのAND結果は「10000000」であり、これは代表値とマスク値とのAND結果「10000000」と完全一致するので、当該対象値は上記パターンと一致することになる。
【0098】
なお、上記は符号化対象が日本語中心のテキストデータである場合に有効であるが、対象がプログラムの場合は、符号化後の最上位ビットが1になるような条件を設定することで、より有効な符号化をおこなうことができる。プログラムは基本的には8ビットコードの配列として表現されているが、そのソースコードでは8ビット中7ビットしか使用していない。そこで、ソースコードについてこのように最上位ビットを1とするような符号化をおこなうと、コンピュータには実行できないコードとなるので、違法コピーの防止などの用途に応用することができる。
【0099】
(実施の形態2)
さて、上述した実施の形態1では、符号化/復号化に使用する防護キー値は定数であるようにしたが(少なくとも一回の符号化/復号化の途中では変化しない)、以下に説明する実施の形態2のように、一回の符号化/復号化の途中で防護キー値を規則的に変更してゆくようにしてもよい。
【0100】
図11は、実施の形態2にかかるデータ防護処理装置の概略構成を示すブロック図である。これは、図1に示した実施の形態1の符号化処理部101および復号化処理部102に、それぞれ防護キー値変更部1101f・1102fを追加した構成である。
【0101】
防護キー値変更部1101fはデータの符号化時、また防護キー値変更部1102fはデータの復号化時に、それぞれ符号化/復号化条件記憶部1100から読み込んだ防護キー値に対して(a)所定の値を加算することにより、(b)所定の値を乗算することにより、あるいは(c)所定の値で除算することにより、当該値を順次変更してゆくものである。以下、防護キー値に加算・乗算または除算する所定の値を「変更値」、加算・乗算または除算の種別を「変更方法」と呼ぶ。この変更値と変更方法とは、符号化/復号化条件記憶部1100にあらかじめ保持されており、防護キー値変更部1101f・1102fはそれらを読み出して使用する。
【0102】
なお、上記は防護キー値そのものに対する処理を示しており、実施の形態1で説明した、防護キー値による符号化/復号化処理とは次元の異なるものである。たとえば同じ加算であっても、実施の形態1でいう「加算(による符号化)」とは、符号化対象データに所定の防護キー値「を」加算することを意味していたのであるが、実施の形態2でいう「加算(による防護キー値の変更)」とは、防護キー値「に」所定の変更値を加算することを意味している。
【0103】
したがって、実施の形態1で説明した(a)加算/減算(b)XOR(c)回転(d)入れ替えによる符号化/復号化と、実施の形態2で説明する(a)加算(b)乗算(c)除算による防護キー値の変更とは任意に組み合わせることができ、その組み合わせは4×3=12通りとなる。
【0104】
たとえば、符号化/復号化方法を加算/減算、防護キー値の変更方法を加算とした組み合わせは、「符号化/復号化対象データに対して、所定の変更値を順次加算された防護キー値を加算/減算する」ことを意味しており、下記(a)ではこの例を用いて、加算による防護キー値の変更処理を説明する。さらに、下記(b)では符号化/復号化方法を加算/減算、防護キー値の変更方法を乗算とした組み合わせ、下記(c)では符号化/復号化方法を加算/減算、防護キー値の変更方法を乗算とした組み合わせを用いて、それぞれ乗算あるいは除算による防護キー値の変更処理を順に説明する。
【0105】
(a)加算による防護キー値の変更
図12は、実施の形態2にかかるデータ防護処理装置における、加算による防護キー値の変更を伴う符号化/復号化処理の手順を示すフローチャートである。同図は図2に示した加算による符号化/減算による復号化の手順に、ステップS1208およびS1209を挿入したものである。違いは符号化処理部1101c/復号化処理部1102cがステップS1204での符号化/復号化の際、符号化/復号化条件記憶部1100でなく防護キー値変更部1101f/1102fに保持された、前回のステップS1208およびS1209で変更後の防護キー値を使用する点のみである。
【0106】
図13は、図12のフローチャートによる符号化処理を具体例で説明するための説明図である。符号化の諸条件は、図示するようにビットパターンが83、ワープ値が1、処理範囲が1、(当初の)防護キー値が25であるものとする。また、防護キー値の変更値は3B、変更方法は加算であるものとする。
【0107】
そして、本フローチャートによる処理の開始に先立って、符号化位置判定部1101bが保持する位置カウンタの値は0に初期化されているものとする。また、防護キー値変更部1101fには符号化/復号化条件記憶部1100から読み出された上記防護キー値、変更値および変更方法が保持されているものとする。
【0108】
同図に示す符号化前データのうち先頭の5B、BEおよびC2は、ステップS1201で第1送信バッファ1101aから読み出された後、ステップS1202およびS1203を経て、ステップS1210で第2送信バッファ1101eにそのまま蓄積される。
【0109】
そして、その次の83(図13では符号化前データ中、下線に(1)を付した記号で示す)は所定のビットパターンに一致するので(ステップS1203:Yes)、ステップS1203からステップS1206に分岐し、位置カウンタの1へのインクリメントの後、ステップS1210でそのまま第2送信バッファ1101eに蓄積される。
【0110】
次の5Dは、この時点で位置カウンタの値が1であるため(ステップS1202:Yes)、ステップS1202からステップS1204に分岐し、防護キー値変更部1101f内の防護キー値を参照した符号化処理部1101cにより25を加算されて82となる。そして、この時点で位置カウンタの値が処理範囲の1に達するので(ステップS1205:No)、ステップS1207に分岐して位置カウンタが0に初期化される。
【0111】
さらに、ステップS1208で防護キー値変更部1101fにより、従来の防護キー値25に変更値である3Bが加算されて60となる。そして、この時点では加算後の防護キー値が1バイトで表現できる値(00〜FF)の範囲内なので問題ないが、加算を繰り返すうちにはいずれ超えるので、ステップS1209で変更後の防護キー値がFFを超えないような調整をおこなう。具体的には、加算後の値と00FFとの論理和、すなわち加算後の値のうちFFを超えた部分のみを、新たな防護キー値として防護キー値変更部1101fに保持するようにする。
【0112】
そして、ステップS1210で防護キー値加算後の値の82が第2送信バッファ1101eに蓄積され、続く82から48までの18バイトは、ステップS1201からステップS1202およびS1203を経てステップS1210で、順次第2送信バッファ1101eに蓄積される。そして、その次の83(図13では下線に(2)を付した記号で示す)は所定のビットパターンに一致するので(ステップS1203:Yes)、ステップS1203からステップS1206に分岐し、位置カウンタの1へのインクリメントの後、ステップS1210でそのまま第2送信バッファ1101eに蓄積される。
【0113】
次の43は、この時点で位置カウンタの値が1であるため(ステップS1202:Yes)、ステップS1202からステップS1204に分岐し、防護キー値変更部1101f内の防護キー値を参照した符号化処理部1101cにより60を加算されてA3となる。そして、この時点で位置カウンタの値が処理範囲の1に達するので(ステップS1205:No)、ステップS1207に分岐して位置カウンタが0に初期化される。
【0114】
さらに、ステップS1208で防護キー値変更部1101fにより、従来の防護キー値60に変更値である3Bが加算され、さらにステップS1209による調整を受けて9Bとなる。そして、ステップS1210で防護キー値加算後の値のA3が第2送信バッファ1101eに蓄積される。以後は同様の処理の繰り返しであり、この次の83(図13では下線に(3)を付した記号で示す)の直後の49は防護キー値の9Bを加算されてE4となり、さらにその次の83(同(4))の直後の5Dは防護キー値D6(=9B+3B)を加算されて33となる。符号化後のデータは図13に示す通りである。
【0115】
(b)乗算による防護キー値の変更
図14は、実施の形態2にかかるデータ防護処理装置における、乗算による防護キー値の変更を伴う符号化/復号化処理の手順を示すフローチャートである。図12との差異は、ステップS1408において、防護キー値に変更値を加算でなく乗算する点のみである。
【0116】
図15は、図14のフローチャートによる符号化処理を具体例で説明するための説明図である。符号化の諸条件は図13と同一であり、防護キー値の変更値も3Bであるが、その変更方法は加算でなく乗算であるものとする。なお、防護キー値を乗算により変更する場合には、変更値の最下位ビットは必ず1にする必要がある(言い換えれば、変更値は必ず奇数にする必要がある)。そうでなければ、数回〜数十回の変更をおこなうと防護キー値は必ず0になってしまう。
【0117】
図15に示す符号化前データのうち先頭の5B、BEおよびC2は、ステップS1401で第1送信バッファ1101aから読み出された後、ステップS1402およびS1403を経て、ステップS1410で第2送信バッファ1101eにそのまま蓄積される。
【0118】
そして、その次の83(図15では符号化前データ中、下線に(1)を付した記号で示す)は所定のビットパターンに一致するので(ステップS1403:Yes)、ステップS1403からステップS1406に分岐し、位置カウンタの1へのインクリメントの後、ステップS1410でそのまま第2送信バッファ1101eに蓄積される。
【0119】
次の5Dは、この時点で位置カウンタの値が1であるため(ステップS1402:Yes)、ステップS1402からステップS1404に分岐し、防護キー値変更部1101f内の防護キー値を参照した符号化処理部1101cにより25を加算されて82となる。そして、この時点で位置カウンタの値が処理範囲の1に達するので(ステップS1405:No)、ステップS1407に分岐して位置カウンタが0に初期化される。
【0120】
さらに、ステップS1408で防護キー値変更部1101fにより、従来の防護キー値25に変更値である3Bが乗算されて887となる。ただし、ステップS1409で00FFとの論理和によりFFを超える部分が無視され、下2桁の87が新たな防護キー値として防護キー値変更部1101fに保持される。
【0121】
そして、ステップS1410で防護キー値加算後の値の82が第2送信バッファ1101eに蓄積され、続く82から48までの18バイトは、ステップS1401からステップS1402およびS1403を経てステップS1410で、順次第2送信バッファ1101eに蓄積される。そして、その次の83(図15では下線に(2)を付した記号で示す)は所定のビットパターンに一致するので(ステップS1403:Yes)、ステップS1403からステップS1406に分岐し、位置カウンタの1へのインクリメントの後、ステップS1410でそのまま第2送信バッファ1101eに蓄積される。
【0122】
次の43は、この時点で位置カウンタの値が1であるため(ステップS1402:Yes)、ステップS1402からステップS1404に分岐し、防護キー値変更部1101f内の防護キー値を参照した符号化処理部1101cにより87を加算されてCAとなる。そして、この時点で位置カウンタの値が処理範囲の1に達するので(ステップS1405:No)、ステップS1407に分岐して位置カウンタが0に初期化される。
【0123】
さらに、ステップS1408で防護キー値変更部1101fにより、従来の防護キー値87に変更値である3Bが乗算されて1F1Dとなるが、ステップS1409でFFを超える部分は無視されて1Dとなる。そして、ステップS1410で防護キー値加算後の値のCAが第2送信バッファ1101eに蓄積される。以後は同様の処理の繰り返しであり、符号化後のデータは図15に示す通りとなる。
【0124】
(c)除算による防護キー値の変更
図16は、実施の形態2にかかるデータ防護処理装置における、除算による防護キー値の変更を伴う符号化/復号化処理の手順を示すフローチャートである。
【0125】
また、図17は図16のフローチャートによる符号化処理を具体例で説明するための説明図である。符号化の諸条件は、図示するようにビットパターンが83、ワープ値が1、処理範囲が2、(当初の)防護キー値が1325であるものとする。また、防護キー値の変更値は19、変更方法は除算であるものとする。なお、防護キー値を除算により変更する場合には、変更後の値が0や10以下の小さな値になってしまうのを避けるため、変更値が当初の防護キー値よりも十分小さくなければならない。
【0126】
同図に示す符号化前データのうち先頭の5B、BEおよびC2は、ステップS1601で第1送信バッファ1101aから読み出された後、ステップS1602およびS1603を経て、ステップS1612で第2送信バッファ1101eにそのまま蓄積される。
【0127】
そして、その次の83(図17では符号化前データ中、下線に(1)を付した記号で示す)は所定のビットパターンに一致するので(ステップS1603:Yes)、ステップS1603からステップS1604に分岐し、位置カウンタの1へのインクリメントの後、ステップS1612でそのまま第2送信バッファ1101eに蓄積される。
【0128】
次の5Dは、この時点で位置カウンタの値が1であるため(ステップS1602:Yes)、ステップS1602からステップS1605に分岐し、符号化位置判定部1101bにより一時記憶領域1101dに退避される。そして、この時点では位置カウンタの値は処理範囲よりも小さいので(ステップS1606:Yes)、ステップS1606からステップS1607に分岐し、位置カウンタの2へのインクリメントの後、ステップS1601で次の82が読み出される。
【0129】
そして、ステップS1602を経てステップS1605で、この82も一時記憶領域1101dに退避され、この時点で位置カウンタの値が処理範囲の2に達するので(ステップS1606:No)、ステップS1608に分岐して位置カウンタが0に初期化される。そして、ステップS1609で、防護キー値変更部1101f内の防護キー値を参照した符号化処理部1101cにより、一時記憶領域1101dから読み出された825Dに防護キー値1325が加算されて9582となる(リトルエンディアンのCPUを使用した場合)。
【0130】
さらに、ステップS1610で防護キー値変更部1101fにより、従来の防護キー値1325が変更値である19により除算されて00C4(0000000011000100)となる。ただし、処理を繰り返すうちに防護キー値があまりに小さな値になってしまうのを避けるため、ステップS1611でこの除算結果を、最上位ビットが1になるまで左にシフトさせてC400(1100010000000000)とすることで、十分に大きな値になるよう調整する(なお、図17の「→」はこの最上位ビットが1になるまでの左シフトを表す)。そして、この調整後の値C400が新たな防護キー値として防護キー値変更部1101fに保持される。
【0131】
そして、ステップS1612で防護キー値加算後の値の9582が第2送信バッファ1101eに蓄積され、続く82から48までの18バイトは、ステップS1601からステップS1602およびS1603を経てステップS1612で、順次第2送信バッファ1101eに蓄積される。そして、その次の83(図17では下線に(2)を付した記号で示す)は所定のビットパターンに一致するので(ステップS1603:Yes)、ステップS1603からステップS1604に分岐し、位置カウンタの1へのインクリメントの後、ステップS1612でそのまま第2送信バッファ1101eに蓄積される。
【0132】
次の43および9Eは、同様にステップS1605で一時記憶領域1101dに退避され、ステップS1608で変更後の防護キー値C400を加算されて6243となった後、ステップS1612で第2送信バッファ1101eに蓄積される。そして、このとき防護キー値もステップS1610の除算、ステップS1611の調整を経てFAE0に変更される。以後は同様の処理の繰り返しであり、符号化後のデータは図17に示す通りとなる。
【0133】
上記説明から明らかなように、実施の形態2によるデータ保護処理装置は、符号化対象データ中に所定のビットパターンが見つかるごとに防護キー値を変更する、あるいは言い換えれば、処理範囲ごとに適用する防護キー値を変更するので、無権限者などによる符号化後のデータの解読がより困難となる。
【0134】
(実施の形態3)
さて、上述した実施の形態1や2による符号化後のデータは、上記から明らかなようにその符号化に用いられたビットパターン、ワープ値、処理範囲、防護キー値、符号化方法、あるいは防護キー値の変更値や変更方法といった情報がなければ正常に復号化することができない。そのため、データを符号化して相手方に送る場合は、その復号化に必要な上記情報を何らかの形で相手方に通知しなければならず、しかもその通知は第三者に盗聴(盗み見)されるようなものであってはならない。
【0135】
そこで、以下に説明する実施の形態3では、符号化したデータ自体にその復号化に必要な上記情報を埋め込んで送付するようにしている。ただ、上記情報は全部を常に変更する必要はなく、たとえば防護キー値のみを通信時や通信相手によって変更するようにしておけば、その他のビットパターンやワープ値、処理範囲、符号化方法、防護キー値の変更値や変更方法は同一であっても十分に安全な符号化が可能である。そこで、以下では他の条件は固定としておき、もっぱら符号化に用いた防護キー値のみを可変として、当該防護キー値を符号化後のデータに埋め込んでしまうことを考える。
【0136】
図18は、実施の形態3にかかるデータ防護処理装置の概略構成を示すブロック図である。これは、図1に示した実施の形態1のそれに埋め込み情報設定部1803を追加したものである。この埋め込み情報設定部1803は、後述する埋め込み情報の入力を操作者から受け付けて、符号化/復号化条件記憶部1800内に格納するものである。そして、実施の形態3にかかる符号化/復号化条件記憶部1800は、実施の形態1および2と同様のビットパターンおよびワープ値のほか、埋め込み情報設定部1803により設定された埋め込み情報を保持している。
【0137】
図19は、実施の形態3にかかるデータ防護処理装置における符号化処理の手順を示すフローチャートである。また、図20は図19のフローチャートによる処理を具体例で説明するための説明図であり、以下この例に沿いながら、図19に示す手順を順次説明する。
【0138】
現実的には、図20に示す符号化前データは、実施の形態1または2で上述したいずれかのフローチャートによる符号化処理をあらかじめ実施された後のデータである。そして、図19のフローチャートはこの1回目の符号化の後、当該1回目の符号化に使用された防護キー値を当該1回目の符号化後のデータに埋め込むため、さらに当該データについて2回目の符号化処理をおこなうものである。
【0139】
本フローチャートによる処理の開始に先立って、符号化/復号化条件記憶部1800にはビットパターン(図20の例では3F)およびワープ値(同01)のほか、符号化のために必要な埋め込み情報があらかじめ埋め込み情報設定部1803により設定されているものとする。この埋め込み情報とは、具体的には下記の通りである。
【0140】
(a)埋め込みデータ
符号化対象データ内に埋め込まれるデータであり、現実的には上記1回目の符号化に使用した任意の防護キー値を操作者が設定する。初期値はこのように操作者の設定した値、図20の例では75(01110101)であるが、後述のように埋め込みの都度順次変更されてゆく。符号化完了時のこの埋め込みデータの値(最終的な変更結果といってもよい)を、特に「余剰値」と呼ぶ。
【0141】
(b)埋め込みビット
上記埋め込みデータ中、符号化対象データ内に埋め込まれる、n個(図20の例では後述のように1個)の連続するビットのうち最上位のものである。初期値は7、すなわち最上位ビットであるが、後述のように埋め込みの都度nビットずつ下位へ移動される。ただし、最下位ビットの次は最上位ビットにジャンプする。
【0142】
(c)被埋め込みビット
符号化対象データ内の、上記埋め込みビットを埋め込まれるビット位置は、当該位置にビットを立てた数値(以下「処理値」)により表現される。図20の例では20(00100000)であり、値が1になっている左から3番目のビットが、埋め込みビットを埋め込まれる位置である。また、1になっているビットの個数n(この例では1)は被埋め込みビットの個数を表し、後述のように埋め込みビットと被埋め込みビットとは一対一に対応するので、同時に埋め込みビットの個数nも表すことになる。なお、この被埋め込みビットは上記の埋め込みビットのように、一回の符号化の途中で変更されることはないが、処理値を特に指定しなかった場合(00Hを指定したときなど)は、被埋め込みビットは埋め込みビットと同じビットとしてもよい。このときは被埋め込みビットも埋め込みの都度1ビットずつ下位へ移動する。
【0143】
(d)埋め込み開始位置および埋め込み終了位置
符号化対象データのうち、上記埋め込みデータを埋め込む範囲の先頭位置と終端位置である。この埋め込み開始/終了位置を任意に設定することで、埋め込みによる符号化を第1送信バッファ1801a内のデータの一部(たとえば送信文書中のクレジットカード番号部分のみ、など)についておこなうことができる。ただし、特段の指定がなければ埋め込み開始位置は第1送信バッファ1801内の全データの先頭位置、埋め込み終了位置はその末端位置を示すものとする。図20の例ではいずれの指定もされておらず、埋め込みデータの埋め込みは、第1送信バッファ1801a内の全データにわたっておこなうことを示している。
【0144】
(e)埋め込み方法
SWAP/XOR/ROTATEのいずれかであり、図20の例ではSWAPが指定されているものとする。各処理の詳細については後述する。
(f)埋め込み方向
順方向/逆方向のいずれかであり、図20の例では順方向が指定されているものとする。
【0145】
また、図19のフローチャートによる処理の開始に先立って、符号化位置判定部1801bが保持する位置カウンタの値は0に、第1送信バッファ1801a内のどのデータに注目しているかを示す処理ポインタは上記埋め込み開始位置に、それぞれ初期化されているものとする。
【0146】
ステップS1901で符号化位置判定部1801bは、図20に示す符号化前のデータ(第1送信バッファ1801a内のデータ)から処理ポインタで示される位置の1バイト分のビットデータ、ここでは埋め込み開始位置すなわち上記データの先頭の2Dを読み出す。
【0147】
次に、ステップS1902で符号化位置判定部1801bは、上記で読み出したデータが符号化/復号化条件記憶部1800から読み出した所定のビットパターン、この例では3Fと一致するかどうかを判定する。そして、ここでは読み出したデータは3Fではないので(ステップS1902:No)、ステップS1903に分岐し、読み出した2Dを一時記憶領域1801dに退避する。
【0148】
その後、ステップS1904で符号化位置判定部1801bは、その保持する位置カウンタの値をインクリメントし、さらにステップS1905でインクリメント後の位置カウンタの値が符号化/復号化条件記憶部1800から読み出したワープ値より大きくなっているかどうかを判定する。そして、この時点での位置カウンタの値は1であり、ワープ値である1はまだ超えていないことから(ステップS1905:No)、ステップS1906およびS1907をスキップしてステップS1908に移行する。
【0149】
ステップS1908で符号化位置判定部1801bは、その保持する処理ポインタの値に1バイトを加算し、さらにステップS1909で加算後のアドレスが埋め込み終了位置、ここでは第1送信バッファ1801a内のデータの末端を超えたかどうかを判定する。そして、この時点では処理ポインタが示すのは2Dの次の3Fのアドレスであることから(ステップS1909:No)、ステップS1901に戻って処理ポインタが指し示す位置の3Fを読み出す。そして、これがステップS1902で所定のビットパターンに一致すると判定されるため(ステップS1902:Yes)、処理はステップS1910に分岐する。
【0150】
ステップS1910で符号化処理部1801cは、一時記憶領域1801dに退避されているデータのうち最も早く退避された先頭の1バイト分、ここでは2Dしか退避されていないので当該2Dを読み出す。そして、この2Dの被埋め込みビット、ここでは処理値20(00100000)で示される左から3番目のビットに、埋め込みデータ75の埋め込みビット、ここでは初期値7で示される最左端のビットを埋め込む。
【0151】
ここでいう埋め込みとは、具体的には埋め込み方法として指定されている入れ替え(SWAP)である。すなわち、埋め込み対象値である2D(00101101)の左から3番目のビット「1」(図20では下線により示す)と、埋め込みデータ75(01110101)の最左端のビット「0」(図20では文字囲みにより示す)とを入れ替えることで、前者を0D(00001101)、後者をF5(11110101)とする。
【0152】
そして、ステップS1911で符号化処理部1801cは、埋め込み後のデータ(ここでは0D)、一時記憶領域1801d内の残りのデータ(ここでは2Dが取り出された後なので何もない)、および符号化位置判定部1801bから引き渡された、直前のステップS1902で読み出されたデータ(ここでは3F)とを、この順に第2送信バッファ1801eへ送出する。
【0153】
次に、ステップS1912で符号化処理部1801cは、埋め込みビットを下位方向へnビットだけ移動する。この時点での埋め込みビットは初期値の7(最左端のビット)であり、またnは上述のように1であるので、埋め込みビットは最左端のビットに代えて、左から2番目のビットに変更されることになる。
【0154】
さらに、ステップS1913で符号化位置判定部1801bは、その保持する位置カウンタを0に初期化する。その後、ステップS1908およびS1909における処理ポインタの加算と埋め込み終了位置との比較を経て、ステップS1901で符号化位置判定部1801bは、加算後の処理ポインタの位置にある24を読み出す。そして、この24はステップS1902を経て、ステップS1903で一時記憶領域1801dに退避される。
【0155】
この後、ステップS1904で1にインクリメントされた位置カウンタは、ステップS1905でまだワープ値を超えないと判定されるので(ステップS1905:No)、ステップS1908およびS1909における処理ポインタの加算と埋め込み終了位置との比較を経て、ステップS1901で次の6Cが読み出される。
【0156】
そして、この6CもステップS1902を経て、ステップS1903で一時記憶領域1801dに退避されるが、ステップS1904でインクリメント後の位置カウンタ2が、ステップS1905でワープ値1を超えたと判定されるため(ステップS1905:Yes)、ステップS1906に分岐する。
【0157】
ステップS1906で符号化処理部1801cは、一時記憶領域1801d内に退避されているデータのうち最も早く退避された先頭の1バイト分、ここでは24しか退避されていないので当該24を読み出して、そのまま第2送信バッファ1801eに送出する。その後、ステップS1907で符号化位置判定部1801bは、その保持する位置カウンタの値を2からデクリメントして1とする。そして、ステップS1908およびS1909における処理ポインタの加算と埋め込み終了位置との比較を経て、ステップS1901で次の68が読み出される。
【0158】
この68もステップS1902を経て、ステップS1903で一時記憶領域1801dに退避されるが、ステップS1904でインクリメント後の位置カウンタ2が、ステップS1905でワープ値1を超えたと判定されるため(ステップS1905:Yes)、ステップS1906でさきに退避された6Cがそのまま第2送信バッファ1801eに送出される。その後、同様にステップS1907で位置カウンタのデクリメント、ステップS1908およびS1909で処理ポインタの加算と埋め込み終了位置との比較を経て、ステップS1901で次の75が読み出される。
【0159】
以後2D、B0、04、75を同様に読み出して、一時記憶領域1801dを介して順次第2送信バッファ1801eに蓄積してゆくが、その次に読み出される3Fは所定のビットパターンに一致するため(ステップS1902:Yes)ステップS1910に分岐する。
【0160】
そして、その時点で一時記憶領域1801dに退避されている直前の75(01110101)の被埋め込みビット、すなわち左から3番目のビット「1」と、この時点での埋め込みデータF5(11110101)のこの時点での埋め込みビット、すなわち左から2番目のビット「1」とが入れ替えられる。もっとも、入れ替える値が同じなので、埋め込みの後も両者の値に変化はない。
【0161】
この後、ステップS1911で(埋め込み後の)75と3Fとが順に第2送信バッファ1801eに送出される。そして、ステップS1912で埋め込みビットが下位に1ビット移動、すなわち左から3番目のビットに変更された後、ステップS1913で位置カウンタが0に初期化される。
【0162】
以後は処理ポインタが埋め込み終了位置を超えるまで同様の処理の繰り返しであり、次の3Fが発見されると、ワープ値=1バイト前の98(10011000)の左から3番目のビット「0」と、埋め込みデータF5(11110101)の左から3番目のビット「1」とが入れ替えられ、埋め込み後のB8(10111000)、続いて3Fが第2送信バッファ1801eに蓄積される。そして、埋め込みデータはD5(11010101)に、埋め込みビットは左から4番目にそれぞれ変更されて、次の3Fの直前のABに埋め込まれる。以後の処理の詳細と符号化後のデータとを図20に示す。
【0163】
次に、図21は実施の形態3にかかるデータ防護処理装置における復号化処理の手順を示すフローチャートである。また、図22は図21のフローチャートによる処理を具体例で説明するための説明図であり、以下この例に沿いながら、図21に示す手順を順次説明する。なお、図22は図20の符号化とちょうど逆の復号化をおこなうものであり、図20に示す符号化後のデータ=図22に示す復号化前のデータである。
【0164】
図21による処理の開始に先立って、符号化/復号化条件記憶部1800にはビットパターン(図22の例では3F)およびワープ値(同01)のほか、復号化のために必要な埋め込み情報があらかじめ埋め込み情報設定部1803により設定されているものとする。この埋め込み情報とは、具体的には下記の通りである。
【0165】
(a)埋め込みデータ
復号化対象データ内に埋め込まれるデータであり、初期値は当該対象データの符号化時に用いられた埋め込みデータから一意に決定される。具体的には、符号化完了時の埋め込みデータの値すなわち余剰値であり、図20に示す符号化後のデータ=図22に示す復号化前のデータを復号する場合、図20の表内右下隅の最終的な埋め込みデータCE(11001110)がこの初期値となる。
【0166】
(b)埋め込みビット
上記埋め込みデータ中、復号化対象データ内に埋め込まれる、n個の連続するビットのうち最上位のものである。初期値は符号化完了時の埋め込みビットの値であり、図20に示す符号化後のデータ=図22に示す復号化前のデータを復号する場合、左から5番目のビットとなる。
【0167】
(c)被埋め込みビット
復号化対象データ内の、上記埋め込みビットを埋め込まれるビット位置であり、当該対象データの符号化時に設定されたのと同一の位置である。
【0168】
(d)埋め込み開始位置および埋め込み終了位置
復号化対象データのうち、上記埋め込みデータを埋め込む範囲の先頭位置と終端位置であり、当該対象データの符号化時に設定された埋め込み開始位置および埋め込み終了位置と同一である。
【0169】
(e)埋め込み方法
SWAP/XOR/ROTATEのいずれかであり、復号化対象データの符号化時に設定された埋め込み方法と同一である。
【0170】
(f)埋め込み方向
順方向/逆方向のいずれかであり、復号化対象データの符号化時に設定された方向と逆の方向である。
【0171】
(a)(b)についてはその初期値、(c)〜(f)については値そのものが、データの符号化側から符号化後のデータとともにその復号化側に提供される。ただし、ここでは説明の便宜上、符号化後のデータには上記(a)のみが添付されるものとし、また(c)〜(f)は固定であるものとする。
【0172】
なお、上記(b)は復号化側で、復号化対象データに所定のビットパターンがいくつ含まれるかにより算出することができる。符号化時の埋め込みビットは所定のビットパターンを発見する都度、最上位ビットからn個ずつ下位にずれてゆくので、符号化前後のデータ中に当該ビットパターンがa個あったとすると、最終的には初期値の最左端から「a*n/8の余り」だけ右にずれた位置となる。たとえば、図20に示す符号化後のデータには3Fが12個含まれており(a=12)、n=1なので、符号化完了時の埋め込みビットは最左端から12*1/8の余り4だけずれて、左から5番目となっている。そして、これが復号化時の埋め込みビットの初期値となる。
【0173】
また、図21による処理の開始に先立って、復号化位置判定部1802bが保持する位置カウンタの値は0に、第1受信バッファ1802a内のどのデータに注目しているかを示す処理ポインタは上記埋め込み終了位置に、それぞれ初期化されているものとする。
【0174】
ステップS2101で復号化位置判定部1802bは、図22に示す復号化前のデータ(第1受信バッファ1802a内のデータ)から処理ポインタで示される位置の1バイト分のビットデータ、ここでは埋め込み終了位置すなわち上記データの末尾の34を読み出す。
【0175】
次に、ステップS2102で復号化位置判定部1802bは、上記で読み出したデータが符号化/復号化条件記憶部1800から読み出した所定のビットパターン、この例では3Fと一致するかどうかを判定する。そして、ここでは読み出したデータは3Fではないので(ステップS2102:No)、ステップS2103に分岐し、自己の保持する位置カウンタの値が符号化/復号化条件記憶部1800から読み出したワープ値以上になっているかどうかを判定する。
【0176】
そして、この時点では位置カウンタの値は0なので(ステップS2103:No)、ステップS2104で復号化位置判定部1802bは読み出した34を復号化処理部1802cに引き渡し、復号化処理部1802cはこれをそのまま第2受信バッファ1802eに送出する。
【0177】
次に、ステップS2105で復号化位置判定部1802bは、その保持する処理ポインタの値から1バイトを減算し、さらにステップS2106で減算後のアドレスが埋め込み開始位置、ここでは第1送信バッファ1801a内のデータの先頭を下回ったかどうかを判定する。そして、この時点では処理ポインタが示すのは34の前の12のアドレスであることから(ステップS2106:No)、ステップS2101に戻って処理ポインタが指し示す位置の12を読み出す。
【0178】
そして、この12も3FではないためステップS2102からステップS2103に分岐し、この時点でも位置カウンタは0であってワープ値1に達しないのでステップS2104に分岐する結果、12がそのまま第2受信バッファ1802eに送出される。その後、ステップS2105およびS2106における処理ポインタの減算と埋め込み開始位置との比較を経て、ステップS2101でさらにその前の3Fが読み出される。
【0179】
そして、この3FはステップS2102で所定のビットパターンに一致すると判定されるため(ステップS2102:Yes)、ステップS2107に分岐して復号化位置判定部1802bから復号化処理部1802cに引き渡され、そのまま第2受信バッファ1802eに送出される。さらに、ステップS2108で復号化位置判定部1802bは、自己の保持する位置カウンタをインクリメントする。
【0180】
その後、ステップS2105およびS2106における処理ポインタの減算と埋め込み開始位置との比較を経て、ステップS2101でさらにその前のD1が読み出される。これは3Fとは一致しないが(ステップS2102:No)、この時点の位置カウンタの値1がワープ値の1に達しているので(ステップS2103:Yes)、処理はステップS2109に分岐する。
【0181】
ステップS2109で復号化処理部1802cは、上記で読み出されたD1(11010001)の被埋め込みビット、ここでは処理値20(00100000)で示される左から3番目のビット「0」に、埋め込みデータCE(11001110)の埋め込みビット、ここでは左から5番目のビット「1」を埋め込む。ここでいう埋め込みも、具体的にはビットの入れ替え(SWAP)である。
【0182】
そして、ステップS2110で復号化処理部1802cは、埋め込みビットを上位方向へnビット、ここでは1ビットだけ移動する。さらに、ステップS2111で復号化位置判定部1802bは、その保持する位置カウンタを0に初期化する。その後、ステップS2104で復号化処理部1802cは、埋め込み後のD1すなわちF1(11110001)を、第2送信バッファ1801eに送出する。
【0183】
以後は処理ポインタが埋め込み開始位置を超えるまで同様の処理の繰り返しであり、次の3Fが発見されると、そのワープ値=1バイト後のデータの左から3番目のビットと、ステップS2109による変更後の埋め込みデータC6(11000110)の、ステップS2110による変更後の埋め込みビット、すなわち左から4番目の「0」とが入れ替えられることになる。
【0184】
以後の処理の詳細と復号化後のデータとを図22に示す。図22に示す復号化後のデータは、図20に示す符号化前のデータと同一であり、図19に示す手順でいったん符号化されたデータが、図21に示す手順で復号化されたことが分かる。
【0185】
また、図21による復号化完了時の埋め込みデータの値は最終的に75となり、これは図19による符号化開始時の埋め込みデータの値75と一致する。すなわち、復号化対象データに符号化完了時の余剰値を埋め込んでゆくことで、符号化開始時のその初期値すなわち上述の1回目の符号化に使用された防護キー値が抽出できることになる。そして、次はこの防護キー値を用いて実施の形態1および2で上述したいずれかの復号化をおこなうことにより、データを1回目の符号化以前の平文に戻すことができる。
【0186】
このように、実施の形態3では符号化対象データに、実施の形態1または2のいずれかの手順による1回目の符号化を実施した後、その符号化に用いた防護キー値を当該符号化後のデータに埋め込むことで2回目の符号化を実施する。ただし、この防護キー値がそのまま埋め込まれるのは2回目の符号化の最初のみで、以後は符号化対象データとのビット単位の入れ替えにより、値が順次変更されてゆく。
【0187】
そして、データの符号化側からその復号化側へは、1回目の符号化に使用された防護キー値そのものでなく、2回目の符号化完了時の当該防護キー値(余剰値)のみが送付される。復号化側ではまずこの余剰値による1回目の復号化を実施してから、当該復号化完了時に抽出された防護キー値を使用して2回目の復号化を実施する。このように実施の形態3では二重の符号化/復号化をおこない、しかも符号化側から復号化側へは防護キー値そのものは渡さないので、無権限者などによる不正な復号化が非常に困難になる。
【0188】
なお、上記は埋め込みを入れ替え(SWAP)によりおこなった例であるが、埋め込み方法はこれに限らず、たとえば排他的論理和(XOR)、回転(ROTATE)などによることも考えられる。
【0189】
排他的論理和による埋め込みは、たとえば符号化対象データの被埋め込みビットと、埋め込みデータの埋め込みビットとのXORを算出し、その結果を埋め込みデータの埋め込みビットと入れ替えることによりおこなう。図20の例であれば、先頭の2D(00101101)の左から3番目のビット「1」と、埋め込みデータ75(01110101)の最左端のビット「0」とのXORは「1」であり、これが75の最左端のビットに埋め戻される結果、埋め込みデータはF5(11110101)に変更される。
【0190】
なお、対象データ側の2Dには変更はない。このように、上記による埋め込みはもっぱら埋め込みデータを初期値から順次変更してゆくところに意味があり、対象データの変容は目的としていない。なお、復号化側では受信した余剰値に、復号化対象データとのXOR結果を同様に埋め込んでゆくことで、埋め込みデータの初期値である上記75を得ることができる。
【0191】
また、回転による埋め込みの場合は、たとえば符号化対象データのキャリーフラグに埋め込みデータの埋め込みビットをセットして、上述の処理値だけ左に回転させた値を符号化後の値とする。また、回転後のキャリーフラグの値を埋め込みデータの埋め込みビットに埋め戻す。
【0192】
図20の例であれば、先頭の2D(00101101)をレジスタに、埋め込みデータ75(01110101)の最左端のビット「0」をそのキャリーフラグにセットした後、左に1ビット回転させると、キャリーフラグの「0」が2Dの最下位ビットに入り、逆に2Dの最上位ビットがキャリーフラグに押し出される結果、回転後のレジスタの値は5A(01011010)、キャリーフラグの値は0となる。このように、埋め込みビットをキャリーフラグにセットしてレジスタ内の値を回転させることで、レジスタ内の値に埋め込みビットの値を挿入することができる。
【0193】
処理値の20ビット(10進表記では32ビット)だけ左に回転させたときのレジスタの値はA2(10100010)であり、第1送信バッファ1801aから読み出された2Dの代わりに、このA2が第2送信バッファ1801eに蓄積されることになる。また、この時点でのキャリーフラグの値は1であり、これが埋め込みデータの埋め込みビットに埋め戻される結果、埋め込みデータは上記の75(01110101)からF5(11110101)に変更される。
【0194】
なお、復号化側では受信した余剰値の埋め込みビットをキャリーフラグにセットし、復号化対象データをレジスタに読み込んで右に処理値だけ回転させ、その時点でのキャリーフラグの値を埋め込みデータの埋め込みビットに埋め戻してゆくことで、その初期値である上記75を得ることができる。
【0195】
実施の形態1〜3にかかるデータ防護処理方法は、ROM、ハードディスク、CD−Rドライブ等の記録媒体にコンピュータプログラムとして記録することにより提供することもできる。また、上記コンピュータプログラムをネットワークを介して提供することもできる。
【0196】
また、本発明による符号化/復号化処理は、ハードウエア的に実現するにもごく単純な回路で足りるため、たとえばモデムなどの周辺機器に上記機能を持たせることも容易である。この場合、符号化用モデムを経由したデータは対応する機能を搭載した復号化用モデムでなければ解読できないため、復号化用モデムの配布を制限することで、符号化用モデムに接続された特定のコンピュータへのアクセスを復号化用モデムの保持者に制限することができる。
【0197】
また、たとえばハードディスクなどはたとえ起動のためのパスワードが設定されていても、他のコンピュータに接続されて他のハードディスクから起動されると容易に中身を参照・改竄されてしまうのであるが、SCSIコントローラやIDEコントローラに上記による符号化/復号化機能を持たせておき、書き込みの際には符号化、読み出しの際には復号化をおこなうようにすれば、特定のマザーボードを搭載するコンピュータからしかハードディスクの書き込み・読み出しができないように構成することができる。
【0198】
また、CD−RやCD−RWの普及によりプログラムCDの違法コピーや海賊版の問題が深刻化しているが、上記による符号化/復号化はこの問題の解決にも応用することができる。
【0199】
ISO9660に準拠したCDの場合、リードイン領域とプログラム領域との間の約350KB(約2秒間)はCD−RやCD−RWによってはコピー先のディスクにコピーされないのを利用して、この領域に防護キー値を書き込んでおく。そして、上記防護キー値により符号化されたCD内のプログラムを、そのインストール時に復号化するようにしておけば、コピーのCDからは防護キー値が読み出せない(そもそも記録されていない)ため、インストールは不可能となる。すなわち、上記のようにすることでプログラムのインストールはオリジナルのCDからしかできないように構成することができる。
【0200】
【発明の効果】
以上説明したように、この発明にかかるデータ防護処理装置によれば、機密性の高い符号化/復号化をごく単純なビット計算により実現できる上、データを送信しながら、あるいは受信しながらの逐次処理が可能なので、データの符号化/復号化を従来技術よりも高速におこなうことができるという効果を奏する。
【0201】
また、符号化/復号化の前後でデータのサイズが変わってしまうということがない。さらに、従来技術では安全性確保のために複雑な手順を要していた、鍵すなわち復号化に必要な情報の復号化側への配送を、データへの添付という形でごく容易におこなうことができるという効果を奏する。
【図面の簡単な説明】
【図1】 実施の形態1にかかるデータ防護処理装置の概略構成を示すブロック図である。
【図2】 実施の形態1にかかるデータ防護処理装置における、加算による符号化処理および減算による復号化処理の手順を示すフローチャートである。
【図3】 図2のフローチャートによる符号化処理を具体例で説明するための説明図である。
【図4】 実施の形態1にかかるデータ防護処理装置における、XORによる符号化/復号化処理の手順を示すフローチャートである。
【図5】 図4のフローチャートによる符号化処理を具体例で説明するための説明図である。
【図6】 実施の形態1にかかるデータ防護処理装置における、回転(ROTATE)による符号化/復号化処理の手順を示すフローチャートである。
【図7】 図6のフローチャートによる符号化処理を具体例で説明するための説明図である。
【図8】 実施の形態1にかかるデータ防護処理装置における、入れ替え(SWAP)による符号化/復号化処理の手順を示すフローチャートである。
【図9】 図8のフローチャートによる符号化処理を具体例で説明するための説明図である。
【図10】 ビットパターンを「100*****」として図2のフローチャートによる符号化処理をおこなった前後のデータの一例を示す説明図である。
【図11】 実施の形態2にかかるデータ防護処理装置の概略構成を示すブロック図である。
【図12】 実施の形態2にかかるデータ防護処理装置における、加算による防護キー値の変更を伴う符号化/復号化処理の手順を示すフローチャートである。
【図13】 図12のフローチャートによる符号化処理を具体例で説明するための説明図である。
【図14】 実施の形態2にかかるデータ防護処理装置における、乗算による防護キー値の変更を伴う符号化/復号化処理の手順を示すフローチャートである。
【図15】 図14のフローチャートによる符号化処理を具体例で説明するための説明図である。
【図16】 実施の形態2にかかるデータ防護処理装置における、除算による防護キー値の変更を伴う符号化/復号化処理の手順を示すフローチャートである。
【図17】 図16のフローチャートによる符号化処理を具体例で説明するための説明図である。
【図18】 実施の形態3にかかるデータ防護処理装置の概略構成を示すブロック図である。
【図19】 実施の形態3にかかるデータ防護処理装置における符号化処理の手順を示すフローチャートである。
【図20】 図19のフローチャートによる処理を具体例で説明するための説明図である。
【図21】 実施の形態3にかかるデータ防護処理装置における復号化処理の手順を示すフローチャートである。
【図22】 図21のフローチャートによる処理を具体例で説明するための説明図である。
【符号の説明】
100,1100,1800 符号化/復号化条件記憶部
101,1101,1801 符号化処理部
101a,1101a,1801a 第1送信バッファ
101b,1101b,1801b 符号化位置判定部
101c,1101c,1801c 符号化処理部
101d,1101d,1801d 一時記憶領域
101e,1101e,1801e 第2送信バッファ
102,1102,1802 復号化処理部
102a,1102a,1802a 第1受信バッファ
102b,1102b,1802b 復号化位置判定部
102c,1102c,1802c 復号化処理部
102d,1102d,1802d 一時記憶領域
102e,1102e,1802e 第2受信バッファ
1101f,1102f 防護キー値変更部
1803 埋め込み情報設定部[0001]
BACKGROUND OF THE INVENTION
The present invention encodes and decodes data in order to prevent eavesdropping (snooping) by an unauthorized person or the like. For data protection processing equipment Related.
[0002]
[Prior art]
Currently, as a data encoding / decoding technique for safely performing communication between a sender and a receiver, (a) a common secret key scheme in which both the sender and the receiver hold the same key (B) Prepare two keys to be paired, one is a private key and the other is a public key. It is widely known.
[0003]
[Problems to be solved by the invention]
However, the above-described conventional encoding / decoding has problems such as complicated processing and load on the apparatus, processing takes time, and encoding increases the overall data size. . In addition, in order to perform encoding / decoding according to the above-described prior art, it is necessary to pass a necessary key from the encoding side to the decoding side in advance. There was a problem of requiring complicated procedures.
[0004]
The present invention has been made in view of the above, and performs encoding / decoding of data by simple and high-speed processing, and information necessary for decoding of encoded data can be safely and easily performed. Can be delivered to Data protection processing equipment The purpose is to provide.
[0005]
[Means for Solving the Problems]
In order to achieve the above object, the data protection processing device according to
[0006]
According to a second aspect of the present invention, there is provided the data protection processing device according to the first aspect of the invention, further comprising adding or multiplying a predetermined change value to the calculated value, or adding the calculated value to the predetermined value. A first change processing unit that divides by a change value; an operation value obtained by adding or multiplying a predetermined change value by the first change processing unit; or a division by a predetermined change value by the first change processing unit. Second change processing means for calculating a new calculated value based on the calculated value, wherein the calculation processing means is based on the digital data determined by the determination processing means to match the predetermined bit pattern. Exclusively with a new calculation value calculated by the second change processing means for a predetermined range of digital data existing at the end in the predetermined reading direction by a predetermined distance Characterized by calculating the physical sum.
[0007]
According to a third aspect of the present invention, there is provided a data protection processing device for sequentially reading continuous digital data in a predetermined reading direction and determining whether or not the read digital data matches a predetermined bit pattern. And a predetermined range of digital data existing at the end in the predetermined reading direction by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means, by a predetermined rotation value. Rotating rotation processing means and continuous digital data rotated by the rotation processing means (hereinafter referred to as “processing data”) are sequentially read in the reading direction, and whether the read processing data matches a predetermined bit pattern The processing data determination processing means for determining whether or not the predetermined bit pass is determined by the processing data determination processing means. Wherein the embedding means embeds a predetermined rotation value from the determined processed data to the processing data of a predetermined distance between matching over down by a predetermined number of bits, further comprising: a.
[0008]
According to a fourth aspect of the present invention, in the data protection processing device according to the third aspect of the present invention, the rotation value is further added or multiplied by a predetermined change value, or the rotation value is set to a predetermined value. A first change processing unit that divides by a change value; a rotation value obtained by adding or multiplying a predetermined change value by the first change processing unit; or a division value by a predetermined change value by the first change processing unit. Second change processing means for calculating a new rotation value based on the rotation value, wherein the rotation processing means is based on the digital data determined to match the predetermined bit pattern by the determination processing means. Rotating a predetermined range of digital data existing at the end in the predetermined reading direction by a new rotation value calculated by the second change processing means by a predetermined distance And features.
[0009]
According to a fifth aspect of the present invention, there is provided a data protection processing device that sequentially reads continuous digital data in a predetermined reading direction and determines whether or not the read digital data matches a predetermined bit pattern. And digital data existing on the tail side in the predetermined reading direction by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means by a predetermined numerical value from the digital data. Digital data existing at the tail end in the predetermined reading direction, a replacement processing means for replacing the length indicated by the numerical value, and continuous digital data replaced by the replacement processing means (hereinafter referred to as “processing”). Data ”) sequentially in the reading direction, Processing data determination processing means for determining whether or not the data matches a predetermined bit pattern, and processing data determined to match the predetermined bit pattern by the processing data determination processing means to processing data at a predetermined distance Embedding processing means for embedding the predetermined numerical value by a predetermined number of bits.
[0010]
According to a sixth aspect of the present invention, in the data protection processing device according to the fifth aspect of the invention, the numerical value is further added to or multiplied by a predetermined change value, or the numerical value is changed to a predetermined change value. To a numerical value obtained by adding or multiplying a predetermined change value by the first change processing means, or a numerical value divided by the predetermined change value by the first change processing means. And a second change processing means for calculating a new numerical value. The arithmetic processing means is a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means. The digital data existing at the end in the predetermined reading direction is the predetermined reading direction by a distance indicated by the new numerical value calculated by the second change processing means. A digital data present in the definitive end side, and wherein the replacing by the length indicated by the number.
[0011]
According to a seventh aspect of the present invention, there is provided the data protection processing device according to any one of the first to sixth aspects, wherein the embedding unit is configured to perform the predetermined processing by the processing data determination processing unit. The predetermined bit of the processing data existing on the tail side in the predetermined reading direction is replaced with the predetermined bit of the predetermined digital data by a predetermined distance from the processing data determined to match the bit pattern of .
[0012]
According to an eighth aspect of the present invention, there is provided the data protection processing device according to any one of the first to sixth aspects, wherein the embedding unit is configured to perform the predetermined processing by the processing data determination processing unit. Exclusive OR of a predetermined bit of the processing data existing on the tail side in the predetermined reading direction and a predetermined bit of the predetermined digital data by a predetermined distance from the processing data determined to match the bit pattern of Is calculated.
[0013]
According to a ninth aspect of the present invention, in the data protection processing device according to the ninth aspect of the present invention, in the invention according to any one of the first to sixth aspects, the embedding unit is configured to perform the predetermined processing by the processing data determination processing unit. Rotate by a predetermined rotation value after inserting a predetermined bit of predetermined digital data into the processing data existing on the tail side in the predetermined reading direction by a predetermined distance from the processing data determined to match the bit pattern of It is characterized by that.
[0014]
DETAILED DESCRIPTION OF THE INVENTION
Preferred embodiments of a data protection processing apparatus and a data protection processing method according to the present invention will be described below in detail with reference to the accompanying drawings. The present invention is not limited to the following embodiments.
[0015]
Before going into the description of the individual embodiments, the outline of the present invention will be briefly described first. The present invention can be summarized as follows:
(1) When the bit data for 1 byte sequentially read from the encoding / decoding target data matches a predetermined bit pattern,
(2) A range in which 1 byte of bit data after a predetermined distance from the 1 byte of bit data is a start position, and 1 byte of bit data after a predetermined distance from the start position is an end position For the bit data in
(3) Encoding and decoding by performing a predetermined process using a predetermined value as a parameter;
It is characterized by.
[0016]
In the following, the distance (specifically, the number of bytes) from the bit data matching the predetermined bit pattern to the bit data at the start position is referred to as a “warp value”. The distance (also the number of bytes) from the bit data at the start position to the bit data at the end position is referred to as a “processing range”.
[0017]
Further, various processing parameters performed on the bit data within the processing range are referred to as “protection key values”. An example of these processes and the meaning of the protection key value in each process are shown below.
[0018]
(A) In the case of four arithmetic operations, for example, addition, it is a value to be added in 1-byte units to bit data within the processing range.
(B) In the case of a logical operation, for example, an exclusive OR (XOR), it is a value that is XORed with the bit data within the processing range in units of 1 byte.
(C) In the case of rotation (ROTATE), it is the number of bits for rotating bit data within the processing range.
(D) In the case of replacement (SWAP), the size (number of bytes) of the bit data to be replaced and the distance (number of bytes) from the bit data to the bit data at the replacement destination.
[0019]
For example, if the predetermined bit pattern is 5D, the warp value is 1 byte, the processing range is 4 bytes, the protection key value is 1E (all in hexadecimal notation), and the processing is addition, “
[0020]
Hereinafter, the configurations of (1) to (3) will be described with reference to the first embodiment while showing specific examples of the processes (a) to (d). Further, the protection key value can be changed during the encoding / decoding, and this configuration will be described in the second embodiment.
[0021]
Furthermore, the transmission source of the data that has been encoded according to the above (1) to (3), the protection key value used for the encoding, etc. to the reception destination in some form so that the reception destination can decode it. Must be notified. In the present invention, the protection key value is not directly transmitted such as being transmitted separately from the data or transferred off-line, but directly embedded in the data encoded by the protection key value. . This configuration will be described in
[0022]
(Embodiment 1)
First, a data protection processing device and a data protection processing method according to the first embodiment will be described. FIG. 1 is a block diagram of a schematic configuration of the data protection processing apparatus according to the first embodiment.
[0023]
The data protection processing device according to the first embodiment transmits data to be transmitted to an encoding / decoding
[0024]
First, the encoding / decoding
[0025]
As described above, since data encoded under a specific condition can be decrypted only by a specific communication partner who is informed of the condition, the confidentiality of the data can be improved. At this time, it is meaningless if the above condition itself is wiretapped (spotted), so a common conversion table (encryption table) is held on both sides, and the encoding side uses the condition used when encoding the data. The table may be converted and transmitted to the decoding side, and the decoding side may convert the received conditions into the encoding / decoding
[0026]
Regardless of the intention of each operator, the conditions in each device can be changed simultaneously in synchronism with, for example, a time server on the network or an atomic clock of a GPS (Global Pointing System) satellite.
[0027]
Next, the
[0028]
First, the
[0029]
The encoding
[0030]
When the 1-byte bit data read from the
[0031]
The
[0032]
Next, the
[0033]
First, the
[0034]
The decoding
[0035]
When the 1-byte bit data read from the
[0036]
The second reception buffer 102e is a storage unit that accumulates the bit data that has been subjected to the above processing in the decoding processing unit 102c and the bit data that has not been subjected to the above processing (through bit data). Alternatively, it may be said that the received data after decoding by the decoding processing unit 102c is accumulated.
[0037]
Note that the encoding
[0038]
The
[0039]
The encoded
[0040]
Next, the operation of the data protection processing apparatus according to the first embodiment, specifically, (a) addition / subtraction (b) XOR (c) rotation (d) exchange in each case of encoding processing and decoding processing Details will be described. In the following description, the warp value is always 1 for the sake of simplicity. This means that the processing range always starts from one byte after the bit data that matches the predetermined bit pattern. In other words, the encoding / decoding is always performed immediately after the bit data that matches the predetermined bit pattern. Means that.
[0041]
(A) Encoding and decoding by four arithmetic operations
FIG. 2 is a flowchart of a procedure of an encoding process by addition and a decoding process by subtraction in the data protection processing apparatus according to the first embodiment. The difference between the encoding process and the decoding process is that the process in step S204, which will be described later, is only the addition of the protection key value in the former, and the subtraction of the protection key value in the latter. It shows. Hereinafter, the procedure of the encoding process will be described first, and then the procedure of the decoding process will be described focusing on the difference from the procedure.
[0042]
It is assumed that the value of the position counter held by the encoded
[0043]
Next, in step S202, the encoding
[0044]
If the read bit data does not match the predetermined bit pattern (step S203: No), the encoding
[0045]
If the read bit data matches the predetermined bit pattern (step S203: Yes), the encoded
[0046]
If the value of the position counter is greater than 0 in step S202 (step S202: Yes), the encoded
[0047]
Next, in step S205, the encoding
[0048]
FIG. 3 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 2 as a specific example. As shown in the figure, it is assumed that the encoding conditions are a bit pattern of 5D, a warp value of 1, a processing range of 4, and a protection key value of 1E.
[0049]
In step S201, 3F, which is the first one byte, is read out from the pre-encoding data in the
[0050]
Next, 5D immediately after that is read again in step S201, and since the value of the position counter is 0 at this time (step S202: No), the process proceeds to step S203. Since 5D matches a predetermined bit pattern (step S203: Yes), the value of the position counter is incremented in step S206, and then 5D is stored as it is in the
[0051]
Next, 9B immediately after is read again in step S201, and since the value of the position counter is 1 at this time (step S202: Yes), 1E which is a protection key value is added to 9B in step S204. When the value after addition exceeds a value that can be expressed by 1 byte, only the excess is set as the value after addition.
[0052]
Then, the
[0053]
Next, 11 immediately after is read again in step S201, and since the value of the position counter is 2 at this time (step S202: Yes), similarly, the addition of the protective key value in step S204 and the position counter in step S206 are performed. After the increment, the added value 2F (= 11 + 1E) is accumulated in the
[0054]
Next, 40 immediately after is read again in step S201, and the value of the position counter is 3 at this point (step S202: Yes). Similarly, the addition of the protective key value in step S204 and the position counter in step S206 are performed. In step S208, the added value 5E (= 40 + 1E) is accumulated in the
[0055]
Next, A9 immediately after is read again in step S201, and since the value of the position counter is 4 at this point (step S202: Yes), the protection key value is similarly added in step S204. Since the value of the position counter reaches the processing range at this point (step S205: No), the value C7 (= A9 + 1E) after the addition in step S208 is initialized after the position counter is initialized to 0 in step S207. Accumulated in the
[0056]
Next, the last DD is read again in step S201, and the value of the position counter is 0 at this time (step S202: No), so that the DD is determined in step S208 after matching with the bit pattern in step S203. It is stored in the
[0057]
Note that the decoding of the data encoded as described above is similarly performed according to the procedure of the flowchart shown in FIG. However, in this case, the processing in step S204 is not addition but subtraction, and each unit of the
[0058]
(B) Encoding and decoding by logical operation
Next, FIG. 4 is a flowchart showing the procedure of the XOR encoding / decoding process in the data protection processing apparatus according to the first embodiment. In the case of XOR, the encoding and decoding procedures are completely the same as will be described later. The essential difference from the encoding / decoding processing by the four arithmetic operations shown in FIG. 2 is only that the processing in step S404 is XOR (exclusive OR) of logical operation, not addition or subtraction. These steps are the same as those in FIG.
[0059]
FIG. 5 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 4 as a specific example. As shown in the figure, it is assumed that the encoding conditions are a bit pattern of 5D, a warp value of 1, a processing range of 4, and a protection key value of 1E.
[0060]
In step S401, 3F is first read from the pre-encoding data in the
[0061]
Next, 5D is read again in step S401, and since the value of the position counter is 0 at this time (step S402: No), the process proceeds to step S403. Since 5D matches a predetermined bit pattern (step S403: Yes), the value of the position counter is incremented in step S406, and then 5D is stored in the
[0062]
Next, 9B is read again in step S401, and since the value of the position counter is 1 at this time (step S402: Yes), XOR between this 9B and the protection key value 1E is calculated in step S404. . 9B is binary notation, and 10011011, 1E is also 0111110, and its XOR is 10000101, that is, 85. Then, the
[0063]
Next, 11 is read again in step S401, and the value of the position counter is 2 at this time (step S402: Yes). Similarly, XOR with the protection key value in step S404, and the position counter in step S406. In step S408, the value 0F after XOR is stored in the
[0064]
Next, 40 is read again in step S401, and the value of the position counter is 3 at this time (step S402: Yes). Similarly, XOR with the protection key value in step S404, and the position counter in step S406. After the increment, the value 5E after XOR is stored in the
[0065]
Next, A9 is read again in step S401, and the value of the position counter is 4 at this time (step S402: Yes). Similarly, in step S404, XOR with the protection key value is calculated. At this time, the value of the position counter reaches the processing range (step S405: No). After the position counter is initialized to 0 in step S407, the value B7 after XOR is set to the second transmission buffer in step S408. 101e is accumulated.
[0066]
Next, the last DD is read again in step S401, and since the value of the position counter is 0 at this time (step S402: No), after the match with the bit pattern in step S403 is determined, the DD is determined in step S408. Are stored in the
[0067]
If the same encoding is further repeated for the encoded data, the data after the second encoding returns to the data before the first encoding. In the encoded data shown in FIG. 5, the XOR is applied again from 85 after 1 byte of 5D (= after the warp value) to B7 for 4 bytes (= within the processing range). For example, 85 is 10000101 in binary notation, and the protection key value 1E is also 0111110, and their XOR is 10011011, that is, the original 9B.
[0068]
Thus, in the case of XOR, the encoding procedure and the decoding procedure are completely the same. However, each part of the
[0069]
(C) Coding and decoding by rotation (ROTATE)
Next, FIG. 6 is a flowchart showing a procedure of encoding / decoding processing by rotation (ROTATE) in the data protection processing apparatus according to the first embodiment. The difference between the encoding process and the decoding process is that the rotation in step S609, which will be described later, is only the protection key value left in the former and the protection key value right in the latter. It shows.
[0070]
FIG. 7 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 6 as a specific example. As shown in the figure, it is assumed that the encoding conditions are a bit pattern of 5D, a warp value of 1, a processing range of 4, and a protection key value of 1E.
[0071]
In step S601, first, 3F is read from the pre-encoding data in the
[0072]
Next, 5D is read again in step S601, and the value of the position counter is 0 even at this time (step S602: No), so the process proceeds to step S603. Since 5D matches a predetermined bit pattern (step S603: Yes), after the position counter value is incremented in step S604, 5D is stored in the
[0073]
Next, 9B is read again in step S601, and since the value of the position counter is 1 at this time (step S602: Yes), in step S605, the 9B is stored in the
[0074]
Since the value of the position counter is 2 at this time (step S602: Yes), similarly, the process proceeds to step S601 again after saving to the
[0075]
Thereafter, 40 and A9 are similarly read out and sequentially saved in the
[0076]
At this time, bit data (10011011 00010001 01000000 10101001) meaning “
[0077]
However, the above is the result when a CPU generally called “big endian” such as Motorola or Sun SPARC is used, and the result is different when a CPU generally called “little endian” such as Intel or DEC Alpha is adopted. Come.
[0078]
That is, when “
[0079]
Next, the last DD is read again in step S601. At this time, the value of the position counter is 0 (step S602: No), so that a match with the bit pattern in step S603 is performed, and then DD in step S610. Are stored in the
[0080]
Note that the decoding of the data encoded as described above is similarly performed according to the procedure of the flowchart shown in FIG. However, in this case, the rotation in step S609 is performed only for the protection key value in the right direction opposite to that at the time of encoding. In addition, each unit of the
[0081]
(D) Encoding and decoding by replacement (SWAP)
Next, FIG. 8 is a flowchart showing a procedure of encoding / decoding processing by replacement (SWAP) in the data protection processing device according to the first exemplary embodiment. In the case of replacement, the encoding and decoding procedures are completely the same as will be described later.
[0082]
FIG. 9 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 8 as a specific example. As shown in the figure, the encoding conditions are a bit pattern of 5D, a warp value of 1, and a protection key value of 32. In the case of replacement, the lower 4 bits of the protection key value indicate the size (number of bytes) of the bit data to be replaced, and the upper 4 bits indicate the distance (number of bytes) from the bit data to the bit data to be replaced. Therefore, the above condition generally means that 2 bytes immediately after 5D (warp value = 1 byte later) are replaced with 2
[0083]
In step S801, 3F is first read from the pre-encoding data in the
[0084]
Next, 5D is read again in step S801, and the value of the position counter is also 0 at this time (step S802: No), so the process proceeds to step S803. Since 5D matches a predetermined bit pattern (step S803: Yes), the value of the position counter is incremented in step S804, and then 5D is stored in the
[0085]
Next, 9B is read again in step S801, and since the value of the position counter is 1 at this time (step S802: Yes), in step S805, the 9B is stored in the
[0086]
Since the value of the position counter is 2 at this time (step S802: Yes), similarly, the process proceeds to step S801 again after saving to the
[0087]
Thereafter, 40, A9, and DD are similarly read and sequentially saved in the
[0088]
At this time, first, the replacement size = 2 bytes, A9 and DD are extracted from the data with the later saved order. Next, from the data saved earlier, the data saved after that is taken out, 40 bytes are taken out so that the replacement size = 2 bytes, here 9B and 11 are left. Finally, by removing the remaining data, here 9B and 11, 9B and 11 can be exchanged with A9 and DD.
[0089]
Next, the last E7 is read again in step S801, and the value of the position counter is 0 at this time (step S802: No), so that a match with the bit pattern is determined in step S803, and E7 is determined in step S809. Are stored in the
[0090]
Note that if the same replacement is repeated for the replaced data, the data after the second replacement will naturally return to the data before the first replacement. Thus, in the case of replacement, the encoding procedure and the decoding procedure are completely the same. However, each part of the
[0091]
As described above, according to the data protection processing device and the data protection processing method according to the first embodiment, encoding without changing the data size is possible. In addition, sequential processing such as encoding while transmitting data or decoding while receiving data is possible, and each processing is extremely simple such as four arithmetic operations and logical operations, so it is fast and can be transferred to the device. The load of can be reduced.
[0092]
In the first embodiment described above, the warp value is assumed to be 1 for the sake of convenience of explanation, but other values may of course be used. For example, when the warp value is 2 in the example shown in FIG. 3, the protection key value is added to 11, 40, A9, and DD after 2 bytes from 5D. Further, the warp value can be a negative value, for example, -1, and in this case, the protection key value is added to 3F immediately before 5D.
[0093]
In the first embodiment described above, the entire bit pattern is designated as “010110101” (5D). For example, “100 ******” (* indicates that 0 may be 0 or 1). You may make it designate only a part like. Specifically, the latter bit pattern coincides with “10000000” (80), “10000001” (81),..., “100001111” (8F), “10010000” (90), “10010001”. (91), ..., 32 of "10011111" (9F) (= 2 to the 5th power).
[0094]
In this way, if only a part of bits match, it is determined that there is a match, so that more data can be encoded, and the difficulty of decoding by an unauthorized person can be further increased. . For example, in Shift-JIS, which is one of the Japanese character codes, double-byte characters are concentrated in the range of 8140-9FF0 and E040-EEFC. Therefore, by devising a bit pattern that can cover more characters in this range (the above-mentioned “100 ***” is a typical example), the above-mentioned characters can be obtained without leaving the original characters as much as possible. Can be encoded.
[0095]
FIG. 10 shows an encoding process (encoding process by adding a protection key) with the flowchart of FIG. 2, assuming that the bit pattern is “100 ***”, the warp value is 1, the processing range is 1, and the protection key value is 35. It is explanatory drawing which shows an example of the data before and after performing. The Japanese text data shown in the figure is encoded almost without being preserved. However, since the first byte of “numb” is “11100001” (E1) and does not match the above pattern, the protection key value is not added to the second byte. As a result, only this character remains in the encoded data. Remaining.
[0096]
The coincidence with the bit pattern is technically determined by using a predetermined mask. One of the 32 values, for example, the first “10000000” (80) is selected in advance as a representative value. Of these values, the bit position to be noted in the match determination (which may be said to be a bit position where there is a match if at least this is the same), here, 1 is set to the third bit from the left. The set mask value “11100000” (E0) is prepared.
[0097]
In step S203, S403, S603, or S803 described above, the encoding
[0098]
Note that the above is effective when the encoding target is text data centered on Japanese, but when the target is a program, by setting conditions such that the most significant bit after encoding is set to 1, More effective encoding can be performed. The program is basically expressed as an array of 8-bit codes, but the source code uses only 7 bits out of 8 bits. Thus, if the source code is encoded in such a manner that the most significant bit is set to 1, it becomes a code that cannot be executed by a computer, and can be applied to applications such as prevention of illegal copying.
[0099]
(Embodiment 2)
In the first embodiment described above, the protection key value used for encoding / decoding is a constant (it does not change during at least one encoding / decoding), but will be described below. As in
[0100]
FIG. 11 is a block diagram of a schematic configuration of the data protection processing apparatus according to the second embodiment. This is a configuration in which protection key
[0101]
The protection key
[0102]
Note that the above shows processing for the protection key value itself, which is different in dimension from the encoding / decoding processing using the protection key value described in the first embodiment. For example, even with the same addition, “addition (encoding by)” in the first embodiment means adding a predetermined protection key value “to” to the encoding target data. In the second embodiment, “addition (change of protection key value)” means that a predetermined change value is added to the protection key value “.”
[0103]
Accordingly, (a) addition / subtraction (b) XOR (c) rotation (d) exchange / encoding described in the first embodiment and (a) addition (b) multiplication described in the second embodiment. (C) The protection key value change by division can be arbitrarily combined, and the number of combinations is 4 × 3 = 12.
[0104]
For example, a combination in which the encoding / decoding method is addition / subtraction and the protection key value changing method is addition is “protection key value obtained by sequentially adding a predetermined change value to encoding / decoding target data. In the following (a), the change process of the protection key value by addition will be described using this example. Further, in the following (b), the encoding / decoding method is addition / subtraction and the protection key value changing method is multiplication, and in the following (c), the encoding / decoding method is addition / subtraction, and the protection key value is changed. The protection key value changing process by multiplication or division will be described in order using a combination in which the changing method is multiplication.
[0105]
(A) Change of protection key value by addition
FIG. 12 is a flowchart of an encoding / decoding process procedure involving a change of the protection key value by addition in the data protection processing apparatus according to the second embodiment. This figure is obtained by inserting steps S1208 and S1209 into the encoding / subtraction decoding process shown in FIG. The difference is that the
[0106]
FIG. 13 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 12 with a specific example. As shown in the figure, the encoding conditions are as follows: the bit pattern is 83, the warp value is 1, the processing range is 1, and the (initial) protection key value is 25. The change value of the protection key value is 3B, and the change method is addition.
[0107]
It is assumed that the value of the position counter held by the encoded
[0108]
The first 5B, BE, and C2 of the pre-encoding data shown in the figure are read from the
[0109]
Since the next 83 (indicated by a symbol with an underline (1) in the pre-encoding data in FIG. 13) matches a predetermined bit pattern (step S1203: Yes), the process proceeds from step S1203 to step S1206. After branching and incrementing the position counter to 1, it is stored in the
[0110]
In the next 5D, since the value of the position counter is 1 at this time (step S1202: Yes), the process branches from step S1202 to step S1204, and the encoding process refers to the protection key value in the protection key
[0111]
Further, in step S1208, the protection key
[0112]
Then, the
[0113]
In the next 43, since the value of the position counter is 1 at this time (step S1202: Yes), the process branches from step S1202 to step S1204, and the encoding process refers to the protection key value in the protection key
[0114]
Further, in step S1208, the protection key
[0115]
(B) Change of protection key value by multiplication
FIG. 14 is a flowchart of an encoding / decoding process procedure involving a change of the protection key value by multiplication in the data protection processing apparatus according to the second embodiment. The only difference from FIG. 12 is that in step S1408, the protection key value is multiplied, not added, by the change value.
[0116]
FIG. 15 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 14 with a specific example. The various encoding conditions are the same as in FIG. 13 and the change value of the protection key value is 3B, but the change method is not addition but multiplication. When the protection key value is changed by multiplication, the least significant bit of the change value must be 1 (in other words, the change value must be an odd number). Otherwise, the protection key value will always be zero after several changes to several tens of changes.
[0117]
The first 5B, BE, and C2 of the pre-encoding data shown in FIG. 15 are read from the
[0118]
Since the next 83 (indicated by a symbol with (1) underlined in the pre-encoding data in FIG. 15) matches a predetermined bit pattern (step S1403: Yes), the process proceeds from step S1403 to step S1406. After branching and incrementing the position counter to 1, it is stored in the
[0119]
In the next 5D, since the value of the position counter is 1 at this time (step S1402: Yes), the process branches from step S1402 to step S1404, and the encoding process refers to the protection key value in the protection key
[0120]
In step S1408, the protection key
[0121]
Then, the
[0122]
In the next 43, since the value of the position counter is 1 at this time (step S1402: Yes), the process branches from step S1402 to step S1404, and the encoding process refers to the protection key value in the protection key
[0123]
Further, in step S1408, the protection key
[0124]
(C) Protection key value change by division
FIG. 16 is a flowchart of a procedure of an encoding / decoding process involving a change of the protection key value by division in the data protection processing apparatus according to the second embodiment.
[0125]
FIG. 17 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 16 as a specific example. As shown in the figure, the encoding conditions are as follows: the bit pattern is 83, the warp value is 1, the processing range is 2, and the (initial) protection key value is 1325. The change value of the protection key value is 19 and the change method is division. When the protection key value is changed by division, the changed value must be sufficiently smaller than the original protection key value in order to avoid that the changed value becomes a small value of 0 or 10 or less. .
[0126]
The first 5B, BE and C2 of the pre-encoding data shown in the figure are read from the
[0127]
Since the next 83 (indicated by a symbol with (1) underlined in the pre-encoding data in FIG. 17) matches the predetermined bit pattern (step S1603: Yes), the process proceeds from step S1603 to step S1604. After branching and incrementing the position counter to 1, it is stored in the
[0128]
In the next 5D, since the value of the position counter is 1 at this time (step S1602: Yes), the process branches from step S1602 to step S1605, and is saved in the
[0129]
Then, after step S1602, in step S1605, this 82 is also saved in the
[0130]
Further, in step S1610, the protection key
[0131]
Then, 9582 of the value after addition of the protection key value is accumulated in the
[0132]
Similarly, the next 43 and 9E are saved in the
[0133]
As is clear from the above description, the data protection processing device according to the second embodiment changes the protection key value every time a predetermined bit pattern is found in the encoding target data, or in other words, applies it for each processing range. Since the protection key value is changed, it becomes more difficult to decrypt the encoded data by an unauthorized person.
[0134]
(Embodiment 3)
As is apparent from the above, the data after encoding according to the first and second embodiments described above is the bit pattern, warp value, processing range, protection key value, encoding method, or protection used for the encoding. If there is no information such as the change value and change method of the key value, it cannot be decrypted normally. Therefore, when data is encoded and sent to the other party, the above information necessary for the decoding must be notified to the other party in some form, and the notification is eavesdropped (stolen) by a third party. It must not be.
[0135]
Therefore, in the third embodiment described below, the encoded data itself is embedded with the above information necessary for decoding. However, it is not always necessary to change all of the above information. For example, if only the protection key value is changed at the time of communication or depending on the communication partner, other bit patterns, warp values, processing range, encoding method, protection Even if the change value and the change method of the key value are the same, sufficiently safe encoding is possible. Therefore, in the following, it is assumed that other conditions are fixed, and only the protection key value used for encoding is made variable, and the protection key value is embedded in the encoded data.
[0136]
FIG. 18 is a block diagram of a schematic configuration of the data protection processing apparatus according to the third embodiment. This is obtained by adding an embedded
[0137]
FIG. 19 is a flowchart of an encoding process performed by the data protection processing apparatus according to the third embodiment. FIG. 20 is an explanatory diagram for explaining the processing according to the flowchart of FIG. 19 as a specific example. Hereinafter, the procedure shown in FIG. 19 will be sequentially described along this example.
[0138]
Actually, the pre-encoding data shown in FIG. 20 is data after the encoding process according to any one of the flowcharts described in the first or second embodiment is performed in advance. In the flowchart of FIG. 19, after this first encoding, the protection key value used for the first encoding is embedded in the data after the first encoding. The encoding process is performed.
[0139]
Prior to the start of the processing according to the flowchart, the encoding / decoding
[0140]
(A) Embedded data
The data is embedded in the data to be encoded, and the operator actually sets an arbitrary protective key value used for the first encoding. The initial value is the value set by the operator in this way, which is 75 (01110101) in the example of FIG. 20, but is sequentially changed every time it is embedded as described later. The value of the embedded data at the completion of encoding (which may be referred to as a final change result) is particularly called “surplus value”.
[0141]
(B) Embedded bit
Among the embedded data, it is the highest bit among n (one in the example of FIG. 20 as will be described later) consecutive bits embedded in the encoding target data. The initial value is 7, that is, the most significant bit, but is moved down by n bits each time embedding as described later. However, after the least significant bit, it jumps to the most significant bit.
[0142]
(C) Embedded bits
The bit position where the embedded bit is embedded in the data to be encoded is represented by a numerical value (hereinafter referred to as “process value”) in which the bit is set at the position. In the example of FIG. 20, it is 20 (00100000), and the third bit from the left having a value of 1 is the position where the embedded bit is embedded. The number n of bits that is 1 (1 in this example) represents the number of embedded bits. Since the embedded bits and the embedded bits correspond one-to-one as described later, the number of embedded bits at the same time. n will also be expressed. This embedded bit is not changed in the middle of one encoding like the above embedded bit, but when a processing value is not specified (when 00H is specified), The embedded bit may be the same bit as the embedded bit. At this time, the embedded bits are also moved downward by 1 bit each time embedded.
[0143]
(D) Embedding start position and embedding end position
Of the data to be encoded, the start position and the end position of the range in which the embedded data is embedded. By arbitrarily setting the embedding start / end position, encoding by embedding can be performed on a part of data in the
[0144]
(E) Embedding method
SWAP / XOR / ROTATE, and SWAP is designated in the example of FIG. Details of each process will be described later.
(F) Embedding direction
It is assumed that either the forward direction or the reverse direction is specified, and the forward direction is designated in the example of FIG.
[0145]
Prior to the start of the processing according to the flowchart of FIG. 19, the value of the position counter held by the encoding
[0146]
In step S1901, the encoding
[0147]
Next, in step S1902, the encoding
[0148]
After that, in step S1904, the encoding
[0149]
In step S1908, the encoding
[0150]
In step S1910, the encoding processing unit 1801c reads out the first 1 byte of the data saved in the
[0151]
Specifically, the term “embedding” here refers to replacement (SWAP) designated as an embedding method. That is, the third bit “1” (indicated by an underline in FIG. 20) from the left of 2D (00101101), which is the embedding target value, and the leftmost bit “0” (character in FIG. 20) of embedded data 75 (01110101) The former is set to 0D (000001101) and the latter is set to F5 (11110101).
[0152]
In step S1911, the encoding processing unit 1801c displays the embedded data (here, 0D), the remaining data in the
[0153]
In step S1912, the encoding processing unit 1801c moves the embedded bits by n bits in the lower direction. Since the embedded bit at this point is the initial value 7 (the leftmost bit) and n is 1 as described above, the embedded bit is changed to the second bit from the left instead of the leftmost bit. Will be changed.
[0154]
In step S1913, the encoding
[0155]
Thereafter, the position counter incremented to 1 in step S1904 is determined not to exceed the warp value yet in step S1905 (step S1905: No), so the addition of the processing pointer and the embedding end position in steps S1908 and S1909 After the comparison, the next 6C is read in step S1901.
[0156]
This 6C is also saved in the
[0157]
In step S1906, the encoding processing unit 1801c reads out the first one byte saved in the
[0158]
This 68 is also saved in the
[0159]
Thereafter, 2D, B0, 04, and 75 are read in the same manner and sequentially stored in the
[0160]
At that time, the 75 (01110101) embedded bits immediately before being saved in the
[0161]
Thereafter, 75 and 3F (after embedding) are sequentially sent to the
[0162]
Thereafter, the same processing is repeated until the processing pointer exceeds the embedding end position. When the next 3F is found, the third bit “0” from the left of 98 (10011000) at the warp value = 1 byte before is set. The third bit “1” from the left of the embedded data F5 (11110101) is replaced, and B8 (10111000) after the embedding is stored in the
[0163]
Next, FIG. 21 is a flowchart showing a procedure of the decrypting process in the data protection processing apparatus according to the third embodiment. FIG. 22 is an explanatory diagram for explaining the processing according to the flowchart of FIG. 21 as a specific example. Hereinafter, the procedure shown in FIG. 21 will be sequentially described along this example. Note that FIG. 22 performs decoding exactly the reverse of the encoding of FIG. 20, and the encoded data shown in FIG. 20 is the data before decoding shown in FIG.
[0164]
Prior to the start of the processing of FIG. 21, the encoding / decoding
[0165]
(A) Embedded data
The data is embedded in the decoding target data, and the initial value is uniquely determined from the embedded data used at the time of encoding the target data. Specifically, it is the value of the embedded data at the completion of encoding, that is, the surplus value. When decoding the encoded data shown in FIG. 20 = the data before decoding shown in FIG. 22, the right in the table of FIG. The final embedded data CE (11001110) at the lower corner is the initial value.
[0166]
(B) Embedded bit
Among the embedded data, it is the highest bit among n consecutive bits embedded in the data to be decoded. The initial value is the value of the embedded bit at the completion of encoding, and is the fifth bit from the left when decoding the encoded data shown in FIG. 20 = the decoded data shown in FIG.
[0167]
(C) Embedded bits
This is a bit position in the decoding target data where the embedded bit is embedded, and is the same position set when the target data is encoded.
[0168]
(D) Embedding start position and embedding end position
Among the decoding target data, the start position and the end position of the range in which the embedded data is embedded, which are the same as the embedded start position and the embedded end position set when the target data is encoded.
[0169]
(E) Embedding method
SWAP / XOR / ROTATE, which is the same as the embedding method set when encoding the decoding target data.
[0170]
(F) Embedding direction
This is either the forward direction or the reverse direction, and is the direction opposite to the direction set when the decoding target data is encoded.
[0171]
The initial values for (a) and (b) and the values themselves for (c) to (f) are provided from the data encoding side to the decoding side together with the encoded data. However, here, for convenience of explanation, it is assumed that only (a) is attached to the encoded data, and (c) to (f) are fixed.
[0172]
Note that (b) can be calculated on the decoding side based on how many predetermined bit patterns are included in the data to be decoded. Every time a predetermined bit pattern is found, the embedded bits at the time of encoding are shifted downward by n from the most significant bit. Therefore, if there are a bit patterns in the data before and after encoding, the final Is a position shifted to the right by the “remainder of a * n / 8” from the leftmost end of the initial value. For example, the encoded data shown in FIG. 20 includes 12 3Fs (a = 12) and n = 1, so that the embedded bits at the end of encoding are a remainder of 12 * 1/8 from the leftmost end. It is shifted by 4 and is fifth from the left. This is the initial value of the embedded bit at the time of decoding.
[0173]
Prior to the start of the processing shown in FIG. 21, the value of the position counter held by the decoding
[0174]
In step S2101, the decoding
[0175]
Next, in step S2102, the decoding
[0176]
At this time, the value of the position counter is 0 (step S2103: No). In step S2104, the decoding
[0177]
Next, in step S2105, the decoding
[0178]
Since 12 is not 3F, the process branches from step S2102 to step S2103. At this time, the position counter is 0 and the
[0179]
Since it is determined in step S2102 that this 3F matches the predetermined bit pattern (step S2102: Yes), the process branches to step S2107, and is handed over from the decoding
[0180]
Thereafter, after subtraction of the processing pointer in steps S2105 and S2106 and comparison with the embedding start position, D1 before that is further read out in step S2101. Although this does not coincide with 3F (step S2102: No), since the
[0181]
In step S2109, the
[0182]
In step S2110, the
[0183]
Thereafter, the same processing is repeated until the processing pointer exceeds the embedding start position, and when the next 3F is found, the warp value = the third bit from the left of the data after 1 byte, and the change in step S2109 In the subsequent embedded data C6 (11000110), the embedded bit after the change in step S2110, that is, the fourth “0” from the left is replaced.
[0184]
Details of the subsequent processing and the data after decoding are shown in FIG. The data after decoding shown in FIG. 22 is the same as the data before encoding shown in FIG. 20, and the data once encoded by the procedure shown in FIG. 19 is decoded by the procedure shown in FIG. I understand.
[0185]
Further, the value of embedded data at the time of completion of decoding according to FIG. 21 is finally 75, which matches the
[0186]
As described above, in the third embodiment, after the first encoding is performed on the data to be encoded according to the procedure of either the first or second embodiment, the protection key value used for the encoding is encoded. The second encoding is performed by embedding in the later data. However, the protection key value is embedded as it is only at the beginning of the second encoding, and thereafter, the value is sequentially changed by exchanging bit units with the data to be encoded.
[0187]
Then, from the data encoding side to the decoding side, not the protection key value itself used for the first encoding, but only the protection key value (the surplus value) at the completion of the second encoding is sent. Is done. The decryption side first performs the first decryption using the surplus value, and then performs the second decryption using the protection key value extracted when the decryption is completed. As described above, in the third embodiment, double encoding / decoding is performed, and since the protection key value itself is not passed from the encoding side to the decoding side, unauthorized decoding by an unauthorized person or the like is extremely difficult. It becomes difficult.
[0188]
Although the above is an example in which the embedding is replaced (SWAP), the embedding method is not limited to this, and for example, exclusive OR (XOR), rotation (ROTATE), or the like may be considered.
[0189]
The embedding by exclusive OR is performed by, for example, calculating the XOR between the embedded bits of the encoding target data and the embedded bits of the embedded data, and replacing the result with the embedded bits of the embedded data. In the example of FIG. 20, the XOR between the third bit “1” from the left of the first 2D (00101101) and the leftmost bit “0” of the embedded data 75 (01110101) is “1”. As a result of being backfilled to the leftmost bit of 75, the embedded data is changed to F5 (11110101).
[0190]
There is no change in 2D on the target data side. As described above, the embedding is meaningful in that the embedded data is sequentially changed from the initial value, and the object data is not changed. On the decoding side, the above-described 75 that is the initial value of the embedded data can be obtained by similarly embedding the XOR result with the decoding target data in the received surplus value.
[0191]
In the case of embedding by rotation, for example, an embedding bit of embedding data is set in a carry flag of data to be encoded, and a value rotated to the left by the above processing value is set as a value after encoding. Further, the value of the carry flag after rotation is back-filled in the embedded bit of the embedded data.
[0192]
In the example of FIG. 20, the first 2D (00101101) is set in the register, and the leftmost bit “0” of the embedded data 75 (01110101) is set in the carry flag. The flag “0” enters the 2D least significant bit and the 2D most significant bit is pushed out to the carry flag. As a result, the value of the register after rotation is 5A (01011010), and the value of the carry flag is 0. In this way, by setting the embedded bit in the carry flag and rotating the value in the register, the value of the embedded bit can be inserted into the value in the register.
[0193]
When the processing value is rotated to the left by 20 bits (32 bits in decimal notation), the register value is A2 (10110000), and instead of 2D read from the
[0194]
On the decoding side, the embedded bit of the received surplus value is set in the carry flag, the data to be decoded is read into the register, rotated to the right by the processing value, and the carry flag value at that time is embedded in the embedded data By filling back to bits, the initial value of 75 can be obtained.
[0195]
The data protection processing method according to the first to third embodiments can also be provided by recording it as a computer program on a recording medium such as a ROM, a hard disk, a CD-R drive or the like. The computer program can also be provided via a network.
[0196]
Also, since the encoding / decoding process according to the present invention requires a very simple circuit to be realized in hardware, it is easy to give the above functions to a peripheral device such as a modem. In this case, the data sent through the encoding modem can only be decoded by a decoding modem equipped with the corresponding function. Therefore, by restricting the distribution of the decoding modem, the specifics connected to the encoding modem can be specified. Access to the computer can be limited to the owner of the decryption modem.
[0197]
Also, for example, even if a hard disk or the like has a password for activation, the contents are easily referred to or tampered with when it is connected to another computer and activated from another hard disk. If the IDE controller is provided with the encoding / decoding function described above, and encoding is performed at the time of writing and decoding is performed at the time of reading, the hard disk can be used only from a computer equipped with a specific motherboard. It is possible to configure such that writing / reading cannot be performed.
[0198]
The problem of illegal copying of program CDs and pirated copies has become serious due to the widespread use of CD-R and CD-RW, and the encoding / decoding described above can also be applied to solve this problem.
[0199]
In the case of a CD compliant with ISO9660, about 350 KB (about 2 seconds) between the lead-in area and the program area is not copied to the copy destination disk by a CD-R or CD-RW. Write the protection key value in. If the program in the CD encoded with the protection key value is decrypted at the time of installation, the protection key value cannot be read from the copy CD (it is not recorded in the first place). Installation is impossible. In other words, the program can be installed only from the original CD.
[0200]
【The invention's effect】
As described above, according to the present invention For data protection processing equipment Therefore, encoding / decoding with high confidentiality can be realized by a very simple bit calculation, and sequential processing can be performed while transmitting or receiving data. The effect is that it can be performed at a higher speed.
[0201]
In addition, the size of data does not change before and after encoding / decoding. Furthermore, in the prior art, a complicated procedure was required to ensure safety. The key, that is, the information necessary for decryption can be delivered to the decryption side very easily in the form of attachment to data. There is an effect that can be done.
[Brief description of the drawings]
FIG. 1 is a block diagram showing a schematic configuration of a data protection processing apparatus according to a first embodiment;
FIG. 2 is a flowchart illustrating a procedure of an encoding process by addition and a decoding process by subtraction in the data protection processing apparatus according to the first embodiment;
FIG. 3 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 2 as a specific example;
FIG. 4 is a flowchart showing a procedure of encoding / decoding processing by XOR in the data protection processing device according to the first exemplary embodiment;
FIG. 5 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 4 with a specific example;
6 is a flowchart showing a procedure of encoding / decoding processing by rotation (ROTATE) in the data protection processing apparatus according to the first embodiment; FIG.
FIG. 7 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 6 with a specific example;
FIG. 8 is a flowchart showing a procedure of encoding / decoding processing by replacement (SWAP) in the data protection processing device according to the first exemplary embodiment;
FIG. 9 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 8 with a specific example;
10 is an explanatory diagram showing an example of data before and after performing the encoding process according to the flowchart of FIG. 2 with a bit pattern “100 ***”. FIG.
FIG. 11 is a block diagram of a schematic configuration of a data protection processing apparatus according to a second embodiment;
FIG. 12 is a flowchart showing a procedure of an encoding / decoding process involving a change of a protection key value by addition in the data protection processing apparatus according to the second embodiment;
FIG. 13 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 12 with a specific example;
FIG. 14 is a flowchart showing a procedure of an encoding / decoding process involving a change of a protection key value by multiplication in the data protection processing apparatus according to the second embodiment;
FIG. 15 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 14 with a specific example;
FIG. 16 is a flowchart showing a procedure of an encoding / decoding process involving a change of a protection key value by division in the data protection processing apparatus according to the second embodiment;
FIG. 17 is an explanatory diagram for describing the encoding process according to the flowchart of FIG. 16 with a specific example;
FIG. 18 is a block diagram of a schematic configuration of a data protection processing apparatus according to a third embodiment;
FIG. 19 is a flowchart of an encoding process procedure in the data protection processing apparatus according to the third embodiment;
FIG. 20 is an explanatory diagram for explaining the processing according to the flowchart of FIG. 19 with a specific example;
FIG. 21 is a flowchart of a decrypting process procedure in the data protection processing apparatus according to the third embodiment;
FIG. 22 is an explanatory diagram for describing the processing according to the flowchart of FIG. 21 with a specific example;
[Explanation of symbols]
100, 1100, 1800 Encoding / decoding condition storage unit
101, 1101, 1801 encoding processing unit
101a, 1101a, 1801a First transmission buffer
101b, 1101b, 1801b Coding position determination unit
101c, 1101c, 1801c encoding processing unit
101d, 1101d, 1801d Temporary storage area
101e, 1101e, 1801e Second transmission buffer
102, 1102, 1802 Decoding processing unit
102a, 1102a, 1802a First reception buffer
102b, 1102b, 1802b Decoding position determination unit
102c, 1102c, 1802c Decoding processing unit
102d, 1102d, 1802d Temporary storage area
102e, 1102e, 1802e Second receive buffer
1101f, 1102f Protection key value change unit
1803 Embedded information setting unit
Claims (9)
前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータについて、所定の演算値との排他的論理和を演算する演算処理手段と、
前記演算処理手段により演算された連続するデジタルデータ(以下、「処理データ」という)を、読込方向で順次読み込み、読み込んだ処理データが所定のビットパターンに一致するか否かを判定する処理データ判定処理手段と、
前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離の処理データに前記所定の演算値を所定のビット数ずつ埋め込む埋め込み処理手段と、
を備えたことを特徴とするデータ防護処理装置。Determination processing means for sequentially reading continuous digital data in a predetermined reading direction and determining whether or not the read digital data matches a predetermined bit pattern;
The digital data in a predetermined range existing on the end side in the predetermined reading direction by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means is exclusive of a predetermined calculation value. Arithmetic processing means for calculating a logical sum;
Processing data determination that sequentially reads digital data (hereinafter referred to as “processing data”) calculated by the arithmetic processing means in the reading direction, and determines whether the read processing data matches a predetermined bit pattern. Processing means;
Embedding processing means for embedding the predetermined operation value by a predetermined number of bits into processing data at a predetermined distance from processing data determined to match the predetermined bit pattern by the processing data determination processing means;
A data protection processing apparatus comprising:
前記第1の変更処理手段により所定の変更値を加算あるいは乗算された演算値、または前記第1の変更処理手段により所定の変更値で除算された演算値にもとづいて、新たな演算値を算出する第2の変更処理手段と、
を備え、
前記演算処理手段は、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータについて、前記第2の変更処理手段により算出された新たな演算値との排他的論理和を演算することを特徴とする前記請求項1に記載のデータ防護処理装置。Furthermore, a first change processing means for adding or multiplying a predetermined change value to the calculated value, or dividing the calculated value by a predetermined change value;
A new calculation value is calculated based on the calculation value obtained by adding or multiplying the predetermined change value by the first change processing means or the calculation value divided by the predetermined change value by the first change processing means. Second change processing means for
With
The arithmetic processing means is configured to process the digital data in a predetermined range existing on the end side in the predetermined reading direction by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means. 2. The data protection processing apparatus according to claim 1, wherein an exclusive OR with a new calculation value calculated by the two change processing means is calculated.
前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータを、所定の回転値だけ回転する回転処理手段と、
前記回転処理手段により回転された連続するデジタルデータ(以下、「処理データ」という)を、読込方向で順次読み込み、読み込んだ処理データが所定のビットパターンに一致するか否かを判定する処理データ判定処理手段と、
前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離の処理データに前記所定の回転値を所定のビット数ずつ埋め込む埋め込み処理手段と、
を備えたことを特徴とするデータ防護処理装置。Determination processing means for sequentially reading continuous digital data in a predetermined reading direction and determining whether or not the read digital data matches a predetermined bit pattern;
Rotation of rotating a predetermined range of digital data existing at the end in the predetermined reading direction by a predetermined rotation value by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means Processing means;
Processing data determination for sequentially reading continuous digital data rotated by the rotation processing means (hereinafter referred to as “processing data”) in a reading direction and determining whether the read processing data matches a predetermined bit pattern. Processing means;
Embedding processing means for embedding the predetermined rotation value by a predetermined number of bits into processing data at a predetermined distance from processing data determined to match the predetermined bit pattern by the processing data determination processing means;
A data protection processing apparatus comprising:
前記第1の変更処理手段により所定の変更値を加算あるいは乗算された回転値、または前記第1の変更処理手段により所定の変更値で除算された回転値にもとづいて、新たな回転値を算出する第2の変更処理手段と、を備え、
前記回転処理手段は、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在する所定の範囲のデジタルデータを、前記第2の変更処理手段により算出された新たな回転値だけ回転することを特徴とする前記請求項3に記載のデータ防護処理装置。A first change processing means for adding or multiplying a predetermined change value to the rotation value, or dividing the rotation value by a predetermined change value;
A new rotation value is calculated based on the rotation value obtained by adding or multiplying the predetermined change value by the first change processing means or the rotation value divided by the predetermined change value by the first change processing means. Second change processing means for
The rotation processing means converts the digital data within a predetermined range existing on the tail side in the predetermined reading direction by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means. 4. The data protection processing device according to claim 3, wherein the data protection processing device rotates by a new rotation value calculated by the second change processing means.
前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在するデジタルデータを、当該デジタルデータから所定の数値により示される距離だけ前記所定の読込方向における末尾側に存在するデジタルデータと、当該数値により示される長さ分だけ入れ替える入れ替え処理手段と、
前記入れ替え処理手段により入れ替えされた連続するデジタルデータ(以下、「処理データ」という)を、読込方向で順次読み込み、読み込んだ処理データが所定のビットパターンに一致するか否かを判定する処理データ判定処理手段と、
前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離の処理データに前記所定の数値を所定のビット数ずつ埋め込む埋め込み処理手段と、
を備えたことを特徴とするデータ防護処理装置。Determination processing means for sequentially reading continuous digital data in a predetermined reading direction and determining whether or not the read digital data matches a predetermined bit pattern;
The digital data existing on the tail side in the predetermined reading direction by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means is the distance indicated by the predetermined numerical value from the digital data. Digital data present on the tail side in the predetermined reading direction, and replacement processing means for replacing only the length indicated by the numerical value;
Processing data determination for sequentially reading the continuous digital data (hereinafter referred to as “processing data”) replaced by the replacement processing means in the reading direction, and determining whether or not the read processing data matches a predetermined bit pattern Processing means;
Embedding processing means for embedding the predetermined numerical value by a predetermined number of bits into processing data at a predetermined distance from the processing data determined to match the predetermined bit pattern by the processing data determination processing means;
A data protection processing apparatus comprising:
前記第1の変更処理手段により所定の変更値を加算あるいは乗算された数値、または前記第1の変更処理手段により所定の変更値で除算された数値にもとづいて、新たな数値を算出する第2の変更処理手段と、を備え、
前記演算処理手段は、前記判定処理手段により前記所定のビットパターンに一致すると判定されたデジタルデータから所定の距離だけ前記所定の読込方向における末尾側に存在するデジタルデータを、前記第2の変更処理手段により算出された新たな数値により示される距離だけ前記所定の読込方向における末尾側に存在するデジタルデータと、当該数値により示される長さ分だけ入れ替えることを特徴とする前記請求項5に記載のデータ防護処理装置。A first change processing means for adding or multiplying the numerical value by a predetermined change value, or dividing the numerical value by a predetermined change value;
A second value for calculating a new numerical value based on the numerical value obtained by adding or multiplying the predetermined change value by the first change processing means or the numerical value divided by the predetermined change value by the first change processing means. Change processing means, and
The arithmetic processing means converts the digital data present on the tail side in the predetermined reading direction by a predetermined distance from the digital data determined to match the predetermined bit pattern by the determination processing means to the second changing process. 6. The digital data existing on the tail side in the predetermined reading direction by a distance indicated by a new numerical value calculated by the means and the length indicated by the numerical value are replaced with each other. Data protection processing equipment.
前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離だけ前記所定の読込方向における末尾側に存在する処理データの所定のビットを、所定のデジタルデータの所定のビットと入れ替えることを特徴とする前記請求項1〜請求項6のいずれか一つに記載のデータ防護処理装置。The embedding means is
A predetermined bit of the processing data existing on the tail side in the predetermined reading direction by a predetermined distance from the processing data determined to match the predetermined bit pattern by the processing data determination processing means The data protection processing device according to claim 1, wherein the data protection processing device is replaced with a bit.
前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離だけ前記所定の読込方向における末尾側に存在する処理データの所定のビットと、所定のデジタルデータの所定のビットとの排他的論理和とを演算することを特徴とする前記請求項1〜請求項6のいずれか一つに記載のデータ防護処理装置。The embedding means is
A predetermined bit of the processing data existing on the tail side in the predetermined reading direction by a predetermined distance from the processing data determined to match the predetermined bit pattern by the processing data determination processing means, and a predetermined digital data The data protection processing device according to any one of claims 1 to 6, wherein an exclusive OR with the other bits is calculated.
前記処理データ判定処理手段により前記所定のビットパターンに一致すると判定された処理データから所定の距離だけ前記所定の読込方向における末尾側に存在する処理データに、所定のデジタルデータの所定のビットを挿入のうえ所定の回転値だけ回転することを特徴とする前記請求項1〜請求項6のいずれか一つに記載のデータ防護処理装置。The embedding means is
A predetermined bit of predetermined digital data is inserted into the processing data existing at the end in the predetermined reading direction by a predetermined distance from the processing data determined to match the predetermined bit pattern by the processing data determination processing means. Further, the data protection processing device according to any one of claims 1 to 6, wherein the data protection processing device rotates by a predetermined rotation value.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001135802A JP3930697B2 (en) | 2001-05-07 | 2001-05-07 | Data protection processing equipment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001135802A JP3930697B2 (en) | 2001-05-07 | 2001-05-07 | Data protection processing equipment |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002333834A JP2002333834A (en) | 2002-11-22 |
JP3930697B2 true JP3930697B2 (en) | 2007-06-13 |
Family
ID=18983202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001135802A Expired - Fee Related JP3930697B2 (en) | 2001-05-07 | 2001-05-07 | Data protection processing equipment |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3930697B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5875441B2 (en) | 2012-03-29 | 2016-03-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Apparatus and method for encrypting data |
-
2001
- 2001-05-07 JP JP2001135802A patent/JP3930697B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002333834A (en) | 2002-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3229148B2 (en) | Encryption method and system | |
CN108259169B (en) | File secure sharing method and system based on block chain cloud storage | |
US8254570B2 (en) | Method and system for encryption of data | |
US7475258B2 (en) | Exclusive encryption | |
JP3747520B2 (en) | Information processing apparatus and information processing method | |
US6011849A (en) | Encryption-based selection system for steganography | |
US7961871B2 (en) | Encryption process, encryption device, and computer-readable medium storing encryption program | |
CN107086915B (en) | Data transmission method, data sending end and data receiving end | |
EP1927212B1 (en) | Homophonic substitution symmetric key encryption | |
US20130028419A1 (en) | System and a method for use in a symmetric key cryptographic communications | |
CN111034115B (en) | Encryption system and method for expanding apparent size of true random number pool | |
JP2004501532A (en) | One-time pad encryption with central key provision and key enterable characters | |
KR20080105721A (en) | Text security method | |
CN103825723A (en) | Encryption method and device | |
CN112016111A (en) | Credible bidding encryption and decryption method supporting centralized decryption | |
JP6961324B2 (en) | Searchable cryptographic processing system | |
CN105721156A (en) | General Encoding Functions For Modular Exponentiation Encryption Schemes | |
JP3930697B2 (en) | Data protection processing equipment | |
CN111277605B (en) | Data sharing method and device, computer equipment and storage medium | |
Kulkarni et al. | A robust encryption method for speech data hiding in digital images for optimized security | |
WO1999010859A2 (en) | Steganographic encryption system for secure data | |
CN1604521A (en) | Server including an encoded data converter apparatus | |
KR20220137024A (en) | Symmetric Asynchronous Generation Encryption Method | |
US20210143977A1 (en) | Method for encoding, transmitting and/or storing and decoding digital information in an unbreakable manner | |
CN113067892B (en) | Method for realizing safe cloud synchronization and cloud storage by using public cloud |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041105 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20060707 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20060718 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060725 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060925 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070117 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070309 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3930697 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100316 Year of fee payment: 3 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100316 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130316 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130316 Year of fee payment: 6 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130316 Year of fee payment: 6 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |