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

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

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

<>
  • 特表-バイオロックシード 図1
  • 特表-バイオロックシード 図2
  • 特表-バイオロックシード 図3
  • 特表-バイオロックシード 図4
  • 特表-バイオロックシード 図5
  • 特表-バイオロックシード 図6
  • 特表-バイオロックシード 図7
  • 特表-バイオロックシード 図8
  • 特表-バイオロックシード 図9
  • 特表-バイオロックシード 図10
  • 特表-バイオロックシード 図11
  • 特表-バイオロックシード 図12
  • 特表-バイオロックシード 図13
  • 特表-バイオロックシード 図14
  • 特表-バイオロックシード 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-07
(54)【発明の名称】バイオロックシード
(51)【国際特許分類】
   H04L 9/08 20060101AFI20230831BHJP
   G09C 1/00 20060101ALI20230831BHJP
   G06F 21/60 20130101ALI20230831BHJP
【FI】
H04L9/08 A
G09C1/00 650B
G06F21/60 360
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023513159
(86)(22)【出願日】2021-07-26
(85)【翻訳文提出日】2023-02-22
(86)【国際出願番号】 EP2021070794
(87)【国際公開番号】W WO2022042970
(87)【国際公開日】2022-03-03
(31)【優先権主張番号】2013173.6
(32)【優先日】2020-08-24
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】セルギエヴァ,アントアネタ
(72)【発明者】
【氏名】ライト,クレイグ,スティーヴン
(57)【要約】
ブロックチェーン上にバイオメトリックボールトシステムを格納するコンピュータ実装方法であって、バイオメトリックボールトシステムは、1つまたは複数のバイオメトリックボールトを備え、各バイオメトリックボールトは、それぞれのシークレット値をロックし、方法は、少なくとも1つのバイオメトリック読み取り値を取得するステップと、少なくとも1つのバイオメトリック読み取り値から複数の生体特徴を識別するステップと、1つまたは複数の第1のバイオメトリックボールトを生成するステップと、1つまたは複数のブロックチェーントランザクションを生成するステップであって、各ブロックチェーントランザクションは、それぞれの第2のバイオメトリックボールトの少なくとも一部を含むそれぞれの出力を含み、各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含む、ステップと、1つまたは複数のブロックチェーントランザクションをブロックチェーンネットワークに送信するステップとを含む方法。
【特許請求の範囲】
【請求項1】
ブロックチェーン上にバイオメトリックボールトシステムを格納するコンピュータ実装方法であって、前記バイオメトリックボールトシステムは、1つまたは複数のバイオメトリックボールトを備え、各バイオメトリックボールトは、それぞれのシークレット値をロックし、前記方法は、
少なくとも1つのバイオメトリック読み取り値を取得するステップと、
前記少なくとも1つのバイオメトリック読み取り値から複数の生体特徴を識別するステップと、
1つまたは複数の第1のバイオメトリックボールトを生成するステップであって、各第1のバイオメトリックボールトは、前記複数の生体特徴のそれぞれのターゲット生体特徴に対応し、それぞれの複数のバイナリデータペアを含み、各データペアは、第1のバイナリ値および第2のバイナリ値を含み、前記第1のバイナリ値のうちの少なくともいくつかは、前記識別された生体特徴のそれぞれの他の生体特徴に対する前記ターゲット生体特徴のそれぞれの第1のバイナリ表現であり、それぞれの第1レベルシークレット値を再構築するためには、前記それぞれの第1のバイナリ表現と対にされる前記第2のバイナリ値が少なくとも第1のしきい値数必要である、ステップと、
1つまたは複数のブロックチェーントランザクションを生成するステップであって、各ブロックチェーントランザクションは、それぞれの第2のバイオメトリックボールトの少なくとも一部を含むそれぞれの出力を含み、各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含む、ステップと、
前記1つまたは複数のブロックチェーントランザクションを前記ブロックチェーンネットワークに送信するステップと
を含む方法。
【請求項2】
前記それぞれの第2のバイオメトリックボールトの前記少なくとも一部は、それぞれの暗号化鍵で暗号化される、請求項1に記載の方法。
【請求項3】
前記それぞれの第2のバイオメトリックボールトの前記少なくとも一部は、完全なそれぞれの第2のバイオメトリックボールトである、請求項1または2に記載の方法。
【請求項4】
各第1のバイオメトリックボールトおよび各ターゲット生体特徴について、複数のそれぞれの第1のベクトルを決定するステップであって、各第1のベクトルは、前記それぞれの他の識別された生体特徴に対して前記ターゲット生体特徴を定義し、各それぞれの第1のバイナリ表現は、それぞれの第1のベクトルに基づいて生成される、ステップを含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
各それぞれの第1のベクトルは、前記それぞれの他の識別された生体特徴に対する前記ターゲット生体特徴の前記相対距離、相対角度、および/または相対的な向きのうちの1つ、いくつか、またはすべてについてのそれぞれの値を含む、請求項4に記載の方法。
【請求項6】
各第1のバイナリ表現は、前記それぞれの他の識別された生体特徴に対する前記ターゲット生体特徴の前記相対距離、相対角度、および/または相対的な向きのうちの1つ、いくつか、またはすべての前記それぞれの値のそれぞれの第2のバイナリ表現に基づく、請求項5に記載の方法。
【請求項7】
各ターゲット生体特徴について、前記方法は、
各それぞれの第1のベクトルの前記それぞれの値にそれぞれの第1の変換を適用するステップであって、前記それぞれの第1の変換は、前記ターゲット生体特徴と前記それぞれの他の識別された生体特徴との間の相関を除去するように構成され、前記それぞれの第1のバイナリ表現は、前記変換されたそれぞれの値に基づく、ステップ
を含む、請求項4またはそれに従属するいずれかの請求項に記載の方法。
【請求項8】
各ターゲット生体特徴について、前記それぞれの第1の変換は、前記それぞれの他の識別された生体特徴に対する前記それぞれのターゲット生体特徴の距離および/または角度を変換することによって、前記相関を除去するように構成される、請求項7に記載の方法。
【請求項9】
前記それぞれのターゲット生体特徴の前記相対距離は、それぞれの座標および回転不変特性の関数として変換される、請求項8に記載の方法。
【請求項10】
前記それぞれのターゲット生体特徴の前記相対角度が、それぞれの擬似ランダムに生成された変換値の関数として変換される、請求項8または9に記載の方法。
【請求項11】
各第1のバイオメトリックボールトについて、前記第1のバイナリ値のうちの少なくともいくつかは、それぞれの模擬生体特徴のそれぞれの模擬バイナリ表現であり、模擬生体特徴は、前記バイオメトリック読み取り値内に存在しない特徴であり、前記それぞれの模擬バイナリ表現と対にされた前記それぞれの第2のバイナリ値は、それぞれの模擬バイナリ値である、請求項1から10のいずれか一項に記載の方法。
【請求項12】
各第1のバイオメトリックボールトについて、前記それぞれの模擬生体特徴の各々に対するそれぞれの第2のベクトルを、前記それぞれの第1のベクトルの各々と前記それぞれの第2のベクトルの各々との間のそれぞれの最小距離が所定のしきい値を上回るように決定するステップであって、前記それぞれの第2のバイナリ表現は、それぞれの第2のベクトルに基づいて生成される、ステップを含む、請求項11に記載の方法。
【請求項13】
各第1のバイオメトリックボールトについて、模擬生体特徴の総数は、生体特徴の総数よりも多い、請求項11または12に記載の方法。
【請求項14】
各第1のバイオメトリックボールトについて、前記第1レベルシークレット値は、擬似ランダムに生成された値である、請求項1から13のいずれか一項に記載の方法。
【請求項15】
各第1のバイオメトリックボールトについて、
前記それぞれの第1レベルシークレット値を少なくとも前記第1のしきい値数の要素に分割するステップであって、前記第1レベルシークレット値は、それぞれの第1の多項式関数に符号化され、前記それぞれの第1の多項式関数の前記係数は、前記しきい値数の要素のそれぞれの要素であり、前記それぞれの第1のバイナリ表現と対にされる前記それぞれの第2のバイナリ値は、前記それぞれの第1のバイナリ表現を使用して前記第1の多項式関数を評価することによって生成される、ステップ
を含む、請求項1から14のいずれか一項に記載の方法。
【請求項16】
複数の第1のバイオメトリックボールトを生成するステップを含む、請求項1から15のいずれか一項に記載の方法。
【請求項17】
前記複数のバイオメトリックボールトのうちの少なくとも1つを生成するために、異なる第1の変換が適用される、請求項7に従属する場合の請求項16に記載の方法。
【請求項18】
第2レベルシークレット値を生成するためには、第2のしきい値数の前記第1レベルシークレット値が必要である、請求項16またはそれに従属するいずれかの請求項に記載の方法。
【請求項19】
前記第2レベルシークレット値は、擬似ランダムに生成された値である、請求項18に記載の方法。
【請求項20】
前記それぞれの第2レベルシークレット値を少なくとも前記第2のしきい値数の要素に分割するステップであって、前記第2レベルシークレット値は、第2の多項式関数に符号化され、前記第2の多項式関数の前記係数は、前記第2のしきい値数の要素のそれぞれの要素であり、前記第2レベルシークレット値は、各それぞれの第1レベルシークレット値において前記第2の多項式関数を評価することによって再構築することができる、ステップ
を含む、請求項18または19に記載の方法。
【請求項21】
前記第1レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップを含む、請求項1から20のいずれか一項に記載の方法。
【請求項22】
前記第2レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップを含む、請求項18またはそれに従属するいずれかの請求項に記載の方法。
【請求項23】
前記1つまたは複数のブロックチェーントランザクションの各々は、それぞれの第1の使用可能な出力を含み、前記方法は、それぞれのブロックチェーントランザクション内に含まれるそれぞれの第2のバイオメトリックボールトの少なくとも一部を、前記それぞれの使用可能な出力を使用することによって失効させるステップを含む、請求項1から22のいずれか一項に記載の方法。
【請求項24】
各第1のバイオメトリックボールトについて、
それぞれのマスタ秘密鍵を取得するステップと、
前記それぞれのマスタ秘密鍵に基づいて1つまたは複数の補助秘密鍵を生成するステップと
を含む、請求項1から23のいずれか一項に記載の方法。
【請求項25】
前記1つまたは複数の補助鍵のうちの第1の補助鍵は、前記それぞれの暗号化鍵として使用される、請求項2に従属する場合の請求項24に記載の方法。
【請求項26】
前記1つまたは複数の補助鍵のうちの第2の補助鍵は、前記変換値である、請求項10に従属する場合の請求項23または24に記載の方法。
【請求項27】
各それぞれの使用可能な出力は、前記1つまたは複数の補助鍵のそれぞれの補助鍵に対応するそれぞれの公開鍵にロックされる、請求項23に従属する場合の請求項24から26のいずれか一項に記載の方法。
【請求項28】
前記それぞれのマスタ秘密鍵および前記それぞれの1つまたは複数の補助鍵は、それぞれの階層的決定論的鍵構造の一部を形成する、請求項24から27のいずれか一項に記載の方法。
【請求項29】
前記変換値の各々に基づいて第2の値を生成するステップと、
第3の値を生成するために前記第2の値において第3の多項式関数を評価するステップであって、前記第2の多項式関数の前記係数は、擬似ランダムに生成される、ステップと
を含み、
各第2のバイオメトリックボールトは、前記それぞれの第1レベルシークレット値および前記第3の値で評価された前記第2の多項式を含む、
請求項26に記載の方法。
【請求項30】
前記少なくとも1つのバイオメトリック読み取り値は、
指紋読み取り値、
虹彩読み取り値、
指静脈パターン読み取り値、
手首静脈パターン読み取り値、
皮膚構造パターン、および/または
顔パターン
のうちの少なくとも1つを含む、請求項1から29のいずれか一項に記載の方法。
【請求項31】
バイオメトリックボールトシステムの1つまたは複数のバイオメトリックボールトをロック解除するコンピュータ実装方法であって、前記バイオメトリックボールトシステムは、請求項1から30のいずれか一項に記載の方法にしたがって生成され、前記方法は、
少なくとも1つの候補バイオメトリック読み取り値を取得するステップと、
前記少なくとも1つのバイオメトリック読み取り値から複数の生体特徴を識別するステップと、
前記複数の生体特徴のそれぞれの生体特徴の複数のそれぞれの候補バイナリ表現を生成するステップと、
前記ブロックチェーンから、1つまたは複数の第2のバイオメトリックボールトを取得するステップであって、各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含み、各第1のバイオメトリックボールトは、それぞれの第2のバイナリ値と対にされた複数のそれぞれの第1のバイナリ値を含む、ステップと、
各第1のバイオメトリックボールトについて、
前記複数の候補バイナリ表現のそれぞれに対応する少なくともしきい値数のそれぞれの第1のバイナリ値を決定するステップと、
第1のしきい値数の第1のバイナリ表現のそれぞれと対にされるしきい値数の前記第2のバイナリ値を取得するステップと、
前記第1のしきい値数の前記第2のバイナリ値の各々に基づいて、第1レベルシークレット値を再構築するステップと
を含むコンピュータ実装方法。
【請求項32】
第2のしきい値数の第1レベルシークレット値を再構築するために、少なくとも前記第2のしきい値数の異なる第1のバイオメトリックボールトに対して前記決定、取得、および再構築を実行するステップと、
前記第2のしきい値数の第1レベルシークレット値に基づいて、第2レベルシークレット値を再構築するステップと
を含む、請求項1に記載の方法。
【請求項33】
前記第1レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップ、および/または前記第2レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップを含む、請求項31または32に記載の方法。
【請求項34】
コンピュータ機器であって、
1つまたは複数のメモリユニットを備えるメモリと、
1つまたは複数の処理ユニットを備える処理装置と
を備え、前記メモリは、前記処理装置上で実行されるように構成されたコードを記憶し、前記コードは、前記処理装置上にあるときに、請求項1から33のいずれか一項に記載の方法を実行するように構成される、
コンピュータ機器。
【請求項35】
コンピュータ可読ストレージ上に具現化されたコンピュータプログラムであって、1つまたは複数のプロセッサ上で実行されたときに、請求項1から33のいずれか一項に記載の方法を実行するように構成されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーン上にバイオメトリックボールトシステムを格納する方法に関する。
【背景技術】
【0002】
公開鍵暗号法は、鍵のペア、すなわち、秘密鍵の所有者のみに知られている秘密鍵と、対応する秘密鍵に基づいて生成され、秘密鍵のセキュリティを損なうことなく配布され得る公開鍵とを使用する暗号システムの一種である。公開鍵暗号法は、送信者が受信者の公開鍵(すなわち、受信者のみに知られている秘密鍵に対応する公開鍵)を使用してメッセージを暗号化することを可能にする。そのため、暗号化されたメッセージは、受信者の秘密鍵を使用してのみ復号することができる。
【0003】
同様に、送信者は、例えば、メッセージが送信者によって送信されていることを証明するために、および/または、送信者がメッセージに同意することを示すために、自身の秘密鍵を使用してメッセージに署名することができる。署名者(すなわち、署名を生成する当事者)は、自身の秘密鍵を使用して、メッセージに基づいてデジタル署名を作成する。署名者の対応する公開鍵を有する者であれば、同じメッセージおよびメッセージ上のデジタル署名を使用して、署名が有効に作成されたかどうか、すなわち、署名が実際に署名者の秘密鍵を使用して作成されたかどうかを検証することができる。
【0004】
秘密鍵は、通常、「シード(seed)」を使用して生成される。シードは、そのシードによって生成されるべき秘密鍵の所有者(複数可)のみに知られている秘密データを指す。1つまたは複数の秘密鍵は、シードの関数として生成される。例えば、ハッシュ関数をシードに適用して、「マスタ秘密鍵」と呼ばれることもある秘密鍵を生成し得る。初めて秘密鍵を生成するときに加えて、同じシードを使用して、同じ秘密鍵を再生成、すなわち再構築することができる。例えば、ユーザが自分の秘密鍵(複数可)を紛失した場合でも、ユーザがシードを知っている限り、それらの秘密鍵を再構築することができる。
【0005】
公開鍵暗号法を利用する1つの特定の分野は、ブロックチェーン技術である。メッセージ(例えば、トランザクション出力に記憶されたデータ)を暗号化することに加えて、公開鍵は、所与の公開鍵に対応する秘密鍵の所有者に出力を「ロック」する、すなわち割り当てるためにも使用される。その場合、秘密鍵の所有者のみが出力を「ロック解除」することができる。ブロックチェーンの文脈における公開鍵暗号法の使用に関するさらなる詳細は、以下に提供される。
【発明の概要】
【0006】
ブロックチェーン上で使用するための秘密鍵を管理するための1つの一般的な標準は、階層的決定論的(HD)鍵管理である。例えば、BIP(Bitcoin Improvement Proposal)32では、階層的鍵ツリーは、決定論的公開アルゴリズムを使用して単一のエントロピーソースから導出される。アルゴリズムの第1のステップは、シードを生成することである。シードは、擬似乱数生成器(PRNG)からのランダムビット列(推奨256ビット)として生成される。HD鍵管理は、bag-of-key問題を効率的に解決する。残る課題は、ユーザが、シードを記憶および/または書き留めて、安全に保管し、秘密鍵(「ウォレット」、すなわち鍵のウォレットと呼ばれることもある)を再構築または共有する必要があるときにそれを通信する必要があることである。人間は、シードが生のビット列である場合、これらのタスクに失敗する傾向がある。
【0007】
その課題はBIP39で解決された。マスタ鍵に必要なエントロピーをニーモニックフレーズに抽象化するシステムが提案された。ニーモニックフレーズは、操作が容易であり、生のシードよりもユーザフレンドリーである。残る課題は、セキュリティとユーザビリティとが相反する目的であることである。ウォレットセキュリティは、シードエントロピーの増加とともに高まる。次に、これにより、記憶がますます困難または実行不可能になる程度までニーモニックフレーズ内のランダムなワードの数が増える。この課題のバランスをとるために、BIP39は、128~256ビットの範囲の「許容されるエントロピーのサイズ」を示し、211個のワードの辞書を提案した。そして、最大24個のワードのフレーズ長が提供された。
【0008】
したがって、残る課題は、以下を同時に達成することから構成される。一方では、記憶する必要がなく、再生するのにユーザフレンドリーなシードを生成する。一方では、エントロピーの大きさの制限のないシードを生成する。
【0009】
したがって、いずれかの課題を克服することが望ましく、または両方の課題を同時に克服するという二重の目的を達成することがさらにより望ましい。同様の考慮事項が、他のタイプの階層的ドメインウォレット、またはより一般的には、鍵が導出されるシードを生成するための任意の方式に適用され得る。
【0010】
本明細書に開示される一態様によれば、ブロックチェーン上にバイオメトリックボールトシステムを格納するコンピュータ実装方法であって、バイオメトリックボールトシステムは、1つまたは複数のバイオメトリックボールトを備え、各バイオメトリックボールトは、それぞれのシークレット値をロックし、方法は、少なくとも1つのバイオメトリック読み取り値を取得するステップと、少なくとも1つのバイオメトリック読み取り値から複数の生体特徴を識別するステップと、1つまたは複数の第1のバイオメトリックボールトを生成するステップであって、各第1のバイオメトリックボールトは、複数の生体特徴のそれぞれのターゲット生体特徴に対応し、それぞれの複数のバイナリデータペアを含み、各データペアは、第1のバイナリ値および第2のバイナリ値を含み、第1のバイナリ値のうちの少なくともいくつかは、識別された生体特徴のそれぞれの他の生体特徴に対するターゲット生体特徴のそれぞれの第1のバイナリ表現であり、それぞれの第1レベルシークレット値を再構築するためには、それぞれの第1のバイナリ表現と対にされる第2のバイナリ値が少なくとも第1のしきい値数必要である、ステップと、1つまたは複数のブロックチェーントランザクションを生成するステップであって、各ブロックチェーントランザクションは、それぞれの第2のバイオメトリックボールトの少なくとも一部を含むそれぞれの出力を含み、各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含む、ステップと、1つまたは複数のブロックチェーントランザクションをブロックチェーンネットワークに送信するステップとを含む方法が提供される。
【0011】
本明細書に開示される別の態様によれば、バイオメトリックボールトシステムの1つまたは複数のバイオメトリックボールトをロック解除するコンピュータ実装方法であって、方法は、少なくとも1つの候補バイオメトリック読み取り値を取得するステップと、少なくとも1つのバイオメトリック読み取り値から複数の生体特徴を識別するステップと、複数の生体特徴のそれぞれの生体特徴の複数のそれぞれの候補バイナリ表現を生成するステップと、ブロックチェーンから、1つまたは複数の第2のバイオメトリックボールトを取得するステップであって、各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含み、各第1のバイオメトリックボールトは、それぞれの第2のバイナリ値と対にされた複数のそれぞれの第1のバイナリ値を含む、ステップと、各第1のバイオメトリックボールトについて、複数の候補バイナリ表現のそれぞれに対応する少なくともしきい値数のそれぞれの第1のバイナリ値を決定するステップと、第1のしきい値数の第1のバイナリ表現のそれぞれと対にされるしきい値数の第2のバイナリ値を取得するステップと、第1のしきい値数の第2のバイナリ値の各々に基づいて、第1レベルシークレット値を再構築するステップとを含む方法が提供される。
【0012】
バイオメトリックボールトシステムは、1つまたは複数のシークレット値(以下では「シード」と呼ばれるが、これに限定されない)をロックする。異なる第1レベルシークレット値は、システムの別個のボールトに「ロック」される。各ボールトは、第2のバイナリ値にリンクされた第1のバイナリ値を含む。第1のバイナリ値のうちのいくつかは、ユーザの生体特徴に基づいて生成されたそれぞれのバイナリ表現である。いくつかの例では、第1のバイナリ値のうちのいくつかは、模擬の第2のバイナリ値にリンクされた模擬の(すなわち、偽の)生体特徴のバイナリ表現である。所与のボールトによってロックされた第1レベルシークレット値を再構築するためには、しきい値数の「実際の」第2のバイナリ値が必要である。各ボールトは、ブロックチェーン上に記録される異なるブロックチェーントランザクションの出力に記憶され得、または、いくつかの例では、ボールトは、各スライスが異なるブロックチェーントランザクションに記憶されるボールトスライスに分割され得る。
【0013】
ユーザが、自身のシードを回復する必要があるとき、ユーザは、必要に応じて、1つまたは複数の別の(ライブ)バイオメトリック読み取り値を提供する。ボールトは、ブロックチェーントランザクションから取得される。ユーザが、自身の読み取り値を提供すると、ユーザの生体特徴に基づいて候補バイオメトリック表現のセットが生成される。それらの候補バイオメトリック表現を使用して、候補バイオメトリック表現に一致する第1のバイオメトリック表現が各バイオメトリックボールトにおいて識別され、それらの第1のバイオメトリック表現にマッピングされた第2のバイナリ値が取得される。しきい値数の第1のバイオメトリック表現が識別され、そして、しきい値数の第2のバイナリ値が取得されると、第1レベルシークレット値(例えば、シード)を再構築することができる。ボールトシステムが、第2のシークレット値、すなわち「第2レベル」シークレット値をロックする場合、上記のプロセスは、しきい値数のボールトに対して実行され得る。しきい値数の第1レベルシークレット値が取得されると、それらを使用して第2レベルシークレット値(例えば、シード)を再構築することができる。
【0014】
第1レベルシークレット値および/または第2レベルシークレット値は、秘密鍵のそれぞれのセット、例えば、階層的決定論的鍵構造を導出するために使用され得る。
【0015】
バイオロックシード(bio-locked seed)(またはより一般的には、バイオロックシークレット)は、いくつかの例では、無制限のサイズの再現可能なエントロピーへのアクセスを提供し得る。これは、バイオボールトのシステムによって達成され、ここで、失効可能なオンチェーンのバイオボールトは、ブロックチェーントランザクションの出力間で(例えば、ランダムに)分散される。各ボールトは、異なるシークレット値をロックし、次に、これらのシークレット値は、任意のサイズの別のシードを構築または再構築するためのランダムな部分的な手掛かり(clue)として使用され得る。各シークレット値(または「手掛かり」)は、意図されたユーザによってのみロック解除することができる。
【0016】
この手法は、誤り訂正復号に依存せず、ボールトシステムに冗長性を導入することによって、マニューシャ認識技法の精度への依存を低減または排除することができる。システムの冗長性はまた、いくつかのマニューシャ特徴を物理的に失う事故への依存を低減または排除する。さらに、同じ高エントロピーシードをロック解除するボールトシステムが、いくつかのボールトが1人のユーザのバイオ特徴に基づき、同じシステム内の他のボールトが別のユーザのバイオ特徴に基づくバイオボールトを含む場合、共有ウォレットを作成することができる。
【図面の簡単な説明】
【0017】
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、単なる例として添付の図面を参照する。
図1】ブロックチェーンを実装するためのシステムの概略ブロック図である。
図2】ブロックチェーンに記録され得るトランザクションのいくつかの例を概略的に示す。
図3】指紋における例示的な生体特徴を示す。
図4】他のマニューシャに関連し、中心基準フレームに無関係なマニューシャ位置を示す。
図5】指紋のマニューシャ点における隆線に対する接線としてのマニューシャの向きを示す。
図6】マニューシャの例示的な関数変換を示す。
図7】マニューシャの不変値の抽出を示す。
図8】マニューシャの例示的な関数変換を示す。
図9】ブロックチェーン上にボールトを記録するための例示的なトランザクションを概略的に示す。
図10】ブロックチェーン上にボールトスライスを記録するための例示的なトランザクションを概略的に示す。
図11】異なるユーザがブロックチェーン上にボールトを記録するための例示的なトランザクションを概略的に示す。
図12】異なるユーザがブロックチェーン上にボールトスライスを記録するための例示的なトランザクションを概略的に示す。
図13】いくつかの実施形態による、第1のユーザがブロックチェーン上にボールトシステムを記録するための例示的な方法を概略的に示す。
図14】いくつかの実施形態による、第1のユーザがシードを再構築するための例示的な方法を概略的に示す。
図15】いくつかの実施形態による、2人のユーザがブロックチェーン上に共有ボールトシステムを記録するための例示的な方法を概略的に示す。
【発明を実施するための形態】
【0018】
例示的なシステムの概要
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットなどの広域インターネットワークであるパケット交換ネットワーク101で構成され得る。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)ネットワーク106を形成するように構成され得る複数のブロックチェーンノード104を含む。図示されていないが、ブロックチェーンノード104は、ほぼ完全なグラフとして構成され得る。したがって、各ブロックチェーンノード104は、他のブロックチェーンノード104に高度に接続される。
【0019】
各ブロックチェーンノード104は、ピアのコンピュータ機器を含み、ノード104の異なるものは、異なるピアに属する。各ブロックチェーンノード104は、1つまたは複数のプロセッサ、例えば、1つまたは複数の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサおよび/またはフィールドプログラマブルゲートアレイ(FPGA)、ならびに特定用途向け集積回路(ASIC)などの他の機器を含む処理装置を備える。各ノードはまた、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージを備える。メモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、ソリッドステートドライブ(SSD)、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を採用する1つまたは複数のメモリユニットを備え得る。
【0020】
ブロックチェーン150は、データブロック151のチェーンを含み、ブロックチェーン150のそれぞれのコピーは、分散型またはブロックチェーンネットワーク106内の複数のブロックチェーンノード104の各々で維持される。上述したように、ブロックチェーン150のコピーを維持することは、ブロックチェーン150を完全に記憶することを必ずしも意味しない。代わりに、ブロックチェーン150は、各ブロックチェーンノード150が各ブロック151のブロックヘッダ(後述する)を記憶している限り、データがプルーニングされ得る。チェーン内の各ブロック151は、1つまたは複数のトランザクション152を含み、この文脈におけるトランザクションは、データ構造の一種を指す。データ構造の性質は、トランザクションモデルまたは方式の一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、全体を通して1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つの入力および少なくとも1つの出力を含む。各出力は、プロパティとしてデジタル資産の量を表す額を指定し、その例は、出力が暗号的にロックされている(ロック解除され、それによって償還または使用されるためにはそのユーザの署名または他のソリューションを必要とする)ユーザ103である。各入力は、先行するトランザクション152の出力を指し示し、それによってトランザクションをリンクする。
【0021】
各ブロック151はまた、ブロック151への順番を定義するために、チェーン内の前に作成されたブロック151を指し示すブロックポインタ155を含む。各トランザクション152(コインベーストランザクション以外)は、トランザクションのシーケンスへの順序を定義するために、前のトランザクションへ戻るポインタを含む(注意:トランザクション152のシーケンスは分岐することが可能である)。ブロック151のチェーンは、チェーン内の最初のブロックであった発生ブロック(Gb:genesis block)153までずっと戻る。チェーン150内の早期にある1つまたは複数の元のトランザクション152は、先行するトランザクションではなく発生ブロック153を指し示していた。
【0022】
ブロックチェーンノード104の各々は、トランザクション152を他のブロックチェーンノード104にフォワードし、それによってトランザクション152をネットワーク106全体に伝搬させるように構成される。各ブロックチェーンノード104は、ブロック151を作成し、同じブロックチェーン150のそれぞれのコピーをそれらのそれぞれのメモリに記憶するように構成される。各ブロックチェーンノード104はまた、ブロック151に組み込まれるのを待っているトランザクション152の順序付きセット(またはプール)154を維持する。順序付きプール154は、「メムプール(mempool)」と呼ばれることが多い。本明細書におけるこの用語は、任意の特定のブロックチェーン、プロトコル、またはモデルに限定することを意図していない。これは、ノード104が有効であるとして受け入れたトランザクションの順序付きセットを指し、それに対して、ノード104は、同じ出力を使用しようとする他のトランザクションを受け入れないように義務付けられている。
【0023】
所与の現在のトランザクション152jにおいて、その入力(または各入力)は、トランザクションのシーケンスにおける先行するトランザクション152iの出力を参照するポインタを含み、この出力が現在のトランザクション152jにおいて償還または「使用」されるべきであることを指定する。一般に、先行するトランザクションは、順序付きセット154または任意のブロック151内の任意のトランザクションであり得る。先行するトランザクション152iは、現在のトランザクションが有効となるためには存在および妥当性確認される必要があるが、先行するトランザクション152iは、現在のトランザクション152jが作成されるときまたはネットワーク106に送信されるときに必ずしも存在する必要はない。したがって、本明細書における「先行する(preceding)」は、ポインタによってリンクされた論理シーケンスにおける先行するものを指し、必ずしも時間シーケンスにおける作成または送信の時間を指すものではなく、したがって、トランザクション152i、152jが順不同に作成または送信されることを必ずしも除外するものではない(オーファントランザクションに関する以下の説明を参照)。先行するトランザクション152iは、同様に、先のトランザクション(antecedent transaction)または先行したトランザクション(predecessor transaction)とも呼ばれる。
【0024】
現在のトランザクション152jの入力はまた、入力認可、例えば、先行するトランザクション152iの出力がロックされている先のユーザ103aの署名を含む。次に、現在のトランザクション152jの出力は、新しいユーザまたはエンティティ103bに暗号的にロックされ得る。したがって、現在のトランザクション152jは、先行するトランザクション152iの入力において定義された額を、現在のトランザクション152jの出力において定義されたように、新しいユーザまたはエンティティ103bに転送することができる。場合によっては、トランザクション152は、複数のユーザまたはエンティティ(そのうちの1つは残り(change)を与えるために元のユーザまたはエンティティ103aであり得る)間で入力額を分割するために複数の出力を有し得る。場合によっては、トランザクションはまた、1つまたは複数の先行するトランザクションの複数の出力からの額をまとめ、現在のトランザクションの1つまたは複数の出力に再分配するために複数の入力を有することができる。
【0025】
ビットコインなどの出力ベースのトランザクションプロトコルによれば、個々のユーザまたは組織などの当事者103が(手動でまたは当事者によって採用される自動プロセスによって)新しいトランザクション152jを制定することを望むとき、制定を行う当事者は、新しいトランザクションをそのコンピュータ端末102から受信者に送信する。制定を行う当事者または受信者は、最終的に、このトランザクションをネットワーク106のブロックチェーンノード104の1つまたは複数(これは、現在では、典型的にはサーバまたはデータセンタであるが、原則として他のユーザ端末であってもよい)に送信する。新しいトランザクション152jを制定する当事者103がトランザクションをブロックチェーンノード104の1つまたは複数に直接送信し、いくつかの例では、受信者に送信しないことも除外されない。トランザクションを受信するブロックチェーンノード104は、ブロックチェーンノード104の各々で適用されるブロックチェーンノードプロトコルにしたがって、トランザクションが有効であるかどうかをチェックする。ブロックチェーンノードプロトコルは、典型的には、新しいトランザクション152j内の暗号署名が、トランザクション152の順序付きシーケンス内で前のトランザクション152iに依存する予想される署名と一致することをチェックするようにブロックチェーンノード104に求める。そのような出力ベースのトランザクションプロトコルでは、これは、新しいトランザクション152jの入力に含まれる当事者103の暗号署名または他の認可が、新しいトランザクションが割り当てる先行するトランザクション152iの出力において定義される条件と一致することをチェックすることを含み得、この条件は、典型的には、新しいトランザクション152jの入力における暗号署名または他の認可が、新しいトランザクションの入力がリンクされている前のトランザクション152iの出力をロック解除することを少なくともチェックすることを含む。条件は、先行するトランザクション152iの出力に含まれるスクリプトによって少なくとも部分的に定義され得る。代替的に、単にブロックチェーンノードプロトコルのみによって固定されてもよく、またはこれらの組合せによるものであってもよい。いずれにしても、新しいトランザクション152jが有効である場合、ブロックチェーンノード104は、それをブロックチェーンネットワーク106内の1つまたは複数の他のブロックチェーンノード104にフォワードする。これらの他のブロックチェーンノード104は、同じブロックチェーンノードプロトコルにしたがって同じテストを適用し、そして、新しいトランザクション152jを1つまたは複数のさらなるノード104にフォワードし、以下同様である。このようにして、新しいトランザクションはブロックチェーンノード104のネットワーク全体に伝搬される。
【0026】
出力ベースのモデルでは、所与の出力(例えば、UTXO)が割り当てられる(例えば、使用される)かどうかの定義は、それがブロックチェーンノードプロトコルにしたがって別の前方のトランザクション152jの入力によって有効に償還されたかどうかである。トランザクションが有効であるための別の条件は、それが償還しようとする先行するトランザクション152iの出力が、別のトランザクションによってまだ償還されていないことである。この場合も同様に、有効ではない場合、トランザクション152jは、(無効としてフラグ付けされ、警告のために伝搬されない限り)伝搬されることも、ブロックチェーン150内に記録されることもない。これは、トランザクタ(transactor)が同じトランザクションの出力を複数回割り当てようとする二重支出を防止する。一方、アカウントベースのモデルは、アカウント残高を維持することによって二重支出を防止する。ここでも、トランザクション順序が定義されているので、アカウント残高は常に単一の定義された状態にある。
【0027】
トランザクションを妥当性確認することに加えて、ブロックチェーンノード104はまた、「プルーフオブワーク」によって支持される、一般にマイニングと呼ばれるプロセスにおいてトランザクションのブロックを最初に作成しようと競い合う。ブロックチェーンノード104において、新しいトランザクションが、ブロックチェーン150上に記録されたブロック151内にまだ現れていない有効なトランザクションの順序付きプール154に追加される。次いで、ブロックチェーンノードは、暗号パズルを解こうとすることで、トランザクションの順序付きセット154からトランザクション152の新しい有効なブロック151を組み立てようと競い合う。典型的には、これは、ナンスが保留中のトランザクションの順序付きプール154の表現と連結されハッシュされたときにハッシュの出力が所定の条件を満たすような「ナンス」値を探索することを含む。例えば、所定の条件とは、ハッシュの出力が特定の所定の数の先行ゼロを有することであり得る。これは、プルーフオブワークパズルの1つの特定のタイプにすぎず、他のタイプが除外されないことに留意されたい。ハッシュ関数のプロパティは、その入力に対して予測不可能な出力を持つことである。したがって、この探索は、総当たりでしか実行することができないので、パズルを解こうとしている各ブロックチェーンノード104でかなりの量の処理リソースを消費する。
【0028】
最初にパズルを解いたブロックチェーンノード104は、これをネットワーク106に公表し、後にネットワーク内の他のブロックチェーンノード104によって容易にチェックすることができるその解をプルーフとして提供する(ハッシュに対する解が与えられると、ハッシュの出力が条件を満たすことをチェックすることは簡単である)。この最初のブロックチェーンノード104は、ブロックを、このブロックを受け入れる他のノードのしきい値コンセンサスに伝搬し、プロトコルルールを実施する。次いで、トランザクションの順序付きセット154は、ブロックチェーンノード104の各々によってブロックチェーン150内に新しいブロック151として記録されるようになる。ブロックポインタ155はまた、チェーン内の前に作成されたブロック151n-1を指し示す新しいブロック151nに割り当てられる。プルーフオブワークの解を作成するために必要とされる、例えばハッシュの形態の、かなりの量の労力は、ブロックチェーンプロトコルのルールに従うという最初のノード104の意図を示す。そのようなルールは、別名二重支出としても知られている、前に妥当性確認されたトランザクションと同じ出力の割当てを行う場合、トランザクションを有効として受け入れないことを含む。ブロック151は、一旦作成されると、ブロックチェーンネットワーク106内のブロックチェーンノード104の各々において認識および維持されるので、修正することができない。ブロックポインタ155はまた、ブロック151に順番を付与する。トランザクション152は、ネットワーク106内の各ブロックチェーンノード104において順序付きブロックに記録されるので、これは、トランザクションの不変の公開台帳を提供する。
【0029】
任意の所与の時間にパズルを解こうと競い合う異なるブロックチェーンノード104は、それらがいつ解を探索し始めたかまたはトランザクションが受信された順序に応じて、任意の所与の時間に、まだ公開されていないトランザクションのプール154の異なるスナップショットに基づいてそれを行っていてもよいことに留意されたい。誰がそれぞれのパズルを最初に解いても、どのトランザクション152が次の新しいブロック151nにどの順序で含まれるかを定義し、公開されていないトランザクションの現在のプール154が更新される。次いで、ブロックチェーンノード104は、新たに定義された、公開されていないトランザクションの順序付きプール154からブロックを作成しようと競い合い続け、以下同様である。2つのブロックチェーンノード104が互いに非常に短い時間内にパズルを解いて、ブロックチェーンの相反する見解がノード104間で伝搬される場合に発生し得る任意の「フォーク」を解決するためのプロトコルも存在する。要するに、フォークのどちらのプロングが最も長く成長しても、確定的なブロックチェーン150となる。同じトランザクションが両方のフォークに現れるので、これがネットワークのユーザまたはエージェントに影響を与えないことに留意されたい。
【0030】
ビットコインブロックチェーン(およびほとんどの他のブロックチェーン)によれば、新しいブロック104の構築に成功したノードには、(あるエージェントまたはユーザから別のエージェントまたはユーザにある額のデジタル資産を転送するエージェント間またはユーザ間のトランザクションとは対照的に)追加の定義された量のデジタル資産を分配する新しい特別な種類のトランザクションにおいて、受け入れられた追加の額のデジタル資産を新たに割り当てる能力が与えられる。この特別なタイプのトランザクションは、通常、「コインベーストランザクション」と呼ばれるが、「開始トランザクション(initiation transaction)」または「生成トランザクジョン(generation transaction)」と呼ばれることもある。これは典型的に、新しいブロック151nの最初のトランザクションを形成する。プルーフオブワークは、新しいブロックを構築するノードが、この特別なトランザクションが後に償還されることを可能にするプロトコルルールに従うという意図を示す。ブロックチェーンプロトコルルールは、この特別なトランザクションが償還され得る前に、満期期間、例えば100個のブロックを必要とし得る。多くの場合、通常の(非生成)トランザクション152はまた、そのトランザクションが公開されたブロック151nを作成したブロックチェーンノード104にさらに報酬を与えるために、その出力のうちの1つにおいて追加のトランザクション手数料を指定する。この手数料は通常「トランザクション手数料」と呼ばれ、以下に説明する。
【0031】
トランザクション妥当性確認および公開に関与するリソースに起因して、典型的には、ブロックチェーンノード104の少なくとも各々は、1つまたは複数の物理サーバユニットを含むサーバの形態をとるか、さらにはデータセンタ全体の形態をとる。しかしながら、原則として、任意の所与のブロックチェーンノード104は、ユーザ端末または互いにネットワーク化されたユーザ端末のグループの形態をとることができる。
【0032】
各ブロックチェーンノード104のメモリは、そのそれぞれの1つまたは複数の役割を実行し、ブロックチェーンノードプロトコルにしたがってトランザクション152を処理するために、ブロックチェーンノード104の処理装置上で実行されるように構成されたソフトウェアを記憶する。本明細書においてブロックチェーンノード104に帰する任意のアクションは、それぞれのコンピュータ機器の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。ノードソフトウェアは、アプリケーション層、またはオペレーティングシステム層もしくはプロトコル層などの下位層、またはこれらの任意の組合せにおける1つまたは複数のアプリケーションにおいて実装され得る。
【0033】
消費ユーザの役割を果たす複数の当事者103の各々のコンピュータ機器102もネットワーク101に接続されている。これらのユーザは、ブロックチェーンネットワーク106と対話し得るが、トランザクションの妥当性確認にもブロックの構築にも参加しない。これらのユーザまたはエージェント103のうちのいくつかは、トランザクションの送信者および受信者として動作し得る。他のユーザは、必ずしも送信者または受信者として動作することなくブロックチェーン150と対話し得る。例えば、いくつかの当事者は、(例えば、ブロックチェーンノード104からブロックチェーンのコピーを取得した)ブロックチェーン150のコピーを記憶するストレージエンティティとして動作し得る。
【0034】
当事者103のうちのいくつかまたはすべては、異なるネットワーク、例えば、ブロックチェーンネットワーク106の上にオーバーレイされたネットワークの一部として接続され得る。ブロックチェーンネットワークのユーザ(「クライアント」と呼ばれことが多い)は、ブロックチェーンネットワーク106を含むシステムの一部であるといえるが、これらのユーザは、ブロックチェーンノードに求められる役割を果たさないので、ブロックチェーンノード104ではない。代わりに、各当事者103はブロックチェーンネットワーク106と対話してもよく、ブロックチェーンノード106に接続する(すなわち通信する)ことでブロックチェーン150を利用し得る。2つの当事者103およびそれらのそれぞれの機器102、すなわち、第1の当事者103aおよびそのそれぞれのコンピュータ機器102a、ならびに第2の当事者103bおよびそのそれぞれのコンピュータ機器102bは、例示の目的で示されている。そのような当事者103およびそれらのそれぞれのコンピュータ機器102ははるかに多く存在し、システム100に参加し得るが、便宜上、それらは図示されていないことが理解されよう。各当事者103は、個人または組織であり得る。純粋に例示として、第1の当事者103aは、本明細書ではアリスと呼ばれ、第2の当事者103bはボブと呼ばれるが、これは限定的なものではなく、本明細書におけるアリスまたはボブへのいかなる言及も、それぞれ「第1の当事者」および「第2の当事者」と置き換えられ得ることが理解されよう。
【0035】
各当事者103のコンピュータ機器102は、1つまたは複数のプロセッサ、例えば、1つまたは複数のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、および/またはFPGAを含むそれぞれの処理装置を備える。各当事者103のコンピュータ機器102は、メモリ、すなわち、1つまたは複数の非一時的コンピュータ可読媒体の形態のコンピュータ可読ストレージをさらに備える。このメモリは、1つまたは複数のメモリ媒体、例えば、ハードディスクなどの磁気媒体、SSD、フラッシュメモリもしくはEEPROMなどの電子媒体、および/または光ディスクドライブなどの光学媒体を採用する1つまたは複数のメモリユニットを備え得る。各当事者103のコンピュータ機器102上のメモリは、処理装置上で実行されるように構成された少なくとも1つのクライアントアプリケーション105のそれぞれのインスタンスを含むソフトウェアを記憶する。本明細書において所与の当事者103に帰する任意のアクションは、それぞれのコンピュータ機器102の処理装置上で実行されるソフトウェアを使用して実行され得ることが理解されよう。各当事者103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えば、デスクトップもしくはラップトップコンピュータ、タブレット、スマートフォン、またはスマートウォッチなどのウェアラブルデバイスを含む。所与の当事者103のコンピュータ機器102はまた、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースなどの1つまたは複数の他のネットワーク化されたリソースを含み得る。
【0036】
クライアントアプリケーション105は、最初に、1つまたは複数の適切なコンピュータ可読ストレージ上で任意の所与の当事者103のコンピュータ機器102に提供され得、例えば、サーバからダウンロードされ得るか、またはリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスクもしくはテープ、CDもしくはDVD ROMなどの光ディスク、またはリムーバブル光学ドライブなどのリムーバブル記憶デバイス上で提供され得る。
【0037】
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これは2つの主要な機能を有する。これらのうちの1つは、それぞれの当事者103が、トランザクション152を作成し、認可し(例えば署名し)、1つまたは複数のビットコインノード104に送信することを可能にして、トランザクション152を、ブロックチェーンノード104のネットワーク全体に伝搬させ、それによってブロックチェーン150に含まれるようにすることである。もう1つは、それぞれの当事者に、その当事者が現在所有しているデジタル資産の額を報告することである。出力ベースのシステムでは、この第2の機能は、当該当事者に属するブロックチェーン150全体に散在している様々なトランザクション152の出力において定義された額を照合することを含む。
【0038】
様々なクライアント機能が、所与のクライアントアプリケーション105に統合されるものとして説明され得るが、必ずしもこれに限定されず、代わりに、本明細書で説明される任意のクライアント機能は、例えば、APIを介してインターフェースする、または一方が他方へのプラグインである2つ以上の別個のアプリケーション一式において実装され得ることに留意されたい。より一般的には、クライアント機能は、アプリケーション層もしくはオペレーティングシステムなどの下位層、またはこれらの任意の組合せにおいて実装され得る。以下では、クライアントアプリケーション105に関して説明するが、これに限定されないことが理解されよう。
【0039】
各コンピュータ機器102上のクライアントアプリケーションまたはソフトウェア105のインスタンスは、ネットワーク106のブロックチェーンノード104のうちの少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能はトランザクション152をネットワーク106に送信することができる。クライアント105はまた、それぞれの当事者103が受信者である任意のトランザクションについてブロックチェーン150にクエリを行うためにブロックチェーンノード104にコンタクトすることができる(または、実施形態では、ブロックチェーン150は、部分的にその公開性(public visibility)を通じてトランザクションにおける信頼を提供する公共施設であるので、実際にブロックチェーン150における他の当事者のトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルにしたがってトランザクション152を定式化し、送信するように構成される。上述したように、各ブロックチェーンノード104は、ブロックチェーンノードプロトコルにしたがってトランザクション152を妥当性確認し、トランザクション152をフォワードして、それらをブロックチェーンネットワーク106全体に伝搬するように構成されたソフトウェアを実行する。トランザクションプロトコルおよびノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルに従い(go with)、一緒に所与のトランザクションモデルを実装する。ブロックチェーン150内のすべてのトランザクション152に対して同じトランザクションプロトコルが使用される。ネットワーク106内のすべてのノード104によって同じノードプロトコルが使用される。
【0040】
所与の当事者103、例えばアリスが、ブロックチェーン150に含まれるべき新しいトランザクション152jを送信することを望むとき、アリスは、関連トランザクションプロトコルにしたがって(アリスのクライアントアプリケーション105内のウォレット機能を使用して)新しいトランザクションを定式化する。次いで、アリスは、クライアントアプリケーション105から、アリスが接続されている1つまたは複数のブロックチェーンノード104にトランザクション152を送信する。例えば、これは、アリスのコンピュータ102に最良に接続されたブロックチェーンノード104であり得る。任意の所与のブロックチェーンノード104は、新しいトランザクション152jを受信すると、ブロックチェーンノードプロトコルおよびそのそれぞれの役割にしたがってそれを処理する。これは、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たすかを最初にチェックすることを含み、その例については、以下でより詳細に説明する。いくつかのトランザクションプロトコルでは、妥当性確認のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であり得る。代替的に、条件は、単にノードプロトコルの組込み特徴であってもよいし、スクリプトとノードプロトコルとの組合せによって定義されてもよい。
【0041】
新たに受信されたトランザクション152jが、有効であるとみなされるためのテストにパスすることを条件として(すなわち、それが「妥当性確認される」ことを条件として)、トランザクション152jを受信する任意のブロックチェーンノード104は、そのブロックチェーンノード104において維持されるトランザクションの順序付きセット154に新たな妥当性確認済みトランザクション152を追加する。さらに、トランザクション152jを受信する任意のブロックチェーンノード104は、妥当性確認済みトランザクション152をネットワーク106内の1つまたは複数の他のブロックチェーンノード104へと前方に伝搬する。各ブロックチェーンノード104は同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、ネットワーク106全体にわたってすぐに伝搬されることを意味する。
【0042】
所与のブロックチェーンノード104において維持される保留中のトランザクションの順序付きプール154に承認されると、そのブロックチェーンノード104は、新しいトランザクション152を含むそれぞれのプール154の最新バージョンに対してプルーフオブワークパズルを解こうと競い始める(他のブロックチェーンノード104が、トランザクションの異なるプール154に基づいてパズルを解こうと試みている可能性があるが、どのノードでも最初に解いたものが、最新のブロック151に含まれるトランザクションのセットを定義することを想起されたい。最終的に、ブロックチェーンノード104は、アリスのトランザクション152jを含む順序付きプール154の一部についてパズルを解くことになる。)新しいトランザクション152jを含むプール154に対してプルーフオブワークが行われると、それは普遍的にブロックチェーン150内のブロック151のうちの1つの一部となる。各トランザクション152は、先のトランザクションへ戻るポインタを含むので、トランザクションの順序も不変的に記録される。
【0043】
異なるブロックチェーンノード104は、最初、所与のトランザクションの異なるインスタンスを受信し得るので、1つのインスタンスが新しいブロック151において公開される(この時点で、公開されたインスタンスが唯一の有効なインスタンスであることにすべてのブロックチェーンノード104が同意している)までは、どのインスタンスが「有効」であるかについて相反する見解を有する。ブロックチェーンノード104が1つのインスタンスを有効として受け入れ、次いで、別のインスタンスがブロックチェーン150に記録されていることを発見した場合、そのブロックチェーンノード104は、これを受け入れなければならず、最初に受け入れたインスタンス(すなわち、ブロック151で公開されていないもの)を破棄する(すなわち、無効として扱う)。
【0044】
いくつかのブロックチェーンネットワークによって動作される代替タイプのトランザクションプロトコルは、アカウントベースのトランザクションモデルの一部として、「アカウントベース」プロトコルと呼ばれ得る。アカウントベースの場合、各トランザクションは、過去のトランザクションのシーケンスにおける先行するトランザクションのUTXOを参照することによってではなく、絶対アカウント残高を参照することによって転送されるべき額を定義する。すべてのアカウントの現在の状態は、ブロックチェーンとは別個にそのネットワークのノードによって記憶され、絶えず更新される。そのようなシステムでは、トランザクションは、アカウントの実行中のトランザクションタリー(「ポジション」とも呼ばれる)を使用して順序付けられる。この値は、送信者によってその暗号署名の一部として署名され、トランザクション参照計算の一部としてハッシュされる。加えて、トランザクションにおけるオプションのデータフィールドも署名することができる。このデータフィールドは、例えば、前のトランザクションIDがデータフィールドに含まれている場合、前のトランザクションを指し示し得る。
【0045】
UTXOベースのモデル
図2は、例示的なトランザクションプロトコルを示す。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と略記される)は、ブロックチェーン150の基本的なデータ構造である(各ブロック151は1つまたは複数のトランザクション152を含む)。以下では、出力ベースまたは「UTXO」ベースのプロトコルを参照して説明する。しかしながら、これはすべての可能な実施形態に限定されない。例示的なUTXOベースのプロトコルは、ビットコインを参照して説明されるが、他の例示的なブロックチェーンネットワーク上でも等しく実装され得ることに留意されたい。
【0046】
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つまたは複数の入力202および1つまたは複数の出力203を含むデータ構造を含む。各出力203は、未使用トランザクション出力(UTXO)を含み得、これは、(UTXOがまだ償還されていない場合)別の新しいトランザクションの入力202のソースとして使用され得る。UTXOは、デジタル資産の額を指定する値を含む。これは、分散型台帳上のトークンの設定数を表す。UTXOはまた、他の情報の中でも、元となるトランザクションのトランザクションIDを含み得る。トランザクションデータ構造は、入力フィールド(複数可)202および出力フィールド(複数可)203のサイズを示すインジケータを含み得るヘッダ201も含み得る。ヘッダ201はまた、トランザクションのIDを含み得る。実施形態では、トランザクションIDは、(トランザクションID自体を除く)トランザクションデータのハッシュであり、ノード104にサブミットされる生のトランザクション152のヘッダ201に記憶される。
【0047】
アリス103aが、当該デジタル資産の額をボブ103bに転送するトランザクション152jを作成することを望むとする。図2では、アリスの新しいトランザクション152jは「Tx1」とラベル付けされている。これは、シーケンス内の先行するトランザクション152iの出力203においてアリスにロックされたデジタル資産の額を取り、これのうちの少なくとも一部をボブに転送する。先行するトランザクション152iは、図2では「Tx0」とラベル付けされている。Tx0およびTx1は、単なる任意のラベルである。それらは、Tx0がブロックチェーン151内の最初のトランザクションであること、またはTx1がプール154内のすぐ次のトランザクションであることを必ずしも意味するものではない。Tx1は、アリスにロックされた未使用の出力203を依然として有する任意の先行する(すなわち先の)トランザクションを指し示すことができる。
【0048】
先行するトランザクションTx0は、アリスが新しいトランザクションTx1を作成した時点では、または少なくともアリスがそれをネットワーク106に送信する時点までには、すでに妥当性確認されブロックチェーン150のブロック151に含まれている可能性がある。それは、その時点でブロック151のうちの1つにすでに含まれていてもよいし、順序付きセット154で依然として待機していてもよく、この場合、すぐに新しいブロック151に含まれることになる。代替的に、Tx0およびTx1を作成してネットワーク106に一緒に送信することもできるし、ノードプロトコルが「オーファン」トランザクションのバッファリングを可能にする場合には、Tx0をTx1の後に送信することさえもできる。トランザクションのシーケンスの文脈において本明細書で使用される「先行する」および「後続の」という用語は、トランザクション内で指定されているトランザクションポインタ(どのトランザクションがどの他のトランザクションを指し示すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、同様に、「先行するもの(predecessor)」および「後続するもの(successor)」、または「先の」および「後の」、「親」および「子」などと置き換えられ得る。これは、それらの作成、ネットワーク106への送信、または任意の所与のブロックチェーンノード104への到着の順序を必ずしも意味するものではない。それにもかかわらず、先行するトランザクション(先のトランザクションまたは「親」)を指し示す後続するトランザクション(後のトランザクションまたは「子」)は、親トランザクションが妥当性確認されない限り、妥当性確認されない。親より前にブロックチェーンノード104に到着する子は、オーファンとみなされる。それは、ノードプロトコルおよび/またはノード挙動に応じて、親を待つために特定の時間バッファされるかまたは破棄され得る。
【0049】
先行するトランザクションTx0の1つまたは複数の出力203のうちの1つは、本明細書ではUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタル資産の額を指定する値と、ロックスクリプトとを含み、ロックスクリプトは、後続のトランザクションが妥当性確認され、したがってUTXOが正常に償還されるために、後続のトランザクションの入力202内のロック解除スクリプトが満たさなければならない条件を定義する。典型的には、ロックスクリプトは、その額を特定の当事者(それが含まれるトランザクションの受益者)にロックする。すなわち、ロックスクリプトは、典型的には、後続のトランザクションの入力内のロック解除スクリプトに、先行するトランザクションがロックされる当事者の暗号署名が含まれるという条件を含むロック解除条件を定義する。
【0050】
ロックスクリプト(通称scriptPubKey)は、ノードプロトコルによって認識されるド主固有言語で書かれたコードの一部分である。そのような言語の特定の例は、ブロックチェーンネットワークによって使用される「スクリプト(Script)」(大文字S)と呼ばれる。ロックスクリプトは、トランザクション出力203を使用するためにどの情報が必要とされるか、例えばアリスの署名の必要性、を指定する。ロック解除スクリプトはトランザクションの出力に現れる。ロック解除スクリプト(通称scriptSig)は、ロックスクリプト基準を満たすのに必要な情報を提供するド主固有言語で書かれたコードの一部分である。例えば、それはボブの署名を含み得る。ロック解除スクリプトは、トランザクションの入力202に現れる。
【0051】
つまり、図示の例では、Tx0の出力203内のUTXO0は、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後続のトランザクションが有効となるために)アリスの署名Sig PAを必要とするロックスクリプト[Checksig PA]を含む。[Checksig PA]は、アリスの公開鍵-秘密鍵ペアの公開鍵PAの表現(すなわち、ハッシュ)を含む。Tx1の入力202は、(例えば、実施形態ではトランザクションTx0全体のハッシュであるそのトランザクションID、TxID0によって)Tx1を指し示すポインタを含む。Tx1の入力202は、Tx0の任意の他の可能な出力の中からUTXO0を識別するために、Tx0内のUTXO0を識別するインデックスを含む。Tx1の入力202は、アリスが鍵ペアのアリスの秘密鍵をデータの所定の部分(暗号では「メッセージ」と呼ばれることもある)に適用することによって作成された、アリスの暗号署名を含むロック解除スクリプト<Sig PA>をさらに含む。有効な署名を提供するためにアリスによって署名される必要があるデータ(または「メッセージ」)は、ロックスクリプトによって、またはノードプロトコルによって、またはこれらの組合せによって定義され得る。
【0052】
新しいトランザクションTx1がブロックチェーンノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトおよびロック解除スクリプトを一緒に実行して、ロック解除スクリプトがロックスクリプトで定義されている条件(この条件は1つまたは複数の基準を含み得る)を満たすかどうかをチェックすることを含む。実施形態では、これは2つのスクリプトを連結することを含む:
<Sig PA> <PA> || [Checksig PA]
ここで、「||」は連結を表し、「<…>」はデータをスタックに置くことを意味し、「[…]」はロックスクリプト(この例ではスタックベースの言語)で構成される関数である。同等に、スクリプトは、スクリプトを連結するのではなく、共通スタックを用いて次々に実行され得る。いずれにしても、一緒に実行されるとき、スクリプトは、Tx0の出力内のロックスクリプトに含まれるようなアリスの公開鍵PAを使用して、Tx1の入力内のロック解除スクリプトが、データの予想される部分に署名したアリスの署名を含むことを認証する。データの予想される部分自体(「メッセージ」)はまた、この認証を実行するために含まれる必要がある。実施形態では、署名されたデータは、Tx1の全体を含む(つまり、平文のデータの署名された部分を指定する別個の要素は、すでに本質的に存在するので、含まれる必要はない)。
【0053】
公開-秘密暗号法による認証の詳細は、当業者によく知られている。基本的に、アリスが自身の秘密鍵を使用してメッセージに署名した場合、アリスの公開鍵および平文のメッセージが与えられると、ノード104などの別のエンティティは、メッセージがアリスによって署名されたものに違いないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、これを署名としてメッセージにタグ付けすることを含み、これにより、公開鍵の任意の保持者が署名を認証することができる。したがって、データの特定の部分またはトランザクションの一部などに署名することへの本明細書におけるいかなる参照も、実施形態では、データのその部分またはトランザクションの一部のハッシュに署名することを意味し得ることに留意されたい。
【0054】
Tx1内のロック解除スクリプトが、Tx0のロックスクリプト内で指定されている1つまたは複数の条件を満たす場合(つまり、図示の例では、アリスの署名がTx1内で提供され、認証された場合)、ブロックチェーンノード104は、Tx1が有効であるとみなす。これは、ブロックチェーンノード104が、保留中のトランザクションの順序付きプール154にTx1を追加することとなることを意味する。ブロックチェーンノード104はまた、トランザクションTx1をネットワーク106内の1つまたは複数の他のブロックチェーンノード104にフォワードして、トランザクションTx1がネットワーク106全体に伝搬されるようにする。Tx1が妥当性確認されてブロックチェーン150に含まれると、これは、Tx0からのUTXO0を使用済みとして定義する。Tx1は、未使用トランザクション出力203を使用する場合にのみ有効になり得ることに留意されたい。別のトランザクション152によってすでに使用された出力を使用しようとする場合、Tx1は、他のすべての条件が満たされたとしても無効になる。したがって、ブロックチェーンノード104はまた、先行するトランザクションTx0内の参照されたUTXOがすでに使用済みであるかどうか(すなわち、それが別の有効なトランザクションへの有効な入力をすでに形成したかどうか)をチェックする必要がある。これは、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である1つの理由である。実際には、所与のブロックチェーンノード104は、どのトランザクション152内のどのUTXO203が使用されたかをマーキングする別個のデータベースを維持し得るが、最終的には、UTXOが使用されたかどうかを定義するものは、ブロックチェーン150内の別の有効なトランザクションへの有効な入力をすでに形成しているかどうかである。
【0055】
所与のトランザクション152のすべての出力203において指定された総額が、そのすべての入力202によって指し示された総額よりも大きい場合、これは、ほとんどのトランザクションモデルにおいて無効性の別の根拠となる。したがって、そのようなトランザクションは、伝搬されることも、ブロック151に含まれることもないであろう。
【0056】
UTXOベースのトランザクションモデルでは、所与のUTXOが全体として使用される必要があることに留意されたい。UTXOにおいて使用済みとして定義された額の一部は、別の一部が使用されていても、「後に残す」ことはできない。しかしながら、次のトランザクションの複数の出力間でUTXOからの額を分割することはできる。例えば、Tx0内のUTXO0において定義された額を、Tx1内の複数のUTXO間で分割することができる。したがって、アリスが、UTXO0において定義された額のすべてをボブに与えたくない場合、アリスは、リマインダを使用して、Tx1の第2の出力において自分自身に残りを与えるか、または別の当事者に支払うことができる。
【0057】
実際には、アリスはまた、通常、アリスのトランザクション104をブロック151に成功裏に含めるビットコインノード104に対する手数料を含める必要がある。アリスがそのような手数料を含めない場合、Tx0は、ブロックチェーンノード104によって拒否され得、したがって、技術的に有効であっても、伝搬されず、ブロックチェーン150に含まれない可能性がある(ノードプロトコルは、ブロックチェーンノード104が望まない場合にトランザクション152を受け入れることを強制しない)。いくつかのプロトコルでは、トランザクション手数料は、それ自体の別個の出力203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、所与のトランザクション152の入力(複数可)202によって指し示される総額と出力(複数可)203で指定されている総額との間の任意の差が、トランザクションを公開するブロックチェーンノード104に自動的に与えられる。例えば、UTXO0へのポインタがTx1への唯一の入力であり、Tx1は唯一の出力UTXO1を有するとする。UTXO0において指定されたデジタル資産の額がUTXO1において指定された額よりも大きい場合、その差分は、UTXO1を含むブロックを生成するためのプルーフオブワーク競争に勝つノード104によって割り当てられ得る。しかしながら、代替的にまたは追加的に、トランザクション手数料がトランザクション152のUTXO203のうちのそれ自体の1つにおいて明示的に指定され得ることは必ずしも除外されない。
【0058】
アリスおよびボブのデジタル資産は、ブロックチェーン150内のどこかで任意のトランザクション152においてそれらにロックされたUTXOから構成される。したがって、典型的には、所与の当事者103の資産は、ブロックチェーン150全体にわたる様々なトランザクション152のUTXO全体に散在している。ブロックチェーン150内のどこにも、所与の当事者103の総残高を定義する数字は記憶されない。クライアントアプリケーション105におけるウォレット機能の役割は、それぞれの当事者にロックされ、別の前方のトランザクションでまだ使用されていない様々なUTXOのすべての値を一緒に照合することである。これは、ビットコインノード104のいずれかに記憶されたブロックチェーン150のコピーにクエリを行うことによって行うことができる。
【0059】
スクリプトコードは、多くの場合、概略的に(すなわち、正確な言語を使用せずに)表されることに留意されたい。例えば、特定の機能を表すためにオペレーションコード(オペコード)が使用され得る。「OP_...」は、スクリプト言語の特定のオペコードを指す。例として、OP_RETURNは、ロックスクリプトの最初にOP_FALSEが先行するときに、トランザクション内にデータを記憶することができ、それによってデータをブロックチェーン150内に不変的に記録することができる、トランザクションの使用不可能な出力を作成するスクリプト言語のオペコードである。例えば、データは、ブロックチェーンに記憶することが望まれる文書を含み得る。
【0060】
典型的には、トランザクションの入力は、公開鍵PAに対応するデジタル署名を含む。実施形態において、これは、楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、データの特定の一部分に署名する。いくつかの実施形態では、所与のトランザクションについて、署名は、トランザクション入力の一部、およびトランザクション出力の一部または全部に署名する。署名された出力の特定の部分は、SIGHASHフラグに依存する。SIGHASHフラグは、通常、どの出力が署名されるかを選択するために署名の最後に含まれる4バイトコードである(したがって、署名時に固定される)。
【0061】
ロックスクリプトは、典型的には、それぞれのトランザクションがロックされる当事者の公開鍵を含むという事実を指して、「scriptPubKey」と呼ばれることがある。ロック解除スクリプトは、典型的には、それが対応する署名を供給するという事実を指して「scriptSig」と呼ばれることがある。しかしながら、より一般的には、UTXOが償還されるための条件が署名を認証することを含むことは、ブロックチェーン150のすべてのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語を使用して、任意の1つまたは複数の条件を定義することができる。したがって、より一般的な用語「ロックスクリプト」および「ロック解除スクリプト」が好まれ得る。
【0062】
図1に示すように、アリスおよびボブのコンピュータ機器102a、120bの各々上のクライアントアプリケーションは、それぞれ、追加の通信機能を含み得る。この追加の機能により、(いずれかの当事者または第三者の扇動で)アリス103aは、ボブ103bと別個のサイドチャネル107を確立することができる。サイドチャネル107は、ブロックチェーンネットワークとは別でのデータの交換を可能にする。そこのような通信は、「オフチェーン」通信と呼ばれることがある。例えば、これは、当事者の一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションが(まだ)ブロックチェーンネットワーク106に登録されることなく、またはチェーン150上に進むことなく、アリスとボブとの間でトランザクション152を交換するために使用され得る。このようにトランザクションを共有することは、「トランザクションテンプレート」の共有と呼ばれることがある。トランザクションテンプレートは、完全なトランザクションを形成するために必要とされる1つまたは複数の入力および/または出力を欠いていてもよい。代替的にまたは追加的に、サイドチャネル107は、鍵、交渉された額または条件、データコンテンツなどの任意の他のトランザクション関連データを交換するために使用され得る。
【0063】
サイドチャネル107は、ブロックチェーンネットワーク106と同じパケット交換ネットワーク101を介して確立され得る。代替的にまたは追加的に、サイドチャネル301は、モバイルセルラーネットワークなどの異なるネットワーク、またはローカルワイヤレスネットワークなどのローカルエリアネットワーク、またはさらにはアリスのデバイス102aとボブのデバイス102bとの間の直接のワイヤードまたはワイヤレスリンクを介して確立され得る。一般に、本明細書のどこでも、参照されるサイドチャネル107は、「オフチェーン」すなわちブロックチェーンネットワーク106とは別でデータを交換するための1つまたは複数のネットワーキング技術または通信媒体を介した任意の1つまたは複数のリンクを含み得る。2つ以上のリンクが使用される場合、全体としてのオフチェーンリンクの束または集合は、サイドチャネル107と呼ばれ得る。したがって、アリスおよびボブがサイドチャネル107上で情報またはデータの特定の部分などを交換するといわれている場合、これは、これらのデータの部分のすべてが全く同じリンクまたは同じタイプのネットワーク上で送信されなければならないことを必ずしも意味するものではないことに留意されたい。
【0064】
BIP PREPARATIVES
以下では、鍵を生成し、鍵を導出するためのアルゴリズムの例として、いくつかのBIPプロトコルのプロパティを説明する。実施形態では、現在開示されている方式は、BIPプロトコルの改良として適用され得るが、より一般的には、開示される方式は、鍵が導出されるシードを生成するための任意のタイプのアルゴリズムに適用可能であり得ることが理解されよう。
【0065】
シード生成
BIP32では、シードSは、PRNGから生のビット列として生成される。そのようなシードのビットサイズは、マスタ鍵を導出するためにシードが提供するエントロピーのサイズに等しい。推奨サイズは256ビットである。ユーザは、生のシードSを書き留めて、安全に保管し、ウォレットを回復または共有する必要があるときにそれを通信することが要求される。人間は、バイナリ文字列を直接操作する場合、これらのタスクに失敗する傾向がある。
【0066】
BIP39では、最初にPRNGから生のビット列が生成され、「許容されるエントロピーのサイズ」の示された範囲は、128~256ビットである。そして、2048=211個のワードを含む辞書が提案されており、ここで、各ワードは、異なる11ビットのバイナリ値に対応する。次に、初期エントロピーは、最大24個のワードから構成されるニーモニックフレーズに変換される。以下では、最初に生成された生のシードとニーモニックフレーズとを区別するために、それらは、それぞれSおよびSWで示される。SをSWに変換するために、最初にSを11ビットの部分文字列に分割する。チェックサムを最後の部分文字列に付加して、11ビット長にする。各部分文字列は、辞書の対応するワードで置き換えられ、Sは、これらのワードのシーケンスとして提示される。ワードのSWの長さとSのビットサイズとの間の関係を以下の表に示す。
【表1】
【0067】
ワードのランダムシーケンスを通信することは、バイナリ文字列を通信するよりもユーザフレンドリーである。残る課題は、セキュリティとユーザビリティとが相反する目的であることである。ウォレットセキュリティは、シードエントロピーの増加とともに高まる。これにより、記憶がますます困難または実行不可能になる程度までニーモニックフレーズの長さが増加する。この課題のバランスをとるために、BIP39は、許容されるエントロピーに上限を課す。
【0068】
鍵ツリー導出におけるシードの役割
生成されたシードSは、マスタ秘密鍵skmasterを導出する際に必要とされるエントロピーを提供する。
この導出は、BIP32に記載されているように、アルゴリズム1に従う。
【0069】
アルゴリズム1.マスタ鍵導出
・ I=HMAC_SHA512(Key=“Bitcon seed”,Data=S)を計算する。
・ Iを2つの32バイト列に分割する:ILおよびIR
・ parse256(IL)を使用して、左の32バイト列を(最上位バイトから)256ビットの数値として解釈する。
この数値がマスタシークレット鍵skmasterである。
・ parse256(IR)を使用して、右の32バイト列を256ビットの数値として解釈する。
これは、マスタチェーンコードcmasterである。
・ skmaster=0または≧nである場合、skmasterは無効であり、新しいシードSが生成される。
【0070】
次に、シードSからエントロピーが埋め込まれている、マスタ秘密鍵skmasterおよびチェーンコードcmasterを使用して、鍵ツリーの残りを導出する。アルゴリズム2では、skmasterおよびcmasterは、最初の親の鍵skparentおよびチェーンコードcparentである。次いで、鍵導出のチェーンにおいて、親が子を生み、次に子が親になる。子の秘密鍵skchild,iおよびチェーンコードcchild,iは以下のように導出される。
【0071】
アルゴリズム2.鍵ツリー導出:強化された子鍵および強化されていない子鍵
・ 鍵インデックスi≧231である場合、子は、強化された鍵であり、以下から導出される:
【数1】
ここで、ser256(skparent)は、整数skparentを(最上位バイトから)32バイトのシーケンスにシリアライズする。また、ser32(i)は、32ビットの符号なし整数iを4バイトのシーケンスにシリアライズし、0×00で、ser256(skpar)を33バイトの長さにパッディングする。
・ 鍵インデックスi<231である場合、子は、強化されていない鍵であり、以下から導出される:
【数2】
ここで、serp(skparent・G)は、点座標skparent・G=(x,y)を圧縮形式のバイト列(0×02または0×03)||ser256(x)にシリアライズし、ここで、ヘッダバイトは、省略されたy座標の符号に依存する。
・ Iを2つの32バイト列に分割する:ILおよびIR
・ 子鍵skchild,i=parse256(IL)+skparent(mod n)を返す、ここで、n=である。
・ 子チェーンコードcchild,i=IRを返す。
・ parse256(IL)≧nまたはskchild,i=0である場合、skchild,iは無効であり、iの次の値でアルゴリズムを継続する(この確率は≦2-127である)。
【0072】
バイオロックシード
本発明の実施形態は、シードまたは何らかの他のシークレット値がバイオメトリックボールトシステムにおいてブロックチェーン上に記憶されることを可能にする。システム内のバイオメトリックボールトは、ユーザの生体特徴に基づいて、例えば、ユーザの指紋(複数可)に基づいてロックされ、したがって、それらに基づいてのみロック解除することができる。すなわち、例えば、ライブ読み取り中に指紋から生体情報が抽出され、ボールトシステム内のシードをロックするために使用される。したがって、ボールトシステムは、ユーザの生体データに一意にリンクされる。次いで、ボールトシステムは、別の読み取りに基づいて、例えば、ユーザの指紋をスキャンすることによって、後でロック解除され得る。後述するように、ボールトシステムはまた、例えば、同じもしくは異なるタイプの、および/または同じもしくは異なるユーザの複数のバイオメトリック読み取り値に基づいて生成され得る。
【0073】
簡潔にするために、本発明の実施形態は、上記で説明したように、アリス103aを参照して説明される。すなわち、本発明の実施形態は、アリス103aによって実行され得る。これは、実施形態がアリス103aなどのユーザによってのみ実行可能であることを意味しないことに留意されたい。むしろ、本発明の実施形態は、上記のアリス103aに起因するアクションのうちのいくつかまたはすべてを実行するように構成されたコンピューティングデバイスによって実行され得る。同様に、実施形態は、上記のボブ103bに起因するアクションのうちのいくつかまたはすべてを実行するように構成されたクライアントアプリケーションを実行するコンピューティングデバイスを操作するユーザによって実行され得る。また、実施形態が、ユーザ以外の当事者、例えば、1つまたは複数の物理サーバユニットを備えるサーバ、さらにはデータセンタ全体を操作する当事者によって実行され得ることも除外されない。
【0074】
一般に、方法は、少なくとも1つのバイオメトリック読み取り値を取得するステップと、少なくとも1つのバイオメトリック読み取り値において識別された生体特徴に基づいてボールトシステムを生成するステップとを含む。いくつかの例では、ボールトシステムを生成するために、各々がそれ自体のそれぞれの生体特徴を含む2つ以上のバイオメトリック読み取り値が使用され得る。バイオメトリック読み取りは、それぞれのバイオメトリック特性の観察、すなわち測定、記録などを指す。例えば、バイオメトリック特性は、指紋、虹彩、少なくとも1つの指静脈を含む指静脈パターン、少なくとも1つの手首静脈を含む手首静脈パターン、顔パターンなどであり得る。特定の例として、指紋は、例えば、モバイルデバイス内に埋め込まれた指紋スキャナを使用して「読み取る」ことができる。同様に、虹彩は、虹彩スキャナ、またはより一般的には眼球スキャナを使用して読み取ることができる。
【0075】
ボールトシステムが、単一のバイオメトリック読み取り値、例えば、指紋に基づいて生成され、したがってそれに基づいてロック解除されることとなる場合を考慮する(「指紋」という用語は、本明細書では、親指の指紋(thumbprint)も含むように使用されることに留意されたい)。これは、非限定的であり、本教示は、一般に、複数のバイオメトリック読み取り値を使用する場合に適用されることに留意されたい。
【0076】
アリス103aは、例えば、自分の携帯電話またはラップトップを使用して、自身の指紋をスキャンする。アリス103a、厳密にはアリスのデバイスは、指紋内の複数の生体特徴を識別する。
【0077】
図3は、指紋内に存在し得る例示的な生体特徴、例えば、隆線、点、囲い、島などを示す。指紋の上にオーバーレイされたアライメント基準フレームも示されている。この例では、セクションは同心円であり、各同心円は1つまたは複数の特徴を含む。
【0078】
生体特徴を識別することは、読み取り内のありとあらゆる特徴を識別することを必ずしも意味するものではないが、それは除外されないことに留意されたい。例えば、いくつかの例では、特定のタイプの生体特徴のみが識別される。識別されることとなる特徴のタイプは、一般性の損失なしに適合させることができる。
【0079】
識別された生体特徴を使用して、アリス103aは、1つまたは複数の第1のバイオメトリックボールトを生成する。各第1のバイオメトリックは、それぞれの第1レベルシークレット値をロックするために使用される。さらに後述するように、いくつかの実施形態では、第1レベルシークレット値は、例えば、秘密鍵を導出するためのシードとして使用され得る。他の実施形態では、第1レベルシークレット値を他の第1レベルシークレット値と一緒に使用して第2のシークレット値を生成し得、この第2のシークレット値を使用して秘密鍵が導出され得る。
【0080】
各第1のバイオメトリックボールトは、特定の生体特徴、例えば、指紋内のループに対応する。対応する生体特徴は、以下では、その第1のバイオメトリックボールトのターゲット特徴と呼ばれる。いくつかの例では、第1のバイオメトリックボールトは、各生体特徴について、または特定のタイプの生体特徴、例えば、ループのみ、について生成され得る。
【0081】
各第1のバイオメトリックボールトは、複数のバイナリデータペアを含む。各バイナリデータペアは、第1のバイナリ値および第2のバイナリ値を含む。第1のバイナリ値のうちの少なくともいくつかは、ターゲット生体特徴と、他の識別された生体特徴のうちのいくつかまたはすべてとに基づいて生成される。より具体的には、第1のバイナリ値のうちの少なくともいくつかは、識別された特徴のそれぞれの他の特徴に対するターゲット特徴のそれぞれのバイナリ表現(以下では「第1のバイナリ表現」と呼ばれる)である。例えば、第1の他の特徴に対するターゲット特徴のバイナリ表現、第2の他の特徴に対するターゲット特徴のバイナリ表現、以下同様である。
【0082】
これらの第1のバイナリ表現は、(互いに対する)マニューシャの相対的な表現およびアラインされていない表現である。後述するように、各ボールトについて、各ボールト内のデータペアは、最初にランダム関数変換をマニューシャに適用した後に生成されることが好ましい。
【0083】
したがって、第2のバイナリ値のうちの少なくともいくつかは、それぞれの第1のバイナリ表現と対にされる。それぞれの第1のバイナリ表現と対にされるそれらの第2のバイナリ値は、その第1のバイオメトリックボールトによってロックされた第1レベルシークレット値を再構築するために使用され得る。第1レベルシークレット値を再構築するためには、少なくともしきい値数の第2のバイナリ値が必要である。いくつかの例では、それらの第2のバイナリ値のすべてが必要とされる。
【0084】
より詳細に後述するように、第1のバイナリ値のうちのいくつかは、模擬生体特徴のバイナリ表現であり得る。生体特徴は、生体特徴に実際には存在しない特徴、すなわち、人工的に生成されたものであり、ユーザの実際のバイオメトリック特性の一部として存在しない。これらの特定のバイナリ表現は、バイオメトリック読み取り値に実際に存在する生体特徴に基づいて生成される第1のバイナリ表現と区別するために、以下では「模擬バイナリ表現」と呼ばれる。各模擬バイオメトリック表現は、第1の生体特徴と同じフォーマットをとるので、ボールトに記憶されたときに両者が区別できない。さらに、各模擬バイオメトリック表現は、模擬の第2のバイナリ値と対にされる。模擬の第2のバイナリ値は、第1レベルシークレット値を再構築するために使用することができない。追加的に、第1レベルシークレット値を再構築しようとする際に模擬の第2のバイナリ値が使用された場合、その試みは第1レベルシークレット値をもたらさない。すなわち、誤った値が導出されることになる。模擬生体特徴は、すべての場合に必要とされるわけではないことに留意されたい。
【0085】
これらの場合、すべてのボールトは、そのような模擬バイナリ表現を含み、好ましくは、ボールト内に少なくとも1:10の割合で、例えば、30個の実際のバイナリ表現と300個の模擬バイナリ表現とが存在する。模擬バイナリ表現は、機能的に変換された実際の生体特徴の、模擬特徴に対する相対位置に基づく(模擬特徴は、バイオ特徴(実際または模擬のいずれか)間の最小距離が、異なる特徴として認識するための物理的しきい値を上回るように、反復的に追加される)。実際のバイナリ表現は、機能的に変換された実際の生体特徴の、別の実際の特徴に対する相対位置に基づく。
【0086】
アリス103aは、1つまたは複数のブロックチェーントランザクションを生成する。各ブロックチェーントランザクションは、ブロックチェーン150上にそれぞれのボールトを、またはブロックチェーン上にボールトのそれぞれのスライス(すなわち、分割)を記憶するために使用される。いくつかの事例では、アリス103aは、ブロックチェーントランザクション内にそれぞれの第1のバイオメトリックボールトを含み、ブロックチェーントランザクション(複数可)をブロックチェーンネットワーク106に送信する。他の事例では、アリス103aは、1つまたは複数の第1のバイオメトリックボールトを2つ以上のスライスに分割し、次いで、各スライスを異なるブロックチェーントランザクションに含める。次いで、これらのトランザクションがブロックチェーンネットワーク106に送信される。
【0087】
他の実施形態では、アリス103aは、第1のバイオメトリックボールトごとにそれぞれの第2のバイオメトリックボールトを生成する。各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含む。後述するように、各第2のバイオメトリックボールトは、さらなる情報を含み得る。第2のバイオメトリックボールト、または第2のバイオメトリックボールトのスライスは、ブロックチェーンネットワーク106に送信される前に異なるトランザクションに含まれる。
【0088】
いくつかの事例では、各第1または第2のバイオメトリックボールトは、それぞれのトランザクションに含まれる前に暗号化される。第1のバイオメトリックボールトまたは第2のバイオメトリックボールトがスライスに分割される場合、それらのスライスが暗号化され得る。
【0089】
各第1のバイオメトリックボールトについて、各第1のバイナリ表現は、それぞれの第1のベクトルに基づいて生成され得、ここで、各第1のベクトルは、それぞれの他の識別された特徴に対するターゲット生体特徴に基づいて生成される。第1のベクトルは、別の識別された特徴に対するターゲット生体特徴を記述する。例えば、第1のベクトルは、別の識別された特徴に対するターゲット特徴の相対位置、相対角度、および/または相対的な向きを記述し得る。いくつかの事例では、別の識別された特徴に対するターゲット特徴の相対位置、相対角度、および/または相対的な向きのそれぞれの第2のバイナリ表現が生成され、それぞれの第2のバイナリ表現(複数可)を使用して、それぞれの第1のバイナリ表現を生成する。例えば、第2のバイナリ表現は、連結されるか、または他の方法で組み合わされ得る。
【0090】
第1のバイナリ表現は、アライメントフリー型2値化技法を使用して生成され得る。このような技法は、中心基準フレームに対する各マニューシャのアライメントを考慮しない。代わりに、それは、図4に示されるように、マニューシャ特徴を他のマニューシャ特徴と相対的に考慮する。図4(LHS)は、他のマニューシャ特徴によって囲まれたマニューシャ特徴を示し、図4(RHS)は、他のマニューシャに対するマニューシャの位置を示す。
【0091】
マニューシャをMiとし、それを、マニューシャMjに関連して(NM-1)個のペア極性ベクトル(pear-polar vector)
【数3】
のセットに定量化されるものとする(1≦i,j≦NM)。ここで、図4(LHS)に視覚化されているように、rijは、MiとMjとの間の距離であり、
【数4】
は、Miの向きと
【数5】
の方向との間の反時計回りの角度であり、
【数6】
は、MiとMjとの間の方位差である。マニューシャの向きは、マニューシャ点における隆線に対する接線(図5を参照)、例えば、隆線の端または島に対する接線である(図3を参照)。したがって、各マニューシャMiは、ベクトルのセット
【数7】
で表され、指紋は、マニューシャのセット
【数8】
で表される。次いで、実数値
【数9】
の各々は、整数に切り捨てられ、整数は、バイナリ文字列
【数10】
(すなわち、「第2のバイナリ表現」)として解釈される。これらは、長さlのストリングBijへと連結される。各マニューシャMiは、バイナリ文字列Bij(すなわち、「第1のバイナリ表現」)のセットBiに2値化され、指紋は、セットBに2値化される:
【数11】
【0092】
上記の第1のバイナリ表現は、それぞれの第1のベクトルvijに基づいて生成される。いくつかの実施形態では、第1のバイナリ表現は、第1のベクトルの変換されたバージョンに基づいて生成される。これらの実施形態では、それぞれの変換が第1のベクトルに適用され、変換された第1のベクトルが生成される。変換は、生体特徴間、すなわち、ターゲット生体特徴とそれぞれの他の識別された特徴との間の相関を除去するために適用される。例えば、各変換された第1のベクトルは、それぞれの他の識別された特徴に対するターゲット特徴の相対位置、相対角度、および/または相対的な向きの変換された値を含み得る。
【0093】
変換された第1のベクトルは、それぞれの座標および回転不変特性を(変換されていない)第1のベクトルの値に適用することによって生成され得る。特性は、それぞれの第1のバイオメトリックボールトの各ターゲット生体特徴に固有である。追加的にまたは代替的に、擬似ランダムに生成された変換値を使用して、第1のベクトルの値を変換してもよい。
【0094】
より詳細には、関数変換は、Bi間の相関を防止し、バイナリ構造
【数12】
の無制限の再利用性を可能にするセキュリティ強化である。定量化および2値化の前の各マニューシャMiの関数変換は、以下のように実行することができる。まず、以下のステップを通して、Miの不変値を抽出する。マニューシャMiの周りには、半径re(1≦e≦E)を有するE個の同心円が考慮される。Miの周りの各円eにおいて、Ne個のサンプル点
【数13】
が考慮される。これらの点は、マニューシャMj(1≦j≦(NM-1))に関連せず、Miの向きから反時計回りに円eに沿って均等に分布している(図6および図7参照)。
【0095】
座標不変および回転不変特性
【数14】
が各Miについて評価され、ここで、δikは、第kのサンプル点における隆線方向とMiの向きとの間の差である。次いで、長さΣ(Ne)のランダムベクトルuiが生成され、距離変化(DC)値および角度変化(AC)値が、δiおよびuiの関数として、すなわち、DCF(δi,ui)およびACF(δi,ui)として生成される。その更新された定量化および2値化の前に、これらの変更DCおよびACをマニューシャMiに適用して、マニューシャMiをマニューシャ
【数15】
に変換する。図8は、Miから
【数16】
への一意の変換(δiに起因する)およびランダム変換(uiに起因する)を視覚化したものであり、ここで、Tは、「変換された(transformed)」を表す。
【数17】
【0096】
上述したように、各第1のバイオメトリックボールトは、模擬生体特徴の1つまたは複数のバイナリ表現を含み得る。各模擬特徴には、第1のベクトルと同じフォーマットをとるそれぞれの第2のベクトルが割り当てられ得る。第2のベクトルは、各実際の特徴からの距離が最小になるように割り当てられる。好ましくは、実際の識別された特徴よりも多くの模擬特徴が存在する(識別された特徴は、必ずしも、読み取りに存在するすべての特徴を含まなくてもよいことを想起されたい)。
【0097】

