"入力される平文コードから暗号コードを生成する暗号化装置、及び前記暗号化装置が生成する前記暗号コードを復号して前記平文コードを復元する復号装置を備えた暗号処理システムであって、前記暗号化装置は、N次元整数空間内の所定の部分空間HCを充填する空間充填曲線である鍵曲線Hkk=1,2,...を複数記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、入力される平文コードを前記N次元整数空間の部分空間HC内の点に単射して平文コード点Yを生成する平文コード点生成手段と、鍵番号Kを共通鍵とし、前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のエンコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて前記暗号コードの生成を行う暗号コード生成手段と、を備え、前記復号装置は、前記暗号化装置と共通の鍵曲線Hkk=1,2,...を複数個記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、前記鍵番号Kを共通鍵とし、前記暗号化装置により生成される、前記N次元整数空間の部分空間HC内の前記暗号コードを表す点を、前記鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のデコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて前記平文コードの復元を行う復号演算手段と、を備えたことを特徴とする暗号処理システム。前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfe、前記デコード関数をgeで表すと、前記復号装置は、前記N次元整数空間の部分空間HC内の点である第一基準点X1を生成し、前記鍵番号Kを共通鍵として、前記第一基準点X1に基づき、前記鍵曲線HK、及び前記エンコード関数feに可換な単射関数である前記デコード関数geを用いて、X2=LK-1[geLKX1]により第二基準点X2を算出し、前記第一基準点X1及び前記第二基準点X2を公開鍵として前記暗号化装置に公開する公開鍵生成手段を備え、前記暗号コード生成手段は、前記鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK、単射関数である前記エンコード関数fe、並びに前記復号装置により、公開鍵として公開される前記第一基準点X1及び前記第二基準点X2を用いて、V=YLK-1[feLKX2],X3=LK-1[feLKX1]により前記暗号コードとして暗号コード点V及び第三基準点X3を算出するものであり、前記復号演算手段は、前記暗号コード生成手段から送信される前記暗号コード点V及び前記第三基準点X3に基づき、前記鍵曲線HK及び前記デコード関数geを用いて、Y=V-LK-1[geLKX3]により前記平文コード点Yを算出するものであり、前記復号装置は、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする請求項1記載の暗号処理システム。前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成手段は、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線HK及び単射関数である前記エンコード関数feを用いてV=LK-1[feLKY]により前記暗号コードとして暗号コード点Vを算出するものであり、前記復号演算手段は、前記鍵番号Kを共通鍵とし、前記暗号コード点Vに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK及び前記エンコード関数feの逆関数fe-1である前記デコード関数を用いて、Y=LK-1[fe-1LKV]により平文コード点Yを算出するものであり、前記復号装置は、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする請求項1記載の暗号処理システム。前記暗号化装置及び前記復号装置の前記鍵曲線生成手段は、前記各鍵曲線Hkを発生する種となる、分割指数1のN次元空間充填曲線であるシード曲線Ckが複数格納されたシード曲線テーブルを記憶するシード曲線記憶手段と、始点及び終点の組合せが互いに異なる、分割指数1のN次元空間充填曲線からなるターミナル曲線を格納するターミナルテーブル、並びにN次元空間充填曲線の分割時に前記ターミナルテーブル内の各ターミナル曲線の各アドレスに対し連結するN次元空間充填曲線を特定するインデックス情報を格納するインダクションテーブルを記憶する曲線演算テーブル記憶手段と、前記鍵番号Kに対するシード曲線CKを前記シード曲線テーブルから読み出し、前記ターミナルテーブルから、該シード曲線CKと始点及び終点が一致するターミナル曲線aξを索出し、前記ターミナルテーブルの該ターミナル曲線aξを該シード曲線CKに置換するシード曲線設定手段と、前記シード曲線CKが設定された前記ターミナルテーブルに基づき、前記インダクションテーブル内の各インデックス情報を設定するインダクションテーブル生成手段と、N次元整数空間内の点Aのアドレスが入力されると、前記シード曲線CKを前記ターミナルテーブル及び前記インダクションテーブルによりM-1回Mは2以上の整数分割して生成される前記鍵曲線HKにより、前記点Aを1次元序数空間に写像した序数iAを算出する1次元写像手段と、前記鍵曲線HK上の序数iAが入力されると、前記シード曲線CKを前記ターミナルテーブル及び前記インダクションテーブルによりM-1回分割して生成される前記鍵曲線HKにより、前記序数iAをN次元整数空間に写像した点Aを算出するN次元写像手段と、を備えており、前記暗号コード生成手段は、前記1次元写像手段により前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、また、該序数を所定のエンコード関数により単射した後、前記N次元写像手段により前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射するものであり、前記復号演算手段は、前記1次元写像手段により前記暗号コードを表す点を、前記鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、また、該序数を所定のデコード関数により単射した後、前記N次元写像手段により前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射するものであることを特徴とする請求項1乃至3の何れか一に記載の暗号処理システム。入力される平文コードから暗号コードを生成する暗号化装置であって、N次元整数空間内の所定の部分空間HCを充填する空間充填曲線である鍵曲線Hkk=1,2,...を複数記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、入力される平文コードを前記N次元整数空間の部分空間HC内の点に写像して平文コード点Yを生成する平文コード点生成手段と、鍵番号Kを共通鍵とし、前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のエンコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて暗号化を行う暗号コード生成手段と、を備えたことを特徴とする暗号化装置。前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成手段は、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK、単射関数である前記エンコード関数fe、並びに公開鍵として公開されている前記N次元整数空間の部分空間HC内の点である第一基準点X1及び第二基準点X2を用いて、V=YLK-1[feLKX2],X3=LK-1[feLKX1]により前記暗号コードとして暗号コード点V及び第三基準点X3を算出するものであることを特徴とする請求項5記載の暗号化装置。前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成手段は、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線HK及び単射関数である前記エンコード関数feを用いてV=LK-1[feLKY]により前記暗号コードとして暗号コード点Vを算出することを特徴とする請求項5記載の暗号化装置。請求項5に記載の暗号化装置により生成される暗号コードを復号し平文コードを復元する復号装置であって、前記暗号化装置と共通の鍵曲線Hkk=1,2,...を複数個記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、前記暗号化装置において共通鍵として使用した鍵番号と共通の鍵番号Kを共通鍵とし、前記暗号化装置により生成される、前記N次元整数空間の部分空間HC内の暗号コードを表す点を、前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のデコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて前記平文コードの復元を行う復号演算手段と、を備えたことを特徴とする復号装置。請求項6に記載の暗号化装置により生成される暗号コードを復号し平文コードを復元する復号装置であって、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記暗号化装置で使用されるエンコード関数をfe、前記デコード関数をge、前記暗号化装置が前記暗号コードとして生成する暗号コード点をV,第三基準点をX3で表すと、前記N次元整数空間の部分空間HC内の点である第一基準点X1を生成し、前記鍵番号Kを共通鍵として、前記第一基準点X1に基づき、前記鍵曲線HK、及び前記エンコード関数feに可換な単射関数である前記デコード関数geを用いて、X2=LK-1[geLKX1]により第二基準点X2を算出し、前記第一基準点X1及び前記第二基準点X2を公開鍵として前記暗号化装置に公開する公開鍵生成手段を備え、前記復号演算手段は、前記暗号コード点V及び前記第三基準点X3に基づき、前記鍵曲線HK及び前記デコード関数geを用いて、Y=V-LK-1[geLKX3]により前記平文コード点Yを算出するものであり、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする請求項8記載の復号装置。請求項7に記載の暗号化装置により生成される暗号コードを復号し平文コードを復元する復号装置であって、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記暗号化装置で使用されるエンコード関数をfe、前記暗号化装置が前記暗号コードとして生成する暗号コード点をVで表すと、前記復号演算手段は、前記鍵番号Kを共通鍵とし、前記暗号コード点Vに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK及び前記エンコード関数feの逆関数fe-1である前記デコード関数を用いて、Y=LK-1[fe-1LKV]により平文コード点Yを算出するものであり、前記復号装置は、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする請求項8記載の復号装置。コンピュータに読み込ませて実行することにより、コンピュータを請求項5乃至7の何れか一に記載の暗号化装置として機能させることを特徴とするプログラム。コンピュータに読み込ませて実行することにより、コンピュータを請求項8乃至10の何れか一に記載の復号装置として機能させることを特徴とするプログラム。電気通信回線で接続された暗号化装置及び復号装置の間において、前記暗号化装置から平文コードを暗号化した暗号コードを送信し、前記復号装置において前記暗号コードを受信して復号し前記平文コードを復元する暗号処理方法であって、前記暗号化装置及び前記復号装置は、N次元整数空間内の所定の部分空間HCを充填する空間充填曲線である鍵曲線Hkk=1,2,...を複数記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段を共通に備えており、前記暗号化装置において、入力される平文コードを前記N次元整数空間の部分空間HC内の点に写像して平文コード点Yを生成する平文コード点生成ステップと、前記暗号化装置において、鍵番号Kを共通鍵とし、前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のエンコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて暗号化を行う暗号コード生成ステップと、前記復号装置において、前記鍵番号Kを共通鍵とし、前記暗号化装置により生成される、前記N次元整数空間の部分空間HC内の暗号コードを表す点を、前記鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のデコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて前記平文コードの復元を行う復号演算ステップと、を備えたことを特徴とする暗号処理方法。前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfe、前記デコード関数をgeで表すと、前記復号装置が、前記N次元整数空間の部分空間HC内の点である第一基準点X1を生成し、前記鍵番号Kを共通鍵として、前記第一基準点X1に基づき、前記鍵曲線HK、及び前記エンコード関数feに可換な単射関数である前記デコード関数geを用いて、X2=LK-1[geLKX1]により第二基準点X2を算出し、前記第一基準点X1及び前記第二基準点X2を公開鍵として前記暗号化装置に公開する公開鍵生成ステップを有し、前記暗号コード生成ステップにおいては、前記暗号化装置において、前記鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK、単射関数である前記エンコード関数fe、並びに前記復号装置により、公開鍵として公開される前記第一基準点X1及び前記第二基準点X2を用いて、V=YLK-1[feLKX2],X3=LK-1[feLKX1]により前記暗号コードとして暗号コード点V及び第三基準点X3を算出し前記復号装置へ送信する処理が実行され、前記復号演算ステップにおいては、前記復号装置において、前記暗号化装置から送信される前記暗号コード点V及び前記第三基準点X3に基づき、前記鍵曲線HK及び前記デコード関数geを用いて、Y=V-LK-1[geLKX3]により前記平文コード点Yを算出し、前記平文コード点Yから前記平文コードを復元する処理が実行されることを特徴とする請求項13記載の暗号処理方法。前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成ステップにおいては、前記暗号化装置において、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線HK及び単射関数である前記エンコード関数feを用いてV=LK-1[feLKY]により前記暗号コードとして暗号コード点Vを算出し前記復号装置へ送信する処理が実行され、前記復号演算ステップにおいては、前記復号装置において、前記鍵番号Kを共通鍵とし、前記暗号化装置から送信される前記暗号コード点Vに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK及び前記エンコード関数feの逆関数fe-1である前記デコード関数を用いて、Y=LK-1[fe-1LKV]により平文コード点Yを算出し、前記平文コード点Yから前記平文コードを復元する処理が実行されることを特徴とする請求項13記載の暗号処理方法。しかしながら、これらの暗号方式では、高い安全性を確保するためには、秘密鍵として使用する巨大桁数の素数を用意する必要があるが、桁数が増えるほどこの素数の発見に困難が伴う。従って、簡便に使用することが難しい。また、それに伴い、公開鍵の桁数も大きくなり、通信などに於けるデータ量が増える。そこで、本発明の目的は、鍵のビット長を従来の暗号化方式よりも短くすることができるとともに、巨大素数を用意せずとも高い安全性を比較的容易に実現することが可能な暗号化技術を提供することにある。本発明に係る暗号処理システムの第1の構成は、入力される平文コードから暗号コードを生成する暗号化装置、及び前記暗号化装置が生成する前記暗号コードを復号して前記平文コードを復元する復号装置を備えた暗号処理システムであって、前記暗号化装置は、N次元整数空間内の所定の部分空間HCを充填する空間充填曲線である鍵曲線Hkk=1,2,...を複数記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、入力される平文コードを前記N次元整数空間の部分空間HC内の点に単射して平文コード点Yを生成する平文コード点生成手段と、鍵番号Kを共通鍵とし、前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のエンコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算以下空間充填曲線暗号化演算という。を用いて前記暗号コードの生成を行う暗号コード生成手段と、を備え、前記復号装置は、前記暗号化装置と共通の鍵曲線Hkk=1,2,...を複数個記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、前記鍵番号Kを共通鍵とし、前記暗号化装置により生成される、前記N次元整数空間の部分空間HC内の前記暗号コードを表す点を、前記鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のデコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算以下空間充填曲線復号演算という。を用いて前記平文コードの復元を行う復号演算手段と、を備えたことを特徴とする。この構成によれば、暗号化において、N次元空間充填曲線の鍵曲線HKを用いて、平文コード点Yを鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のエンコード関数により単射変換した後、同じ鍵曲線HKによりN次元整数空間内の部分空間HC内の点へ逆単射することで、非線形変換がなされ、強度の高い暗号コードを生成することができる。高次元においては、N次元整数空間の部分空間HCを充填する空間充填曲線の種数は極めて多くなるため、鍵番号Kの情報がなければ、総当たりによる暗号攻撃によって解読することは実質的に困難である。また、共通鍵として鍵番号Kがあれば充分であるため、従来のように巨大な桁数の素数などを必要とせず、各種通信装置やプログラムに容易に実装することが可能である。ここで、N次元整数空間とは、N個の整数値の組で表されるN次元の整数ベクトルアドレスにより特定される離散格子点の集合からなるN次元離散空間をいう。1次元序数空間とは、N次元整数空間と1対1対応する1次元空間であって、序数により特定される離散点が1次元上に配列した空間である。空間充填曲線とは、N次元整数空間内の所定の部分空間HCが与えられたときに、その部分空間HC内のすべての整数格子点を1回ずつ通過するような曲線をいう。空間充填曲線は、連続であるか不連続であるかは問わない。なお、本発明では使用する空間充填曲線の種類については特に限定する必要はないが、高次元の整数空間において大きな部分空間を充填する空間充填曲線を容易に生成するためには、空間充填曲線としては、ヒルベルト曲線やペアノ型曲線のような自己相似性を有する空間充填曲線を使用することが好適である。自己相似性を有する空間充填曲線であれば、小領域の部分空間を充填する空間充填曲線種曲線に基づいて、再帰的に大領域の部分空間を充填する空間充填曲線へ拡張させることが可能であるからである。また、この自己相似性を利用すれば、N次元空間から1次元序数空間への写像、及び1次元序数空間からN次元空間への逆写像が簡単且つ高速に実行することが可能となるからである。また、エンコード関数、デコード関数としては、暗号コードから平文コードが復元可能な単射写像関数スカラー関数の組み合わせであれば、任意に選択して使用することができる。なお、本発明では、暗号化処理及び復号処理において、上記空間充填曲線暗号化演算及び空間充填曲線復号演算が用いられていればよく、これら空間充填曲線暗号化演算及び空間充填曲線復号演算を他の関数と組み合わせて暗号化処理及び復号処理を行うようにしてもよい。例えば、実施例1-3,5-7がその例である。鍵番号Kについては、予め暗号化装置と復号装置との間で共通に保有しておくようにしてもよいし、暗号化通信を開始する前に別途暗号化して交換するようにしてもよい。本発明に係る暗号処理システムの第2の構成は、前記第1の構成において、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfe、前記デコード関数をgeで表すと、前記復号装置は、前記N次元整数空間の部分空間HC内の点である第一基準点X1を生成し、前記鍵番号Kを共通鍵として、前記第一基準点X1に基づき、前記鍵曲線HK、及び前記エンコード関数feに可換な単射関数である前記デコード関数geを用いて、X2=LK-1[geLKX1]により第二基準点X2を算出し、前記第一基準点X1及び前記第二基準点X2を公開鍵として前記暗号化装置に公開する公開鍵生成手段を備え、前記暗号コード生成手段は、前記鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK、単射関数である前記エンコード関数fe、並びに前記復号装置により、公開鍵として公開される前記第一基準点X1及び前記第二基準点X2を用いて、V=YLK-1[feLKX2],X3=LK-1[feLKX1]により前記暗号コードとして暗号コード点V及び第三基準点X3を算出するものであり、前記復号演算手段は、前記暗号コード生成手段から送信される前記暗号コード点V及び前記第三基準点X3に基づき、前記鍵曲線HK及び前記デコード関数geを用いて、Y=V-LK-1[geLKX3]により前記平文コード点Yを算出するものであり、前記復号装置は、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする。この構成により、第一基準点X1及び第二基準点X2を公開鍵として、公開鍵方式により平文コードの暗号化処理が可能となる。また、第二基準点X2、第三基準点X3、暗号コード点Vの生成においてN次元整数空間の空間充填曲線である鍵曲線HKを使用するため、次元数Nを十分に大きな値とすることにより、暗号解読が事実上殆ど不可能となり、安全性を高めることができる。ここで、エンコード関数feとデコード関数geが可換とは、合成関数fegexと合成関数gefexが等しくなることをいう。エンコード関数fe及びデコード関数geとしては、例えば、fex=s1x,gex=s2xs1,s2は定数や、fex=xs1,gex=xs2s1,s2は定数や、fex=xs1,gex=xs2s1,s2は定数などがある。また、公開鍵を公開するとは、復号装置から暗号化装置に公開鍵を直接送信すること以外に、例えば、復号装置と暗号化装置がインターネットで接続されている場合には、インターネット上のいずれかのサイトに公開鍵をアップロードして暗号化装置から公開鍵をダウンロード可能な状態とすることも含まれる。また、上記本発明の前記第2の構成において、前記公開鍵生成手段は、前記第一基準点X1及び所定の整数s1並びに前記鍵曲線HKの長さ以下の所定の素数pに基づき、X2=LK-1[s1LKX1modp]により前記第二基準点X2を算出し、これらの2点X1,X2を公開鍵として前記暗号化装置に公開するものとし、前記暗号コード生成手段は、前記第一基準点X1及び所定の整数s2並びに前記素数pに基づき、X3=LK-1[s1LKX1modp]により前記第三基準点X3を算出し、前記平文コード点Y、前記第二基準点X2及び前記整数s2並びに前記素数pに基づき、V=LK-1[s2LKX2modp]Yにより前記暗号コード点Vを算出するものとし、前記復号演算手段は、前記暗号コード点V及び前記整数s1並びに前記素数pに基づき、Y=X3-LK-1[s1LKVmodp]modpにより平文コード点Yを算出するものとすることができる。この構成により、エンコード関数fe及びデコード関数geを、基準点X1,X2及び基準点X3により指定することができる。ここで、所定の素数pとは、任意に決められる素数をいい、鍵曲線HKの長さ以下のできるだけ大きな数に設定される。本発明に係る暗号処理システムの第3の構成は、前記第1の構成において、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成手段は、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線HK及び単射関数である前記エンコード関数feを用いてV=LK-1[feLKY]により前記暗号コードとして暗号コード点Vを算出するものであり、前記復号演算手段は、前記鍵番号Kを共通鍵とし、前記暗号コード点Vに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK及び前記エンコード関数feの逆関数fe-1である前記デコード関数を用いて、Y=LK-1[fe-1LKV]により平文コード点Yを算出するものであり、前記復号装置は、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする。この構成によれば、暗号化装置においては、平文コード点生成手段が平文コード点Yを生成し、暗号コード生成手段が、鍵曲線HKに基づき、V=LK-1[feLKY]により暗号コード点Vを算出する。この暗号コード点Vが暗号コードとして出力される。一方、復号装置においては、鍵曲線HKと暗号コード点Vに基づき、Y=LK-1[fe-1LKV]により平文コード点Yを算出することで、平文コードを復元する。このように、N次元整数空間の空間充填曲線である鍵曲線HK用いることにより、平文コードの秘匿が図られる。N次元整数空間の空間充填曲線は、次元数Nの増加に伴って、その数は飛躍的に増加する。従って、次元数Nを十分に大きな値とすることにより、暗号解読が事実上殆ど不可能となり、安全性を高めることができる。本発明に係る暗号処理システムの第4の構成は、前記1乃至3の何れか一の構成において、前記暗号化装置及び前記復号装置の前記鍵曲線生成手段は、前記各鍵曲線Hkを発生する種となる、分割指数1のN次元空間充填曲線であるシード曲線Ckが複数格納されたシード曲線テーブルを記憶するシード曲線記憶手段と、始点及び終点の組合せが互いに異なる、分割指数1のN次元空間充填曲線からなるターミナル曲線を格納するターミナルテーブル、並びにN次元空間充填曲線の分割時に前記ターミナルテーブル内の各ターミナル曲線の各アドレスに対し連結するN次元空間充填曲線を特定するインデックス情報を格納するインダクションテーブルを記憶する曲線演算テーブル記憶手段と、前記鍵番号Kに対するシード曲線CKを前記シード曲線テーブルから読み出し、前記ターミナルテーブルから、該シード曲線CKと始点及び終点が一致するターミナル曲線aξを索出し、前記ターミナルテーブルの該ターミナル曲線aξを該シード曲線CKに置換するシード曲線設定手段と、前記シード曲線CKが設定された前記ターミナルテーブルに基づき、前記インダクションテーブル内の各インデックス情報を設定するインダクションテーブル生成手段と、N次元整数空間内の点Aのアドレスが入力されると、前記シード曲線CKを前記ターミナルテーブル及び前記インダクションテーブルによりM-1回Mは2以上の整数分割して生成される前記鍵曲線HKにより、前記点Aを1次元序数空間に写像した序数iAを算出する1次元写像手段と、前記鍵曲線HK上の序数iAが入力されると、前記シード曲線CKを前記ターミナルテーブル及び前記インダクションテーブルによりM-1回分割して生成される前記鍵曲線HKにより、前記序数iAをN次元整数空間に写像した点Aを算出するN次元写像手段と、を備えており、前記暗号コード生成手段は、前記1次元写像手段により前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、また、該序数を所定のエンコード関数により単射した後、前記N次元写像手段により前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射するものであり、前記復号演算手段は、前記1次元写像手段により前記暗号コードを表す点を、前記鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、また、該序数を所定のデコード関数により単射した後、前記N次元写像手段により前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射するものであることを特徴とする。この構成によれば、暗号通信を実行する場合、まず、暗号化装置及び復号装置は、共通に入力されるパラメータM,N,Kによりターミナルテーブルとインダクションテーブルを構成する。ここで、N,M,Kは予め暗号化装置及び復号装置に与えられたものであってもよいし、暗号化装置及び復号装置の間で通信により交換したものであってもよい。この際、まず、ターミナルテーブル初期化手段が、曲線演算テーブル記憶手段に格納されたターミナルテーブルにターミナル曲線の初期値を設定し、次いで、シード曲線設定手段が、ターミナルテーブルのターミナル曲線aξを該シード曲線CKに置換し、次いで、インダクションテーブル生成手段が、シード曲線CKが設定されたターミナルテーブルに基づき、曲線演算テーブル記憶手段に格納されたインダクションテーブル内の各インデックス情報を設定する。これにより、暗号化装置及び復号装置の双方に、共通のターミナルテーブル及びインダクションテーブルが生成される。このターミナルテーブル及びインダクションテーブルを用いることにより、分割指数1のシード曲線CKから分割指数Mの鍵曲線HKを算出することが可能となる。従って、ターミナルテーブル及びインダクションテーブルにより算出される鍵曲線HKを用いて暗号化演算や復号演算や各基準点の演算を行えば、N次元整数空間をより広く利用することができる。ここで、平文コードとは、通信する平文データをデジタル符号化したコードをいう。平文とは、暗号化されていない文コードをいう。分割指数とは、1つのN次元超立方体の各辺をqm個qは基数の区間に分割することによりqmN個の副超立方体に分割するときの、各辺の分割数qmの指数mをいう。例として、図7cに分割指数1,1,2の2次元ヒルベルト曲線を示す。なお、基数qは2以上の整数であり、空間充填曲線の種類によって決まる数である。例えば、N次元ヒルベルト曲線の場合にはq=2,N次元3進ペアノ型曲線の場合にはq=3,N次元5進ペアノ型曲線の場合にはq=5となる。シード曲線とは、分割指数1のN次元空間充填曲線であって、ターミナルテーブル及びインダクションテーブルにより分割指数MのN次元空間充填曲線を発生させる際の種シードとなるものをいう。インデックス情報とは、ターミナルテーブル内の各ターミナル曲線の各アドレスに対し連結するターミナル曲線を特定するためのインデックスの情報をいう。例えば、ターミナルテーブル内の各ターミナル曲線ak1N=ak1N1,...,ak1N2N但し、ak1Nii=1,...,2NはNビットのアドレスのアドレスak1Niに連結するターミナル曲線をak1Nとすると、当該ターミナル曲線ak1Nを特定するためのインデックス情報はk’である。鍵曲線HK上の序数とは、鍵曲線HK上のアドレスの順番を表す数である。例えば、鍵曲線HKのアドレスシーケンスをHK=hK1,hK2,...,hK2MNとし、点AがアドレスhKiA,点BがアドレスhKiBに対応するとすれば、点A,Bの鍵曲線HK上の序数は、それぞれiA,iBである。また、本発明において、前記ターミナルテーブルを初期化するターミナルテーブル初期化手段として、1次元のターミナル曲線a111を0,1に設定し、n次元n=2,...,Nのターミナル曲線a11nを、n-1次元のターミナル曲線a11に基づき、により順次生成することにより1番目のターミナル曲線a11Nを生成する初期ターミナル曲線生成手段と、1番目のターミナル曲線a11Nに基づき、Ni-1j番目i=1,...,2N-1;j=1,...,Nのターミナル曲線aj1Nの始点アドレスaj1N1を、1番目のターミナル曲線a11,Nの2i-1番目のアドレスa11N2i-1に設定する始点アドレス設定手段と、1番目のターミナル曲線a11Nに基づき、Ni-1j番目i=1,...,2N-1;j=1,...,Nのターミナル曲線aj1Nの終点アドレスaj1N2Nを、1番目のターミナル曲線a11Nの2i-1番目のアドレスa11N2i-1のj番目のビットを反転させたアドレスibita11N2i-1,jに設定する終点アドレス設定手段と、1番目のターミナル曲線a11Nに基づき、k番目k=1,...,Nのターミナル曲線ak1Nのi’番目i’=2,...,2N-1の中間点アドレスak1Ni’を、により設定する第1の中間点アドレス生成手段と、1番目からN番目の前記ターミナル曲線a11N,...,aN1Nに基づき、Nij番目i=1,...,2N1-1;j=1,...,Nのターミナル曲線aNij1Nのi’番目i’=2,...,2N-1の中間点アドレスak1Ni’を、により設定する第2の中間点アドレス生成手段と、を備えた構成とすることができる。この構成によれば、ターミナルテーブル初期化手段がターミナルテーブルを初期化する際に、まず、初期ターミナル曲線生成手段が、1次元のターミナル曲線a111を0,1に設定し、n次元n=2,...,Nのターミナル曲線a11nを、数1により順次生成することにより1番目のターミナル曲線a11Nを生成する。次いで、始点アドレス設定手段が、ターミナル曲線a11Nに基づき、Ni-1j番目i=1,...,2N-1;j=1,...,Nのターミナル曲線aj1Nの始点アドレスaj1N1をアドレスa11N2i-1に設定する。次いで、終点アドレス設定手段が、ターミナル曲線a11Nに基づき、Ni-1j番目i=1,...,2N-1;j=1,...,Nのターミナル曲線aj1Nの終点アドレスaj1N2Nを、アドレスibita11N2i-1,jに設定する。次いで、第1の中間点アドレス生成手段が、ターミナル曲線a11Nに基づき、k番目k=1,...,Nのターミナル曲線ak1Nのi’番目i’=2,...,2N-1の中間点アドレスak1Ni’を、数2により設定する。最後に、第2の中間点アドレス生成手段が、ターミナル曲線a11N,...,aN1Nに基づき、Nij番目i=1,...,2N1-1;j=1,...,Nのターミナル曲線aNij1Nのi’番目i’=2,...,2N-1の中間点アドレスak1Ni’を、数3により設定する。これにより、ターミナルテーブルに初期値を設定することができる。また、本発明において、前記インダクションテーブル生成手段は、前記ターミナルテーブルを参照して、N次元空間充填曲線の分割時に、k番目k=1,...,N2Nのターミナル曲線ak1Nの始点アドレスak1N1に連結するN次元空間充填曲線のインデックス情報wk1N1を設定する始点連結情報設定手段と、前記インデックス情報wk1N1が設定された後、前記ターミナルテーブルを参照して、前記ターミナル曲線ak1Nの中間点アドレスak1Ni’i’=2,...,2N-1に連結するN次元空間充填曲線のインデックス情報wk1Ni’を設定する中間点連結情報設定手段と、前記各インデックス情報wk1Ni’i’=2,...,2N-1が設定された後、前記ターミナルテーブルを参照して、前記ターミナル曲線ak1Nの終点アドレスak1N2Nに連結するN次元空間充填曲線のインデックス情報wk1N2Nを設定する終点連結情報設定手段と、を備え、前記始点連結情報設定手段は、始点アドレスak1N1に対し、連結曲線の始点アドレスsをターミナル曲線ak1Nの始点アドレスak1N1に設定し、連結曲線の終点アドレスeをに設定し、前記ターミナルテーブルから、始点アドレスが該始点アドレスsと一致し且つ終点アドレスが該終点アドレスeと一致するターミナル曲線ak1Nを索出し、該ターミナル曲線ak1Nのインデックス情報kを、前記インデックス情報wk1N1に設定するものであり、前記中間点連結情報設定手段は、中間点アドレスak1N2i-2,ak1N2i-1i=2,...,2N-1に対し、連結曲線の始点アドレスsをに変更し、連結曲線の終点アドレスeをに変更し、前記ターミナルテーブルから、始点アドレスが該始点アドレスsと一致し且つ終点アドレスが該終点アドレスeと一致するターミナル曲線ak1Nを索出し、該ターミナル曲線ak1Nのインデックス情報kを、前記インデックス情報wk1N2i-2,wk1N2i-1に設定する処理を、iの昇順に順次実行するものであり、前記終点連結情報設定手段は、終点アドレスak1N2Nに対し、連結曲線の始点アドレスsをに設定し、連結曲線の終点アドレスeをターミナル曲線ak1Nの終点アドレスak1N2Nに設定し、前記ターミナルテーブルから、始点アドレスが該始点アドレスsと一致し且つ終点アドレスが該終点アドレスeと一致するターミナル曲線ak1Nを索出し、該ターミナル曲線ak1Nのインデックス情報kを、前記インデックス情報wk1N2Nに設定するように構成することができる。この構成によれば、インダクションテーブル生成手段がインダクションテーブルの作成を行う場合、まず、始点連結情報設定手段が、始点アドレスsをアドレスak1N1に設定し、連結曲線の終点アドレスeを数4により設定し、ターミナルテーブルから、始点アドレスak1N1が該始点アドレスsと一致し且つ終点アドレスak1N2Nが該終点アドレスeと一致するターミナル曲線ak1Nを索出し、該ターミナル曲線ak1Nのインデックス情報kを、前記インデックス情報wk1N1に設定する。次に、中間点連結情報設定手段が、中間点アドレスak1N2i-2,ak1N2i-1i=2,...,2N-1に対し、連結曲線の始点アドレスsを数5により変更し、連結曲線の終点アドレスeを数6により変更し、ターミナルテーブルから、始点アドレスak1N1が該始点アドレスsと一致し且つ終点アドレスak1N2Nが該終点アドレスeと一致するターミナル曲線ak1Nを索出し、該ターミナル曲線ak1Nのインデックス情報kを、インデックス情報wk1N2i-2,wk1N2i-1に設定する処理を、iの昇順に順次実行する。次に、終点連結情報設定手段が、終点アドレスak1N2Nに対し、連結曲線の始点アドレスsを数7により設定し、連結曲線の終点アドレスeをアドレスak1N2Nに設定し、ターミナルテーブルから、始点アドレスak1N1が該始点アドレスsと一致し且つ終点アドレスak1N2Nが該終点アドレスeと一致するターミナル曲線ak1Nを索出し、該ターミナル曲線ak1Nのインデックス情報kを、インデックス情報wk1N2Nに設定する。これにより、N次元空間充填曲線の分割時に前記ターミナルテーブル内の各ターミナル曲線の各アドレスに対し連結するターミナル曲線を特定するインデックス情報を作成することができる。本発明に係る暗号化装置の第1の構成は、入力される平文コードから暗号コードを生成する暗号化装置であって、N次元整数空間内の所定の部分空間HCを充填する空間充填曲線である鍵曲線Hkk=1,2,...を複数記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、入力される平文コードを前記N次元整数空間の部分空間HC内の点に写像して平文コード点Yを生成する平文コード点生成手段と、鍵番号Kを共通鍵とし、前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のエンコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて暗号化を行う暗号コード生成手段と、を備えたことを特徴とする。この構成により、本発明に係る上記暗号化通信システムの第1の構成において用いることのできる暗号化装置が実現される。本発明に係る暗号化装置の第2の構成は、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成手段は、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK、単射関数である前記エンコード関数fe、並びに公開鍵として公開されている前記N次元整数空間の部分空間HC内の点である第一基準点X1及び第二基準点X2を用いて、V=YLK-1[feLKX2],X3=LK-1[feLKX1]により前記暗号コードとして暗号コード点V及び第三基準点X3を算出するものであることを特徴とする。この構成により、本発明に係る上記暗号化通信システムの第2の構成において用いることのできる暗号化装置が実現される。本発明に係る暗号化装置の第3の構成は、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成手段は、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線HK及び単射関数である前記エンコード関数feを用いてV=LK-1[feLKY]により前記暗号コードとして暗号コード点Vを算出することを特徴とする。この構成により、本発明に係る上記暗号化通信システムの第3の構成において用いることのできる暗号化装置が実現される。本発明に係る復号装置の第1の構成は、前記第1の構成の暗号化装置により生成される暗号コードを復号し平文コードを復元する復号装置であって、前記暗号化装置と共通の鍵曲線Hkk=1,2,...を複数個記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段と、前記暗号化装置において共通鍵として使用した鍵番号と共通の鍵番号Kを共通鍵とし、前記暗号化装置により生成される、前記N次元整数空間の部分空間HC内の暗号コードを表す点を、前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のデコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて前記平文コードの復元を行う復号演算手段と、を備えたことを特徴とする。この構成により、本発明に係る上記暗号化通信システムの第1の構成において用いることのできる復号装置が実現される。本発明に係る復号装置の第2の構成は、前記第2の構成の暗号化装置により生成される暗号コードを復号し平文コードを復元する前記第1の構成の復号装置であって、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記暗号化装置で使用されるエンコード関数をfe、前記デコード関数をge、前記暗号化装置が前記暗号コードとして生成する暗号コード点をV,第三基準点をX3で表すと、前記N次元整数空間の部分空間HC内の点である第一基準点X1を生成し、前記鍵番号Kを共通鍵として、前記第一基準点X1に基づき、前記鍵曲線HK、及び前記エンコード関数feに可換な単射関数である前記デコード関数geを用いて、X2=LK-1[geLKX1]により第二基準点X2を算出し、前記第一基準点X1及び前記第二基準点X2を公開鍵として前記暗号化装置に公開する公開鍵生成手段を備え、前記復号演算手段は、前記暗号コード点V及び前記第三基準点X3に基づき、前記鍵曲線HK及び前記デコード関数geを用いて、Y=V-LK-1[geLKX3]により前記平文コード点Yを算出するものであり、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする。この構成により、本発明に係る上記暗号化通信システムの第2の構成において用いることのできる復号装置が実現される。本発明に係る復号装置の第3の構成は、前記第3の構成の暗号化装置により生成される暗号コードを復号し平文コードを復元する前記第1の構成の復号装置であって、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記暗号化装置で使用されるエンコード関数をfe、前記暗号化装置が前記暗号コードとして生成する暗号コード点をVで表すと、前記復号演算手段は、前記鍵番号Kを共通鍵とし、前記暗号コード点Vに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK及び前記エンコード関数feの逆関数fe-1である前記デコード関数を用いて、Y=LK-1[fe-1LKV]により平文コード点Yを算出するものであり、前記復号装置は、前記平文コード点Yから前記平文コードを復元する平文コード復元手段を備えたことを特徴とする。この構成により、本発明に係る上記暗号化通信システムの第2の構成において用いることのできる復号装置が実現される。本発明に係るプログラムの第1の構成は、コンピュータに読み込ませて実行することにより、コンピュータを前記第1乃至3の何れか一の構成の暗号化装置として機能させることを特徴とする。また、本発明に係るプログラムの第2の構成は、コンピュータに読み込ませて実行することにより、コンピュータを前記第1乃至3の何れか一の構成の復号装置として機能させることを特徴とする。本発明に係る暗号処理方法の第1の構成は、電気通信回線で接続された暗号化装置及び復号装置の間において、前記暗号化装置から平文コードを暗号化した暗号コードを送信し、前記復号装置において前記暗号コードを受信して復号し前記平文コードを復元する暗号処理方法であって、前記暗号化装置及び前記復号装置は、N次元整数空間内の所定の部分空間HCを充填する空間充填曲線である鍵曲線Hkk=1,2,...を複数記憶する鍵曲線記憶手段又は前記鍵曲線Hkを生成する鍵曲線生成手段を共通に備えており、前記暗号化装置において、入力される平文コードを前記N次元整数空間の部分空間HC内の点に写像して平文コード点Yを生成する平文コード点生成ステップと、前記暗号化装置において、鍵番号Kを共通鍵とし、前記平文コード点Yを鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のエンコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて暗号化を行う暗号コード生成ステップと、前記復号装置において、前記鍵番号Kを共通鍵とし、前記暗号化装置により生成される、前記N次元整数空間の部分空間HC内の暗号コードを表す点を、前記鍵番号Kの前記鍵曲線HKにより一次元序数空間内の序数へ単射し、該序数を所定のデコード関数により単射変換した後、前記鍵曲線HKにより前記N次元整数空間内の部分空間HC内の点へ逆単射する演算を用いて前記平文コードの復元を行う復号演算ステップと、を備えたことを特徴とする。本発明に係る暗号処理方法の第2の構成は、前記第1の構成において、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfe、前記デコード関数をgeで表すと、前記復号装置が、前記N次元整数空間の部分空間HC内の点である第一基準点X1を生成し、前記鍵番号Kを共通鍵として、前記第一基準点X1に基づき、前記鍵曲線HK、及び前記エンコード関数feに可換な単射関数である前記デコード関数geを用いて、X2=LK-1[geLKX1]により第二基準点X2を算出し、前記第一基準点X1及び前記第二基準点X2を公開鍵として前記暗号化装置に公開する公開鍵生成ステップを有し、前記暗号コード生成ステップにおいては、前記暗号化装置において、前記鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK、単射関数である前記エンコード関数fe、並びに前記復号装置により、公開鍵として公開される前記第一基準点X1及び前記第二基準点X2を用いて、V=YLK-1[feLKX2],X3=LK-1[feLKX1]により前記暗号コードとして暗号コード点V及び第三基準点X3を算出し前記復号装置へ送信する処理が実行され、前記復号演算ステップにおいては、前記復号装置において、前記暗号化装置から送信される前記暗号コード点V及び前記第三基準点X3に基づき、前記鍵曲線HK及び前記デコード関数geを用いて、Y=V-LK-1[geLKX3]により前記平文コード点Yを算出し、前記平文コード点Yから前記平文コードを復元する処理が実行されることを特徴とする。本発明に係る暗号処理方法の第3の構成は、前記第1の構成において、前記N次元整数空間の部分空間HC内の点Aを、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iAに単射する関数をLKA、その逆関数をLK-1iAで表し、前記エンコード関数をfeで表すと、前記暗号コード生成ステップにおいては、前記暗号化装置において、鍵番号Kを共通鍵とし、前記平文コード点Yに基づき、前記鍵曲線HK及び単射関数である前記エンコード関数feを用いてV=LK-1[feLKY]により前記暗号コードとして暗号コード点Vを算出し前記復号装置へ送信する処理が実行され、前記復号演算ステップにおいては、前記復号装置において、前記鍵番号Kを共通鍵とし、前記暗号化装置から送信される前記暗号コード点Vに基づき、前記鍵曲線記憶手段に記憶された又は前記鍵曲線生成手段により生成される前記鍵曲線HK及び前記エンコード関数feの逆関数fe-1である前記デコード関数を用いて、Y=LK-1[fe-1LKV]により平文コード点Yを算出し、前記平文コード点Yから前記平文コードを復元する処理が実行されることを特徴とする。以上のように、本発明によれば、鍵番号Kを共通鍵として使用して、鍵番号Kの鍵曲線Hkを秘密鍵に使用し、この鍵曲線HKによりN次元整数空間内の点を1次元序数空間内の序数に単射し、1次元序数空間内でエンコードやデコード演算を行い、その結果を鍵曲線HKにより再びN次元整数空間内の点に単射する演算を用いて暗号化や復号を行うことによって、従来よりも短い鍵鍵番号Kとすることができる。また、鍵曲線Hkの次元数Nを6以上とすれば、選択可能な鍵曲線Hkの種類の数は極めて大きな値となるため、鍵曲線Hkの情報なくしては復号が困難となり、高い頑健性を実現することができる。また、RSA暗号方式にように、巨大な素数を必要としないため、比較的容易に本発明の暗号化方式を実施することが可能となる。用語の定義最初に、以下で使用する用語の概念を明確にするために、いくつかの用語について定義しておく。定義1空間充填曲線N次元空間内の一辺の長さがnの単位超立方体を考える。この超立方体の各辺をn-1区間に分割し、n×n個の整数格子点からなる超立方体格子としたとき、当該超立方体格子内のすべての整数格子点を1点につき1回通過するような曲線を空間充填曲線という。定義終り定義2連続空間充填曲線N次元空間における空間充填曲線Cについて、当該空間充填曲線Cが充填する超立方体格子の格子点間のユークリッド距離は1である。曲線C上のi番目の整数格子点Piとi1番目の整数格子点Pi1との間のユークリッド距離を隣接点間距離とする。曲線上のすべての整数格子点間の隣接点間距離がすべて1である空間充填曲線を連続空間充填曲線いい、連続空間充填曲線でない空間充填曲線を不連続空間充填曲線という。定義終り次に、本発明を実施するための形態について、図面を参照しながら説明する。1暗号処理システムの構成1システムの全体構成図1は、本発明の実施例1に係る暗号処理システムの全体構成を示す図である。暗号処理システム1は、複数の暗号処理装置2が、イントラネットやインターネット等の通信ネットワーク3を介して、互いに通信可能に接続された構成を有する。各暗号処理装置2は、内部構成として、共通モジュール4、暗号コード生成モジュール5、復号モジュール6、通信インタフェース7、平文コード入力部8、及び平文コード出力部9を備えている。尚、各暗号処理装置2は、ハードウェア的に暗号化通信の専用装置として構成することも可能であるが、パーソナルコンピュータ等の汎用のコンピュータにプログラムをロードして実行することによりソフトウェア的に暗号処理装置2を実現するようにしてもよい。2暗号処理装置の内部構成図2は、暗号処理装置2の暗号化機能部分の機能構成を表すブロック図である。以下では、通信する平文コードを暗号化して送信する側の暗号処理装置2を暗号化装置2e、当該平文コードを受信して復号する側の暗号処理装置2を復号装置2dと呼ぶ。暗号化装置2eは、共通モジュール4、暗号コード生成モジュール5、通信インタフェース7、及び平文コード入力部8を備え、これらは図1の同符号の構成部分に対応している。平文コード入力部8は、送信する平文コードを入力する構成部分である。平文コード入力部8は、キーボード等のヒューマンインタフェースや、CD-ROM,DVD-ROM,メモリスティック,ハードディスク等の平文コードが記憶された各種記憶装置から構成される。共通モジュール4は、シード曲線テーブル記憶部11、曲線演算テーブル記憶部12、ターミナルテーブル初期化部13、シード曲線設定部14、インダクションテーブル生成部15、曲線上演算部16、及びパラメータ交換部17を備えている。パラメータ交換部17は、復号装置2dとの間で、分割指数M,次元数N,素数p,及び鍵番号Kの交換を行う。シード曲線テーブル記憶部11は、分割指数1のN次元Nは2以上の整数ヒルベルト曲線からなるシード曲線を複数種類格納したシード曲線テーブルを記憶する。尚、各暗号処理装置2のシード曲線テーブル記憶部11には、共通のシード曲線テーブルが、予め記憶されているものとする。図4に、シード曲線テーブルの構造を示す。1つのシード曲線Cii=1,2,...は、分割指数1のN次元のヒルベルト曲線ci1N1,ci1N2,...,ci1N2Nから構成される。ここで、ci1Nkk=1....,2Nは、Nビットのビット配列からなるアドレスである。分割指数1のN次元のヒルベルト曲線は、2N個のアドレスシーケンスからなる。シード曲線テーブルには、互いに異なるNs個のシード曲線Cii=1,2,...,Nsが格納されている。Nsは、シード曲線の組合せ総数以下の数に設定されるが、できるだけ大きな数に設定される。例えば、2次元N=2の場合には、始点ci121と終点ci124を固定すれば、シード曲線の数は1通りに決まってしまう。例えば、始点ci121を00,終点ci124を10とした場合、シード曲線は00,01,11,10となる。しかし、3次元の場合には、始点ci131と終点ci138を固定すると、シード曲線の組合せ総数は4通りとなる。次元数をさらに上げると、4次元N=4の場合には、始点ci141と終点ci1416を固定したときのシード曲線の組合せ総数は627通り、5次元N=5の場合には、始点ci151と終点ci1532を固定したときのシード曲線の組合せ総数は151,732,224通りとなり、次元数Nの増加とともにシード曲線の組合せ総数は急激に増加する。一般にN次元の場合において、始点ci1N1と終点ci1N2Nを固定したときのシード曲線の組合せ総数FNがどのような式で表されるかは、現在のところ分かっていないが、本発明者が計算機による数え上げにより求めた近似結果では、となることが分かっている。従って、この特徴を用いて、6次元以上のヒルベルト曲線を利用すれば、使用可能なシード曲線の組合せ総数FNは極めて大きな値となるため、秘密鍵としてこのシード曲線を使用すれば、国際標準化RSA暗号方式や楕円暗号方式よりも頑健性の高い暗号方式を構成することが可能となる。曲線演算テーブル記憶部12は、ターミナルテーブル、インダクションテーブル、及び逆ターミナルテーブルを記憶する。ここで、ターミナルテーブルは、始点及び終点の組合せが互いに異なる、分割指数1のN次元ヒルベルト曲線からなるターミナル曲線を、N2N-1個格納するルックアップテーブルである。インダクションテーブルは、N次元ヒルベルト曲線の分割時に前記ターミナルテーブル内の各ターミナル曲線の各アドレスに対し連結するターミナル曲線を特定するインデックス情報を格納するルックアップテーブルである。逆ターミナルテーブルは、ターミナルテーブルの逆演算を行うためのルックアップテーブルである。基本的には、ターミナルテーブルとインダクションテーブルを用いれば、任意の分割指数のN次元ヒルベルト曲線を発生させることができる非特許文献1参照。逆ターミナルテーブルは、ターミナル曲線ak1Nが入力されたときに、そのインデックス情報kを高速に索出するために用意されたものである。尚、以下では、ターミナルテーブル、インダクションテーブル、及び逆ターミナルテーブルを総称して曲線演算テーブルと呼ぶ。図5にターミナルテーブルの構造を、図6にインダクションテーブルの構造を示す。ターミナルテーブル及びインダクションテーブルは、それぞれ、N2N個のレコード行を備えている。ターミナルテーブルの各レコードには、ターミナル曲線ak1Nk=1,...,N2N-1のインデックス情報kと、当該ターミナル曲線ak1Nのアドレスシーケンスak1N1,ak1N2,...,ak1N2Nが格納されている。従って、ターミナルテーブルは、インデックス情報kが入力されると、ターミナル曲線ak1N=ak1N1,ak1N2,...,ak1N2Nを出力する。インデックステーブルの各レコードには、ターミナル曲線ak1Nk=1,...,N2N-1のインデックス情報kと、当該ターミナル曲線ak1Nの各アドレスak1Nii=1,...,2Nに連結するターミナル曲線aki1Nのインデックスki=wk1Niの配列wk1N1,wk1N2,...,wk1N2Nが格納されている。例1N=2の場合、ターミナルテーブル及びインデックステーブルは、例えば、表1,表2のようになる。表1のターミナルテーブルの各レコードのターミナル曲線a112,a212,a312,a412は、それぞれ、図7aに示した2次元ヒルベルト曲線のアドレス順序を表している。また、表2のインダクションテーブルの各インデックスは、分割指数mの2次元ヒルベルト曲線akm2k=1,2,3,4を分割して分割指数m1の2次元ヒルベルト曲線ak2を生成する際に、ターミナル曲線ak12の要素の各アドレスak121,ak122,ak123,ak124の各々に連結する分割指数mのヒルベルト曲線aξm2のインデックスξを表す。例えば、m=1の場合においてa112を分割してa122を生成する場合、表1,表2より、のように帰納的に生成することができる。例終り例2N=3の場合、ターミナルテーブル及びインデックステーブルは、例えば、表3,表4のようになる。表3のターミナルテーブルのターミナル曲線a113,a413,a713,a1013は、それぞれ、図7bに示した2次元ヒルベルト曲線のアドレス順序を表している。また、表4のインダクションテーブルの各インデックスは、分割指数mの3次元ヒルベルト曲線akm3k=1,2,...,12を分割して分割指数m1の3次元ヒルベルト曲線ak3を生成する際に、ターミナル曲線ak13の要素の各アドレスak131,ak132,...,ak138の各々に連結する分割指数mのヒルベルト曲線aξm3のインデックスξを表す。例えば、m=1の場合においてa5m3を分割してa53を生成する場合、表1,表2より、のように帰納的に生成することができる。例終りターミナルテーブル初期化部13は、曲線演算テーブル記憶部12のターミナルテーブルにターミナル曲線の初期値を設定する。シード曲線設定部14は、鍵番号Kに対するシード曲線CKをシード曲線テーブル記憶部11のシード曲線テーブルから読み出し、曲線演算テーブル記憶部12のターミナルテーブルから、該シード曲線CKと始点及び終点が一致するターミナル曲線aξを索出し、ターミナルテーブルの該ターミナル曲線aξを該シード曲線CKに置換する。インダクションテーブル生成部15は、シード曲線設定部14によりシード曲線CKが設定されたターミナルテーブルに基づき、インダクションテーブル内の各インデックス情報を設定する。曲線上演算部16は、N次元整数空間内の2点A,Bが入力されると、各点A,Bに対し、シード曲線CKをターミナルテーブル及びインダクションテーブルによりM-1回分割して生成される分割指数MのN次元ヒルベルト曲線である鍵曲線HKにより、1次元序数空間内の序数iA,iBに単射する1次元写像手段、素数pを法とする各序数iA,iBの和iZ=iAiBmodpを算出する和算手段、及びこの序数iZをN次元整数空間内の点Zに単射するN次元写像手段から構成されている図示せず。そして、この出力される点Zが点A,Bの和算点となる。暗号コード生成モジュール5は、公開鍵入力部21、暗号化倍数生成部22、平文コード点生成部23、暗号コード生成部24、及び暗号コード出力部25を備えている。公開鍵入力部21は、復号装置2dから送信される、N次元整数空間内の点である第一基準点X1及び第二基準点X2を受信する。暗号化倍数生成部22は、乱数により倍率数s2を生成する。平文コード点生成部23は、平文コード入力部8から平文コードが入力されると、それに対応するN次元整数空間内の点である平文コード点Yを算出する。暗号コード生成部24は、曲線上演算部16により、第一基準点X1をs2回和算した積算点である第三基準点X3、及び第二基準点X2をs2回和算した積算点に、素数pを法として平文コード点Yをベクトル加算した暗号コード点Vを算出する。暗号コード出力部25は、暗号コード生成部24が算出する点の組X3,Vを暗号コードとして復号装置2dへ送信する。ここで、第三基準点X3は、エンコード関数の逆関数fe-1を特定するデコード情報であり、暗号コード点Vは暗号コードに相当する。3復号装置の内部構成図3は、暗号処理装置2の復号機能部分復号装置2dの機能構成を表すブロック図である。共通モジュール4については、図2のものと同様である。復号モジュール6は、復号倍率数生成部31、公開鍵生成部32、暗号コード入力部33、及び復号演算部34を備えている。復号倍率数生成部31は、乱数により倍率数s1を生成する。公開鍵生成部32は、乱数により第一基準点X1を生成し、曲線上演算部16により、第一基準点X1をs1回和算した積算点である第二基準点X2を算出し、該第一基準点X1及び該第二基準点X2を、エンコード関数feを特定するエンコード情報として暗号化装置2eに送信する。暗号コード入力部33は、暗号化装置2eから送信される、第三基準点X3及び暗号コード点Vを受信する。復号演算部34は、曲線上演算部16により、第三基準点X3をs1回曲線上和算した積算点X4を算出し、素数pを法として暗号コード点Vから点X4をベクトル減算して得られる点Yを算出する。平文コード出力部9は、復号演算部34により算出された点Yに対応する平文コードを算出する。2暗号処理システムによる暗号処理方法以上のように構成された本実施例の暗号処理システム1について、以下その動作を説明する。1全体動作図8は、暗号処理システム1による暗号化装置2eメッセージ送信側の暗号処理装置2と復号装置2dメッセージ受信側の暗号処理装置2との間の暗号化通信の動作を表すフローチャートである。まず、ステップS1,S21において、暗号化装置2e及び復号装置2dのパラメータ交換部17は、初期パラメータである分割指数M,次元数N,素数pを読み出し、互いに交換することにより共通化する。次に、ステップS2において、復号装置2dの復号倍率数生成部31は、乱数により倍率数s1を生成し、ステップS22において、暗号化装置2eの暗号化倍数生成部22は、乱数により倍率数s2を生成する。次に、ステップS3,S23において、パラメータ交換部17は鍵番号Kの交換を行う。鍵番号Kの交換は、非暗号化通信により行うことも可能であるが、本実施例においては、後述するDiffieHellman暗号化方式により鍵番号Kの交換を行う例を示す図10参照。次に、ステップS4,S24において、復号装置2d及び暗号化装置2eの双方におけるターミナルテーブル初期化部13、シード曲線設定部14、及びインダクションテーブル生成部15は、それぞれ、次元数N,素数p,及び鍵番号Kに基づき、図4のシード曲線テーブルを参照して、曲線演算テーブル図5のターミナルテーブル、図6のインダクションテーブル、及び逆ターミナルテーブルを生成し、曲線演算テーブル記憶部12に格納する。曲線演算テーブルの生成方法については、非特許文献1に記載の方法を応用するが、その詳細については後述する。次に、ステップS5において、復号装置2dの公開鍵生成部32は、乱数によりM×Nビットのビットシーケンスを発生させることにより、N次元整数空間内の点を生成し、これを第一基準点X1に設定する。次に、ステップS6において、復号装置2dの公開鍵生成部32は、曲線上演算部16により、第一基準点X1をs1回曲線上和算した積算点を算出し、これを第二基準点X2に設定する。曲線上演算部16による曲線上和算の具体的な演算処理に関しては、後述する。ここで、点X2は次式によって表される。ここで、関数LKXは、N次元整数空間内の点Xを、鍵番号Kの鍵曲線HKにより1次元序数空間内の序数iXに単射する関数を表し、LK-1iXはその逆関数を表す。ここで、鍵曲線HKは、分割指数1のシード曲線CKを、ターミナルテーブル及びインダクションテーブルを用いてM-1回分割することにより得られるヒルベルト曲線である。本明細書では、一般に、N次元整数空間内の2点A,Bに対して、C=LK-1[LKALKB]によりN次元整数空間内の点Cを算出する演算を曲線上和算と呼ぶ。図9にN次元空間点と分割指数mのN次元のヒルベルト曲線との単射関係を示す。N次元空間は、直交するN本の座標軸を有するが、図9bではそのうちの2本の座標軸y1,y2を示している。各座標軸の区間[0,1]は長さ1/2mの2m個の小区間に分割されている。座標軸y1上の区間[x1/2m,x11/2m]を座標点x1、座標軸y2上の区間[x2/2m,x21/2m]を座標点x2のように表し、N個の座標点x1,x2,...,xNで特定される点図9bの領域Sam,2をN次元空間内の点X=x1,x2,...,xNとする。この点Xは、m×Nビットのアドレスにより特定することができる。従って、この点Xは、一辺の長さが1の超立方体を充填する分割指数mのヒルベルト曲線図9aとの1対1対応させることができる。尚、分割指数mのヒルベルト曲線は、長さ2mNのアドレスシーケンスであり、各アドレスはm×Nビットで表される。次に、ステップS7において、復号装置2dの公開鍵生成部32は、生成した第一基準点X1及び該第二基準点X2をエンコード情報{X1,X2}として、通信インタフェース7により通信ネットワーク3を介して暗号化装置2eへ送信する。次に、ステップS25において、暗号化装置2eの公開鍵入力部21は、復号装置2dから送信されるエンコード情報{X1,X2}を受信する。このエンコード情報{X1,X2}が公開鍵に相当する。次に、ステップS26において、暗号化装置2eの平文コード入力部8から、復号装置2dへ送信する平文コードMesが入力される。次に、ステップS27において、暗号化装置2eの平文コード点生成部23は、平文コードMesをM×Nビットのビットシーケンスに分割し、それぞれのビットシーケンスをN次元整数空間内の点に対応させることにより、平文コード点Y1,Y2,...を生成する。平文コード点Yの数は、平文コードMesの長さにより決まるが、ここでは簡単のために平文コード点Yの数を1個として説明する。次に、ステップS28において、暗号化装置2eの暗号コード生成部24は、曲線上演算部16により、第一基準点X1をs2回曲線上和算した積算点である第三基準点X3を算出する。また、曲線上演算部16により、第二基準点X2をs2回曲線上和算した積算点V’を算出し、この点V’に対し素数pを法として平文コード点Yをベクトル加算した暗号コード点Vを算出する。そして、算出された第三基準点X3を、エンコード関数の逆関数fe-1を特定するデコード情報とし、暗号コード点Vを暗号コードとする。ここで、各点X3,Vは次式によって表される。ここで、feLKX2;s2,pはエンコード関数である。次に、ステップS29において、暗号化装置2eの暗号コード出力部25は、暗号コード生成部24が算出する第三基準点X3及び暗号コード点Vを、通信インタフェース7により通信ネットワーク3を介して復号装置2dへ送信する。次に、ステップS8において、復号装置2dの暗号コード入力部33は、暗号化装置2eから送信される、点X3,Vを受信する。次に、ステップS9において、復号装置2dの復号演算部34は、曲線上演算部16により、点X3をs1回曲線上和算した積算点V3を算出し、素数pを法として点Vから前記点V3をベクトル減算して得られる点Yを算出する。これにより、もとの平文コード点Yが復元される。復号演算部34を式により表すと、次式のようになる。ここで、geLKX3;s2,pはエンコード関数feと可換なデコード関数である。式13に式12a12bを代入すれば、可換関数となっていることが分かる。次に、ステップS10において、復号装置2dの復号演算部34は、平文コード点Yに対応する平文コードMesを算出する。最後に、ステップS11において、復号装置2dの平文コード出力部9は、平文コードMesを出力し、復号処理を終了する。2曲線上演算部16による曲線上和算次に、式11,12a,12b,13において用いる曲線上演算部16による曲線上和算について具体的に説明する。曲線上和算とは、N次元整数空間内の加算する2点X,Yについて、各点X,Yを鍵曲線HKにより1次元序数空間内の序数iX,iYに単射し、所定の素数pを法とする各序数iX,iYの和iZ=iXiYmodpを算出し、この序数iZを鍵曲線HKによりN次元整数空間内の点Zに単射することにより得られる点Zを点X,Yの和算点とする演算をいう。ここで、鍵曲線HKは、鍵番号Kのシード曲線CKをターミナルテーブル及びインダクションテーブルによりM-1回分割して得られる分割指数MのN次元ヒルベルト曲線である。今、上記3つの点の座標をX=x1,x2,...,xN,Y=y1,y2,...,yN,Z=z1,z2,...,zNとおく。シード曲線CKをM-1回分割して生成される分割指数MのN次元ヒルベルト曲線を鍵曲線といい、HKと記す。鍵曲線HKは、曲線発生の種となるシード曲線CKの種類により決まり、その総数FNは、式8で説明したように非常に大きな数となる。ここで、鍵曲線HKの分割指数MのN次元ヒルベルト曲線の種類インデックスをγMと記す。曲線γMの鍵曲線HKにおける曲線上和算Z=LK-1[LKXLKY]は、次のようにして算出することができる。2-1曲線上和算のアルゴリズム0準備上記ステップS4,S24において、シード曲線CKを設定したターミナルテーブルTtermNを生成し、ターミナルテーブルTtermNから逆ターミナルテーブルITtermN及びインダクションテーブルTindNを生成しておく。1まず、点Xの座標であるアドレスx1,x2,...,xNを用いて、序数iXを次式により計算する。ここで、関数Hil2γM,M,x1,x2,...,xNは、分割指数Mの曲線γM上の点x1,x2,...,xNの順番を求める関数である。関数Hil2の具体的な演算については、後述する。2次に、点Yの座標であるアドレスy1,y2,...,yNを用いて、序数iYを次式により計算する3次に、序数iX,iYを用いてを計算する。4最後に、次式により、序数iZから点Zの座標であるアドレスz1,z2,...,zNを求める。ここで、関数Hil1γM,M,iZは、分割指数Mの曲線γM上の点Zの序数iZから点Zの座標z1,z2,...,zNを求める関数である。関数Hil1の具体的な演算については、後述する。2-2関数Hil1の計算今、N次元空間内の点Aのアドレスaをとする。ここで、zAii=1,...,Mは、式18bのようなNビットのビットシーケンスである。zAijが0又は1のリテラルを表す。式18cは、アドレスaのシーケンスとN次元空間の点座標z1,z2,...,zNとの関係を示している。また、点Aを分割指数Mのヒルベルト曲線γM上に写像したときに、ヒルベルト曲線γM上における点Aの序数をiAとし、iAを次式のように表す。このとき、zA1,zA2,...,zAMは、ターミナルテーブルTtermN及びインダクションテーブルTindNを用いて、以下のように逐次求めることができる。これにより、点Aのアドレスaを算出することができる。ここで、TtermNγkiは、図5のターミナルテーブルにおいて曲線γkに対応するレコードのi番目のアドレスを表し、TindNγkiは、図6のインダクションテーブルにおいて曲線γkに対応するレコードのi番目のインデックスを表す。2-3関数Hil2の計算前述のN次元空間内の点Aのアドレスaから、点Aを分割指数Mのヒルベルト曲線γM上に写像したときの、ヒルベルト曲線γM上における点Aの序数iAの演算関数Hil2は、逆ターミナルテーブルITtermN及びインダクションテーブルTindNを用いて、以下のように逐次行うことができる。3鍵番号Kの交換次に、図8のステップS3,S23における暗号化装置2eと復号装置2dとの間の鍵番号Kの交換について説明する。鍵番号Kの交換方法については、本発明ではどのような方法を用いてもよいが、データ通信の秘匿性をより頑健なものとするためには、既存の公開鍵暗号方式を用いるのがよい。本実施例では、DiffieHellman暗号化方式を用いた例について示す。図10は、鍵番号Kの交換動作を表すフローチャートである。まず、ステップS31,S41において、復号装置2d,暗号化装置2eのパラメータ交換部17は、内部メモリから初期パラメータとしてD,qを読み出す。ここで、Dは原始元、qは素数であり、復号装置2d及び暗号化装置2eにおいて、予め決められた共通の値が与えられているものとする。次に、ステップS32,S42において、復号装置2d,暗号化装置2eのパラメータ交換部17は、それぞれ、乱数r1,r2を生成する。次に、ステップS33,S43において、復号装置2d,暗号化装置2eのパラメータ交換部17は、それぞれ、公開鍵bA,bBを次式により生成する。次に、ステップS44において、暗号化装置2eのパラメータ交換部17は、公開鍵bBを復号装置2dに送信し、ステップS34において、復号装置2dのパラメータ交換部17は、当該公開鍵bBを受信する。次に、ステップS35において、復号装置2dのパラメータ交換部17は、公開鍵bAを暗号化装置2eに送信し、ステップS45において、暗号化装置2eのパラメータ交換部17は、当該公開鍵bAを受信する。最後に、ステップS36,S46において、復号装置2d,暗号化装置2eのパラメータ交換部17は、それぞれ、次式により鍵番号Kを算出する。以上により、復号装置2dと暗号化装置2eにおいて、共通の鍵番号Kが交換される。4曲線演算テーブルの生成次に、ステップS4における各曲線演算テーブルの設定方法について説明する。図11は、各曲線演算テーブルの設定方法の全体動作を表すフローチャートである。まず、ステップS50において、ターミナルテーブル初期化部13により、曲線演算テーブル記憶部12内のターミナルテーブルの初期化が行われる。ターミナルテーブルの初期化処理の詳細については後述する。これにより、ターミナルテーブルには、初期値として、分割指数1のN次ヒルベルト曲線である各ターミナル曲線が設定される。次に、ステップS51において、ターミナルテーブル初期化部13により、曲線演算テーブル記憶部12内の逆ターミナルテーブルの初期化が行われる。次に、ステップS52において、シード曲線設定部14は、シード曲線テーブル記憶部11内のシード曲線テーブから、鍵番号Kのシード曲線CKを索出する。そして、シード曲線CKの先頭のアドレスcK1N1と最後のアドレスcK1N2Nを読み出し、このアドレスcK1N1,cK1N2Nを検索キーとしてターミナルテーブルを検索し、始点及び終点がアドレスcK1N1,cK1N2Nに一致するターミナル曲線aξ1Nを索出する。ここで、ターミナルテーブルに格納された各ターミナル曲線は、始点と終点の組合せが全て異なる。従って、始点及び終点がアドレスcK1N1,cK1N2Nに一致するターミナル曲線は唯1つに特定される。ステップS53,S54において、ターミナル曲線aξ1Nが索出されると、シード曲線設定部14は、ターミナルテーブルのターミナル曲線aξ1Nをシード曲線CKに置換する。すなわち、TtermNξi=aξ1Ni=cK1Nii=1,...,2Nに設定する。次に、ステップS55,S56において、シード曲線設定部14は、逆ターミナルテーブルのインデックスITtermNξcK1Niをシード曲線CKのアドレスcK1Niのインデックスiに置換する。すなわち、ITtermNξcK1Ni=ii=1,...,2Nに設定する。最後に、ステップS57において、インダクションテーブル生成部15により、曲線演算テーブル記憶部12内のインダクションテーブルの生成が行われる。インダクションテーブルの生成処理の詳細については後述する。これにより、インダクションテーブルには、連結曲線を指定する各インデックス値が設定される。以上の処理により、曲線演算テーブル記憶部12に、ターミナルテーブル,逆ターミナルテーブル,インダクションテーブルがそれぞれ生成される。4-1ターミナルテーブルの初期化次に、図11のステップS50におけるターミナルテーブル初期化部13によるターミナルテーブルの初期値の処理方法について説明する非特許文献1参照。図12は、ターミナルテーブル初期化部13によるターミナルテーブルの初期値の設定処理を表すフローチャートである。尚、図12のフローチャートはPADProblemAnalysisDiagram;JISX0128参照により表している。まず、ステップS61において、ターミナルテーブル初期化部13は、1番目のターミナル曲線a11Nを生成する種となる分割指数1の1次元ヒルベルト曲線a111を0,1に設定する。次に、ステップS62,S63において、ターミナルテーブル初期化部13は、分割指数1の1次元ヒルベルト曲線a111から分割指数1の1次元ヒルベルト曲線a11Nを、次の逐次式によって生成する。次に、ステップS64,S65,S66において、ターミナルテーブル初期化部13は、先に生成した1番目のターミナル曲線a11Nの各アドレス値を用いて、j番目i=1,...,2N-1;j=1,...,Nのターミナル曲線aNj1Nの先頭のアドレスaNj1N1を、ターミナル曲線a11Nの2i-1番目のアドレス値a11N2i-1に設定する。次に、ステップS67,S68,S69において、ターミナルテーブル初期化部13は、先に生成したターミナル曲線aNj1Nの先頭のアドレス値aNj1N1を用いて、j番目i=1,...,2N-1;j=1,...,Nのターミナル曲線aNj1Nの最後のアドレスaNj1N2Nを、当該ターミナル曲線aNj1Nの1番目のアドレス値aNj1N1のj番目のビットを反転したアドレス値ibitaNj1N1に設定する。次に、ステップS70~S74において、ターミナルテーブル初期化部13は、k番目k=2,...,Nのターミナル曲線ak1Nのi’番目i’=2,...,2N-1の中間点アドレスak1Niを次式により設定する。次に、ステップS75~S78において、ターミナルテーブル初期化部13は、番目i=1,...,2N-1-1;j=1,...,Nのターミナル曲線a1Nのi’番目i’=2,...,2N-1の中間点アドレスa1Niを次式により設定する。最後に、ステップS79~S81において、ターミナルテーブル初期化部13は、生成したアドレスak1Nを、ターミナルテーブルの要素TtermNkiに格納して、ターミナルテーブルの初期化処理を終了する。生成されたターミナルテーブルは、図5のようになる。このターミナルテーブルの初期値は、次元数Nを特定すれば、一意的に生成することができる。4-2逆ターミナルテーブルの生成次に、図11のステップS51における、ターミナルテーブル初期化部13による逆ターミナルテーブルの初期値の設定方法について説明する。図13は、ターミナルテーブル初期化部13による逆ターミナルテーブルの初期値の設定処理を表すフローチャートである。尚、図13のフローチャートもPADにより表している。この処理は極めて簡単であり、ターミナルテーブルのk番目k=1,...,N2Nのターミナル曲線ak1Nのi番目i=1,...,2Nのアドレスak1NiをTtermNkiから読み出してS93、このインデックスiを逆ターミナルテーブルの要素ITtermNkak1Niに格納するS94という操作を、すべてのk,iについて繰り返し行うことにより実行される。4-3インダクションテーブルの生成最後に、図11のステップS57における、インダクションテーブル生成部15によるインダクションテーブルの生成方法について説明する非特許文献1参照。図14は、インダクションテーブル生成部15によるインダクションテーブルの作成処理を表すフローチャートである。ステップS100において、インダクションテーブル生成部15は、インデックスkを1からN2Nまで1ずつ増加させながら、以下のステップS101からS113までの処理を行う。4-3-1最初のアドレスの連結パスの設定処理まず、インダクションテーブル生成部15は、以下のステップS101~S104において、インダクションテーブルにおけるターミナル曲線ak1Nの最初のアドレスに連結するパスの設定処理を行う。ステップS101において、インダクションテーブル生成部15は、ターミナルテーブルからk番目のターミナル曲線ak1Nの1番目のアドレスak1N1を読み出して、これを始点アドレス変数sに設定する。次に、ステップS102において、インダクションテーブル生成部15は、ターミナルテーブルからk番目のターミナル曲線ak1Nの2番目のアドレスak1N2を読み出して、次式の演算により、終点アドレス変数eに設定する。次に、ステップS103において、インダクションテーブル生成部15は、始点アドレス変数s及び終点アドレス変数eを検索キーとして、ターミナルテーブルを検索し、始点アドレスak1N1が始点アドレス変数sと一致し、終点アドレスak1N2Nが終点アドレス変数eと一致するターミナル曲線ak1Nを索出し、そのインデックスkを取得する。最後に、ステップS104において、インダクションテーブル生成部15は、インダクションテーブルのk番目のレコードの最初のインデックスTindNk1をインデックスkに設定する。4-3-2中間の連結パスの設定処理次に、ステップS105において、インダクションテーブル生成部15は、序数指定変数iを2から2N-1まで1ずつ増加させながら、以下のステップS106~S109の中間の連結パスの設定処理を繰り返し実行する。まず、ステップS106において、インダクションテーブル生成部15は、先に設定した終点アドレス変数eと、ターミナルテーブルから読み出されるk番目のターミナル曲線ak1Nのアドレスak1N2i-2,ak1N2i-3から、次式により始点アドレス変数sを変更する。次に、ステップS107において、インダクションテーブル生成部15は、新たに設定した始点アドレス変数sと、ターミナルテーブルから読み出されるk番目のターミナル曲線ak1Nのアドレスak1N2i-1,ak1N2i-2から、次式により終点アドレス変数eを変更する。次に、ステップS108において、インダクションテーブル生成部15は、新たに再設定された始点アドレス変数s及び終点アドレス変数eを検索キーとして、ターミナルテーブルを検索し、始点アドレスak1N1が始点アドレス変数sと一致し、終点アドレスak1N2Nが終点アドレス変数eと一致するターミナル曲線ak1Nを索出し、そのインデックスkを取得する。最後に、ステップS109において、インダクションテーブル生成部15は、インダクションテーブルのk番目のレコードの2i-2番目及び2i-1番目のインデックスTindNk2i2,TindNk2i1をインデックスkに設定する。尚、ヒルベルト曲線の対称性によって、インダクションテーブルの2i-2番目のインデックスと2i-1番目のインデックスは、常に同じ値となる表2,表4参照。4-3-3最後の連結パスの設定処理最後に、インダクションテーブル生成部15は、以下のステップS110~S113において、インダクションテーブルにおけるターミナル曲線ak1Nの最後のアドレスに連結するパスの設定処理を行う。まず、ステップS110において、インダクションテーブル生成部15は、先に設定した終点アドレス変数eと、ターミナルテーブルから読み出されるk番目のターミナル曲線ak1Nのアドレスak1N2N,ak1N2N-1から、次式により始点アドレス変数sを変更する。次に、ステップS111において、インダクションテーブル生成部15は、終点アドレス変数eをターミナルテーブルから読み出されるk番目のターミナル曲線ak1Nのアドレスak1N2Nに変更する。次に、ステップS112において、インダクションテーブル生成部15は、新たに再設定された始点アドレス変数s及び終点アドレス変数eを検索キーとして、ターミナルテーブルを検索し、始点アドレスak1N1が始点アドレス変数sと一致し、終点アドレスak1N2Nが終点アドレス変数eと一致するターミナル曲線ak1Nを索出し、そのインデックスkを取得する。最後に、ステップS113において、インダクションテーブル生成部15は、インダクションテーブルのk番目のレコードの最後のインデックスTindNk2Nをインデックスkに設定する。以上の処理によって、インダクションテーブルを作成することができる。図15は、本発明の実施例2に係る暗号化装置2eメッセージ送信側の暗号処理装置2の構成を表すブロック図、図16は、本発明の実施例2に係る復号装置2dメッセージ受信側の暗号処理装置2の構成を表すブロック図である。尚、本実施例において、暗号処理システムの全体構成は図1と同様であるとする。本実施例は、実施例1の暗号処理装置2の構成を、さらに単純化したものである。図15,図16において、共通モジュール4、暗号コード生成モジュール5、復号モジュール6、通信インタフェース7、平文コード入力部8、平文コード出力部9、曲線上演算部16、公開鍵入力部21、暗号化倍数生成部22、平文コード点生成部23、暗号コード生成部24、暗号コード出力部25、復号倍率数生成部31、公開鍵生成部32、暗号コード入力部33、及び復号演算部34は、実施例1の図2,図3の同符号の構成部分に対応している。本実施例では、図2,図3のシード曲線テーブル記憶部11に代えて、鍵曲線記憶部11’を備えており、図2,図3の曲線演算テーブル記憶部12、ターミナルテーブル初期化部13、シード曲線設定部14、及びインダクションテーブル生成部15は省略されている。また、本実施例では、パラメータM,N,pは、各暗号処理装置2において予め与えられており、図2,図3のパラメータ交換部17の代わりに鍵番号交換部17’を備えている。本実施例では、鍵曲線記憶部11’には、N次元整数空間内の所定の部分空間を充填する空間充填曲線である鍵曲線Hkk=1,2,...そのものが複数記憶されている。ここで、空間充填曲線としては、実施例1と同様に、分割指数Mのヒルベルト曲線を使用することもできるが、本実施例では他の例として、分割指数MのN次元ペアノ曲線、分割指数MのN次元シェルピンスキー曲線、及び分割指数MのN次元ムーア曲線を使用することとする。図17に、2次元に於けるペアノ曲線、シェルピンスキー曲線、及びムーア曲線の例を示す。これらの空間充填曲線も、M回分割することにより、自己相似的に拡張することができる。鍵番号交換部17’は、他の暗号処理装置2との間で、鍵曲線を特定する鍵番号Kを交換する。鍵番号Kの交換処理については、実施例1の図10で説明したDiffieHellman暗号化方式による鍵番号Kの交換処理が行われるものとする。以上のように構成された本実施例の暗号処理システム1について、以下その動作を説明する。図18は、実施例2の暗号処理システム1による暗号化装置2eメッセージ送信側の暗号処理装置2と復号装置2dメッセージ受信側の暗号処理装置2との間の暗号化通信の動作を表すフローチャートである。ステップS1~S3,S21~S23は、図8と同様であるため説明は省略する。尚、本実施例では、パラメータM,N,pは、各暗号処理装置2に予め与えられているので、ステップS1,S21ではパラメータM,N,pの交換は行われない。ステップS3において、鍵番号Kの交換が行われることによって、暗号化装置2eと復号装置2dの双方において共通の鍵番号Kが保有される。次に、ステップS5において、復号装置2dの公開鍵生成部32は、乱数によりqM×Nビットのビットシーケンスを発生させることにより、N次元整数空間内の点を生成し、これを第一基準点X1に設定する。ここで、qは使用する空間充填曲線により決まる定数であり、ペアノ曲線の場合にはq=2,シェルピンスキー曲線、ムーア曲線の場合にはq=1である。次に、ステップS6において、復号装置2dの公開鍵生成部32は、曲線上演算部16により、第一基準点X1に基づき、次式により第二基準点X2を算出する。尚、本実施例では、エンコード関数feとして、実施例1と異なる関数の例を示すが、実施例1と同様のエンコード関数feを使用してもよい。その場合、式33の代わりに式11を使用すればよい。次に、ステップS7において、復号装置2dの公開鍵生成部32は、生成した第一基準点X1及び該第二基準点X2をエンコード情報{X1,X2}として、通信インタフェース7により通信ネットワーク3を介して暗号化装置2eへ送信する。次に、ステップS25において、暗号化装置2eの公開鍵入力部21は、復号装置2dから送信されるエンコード情報{X1,X2}を受信する。次に、ステップS26において、暗号化装置2eの平文コード入力部8から、復号装置2dへ送信する平文コードMesが入力される。次に、ステップS27において、暗号化装置2eの平文コード点生成部23は、平文コードMesをqM×Nビットのビットシーケンスに分割し、それぞれのビットシーケンスをN次元整数空間内の点に対応させることにより、平文コード点Y1,Y2,...を生成する。平文コード点Yの数は、平文コードMesの長さにより決まるが、ここでは簡単のために平文コード点Yの数を1個として説明する。次に、ステップS28において、暗号化装置2eの暗号コード生成部24は、曲線上演算部16により、次式により第三基準点X3及び暗号コード点Vを算出する。そして、算出された第三基準点X3を、エンコード関数の逆関数fe-1を特定するデコード情報とし、暗号コード点Vを暗号コードとする。ここで、feLKX2;s2,pはエンコード関数である。尚、実施例1と同様のエンコード関数feを使用する場合、式34a34bの代わりに式12a12bを使用すればよい。次に、ステップS29において、暗号化装置2eの暗号コード出力部25は、暗号コード生成部24が算出する第三基準点X3及び暗号コード点Vを、通信インタフェース7により通信ネットワーク3を介して復号装置2dへ送信する。次に、ステップS8において、復号装置2dの暗号コード入力部33は、暗号化装置2eから送信される、点X3,Vを受信する。次に、ステップS9において、復号装置2dの復号演算部34は、曲線上演算部16により、次式により得られる点Yを算出する。これにより、もとの平文コード点Yが復元される。ここで、geLKX3;s2,pはエンコード関数feと可換なデコード関数である。尚、実施例1と同様のエンコード関数geを使用する場合、式35の代わりに式13を使用すればよい。次に、ステップS10において、復号装置2dの復号演算部34は、平文コード点Yに対応する平文コードMesを算出する。最後に、ステップS11において、復号装置2dの平文コード出力部9は、平文コードMesを出力し、復号処理を終了する。図19は、本発明の実施例3に係る暗号化装置2eメッセージ送信側の暗号処理装置2の構成を表すブロック図、図20は、本発明の実施例3に係る復号装置2dメッセージ受信側の暗号処理装置2の構成を表すブロック図である。尚、本実施例においても、暗号処理システムの全体構成は図1と同様であるとする。本実施例は、実施例2の暗号処理装置2の構成を、さらに単純化したものである。図19,図20において、共通モジュール4、暗号コード生成モジュール5、復号モジュール6、通信インタフェース7、平文コード入力部8、平文コード出力部9、曲線上演算部16、平文コード点生成部23、暗号コード生成部24、暗号コード出力部25、暗号コード入力部33、及び復号演算部34は、実施例1の図2,図3の同符号の構成部分に対応している。本実施例では、図2,図3のシード曲線テーブル記憶部11に代えて、鍵曲線記憶部11’を備えており、図2,図3の曲線演算テーブル記憶部12、ターミナルテーブル初期化部13、シード曲線設定部14、及びインダクションテーブル生成部15は省略されている。また、本実施例では、パラメータM,N,pは、各暗号処理装置2において予め与えられており、図2,図3のパラメータ交換部17の代わりに鍵番号交換部17’を備えている。また、本実施例では、第一基準点X1,第二基準点X2,第三基準点X3を使用しないので、図2,図3の公開鍵入力部21、暗号化倍数生成部22、復号倍率数生成部31、公開鍵生成部32は省略されている。本実施例では、実施例2と同様、鍵曲線記憶部11’には、N次元整数空間内の所定の部分空間を充填する空間充填曲線である鍵曲線Hkk=1,2,...そのものが複数記憶されている。鍵番号交換部17’は、他の暗号処理装置2との間で、鍵曲線を特定する鍵番号Kを交換する。鍵番号Kの交換処理については、実施例1の図10で説明したDiffieHellman暗号化方式による鍵番号Kの交換処理が行われるものとする。以上のように構成された本実施例の暗号処理システム1について、以下その動作を説明する。図21は、実施例3の暗号処理システム1による暗号化装置2eメッセージ送信側の暗号処理装置2と復号装置2dメッセージ受信側の暗号処理装置2との間の暗号化通信の動作を表すフローチャートである。ステップS1~S3,S21~S23は、図8と同様であるため説明は省略する。尚、本実施例では、パラメータM,N,pは、各暗号処理装置2に予め与えられているので、ステップS1,S21ではパラメータM,N,pの交換は行われない。ステップS3において、鍵番号Kの交換が行われることによって、暗号化装置2eと復号装置2dの双方において共通の鍵番号Kが保有される。次に、ステップS26において、暗号化装置2eの平文コード入力部8から、復号装置2dへ送信する平文コードMesが入力される。次に、ステップS27において、暗号化装置2eの平文コード点生成部23は、平文コードMesをqM×Nビットのビットシーケンスに分割し、それぞれのビットシーケンスをN次元整数空間内の点に対応させることにより、平文コード点Y1,Y2,...を生成する。平文コード点Yの数は、平文コードMesの長さにより決まるが、ここでは簡単のために平文コード点Yの数を1個として説明する。次に、ステップS28において、暗号化装置2eの暗号コード生成部24は、曲線上演算部16により、次式により暗号コード点Vを算出し、この暗号コード点Vを暗号コードとする。ここで、feLKYはエンコード関数である。関数fexとしては、任意の単射関数を使用することができる。次に、ステップS29において、暗号化装置2eの暗号コード出力部25は、暗号コード生成部24が算出する暗号コード点Vを、通信インタフェース7により通信ネットワーク3を介して復号装置2dへ送信する。次に、ステップS8において、復号装置2dの暗号コード入力部33は、暗号化装置2eから送信される、暗号コード点Vを受信する。次に、ステップS9において、復号装置2dの復号演算部34は、曲線上演算部16により、次式により得られる点Yを算出する。これにより、もとの平文コード点Yが復元される。ここで、fe-1LKVはエンコード関数feの逆関数である。次に、ステップS10において、復号装置2dの復号演算部34は、平文コード点Yに対応する平文コードMesを算出する。最後に、ステップS11において、復号装置2dの平文コード出力部9は、平文コードMesを出力し、復号処理を終了する。本実施例では、空間充填曲線として、実施例1で示したヒルベルト曲線以外のものを使用する例について説明する。空間充填曲線としては、様々なものがあり、本発明においてはどのような種類の空間充填曲線を使用することも可能であるが、ここではわかりやすい例として、ペアノ曲線及びペアノ曲線から発展させたペアノ型曲線を使用する例を挙げて説明する。1N次元ペアノ曲線閉単位区間をI=[0,1],閉単位正方形をQ=[0,1]2とする。区間[0,1]内の点の値のq進数表現を0q.tq1tq2tq3...のように表す。例えば、区間[0,1]内の中点を2進数表現で表記する場合02.12020202...、3進数表現で表記する場合03.13131313...、4進数表現で表記する場合04.24040404...のように表す。tq1,tq2,tq3,...は各桁のリテラルを表し0~q-1までの値をとる。IからQへの写像関数f32を次式により定義する。ここで、tの添字の1番目は3進数であること、2番目は桁番号を表す。sの添字の1番目は3進数であること、2番目は座標軸の番号、3番目は桁番号を表している。また、関数K3は3進数リテラル反転関数である。一般に、q進数リテラル反転関数Kqは次式により定義される非特許文献2,p.40参照。また、関数Kqのν回の合成は次のように定義される。以下では写像関数f32の式38のような定義式を次式41a41bのように簡略表記することとする。ここで、nは写像する2次元ベクトルsの各成分の桁数であり、分割指数という。n→∞とすると式41aは式38と等価となる。ここで、式41bの最初の和の記号は、1以上でk-1以下のすべてのiについての和をとることを表し、2番目の和の記号は、j=1から2までj=mを除き和をとることを表している。式41aで定義された写像f32n:[0,1]→[0,1]2によって生成される2次元空間の曲線を2次元ペアノ曲線という非特許文献2,p.42参照。式41aのf32は区間[0,32n]の各整数点を2次元空間の正方形[0,3n]2の各整数格子点に写像する写像関数f32n:[0,32n]→[0,3n]2と考えることもできる。そこで、この写像関数f32nをN次元に拡張し、一般に、N次元ペアノ曲線を生成する写像関数f3Nnを次式42aで定義する。写像関数f3Nnが単射であること、及び写像f3Nn:[0,3Nn]→[0,3n]Nによって生成されるN次元空間曲線が連続空間充填曲線であることは数学的に証明することができる。図22に写像f32n:[0,32n]→[0,3n]2によって生成される2次元ペアノ曲線の一例を示す。図23に写像f33n:[0,33n]→[0,3n]3によって生成される3次元ペアノ曲線の一例を示す。2N次元ペアノ型曲線式42a,42bは、各リテラルが3進数で表現されているが、これを一般のq進数にまで拡張した写像関数fqNnを次式により定義する。式43aで定義された写像fqNn:[0,qNn]→[0,qn]Nによって生成されるN次元空間の曲線をN次元q進ペアノ型曲線と呼ぶ。qが奇数の場合、N次元q進ペアノ型曲線は連続空間充填曲線であることが数学的に証明される。qが偶数の場合には、N次元q進ペアノ型曲線は不連続空間充填曲線となる。q=3の場合がN次元ペアノ曲線である。図24は、式43a,43bによる分割指数nのN次元q進ペアノ型曲線の生成方法を具体的に示したフローチャートである。図25は、2次元5進ペアノ型曲線、図26は、2次元7進ペアノ型曲線の例を示す図である。尚、図24のフローチャートはPADにより表している。3ターミナル/インダクションテーブルによるN次元q進ペアノ型曲線の生成点sを起点とする分割指数nのN次元q進ペアノ型曲線をCn,Nと記すqは固定値として省略する。曲線Cn,Nは、一辺の長さがqnのN次元超立方体HCqn,N内のqnN個の整数格子点を充填する曲線である。従って、曲線Cn,NはこれらのqnN個の整数格子点の点列として、次のように表すことができる。ここで、各cn,Naa=0,1,...,qnN-1は超立方体HCqn,N内の整数格子点の位置ベクトル、sは曲線Cn,Nの始点の位置ベクトル、eは曲線Cn,Nの終点の位置ベクトルを表す。sは超立方体HCqn,Nの2N個の頂点のうちの何れかである。また、ペアノ型曲線の性質により、eはsに対して対角位置の頂点となる。今、分割指数nの曲線Cn,N[s]が与えられているとする。分割指数n1の曲線Cn1,N[s]は、曲線Cn,N[s]の各整数格子点を分割指数1のN次元q進ペアノ型曲線で置き換えることによって生成することができる。従って、曲線Cn1,N[s]は次式のように表すことができる。ここで、演算子∥はリテラル連結演算子である例えば、01∥201=01201。それぞれの曲線C1,N[sk]k=0,1,...,qnN-1の選び方は任意であるが、曲線Cn1,N[s]が連続であるという条件を課した場合この場合、qは奇数でなければならない。には、各曲線C1,N[si]の始点siと終点eiは一意的に決定される。尚、始点siと終点eiが同じ曲線C1,N[si]の種類の数位数は、N次元超立方体の1つの頂点から出る辺の数Nに等しい。今、整数格子点cn,Nkから整数格子点cn,Nk1へ向かう単位ベクトルをvk=cn,Nk1-cn,Nkとする。曲線Cn1,N[s]が連続の場合、曲線C1,N[sk1]の始点sk1は曲線C1,N[sk]の終点ekのvk方向の座標成分を超立方体HCq1,N内で反転させたものであるので、始点sk1は次式により決定される。ここで、関数Kq[vk]eはベクトルeのvk方向の成分のリテラルを反転するリテラル反転関数を表す。尚、式46において、vkの成分が負の場合、ekvkの成分が負となる場合があるが、その場合にはqを加えてsk1の各成分は区間[0,q-1]内の値となるように規格化するものとする。また、曲線C1,N[sk]の終点ekは始点skの対角頂点なので、終点ekは次式により決定される。ここで、関数Kqsはベクトルsのすべての成分のリテラルを反転するリテラル反転関数を表す。従って、曲線Cn1,N[s]が連続であるという条件を課した場合には、曲線C1,N[sk1]の始点sk1は次式によって一意的に決定される。このように、ペアノ型曲線の場合、始点が決まると終点が一意的に決まるので、生成可能な曲線数はヒルベルト曲線よりも少なく、次式のようになる。尚、始点の変更は、式23a,23bにより生成されるN次元q進ペアノ型曲線Cn,N[0]の座標軸を置換すれば、容易に行うことができる。また、始点から出る方向ベクトルの変更は、元となるN次元q進ペアノ型曲線Cn,N[s]の始点から2番目の格子点への方向ベクトルの軸の座標と、変更したい軸の座標について、q進数リテラル反転をすることにより、容易に行うことができる。以上のようなペアノ型曲線の自己相似性を利用することにより、ヒルベルト曲線の場合と同様に、以下のようにターミナル/インダクションテーブルを用いて分割指数nのN次元q進ペアノ型曲線を生成することができる。図27に、N次元q進ペアノ型曲線Cn,Nのターミナルテーブルの計算アルゴリズム、図28に、N次元q進ペアノ型曲線Cn,Nのインダクションテーブルの計算アルゴリズムを示す。図27,図28のフローチャートはPADにより表している。尚、図27において、原始曲線sは、図24のアルゴリズムにより分割指数1のN次元q進ペアノ型曲線を計算することにより求めることができる。例3q=3,N=2の場合、ターミナルテーブル及びインダクションテーブルは、例えば、表5,表6のようになる。この場合、シード曲線の数は2N×N=8であり、シード曲線テーブルは表7のようになる。例終り例4q=3,N=3の場合、ターミナルテーブル及びインダクションテーブルは、例えば、表8,表9のようになる。この場合、シード曲線の数は2N×N=24であり、シード曲線テーブルは表10のようになる。例終りターミナル/インダクションテーブルを用いた、1次元序数空間内の序数iAと、これをN次元q進ペアノ型曲線により写像したN次元空間内の点Aとの間の変換は、実施例1で説明した関数Hil1,Hil1と全く同様にして行うことができる。すなわち、ヒルベルト曲線のターミナル/インダクションテーブルを、N次元q進ペアノ型曲線のターミナル/インダクションテーブルに置き換えるだけでよい。尚、この場合、アドレスa及び序数iAの各リテラルはq進数のリテラルであるので、式19は次式50のように書き換えられることになる。4さらなる一般化ここまでは、暗号処理に使用する空間充填曲線を連続空間充填曲線に限定して説明してきたが、本発明に係る暗号処理技術で利用する空間充填曲線は、必ずしも連続である必要はない。不連続空間充填曲線を使用する場合にも、上述のシード曲線テーブル及びターミナル/インダクションテーブルを用いた自己相似曲線の生成手法をそのまま適用することが可能である。なぜならば、上述のターミナル/インダクションテーブルによる再帰的な曲線生成演算は、ターミナル曲線の始点と終点さえ確定していれば、その中間の格子点の配列が如何なるものであるかは問われないからである。例えば、表10のシード曲線テーブルにおいて、各行の曲線について始点アドレス1と終点アドレス27以外の中間格子点をランダムに置換することにより、任意の自己相似な空間充填曲線に変更することができる。この場合、シード曲線の全数は、2Nに3N-2個の数の置換の数を掛けた値となり、全部で2N3N-2となる。なお、シード曲線テーブル又はターミナルテーブルの曲線を不連続空間充填曲線とする場合には、インダクションテーブルの生成の際に注意が必要である。例えば、ターミナルテーブル内のターミナル曲線Tmtermが不連続空間充填曲線であったとする図27a参照。この場合、ターミナル曲線Tmterm上には、隣接点間の距離が1より大きい不連続隣接点ペアが必ず2組以上生じる。そこで、このような不連続隣接点ペアをTm,iterm,Tm,i1termとする。点Tm,itermと点Tm,i1termはN次元整数空間では隣接していないため、不連続点Tm,i1termを置き換えるターミナル曲線Tm,i1ind図28参照の始点の位置は、予め決められた何らかの始点決定規則なくしては、一意的には決定できないことに注意する必要があるなお、ペアノ型曲線では、不連続点Tm,itermを置き換えるターミナル曲線Tm,iind図28参照の終点の位置は始点から一意的に決定されるが、ヒルベルト曲線の場合には、ターミナル曲線Tm,iindの終点の位置も一意的には決定できないことになる。そこで、例えば、図28のようなインダクションテーブル生成のアルゴリズムを使用する場合には、図28のステップS90におけるv←Tm,i1term-Tm,itermの計算をv←Tm,i1term-Tm,itermmod2但し、mod演算はベクトルの各成分に対して行うに変更し、ステップS91の後にifsj=q-1thensj←qS91-1及びifsj=1thensj←0S91-2の条件演算式を追加すればよい。mod2演算により、方向ベクトルvの各成分vjは0,1,-1のいずれかとなるため、ステップS91~S92の演算により、不連続隣接点ペアTm,iterm,Tm,i1termが生じた場合でも、不連続点Tm,i1termを置き換えるターミナル曲線Tm,i1indの始点は一意的に決定され、このような始点不確定の問題は回避される。実施例5及び実施例6では、本発明に係る暗号処理技術を共通鍵暗号方式に適用した例について説明する。本実施例5では、共通鍵暗号方式として、DESDataEncryptionStandardアルゴリズム非特許文献3参照に本発明を適用した例を説明する。1通常のDES方式による暗号化アルゴリズム1DES暗号化アルゴリズム最初に、標準的な暗号化方式として広く使用されているDES方式の暗号化アルゴリズムについて簡単に説明する非特許文献3参照。DES方式では、2進数数字{0,1}の列からなるブロック長64ビットの平文p∈{0,1}64が、ブロック長64ビットの暗号文c∈{0,1}64に暗号化される。DES方式は、Feistel暗号を改良したものとなっている。図29は、DES方式による暗号化アルゴリズムの流れを示すブロック図である。図29において、平文p及び暗号文cはブロック長64ビットの2進数字列{0,1}64、鍵Kはブロック長64ビットの2進数字列{0,1}64である。図中において矢印に付された数値は、各矢印に沿って送られる数字ブロックのブロック長ビット数を表している。また、矩形ボックスは数値ブロック、グレーで塗られた帯直円形ボックスは関数を表している。DES方式による暗号化アルゴリズムは、大きく分けて、初期置換、Feistel構造による暗号化、最終置換の3段階から構成される。各段階の概略は、以下の通りである。1.1初期置換最初の段階として、平文pに対して初期置換IPを行う。初期置換IPは固定されており、次式で表される64ビットのビット置換である。ここで、次式の置換関数IPpの演算式の表記法は、平文pを2進数表記したときのリテラルをp=p1p2p3...p63p64とすると、IPp=p58p50p42...p15p7に置換されることを意味している。1.2Feistel構造次に、IPpをブロック長32ビットの2つのブロックL0,R0に分割する。すなわち、次式で表されるようなブロックL0,R0に分割する。演算子∥はリテラル連結演算子である。次いで、ブロックL0,R0を、16巡回のFeistel構造の暗号方式により暗号化し、暗号化ブロックL16,R16を生成する。この暗号化は、次のようにして反復実行される図29参照。ここで、Kjj=0,1,2,...,15は鍵Kから生成される巡回鍵、関数FRj,Kjは内部ブロック暗号の暗号化関数である。これらは後述する。1.3最終置換最後に、ブロック長32ビットの暗号化ブロックL16,R16を連結してブロック長64ビットの数字列L16∥R16とし、この数字列L16∥R16に対して最終置換IP-1を行うことにより暗号文c∈{0,1}64を生成する。最終置換IP-1xは、次式により表され、置換IPの逆置換である。ここで、変数xを2進数表記したときのリテラルをx=x1x2x3...x63x64とすると、IP-1x=x40x8x48...x57x25となる。2内部ブロック暗号F図29の各内部ブロック暗号Fは、図30に示すアルゴリズムにより表される。図30において、変数Ri及び巡回鍵Kii=0,1,...,15は、図29の変数Ri及び巡回鍵Kiにそれぞれ相当する。また、図中において矢印に付された数値は、各矢印に沿って送られる数字ブロックのブロック長ビット数を表している。変数Riはブロック長32のビット列であり、巡回鍵Kiはブロック長48のビット列である。2.1まず、拡大関数E:{0,1}32→{0,1}48により、ブロック長32の変数Ri∈{0,1}32をブロック長48の変数RRi∈{0,1}48に拡大する。拡大関数Eは、次式により表されるビット写像関数である。ここで、次式の写像関数ERiの演算式の表記法は、変数Riを2進数表記したときのリテラルをRi=Ri1Ri2Ri3...Ri31Ri32とすると、ERi=Ri32Ri1Ri2...Ri32Ri1に各ビットが写像されることを意味している。2.2次に、ブロック長48ビットの変数ERiとブロック長48ビットの巡回鍵Kiとのビット毎の排他的論理和を計算することにより、ブロック長48ビットの変数Bを生成する。2.3変数Bをブロック長6ビットの8個のブロックB1,B2,B3,B4,B5,B6,B7,B8に分割する。2.4ブロック長6ビットの各ブロックBjj=1,2,...,8を、それぞれ、Sボックスと呼ばれる関数Sj:{0,1}6→{0,1}4j=1,2,...,8により、ブロック長4ビットの変数Cjj=1,2,...,8に変換する。ここで、各Sボックスは、次のような4行16列の次式で表される非線形写像関数である。なお、下記の各SボックスSjの各成分は10進数で表示している。上記Sボックスによる演算は次のように行われる。上式のSボックスSjのα行β列の成分をSj[α,β]と記す。変数Bjj=1,2,...,8の2進数表記したリテラルをBj=bj,1bj,2bj,3bj,4bj,5bj,6と記す。bj,k∈{0,1}k=1,2,...,6である。これらのリテラルを用いて行指数ξj=bj,1bj,6及び列指数ηj=bj,2bj,3bj,4bj,5を構成し、次式によって変数Cjを算出する。なお、変数Cjは、上式のSボックスSjの成分Sj[ξj,ηj]を4ビットの2進数で表記したものである。2.58個の変数Cjj=1,2,...,8を連結し、ブロック長32ビットの変数Cを生成する。2.6最後に、変数Cの各ビットの順序を次式の置換関数Pによりビット置換し、暗号化した変数FRi,Ki=PCを算出する。ここで、変数Cを2進数表記したときのリテラルをC=c1c2c3...c31c32とすると、PC=c16c7c10...c4c25となる。3巡回鍵Kiの生成図29の各巡回鍵Kii=0,1,...,15は、鍵Kに基づいて、図31のアルゴリズムによって生成される。図31において、RK0~RK15の部分は、図29の同符号を付した関数ボックスの部分に相当する。図31において、関数ボックスLSは、左巡回シフト関数を表している。3.1まず、ブロック長64ビットの鍵K∈{0,1}64に対して、次式のようなビット写像関数PC1:{0,1}64→{0,1}28×{0,1}28により、ブロック長28ビットの2つの変数C0,D0=PC1Kを生成する。3.2得られた変数C0,D0を連結し、ブロック長56ビットの変数C0∥D0に対して、次式のようなビット写像関数PC2により、ブロック長48ビットの巡回鍵K0=PC2C0∥D0を生成する。3.3次に、以下の3.3.1~3.3.3の処理を15巡反復して繰り返すことにより、鍵Kii=1,2,...,15を順次生成する。3.3.1変数Ci-1i=1,2,...,15に対し、左巡回シフトを施すことにより、変数Ciを生成する。ここで、シフト量は、i∈{1,2,9,16}のときは1、それ以外のときは2とする。3.3.2同様に、変数Di-1i=1,2,...,15に対し、左巡回シフトを施すことにより、変数Di=LSDi-1を生成する。ここで、シフト量は、i∈{1,2,9,16}のときは1、それ以外のときは2とする。3.3.3得られた変数Ci,Diを連結し、ブロック長56ビットの変数Ci∥Diに対して、上述のビット写像関数PC2により、ブロック長48ビットの巡回鍵Ki=PC2Ci,Diを生成する。4DES復号アルゴリズムDES暗号の復号は、巡回鍵K0~K15を逆方向の順序で使用すればよい。図32にDES暗号の復号アルゴリズムを示す。2本発明を適用した改良DES方式による暗号化アルゴリズム1改良DES暗号化アルゴリズム次に、上述のDES暗号化方式に本発明を適用した実施例5の暗号化方式について説明する。図33はDES暗号化方式に本発明を適用した暗号化方式のアルゴリズムの流れを示すブロック図である。本実施例に係る暗号化方式においては、上述のDES方式のFeistel構造の格段において、内部ブロック暗号Fにより変数Rii=0,1,...,15を変換した後、生成された変数FRi,Kiを、鍵曲線HKを用いて暗号化を行う内部ブロック暗号Gによりさらに変換した後に、GFRi,HKと変数Liとの排他的論理和をとることにより次段の変数Ri1又はL16を生成する。すなわち、式53a,53bが、それぞれ次式66a,66bに置き換えられる。それ以外は、上述したDES方式と同様である。内部ブロック暗号Gここで、新たに追加した内部ブロック暗号Gにおいて、本発明に係る空間充填曲線を使用した暗号化方法が使用される。以下、内部ブロック暗号Gにおける演算方法について具体的に説明する。まず、内部ブロック暗号関数Gに入力される変数FRi,KiをYとおく。Y∈{0,1}32である。最初に、変数Yをブロック長MビットのN個のブロックY1,...,YNに等分割する。Nは32の約数2,4,8,16の何れかを選択可能であるが、ここではN=8とするのが適当である。そして、分割した各ブロックを成分とするN次元のベクトルYを生成する。次に、鍵曲線HKによりN次元ベクトルYを1次元序数空間内の序数iYに写像する関数LKYにより、ベクトルYから序数iYを算出する。ここで、序数iYは32ビットのスカラー変数である。関数LKYは、ベクトルYを、鍵曲線HKにより生成される、一辺の長さがM=4のN次元超立方体を充填する空間充填曲線CM,NにおけるベクトルYに対応する点の序数iYに写像する関数である。関数LKYとしては、例えば、実施例1で説明したようなヒルベルト曲線を用いた写像関数を用いることができる。また、ヒルベルト曲線の代わりに、実施例4で説明したペアノ型曲線やその他の空間充填曲線を使用した写像関数を用いることもできる。次いで、序数iYをスカラー関数であるエンコード関数feにより変換した後、feiYを、関数LKの逆関数LK-1により変換し、N次元ベクトルV=V1,...,VNを生成する。そして、ベクトルVの各成分V1,...,VNを連結してこれをGY,HKとする。即ち、次式67a~67dの演算によってGY,HKは計算される。尚、エンコード関数feとしては、例えば、実施例1で説明したような関数を使用することができる。2改良DES復号アルゴリズム図34はDES暗号化方式に本発明を適用した復号方式のアルゴリズムの流れを示すブロック図である。復号についても、同様に、上述のDES方式のFeistel構造の格段において、内部ブロック暗号Fにより変数Rii=16,15,...,1を変換した後、生成された変数FRi,Kiを、鍵HKを用いて暗号化を行う内部ブロック暗号Gによりさらに変換した後に、GFRi,HKと変数Liとの排他的論理和をとることにより次段の変数Ri-1又はL0を生成する。すなわち、次式のようになる。3実施例5に係る暗号化装置及び復号装置図36は、実施例5に係る暗号処理装置の構成を表すブロック図である。尚、図33,図34から分かるように、本実施例の暗号化方式と復号方式のアルゴリズムは対照的な構造をしているため、暗号化装置及び復号装置は図35のように同じ構成となる。実施例5に係る暗号処理装置2は、データ入力部41、処理データ記憶部42、巡回鍵記憶部43、鍵曲線記憶部44、左ブロック記憶部45、右ブロック記憶部46、初期置換部47、巡回鍵生成部48、内部ブロック関数F演算部49、内部ブロック関数G演算部50、EXOR演算部51、ブロック交換部52、最終置換部53、及びデータ出力部54を備えている。尚、暗号処理装置2は、ハードウェア的に暗号化通信の専用装置として構成することも可能であるが、パーソナルコンピュータ等の汎用のコンピュータにプログラムをロードして実行することによりソフトウェア的に暗号処理装置2を実現するようにしてもよい。データ入力部41は、暗号化を行う平文p、復号を行う暗号文c、DES暗号で使用するDES暗号鍵K,K’、本発明に係る暗号方式で使用する曲線鍵HKを入力する部分である。先に説明した通り、平文p及び暗号文cは二進数数字{0,1}からなるブロック長64ビットの数字ブロックである。DES暗号鍵K,K’は二進数数字{0,1}からなるブロック長64ビットの数字ブロックである。曲線鍵HKは二進数数字{0,1}からなるブロック長32ビットの数字ブロックである。処理データ記憶部42は、データ入力部41から入力された平文p又は暗号文cを記憶する。巡回鍵記憶部43は、データ入力部41から入力されたDES暗号鍵K,K’を記憶する。鍵曲線記憶部44は、データ入力部41から入力された曲線鍵HKを記憶する。また、左ブロック記憶部45及び右ブロック記憶部46は、先に説明したFeistel構造の格段で使用するブロック長32ビットの2つのブロックLi,Rii=0,1,...,16を記憶する。初期置換部47は、図33,図34における初期置換IPの演算を行うモジュールである。巡回鍵生成部48は、図33,図34における関数ボックスRK0~RK15の部分の演算即ち、DES暗号鍵K,K’に基づき巡回鍵K0~K15を生成する演算を行うモジュールである。内部ブロック関数F演算部49は、図33,図34における内部ブロック関数Fの演算を行うモジュールである。内部ブロック関数FRi,Kji=0,1,...,15の演算については、上記12において説明した通りである。尚、暗号化の際には、図33のようにi=0,1,...,15に対してそれぞれj=0,1,...,15となり、復号の際には図34のようにi=0,1,...,15に対してそれぞれj=15,14,...,0となる。内部ブロック関数G演算部50は、図33,図34における内部ブロック関数Gの演算を行うモジュールである。内部ブロック関数Gの演算については、上記21,2において説明した通りである。EXOR演算部51は、図33,図34におけるEXORブロックに相当し、式66a,66b及び式68b,68cに示したように、左ブロック記憶部45に記憶された数字ブロックLiと、内部ブロック関数G演算部50が出力する数字ブロックZ=GFRi,Kj,HKとの排他的論理和の演算を行うモジュールである。ブロック交換部52は、図33,図34又は式66a,66b及び式68b,68cに示したように、i=0,1,...,14の場合には右ブロック記憶部46に記憶された数字ブロックRiを左ブロック記憶部45に格納するとともに、EXOR演算部51が出力する排他的論理和を右ブロック記憶部46に格納する。i=15の場合には、数字ブロックRiの移動は行わず、EXOR演算部51が出力する排他的論理和を左ブロック記憶部45に格納する。最終置換部53は、図33,図34における最終置換IP-1の演算を行うモジュールである。データ出力部54は、最終置換部53の演算結果を、暗号化文c又は平文pとして出力する。これら各部の処理動作については、図33,図34のアルゴリズムで説明した通りであり、重複するため省略する。図36は、図35における内部ブロック関数G演算部50の構成を表すブロック図である。内部ブロック関数G演算部50は、共通モジュール4、共通鍵入力部21’、暗号化倍数生成部22、平文コード点生成部23、暗号コード生成部24、及び暗号コード出力部25を備えている。共通モジュール4、暗号化倍数生成部22、平文コード点生成部23、暗号コード生成部24、及び暗号コード出力部25については、実施例1の図2において同符号を付した構成部分と同様のものであり、説明は省略する。共通鍵入力部21’は、鍵曲線記憶部44に記憶された曲線鍵HKを読み出して暗号コード生成部24へ入力するモジュールである。内部ブロック関数F演算部49が生成するブロック長32ビットの数字ブロックY=FRi,Kjは平文コード点生成部23へ入力される。平文コード点生成部23は、数字ブロックYを式67aのように、ブロック長4ビットの数字ブロックY1,Y2,...,Y8に等分割し、式67bのように各数字ブロックY1,Y2,...,Y8を成分とする8次元ベクトルYを生成する。これが、実施例1で説明した平文コード点に相当する。暗号コード生成部24は、ベクトルYと曲線鍵HKに基づいて、式67cにより暗号化点の8次元ベクトルV=V1,V2,...,V8を算出し、ベクトルVの各成分を式67dにより連結してZ=GY,HKを算出する。暗号コード生成部24における具体的な演算処理は、実施例1で説明した通りである。暗号コード出力部25は、暗号コード生成部24が算出した数字ブロックZ=GY,HKをEXOR演算部51へ出力する。DES方式においては、Sボックス演算が唯一の非線形な部分であり、このSボックスの非線形性が暗号の安全性を向上させている。本発明に係る空間充填曲線を利用した暗号方式も非線形写像が利用されているため、本発明に係る空間充填曲線を利用した暗号方式を、共通鍵暗号であるDES暗号方式のFeistel構造の格段に適用することによって、暗号の安全性をさらに向上させることができる。なお、本実施例では、DES暗号のFeistel構造図33,図34におけるF関数の後に、本発明の空間充填曲線暗号化演算を行うG関数を追加した構成としたが、F関数の代わりにG関数を使用する構成とすることもできる。この場合、図33,図34におけるF関数を除けばよい。空間充填曲線暗号化演算は非線形演算であるため、F関数の代わりにG関数を使用する構成としても、暗号の安全性は十分に確保される。本実施例6では、共通鍵暗号方式として、AESAdvancedEncryptionStandardアルゴリズム非特許文献4参照に本発明を適用した例について説明する。1通常のAES方式による暗号化アルゴリズム1暗号化アルゴリズム最初に、標準的な暗号化方式として広く使用されているAES方式の暗号化アルゴリズムについて簡単に説明する非特許文献4参照。AES方式では、2進数数字{0,1}の列からなるブロック長128ビットの平文p∈{0,1}128が、ブロック長128ビットの暗号文c∈{0,1}128に暗号化される。共通鍵Kとしては、鍵長NKが128ビット,192ビット,256ビットのものの何れかを選択することができる。鍵長NKに応じて、内部ブロック暗号ラウンド関数の繰り返し実行回数であるラウンド数Nrが決められており、鍵長NKが128ビット,192ビット,256ビットに対し、ラウンド数Nrがそれぞれ10,12,18となる。1.1全体の流れ図37は、AES方式による暗号化アルゴリズムの流れを示すブロック図である。図37において、平文p及び暗号文cはブロック長128ビットの2進数字列{0,1}128、鍵Kはブロック長NKビットの2進数字列{0,1}NKである。図中において矢印に付された数値は、各矢印に沿って送られる数字ブロックのブロック長ビット数又はバイト数を表している。また、矩形ボックスは数値ブロック、グレーで塗られた帯直円形ボックスは関数を表している。AES方式による暗号化アルゴリズムは、大きく分けて、初期処理、ラウンド処理の2段階から構成される。各段階の概略は、以下の通りである。1.2初期処理最初の段階として、ブロック長128ビットの平文pを、次式のように、16個の1バイト数字列pi,ji,j=0,1,2,3に分割し、各数字列pi,jを成分とする4行4列の状態配列Pを構成する。AES方式では、このような4行4列の状態配列が処理単位となる。上記状態配列Pと4×4バイトの巡回鍵配列RK0とのビット毎の排他的論理和をとることにより、次式のように初期の状態配列B0を算出する。なお、巡回鍵配列RKrr=0,1,...,Nrは、共通鍵Kに基づき鍵拡張関数により算出される。鍵拡張関数の詳細については、本発明とは直接関係ないため説明は省略する。1.3ラウンド処理次に、図37のラウンド処理における各ラウンド関数RFrr=1,2,...,Nrについて説明する。図38は、図37の各ラウンド関数RFrにおける暗号処理アルゴリズムを表すブロック図である。各ラウンドrr=1,2,...,Nrにおいては、ラウンド関数RFrには4×4バイトの状態配列Br-1が入力される。ラウンド関数RFr1≦r≦Nr-1では、状態配列Br-1に対して、aバイト置換BubByte,b行シフトShiftRows,c列内ミックスMixColumns,d巡回鍵加算AddRoundKeyの4つの操作が順次実行される図38a。最後のラウンド関数RFNrでは、a,b,dの処理のみが実行される図38b。以下、a~dの各処理について簡単に説明する。1.3.1バイト置換SubByte図38a,bのSubByte関数は、状態配列Br-1の各成分に対して、Sボックス置換により非線形変換を行い状態配列M1を生成する。生成される状態配列M1の各成分をm1i,ji,j=0,1,2,3と記す。このSボックス置換は次のようにして行われる。まず、入力される1バイト8ビットの数字b∈{0,1}8b=br-1i,ji,j=0,1,2,3を、PX=X8X4X3X1を法多項式とする拡大体GF28の元とみなして、その逆元xを算出する。次に、逆元x∈{0,1}8を体GF2上の8次元ベクトルx=x0,x1,x2,x3,x4,x5,x6,x7と考えて、次式71bにより体GF2上の8次元ベクトルy=y0,y1,y2,y3,y4,y5,y6,y7を算出し、ベクトルyの各成分を連結して得られる8ビットのy=y0y1y2y3y4y5y6y7をSボックス置換の出力とする。実際に実装する場合には、上記式71a,71bを予め計算して求められる、次表のようなルックアップテーブルを使用する。表11のi行j列i,j=0,1,...,15の要素をS[i,j]と記す。表11において各要素の数値は16進数で表記されている。入力数字bb=br-1i,ji,j=0,1,2,3を2進数で表記したときのリテラルをb=b0b1b2b3b4b5b6b7とし、行指数をξ=b0b1b2b3、列指数をη=b4b5b6b7を構成し、m=S[ξ,η]により出力変数mm=m1i,ji,j=0,1,2,3を算出する。尚、出力変数mは、表要素S[ξ,η]を2進数で表記した数字列である。こうして求められた各変数m1i,ji,j=0,1,2,3をi,j成分とする4×4配列を状態配列M1とする。1.3.2行シフトShiftRows図38a,bのShiftRows関数は、上記状態配列M1の各行に対して左巡回シフトを行う関数である。状態配列M1をShiftRows関数により変換して得られる状態配列をM2、状態配列M2の各i,j成分をm2i,jと記す。ShiftRows関数は、状態配列M1の2行目は左へ1、3行目は左へ2、4行目は左へ3だけ巡回シフトする。すなわち、ShiftRows関数をLSRと記すと、ShiftRows関数は次式で表される。1.3.3列内ミックスMixColumns図38aのMixColumns関数は、上記状態行列M2の各列に対して成分混合を行う。MixColumn関数をMXCと記す。状態配列M2をMixColumns関数により変換して得られる状態配列をM3と記す。MixColumns関数は、状態配列M2の4つの列に対して、それぞれ、次のような操作を行う関数である。状態配列M2の第j列の成分をm20,j,m21,j,m22,j,m23,jm2i,j∈{0,1}8とする。この4つの要素のそれぞれをGF28の元とみなす。また、要素m20,j,m21,j,m22,j,m23,jを係数とする3次多項式をM2Xとし、3次多項式M3Xを次式により算出する。このようにして計算される3次多項式M3Xの各係数m30,j,m31,j,m32,j,m33,jを、新たな状態配列M3の第j列の4つの成分とする。実際に実装する場合には、MixColumns関数MXCは、上記計算と等価な次式の計算により算出される。1.3.4巡回鍵加算AddRoundKey図38a,bのAddRoundKey関数は、入力される状態配列M3r=Nrのときは状態配列M2と巡回鍵配列RKrとの排他的論理和をとり、次段の状態配列Brを生成する。配列Br,RKrの各要素をbri,j,kri,j∈{0,1}8i,j=0,1,2,3と記す。状態配列Brは次式により算出される。2復号アルゴリズム図39は、AES方式による復号アルゴリズムの流れを示すブロック図である。図40は、図39の各ラウンド関数RFr-1における暗号処理アルゴリズムを表すブロック図である。復号は、暗号化処理の逆を行えばよい。図39において、関数RFr-1は、図37,図38のラウンド関数RFrの逆関数であり、図40のようなアルゴリズムで表される。図40において、InvMixColumns関数、InvShiftRows関数、InvSubByte関数は、それぞれ、図38のMixColumns関数、ShiftRows関数、SubByte関数の逆関数である。尚、InvSubByte関数では、Sボックス置換の逆置換を実行するが、次表のようなルックアップテーブルが使用される。表12において、i行j列の表要素をS-1[i,j]と記す。表12の各要素は16進数で表記されている。入力数字mm=m1i,ji,j=0,1,2,3を2進数で表記したときのリテラルをm=m0m1m2m3m4m5m6m7とし、行指数をΞ=m0m1m2m3、列指数をZ=m4m5m6m7を構成し、b=S[Ξ,Z]により出力変数bb=br-1i,ji,j=0,1,2,3を算出する。尚、出力変数bは、表要素S[Ξ,Z]を2進数で表記した数字列である。こうして求められた各変数br-1i,ji,j=0,1,2,3をi,j成分とする4×4配列を状態配列Br-1とする。2AES方式に本発明を適用した暗号化アルゴリズム本発明に係る空間充填曲線を利用した暗号方式を、上記AES方式に組み込む場合、各ラウンド関数のSubByte関数の後段に、空間充填曲線を使用した非線形変換による内部ブロック暗号化関数Gを挿入すればよい。内部ブロック暗号化関数Gは、実施例5で説明したものと同様である。図41に、本実施例6の暗号化アルゴリズムにおける各ラウンド関数RFのアルゴリズムのブロック図を示す。図42に、本実施例6の復号アルゴリズムにおける各ラウンド関数RF-1のアルゴリズムのブロック図を示す。尚、暗号化アルゴリズム及び復号アルゴリズムの全体の流れは、図37,図39と同様であるため説明は省略する。図41におけるSubByte関数、ShiftRows関数、MixColumns関数、AddRoundKey関数は、図38と同様である。図42におけるInvSubByte関数、InvShiftRows関数、InvMixColumns関数、AddRoundKey関数は、図40と同様である。本実施例の暗号化アルゴリズムにおけるラウンド関数RFでは、SubByte関数により算出される状態配列M1を、内部ブロック暗号化関数Gにより4行4列の状態配列M1’に変換し、この状態配列M1’をShiftRows関数の入力とする。また、本実施例の復号アルゴリズムにおけるラウンド関数RF-1では、InvShiftRows関数により算出される状態配列M1’を、内部ブロック暗号化関数Gの逆関数G-1により4行4列の状態配列M1に変換し、この状態配列M1をInvSubByte関数の入力とする。それ以外については、通常のAES方式のラウンド関数RF,RF-1と同様である。図43は、実施例6の暗号処理装置の構成を表すブロック図である。図43の暗号処理装置は、暗号化処理機能と復号処理機能の両方の機能を有する。図43において、図35と同様の部分については、同符号を付している。巡回鍵生成部60は、図37,図39における鍵拡張関数を演算する部分であり、AES鍵Kから各巡回鍵Krを算出するモジュールである。初期最終処理部61は、図37における初期処理及び図39における最終処理の演算を行うモジュールである。ラウンド処理部62は、図37,図38,図39,図40におけるラウンド関数RF,RF-1の演算を行うモジュールである。ラウンド処理部62は、状態配列記憶部63、バイト置換部64、行シフト部65、列内ミックス部66、及び巡回鍵加算部67から構成されている。状態配列記憶部63は、図37,図39における各状態配列Brr=0,1,...,Nr及び状態配列Pを記憶する。バイト置換部64は、図41におけるSubByte関数及び図42におけるInvSubByte関数の演算を行う。暗号処理装置2は、図41における内部ブロック暗号化関数G及び図42における逆内部ブロック暗号化関数G-1関数の演算を行う。行シフト部65は、図41におけるShiftRows関数及び図42におけるInvShiftRows関数の演算を行う。列内ミックス部66は、図41におけるMixColumns関数及び図42におけるInvMixColumns関数の演算を行う。巡回鍵加算部67は、図41及び図42におけるAddRoundKey関数の演算を行う。図43の暗号処理装置2の構成は、図36に示した構成と同様である。暗号処理装置2は、暗号化の際には内部ブロック暗号化関数Gの演算を行い、復号の際には、内部ブロック暗号化関数Gの逆関数G-1の演算を行う。本実施例の場合、暗号化処理において、内部ブロック暗号化関数Gには、4行4列の状態配列M1が入力される。平文コード点生成部23は、状態配列M1の16個の成分m1i,j∈{0,1}8i,j=0,1,2,3を用いて16次元のベクトルYを構成し、これを平文コード点Yとして出力する。次に、暗号コード生成部24は、鍵曲線HKにより16次元ベクトルYを1次元序数空間内の序数iYに写像する関数LKYにより、ベクトルYから序数iYを算出する。ここで、序数iYは32ビットのスカラー変数である。関数LKYは、ベクトルYを、鍵曲線HKにより生成される一辺の長さがM=28の16次元超立方体を充填する空間充填曲線CM,NにおけるベクトルYに対応する点の序数iYに写像する関数である。関数LKYとしては、例えば、実施例1で説明したようなヒルベルト曲線を用いた写像関数を用いることができる。また、ヒルベルト曲線の代わりに、実施例4で説明したペアノ型曲線やその他の空間充填曲線を使用した写像関数を用いることもできる。次いで、序数iYをスカラー関数であるエンコード関数feにより変換した後、feiYを、関数LKの逆関数LK-1により変換し、16次元ベクトルV=V0,V1,...,V15を生成する。そして、ベクトルVの各成分V0,V1,...,V15を連結してこれを出力GM1,HKとする。即ち、GM1,HKは、次式の演算によって計算される。復号の際には、内部ブロック暗号化関数Gの逆関数G-1では上記演算の逆演算が実行される。このように、本発明に係る空間充填曲線を利用した暗号方式を、共通鍵暗号であるSES暗号方式のラウンド処理の格段に適用することによって、暗号の安全性をさらに向上させることができる。本実施例においては、実施例1,2で示したような公開鍵方式の暗号処理システムにおける曲線上演算部16図2,図3参照の演算処理に関して、他の例を用いる場合についての説明を行う。尚、本実施例における暗号化処理システムの構成については、曲線上演算部16の演算処理以外は実施例1の図1~図3に示したものと同様であるため説明は省略する。1実施例1,2の暗号処理システムの動作上述の実施例1,2の暗号処理システムの動作アルゴリズムを要約すると、次の通りである。動作アルゴリズム1Step1[メッセージ送信側メッセージ受信側]空間充填曲線の鍵番号Kを交換。Step2[メッセージ受信側]1N次元空間点X1をランダムに生成。2N次元空間点X2を次式により生成。3X1,X2を公開鍵として送信公開Step3[メッセージ送信側]1平文コードMes平文をN次元空間点Y平文点に単射。2N次元空間点V暗号文点,X3復号鍵を次式により生成。3V暗号文点,X3復号鍵を送信。Step4[メッセージ受信側]1V暗号文点,X3復号鍵からY平文点を次式により復元。2Y平文点を平文コードMes平文に単射。アルゴリズム終わり上記式79に式77a,78a,78bを代入することにより、Y平文点が完全に復元できるためには、エンコード関数feとデコード関数geとは互いに可換な単射関数であれば、どのような関数を選択してもよいことが分かる。2曲線上演算部16の演算処理の他の例1上記動作アルゴリズム1を変形し、可換な単射関数fe2,ge2と逆関数を有する単射関数可逆単射関数fe1を用いて、次のような動作アルゴリズムとしても、V暗号文点からY平文点を完全に復元することが可能である。動作アルゴリズム2Step1[メッセージ送信側メッセージ受信側]空間充填曲線の鍵番号Kを交換。Step2[メッセージ受信側]1N次元空間点X1をランダムに生成。2N次元空間点X2を次式により生成。3X1,X2を公開鍵として送信公開Step3[メッセージ送信側]1平文コードMes平文をN次元空間点Y平文点に単射。2N次元空間点V暗号文点,X3復号鍵を次式により生成。ここで、関数fe1としては、例えば、fe1x=axbmodpa,bは定数などの可逆単射関数を用いることができる。3V暗号文点,X3復号鍵及び関数fe1を送信。Step4[メッセージ受信側]1V暗号文点,X3復号鍵及び関数fe1の逆関数fe1-1からY平文点を次式により復元。2Y平文点を平文コードMes平文に単射。アルゴリズム終わり従って、実施例1において、式11の代わりに式80、式12a,12bの代わりに式81a,81b、式13の代わりに式82a,82bの演算を行うように変更することが可能である。2曲線上演算部16の演算処理の他の例2上記動作アルゴリズム1を変形し、次のような動作アルゴリズムとしても、V暗号文点からY平文点を完全に復元することが可能である。動作アルゴリズム3Step1[メッセージ送信側メッセージ受信側]空間充填曲線の鍵番号Kを交換。Step2[メッセージ受信側]1N次元空間点X1をランダムに生成。但し、X1は次の正則条件を満たすものとする。2N次元空間点X2を次式により生成。3X1,X2を公開鍵として送信公開Step3[メッセージ送信側]1平文コードMes平文をN次元空間点Y平文点に単射。2X1,X2からN次元空間点V暗号文点,X3復号鍵を次式により生成。3V暗号文点,X3復号鍵を送信。Step4[メッセージ受信側]1V暗号文点,X3復号鍵,X1からY平文点を次式により復元。2Y平文点を平文コードMes平文に単射。アルゴリズム終わり従って、実施例1において、式11の代わりに式84、式12a,12bの代わりに式85a~85c、式13の代わりに式86a~86cの演算を行うように変更することが可能である。"