(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-13
(45)【発行日】2023-10-23
(54)【発明の名称】プライバシー保護署名
(51)【国際特許分類】
H04L 9/32 20060101AFI20231016BHJP
G06F 21/64 20130101ALI20231016BHJP
【FI】
H04L9/32 200B
G06F21/64
(21)【出願番号】P 2022554251
(86)(22)【出願日】2021-03-08
(86)【国際出願番号】 US2021021373
(87)【国際公開番号】W WO2021183441
(87)【国際公開日】2021-09-16
【審査請求日】2022-09-07
(32)【優先日】2020-03-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(73)【特許権者】
【識別番号】596102126
【氏名又は名称】ソニー ピクチャーズ エンターテインメント インコーポレイテッド
(74)【代理人】
【識別番号】100092093
【氏名又は名称】辻居 幸一
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(72)【発明者】
【氏名】ディール エリック
【審査官】行田 悦資
(56)【参考文献】
【文献】特開2007-206961(JP,A)
【文献】特開2006-185227(JP,A)
【文献】特表2005-513956(JP,A)
【文献】米国特許出願公開第2004/0260926(US,A1)
【文献】米国特許出願公開第2008/0046310(US,A1)
【文献】米国特許出願公開第2005/0081038(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
署名者のプライバシーを保護しながら、検証者によって署名を検証することができるようにデータに署名するための方法であって、前記方法は、
署名ノンスを生成するステップと、
前記検証者の公開鍵で前記署名ノンスを暗号化して、暗号化された署名ノンスを生成するステップと、
前記署名者の秘密鍵を使用して、前記署名ノンスと連結される前記データに署名することによって、前記署名者の前記データの署名を計算するステップと、
を含むことを特徴とする方法。
【請求項2】
前記署名ノンスを生成するステップは、前記署名ノンスのための乱数を生成するステップを含むことを特徴とする、請求項1に記載の方法。
【請求項3】
前記データと、前記暗号化された署名ノンスと、前記署名者の前記データの前記署名とを配信するステップ、
を更に含むことを特徴とする、請求項1に記載の方法。
【請求項4】
前記検証者の前記公開鍵を取得するステップ、
を更に含むことを特徴とする、請求項1に記載の方法。
【請求項5】
前記検証者は、全ての署名者からの署名を検証することができるユニバーサル検証者であることを特徴とする、請求項1に記載の方法。
【請求項6】
前記ユニバーサル検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号することを可能にするステップ、
を更に含むことを特徴とする、請求項5に記載の方法。
【請求項7】
前記署名者の公開鍵を使用して、前記復号された署名ノンスと連結される前記データを検証することを可能にするステップ、
を更に含むことを特徴とする、請求項6に記載の方法。
【請求項8】
検証することを可能にするステップは、
前記復号された署名ノンスと連結される前記データが前記署名者の前記データの前記署名と一致するかどうかを判定することを可能にするステップ、
を含む、
ことを特徴とする、請求項7に記載の方法。
【請求項9】
前記署名ノンスを生成するステップは、秘密関数を用いて前記データを処理して、擬似乱数として前記署名ノンスを生成するステップを含むことを特徴とする、請求項1に記載の方法。
【請求項10】
合意された検証者に前記秘密関数を送信するステップと、
前記秘密関数を使用して前記署名ノンスを計算することを可能にするステップと、
を更に含むことを特徴とする、請求項9に記載の方法。
【請求項11】
前記署名者の公開鍵を使用して、前記計算された署名ノンスと連結される前記データを検証することを可能にするステップ、
を更に含むことを特徴とする、請求項10に記載の方法。
【請求項12】
検証することを可能にするステップは、
前記計算された署名ノンスと連結される前記データが前記署名者の前記データの前記署名と一致するかどうかを判定することを可能にするステップ、
を含む、
ことを特徴とする、請求項11に記載の方法。
【請求項13】
検証者が、署名者のデータの署名で署名される前記データを検証するための方法であって、前記方法は、
前記データと、暗号化された署名ノンスと、前記署名者の前記データの前記署名とを受け取るステップであって、
前記署名ノンスは、前記検証者の公開鍵で暗号化されて、前記暗号化された署名ノンスを生成し、
前記署名者の前記データの前記署名は、前記署名者の秘密鍵を使用して、前記署名ノンスと連結される前記データに署名することによって計算される、ステップと、
前記検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号するステップと、
前記署名者の公開鍵を使用して、前記復号された署名ノンスと連結される前記署名者の前記データの前記署名を検証するステップと、
を含むことを特徴とする方法。
【請求項14】
前記署名者のみに知られている秘密関数を用いて前記データを処理して、前記署名ノンスを生成することを特徴とする、請求項13に記載の方法。
【請求項15】
署名者のプライバシーを保護しながら、検証者によって前記署名者のデータの署名を検証することができるように前記データに署名するためのコンピュータプログラムを記憶する非一時的コンピュータ可読記憶媒体であって、前記コンピュータプログラムは実行可能命令を含み、前記実行可能命令は、コンピュータに、
署名ノンスを生成することと、
前記検証者の公開鍵で前記署名ノンスを暗号化して、暗号化された署名ノンスを生成することと、
前記署名者の秘密鍵を使用して、前記署名ノンスと連結される前記データに署名することによって、前記署名者の前記データの署名を計算することと、
を行わせる、
ことを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項16】
前記検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号することを可能にすることと、
前記復号された署名ノンスと連結される前記データが前記署名者の前記データの前記署名と一致するかどうかを判定することを可能にすることと、
を前記コンピュータに行わせる実行可能命令を更に含む、
ことを特徴とする、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記署名ノンスを生成することを前記コンピュータに行わせる前記実行可能命令は、
秘密関数を用いて前記データを処理して、擬似乱数として前記署名ノンスを生成すること、
を前記コンピュータに行わせる実行可能命令を含む、
ことを特徴とする、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記署名者の公開鍵を使用して、前記計算された署名ノンスと連結される前記データを検証することを可能にすること、
を前記コンピュータに行わせる実行可能命令を更に含む、
ことを特徴とする、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記検証者は、全ての署名者からの署名を検証することができるユニバーサル検証者であり、
前記ユニバーサル検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号することを可能にすること、
を前記コンピュータに行わせる実行可能命令を更に含む、
ことを特徴とする、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 本開示は、デジタル署名に関し、具体的には、プライバシー保護署名スキームに関する。
【背景技術】
【0002】
[0002] 1つのデジタル情報を発行した主体(principal)のアイデンティティを認証するための従来の手段は、ロン・リベスト(Ron Rivest)、アディ・シャミア(Adi Shamir)及びレオナルド・エーデルマン(Leonard Adleman)(RSA)又は楕円曲線デジタル署名アルゴリズム(EC-DSA)などの非対称暗号システムを使用してデジタル文書に署名することを含む。
【0003】
[0003] 一例では、発行者アリスが、公開-秘密鍵ペア(K
Alicepub及びK
Alicepri)を有する。アリスは、彼女の秘密鍵(K
Alicepri)を用いて、1つのデジタル情報(data)を含むデジタル文書に署名する。これは、次式として表される。
アリスは、彼女の公開鍵を公表する。検証者ボブが、アリスの公開鍵を使用して、データの出所及びデータの保全性の両方を検証する。
である場合、検証テストをパスする。
【0004】
[0004]
図1は、デジタル文書110が署名された時から変更されなかったことを証明するために働くデジタル署名プロセス100を示すブロック図である。署名プロセス100は、デジタル文書110を入力するステップと、デジタル署名された文書140を生成するステップとを含む。署名プロセス100は、最初に、文書の暗号ハッシュ関数120を使用して一意のハッシュを生成し、署名者の秘密鍵を使用してハッシュに署名(130)する。その結果は署名140である。生成されたハッシュは、文書110に特有のものであり、文書110のどの部分を変更しても、ハッシュが完全に変更される。次に、デジタル文書110と署名140とを連結することによって、デジタル署名された文書150を生成する。
【0005】
[0005]
図2は、デジタル署名された文書150を入力とする検証プロセス200を示すブロック図である。検証者は、デジタル署名された文書150のデジタル文書部分のデータからハッシュ関数210(ハッシュ関数120と同じ)を使用して、新たなハッシュ212を生成する。署名者の公開鍵を使用して、検証者は、デジタル署名された文書150から抽出(210)される署名140が212の署名と一致するかどうかをチェックする。
【0006】
[0006] しかしながら、いくつかの場合では、脅威モデルが、誰でも発行者の公開鍵にアクセスできると仮定するので、上記のスキームは、いくつかのプライバシーの問題を提起する場合がある。アリスは、他の人々の文書の中で彼女が署名した文書を保存したいと望む場合がある。一方で、アリスは、攻撃者が他の発行者の文書から彼女の文書を分離することを望まない。従来のスキームでは、アリスの文書のみが検証テストに成功するので、アリスの公開鍵を有する攻撃者は、署名を検証することによって、アリスによって発行される文書を容易に識別することができる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
[0007] 本開示は、プライバシー保護署名スキームを提供する。
【課題を解決するための手段】
【0008】
[0008] 1つの実装では、署名者のプライバシーを保護しながら、検証者によって署名を検証することができるようにデータに署名するための方法を開示する。前記方法は、署名ノンスを生成するステップと、前記検証者の公開鍵で前記署名ノンスを暗号化して、暗号化された署名ノンスを生成するステップと、前記署名者の秘密鍵を使用して、前記署名ノンスと連結される前記データに署名することによって、前記署名者の前記データの署名を計算するステップと、を含む。
【0009】
[0009] 1つの実装では、前記署名ノンスを生成するステップは、前記署名ノンスのための乱数を生成するステップを含む。1つの実装では、前記方法は、前記データと、前記暗号化された署名ノンスと、前記署名者の前記データの前記署名とを配信するステップを更に含む。1つの実装では、前記方法は、前記検証者の前記公開鍵を取得するステップを更に含む。1つの実装では、前記検証者は、全ての署名者からの署名を検証することができるユニバーサル検証者である。1つの実装では、前記方法は、前記ユニバーサル検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号することを可能にするステップを更に含む。1つの実装では、前記方法は、前記署名者の公開鍵を使用して、前記復号された署名ノンスと連結される前記データを検証することを可能にするステップを更に含む。1つの実装では、検証することを可能にするステップは、前記復号された署名ノンスと連結される前記データが前記署名者の前記データの前記署名と一致するかどうかを判定することを可能にするステップを含む。1つの実装では、前記署名ノンスを生成するステップは、秘密関数を用いて前記データを処理して、擬似乱数として前記署名ノンスを生成するステップを含む。1つの実装では、前記方法は、合意された検証者に前記秘密関数を送信するステップと、前記秘密関数を使用して前記署名ノンスを計算することを可能にするステップとを更に含む。1つの実装では、前記方法は、前記署名者の公開鍵を使用して、前記計算された署名ノンスと連結される前記データを検証することを可能にするステップを更に含む。1つの実装では、検証することを可能にするステップは、前記計算された署名ノンスと連結される前記データが前記署名者の前記データの前記署名と一致するかどうかを判定することを可能にするステップを含む。
【0010】
[0010] 別の実装では、検証者が、署名者のデータの署名で署名される前記データを検証するための方法を開示する。前記方法は、前記データと、暗号化された署名ノンスと、前記署名者の前記データの前記署名とを受け取るステップであって、前記署名ノンスは、前記検証者の公開鍵で暗号化されて、前記暗号化された署名ノンスを生成し、前記署名者の前記データの前記署名は、前記署名者の秘密鍵を使用して、前記署名ノンスと連結される前記データに署名することによって計算される、ステップと、前記検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号するステップと、前記署名者の公開鍵を使用して、前記復号された署名ノンスと連結される前記署名者の前記データの前記署名を検証するステップと、を含む。
【0011】
[0011] 1つの実装では、前記署名者のみに知られている秘密関数を用いて前記データを処理して、前記署名ノンスを生成する。
【0012】
[0012] 別の実装では、署名者のプライバシーを保護しながら、検証者によって署名を検証することができるようにデータに署名するためのコンピュータプログラムを記憶する非一時的コンピュータ可読記憶媒体を開示する。前記コンピュータプログラムは実行可能命令を含み、前記実行可能命令は、コンピュータに、署名ノンスを生成することと、前記検証者の公開鍵で前記署名ノンスを暗号化して、暗号化された署名ノンスを生成することと、前記署名者の秘密鍵を使用して、前記署名ノンスと連結される前記データに署名することによって、前記署名者の前記データの署名を計算することと、を行わせる。
【0013】
[0013] 1つの実装では、前記非一時的コンピュータ可読記憶媒体は、前記検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号することを可能にすることと、前記復号された署名ノンスと連結される前記データが前記署名者の前記データの前記署名と一致するかどうかを判定することを可能にすることと、を前記コンピュータに行わせる実行可能命令を更に含む。1つの実装では、前記署名ノンスを生成することを前記コンピュータに行わせる前記実行可能命令は、秘密関数を用いて前記データを処理して、擬似乱数として前記署名ノンスを生成すること、を前記コンピュータに行わせる実行可能命令を含む。1つの実装では、前記非一時的コンピュータ可読記憶媒体は、前記署名者の公開鍵を使用して、前記計算された署名ノンスと連結される前記データを検証することを可能にすること、を前記コンピュータに行わせる実行可能命令を更に含む。1つの実装では、前記検証者は、全ての署名者からの署名を検証することができるユニバーサル検証者であり、前記非一時的コンピュータ可読記憶媒体は、前記ユニバーサル検証者の秘密鍵を用いて前記暗号化された署名ノンスを復号することを可能にすること、を前記コンピュータに行わせる実行可能命令を更に含む。
【0014】
[0014] 本開示の態様を一例として示す本明細書からは、他の特徴及び利点も明らかになるはずである。
【0015】
[0015] 同じ部分を同じ参照数字によって示す添付図面を検討することにより、本開示の詳細をその構造及び動作の両方に関して部分的に収集することができる。
【図面の簡単な説明】
【0016】
【
図1】デジタル文書が署名された時から変更されなかったことを証明するために働くデジタル署名プロセスを示すブロック図である。
【
図2】デジタル署名された文書を入力とする検証プロセスを示すブロック図である。
【
図3】本開示の1つの実装による、署名者のプライバシーを保護しながら、全ての署名者からの署名を検証することができるように文書に署名するための方法のフロー図である。
【
図4】本開示の1つの実装による、ユニバーサル検証者によって、システムに参加する全ての署名者からの署名を検証するための方法のフロー図である。
【
図5】本開示の1つの実装による、合意された検証者によってデータの署名を検証するための方法のフロー図である。
【
図6A】本開示の実装による、コンピュータシステム及びユーザの図である。
【
図6B】本開示の実装による、文書検証アプリケーションをホストするコンピュータシステムを示す機能ブロック図である。
【発明を実施するための形態】
【0017】
[0023] 上記のように、発行者の公開-秘密鍵ペアを使用して、データの出所及びデータの保全性を検証する従来のスキームは、いくつかのプライバシーの問題を提起する場合がある。上記の問題に対処するために、指定検証者署名スキームが提案されている。指定検証者署名スキームの一例として、アリスは、彼女が署名した文書をビクターのみが検証することを望むと仮定する。ビクターは、公開-秘密鍵ペア(K
Victorpub及びK
Victorpri)を有する。アリスは、彼女の秘密鍵(K
Alicepri)を用いて、1つのデジタル情報(data)を含むデジタル文書に署名する。これは、次式として表される。
次に、アリスは、ビクターの公開鍵で署名を暗号化する。これは、次式として表される。
【0018】
[0024] 署名を検証するために、ビクターは、彼の秘密鍵を用いて署名を復号し、アリスの公開鍵を使用してデータを検証する。
このスキームによって、アリスは、誰が検証することができるか(例えばビクター)を決定することができるが、このスキームでは、アリスは、彼女の文書を検証させたい各人に対して別個の追加の署名された文書を生成する必要がある。したがって、新しいスキームが必要であり、その期待される特徴は、(1)真の署名された文書のみを受け入れるシステム、及び(2)発行者は、発行者が同じ署名された文書を使用して文書を発行したかどうかを誰が検証することができるかを決定することができること、である。
【0019】
[0025] 本開示の特定の実装は、署名者が以下の制約で文書データに署名するプライバシー保護署名スキームを提供する。すなわち、(1)ユニバーサル検証者が、システムに参加する全ての発行者/署名者からの署名を検証することができる、及び(2)署名者が、合意された検証者が署名者からのデータの署名を検証するための手段を提供する。
【0020】
[0026] 以下の説明を読んだ後には、様々な実装及び用途における本開示の実施方法が明らかになるであろう。本明細書では本開示の様々な実装について説明するが、これらの実装は、限定ではなく一例として提示するものにすぎないと理解されたい。したがって、様々な実装についての詳細な説明は、本開示の範囲又は外延を限定するものとして解釈すべきではない。
【0021】
[0027] 1つの実装では、署名者は、署名者公開鍵(Ksignerpub)と、署名者秘密鍵(Ksignerpri)と、署名者のみに知られている秘密関数(f)とを有する。第1の実装では(ユニバーサル検証者のみを使用すべき時に)、秘密関数は、擬似乱数値を生成する。ユニバーサル検証者は、検証者公開鍵(Kuverpub)と、検証者秘密鍵(Kuverpri)とを有する。第2の実装では(ユニバーサル検証者と共に、少なくとも1人の合意された検証者を使用すべき時に)、秘密関数は、署名されるべき文書に含まれるデータに基づいて、擬似乱数値を生成する。
【0022】
[0028] 第1の実装では、署名者は、乱数として署名ノンスを生成する。署名者は、また、ユニバーサル検証者の公開鍵で署名ノンス(signonce)を暗号化することによって、暗号化された署名ノンスを生成する。これは、次式として表される。
署名者は、署名者の秘密鍵を使用して、署名ノンスと連結されるデータに署名することによって、署名(signa)を計算する。これは、次式として表される。
次に、署名者は、データ(data)と、暗号化された署名ノンス(esignonce)と、署名(signa)とを配信する。
【0023】
[0029] 署名を検証するために、ユニバーサル検証者は、以下のオペレーションを実行する。すなわち、(1)ユニバーサル検証者は、その検証者秘密鍵(K
uverpri)を用いて、暗号化された署名ノンス(esignonce)を復号して、復号された署名ノンスを得る。これは、次式として表される。
(2)ユニバーサル検証者は、復号された署名ノンス
と連結されるデータ(data)の署名が署名(signa)と一致することを(署名者の公開鍵(K
signerpub)を使用して)検証する。これは、次式として表される。
【0024】
[0030] したがって、ユニバーサル検証者は、公開鍵が利用可能である全ての主体(principal)の署名をチェックすることができる。一方で、攻撃者は、署名者の公開鍵で署名を検証することができない。というのは、攻撃者は、復号された署名ノンス
を知らず、暗号化された値(esignonce)しか知らないからである。このスキームでは、ユニバーサル検証者のみが、暗号化されたノンスを復号することができる。ユニバーサル検証者の一例では、文書がブロックチェーンに送信されて文書の原作者を登録する時に、ブロックチェーンはユニバーサル検証者になり、ユニバーサル検証者の公開鍵を使用して暗号化された文書を(ユニバーサル検証者の秘密鍵を使用して)検証する。
【0025】
[0031] 第2の実装では、署名者は、次式として表される秘密関数fを用いて、署名されるべきデータを処理することによって、擬似乱数として署名ノンスを生成する。
署名者は、セキュアな方法で、合意された検証者に秘密関数(f)を提供する。署名をチェックするために、合意された検証者は、以下のオペレーションを実行する。すなわち、(1)合意された検証者は、提供された秘密関数(f)を使用して、署名ノンス(signonce)を計算する。これは、次式として表される。
(2)合意された検証者は、計算された署名ノンス(signonce)と連結されるデータ(data)の署名が署名(signa)と一致することを(署名者の公開鍵(K
signerpub)を使用して)検証する。これは、次式として表される。
【0026】
[0032] 上記の実装では、ユニバーサル検証者は、秘密関数fを知ることなく、第1の実装のように署名をチェックすることができる。
【0027】
[0033] 合意された検証者の上記の実装では、合意された検証者は、署名者によって発行される全ての文書(データ)の署名をチェックすることができる。一方で、攻撃者は、署名者公開鍵(Ksignerpub)で署名を検証することができない。というのは、攻撃者は、署名ノンス(signonce)を知らず、かつ秘密関数fも知らず、暗号化されたノンス(esignonce)しか知らないからである。合意された検証者の一例では、フリーランスの写真家が報道機関(例えばロイター)に文書(例えば写真)を送信する時に、報道機関は、合意された検証者になり、文書の信憑性を(写真家によって報道機関に送信される秘密関数を使用して)検証する。
【0028】
[0034]
図3は、本開示の1つの実装による、署名者のプライバシーを保護しながら、全ての署名者からの署名を検証することができるように文書(すなわちdata)に署名するための方法300のフロー図である。
図3に示す実装では、ステップ310において、擬似乱数値を生成する秘密関数を用いて、署名ノンス(signonce)を生成する(すなわちsignonce=f(data))。ステップ320において、暗号化プロセスの前に署名者によって容易に入手可能であり取得される検証者の公開鍵で署名ノンス(signonce)を暗号化することによって、暗号化された署名ノンスを生成する(すなわち次式の通りである)。
次に、ステップ330において、署名者の秘密鍵を使用して、署名ノンスと連結されるデータに署名することによって、署名(signa)を計算する(すなわち次式の通りである)。
次に、ステップ340において、データ(data)と、暗号化された署名ノンス(esignonce)と、署名(signa)とを配信する。
【0029】
[0035]
図4は、本開示の1つの実装による、ユニバーサル検証者によって、システムに参加する全ての署名者からの署名を検証するための方法400のフロー図である。方法400は、方法300によって生成される文書(data)の署名を検証するステップを含む。
図4に示す実装では、ステップ410において、ユニバーサル検証者によって、その検証者秘密鍵(K
uverpri)を用いて、暗号化された署名ノンス(esignonce)を復号して、復号された署名ノンスを得る(すなわち次式の通りである)。
次に、ステップ420において、ユニバーサル検証者によって、復号された署名ノンス
と連結されるデータ(data)を(署名者の公開鍵(K
signerpub)を使用して)検証して、そのデータ
が署名(signa)と一致するかどうかを判定する(すなわち次式の通りである)。
【0030】
[0036]
図5は、本開示の1つの実装による、合意された検証者によって文書(data)の署名を検証するための方法500のフロー図である。この実装では、署名者は、帯域外で(すなわち、他のパラメータ(data、esignonce、及びsigna)の配信チャネルとは異なるチャネルを通じて)セキュアに、合意された検証者に秘密関数(f)を1回のみ提供する。実際には、署名者は、合意された検証者に、既知の関数への秘密鍵(secret key)を提供する。次に、署名者は、ステップ340のように、皆に他のパラメータを配信する。
【0031】
[0037]
図5に示す実装では、ステップ510において、合意された検証者によって、提供された秘密関数(f)を使用して、署名ノンス(signonce)を計算する(すなわち次式の通りである)。
次に、ステップ520において、合意された検証者によって、計算された署名ノンス(signonce)と連結されるデータ(data)を(署名者の公開鍵(K
signerpub)を使用して)検証して、そのデータ
が署名(signa)と一致するかどうかを判定する(すなわち次式の通りである)。
【0032】
[0038]
図5に示す実装では、合意された検証者は、署名者によって発行される全ての文書の署名をチェックすることができる。一方で、攻撃者は、署名者公開鍵(K
signerpub)で署名を検証することができない。というのは、攻撃者は、署名ノンス(signonce)を知らず、暗号化されたノンス(esignonce)しか知らないからである。
【0033】
[0039] RSA-2048暗号システムが使用される1つの例示的な実装では、署名者は、署名者秘密鍵及び署名者公開鍵を生成する。次に、認証局が、署名者公開鍵のための署名されたX509署名証明書を生成する。署名者は、この証明書を公表する。したがって、生の公開鍵ではなく署名された証明書を使用することは、セキュリティの点でベストプラクティスである。更に、ユニバーサル検証者は、検証者秘密鍵及び検証者公開鍵を生成する。認証局は、検証者公開鍵のための署名されたX509暗号化証明書を生成する。次に、ユニバーサル検証者は、この証明書を公表する。認証局は、その公開ルートキーを公表する。
【0034】
[0040] 1つの実装では、署名者は、256ビットの乱数である署名者の秘密鍵(secret key)(KS
signer)を生成する。署名プロセスは以下の通りである。すなわち、(1)署名者は、SHA256を使用して、データのハッシュ(h)を計算する(h=SHA256(data))。(2)署名者は、また、HMAC-SHA256を使用して、署名者の秘密鍵(secret key)を用いてハッシュを処理することによって、署名ノンス(signonce)を生成する(すなわち、秘密鍵(secret key)(KS
signer)プラス関数HMAC-SHA256は秘密関数を構成するが、署名者はKS
signerをセキュアに配信しさえすればよい)。(3)署名者は、検証者の公開鍵(K
uverpub)で署名ノンスを暗号化することによって、暗号化された署名ノンス(esignonce)を生成する。(4)次に、署名者は、署名者の秘密鍵(K
signerpri)を用いて、連結されたハッシュ(h)及び署名ノンス(signonce)に署名することによって、署名(signa)を計算する。これは、次式として表される。
(5)署名者は、データ(data)と、暗号化された署名ノンス(esignonce)と、署名(signa)とを配信する。
【0035】
[0041] 署名を検証するために、1つの実装では、ユニバーサル検証者は、署名者の証明書がまだ有効であることを検証する。有効ではない場合、ユニバーサル検証者は、進行することができるが、証明書が満了又は失効したことを署名者に通知する。システムの応答は、システムの決定に応じて異なることができる。例えば、システムは、満了又は失効日の前に行われる文書の署名のみを検証することができる。その場合、署名された文書に、署名日のタイムスタンプを追加することができる。ユニバーサル検証者は、検証者の秘密鍵(K
uverpri)を用いて、暗号化された署名ノンス(esignonce)を復号して、復号された署名ノンス
を得る。
次に、ユニバーサル検証者は、SHA256を使用して、データのハッシュ(h)を計算する。次に、ユニバーサル検証者は、署名者の公開鍵(K
signerpub)を使用して、ハッシュ(h)及び復号された署名ノンス
の署名が署名(signa)と一致することを検証する。
【0036】
[0042] 別の実装では、署名者は、セキュアに(但し「帯域外」で)、合意された検証者に署名者の秘密鍵(secret key)(KS
signer)を提供する。署名を検証するために、(1)合意された検証者は、提供された署名者の秘密鍵(secret key)(KS
signer)を使用して、署名ノンス(signonce)を計算する。これは、次式として表される。
(2)合意された検証者は、連結されたハッシュ及び計算された署名ノンスの署名が署名(signa)と一致することを検証する(すなわち次式の通りである)。
【0037】
[0043]
図6Aは、本開示の実装による、コンピュータシステム600及びユーザ602の図である。ユーザ602は、コンピュータシステム600を使用して、
図3~
図5の方法300、400、500に関して図示及び説明されるような文書検証アプリケーション690を実装する。
【0038】
[0044] コンピュータシステム600は、
図6Bの文書検証アプリケーション690を記憶して実行する。更に、コンピュータシステム600は、ソフトウェアプログラム604と通信することができる。ソフトウェアプログラム604は、文書検証アプリケーション690のためのソフトウェアコードを含むことができる。ソフトウェアプログラム604は、以下で更に説明するように、CD、DVD又はストレージドライブなどの外部媒体にロードすることができる。
【0039】
[0045] 更に、コンピュータシステム600は、ネットワーク680に接続することができる。ネットワーク680は、様々な異なるアーキテクチャ、例えば、クライアント-サーバアーキテクチャ、ピアツーピアネットワークアーキテクチャ、又は他のタイプのアーキテクチャにおいて接続することができる。例えば、ネットワーク680は、文書検証アプリケーション690内で使用されるエンジン及びデータを協調させるサーバ685(例えば、データソースに位置するサーバのグループ)と通信することができる。また、ネットワークは、異なるタイプのネットワークとすることができる。例えば、ネットワーク680は、インターネット、ローカルエリアネットワーク又はローカルエリアネットワークの任意の変形、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、イントラネット又はエクストラネット、又は無線ネットワークとすることができる。
【0040】
[0046]
図6Bは、本開示の実装による、文書検証アプリケーション690をホストするコンピュータシステム600を示す機能ブロック図である。コントローラ610はプログラマブルプロセッサであり、コンピュータシステム600及びそのコンポーネントの動作を制御する。コントローラ610は、メモリ620又は内蔵コントローラメモリ(図示せず)から(例えば、コンピュータプログラムの形で)命令をロードして、これらの命令を実行してシステムを制御する。その実行において、コントローラ610は、文書検証アプリケーション690にソフトウェアシステムを提供して、例えば、文書検証アプリケーション690内のエンジン及びインターフェイスの作成及び構成を可能にする。代替的に、このアプリケーションは、コントローラ610又はコンピュータシステム600において別個のハードウェアコンポーネントとして実装することができる。
【0041】
[0047] メモリ620は、コンピュータシステム600の他のコンポーネントによって使用するためにデータを一時的に記憶する。1つの実装では、メモリ620はRAMとして実装される。1つの実装では、メモリ620は、また、フラッシュメモリ及び/又はROMなどの長期又は永久メモリを含む。
【0042】
[0048] ストレージ630は、コンピュータシステム600の他のコンポーネントによって使用するために、データを一時的に又は長期間にわたって記憶する。例えば、ストレージ630は、文書検証アプリケーション690によって使用されるデータを記憶する。1つの実装では、ストレージ630は、ハードディスクドライブである。
【0043】
[0049] メディアデバイス640は、リムーバブルメディアを受け入れて、挿入されたメディアに対してデータの読み出し及び/又は書き込みを行う。1つの実装では、例えば、メディアデバイス640は、光ディスクドライブである。
【0044】
[0050] ユーザインターフェイス650は、コンピュータシステム600のユーザからユーザ入力を受け取ってユーザ602に情報を提示するためのコンポーネントを含む。1つの実装では、ユーザインターフェイス650は、キーボード、マウス、オーディオスピーカ、及びディスプレイを含む。コントローラ610は、ユーザ602からの入力を使用して、コンピュータシステム600の動作を調整する。
【0045】
[0051] I/Oインターフェイス660は、1又は2以上のI/Oポートを含み、外部記憶又は補足装置(例えば、プリンタ又はPDA)などの対応するI/Oデバイスに接続する。1つの実装では、I/Oインターフェイス660のポートは、USBポート、PCMCIAポート、シリアルポート、及び/又はパラレルポートなどのポートを含む。別の実装では、I/Oインターフェイス660は、外部装置と無線で通信するための無線インターフェイスを含む。
【0046】
[0052] ネットワークインターフェイス670は、イーサネット接続をサポートするRJ-45又は「Wi-Fi」インターフェイス(802.11を含むが、これに限定されるわけではない)などの有線及び/又は無線ネットワーク接続を含む。
【0047】
[0053] コンピュータシステム600は、コンピュータシステムに典型的な追加のハードウェア及びソフトウェア(例えば、電力、冷却、オペレーティングシステム)を含むが、これらのコンポーネントは、簡略化のために、
図6Bに具体的に示されていない。他の実装では、コンピュータシステムの異なる構成を使用することができる(例えば、異なるバス又はストレージ構成又はマルチプロセッサ構成)。
【0048】
[0054] 開示した実装についての本明細書の説明は、当業者が本開示を実施又は利用できるように行ったものである。当業者には、これらの実装の多数の修正が容易に明らかになると思われ、また本明細書で定義した原理は、本開示の趣旨又は範囲から逸脱することなく他の実装にも適用することができる。したがって、本開示は、本明細書に示す実装に限定されることを意図するものではなく、本明細書で開示した原理及び新規の特徴と一致する最も広い範囲が与えられるべきである。
【0049】
[0055] 上記の各実施例の全ての特徴が、本開示の特定の実装において必ずしも必要というわけではない。更に、本明細書で提示した説明及び図面は、本開示が広く意図する主題を表すものであると理解されたい。更に、本開示の範囲は、当業者にとって明らかになり得る他の実装を完全に含み、したがって、本開示の範囲は、添付の特許請求の範囲以外のものによって限定されるものではないと理解されたい。
【符号の説明】
【0050】
100 デジタル署名プロセス
110 文書
120 ハッシュ関数
130 署名する
140 署名
150 デジタル署名された文書
200 検証プロセス
210 ハッシュ関数/抽出
212 署名
300 署名者のプライバシーを保護しながら、全ての署名者からの署名を検証することができるように文書(すなわちdata)に署名するための方法
310 擬似乱数値を生成する秘密関数を用いて署名ノンスを生成
320 検証者の公開鍵で署名ノンスを暗号化することによって、暗号化された署名ノンスを生成
330 署名者の秘密鍵を使用して、署名ノンスと連結される文書に署名することによって、署名を計算
340 文書、暗号化された署名ノンス、及び署名を配信
400 ユニバーサル検証者によって、システムに参加する全ての署名者からの署名を検証するための方法
410 検証者秘密鍵を用いて、暗号化された署名ノンスを復号して、復号された署名ノンスを得る
420 復号された署名ノンスと連結される文書が署名と一致することを(署名者の公開鍵を使用して)検証
500 合意された検証者によって文書(data)の署名を検証するための方法
510 提供された秘密関数(f)を使用して署名ノンスを計算
520 計算された署名ノンスと連結されるデータが署名と一致することを(署名者の公開鍵を使用して)検証
600 コンピュータシステム
602 ユーザ
604 ソフトウェアプログラム
610 コントローラ
620 メモリ
630 ストレージ
640 メディアデバイス
650 ユーザインターフェイス
660 I/Oインターフェイス
670 ネットワークインターフェイス
680 ネットワーク
685 サーバ
690 文書検証アプリケーション