IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特許7665616自動デジタル証明書検証のための方法およびデバイス
<>
  • 特許-自動デジタル証明書検証のための方法およびデバイス 図1
  • 特許-自動デジタル証明書検証のための方法およびデバイス 図2
  • 特許-自動デジタル証明書検証のための方法およびデバイス 図3
  • 特許-自動デジタル証明書検証のための方法およびデバイス 図4
  • 特許-自動デジタル証明書検証のための方法およびデバイス 図5
  • 特許-自動デジタル証明書検証のための方法およびデバイス 図6
  • 特許-自動デジタル証明書検証のための方法およびデバイス 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-11
(45)【発行日】2025-04-21
(54)【発明の名称】自動デジタル証明書検証のための方法およびデバイス
(51)【国際特許分類】
   H04L 9/32 20060101AFI20250414BHJP
【FI】
H04L9/32 200D
H04L9/32 200F
H04L9/32 200Z
【請求項の数】 14
(21)【出願番号】P 2022530267
(86)(22)【出願日】2020-11-16
(65)【公表番号】
(43)【公表日】2023-01-31
(86)【国際出願番号】 IB2020060767
(87)【国際公開番号】W WO2021105816
(87)【国際公開日】2021-06-03
【審査請求日】2023-10-19
(31)【優先権主張番号】1917131.3
(32)【優先日】2019-11-25
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ペティット,ミカエラ
(72)【発明者】
【氏名】ジャーン,ウエイ
(72)【発明者】
【氏名】ヴォーン,オーウェン
(72)【発明者】
【氏名】ライト,クレイグ スティーヴン
【審査官】青木 重徳
(56)【参考文献】
【文献】米国特許出願公開第2017/0330180(US,A1)
【文献】国際公開第2019/023470(WO,A1)
【文献】国際公開第2018/234922(WO,A1)
【文献】中国特許出願公開第110086624(CN,A)
【文献】淵田 康之,特集:イノベーションと金融 ブロックチェーンと金融取引の革新,野村資本市場クォータリー,日本,株式会社野村資本市場研究所,2015年11月01日,第19巻第2号(通巻74号),pp.11-35
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
第1のノードに関連付けられた証明書を妥当性確認するコンピュータ実装方法であって、
前記第1のノードからトランザクションテンプレートを受信することと、ここで、前記トランザクションテンプレートは、証明トランザクション出力を参照し、証明トランザクション鍵によって署名された第1の入力を含み、
証明トランザクションを取得し、前記証明トランザクションが前記第1のノードに関連付けられた前記証明書を含むことおよび前記証明トランザクションが認証局鍵によって署名されていることを決定することと、ここで、取得することは、一連のリンクされたトランザクションにおける最後のトランザクションを、前記最後のトランザクションが前記証明トランザクション出力を含むことに基づいて識別することと、前記証明トランザクションを識別するために前記一連のリンクされたトランザクションを遡ることとを含み、
ブロックチェーンネットワーク上で前記トランザクションテンプレートを伝搬することと
を含み、ここで、伝搬される前記トランザクションテンプレートは、リソースを出力アドレスに転送する第2の入力を含み、
それによって、前記トランザクションテンプレートは、前記証明トランザクション出力が未使用トランザクション出力セット内に含まれる場合、前記ブロックチェーンネットワーク上のノードによって妥当性確認される、
方法。
【請求項2】
前記トランザクションテンプレートは、前記第1のノードに関連付けられた第1の公開鍵からの入力を含み、前記証明書は前記第1の公開鍵を含む、請求項1に記載の方法。
【請求項3】
伝搬することは、伝搬の前に、第2のノードに関連付けられた第2の公開鍵への出力を前記トランザクションテンプレートに追加することを含む、請求項2に記載の方法。
【請求項4】
前記トランザクションテンプレートは、前記第1のノードに関連付けられた第1の公開鍵への出力を含み、前記証明書は前記第1の公開鍵を含む、請求項1に記載の方法。
【請求項5】
伝搬することは、伝搬の前に、第2のノードに関連付けられた第2の公開鍵からの入力を前記トランザクションテンプレートに追加することを含む、請求項4に記載の方法。
【請求項6】
前記証明トランザクション出力は、前記証明トランザクションにおけるpay-to-public-key出力を含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記証明トランザクション出力は、前記証明トランザクションにおける複数のpay-to-public-key出力のうちの1つであり、前記証明トランザクションにおける前記pay-to-public-key出力の各々は、異なるそれぞれの公開鍵を伴う、請求項6に記載の方法。
【請求項8】
取得することは、前記証明トランザクション出力が、許可された署名者が前記認証局鍵を含むマルチシグネチャ出力であることを検証することをさらに含む、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記未使用トランザクション出力セットは、さらなるトランザクションへの入力としてまだ利用されていないすべてのトランザクション出力を含み、前記未使用トランザクション出力セットは前記ブロックチェーンネットワークによって維持される、請求項1からのいずれか一項に記載の方法。
【請求項10】
前記証明トランザクション出力は、トランザクション識別子を有するトランザクション内にあり、前記トランザクションテンプレートにおける第1の入力は前記トランザクション識別子を参照し、前記証明トランザクション鍵は、前記トランザクション識別子およびインデックスに関連付けられた秘密鍵である、請求項1からのいずれか一項に記載の方法。
【請求項11】
取得することは、前記証明トランザクションの要求を前記ブロックチェーンネットワーク内のノードに送信することと、前記証明トランザクションを含む応答を受信することとを含む、請求項1から10のいずれか一項に記載の方法。
【請求項12】
取得することは、前記第1のノードから、前記証明トランザクションのコピーおよび前記証明トランザクションに関連付けられたマークルパスを受信することを含み、前記方法は、前記証明トランザクションの前記コピー、前記マークルパス、およびブロックチェーンのブロックヘッダのセットに基づいて、前記証明トランザクションが前記ブロックチェーンに記録されていることを検証することをさらに含む、請求項1から10のいずれか一項に記載の方法。
【請求項13】
第1のノードに関連付けられた証明書を妥当性確認するためのコンピューティングデバイスであって、
1つまたは複数のプロセッサと、
メモリと、
前記1つまたは複数のプロセッサによって実行されると、前記プロセッサに、請求項1から12のいずれか一項に記載の方法を実行させる、前記メモリに記憶されたコンピュータ実行可能命令と
を備えるコンピューティングデバイス。
【請求項14】
第1のノードに関連付けられた証明書を妥当性確認するためのプロセッサ実行可能命令を記憶するコンピュータ可読媒体であって、前記プロセッサ実行可能命令は、1つまたは複数のプロセッサによって実行されると、前記プロセッサに、請求項1から12のいずれか一項に記載の方法を実行させる命令を含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンネットワークに関し、特に、デジタル証明書検証を容易にするためのブロックチェーンの使用に関する。
【背景技術】
【0002】
公開鍵インフラストラクチャでは、コンピューティングデバイスは、安全な通信、デジタル署名、否認防止、および他の機能を容易にするために、公開鍵-秘密鍵ペアを有し得る。公開鍵インフラストラクチャの一部として、コンピューティングデバイスは、その公開鍵を認証局に登録し得、認証局は、公開鍵の所有権および認可を確認するデジタル証明書をコンピューティングデバイスに提供する。
【0003】
認証局の使用に関する問題は、一旦デジタル証明書が発行されると、その指定の有効期限まで有効なままになることである。しかしながら、公開鍵は、危険にさらされる可能性があり、証明の失効が必要である。この問題に対処するために、認証局は、どのデジタル証明書が失効したとみなされるべきかを詳述した「失効リスト」を維持し、これらのリストを定期的に更新して公開する。公開鍵を妥当性確認することを望むエンティティは、デジタル証明書に依拠することができるが、デジタル証明書が認証局によって無効にされているかどうかを確認するために、対応する証明書失効リストを取得して検討しなければならない。このシステムおよびその固有の遅延は、いくつかのデジタル証明書が失効している可能性があり、その失効が、そのデジタル証明書に依拠ようとするエンティティにまだ公開されていないか、または利用可能でない可能性があることを意味する。
【図面の簡単な説明】
【0004】
ここで、例として、本出願の例示的な実施形態を示す添付の図面を参照する。
図1】公開鍵インフラストラクチャを管理するための例示的なシステムを概略的に示す。
図2】認証局に公開鍵を登録するための1つの例示的な方法をフローチャート形式で示す。
図3】公開鍵を検証する1つの例示的な方法をフローチャート形式で示す。
図4】デジタル証明書を妥当性確認する例示的な方法をフローチャート形式で示す。
図5】デジタル証明書を妥当性確認する別の例示的な方法をフローチャート形式で示す。
図6】リンクされた証明トランザクションを使用してデジタル証明を妥当性確認するさらなる例示的な方法をフローチャート形式で示す。
図7】説明される方法のうちの1つの少なくとも一部を実装し得るノードの簡略化された例をブロック図形式で示す。
【0005】
図面において、同様の要素および特徴を示すために同様の参照番号が使用される。
【発明を実施するための形態】
【0006】
一態様では、ブロックチェーンネットワークを使用して公開鍵インフラストラクチャを管理するコンピュータ実装方法が提供され得る。この方法は、証明トランザクションを作成することによって、第1の公開鍵を有する第1のエンティティに対するデジタル証明書を生成することと、ここで、証明トランザクションは、認証局からのデジタル署名と、第2の公開鍵に基づくアドレスへの第1の出力と、第1の公開鍵を含む情報フィールドを有する第2の出力とを含み、証明トランザクションのハッシュから証明トランザクション識別子を決定することと、ブロックチェーンネットワーク上で証明トランザクションを伝搬することとを含み得る。デジタル証明書は、第1の公開鍵および証明トランザクション識別子を含む。
【0007】
いくつかの実装形態では、第2の出力は、少なくとも第1の公開鍵を含むOP_RETURNフィールドを含む。いくつかの実装形態では、第1の出力は、第2の公開鍵のハッシュとして取得されたアドレスを参照するpay-to-public-key-hash(P2PKH)動作を含む。いくつかの実装形態では、認証局は、第2の公開鍵に対応する第2の秘密鍵を保持する。
【0008】
いくつかの実装形態では、方法は、デジタル証明書を検証することをさらに含み得る。デジタル証明書を検証することは、デジタル証明書内の証明トランザクション識別子に基づいてブロックチェーンから証明トランザクションのコピーを取得することと、第1の出力が未使用トランザクション出力であると決定することと、証明トランザクション内の第2の出力に含まれる第1の公開鍵がデジタル証明書内の公開鍵と一致すると決定することとを含み得る。いくつかのそのような実装形態では、第1の出力が未使用トランザクション出力であると決定することは、第1の出力がブロックチェーンネットワークの未使用トランザクション出力プールに存在すると決定することを含む。いくつかのそのような実装形態では、証明トランザクションへの入力は認証局公開鍵をさらに含み得、デジタル証明書を検証することは、認証局公開鍵に基づいて証明トランザクションが認証局によって署名されていることを決定することをさらに含み得る。
【0009】
いくつかの実装形態では、方法は、証明トランザクションの第1の出力を入力として含む失効トランザクションを生成することと、ブロックチェーンネットワーク上で失効トランザクションを伝搬させることとによってデジタル証明書を失効させることをさらに含み得る。
【0010】
いくつかの実装形態では、方法は、デジタル証明書を新しい公開鍵のための新しいデジタル証明書に置換することをさらに含み得る。置換すること、新しい証明トランザクションを作成することと、ここで、新しい証明トランザクションは、入力として、証明トランザクションの第1の出力と、第3の公開鍵に基づく新しいアドレスへの第1の新しい出力と、情報フィールドを有する第2の新しい出力とを含み、ここで、情報フィールドは新しい公開鍵を含み、新しい証明トランザクションをハッシュすることから新しい証明トランザクション識別子を決定することと、ブロックチェーンネットワーク上で新しい証明トランザクションを伝搬することとを含み得る。新しいデジタル証明書は、新しい公開鍵および新しい証明トランザクション識別子を含み得る。
【0011】
いくつかの実装形態では、情報フィールドはOP_RETURN出力である。
【0012】
いくつかの実装形態では、証明トランザクションは、認証局公開鍵のハッシュから取得された未使用トランザクションアウトポイントアドレスを参照する入力を含み、証明トランザクションは、認証局公開およびデジタル署名を含む未使用トランザクションアウトポイントアドレスのためのロック解除スクリプトを含み、デジタル署名は、認証局公開鍵に対応する秘密鍵に基づいて生成される。
【0013】
いくつかの実装形態では、第1の出力は、2つ以上の秘密鍵のいずれか1つが第1の出力を利用することを可能にするmulti-sigロックスクリプトを含む。
【0014】
さらなる態様では、本出願は、ブロックチェーンネットワークを使用してデジタル証明書を検証するコンピュータ実装方法を説明する。デジタル証明書は、第1の公開鍵および証明トランザクション識別子を含む。方法は、第1のエンティティからデジタル証明書を受信することと、デジタル証明書内の証明トランザクション識別子に基づいてブロックチェーンから証明トランザクションのコピーを取得することとを含み得、証明トランザクションは、認証局からのデジタル署名と、第2の公開鍵に基づくアドレスへの第1の出力と、情報フィールドを有する第2の出力とを含む。方法は、情報フィールドがデジタル証明書内の第1の公開鍵と一致する公開鍵を含むことを決定することと、証明トランザクション内の第1の出力が任意の後続のトランザクションで使用されていないことを決定するために未使用トランザクション出力プールにクエリを行うことと、これらの決定に基づいて、第1の公開鍵が有効であると証明されていることを検証することとをさらに含み得る。
【0015】
さらに別の態様では、本出願は、第1のノードに関連付けられた証明書を妥当性確認するコンピュータ実装方法を説明する。方法は、第1のノードからトランザクションテンプレートを受信することと、ここで、トランザクションテンプレートは、証明トランザクション出力を参照し、証明トランザクション鍵によって署名された第1の入力を含み、証明トランザクションのコピーを取得し、証明トランザクションが第1のノードに関連付けられた証明書を含むことおよび証明トランザクションが認証局鍵によって署名されていることを決定することと、ブロックチェーンネットワーク上でトランザクションテンプレートを伝搬することとを含み得、ここで、伝搬されるトランザクションテンプレートは、リソースを出力アドレスに転送する第2の入力を含む。トランザクションテンプレートは、証明トランザクション出力が未使用トランザクション出力セット内に含まれる場合、ブロックチェーンネットワーク上のノードによって妥当性確認される。
【0016】
いくつかの実装形態では、トランザクションテンプレートは、第1のノードに関連付けられた第1の公開鍵からの入力を含み、証明書は第1の公開鍵を含む。場合によっては、伝搬することは、伝搬の前に、第2のノードに関連付けられた第2の公開鍵への出力をトランザクションテンプレートに追加することを含む。
【0017】
いくつかの実装形態では、トランザクションテンプレートは、第1のノードに関連付けられた第1の公開鍵への出力を含み、証明書は第1の公開鍵を含む。場合によっては、伝搬することは、伝搬の前に、第2のノードに関連付けられた第2の公開鍵からの入力をトランザクションテンプレートに追加することを含む。
【0018】
いくつかの実装形態では、証明トランザクション出力は、証明トランザクションにおけるpay-to-public-key出力を含む。場合によっては、証明トランザクション出力は、証明トランザクションにおける複数のpay-to-public-key出力のうちの1つであり、証明トランザクションにおけるpay-to-public-key出力の各々は、異なるそれぞれの公開鍵を伴う。
【0019】
いくつかの実装形態では、取得することは、一連のリンクされたトランザクションにおける最後のトランザクションを、この最後のトランザクションが証明トランザクション出力を含むことに基づいて識別することと、証明トランザクションを識別するために一連のリンクされたトランザクションを遡ることとを含む。場合によっては、取得することは、証明トランザクション出力が、許可された署名者が認証局鍵を含むマルチシグネチャ出力であることを検証することをさらに含む。
【0020】
いくつかの実装形態では、未使用トランザクション出力セットは、さらなるトランザクションへの入力としてまだ利用されていないすべてのトランザクション出力を含み、未使用トランザクション出力セットはブロックチェーンネットワークによって維持される。
【0021】
いくつかの実装形態では、証明トランザクション出力は、トランザクション識別子を有するトランザクション内にあり、トランザクションテンプレートにおける第1の入力はトランザクション識別子を参照し、証明トランザクション鍵は、トランザクション識別子およびインデックスに関連付けられた秘密鍵である。
【0022】
いくつかの実装形態では、取得することは、証明トランザクションの要求をブロックチェーンネットワーク内のノードに送信することと、証明トランザクションを含む応答を受信することとを含む。
【0023】
いくつかの実装形態では、取得することは、第1のノードから、証明トランザクションのコピーおよび証明トランザクションに関連付けられたマークルパスを受信することを含み、方法は、証明トランザクションのコピー、マークルパス、およびブロックチェーンのブロックヘッダのセットに基づいて、証明トランザクションがブロックチェーンに存在することを検証することをさらに含む。
【0024】
別の態様では、ネットワーク内のノードを実装するコンピューティングデバイスが提供され得る。コンピューティングデバイスは、メモリと、1つまたは複数のプロセッサと、実行されると、プロセッサに、本明細書で説明される方法のうちの1つまたは複数を実行させるコンピュータ実行可能命令とを含み得る。
【0025】
さらに別の態様では、ネットワークにおいてノードを動作させるためのプロセッサ実行可能命令を記憶するコンピュータ可読媒体が提供され得、プロセッサ実行可能命令は、1つまたは複数のプロセッサによって実行されると、プロセッサに、本明細書で説明される方法のうちの少なくとも1つを実行させる命令を含む。
【0026】
本開示の他の例示的な実施形態は、図面と併せて以下の詳細な説明を検討することにより、当業者には明らかになるであろう。
【0027】
本出願において、「および/または(and/or)」という用語は、列挙された要素のいずれか1つのみ、任意のサブコンビネーション、または要素のすべてを含むが、必ずしも追加の要素を除外するものではない、列挙された要素のすべての可能な組合せおよびサブコンビネーションを網羅することを意図している。
【0028】
本出願では、「…または…のうちの少なくとも1つ(at least one of… or…)」という表現は、列挙された要素のいずれか1つのみ、任意のサブコンビネーション、または要素のすべてを含むが、必ずしも任意の追加の要素を除外することはなく、また必ずしも要素のすべてを必要とすることもない、列挙された要素いずれか1つまたは複数を網羅することを意図している。
【0029】
本出願は、ハッシングまたはハッシュ関数に言及し、これは、データまたは「メッセージ」の任意のセットに適用されると、一意の固定長の英数字文字列を決定論的に生成するいくつかの暗号ハッシュ関数のいずれか1つを含むことが意図される。ハッシュ関数の結果は、ハッシュ値、フィンガープリント、ハッシュ結果などと呼ばれ得る。例としては、SHA-2、SHA-3、およびBLAKE2が挙げられるが、これらに限定されない。
【0030】
本明細書では、「ブロックチェーン」という用語は、電子的な、コンピュータベースの分散型台帳のすべての形態を含むものと理解される。これらには、コンセンサスベースのブロックチェーンおよびトランザクションチェーン技術、許可されたおよび許可されていない台帳、共有台帳、ならびにそれらの変形が含まれる。ブロックチェーン技術の最も広く知られているアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装も提案され開発されてきた。便宜上および例示のために、本明細書では、ビットコインSVプロトコルによって例示されるようなビットコインに言及し得るが、本発明はビットコインブロックチェーンとの使用に限定されず、代替的なブロックチェーン実装およびプロトコルが本発明の範囲内に含まれることに留意されたい。
【0031】
ブロックチェーンは、コンピュータベースの非集中型分散システムを使用して実装されるピアツーピア電子台帳である。ブロックチェーンは、ブロックから構成され、ブロックは、トランザクションから構成される。各トランザクションは、他の可能な情報の中でも、ブロックチェーンシステムの参加者間でのデジタル資産の制御の移転をエンコードするデータ構造であり、少なくとも1つの入力および少なくとも1つの出力を含む。各ブロックヘッダは、例えばマークルルートの形態でブロックの内容の要約を含み、各ブロックヘッダは前のブロックヘッダのハッシュを含むので、ブロックが互いに連鎖して、ブロックチェーンの開始以来そのブロックチェーンに書き込まれたすべてのトランザクションの永続的で変更不可能な記録を作成する。トランザクションは、それらの入力および出力に埋め込まれたスクリプトとして知られる小さなプログラムを含み、それは、トランザクションの出力がどのようにおよび誰によってアクセスされ得るかを指定する。ビットコインプラットフォーム上で、これらのスクリプトは、スタックベースのスクリプト言語を使用して書かれる。
【0032】
ブロックチェーンは、ノードのネットワーク上で実装される。各ノードは、ネットワーク接続性を有し、適用可能なブロックチェーンプロトコルを実行するソフトウェアを実行するコンピューティングデバイスである。ノードはトランザクションを妥当性確認し、それらをネットワーク内の他のノードに伝搬する。「マイニングノード」または「マイナー」と称される特殊化されたネットワークノードは、未確認トランザクション、すなわち保留中のトランザクションのセットをブロックに収集し、そのブロックを「マイニング」しようとする。マイニングは、これらの例では、ネットワーク内の任意の他のマイナーがそれぞれのブロックについてのプルーフオブワークを解決するのに成功する前に、プルーフオブワーク(POW)を解決することを指す。ビットコインの例では、POWは、結果が難易度パラメータによって設定された閾値を下回るまで、ノンスを含むブロックヘッダをハッシュすることを伴う。結果が閾値を下回るまで、またはマイナーが別のマイナーが成功したという通知を受信するまで、ノンスが繰り返し増分され、ハッシングが繰り返される。マイニングプロセスの変形例は、当業者によく知られている。
【0033】
トランザクションを妥当性確認するときにチェックされる様々なものの中、ノードは、トランザクションへの入力が有効であるかどうかを決定する。特に、ノードは、ロック解除スクリプトが真と評価されるかどうかを評価し、入力が先のトランザクションからの「未使用トランザクション出力」(UTXO)を参照するかどうかを決定する。いくつかのノードは、参照されたトランザクション出力がUTXO内にあるか否かを高速に決定できるように、UTXOの実行リストまたはプールを維持し得る。UTXOのリストまたはプールは、「未使用トランザクション出力セット」と称され得る。ブロックチェーンネットワークは、二重支出攻撃を防止するために、未使用トランザクション出力セットを更新し維持するように構成される。トランザクションは、その固有のトランザクション識別子TxIDによって識別され得、TxIDは、いくつかの実装形態では、トランザクションのハッシュである。いくつかのトランザクションは、2つ以上の出力を有し得、そのため、一意のトランザクション出力(すなわち、アウトポイント)は、TxIDおよびインデックスによって識別され得、インデックスは、トランザクションからの出力の順序付けられたセット内の出力のうちの1つを指す。トランザクション出力がUTXOプールまたはセットに存在する場合、そのトランザクションの出力は「未使用」であり、入力として機能するために利用可能である。
【0034】
トランザクションアウトポイントのためのロック解除スクリプトは、実行されるためにはその出力に対する「制御」がどのように証明されるべきかを定義する。多くの場合、トランザクション出力に関連付けられたアドレスは公開鍵のハッシュである。その出力に対する制御を証明するために、ロック解除スクリプトは、多くの場合、公開鍵と、対応する秘密鍵を使用して生成されたデジタル署名とを必要とする。このようにして、秘密鍵を制御するノードは、任意の後続の入力においてトランザクション出力がいつどのように使用されるかを制御することができる。以下でさらに説明するように、これは、特定の公開鍵に対応するトランザクション入力が、対応する秘密鍵を使用して生成されたデジタル署名を含むのであれば、その特定の公開鍵に関連付けられたエンティティが、トランザクションコンテンツに効果的に署名または証明しているという帰結を有する。
【0035】
公開鍵暗号方式は、オンライン通信においてユビキタスになってきた。多くの事例では、公開鍵が特定のエンティティに関連付けられたものによって所有されるという確実性を提供するためにプロセスおよびポリシーが必要とされる。公開鍵が真正であり、危険にさらされていないことを保証する最も一般的な手法は、公開鍵インフラストラクチャ(PKI)である。PKIは、公開鍵を有効なものとして「認証」するために、信頼できる第三者機関に依拠する。これらのエンティティは、「認証局」(CA)である。CAは、公開鍵と特定の所有者との間の結び付きを確認するデジタル証明書の登録および発行を提供する。公開鍵の保持者は、別のエンティティにその公開鍵およびそのデジタル証明書を提供する。次いで、他のエンティティは、信頼できるCAが、保持者に属するものとして公開鍵にデジタル署名していることを確認することによって、公開鍵の真正性を検証し得る。
【0036】
既存のPKIに関する問題の1つは、例えば、証明書の指定の有効期限より前に秘密鍵が紛失するかまたは開示された場合、公開鍵が危険にさらされることがあるという点である。その理由で、CAは証明書失効リストを維持し得る。公開鍵に関連付けられた証明書に依拠したいと望むエンティティはまた、証明書がCAによって失効されていないことを確認するために、関連する証明書失効リストを探して検討しなければならない。これにより、鍵をオフラインで認証する能力が損なわれ、24時間以上であることが多い、失効と新しい証明書失効リストの発行との間の遅延によるリスクが生じる。
【0037】
本出願の一態様によれば、デジタル証明書の高速かつ安全な妥当性確認、失効、および更新を提供することによって、公開鍵インフラストラクチャを改善するために、ブロックチェーンネットワークが使用され得る。公開鍵は、公開鍵が認証局によって証明されていることおよびその証明が失効していないことを、任意の第三者が迅速かつ容易に検証することができるように、認証局によってブロックチェーン上に記録され得る。以下に説明する方法で公開鍵を記録することによって、認証局は、ほぼ瞬時に証明を失効させることができてもよく、または、古い鍵を失効させながら同じエンティティのための新しい鍵を同時に証明することができてもよい。場合によっては、証明を失効させる能力は、公開鍵の所有者に与えられてもよく、または、場合によっては、他のエンティティの1つまたはグループに与えられてもよい。
【0038】
ここで図1を参照すると、公開鍵インフラストラクチャを管理するための例示的なシステム100が概略的に示されている。この例におけるシステム100は、第1のコンピューティングデバイス102と、第2のコンピューティングデバイス104と、サーバ106とを含む。第1のコンピューティングデバイス102および第2のコンピューティングデバイス104は、サーバ、パーソナルコンピュータ、タブレット、スマートフォン、コネクテッドカー、モノのインターネットデバイス、または任意の他のそのようなデバイスを含む、任意のネットワーク対応コンピューティングデバイスによって実装され得る。サーバ106は、認証局(CA)によって運営され、デジタル証明書の要求を受信して応答するように構成される。CAは、サーバ106によって実装されるものとして示されているが、CA機能は、1つまたは複数のサーバまたは他のコンピューティングデバイスによって実装され得ることが理解されよう。
【0039】
システム100はブロックチェーンネットワーク108をさらに含む。ブロックチェーンネットワーク108は、適用可能なブロックチェーンプロトコルにしたがって動作するノードのネットワークを含む。いくつかの実装形態では、第1のコンピューティングデバイス100、第2のコンピューティングデバイス104、および/またはサーバ106のうちの1つまたは複数は、ブロックチェーンネットワーク108におけるノードであってもよいが、本例では、説明を容易にするために、それらはブロックチェーンネットワーク108とは別個のノードとして示されている。
【0040】
この例示的なシステム100では、「アリス」とラベル付けされた第1のコンピューティングデバイス102は、非対称暗号通信において使用するための公開鍵-秘密鍵ペアを有する。いくつかの暗号シナリオにおいて公開鍵を使用するために、アリスは、公開鍵およびアリスとのその関連性を認証する対応するデジタル証明書を有する必要があり得る。したがって、動作110において、アリスは、登録の要求と共に公開鍵PKをCAに提供する。CAは、公開鍵の所有者としてのアリスのアイデンティティを保証するために、あるレベルの認証に従事し得る。場合によっては、この認証は、動作110において提供されたデータに基づいてサーバ106によって実行される自動オンライン動作であってもよい。場合によっては、この認証はまた、または代替的に、オフライン認証動作を含んでもよい。二要素認証および他のそのような技法が採用されてもよい。
【0041】
CAは、公開鍵PKが証明されるべきであると決定すると、公開鍵PKを含み、CAによって署名されたブロックチェーントランザクション、「証明トランザクション」(CTX)を生成する。その証明トランザクションは、CAによって制御される出力をさらに含む。動作112によって示されるように、トランザクションはブロックチェーンネットワーク108にサブミットされる。次いで、動作114において、CAは、証明トランザクション識別子TxIDCTX_PKAをアリスに提供する。いくつかの実装形態では、アリスは、トランザクション識別子に基づいてブロックチェーンネットワーク108から証明トランザクションのコピーを取得して、それが予想に適合し、公開鍵PKを含むことを確認し得る。
【0042】
トランザクション識別子TxIDCTX_PKAは、公開鍵PKと共に、アリスに対するデジタル証明書を効果的に形成する。この例では「ボブ」とラベル付けされている第2の通信デバイス104との何らかの通信に関連して、アリスは、動作116においてそのデジタル証明書をボブに送信し得る。次いで、ボブは、公開鍵PKを認証し、ブロックチェーンネットワーク108によって維持されるブロックチェーンに基づいて証明が失効されていないことを検証することができる。
【0043】
特に、動作118および120において、ボブは、証明トランザクションのコピーを要求し、受信し得る。証明トランザクションから、ボブは、それがアリスの意図された公開鍵PKを含んでいることおよび信頼できる認証局によって署名されていることを検証し得る。ボブはさらに、動作122および124によって示されるように、CAによって制御されるトランザクション出力が「未使用」のままであるかどうか、すなわちトランザクション出力ポイントがブロックチェーンネットワーク108のUTXOプール130に存在するかどうかについてクエリを行うことによって、証明が失効されていないことを検証することができる。UTXOプール130は、ブロックチェーンネットワーク108のいくつかのノードのいずれか1つによって維持される「未使用」トランザクション出力ポイントのプールである。
【0044】
ここで図2を参照すると、認証局に公開鍵を登録するための1つの例示的な方法200がフローチャート形式で示されている。例示的な方法200は、認可された認証局によって実装され、説明される機能を実行するように適切にプログラムされた1つまたは複数のサーバによって実装され得る。
【0045】
動作202において、認証局は、公開鍵PKの証明の要求をアリスから受信する。認証局は、その適用可能なポリシーにしたがって認証または認可プロトコルを実行し得る。それらのプロトコルは、自動コンピュータ実装動作および/または管理者が容易にする動作を含み得る。特定の認証動作に関わらず、動作204において、アリスの公開鍵を証明するかどうかに関する決定が行われる。証明しない場合、方法200は終了する。証明が許可される場合、動作206において、認証局が証明トランザクションを作成する。上述のように、証明トランザクションは、認証局の公開鍵および認証局からのデジタル署名を含む入力と、認証局によって制御される出力と、公開鍵PKとを含む。具体的な例を挙げると、入力は、有効なロック解除スクリプトにおいて署名を生成するために認証局が秘密鍵を有する何らかの公称値または任意の値のUTXOであり得る。UTXOは、証明トランザクションをマイニングするために支払われるべき任意のトランザクション手数料を相殺するのに十分なデジタル値に関連付けられ得る。
【0046】
証明トランザクションは、認証局によって選択され制御されるCA公開鍵PKCTX_PKAに基づく第1の出力と、例えば非運用情報フィールドにおいて公開鍵PKを含む第2の出力という2つの出力を含み得る。後者の例は、ビットコインにおけるOP_RETURN関数である。OP_RETURNは、事実上、トランザクションがマイニングされた時点でブロックチェーン上に記録するために任意のデータが配置され得る出力である。
【0047】
第1の出力は、例えば、認証局によって選択および制御される公開鍵ハッシュ(例えば、ビットコインアドレス)への転送を指定するP2PKH(pay to public key hash)動作であり得る。
【0048】
トランザクションにおけるそのデジタル署名によって、認証局は、トランザクションへのUTXOの入力を認可し、それによってロック解除スクリプトを満足させるだけでなく、OP_RETURN出力に現れる公開鍵PKを認証局が証明したという検証可能な証拠を提供する。いくつかの実装形態では、アリスからのデジタル署名または他のそのようなデータなど、追加の情報がOP_RETURN出力フィールドに現れ得ることに留意されたい。
【0049】
証明トランザクションが作成されると、認証局は、動作208において、トランザクション識別子TxIDCTX_PKAを見つけるためにトランザクションをハッシュし、動作210によって示されるように、ブロックチェーンネットワーク上でトランザクションを伝搬する。トランザクションを「伝搬する」とは、トランザクションがネットワーク内の実質的にすべてのノードに到達するまで、それをブロックチェーンネットワークのノードにサブミットし、そこで検証してから他のすべてのノードに送信し、次に他のすべてのノードが検証して再送信することを含むことが理解されよう。いくつかの実施形態では、認証局は、それ自体、ブロックチェーンネットワーク内のノードのうちの1つである。
【0050】
動作212において、認証局は、証明トランザクションを含むブロックのマイニング、すなわちトランザクションの「確認」を待ち、次いで、動作214において、トランザクション識別子TxIDCTX_PKAをアリスに送信する。いくつかの実装形態では、認証局は、トランザクションがマイニングされる前に、トランザクション識別子をアリスに提供してもよい。
【0051】
次いで、アリスは、任意の第三者に、アリスの公開鍵PKおよび証明トランザクション識別子TxIDCTX_PKAを含むデジタル証明書を提供することができる。これから、第三者は、アリスの公開鍵がCAによって証明されていることを検証し得る。
【0052】
証明トランザクションの簡略化された例を以下に示す:
【表1】
【0053】
入力のためのロック解除スクリプトは、認証局の公開鍵および認証局によって生成された署名を含むことに留意されたい。アリスの公開鍵PKは、第2の出力としてOP_RETURNフィールドに現れる。第1の出力は、認証局によって制御される任意の公開鍵ハッシュである。
【0054】
ここで図3を参照すると、公開鍵を検証する1つの例示的な方法300が示されている。例示的な方法300において説明される動作は、コンピューティングデバイスが、図2に例示されるプロセスを使用して、証明されていると主張する公開鍵を検証しようと試みることによって実行され得る。例示的なコンピューティングデバイスは、任意のネットワーク対応コンピューティングデバイスを含む。
【0055】
方法300は、動作302において、「アリス」とラベル付けされた第1のコンピューティングデバイス102(図1)などの別のエンティティに対するデジタル証明書を受信することを含む。デジタル証明書は、少なくとも公開鍵PKおよび証明トランザクション識別子TxIDCTX_PKAを含む。証明トランザクション識別子を使用して、動作304において、証明トランザクションがブロックチェーンネットワークから取得される。証明トランザクションは、ブロックチェーンのコピーから、そのコピーがコンピューティングデバイスに対してローカルであるかどうかにかかわらずまたはそれがブロックチェーンネットワーク内のノードによって維持されているかにかかわらず取得され得ることが理解されよう。万が一トランザクションがまだ確認されていない、すなわちまだマイニングされたブロック内にない場合には、トランザクションは未確認トランザクションのメムプールに存在し得るが、多くの実装形態では、認証局は、証明トランザクションがマイニングされた後にのみ、アリスに証明トランザクション識別子を提供し得る。
【0056】
証明トランザクションから、コンピューティングデバイスは、特定のものを検証し得る。特に、動作306において、コンピューティングデバイスは、証明トランザクションが認証局によって署名されていることを検証し得る。コンピューティングデバイスは、コンピューティングデバイスがデジタル署名を妥当性確認することを可能にし得る、認識されたまたは認定された認証局およびそれらのそれぞれの公開鍵のリストを有し得るか、またはそれへのアクセスを有し得る。デジタル署名は、説明したように、証明トランザクションへの入力の一部を形成し得る。証明トランザクションが信頼できるまたは認識された認証局によって署名されていることを確認することによって、コンピューティングデバイスは、証明が正当であることを確認することができる。コンピューティングデバイスは、トランザクションがブロックチェーン上にある場合、マイナーによって確認および検証されることとなるので、入力内のデジタル署名を検証することを必ずしも必要としないことに留意されたい。むしろ、コンピューティングデバイスは、入力において識別された公開鍵が認証局に関連付けられていることを単に検証し得る。
【0057】
コンピューティングデバイスは、動作308によって示されるように、証明トランザクションの出力ポイントのうちの1つが「未使用」のままであること、すなわち、その出力ポイントがUTXOプールで見つかることをさらに検証し得る。この検証動作は、証明が有効のままであり失効していないことを確認する。上述したように、ほとんどの実施形態(代替例については後述する)では、この出力ポイントは認証局によって制御され、これにより、認証局は、鍵が危険にさらされた場合、期限切れの場合、またはほかの理由で有効でなくなった場合に、証明を取り消すことが可能になる。失効または取消しは、認証局に出力ポイントを「使用」させて、出力ポイントをUTXOプールから除去することによって容易に促進される。出力ポイントがUTXOプールに存在することの確認は、例えば、TxID番号と出力インデックスとに基づいてUTXOプールにクエリを行うことによって実行され得る。いくつかの例では、コンピューティングデバイスは、ブロックチェーンネットワークのノードなどの媒介を通して、UTXOプールにクエリを行い得る。
【0058】
動作310において、コンピューティングデバイスは、証明トランザクションの第2の出力における公開鍵PKが、アリスからデジタル証明書の一部として受信された公開鍵PKと一致することを確認する。
【0059】
動作306、308、および310がすべて確認されると、コンピューティングデバイスは、動作312において、アリスから受信したデジタル証明書内の公開鍵PKが有効であると決定する。
【0060】
ブロックチェーンネットワークを使用して公開鍵証明を記録することより、認証局は、出力ポイントを「使用」して動作308における検証が失敗に終わるようにすることで、証明を迅速かつ容易に失効させることができる。したがって、認証局は、証明トランザクションの第1の出力を使用するトランザクションを生成して伝搬することによって、公開鍵の証明を失効させ得る。上述したように、第1の出力は、公称デジタル資産を、第1の出力で指定された公開鍵ハッシュアドレスに転送するP2PKH動作であり得る。その第1の出力に対するロック解除スクリプトは、これらの例では、認証局からのデジタル署名を必要とし得、これは、P2PKH動作で使用されるCA公開鍵PKCTX_PKAに対応する秘密鍵に対する制御を必要とする。
【0061】
場合によっては、認証局は、単に証明を失効させるのではなく、証明された公開鍵を置換/更新するように求められ得る。例えば、秘密鍵が紛失したかまたは危険にさらされた場合、所有者(例えば、アリス)は、認証局が、前に証明された公開鍵を新しい公開鍵PKA_newで更新または置換することを要求し得る。認証局は、実施されているオンラインまたはオフライン認証機構を使用して要求を認証し、更新動作が行われるべきであると決定すると、新しい証明トランザクションCTXnewを作成して、古い証明を失効させるとともに新しい証明を発行する。
【0062】
新しい証明トランザクションは、同じタイプの出力、すなわち、PKCTX_newなどのCAによって選択された新しい公開鍵と、PKA_newを含むOP_RETURNフィールドとを使用するP2PKH動作を特徴とする。しかしながら、入力は、元の証明トランザクションTxIDCTX_PKAからのCA制御出力ポイントを含み得る。その出力を新しい証明トランザクションへの入力として「使用する」ことにより、UXTOプールからその出力ポイントを除去することで失効を達成する。有利には、古い公開鍵証明の失効および新しい公開鍵証明の登録は、単一のトランザクションで行われる。さらに、証明書失効の別個の定期的に発行されるリストが、認証局によって維持され、利用可能にされる必要はない。
【0063】
上述したように、多くの場合、証明トランザクションの第1の出力ポイントは、認証局のみが公開鍵の証明を失効させることができるように、認証局によって制御され得る。失効は、第1の出力ポイントに対応する秘密鍵を使用してその出力ポイントを「使用する」ことに基づく。しかしながら、場合によっては、他のエンティティが証明を失効させることを許可するように証明トランザクションを構造化することが有利であり得る。
【0064】
例えば、いくつかの状況では、公開鍵の所有者、例えばアリスは、自身の公開鍵を失効させる権限を有し得る。この構成では、証明書トランザクションにおける第1の出力ポイントはアリスによって制御され、すなわち、アリスが対応する秘密鍵を有する公開鍵(公開鍵ハッシュ)を参照する。すなわち、第1の出力ポイントに対するロック解除スクリプトは、アリスからのデジタル署名を必要とする。この構成は、オンラインサービスへの登録など、いくつかの公開鍵証明シナリオに有利であり得る。オンラインサービスの一例は、ソーシャルメディアプラットフォーム上のソーシャルメディアアカウントである。プラットフォームは、上述の機構を使用して、プラットフォームで使用するためのユーザの公開鍵を登録することができ、これにより、ユーザは、証明トランザクションを介してバックアップされた自身のデジタル証明書により、信頼できる方式でプラットフォームおよび/またはプラットフォームの他のユーザと対話することができる。次いで、ユーザは、プラットフォームの協力なしにアカウントを終了させるために証明を失効させることができる。
【0065】
別のシナリオでは、2つ以上の出力ポイントが提供されてもよく、そのうちのいずれか1つは、証明を終了させるために「使用済み」であってもよい。そのようなシナリオでは、第三者は、UTXOプールにおける未使用トランザクション出力としてのそれらの存在について、証明トランザクションのそのような出力ポイントの両方(またはすべて)をテストするように構成される。
【0066】
代替的に、複数の当事者のいずれか1つからの失効が促進されるべきである場合、第1の出力は、複数の署名を使用するように構成されてもよく、すなわち、いくつかの署名のいずれか1つが出力を「使用する」ために使用されてもよい。この目的のために、Multi-sigが出力で使用され得る。
【0067】
さらに別のシナリオでは、multi-sigは、少なくとも、閾値数のエンティティが証明の失効に合意することを保証するように構成されてもよい。multi-sigは、出力をロック解除するためにm個の署名のうちのn個を要求するように構成され得、ここでn≦mである。一例として、企業、パートナーシップ、または他のそのような個人の集まりなどの組織の場合、組織に関連付けられた証明された公開鍵は、CEO、COO、CTO、または企業に関与する他の役員もしくは個人などの特定のエンティティのすべてまたは少なくとも閾値数が失効を承認した場合にのみ失効可能であり得る。
【0068】
様々な上述の例示的な方法の上述の動作の一部または全部は、図示されたもの以外の順序で実行されてもよく、および/またはそれらの方法の全体的な動作を変えることなく同時に実行されてもよいことが理解されよう。
【0069】
自動証明検証
上述の方法は、ブロックチェーンネットワークによって保護されたデジタル証明書を発行するための機構を提供する。この機構は、デジタル証明書の有効性の高速な検証と、デジタル証明書のほぼ即時の失効の能力とを可能にする。上述のように、デジタル証明書の有効性を検証するために、証明書の妥当性確認を求めるノードは、証明書トランザクションのアウトポイントがUTXOセット内にあるかどうか、および妥当性確認されているデジタル証明書内の公開鍵が証明書トランザクションのOP_RETURNフィールド内の公開鍵と一致することを確認するためのチェックを行う。
【0070】
説明される方法の1つの潜在的な欠点は、デジタル証明書の検証と、その検証に依拠する任意の後続のトランザクションとの間に時間遅延が存在し得ることである。その間隔中に、デジタル証明書が何らかの理由で失効される可能性がある。さらに、デジタル証明書の検証は、UXTOセットにアクセスしてチェックすることに依拠するが、これは、軽量SPV(simplified payment verification)ノード(例えば、デジタルウォレット)のようないくつかのノードでは困難または不可能であり得る。これは、それらのノードが、それらの検証を行うために第三者ノードに依拠することを必要とし得るため、セキュリティおよび信頼性の懸念を生じさせる。さらに、アウトポイントがUXTOセット内にあることを検証するノードは、ブロックチェーンネットワークへのアクティブアクセスを有するオンラインでなければならず、軽量SPVのような多くのノードは、特定の時間帯にそれを有さない可能性がある。
【0071】
本出願の別の態様によれば、デジタル証明書の妥当性確認は、デジタル証明書が有効である場合にのみトランザクションが前進するように、トランザクションに組み込まれ得る。これにより、軽量SPVおよび同様のノードは、自動デジタル証明書妥当性確認を組み込むトランザクションを生成する際に他のノードと協働することができる。有利なことに、これは、デジタル証明書の妥当性確認と、トランザクションにコミットする際のその妥当性確認への依存との間の時間的なギャップを排除することができる。
【0072】
以下の例のうちのいくつかでは、ノードは、証明トランザクションの形態で認証局ノードによって証明されたその公開鍵を有し得、それは、この例の形態をとり得る:
【表2】
【0073】
上記の例は、ノードAの公開鍵PKを証明する証明トランザクションである。OP_RETURN出力は、公開鍵PKのための証明書を含むことに留意されたい。いくつかの例では、これは単に公開鍵自体であってもよい。場合によっては、それは公開鍵のハッシュであってもよい。場合によっては、OP_RETURN出力に含まれる証明書に、公開鍵と共に追加のデータが含まれてもよい。
【0074】
入力は認証局によって制御されるトランザクションアウトポイントであり、そのロック解除スクリプトは認証局によって署名されることにも留意されたい。出力は、証明トランザクション公開鍵
【数1】
に対するpay-to-public-key-hash(P2PKH)である。公開鍵
【数2】
は、対応する秘密鍵を有する。場合によっては、秘密鍵は、証明トランザクションの作成時に認証局によって生成され得る。認証局は、秘密鍵をノードAと共有し得る。すなわち、ノードAがその公開鍵PKの証明を要求するとき、認証局は、証明トランザクションのトランザクション識別子
【数3】
と、証明トランザクションの使用を可能にする秘密鍵とを返し得る。
【0075】
そのような証明書は、証明トランザクション公開鍵
【数4】
に対応する秘密鍵を使用した署名を含む後続のトランザクションにおいてアウトポイントを使用することによって無効化または失効され得る。この例では、認証局ノードとノードAの両方がこの鍵を所有している。
【0076】
上述したように、証明トランザクションは、デジタル証明書の検証を自動化するために使用され得る。特に、自動化は、UXTOセットのチェックにある。例えば、支払トランザクションのような新しいトランザクションは、証明トランザクションのアウトポイントがUXTOセットに存在することを前提条件として含む。これは、証明書がまだ有効であり失効されていない場合にのみ新しいトランザクションが有効であることを保証する。
【0077】
一般に、その公開鍵を証明するデジタル証明書を有するノード(例えばアリス)は、入力として証明書のアウトポイントを含むトランザクションテンプレートを生成する。入力は、例えば、証明トランザクションのP2PKH出力に対応する秘密鍵を使用して、証明トランザクション鍵で署名される。このトランザクションテンプレートは、トランザクションに参加している別のノード(例えば、ボブ)に提供される。別のノードであるボブは、トランザクションテンプレートへの入力における証明トランザクションのためのTXIDへの参照に基づいて証明トランザクションを取得し、意図された公開鍵PKが実際に証明トランザクションによって証明されていることを検証し、トランザクションテンプレートを完了するあらゆる入力/出力を追加する。次いで、トランザクションテンプレートはブロックチェーンネットワーク上で伝搬され得る。出力がすでに別のトランザクションで使用されている、すなわち、出力がUTXOセットにないために、証明トランザクション鍵によって署名された入力が失敗した場合、トランザクション全体が失敗し、伝搬もマイニングもされない。それがUTXOセット内にあるために、証明トランザクション鍵によって署名された入力が有効である場合、トランザクションは、妥当性確認され、伝搬され、メムプールに入り、最終的にはマイニングされるブロックに入る。
【0078】
一例では、この機構は、受信者のアドレスを検証するために使用され得る。例えば、アリスがボブからデジタル資産または何らかの他の転送を要求する状況では、ボブは、そのようなトランザクションにコミットする前に、アリスのアイデンティティ、例えばアリスの意図する公開鍵が証明されていることを妥当性確認することを望む場合がある。そのような状況では、アリスは、アリスの公開鍵に対する支払いを、その公開鍵に対する証明トランザクションを参照する入力と共に含むトランザクションテンプレートを準備し得る。トランザクションテンプレートを受信すると、ボブは、ブロックチェーンから証明トランザクションを取り出し、それがアリスの公開鍵を証明することを検証し、認証局によってデジタル署名されていることを確認し得る。次いで、ボブは、デジタル資産を転送するトランザクションテンプレートに入力を追加し得、次いで、トランザクションテンプレートがブロックチェーン上で伝搬され得る。アリスのデジタル証明書がまだ有効であれば、すなわち、それが失効していなければ、トランザクションは続行する。このようなトランザクションの例を以下に示す:
【表3】
【0079】
上記の例示的なトランザクションでは、ボブは、
【数5】
からの参照されたアウトポイントが未使用トランザクション出力としてUXTOセット内にない場合、トランザクションが無効として拒否されるという事実に依拠し得る。
【0080】
別の例では、この機構を使用して、例えばKnow Your Customer(KYC)条件を満たすために、送信者のアドレスを検証してもよい。例えば、アリスが資産をボブに転送しており、ボブは、その転送を受け入れる前にアリスのアイデンティティを検証することを望む。この場合、アリスは、デジタル資産を転送し、彼女の公開鍵PKに関連して署名された入力を含むトランザクションテンプレートを準備する。それには、その公開鍵を入力として証明する証明トランザクションも含まれる。トランザクションテンプレートを受信すると、ボブは、証明トランザクションを取得し、それが認証局によって署名されていることを検証し、それがアリスの公開鍵を証明することを検証し得る。そうである場合、ボブは、ボブによって制御される公開鍵アドレスにデジタル資産を転送するための出力を追加することによってトランザクションテンプレートを完了する。そのような例示的なトランザクションは、以下の形態をとり得る:
【表4】
【0081】
2つの上記の詳細な例の各々において、公開鍵の有効性を証明するためにデジタル証明書がトランザクションにおいて使用されるとすぐに、無効になることが理解されよう。すなわち、証明書は一回だけ使用され得、一回使用されると自動的に失効する。これは、検証されたアドレスへのまたは検証されたアドレスからの大きな資産価値の単発の転送のためなどのいくつかの事例に応用され得る。そのようなトランザクションは、自動車の譲渡、不動産取引、株式の売却、または他のそのような高価値転送の場合に使用され得る。しかしながら、より価値の低い日常のトランザクションでは、証明書が使用されるたびに新しい証明書を求めて認証局に戻ることは面倒である可能性がある。したがって、後述するように、複数回使用証明書が構築され得る。
【0082】
まず図4を参照すると、第1のノードに関連付けられた証明書を妥当性確認する1つの例示的な方法400がフローチャート形式で示されている。この方法は、携帯電話、タブレット、パーソナルコンピュータなどのコンピューティングデバイスによって実施され得る。コンピューティングデバイスは、1つまたは複数のプロセッサユニットと、関連するメモリとを含み、メモリは、処理ユニットによって実行されると、処理ユニットに、説明される動作を実行させるコンピュータ実行可能命令を記憶する。場合によっては、コンピュータ実行可能命令は、例えば、ウォレットアプリケーションなどのアプリケーションの形態で記憶されてもよい。
【0083】
方法400は、受信者のアイデンティティを検証するための自動証明書検証の一例を提供する。この例示的なトランザクションでは、ノードAは受信者であり、ノードBは送信者である。ノードは、有線ネットワークおよび/またはワイヤレスネットワーク上で通信し得る。場合によっては、ノードは、近距離通信を使用して、例えばpoint-of-sale端末を介して通信してもよい。方法400は、動作402において、ノードAがトランザクションテンプレートを作成することから開始する。トランザクションテンプレートは、ノードAのアイデンティティを証明する、例えばノードAの公開鍵PKを証明する証明トランザクションからの証明トランザクション出力を参照する入力を含む。証明トランザクション内の出力は、証明トランザクション公開鍵
【数6】
を参照するpay-to-public-key動作である。対応する秘密鍵は、証明トランザクション鍵と称され得る。トランザクションテンプレートへの入力は、署名
【数7】
を生成する証明トランザクション鍵によって署名される。トランザクションテンプレートは、ノードAの公開鍵PKにリソースを転送する出力も含む。
【0084】
動作404によって示されるように、ノードAは、このトランザクションテンプレートをノードBに送信する。トランザクションテンプレートは、ノードBからの入力をまだ含んでおらず、および/または、入力が含まれる場合にはノードBによって署名されていない。
【0085】
トランザクションテンプレートを受信すると、動作406において、ノードBは、トランザクションテンプレートへの入力における証明トランザクションへの参照に基づいて証明トランザクションを識別する。参照は証明トランザクションのトランザクション識別子を含むので、ノードBは、証明トランザクションのコピーを取り出すことができる。ノードBがブロックチェーンのローカルコピーを格納する場合、ノードBは、ローカルコピーでルックアップすることによって証明トランザクションを取得し得る。そうでない場合、ノードBは、トランザクション識別子に基づいて証明トランザクションのコピーについてのクエリまたは要求をブロックチェーンノードに送信し得る。いくつかの事例では、この検証は、証明トランザクションの存在の証明として行われてもよい。すなわち、ノードBに証明トランザクションのコピーおよびマークルプルーフ(マークルパス)が提供されると、ノードBは、ブロックヘッダから、証明トランザクションがブロックチェーンに存在することを検証し得る。SPVノードまたは他の軽量実装は、オフラインであっても、それが利用可能なブロックヘッダのコピーを有し得、これにより、ノードBは、ブロックチェーンネットワークへのライブアクセスを必ずしも必要とすることなく、証明トランザクションの存在および内容を検証することができる。したがって、ノードAは、トランザクションテンプレートと共に、証明トランザクションのコピーおよびそのマークルパスをノードBに提供し得る。
【0086】
ノードBは、証明トランザクションのコピーを有すると、動作408において、証明トランザクションが認証局鍵を使用して認証局によって署名されていることを検証する。また、ノードAの公開鍵PKが証明トランザクションのOP_RETURN出力フィールドに現れることを検証し、それによって、認証局がノードAの公開鍵の真正性を証明していることを確認する。ノードBはさらに、証明トランザクションの構造を妥当性確認し得、特に、トランザクションテンプレートへの入力と一致する、証明トランザクション公開鍵
【数8】
を参照するpay-to-public-key出力を含むことを妥当性確認し得る。
【0087】
これらのチェックが失敗した場合、例えば、ノードAの公開鍵が証明されたものとして検証され得ない場合、または証明トランザクションが予想通りに構造化されていない場合、ノードBがトランザクションを完了しないので、方法400は終了することが理解されよう。しかしながら、証明トランザクションが有効であることをノードBが検証すると仮定すると、動作410において、ノードBは、ノードBによって制御されるアドレスからの入力を追加するようにトランザクションテンプレートを修正する。すなわち、ノードBは、トランザクションテンプレートにリソース入力を追加し、その入力に署名する。これはトランザクションテンプレートを完了し、次いでノードBは、ブロックチェーンネットワーク上でそれを伝搬し得る。代替的に、ノードBは、完了したトランザクションテンプレートをノードAに送信してもよく、ノードAが、ブロックチェーンネットワーク上でそれを伝搬してもよい。
【0088】
いずれの場合も、動作412によって示されるように、2つのうちの1つが行われる。
【数9】
への証明トランザクション出力がUTXOセットに含まれている場合、すなわち、それが未使用出力である場合、トランザクションは、動作414によって示されるように、ブロックチェーンネットワーク内のノードによって妥当性確認され、ネットワークにわたって伝搬され、マイニングされてブロックに含まれることとなる未確認トランザクションのメムプールに追加される。しかしながら、例えば、証明書がすでに使用されているかまたは失効しているために、
【数10】
への証明トランザクション出力がUTXOセットにない場合、動作416によって示されるように、トランザクションは妥当性確認されず、伝搬されず、ブロックチェーンネットワークによって拒否される。このようにして、ノードAとノードBとの間のトランザクションは、トランザクションがブロックチェーンネットワークにコミットされた時点でノードAの証明書が有効である場合にのみ行われる。したがって、証明書の妥当性確認と、トランザクションを入力する際のその妥当性確認への依存との間に時間的なギャップはない。
【0089】
ここで図5を参照すると、デジタル証明書を自動的に妥当性確認する別の例示的な方法500がフローチャート形式で示されている。図4と同様に、図5に示される方法500は、第1のノードであるノードAおよび第2のノードであるノードBを実装するコンピューティングデバイスによって実行され得る。方法500の例では、ノードAからノードBにリソースを転送するためのトランザクションが生成される。ノードBは、リソースの転送を受け入れる前に、例えば、「know-your-customer」または不正防止記録保持要件の一部として、ノードAのアイデンティティを妥当性確認ようとする。
【0090】
ノードAは、動作502においてトランザクションテンプレートを作成し、ノードAの公開鍵を証明する証明トランザクションからの証明トランザクション出力を参照する入力を含める。入力は、証明トランザクション出力において参照される証明トランザクション公開鍵に対応する証明トランザクション鍵を使用して、ノードAによって署名される。ノードAはまた、その証明された公開鍵PKからリソースを転送する入力を追加する。動作504において、ノードAは、トランザクションテンプレートをノードBに送信する。
【0091】
動作506において、ノードBは、ローカルに格納されているかリモートに格納されているかに関わらず、証明トランザクションのコピーをブロックチェーンから取り出す。証明トランザクションは、トランザクションテンプレートへの入力において参照されるトランザクション識別子によって識別される。
【0092】
動作508において、ノードBは、証明トランザクションが認証局鍵を使用して認証局によって署名されていることを検証する。また、ノードAの公開鍵PKが証明トランザクションのOP_RETURN出力フィールドに現れることを検証し、それによって、認証局がノードAの公開鍵の真正性を証明していることを確認する。ノードBはさらに、証明トランザクションの構造を妥当性確認し得、特に、トランザクションテンプレートへの入力と一致する、証明トランザクション公開鍵
【数11】
を参照するpay-to-public-key出力を含むことを妥当性確認し得る。
【0093】
これらのチェックが失敗した場合、例えば、ノードAの公開鍵が証明されたものとして検証され得ない場合、または証明トランザクションが予想通りに構造化されていない場合、ノードBがトランザクションを完了しないので、方法500は終了することが理解されよう。しかしながら、証明トランザクションが有効であることをノードBが検証すると仮定すると、動作510において、ノードBは、ノードBによって制御されるアドレスへの出力を追加するようにトランザクションテンプレートを修正し得る。場合によっては、ノードAは、リソースをノードBに転送するための出力をすでに追加している場合があり、その場合、ノードBは、動作510において、出力が正しいことを検証するだけでよい。これはトランザクションテンプレートを完了し、次いでノードBは、ブロックチェーンネットワーク上でそれを伝搬し得る。代替的に、ノードBは、完了したトランザクションテンプレートをノードAに送信してもよく、ノードAが、ブロックチェーンネットワーク上でそれを伝搬してもよい。
【0094】
トランザクションがブロックチェーンネットワークのノードに送信された後、動作512によって示されるように、2つのうちの1つが行われる。
【数12】
への証明トランザクション出力がUTXOセットに含まれている場合、すなわち、それが未使用出力である場合、トランザクションは、動作514によって示されるように、ブロックチェーンネットワーク内のノードによって妥当性確認され、ネットワークにわたって伝搬され、マイニングされてブロックに含まれることとなる未確認トランザクションのメムプールに追加される。しかしながら、例えば、証明書がすでに使用されているかまたは失効しているために、
【数13】
への証明トランザクション出力がUTXOセットにない場合、動作516によって示されるように、トランザクションは妥当性確認されず、伝搬されず、ブロックチェーンネットワークによって拒否される。このようにして、ノードAとノードBとの間のトランザクションは、トランザクションがブロックチェーンネットワークにコミットされた時点でノードAの証明書が有効である場合にのみ行われる。したがって、証明書の妥当性確認と、トランザクションを入力する際のその妥当性確認への依存との間に時間的なギャップはない。
【0095】
複数回使用証明書
先に述べたように、上述した例では、デジタル証明書は、公開鍵の有効性を証明するためにトランザクションで使用されると、証明トランザクション出力が「使用済み」となるので無効になると仮定した。すなわち、証明書は一回だけ使用され得、使用されると自動的に失効される。いくつかの状況では、ノードが各使用後に認証局から未使用の証明書を取得することを必要とせずに、複数回使用され得る証明書を有することが望ましい場合がある。
【0096】
一例では、複数回使用証明書は、証明書トランザクションに複数の証明トランザクション出力を提供することによって作成され得る。証明トランザクションは、m個の可能な使用を提供するように構造化され得る。各出力は、検証動作において一回だけ使用され得る。各出力が「使用済み」になると、利用できなくなる。このような証明書トランザクションの例を以下に示す:
【表5】
【0097】
公開鍵
【数14】
は、同じ公開鍵であってもよく、互いに完全に独立して異なる公開鍵であってもよく、または互いに実証可能にリンクされた異なる公開鍵であってもよい。ノードAが、この証明トランザクションを上記例のようなトランザクションテンプレートにおいて使用するとき、ノードAは、トランザクションテンプレートにおけるアウトポイントとして参照される証明トランザクション出力が、まだ使用されていないm個の出力のうちの1つであることを保証する。
【0098】
ノードAは、証明書の残りの未使用トランザクション出力のすべてを使用するトランザクションをサブミットすることによって、それ自体の証明書を失効させ得る。認証局は、証明書を失効させるために同じことを行い得るが、認証局が、証明トランザクションにおける出力のうちのどれがすでに使用されているかについての信頼できる認識を有していない場合、認証局は、証明書の失効を保証するために各出力について別個のトランザクションをサブミットする。
【0099】
上記の例示的な複数回使用証明書は、ノードAが最大m回使用することができるという点で有利であるが、すべての出力が使い果たされた後、ノードAは、認証局から新しい証明書を取得しなければならない。別の例では、証明書検証プロセスは、各検証が証明書トランザクションにリンクされた新しいアウトポイントをさらに生成し、それによって元の証明トランザクションに戻るトランザクションのチェーンを構築するように構築され得る。
【0100】
1つの例示的な実装形態では、認証局が証明書を失効させる能力を必要としない場合、上述した形態の証明書が使用され得る。ノードAがトランザクションにおいて証明書を使用するたびに、ノードAは、トランザクションが新しいpay-to-public-key出力を生成し、後にその証明書を使用する任意の後続のトランザクションにおいて証明トランザクション出力として使用することを保証する。
【0101】
別の例示的な実装形態では、認証局が証明書を失効させることができることを保証するために、証明トランザクションおよびチェーン内の後続の各トランザクションは、multi-sig出力を使用する。multi-sig出力は、1-of-2署名が出力をロック解除することを可能にし、それは、認証局およびノードAの両方のための公開鍵を含む。1つの例示的な例を以下に示す:
【表6】
【0102】
証明トランザクション公開鍵
【数15】
に対応する証明トランザクション鍵の保持者は、検証または失効トランザクションにおいて出力を使用することができることが理解されよう。その鍵はノードAによって保持される。認証局は、その公開鍵PKCAに対応する秘密鍵を有することによって鍵を失効させる能力を有することがさらに理解されよう。
【0103】
証明書を使用するために、ノードAは、認証局と新しい証明トランザクション鍵
【数16】
の両方を参照する1-of-2 multi-sig出力を含むトランザクションテンプレートを作成する。このようにして、証明トランザクションが使用されるトランザクションは、証明トランザクションにリンクされたトランザクションのチェーンにおける次のトランザクションとなる。
【0104】
一例として、ノードAがノードBとのトランザクションに入り、ノードBがリソースをノードAに転送し、ノードAがそのデジタル証明書を使用してその公開鍵の有効性を証明すると考慮する。このようなトランザクションは、以下の形態をとり得る:
【表7】
【0105】
上記の例示的なトランザクションでは、入力のうちの1つがノードBによって制御される公開鍵PKからのものであることに留意されたい。この入力は、トランザクションテンプレートの構造が有効であり、ノードAに対する証明書が検証されたことをノードBが確認した後に、ノードBによってトランザクションテンプレートに追加される。
【0106】
トランザクションは、第1のアウトポイントによって示されるように、リソースy BSVを公開鍵PKに転送するように構造化される。別の入力は証明トランザクション出力
【数17】
を参照する。この入力から、ノードBは、証明トランザクション
【数18】
を識別すること、その証明トランザクションのコピーを取り出すこと、およびそれがノードAの公開鍵PKを証明し、認証局によって署名されていることを確認することができる。ノードBはさらに、証明トランザクションおよびチェーン内の任意の後続のトランザクションがそれぞれ、可能な署名者の1つとして認証局を有する1-of-2 multi-sig出力である証明トランザクション出力を含むことを確認することができる。すなわち、認証局が証明を失効させる能力を有する。
【0107】
ノードBは、更新された証明鍵をノードAに提供し、必要に応じて認証局が証明を失効させることができるように、ノードAが現在のトランザクションテンプレートにおける証明トランザクション出力を適切に構造化したかどうかを任意選択的にさらに評価し得るが、ノードBは、トランザクションを進めるために必ずしもこれを確認する必要はない。
【0108】
上述のトランザクションがブロックチェーンネットワークにサブミットされた後、ノードAは、その後、新しいリンクされた公開鍵
【数19】
を使用してそのアイデンティティを証明し得る。例えば、ノードCとの後続のトランザクションにおいて、ノードAは、新しいリンクされた公開鍵
【数20】
およびトランザクション識別子
【数21】
を介して証明トランザクション出力への参照を入力として含むトランザクションテンプレートを提供し得る。ノードCは、リンクされたトランザクション
【数22】
を取り出し、参照されたアウトポイントが、認可された署名者が新しいリンクされた公開鍵
【数23】
および認証局公開鍵PKCAである1-of-2 multi-sig出力動作であることを確認する。次いで、ノードCは、入力された証明トランザクション識別子
【数24】
を識別し、証明トランザクションのコピーを取り出し、それが認証局によって署名されていること、それが公開鍵PKを証明すること、および証明トランザクション出力が、認可された署名者が証明トランザクション公開鍵
【数25】
および認証局公開鍵PKCAである1-of-2 multi-sig出力動作であることを確認する。
【0109】
ノードAの証明を伴う後続のトランザクションは、同じ方法で実行され、他のノードは、元の証明トランザクションに到達するまで、それらの証明トランザクション出力が正しく構造化されることを保証するために、一連のリンクされたトランザクションを遡る。
【0110】
ここで図6を参照すると、リンクされたトランザクションを使用してデジタル証明書を妥当性確認するための方法600の一部がフローチャート形式で示されている。方法600は、受信者のアイデンティティを検証するための自動証明書検証の例を提供する。この例示的なトランザクションでは、ノードAは受信者であり、ノードBは送信者である。方法600は、動作602において、ノードAがトランザクションテンプレートを作成することから開始する。この例では、トランザクションテンプレートは、ノードAのアイデンティティを検証する、例えばノードAの公開鍵PKを証明する元の証明トランザクションまで遡る一連のリンクされた証明トランザクションにおける最後のトランザクションからの証明トランザクション出力を参照する入力を含む。最後の証明トランザクションにおける出力は、証明トランザクション公開鍵
【数26】
を参照するpay-to-public-key動作である。対応する秘密鍵は、現在の証明トランザクション鍵と称され得る。トランザクションテンプレートへの入力は、署名
【数27】
を生成する現在の証明トランザクション鍵によって署名される。トランザクションテンプレートは、ノードAの公開鍵PKにリソースを転送する出力も含む。
【0111】
ノードAは、動作604において、このトランザクションテンプレートをノードBに送信する。トランザクションテンプレートは、ノードBからの入力をまだ含んでおらず、および/または、入力が含まれる場合にはノードBによって署名されていない。
【0112】
動作606において、トランザクションテンプレートを受信すると、ノードBは、トランザクションテンプレートへの入力において参照されたトランザクションのコピーを取得する。トランザクションは、ノードAが以前にその証明書を使用したことがない場合には元の証明トランザクションであってもよく、またはリンクされた証明トランザクションであってもよい。動作608において、ノードBは、それが元の証明トランザクションであるかどうかを評価する。元の証明トランザクションは、PKのための証明書を含むOP_RETURN出力を含み、リンクされた証明トランザクションは、先のトランザクションアウトポイントを参照する2つ以上の署名された入力を含み、その一方は、前の証明トランザクションであり、他方は、リンクされた証明トランザクションへの入力リソースであり得る。ノードBは、取り出されたトランザクションがリンクされた証明トランザクションであり、元の証明トランザクションではないと決定した場合、動作610において、参照されたアウトポイントが有効に構造化されているかどうかを決定する。例えば、アウトポイントが、参照された証明公開鍵、例えば、
【数28】
または
【数29】
および認証局公開鍵、例えばPKCAを含む1-of-2 multi-sig動作を含むかどうかを評価し得る。取り出されたトランザクションが、正しく構造化された参照されたアウトポイントを有しない場合、ノードBは、ノードAの公開鍵を検証することができないので、トランザクションを拒否し得る。しかしながら、正しく構造化されている場合、方法600は動作606に戻り、取り出されたトランザクション内の入力に基づいて、リンクされた一連のトランザクションにおける前のトランザクションを取得する。方法600は、動作608において元の証明トランザクションが識別されるまで、各ステップにおいて、認証局の失効を可能にするために参照されたアウトポイントが適切にフォーマットされていることを確認しながら、リンクされたトランザクションを遡り続ける。
【0113】
元の証明トランザクションが識別されると、動作612において、ノードBは、証明トランザクションが認証局鍵を使用して認証局によって署名されていることを検証する。また、ノードAの公開鍵PKが証明トランザクションのOP_RETURN出力フィールドに現れることを検証し、それによって、認証局がノードAの公開鍵の真正性を証明していることを確認する。それは、証明トランザクション出力が、証明トランザクション公開鍵
【数30】
および認証局公開鍵PKCAへの1-of-2 multi-sig出力であることをさらに検証し得る。
【0114】
元の証明トランザクションが有効であることにノードBが満足すると、動作614において、ノードAの公開鍵PKに転送されているリソースを供給するためにトランザクションテンプレートに入力を追加する。次いで、それは、動作614において、完了したトランザクションテンプレートをブロックチェーンネットワークにサブミットし、動作616によって示されるように、一連証明トランザクション内の最後の証明トランザクションにおける証明トランザクション公開鍵
【数31】
への証明トランザクション出力が依然として有効である場合、すなわち、依然としてUXTOセット内の未使用アウトポイントである場合、動作618において、トランザクションが処理される。そうでない場合、動作620において、無効としてブロックチェーンネットワークによって拒否される。
【0115】
一実装形態では、一連の証明トランザクション出力における各証明トランザクション出力に転送される値は、一連のトランザクションにおける各トランザクションの形式および内容を評価するときに検証ノードが確認する固定値xであってもよい。別の実装形態では、証明が再使用され得る回数に上限を設けるために、値は、元の証明トランザクションにおける固定量から開始してもよく、ある時点で更新がそれ以上行われなくなるように、各使用で一定量だけ減分されてもよい。いくつかの実装形態では、減分された額は、トランザクション手数料の額に一致し得る。
【0116】
認証局は、一連の証明トランザクションにおける最新のトランザクションを識別し、認証局の鍵を使用して1-of-2 multi-sig出力を使用することによって、この証明書を失効させ得ることが理解されよう。
【0117】
ここで図7を参照すると、本出願の一例による、簡略化されたコンピューティングデバイス700がブロック図形式で示されている。コンピューティングデバイス700は、上述の機能のうちの1つまたは複数を実行し得る。この意味で、それは、いくつかの実装形態では、第1のコンピューティングデバイス102(図1)、第2のコンピューティングデバイス104(図1)、またはサーバ106(図1)として機能し得る。
【0118】
コンピューティングデバイス700は、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、マイクロコントローラ、または同様のコンピュータ処理デバイスを含み得るプロセッサ702を含む。コンピューティングデバイス700は、値、変数、およびいくつかの事例ではプロセッサ実行可能プログラム命令を記憶するための永続的および非永続的メモリを含み得るメモリ704と、ネットワークインターフェース706とをさらに含み得る。
【0119】
コンピューティングデバイス700は、実行されると、プロセッサ702に、本明細書で説明される機能または動作のうちの1つまたは複数を実行させるプロセッサ実行可能命令を含むプロセッサ実行可能アプリケーション708を含み得る。
【0120】
上記で提示された様々な実施形態は、単なる例であり、本出願の範囲を限定することを決して意味しない。本明細書で説明される革新の変形は、当業者に明らかであり、そのような変形は、本出願の意図される範囲内である。特に、上述の例示的な実施形態のうちの1つまたは複数からの特徴を選択して、明示的に上述されていない可能性がある特徴のサブコンビネーションを含む代替的な例示的な実施形態を作成することができる。加えて、上述の例示的な実施形態のうちの1つまたは複数からの特徴を選択し、組み合わせて、明示的に上述されていない可能性がある特徴の組合せを含む代替的な例示的な実施形態を作成することができる。そのような組合せおよびサブコンビネーションに適した特徴は、全体として本出願を検討すれば当業者には容易に明らかになるであろう。本明細書および特許請求の範囲で説明される主題は、技術におけるすべての適切な変更を網羅および包含することを意図している。
図1
図2
図3
図4
図5
図6
図7