(57)【特許請求の範囲】
【請求項１】
送信者Ｓと受信者Ｒが互いに秘密の配列鍵Ａｓ，Ａｒを所有し、
この配列鍵Ａｓ，Ａｒの指定に従って任意の長さの符号列ａをｎ×ｎのマトリックスｓに配列し、各行列の合計の剰余演算した値を求める操作を繰り返して２×ｎの圧縮符号列ｂに圧縮するマトリックス圧縮手段を用いて、
送信者Ｓが、
送信者Ｓの個人鍵Ｋｓを送信者Ｓの配列鍵Ａｓで最終までマトリックス圧縮し、２×ｎ桁の最終圧縮符号列（Ｅ）を公開鍵Ｋｐとして受信者Ｒに配布するステップと、
送信する文書Ｍに送信者Ｓの個人鍵Ｋｓを符号加算して暗号化し、各桁の加算値の剰余演算した値よりなる符号列を暗文Ｃとするステップと、
この暗文Ｃを送信者Ｓの配列鍵Ａｓで途中までマトリックス圧縮し、２×ｎ桁の中間圧縮符号列（ｋ）と暗文Ｃの残りよりなる符号列を暫定署名σ’とするステップと、
この暫定署名σ’を文書Ｍに添付して署名付き文書（Ｍ，σ’）を送信するステップと、
受信者Ｒが、
署名付き文書（Ｍ，σ’）を受信して文書Ｍと暫定署名σ’に分離し、文書Ｍを受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、２×ｎ桁の最終圧縮符号列Ｍ’ｒ（Ｅ）を生成するステップと、
この最終圧縮符号列Ｍ’ｒ（Ｅ）の上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を圧縮文書符号Ｍ’ａ，Ｍ’ｂとするステップと、
公開鍵Ｋｐの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を公開鍵符号Ｋｐａ，Ｋｐｂとするステップと、
圧縮文書符号Ｍ’ａ，Ｍ’ｂと公開鍵符号Ｋｐａ，Ｋｐｂをそれぞれ符号加算し、加算値の剰余演算した値を署名認証符号σ”ａ，σ”ｂとするステップと、
暫定署名σ’を受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、２×ｎ桁の最終圧縮符号列σ’（Ｅ）を生成してそれを受信署名σとするステップと、
この受信署名σの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を受信署名符号σａ，σｂとするステップと、
前記署名認証符号σ”ａ，σ”ｂと受信署名符号σａ，σｂを比較し、一致すれば署名の正当性を認証し、一致しなければ否認するステップと、
で構成してなる電子署名の作成・検証方法。
【請求項２】
前記送信者Ｓが、
文書Ｍを送信者Ｓの配列鍵Ａｓで最終までマトリックス圧縮し、段階別に２×ｎ桁の圧縮符号列Ｍ’ｓ（１），…Ｍ’ｓ（ｋ），…Ｍ’ｓ（Ｅ）を逐次生成するステップと、
これらの圧縮符号列Ｍ’ｓ（１），…Ｍ’ｓ（ｋ），…Ｍ’ｓ（Ｅ）を符号加算して統合し、各桁の加算値の剰余演算した値よりなる符号列を送信者文書符号列Ｍｓとし、これを文書Ｍに添付して送信するステップと、
前記受信者Ｒが、
受信した文書Ｍを受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、段階別に２×ｎ桁の圧縮符号列Ｍ’ｒ（１），…Ｍ’ｒ（ｋ），…Ｍ’ｒ（Ｅ）を逐次生成するステップと、
これらの圧縮符号列Ｍ’ｒ（１），…Ｍ’ｒ（ｋ），…Ｍ’ｒ（Ｅ）を符号加算して統合し、各桁の加算値の剰余演算した値よりなる符号列を受信者文書符号列Ｍｒとするステップと、
この受信者文書符号列Ｍｒの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を文書認証符号Ｍｒａ，Ｍｒｂとするステップと、
受信した送信者文書符号列Ｍｓの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を受信文書符号Ｍｓａ，Ｍｓｂとするステップと、
前記文書認証符号Ｍｒａ，Ｍｒｂと受信文書符号Ｍｓａ，Ｍｓｂを比較し、一致すれば文書の正当性を認証し、一致しなければ否認するステップと、
を備えてなる請求項１に記載の電子署名の作成・検証方法。
【請求項３】
前記送信者Ｓの配列鍵Ａｓで配列したマトリックスｓの各行列の合計が所定の剰余演算の法となる値の倍数となる攪乱符号Ｃｄを生成し、それを符号加算して暫定署名σ’を攪乱してなる請求項１に記載の電子署名の作成・検証方法。
【請求項４】
前記文書Ｍが個人鍵Ｋｓより長いときは、ｎ桁の文書Ｍの隣接符号同士の加算値の剰余演算した値よりなるｎ−１桁の短縮符号列を生成する処理を繰り返しながら文書Ｍの長さを個人鍵Ｋｓの長さに一致させてなる請求項１に記載の電子署名の作成・検証方法。
【請求項５】
前記各行列の合計、各桁の加算値および隣接符号同士の加算値の剰余演算は１０、また、文字列を使用する場合は１００または１００００を法とし、ＡＳＣＩＩコードを使用する場合には７Ｆを法とする剰余演算を行い、商が０以外の整数となる場合は余りに２０を加算した値を求めるように構成した請求項１乃至４のうちの１に記載の電子署名の作成・検証方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、電子化された文書に添付して改ざんや否認、なりすましを防止する電子署名に関し、特にその作成方法とその検証方法に関する。
【０００２】
【発明が解決しようとする課題】
電子署名は、情報の送信者が送信する文書を圧縮してメッセージダイジェストを作成し、それを自分の個人鍵で暗号化して署名文とし、この署名文を文書に添付して送信する。
送信者は、登録機関に登録済みの公開鍵を受信者に通知するか、あるいは同時に自分の公開鍵を送信して受信者に提示する。
【０００３】
受信者は、送信者の公開鍵で署名文を復号化し、メッセージダイジェストを取出す。
また、受信した文書を圧縮してメッセージダイジェストを生成し、これら２つのメッセージダイジェストを比較して文書の正当性を検証する。
【０００４】
公開鍵暗号化方式の開発から副次的に生れた電子署名は、非常に大きな桁数の数を因数分解するのは難しいという考え方に基づいて文書の暗号化や復号を行うので、演算処理量が比較的大きくなり、そのため、署名文の作成やメッセージダイジェストの取出しに時間がかかり過ぎて実用上問題となることがある。
【０００５】
そこで本出願人は、このような問題に対処するために、情報をマトリックスに配列して圧縮する方法を提案し、これにより文書の圧縮と暗号化や復号をより効率的に行う電子署名の作成および検証方法を先に出願している。
ところが、この方法で暗号通信を可能にするためには、情報の送信者と受信者が圧縮アルゴリズムの他に、圧縮時の配列パターンを指定する配列鍵を共有する必要がある。
さらに、暗号通信の安全を確保するためには、当事者以外の第三者から配列鍵を秘匿する必要がある。
【０００６】
配列鍵は、多くの相手と暗号通信を行うようになると、それだけ数が増加し、その管理が大変になる。
また、送信者と受信者が毎回同じ配列鍵を使用すると、総当り攻撃や有効な攻撃方法を見付けて送信者の個人鍵を知られる危険性があるため、同じ相手でも随時異なる配列鍵を使用するのが望ましい。
【０００７】
また、情報の送信者が配列鍵を作成して相手に配布する場合、確実に、しかも途中で第三者に複製されることなく相手に届くようにしなければならない。
そのため、このマトリックス圧縮による電子署名の作成・検証方法を実現するためには、障害となるこれらの問題を解消する必要がある。
【０００８】
【課題を解決するための手段】
そこで本発明は、このような配列鍵の管理と配布の問題を解消するための新たな電子署名の作成・検証方法を提案するものである。
すなわち、本発明は、
送信者Ｓと受信者Ｒが互いに秘密の配列鍵Ａｓ，Ａｒを所有し、
この配列鍵Ａｓ，Ａｒの指定に従って任意の長さの符号列ａをｎ×ｎのマトリックスｓに配列し、各行列の合計の剰余演算した値を求める操作を繰り返して２×ｎの圧縮符号列ｂに圧縮するマトリックス圧縮手段を用いて、
送信者Ｓが、
送信者Ｓの個人鍵Ｋｓを送信者Ｓの配列鍵Ａｓで最終までマトリックス圧縮し、
２×ｎ桁の最終圧縮符号列（Ｅ）を公開鍵Ｋｐとして受信者Ｒに配布するステップと、
【０００９】
送信する文書Ｍに送信者Ｓの個人鍵Ｋｓを符号加算して暗号化し、各桁の加算値の剰余演算した値よりなる符号列を暗文Ｃとするステップと、
この暗文Ｃを送信者Ｓの配列鍵Ａｓで途中までマトリックス圧縮し、２×ｎ桁の中間圧縮符号列（ｋ）と暗文Ｃの残りよりなる符号列を暫定署名σ’とするステップと、
この暫定署名σ’を文書Ｍに添付して署名付き文書（Ｍ，σ’）を送信するステップと、
【００１０】
受信者Ｒが、
署名付き文書（Ｍ，σ’）を受信して文書Ｍと暫定署名σ’に分離し、文書Ｍを受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、２×ｎ桁の最終圧縮符号列Ｍ’ｒ（Ｅ）を生成するステップと、
この最終圧縮符号列Ｍ’ｒ（Ｅ）の上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を圧縮文書符号Ｍ’ａ，Ｍ’ｂとするステップと、
【００１１】
公開鍵Ｋｐの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を公開鍵符号Ｋｐａ，Ｋｐｂとするステップと、
圧縮文書符号Ｍ’Ａ，Ｍ’ｂと公開鍵符号Ｋｐａ，Ｋｐｂをそれぞれ符号加算し、加算値の剰余演算した値を署名認証符号σ”ａ，σ”ｂとするステップと、暫定署名σ’を受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、２×ｎ桁の最終圧縮符号列σ’（Ｅ）を生成してそれを受信署名σとするステップと、
【００１２】
この受信署名σの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を受信署名符号σａ，σｂとするステップと、
前記署名認証符号σ”ａ，σ”ｂと受信署名符号σａ，σｂを比較し、一致すれば署名の正当性を認証し、一致しなければ否認するステップと、
で構成してなる電子署名の作成・検証方法である。
【００１３】
さらに本発明は、
前記送信者Ｓが、
文書Ｍを送信者Ｓの配列鍵Ａｓで最終までマトリックス圧縮し、段階別に２×ｎ桁の圧縮符号列Ｍ’ｓ（１），…Ｍ’ｓ（ｋ），…Ｍ’ｓ（Ｅ）を逐次生成するステップと、
これらの圧縮符号列Ｍ’ｓ（１），…Ｍ’ｓ（ｋ），…Ｍ’ｓ（Ｅ）を符号加算して統合し、各桁の加算値の剰余演算した値よりなる符号列を送信者文書符号列Ｍｓとし、これを文書Ｍに添付して送信するステップと、
【００１４】
前記受信者Ｒが、
受信した文書Ｍを受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、段階別に２×ｎ桁の圧縮符号列Ｍ’ｒ（１），…Ｍ’ｒ（ｋ），…Ｍ’ｒ（Ｅ）を逐次生成するステップと、
これらの圧縮符号列Ｍ’ｒ（１），…Ｍ’ｒ（ｋ），…Ｍ’ｒ（Ｅ）を符号加算して統合し、各桁の加算値の剰余演算した値よりなる符号列を受信者文書符号列Ｍｒとするステップと、
【００１５】
この受信者文書符号列Ｍｒの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を文書認証符号Ｍｒａ、Ｍｒｂとするステップと、
受信した送信者文書符号列Ｍｓの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値の剰余演算した値を受信文書符号Ｍｓａ、Ｍｓｂとするステップと、
前記文書認証符号Ｍｒａ，Ｍｒｂと受信文書符号Ｍｓａ，Ｍｓｂを比較し、一致すれば文書の正当性を認証し、一致しなければ否認するステップと、
を備えてなる電子署名の作成・検証方法である。
【００１６】
さらに本発明は、前記送信者Ｓの配列鍵Ａｓで配列したマトリックスｓの各行列の合計が所定の剰余演算の法となる値の倍数となる攪乱符号Ｃｄを生成し、それを符号加算して暫定署名σ’を攪乱してなる電子署名の作成・検証方法である。
【００１７】
さらに本発明は、前記文書Ｍが個人鍵Ｋｓより長いときは、ｎ桁の文書Ｍの隣接符号同士の加算値の剰余演算した値よりなるｎ−１桁の短縮符号列を生成する処理を繰り返しながら文書Ｍの長さを個人鍵Ｋｓの長さに一致させてなる電子署名の作成・検証方法である。
【００１８】
さらに本発明は、前記各行列の合計、各桁の加算値および隣接符号同士の加算値の剰余演算は１０、また、文字列を使用する場合は１００または１００００を法とし、ＡＳＣＩＩコードを使用する場合には７Ｆを法とする剰余演算を行い、商が０以外の整数となる場合は余りに２０を加算した値を求めるように構成した電子署名の作成・検証方法である。
【００１９】
【発明の実施の形態】
以下に図面を参照して本発明の実施の形態について説明する。
図１に、本発明を実施した電子署名の作成・検証方法の処理フローを示す。
電子署名の作成・検証方法は、まず、送信者Ｓの個人鍵Ｋｓを送信者Ｓの配列鍵Ａｓで最終までマトリックス圧縮し、２×ｎ桁の最終圧縮符号列（Ｅ）を公開鍵Ｋｐとして受信者Ｒに配布する（ステップ１０１）。
【００２０】
次に、送信する文書Ｍに送信者Ｓの個人鍵Ｋｓを符号加算して暗号化し、各桁の加算値を１０で割った余りよりなる符号列を暗文Ｃとする（ステップ１０２）。
次に、この暗文Ｃを送信者Ｓの配列鍵Ａｓで途中までマトリックス圧縮し、２×ｎ桁の中間圧縮符号列（ｋ）と暗文Ｃの残りよりなる符号列を暫定署名σ’とする（ステップ１０３）。
【００２１】
次に、送信者Ｓの配列鍵Ａｓで配列したｎ×ｎのマトリックスｓの各行列の合計が１０の倍数となる攪乱符号列Ｃｄを生成し、それを暫定署名σ’に符号加算して撹乱し、各桁の加算値を１０で割った余りよりなる符号列を攪乱暫定署名σ’ｄとする（ステップ１０４）。
次に、文書Ｍを送信者Ｓの配列鍵Ａｓで最終までマトリックス圧縮し、段階別に２×ｎ桁の圧縮符号列Ｍ’ｓ（１），…Ｍ’ｓ（ｋ）、…Ｍ’ｓ（Ｅ）を逐次生成する（ステップ１０５）。
【００２２】
次に、これらの圧縮符号列Ｍ’ｓ（１）、…Ｍ’ｓ（ｋ），…Ｍ’ｓ（Ｅ）を符号加算して統合し、各桁の加算値を１０で割った余りよりなる符号列を送信者文書符号列Ｍｓとし、これと攪乱暫定署名σ’ｄを文書Ｍに添付して署名付き文書（Ｍ，Ｍｓ，σ’ｄ）を送信する（ステップ１０６）。
【００２３】
受信者Ｒは、署名付き文書（Ｍ，Ｍｓ，σ’ｄ）を受信して文書Ｍと送信者文書符号列Ｍｓと攪乱暫定署名σ’ｄに分離し、文書Ｍを受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、段階別に２×ｎ桁の圧縮符号列Ｍ’ｒ（１），…Ｍ’ｒ（ｋ），…Ｍ’ｒ（Ｅ）を逐次生成する（ステップ２０１）。
次に、最終圧縮符号列Ｍ’ｒ（Ｅ）の上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値を１０で割った余りを圧縮文書符号Ｍ’ａ，Ｍ’ｂとする（ステップ２０２）。
【００２４】
次に、公開鍵Ｋｐの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値を１０で割った余りを公開鍵符号Ｋｐａ，Ｋｐｂとする（ステップ２０３）。
ここで公開鍵符号Ｋｐａ＝Ｋｐｂでないときは、公開鍵Ｋｐを不正とする。
次に、圧縮文書符号Ｍ’ａ，Ｍ’ｂと公開鍵符号Ｋｐａ，Ｋｐｂをそれぞれ符号加算し、加算値を１０で割った余りを署名認証符号σ”ａ，σ”ｂとする（ステップ２０４）。
署名認証符号σ”ａ，σ”ｂは、最終圧縮符号列Ｍ’ｒ（Ｅ）と公開鍵Ｋｐを先に符号加算してからその上下ｎ桁をそれぞれ符号化してもよい。
【００２５】
次に、攪乱暫定署名σ’ｄを受信者Ｒの配列鍵Ａｒで最終までマトリックス圧縮し、２×ｎ桁の最終圧縮符号列σ”ｄ（Ｅ）を生成してそれを受信署名σとする（ステップ２０５）。
次に、この受信署名σの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値を１０で割った余りを受信署名符号σａ，σｂとする（ステップ２０６）。
最後に、署名認証符号σ”ａ，σ”ｂと受信署名符号σａ，σｂを比較し、一致すれば文書Ｍに対する署名の正当性を認証し、一致しなければ否認する（ステップ２０７）。
これにより、送信者Ｓの否認となりすましを防止する。
【００２６】
次に、ステップ２０１で生成した圧縮符号列Ｍ’ｒ（１）、…Ｍ’ｒ（ｋ）、…Ｍ’ｒ（Ｅ）を符号加算して統合し、各桁の加算値を１０で割った余りよりなる符号列を受信者文書符号列Ｍｒとする（ステップ２０８）。
次に、この受信者文書符号列Ｍｒの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値を１０で割った余りを文書認証符号Ｍｒａ，Ｍｒｂとする（ステップ２０９）。
【００２７】
次に、受信した送信者文書符号列Ｍｓの上下ｎ桁をそれぞれ符号加算して符号化し、各桁の加算値を１０で割った余りを受信文書符号Ｍｓａ，Ｍｓｂとする（ステップ２１０）。
最後に、文書認証符号Ｍｒａ，Ｍｒｂと受信文書符号Ｍｓａ，Ｍｓｂを比較し、一致すれば文書の正当性を認証し、一致しなければ否認する（ステップ２１１）
これにより、文書Ｍの改ざんを防止する。
【００２８】
個人鍵Ｋｓは、送信する文書Ｍと同じ長さの１０進または１６進の乱数符号列を生成し、これを送信者Ｓが自分以外には秘密に保管する。
送信する文書Ｍが個人鍵Ｋｓより長いときは、符号列短縮処理を行って文書Ｍの長さを個人鍵Ｋｓの長さに一致させる。
【００２９】
符号列短縮処理は、ｎ桁の符号列（０）の隣接符号同士を加えて１０で割った余りよりなるｎ−１桁の短縮符号列（１）を生成し、さらに短縮符号列（１）の隣接符号同士を加えて１０で割った余りよりなるｎ−２桁の短縮符号列（２）を生成する処理を繰り返し、符号列の桁数を１桁ずつ減じながら所望の長さに短縮する。
これにより、長大な文書を短い個人鍵で暗号化できるようになり、その生成に必要な乱数を発生させるための膨大な計算量を少なくして個人鍵の生成効率を高めることができる。
【００３０】
図２に、符号列短縮処理を説明する符号列の具体例を示す。
符号列短縮処理は、例えば、符号列（０）の隣接符号、１と２、２と３、３と４、…を加えて１０で割った余り３、５、７、…よりなる短縮符号列（１）を生成し、さらに短縮符号列（１）の隣接符号、３と５、５と７、…を加えて１０で割った余り８、２、…よりなる短縮符号列（２）を生成する処理を５回繰り返して２０桁の符号列（０）を１５桁の短縮符号列（５）に短縮する。
【００３１】
図３に、マトリックス圧縮処理のフローチャートを示す。
マトリックス圧縮処理は、まず、任意の長さの符号列ａの先頭ｎ×ｎ桁を配列鍵Ａｓ（１）あるいはＡｒ（１）の指定に従ってｎ×ｎのマトリックスｓにランダムに配列し、各行列の合計値を１０で割った余りよりなる２×ｎ桁の初回圧縮符号列ｂ（１）を生成する（ステップ３０１）。
次に、符号列ａに続きがあるかどうかを判定し（ステップ３０２）、続きがなければ処理を終了する。
【００３２】
続きがあれば、前のステップで生成した２×ｎ桁の圧縮符号列ｂ（ｋ−１）と符号列ａの続きｎ×（ｎ−２）桁を配列鍵Ａｓ（ｋ）あるいはＡｒ（ｋ）の指定に従ってｎ×ｎのマトリックスｓにランダムに配列し、各行列の合計値を１０で割った余りよりなる２×ｎ桁の中間圧縮符号列ｂ（ｋ）を生成してステップ３０２に戻る（ステップ３０３）。
【００３３】
マトリックス圧縮処理は、ｎ×ｎのマトリックスｓの全ての枠が埋めつくされたら配列処理を終了する。
このとき、符号列ａの残りがｎ×（ｎ−２）の整数倍でない場合は、意味のない捨て符号で空枠を埋める。
【００３４】
配列鍵Ａは、マトリックスｓに配列する符号列の配列パターンをランダムに指定するもので、送信者Ｓと受信者Ｒでそれぞれ異なる配列パターンを秘密に所有し、初回と２回目以降の配列においても随時異なる配列パターンを使用する。
送信者Ｓと受信者Ｒが毎回同じ配列パターンを使用すると、受信者Ｒが送信者Ｓの公開鍵Ｋｐを知っているため、例えば、総当り攻撃で送信者Ｓの個人鍵Ｋｓを割り出すことは不可能ではない。
【００３５】
すなわち、従来の公開鍵方式と同様に膨大な演算時間を必要とするが、個人鍵Ｋｓの組合せをマトリックスｓに順次入力して公開鍵Ｋｐと同じになる組合せを見つけ、それで文書Ｍを暗号化してマトリックス圧縮した結果が受信署名σと同じになれば、受信者Ｒが送信者Ｓの個人鍵Ｋｓを知ることになる。
そのため、送信者Ｓと受信者Ｒが異なる配列パターンを使用し、さらに随時異なる配列パターンを使用することにより、このような攻撃に対する個人鍵Ｋｓの安全性を確保する。
【００３６】
マトリックスｓのサイズは、符号列ａを１０進数とする場合、ｎ＝１２〜２４が適当である。
また、符号列ａを１６進数とする場合、ｎ＝２０〜４０が適当である。
これにより、１０進数の場合は２４〜４８桁の圧縮符号列ｂが生成され、１６進数の場合は４０〜８０桁の圧縮符号列ｂが生成される。
【００３７】
攪乱符号Ｃｄは、マトリックスｓの各行列の合計が１０の倍数となる符号列を配列鍵Ａの指定に従ってマトリックスｓに配列する。
従って、ｎ×ｎのマトリックスｓに配列した攪乱符号Ｃｄを圧縮すると、２×ｎの圧縮符号列ｂの各桁の符号は全て０となる。
暫定署名σ’は、そのままでは個人鍵Ｋｓの一部が検証者に知られることになるので、このように攪乱符号Ｃｄを符号加算して攪乱する。
【００３８】
また、攪乱符号Ｃｄの各行列の合計値の２桁目の数は、ｎの桁数が１２以上であれば１０進数の場合０〜９の範囲を設定できるので、利用者だけが知る任意の秘密数を指定できる。
この秘密数は、検証者や第三者が知り得ないので、検証者や第三者によって不正が行われた場合の証明の根拠になる。
【００３９】
さらに、攪乱符号Ｃｄで攪乱した暫定署名σ’の各行列の合計値の２桁目の数も同様に１０進数の場合０〜９の範囲を設定できるので、検証者が確認できる任意の秘密数を指定することができる。
この秘密数は、あらかじめ検証者に知らせておくことにより、認証などに利用することができる。
【００４０】
以下に本発明を実施した電子署名の作成および検証方法の具体例を説明する。
ここでは説明を簡略にするため、マトリックスｓのサイズを３×３とし、文書Ｍと個人鍵Ｋｓをそれぞれ１５桁の１０進数とし、文書Ｍ＝１２３４５６７８９０１２３４５、個人鍵Ｋｓ＝１９４３５６８３５２７０３１８として説明する。
【００４１】
図４に、公開鍵Ｋｐの作成手順のデータフローを示す。
公開鍵Ｋｐは、まず、個人鍵Ｋｓの先頭９桁＝１９４３５６８３５を配列鍵Ａｓ（１）の指定に従ってマトリックスｓに配列し、初回圧縮符号列Ｋｓ’（１）＝５２７３９２を生成する。
配列鍵Ａｓ（１）の枠内の数字は、その枠に配置すべき符号の番号を示し、例えば左上隅の枠には個人鍵Ｋｓの先頭から３番目の符号＝４を配置することを意味する。
【００４２】
次に、初回圧縮符号列Ｋｓ’（１）＝５２７３９２と個人鍵Ｋｓの続き３桁＝２７０を今度は配列鍵Ａｓ（２）の指定に従ってマトリックスｓに配列し、中間圧縮符号列Ｋｓ’（２）＝４４９４３０を生成する。
次に、中間圧縮符号列Ｋｓ’（２）＝４４９４３０と個人鍵Ｋｓの残り３桁＝３１８を次の配列鍵Ａｓ（３）の指定に従ってマトリックスｓに配列し、最終圧縮符号列Ｋｓ’（３）＝５０１０８８を生成する。
この最終圧縮符号列Ｋｓ’（３）を公開鍵Ｋｐとする。
【００４３】
図５に、攪乱暫定署名σ’ｄの作成手順のデータフローを示す。
攪乱暫定署名σ’ｄは、まず、個人鍵Ｋｓ＝１９４３５６８３５２７０３１８と文書Ｍ＝１２３４５６７８９０１２３４５を符号加算して暗文Ｃ＝２１７７０２５１４２８２６５３を生成する。
次に、暗文Ｃの先頭９桁＝２１７７０２５１４を配列鍵Ａｓ（１）の指定に従ってマトリックスｓに配列し、初回圧縮符号列Ｃ’（１）＝９４６０３６を生成する。
【００４４】
次に、初回圧縮符号列Ｃ’（１）＝９４６０３６と暗文Ｃの続き３桁＝２８２を今度は配列鍵Ａｓ（２）の指定に従ってマトリックスｓに配列し、中間圧縮符号列Ｃ’（２）＝５１４０７３を生成する。
この中間圧縮符号列Ｃ’（２）＝５１４０７３と暗文Ｃの残り３桁＝６５３よりなる符号列を暫定署名σ’＝５１４０７３６５３とする。
次に、攪乱符号Ｃｄ＝５７３３８０２７５を生成して暫定署名σ’＝５１４０７３６５３に符号加算し、攪乱暫定署名σ’ｄ＝０８７３５３８２８を生成する。
【００４５】
図６に、署名認証符号σ”ａ，σ”ｂの作成手順のデータフローを示す。
署名認証符号σ”ａ，σ”ｂは、まず、文書Ｍの先頭９桁＝１２３４５６７８９を配列鍵Ａｒ（１）の指定に従ってマトリックスｓに配列し、初回圧縮符号列Ｍ’ｒ（１）＝６９０１４０を生成する。
次に、初回圧縮符号列Ｍ’ｒ（１）＝６９０１４０と文書Ｍの続き３桁＝０１２を今度は配列鍵Ａｒ（２）の指定に従ってマトリックスｓに配列し、中間圧縮符号列Ｍ’ｒ（２）＝０９４６７０を生成する。
【００４６】
次に、中間圧縮符号列Ｍ’ｒ（２）＝０９４６７０と文書Ｍの残り３桁＝３４５を次の配列鍵Ａｒ（３）の指定に従ってマトリックスｓに配列し、最終圧縮符号列Ｍ’ｒ（３）＝１８９２１５を生成する。
次に、最終圧縮符号列Ｍ’ｒ（３）＝１８９２１５の上３桁＝１８９と下３桁＝２１５の各桁を符号加算して圧縮文書符号Ｍ’ａ＝８、Ｍ’ｂ＝８を求める。次に、公開鍵Ｋｐ＝５０１０８８の上３桁＝５０１と下３桁＝０８８の各桁を符号加算して公開鍵符号Ｋｐａ＝６、Ｋｐｂ＝６を求める。
次に、圧縮文書符号Ｍ’ａ＝８、Ｍ’ｂ＝８と公開鍵符号Ｋｐａ＝６、Ｋｐｂ＝６を符号加算して署名認証符号σ”ａ＝４、σ”ｂ＝４を求める。
【００４７】
図７に、受信署名符号σａ，σｂの作成手順のデータフローを示す。
受信署名符号σａ，σｂは、まず、受信した攪乱暫定署名σ’ｄ＝０８７３５３８２８を配列鍵Ａｒ（３）の指定に従ってマトリックスｓに配列し、最終圧縮符号列σ’ｄ（３）＝１２１３７４を生成してこれを受信署名σとする。
次に、受信署名σ＝１２１３７４の上３桁＝１２１と下３桁＝３７４の各桁を符号加算して受信署名符号σａ＝４、σｂ＝４を求める。
【００４８】
図８に、送信者文書符号列Ｍｓの作成手順のデータフローを示す。
送信者文書符号列Ｍｓは、まず、送信する文書Ｍの先頭９桁＝１２３４５６７８９を配列鍵Ａｓ（１）の指定に従ってマトリックスｓに配列し、初回圧縮符号列Ｍ’ｓ（１）＝４２９７４４を生成する。
次に、初回圧縮符号列Ｍ’ｓ（１）＝４２９７４４と文書Ｍの続き３桁＝０１２を今度は配列鍵Ａｓ（２）の指定に従ってマトリックスｓに配列し、中間圧縮符号列Ｍ’ｓ（２）＝１７５６４３を生成する。
【００４９】
次に、中間圧縮符号列Ｍ’ｓ（２）＝１７５６４３と文書Ｍの残り３桁＝３４５を次の配列鍵Ａｓ（３）の指定に従ってマトリックスｓに配列し、最終圧縮符号列Ｍ’ｓ（３）＝６２０３９６を生成する。
次に、これらの初回圧縮符号列Ｍ’ｓ（１）＝４２９７４４と中間圧縮符号列Ｍ’ｓ（２）＝１７５６４３と最終圧縮符号列Ｍ’ｓ（３）＝６２０３９６を符号加算して送信者文書符号列Ｍｓ＝１１４６７３を求める。
【００５０】
図９に、受信文書符号Ｍｓａ，Ｍｓｂの作成手順のデータフローを示す。
受信文書符号Ｍｓａ，Ｍｓｂは、送信者文書符号列Ｍｓ＝１１４６７３の上３桁＝１１４と下３桁＝６７３の各桁を符号加算して受信文書符号Ｍｓａ＝６、Ｍｓｂ＝６を求める。
【００５１】
図１０に、文書認証符号Ｍｒａ，Ｍｒｂの作成手順のデータフローを示す。
文書認証符号Ｍｒａ，Ｍｒｂは、まず、先に求めた文書Ｍの初回圧縮符号列Ｍ’ｒ（１）＝６９０１４０と中間圧縮符号列Ｍ’ｒ（２）＝０９４６７０と最終圧縮符号列Ｍ’ｒ（３）＝１８９２１５を符号加算して受信者文書符号列Ｍｒ＝７６３９２５を求める。
次に、受信者文書符号列Ｍｒ＝７６３９２５の上３桁＝７６３と下３桁＝９２５の各桁を符号加算して文書認証符号Ｍｒａ＝６、Ｍｒｂ＝６を求める。
【００５２】
図１１に、文字コード（ＪＩＳコード）の１６ビット符号を一単位として、所定のマトリックスに入力した場合の処理例を示す。
図中、送信者の配列鍵を省略して示しているが、文書Ｍを順次マトリックスに文字入力して２バイトの文字コードの１６進数４桁に変換し、各桁の合計値を
１００００で割った余り（ｍｏｄ１００００）を、それぞれ縦列と横列の剰余演算した値を求めて、前記と同様の手順により検証する。
また、ＡＳＣＩＩコードの場合は、制御用コードを除く文字コード部分２０〜７Ｅ（１６進数）を加算して７Ｆを法とする剰余演算を行い、商が０以外の整数となる場合は、余りの値に２０（１６進数）を加算すれば前記と同様の手順により使用することが可能である。
【００５３】
【発明の効果】
以上説明したように、本発明の電子署名の作成・検証方法は、送信者Ｓと受信者Ｒが互いに秘密の配列鍵Ａｓ，Ａｒを所有し、文書Ｍをマトリックス圧縮した圧縮符号列Ｍ’ｒを符号化して圧縮文書符号Ｍ’ａ，Ｍ’ｂを生成し、個人鍵Ｋｓをマトリックス圧縮した公開鍵Ｋｐを符号化して公開鍵符号Ｋｐａ，Ｋｐｂを生成し、さらに圧縮文書符号Ｍ’ａ，Ｍ’ｂと公開鍵符号Ｋｐａ，Ｋｐｂを符号加算して署名認証符号σ”ａ，σ”ｂを生成すると共に、文書Ｍと個人鍵Ｋｓを符号加算してマトリックス圧縮した受信署名σを符号化して受信署名符号σａ，σｂを生成し、この署名認証符号σ”ａ，σ”ｂと受信署名符号σａ，σｂを比較して署名の正当性を検証する。
【００５４】
また、文書Ｍを送信者Ｓの配列鍵Ａｓでマトリックス圧縮した圧縮符号列Ｍ’ｓを統合した送信者文書符号列Ｍｓを符号化して受信文書符号Ｍｓａ，Ｍｓｂを生成すると共に、文書Ｍを受信者Ｒの配列鍵Ａｒでマトリックス圧縮した圧縮符号列Ｍ’ｒを統合した受信者文書符号列Ｍｒを符号化して文書認証符号Ｍｒａ，Ｍｒｂを生成し、この文書認証符号Ｍｒａ，Ｍｒｂと受信文書符号Ｍｓａ，Ｍｓｂを比較して文書の正当性を検証する。
【００５５】
これは要するに、文書Ｍをマトリックスに配列した縦計、横計を符号化した圧縮文書符号Ｍ’ａ，Ｍ’ｂと個人鍵Ｋｓをマトリックスに配列した縦計、横計を符号化した公開鍵符号Ｋｐａ，Ｋｐｂを符号加算した署名認証符号σ”ａ，σ”ｂと、文書Ｍと個人鍵Ｋｓを符号加算してマトリックス圧縮した受信署名σを符号化した受信署名符号σａ，σｂは、もともと同じ符号列を演算方向と手順を入れ替えて処理した結果なので、途中の配列パターンが違っても、マトリックスの入力符号が同じであれば常に等しくなる。
【００５６】
また、文書Ｍを送信者Ｓの配列鍵Ａｓでマトリックスに配列した縦計、横計を符号化した受信文書符号Ｍｓａ，Ｍｓｂと、文書Ｍを受信者Ｒの配列鍵Ａｒでマトリックスに配列した縦計、横計を符号化した文書認証符号Ｍｒａ，Ｍｒｂは、同様に途中の配列パターンが違っても、マトリックスの入力符号が同じであれば常に等しくなる。
従って、本発明によれば、送信者と受信者が配列鍵を共有しなくてもそれぞれ自分の配列鍵を用いて電子署名の作成と検証ができるようになるので、配列鍵の管理と配布の問題が解消する。
【００５７】
なお、所定マトリックスより常に文書量が多くなるような構成にすれば、文書の短縮処理が常に行われるようになる。
この操作が行われることにより、文書の改ざん部分が隣接符号に波及するため、一部の改ざんでも多数の隣接符号が変化してしまうので、改ざんの検出が容易になるとともに、不正が極めて難しくなるという利点がある。
【００５８】
また、公開鍵を公開する以外に共有すべきものが一切ないので、多くの関係者が個別に個人鍵を所有することにより、電子署名文書の双方向のやり取りが自由にできるようになる。
また、送信者が配列鍵を作成して受信者に配布する主従の関係がなくなるので、送信者と受信者の間の取引が対等になる。
【図面の簡単な説明】
【図１】本発明を実施した電子署名の作成・検証方法の処理フローである。
【図２】本発明を実施した符号列短縮処理を説明する符号列の具体例である。
【図３】本発明を実施したマトリックス圧縮処理のフローチャートである。
【図４】本発明を実施した公開鍵の作成手順のデータフローである。
【図５】本発明を実施した攪乱暫定署名の作成手順のデータフローである。
【図６】本発明を実施した署名認証符号の作成手順のデータフローである。
【図７】本発明を実施した受信署名符号の作成手順のデータフローである。
【図８】本発明を実施した送信者文書符号列の作成手順のデータフローである。
【図９】本発明を実施した受信文書符号の作成手順のデータフローである。
【図１０】本発明を実施した文書認証符号の作成手順のデータフローである。
【図１１】文字コードをマトリックスに入力した場合の処理例である。
【符号の説明】
Ｃ              暗文
Ｃｄ            攪乱符号
Ａ              配列鍵
Ｋｐ            公開鍵
Ｋｐａ，Ｋｐｂ  公開鍵公開鍵符号
Ｋｓ            個人鍵
Ｍ              文書
Ｍｒ            受信者文書符号列
Ｍｒａ，Ｍｒｂ  文書認証符号
Ｍｓ            送信者文書符号列
Ｍｓａ，Ｍｓｂ  受信文書符号
Ｍ’            圧縮符号列
Ｍ’ａ，Ｍ’ｂ  圧縮文書符号
Ｒ              受信者
Ｓ              送信者
ａ              符号列
ｂ              圧縮符号列
ｓ              マトリックス
σ              受信署名
σａ，σｂ      受信署名符号
σ’            暫定署名
σ’ｄ          攪乱暫定署名
σ”ａ，σ”ｂ  署名認証符号
【図１】
0003662217.tif 000002
【図２】
0003662217.tif 000003
【図３】
0003662217.tif 000004
【図４】
0003662217.tif 000005
【図５】
0003662217.tif 000006
【図６】
0003662217.tif 000007
【図７】
0003662217.tif 000008
【図８】
0003662217.tif 000009
【図９】
0003662217.tif 000010
【図１０】
0003662217.tif 000011
【図１１】
0003662217.tif 000012