(57)【特許請求の範囲】
【請求項１】
セキュリティパラメータに基づいて、正則行列、パリティ検査行列、誤り訂正アルゴリズム、置換規則、縮退ルールから構成される署名鍵、縮退パリティ検査行列、許容誤りパターン集合、分割数から構成される公開鍵あるいはシステム変数を生成する鍵生成装置と、
メッセージを受け付けて当該メッセージに対して前記署名鍵、前記公開鍵あるいはシステム変数に基づいて電子署名を作成する電子署名装置と、
メッセージと共に前記電子署名を受け付けて、前記公開鍵あるいはシステム変数に基づいて前記電子署名が有効であるか否かを検証する電子署名検証装置と
から構成されることを特徴とする電子署名システム。
【請求項２】
請求項１に記載の電子署名システムにおいて、
前記鍵生成装置は、
セキュリティパラメータを、縮退ルール、分割数、パリティ検査行列、行列および置換規則を生成するための変数値に変換する変数変換規則と、
乱数および前記変数変換規則から出力された変数値に基づいてパリティ検査行列を生成するパリティ検査行列生成器と、
乱数および前記変数変換規則から出力された変数値に基づいてランダムな正則行列とランダムな置換規則と縮退パリティ検査行列と許容誤りパターン集合を生成する鍵対生成器と
から構成され、
署名鍵、公開鍵あるいはシステム変数を出力する
ことを特徴とする電子署名システム。
【請求項３】
請求項１に記載の電子署名システムにおいて、
前記電子署名装置は、
任意の長さのメッセージを受け取り、内部で生成した乱数および前記メッセージから変換された変換メッセージおよび乱数を出力する第１メッセージ変換装置と、
署名鍵の正則行列と変換メッセージとの行列積を生成してシンドロームを出力する行列積生成装置と、
署名鍵のパリティ検査行列および誤り訂正アルゴリズムに基づいて、前記シンドロームあるいはその一部から誤りパターンを生成する誤り訂正装置と、
前記誤り訂正装置から出力された誤りパターンを署名鍵の置換規則に基づいて逆置換する逆置換装置と、
逆置換された誤りパターンが署名者の許容誤りパターン集合に含まれるか否かを判定する誤りパターン判定装置と
から構成され、
置換された誤りパターンおよび乱数を電子署名として出力する
ことを特徴とする電子署名システム。
【請求項４】
請求項１に記載の電子署名システムにおいて、
前記電子署名検証装置は、
メッセージが電子署名の乱数もしくはカウンタにより結合された変換メッセージを出力する第２メッセージ変換装置と、
誤りパターンとパリティ検査行列の行列積の縮退シンドロームと前記変換メッセージとを比較する比較器と、
電子署名の誤りパターンが許容誤りパターン集合に含まれるか否かを判定する誤りパターン判定装置と、
から構成され、
前記比較器により縮退シンドロームと縮退変換メッセージとが不一致の場合および誤りパターン判定装置により電子署名の誤りパターンが許容誤りパターン集合に含まれない判定の場合に署名無効を出力する
ことを特徴とする電子署名システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号の復号問題に基づく電子署名方式において安全性を損なうことなく、署名検証鍵のサイズを減少させて、メッセージに対して電子署名を生成し、その電子署名に基づいてメッセージの有効または無効を検証することができる電子署名システムに関するものである。
【背景技術】
【０００２】
従来から用いられている電子署名（ＲＳＡ署名、ＤＳＡ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ）、ＥＣＤＳＡ（楕円曲線上のＤＳＡ）など）について概略を説明する。
【０００３】
電子署名（あるいはディジタル署名）は、ディジタルデータに対する署名や捺印に対応する技術である。署名者が署名鍵（秘密鍵）を使ってディジタルデータを変換して、署名データを生成し、検証者がその署名者の署名検証鍵（公開鍵）を使って署名データを検証することにより、検証者はその署名データが署名者により生成されたこと、および、署名後にそのデータが改ざんされていないことを確認できる。
【０００４】
従来のディジタル署名は、素因数分解問題あるいは離散対数問題のいずれかの問題をベースに作られており、多倍長のべき剰余演算が不可欠である。多倍長のべき剰余演算は処理が重いため小型のユビキタスデバイス、ＩＣカード、ワイヤレスセンサーデバイスなどに低コストで搭載することが困難となっている。なお、コストを掛けてよいのであれば、高価なＣＰＵと大量のメモリを利用したり、多倍長のべき剰余演算を計算するためのコプロセッサをデバイスに搭載したりすることも可能ではあるが、価格や消費電力などの面で不利になるため敬遠されている。また、大規模なアプリケーション（例えば、大規模なワイヤレスセンサーネットワークなど）では、大量のノードを利用するため、各ノードのわずかなコスト削減が、大幅なコスト削減につながる。
【０００５】
また、非特許文献１に記載されているように、処理負荷の軽いＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）を使う方式（ＴＥＳＬＡ）の提案がある。ただし、ＭＡＣではＭＡＣ生成鍵とＭＡＣ検証鍵が同じであるため、ＭＡＣの検証者がＭＡＣを偽造できるという問題点が生じる。
【０００６】
この問題点を解決するため、ＴＥＳＬＡでは、ＭＡＣ生成者とＭＡＣ検証者が同期のとれた時計を持ち、また、ＭＡＣ生成者はあらかじめＭＡＣ検証鍵（生成鍵）ｋ０を一方向性ハッシュ関数ｈ（）を用いてｓ回ハッシュした値ｋｓを検証者に渡しておく。ＭＡＣ生成者は、まず、タイムスロットｔでメッセージｍｔとＭＡＣの値ｍａｃｔを検証者に渡して、タイムスロットｔ＋１でその検証鍵（生成鍵）ｋｓ−１を公開する。
【０００７】
検証者は、公開された検証鍵ｋｓ−１に基づいて一方向性ハッシュ関数ｈ（）を計算し、ｈ（ｋｓ−１）＝ｋｓと、ＭＡＣｋｓ−１（ｍ）＝ｍａｃｔが成立すれば、そのメッセージを受け入れる。以降、タイムスロットｔ＋ｉでメッセージｍｔ＋ｉとＭＡＣの値ｍａｃｔ＋ｉを検証者に渡し、タイムスロットｔ＋ｉ＋１で、その検証鍵（生成鍵）ｋｓ−１−ｉを公開し、検証者が、ｈ（ｋｓ−１−ｉ）＝ｋｓ−ｉと、ＭＡＣｋｓ−１−ｉ（ｍｔ＋ｉ）＝ｍａｃｔ＋ｉの成立を検証する処理をｉ＝ｓまで繰り返す。攻撃者は、検証鍵ｋｓ−１−ｉが公開された直後にそれを使ってＭＡＣを偽造することが可能であるが、検証者とＭＡＣ生成者とがタイムスロットを同期しているとの仮定の下では、検証鍵ｋｓ−１−ｉが公開されたタイムスロットｔ＋ｉ＋１以降に送られたＭＡＣはＭＡＣ検証者により拒絶される。
【０００８】
また、非特許文献２に示されるように、復号問題に基づくディジタル署名を用いる電子署名方式の技術の提案もある。この技術により実現される機能は、ＲＳＡ署名のような電子署名の技術と同じであるが、元となる問題として、この技術は素因数分解問題や離散対数問題とは異なる符号の復号問題を用いているため、処理（特に署名検証処理）を軽くできるという利点がある反面、署名検証鍵のサイズが大きくなる。
【非特許文献１】A. Perrig, R. Canetti, D. Tygar, and D. Song. “The TESLA Broadcast Authentication Protocol.”RSA CryptoBytes, 5(2):2-13, 2002.
【非特許文献２】N. T. Courtois and M. Finiasz and N. Sendrier, “How to Achieve a McEliece-Based Digital Signature Scheme,” Proc. of ASIACRYPT 2001, Springer--Verlag, pp. 157-174, 2001
【非特許文献３】N. Sendrier, “Finding the permutation between equivalent codes: the support splitting algorithm,” IEEE Trans. on IT, vol.46, no.4, pp.1193-1203, Jul, 2000
【発明の開示】
【発明が解決しようとする課題】
【０００９】
前述したように、従来のディジタル署名は、素因数分解問題あるいは離散対数問題のいずれかの問題をベースに作られており、多倍長のべき剰余演算が不可欠である。多倍長のべき剰余演算は処理が重いため小型のユビキタスデバイス、ＩＣカード、ワイヤレスセンサーデバイスなどに低コストで搭載することが困難である。
【００１０】
ＭＡＣを使う方式においては、前述したように、ＭＡＣ生成鍵とＭＡＣ検証鍵が同じであるため、ＭＡＣの検証者がＭＡＣを偽造できるという問題点が生じていた。
【００１１】
また、ＭＡＣを使うＴＥＳＬＡの方式は、実際には、ＭＡＣ生成者と検証者で時間を安価でかつ安全に同期することは容易でないため、小型のユビキタスデバイスやワイヤレスセンサーデバイスなどにこの方式を搭載することは容易ではない。また、ＭＡＣを検証するのに１タイムスロット待たなければならないため、実時間処理が要求される災害や事故の通報などには応用しにくいという問題点がある。さらに、ｓタイムスロット毎にｓ回ハッシュした値ｋｓを検証者に渡さなければならないといった問題点もある。
【００１２】
復号問題に基づくディジタル署名を用いる電子署名方式の技術によって実現される機能は、ＲＳＡ署名のような電子署名の技術と同じであるが、元となる問題として、この技術は素因数分解問題や離散対数問題とは異なる符号の復号問題を用いているため、処理（特に署名検証処理）を軽くできるという利点がある反面、署名検証鍵のサイズが大きくなるという欠点がある。署名検証鍵のサイズが大きいため、低価格、小型のユビキタスデバイス、ＩＣカード、ワイヤレスセンサーデバイスなどには、この方式を搭載することが敬遠されている。
【００１３】
本発明は、これらの問題点を解決するためになされたものであり、本発明の目的は、符号の復号問題に基づく電子署名方式において安全性を損なうことなく署名検証鍵のサイズを減少させることができ、そのサイズを減少させた電子署名に基づいて、メッセージの有効または無効を検証することができる電子署名システムを提供することにある。
【課題を解決するための手段】
【００１４】
上記のような目的を達成するため、本発明による電子署名システムは、基本的な考え方として、署名者が署名鍵（秘密鍵）を使ってディジタルデータを変換し、署名データを生成し、検証者がその署名者の署名検証鍵（公開鍵）を使って署名データを検証することにより、検証者がその署名データが署名者により生成されたこと、および、署名後にそのデータが改ざんされていないことを確認する電子署名装置において、手続きおよびパラメータのとり方を工夫するにより、安全性を損なうことなく署名検証鍵のサイズを削減する電子署名システムを構成する。
【００１５】
まず、本発明による電子署名システムの原理について説明する。図１に、比較のための従来方式の概要を示している。従来方式では、図１に示すように、シンドロームの空間とハッシュ関数の値域が同じであった。誤りパターンの値域に入るハッシュ値が見つかれば、署名者は署名鍵を使って、落とし戸付一方向性関数ｆ（）の落とし戸を開け、そのハッシュ値に対応する誤りパターンを求めることができ、求まった誤りパターンとカウンタ値を電子署名として利用する。一方、署名検証者は、電子署名の誤りパターンを署名検証鍵［落とし戸付一方向性関数ｆ（）］を使って変換したシンドロームと、メッセージとカウンタ値をハッシュした値が一致していれば、その電子署名はその署名検証鍵に対応する署名者が生成したものとして受け入れる。
【００１６】
本発明による電子署名システムは、図２に示すように、以下のような方法を用いて、安全性を損なうことなく署名検証鍵のサイズを削減するように構成する。
（１）署名生成時（実線）と署名検証時（鎖線）でハッシュ値とシンドロームの空間を変更する。
（２）ハッシュ関数の値域を分割し複数のシンドローム空間に割り振る。
（３）セキュリティパラメータの示す安全性を満たす範囲で署名検証鍵サイズを最小にする変数値を選択する
【００１７】
具体的には、本発明による電子署名システムは、図３に示すように、セキュリティパラメータに基づいて署名鍵、公開鍵、システム変数を生成する鍵生成装置１００と、メッセージを受け付けて当該メッセージに対して署名鍵、公開鍵、システム変数に基づいて電子署名を作成する電子署名装置２００と、メッセージと共に前記電子署名を受け付けて、公開鍵およびシステム変数に基づいて電子署名が有効であるか否かを検証する電子署名検証装置３００とから構成される。
【００１８】
この場合、ここでの署名鍵は、正則行列Ｓ、パリティ検査行列Ｈ、誤り訂正アルゴリズムψ（）、置換規則Ｐ、縮退ルール（ｕｃ，ｕａ，ｒｃ）、繰り返し回数ｗから構成され、システム変数は、縮退パリティ検査行列Ｈ’、許容誤りパターン集合Ｅ、分割数ｖから構成される。
【００１９】
本発明の電子署名システムにおいて、鍵生成装置１００は、図４に示すように、セキュリティパラメータＫを、縮退ルール、繰り返し回数、分割数、パリティ検査行列、行列および置換規則を生成するための変数（ｋ，ｎ，ｔ，ｕｃ，ｕａ，ｒｃ，ｖ，ｗ）に変換する変数変換規則１０１と、乱数を発生する乱数生成器１０２と、変数変換規則１０１から出力された変数（ｋ，ｎ，ｔ，ｕｃ，ｕａ，ｒｃ）に基づいて正則行列Ｓ、置換規則Ｐ、縮退パリティ検査行列Ｈ’、許容誤りパターン集合Ｅを生成する鍵対生成器１０３と、乱数生成器１０２から出力された乱数および変数変換規則１０１から出力された変数（ｋ，ｎ，ｔ）に基づいてパリティ検査行列Ｈを生成するパリティ検査行列生成器１０４とから構成され、署名鍵、公開鍵、システム変数を出力する。
【００２０】
電子署名装置２００は、図５に示すように、任意の長さのメッセージｍを受け取り、内部で生成した乱数ｒおよびメッセージｍから変換された変換メッセージ（ｍ’１，…，ｍ’ｖ）および乱数ｒを出力する第１メッセージ変換装置２０１と、署名鍵の正則行列Ｓと変換メッセージｍ’ｊ（１≦ｊ≦ｖ）との行列積を生成してシンドロームｓｊを出力する行列積生成装置２０２と、署名鍵のパリティ検査行列Ｈおよび誤り訂正アルゴリズムψ（）に基づいて、シンドロームｓｊから誤りパターンｅ’ｊを生成する誤り訂正装置２０３と、誤り訂正装置２０３から出力された誤りパターンｅ’ｊが許容誤りパターン集合Ｅに含まれるか否かを判定する誤りパターン判定装置２０４と、署名鍵の置換規則Ｐに基づいて誤りパターンｅ’ｊを逆置換する逆置換装置２０５とから構成され、置換された誤りパターンｅおよび乱数ｒを電子署名として出力する。
【００２１】
電子署名検証装置３００は、図６に示すように、メッセージｍが電子署名の乱数ｒにより結合された変換メッセージｍ’ｊ（１≦ｊ≦ｖ）を出力する第２メッセージ変換装置３０１と、誤りパターンｅｊと縮退パリティ検査行列Ｈ’の行列積の縮退シンドロームｓ’ｊと縮退変換メッセージｍ’’ｊとを比較する比較器３０２と、電子署名の誤りパターンｅｊが許容誤りパターン集合Ｅに含まれるか否かを判定する誤りパターン判定装置３０３とから構成され、比較器３０２により縮退シンドロームと縮退変換メッセージとが不一致の場合および誤りパターン判定装置３０３により電子署名の誤りパターンｅｊが許容誤りパターン集合Ｅに含まれない判定の場合に署名無効を出力する。
【発明の効果】
【００２２】
本発明の電子署名システムにおいては、安全性を損なうことなく公開鍵とされる縮退パリティ検査行列Ｈ’はサイズが小さくなる。縮退させることにより署名鍵のパリティ検査行列Ｈと公開鍵の縮退パリティ検査行列Ｈ’の間の置換を求める攻撃ＳＳＡ（Ｓｕｐｐｏｒｔ  Ｓｐｌｉｔｔｉｎｇ  Ａｌｇｏｒｉｔｈｍ；非特許文献３）の適用を困難にできるため、符号長ｎ、情報シンボル数ｋ、最小距離２ｔ＋１に対応する符号の数が少ない符号を安全に採用することが可能となる。
【００２３】
また、本発明による電子署名装置においては、電子署名の中にインデックス（０から始まり一つずつ増える値であり、署名者以外でも容易に推測できる値）ではなく、署名者以外が推測できない乱数ｒを利用する。これにより、ハッシュ関数に衝突が見つかったとしても署名依頼者に対する衝突困難性を保つことができるという効果が得られる。なお、この効果が不要な場合には乱数の変わりにインデックスを利用してもよい。
【００２４】
また、本発明による電子署名装置においては、一つの乱数ｒと一つのメッセージｍに対して、電子署名装置で誤りパターンｅを複数生成し、電子署名検証装置でそれらを検証することが可能である（なお、この場合に、一つのメッセージに対して、乱数ｒを変え、誤りパターンｅを複数生成することはしない。）これにより、一種類の署名鍵のパリティ検査行列Ｈおよび公開鍵の縮退パリティ検査行列Ｈ’を使いまわせるため安全性を損なうことなく、署名鍵のパリティ検査行列Ｈおよび公開鍵の縮退パリティ検査行列Ｈ’のサイズを小さくできる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明にかかる電子署名システムの実施の態様について具体的に説明する。図３は、本発明による電子署名システムのシステム構成を説明する図である。電子署名システムは、図３に示すように、鍵生成装置１００，電子署名装置２００，電子署名検証装置３００から構成される。鍵生成装置１００は、セキュリティパラメータＫに基づいて、署名鍵、公開鍵、システム変数を生成する。電子署名装置２００は、メッセージｍを受け付けて当該メッセージｍに対して、鍵生成装置１００により生成された署名鍵、公開鍵またはシステム変数の許容誤りパターン集合Ｅに基づいて電子署名を作成する。電子署名検証装置３００は、電子署名装置２００からメッセージｍと共に作成された電子署名を受け付けて、鍵生成装置１００で生成された公開鍵およびシステム変数に基づいて、その電子署名が有効であるか否かを検証する。
【００２６】
この電子署名システムにおいては、後述するように、セキュリティパラメータ毎に最適化された縮退ルールと繰り返し回数と分割数が署名鍵、公開鍵およびシステム変数に利用されている。これにより、署名検証鍵のサイズを減少させても、安全性が損なわれることはなく、電子署名を生成し、その電子署名に基づいてメッセージの有効または無効を検証できる。
【００２７】
ここでの署名鍵は、具体的には、正則行列Ｓ、パリティ検査行列Ｈ、誤り訂正アルゴリズムψ（）、置換規則Ｐ、縮退ルール（ｕｃ，ｕａ，ｒｃ）、繰り返し回数ｗから構成されており、システム変数は、縮退パリティ検査行列Ｈ’、許容誤りパターン集合Ｅ、分割数ｖから構成されている。縮退ルールとする変数ｕｃ，ｕａ，ｒｃは、後述するように、ｕｃは縮退ルールにより縮退させる列の数、ｒｃは縮退ルールにより縮退させる行の数、ｕａは縮退ルールにより疑似的に追加される列の数である。ただし、ｕｃ＝０の場合には変数ｕｃを省略でき、ｕａ＝０の場合には変数ｕａを省略でき、ｒｃ＝０の場合には変数ｒｃを省略でき、ｖ＝１の場合は変数ｖとｗを省略できる。また、ｕｃ，ｕａの一方は正則行列Ｓあるいはパリティ検査行列Ｈから求めることができるため省略してもよく、ｒｃも許容誤りパターン集合Ｅあるいはパリティ検査行列Ｈと縮退パリティ検査行列Ｈ’から求めることができるため省略してもよい。署名鍵の正則行列Ｓはその逆行列Ｓ−１、置換規則Ｐはその逆置換規則Ｐ−１を記録してもよい。
【００２８】
図４は、鍵生成装置１００の構成を詳細に説明するブロック図である。鍵生成装置１００は、図４に示すように、変数変換規則１０１と、乱数生成器１０２と、鍵対生成器１０３と、パリティ検査行列生成器１０４から構成されている。
【００２９】
鍵生成装置１００において、変数変換規則１０１は、セキュリティパラメータＫを、縮退ルール、分割数、パリティ検査行列、行列および置換規則を生成するための変数（ｋ，ｎ，ｔ，ｕｃ，ｕａ，ｒｃ，ｖ，ｗ）に変換する。乱数生成器１０２は、乱数を発生する。鍵対生成器１０３は、変数変換規則１０１から出力された変数（ｋ，ｎ，ｔ，ｕｃ，ｕａ，ｒｃ）とパリティ検査行列生成器１０４から出力されたパリティ検査行列Ｈと誤り訂正アルゴリズムψ（）に基づいて、正則行列Ｓ、置換規則Ｐ、縮退パリティ検査行列Ｈ’、許容誤りパターン集合Ｅを生成する。パリティ検査行列生成器１０４は、乱数生成器１０２から出力された乱数および変数変換規則１０１から出力された変数（ｋ，ｎ，ｔ）に基づいて、パリティ検査行列Ｈを生成する。これらの出力によって、鍵生成装置１００は、署名鍵（Ｓ，Ｈ，ψ（），Ｐ，ｕｃ，ｕａ，ｒｃ，ｗ）および公開鍵あるいはシステム変数（Ｈ’，Ｅ，ｖ）を出力する。
【００３０】
具体的に詳細に説明すると、まず、変数変換規則１０１を使ってセキュリティパラメータＫに応じた変数（ｋ，ｎ，ｔ，ｕｃ，ｕａ，ｒｃ，ｖ，ｗ）を得る。ここで、ｋは情報シンボル数、ｎは符号長、ｔはパリティ検査行列により訂正可能な誤り数、ｕｃは縮退ルールにより縮退させる列の数、ｒｃは縮退ルールにより縮退させる行の数、ｕａは縮退ルールにより疑似的に追加される列の数、ｖは分割数、ｗは繰り返し回数である。なお、変数変換規則１０１は安全性の評価結果に基づき作成される。
【００３１】
鍵対生成器１０３は、（ｋ−ｕｃ＋ｕａ）×（ｋ−ｕｃ＋ｕａ）のランダムな正則行列Ｓと置換規則Ｐを生成する。置換規則Ｐはｎ次元ベクトルの列の置換が表現されていればよく、例えば、以下のような方法を、置換規則として利用することができる。
（１）ｎ×ｎのランダムな置換行列（各行、各列にそれぞれ１の値が一箇所ずつあり、その他の要素が０である行列）を用いる方法。
（２）ｉ列をｊ列に置換するという表を用いる方法。
あるいは、削除されたｒｃ行が表現された上で（ｎ−ｒｃ）次元ベクトルの列の置換が表現されていればよい。
【００３２】
パリティ検査行列生成器１０４では、符号長ｎ、情報シンボル数ｋでｔ個の誤りを訂正可能な誤り訂正符号のｎ×（ｎ−ｋ）行列のパリティ検査行列Ｈと、その誤り訂正アルゴリズムψ（）を出力する。なお、誤り訂正アルゴリズムψ（）はそれが訂正できる誤りパターンの情報を含んでもよい。
【００３３】
なお、この方式で利用する行列の関係は転置しても成立する。転置した表現を利用する場合、パリティ検査行列Ｈは（ｎ−ｋ）×ｎ行列となる。
【００３４】
非特許文献２では、誤り訂正符号として符号長ｎ、情報シンボル数ｋ、最小距離２ｔ＋１を固定した場合の符号の候補数が小さい場合に、非特許文献３で提案されているＳＳＡを用いて公開鍵から秘密鍵が求まる場合がある。そのため、誤り訂正符号としては符号長ｎ、情報シンボル数ｋ、最小距離２ｔ＋１を固定した場合の符号の候補数が多い符号であるＧｏｐｐａ符号を利用していた。本発明では、縮退ルールの変数ｕｃを用いる縮退によって、署名鍵のパリティ検査行列Ｈと公開鍵の縮退パリティ検査行列Ｈ’を、置換同価（ｐｅｒｍｕｔａｔｉｏｎ−ｅｑｕｉｖａｌｅｎｔ）でなくすることができＳＳＡの適用を防止できるため、Ｇｏｐｐａ符号以外にも、ＢＣＨ符号、低密度パリティ検査符号、中密度パリティ検査符号、擬巡回低密度パリティ検査符号などの任意の符号を用いることができる。
【００３５】
また、図４においては、ｎ×（ｎ−ｋ）行列のパリティ検査行列を用いた電子署名の構成方法を示しているが、その双対（ｄｕａｌ）であるｋ×ｎ符号生成行列Ｇを用いて電子署名を構成してもよい。
【００３６】
許容誤りパターン集合Ｅには、以下のような集合を用いることができる。
（１）重みｔ（誤りが丁度ｔ個）の（ｎ−ｒｃ）次元ベクトル、
（２）重みｔ以下（誤りがｔ個以下）の（ｎ−ｒｃ）次元ベクトル、
（３）重みがｔ以下ｔ’（ｔ＞ｔ’）以上の（ｎ−ｒｃ）次元ベクトル、
（４）重みｔ／ｓ（誤りが丁度ｔ／ｓ個）の（ｎ−ｒｃ）／ｓ次元ベクトルがｓ個連結された（ｎ−ｒｃ）次元ベクトル、
（５）重みｔ／ｓ以下（誤りがｔ／ｓ個以下）の（ｎ−ｒｃ）／ｓ次元ベクトルがｓ個連結された（ｎ−ｒｃ）次元ベクトル、
（６）重みがｔ／ｓ以下ｔ’／ｓ（ｔ＞ｔ’）以上の（ｎ−ｒｃ）／ｓ次元ベクトルがｓ個連結された（ｎ−ｒｃ）次元ベクトル
【００３７】
鍵対生成器１０３は、変数値（ｋ，ｎ，ｔ，ｕｃ，ｕａ，ｒｃ）とｎ×（ｎ−ｋ）行列であるパリティ検査行列Ｈと誤り訂正アルゴリズムψ（）と乱数を受け入れて、置換規則Ｐ，正則行列Ｓ，縮退パリティ行列Ｈ’，許容誤りパターン集合Ｅを生成する。なお、パリティ検査行列により訂正可能な誤り数ｔと誤り訂正アルゴリズムψ（）はどちらか一方の入力を省略してもよい。
【００３８】
より詳細な内容は、以下のとおりである。まず、パリティ検査行列Ｈのｕｃ列を削除するとともに、置換規則Ｐを生成してパリティ検査行列Ｈの行を置換規則Ｐに従って置換し、さらにその置換された行列ＰＨのｒｃ行を削除する。なお、削除する列と行はどの位置でも構わないが、単純化のためＰＨのｎ−ｋ−ｕｃ＋１列目からｎ−ｋ列目までとｎ−ｒｃ行目からｎ行目までとしておく。また、置換・削除後のｎ−ｒｃ−（ｎ−ｋ−ｕｃ）＋１行目からｎ−ｒｃ行目が線形独立となるように置換規則Ｐを選択しておく。なお、線形独立となるｎ−ｋ−ｕｃ行はどの位置に来ても構わないが、単純化のため、ｎ−ｒｃ−（ｎ−ｋ−ｕｃ）＋１行目からｎ−ｒｃ行目にくるようにしておく。この行列をＨ’’とする。
【００３９】
つぎに、行列Ｈ’’に対して、以下の（ｎ−ｒｃ）×ｕａ行列の行列Ｈ’’’を連結した行列をＨ’’’’とする。ここで、行列Ｈ’’’はそのｎ−ｒｃ−（ｎ−ｋ−ｕｃ）＋１行目からｎ−ｒｃ行目が０ベクトルでｎ−ｒｃ−（ｎ−ｋ−ｕｃ）−ｕａ行目からｎ−ｒｃ−（ｎ−ｋ−ｕｃ）行目までが単位行列で残りの（ｎ−ｒｃ−（ｎ−ｋ−ｕｃ）−ｕａ）行が公開パラメータ（署名者のＩＤなど）をシードとして得られる疑似乱数である。最後に行列Ｈ’’’に右から掛けることにより、その（ｎ−ｋ−ｕｃ＋ｕａ）行を単位行列にするランダムな（ｎ−ｋ−ｕｃ＋ｕａ）×（ｎ−ｋ−ｕｃ＋ｕａ）正則行列をＳとし、縮退パリティ行列Ｈ’＝Ｈ’’’’×Ｓとして求める。縮退パリティ行列Ｈ’はその（ｎ−ｋ−ｕｃ＋ｕａ）行が単位行列であり、また、そのｕａ列はシードより疑似乱数系列を用いて生成できるため、実際に記憶しなければらならい行列のサイズは（ｎ−（ｎ−ｋ−ｕｃ＋ｕａ）−ｒｃ）×（ｎ−ｋ−ｕｃ）でよい。
【００４０】
鍵生成装置１００は、鍵対生成器１０３、パリティ検査行列生成器１０４からそれぞれ出力された値を用いて、「署名鍵（Ｓ，Ｈ，ψ（），Ｐ，ｕｃ，ｕａ，ｗ）」および「公開鍵あるいはシステム変数（Ｈ’，Ｅ，ｖ）」を出力する。
【００４１】
図５は、電子署名装置２００の構成を詳細に説明するブロック図である。電子署名装置２００は、図５に示すように、第１メッセージ変換装置２０１と、行列積生成装置２０２と、誤り訂正装置２０３と、誤りパターン判定装置２０４と、逆置換装置２０５とから構成され、メッセージｍ、許容誤りパターン集合Ｅおよび署名鍵（Ｓ，Ｈ，ψ（），Ｐ，ｕｃ，ｕａ，ｗ）を入力して、置換された誤りパターンｅおよび乱数ｒから構成される電子署名を出力する。
【００４２】
電子署名装置２００において、後述するように、第１メッセージ変換装置２０１は、任意の長さのメッセージｍを受け取り、内部で生成した乱数ｒおよび前記メッセージｍから変換された変換メッセージ（ｍ’１，…，ｍ’ｖ）および乱数ｒを出力する。第１メッセージ変換装置２０１から出力された変換メッセージ（ｍ’１，…，ｍ’ｖ）は、行列積生成装置２０２に入力され、署名鍵の正則行列Ｓの逆行列Ｓ−１と変換メッセージｍ’ｊとの行列積を生成してシンドロームｓｊを出力する。シンドロームｓの１列目から（ｎ−ｋ−ｕｃ）列目までを［ｓｊ］１ｎ−ｋ−ｕｃとし、（ｎ−ｋ−ｕｃ＋１）列目から（ｎ−ｋ−ｕｃ＋ｕａ）列目までを［ｓｊ］ｎ−ｋ−ｕｃ＋１ｎ−ｋ−ｕｃ＋ｕａとすると、［ｓｊ］１ｎ−ｋ−ｕｃはｕｃビットの値ｒ’とともに、誤り訂正装置２０３に入力され、誤り訂正装置２０３が、署名鍵のパリティ検査行列Ｈおよび誤り訂正アルゴリズムψ（）に基づいて、前記シンドローム［ｓｊ］１ｎ−ｋ−ｕｃとｕｃビットの値ｒ’との連結から誤りパターンｅ’ｊを生成する。なお、ｒ’はカウンタ値でも乱数でもよい。また、誤り訂正装置２０３は誤りパターンを発見できない場合にエラーメッセージを出力する。誤り訂正装置２０３から誤りパターンｅ’ｊが出力された場合、逆置換装置２０５が、署名鍵の置換規則Ｐに基づいて誤りパターンｅ’を逆置換する。この逆置換された誤りパターンをｅｊとする。誤りパターン判定装置２０４は、逆置換装置２０５から出力された誤りパターンｅｊが署名者の許容誤りパターン集合Ｅ’に含まれているか否かを判定する。
【００４３】
ここで、署名者の許容誤りパターン集合Ｅ’とは許容誤りパターン集合Ｅに含まれており、かつ、ｅｊ［Ｈ’］ｎ−ｋ−ｕｃ＋１ｎ−ｋ−ｕｃ＋ｕａ＝［ｓ’ｊ］ｎ−ｋ−ｕｃ＋１ｎ−ｋ−ｕｃ＋ｕａを満たすパターンである。［Ｈ’］ｎ−ｋ−ｕｃ＋１ｎ−ｋ−ｕｃ＋ｕａは、行列Ｈ’の（ｎ−ｋ−ｕｃ＋１）列目から（ｎ−ｋ−ｕｃ＋ｕａ）列目までの行列を表す。ｅｊ∈Ｅ’が成立していれば、置換された誤りパターンｅおよび第１メッセージ変換装置２０１からの乱数ｒを電子署名として出力する。
【００４４】
詳細に説明すると、第１メッセージ変換装置２０１は、任意の長さのメッセージｍを受け取り、内部で乱数ｒを生成し、乱数ｒとメッセージｍに応じて、変換されたｖ個の（ｎ−ｋ−ｕｃ＋ｕａ）次元ベクトルである変換メッセージ（ｍ’１，…，ｍ’ｖ）を生成する。なお、ここでｖはセキュリティパラメータにより決まる値でありｖ＝１でもよい。誤りパターン判定装置２０４においては、誤りパターンｅｊが許容誤りパターン集合Ｅに含まれていないあるいはｅｊ［Ｈ’］ｎ−ｋ−ｕｃ＋１ｎ−ｋ−ｕｃ＋ｕａ＝［ｓ’ｊ］ｎ−ｋ−ｕｃ＋１ｎ−ｋ−ｕｃ＋ｕａが成立しない判定となった際にも、ｒ’の値を最大ｗ回まで変え、それでもそれらの条件が満たされない場合には第１メッセージ変換装置２０１が新たに乱数ｒを生成し、その乱数ｒとメッセージｍに応じて、変換されたｖ個の（ｎ−ｋ）次元ベクトルである変換メッセージ（ｍ’１，…，ｍ’ｖ）を生成し処理を継続する。また、誤り訂正装置２０３が誤りパターンを見つけられなかったためにエラーメッセージを出力した場合も同様に、ｒ’の値を最大ｗ回まで変え、それでもそれらの条件が満たされない場合には第１メッセージ変換装置２０１が新たに乱数ｒを生成し、その乱数ｒとメッセージｍに応じて、変換されたｖ個の（ｎ−ｋ）次元ベクトルである変換メッセージ（ｍ’１，…，ｍ’ｖ）を生成し処理を継続する。
【００４５】
逆置換装置２０５において、誤りパターンｅ’ｊの列を逆置換する方法としては、以下のような方法が利用可能である。
（１）置換規則Ｐが行列で表現されている場合、ｅｊ＝ｅ’ｊＰ−１
（２）置換規則Ｐが誤りパターンｅｊのｉ１行を誤りパターンｅ’ｊのｉ２行に置換するという表で表現されている場合、誤りパターンｅ’ｊのｉ２行を誤りパターンｅｊのｉ１行に置換する。ｖ個の誤りパターンｅｊがそろえば、それらと乱数ｒを組にした値を、メッセージｍに対する電子署名として出力する。
【００４６】
図６は、電子署名検証装置３００の構成を詳細に説明するブロック図である。電子署名検証装置３００は、図６に示すように、第２メッセージ変換装置３０１と、比較器３０２と、誤りパターン判定装置３０３と、行列積生成装置３０４から構成され、メッセージｍとその電子署名が入力されると、公開鍵あるいはシステム変数（Ｈ’，Ｅ，ｖ）に基づいて、縮退シンドロームと変換メッセージとが不一致の場合および電子署名の誤りパターンｅが許容誤りパターン集合Ｅに含まれない判定の場合に署名無効を出力する。
【００４７】
電子署名検証装置３００において、第２メッセージ変換装置３０１は、メッセージｍが電子署名の乱数ｒにより結合された変換メッセージｍ’を出力するので、比較器３０２により、誤りパターンｅと縮退パリティ検査行列Ｈ’の行列積の縮退シンドロームｓ’と前記変換メッセージｍ’とを比較する。誤りパターン判定装置３０３は、電子署名の誤りパターンｅが許容誤りパターン集合Ｅに含まれるか否かを判定する。また、行列積生成装置３０４は、誤りパターンｅとシステム変数のパリティ検査行列Ｈ’との行列積により縮退シンドロームｓ’を出力する。そして、比較器３０２により縮退シンドロームｓ’と変換メッセージｍ’とが不一致の場合と、誤りパターン判定装置３０３により電子署名の誤りパターンｅが許容誤りパターン集合Ｅに含まれない判定の場合に、署名無効を出力する。
【００４８】
具体的に説明すると、第２メッセージ変換装置３０１は、後述するように、メッセージｍ、電子署名中の乱数ｒを受け入れ、それぞれｖ個の（ｎ−ｋ−ｕｃ＋ｕａ）次元ベクトルである変換メッセージ（ｍ’１，…，ｍ’ｖ）を出力する。
【００４９】
一方、誤りパターン判定装置３０３は許容誤りパターン集合Ｅと電子署名の誤りパターン（ｅ１，…，ｅｖ）を受け入れ、誤りパターンｅｊ（１≦ｊ≦ｖ）が許容誤りパターン集合Ｅにふくまれなければ、その署名が無効であることを示すメッセージを出力する。逆に、誤りパターンｅｊが許容誤りパターン集合Ｅに含まれることが判定できれば、行列積生成装置３０４によって生成した行列積ｓ’ｊ＝ｅｊ・Ｈ’から、縮退シンドロームｓ’ｊが求められ、この縮退シンドロームｓ’ｊが比較器３０２に入力される。比較器３０２においては、縮退シンドロームｓ’ｊと、第２メッセージ変換装置から出力された変換メッセージ（ｍ’１，…，ｍ’ｖ）とを比較する。
【００５０】
この比較の処理により、一致または不一致が判定され、その結果、誤りパターンｍ’ｊ＝ｓｊ（１≦ｊ≦ｖ）が成立すれば、署名は有効であることを示す署名有効のメッセージを出力する。これ以外の場合、すなわち、比較器が不一致を出力した場合、誤りパターン判定装置３０３により、誤りパターンｅｊ（１≦ｊ≦ｖ）が許容誤りパターン集合Ｅに含まれない判定の場合、その署名が無効であることを示すメッセージを出力する。
【００５１】
図７は、第１メッセージ変換装置２０１の構成を詳細に説明するブロック図である。図７を参照して説明すると、第１メッセージ変換装置２０１は、乱数発生器２１０および結合器２１１を内部に備えており、乱数生成器２１０により乱数ｒを生成する。任意の長さのメッセージｍを受け取り、内部で生成した乱数ｒにより、結合器２１１を用いて、乱数ｒとメッセージｍをｖ個の（ｎ−ｋ）次元ベクトルである変換メッセージ（ｍ’１，…，ｍ’ｖ）に変換し、それらを出力する。
【００５２】
図８は、第２メッセージ変換装置３０１の構成を詳細に説明するブロック図である。図８を参照して説明すると、第２メッセージ変換装置３０１は、結合器３１０を備えているだけの構成となっている。第２メッセージ変換装置３０１は、電子署名中の乱数ｒと任意の長さのメッセージｍを受け取り、それらを結合器３１０を用いて、ｖ個の（ｎ−ｋ）次元ベクトルである変換メッセージｍ’１，…，ｍ’ｖに変換しｖ個の（ｎ−ｋ−ｕｃ−ｕａ）次元ベクトルの変換メッセージ（ｍ’１，…，ｍ’ｖ）を出力する。
【００５３】
また、結合器３１０に求められる要件には以下のような項目がある：
（１）署名者に対する衝突困難性：
同じ変換メッセージ（ｍ’１，…，ｍ’ｖ）に写像される値の異なる二つ以上のメッセージｍを探すことが困難であること。その際、ｍと対をなす入力ｒの値は同じでも異なっていても構わない（この性質が満たされないと、署名者は依頼された文書以外の文書に対しても有効な署名を作成することができる）。
（２）署名依頼者に対する衝突困難性：
乱数ｒの値が変わったとしてもそのほとんどの乱数ｒに対して、同じ変換メッセージ（ｍ’１，…，ｍ’ｖ）に写像される二つ以上のメッセージｍを探すことが困難であること（この性質が満たされないと、署名者に依頼した文書以外の文書に対しても有効な署名を署名依頼者が偽造することができる）。
（３）一方向性：
与えられた変換メッセージ（ｍ’１，…，ｍ’ｖ）に対してそれらに写像される乱数ｒと変換メッセージｍの組を探すことが困難であること（この性質が満たされないと、攻撃者は署名を偽造できる）。
（４）クローフリー（Ｃｌａｗ−ｆｒｅｅ）：
落し戸付き一方向性関数の入力誤りパターン（ｅ１，…，ｅｖ）と乱数ｒとメッセージｍの入力を全数探索した場合に、変換メッセージ（ｍ’１，…，ｍ’ｖ）が一致する誤りパターン（ｅ１，…，ｅｖ）と乱数ｒと変換メッセージｍの組を探すことが困難であること（この性質が満たされないと攻撃者は署名を偽造できる）。
【００５４】
これらの要件は、例えば、衝突困難ハッシュ関数をＨａｓｈ（）、データの連結を｜｜として、
Ｈａｓｈ（ｒ｜｜ｍ｜｜０）｜｜Ｈａｓｈ（ｒ｜｜ｍ｜｜１）｜｜Ｈａｓｈ（ｒ｜｜ｍ｜｜２）｜｜…｜｜Ｈａｓｈ（ｒ｜｜ｍ｜｜ｉ）
により得られる値を変換メッセージｍ’１，…，ｍ’ｖのｖ個に分割することにより、結合器２１１を構成することにより満たすことが可能となる。
【００５５】
このように、本発明による電子署名システムは、鍵生成装置、電子署名装置、電子署名検証装置から構成される。この電子署名システムにおいて、特徴的な点は、署名鍵、公開鍵およびシステム変数に縮退ルールｕｃ,ｕａ，ｒｃ繰り返し回数ｗと分割数ｖを追加し、セキュリティパラメータに応じて求めた最適な値を鍵生成装置と電子署名検証装置で利用する。このようにしても、安全性が損なわれることはない。つまり、符号の復号問題に基づく電子署名方式において安全性を損なうことなく、署名検証鍵のサイズを減少させて、電子署名を生成し、その電子署名に基づいてメッセージの有効または無効を検証することができる。
【図面の簡単な説明】
【００５６】
【図１】電子署名システムの従来方式の概要を示す図である。
【図２】本発明による電子署名システムの原理について説明する図である。
【図３】本発明の電子署名システムのシステム構成を説明する図である。
【図４】本発明の電子署名システムの鍵生成装置の構成を説明する図である。
【図５】本発明の電子署名システムの電子署名装置の構成を説明する図である。
【図６】本発明の電子署名システムの電子署名検証装置の構成を説明する図である。
【図７】電子署名装置の中の第１メッセージ変換装置の構成を説明する図である。
【図８】電子署名検証装置の中の第２メッセージ変換装置の構成を説明する図である。
【符号の説明】
【００５７】
１００  鍵生成装置
１０１  変数変換表
１０２  乱数発生器
１０３  鍵対生成器
１０４  パリティ検査行列生成器
２００  電子署名装置
２０１  第１メッセージ変換装置
２０２  行列積生成装置
２０３  誤り訂正装置
２０４  誤りパターン判定装置
２０５  逆置換装置
２１０  乱数発生器
２１１  結合器
３００  電子署名検証装置
３０１  第２メッセージ変換装置
３０２  比較器
３０３  誤りパターン判定装置
３０４  行列積生成装置
３１０  結合器
３１１  縮退器
【図１】
0004986162.tif 000002
【図２】
0004986162.tif 000003
【図３】
0004986162.tif 000004
【図４】
0004986162.tif 000005
【図５】
0004986162.tif 000006
【図６】
0004986162.tif 000007
【図７】
0004986162.tif 000008
【図８】
0004986162.tif 000009