【数18】
【0098】
次に、第2のバイナリ値の生成について説明する。好ましくは、第1レベルシークレット値は擬似ランダム値である。第1レベルシークレット値は、少なくとも第1のしきい値数の要素に分割される。好ましくは、第1レベルシークレット値は、第1のしきい値数を超える数の要素に分割される。第1レベルシークレット値の各要素は、第1の多項式関数の係数として使用される。実際の生体特徴の第1のバイナリ表現について、所与の第1のバイナリ表現と対にされた第2のバイナリ値は、その第1のバイナリ表現を使用して第1の多項式関数を評価することによって生成される。次いで、第1のバイナリ表現と対にされた少なくともしきい値数の第2のバイナリ値が利用可能である場合、多項式補間を使用して第1レベルシークレット値を再構築することができる。
【0099】
より具体的には、アリス103aは、ランダム文字列Siを生成し、それを、Si=si,n-1||…||si,0となるように、長さlのn<NM個のセグメントに分割し得る。次いで、Siを多項式pi(x)=si,n-1n-1+・・・+si,00に符号化する。
【数19】
【0100】
ボールトシステムが、各々がそれぞれの第1レベルシークレット値をロックする複数の第1のバイオメトリックボールトを備える例では、それらの(例えば、一部またはすべての)第1レベルシークレット値は、第2のシークレット値をロック解除するために使用され得る。第2のシークレット値は、擬似ランダム値であることが好ましい。第2のシークレット値は、少なくとも第2のしきい値数の要素に分割される。好ましくは、第2のシークレット値は、第2のしきい値数よりも多い要素に分割される。第2のシークレット値の各要素は、第2の多項式関数の係数として使用される。第2の多項式値は、各第1レベルシークレット値を使用して評価されて、それぞれの結果を生成する。次いで、それぞれの結果は、それぞれの第1レベルシークレット値を含むそれぞれの第1のバイオメトリックボールトを備えるそれぞれの第2のバイオメトリックボールトに記憶される。したがって、少なくとも第2のしきい値数の第1レベルシークレット値およびそれぞれの結果を使用することで、第2のシークレット値が多項式補間を通して再構築されることを可能にする。
【0101】
アリス103aは、ランダム文字列Sを生成し得、ここで、バイナリ文字列Siの数Lは、Sを回復するのに十分である。次いで、S=(Ls||…||0sとなるようにSを(L+1)個のセグメントに分割し、各Siにおいて、多項式p(x)=LsxL+…+0sx0を評価する。
【数20】
は、第2のバイオメトリックボールト{Vaulti,p(si)}から構成されるバイオメトリックボールトシステムであり、ここで、
【数21】
は、別個の第1のバイオメトリックボールトである。
【0102】
本明細書で説明される技法は、上述した二重の目的を達成する。生成されたシードは記憶されず、再現するのにユーザフレンドリーであり、シードエントロピーのサイズに制限はない。
【0103】
ボールトシステム内の各ボールトは、生体認証ロックされており、意図されたユーザによってのみロック解除することができる。各ボールトは、2値化された生体特徴の異なるセットを暗号化する。そのようなセットは、真の特徴と模擬特徴の両方を含み得る。模擬特徴の数は著しく多く、対応するボールトをロック解除するのに十分な数よりも多くの真の特徴があることが好ましい。ユーザからのライブ読み取りに応答して、ボールト内の十分な数の生体特徴が一致した場合、対応するボールトがロック解除される。
【0104】
ボールトをロック解除することは、ランダムなバイナリ文字列(第1レベルシークレット値)が多項式補間を通して回復されることを意味する。この文字列は、シード(第2のシークレット値)を生成(または再生成)するための部分的な手掛かりとして使用され得る。
【0105】
ボールトシステムは、シードを(再)生成するのに十分な数よりも多くのボールトを含む。ユーザからのライブバイオメトリック読み取りに応答して十分な数のボールトがロック解除された場合、多項式補間によりシードが回復される。手掛かりおよびシードはPRNGバイトシーケンスとして生成され、シードは任意の長さである。システム内のボールトは、ブロックチェーントランザクションのOP_RETURN出力間でランダムに分散され得る。この手法はまた、ボールトの効率的な失効および置換を提供する。
【0106】
いくつかの実施形態では、アリス103aは、マスタ秘密鍵を生成し、そのマスタ秘密鍵から1つまたは複数の補助鍵を導出し得る。例えば、アリスは、HDウォレットを生成し得る。いくつかの事例では、アリス103aは、各第1および第2のボールトに対してそれぞれのマスタ秘密鍵および補助鍵(複数可)を生成し得る。
【0107】
各第2のバイオメトリックボールトは、補助鍵のうちの1つで暗号化され得、例えば、各第2のバイオメトリックボールトは、各HDウォレットから1つずつ、異なる補助鍵を使用して暗号化され得る。
【0108】
同様に、各ターゲット特徴に関連する複数の第1のベクトルを変換するために使用されるそれぞれの変換値は、補助鍵のうちの1つ、例えば、各それぞれの変換値の異なる補助鍵であり得る。すなわち、それぞれの第1のバイオメトリックボールトを生成するときに、それぞれのHDウォレットからのそれぞれの補助鍵が変換値として使用され得る。
【0109】
さらに、ブロックチェーン上にそれぞれの第2のボールトを記録するために使用されるブロックチェーントランザクション(複数可)は、それぞれの補助鍵に対応するそれぞれの公開鍵にロックされた使用可能な出力を有し得る。例えば、それぞれの第2のバイオメトリックボールトを含むトランザクションは、1つのHDウォレットに対応する公開鍵にロックされ得、異なる第2のバイオメトリックボールトを含む異なるトランザクションは、異なるHDウォレットに対応する公開鍵にロックされ得る。第2のバイオメトリックボールトがスライスに分割され、トランザクションごとに1つのスライスである場合、それらのトランザクションは、同じ公開鍵にロックされてもよいし、異なる公開鍵にロックされてもよい。
【0110】
特定の例として、第1のバイオボールト
【数22】
を考える。同じマニューシャMiを使用しても、2つの異なる関数変換T’およびT’’を使用することで、同じまたは異なるボールトシステムに含まれることができる2つの異なるボールト
【数23】
が生成されることに留意されたい。また、NMは、真のバイオメトリックマニューシャの数であり、
【数24】
は、模擬マニューシャの数であることにも留意されたい。
【0111】
バイオボールトシステムは、最大NM個のボールトVaultiを含む(1≦i≦NM)。システムを静絵師するために以下のステップを完了させる。
【数25】
【0112】
ボールトシステムが生成されると、ボールトは、ブロックチェーントランザクションのOP_RETURN出力間で分散される。これらのトランザクションのテンプレートが次に導入される。ボールトシステムは、オンチェーンで登録されると、いつでも使用することができる。ユーザからのライブ読み取りに応答して、対応するトランザクションがアクセスされ、次いで、ボールトがオフチェーンでロック解除され、任意の高エントロピーのPRNGシードSが再構築される(補間される)。シードSは、多項式pのパラメータの連結である。新しいバイオメトリックウォレットのためのバイオメトリックマスタ鍵がSから導出され、次いで破棄される。これは、同じユーザからの別の生のバイオメトリック読み取りに応答して、いつでも再構築することができる。
【0113】
トランザクションテンプレートは、以下のように構築される。
・ テンプレートは、1つのP2PKH出力および1つのOP_RETURN出力を含む。
・ Vaulti,skが生成されると、OP_RETURN出力は、ここで、暗号化されたVaulti,skを記録する。
・ P2PKH出力は、Vaulti,skの失効のために使用される。この出力が未使用である間、Vaulti,skはアクティブであり、バイオメトリックウォレットのためのシードを生成/再構築する際に使用される。
・ P2PKH出力が使用されると、Vaulti,skは非アクティブになる。
・ 新しいボールトをボールトシステムの一部として登録することができる。
【0114】
ユーザからのライブバイオメトリック読み取りをオフラインで処理している間、バイオメトリックアルゴリズムは、バックグラウンドで、OP_RETURNデータを除外した部分的に構築されたトランザクションTxIDi(1≦i≦NM)を生成する。観察されたマニューシャ特徴が変換および2値化され、Vaulti,skが生成されると、部分的に構築されたトランザクションがオフラインで投入(populate)される。図9は、例示的なトランザクションを示す。次に、トランザクションは、ブロックチェーンネットワーク106にブロードキャストされる。それらがオンチェーンで記録される順序は、ボールトシステムの機能に影響を与えない。
【0115】
各登録/失効トランザクションTxIDiは、補助walletiを使用して生成され得る。補助ウォレットの鍵ツリーの異なるレベルおよびブランチからの公開鍵および秘密鍵(強化された鍵および強化されていない鍵)が、トランザクションを生成する際に使用される。補助ウォレットが損なわれたり、単一のボールトが損なわれたりしても、バイオロックシードは損なわれず、バイオボールトシステムは、その構造の冗長性および弾力性に起因して、機能し続けることに留意されたい。
【0116】
当業者は、HDウォレットの構造に精通しているであろう。walletiの異なるレベルおよび異なるブランチにおける鍵を
【数26】
で示し、鍵が強化されているか、強化されていないかを下付き文字Hで示す。次いで、トランザクションTxIDiで使用される失効
【数27】
および暗号化鍵(EKi)を以下に示す:
【数28】
【0117】
Vaultiに2値化する前に、マニューシャMiから
【数29】
への関数変換の評価(ランダム再配置)のために必要とされるランダム値ui,Tが、上に示されるように生成され得る。ui,Tが損なわれても、変換関数DCF(δi,ui)およびACF(δi,ui)におけるパラメータδi,Tは損なわれないので、関数変換Tは損なわれないことに留意されたい。したがって、マニューシャMiは、ボールトシステムのために再使用可能なままである。
【0118】
述べたように、各第2のバイオメトリックボールトは、スライスに分割され得る。各Vaultiは、単位ボールトスライスで表され得る。
【数30】
【0119】
次いで、図9のように、Vaultiあたり1つのトランザクションではなく、ボールトは、最大で
【数31】
個のトランザクションに登録される。ボールトの単位スライスよりも大きいスライスがトランザクションごとに登録される場合、すなわち、
【数32】
である場合、トランザクションの数は最大値未満である。次いで、ボールト全体を一度に失効させる代わりに、バイオボールトのスライスを失効させ、更新することができる。トランザクションの数は、マイニングおよび登録手数料に関連して最適化することができる。図10は、ブロックチェーン150上にボールトスライスを記録するための例示的なトランザクションを示す。
【0120】
図11および図12は、ボールトシステム内のボールトのうちのいくつかがアリスのバイオメトリック特性に基づいて生成され、システム内のボールトのうちのいくつかが異なるユーザ、例えばカール103cの特性に基づいて生成される場合の同様のトランザクションを示す。
【0121】
図13は、アリス103aがオンチェーンで第2レベルシークレットを記録するための方法の概要を示す。図15は、システム内のボールトの少なくとも一部がカール103cによって生成されることを除いて、同様の方法を示す。両方の場合において、各ユーザは、バイオメトリックボールトのそれぞれのセットを生成するために使用されるそれぞれのライブバイオメトリック読み取り値を提供する。バイオメトリックボールトは、ブロックチェーン上に記録される。図15の例では、共有の第2レベルシークレットを再構築するために、アリス103aおよびカール103cの両方からの読み取りが必要とされる。
【0122】
アリス103aは、1つまたは複数のボールトをロック解除するために、例えば、1つまたは複数の第1レベルシークレット値、およびオプションで第2のシークレット値を再構築するために、上記で説明したステップと同じステップのうちのいくつかを後で繰り返し得る。このプロセスは図14に示されている。アリス103aは、アリスの指紋をスキャンし得、それに応答して、複数の生体特徴が識別され、そこからそれぞれの候補の第1のバイナリ表現が生成される。次いで、第1のボールト内に記憶され、候補表現に一致する第1のバイナリ表現が識別される。それらの第1のバイナリ表現と対にされた第2のバイナリ値が、多項式補間を使用して第1レベルシークレット値を再構築するために使用される。プロセスは、第2のシークレット値を再構築するために、複数の第1のボールトに対して繰り返され得る。
【0123】
いくつかの実施形態では、アリス103aは、2つ以上のバイオメトリック読み取り値を提供する。いくつかのバイオメトリックボールトは、1つの読み取り値に基づいて生成され得、いくつかのバイオメトリックボールトは、他の読み取り値に基づいて生成され得る。いくつかの例では、読み取り値は、同じバイオメトリック特性、例えば2つ以上の指紋のものである。他の例では、異なるバイオメトリック特性、例えば、指紋および虹彩、または指紋および顔パターンが使用されてもよい。
【0124】
いくつかの実施形態では、アリス103aと別のユーザ、例えば、ボブ103bの両方が、1つまたは複数のそれぞれのバイオメトリック読み取り値を提供する。これは、共有ボールトシステムを生成するために使用され得、例えば、いくつかのボールトはアリスの読み取り値(複数可)を使用して生成され、いくつかのボールトはボブの読み取り値(複数可)を使用して生成される。これらの例では、第2のシークレット値を再構築するために、アリス103aとボブ103bの両方が、それぞれの読み取り値(複数可)を提供する必要がある。
【0125】
いくつかの例では、所与の読み取りが、同じ読み取りのいくつかのインスタンスから構成され得ることに留意されたい。例えば、アリスの同じ指紋を複数回スキャンして、読み取りの精度を向上させ得る。
【0126】
結論
開示された技法の他の変形または使用事例は、本明細書の開示が与えられると、当業者には明らかになり得る。本開示の範囲は、記載された実施形態によって限定されず、添付の特許請求の範囲によってのみ限定される。
【0127】
例えば、上記のいくつかの実施形態は、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104に関して説明されている。しかしながら、ビットコインブロックチェーンはブロックチェーン150の1つの特定の例であり、上記の説明は一般に任意のブロックチェーンに適用され得ることが理解されよう。すなわち、本発明は、決してビットコインブロックチェーンに限定されるものではない。より一般的には、ビットコインネットワーク106、ビットコインブロックチェーン150、およびビットコインノード104への上記のいかなる言及も、それぞれ、ブロックチェーンネットワーク106、ブロックチェーン150、およびブロックチェーンノード104への言及に置き換えられ得る。ブロックチェーン、ブロックチェーンネットワーク、および/またはブロックチェーンノードは、上で説明したビットコインブロックチェーン150、ビットコインネットワーク106、およびビットコインノード104の説明されたプロパティのいくつかまたはすべてを共有し得る。
【0128】
本発明の好ましい実施形態では、ブロックチェーンネットワーク106は、ビットコインネットワークであり、ビットコインノード104は、ブロックチェーン150のブロック151を作成し、公開し、伝搬し、記憶するという説明した機能のすべてを少なくとも実行する。これらの機能のうちの1つまたはいくつかのみを実行し、すべては実行しない他のネットワークエンティティ(またはネットワーク要素)が存在し得ることは除外されない。すなわち、ネットワークエンティティは、ブロックを作成および公開することなく、ブロックを伝搬および/または記憶する機能を実行し得る(これらのエンティティは、好ましいビットコインネットワーク106のノードとはみなされないことを想起されたい)。
【0129】
本発明の好ましくない実施形態では、ブロックチェーンネットワーク106は、ビットコインネットワークでなくてもよい。これらの実施形態では、ノードが、ブロックチェーン150のブロック151を作成し、公開し、伝搬し、記憶するという機能のうちの少なくとも1つまたはいくつかを実行し、すべては実行しない可能性があることは除外されない。例えば、それらの他のブロックチェーンネットワーク上で、「ノード」は、ブロック151を作成して公開するが、それらのブロック151を記憶および/または他のノードに伝搬しないように構成されるネットワークエンティティを指すために使用され得る。
【0130】
さらにより一般的には、上記の「ビットコインノード」104という用語へのいかなる言及も、「ネットワークエンティティ」または「ネットワーク要素」という用語に置き換えられてもよく、そのようなエンティティ/要素は、ブロックの作成、公開、伝搬、および記憶という役割のうちのいくつかまたはすべてを実行するように構成される。そのようなネットワークエンティティ/要素の機能は、ブロックチェーンノード104を参照して上記で説明したのと同じ方法でハードウェアに実装され得る。
【0131】
上記の実施形態は、単に例として説明されていることが理解されよう。より一般的には、下記ステートメントのうちのいずれか1つまたは複数による方法、装置、またはプログラムが提供され得る。
【0132】
ステートメント1.ブロックチェーン上にバイオメトリックボールトシステムを格納するコンピュータ実装方法であって、バイオメトリックボールトシステムは、1つまたは複数のバイオメトリックボールトを備え、各バイオメトリックボールトは、それぞれのシークレット値をロックし、方法は、少なくとも1つのバイオメトリック読み取り値を取得するステップと、少なくとも1つのバイオメトリック読み取り値から複数の生体特徴を識別するステップと、1つまたは複数の第1のバイオメトリックボールトを生成するステップであって、各第1のバイオメトリックボールトは、複数の生体特徴のそれぞれのターゲット生体特徴に対応し、それぞれの複数のバイナリデータペアを含み、各データペアは、第1のバイナリ値および第2のバイナリ値を含み、第1のバイナリ値のうちの少なくともいくつかは、識別された生体特徴のそれぞれの他の生体特徴に対するターゲット生体特徴のそれぞれの第1のバイナリ表現であり、それぞれの第1レベルシークレット値を再構築するためには、それぞれの第1のバイナリ表現と対にされる第2のバイナリ値が少なくとも第1のしきい値数必要である、ステップと、1つまたは複数のブロックチェーントランザクションを生成するステップであって、各ブロックチェーントランザクションは、それぞれの第2のバイオメトリックボールトの少なくとも一部を含むそれぞれの出力を含み、各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含む、ステップと、1つまたは複数のブロックチェーントランザクションをブロックチェーンネットワークに送信するステップとを含む方法。
【0133】
ステートメント2.それぞれの第2のバイオメトリックボールトの少なくとも一部は、それぞれの暗号化鍵で暗号化される、ステートメント1に記載の方法。
【0134】
ステートメント3.それぞれの第2のバイオメトリックボールトの少なくとも一部は、完全なそれぞれの第2のバイオメトリックボールトである、ステートメント1またはステートメント2に記載の方法。
【0135】
すなわち、完全な第2のバイオメトリックボールトは、トランザクションの単一の出力内に記憶される。
【0136】
ステートメント4.各第1のバイオメトリックボールトおよび各ターゲット生体特徴について、複数のそれぞれの第1のベクトルを決定するステップであって、各第1のベクトルは、それぞれの他の識別された生体特徴に対してターゲット生体特徴を定義し、各それぞれの第1のバイナリ表現は、それぞれの第1のベクトルに基づいて生成される、ステップを含む、任意の先行ステートメントに記載の方法。
【0137】
ステートメント5.各それぞれの第1のベクトルは、それぞれの他の識別された生体特徴に対するターゲット生体特徴の相対距離、相対角度、および/または相対的な向きのうちの1つ、いくつか、またはすべてについてのそれぞれの値を含む、ステートメント4に記載の方法。
【0138】
ステートメント6.各第1のバイナリ表現は、それぞれの他の識別された生体特徴に対するターゲット生体特徴の相対距離、相対角度、および/または相対的な向きのうちの1つ、いくつか、またはすべてのそれぞれの値のそれぞれの第2のバイナリ表現に基づく、ステートメント5に記載の方法。
【0139】
ステートメント7.各ターゲット生体特徴について、方法は、各それぞれの第1のベクトルのそれぞれの値にそれぞれの第1の変換を適用するステップであって、それぞれの第1の変換は、ターゲット生体特徴とそれぞれの他の識別された生体特徴との間の相関を除去するように構成され、それぞれの第1のバイナリ表現は、変換されたそれぞれの値に基づく、ステップを含む、ステートメント4またはそれに従属する任意のステートメントに記載の方法。
【0140】
ステートメント8.各ターゲット生体特徴について、それぞれの第1の変換は、それぞれの他の識別された生体特徴に対するそれぞれのターゲット生体特徴の距離および/または角度を変換することによって、上記相関を除去するように構成される、ステートメント7に記載の方法。
【0141】
ステートメント9.それぞれのターゲット生体特徴の相対距離は、それぞれの座標および回転不変特性の関数として変換される、ステートメント8に記載の方法。
【0142】
ステートメント10.それぞれのターゲット生体特徴の相対角度が、それぞれの擬似ランダムに生成された変換値の関数として変換される、ステートメント8またはステートメント9に記載の方法。
【0143】
ステートメント11.各第1のバイオメトリックボールトについて、第1のバイナリ値のうちの少なくともいくつかは、それぞれの模擬生体特徴のそれぞれの模擬バイナリ表現であり、模擬生体特徴は、バイオメトリック読み取り値内に存在しない特徴であり、それぞれの模擬バイナリ表現と対にされたそれぞれの第2のバイナリ値は、それぞれの模擬バイナリ値である、任意の先行ステートメントに記載の方法。
【0144】
模擬バイナリ値は、第1レベルシークレット値を再構築するための情報を明らかにしない。さらに、第1レベルシークレット値を再構築しようとして模擬バイナリ値を使用すると、不正確な第1レベルシークレット値がもたらされる。
【0145】
ステートメント12.各第1のバイオメトリックボールトについて、それぞれの模擬生体特徴の各々に対するそれぞれの第2のベクトルを、それぞれの第1のベクトルの各々とそれぞれの第2のベクトルの各々との間のそれぞれの最小距離が所定のしきい値を上回るように決定するステップであって、それぞれの第2のバイナリ表現は、それぞれの第2のベクトルに基づいて生成される、ステップを含む、ステートメント11に記載の方法。
【0146】
ステートメント13.各第1のバイオメトリックボールトについて、模擬生体特徴の総数は、生体特徴の総数よりも多い、ステートメント11またはステートメント12に記載の方法。
【0147】
ステートメント14.各第1のバイオメトリックボールトについて、第1レベルシークレット値は、擬似ランダムに生成された値である、任意の先行ステートメントに記載の方法。
【0148】
ステートメント15.各第1のバイオメトリックボールトについて、それぞれの第1レベルシークレット値を少なくとも第1のしきい値数の要素に分割するステップであって、第1レベルシークレット値は、それぞれの第1の多項式関数に符号化され、それぞれの第1の多項式関数の係数は、しきい値数の要素のそれぞれの要素であり、それぞれの第1のバイナリ表現と対にされるそれぞれの第2のバイナリ値は、それぞれの第1のバイナリ表現を使用して第1の多項式関数を評価することによって生成される、ステップを含む、任意の先行ステートメントに記載の方法。
【0149】
第1レベルシークレット値は、第1のバイナリ表現と対にされるしきい値数の第2のバイナリ値を使用して多項式補間を介して再構築することができる。
【0150】
ステートメント16.複数の第1のバイオメトリックボールトを生成するステップを含む、任意の先行ステートメントに記載の方法。
【0151】
ステートメント17.複数のバイオメトリックボールトのうちの少なくとも1つを生成するために、異なる第1の変換が適用される、ステートメント7に従属する場合のステートメント16に記載の方法。
【0152】
ステートメント18.第2レベルシークレット値を生成するためには、第2のしきい値数の第1レベルシークレット値が必要である、ステートメント16またはそれに従属する任意のステートメントに記載の方法。
【0153】
第2レベルシークレット値は、しきい値数の第1レベルシークレット値を使用して多項式補間を介して再構築することができる。
【0154】
ステートメント19.第2レベルシークレット値は、擬似ランダムに生成された値である、ステートメント18に記載の方法。
【0155】
ステートメント20.それぞれの第2レベルシークレット値を少なくとも第2のしきい値数の要素に分割するステップであって、第2レベルシークレット値は、第2の多項式関数に符号化され、第2の多項式関数の係数は、第2のしきい値数の要素のそれぞれの要素であり、第2レベルシークレット値は、各それぞれの第1レベルシークレット値において第2の多項式関数を評価することによって再構築することができる、ステップを含む、ステートメント18またはステートメント19に記載の方法。
【0156】
ステートメント21.第1レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップを含む、任意の先行ステートメントに記載の方法。
【0157】
1つまたは複数の秘密鍵は、階層的決定論的鍵構造の一部を形成し得る。
【0158】
ステートメント22.第2レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップを含む、ステートメント18またはそれに従属する任意のステートメントに記載の方法。
【0159】
1つまたは複数の秘密鍵は、階層的決定論的鍵構造の一部を形成し得る。
【0160】
ステートメント23.1つまたは複数のブロックチェーントランザクションの各々は、それぞれの第1の使用可能な出力を含み、方法は、それぞれのブロックチェーントランザクション内に含まれるそれぞれの第2のバイオメトリックボールトの少なくとも一部を、それぞれの使用可能な出力を使用することによって失効させるステップを含む、任意の先行ステートメントに記載の方法。
【0161】
ステートメント24.各第1のバイオメトリックボールトについて、それぞれのマスタ秘密鍵を取得するステップと、それぞれのマスタ秘密鍵に基づいて1つまたは複数の補助秘密鍵を生成するステップとを含む、任意の先行ステートメントに記載の方法。
【0162】
ステートメント25.1つまたは複数の補助鍵のうちの第1の補助鍵は、それぞれの暗号化鍵として使用される、ステートメント2に従属する場合のステートメント24の方法。
【0163】
ステートメント26.1つまたは複数の補助鍵のうちの第2の補助鍵は、変換値である、ステートメント10に従属する場合のステートメント23またはステートメント24の方法。
【0164】
ステートメント27.各それぞれの使用可能な出力は、1つまたは複数の補助鍵のそれぞれの補助鍵に対応するそれぞれの公開鍵にロックされる、ステートメント23に従属する場合のステートメント24から26のいずれかに記載のステートメント。
【0165】
ステートメント28.それぞれのマスタ秘密鍵およびそれぞれの1つまたは複数の補助鍵は、それぞれの階層的決定論的鍵構造の一部を形成する、ステートメント24から27のいずれかに記載の方法。
【0166】
ステートメント29.変換値の各々に基づいて第2の値を生成するステップと、第3の値を生成するために第2の値において第3の多項式関数を評価するステップであって、第2の多項式関数の係数は、擬似ランダムに生成される、ステップとを含み、各第2のバイオメトリックボールトは、それぞれの第1レベルシークレット値および第3の値で評価された第2の多項式を含む、ステートメント26に記載の方法。
【0167】
ステートメント30.少なくとも1つのバイオメトリック読み取り値は、
指紋読み取り値、
虹彩読み取り値、
指静脈パターン読み取り値、
手首静脈パターン読み取り値、
皮膚構造パターン、および/または
顔パターン
のうちの少なくとも1つを含む、任意の先行ステートメントに記載の方法。
【0168】
ステートメント31.バイオメトリックボールトシステムの1つまたは複数のバイオメトリックボールトをロック解除するコンピュータ実装方法であって、バイオメトリックボールトシステムは、ステートメント1から30のいずれかに記載の方法にしたがって生成され、方法は、少なくとも1つの候補バイオメトリック読み取り値を取得するステップと、少なくとも1つのバイオメトリック読み取り値から複数の生体特徴を識別するステップと、複数の生体特徴のそれぞれの生体特徴の複数のそれぞれの候補バイナリ表現を生成するステップと、ブロックチェーンから、1つまたは複数の第2のバイオメトリックボールトを取得するステップであって、各第2のバイオメトリックボールトは、それぞれの第1のバイオメトリックボールトを含み、各第1のバイオメトリックボールトは、それぞれの第2のバイナリ値と対にされた複数のそれぞれの第1のバイナリ値を含む、ステップと、各第1のバイオメトリックボールトについて、複数の候補バイナリ表現のそれぞれに対応する少なくともしきい値数のそれぞれの第1のバイナリ値を決定するステップと、第1のしきい値数の第1のバイナリ表現のそれぞれと対にされるしきい値数の第2のバイナリ値を取得するステップと、第1のしきい値数の第2のバイナリ値の各々に基づいて、第1レベルシークレット値を再構築するステップとを含むコンピュータ実装方法。
【0169】
ステートメント32.第2のしきい値数の第1レベルシークレット値を再構築するために、少なくとも第2のしきい値数の異なる第1のバイオメトリックボールトに対して上記決定、取得、および再構築を実行するステップと、第2のしきい値数の第1レベルシークレット値に基づいて、第2レベルシークレット値を再構築するステップと含む、ステートメント1に記載の方法。
【0170】
ステートメント33.第1レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップ、および/または第2レベルシークレット値に基づいて1つまたは複数の秘密鍵を生成するステップを含む、ステートメント31またはステートメント32に記載の方法。
【0171】
いくつかの実施形態では、生成された秘密鍵のうちの1つは、マスタ秘密鍵であり得、方法は、階層的決定論的鍵構造の1つまたは複数の秘密鍵を生成するステップを含み得る。
【0172】
方法は、メッセージに基づいて署名を生成するために、生成された秘密鍵のうちの少なくとも1つを使用するステップを含み得る。
【0173】
メッセージは、ブロックチェーントランザクションの少なくとも一部を含み得る。
【0174】
方法は、生成された秘密鍵のそれぞれに対応するそれぞれの公開鍵を生成するステップと、ブロックチェーントランザクション内のデータを暗号化するためにそれぞれの公開鍵を使用するステップとを含み得る。
【0175】
いくつかの実施形態では、1つまたは複数のバイオメトリック読み取り値を取得する上記ステップは、複数のバイオメトリック読み取り値を取得するステップを含み得る。
【0176】
いくつかの実施形態では、複数のバイオメトリック読み取り値の各々は、同じユーザからのバイオメトリック読み取り値であり得る。他の実施形態では、複数のバイオメトリック読み取り値のうちの少なくとも2つは、異なるそれぞれのユーザからのそれぞれのバイオメトリック読み取り値であり得る。
【0177】
2人のユーザからのバイオメトリック読み取り値がシード(共有シード)を生成するために使用されるとき、共有シードは、1つまたは複数の共有秘密鍵、例えば共有HD鍵構造を生成するために使用され得る。1人のユーザからのバイオメトリック読み取り値(複数可)に基づいて生成されたシードは、HD鍵構造のマスタ秘密鍵を生成するために使用され得、異なるユーザからのバイオメトリック読み取り値(複数可)に基づいて生成されたシードは、HD鍵構造の鍵のためのチェーンコードを生成するために使用され得る。
【0178】
ステートメント34.コンピュータ機器であって、1つまたは複数のメモリユニットを備えるメモリと、1つまたは複数の処理ユニットを備える処理装置とを備え、メモリは、処理装置上で実行されるように構成されたコードを記憶し、コードは、処理装置上にあるときに、ステートメント1から33のいずれかに記載の方法を実行するように構成される、コンピュータ機器。
【0179】
ステートメント35.コンピュータ可読ストレージ上に具現化されたコンピュータプログラムであって、1つまたは複数のプロセッサ上で実行されたときに、ステートメント1から33のいずれかに記載の方法を実行するように構成されたコンピュータプログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
【国際調査報告】