(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022020067
(43)【公開日】2022-01-31
(54)【発明の名称】デジタル署名方法、署名情報の検証方法、関連装置及び電子機器
(51)【国際特許分類】
H04L 9/32 20060101AFI20220124BHJP
G09C 1/00 20060101ALI20220124BHJP
【FI】
H04L9/32 200B
H04L9/32 200E
G09C1/00 620Z
【審査請求】有
【請求項の数】16
【出願形態】OL
【公開請求】
(21)【出願番号】P 2021180605
(22)【出願日】2021-11-04
(31)【優先権主張番号】202110319789.7
(32)【優先日】2021-03-25
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】516262169
【氏名又は名称】北京百度網訊科技有限公司
(74)【代理人】
【識別番号】110002468
【氏名又は名称】特許業務法人後藤特許事務所
(72)【発明者】
【氏名】陳 俣▲コウ▼
(72)【発明者】
【氏名】段 潤堯
(72)【発明者】
【氏名】晋 力京
(57)【要約】 (修正有)
【課題】量子コンピューティングにおける情報セキュリティ分野に適したデジタル署名方法、署名情報の検証方法及び関連装置及び電子機器を提供する。
【解決手段】方法は、第一電子機器において、第一可逆行列が含まれる秘密鍵を取得し、第一可逆行列及び第一テンソルに基づいて、第一テンソルと、第一テンソルと同型のテンソルとが含まれるL個の第二テンソルを生成し、第二可逆行列及び第一テンソルに基づいて、送信すべきファイルに対しデジタル署名を行って、第一文字列を得て、L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築し、第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル及びハッシュツリーのルートノードのハッシュ値に基づいて送信すべきファイルに対する第一電子機器の署名情報を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第一電子機器に適用されるデジタル署名方法であって、
送信すべきファイルと、前記第一電子機器によるデジタル署名のための秘密鍵であって、第一可逆行列が含まれる秘密鍵とを取得することと、
前記第一可逆行列、及びランダムに生成された第一テンソルに基づいて、前記第一テンソルと、前記第一テンソルと同型のテンソルとが含まれるL個(Lは、1よりも大きい正整数)の第二テンソルを生成することと、
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得ることと、
前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築することと、
前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成することとを含む、デジタル署名方法。
【請求項2】
前記の前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成することは、
前記第一文字列を切り分けて、P個(Pは、1よりも大きい正整数)の文字列を得ることと、
前記P個の文字列、第一可逆行列及び第二可逆行列に基づいて、ターゲット行列を生成することと、
前記P個の文字列に基づいて、前記L個の第二テンソルからN個(Nは正整数)の第二テンソルを選出することと、
前記N個の第二テンソルの内の各々の第二テンソルについて、前記ハッシュツリーのルートノードのハッシュ値、及び前記第二テンソルに基づいて、前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスを確定することとを含み、
ここで、前記署名情報には、前記P個の文字列、前記ターゲット行列、前記N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスとが含まれる、請求項1に記載の方法。
【請求項3】
前記N個の第二テンソルには、前記N個の第二テンソルのうち、何れか1つの第二テンソルとなるターゲットテンソルが含まれ、前記の前記N個の第二テンソルの内の各々の第二テンソルについて、前記ハッシュツリーのルートノードのハッシュ値、及び前記第二テンソルに基づいて、前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスを確定することは、
前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードのハッシュ値、及び前記ハッシュツリーのルートノードのハッシュ値に基づいて、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードのターゲットハッシュ値を確定することを含み、
ここで、前記ハッシュツリーのルートノードに対する前記ターゲットテンソルの認証パスには、前記ターゲットハッシュ値、及び、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードの前記ハッシュツリー内での位置が含まれる、請求項2に記載の方法。
【請求項4】
前記のランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得ることは、
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記第一テンソルと同型の第三テンソルを生成することと、
前記第三テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得ることとを含み、
前記の前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築することは、
前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいて、ハッシュツリーのリーフノードのハッシュ値を構築することと、
前記ハッシュツリーのリーフノードのハッシュ値、及び前記第一ターゲット文字列に基づいて、ハッシュツリーのノードのうち、前記リーフノードを除いた他のノードであって、前記ハッシュツリーのルートノードが含まれる他のノードのハッシュ値を構築することとを含む、請求項1に記載の方法。
【請求項5】
第二電子機器に適用される署名情報の検証方法であって、
送信すべきファイルと、前記送信すべきファイルの署名情報と、前記第二電子機器による署名情報検証のための公開鍵であって、前記署名情報に関連付けられた秘密鍵に対応し、ハッシュツリーのルートノードのハッシュ値が含まれる公開鍵とを取得することと、
前記署名情報に基づいて、Q個(Qは正整数)の第二ターゲット文字列を生成することと、
前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、前記署名情報に基づいて、第四テンソルを生成することと、
前記第四テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得ることと、
前記第二文字列に基づいて、前記署名情報を検証することとを含む、署名情報の検証方法。
【請求項6】
前記署名情報には、P個(Pは、1よりも大きい正整数)の文字列が含まれ、前記の前記第二文字列に基づいて、前記署名情報を検証することは、
前記第二文字列を切り分けて、K個(Kは、Pに等しい)の文字列を得ることと、
前記P個の文字列と前記K個の文字列とが1対1で等しい場合、前記署名情報の検証が成功したと確定するか、或いは、前記P個の文字列のうち、何れか1つの文字列となる第三ターゲット文字列と、前記K個の文字列のうち、前記K個の文字列での位置が、前記第三ターゲット文字列の前記P個の文字列での位置に対応する第四ターゲット文字列とが等しくない場合、前記署名情報の検証に失敗したと確定することとを含む、請求項5に記載の方法。
【請求項7】
前記署名情報には、N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスが含まれ、前記の前記署名情報に基づいて、Q個の第二ターゲット文字列を生成することは、
前記N個(Nは、Qに等しい)の第二テンソルの内の各々の第二テンソルについて、前記第二テンソル、及び前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスに基づいて、前記第二テンソルに対応する第二ターゲット文字列を生成することを含む、請求項5に記載の方法。
【請求項8】
第一電子機器に適用されるデジタル署名装置であって、
送信すべきファイルと、前記第一電子機器によるデジタル署名のための秘密鍵であって、第一可逆行列が含まれる秘密鍵とを取得するための第一取得モジュールと、
前記第一可逆行列、及びランダムに生成された第一テンソルに基づいて、前記第一テンソルと、前記第一テンソルと同型のテンソルとが含まれるL個(Lは、1よりも大きい正整数)の第二テンソルを生成するための第一生成モジュールと、
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得るための第一デジタル署名モジュールと、
前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築するための構築モジュールと、
前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成するための第二生成モジュールとを含む、デジタル署名装置。
【請求項9】
前記第二生成モジュールは、
前記第一文字列を切り分けて、P個(Pは、1よりも大きい正整数)の文字列を得るための切分ユニットと、
前記P個の文字列、第一可逆行列及び第二可逆行列に基づいて、ターゲット行列を生成するための第一生成ユニットと、
前記P個の文字列に基づいて、前記L個の第二テンソルからN個(Nは正整数)の第二テンソルを選出するための選出しユニットと、
前記N個の第二テンソルの内の各々の第二テンソルについて、前記ハッシュツリーのルートノードのハッシュ値、及び前記第二テンソルに基づいて、前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスを確定するための確定ユニットとを含み、
ここで、前記署名情報には、前記P個の文字列、前記ターゲット行列、前記N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスとが含まれる、請求項8に記載の装置。
【請求項10】
前記N個の第二テンソルには、前記N個の第二テンソルのうち、何れか1つの第二テンソルとなるターゲットテンソルが含まれ、前記確定ユニットは、具体的に、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードのハッシュ値、及び前記ハッシュツリーのルートノードのハッシュ値に基づいて、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードのターゲットハッシュ値を確定するために用いられ、
ここで、前記ハッシュツリーのルートノードに対する前記ターゲットテンソルの認証パスには、前記ターゲットハッシュ値、及び、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードの前記ハッシュツリー内での位置が含まれる、請求項9に記載の装置。
【請求項11】
前記第一デジタル署名モジュールは、具体的に、ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記第一テンソルと同型の第三テンソルを生成し、前記第三テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得るために用いられ、
前記構築モジュールは、具体的に、前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいて、ハッシュツリーのリーフノードのハッシュ値を構築し、前記ハッシュツリーのリーフノードのハッシュ値、及び前記第一ターゲット文字列に基づいて、ハッシュツリーのノードのうち、前記リーフノードを除いた他のノードであって、前記ハッシュツリーのルートノードが含まれる他のノードのハッシュ値を構築するために用いられる、請求項8に記載の装置。
【請求項12】
第二電子機器に適用される署名情報の検証装置であって、
送信すべきファイルと、前記送信すべきファイルの署名情報と、前記第二電子機器による署名情報検証のための公開鍵であって、前記署名情報に関連付けられた秘密鍵に対応し、ハッシュツリーのルートノードのハッシュ値が含まれる公開鍵とを取得するための第二取得モジュールと、
前記署名情報に基づいて、Q個(Qは正整数)の第二ターゲット文字列を生成するための第四生成モジュールと、
前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、前記署名情報に基づいて、第四テンソルを生成するための第五生成モジュールと、
前記第四テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得るための第二デジタル署名モジュールと、
前記第二文字列に基づいて、前記署名情報を検証するための検証モジュールとを含む、署名情報の検証装置。
【請求項13】
前記署名情報には、P個(Pは、1よりも大きい正整数)の文字列が含まれ、前記検証モジュールは、具体的に、前記第二文字列を切り分けて、K個(Kは、Pに等しい)の文字列を得て、前記P個の文字列と前記K個の文字列とが1対1で等しい場合、前記署名情報の検証が成功したと確定するか、或いは、前記P個の文字列のうち、何れか1つの文字列となる第三ターゲット文字列と、前記K個の文字列のうち、前記K個の文字列での位置が、前記第三ターゲット文字列の前記P個の文字列での位置に対応する第四ターゲット文字列とが等しくない場合、前記署名情報の検証に失敗したと確定するために用いられる、請求項12に記載の装置。
【請求項14】
前記署名情報には、N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスが含まれ、前記第四生成モジュールは、具体的に、前記N個(Nは、Qに等しい)の第二テンソルの内の各々の第二テンソルについて、前記第二テンソル、及び前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスに基づいて、前記第二テンソルに対応する第二ターゲット文字列を生成するために用いられる、請求項12に記載の装置。
【請求項15】
コンピュータ命令を記憶した非一時的なコンピュータ読取可能な記憶媒体であって、前記コンピュータ命令は、請求項1~4の何れか一項に記載の方法、又は請求項5~7の何れか一項に記載の方法を前記コンピュータに実行させるためのものである、非一時的なコンピュータ読取可能な記憶媒体。
【請求項16】
コンピュータプログラム製品であって、前記コンピュータプログラム製品が電子機器上で動作すると、前記電子機器によって請求項1~4の何れか一項に記載の方法、又は請求項5~7の何れか一項に記載の方法が実行される、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、量子コンピューティングの技術分野、特に量子コンピューティングにおける情報セキュリティ分野に関し、具体的には、デジタル署名方法、署名情報の検証方法、関連装置及び電子機器に関する。
【背景技術】
【0002】
デジタル署名は、基本的な公開鍵暗号方式のタスクであり、公開鍵暗号方式とは、公開鍵及び秘密鍵を含む暗号スキームを指し、公開鍵が公開可能であるため、2人のユーザは、通信を確立することなく、暗号化、復号化及び身分検証を行うことができる。デジタル署名の目標は、ファイルの送信者の身分検証を行うことで、ファイルの送信者が本物であるのを確保することであり、これは、電子商取引及びインターネットプロトコルにおいて、基礎的な重要性を持っている。
【0003】
現在、インターネット通信において、一般的に使用されるデジタル署名スキームは、大きな数の因数分解及び離散対数の困難性に基づくものであり、例えばディフィー・ヘルマン(Deffie-Hellman)鍵交換に基づく非対称暗号化アルゴリズムである。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、デジタル署名方法、署名情報の検証方法、関連装置及び電子機器を提供する。
【課題を解決するための手段】
【0005】
本開示の第一局面によれば、第一電子機器に適用されるデジタル署名方法であって、
送信すべきファイルと、前記第一電子機器によるデジタル署名のための秘密鍵であって、第一可逆行列が含まれる秘密鍵とを取得することと、
前記第一可逆行列、及びランダムに生成された第一テンソルに基づいて、前記第一テンソルと、前記第一テンソルと同型のテンソルとが含まれるL個(Lは、1よりも大きい正整数)の第二テンソルを生成することと、
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得ることと、
前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築することと、
前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成することとを含む、デジタル署名方法を提供している。
【0006】
本開示の第二局面によれば、第二電子機器に適用される署名情報の検証方法であって、
送信すべきファイルと、前記送信すべきファイルの署名情報と、前記第二電子機器による署名情報検証のための公開鍵であって、前記署名情報に関連付けられた秘密鍵に対応し、ハッシュツリーのルートノードのハッシュ値が含まれる公開鍵とを取得することと、
前記署名情報に基づいて、Q個(Qは正整数)の第二ターゲット文字列を生成することと、
前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、前記署名情報に基づいて、第四テンソルを生成することと、
前記第四テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得ることと、
前記第二文字列に基づいて、前記署名情報を検証することとを含む、署名情報の検証方法を提供している。
【0007】
本開示の第三局面によれば、第一電子機器に適用されるデジタル署名装置であって、
送信すべきファイルと、前記第一電子機器によるデジタル署名のための秘密鍵であって、第一可逆行列が含まれる秘密鍵とを取得するための第一取得モジュールと、
前記第一可逆行列、及びランダムに生成された第一テンソルに基づいて、前記第一テンソルと、前記第一テンソルと同型のテンソルとが含まれるL個(Lは、1よりも大きい正整数)の第二テンソルを生成するための第一生成モジュールと、
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得るための第一デジタル署名モジュールと、
前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築するための構築モジュールと、
前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成するための第二生成モジュールとを含む、デジタル署名装置を提供している。
【0008】
本開示の第四局面によれば、第二電子機器に適用される署名情報の検証装置であって、
送信すべきファイルと、前記送信すべきファイルの署名情報と、前記第二電子機器による署名情報検証のための公開鍵であって、前記署名情報に関連付けられた秘密鍵に対応し、ハッシュツリーのルートノードのハッシュ値が含まれる公開鍵とを取得するための第二取得モジュールと、
前記署名情報に基づいて、Q個(Qは正整数)の第二ターゲット文字列を生成するための第四生成モジュールと、
前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、前記署名情報に基づいて、第四テンソルを生成するための第五生成モジュールと、
前記第四テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得るための第二デジタル署名モジュールと、
前記第二文字列に基づいて、前記署名情報を検証するための検証モジュールとを含む、署名情報の検証装置を提供している。
【0009】
本開示の第五局面によれば、少なくとも1つのプロセッサと、
少なくとも1つのプロセッサと通信接続されたメモリとを含む電子機器であって、
メモリには、少なくとも1つのプロセッサによって実行され得る命令が記憶されており、当該命令が少なくとも1つのプロセッサによって実行されることで、少なくとも1つのプロセッサが第一局面における何れか1つの方法、又は第二局面における何れか1つの方法を実行可能となる、電子機器を提供している。
【0010】
本開示の第六局面によれば、コンピュータ命令を記憶した非一時的なコンピュータ読取可能な記憶媒体であって、当該コンピュータ命令は、第一局面における何れか1つの方法、又は第二局面における何れか1つの方法をコンピュータに実行させるためのものである、非一時的なコンピュータ読取可能な記憶媒体を提供している。
【0011】
本開示の第七局面によれば、コンピュータプログラム製品であって、当前記コンピュータプログラム製品が電子機器上で動作すると、前記電子機器が第一局面における何れか1つの方法、又は第二局面における何れか1つの方法を実行可能となる、コンピュータプログラム製品を提供している。
【発明の効果】
【0012】
本願の技術によれば、デジタル署名の安全性が比較的低いという問題が解決され、デジタル署名の安全性が向上される。
【0013】
理解されないのは、この部分で説明された内容は、本開示の実施例における肝心又は重要な特徴を特定することを意図せず、本開示の範囲を制限するためのものでもない。本開示の他の特徴は、以下の説明により、理解され易くなるであろう。
【0014】
図面は、本技術案をより好く理解するためのものであり、本願に対する制限を構成するものではない。
【図面の簡単な説明】
【0015】
【
図1】本願の第一実施例によるデジタル署名方法のフロー模式図である。
【
図2】ハッシュツリーのルートノードに対するターゲットテンソルの認証パスの計算実現の模式図である。
【
図3】本願の第二実施例による署名情報の検証方法のフロー模式図である。
【
図4】本願の第三実施例によるデジタル署名装置の構造模式図である。
【
図5】本願の第四実施例による署名情報の検証装置の構造模式図である。
【
図6】本開示の実施例を実施するために使用できる例示的な電子機器600の概略ブロック図である。
【発明を実施するための形態】
【0016】
以下、図面を参照して本開示の例示的な実施例を説明する。理解を助けるために、その中には、本開示の実施例の様々な詳細を含むが、これらの詳細は、単に例示的なものであると理解されたい。したがって、当業者であれば、本開示の範囲及び精神から逸脱することなく、本明細書に記載の実施例に対して様々な変更及び修正を加えることができると認識すべきである。同様に、説明の明確化及び簡素化のために、以下の説明では、周知の機能及び構造についての記載が省略される。
【0017】
第一実施例
図1に示すように、本願は、第一電子機器に適用されるデジタル署名方法を提供しており、前記方法は、以下のステップ101~105を含む。
【0018】
ステップS101:送信すべきファイルと、前記第一電子機器によるデジタル署名のための秘密鍵であって、第一可逆行列が含まれる秘密鍵とを取得することである。
【0019】
本実施例において、デジタル署名方法は、量子コンピューティング技術分野に関し、特に、量子コンピューティングに関連する情報セキュリティ分野に関し、電子商取引、身分検証及びソフトウェア配布等の多くのシーンで広く応用可能である。
【0020】
例えば、身分検証の応用シーンでは、甲は、1通のファイルを乙に送信する必要があり、乙は、このファイルが確かに甲によって送信され、他の誰かによって送信されたものではないことを検証する必要があるとする。この際、甲は、このファイルに対してデジタル署名を行うことが可能であり、乙は、ファイル及び対応する署名情報を受け取り、甲によって公にブロードキャストされた公開鍵を獲得した後、このファイルの送信者が確かに甲であることを検証可能である。
【0021】
更に例えば、ソフトウェア配布の応用シーンでは、獲得されたソフトウェアに対して配布者の身分検証を行うことで、当該ソフトウェアのソースを確定することが可能である。
【0022】
実際の使用の際、本願の実施例に係るデジタル署名方法は、本願の実施例に係るデジタル署名装置によって実行されることが可能である。本願の実施例に係るデジタル署名装置は、本願の実施例に係るデジタル署名方法を実行するために、任意の第一電子機器内に配置されることが可能である。第一電子機器は、サーバであってもよいし、端末であってもよいが、ここで特に限定しない。
【0023】
前記第一電子機器は、通信の送信者として、他の電子機器と通信してファイルを送信することが可能である。ファイルを送信する前に、他の電子機器が、受信したファイルが確かに第一電子機器によって送信されたものであることを検証し、送信者の信憑性を検証できるようにするために、第一電子機器は、デジタル署名技術を使用して送信すべきファイルに対してデジタル署名を行うことが可能である。
【0024】
前記送信すべきファイルとは、前記第一電子機器が他の電子機器に送信する必要のあるファイルを指し、そのタイプは、テキスト、圧縮パッケージやオーディオ・ビデオ等であり得る。
【0025】
前記秘密鍵は、前記第一電子機器によって事前に保存され、第一電子機器の送信すべきファイルを暗号化及びデジタル署名するためのパラメータであり得る。前記秘密鍵は、公開鍵に対応するものとされてもよく、秘密鍵と公開鍵との組み合わせが鍵ペアと呼ばれることが可能で、且つ前記公開鍵は、他の電子機器が当該公開鍵を使用して前記第一電子機器の署名情報を検証できるようにするために、通常、第一電子機器によって他の電子機器に公開される。
【0026】
公開鍵暗号方式におけるタスクとして、デジタル署名スキームは、或るアルゴリズム問題の困難性に基づいて、デジタル署名の安全性を保証する必要がある。一方、量子コンピュータの発展に伴い、既存のデジタル署名スキームが基づいていたアルゴリズム問題は、通常、量子コンピュータにとって、難しくないかもしれない。即ち、基づいていたアルゴリズム問題は、量子攻撃に対抗できない恐れがある。そのため、デジタル署名の安全性が脅かされてしまう。
【0027】
上記で言及した困難性は、微妙な概念である。まず、一般的に考えられている最悪の意味での困難とは異なり、ここでは、平均的な意味での困難が必要となり、即ち、殆どの入力に対して、有効なアルゴリズムが存在しないことが必要とされる。次に、全ての困難な問題が適切なデジタル署名プロトコルに対応しているわけではないため、当該問題に基づいて、該当するプロトコルを設計する必要もある。最後に、量子アルゴリズム設計の観点から、ポスト量子暗号方式の範疇内での当該問題の可用性を検討する必要もあり、例えば、大きな数の因数分解問題について、古典的なコンピュータの観点からすれば、困難なものであるが、量子コンピューティングの観点からすれば、簡単なものとなる。
【0028】
計算の複雑性の観点からは、テンソル同型問題が同型タイプの問題の中で比較的困難な問題であるとされている。一方、量子コンピューティングの観点からは、テンソル同型問題の求解困難性により、テンソル同型問題を使用して設計されたデジタル署名は、量子アルゴリズムの観点で、その安全性が保障されている。したがって、本願の実施例において、基づくアルゴリズム問題としてテンソル同型問題を使用し、殆どのコンピュータ(量子コンピュータを含む)の観点からのテンソル同型問題の求解困難性を利用して、デジタル署名の設計を行うことが可能である。
【0029】
テンソル同型問題について、以下のように述べることができる。
【0030】
pは、素数であり、GF(p)は、モジュロpのフィールドを表し、GL(n,p)は、GF(p)上のn×nサイズの可逆行列の集合を表すとする。GF(p)上の多次行列は、テンソルと呼ばれてもよく、ここで、テンソルの次数は、通常、2よりも大きくなる。
【0031】
テンソルが3次行列である場合を例にして、テンソルは、n×n×n個の成分を持つn×n×nの行列と呼ばれてもよく、n、テンソルの次元と呼ばれてもよい。或るテンソルはAとされ、A=(a
ijk)で表され、もう1つのテンソルはBとされ、B=(b
ijk)で表され、各次ごとのデータの長さはnであり、即ちテンソルの下付き文字i、j及びkは、それぞれ1~nを取ることが可能で、
【数1】
で表され、
【数2】
は、それぞれ、2つのテンソルにおける第iスライス、第j行及び第k列の元素であるとすると、これらの元素が羅列されると、テンソル即ち(a
ijk)及び(b
ijk)を構成できる。テンソル同型問題としては、
【数3】
で表される可逆行列であって、
【数4】
となるようにする可逆行列が存在するかどうかについての求解となる。つまり、テンソル同型問題としては、2つのテンソルが同型テンソルであるかどうかを確定し、2つのテンソルが同型テンソルの場合、これら2つのテンソルの相互変換用の可逆行列を解くこととなる。
【0032】
ここで、式
【数5】
における「
【数6】
」は、3つの行列がそれぞれテンソルの3つの方向から乗算されることを表し、つまり、同時に3つの行列をテンソルの3つの方向に乗算可能で、3つの行列は、同一の可逆行列Cとされてもよい。乗算した結果もテンソルとなり、B’で表されてもよく、
【数7】
であり、
【数8】
は、テンソルB’における下付き文字に対応する位置での数値となり、
【数9】
である。
【0033】
説明すべきなのは、テンソルがさらなる高次行列の場合、テンソル同型問題は、さらなる高次行列となるテンソルに拡張されることも可能である。つまり、さらなる高次行列のテンソル同型問題については、3次行列のテンソルの同型問題に基づいて、類推され得る。例えば、4次行列となる2つのテンソルの場合、それぞれ、A=(a
ijkl)及びB=(b
ijkl)で表されてもよく、テンソル同型問題としては、
【数10】
となるようにする可逆行列Cが存在するかどうかの問題となる。
【0034】
テンソル同型問題という前提の下では、2つのテンソルが同型テンソルであることが分っていても、これら2つのテンソル間の変換用の可逆行列を解くことは困難である。したがって、デジタル署名の安全性を保証するために、前記第一電子機器によるデジタル署名のための秘密鍵は、行列形式として設定することが可能である。こうして、秘密鍵の解読の困難性が保証される。
【0035】
具体的に、前記秘密鍵には、第一可逆行列が含まれ、公開鍵は、テンソル形式、又はテンソルから変換された文字列(当該文字列は、テンソルに基づいて設定されたハッシュ値であり得る)として設定され、且つ公開鍵が公表されるようにしてもよい。こうして、他の電子機器は、送信すべきファイルに対する第一電子機器の署名情報を偽造しようとする場合、公開鍵に従う解読で、秘密鍵を得る必要があり、これは、他の電子機器がテンソル同型問題を解かなければならないことと同等である。テンソル同型問題の求解困難性により、他の電子機器が、公開鍵に従う解読で、第一電子機器の秘密鍵を得ることは困難であるため、第一電子機器の署名が他の電子機器によって偽造され難く、その結果、デジタル署名の安全性が保証できる。
【0036】
実際の応用では、テンソル同型問題に基づいて、古典的なグラフ同型問題のゼロ知識対話プロトコルを使用して身分認証プロトコルを構成することが可能である。必要な安全性に応じて、当該プロトコルを若干のラウンドで実行し、各ラウンド毎に複数のテンソルを生成してもよい。当該身分認証プロトコルに基づいて、古典的な身分認識プロトコルであるFiat-Shamir変換プロセスを使用してデジタル署名スキームを構成してもよい。
【0037】
デジタル署名スキームでは、重要なパラメータとして、署名の長さ、公開鍵の長さ、並びに、鍵生成、署名生成及び署名検証の実行時間が含まれてもよい。プロトコルにおける主なパラメータ(例えば、nはテンソルの次元、即ちテンソルのスケールであり、pはフィールドのサイズ、即ち数値フィールドのスケールであり、rはラウンド数、即ち署名の長さパラメータであり、λは安全性パラメータであり、sはハッシュツリーの深さであり、t=2sとし、それは、ハッシュツリーのリーフノードの個数であり、公開鍵生成に係るテンソル数でもある)、及び、テンソル同型問題の最適なアルゴリズム実行時間に対する理解に従って、適切なパラメータを選択して、必要なデジタル署名の安全性、例えば128bit又は256bitの安全性が達されるようにしてもよい。しかも、プロトコルのプロトタイプ実現をして、鍵生成、署名生成及び署名検証の実際の実行時間をテストしてもよい。
【0038】
様々な方式で前記送信すべきファイルを取得することが可能であり、例えば、事前に保存されたファイルから送信すべきファイルを取得してもよいし、また、自発的に送信すべきファイルを生成してもよい。
【0039】
前記秘密鍵は、第一電子機器によって事前に生成されてデータベースに保存されたものであってもよいし、プロバイダによって事前に設定されてデータベースに保存されたものであってもよいが、ここで特に限定しない。
【0040】
前記秘密鍵が第一電子機器によって事前に生成されてデータベースに保存されたものである場合を例にして、前記第一電子機器は、少なくとも1つの第一可逆行列をランダムに生成してもよく、例えば、
【数11】
で表されるt-1個の第一可逆行列をランダムに生成し、ここで、tは実際の状況に応じて設定可能で、且つtは2以上とされる。前記第一電子機器の秘密鍵には、それぞれC
0,C
1,…,C
t-1とされる複数の可逆行列が含まれてもよく、ここで、C
0は、サイズnの単位行列である。
【0041】
ステップS102:前記第一可逆行列、及びランダムに生成された第一テンソルに基づいて、前記第一テンソルと、前記第一テンソルと同型のテンソルとが含まれるL個(Lは、1よりも大きい正整数)の第二テンソルを生成することである。
【0042】
3次行列のテンソル同型問題を使用してデジタル署名スキームを設計する場合を例にして、第一電子機器の秘密鍵及び公開鍵を構成する際、A
0で表され得る第一テンソルを1つランダムに生成してもく、第一テンソルA
0は、
【数12】
となり、当該第一テンソルは、同型テンソルを生成するための初期テンソルとして使用可能である。
【0043】
【数13】
について、第一電子機器は、秘密鍵における前記第一可逆行列及び第一テンソルに基づいて、前記第一テンソルと同型のテンソルを構成してもよく、その構成の式が
【数14】
とされてもよく、最終的にL個の第二テンソルが得られ、前記L個の第二テンソルには、第一テンソル及び、前記第一テンソルと同型のテンソルとが含まれてもよい。
【0044】
実際の応用では、Lの値は、tとされてもよい。前記L個の第二テンソルを公開鍵として他の電子機器に送信してもよいが、前記L個の第二テンソルを公開鍵として他の電子機器に送信する場合の最大の問題としては、公開鍵の長さが比較的に長いため、公開鍵の対話が必要とされるシーンに応用した際にその効率が大きく影響されてしまう。したがって、前記L個の第二テンソルに基づいて変換された文字列を公開鍵として他の機器に送信してもよく、そして、当該文字列は、テンソルに基づいて設定されたハッシュ値とされてもよい。以下、これについて詳しく説明するが、ここで特に限定しない。
【0045】
ステップS103:ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得ることである。
【0046】
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、ハッシュ関数を使用して前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得るようにしてもよい。
【0047】
具体的に、ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記第一テンソルと同型の第三テンソルを生成し、前記第三テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得るようにしてもよい。
【0048】
実際の応用では、
【数15】
について、rは正整数とされてもよく、第一電子機器は、
【数16】
で表され得る少なくとも1つの第二可逆行列をランダムに生成してもよい。つまり、ランダムに生成された第二可逆行列、及び第一テンソルに基づいて、前記第一テンソルと同型の少なくとも1つの第三テンソルを構成してもよく、その構成の式は、
【数17】
とされてもよい。
【0049】
その後、ハッシュ関数(Hで表す)を使用して、前記送信すべきファイル(Mで表す)に対してデジタル署名を行ってもよく、具体的に、送信すべきファイルMと第三テンソルB1、…、Brとを文字列として連結し、連結された文字列に対しハッシュ演算を行って、H(M|B1|…|Br)で表される第一文字列を得るようにしてもよい。
ここで、M|B1|…|Brは、送信すべきファイルMと第三テンソルB1、…、Brとが文字列として連結されたものを表し、前記第一文字列は、2進法文字列、即ち「0」と「1」の文字列とされてもよく、その長さがr×sとされてもよく、パラメータsも、身分認証プロトコルのパラメータであり、パラメータtとは、t=2sを満たす。一方で、Hはハッシュ関数であり、その入力が任意の長さの文字列とされてもよく、出力文字列の長さがr×sとされ、且つ「0」と「1」の文字列が出力される。
【0050】
ステップS104:前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築することである。
【0051】
このステップでは、暗号方式及びコンピュータ科学において、ハッシュツリーは、ツリー型のデータ構造になっており、少なくとも1つのノードからなる層を複数含んでもよく、各ノードは、何れもデータブロックのハッシュをラベルとして使用するが、リーフノード以外のノードは、その子ノードのラベルの暗号化されたハッシュをラベルとして使用する。
【0052】
前記L個の第二テンソルに基づいて、ハッシュ関数を使用してハッシュツリーのルートノードのハッシュ値を構築してもよい。そして、直接に前記L個の第二テンソルに基づいてハッシュツリーを構築してもよいし、前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいてハッシュツリーを構築してもよい。
【0053】
前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいて、ハッシュツリーを構築する場合を例にして、具体的には、MerkleKeyで表され得る第一ターゲット文字列をランダムに生成してもよく、MerkleKeyは、具体的に、uniformやrandom等のランダム関数に基づいて生成されてもよい。
ここで、MerkleKeyは、長さλの「0」と「1」の文字列であってもよく、λは、安全性パラメータとされてもよく、即ち、デジタル署名が達成する必要のある安全性に応じて、λを設定可能であり、例えば、デジタル署名が128bitの安全性を達成する必要がある場合、λを128に設定可能である。
【0054】
前記L個の第二テンソルに基づいて、前記ハッシュツリーのリーフノードを構成してもよく、具体的には、ハッシュ関数Hを使用して、ハッシュツリーの第s層、即ちリーフノードに対応する層を、式
【数18】
で表すように構築してもよく、ここで、0≦i≦t―1であり、h
s,iは、リーフノードに対応する層、即ち第s層の第i個のリーフノードのハッシュ値であり、記号|は、文字列の結びつきを表す。
【0055】
引き続きハッシュ関数Hを使用して、ハッシュツリーの他の内部ノードを式
【数19】
で構築し、ここで、0≦k≦sであり、0≦i≦2
kであり、h
s,iは、第k層の第i個のノードのハッシュ値であり、h
k+1,2i及びh
k+1,2i+1は、それぞれ、当該ノードの2つの子ノードのハッシュ値であり、当該ノードは、これら2つの子ノードの親ノードと呼ばれてもよい。これにより、ハッシュツリーの全元素(前記ハッシュツリーのルートノードを含む)を構成することができ、当該ルートノードは、h
0,0で表され、h
0,0のハッシュ値が公開鍵の一部として使用可能である。
【0056】
ステップS105:前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成することである。
【0057】
前記署名情報には、第一文字列と、第一文字列、第一可逆行列及び第二可逆行列によって生成されたターゲット行列と、前記第一文字列に基づいて前記L個の第二テンソルから選出されたN個の第二テンソルと、前記N個の第二テンソルの内の各々の第二テンソルについて、前記第二テンソル及びハッシュツリーのルートノードのハッシュ値に基づいて確定された、前記ハッシュツリーのルートノードに対する第二テンソルの認証パスとが含まれてもよい。ここで、前記ハッシュツリーのルートノードに対する第二テンソルの認証パスには、一連のハッシュ値、即ち第二テンソルから、ハッシュツリーのルートノードのハッシュ値を計算するために必要な全ての情報が含まれる。
【0058】
一つの選択的な実施形態において、前記署名情報には、第一文字列から切り分けられた複数の文字列と、これら複数の文字列、第一可逆行列及び第二可逆行列によって生成されたターゲット行列と、N個の第二テンソルと、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスとが含まれてもよい。
【0059】
本実施例において、送信すべきファイルと、前記第一電子機器によるデジタル署名のための秘密鍵であって、第一可逆行列が含まれる秘密鍵とを取得し、前記第一可逆行列、及びランダムに生成された第一テンソルに基づいて、前記第一テンソルと、前記第一テンソルと同型のテンソルとが含まれるL個の第二テンソルを生成し、ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得て、前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築し、前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成することで、テンソル同型問題とハッシュツリーとを併用してデジタル署名を行うようにしており、他の電子機器は、送信すべきファイルに対する第一電子機器の署名情報を偽造しようとする場合、公開鍵(同型のテンソル、又は、同型のテンソルに基づいて生成されたハッシュ値を含み得る)に従って、秘密鍵を解読して取得する必要があり、これは、他の電子機器がハッシュツリーの復号化問題及びテンソル同型問題を解かなければならないことと同等である。そのため、他の機器は、秘密鍵を知らない場合、公開鍵を介して秘密鍵を偽造することが非常に困難であり、その結果、デジタル署名の偽造が非常に困難となり、ひいては、デジタル署名の安全性を向上させることができる。
【0060】
選択的に、前記ステップS105は、具体的に、
前記第一文字列を切り分けて、P個(Pは、1よりも大きい正整数)の文字列を得ることと、
前記P個の文字列、第一可逆行列及び第二可逆行列に基づいて、ターゲット行列を生成することと、
前記P個の文字列に基づいて、前記L個の第二テンソルからN個(Nは正整数)の第二テンソルを選出することと、
前記N個の第二テンソルの内の各々の第二テンソルについて、前記ハッシュツリーのルートノードのハッシュ値、及び前記第二テンソルに基づいて、前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスを確定することとを含み、
ここで、前記署名情報には、前記P個の文字列、前記ターゲット行列、前記N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスとが含まれる。
【0061】
本実施形態において、前記第一文字列を切り分けて、複数の文字列を得ることが可能である。例えば、長さsの「0」と「1」の文字列がr個得られ、これらr個の文字列は、それぞれ、f1,…,frで表されてもよく、この際、rは1よりも大きく、且つこれらr個の文字列の十進法値は、何れも0~t-1であり、Pの値はrに等しい。
【0062】
前記P個の文字列、第一可逆行列及び第二可逆行列に基づいて、ターゲット行列を生成することが可能であり、具体的に、
【数20】
について、前記第一電子機器は、式
【数21】
を使用して前記ターゲット行列を計算してもよい。ここで、E
iは、ターゲット行列であり、その数が複数とされてもよく、
【数22】
は、秘密鍵における第f
i個の可逆行列の逆行列を表し、例えば、「0」と「1」の文字列f
iが1であれば、
【数23】
は、秘密鍵における可逆行列C
1の逆行列となり、つまり、ターゲット行列は、第二可逆行列D
iと、秘密鍵における可逆行列C
fiの逆行列との行列乗算に基づいて得られる。
【0063】
その後、前記P個の文字列に基づいて、前記L個の第二テンソルからN個の第二テンソルを選出することが可能であり、具体的には、A0,A1,…,At-1から、それぞれがAf1,…,AfrとされるN個の第二テンソルを選出してもよく、Nはrに等しい。
【0064】
【数24】
について、それぞれ、第二テンソルA
fi及び前記ハッシュツリーのルートノードのハッシュ値に基づいて、第二テンソルA
fiの認証パスが計算され、当該認証パスは、path
iで表され、一連のハッシュ値、即ち第二テンソルA
fiから、前記ハッシュ値のルートノードのハッシュ値を計算するために必要な全ての情報を含む。
【0065】
つまり、第二テンソルAfiに基づいて計算されたpathiは、pathi(Afi)=h0,0になるようにすることができ、ここで、上記式は、Afiから、h0,0を計算する過程の省略形であり、Afi及び認証パスにおけるハッシュ値に基づいて、前記ハッシュツリーのルートノードのハッシュ値が得られるまでハッシュ関数を繰り返して呼び出すことを表す。言い換えれば、その本質としては、認証パスpathiに基づいてハッシュツリーを走査することで、第二テンソルAfiに基づいてハッシュツリーにおける対応するリーフノードhs,fiを得ることができるようにし、リーフノードhs,fiから、ハッシュツリーのルートノードh0,0まで走査して、ハッシュツリーのルートノードのハッシュ値を得ることができるようにする。
【0066】
最終的に、これらr個の文字列、複数のターゲット行列、N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスに基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を確定することが可能であり、前記署名情報は、
(f1,…,fr,E1,…,Er,Af1,…Afr,path1,…,pathr)となる。
【0067】
仮に別の電子機器、例えば第三電子機器が、第一電子機器のふりをして、送信すべきファイルMの署名を生成したがるとしても、第三電子機器は、秘密鍵をもっていないため、秘密鍵に基づいてターゲット行列を生成できず、即ち、式
【数25】
を使用してターゲット行列E
1,…,E
rを生成できず、そして、秘密鍵の解読には、テンソル同型問題を解く必要があり、その結果、第三電子機器が、第一電子機器の秘密鍵を入手することは非常に困難である。しかも、前記第三電子機器によって入手された公開鍵は、同型のテンソルとハッシュツリーとを併用することで生成されたものであり、ハッシュツリーのルートノードのハッシュ値を含んでいるため、第三電子機器は、署名を偽造したがる場合、ハッシュツリーを解読する必要があり、ハッシュ関数の原像の設計困難性により、第三電子機器が署名情報を偽造することは非常に困難となる。
【0068】
また、プロトコルに対する第三電子機器からの直接攻撃方法は、何れも次のような問題に帰着され、即ち、「0」と「1」の文字列を
【数26】
として複数生成する方法を見つけることにより、
【数27】
が計算されると、H(M|B
1|…|B
r)の計算から得られたf
1,…,f
rが、全ての
【数28】
について、f
i=giになることを満たすようにする必要がある。一方、ハッシュ関数の性質によれば、このような攻撃の成功確率は、1/2
rsを大幅に超えることがない。
【0069】
したがって、上記の2つの点によれば、第三電子機器が第一電子機器の署名情報を偽造することは非常に困難である。
【0070】
さらに、プロトコルにおけるパラメータの組み合わせは、128bitの安全性を達成するために、次の表1に示すように設定されてもよい。
表1 128bitの安全性を達成するためのパラメータの組み合わせの一部
【表1】
【0071】
本実施形態において、前記第一文字列を切り分けて、P個の文字列を得て、前記P個の文字列、第一可逆行列及び第二可逆行列に基づいて、ターゲット行列を生成し、前記P個の文字列に基づいて、前記L個の第二テンソルからN個の第二テンソルを選出し、前記N個の第二テンソルの内の各々の第二テンソルについて、前記ハッシュツリーのルートノードのハッシュ値、及び前記第二テンソルに基づいて、前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスを確定するようにしており、ここで、前記署名情報には、前記P個の文字列、前記ターゲット行列、前記N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスとが含まれる。こうして、他の電子機器は、秘密鍵を知らない場合、テンソル同型問題とハッシュツリーとを併用して生成された公開鍵を介して、その間の可逆行列、即ち秘密鍵を偽造することが非常に困難となり、しかも、ハッシュツリーのルートノードに基づいてハッシュツリーを解読することも非常に困難であり、その結果、デジタル署名の偽造が非常に困難となり、ひいては、デジタル署名の安全性を向上させることができる。
【0072】
選択的に、前記N個の第二テンソルには、前記N個の第二テンソルのうち、何れか1つの第二テンソルとなるターゲットテンソルが含まれ、前記の前記N個の第二テンソルの内の各々の第二テンソルについて、前記ハッシュツリーのルートノードのハッシュ値、及び前記第二テンソルに基づいて、前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスを確定することは、
前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードのハッシュ値、及び前記ハッシュツリーのルートノードのハッシュ値に基づいて、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードのターゲットハッシュ値を確定することを含み、
ここで、前記ハッシュツリーのルートノードに対する前記ターゲットテンソルの認証パスには、前記ターゲットハッシュ値、及び、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードの前記ハッシュツリー内での位置が含まれる。
【0073】
本実施形態は、前記ハッシュツリーのルートノードに対するターゲットテンソルの認証パスを詳しく述べており、ハッシュツリーを構築する際、ハッシュツリーにおける何れのノードにも、ハッシュ関数の値、即ちハッシュ値が保存され、ノードAに保存されるハッシュ値は、その下にある2つの子ノードのハッシュ値、その位置及び第一ターゲット文字列MerkleKeyの関数のみとなる。したがって、2つの子ノードのハッシュ値、ノードAの位置及びMerkleKeyが分かれば、ハッシュ関数Hを使用してノードAに保存されたハッシュ値を算出可能となる。そして、認証パスは、経由するノードを計算するために必要な全ての情報になっており、その結果、ルートノードのハッシュ値も算出できるようになる。説明すべきなのは、第一電子機器の署名手順と、第二電子機器の署名検証手順とで使用されるハッシュ関数は、統一したものとされるべきである。
【0074】
図2を参照して、
図2は、ハッシュツリーのルートノードに対するターゲットテンソルの認証パスの計算実現の模式図である。
図2に示すように、まず、ターゲットテンソルに基づいて、ハッシュ関数を呼び出してハッシュツリーにおける、ターゲットテンソルに対応するリーフノード201のハッシュ値を確定し、リーフノード201から、ルートノード202まで走査するには、リーフノード203、ノード204及びノード205を経由する必要がある。
【0075】
リーフノード201からルートノード202までの走査中に経由するノードと、ハッシュツリーにおける他のノード、例えばノード206との相違点としては、ノード206は、リーフノード201及びリーフノード203のハッシュ値に基づく計算で得られる一方で、経由するノードは、その位置に従って、ハッシュツリーにおけるノードのハッシュ値を取得する必要がある。これらの経由するノードのハッシュ値は、ターゲットテンソルと併用されてハッシュツリーのルートノードのハッシュ値を計算するために使用可能である。
【0076】
リーフノード201のハッシュ値を取得した場合、リーフノード203の位置及びハッシュ値を取得することが可能となり、例えば、リーフノード203がリーフノード201の左側にあれば、リーフノード201の左側に隣接するリーフノード203のハッシュ値が取得され、ハッシュツリーのルートノードに対する前記ターゲットテンソルの認証パスには、リーフノード203の位置及びハッシュ値が含まれるようになる。
【0077】
その後、リーフノード201のハッシュ値及びリーフノード203のハッシュ値に基づいて、ハッシュ関数を呼び出せば、その親ノードのハッシュ値を取得でき、すると、その親ノードの右側に位置するノード204を含めた経由ノードを取得でき、更に、ハッシュツリーにおける当該位置でのノード204のハッシュ値も取得でき、ハッシュツリーのルートノードに対する前記ターゲットテンソルの認証パスには、ノード204の位置及びハッシュ値が含まれるようになる。
【0078】
ノード205のハッシュ値の取得方式は、ノード204のハッシュ値の取得方式と似ており、ここで繰り返して述べない。最終的には、ノード204の親ノードのハッシュ値及びノード205のハッシュ値に基づく計算でハッシュ値を1つ得て、当該ハッシュ値をハッシュツリーのルートノードのハッシュ値と等しくすることが可能となり、ハッシュツリーのルートノードに対するターゲットテンソルの認証パスには、ノード203の位置及びハッシュ値、ノード204の位置及びハッシュ値、及びノード205の位置及びハッシュ値が含まれるようになる。
【0079】
本実施形態において、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードのハッシュ値、及び前記ハッシュツリーのルートノードのハッシュ値に基づいて、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードのターゲットハッシュ値を確定することで、ハッシュツリーのルートノードに対するターゲットテンソルの認証パスを得ることができ、ひいては、当該認証パスに基づいて第一電子機器のデジタル署名を実現することができる。
【0080】
選択的に、前記ステップ103は、具体的に、
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記第一テンソルと同型の第三テンソルを生成することと、
前記第三テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得ることとを含む。
【0081】
本実施形態において、
【数29】
について、rは、正整数とされてもよく、第一電子機器は、
【数30】
で表され得る少なくとも1つの第二可逆行列をランダムに生成してもよい。つまり、ランダムに生成された第二可逆行列、及び第一テンソルに基づいて、前記第一テンソルと同型の少なくとも1つの第三テンソルを構成してもよく、その構成の式は、
【数31】
とされてもよい。
【0082】
その後、ハッシュ関数(Hで表す)を使用して、前記送信すべきファイル(Mで表す)に対してデジタル署名を行ってもよく、具体的に、送信すべきファイルMと第三テンソルB1,…,Brとを文字列として連結し、連結された文字列に対しハッシュ演算を行って、H(M|B1|…|Br)で表される第一文字列を得るようにしてもよい。
ここで、M|B1|…|Brは、送信すべきファイルMと第三テンソルB1、…、Brとが文字列として連結されたものを表し、前記第一文字列は、2進法文字列、即ち「0」と「1」の文字列とされてもよく、その長さがr×sとされてもよく、パラメータsも、身分認証プロトコルのパラメータであり、パラメータtとは、t=2sを満たす。一方で、Hはハッシュ関数であり、その入力が任意の長さの文字列とされてもよく、出力文字列の長さがr×sとされ、且つ「0」と「1」の文字列が出力される。
【0083】
本実施形態において、ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記第一テンソルと同型の第三テンソルを生成し、前記第三テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得ることで、デジタル署名を実現することができる。
【0084】
選択的に、前記ステップS104は、具体的に、
前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいて、ハッシュツリーのリーフノードのハッシュ値を構築することと、
前記ハッシュツリーのリーフノードのハッシュ値、及び前記第一ターゲット文字列に基づいて、ハッシュツリーのノードのうち、前記リーフノードを除いた他のノードであって、前記ハッシュツリーのルートノードが含まれる他のノードのハッシュ値を構築することとを含む。
【0085】
本実施形態は、前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいてハッシュツリーを構築する具体的な手順について述べている。
【0086】
MerkleKeyで表され得る第一ターゲット文字列をランダムに生成してもよく、MerkleKeyは、具体的に、uniformやrandom等のランダム関数に基づいて生成されてもよい。
ここで、MerkleKeyは、長さλの「0」と「1」の文字列であってもよく、λは、安全性パラメータとされてもよく、即ち、デジタル署名が達成する必要のがる安全性に応じて、λを設定可能であり、例えば、デジタル署名が128bitの安全性を達成する必要がある場合、λを128に設定可能である。
【0087】
前記L個の第二テンソルに基づいて、前記ハッシュツリーのリーフノードを構成してもよく、具体的に、ハッシュ関数Hを使用して、ハッシュツリーの第s層、即ちリーフノードに対応する層を、式で
【数32】
表すように構築してもよく、ここで、0≦i≦t-1であり、h
s,jは、リーフノードに対応する層、即ち第s層の第i個のリーフノードのハッシュ値であり、記号|は、文字列の結びつきを表す。
【0088】
引き続きハッシュ関数Hを使用して、ハッシュツリーの他の内部ノードを式
【数33】
で構築し、ここで、0≦k≦sであり、0≦i≦2
kであり、h
k,jは、第k層の第i個のノードのハッシュ値であり、h
k+1,2i及びh
k+1,2i+1は、それぞれ、当該ノードの2つの子ノードのハッシュ値であり、当該ノードは、これら2つの子ノードの親ノードと呼ばれてもよい。これにより、ハッシュツリーの全元素(前記ハッシュツリーのルートノードを含む)を構成することができ、当該ルートノードは、h
0,0で表され、h
0,0のハッシュ値が公開鍵の一部として使用可能である。
【0089】
本実施形態において、前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいて、ハッシュツリーのルートノードのハッシュ値を構築することで、ハッシュツリーの解読難易度を向上させることができ、ひいては、デジタル署名の安全性を更に向上させることができる。
【0090】
選択的に、前記ステップS101の前に、
前記秘密鍵に対応する公開鍵であって、前記第一ターゲット文字列及びハッシュツリーのルートノードのハッシュ値が含まれる公開鍵を生成することと、
前記公開鍵を公表することとを更に含む。
【0091】
本実施形態は、秘密鍵に基づいて公開鍵を生成する手順であり、そして、他の電子機器が、前記第一電子機器から送信された署名情報及び送信すべきファイルを受信した場合に、送信すべきファイルの送信者、即ち第一電子機器に対して身分検証を行うことができるようにするために、秘密鍵に対応する公開鍵を公表する必要がある。
【0092】
前記秘密鍵には、第一可逆行列
【数34】
と、サイズnの単位行列C
0とが含まれ、前記第一可逆行列及び前記第一テンソルに基づいて、前記第一テンソルと同型のテンソルを生成してもよく、最終的にL個の第二テンソルが得られ、Lは、tと等しくてもよく、すると、これらの第二テンソルは、
【数35】
で表され得る。
【0093】
第一ターゲット文字列MerkleKeyをランダムに生成し、MerkleKey及び前記L個の第二テンソルに基づいて、ハッシュ関数を使用してハッシュツリーのリーフノードのハッシュ値を構築するが、その構築手順は、上記で既に詳しく述べており、ここで繰り返して述べない。説明すべきなのは、第一電子機器の署名手順と、第二電子機器の署名検証手順とに使用される第一ターゲット文字列は、統一したものとされるべきである。
【0094】
引き続きリーフノードのハッシュ値及びMerkleKeyに基づいて、ハッシュ関数を使用してハッシュツリーにおける他のノードのハッシュ値を構築していけば、最終的にハッシュツリーのルートノードのハッシュ値を構築することができる。前記秘密鍵に対応する公開鍵には、前記第一ターゲット文字列及びハッシュツリーのルートノードのハッシュ値が含まれるようになる。
【0095】
その後、生成された前記公開鍵を公表してもよい。すると、他の電子機器は、前記第一電子機器の公開鍵を得ることが可能となる。
【0096】
本実施形態において、秘密鍵及びランダムに生成された初期テンソルによって、当該初期テンソルと同型のテンソルを構成して、L個の第二テンソルを得て、前記L個の第二テンソル、及び第一ターゲット文字列に基づいて、ハッシュツリーのルートノードのハッシュ値を構築し、ハッシュツリーのルートノードのハッシュ値及び第一ターゲット文字列を第一電子機器の公開鍵として公表するようにしている。こうして、公開鍵の長さを大幅に短縮できるため、公開鍵の対話が必要とされるシーンでの応用効率を向上させることができる。
【0097】
第二実施例
図3に示すように、本願は、第二電子機器に適用される署名情報の検証方法を提供しており、前記方法は、
送信すべきファイルと、前記送信すべきファイルの署名情報と、前記第二電子機器による署名情報検証のための公開鍵であって、前記署名情報に関連付けられた秘密鍵に対応し、ハッシュツリーのルートノードのハッシュ値が含まれる公開鍵とを取得するステップS301と、
前記署名情報に基づいて、Q個(Qは正整数)の第二ターゲット文字列を生成するステップS302と、
前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、前記署名情報に基づいて、第四テンソルを生成するステップS303と、
前記第四テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得るステップS304と、
前記第二文字列に基づいて、前記署名情報を検証するステップS305とを含む。
【0098】
本実施例において、前記第二電子機器は、送信すべきファイルを受信する電子機器であり、第一電子機器は、送信すべきファイル及び前記送信すべきファイルの署名情報を第二電子機器に送信することが可能である。すると、第二電子機器は、前記送信すべきファイル、送信すべきファイルの署名情報を受信可能となる。
【0099】
そして、前記第一電子機器は、送信すべきファイル及び前記送信すべきファイルの署名情報を送信する前に、その身分を検証するための公開鍵を公表することになる。すると、第二電子機器は、前記第一電子機器によって公表された公開鍵を取得することが可能となる。
【0100】
前記公開鍵は、前記署名情報に関連付けられた秘密鍵に対応するものであり、即ち、前記公開鍵と、前記署名情報を生成するための秘密鍵とが鍵ペアとされ、前記公開鍵には、ハッシュツリーのルートノードのハッシュ値が含まれてもよく、しかも、前記公開鍵には、第一ターゲット文字列が含まれてもよい。
【0101】
第二電子機器では、検証の正確性を保証するために、署名情報に対して二重検証を行ってもよい。
【0102】
第一重の検証としては、具体的に、前記署名情報に基づいて、Q個(Qは正整数)の第二ターゲット文字列を生成し、公開鍵における前記ハッシュツリーのルートノードのハッシュ値が、各々の第二ターゲット文字列と等しいかどうかを比較して、何れとも等しい場合に限って、第二重の検証を行うことになり、そうでなければ、ハッシュツリーのルートノードのハッシュ値と等しくない第二ターゲット文字列が1つでもある場合、検証に失敗したとする。
【0103】
前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、第二重の検証を起動し、具体的には、前記署名情報に基づいて、第四テンソルを生成してもよく、前記第四テンソルは、B
i’で表され得る。
【数36】
について、前記第二電子機器は、式
【数37】
を使用して、少なくとも1つの第四テンソルを生成する。
【0104】
その後、前記第四テンソルに基づいて、ハッシュ関数を使用して前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得るようにしてもよい。具体的には、送信すべきファイルMと第四テンソルBi’、…、Br’とを文字列として連結し、その後、連結された文字列に対しハッシュ演算を行って、H(M|B1’|…|Br’)で表される第二文字列を得るようにしてもい。
ここで、M|B1’|…|Br’は、送信すべきファイルMと第四テンソルB1’、…、Br’とが文字列として連結されたものを表し、前記第二文字列も、2進法文字列、即ち「0」と「1」の文字列とされてもよく、その長さもr×sとされてもよい。
【0105】
最後に、前記第二文字列に基づいて、前記署名情報を検証してもよく、前記第二文字列と前記署名情報における文字列とが全て同じである場合、前記署名情報の検証が成功したとされ、即ち、前記送信すべきファイルが、確かに前記第一電子機器から送信されたものであるとされる。前記第二文字列と前記署名情報における文字列とが全て同じであるとはならない場合、前記署名情報の検証に失敗したとされ、即ち、前記送信すべきファイルが、第一電子機器ではなく、他の電子機器から送信されたものであるとされる。
【0106】
本実施例において、前記署名情報に基づいて、Q個の第二ターゲット文字列を生成し、前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、前記署名情報に基づいて、第四テンソルを生成し、前記第四テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得て、前記第二文字列に基づいて、前記署名情報を検証することで、第二電子機器は、第一電子機器によって公表された公開鍵を取得した場合、公開鍵と、受信された送信すべきファイル及び前記送信すべきファイルの署名情報とに基づけば、送信すべきファイルの送信者の身分検証のために、署名情報を極めて容易に検証できる。しかも、署名情報に対して二重検証を行っており、検証の正確性を更に保証できる。
【0107】
選択的に、前記署名情報には、P個(Pは、1よりも大きい正整数)の文字列が含まれ、前記ステップS305は、具体的に、
前記第二文字列を切り分けて、K個(Kは、Pに等しい)の文字列を得ることと、
前記P個の文字列と前記K個の文字列とが1対1で等しい場合、前記署名情報の検証が成功したと確定するか、或いは、前記P個の文字列のうち、何れか1つの文字列となる第三ターゲット文字列と、前記K個の文字列のうち、前記K個の文字列での位置が、前記第三ターゲット文字列の前記P個の文字列での位置に対応する第四ターゲット文字列とが等しくない場合、前記署名情報の検証に失敗したと確定することとを含む。
【0108】
本実施形態において、前記第二文字列を切り分けて、複数の文字列を得ることが可能である。例えば、長さsの「0」と「1」の文字列がr個得られ、これらr個の文字列は、それぞれ、f1’,…,fr’で表され得る。
【0109】
【数38】
の何れについても、f
i=f
i’であれば、前記署名情報の検証が成功し、そうでなければ、前記署名情報の検証に失敗する。
【0110】
本実施形態において、前記第二文字列を切り分けて複数の文字列を得て、これら複数の文字列と、前記署名情報における複数の文字列とを1つずつ比較して、全て同じである場合、前記署名情報の検証が成功したとし、何れかの文字列が同じでない場合、前記署名情報の検証に失敗したとすることで、署名情報を極めて容易に検証できる。
【0111】
選択的に、前記署名情報には、N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスが含まれ、前記ステップS302は、具体的に、
前記N個(Nは、Qに等しい)の第二テンソルの内の各々の第二テンソルについて、前記第二テンソル、及び前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスに基づいて、前記第二テンソルに対応する第二ターゲット文字列を生成することを含む。
【0112】
本実施形態において、
【数39】
について、第二テンソルA
fi及びその認証パスpath
iに基づいて、式path
i(A
fi)=h
0,0
を使用し、即ち、第二ターゲット文字列が1つ得られるまでハッシュ関数を繰り返して呼び出すようにしている。署名情報が偽造されたものでない場合、第二テンソルA
fi及びその認証パスpath
iに基づいて、ハッシュツリーのルートノードのハッシュ値を得ることができる。したがって、当該第二ターゲット文字列と、ハッシュツリーのルートノードのハッシュ値とが等しいかどうかを比較することで、署名情報に対する第一重の検証を行うことが可能である。
【0113】
本実施形態において、前記署名情報における第二テンソル、及び前記ハッシュツリーのルートノードに対する第二テンソルの認証パスを介して、ハッシュ関数を繰り返して呼び出して第二ターゲット文字列を得て、当該第二ターゲット文字列と、ハッシュツリーのルートノードのハッシュ値とを比較ことで、署名情報に対する第一重の検証を実現できる。
【0114】
本願の実施例におけるデジタル署名方法及び署名情報の検証方法の利点を検証するために、実行時間、公開鍵の長さ及び署名の長さ等の面で、本願の実施例に係るスキームと、他のスキームとを比較することができる。本願の実施例に係るスキームは、テンソル同型に基づくスキーム(ハッシュツリー技術を加えたもの)であり、プロセッサのクロックが2.4GHzとされ、他のスキームとしては、格子問題に基づく署名スキームFalcon(プロセッサのクロックは3.3GHz)、テンソル同型に基づく署名スキーム(プロセッサのクロックは2.4GHz)、及び、ハッシュ関数に基づく署名スキームSPHINCS+(プロセッサのクロックは3.5GHz)が含まれ得る。
【0115】
本願の実施例に係るスキームは、プログラミング言語であるPythonに基づいてプロトタイプ実現され、各スキームの実行時間の一覧は、次の表2に示す通りであり、各スキームの公開鍵の長さ及び署名の長さの一覧は、次の表3に示す通りである。
表2 各スキームの実行時間の一覧
【表2】
表3 各スキームの公開鍵の長さ及び署名の長さの一覧
【表3】
【0116】
表2から分かるように、他のスキームに比べて、本スキームでは、実行時間が明らかに改善されている。そして、表3から分かるように、他のスキームに比べて、本スキームは、公開鍵の長さを大幅に短縮することができる。
【0117】
第三実施例
図4に示すように、本願は、第一電子機器に適用されるデジタル署名装置400を提供しており、前記装置は、
送信すべきファイルと、前記第一電子機器によるデジタル署名のための秘密鍵であって、第一可逆行列が含まれる秘密鍵とを取得するための第一取得モジュール401と、
前記第一可逆行列、及びランダムに生成された第一テンソルに基づいて、前記第一テンソルと、前記第一テンソルと同型のテンソルとが含まれるL個(Lは、1よりも大きい正整数)の第二テンソルを生成するための第一生成モジュール402と、
ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得るための第一デジタル署名モジュール403と、
前記L個の第二テンソルに基づいて、ハッシュツリーのルートノードのハッシュ値を構築するための構築モジュール404と、
前記第一文字列、第一可逆行列、第二可逆行列、L個の第二テンソル、及びハッシュツリーのルートノードのハッシュ値に基づいて、前記送信すべきファイルに対する前記第一電子機器の署名情報を生成するための第二生成モジュール405とを含む。
【0118】
選択的に、前記第二生成モジュール405は、
前記第一文字列を切り分けて、P個(Pは、1よりも大きい正整数)の文字列を得るための切分ユニットと、
前記P個の文字列、第一可逆行列及び第二可逆行列に基づいて、ターゲット行列を生成するための第一生成ユニットと、
前記P個の文字列に基づいて、前記L個の第二テンソルからN個(Nは正整数)の第二テンソルを選出するための選出しユニットと、
前記N個の第二テンソルの内の各々の第二テンソルについて、前記ハッシュツリーのルートノードのハッシュ値、及び前記第二テンソルに基づいて、前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスを確定するための確定ユニットとを含み、
ここで、前記署名情報には、前記P個の文字列、前記ターゲット行列、前記N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスとが含まれる。
【0119】
選択的に、前記N個の第二テンソルには、前記N個の第二テンソルのうち、何れか1つの第二テンソルとなるターゲットテンソルが含まれ、前記確定ユニットは、具体的に、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードのハッシュ値、及び前記ハッシュツリーのルートノードのハッシュ値に基づいて、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードのターゲットハッシュ値を確定するために用いられ、
ここで、前記ハッシュツリーのルートノードに対する前記ターゲットテンソルの認証パスには、前記ターゲットハッシュ値、及び、前記ハッシュツリーにおける前記ターゲットテンソルに対応するリーフノードからルートノードまでに経由するノードの前記ハッシュツリー内での位置が含まれる。
【0120】
選択的に、前記第一デジタル署名モジュール403は、具体的に、ランダムに生成された第二可逆行列、及び前記第一テンソルに基づいて、前記第一テンソルと同型の第三テンソルを生成し、前記第三テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第一文字列を得るために用いられる。
【0121】
選択的に、前記構築モジュール404は、具体的に、前記L個の第二テンソル、及びランダムに生成された第一ターゲット文字列に基づいて、ハッシュツリーのリーフノードのハッシュ値を構築し、前記ハッシュツリーのリーフノードのハッシュ値、及び前記第一ターゲット文字列に基づいて、ハッシュツリーのノードのうち、前記リーフノードを除いた他のノードであって、前記ハッシュツリーのルートノードが含まれる他のノードのハッシュ値を構築するために用いられる。
【0122】
選択的に、前記装置は、
前記秘密鍵に対応する公開鍵であって、前記第一ターゲット文字列及びハッシュツリーのルートノードのハッシュ値が含まれる公開鍵を生成するための第三生成モジュールと、
前記公開鍵を公表するための公表モジュールとを更に含む。
【0123】
本願によるデジタル署名装置400は、デジタル署名方法の実施例における各手順を実現できるとともに、同じ有益な効果を奏することできるが、重複を避けるため、ここで繰り返して説明しない。
【0124】
第四実施例
図5に示すように、本願は、第二電子機器に適用される署名情報の検証装置500を提供しており、前記装置は、
送信すべきファイルと、前記送信すべきファイルの署名情報と、前記第二電子機器による署名情報検証のための公開鍵であって、前記署名情報に関連付けられた秘密鍵に対応し、ハッシュツリーのルートノードのハッシュ値が含まれる公開鍵とを取得するための第二取得モジュール501と、
前記署名情報に基づいて、Q個(Qは正整数)の第二ターゲット文字列を生成するための第四生成モジュール502と、
前記ハッシュツリーのルートノードのハッシュ値が何れの第二ターゲット文字列とも等しい場合、前記署名情報に基づいて、第四テンソルを生成するための第五生成モジュール503と、
前記第四テンソルに基づいて、前記送信すべきファイルに対しデジタル署名を行って、第二文字列を得るための第二デジタル署名モジュール504と、
前記第二文字列に基づいて、前記署名情報を検証するための検証モジュール505とを含む。
【0125】
選択的に、前記署名情報には、P個(Pは、1よりも大きい正整数)の文字列が含まれ、前記検証モジュール505は、具体的に、前記第二文字列を切り分けて、K個(Kは、Pに等しい)の文字列を得て、前記P個の文字列と前記K個の文字列とが1対1で等しい場合、前記署名情報の検証が成功したと確定するか、或いは、前記P個の文字列のうち、何れか1つの文字列となる第三ターゲット文字列と、前記K個の文字列のうち、前記K個の文字列での位置が、前記第三ターゲット文字列の前記P個の文字列での位置に対応する第四ターゲット文字列とが等しくない場合、前記署名情報の検証に失敗したと確定するために用いられる。
【0126】
選択的に、前記署名情報には、N個の第二テンソル、及び、前記ハッシュツリーのルートノードに対する前記N個の第二テンソルの内の各々の第二テンソルの認証パスが含まれ、前記第四生成モジュール502は、具体的に、前記N個(Nは、Qに等しい)の第二テンソルの内の各々の第二テンソルについて、前記第二テンソル、及び前記ハッシュツリーのルートノードに対する前記第二テンソルの認証パスに基づいて、前記第二テンソルに対応する第二ターゲット文字列を生成するために用いられる。
【0127】
本願による署名情報の検証装置500は、署名情報の検証方法の実施例における各手順を実現できるとともに、同じ有益な効果を奏することできるが、重複を避けるため、ここで繰り返して説明しない。
【0128】
本願の実施例によれば、本願は、電子機器、読取可能な記憶媒体、及び、コンピュータプログラム製品を更に提供している。
【0129】
図6は、本開示の実施例を実施するために使用できる例示的な電子機器600の概略ブロック図を示している。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークベンチ、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及びその他の適切なコンピュータなど、様々な形態のデジタルコンピュータを表すことを目的としている。電子機器は、パーソナルデジタルアシスタント、セルラフォン、スマートフォン、ウェアラブルデバイス、及びその他の類似なコンピューティング装置など、様々な形態のモバイル装置を表すこともできる。本明細書で示されるコンポーネント、それらの接続及び関係、並びにそれらの機能は単なる例であり、本明細書で説明及び/又は要求される本開示の実現を制限することを意図するものではない。
【0130】
図6示すように、機器600は、読取専用メモリ(ROM)602に記憶されたコンピュータプログラム、又は、記憶ユニット608からランダムアクセスメモリ(RAM)603にロードされたコンピュータプログラムに従って、各種の適切な動作及び処理を実行可能なコンピューティングユニット601を含む。RAM603には、機器600の操作に必要な各種のプログラム及びデータが記憶されてもよい。コンピューティングユニット601と、ROM602とRAM603とは、バス604を介して互いに接続されている。入力/出力(I/O)インターフェース605も、バス604に接続されている。
【0131】
機器600における複数のコンポーネントは、I/Oインターフェース605に接続されており、前記複数のコンポーネントは、例えばキーボード、マウス等の入力ユニット606、例えば様々な類型のディスプレイ、スピーカ等の出力ユニット607、例えば磁気ディスク、光ディスク等の記憶ユニット608、及び、例えばネットワークカード、モデム、無線通信トランシーバ等の通信ユニット609を含む。通信ユニット609は、機器600がインターネット等のコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して他の機器と情報/データを交換することを可能にする。
【0132】
コンピューティングユニット601は、処理及びコンピューティング能力を有する様々な汎用及び/又は専用処理構成要素とすることができる。コンピューティングユニット601のいくつかの例としては、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、様々な専用人工知能(AI)コンピューティングチップ、機械学習モデルアルゴリズムを実行する様々なコンピューティングユニット、デジタル信号プロセッサ(DSP)、及び任意の適切なプロセッサ、コントローラ、マイクロコントローラ等を含むが、これらに限定されない。コンピューティングユニット601は、上述した各方法及び処理、例えばデジタル署名方法又は署名情報の検証方法を実行する。例えば、いくつかの実施例において、デジタル署名方法又は署名情報の検証方法は、記憶ユニット608等の機械読取可能な媒体に有形に含まれるコンピュータソフトウェアプログラムとして実現されてもよい。いくつかの実施例において、コンピュータプログラムの一部又は全部は、ROM602及び/又は通信ユニット609を介して機器600にロード及び/又はインストールされてもよい。コンピュータプログラムがRAM603にロードされてコンピューティングユニット601によって実行されると、上述したデジタル署名方法又は署名情報の検証方法の1つ又は複数のステップを実行可能となる。代替的に、他の実施例において、コンピューティングユニット601は、他の任意の適切な方式によって(例えば、ファームウェアを通じて)、デジタル署名方法又は署名情報の検証方法を実行するように構成されてもよい。
【0133】
本明細書において上述したシステム及び技術の様々な実現形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)システム、複合プログラマブルロジックデバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせで実現可能である。これらの様々な実施例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行及び/又は解釈可能な1つ又は複数のコンピュータプログラムで実施されてもよく、当該プログラマブルプロセッサは、ストレージシステム、少なくとも1つの入力装置、及び少なくとも1つの出力装置からデータ及び命令を受信し、データ及び命令を当該ストレージシステム、当該少なくとも1つの入力装置、及び当該少なくとも1つの出力装置に送信可能な専用又は汎用のプログラマブルプロセッサであってもよい。
【0134】
本開示の方法を実施するためのプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせで作成することが可能である。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサ又はコントローラに提供されてもよく、こうした場合、プログラムコードがプロセッサ又はコントローラによって実行されると、フローチャート及び/又はブロック図に規定された機能及び/又は操作が実施される。プログラムコードは、全てマシン上で、或いは、部分的にマシン上で実行され、スタンドアロンソフトウェアパッケージとして、部分的にマシン上で、部分的にリモートマシン上で実行され、又は全部でリモートマシン又はサーバ上で実行することが可能である。
【0135】
本開示の記載において、機械読取可能な媒体は、命令実行システム、装置やデバイスによって使用されるか、或いは命令実行システム、装置やデバイスと組み合わせて使用されるプログラムを包含又は記憶可能な有形の媒体であってもよい。機械読取可能な媒体は、機械読取可能な信号媒体又は機械読取可能な記憶媒体であってもよい。機械読取可能な媒体は、電子、磁気、光学、電磁気、赤外線、又は半導体のシステム、装置やデバイス、又はこれらの任意の適切な組み合わせを含んでもよいが、それらに限定されない。機械読取可能な記憶媒体のより具体的な例としては、1つ又は複数の線による電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能なプログラマブル読取専用メモリ(EPROM又はフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読取専用メモリ(CD-ROM)、光学記憶機器、磁気記憶機器、又はこれらの任意の適切な組み合わせが含まれる。
【0136】
ユーザとの対話を提供するために、本明細書に記載のシステム及び技術は、ユーザに情報を表示するための表示装置(例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ)と、キーボード及びポインティング装置(例えば、マウス又はトラックボール)とを有するコンピュータ上で実施されてもよく、ユーザは、当該キーボード及び当該ポインティング装置を介してコンピュータに入力を提供可能である。他の種類の装置を使用してユーザとの対話を提供してもよい。例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、また、任意の形式(音響入力、音声入力、又は触覚入力を含む)を使用してユーザからの入力を受信してもよい。
【0137】
本明細書に記載のシステム及び技術は、バックエンドコンポーネントを含むコンピューティングシステム(例えば、データサーバとして)、又はミドルコンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、又はフロントエンドコンポーネントを含むコンピューティングシステム(例えば、グラフィカルユーザインターフェース又はWebブラウザを備えたユーザコンピュータ。ユーザは、当該グラフィカルユーザインターフェース又は当該Webブラウザを介して、ここで説明されるシステム及び技術の実施形態と対話できる)、又はこのようなバックエンドコンポーネント、ミドルコンポーネント、又はフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステム内で実施することができる。任意の形式又は媒体のデジタルデータ通信(例えば、通信ネットワーク)によってシステムのコンポーネントを相互接続してもよい。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット及びブロックチェーンネットワークが含まれる。
【0138】
コンピュータシステムは、クライアントとサーバとを含むことが可能である。一般的に、クライアントとサーバとは互いに離れており、通常は通信ネットワークを介してインタラクションする。それぞれのコンピュータで実行され且つ互いにクライアント-サーバの関係を持つコンピュータプログラムによってクライアントとサーバとの関係を生成する。サーバとしては、従来の物理ホスト及びVPSサービス(「Virtual Private Server」、又は「VPS」と略す)に存在する管理の困難さ及びサービスのスケーラビリティの弱さの欠点を解決するために、クラウドコンピューティングサーバとも呼ばれるクラウドサーバ、又は、クラウドコンピューティングサービスシステムにおけるホスト製品の1つとなるクラウドホストであってもよい。サーバは、分散型システムのサーバ、又は、ブロックチェーンと組み合わせたサーバであってもよい。
【0139】
なお、上記の様々な形態のフローを使用して、ステップを並べ替え、追加又は削除可能であることを理解されたい。例えば、本願で説明された各ステップは、並列、順次、又は異なる順序で実行可能である。本願で掲載された技術案の望ましい結果を達成できればよく、本明細書は、これについて限定しない。
【0140】
上記の具体的な実施形態は、本願の保護範囲に対する制限を構成するものではない。当業者でれば、設計要件及び他の要因に応じて、様々な修正、組み合わせ、サブ組み合わせ、及び置き換えを行えることを理解するべきである。本願の精神及び原則内で行われた修正、同等の置き換え、及び改善は、何れも本願の保護範囲に含まれるものとする。