JP2008103975A - 署名システム及び署名方法 - Google Patents

署名システム及び署名方法 Download PDF

Info

Publication number
JP2008103975A
JP2008103975A JP2006284637A JP2006284637A JP2008103975A JP 2008103975 A JP2008103975 A JP 2008103975A JP 2006284637 A JP2006284637 A JP 2006284637A JP 2006284637 A JP2006284637 A JP 2006284637A JP 2008103975 A JP2008103975 A JP 2008103975A
Authority
JP
Japan
Prior art keywords
signature
public key
time
processing unit
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006284637A
Other languages
English (en)
Other versions
JP4477616B2 (ja
Inventor
Vuillaume Camille
カミーユ ヴィオム
Katsuyuki Okeya
勝幸 桶屋
Masayuki Yoshino
雅之 吉野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006284637A priority Critical patent/JP4477616B2/ja
Priority to US11/848,386 priority patent/US20080095360A1/en
Publication of JP2008103975A publication Critical patent/JP2008103975A/ja
Application granted granted Critical
Publication of JP4477616B2 publication Critical patent/JP4477616B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】高度な安全性を有するマークル署名システムにおいて、伝送するデータサイズを小さくし、効率的に処理することのできる署名システムを提供すること。
【解決手段】 スマートカード110の処理部112は、署名するメッセージの先頭ビットから順に特定のビット毎のグループに分けて一方向関数処理部112cにおいて暗号化することで生成した当該グループ毎の部分ワンタイム署名を、順次、IF部113を介して検証装置に出力する処理を行う。
【選択図】図2

Description

本発明は、デジタル署名を検証する署名システム及び署名方法に関する。
デジタル署名とは、メッセージ送信者の身元及びこのメッセージの保全性を証明することができる暗号化されたデータである。
ここで、デジタル署名を具体化する一つの方法であるワンタイム署名のスケーラビリティの低さを大きく向上させる簡潔な解決策として、マークル署名が開発された。
特許文献1に記載されているように、マークル署名は、ワンタイム署名方式の複数のインスタンスを使用して、各ワンタイム公開鍵を単一のマスタ公開鍵に対して認証する方法を提供している。特に、2つのデータブロックを1つのデータブロックに圧縮する圧縮関数を使用して、ワンタイム公開鍵を葉とし、マスタ公開鍵をルートとする二進木を構築する。マスタ公開鍵は一度だけ配送され、システムによって生成されるすべての署名の検証に使用することができる。
また、公開鍵暗号システム及びデジタル署名の業界標準はRSAである。RSAの安全性は、大きな整数を2つの素数の積に因数分解することの困難さに依拠している。現在のテクノロジー及びアルゴリズムは、整数が十分に大きい(通常、1024ビット)場合にこの問題を解くことができない。
しかし、非特許文献1に記載されているように、量子コンピュータと呼ばれる新種のコンピュータはこのような素因数を容易に見つけられることが分かっており、量子コンピュータを構築することが可能になれば、その結果として、広く使用されている公開鍵暗号システムは危殆化するものといわれている。
米国特許第4309569号公報 J. Buchmann et al., 「Post-Quantum Signatures」, Cryptology ePrint Archive: Report 2004/297
特許文献1に記載されたマークル署名においては、署名サイズが非常に大きくなっており、大きな署名はネットワークの輻輳を発生させるだけでなく、特に、スマートカードを用いて署名を行う場合に帯域幅の小さなネットワークインタフェースを通して大量のデータを伝送する必要があるため、処理に時間がかかる。
また、量子コンピュータは近い将来に現実のものとなる可能性があるため、RSA等の現在使用されている公開鍵暗号システムに対する代替技術を提供する必要がある。
そこで、本発明は、高度な安全性を有するマークル署名システムにおいて、伝送するデータサイズを小さくし、効率的に処理することのできる署名システムを提供することを目的とする。
以上の課題を解決するため、本発明は、署名側の装置において署名するデータを特定の数のビット毎に署名して、順次、検証側の装置に送信し、検証側の装置では、受信した署名を順次処理して、全ての署名を受信することでワンタイム公開鍵を生成することができるようにする。
例えば、本発明は、第一コンピュータで生成されたデジタル署名を第二コンピュータで検証する署名システムであって、前記第一コンピュータの処理部は、デジタル署名をするデータを先頭ビットから順に特定のビット数毎のグループに分けて一方向関数に代入することで生成した当該グループ毎の部分署名を、順次、前記第二コンピュータに出力する処理を行うこと、を特徴とする。
以上のように、本発明によれば、高度な安全性を有するマークル署名を使用するが、伝送するデータサイズが小さく、効率的に処理することができる。
図1は、本発明の第一の実施形態である署名システム100の概略図である。
図示するように、署名システム100は、スマートカード110と、読取装置130と、検証装置140と、を備えており、読取装置130と検証装置140とはネットワーク160を介して情報を送受信することができるようにされている。
スマートカード110は、図2(スマートカード110の概略図)に示されているように、記憶部111と、処理部112と、IF部113と、を備えている。
記憶部111は、鍵記憶部111aと、ワンタイム情報記憶部111bと、マークル木情報記憶部111cと、一時情報記憶部111dと、を備えている。
鍵記憶部111aには、AES(Advanced Encryption Standard)暗号化で使用される秘密シード及び公開シードを特定する情報が記憶される。
なお、秘密シード及び公開シードについては、公知の方法、例えば、処理部112にランダムな数を生成するランダム数生成部を設けておき、このランダム数生成部でランダムに生成した二つの数のうち、一方を秘密シード、他方を公開シードとして、鍵記憶部111aに記憶すればよい。
ワンタイム情報記憶部111bには、各々のワンタイム署名毎に、各々のワンタイム署名で使用される秘密情報と、当該秘密情報に対応するインデックスと、が記憶される。なお、本実施形態においては、これらの情報が、各々のワンタイム署名を一意に識別するための識別情報であるワンタイム署名インデックス毎に記憶される。なお、ワンタイム署名インデックスについては、図6を用いて詳述する。
マークル木情報記憶部111cには、ワンタイム公開鍵からマスタ公開鍵を算出するために必要とされる認証パスを特定する情報が記憶される。ここで、認証パスについては、ワンタイム公開鍵を生成するためのワンタイム署名毎(ワンタイム署名インデックス毎)に記憶される。なお、認証パスについては、図6を用いて詳述する。
一時情報記憶部111dには、後述する処理部112において処理を行うために必要とされる情報を記憶する。
処理部112は、鍵処理部112aと、乱数処理部112bと、一方向関数処理部112cと、圧縮関数処理部112dと、ハッシュ関数処理部112eと、署名生成部112fと、を備えている。
鍵処理部112aは、ワンタイム署名で使用する秘密情報を生成する。秘密情報は、当該秘密情報の各々に割り振られたインデックスを鍵記憶部111aに記憶されている秘密シードを鍵として用いてAES暗号化することにより生成される。
ここで、AES暗号化の具体的な計算方法については、Joan Daemen and Vincent Rijmen, 「The Design of Rijndael: AES - The Advanced Encryption Standard.」 Springer-Verlag, 2002に詳しく記載されている。
なお、鍵処理部112aで生成した秘密情報については、対応するインデックスと共にワンタイム情報記憶部111bに記憶される。
また、本実施形態においては、AES暗号化を行っているが、このような態様に限定されず、例えば、他のブロック暗号化方式やハッシュ関数に基づく暗号化方式を採用することも可能である。
乱数処理部112bは、あるカウンタ値を入力として鍵情報を用いてAES暗号化を行う。
例えば、本実施形態においては、各関数に割り振られたインデックスをカウンタ値として入力し、鍵記憶部111aに記憶されている公開シードを鍵として用いてAES暗号化することで初期ベクトルを生成し、後述する一方向関数処理部112c及び圧縮関数処理部112dに出力する。
なお、本実施形態においては、AES暗号化を行っているが、このような態様に限定されず、例えば、他のブロック暗号化方式やハッシュ関数に基づく暗号化方式を採用することも可能である。
一方向関数処理部112cは、乱数処理部112eで生成した初期ベクトルを入力し、鍵処理部112aで生成した秘密情報を鍵情報として用いてAES暗号化する。
なお、本実施形態においては、AES暗号化を行っているが、このような態様に限定されず、例えば、他のブロック暗号化方式やハッシュ関数に基づく暗号化方式を採用することも可能である。
圧縮関数処理部112dは、乱数処理部112eで生成した初期ベクトルを入力し、一方向関数処理部112cの出力値のうち、圧縮する一方の出力値を鍵情報として用いてAES暗号化を施して暗号化値を算出する。次に、当該暗号化値を、圧縮する他方の出力値を鍵情報として用いてAES暗号化を施して暗号化値を算出する。さらに、当該暗号化値を、前述の圧縮する一方の出力値を鍵情報として用いてAES暗号化を施すことで圧縮値を算出する。
例えば、初期ベクトルをv、一方向関数の一方の出力値をa、他方の出力値をb、とすると、圧縮関数処理部112dは、下記の(1)式のような計算を行う。
Figure 2008103975
ここで、hは圧縮値、AESはaを鍵情報とするAES暗号化、AESはbを鍵情報とするAES暗号化を意味する。
現実では本実施形態独自のトリプルAES構造は2鍵トリプル暗号化法(two-key triple-encryption method)に対応し、これは、圧縮関数ではなく純粋に暗号化関数として使用される場合にDES等の弱い暗号の安全性を上げるために使用される。しかし実際には、純粋に暗号化を目的とする場合、3鍵トリプル暗号化が多くの場合に好ましい。この場合、第3の入力mを最後の暗号化ステップにおいて使用する。3鍵トリプル暗号化は暗号化の文脈の中では安全であるが、圧縮関数として使用される場合は完全に安全であるとはいえない。他方、2鍵トリプル暗号化はセキュアな圧縮関数である。2鍵トリプル暗号化を圧縮関数として使用することはこれまでしられていない。
ハッシュ関数処理部112eは、署名するメッセージのハッシュダイジェストを生成する。
署名生成部112fは、ハッシュ関数処理部112eで生成されたハッシュダイジェストからワンタイム署名を生成する。
ここで、本実施形態においては、ハッシュダイジェストの各ビットに、ハッシュダイジェストの先頭位置からインデックスを二つずつ割り振る。そして、各々のビットの値が「1」であれば割り振られた二つのインデックスのうち一番目のインデックスに対応する秘密情報と、二番目のインデックスに対応する秘密情報を一方向関数処理部112cでAES暗号化した暗号化値と、を対応させることで部分ワンタイム署名を生成する。一方、各々のビットの値が「0」であれば割り振られた二つのインデックスのうち一番目のインデックスに対応する秘密情報を一方向関数処理部112cでAES暗号化した暗号化値と、二番目のインデックスに対応する秘密情報と、を対応させることで部分ワンタイム署名を生成する。この具体例については、図6を用いて詳述する。
IF部113は、後述する読取装置130との間で情報の送受信を行うためのインタフェースである。なお、接続は接点なしであっても(この場合、データはアンテナを使用してワイヤレス送信される)、接点ありであってもよい。
以上に記載したスマートカードは、例えば、図19に示すようなICカード170で実現可能である。
ICカード170は、アンテナ171と、アンテナ171に接続されたICチップ172と、を備えている。
ここで、記憶部111については、ICチップ172におけるEEPROM(Electronically Erasable and Programmable Read Only Memory)等の外部記憶装置172aにより実現可能であり、処理部112については、ICチップ172におけるCPU(Central Processing Unit)172bにおいて外部記憶装置172aに記憶されている所定のプログラムを実行することで実現可能であり、IF部113については、アンテナ171により実現可能である。
なお、処理部112で行っている処理については、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積ロジックICによりハード的に実行されるものであってもよい。
図3は、読取装置130の概略図である。
図示するように、読取装置130は、IF部131と、処理部132と、送受信部133と、を備えている。
IF部131は、スマートカード110との間で情報の送受信を行うためのインタフェースである。
処理部132は、読取装置130全体の処理を制御する制御部である。
送受信部133は、ネットワーク160を介して情報の送受信を行うためのインタフェースであり、例えば、NIC(Network Interface Card)を利用すればよい。
ここで、読取装置130については、例えば、図20に示すいわゆるコンピュータ180により実現可能である。
コンピュータ180は、CPU181と、メモリ182と、外部記憶装置183と、入力装置184と、出力装置185と、通信装置186と、リーダライタ187と、これらを接続するバス188と、を備えている。
そして、例えば、IF部131は、スマートカードに対して情報を読み書きすることのできるリーダライタ187により実現可能であり、処理部132は、外部記憶装置183に記憶されている所定のプログラムをメモリ182に読み出してCPU181で実行することにより実現可能であり、送受信部133は、NIC等の通信装置186により実現可能である。
図4は、検証装置140の概略図である。
図示するように、検証装置140は、記憶部141と、処理部142と、送受信部143と、を備えている。
記憶部141は、検証情報記憶部141aと、一時情報記憶部141bと、を備えている。
検証情報記憶部141aには、スマートカード110から読み取られた部分ワンタイム署名を検証するための情報が記憶されている。
例えば、本実施形態においては、後述するマークル木のマスタ公開鍵と、乱数生成部142aで初期ベクトルを算出するための公開シードと、が記憶される。
一時情報記憶部141bには、後述する処理部142において処理を行うために必要とされる情報を一時的に記憶する。
処理部142は、乱数生成部142aと、一方向関数処理部142bと、圧縮関数処理部142cと、ハッシュ関数処理部142dと、署名検証部142eと、を備えている。
乱数処理部142aは、スマートカード110における乱数処理部112bと同様の処理を行う。但し、乱数処理部142aで使用する公開シードは、検証情報記憶部141aに記憶されているものを使用する。
一方向関数処理部142bは、スマートカード110における一方向関数処理部112cと同様の処理を行う。
圧縮関数処理部142cは、スマートカード110における圧縮関数処理部112dと同様の処理を行う。
ハッシュ関数処理部142dは、スマートカード110から読み取られたメッセージのハッシュダイジェストを生成する。
署名検証部142eは、スマートカード110から読み取られた部分ワンタイム署名からワンタイム公開鍵を算出し、算出したワンタイム公開鍵とスマートカード110から読み取られた認証パスからマスタ公開鍵を算出し、検証情報記憶部141aに記憶されているマスタ公開鍵と比較して、これらが一致する場合には承認を行い、一致しない場合には拒絶する。
送受信部143は、ネットワーク160を介して情報の送受信を行うためのインタフェースであり、例えば、NICを利用すればよい。
なお、以上に記載した検証装置140については、図21に示すような、いわゆるコンピュータ190により実現することが可能である。
例えば、記憶部141は、外部記憶装置193により実現可能であり、処理部142は、外部記憶装置193に記憶されている所定のプログラムをメモリ192に読み込み、CPU191で実行することにより実現可能であり、送受信部143は、NIC等の通信装置196により実現可能である。
図5は、本実施形態におけるワンタイム署名及びワンタイム公開鍵を説明するための概略図である。
本実施形態におけるワンタイム署名は一方向関数を組み合わせることにより算出され、ワンタイム公開鍵は圧縮関数を組み合わせることにより算出される。
ここで、本実施形態においては、nビットのメッセージ(ダイジェスト)mに署名するために、2n個の秘密情報x0,0、x0,1、…、x0,2n−1を使用する。なお、この秘密情報については、スマートカード110の鍵処理部112aが生成し、ワンタイム情報記憶部111bに記憶する。
また、秘密情報x0,0、x0,1、・・・、x0,2n−1の下付き文字(0,0)、(0,1)、・・・、(0,2n−1)はインデックスを示し、当該インデックスの第一項目は秘密情報であることを示す識別子である「0」が割り当てられており、第二項目は各インデックスが割り当てられる順番が0から順に連番で割り当てられている。
なお、秘密情報に割り振られるインデックスはこのような態様に限定されるわけではなく、第一項目は秘密情報であることを識別することができるものであればよく、また、第二項目も秘密情報が割り当てられるメッセージ(ダイジェスト)の先頭からの位置を識別することができるものであればどのようなものであってもよい。
ワンタイム公開鍵は、一方向関数Oを使用して計算される値O(x0,0)、O(x0,1)、・・・、O(x0,2n−1)を葉として構築される二進木構造(OT)におけるルートであり、圧縮関数Kを使用してこれらの値を2つずつ再帰的に結合することで算出される。
なお、図5に示すように、二進木構造に配置されるノードで行われる計算を示す関数にもインデックスが付与される。即ち、一方向関数O1,0、O1,1、・・・、O1,7の下付き文字、および、圧縮関数K4,0、K3,0、K3,1、K2,0、K2,1、K2,2、K2,3の下付き文字、がインデックスである。
ここで、これらのノードにおける関数に割り振られるインデックスは、第一項目は葉からの高さ(距離)が1から順に連番で割り当てられており、第二項目は各高さ(距離)における位置(計算される順番)が0から順に連番で割り当てられている。
なお、これらの関数に割り振られるインデックスはこのような態様に限定されるわけではなく、二進木構造における葉からの高さ(距離)と、各高さ(距離)における位置(計算される順番)と、を特定することができるものであればどのようなものであってもよい。
まず、ワンタイム署名の生成方法について説明する。ワンタイム署名は、スマートカード110の署名生成部112fにおいて生成される。
ここで、本説明においては、簡易化のために4ビットのメッセージを署名する場合について説明するが、実際に多く使用されている128ビット又は256ビットのメッセージにも適用可能である。
4ビットのメッセージに署名するには、8個の秘密情報、すなわちx0,0、x0,1、・・・、x0,7が必要である。本発明による好ましい実施形態では、秘密情報は、鍵処理部112aにおいて、鍵記憶部111aに記憶されている秘密シードを鍵として用いて各インデックス(0,0)、(0,1)、・・・、(0,7)をAES暗号化することにより生成される。即ち、下記の(2)式で計算される。
Figure 2008103975
ここで、ssは鍵記憶部111aに記憶されている秘密シードであり、(0‖i)はインデックスを周知の方法で結合させたものであり、i=0,1,2,3,・・・,7である。
次に、秘密情報x0,0、x0,1、・・・、x0,7を一方向関数に入力することにより、二進木の葉x1,0、x1,1、x1,2、x1,3、x1,4、x1,5、x1,6、及びx1,7を算出することができる。
この点、本実施形態においては、署名するメッセージ(ダイジェスト)の最初のビットから順に二つのインデックスを各々のビットに割り振り、署名するメッセージ(ダイジェスト)の各々の二つのインデックスに対応するビットの値が「0」であれば、付与されたインデックスのうち一番目の(左側に位置する)インデックスに対応する秘密情報と、二番目の(右側に位置する)インデックスに対応する秘密情報を一方向関数に入力して算出した葉と、をペアにして部分ワンタイム署名とする。
一方、署名するメッセージ(ダイジェスト)の二つのインデックスに対応するビットの値が「1」であれば、付与されたインデックスのうち一番目の(左側に位置する)インデックスに対応する秘密情報を一方向関数に入力して算出した葉と、二番目の(右側に位置する)インデックスに対応する秘密情報と、をペアにして部分ワンタイム署名とする。
例えば、図5において、署名するメッセージが「0110」の場合には、ワンタイム署名として、((x1,0,x0,1),(x0,2,x1,3),(x0,4,x1,5),(x1,6,x0,7))が生成される。
なお、図5に示す二進木構造については、署名を行うメッセージ毎に異なるものを使用するため、使用する二進木構造を識別するために、ワンタイム署名インデックスが各々割り振られる。例えば、図6のOT1,0、OT1,1、・・・、OT1,7の下付き文字(1,0)、(1,1)、・・・、(1,7)がワンタイム署名インデックスを示しているが、当該インデックスの第一項目はワンタイム署名であることを示す識別子である「1」が割り当てられており、第二項目は各ワンタイム署名(二進木構造)が使用される順番が0から順に連番で割り当てられている。
なお、ワンタイム署名インデックスはこのような態様に限定されるわけではなく、第一項目はワンタイム署名(二進木構造)であることを識別することができるものであればよく、また、第二項目も第二項目は各ワンタイム署名(二進木構造)が使用される順番を特定することができるものであればどのようなものであってもよい。
なお、スマートカード110の署名生成部112fは、生成した部分ワンタイム署名を順次、読取装置130を介して検証装置140に送信する。なお、部分ワンタイム署名を送信する場合には、ワンタイム公開鍵を算出するのに必要とされる二進木構造を特定することができるように、ワンタイム署名インデックス、または、各部分ワンタイム署名を生成した秘密情報に対応するインデックス、をともに送信する。
そして、スマートカード110から部分ワンタイム署名を受け取った検証装置140の署名検証部142eは、既に受け取っているメッセージの対応するビットの値から、受信した部分ワンタイム署名に含まれる秘密情報を特定し、当該秘密情報を一方向関数に入力して対応するインデックスから算出された初期ベクトルを用いることで、欠落している葉の値を計算して、図5に示す二進木構造の対応する圧縮関数Kに入力することで順次計算をおこない、全ての部分ワンタイム署名を受信することで、二進木のルートであるワンタイム公開鍵を算出する。
また、検証装置140の署名検証部142eは、算出したワンタイム公開鍵からマスタ公開鍵の算出を行う。
図6は、ワンタイム公開鍵からマスタ公開鍵の算出を行う処理を説明するための概略図である。
署名検証部142eは、ワンタイム公開鍵otp1,0、otp1,1、・・・、otp1,7を圧縮関数を用いることにより結合して一つのマスタ公開鍵pを算出する。
ここで、ワンタイム公開鍵otp1,0、otp1,1、・・・、otp1,7の下付き文字(1,0)、(1,1)、・・・、(1,7)は、ワンタイム署名インデックスを示している。
また、マークル木のノードを形成する圧縮関数Kに添付されている下付き文字(2,0)、(2,1)、・・・、(4,0)も、インデックスを示しているが、これは図5で説明したものと同様である。
そして、各圧縮関数で使用する初期ベクトルは、各圧縮関数のインデックスを周知の方法で結合した値を入力して検証情報記憶部141aに記憶されている公開シードを鍵として用いてAES暗号化することにより算出される。
なお、署名検証部142eでマスタ公開鍵pを実際に算出する場合には、全てのワンタイム公開鍵を圧縮関数で結合するのではなく、スマートカード110から送られてくる認証パスを用いて算出する。
例えば、図6に示されているように、署名するメッセージから算出されたワンタイム署名m’からワンタイム公開鍵otp1,2が算出された場合、まず、ワンタイム公開鍵otp1,2とワンタイム公開鍵otp1,3とを圧縮関数K2,1で結合することにより、圧縮値h2,1が算出される。そして、圧縮値h2,1と圧縮値h2,0とを圧縮関数K3,0で結合することにより圧縮値h3,0が算出される。さらに、圧縮値h3,0と圧縮値h3,1とを圧縮関数K4,0で結合することにより、マスタ公開鍵pが算出される。
即ち、ワンタイム署名m’に対応するワンタイム公開鍵otp1,2には、認証パスとして、ワンタイム公開鍵otp1,3、圧縮値h2,0、および、圧縮値h3,1、が必要となる。
従って、スマートカード110は、署名するメッセージからワンタイム署名m’を算出するとともに、使用した秘密情報からワンタイム署名m’に対応するワンタイム公開鍵otp1,2に必要となる認証パスをマークル木情報記憶部111cに記憶されている情報から特定して、特定した値を認証パスとして検証装置140に送信する。
なお、マークル木情報記憶部111cには、このような認証パスを特定するために、各ノード間の関連を特定する情報(各ノードのインデックス)と、各ノードで算出される圧縮値と、を特定する情報が記憶されている。これらの情報は、署名システム100のセットアップ時等において、マークル木及び当該マークル木に属する二進木構造を一度全て計算しておき、取得すればよい。
そして、検証装置140の署名検証部142eは、受信したワンタイム署名m’と認証パスとにより算出されるマスタ公開鍵pと、検証情報記憶部141aに記憶されているマスタ公開鍵と、を比較してこれらが一致した場合には署名を承認する。
以上のように構成される本実施形態における署名システム100での処理を、図7に示すシーケンス図を用いて説明する。なお、本シーケンス図においてスマートカード110と検証装置140間での情報の送受信は、読取装置130を介して行われる。
まず、スマートカード110において検証するメッセージmの入力を受け付け、一時情報記憶部111dに記憶する(S10)。なお、メッセージmの受け付けは、例えば、読取装置130を介して受け付ければよい。
そして、受け付けたメッセージmのダイジェストH(m)が、ハッシュ関数処理部112eにおいて所定のハッシュ関数Hを用いて計算される(S11)。
また、入力されたメッセージmは、読取装置130の送受信部133を介して検証装置140に送信される(S12)。
そして、検証装置140のハッシュ関数処理部142dにおいても、受信したメッセージmのダイジェストH(m)が所定のハッシュ関数Hを用いて計算される(S13)。
次に、スマートカード110の署名生成部112fは、署名の計算に先立って、メッセージmに使用するインデックスを含む署名側システムの状態を一時情報記憶部111dに記憶される(S14)。なお、このような情報を記憶することにより、電源供給がなくなった場合にシステムが同じワンタイム署名を再び使用しないようにすることができる。
次に、スマートカード111の署名生成部112fは、メッセージmのダイジェストH(m)の最初のビットから部分ワンタイム署名を生成し(S15)、順次、検証装置140に送信する(S16)。
部分ワンタイム署名を受信した検証装置140では、ステップS13で生成したダイジェストH(m)から受信した部分ワンタイム署名に対応するビットを確認することで、一方向関数に入力する秘密情報を特定して、一方向関数処理部142cに入力して検証情報記憶部141aに記憶されている公開シードを用いて二進木構造の欠落した葉を算出する(S17)。
ステップS15〜S17の処理をダイジェストH(m)の全てのビットにつき繰り返し行い、二進木構造の全ての葉を算出し、これらの葉を圧縮関数処理部142cに入力して、ワンタイム公開鍵を生成する(S18)。
なお、スマートカード110では、検証装置140に送信する認証パスを生成して(S19)、検証装置140に送信する(S20)。
認証パスを受信した検証装置140では、生成したワンタイム署名と受信した認証パスを用いてマスタ公開鍵を生成して、検証を行う(S21)。
そして、検証の結果、生成したマスタ公開鍵が検証情報記憶部141aに記憶されているマスタ公開鍵と一致する場合には署名を承認し、これらが一致しない場合には署名を拒絶する(S22)。
以上のように、本実施形態においては、署名の生成と署名の検証とを並行して行うことができるため、処理時間を短縮することができるほか、一つの署名を行うために必要となる二進木に関する情報は一つに限られるため、情報の容量も少なくて済む。なお、他のメッセージに署名を行う場合には、そのメッセージに必要な情報をメモリに記憶すればよい。
図8は、本発明の第二の実施形態である署名システムで使用されるスマートカード210の概略図である。
本実施形態におけるスマートカード210は、第一の実施形態と比較して、記憶部211のマークル木情報記憶部211cに記憶される情報、および、処理部212の鍵処理部212a及び署名生成部212fでの処理が異なっているため、以下、これらの異なっている点に関連する事項について説明する。
本実施形態においては、図11を用いて後に詳述するように、下位のマークル木と、上位のマークル木の二つのマークル木が使用されるため、マークル木情報記憶部211cには、これらの二つのマークル木における認証パスを特定することができるように、各ノード間の関連を特定する情報(各ノードのインデックス)と、各ノードで算出される圧縮値と、を特定する情報が、下位のマークル木と上位のマークル木の各々について記憶される。
また、本実施形態におけるマークル木情報記憶部211cには、下位側マークル木で使用されるインデックスを特定する情報を各々のマークル木毎に記憶する。
さらに、本実施形態におけるマークル木情報記憶部211cには、上位側のマークル木のワンタイム署名が記憶される。なお、上位側のマークル木のワンタイム署名は、下位のマークル木のルートである下位側のマスタ公開鍵から生成する。
また、本実施形態においては、図10を用いて後に詳述するように、署名するメッセージ(またはそのダイジェスト)の任意の連続するビット(本実施形態では連続する2ビット)を組(クイット(quit)という)として、当該クイット毎に部分ワンタイム署名を生成するようにしているため、署名生成部212fは、メッセージの先頭ビットからクイット毎に部分ワンタイム署名を生成して検証装置240に送信するようにしている。
また、本実施形態における鍵処理部212aは、下位のマークル木のルートである下位側のマスタ公開鍵から図10に示す方法でワンタイム署名を生成し、上位側のマークル木のワンタイム署名としてマークル木情報記憶部211cに記憶する。
図9は、本発明の第二の実施形態である署名システムで使用される検証装置240の概略図である。
本実施形態における検証装置240は、第一の実施形態と比較して、記憶部241の検証情報記憶部241aに記憶される情報、および、処理部242の署名検証部242eでの処理が異なっているため、以下、これらの異なっている点に関連する事項について説明する。
本実施形態においては、図11を用いて後に詳述するように、下位のマークル木と、上位のマークル木の二つのマークル木が使用されるため、検証情報記憶部241aには、これらの二つのマークル木におけるマスタ公開鍵を特定する情報が記憶される。
なお、第一の実施形態と同様に、検証情報記憶部241aには、乱数生成部142aで初期ベクトルを算出するための公開シードも記憶される。
また、本実施形態においては、図10を用いて後に詳述するように、署名するメッセージの任意のビットをクイットとして、当該クイット毎に部分ワンタイム署名を生成するようにしており、署名検証部142eは、メッセージの先頭ビットから任意のビット毎に構成されるクイットから、当該クイットに対応する部分ワンタイム署名に含まれる要素を一方向関数に入力して処理する回数を特定し、下位のマークル木における葉を算出する。
図10は、本実施形態におけるワンタイム署名及びワンタイム公開鍵を説明するための概略図である。
本実施形態における部分ワンタイム署名も、第一の実施形態と同様に、一方向関数を組み合わせることにより算出され、ワンタイム公開鍵は、圧縮関数を組み合わせることにより算出される。
本実施形態においては、メッセージ(ダイジェスト)の先頭から2ビットずつの組を1クイット(以下、「q」とする)とし、1q毎に、部分ワンタイム署名を生成する。なお、本実施形態においては、1qに署名をするために2つの秘密情報が使用される。
そして、1q毎にワンタイム署名を生成するために、2ビットの組が(0,0)の場合にはq=0、(0,1)の場合にはq=1、(1,0)の場合にはq=2、(1,1)の場合にはq=3の値とし、秘密情報x0,iを用いて以下の値を定義する。なお、Oは、一方向関数である。
1,i=O1,i(x0,i
2,i=O2,i(O1,i((x0,i))
3,i=O3,i(O2,i(O1,i((x0,0)))
そして、部分ワンタイム署名に関しては、qの値に応じて以下の値を生成する。
q=3の場合、x0,0及びx3,1が部分ワンタイム署名となる。
q=2の場合、x1,0及びx2,1が部分ワンタイム署名となる。
q=1の場合、x2,0及びx1,1が部分ワンタイム署名となる。
q=0の場合、x3,0及びx0,1が部分ワンタイム署名となる。
なお、これらの要素については一方向にのみ算出可能であり非対称となる。その理由は、以下の例から容易に理解することができる。メッセージの最初のクイットがq=3であると仮定する。この場合、秘密x0,0だけでなくx3,1=O3,1(O2,1(O1,1(x0,1)))も明らかにする。ここで、ある攻撃者が(x0,0,x3,1)を傍受し、このペアを使用して異なるクイットq’に署名しようとすると仮定する。攻撃者は、x1,0=O1,0(x0,0)、x2,0=O2,0(O1,0(x0,0))、又はx3,0=O3,0(O2,0(O1,0(x0,0)))を計算することができた場合であっても結果として失敗し、分かるのはx3,1だけであり、またOは一方向であるため、メッセージq’=0、1、又は2に署名するために必要であり得るx2,1、x1,1、又はx0,1を計算することができない。
例えば、メッセージの二進数表現がm=(11011000)である場合、クイットで表すと、M=(3120)になる。
このメッセージに対応するワンタイム署名は((x0,0,x3,1)、(x2,2,x1,3)、(x1,4,x2,5)、(x3,6,x0,7))となる。
そして、本実施形態における署名生成部212fは、ワンタイム署名((x0,0,x3,1)、(x2,2,x1,3)、(x1,4,x2,5)、(x3,6,x0,7))の各部分ワンタイム署名(x0,0,x3,1)、(x2,2,x1,3)、(x1,4,x2,5)、(x3,6,x0,7)を生成し、順次、検証装置240に送信する。
そして、これらの部分ワンタイム署名を受信した検証装置240の署名検証部242eは、既に受け取っているメッセージの対応するビットの値から、受信した秘密情報を特定し、当該部分ワンタイム署名に含まれる要素を一方向関数に入力する回数を特定し、当該回数一方向関数に入力することで二進木構造の欠落している葉の値を計算し、全ての葉x3,0、x3,1、・・・、x3,iの値が特定されると、圧縮関数を連続して適用して、二進木のルートであるワンタイム公開鍵を算出する。
図11は、ワンタイム公開鍵からマスタ公開鍵の算出を行う処理を説明するための概略図である。
第一の実施形態においては、ワンタイム署名からワンタイム公開鍵を算出し、当該ワンタイム公開鍵を一つのマークル木に入力することで、一つのマスタ公開鍵pを算出している。
これに対して、本実施形態においては、スマートカード210の署名生成部212fにおいて生成されたワンタイム署名から、検証装置240の署名検証部242eにおいて下位側のワンタイム公開鍵を算出し、当該下位側のワンタイム公開鍵を下位側のマークル木に入力することで、下位側のマスタ公開鍵p’を算出して検証を行う。そして、この下位側のマスタ公開鍵p’から上位側のワンタイム公開鍵を算出し、当該上位側のワンタイム公開鍵を上位側のマークル木に入力することで、上位側のマスタ公開鍵pを算出する。
そして、このようにして算出した下位側のマスタ公開鍵p’と上位側のマスタ公開鍵pをそれぞれ検証情報記憶部241aに記憶されている下位側及び上位側のマスタ公開鍵と比較することで、これらが一致した場合に署名を認証するようにしている。
なお、これらのマスタ公開鍵p’、pの生成方法については、第一の実施形態における処理を上位側及び下位側の二回繰り返しているだけであるため、詳細な説明は省略する。
このように、本実施形態においては、2つのレベルのマークル木を使用しているため、所与のトランザクションについて、下位のマークル木において記憶しなければならない情報は、一つのマークル木に関するものだけであるため、システムに必要な記憶容量は劇的に低減する。
異なるマークル木で同じインデックスが使用されないように、マークル木のインデックスはその木内で使用されるあらゆるインデックスに添付される。たとえば、下位側のマークル木MT1,7のワンタイム署名OT1,5の4番目の秘密を計算するには、以下のインデックスが乱数生成モジュールと共に使用される:x0,4=AESss(1‖7‖1‖5‖0‖4)。換言すれば、すべての構成要素のすべてのインデックスが連結される。なお、ここでは、簡易化のために、そのノードにおけるインデックスのみを記載している。
なお、マークル木のインデックスについても、マークル署名インデックスと同様の方法で割り振ればよい。
以上のように構成される第二の実施形態における署名システムでの処理を、図12に示すシーケンス図を用いて説明する。なお、本シーケンス図においてスマートカード210と検証装置240間での情報の送受信は、読取装置130を介して行われる。
まず、スマートカード210において検証するメッセージmの入力を受け付け、一時情報記憶部111dに記憶する(S30)。なお、メッセージmの受け付けは、例えば、読取装置130を介して受け付ければよい。
そして、受け付けたメッセージmのダイジェストH(m)が、ハッシュ関数処理部112eにおいて所定のハッシュ関数Hを用いて計算される(S31)。
また、入力されたメッセージmは、読取装置130の送受信部133を介して検証装置240に送信される(S32)。
そして、検証装置240のハッシュ関数処理部142dにおいても、受信したメッセージmのダイジェストH(m)が所定のハッシュ関数Hを用いて計算される(S33)。
次に、スマートカード210の署名生成部212fは、署名の計算に先立って、メッセージmに使用するインデックスを含む署名側システムの状態を一時情報記憶部111dに記憶する(S34)。なお、このような情報を記憶することにより、電源供給がなくなった場合にシステムが同じワンタイム署名を再び使用しないようにすることができる。
次に、スマートカード111の署名生成部212fは、メッセージmのダイジェストH(m)の最初のビットから順にクイットに分割して部分ワンタイム署名を生成し(S35)、生成の終了したものから順に検証装置240に送信する(S36)。
部分ワンタイム署名を受信した検証装置240では、ステップS33で生成したダイジェストH(m)から受信した部分ワンタイム署名に対応するクイットを確認することで、部分ワンタイム署名に含まれる要素を一方向関数に入力する回数を特定して、一方向関数処理部142cに入力して検証情報記憶部241aに記憶されている公開シードを用いて二進木の葉を算出する(S37)。
ステップS35〜S37の処理をダイジェストH(m)の全てのビットにつき繰り返し行い、二進木の全ての葉が算出されることにより、これらの葉を圧縮関数処理部142cに入力して、ワンタイム公開鍵を生成する(S38)。
なお、スマートカード210では、検証装置240に送信する下位側の認証パスを生成して(S39)、検証装置240に送信する(S40)。
そして、ステップS38で生成したワンタイム公開鍵と、ステップS40で受信した認証パスと、を用いて下位側のマスタ公開鍵p’を算出して検証を行う(S41)。検証の結果、署名が承認された場合には、次のステップに進み、署名が拒否された場合には、検証処理を終了するが、ここでは署名が承認されたものとして説明をつつける。
次に、検証装置240の署名検証部242eは、送受信部143を介して検証の終了応答をスマートカード210に送信する(S42)。
終了応答を受信したスマートカード210の署名生成部212fにおいては、予め記憶している上位側のワンタイム署名を検証装置240に送信する(S43)。
また、スマートカード210の署名生成部212fは、上位側の認証パスを生成して(S44)、検証装置240に送信する(S45)。
そして、検証装置240においては、ステップS43で受信したワンタイム署名と、ステップS45で受信した認証パスと、を用いて検証を行い(S46)、検証の結果(承認又は拒絶)を終了応答としてスマートカード210に送信する(S47)。
なお、スマートカード210では、検証装置240に上位側の認証パスを送信してから(S45)、鍵処理部212aにおいて、次のメッセージに使用するための下位側のマークル木を生成し(S48)、そのルートからワンタイム署名を生成して、上位側のマークル木のワンタイム署名としてマークル木情報記憶部211cに記憶する(S49)。
そして、スマートカード210の処理部212は、受信した終了応答を一時情報記憶部111dに記憶する(S50)。
以上のように、本実施形態においては、署名の生成と署名の検証とを並行して行うことができるため、処理時間を短縮することができるほか、一つの署名を行うために必要となる下位側マークル木も逐次生成されるため、記憶容量も少なくて済む。
以上に記載した第二の実施形態においては、上位側のマークル木と下位側のマークル木の二つの階層を設けたが、このような態様に限定されず、より多くの階層を設けることも可能である。
図13は、本発明の第三の実施形態である署名システム300の概略図である。
図示するように、署名システム300は、署名装置310と、検証装置340と、を備えており、署名装置310と検証装置340とはネットワーク160に接続されている。
署名装置310は、図14(署名装置310の概略図)に示されているように、記憶部311と、処理部312と、送受信部314と、を備えている。
記憶部311は、鍵記憶部111aと、ワンタイム情報記憶部311bと、一時情報記憶部111dと、を備えている。
鍵記憶部111aには、第一の実施形態と同様に、AES(Advanced Encryption Standard)暗号化で使用される秘密シード及び公開シードを特定する情報が記憶される。
ワンタイム情報記憶部311bには、各々のワンタイム署名毎に、各々のワンタイム署名で使用されるインデックスと、当該インデックスに対応する秘密情報と、二進木のルートであるワンタイム公開鍵と、が記憶される。なお、本実施形態においては、これらの情報が、各々のワンタイム署名を一意に識別するための識別情報であるワンタイム署名インデックスに対応させて記憶される。
一時情報記憶部111dには、後述する処理部112において処理を行うために必要とされる情報を一時的に記憶する。
処理部312は、鍵処理部312aと、乱数処理部112bと、一方向関数処理部112cと、圧縮関数処理部112dと、ハッシュ関数処理部112eと、署名生成部312fと、を備えている。
鍵処理部112aは、第一の実施形態と同様に、ワンタイム署名で使用する秘密情報を生成する。秘密情報は、ワンタイム署名で使用する各インデックスを鍵記憶部111aに記憶されている秘密シードを鍵として用いてAES暗号化することにより生成される。
なお、鍵処理部112aで生成した秘密情報については、対応するインデックスと共にワンタイム情報記憶部311bに記憶される。
また、本実施形態においては、AES暗号化を行っているが、このような態様に限定されず、例えば、他のブロック暗号化方式やハッシュ関数に基づく暗号化方式を採用することも可能である。
さらに、本実施形態においては、鍵処理部112aは、署名するメッセージ毎に後述するノード(図16参照)を生成して、生成したノードで使用するワンタイム公開鍵を、生成したノードに含まれる二進木構造に割り当てられたワンタイム署名インデックスに対応付けてワンタイム情報記憶部311bに記憶する。
乱数処理部112bは、一方向関数処理部112c、圧縮関数処理部112d、および、ハッシュ関数処理部112eは、第一の実施形態と同様の処理を行う。
署名生成部312fは、第二の実施形態と同様の処理により、ワンタイム署名を生成する。
送受信部314は、ネットワーク160を介して情報の送受信を行うためのインタフェースであり、例えば、NICを利用すればよい。
なお、以上に記載した署名装置310については、図21に示すような、いわゆるコンピュータ190により実現することが可能である。
例えば、記憶部311は、外部記憶装置193により実現可能であり、処理部312は、外部記憶装置193に記憶されている所定のプログラムをメモリ192に読み込み、CPU191で実行することにより実現可能であり、送受信部314は、NIC等の通信装置196により実現可能である。
図15は、検証装置340の概略図である。
図示するように、検証装置340は、記憶部341と、処理部342と、送受信部143と、を備えている。
記憶部341は、検証情報記憶部341aと、一時情報記憶部141bと、を備えている。
本実施形態における検証情報記憶部141aには、署名装置310から受信したワンタイム署名を検証するための情報が記憶されている。
例えば、本実施形態においては、図17に示す木構造を特定する情報が記憶される。
一時情報記憶部141bには、後述する処理部142において処理を行うために必要とされる情報を一時的に記憶する。
処理部342は、乱数生成部142aと、一方向関数処理部142bと、圧縮関数処理部142cと、ハッシュ関数処理部142dと、署名検証部342eと、を備えている。
乱数処理部142a、一方向関数処理部142b、圧縮関数処理部142c、および、ハッシュ関数処理部142dは、第一の実施形態と同様の処理を行う。
署名検証部342eは、署名装置310から送信されたワンタイム署名からワンタイム公開鍵を算出し、また、署名装置310から送信された複数(本実施形態では2つ)のワンタイム公開鍵を圧縮関数で圧縮した圧縮値を算出して、算出したワンタイム公開鍵および圧縮値を圧縮関数で圧縮してノード毎の公開鍵を算出し、当該ノード毎の公開鍵からシステム全体のマスタ公開鍵を算出する。この処理の詳細は図17を用いて説明する。
送受信部143は、ネットワーク160を介して情報の送受信を行うためのインタフェースであり、例えば、NICを利用すればよい。
なお、以上に記載した検証装置140については、第一の実施形態と同様に、図21に示すいわゆるコンピュータ190により実現することができる。
なお、以上に記載した検証装置140については、図21に示すような、いわゆるコンピュータ190により実現することが可能である。
例えば、記憶部341は、外部記憶装置193により実現可能であり、処理部342は、外部記憶装置193に記憶されている所定のプログラムをメモリ192に読み込み、CPU191で実行することにより実現可能であり、送受信部143は、NIC等の通信装置196により実現可能である。
図16は、本実施形態で使用するノードNj,iを説明するための概略図である。
ここで、ノードNj,iに付けられた下付き文字(i,j)はノードのインデックスを示す。なお、ノードのインデックスについては図17を用いて説明する。
ノードNj,iは、三つの二進木構造OT、OT、OTと、二つの圧縮関数K、Kと、を備えている。
そして、各ノードNj,iでは、他のノードNj+1,2iで算出された公開鍵Pj+1,2iを二進木構造OTに入力してワンタイム公開鍵optを算出し、また、他のノードNj+1,2i+1で算出された公開鍵Pj+1,2i+1を二進木構造OTに入力してワンタイム公開鍵optを算出して、これらのワンタイム公開鍵opt、optを圧縮関数Kで圧縮することにより圧縮値を算出する。
また、各ノードNj,iでは、署名するメッセージmを二進木構造OTに入力してワンタイム署名を生成し、生成したワンタイム署名からワンタイム公開鍵optを算出する。
そして、圧縮関数Kで圧縮することにより算出された圧縮値と、ワンタイム公開鍵optと、を圧縮関数Kで圧縮することにより、ノードNj,i毎の公開鍵Pj,iを算出する。
例えば、メッセージmを署名する場合、署名装置310の署名生成部312fにおいて、メッセージmから部分ワンタイム署名を生成し、生成した部分ワンタイム署名を検証装置340に送信して、検証装置340が、部分ワンタイム署名をノードNj,iに適用して、ノード毎の公開鍵Pj,iを算出する。
なお、前述のように、乱数処理部112bは、入力として各圧縮関数、一方向関数のインデックスのみならずノードのインデックスも結合して初期ベクトルを算出する。たとえば、ノードN2,11131内のKの初期ベクトルは単にAESsp(4)ではなく初期AESsp(2‖1‖4)として算出される。
図17は、本実施形態である署名システム300において、検証を行うための処理を説明するための概略図である。
まず、最初は、署名システム300において、一つのノードN0,0が生成される。そして、このシステムのマスタ公開鍵はノードN0,0のルートであるpとなる。
一つのノードN0,0では、一つのメッセージmしか署名することができないため、次のメッセージmを署名するためには、マスタ公開鍵を算出するためのノードN0,0の下位のレベルに属する他のノードN1,1を生成する必要がある。
なお、本実施形態においては、一つのノードに関連付けることができる子ノードは、二つであり、ノードN0,0には、ノードN1,0、N1,1が関連付けられている。
そして、その次のメッセージmにはノードN1,0が生成され、その次のメッセージmにはノードN1,0の下位のレベルに属する他のノードN2,3が生成される。以上のようにルートとなるノードN0,0から子ノードを次々に生成することにより、本実施形態では、署名することのできるメッセージが無限となる。
なお、使用するノードの選択は親子のレベルにおいてインタレースされ、一つのレベルでノードの選択が右から左に行われた場合には、次のレベルでは左から右に選択される葉にすることが望ましい。ノードの選択がインタレースされる理由は、所与のレベルの最後のノードから次のレベルの次のノードへの変化が、インタレースによる選択を使用する場合に最小となるためである。例えば、メッセージmがノードN2,3を使用して署名された場合、ノードN3,7はノードN2,3の真下にあり、他方、ノードN3,0はノードN2,3の反対側にあるため、次のメッセージmには、ノードN3,7を選択することにより、ノードN2,3を用いて署名の検証を行った際の公開鍵pへのパスをそのまま使用することができる。
そして、例えば、検証装置340の署名検証部342eにおいて、図17に示すメッセージm12の署名を検証する場合には、メッセージm12のワンタイム署名からワンタイム公開鍵を算出して、ノードN3,2の公開鍵p3,2を算出する。そして、このようにして算出した公開鍵p3,2をノードN3,2の親ノードN2,1に入力して、ノードN2,1の公開鍵p2,1を算出する。このような処理をシステムのルートノードN0,0まで繰り返すことで、システムのマスタ公開鍵pを算出することができるようになる。このようにして算出したマスタ公開鍵pが検証情報記憶部341aに記憶されているマスタ公開鍵と一致するか否かを比較することで、検証を行うことができる。
このようなノード間の親子関係については、検証情報記憶部341aに記憶しておく。
以上のように構成される第三の実施形態における署名システム300での処理を、図18に示すシーケンス図を用いて説明する。
まず、署名装置310において検証するメッセージmの入力を受け付け、一時情報記憶部111dに記憶する(S60)。なお、メッセージmの受け付けは、例えば、キーボードなどの入力装置を介して受け付ければよい。
そして、受け付けたメッセージmのダイジェストH(m)が、ハッシュ関数処理部112eにおいて所定のハッシュ関数Hを用いて計算される(S61)。
また、入力されたメッセージmは、送受信部314を介して検証装置340に送信される(S62)。
そして、検証装置340のハッシュ関数処理部142dにおいても、受信したメッセージmのダイジェストH(m)が所定のハッシュ関数Hを用いて計算される(S63)。
次に、検証装置340の署名検証部342eは、メッセージmに署名するためのノードN0,0を生成する(S64)。
次に、署名装置310の署名生成部312fは、メッセージmのダイジェストH(m)の最初のビットから順にクイットに分割して部分ワンタイム署名を生成し(S65)、生成の終了したものから順に検証装置340に送信する(S66)。
部分ワンタイム署名を受信した検証装置340では、ステップS63で生成したダイジェストH(m)から受信した部分ワンタイム署名に対応するクイットを確認することで、一方向関数に入力する回数を特定して、一方向関数処理部142cに入力して検証情報記憶部241aに記憶されている公開シードを用いて算出を行うことにより二進木の葉を算出する(S67)
ステップS65〜S67の処理をダイジェストH(m)の全てのビットにつき繰り返し行い、二進木の全ての葉が算出されることにより、これらの葉を圧縮関数処理部142cに入力して、ワンタイム公開鍵を算出する(S68)。
そして、検証装置340の署名検証部342eは、ステップS64で生成したノードN0,0にステップS68で算出したワンタイム公開鍵を入力することで、ノードN0,0の公開鍵を算出し、検証を行う(S69)。
そして、検証装置340の署名検証部342eは、ステップS69の検証で署名を承認することができる場合には、送受信部143を介して署名装置310に終了応答を送信する(S70)。
終了応答を受信した署名装置310では、新しいメッセージの入力を受け付け(S71)、以下、ステップS62〜ステップS70までの処理を送信するメッセージがなくなるまで繰り返し行う。
以上のように、本実施形態においては、署名するメッセージに応じて、順次、ノードを生成して署名を生成して検証することができるため、従来のSSL(Secure Socket Layer)と同様に、インターネットユーザがウェブサイトの認証を行う際に使用することができる。
そして、本実施形態のように、マークル署名を利用することで、量子コンピュータを用いたとしても認証の安全性を確保することができる。
第一の実施形態である署名システムの概略図。 スマートカードの概略図。 読取装置の概略図。 検証装置の概略図。 ワンタイム署名及びワンタイム公開鍵を説明するための概略図。 ワンタイム公開鍵からマスタ公開鍵の算出を行う処理を説明するための概略図。 第一の実施形態である署名システムでの処理を示すシーケンス図。 第二の実施形態である署名システムで使用されるスマートカードの概略図。 第二の実施形態である署名システムで使用される検証装置の概略図。 ワンタイム署名及びワンタイム公開鍵を説明するための概略図。 ワンタイム公開鍵からマスタ公開鍵の算出を行う処理を説明するための概略図。 第二の実施形態における署名システムでの処理を示すシーケンス図。 第三の実施形態である署名システムの概略図。 署名装置の概略図。 検証装置の概略図。 ノードを説明するための概略図。 第三の実施形態において検証を行うための処理を説明するための概略図。 第三の実施形態における署名システムでの処理を示すシーケンス図。 ICカードの概略図。 コンピュータの概略図。 コンピュータの概略図。
符号の説明
100、300 署名システム
110、210 スマートカード
111、211 記憶部
112、212 処理部
113 IF部
310 署名装置
311 記憶部
312 処理部
314 送受信部
130 読取装置
140、240、340 検証装置
141、241、341 記憶部
142、242、342 処理部
143 送受信部

Claims (11)

  1. 第一コンピュータで生成されたデジタル署名を第二コンピュータで検証する署名システムであって、
    前記第一コンピュータの処理部は、デジタル署名をするデータを先頭ビットから順に特定のビット数毎のグループに分けて一方向関数に代入することで生成した当該グループ毎の部分署名を、順次、前記第二コンピュータに出力する処理を行うこと、
    を特徴とする署名システム。
  2. 請求項1に記載の署名システムであって、
    前記第二コンピュータの処理部は、前記部分署名を圧縮関数で圧縮することによりワンタイム公開鍵を生成し、当該ワンタイム公開鍵からマスタ公開鍵を生成して、当該マスタ公開鍵を予め記憶部に記憶されているマスタ公開鍵と比較することで検証する処理を行うものであること、
    を特徴とする署名システム。
  3. 請求項1に記載の署名システムであって、
    前記第一コンピュータの処理部は、前記グループに含まれるビットが示す値に応じて、前記グループ毎に一意に割り当てられた秘密情報を一方向関数に代入する回数が異なるようにして前記部分署名を生成する処理を行うこと、
    を特徴とする署名システム。
  4. 請求項3に記載の署名システムであって、
    前記第二コンピュータの処理部は、予め定められた回数から前記第一コンピュータにおいて前記一方向関数に代入された回数を差し引いた回数だけ、前記部分署名を前記一方向関数に代入することで算出した算出値を全ての前記部分署名において特定し、特定した前記算出値を二つずつ圧縮関数で圧縮して算出した圧縮値をさらに二つずつ圧縮関数で圧縮する処理を繰り返すことにより、一つの前記マスタ公開鍵を生成する処理を行うこと、
    を特徴とする署名システム。
  5. 請求項1に記載の署名システムであって、
    前記一方向関数は、ハッシュ関数であること、
    を特徴とする署名システム。
  6. 請求項2に記載の署名システムであって、
    前記圧縮関数は、ハッシュ関数であること、
    を特徴とする署名システム。
  7. 請求項3に記載の署名システムであって、
    前記一方向関数は、ブロック暗号を生成するものであり、
    前記ブロック暗号は、前記秘密情報を鍵情報として入力して、ランダムに生成された初期ベクトルを暗号化するものであること、
    を特徴とする署名システム。
  8. 請求項6又は7に記載の署名システムであって、
    前記ブロック暗号は、AES暗号であること、
    を特徴とする署名システム。
  9. 請求項4に記載の署名システムであって、
    前記圧縮関数は、ブロック暗号を生成するものであり、
    前記ブロック暗号は、ランダムに生成された初期ベクトルを第一鍵情報で暗号化することにより第一暗号化情報を生成し、当該第一暗号化情報を第二鍵情報で暗号化することにより第二暗号化情報を生成し、当該第二暗号化情報を前記第一鍵情報で暗号化することにより生成されるものであり、
    前記第一鍵情報及び前記第二鍵情報は、前記算出値又は前記圧縮値であること、
    を特徴とする署名システム。
  10. 請求項2に記載の署名システムであって、
    前記第二コンピュータの処理部は、前記部分署名を圧縮関数で圧縮することによりワンタイム公開鍵を生成し、当該ワンタイム公開鍵から第一公開鍵を生成し、第一公開鍵からワンタイム署名を生成して、当該ワンタイム署名を圧縮関数で圧縮することによりワンタイム公開鍵を生成し、当該ワンタイム公開鍵から第二公開鍵を生成する処理を任意の第n公開鍵(nは2以上の自然数)まで繰り返し行い、当該第n公開鍵を予め記憶部に記憶されている第n公開鍵と比較することで検証する処理を行うこと、
    を特徴とする署名システム。
  11. 第一コンピュータで生成されたデジタル署名を第二コンピュータで検証する署名方法であって、
    前記第一コンピュータの処理部において、デジタル署名をするデータを先頭ビットから順に特定のビット数毎のグループに分けて一方向関数に代入することで当該グループ毎の部分署名を生成する過程と、
    前記第一コンピュータの処理部において、生成した当該グループ毎の部分署名を、順次、前記第二コンピュータに出力する過程と、
    を備えることを特徴とする署名方法。
JP2006284637A 2006-10-19 2006-10-19 署名システム及び署名方法 Expired - Fee Related JP4477616B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006284637A JP4477616B2 (ja) 2006-10-19 2006-10-19 署名システム及び署名方法
US11/848,386 US20080095360A1 (en) 2006-10-19 2007-08-31 Signature System and Signature Method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006284637A JP4477616B2 (ja) 2006-10-19 2006-10-19 署名システム及び署名方法

Publications (2)

Publication Number Publication Date
JP2008103975A true JP2008103975A (ja) 2008-05-01
JP4477616B2 JP4477616B2 (ja) 2010-06-09

Family

ID=39317948

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006284637A Expired - Fee Related JP4477616B2 (ja) 2006-10-19 2006-10-19 署名システム及び署名方法

Country Status (2)

Country Link
US (1) US20080095360A1 (ja)
JP (1) JP4477616B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016076877A (ja) * 2014-10-08 2016-05-12 日本電信電話株式会社 情報共有システム及び方法、情報共有装置並びにプログラム

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2166696B1 (fr) * 2008-08-27 2016-10-05 STMicroelectronics (Rousset) SAS Protection de l'intégrité de données chiffrées en utilisant un état intermédiare de chiffrement pour générer une signature
EP2173058B1 (en) * 2008-10-01 2012-02-29 Sap Ag Context free and context sensitive XML digital signatures for SOAP messages
US8516232B2 (en) * 2009-06-30 2013-08-20 Sandisk Technologies Inc. Method and memory device for performing an operation on data
US8538938B2 (en) * 2010-12-02 2013-09-17 At&T Intellectual Property I, L.P. Interactive proof to validate outsourced data stream processing
US9553728B2 (en) * 2011-02-25 2017-01-24 Nokia Technologies Oy Method and apparatus for providing end-to-end security for distributed computations
US9172529B2 (en) * 2011-09-16 2015-10-27 Certicom Corp. Hybrid encryption schemes
CN102571354A (zh) * 2012-01-16 2012-07-11 北京交通大学 一种数字签名及其验证方法和系统
KR101876297B1 (ko) * 2012-03-16 2018-07-10 삼성전자주식회사 전자 서명 검증 장치 및 방법
EP2832128B1 (en) 2012-03-29 2022-06-15 Nokia Technologies Oy Wireless memory device authentication
US8954728B1 (en) * 2012-12-28 2015-02-10 Emc Corporation Generation of exfiltration-resilient cryptographic keys
US9942450B2 (en) * 2014-07-11 2018-04-10 Agt International Gmbh Automatic time signature-based video matching for a camera network
US9948459B2 (en) * 2014-07-25 2018-04-17 Cheng-Han KO Multiple encrypting method and system for encrypting a file and/or a protocol
WO2016050285A1 (en) 2014-09-30 2016-04-07 Telefonaktiebolaget L M Ericsson (Publ) Technique for handling data in a data network
PL3259873T3 (pl) 2015-02-20 2019-07-31 Telefonaktiebolaget Lm Ericsson (Publ) Sposób zapewniania wartości skrótu dla elementu danych, urządzenie elektroniczne i program komputerowy
US10447479B2 (en) 2015-02-20 2019-10-15 Telefonaktiebolaget Lm Ericsson (Publ) Method of providing a hash value for a piece of data, electronic device and computer program
US10043039B2 (en) 2015-04-10 2018-08-07 Telefonaktiebolaget Lm Ericsson (Publ) Verification paths of leaves of a tree
US10313130B2 (en) 2016-09-27 2019-06-04 Intel Corporation Hash-based signature balancing
IT201600106953A1 (it) * 2016-10-24 2018-04-24 Aliasnet S R L Metodo di registrazione di una transazione, in particolare di firma di un documento elettronico
KR102665997B1 (ko) * 2016-12-20 2024-05-13 에스케이하이닉스 주식회사 패킷을 부호화하는 장치 및 이를 포함하는 메모리 네트워크에서의 라우팅 방법
US10887090B2 (en) * 2017-09-22 2021-01-05 Nec Corporation Scalable byzantine fault-tolerant protocol with partial tee support
WO2019088397A1 (ko) * 2017-11-02 2019-05-09 단국대학교 산학협력단 일회용 패스워드를 이용한 트랜잭션 인증 방법 및 장치
US20200389322A1 (en) * 2017-12-07 2020-12-10 Telefonaktiebolaget Lm Ericsson (Publ) Security for group communication
US11050571B2 (en) 2019-02-14 2021-06-29 Carrott Richard F Systems for producing and maintaining verified electronic signatures
US11070376B2 (en) * 2019-06-26 2021-07-20 Verizon Patent And Licensing Inc. Systems and methods for user-based authentication
US10581616B1 (en) * 2019-07-11 2020-03-03 ISARA Corporation Managing nodes of a cryptographic hash tree in a hash-based digital signature scheme
CN111600867B (zh) * 2020-05-12 2021-10-29 腾讯科技(深圳)有限公司 一种数据加密方法和相关设备
EP4068686A1 (en) * 2021-03-31 2022-10-05 Siemens Aktiengesellschaft Signing system for validating stateful hash-based digital signatures

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309589A (en) * 1978-07-25 1982-01-05 National Research Institute For Metals Method and apparatus for electron beam welding
US8443020B2 (en) * 2005-09-09 2013-05-14 Mitsubishi Electric Corporation Pseudo random number generator
CA2585987C (en) * 2005-10-14 2012-12-04 Research In Motion Limited System and method for protecting master encryption keys

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016076877A (ja) * 2014-10-08 2016-05-12 日本電信電話株式会社 情報共有システム及び方法、情報共有装置並びにプログラム

Also Published As

Publication number Publication date
JP4477616B2 (ja) 2010-06-09
US20080095360A1 (en) 2008-04-24

Similar Documents

Publication Publication Date Title
JP4477616B2 (ja) 署名システム及び署名方法
ES2687182T3 (es) Determinar un secreto común para el intercambio seguro de información y claves criptográficas jerárquicas y deterministas
CN101765996B (zh) 用于远程认证和交易签名的装置和方法
CN109274480B (zh) 基于hmac-sm3算法的数据认证方法及量子密钥分发系统
CN108780548A (zh) 将椭圆曲线加密用于个人装置安全以共享秘密
JP5000365B2 (ja) ハッシュ値生成装置、プログラム及びハッシュ値生成方法
CN106778205A (zh) 运用物理不可克隆函数的无数据库验证
WO2012001796A1 (ja) 個体別情報生成装置及び個体別情報生成方法
JP2020522205A (ja) プログレッシブキー暗号化アルゴリズム
CN110661790A (zh) 一种区块链隐私数据的保护方法、装置、设备和介质
US20100208886A1 (en) Method and device for manipulation-proof transmission of data
US7000110B1 (en) One-way function generation method, one-way function value generation device, proving device, authentication method, and authentication device
CN108833117B (zh) 一种私钥存储和读取方法、装置及硬件设备
CN115804061A (zh) 生成共享私钥
WO2005076522A1 (en) Methods for generating identification values for identifying electronic messages
KR101925941B1 (ko) 정보가상화 기반 거래 서명 인증 방법
Kamal et al. A Proposed hash algorithm to use for blockchain base transaction flow system
CN108599958A (zh) 基于云的超轻量级无线射频识别标签所有权转移方法
CN112184441A (zh) 数据处理方法、装置、节点设备及存储介质
US9438429B2 (en) Method for authentication and electronic device for performing the authentication
JP6246516B2 (ja) 情報処理システム
CN117795901A (zh) 生成数字签名份额
CN117917041A (zh) 生成共享加密密钥
US5347650A (en) Device for transforming a digital data sequence into a condensed digital data block using tables and logic operators
CN109861822A (zh) 一种区块链系统中可控消息交易加密的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090406

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100309

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100311

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees