(57)【要約】【課題】機密性、完全性、及び信頼性を備える新規なアルゴリズムを用いて構成された暗号システムの提供を課題とするものである。【解決手段】システム１は、暗号処理機能４及び復号処理機能５を有する暗号ＰＣ２によって主に構成され、暗号処理機能４としての暗号対象データ取得手段１２と、割合生成手段１４と、データ取得手段１５と、分割手段１６と、転値手段１７と、加算手段１８と、暗号生成手段２１とを主に具備し、復号処理機能５としての復号対象データ取得手段と、復号割合生成手段と、復号データ取得手段と、復号位置生成手段と、範囲指定手段と、減算手段と、逆転値手段と、復号生成手段とを主に具備する。【選択図】図１
2010113168.tif 000002
【特許請求の範囲】
【請求項１】
任意のバイト数で構成された共通鍵データ及び暗号処理の対象となる平文若しくは暗号処理済の暗号対象データを取得する暗号対象データ取得手段と、前記共通鍵データ及び前記暗号対象データのバイト数を合算し、得られた合算バイト数を基数で除算してなる第一データを生成する割合生成手段と、前記共通鍵データの任意位置における任意バイトのバイト値データ、及び前記任意バイトの任意桁数のビット値データを取得するデータ取得手段と、前記共通鍵データ及び前記暗号対象データを対比し、何れか一方の長いバイト数を有する長データを分割し、何れか他方の短いバイト数を有する短データのバイト数に合わせた分割データ及びその余からなる分割余データを生成する分割手段と、前記分割データをデータ単位若しくはバイト単位の少なくとも何れか一方で、前記ビット値データの値に基づいて転値処理する転値手段と、転値処理された前記分割データ及び前記短データを規定の加算規則に則って加算処理し、前記分割データ及び前記短データを合計したバイト数を有する加算データを生成する加算手段と、前記分割余データをビット毎に反転処理し、生成された反転データを前記加算データの最上位バイトまたは最下位バイトの何れか一方のバイト端に結合し、暗号データを生成する暗号生成手段とを具備することを特徴とする暗号システム。
【請求項２】
前記暗号対象データ取得手段は、暗号処理の繰返回数を示す回数データを取得する回数データ取得手段をさらに有し、前記割合生成手段は、前記第一データを前記基数でさらに除算してなる第二データを生成する第二データ生成手段をさらに有し、前記分割手段は、前記共通鍵データ及び前記暗号対象データが同一バイト数で構成されている、若しくは、暗号処理された前記暗号データを同一バイト数の一対の等分割データとして分割するときに、何れか一方の前記共通鍵データ及び前記暗号対象データ若しくは前記等分割データを前記分割データとして指定し、何れか他方を前記短データとして指定するデータ指定手段と、前記第一データと前記ビット値データを積算し、得られた積算値に生成された前記第二データの値によって指定される回数分、前記任意バイトの次位置に相当する次位置バイトへの移行及び前記位置バイトの前記ビット値データの加算を繰返して分割位置データを生成する分割位置生成手段及び前記分割位置データに基づいて前記暗号データを分割し、前記長データ及び前記短データを生成する暗号分割手段を有する暗号処理繰返手段とをさらに具備することを特徴とする請求項１に記載の暗号システム。
【請求項３】
前記共通鍵データ、復号対象となる前記暗号データ、及び前記回数データを取得する復号対象データ取得手段と、前記暗号データのバイト数を前記基数で除算してなる復号第一データ、及び前記復号第一データを前記基数でさらに除算してなる復号第二データを生成する復号割合生成手段と、前記回数データに基づく回数値と前記共通鍵データのバイト数を対比し、前記共通鍵データのバイト数が前記回数値と同一若しくは大の場合、前記共通鍵データの前記任意バイトから前記回数値を数えた位置に相当する回数バイトの前記バイト値データ及び前記ビット値データを取得し、一方、前記共通鍵データのバイト数が前記回数値よりも小の場合、前記回数値を前記共通鍵データのバイト数で除算し、その余として算出された余値を前記任意バイトから数えた位置に相当する余バイトの前記バイト値データ及び前記ビット値データを取得する復号データ取得手段と、前記復号第一データに前記ビット値データを積算し、得られた復号積算値に生成された前記復号第二データの値によって指定される回数分、前記ビット値データを取得した前記回数バイト若しくは前記余バイトの次位置の前記次位置バイトへの移行及び前記ビット値データの加算を繰返して復号位置データを生成する復号位置生成手段と、前記復号位置データの倍数が前記暗号データのバイト数よりも大の場合、前記復号位置データの倍数から前記暗号データのバイト数を減算し、得られた減算値によって前記暗号データの最上位バイト及び最下位バイトの何れか一方から数えた位置で分割し、前記最下位バイト側から分割したときは前記暗号データの下位側から分割された復号分割余データとして指定し、一方、前記最上位バイト側から分割したときは前記暗号データの上位側から分割された前記復号分割余データとして指定し、前記復号位置データの倍数が前記暗号データのバイト数よりも小の場合、前記暗号データのバイト数から前記復号位置データの倍数を減算し、得られた減算値によって前記暗号データの前記最上位バイト及び前記最下位バイトの何れか一方から数えた位置で分割し、前記最下位バイト側から分割したときは前記暗号データの上位側から分割された前記復号分割余データとして指定し、一方、前記最上位バイト側から分割したときは前記暗号データの下位側から分割された前記復号分割余データとして指定し、前記復号位置データの倍数と前記暗号データのバイト数とが等しい場合、前記復号分割余データをゼロとして指定する範囲指定手段と、前記復号位置データ及び前記範囲指定手段に基づいて、前記暗号データを減算前データ、及びその余からなる前記復号分割余データに分割する復号暗号分割手段と、前記減算前データを予め規定した減算規則に則って減算処理し、前記分割データ及び前記短データを生成する減算手段と、生成された前記分割データに対し、データ単位若しくはバイト単位の少なくとも何れか一方で、前記ビット値データに基づいて前記転値手段と逆方向へ転値処理する逆転値手段と、分割された前記復号分割余データをビット毎に反転処理し、生成された前記分割余データを転値処理された前記分割データの最上位バイトまたは最下位バイトの何れか一方のバイト端に結合し、前記共通鍵データ若しくは前記暗号データの復号データを生成する復号生成手段とを具備することを特徴とする請求項１または請求項２に記載の暗号システム。
【請求項４】
任意のバイト数で構成された共通鍵データ及び暗号処理の対象となる平文若しくは暗号処理済の暗号対象データ、及び暗号処理の処理回数を示す回数データを取得する暗号対象データ取得工程、前記共通鍵データ及び前記暗号対象データのバイト数を合算し、得られた合算バイト数を基数で除算してなる第一データ、及び前記第一データを前記基数でさらに除算してなる第二データを生成する割合生成工程、前記共通鍵データの任意位置における任意バイトのバイト値データ、及び前記任意バイトの任意桁数のビット値データを取得するデータ取得工程、前記共通鍵データ及び前記暗号対象データを対比し、何れか一方の長いバイト数を有する長データを分割し、何れか他方の短いバイト数を有する短データのバイト数に合わせた分割データ及びその余からなる分割余データを生成するとともに、前記共通鍵データ及び前記暗号対象データが同一バイト数で構成されている、若しくは暗号処理された前記暗号データを同一バイト数の一対の等分割データとして分割するときに、何れか一方の前記共通鍵データ及び前記暗号対象データ若しくは前記等分割データを前記分割データとして指定し、何れか他方を前記短データとして指定するデータ指定工程、及び、前記第一データと前記ビット値データを積算し、得られた積算値に生成された前記第二データの値によって指定される回数分、前記任意バイトの次位置に相当する次位置バイトへの移行及び前記位置バイトの前記ビット値データの加算を繰返して分割位置データを生成する分割位置生成工程及び前記分割位置データに基づいて前記暗号データを分割し、前記長データ及び前記短データを生成する暗号分割工程を有する暗号処理繰返工程を有する分割生成工程、前記分割データをデータ単位若しくはバイト単位の少なくとも何れか一方で、前記ビット値データの値に基づいて転値処理する転値工程、転値処理された前記分割データ及び前記短データを規定の加算規則に則って加算処理し、前記分割データ及び前記短データを合計したバイト数を有する加算データを生成する加算工程、前記分割余データをビット毎に反転処理し、生成された前記反転データを前記加算データの最上位バイトまたは最下位バイトの何れか一方のバイト端に結合し、暗号データを生成する暗号生成工程を具備することを特徴とする暗号方法。
【請求項５】
前記共通鍵データ、復号対象となる前記暗号データ、及び前記回数データを取得する復号対象データ取得工程、前記暗号データのバイト数を前記基数で除算してなる復号第一データ、及び前記復号第一データを前記基数でさらに除算してなる復号第二データを生成する復号割合生成工程、前記回数データに基づく回数値と前記共通鍵データのバイト数を対比し、前記共通鍵データのバイト数が前記回数値と同一若しくは大の場合、前記共通鍵データの前記任意バイトから前記回数値を数えた位置に相当する回数バイトの前記バイト値データ及び前記ビット値データを取得し、一方、前記共通鍵データのバイト数が前記回数値よりも小の場合、前記回数値を前記共通鍵データのバイト数で除算し、その余として算出された余値を前記任意バイトから数えた位置に相当する余バイトの前記バイト値データ及び前記ビット値データを取得する復号データ取得工程、前記復号第一データに前記ビット値データを積算し、得られた復号積算値に生成された前記復号第二データの値によって指定される回数分、前記ビット値データを取得した前記回数バイト若しくは前記余バイトの次位置の前記次位置バイトへの移行及び前記ビット値データの加算を繰返して復号位置データを生成する復号位置生成工程、前記復号位置データの倍数が前記暗号データのバイト数よりも大の場合、前記復号位置データの倍数から前記暗号データのバイト数を減算し、得られた減算値によって前記暗号データの最上位バイト及び最下位バイトの何れか一方から数えた位置で分割し、前記最下位バイト側から分割したときは前記暗号データの下位側から分割された復号分割余データとして指定し、一方、前記最上位バイト側から分割したときは前記暗号データの上位側から分割された前記復号分割余データとして指定し、前記復号位置データの倍数が前記暗号データのバイト数よりも小の場合、前記暗号データのバイト数から前記復号位置データの倍数を減算し、得られた減算値によって前記暗号データの前記最上位バイト及び前記最下位バイトの何れか一方から数えた位置で分割し、前記最下位バイト側から分割したときは前記暗号データの上位側から分割された前記復号分割余データとして指定し、一方、前記最上位バイト側から分割したときは前記暗号データの下位側から分割された前記復号分割余データとして指定し、前記復号位置データの倍数と前記暗号データのバイト数とが等しい場合、前記復号分割余データをゼロとして指定する範囲指定工程、前記復号位置データ及び前記範囲指定工程に基づいて、前記暗号データを減算前データ、及びその余からなる前記復号分割余データに分割する復号暗号分割工程、前記減算前データを予め規定した減算規則に則って減算処理し、前記分割データ及び前記短データを生成する減算工程、生成された前記分割データに対し、データ単位若しくはバイト単位の少なくとも何れか一方で、前記ビット値データに基づいて前記転値工程と逆方向へ転値処理する逆転値工程、分割された前記復号分割余データをビット毎に反転処理し、生成された前記分割余データを転値処理された前記分割データの最上位バイトまたは最下位バイトの何れか一方のバイト端に結合し、前記共通鍵データ若しくは前記暗号データの復号データを生成する復号生成工程を具備することを特徴とする請求項４に記載の暗号方法。
【請求項６】
任意のバイト数で構成された共通鍵データ及び暗号処理の対象となる平文若しくは暗号処理済の暗号対象データ、及び暗号処理の処理回数を示す回数データを取得する暗号対象データ取得手段、前記共通鍵データ及び前記暗号対象データのバイト数を合算し、得られた合算バイト数を基数で除算してなる第一データ、及び前記第一データを前記基数でさらに除算してなる第二データを生成する割合生成手段、前記共通鍵データの任意位置における任意バイトのバイト値データ、及び前記任意バイトの任意桁数のビット値データを取得するデータ取得手段、前記共通鍵データ及び前記暗号対象データを対比し、何れか一方の長いバイト数を有する長データを分割し、何れか他方の短いバイト数を有する短データのバイト数に合わせた分割データ及びその余からなる分割余データを生成するとともに、前記共通鍵データ及び前記暗号対象データが同一バイト数で構成されている、若しくは暗号処理された前記暗号データを同一バイト数の一対の等分割データとして分割するときに、何れか一方の前記共通鍵データ及び前記暗号対象データ若しくは前記等分割データを前記分割データとして指定し、何れか他方を前記短データとして指定するデータ指定手段、及び、前記第一データと前記ビット値データを積算し、得られた積算値に生成された前記第二データの値によって指定される回数分、前記任意バイトの次位置に相当する次位置バイトへの移行及び前記位置バイトの前記ビット値データの加算を繰返して分割位置データを生成する分割位置生成手段及び前記分割位置データに基づいて前記暗号データを分割し、前記長データ及び前記短データを生成する暗号分割手段を有する暗号処理繰返手段とを有する分割データ生成手段、前記分割データをデータ単位若しくはバイト単位の少なくとも何れか一方で、前記ビット値データの値に基づいて転値処理する転値手段、転値処理された前記分割データ及び前記短データを規定の加算規則に則って加算処理し、前記分割データ及び前記短データを合計したバイト数を有する加算データを生成する加算データ生成手段、及び前記分割余データをビット毎に反転処理し、生成された前記反転データを前記加算データの最上位バイトまたは最下位バイトの何れか一方のバイト端に結合し、暗号データを生成する暗号生成手段として、暗号コンピュータを機能させることを特徴とする暗号プログラム。
【請求項７】
前記共通鍵データ、復号対象となる前記暗号データ、及び前記回数データを取得する復号対象データ取得手段、前記暗号データのバイト数を前記基数で除算してなる復号第一データ、及び前記復号第一データを前記基数でさらに除算してなる復号第二データを生成する復号割合生成手段、前記回数データに基づく暗号処理の繰返回数を示す回数値と、取得した前記共通鍵データのバイト数を対比し、前記共通鍵データのバイト数が前記回数値と同一若しくは大の場合、前記共通鍵データの前記任意バイトから前記回数値を数えた位置に相当する回数バイトの前記バイト値データ及び前記ビット値データを取得し、一方、前記共通鍵データのバイト数が前記回数値よりも小の場合、前記回数値を前記共通鍵データのバイト数で除算し、その余として算出された余値を前記任意バイトから数えた位置に相当する余バイトの前記バイト値データ及び前記ビット値データを取得する復号データ取得手段、前記復号第一データに前記ビット値データを積算し、得られた復号積算値に生成された前記復号第二データの値によって指定される回数分、前記ビット値データを取得した前記回数バイト若しくは前記余バイトの次位置の前記次位置バイトへの移行及び前記ビット値データの加算を繰返して復号位置データを生成する復号位置生成手段、前記復号位置データの倍数が前記暗号データのバイト数よりも大の場合、前記復号位置データの倍数から前記暗号データのバイト数を減算し、得られた減算値によって前記暗号データの最上位バイト及び最下位バイトの何れか一方から数えた位置で分割し、前記最下位バイト側から分割したときは前記暗号データの下位側から分割された復号分割余データとして指定し、一方、前記最上位バイト側から分割したときは前記暗号データの上位側から分割された前記復号分割余データとして指定し、前記復号位置データの倍数が前記暗号データのバイト数よりも小の場合、前記暗号データのバイト数から前記復号位置データの倍数を減算し、得られた減算値によって前記暗号データの前記最上位バイト及び前記最下位バイトの何れか一方から数えた位置で分割し、前記最下位バイト側から分割したときは前記暗号データの上位側から分割された前記復号分割余データとして指定し、一方、前記最上位バイト側から分割したときは前記暗号データの下位側から分割された前記復号分割余データとして指定し、前記復号位置データの倍数と前記暗号データのバイト数とが等しい場合、前記復号分割余データをゼロとして指定する範囲指定手段、前記復号位置データ及び前記範囲指定手段に基づいて、前記暗号データを減算前データ、及びその余からなる前記復号分割余データに分割する復号暗号分割手段、前記減算前データを予め規定した減算規則に則って減算処理し、前記分割データ及び前記短データを生成する減算手段、生成された前記分割データに対し、データ単位若しくはバイト単位の少なくとも何れか一方で、前記ビット値データに基づいて前記転値手段と逆方向へ転値処理する逆転値手段、及び分割された前記復号分割余データをビット毎に反転処理し、生成された前記分割余データを転値処理された前記分割データの最上位バイトまたは最下位バイトの何れか一方のバイト端に結合し、前記共通鍵データ若しくは前記暗号データの復号データを生成する復号生成手段として、前記暗号コンピュータをさらに機能させることを特徴とする請求項６に記載の暗号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号システム、暗号方法、及び暗号プログラムに関するものであり、特に、高度な暗号処理によって、暗号文の解読の困難な高い“機密性”を保持し、かつ情報の改竄や破壊等を防ぐ“完全性（正真性）”、及び「なりすまし」等による被害を防ぐ情報の“信頼性”の三つの優れた機能を併せ持つ暗号処理システム等に関するものである。
【背景技術】
【０００２】
近年の情報通信技術の発達及び情報通信機器の高機能化等に伴って、複数のコンピュータ同士をインターネット等の通信回線に接続し、データの送受を行う事が活発にされている。新たな通信手段として利用される電子メール等、金融機関の電算化処理システム等のビジネスでの使用も増えている。一方、家庭では、所謂インターネット通販の利用が増えている。このように各種情報やデータの送受を行う場合、通信経路の途中で第三者によって情報が不正に詐取される危険性がある。そのため、顧客データ等のビジネスにおける重要な情報や、インターネット通販における注文者の住所、氏名、クレジットカード番号等の個人情報を、何ら処理を施すことなく送受することは第三者による不正詐取の可能性が著しく高く、これらの情報をインターネット等の通信回線を通じてそのまま送ることは、情報漏洩の危険性が高く、躊躇することがあった。そこで、各種情報及びデータ等の送受の際には、送り手側で情報等を暗号し、さらに暗号されたデータを受取った受け手側で、認識可能な平文に復号の処理を行うことにより、通信回線を通じて送出される各種情報が、たとえ第三者が入手したとしても暗号データを解読するための鍵を知らない限り、その内容を見ることができず、通信内容の秘匿性及び機密性が保持される。
【０００３】
暗号処理の方式は、対称鍵暗号方式（共通鍵暗号方式）及び非対称鍵暗号方式（公開鍵暗号方式）の二つに大別できる。対称暗号方式の場合、暗号化のための暗号鍵と、暗号文を復号し、平文に戻すための復号鍵とが同一であり、送り手側は、暗号文とともに、共通の鍵を秘匿性の高い何らかの手法（Ｄｉｆｆｅ−Ｈｅｌｌｍａｎ鍵共有方式等）で受け手側に送出する必要がある。一方、公開鍵暗号方式は、アルゴリズムとともに公開される公開鍵と、復号者のみが保管する秘密鍵とを用い、相手の公開鍵を使用して送り手側が平文を暗号化し、それを受け手側の秘密鍵で暗号文を復号するものである。共通鍵暗号方式の中には、「ストリーム暗号」と「ブロック暗号」の二つが一般に知られている。ストリーム暗号（Ｓｔｒｅａｍ  Ｃｉｐｈｅｒ）は、逐次暗号とも呼ばれ、同一の鍵を使用して平文を１ビット単位若しくは１バイト単位で逐次的に処理するものである。そのため、１ビット若しくは１バイトの処理単位で同一処理を繰返し実施することになり、平文及び暗号文の対応関係の類推が比較的容易にできる欠点を有している。その結果、短時間での解読の可能性が示唆されている。なお、ストリーム暗号の一種である「バーナム暗号」は、乱数を用い、平文と同一長さの鍵を生成し、この鍵を１度の使用毎に破棄することにより、対応関係の類推を防止でき、理論的には第三者の解読が不可能であるとされている。しかし、処理毎に平文と同一長さの長大な鍵を生成する煩雑な処理が必要であり、鍵の生成、授受、及び管理等の運用上の課題が多く存在し、実用なものではなかった。
【０００４】
一方、ブロック暗号は、平文を一定数のビットからなるブロックに分割し、該ブロックに対して暗号処理を行う方式である。このとき、ブロック毎に換字処理や転値（シフト）処理等を組合わせることで仮に暗号データの一部についての対応関係が把握できても、暗号文全体の解読を行うことは極めて困難であり、機密性が十分に確保された。しかし、近年のコンピュータの解析能力の向上により、想定可能な全種類の鍵の組合わせを試みる全数探索法（Ｂｒｕｔｅ  Ｆｏｒｃｅ  Ｓｅａｒｃｈ（Ａｔｔａｃｋ））と「差分解読法」や「線形解読法」等を組合わることで数百億から数千億パターンの鍵の中から解読又は解読の可能性を示唆することができ、解読に要する時間は年々短縮化されていた。そのため、将来的には実用的な時間で解読可能と予測され、完全な機密性の保証ができなかった。また、使用される鍵は、半導体チップに記録されていることが多く、暗号及び復号の際に必要に応じて読込まれていた。このときの消費電力や実行時間等の情報（サイドチャネル情報）を計測し、結果を解析することによって鍵を得るサイドチャネル攻撃が提案されている。これにより、半導体チップのメモリ内に記録された鍵であっても、単純電力解析や差分電力解析によるサイドチャネル攻撃によって暗号処理の際の消費電力を示す信号波形の解析によって、鍵の解読がなされ、暗号文の解読が可能となる（例えば、特許文献１参照）。そのため、係る攻撃に対する防御として、サイドチャネル攻撃に対する高耐性を有する暗号方法、暗号装置及び暗号プログラムの開発が行われている（例えば、特許文献２参照）。
【０００５】
【特許文献１】特開２００１−２６８０７２号公報
【特許文献２】特開２００８−１４１３８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
暗号処理は、暗号化によって情報についての秘匿性及び機密性を確保し、通信過程で第三者によって何らかの改竄がなされ、正しいデータでない可能性を排除するためデータの完全性を保証する機能が求められ、第三者の所謂「なりすまし」等を防ぐための信頼性が求められていた。しかし、この三つの機能・特徴を合わせ持つ暗号アルゴリズムは従来において確認されておらず、上述のストリーム暗号方式及びブロック暗号方式の双方の利点を有する暗号アルゴリズムはなかった。そこで、本発明は、上記実情に鑑み、ストリーム暗号及びブロック暗号の双方の利点を有する新規なアルゴリズムを用いて構成された暗号システム、暗号方法、及び暗号プログラムの提供を課題とするものである。
【課題を解決するための手段】
【０００７】
上記の課題を解決するための構成である暗号対象データ取得手段とは、任意のバイト数の共通鍵データ及び暗号対象データを取得するものであり、例えば、暗号作成者がキーボード等から直接入力するもの、或いはメモリ等の記憶手段に記憶されたデータを読込むことで取得するものであってもよい。なお暗号対象データは、平文でも、最低一回以上の暗号処理が施されたもののいずれであっても構わない。また、共通鍵データ及び暗号対象データは、各々任意のバイト数で構成され、両者を合算した合算バイト数を基数で除算することによって第一データが生成される。ここで、基数（または底）とは、位取り記数法で指定された自然数Ｎをいい、例えば、１０進数の場合、Ｎ＝１０であり、８進数の場合、Ｎ＝８である。すなわち、ビットによって表すことの可能な数（通り）を示し、例えば、３ビットの場合、８進数として８通りとなり、４ビットの場合、１６進数として１６通りとなる。なお、第一データは、小数点以下第一位を四捨五入することによって整数の値が指定される。
【０００８】
データ取得手段とは、共通鍵データを構成するバイトの任意位置のバイト（例えば、最上位バイト）のバイト値データを取得し、さらに、任意バイトを構成するビットで、規定された任意の位置及び桁数（例えば、下３桁）のビット値データを取得するものである。１バイト＝８ビットとした場合、下３桁の値は、２の３乗、すなわち、０〜７の何れかの値を２進法で表したものとなる。なお、バイト値データ等は予測不能な値であり、これを変数として使用することにより、暗号処理の乱数として使用できる。さらに、分割手段とは、共通鍵データ及び暗号対象データを構成するそれぞれのバイト数長さを対比し、何れか一方の長いバイト数のデータを分割し、他方の短いバイト数の短データ（共通鍵データまたは暗号対象データ）のバイト数長さと合わせた分割データ、及び、その余からなる分割余データを生成するものである。
【０００９】
さらに、ビット値データに基づいてデータ単位またはバイト単位で転値処理が行われる（転値手段）。例えば、ビット値データがｎ＝２の場合、各バイト（ビット）をそれぞれ２つシフト（最上位側から最下位側等）する。これにより、データ等の並びが所定の値（ビット値データ）に基づいてずれる。ビット値データの値は、任意バイトの任意桁数（下３桁等）から求められる予測不可能な値である。その後、同一のバイト数長さに揃えた分割データ及び短データを規定の加算処理をすることにより、分割データ及び短データのバイト数の合計バイト数の加算データが生成される。ここで、加算処理の加算順序及び並び順は、加算規則に基づいて任意に規定されるため、加算データの各値から元の値を予測することは困難となる。例えば、８ビットの加算処理の場合、加算する値を“Ａ”，“Ｂ”とすると、Ａ＋Ｂ≦２５５の場合、加算された値がそのまま加算結果として求められ、Ａ＋Ｂ＞２５５の場合、Ａ＋Ｂ−２５５の値が加算結果として求められる。すなわち、多数の組合わせの可能性がある加算結果からは、“Ａ”及び“Ｂ”を予測することは困難であり、仮に加算結果のみが第三者に漏出したとしても、“Ａ”及び“Ｂ”の値を特定することは不可能となる。なお、上記は８ビットの場合を想定し、繰上がりの最大値を２５５としているが、１バイトをＸビットとした場合には、“２のＸ乗−１”で最大値が表される。
【００１０】
すなわち、繰上げ分を所謂「桁落ち」する処理により、加算結果自体が偶発的な意味を有する値となり、解読を困難なものとしている。このとき、加算処理及び加算規則において、分割データ及び短データのそれぞれの任意位置（例えば、分割データの最上位バイト及び短データの最下位バイト）を基準点として設定し、これらを共通鍵データから求めたバイト値データｍと排他的論理和（ＸＯＲ）を計算することにより、共通鍵データ自体を取得しない限り、解読が不可能となり、解読の困難性をさらに高めている。特に基準点の位置は、第三者にとって想定不能であるため、より解読が困難となっている。また、分割余データの各ビット値を“１”→“０”、“０”→“１”のように、反転処理し、加算データの先頭または末尾のバイト端に結合することにより、共通鍵データ及び暗号対象データを合算した合算バイト数と同じバイト数の暗号データが生成される。係る暗号処理は、上述したように、分割処理、任意の値（ビット値データ）に基づく転値処理、反転処理、加算処理、及び結合処理により構築されているため、仮に一部の対応関係が外部に漏出し、解読されても、暗号データ全体としての解読を進めることは困難である。特に、暗号データを復号する場合には、各処理を逆から順次行う必要があり、処理の順番及び復号処理が正しくなければ最終的に平文に到達することができない。そのため、本システムによる平文等の暗号対象データの暗号処理は十分に機密性の高いものとなる。
【００１１】
さらに、本発明の暗号システムにおける回数データ取得手段とは、暗号処理の繰返回数を回数データとして取得するものである。なお、繰返回数の数が多ければ、より解読が困難となるものの、暗号及び復号のそれぞれの処理に要する時間が多大となり、実用的な回数データを指定することが好ましい。一方、第二データ生成手段とは、生成された第一データをさらに基数で除算することによって第二データを求めるものである。ここで、第二データは、除算結果を小数点以下第一位で四捨五入した整数値として求められる。なお、除算結果が１未満の場合は、１に近似する処理を行っても構わない。係る第二データの値は、分割位置データの決定のために、ビット値データの加算を繰返す回数を指定するものとして使用される。この値も予測不可能であり、乱数値として暗号処理に導入される。
【００１２】
さらに、データ指定手段とは、共通鍵データ及び暗号対象データ（暗号データ）が同一バイト数であり、各バイト数の差異に基づく分割処理が行えない、または暗号データが偶数で構成され、等分割によって同一バイト数の一対の等分割データとして生成されるときには、バイト数の長さで長データ及び短データを特定することができない。そこで、何れか一方を長データ及び他方を短データに指定することにより、事後の暗号処理を可能にできる。なお、係る指定を行わず、次処理を実行するものであっても構わない。分割位置生成手段は、第一データとビット値データの積算値を求め、さらに得られた積算値に生成された第二データの値によって指定される回数分、任意バイト（通常は最上位バイト）の次位置に相当する次位置バイト（例えば、下位バイト）へ移行し、位置バイトのビット値データの加算を繰返して分割位置データを生成するものであり、暗号分割手段によって暗号データの最上位バイトまたは最下位バイト側から、該分割位置データに基づいて、長データ及び短データに分割して生成するものである。すなわち、分割位置生成手段は、上記処理により、既に最低一度は暗号処理がなされた暗号データを再び分割し、暗号処理を繰返すために行うものである。このとき、分割位置データは、任意のビット値データを利用して求められているため、暗号データの分割位置も予測することのできないものとなる。
【００１３】
さらに、本発明の暗号システムによれば、復号処理において、暗号処理に使用した共通鍵データ、復号対象の暗号データ、及び暗号処理の繰返回数を示す回数データとを用いて暗号処理の逆の処理を原則として実行することにより、平文からなる暗号対象データに戻すことができる。ここで、共通鍵データの復号者への受渡は特に注意が必要であり、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎｎ鍵交換方式のような復号者に限定して共通鍵データが渡るような処理をする必要がある。なお、暗号データは、共通鍵データがない限り、理論的には解読が困難であり、第三者の入手可能性が高い手段（電子メールの添付ファイル）等で送出するものであっても構わない。復号処理において、復号第一データ及び復号第二データは、上述した第一データ等と同一である。復号データ取得手段とは、復号のための基準となるバイト値データ及びビット値データを求めるものであり、繰返回数と共通鍵データのバイト数の長さを対比してバイト値データを取得したバイト（回数バイトまたは余バイト）の位置を特定し（復号データ取得手段）、これに基づいて復号位置データを求めることにより、暗号データを減算前データとその余の復号分割余データに特定し、復号の範囲を指定することができる。その後、暗号処理と基本的に逆の処理となる減算処理、逆転値処理、反転処理、及び結合処理を実行することにより、暗号データを復号データに生成することが可能となる。なお、得られた復号データが未だ暗号処理されている場合には、上記処理を指定された回数だけ繰返すことにより最終的に平文からなる復号データを得ることができる。
【００１４】
一方、本発明の暗号方法は、上記の暗号システムの複数の手段によって奏せられる各機能を時系列的に実施することにより、新規の暗号方法とすることができる。そして、係る暗号方法による暗号処理及び復号処理を実行することにより、上述の暗号システムによる作用効果を奏することができる。また、本発明の暗号プログラムは、プログラムを起動することにより、上記の暗号システムにおける暗号コンピュータによって、上述の暗号システムによる作用効果を奏することができる。
【発明の効果】
【００１５】
本発明の効果として、任意のバイト数から構成された共通鍵データを利用し、高度な機密性を有する暗号データを作成することができる。このとき、共通鍵データ及び暗号対象データの分割、第一データ等の取得、転値処理、暗号データの分割位置は、それぞれ任意若しくは予測不能な値で決定されるため、情報の安全性を極めて高いものとすることができる。特に、バイト値データ及びビット値データの取得は、予測不能な偶発的な乱数であり、係る値を暗号処理に利用することにより、分割位置の特定を困難とすることができる。また、加算処理の際の桁落処理により、一部が判明若しくは解読されたとしても、暗号データ全体の解読を行うことが極めて困難となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の一実施形態である暗号システム１（以下、「システム１」と称す）について、図１乃至図８に基づいて説明する。図１及び図２は本実施形態のシステム１の暗号処理及び復号処理に係る機能的構成を示すブロック図であり、図３，図４乃至図６，図７は暗号処理及び復号処理のアルゴリズムを模式的に示す説明図であり、図５，図８は暗号処理及び復号処理の流れを示すフローチャートである。システム１は、高度な処理能力を有するワークステーション等から構築される暗号コンピュータ２（以下、「暗号ＰＣ２」と称す）によって主に構成されている。暗号ＰＣ２は、内部に格納された暗号プログラム３によって、暗号ＰＣ２をシステム１として機能させることができる。暗号ＰＣ２は、図１及び図２に示すように、平文を暗号文等に変換する暗号処理に係る暗号処理機能４及び暗号文を平文に変換する復号処理に係る復号処理機能５に大別された二つの機能から構成されている。暗号処理機能４（図１参照）は、暗号処理の繰返回数を示す回数データＲＤを取得する回数データ取得手段１１を一部機能として有し、共通鍵データＫ及び平文または既暗号処理の暗号文からなる暗号対象データＦＤをそれぞれ取得する暗号対象データ取得手段１２と、第一データＦＡ、及び該第一データＦＡから第二データＳＡを生成する第二データ生成手段１３を含んでいる割合生成手段１４と、共通鍵データＫからバイト値データｍ及びビット値データｎを取得するデータ取得手段１５と、共通鍵データＫ及び暗号対象データＦＤのバイト数に基づいて分割データＤＶ及び分割余データＬＯを生成する分割手段１６と、分割データＤＶをデータ単位等で、ビット値データｎの値に基づいて転値処理する転値手段１７と、転値処理後の分割データＤＶ’及び短データＳＮ（図２参照）を予め規定した加算規則に則って加算処理し、分割データＤＶ’及び短データＳＮを合計したバイト数の加算データＡＤを生成する加算手段１８と、分割余バイトＬＯを反転処理し、生成された反転データＩＮを加算データＡＤの最上位バイト１９ａのバイト端に結合し、暗号データＥを生成する暗号生成手段２１とを具備している。分割手段１６の中には、共通鍵データＫ及び暗号対象データＦＤが同一バイト数で構成されている、または暗号処理後の暗号データＥを同一バイト数の一対の等分割データＥＱで分割する場合、何れか一方の共通鍵データＫ及び暗号対象データＦＤ若しくは等分割データＥＱを分割データＤＶとして指定し、他方を短データＳＮとして指定するデータ指定手段２２と、第一データＦＡとビット値データｎを積算し、得られた積算値に生成された第二データＳＡの値によって指定される回数分、任意バイト（共通鍵データＫの最上位バイト２３ａ）の次位置に相当する次位置バイト２３ｂから下位バイト２３ｃ，２３ｄへの移行及び下位バイトのビット値データｎの加算を繰返して分割位置データＤＰを生成する分割位置生成手段２５及び分割位置データＤＰに基づいて暗号データＥを最下位バイト２４側から分割し、長データＬＮ（図４参照）及び短データＳＮを生成する暗号分割手段２７を有し、取得した回数データＲＤによって暗号処理を繰返す暗号処理繰返手段２８をさらに有している。
【００１７】
一方、暗号ＰＣ２の復号処理機能５（図２参照）は、共通鍵データＫ、復号対象となる暗号データＥ、及び回数データＲＤを取得する復号対象データ取得手段３０と、暗号データＥのバイト数を基数で除算してなる復号第一データＤＦ及び復号第一データＤＦをさらに基数で除算してなる復号第二データＤＳを生成する復号割合生成手段３１と、回数データＲＤによる繰返回数を示す回数値と、共通鍵データＫのバイト数を対比し、共通鍵データＫのバイト数が回数値と同一若しくは大の場合、共通鍵データＫの最上位バイト２３ａ側から回数値を数えた位置に相当する回数バイト３２のバイト値データｍ及びビット値データｎをそれぞれ取得し、一方、共通鍵データＫのバイト数が回数値よりも小の場合、回数値を共通鍵データのバイト数で除算し、その余として算出された余値を最上位バイト２３ａ側から数えた位置に相当する余バイト３３のバイト値データｍ及びビット値データｎをそれぞれ取得する復号データ取得手段３４と、復号第一データＤＦに生成された復号第二データＤＳの値によって指定される回数分、次位置バイトの下位バイトへの移行及びビット値データｎの加算を繰返して算出される復号位置データＦＰを生成する復号位置生成手段３６と、復号位置データＦＰに基づいて、暗号データＥを同一バイト数を有する減算前データＭＤ及びその余からなる復号分割余データＤＬに分割する復号暗号分割手段３７と、復号位置データＦＰの倍数が暗号データＥのバイト数よりも大の場合、復号位置データの倍数から暗号データＥのバイト数を減算し、得られた減算値によって暗号データＥの最上位バイト３５及び最下位バイトの何れか一方から数えた位置で分割して復号分割余データＤＬを取得し、暗号データＥの下位側の復号分割データＤｂから分割された復号分割余データＤＬとして指定し、一方、復号位置データの倍数が暗号データＥのバイト数よりも小の場合、暗号データＥのバイト数から復号位置データの倍数を減算し、得られた減算値によって暗号データＥの最上位バイト３５及び最下位バイトの何れか一方から数えた位置で分割して復号分割余データＤＬを取得し、暗号データＥの上位側の復号分割データＤａから分割された復号分割余データＤＬとして指定し、復号位置データの倍数と暗号データＥのバイト数とが等しい場合、復号分割余データＤＬをゼロとして指定する範囲指定手段３９と、減算前データＭＤを予め規定した減算規則に則って減算処理し、分割データＤＶ’及び短データＳＮを生成する減算手段４０と、生成された分割データＤＶ’に対し、データ単位若しくはバイト単位の少なくとも何れか一方で、ビット値データｎに基づいて転値手段１７と逆方向へ転値処理する逆転値手段４１と、分割された復号分割余データＤＬをビット毎に反転処理し、生成された分割余データＬＯを転値処理された分割データＤＶの最上位バイト４２ａまたは最下位バイト４２ｂの何れか一方のバイト端に結合し、共通鍵データＫ若しくは暗号データＥの復号データＤＲを生成する復号生成手段４３とを具備する。
【００１８】
なお、上記各手段は、いずれも暗号ＰＣ２に格納されている。さらに、暗号処理機能４及び復号処理機能５の双方に共通する構成として、各種データの記憶及び一時保存を含む記憶処理に係る半導体メモリやＨＤＤ等からなる記憶手段４４を暗号ＰＣ２は具備している。記憶手段４４は、予め記憶された共通鍵データＫの他、暗号処理等の過程で生成される各種データを記憶することができる。なお、暗号処理等の過程で生成されたデータが漏出すると、第三者による解読を容易にする可能性が高くなる。そこで、データ等は揮発性の半導体メモリ（ＲＡＭ等）に一時的に記憶し、処理が完了した後は、データは速やかに消失するものが望ましい。そのため、復号された復号データＤＲの保存も一定条件下に制限し、画面上に表示するのみ等の対策を施してもよい。記憶手段４４は、暗号処理機能４及び復号処理機能５に共通する構成であり、図１及び図２は、それぞれ暗号処理及び復号処理に使用されるデータ等を抜粋し、その他のデータについては復号関連情報６及び暗号関連情報７としてまとめて図示している。また、各処理において一時的に生成される一部データ等については、図示を省略している。
【００１９】
加えて、暗号ＰＣ２は、該暗号ＰＣ２に対し、各種指令、操作、及びデータの入力等の処理を行うためのキーボード及びマウス等の操作端末からなる操作手段４５と、暗号処理及び復号処理の進捗状況を確認し、最終的に暗号された暗号データＥ若しくは復号された復号データＤＲを視覚によって確認することができるように画面表示する液晶ディスプレイ等の表示装置からなる表示手段４６とを含んで構成されている。なお、係る構成以外にも、通常のサーバーやパーソナルコンピュータにおいて使用される周知の周辺機器等の技術的構成を含んで構築されるものであっても構わない。
【００２０】
次に、システム１による暗号処理及び復号処理の具体例について、図３、図４、図６、及び図７の模式図、及び図５及び図８のフローチャートに基づいて説明する。システム１は、８バイトのバイト数長さの共通鍵データＫによって、５バイトのバイト数長さの暗号対象の平文からなる暗号対象データＦＤを暗号処理するものについて例示する。暗号処理の繰返回数（回数データＲＤの値）は、“５”として設定し、暗号処理及び復号処理を５回繰返すものについて例示する。係る繰返回数は、高度な処理能力を有する暗号ＰＣ２においては、実用的な範囲のものであり、暗号処理及び復号処理に多大な時間を要するものではない。なお、本実施形態において、暗号処理及び復号処理を一つの暗号ＰＣ２において実施するものを例示しているが、これに限定されるものではなく、暗号処理及び復号処理をそれぞれ単一の機能として奏することのできるコンピュータ（暗号用コンピュータ及び復号用コンピュータ）を用いるものであっても構わない。この場合、暗号プログラム３は、それぞれの暗号処理機能４及び復号処理機能５をそれぞれ分離した二つのプログラムとして構築される必要がある。その他条件は、基数として“８”（８進数、８通り）を使用し、１バイトは８ビットから構成され、１バイトの値は“２の８乗”により、０〜２５５の間の何れかの値を示すものとする。
【００２１】
始めに、操作手段４５によって直接入力されたデータＫ等を受付け、共通鍵データＫ、暗号対象データＦＤ、及び回数データＲＤの暗号処理に必要な三つのデータを取得する（暗号対象データ取得工程：ステップＳ１（図３（ａ）参照））。図３（ａ）の四角形のマスの一つが１バイトを表し、紙面左方側が上位側及び右方側が下位側のバイトを示している。暗号ＰＣ２は、三つのデータＫ等を取得した後、第一データＦＡ及び第二データＳＡをそれぞれ生成する（割合生成工程：ステップＳ２）。詳述すると、共通鍵データＫのバイト数（８バイト）と、暗号対象データＦＤのバイト数（５バイト）を合算した合算バイト数（１３バイト）を、１バイト当りの基数（８）で除算することにより、第一データＦＡを生成する（図３（ａ）参照）。ここでは、“１３÷８＝１．６２５”の計算式から、“第一データＦＡ＝１．６２５”となる。なお、本実施形態では、小数点以下第一位を四捨五入することにより、“≒２”として整数に近似する処理が行われる。一方、第二データＳＡは、第一データＦＡをさらに基数（８）で除算するものである（図３（ａ）参照）。この場合、“２÷８＝０．２５”となり、第二データＳＡの値が１以下になる。第二データＳＡの値が１以下の場合、第二データＳＡは最低でも１以上である必要があるため、第二データを“１”に繰上げる処理を行う。一方、１以上の第二データＳＡが生成された場合は、第一データＦＡと同様に小数点以下第一位を四捨五入する処理が行われる。
【００２２】
さらに別例を使用して説明すると、合算バイト数が１２０バイトの場合、第一データＦＡは、“１２０÷８＝１５”となり、一方、第二データＳＡは、“１５÷８＝１．８１４５≒２”として生成される。ここで、第二データＳＡは、後述のビット値データｎに基づく分割処理を実施する際の処理回数の値として利用される。すなわち、第二データＳＡが、“２”である場合には、分割範囲を２回調整することができる。つまり、ビット値データｎを最高で２回分足し込む処理を行うことが可能なことを示している。以上のことにより、合算バイト数の長さに対して求められる第一データＦＡ、第二データＳＡが異なり、それらを用いて算出される分割位置データＤＰが第二データＳＡに基づいて変化するため、共通鍵データＫが仮に同じであったとしても後述する暗号データＥを分割する位置は予測することが困難となる。そして、共通鍵データＫの左方端の最上位バイト（図３（ｂ）参照））の値をバイト値データｍとして取得し、さらに該最上位バイト２３の任意桁数のビット値（ここでは、下３ビットの値）を、８進数で表したビット値データｎとして取得する（データ取得工程：ステップＳ３）。なお、本実施形態では、“ｎ＝２”の値を取得したものとして処理を行う。
【００２３】
ここで、バイト値データｍ及びビット値データｎは、後述する暗号処理を繰返し行う場合には、バイト値データｍを取得した位置（ここでは、最上位バイト２３ａ）から下位の位置（右隣り）の次位置バイト２３ｂに移行し、係る次位置バイト２３ｂからバイト値データｍ及びビット値データｎをそれぞれ取得し、暗号処理の度に下位バイト２３ｃ，２３ｄ・・に移行して各値ｍ，ｎを取得する。なお、複数回の暗号処理により、共通鍵データＫの最下位バイトに到達した後は、再び最上位バイト２３ａに戻り、処理を繰返すこととなる。その後、暗号ＰＣ２は、暗号処理を実行する対象範囲を確定する処理を行う。なお、ステップＳ４は複数回に亘って暗号処理を行う場合の処理であり、処理回数が一回目の場合、分割位置データＤＰを生成することなく、短バイトデータＳＮ及び長バイトデータＬＮ（一回目の場合は、共通鍵データＫ及び暗号対象データＦＤに相当）の長さを対比するステップＳ５の処理に移行する。具体的に示すと、共通鍵データＫ及び暗号対象データＦＤの長さ（ここでは、８バイトと５バイト）を対比する（ステップＳ５）。そして、共通鍵データＫ及び暗号対象データＦＤのバイト数が異なっている場合（ステップＳ５においてＹＥＳ）、何れか一方の長いバイト数の長データＬＮ（ここでは、８バイトの共通鍵データＫに相当）を二つに分割し、何れか他方の短データ（ここでは、５バイトの暗号対象データＦＤに相当）のバイト数に合わせた分割データＤＶと、長データＬＮから分割データＤＶ分のバイト数を差し引いた分割余データＬＯとを生成する（分割工程：ステップＳ６（図３（ｃ）参照））。つまり、分割データＤＶは、短データＳＮとしての暗号対象データＦＤを同じバイト数（５バイト）で構成され、一方、その余としてなる分割余データＬＯは、“８−５＝３”によって、３バイトで構成されることとなる。ここで、共通鍵データＫ及び暗号対象データＦＤが、同一のバイト数で構成される場合（ステップＳ５においてＮＯ：例えば、共に８バイトの場合）、両者の間で差異が生じないため、共通鍵データＫ及び暗号対象データＦＤの何れか一方を長データＬＮ（分割データＤＶ）として強制的に指定し、何れか他方を短データＳＮとして強制的に指定する（データ指定工程：ステップＳ７）。係る処理は、後述の暗号データＥを同一バイト数の一対の等分割データＥＱに分割する場合も同様の処理を行う。係る場合、バイト数の長短に差異が見られないため、長データＬＮの分割処理がなされることはなく、分割余データＬＯのバイト数は、ゼロとなる。その後、ステップＳ８の処理に移行する。この場合、転値処理をキャンセルし、直接加算処理を行うものであっても構わない（図５破線参照）。
【００２４】
暗号ＰＣ２は、分割若しくは指定された分割データＤＶに対し、データ単位またはバイト単位によって、ビット値データｎ（＝２）に基づいて転値処理を行う（転値工程：ステップＳ８（図３（ｄ）参照）。ここで、転値処理（シフト処理）は、図３（ｄ）に示すように、１バイト内の値を右にｎ個（＝２個）シフトする処理（２ビット右シフト）を行う。このとき、転値処理の基準となるビット値データｎは、共通鍵データＫのバイト値データｍから任意桁数のビット値として抽出されたものであり、第三者によって予測することは不可能な偶発的な数（乱数）である。そのため、第三者は、共通鍵データＫを取得しない限り、転値処理前の元の分割データＤＶの値を知ることはできない。すなわち、ビット値データｎに基づく転値処理によって、第三者の解読をさらに困難なものとしている。なお、転値処理は、上述のバイト単位で行うものではなく、ビット単位等で実施するものであっても構わず、さらに、所定の規則に基づいてデータ単位及びバイト単位で変化させるものであっても構わない。そして、転値処理された分割データＤＶ’と短データＳＮを、所定の加算規則に従って加算処理し、分割データＤＶ’（若しくは短データＳＮ）の倍のバイト数を有する加算データＡＤを生成する（加算工程：ステップＳ９（図４（ａ）参照）。ここで、加算規則の一例を、図４（ａ）に基づいて示すと、例えば、５バイトからなる分割データＤＶ’の各バイトの位置及び値を前から（紙面左方側から）順にＡ，Ｂ，Ｃ，Ｄ，Ｅとして設定し、一方、短データＳＮは、前から順にＦ，Ｇ，Ｈ，Ｉ，Ｊとして設定する。そして、これにより、生成される加算データＡＤ（バイト数＝１０）は、前から順にａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉ，ｊとして表されるものとし、上記規定に従ってそれぞれ表記する。以下に、その加算規則の詳細の一例を示す。
【００２５】
＜加算規則＞
（１）分割データＤＶ’の“Ａ”を基準点とし、共通鍵データＫのバイト値データｍと排他的論理和（ＸＯＲ）を算出し、算出結果を加算データＡＤのａとして入力する。／（２）短データＳＮの“Ｊ”を基準点とし、共通鍵データＫのバイト値データｍと排他的論理和（ＸＯＲ）を算出し、算出結果を加算データＡＤのｂとして入力する。／（３）ＤとＦを加算し、加算結果をｃとして入力する。／（４）ＧとＥを加算し、加算結果をｄとして入力する。／（５）ＣとＧを加算し、加算結果をｅとして入力する。／（６）ＨとＤを加算し、加算結果をｆとして入力する。／（７）ＢとＨを加算し、加算結果をｇとして入力する。／（８）ＩとＣを加算し、加算結果をｈとして入力する。／（９）ＡとＩを加算し、加算結果をｉとして入力する。／（１０）ＪとＢを加算し、加算結果をｊとして入力する。
【００２６】
これにより、図４（ｂ）に示される基準値ａ及び基準値ｂが、最上位バイト１９ａ及びその次位置バイト１９ｂにそれぞれ入力された加算データＡＤが生成される。ここで、上記加算処理において、分割データＤＶ’側の値（例えば、Ａ）と、短データＳＮ側の値（例えば、Ｉ）との２つの値は、加算データＡＤのｉの値が判明したとしても容易に推定することはできない。すなわち、本実施形態の加算処理では、それぞれの和が２５５以上になった場合、和から２５５を引いた数を加算結果として入力する桁落ちの処理を行っているため、係る式を満たす両者の値は数多く存在し、その特定は非常に困難である。すなわち、Ａ＋Ｉ≦２５５の場合、入力される加算結果は、そのまま“Ａ＋Ｉ”の値である。一方、Ａ＋Ｉ＞２５５の場合、入力される加算結果は、“Ａ＋Ｉ−２５５”となる。これにより、仮に加算結果の“ｉ”の値が第三者によって知られたとしても、“Ａ”及び“Ｉ”の組合わせの可能性は膨大であり、両者を特定することは困難である。その後、得られた加算データＡＤの最上位バイト１９ａ（“ａ”の位置）の前に、分割余データＬＯの値を反転処理（“１”→“０”、“０”→“１”）した反転データＩＮを接続し、暗号データＥが完成する（暗号生成工程：ステップＳ１０（図４（ｃ）参照））。
【００２７】
これにより、十分に機密性の高い暗号データＥが完成する。しかし、より機密性を高めるために、回数データＲＤに示された繰返回数の回数値に従って、暗号処理を繰返すことが行われる。すなわち、暗号処理の繰返回数が回数データＲＤで示された回数値よりも小さい場合（ステップＳ１１においてＹＥＳ）、ステップＳ３の処理に戻り、バイト値データｍ及びビット値データｎを取得した後（ステップＳ３）、暗号データＥから分割位置データＤＰを生成し（分割位置生成工程：ステップＳ４）、短バイトデータＳＮ及び長バイトデータＬＮの対比（ステップＳ５）及び分割データＤＶ、分割余データＬＯ、及び短データＳＮにそれぞれ分割する（ステップＳ６）。具体的に説明すると、既に求めた第一データＦＡ及び第二データＳＡを利用し、暗号データＥを右（最下位バイト）から分割する処理を行う。始めに、ビット値データｎに第一データＦＡを積算した積算値を求め、生成された第二データＳＡの値によって指定される回数分、前記ビット値データｎの加算を繰返すことにより、分割位置データＤＰを生成する。例えば、第一データＦＡが“２”、現在のビット値データｎが“２”、加算処理の回数を示す第二データＳＡが“１”の場合、積算値は、“２×２＝４”となる。さらに、第二データＳＡにより１回の加算処理を行うことから、次位置バイト２３ｂにおけるビット値データｎを求め、“ｎ＝１”であることから、“４＋１＝５”が分割位置データＤＰとなる。そのため、暗号データＥを右から５バイト分の位置で分割することで暗号処理に係る長データＬＮ（＝８バイト）と短データＳＮが（＝５バイト）が生成される（図４（ｄ）参照）。これにより、上記の暗号処理に係るステップを所定回数繰返すことが可能となる。このとき、暗号データＥを分割する位置は、繰返回数毎に求めるビット値データｎ及び第一データＦＡ等によって異なるため、予測をすることが困難である。そのため、解読困難な暗号データＥを生成することができる。そして、回数データＲＤの回数と暗号処理の回数が同一の場合（ステップＳ１１においてＮＯ）、最終的な暗号データＥが完成し、暗号処理が完了する（ステップＳ１２）。上記暗号処理によって、共通鍵データＫに基づく偶発性、転値処理による乱数化、及び加算規則による基準値等の決定の非容易性、基準値を除いた暗号、及びこれらに対する重複暗号の処理を行うことにより、強力な暗号及び乱数化の処理が可能となり、第三者によって解読困難なシステム１を構築することが可能となる。
【００２８】
次に、本実施形態のシステム１における復号処理の流れについて説明する。ここで、暗号データＥを元の平文に復号する処理において、暗号処理と同一構成を有するもの、若しくは単純にその逆の処理を行うものについては、同一番号を付し、説明を簡略化するため詳細な説明を省略するものとする。まず、共通鍵データＫ、復号対象データとなる暗号データＥ、及び暗号処理の処理回数を示す回数データＲＤをそれぞれ取得する（復号対象データ取得工程：ステップＴ１（図６（ａ）参照））。そして、暗号データＥのバイト数を基数（＝８）で除算した復号第一データＤＦ及びさらに復号第一データＤＦを基数で除算した復号第二データＤＳを生成する（復号割合生成工程：ステップＴ２）。なお、係る生成処理は、第一データＦＡ及び第二データＳＡの生成処理と略同一であるため、ここでは説明を省略する。さらに、回数データＲＤによって指定される繰返回数の回数値（ここでは、“５”）と、取得した共通鍵データＫのバイト数を対比し、共通鍵データＫのバイト数が処理回数の値と同一若しくは大きい場合、処理回数の値によって指定される共通鍵データＫの最上位バイト２３ａから回数値を数えた位置に相当する回数バイト３２のバイト値データｍ及びビット値データｎをそれぞれ取得し、一方、共通鍵データＫのバイト数が回数値より小さい場合、回数値を共通鍵データＫのバイト数で除算し、その余として算出された値（余値）を最上位バイト２３ａから数えた位置に相当する余バイト３３のバイト値データｍ及びビット値データｎをそれぞれ取得する（復号データ取得工程：ステップＴ３）。ここで、本実施形態の場合、回数値が“５”であり、共通鍵データＫのバイト数は“８”であるため、前者の処理が行われ、最上位バイト２３ａから右に５つ数えた位置のバイト（回数バイト３２）のバイト値データｍ及びビット値データｎが取得される。
【００２９】
そして、取得したバイト値データｍ及びビット値データｎを利用して、復号位置データＦＰを生成し（復号位置生成工程：ステップＴ４）、１３バイトのバイト数（繰返し復号の場合、長データＬＮ及び短データＳＮを規定の順序で結合した新たな復号対象データ）で構成された暗号データＥにおける復号範囲を指定する（範囲指定工程：ステップＴ５）。なお、復号位置データＦＰの生成は、暗号処理において上述した分割位置データＤＰの生成と略同一であるため、ここでは説明を省略する。そして、復号位置データＦＰとして生成された値に基づいて、暗号データＥにおける復号処理の範囲を決定する。ここで、復号位置データＦＰによって、暗号データＥを減算前データＭＤと、その余からなる復号分割余データＤＬに分割する。すなわち、図６（ｂ）に示すように、ビット値データｎが“２”、復号第一データＤＦが“２”、及び、復号第二データＤＳが“１”の場合、生成される復号位置データＦＰは“５”となる。そして、復号位置データＦＰの倍数と暗号データＥの長さを後述する方法で比較することにより、暗号処理範囲及び復号分割余バイトＤＬが確定することから、暗号データＥを右から（最下位バイトから）５バイトずつ分割した一対の復号分割データＤａ，Ｄｂと、その余からなる３バイトの復号分割余バイトＤＬに分割されることになる。さらに、係る処理において、最下位バイトから分割された一対の復号分割データＤａ，Ｄｂが共通鍵データＫまたは暗号対象データＦＤの何れかであるかの判定処理を行う（ステップＴ５）。ここで、暗号データＥの長さが、生成された復号位置データＦＰの倍数よりも小さい場合、暗号データＥの最上位バイト３５から、“復号位置データＦＰの倍数−暗号データＥのバイト数”の差分のバイト数が復号分割余データＤＬして指定され、かつ暗号データＥの右方側の復号分割データＤｂから分割したものと判定され、一方、暗号データの長さが、生成された復号位置データＦＰの倍数よりも大きい場合、暗号データＥの最上位バイト３５から、“暗号データＥのバイト数−復号位置データＦＰの倍数”の差分のバイト数が復号分割余データＤＬとして指定され、かつ暗号データＥの左方側の復号分割データＤａから分割したものと判定される。つまり、前者の場合、右方側の復号分割データＤｂの方が大きいことが示され、一方、後者の場合、左方側の復号分割データＤａの方が大きいことが示されるため、復号分割余データＤＬの帰属する復号分割データＤａ，Ｄｂが決定される。その後、生成した減算前データＭＤから減算規則に基づいた減算処理が行われる（減算工程：ステップＴ６（図７（ａ）参照））。本実施形態の場合、暗号処理における加算データＡＤの生成の際に、加算規則（１）及び（２）において基準値ａ及び基準値ｂを加算データＡＤの最上位バイト１９ａ及び次位置バイト１９ｂに入力して設定している。すなわち、上述したように、単純な減算処理では、それぞれの値を導き出すことが困難であるものの、共通鍵データＫ及びバイト値データｍを得ることにより、係る基準値ａ及び基準値ｂの位置及び値を特定することができ、これに基づいてそれぞれの値を減算処理し、分割データＤＶ’及び短データＳＮを生成することができる。減算規則は、図７（ａ）に図示し、基本的に加算処理と逆操作であるため、説明を省略する。
【００３０】
その後、範囲指定工程（ステップＴ５）によって、指定された復号分割余データＤＬを、ビット毎に反転処理することによって元の分割余データＬＯに戻し、さらに減算処理によって得られた分割データＤＶ’を暗号処理と逆方向に転値処理し、分割データＤＶを得る（逆転値工程：ステップＴ７（図示省略））。そして、分割データＤＶ（範囲指定工程によって特定されたＤａまたはＤｂ）と分割余データＬＯとを結合し、復号データＤＲを生成する（復号生成工程：ステップＴ８（図７（ｂ）参照））。これにより、得られた長データＬＮ及び短データＳＮの何れか一方が共通鍵データＫであり、何れか他方が暗号対象データＦＤとなる。なお、回数データＲＤによって暗号処理が複数回実施されている場合には、上記の復号処理を回数データＲＤに基づいて繰返すことにより（図８破線矢印参照）、最終的に平文からなる復号データＤＲを得ることができ、復号処理が完了する。復号処理の繰返しについては、説明を簡略化するため、図示を省略している。このとき、復号データＤＲを得ると同時に、本実施形態のシステム１は、暗号処理に使用した共通鍵データＫも生成されることとなる。そのため、復号者に対して復号処理のために与えられた共通鍵データＫ（復号用鍵）と、復号処理の過程で生成された共通鍵データＫ（生成鍵）とを対比することにより、復号処理の完全性、信頼性を確認することができる。すなわち、第三者によって暗号データＥに改竄が施されている場合、正しい共通鍵データＫを用いても、元の暗号対象データＦＤに復元されることがなく、また復号処理後のそれぞれの共通鍵データＫが全く相違したものと認められる。すなわち、情報改竄の可能性を認識することができる。そのため、本実施形態のシステム１によれば、第三者に解読されることのない高度な機密性を有するとともに、共通鍵データＫの対比による情報改竄がないことによるデータの完全性、及びこれに基づく情報の信頼性を有することとなる。
【００３１】
以上、本発明について好適な実施形態を挙げて説明したが、本発明の要旨を逸脱しない範囲において、種々の改良及び設計の変更が可能である。すなわち、暗号処理に時間に係るパラメータを付加し、暗号データＥの保全に係る有効時間を設定するものであっても構わない。これにより、復号についての時間的な制限を付すことができる。また、暗号データＥは、共通鍵データＫ及び暗号対象データＦＤに基づいて強力に乱数化されたものであり、暗号データを共通鍵データＫの一種として利用することができる。そのため、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎｎ鍵交換方式を採用し、本システムによって暗号処理された共通鍵データＫを取得し、任意サイズで、かつ容易にバーナム暗号を処理する可能性を有する。この場合、鍵の長さに制約を受けることのない共通鍵を大量に作成可能となり、かつ鍵の交換及び乱数値を作成するための元データは、元来意味を有しない単なるデータであるため、共通鍵の授受は比較的自由に実施できる。そのため、従来に比して、鍵交換の手続きを簡略化することが可能となる。また、本発明の暗号処理システム１は、一般的なインターネットを通じた各端末間のデータの送受に係る使用に限定されるものではなく、例えば、携帯電話間のデータの送受や、従来はＳＳＬ等の暗号処理を行っていたシステムからの転換を容易に行うことが可能となり、幅広い分野においての応用を期待することができる。
【図面の簡単な説明】
【００３２】
【図１】暗号システムの暗号処理に係る機能的構成を示すブロック図である。
【図２】暗号システムの復号処理に係る機能的構成を示すブロック図である。
【図３】暗号処理のアルゴリズムを模式的に示す説明図である。
【図４】暗号処理のアルゴリズムを模式的に示す説明図である。
【図５】暗号ＰＣにおける暗号処理の流れを示すフローチャートである。
【図６】復号処理のアルゴリズムを模式的に示す説明図である。
【図７】復号処理のアルゴリズムを模式的に示す説明図である。
【図８】暗号ＰＣにおける復号処理の流れを示すフローチャートである。
【符号の説明】
【００３３】
１  システム（暗号システム）
２  暗号ＰＣ（暗号コンピュータ）
３  暗号プログラム
１１  回数データ取得手段
１２  暗号対象データ取得手段
１３  第二データ生成手段
１４  割合生成手段
１５  データ取得手段
１６  分割手段
１７  転値手段
１８  加算手段
２１  暗号生成手段
２２  データ指定手段
２５  分割位置生成手段
２７  暗号分割手段
２８  暗号処理繰返手段
３０  復号対象データ取得手段
３１  復号割合生成手段
３４  復号データ取得手段
３６  復号位置生成手段
３７  復号暗号分割手段
３９  範囲指定手段
４０  減算手段
４１  逆転値手段
４３  復号生成手段
【図１】
2010113168.tif 000003
【図２】
2010113168.tif 000004
【図３】
2010113168.tif 000005
【図４】
2010113168.tif 000006
【図５】
2010113168.tif 000007
【図６】
2010113168.tif 000008
【図７】
2010113168.tif 000009
【図８】
2010113168.tif 000010