TW202345545A - 用於證明與驗證子金鑰真實性之技術 - Google Patents
用於證明與驗證子金鑰真實性之技術 Download PDFInfo
- Publication number
- TW202345545A TW202345545A TW111146193A TW111146193A TW202345545A TW 202345545 A TW202345545 A TW 202345545A TW 111146193 A TW111146193 A TW 111146193A TW 111146193 A TW111146193 A TW 111146193A TW 202345545 A TW202345545 A TW 202345545A
- Authority
- TW
- Taiwan
- Prior art keywords
- key
- public key
- parent
- computer
- transaction
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 176
- 238000012795 verification Methods 0.000 claims abstract description 84
- 238000009795 derivation Methods 0.000 claims abstract description 33
- 230000006870 function Effects 0.000 claims description 106
- 230000015654 memory Effects 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 65
- 238000013515 script Methods 0.000 description 44
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 9
- 230000000644 propagated effect Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000001902 propagating effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101000882406 Staphylococcus aureus Enterotoxin type C-1 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004900 laundering Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010899 nucleation Methods 0.000 description 1
- 230000036544 posture Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Storage Device Security (AREA)
Abstract
在本揭露內容之一個實施例中,提供一種驗證與一實體相關聯之一子公開金鑰之真實性的電腦實施方法。該方法係在一計算裝置上執行且包含:獲得該子公開金鑰;自一證明計算裝置接收一零知識證明;使用該證明、該子公開金鑰及一驗證金鑰來驗證該零知識證明為有效的,以判定一金鑰導出協定已用於自一父金鑰導出該子公開金鑰;以及基於該驗證判定該子公開金鑰之該真實性。
Description
發明領域
本揭露內容係關於證明與驗證子金鑰真實性。
發明背景
區塊鏈係指分散式資料結構之形式,其中區塊鏈之複本被維持在分散式同級間(P2P)網路(在下文稱作「區塊鏈網路」)中之多個節點中之各者處且被廣泛公佈。區塊鏈包含資料區塊鏈,其中各區塊包含一或多個交易。除所謂的「幣基(coinbase)交易」以外,各交易亦指回至序列中之先前交易,該序列可橫跨一或多個區塊,追溯至一或多個幣基交易。下文進一步論述幣根基交易。提交至區塊鏈網路之交易包括於新區塊中。新區塊係藉由常常被稱作「挖掘(mining)」之程序創建,該程序涉及多個節點中之各者競爭以執行「工作量證明」,亦即,基於等待包括於區塊鏈之新區塊中的有序及經驗核之未決交易之經界定集合的表示而解決密碼難題。應注意,可在一些節點處修剪區塊鏈,且區塊之公佈可經由僅公佈區塊標頭來實現。
區塊鏈中之交易可用於以下目的中之一或多者:傳送數位資產(亦即,數個數位代幣(token));對虛擬化分類帳或註冊表中之條目集合進行排序;接收及處理時戳條目;及/或按時間對索引指標進行排序。亦可利用區塊鏈來對區塊鏈之頂部上的額外功能性分層。舉例而言,區塊鏈協定可允許將額外使用者資料或資料之索引儲存於交易中。對於可儲存於單個交易內之最大資料容量不存在預先指定之限制,且因此可併入愈來愈複雜之資料。舉例而言,此可用以將電子文件或音訊或視訊資料儲存於區塊鏈中。
區塊鏈網路之節點(其常常被稱作「挖掘者」)執行稍後將更詳細描述之分散式交易登記及驗證過程。總之,在此過程期間,節點驗核交易且將其***至區塊範本中,針對該區塊範本,該等交易試圖識別有效的工作量證明解決方案。一旦找到有效解決方案,就將新區塊傳播至網路之其他節點,因此使得各節點能夠在區塊鏈上記錄新區塊。為了使交易經記錄於區塊鏈中,使用者(例如,區塊鏈客戶端應用程式)將交易發送至網路之節點中之一者以供傳播。接收交易之節點可競相尋找將經驗核交易併入至新區塊中之工作量證明解決方案。各節點經組配以強制執行相同節點協定,其將包括使交易有效之一或多個條件。無效交易將不被傳播或併入至區塊中。假定交易經驗核且藉此經接受至區塊鏈上,則交易(包括任何使用者資料)將由此在區塊鏈網路中之節點中之各者處保持被登記及索引化為不可變的公開記錄。
成功地解決工作量證明難題以創建最新區塊之節點通常係以稱為「幣基交易」之新交易被獎勵,該新交易分配一金額之數位資產,亦即數個代幣。對無效交易之偵測及拒絕係藉由競爭節點之動作強制執行,該等競爭節點充當網路之代理並且經激勵以報告並阻止非法行為。資訊之廣泛公佈允許使用者連續地稽核節點之效能。對僅區塊標頭之公佈允許參與者確保區塊鏈之持續完整性。
在「基於輸出之」模型(有時被稱作基於UTXO之模型)中,給定交易之資料結構包含一或多個輸入及一或多個輸出。任何可支出輸出皆包含一元素,該元素指定可自進行中之交易序列導出的一金額之數位資產。可支出輸出有時被稱作未支出交易輸出(「UTXO」)。該輸出可進一步包含指定用於未來兌換該輸出之條件的鎖定指令碼。鎖定指令碼係界定驗核及轉移數位代幣或資產所必需之條件的述詞。交易(除幣基交易以外)之各輸入包含指向先前交易中之此輸出的指標(亦即,參考),且可進一步包含用於解鎖所指向輸出之鎖定指令碼的解鎖指令碼。因此,考慮一對交易,將其稱為第一交易及第二交易(或「目標」交易)。第一交易包含至少一個輸出,其指定一金額之數位資產且包含界定解鎖該輸出之一或多個條件的鎖定指令碼。第二目標交易包含至少一個輸入,其包含指向第一交易之輸出的指標,及用於解鎖第一交易之輸出的解鎖指令碼。
在此模型中,當將第二目標交易發送至區塊鏈網路以在區塊鏈中傳播及記錄時,在各節點處應用之有效性準則中之一者將為解鎖指令碼滿足第一交易之鎖定指令碼中所界定的所有一或多個條件。另一準則將為第一交易之輸出尚未由另一較早有效交易兌換。根據此等條件中之任一者發現目標交易為無效的任何節點將不會傳播該目標交易(作為有效交易,但可能登記無效交易),亦不將該目標交易包括在新區塊中以記錄在區塊鏈中。
交易模型之替代類型為基於帳戶之模型。在此狀況下,各交易都不會藉由返回參考一系列過去交易中的先前交易之UTXO來界定要轉移的金額,而是參考絕對帳戶餘額。所有帳戶之當前狀態由與區塊鏈分離之節點儲存,且不斷更新。
基於BIP32金鑰導出協定之分層確定性(HD)電子錢包提供用以導出許多數位金鑰之方便且高效方式。BIP32電子錢包固有地係輕型且多功能的。此係因為使用者僅需要備份自其中導出所有其金鑰之電子錢包種子,且不同金鑰導出路徑可基於使用者需求而界定。
電子錢包提供者提供使數位電子錢包更加使用者友好之額外形貌體。一個此實例為使用者可使其身分識別鏈接至其電子錢包中之金鑰。假設使用者具有與其身分識別鏈接之公開已知的BIP32主要金鑰。使用者(證明者)接著產生子金鑰,該子金鑰被交給另一使用者(驗證者)以接收付款。若子金鑰未經硬化,則驗證者可驗證子金鑰與證明者身分識別之間的相關性。折衷為驗證者亦可判定由證明者在公開記錄之交易,亦即鏈上交易中使用的其他未經硬化子金鑰。替代地,若子金鑰經硬化,則驗證者將需要使子金鑰直接鏈接至證明者之身分識別,狀況皆非最佳。未經硬化子金鑰可自公開父金鑰及索引導出,而經硬化子金鑰可僅自私密父金鑰及索引導出。
發明概要
根據本文中所揭露之一個態樣,提供一種驗證與實體相關聯之子公開金鑰之真實性的電腦實施方法。方法係在計算裝置上執行且包含:獲得子公開金鑰;自證明計算裝置(例如,與該實體相關聯之證明計算裝置)接收零知識證明;使用證明、子公開金鑰及驗證金鑰來驗證零知識證明為有效的,以判定金鑰導出協定已用於自父金鑰導出子公開金鑰;以及基於該驗證判定子公開金鑰之真實性。
根據本文中所揭露之另一態樣,提供一種提供對與實體相關聯之子公開金鑰之真實性的證明之電腦實施方法。方法係在計算裝置上執行且包含:使用用於導出子公開金鑰之父金鑰、子公開金鑰及證明金鑰來產生零知識證明;以及將零知識證明傳輸至驗證計算裝置以使得驗證計算裝置能夠證明金鑰導出協定已用於自父金鑰導出子公開金鑰。
零知識證明(ZIP)為一種方法,藉由該方法,稱為證明者之當事方可證明另一當事方(稱為驗證者)陳述為真實的,而不顯露除陳述為真實之事實外的任何資訊。在本揭露內容之實施例中,產生ZKP以提供如下證明:金鑰導出協定(例如,BIP32金鑰導出協定或任何其他金鑰導出協定)已用於自父金鑰導出子公開金鑰而不將父金鑰顯露給驗證者。亦即,術語「零知識證明」在本文中用以意指證明者與驗證者之間的知識之證明,其中無關於敏感/秘密資料之資訊顯露。
本揭露內容之實施例可用於藉由隱藏用於導出子公開金鑰之父金鑰來保護HD電子錢包免受提權攻擊且保護證明者之隱私。
較佳實施例之詳細說明
實例系統綜述
圖1展示用於實施區塊鏈150之實例系統100。系統100可包含封包交換網路101,其通常為諸如網際網路之廣域網際網路。封包交換網路101包含多個區塊鏈節點104,該等區塊鏈節點可經配置以在封包交換網路101內形成同級間(P2P)網路106。雖然未說明,但區塊鏈節點104可經配置為接近完整的圖。各區塊鏈節點104因此高度連接至其他區塊鏈節點104。
各區塊鏈節點104包含同級者之電腦裝備,其中節點104中之不同者屬於不同同級者。各區塊鏈節點104包含:處理設備,其包含一或多個處理器,例如一或多個中央處理單元(CPU)、加速器處理器、特殊應用處理器及/或場式可程式閘陣列(FPGA);及其他裝備,諸如特殊應用積體電路(ASIC)。各節點亦包含記憶體,亦即呈一或多個非暫時性電腦可讀媒體之形式之電腦可讀儲存器。記憶體可包含一或多個記憶體單元,該一或多個記憶體單元使用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如固態硬碟(SSD)、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟機之光學媒體。
區塊鏈150包含資料區塊鏈151,其中在分散式或區塊鏈網路106中之多個區塊鏈節點104中之各者處維持區塊鏈150之各別複本。如上文所提及,維持區塊鏈150之複本未必意謂完整地儲存區塊鏈150。實情為,只要各區塊鏈節點150儲存各區塊151之區塊標頭(下文所論述),即可修剪區塊鏈150之資料。鏈中之各區塊151包含一或多個交易152,其中在此上下文中之交易係指一種資料結構。資料結構之性質將取決於用作交易模型或方案之部分的交易協定之類型。給定區塊鏈將始終使用一個特定交易協定。在一種常見類型之交易協定中,各交易152之資料結構包含至少一個輸入及至少一個輸出。各輸出指定表示作為財產之數位資產之數量的金額,其實例為使用者103,輸出以密碼方式被鎖定該使用者(需要彼使用者之簽章或其他解決方案以便解鎖且由此兌換或支出)。各輸入均指回至先前交易152之輸出,由此鏈接交易。
各區塊151亦包含區塊指標155,其指回至該鏈中之先前創建的區塊151以便界定區塊151之順序次序。各交易152 (除幣基交易以外)包含指回至先前交易之指標,以便界定交易序列之次序(注意:允許交易152之序列進行分支)。區塊151之鏈一直追溯至起源區塊(Gb) 153,該起源區塊為該鏈中之第一區塊。鏈150中較早之一或多個原始交易152指向起源區塊153,而非先前交易。
區塊鏈節點104中之各者經組配以將交易152轉遞至其他區塊鏈節點104,且由此使得交易152在整個網路106中傳播。各區塊鏈節點104經組配以創建區塊151,且將相同區塊鏈150之各別複本儲存在其各別記憶體中。各區塊鏈節點104亦維持等待併入至區塊151中之交易152的有序集合(或「集區」) 154。有序集區154常常被稱作「記憶體集區」。本文中之此術語不意欲限於任何特定區塊鏈、協定或模型。該術語係指節點104已接受為有效的交易之有序集合,且對於該有序集合,節點104不必接受嘗試支出相同輸出之任何其他交易。
在給定目前交易152j中,該(或各)輸入包含參考交易序列中之先前交易152i之輸出之指標,其指定此輸出將在目前交易152j中經兌換或「支出」。一般而言,先前交易可為有序集合154或任何區塊151中之任何交易。當目前交易152j經創建或甚至發送至網路106時無需必定存在先前交易152i,但先前交易152i將需要存在且被驗核以便使目前交易為有效的。因此,本文中之「先前」係指藉由指標鏈接之邏輯序列中的前置者,未必為時間序列中之創建或發送之時間,且因此,其未必排除無序地創建或發送交易152i、152j (參見下文關於孤立交易之論述)。先前交易152i同樣可被稱為前期或前置交易。
目前交易152j之輸入亦包含輸入授權,例如先前交易152i之輸出被鎖定至之使用者103a的簽章。繼而,目前交易152j之輸出可以密碼方式鎖定至新使用者或實體103b。目前交易152j因此可將先前交易152i之輸入中所界定之金額轉移至如目前交易152j之輸出中界定的新使用者或實體103b。在一些狀況下,交易152可具有多個輸出以在多個使用者或實體(其中之一者可為原始使用者或實體103a以便產生變化)之間劃分輸入金額。在一些狀況下,交易亦可具有多個輸入以將來自一或多個先前交易之多個輸出的金額聚集在一起,且重新分配至當前交易之一或多個輸出。
根據基於輸出之交易協定,諸如比特幣,當諸如個別使用者或組織之當事方103希望制定新交易152j (手動地或藉由該當事方所採用之自動化過程)時,則制定方將新交易自其電腦終端機102發送至接收者。該制定方或接收者將最終發送此交易至網路106之區塊鏈節點104中之一或多者(該等區塊鏈節點現今通常為伺服器或資料中心,但原則上可為其他使用者終端機)。亦不排除制定新交易152j之當事方103可將交易直接發送至區塊鏈節點104中之一或多者,且在一些實例中不發送至接收者。接收交易之區塊鏈節點104根據應用於區塊鏈節點104中之各者處之區塊鏈節點協定來檢查該交易是否為有效的。區塊鏈節點協定通常需要區塊鏈節點104檢查新交易152j中之密碼簽章是否與預期簽章匹配,此取決於交易152之有序序列中之先前交易152i。在此基於輸出之交易協定中,此可包含檢查新交易152j之輸入中所包括的當事方103之密碼簽章或其他授權是否與新交易指派之先前交易152i之輸出中所界定的條件匹配,其中此條件通常包含至少檢查新交易152j之輸入中之密碼簽章或其他授權是否解鎖新交易之輸入鏈接至的先前交易152i之輸出。條件可至少部分地由先前交易152i之輸出中所包括的指令碼界定。替代地,其可簡單地由區塊鏈節點協定單獨確定,或其可由此等之組合確定。無論如何,若新交易152j有效,則區塊鏈節點104將其轉遞至區塊鏈網路106中之一或多個其他區塊鏈節點104。此等其他區塊鏈節點104根據相同區塊鏈節點協定應用相同測試,且因此將新交易152j轉遞至一或多個其他節點104上,等等。以此方式,新交易在區塊鏈節點104之整個網路中傳播。
在基於輸出之模型中,是否指派(例如,支出)給定輸出(例如,UTXO)之定義為其是否已根據區塊鏈節點協定而由另一後續交易152j之輸入有效地兌換。使交易有效之另一條件為該交易嘗試兌換之先前交易152i之輸出尚未由另一交易兌換。再次,若並非有效的,則將不在區塊鏈150中傳播或記錄交易152j (除非經標記為無效的,且經傳播以用於警示)。此防止雙重支出,藉此交易者嘗試多於一次地指派同一交易之輸出。另一方面,基於帳戶之模型藉由維持帳戶餘額來防止雙重支出。由於另外存在經界定之交易次序,因此帳戶餘額在任一時間皆具有單個經界定狀態。
除了驗核交易之外,區塊鏈節點104亦競相率先在通常被稱作挖掘之過程中創建交易區塊,該過程係由「工作量證明」支援。在區塊鏈節點104處,新交易被添加至有效交易之有序集區154,該等有效交易尚未出現在記錄於區塊鏈150上之區塊151中。區塊鏈節點接著競相藉由嘗試解決密碼難題而組合來自交易之有序集合154的交易152之新有效區塊151。通常,此包含搜尋「隨機數」值,使得當隨機數與未決交易之有序集區154的表示串接且經雜湊時,雜湊之輸出接著符合預定條件。例如,預定條件可為雜湊之輸出具有某一預定數目個前導零。應注意,此僅為一種特定類型之工作量證明難題,且不排除其他類型。雜湊函數之特性為該雜湊函數相對於其輸入具有不可預測的輸出。因此,此搜尋可僅藉由蠻力執行,因此在正嘗試解決難題之各區塊鏈節點104處消耗大量處理資源。
解決難題之第一區塊鏈節點104將此宣佈給網路106,從而提供該解決方案作為證明,其接著可由網路中之其他區塊鏈節點104容易地檢查(一旦給定雜湊之解決方案,即直接檢查其是否使得雜湊之輸出滿足該條件)。第一區塊鏈節點104將區塊傳播至接受該區塊且因此實施協定規則之其他節點之臨限共識。交易之有序集合154接著藉由區塊鏈節點104中之各者而記錄為區塊鏈150中之新區塊151。區塊指標155亦經指派至指回鏈中先前創建之區塊151n-1之新區塊151n。創建工作量證明解決方案所需之例如呈雜湊形式的大量工作傳信第一節點104遵循區塊鏈協定之規則的意圖。此等規則包括在交易將相同輸出指派為先前驗核之交易之情況下,不接受該交易為有效的,除非該交易已知為雙重支出。一旦經創建,則區塊151不可修改,此係由於在區塊鏈網路106中之區塊鏈節點104中之各者處辨識且維持該區塊。區塊指標155亦對區塊151強加順序次序。由於交易152記錄於網路106中之各區塊鏈節點104處的有序區塊中,因此,此提供交易之不可變公開分類帳。
應注意,在任何給定時間競相解決難題之不同區塊鏈節點104可基於在任何給定時間尚待公佈之交易的集區154的不同快照而如此操作,此取決於該等節點何時開始搜尋解決方案或接收該等交易之次序。不論誰首先解決其各別難題均界定哪些交易152且以何種次序包括於下一新區塊151n中,且未公佈交易之當前集區154經更新。區塊鏈節點104接著繼續競相自未公佈交易之新界定的有序集區154創建區塊,等等。亦存在用於解決可能出現之任何「分叉」之協定,該分叉係二個區塊鏈節點104在彼此極短時間內解決其難題以使得區塊鏈之衝突視圖在節點104之間傳播之處。簡言之,分叉之最長之叉尖變為決定性區塊鏈150。應注意,此不應影響網路之使用者或代理,此係因為相同交易將出現在二個分叉中。
根據比特幣區塊鏈(及大部分其他區塊鏈),成功地建構新區塊之節點104經授予在新特殊種類之交易中新指派額外的所接受金額之數位資產的能力,該新特殊種類之交易分配額外的經界定數量之數位資產(相較於代理間或使用者間交易,其將一金額之數位資產自一個代理或使用者轉移至另一代理或使用者)。此特殊類型之交易通常被稱作「幣基交易」,但亦可被稱為「初始交易」或「產生交易」。其通常形成新區塊151n之第一交易。工作量證明傳信建構新區塊之節點遵循協定規則,從而允許稍後兌換此特殊交易的意圖。在可兌換此特殊交易之前,區塊鏈協定規則可能需要成熟期,例如100個區塊。常常,常規(非產生)交易152亦將在其輸出中之一者中指定額外交易費用,以進一步獎勵創建了在其中公佈彼交易之區塊151n的區塊鏈節點104。此費用通常被稱作「交易費用」,且在下文論述。
歸因於交易驗核及公佈中涉及之資源,通常,區塊鏈節點104中之至少各者採用伺服器之形式,該伺服器包含一或多個實體伺服器單元或甚至整個資料中心。然而,原則上,任何給定區塊鏈節點104可採用使用者終端機或經網路連接在一起之使用者終端機之群組的形式。
各區塊鏈節點104之記憶體儲存軟體,該軟體經組配以在區塊鏈節點104之處理設備上運行以便執行其各別一或多個角色且根據區塊鏈節點協定處置交易152。應理解,本文中歸因於區塊鏈節點104之任何動作可由在各別電腦裝備之處理設備上運行的軟體執行。節點軟體可實施於應用層或諸如作業系統層或協定層之下部層或應用層及下部層之任何組合處的一或多個應用程式中。
亦連接至網路101的係充當消費使用者之角色的多個當事方103中之各者的電腦裝備102。此等使用者可與區塊鏈網路106互動,但不參與驗核交易或建構區塊。此等使用者或代理103中之一些可在交易中充當發送者及接收者。其他使用者可與區塊鏈150互動,而未必充當發送者或接收者。舉例而言,一些當事方可充當儲存實體,其儲存區塊鏈150之複本(例如,已自區塊鏈節點104獲得區塊鏈之複本)。
當事方103中之一些或全部可作為例如覆蓋於區塊鏈網路106之頂部上之網路等不同網路的部分而連接。區塊鏈網路之使用者(通常被稱作「客戶端」)可被稱為包括區塊鏈網路106之系統的部分;然而,此等使用者並非區塊鏈節點104,此係因為其不執行區塊鏈節點之所需角色。實情為,各當事方103可與區塊鏈網路106互動,且由此藉由連接至區塊鏈節點106 (亦即,與該區塊鏈節點通訊)而利用區塊鏈150。出於說明性目的展示二個當事方103及其各別裝備102:第一當事方103a及他/她的各別電腦裝備102a,以及第二當事方103b及他/她的各別電腦裝備102b。應理解,更多此類當事方103及其各別電腦裝備102可存在且參與系統100中,但為方便起見不對其加以說明。各當事方103可為個人或組織。僅僅藉助於說明,第一當事方103a在本文中被稱作愛麗絲(Alice),且第二當事方103b被稱作鮑勃(Bob),但將瞭解,此不具限制性,且在本文中對愛麗絲或鮑勃之任何引用可分別用「第一當事方」及「第二當事方」替換。
各當事方103之電腦裝備102包含各別處理設備,該處理設備包含一或多個處理器,例如一或多個CPU、GPU、其他加速器處理器、特殊應用處理器及/或FPGA。各當事方103之電腦裝備102進一步包含記憶體,亦即呈一或多個非暫時性電腦可讀媒體之形式的電腦可讀儲存器。此記憶體可包含一或多個記憶體單元,該一或多個記憶體單元採用一或多個記憶體媒體,例如,諸如硬碟之磁性媒體;諸如SSD、快閃記憶體或EEPROM之電子媒體;及/或諸如光碟機之光學媒體。各當事方103之電腦裝備102上之記憶體儲存軟體,該軟體包含經配置以在處理設備上運行之至少一個客戶端應用程式105的各別例項。應理解,本文中歸於給定當事方103之任何動作可使用在各別電腦裝備102之處理設備上運行的軟體來執行。各當事方103之電腦裝備102包含至少一個使用者終端機,例如桌上型或膝上型電腦、平板電腦、智慧型手機或諸如智慧型手錶之穿戴式裝置。給定當事方103之電腦裝備102亦可包含一或多個其他經網路連接之資源,諸如經由使用者終端機存取之雲端計算資源。
客戶端應用程式105最初可在合適的一或多個電腦可讀儲存媒體上經提供給任何給定當事方103之電腦裝備102,例如自伺服器下載,或經設置於可移式儲存裝置上,該可移式儲存裝置諸如可移式SSD、快閃記憶體鍵、可移式EEPROM、可移式磁碟機、磁性軟碟或磁帶、諸如CD或DVD ROM之光碟或可移式光碟機等。
客戶端應用程式105包含至少一個「電子錢包」功能。此具有二個主要功能。此等功能中之一者為使得各別當事方103能夠創建、授權(例如,簽署)及發送交易152至一或多個比特幣節點104以接著在區塊鏈節點104之整個網路中傳播且藉此包括於區塊鏈150中。另一功能係將他或她當前擁有之數位資產的金額報告給各別當事方。在基於輸出之系統中,此第二功能包含核對各種散佈在整個區塊鏈150中之交易152的輸出中所界定之金額,該等金額屬於所討論的當事方。
應注意:雖然各種客戶端功能可經描述為整合至給定客戶端應用程式105中,但此未必為限制性的,且實情為,本文中所描述之任何客戶端功能可替代地實施於一套二個或更多個不同應用程式中,該等應用程式例如經由API介接,或一個應用程式為另一應用程式之外掛程式。更一般而言,客戶端功能可實施於應用層或諸如作業系統之下部層或應用層及下部層之任何組合處。下文將關於客戶端應用程式105進行描述,但將瞭解,此並非限制性的。
各電腦裝備102上之客戶端應用程式或軟體105的例項可操作地耦合至網路106之區塊鏈節點104中之至少一者。此使得客戶端105之電子錢包功能能夠將交易152發送至網路106。客戶端105亦能夠接觸區塊鏈節點104以便針對各別當事方103為接收者之任何交易而查詢區塊鏈150 (或實際上檢驗區塊鏈150中之其他當事方之交易,此係由於在實施例中,區塊鏈150為部分地經由其公開可見性而提供交易信任之公共設施)。各電腦裝備102上之電子錢包功能經組配以根據交易協定來制定及發送交易152。如上文所闡述,各區塊鏈節點104運行軟體,該軟體經組配以根據區塊鏈節點協定來驗核交易152,且轉遞交易152以便在整個區塊鏈網路106中傳播該等交易。交易協定及節點協定彼此對應,且給定交易協定與給定節點協定相配,一起實施給定交易模型。同一交易協定用於區塊鏈150中之所有交易152。相同節點協定係由網路106中之所有節點104使用。
當給定當事方103,比如愛麗絲,希望發送待包括在區塊鏈150中之新交易152j時,她接著根據相關交易協定來制定新交易(使用她的客戶端應用程式105中之電子錢包功能)。她接著將交易152自客戶端應用程式105發送至她所連接至之一或多個區塊鏈節點104。例如,此可為最佳地連接至愛麗絲之電腦102的區塊鏈節點104。當任何給定區塊鏈節點104接收新交易152j時,該區塊鏈節點根據區塊鏈節點協定及其各別角色來處置該新交易。此包含首先檢查新接收之交易152j是否符合為「有效的」某一條件,不久將較詳細地論述該條件之實例。在一些交易協定中,可藉由交易152中所包括之指令碼在每一交易的基礎上組配驗核條件。替代地,條件可簡單地為節點協定之內置形貌體,或可由指令碼及節點協定之組合定義。
只要新接收之交易152j通過被視為有效的測試(亦即,只要其「經驗核」),則接收交易152j之任何區塊鏈節點104將會將新的經驗核交易152添加至在彼區塊鏈節點104處維持之交易之有序集合154。另外,接收交易152j之任何區塊鏈節點104將會將經驗核交易152向前傳播至網路106中之一或多個其他區塊鏈節點104。由於各區塊鏈節點104應用相同協定,因此接著假設交易152j為有效的,此意謂該交易將迅速在整個網路106中傳播。
一旦被接納至在給定區塊鏈節點104處維持之未決交易的有序集區154,則彼區塊鏈節點104將開始競爭以解決其關於包括新交易152之交易的各別集區154之最新版本的工作量證明難題(前已述及,其他區塊鏈節點104可能正試圖基於交易之不同集區154來解決難題,但不論誰率先完成皆將界定包括於最新區塊151中之交易的集合。最終,區塊鏈節點104將解決包括愛麗絲之交易152j的有序集區154之一部分的難題)。一旦已針對包括新交易152j之集區154完成工作量證明,則其不可變地成為區塊鏈150中之區塊151中之一者的部分。各交易152包含返回較早交易之指標,因此亦不可變地記錄交易之次序。
不同區塊鏈節點104可首先接收給定交易之不同例項,且因此具有其例項在於新區塊151中公佈一個例項之前係「有效的」之衝突視圖,此時,所有區塊鏈節點104同意經公佈例項為唯一有效的例項。若區塊鏈節點104將一個例項接受為有效的且接著發現第二例項已經記錄在區塊鏈150中,則彼區塊鏈節點104必須接受此情形且將丟棄其最初接受之該例項(亦即,尚未在區塊151中公佈之例項) (亦即,將其視為無效的)。
由一些區塊鏈網路操作之交易協定之替代類型可被稱作「基於帳戶之」協定,作為基於帳戶之交易模型的部分。在基於帳戶之狀況下,各交易並不藉由返回參考一系列過去交易中之前述交易之UTXO來界定待轉移金額,而是參考絕對帳戶餘額。所有帳戶之當前狀態由與區塊鏈分離的彼網路之節點儲存且經不斷更新。在此類系統中,使用帳戶之運行交易計數(亦被稱作「位置」)來對交易進行排序。此值由發送者簽署,作為其密碼簽章之部分,且作為交易參考計算之部分而經雜湊。另外,任選的資料欄位亦可對交易進行簽署。舉例而言,若先前交易ID包括於資料欄位中,則此資料欄位可指回至先前交易。 基於UTXO之模型
圖2說明實例交易協定。此為基於UTXO之協定之實例。交易152 (簡稱為「Tx」)為區塊鏈150之基本資料結構(各區塊151包含一或多個交易152)。下文將參考基於輸出或基於「UTXO」之協定來描述。然而,此並不限於所有可能的實施例。應注意,雖然參考比特幣描述實例基於UTXO之協定,但其可同樣地實施於其他實例區塊鏈網路上。
在基於UTXO之模型中,各交易(「Tx」) 152包含資料結構,該資料結構包含一或多個輸入202及一或多個輸出203。各輸出203可包含未支出交易輸出(UTXO),其可用作另一新交易之輸入202的來源(若UTXO尚未被兌換)。UTXO包括指定數位資產之金額的值。此表示分散式分類帳上之代幣的設定數目。UTXO亦可含有其所來自的交易之交易ID以及其他資訊。交易資料結構亦可包含標頭201,該標頭可包含輸入欄位202及輸出欄位203之大小之指示符。標頭201亦可包括交易之ID。在實施例中,交易ID為交易資料(不包括交易ID本身)之雜湊,且儲存於經提交至節點104之原始交易152的標頭201中。
假設愛麗絲103a希望創建將所討論之一金額之數位資產轉移至鮑勃103b的交易152j。在圖2中,愛麗絲之新交易152j經標記為「Tx1」。該交易獲取在序列中之先前交易152i之輸出203中鎖定至愛麗絲的一金額之數位資產且將此數位資產中之至少一些轉移至鮑勃。在圖2中,先前交易152i經標記為「Tx0」。Tx0及Tx1僅為任意標記。其未必意謂Tx0係區塊鏈151中之第一交易,或Tx1係集區154中之緊接著的下一交易。Tx1可指回至仍具有鎖定至愛麗絲之未支出輸出203的任何先前(亦即,前期)交易。
在愛麗絲創建其新交易Tx1時,或至少在她將新交易發送至網路106時,先前交易Tx0可能已經驗核且包括於區塊鏈150之區塊151中。該交易彼時可能已經包括於區塊151中之一者中,或該交易可能仍在有序集合154中等待,在此狀況下,該交易將迅速包括於新區塊151中。替代地,可創建Tx0及Tx1且將其一起發送至網路106,或若節點協定允許緩衝「孤立」交易,則Tx0甚至可在Tx1之後發送。如本文中所使用之術語「先前」及「後續」在交易序列之上下文中係指如交易中指定之交易指標所界定的序列中之交易的次序(哪些交易指回至哪些其他交易,等等)。該等術語同樣可用「前置」及「後置」或「前期」及「後期」、「父代」及「子代」等來替換。其未必暗示該等交易經創建、發送至網路106或到達任何給定區塊鏈節點104之次序。然而,直至且除非父交易經驗核,否則將不驗核指向先前交易(前期交易或「父代」)之後續交易(後期交易或「子代」)。在其父代之前到達區塊鏈節點104之子代被認為孤立的。取決於節點協定及/或節點行為,子代可被捨棄或緩衝一段時間以等待父代。
先前交易Tx0的一或多個輸出203中之一者包含特定UTXO,其在此處經標記為UTXO0。各UTXO包含指定由UTXO表示之一金額之數位資產的值,及鎖定指令碼,該鎖定指令碼界定必須由後續交易之輸入202中之解鎖指令碼符合的條件,以便驗核後續交易且因此成功地兌換UTXO。通常,鎖定指令碼將該金額鎖定至特定當事方(其中包括鎖定指令碼之交易的受益人)。亦即,鎖定指令碼界定解鎖條件,其通常包含如下條件:後續交易之輸入中之解鎖指令碼包含先前交易鎖定至的當事方之密碼簽章。
鎖定指令碼(亦稱為scriptPubKey)為用節點協定辨識之區域特定語言編寫之一段程式碼。此類語言之特定實例被稱為「指令碼(Script)」(S為大寫),其係由區塊鏈網路使用。鎖定指令碼指定需要何種資訊來支出交易輸出203,例如愛麗絲之簽章的要求。解除鎖定指令碼出現在交易之輸出中。解除鎖定指令碼(亦稱為scriptSig)係用區域特定語言編寫之一段程式碼,該區域特定語言提供滿足鎖定指令碼準則所需之資訊。舉例而言,其可含有鮑勃之簽章。解鎖指令碼出現在交易之輸入202中。
因此,在所說明實例中,Tx0之輸出203中之UTXO0包含鎖定指令碼[Checksig PA],該鎖定指令碼需要愛麗絲之簽章Sig PA以便兌換UTXO0(嚴格地,以便使嘗試兌換UTXO0之後續交易係有效的)。[Checksig PA]含有來自愛麗絲之公開-私密金鑰對之公開金鑰PA的表示(亦即,雜湊)。Tx1之輸入202包含指回至Tx1之指標(例如,藉助於其交易ID,TxID0,其在實施例中為整個交易Tx0之雜湊)。Tx1之輸入202包含識別Tx0內之UTXO0的索引,以在Tx0之任何其他可能的輸出當中識別UTXO0。Tx1之輸入202進一步包含解鎖指令碼<Sig PA>,其包含愛麗絲之密碼簽章,該密碼簽章由愛麗絲將其來自金鑰對之私密金鑰應用於資料之預定義部分(在密碼學中有時被稱為「訊息」)而創建。需要由愛麗絲簽署以提供有效簽章之資料(或「訊息」)可由鎖定指令碼或由節點協定或由此等之組合來界定。
當新交易Tx1到達區塊鏈節點104時,該節點應用節點協定。此包含一起運行鎖定指令碼及解鎖指令碼以檢查解鎖指令碼是否符合鎖定指令碼中所界定之條件(其中此條件可包含一或多個準則)。在實施例中,此涉及串接二個指令碼: <Sig PA> <PA> || [Checksig PA] 其中「||」表示串接,且「<…>」意謂將資料置放於堆疊上,並且「[…]」為鎖定指令碼所包含之函數(在此實例中為基於堆疊之語言)。等效地,指令碼可一個接一個地運用共同堆疊來運行,而非串接指令碼。無論如何,當一起運行時,指令碼使用如包括在Tx0之輸出中之鎖定指令碼中的愛麗絲之公開金鑰PA,以鑑認Tx1之輸入中之解鎖指令碼含有對資料之預期部分進行簽署的愛麗絲之簽章。亦需要包括資料自身(「訊息」)之預期部分,以便執行此鑑認。在實施例中,經簽署資料包含整個Tx1(因此不需要包括單獨元素來以明文指定資料之經簽署部分,此係因為其已經固有地存在)。
藉由公開-私密密碼術進行鑑認之細節將為熟習此項技術者所熟悉的。基本上,若愛麗絲已使用其私密金鑰對訊息進行簽署,則明確給定愛麗絲之公開金鑰及訊息,諸如節點104之另一實體能夠鑑認該訊息一定已由愛麗絲簽署。簽署通常包含對訊息進行雜湊、對雜湊進行簽署及將此標記至訊息上作為簽章,因此使得公開金鑰之任何持有者能夠鑑認該簽章。因此,應注意,本文中對特定資料片段或交易之部分或其類似者進行簽署之任何參考在實施例中可意謂對彼資料片段或交易之部分的雜湊進行簽署。
若Tx1中之解鎖指令碼滿足Tx0之鎖定指令碼中指定的一或多個條件(因此在所展示實例中,若愛麗絲之簽章經提供於Tx1中且經鑑認),則區塊鏈節點104將Tx1視為有效的。此意謂區塊鏈節點104將Tx1添加至未決交易之有序集區154。區塊鏈節點104亦將把交易
Tx
1 轉遞至網路106中之一或多個其他區塊鏈節點104,使得該交易將在整個網路106中傳播。一旦
Tx
1 已經驗核且包括於區塊鏈150中,則此將來自
Tx
0 之
UTXO
0 界定為已支出。應注意,
Tx
1 可僅在其支出未支出之交易輸出203的情況下為有效的。若
Tx
1 嘗試使用已由另一交易152支出之輸出,則
Tx
1 將為無效的,即使滿足所有其他條件亦如此。因此,區塊鏈節點104亦需要檢查是否已支出先前交易
Tx
0 中所提及之UTXO (亦即,其是否已形成至另一有效交易之有效輸入)。此係區塊鏈150將經界定次序強加於交易152上很重要的一個原因。實務上,給定區塊鏈節點104可維持單獨的資料庫,該資料庫標記在哪些交易152中支出了哪些UTXO 203,但最終什麼界定了是否已支出UTXO在於其是否已形成至區塊鏈150中之另一有效交易之有效輸入。
若給定交易152之所有輸出203中所指定的總金額大於由所有其輸入202指向之總金額,則此係大多數交易模型中之無效性的另一基礎。因此,該等交易將不被傳播,亦不包括於區塊151中。
應注意,在基於UTXO之交易模型中,需要將給定UTXO作為整體支出。其不能「留下」在UTXO中界定為支出之一小部分金額,同時支出另一小部分。然而,來自UTXO之金額可在下一交易之多個輸出之間經劃分。例如,
Tx
0 中之
UTXO
0 中所界定之金額可在
Tx
1 中之多個UTXO之間經劃分。因此,若愛麗絲不想將
UTXO
0 中所界定之所有金額給予鮑勃,則其可使用其餘部分在
Tx
1 之第二輸出中給自己零錢,或付錢給另一當事方。
實務上,愛麗絲通常亦將需要包括比特幣節點104之費用,該比特幣節點成功地將愛麗絲之交易104包括於區塊151中。若愛麗絲不包括此類費用,則
Tx
0 可能被區塊鏈節點104拒絕,並且因此儘管技術上有效,但可能不會被傳播及包括於區塊鏈150中(若區塊鏈節點104不想接受交易152,則該節點協定不會強迫該等區塊鏈節點接受該等交易)。在一些協定中,交易費用不需要其自身單獨的輸出203 (亦即,不需要單獨的UTXO)。實情為,由給定交易152之輸入202所指向的總金額與輸出203中所指定的總金額之間的任何差額被自動地給予公佈該交易之區塊鏈節點104。例如,假設指向
UTXO
0 之指標為
Tx
1 之唯一輸入,且
Tx
1 僅具有一個輸出
UTXO
1 。若
UTXO
0 中所指定之數位資產的金額大於
UTXO
1 中所指定之金額,則差額可由贏得工作量證明競賽之節點104指派以創建含有
UTXO
1 之區塊。然而,替代地或另外,不一定排除可在交易152之其自身的UTXO 203中之一者中明確指定交易費用。
愛麗絲及鮑勃之數位資產由在區塊鏈150中任何位置處之任何交易152中鎖定至愛麗絲及鮑勃的UTXO組成。因此,給定方103之資產通常遍及整個區塊鏈150中之各種交易152的UTXO而散佈。區塊鏈150中任何位置處皆未儲存界定給定當事方103之總餘額的一個數字。客戶端應用程式105中之電子錢包功能的作用為將鎖定至各別當事方且尚未在另一後續交易中支出之所有各種UTXO的值一起核對。其可藉由查詢如儲存於比特幣節點104中之任一者處的區塊鏈150的複本來進行此操作。
應注意,通常示意性地表示指令碼程式碼(亦即,不使用確切語言)。舉例而言,可使用操作程式碼(作業碼)來表示特定功能。「OP_...」係指指令碼語言之特定作業碼。作為實例,OP_RETURN為指令碼語言之作業碼,其會在鎖定指令碼之開始處以OP_FALSE開頭時創建可在交易內儲存資料的交易之不可用輸出,且由此將資料不可變地記錄在區塊鏈150中。例如,資料可包含需要儲存於區塊鏈中之文件。
通常,交易之輸入含有對應於公開金鑰
P
A 之數位簽章。在實施例中,此係基於使用橢圓曲線secp256k1之ECDSA。數位簽章對特定資料片段進行簽署。在一些實施例中,對於給定交易,簽章會對交易輸入之部分及交易輸出中之一些或全部進行簽署。數位簽章所簽署之輸出之特定部分取決於SIGHASH旗標。SIGHASH旗標通常為4位元組程式碼,其包括於簽章之末尾,以選擇對哪些輸出進行簽署(且因此在簽署時固定)。
鎖定指令碼有時被稱作「scriptPubKey」,其係指其通常包含各別交易所鎖定至之當事方的公開金鑰之事實。解鎖指令碼有時被稱作「scriptSig」,其係指其通常供應對應簽章之事實。然而,更一般而言,在區塊鏈150之所有應用程式中,待兌換之UTXO的條件不一定包含鑑認簽章。更一般而言,指令碼處理語言可用於界定任何一或多個條件。因此,更一般術語「鎖定指令碼」及「解鎖指令碼」可為較佳的。 客戶端軟體
圖3A說明用於實施本發明所揭露方案的實施例之客戶端應用程式105之實例實施。客戶端應用程式105包含交易引擎401及使用者介面(UI)層402。交易引擎401經組配以根據上文所論述且稍後將進一步詳細論述之方案實施客戶端105之與基礎交易相關之功能,以便制定交易152,將交易發送至一或多個節點104以經由區塊鏈網路106進行傳播。
UI層402經組配以經由各別使用者之電腦裝備102之使用者輸入/輸出(I/O)構件來呈現使用者介面,包括將經由裝備102之使用者輸出構件將資訊輸出至各別使用者103,及經由裝備102之使用者輸入構件自各別使用者103接收回輸入。舉例而言,使用者輸出構件可包含用於提供視覺輸出之一或多個顯示螢幕(觸控式或非觸控式螢幕)、用於提供音訊輸出之一或多個揚聲器及/或用於提供觸覺輸出之一或多個觸覺輸出裝置等。使用者輸入構件可包含例如以下各者之輸入陣列:一或多個觸控式螢幕(與用於輸出構件之觸控式螢幕相同或不同);一或多個基於游標之裝置,諸如滑鼠、軌跡墊或軌跡球;一或多個麥克風及語音或話音辨識演算法,其用於接收語音或聲音輸入;一或多個基於姿勢之輸入裝置,其用於接收呈手勢或身體姿勢之形式的輸入;或一或多個機械按鈕、開關或操縱桿等。
應注意:雖然本文中之各種功能可描述為整合至相同客戶端應用程式105中,但此未必為限制性的,並且實情為,其可實施於一套二個或更多個不同應用程式中,例如一個應用程式為另一應用程式之外掛程式或經由應用程式設計介面(API)介接。舉例而言,交易引擎401之功能可實施於與UI層402分離之應用程式中,或諸如交易引擎401之給定模組之功能可在多於一個應用程式之間進行劃分。亦不排除可在比如作業系統層處實施所描述功能中之一些或全部。在本文中任何位置皆提及單個或給定應用程式105或其類似者的情況下,應瞭解,此僅作為實例,且更一般而言,所描述之功能可以任何形式之軟體實施。
圖3B提供使用者介面(UI) 500之實例的模型,該使用者介面可由愛麗絲之裝備102a上之客戶端應用程式105a的UI層402呈現。應瞭解,類似UI可由鮑勃之裝備102b或任何其他當事方之裝備上之客戶端105b呈現。
作為說明,圖3B自愛麗絲之視角展示UI 500。UI 500可包含經由使用者輸出構件顯現為不同UI元件之一或多個UI元件501、502、502。
舉例而言,UI元件可包含一或多個使用者可選擇元件501,其可為諸如不同螢幕上按鈕或選單中之不同選項或其類似者。使用者輸入構件經配置以使得使用者103 (在此狀況下為愛麗絲103a)能夠選擇或以其他方式操作選項中之一者,諸如藉由點擊或觸碰螢幕上之UI元件,或說出所要選項之名稱(注意:如本文中所使用之術語「手動」僅意指與自動相對,且未必限於使用手)。選項使得使用者(愛麗絲)能夠制定交易152且將交易發送至一或多個節點104以經由區塊鏈網路106進行傳播。
替代地或另外,UI元件可包含一或多個資料鍵入欄位502,使用者可經由該等資料鍵入欄位制定交易152且將交易發送至一或多個節點104以經由區塊鏈網路106進行傳播。此等資料鍵入欄位經由使用者輸出構件例如在螢幕上呈現,且資料可經由使用者輸入構件,例如鍵盤或觸控式螢幕而經鍵入至欄位中。替代地,資料可例如基於語音辨識而經口頭接收。
替代地或另外,UI元件可包含一或多個資訊元件503,該一或多個資訊元件輸出以將資訊輸出至使用者。例如,此/此等元件可在螢幕上或有聲地呈現。
應瞭解,呈現各種UI元件、選擇選項及鍵入資料之特定構件並不重要。稍後將更詳細地論述此等UI元件之功能。亦應瞭解,圖3B中所展示之UI 500僅為示意性模型,且實務上,其可包含出於簡明起見而未說明之一或多個其他UI元件。 零知識證明
如上文所提及,零知識證明(ZKP)可用於證明秘密之知識而不顯露任何秘密資料。在不丟失一般性之情況下,本揭露內容之實施例係參考zkSNARK協定之Groth16類構造進行描述以建構簡單且高效的ZKP,然而實施例延伸至其他ZKP,諸如Bulletproof及Plonk。
零知識簡潔非交互式知識論證(zkSNARK)為簡潔且其證明極短且易於驗證的知識之非交互式零知識(NIZK)證明。陳述係依據用於產生陳述證明之邏輯電路表示。在最高效建構中,驗證者僅執行恆定數目個群運算。zkSNARK可用於證明給定輸出之任意函數
的秘密輸入
之知識。其使用線性機率性證明,結合基於雙線性配對及離散對數問題(DLP)之零知識技術。
算術電路
用於表示函數
,其中ZKP係由給定公開輸入及輸出之秘密輸入提供。電路由乘法閘與加法閘構成。並非整個電路之輸出的乘法閘的輸出標記為輔助變數。
zkSNARK協定一般由三個階段組成(其在圖4中說明): a. 設置(可信賴的第三當事方執行金鑰產生):給定陳述,經由包括代數電路產生、等級-1約束系統(R1CS)及二次算術程式(QAP)之若干內部步驟來計算證明及驗證金鑰對。私密資訊必須被破壞且永遠不會再次存在,此係因為存取此等私密資訊之任何人皆可進行攻擊。 b. 證明產生(證明者執行證明產生):給定公開資訊,證明金鑰、公開及私密輸入,證明者產生證明且將其發送至驗證者。 c. 驗證(驗證者執行驗證協定):給定公開資訊、驗證金鑰及公開輸入,驗證者執行驗證。
以下表1展示zkSNARK協定之Groth16類構造之各階段的輸入及輸出。
表 1
階段 | 輸入 | 輸出 |
設置 | 電路 | 證明金鑰 、驗證金鑰 |
證明者 | 證明金鑰 、公開輸入 、見證 | 證明 |
驗證者 | 驗證金鑰 、公開輸入 、證明 | 決策位元1或0 |
zkSNARK協定應滿足以下特性: ● 完整性:若陳述為真,且驗證者及證明者為誠實的,則接受證明。 ● 可靠性:若陳述為假,則欺騙證明者不能使誠實的驗證者相信其為真,除了有極小的機率。 ● 零知識:零知識證明不向驗證者顯露除陳述之真實性以外的資訊。 ● 簡潔性:證明短於電路大小,且驗證者必須進行小於電路大小之數個密碼操作。 ● 非交互性:僅在一個步驟中將證明發送至驗證者。 ● 知識之論證:證明被認為在計算上是合理的。即,無界證明者(如量子電腦)可在未被偵測到之情況下證明錯誤陳述。 ● 知識:證明者實際上知道見證且不可在不能夠存取見證(其係證明陳述所需之私密輸入)情況下建構證明,亦即,存在與證明者交互且輸出見證之提取器演算法。
證明者可使用zkSNARK來證明『有效指派』
之知識,其為由電路之輸入、輸出及輔助變數所構成之向量,另外表示為:
其中
為表示有效指派中之各參數之變數的數目之整數。應注意,有效指派
內之輸入由秘密輸入
及任擇的公開輸入
成。有效指派之公開成分
(即,電路之任何公開輸入及所有輸出以及任何公開輔助變數)及有效指派之秘密成分
(亦即,所有秘密輸入及任何秘密輔助變數)二者皆被饋入至證明產生器中。應注意,驗證者僅具有有效指派之公開成分
之可見性。亦即,術語「秘密」在本文中用以指代未為驗證者所知之資料。藉由將函數
界定為在zkSNARK之設置階段中從其制定金鑰產生協定之算術電路,來自設置(亦即,證明及驗證金鑰)之輸出可用於產生用於任何給定電路之不同有效指派
的多個證明。圖4說明三個階段中之各者之間的輸入及輸出的流程。
在圖4中,饋入至由證明者執行之證明產生過程中的
係指有效指派中之所有公開參數,例如函數F之公開輸入『x』、來自函數
之公開輸出及任何公開輔助變數。在圖4中,
包括有效指派中之所有秘密參數,例如函數F之秘密輸入『w』及任何秘密輔助變數。
在第二證明產生階段期間,證明者計算取決於電路及有效指派之三個多項式
、
、
。該組多項式形成二次算術程式(QAP)之部分,其在
之不同值下對電路之約束進行編碼。要求證明者證明在未知值
處滿足約束。給定此證明,吾人假定證明者具有所有約束之知識(提及zkSNARK之論證性質)。倘若滿足了QAP整除性條件,則將接受證明
,其中:
可由僅僅取決於電路之目標多項式
整除。
應注意多項式係使用橢圓曲線點隱藏。證明由點
、
、
組成,該等點用於雙線性配對
以確保QAP整除性,使得:
其中多項式
之知識必須經證實。若上述等式保持為真,則驗證者知道證明者具有有效指派之知識。驗證協定亦檢查以下情況: ● 證明者已使用證明金鑰
計算
、
、
, ● 證明者已在
、
、
中之各者中使用相同有效指派,且 ● 證明者已聲明正確的公開輸入
。
第三驗證階段取決於驗證被發現為有效抑或無效而分別返回接受或拒絕決策。應注意,不管函數之大小如何,用於四個驗證計算之證明始終在八個橢圓曲線點處固定。此滿足zkSNARK之簡潔性特性。對此證明及對應電路具有知識之任何人可驗證該計算,使得其為非交互式證明。驗證者並不學習關於秘密之任何資訊,且在沒有被正確計算之情況下,證明成功在計算上係不可行的,亦即,對於證明者來說,除了誠實地行動之外,計算被接受之證明在計算上係不可行的。驗證金鑰將確保驗證者在驗證者沒有直接使用電路之情況下確實驗核了預定陳述(意謂電路)。
儘管上文提及了zkSNARKs之Groth16類構造,但實施例不限於此類型之ZKP。特別地,ZKP可為基於多方計算(MPC)之zkSNARK(例如,zkBOO)、STARK或Bulletproofs等。 金鑰導出協定
一個實例金鑰導出協定為描述自單個二進位種子導出多個私密/公開金鑰對之方法的BIP32規範。方法產生形成似樹資料結構之金鑰的分層確定性(HD)電子錢包。
第一延伸金鑰(主要金鑰)藉由經由HMAC-SHA512雜湊函數置放種子來創建。特別地,HD電子錢包之主要金鑰由以下步驟產生: 1. 產生隨機種子位元組序列
,其中
為橢圓曲線群之階。 2. 計算
,其中
且
。
經界定為:
其中
為值為
之重複位元組之128位元組外部填補,
為值為
之重複位元組之128位元組內部填補,且
表示逐位元互斥(XOR)運算。 3. 劃分
將為分別針對左及右32位元組標記為
及
之二個32位元組序列。 4. 界定
,其中函數
將
轉換為256位元數字,最高有效位元組在前。此為主要私密金鑰
。 5. 將
界定為主要鏈碼。
延伸私密主要金鑰界定為
。私密主要金鑰應必定保持秘密。其用以導出可視需要而使用之子金鑰。所有延伸金鑰可導出子延伸金鑰。延伸金鑰為可用於導出HD電子錢包中之新金鑰之私密金鑰或公開金鑰。延伸私密金鑰為與鏈碼耦接之私密金鑰。對應延伸公開金鑰可藉由獲取私密金鑰且計算其對應公開金鑰並將其與相同鏈碼耦接來創建。
在一個實例中,父私密金鑰可用於導出子私密金鑰,此說明於圖5中。
函數
按以下方式自延伸父私密金鑰
及索引
導出延伸子私密金鑰
: 1. 索引
編碼子金鑰係經硬化抑或未經硬化: a) 若
,則子金鑰未經硬化。計算:
其中,函數
使用SEC1壓縮形式將橢圓曲線座
串列化為33位元組序列:
或
,其中第一位元組取決於
座標之奇偶校驗。函數
將32位元整數
串列化為4位元組序列,最高有效位元組在前。 b) 若
,則子金鑰經硬化。計算:
其中函數
將整數
串列化為32位元組序列(33位元組長,具有
襯墊)。 2. 將
劃分為分別針對左及右32位元組標記為
及
之二個32位元組序列。 3. 子私密金鑰為
。亦即,子私密金鑰係使用父私密金鑰及雜湊函數輸出之第一部分(
)來產生,該雜湊函數輸出在父私密金鑰作為輸入供應至HMAC-SHA512雜湊函數中時產生。 4. 將
界定為子鏈碼。
此方法可用於自單個父代導出至多
個子金鑰。另外,在上述方法中可將各子代視為父金鑰以導出孫金鑰(grandchild key)等。不存在對子金鑰之產生之深度的限制(除恢復性考慮因素之外)。
以類似方式,父公開金鑰可用於導出子公開金鑰,此說明於圖5中。在此實例中,子公開金鑰係使用父公開金鑰及雜湊函數輸出之第一部分(
)來產生,該雜湊函數輸出在父公開金鑰作為輸入供應至HMAC-SHA512雜湊函數中時產生。
如圖5中所展示,對應於在父私密/公開金鑰作為輸入供應至HMAC-SHA512雜湊函數中時產生之雜湊函數輸出的剩餘部分之子鏈碼
接著用作在子公開/私密金鑰「變成父代」時輸入至HMAC-SHA512雜湊函數中的父鏈碼且用於導出子金鑰。
考慮到自父代導出一個未經硬化子金鑰所需之資訊,有可能(對於發送者)代表電子錢包擁有者(接收者)導出其他子金鑰,其最小化二個當事方之間所需要的通訊回合。然而,此類型之組配將HD電子錢包(包括BIP32)伺服器暴露於提權攻擊。
亦即,給定延伸父公開金鑰
及任何未經硬化子私密金鑰
,攻擊者可藉由計算
獲得父秘密金鑰
。攻擊者可接著導出給定深度及金鑰導出路徑之所有子金鑰,直至(且包括)經硬化父金鑰。
HD電子錢包中之導出路徑經界定為由『/』分離之
金鑰索引的
元組。BIP32預設電子錢包佈局採用主要金鑰
之後的3層階層且由導出路徑界定: m/賬戶'/改變/位址_索引。
在此電子錢包組配中,在階層式資料結構(帳戶')之第一深度處的子金鑰經硬化。若攻擊者獲得未經硬化子私密金鑰之知識(改變或位址_索引層級),則其將接著能夠藉由使用以上提權攻擊存取所有子金鑰之資金來破解整個賬戶。 證明產生及驗證
圖6說明在用於驗證子公開金鑰之真實性之過程600中藉由驗證者電腦裝備602a (計算裝置)及證明者電腦裝備602b (計算裝置)執行的步驟。
在步驟S602處,與驗證者相關聯之驗證者電腦裝備602a獲得與實體相關聯之子公開金鑰。應瞭解,驗證者電腦裝備602a可以多種不同方式獲得子公開金鑰。在一個實例中,驗證者電腦裝備602a可藉由請求及隨後自證明者電腦裝備602b接收子公開金鑰來獲得子公開金鑰。
在步驟S604處,驗證者電腦裝備602a將訊息傳輸至證明者電腦裝備602b,從而請求證明子公開金鑰為真實的。亦即,驗證者電腦裝備602a請求證明金鑰導出協定已用於自父金鑰導出子公開金鑰。
在步驟S606處,回應於接收到訊息,證明者電腦裝備602b產生用於證明子公開金鑰為真實的ZKP,且在步驟S608處將證明傳輸至驗證者電腦裝備602a。證明者電腦裝備602b可與跟子公開金鑰相關聯之實體相關聯(亦即,子公開金鑰可與證明者相關聯)。然而,此並非必不可少的,且證明者電腦裝備602b不必與跟子公開金鑰相關聯之實體相關聯。
在步驟S610處,驗證者電腦裝備602a用於驗證證明,且藉由成功地驗證證明,驗證者可確保金鑰導出協定已用於自父金鑰導出子公開金鑰,且因此在步驟S612處,驗證者接受子公開金鑰為真實的。
下文在驗證者向證明者發送付款及證明自子公開金鑰導出之付款位址為真實的證明之上下文中更詳細地描述過程600。如稍後將描述,本發明之實施例不限於此付款上下文。 經硬化子金鑰導出證明
給定延伸父公開金鑰
,吾人可證明未經硬化子公開金鑰
已使用以下公式相對於BIP32導出路徑正確地導出:
其中橢圓曲線運算子
及
分別表示點加法及純量點乘法,且
為HMAC函數
之輸出的左32位元組。忽略隱私問題,第三當事方具有延伸父公開金鑰之知識係安全的。此知識適用於多個交易被發送至公開金鑰之擁有者的狀況,此係由於發送者可使用以上子金鑰導出(CKD)公式代表接收者導出付款位址。此減少二個當事方之間所需之通訊回合。
相反,歸因於存在至HMAC函數之秘密輸入,經硬化子公開金鑰
無法自延伸父公開金鑰導出:
金鑰導出公式在此處展示驗證者將需要知道必須為秘密之父私密金鑰
。
吾人在本文中描述一種用於使用ZKP證明經硬化子金鑰之導出的方法。此將允許第三當事方在具有父私密金鑰之知識之情況下驗證CKD計算之正確性,亦即,證明經硬化子公開金鑰係自給定父公開金鑰導出。
在此實施例中,父金鑰為私密父金鑰,且子公開金鑰為經硬化子公開金鑰。
圖7中所說明之電路C表示用於經硬化子公開金鑰
之BIP32 CKD函數,且對於該函數,給定一或多個已知輸出,將證明函數輸入之知識。圖7用於展示哪些輸入/輸出在證明產生/驗證過程中為公開/秘密的。
電路C係基於以下假設: ● 延伸公開父金鑰
為已知的。父公開金鑰可未經硬化或經硬化(
);為簡單起見,在此處使用記法
。 ● BIP32 CKD方法為已知的,使得
為第
未經硬化子金鑰,且
為第
經硬化子金鑰。 ● 橢圓曲線產生器點
針對證明者及驗證者二者經硬編碼,且因此可自輸入省略。
至電路之輸入為: ● 秘密輸入
o 父私密金鑰
702 ● 公開輸入
o 父鏈碼
704 o 金鑰索引
706 且輸出為子公開金鑰
710及父公開金鑰
712。
證明者電腦裝備602b執行電路C,以輸出有效指派。亦即,證明者電腦裝備602b將上文提及之輸入供應至電路C,以產生上文提及之輸出。
電路之有效指派
包含3個輸入(
)、2個輸出(
)及包括(
)之輔助變數。
圖7說明輸入係公開的抑或秘密的(由陰影框表示),以及在產生指定輸出之函數F 708內發生之計算。在函數F 708之執行期間產生的輔助變數並未明確地展示於圖7中。
在高層級,用於此有效指派之電路中的計算步驟如下:
步驟 1 .設定秘密(
)及公開(
)輸入:
步驟 2 .使用給定輸入執行函數
708:
i.Compute
:
a.Compute
b.Compute
c.Compute
ii.Compute
:
a.Set operand
as
b.Set operand
as
步驟 3 .公開函數
之輸出使得
:
若在輸出中需要延伸子公開金鑰,則鏈碼
可藉由複製用於HMAC函數之最右輸出
的電路之步驟2ib來計算。
考慮到以下情形:其中愛麗絲103a (驗證者)希望自經認證商家鮑勃103b (證明者)購買高價值之產品,該經認證商家鮑勃具有將其父公開金鑰鏈接至其身分識別之憑證。在此情形下,驗證者電腦裝備602a對應於愛麗絲之電腦裝備102a,且證明者電腦裝備602b對應於鮑勃之電腦裝備102b。
由於鮑勃103b僅接受對經硬化公開金鑰之付款,因此愛麗絲103a不能代表鮑勃103b產生子金鑰及所得付款位址。
愛麗絲103a自鮑勃(或直接自證明者電腦裝備602b,自鮑勃之電子錢包伺服器,或藉由一些其他構件)獲得自未經認證之經硬化子公開金鑰
導出的付款位址。電子錢包伺服器可對應於上文所提及之區塊鏈節點104中之一者或耦接至區塊鏈節點104中之一者的伺服器。電子錢包伺服器導出所有金鑰且將所有金鑰儲存於使用者之電子錢包中,該等金鑰接著用於導出付款位址。應瞭解,此等金鑰一次可導出一個金鑰或一次間歇地導出幾個金鑰。
在步驟S602處,愛麗絲103a亦獲得經硬化子公開金鑰
(直接自證明者電腦裝備602b,自鮑勃之電子錢包伺服器或藉由一些其他構件)。在步驟S604處,愛麗絲103a請求證明此經硬化子公開金鑰在完成其付款交易之前係真實的。
在步驟S606,證明者電腦裝備602b基於對表示經硬化CKD函數之公開電路的有效指派而產生證明。
為了在步驟S606處產生證明,證明者電腦裝備602b將輸入『
』供應至證明產生過程中,在此實例實施例中,該證明產生過程包括至函數F 708之公開輸入(父鏈碼
704及金鑰索引
706)及來自函數
708之公開輸出(經硬化子公開金鑰
710及父公開金鑰
712)。
為了在步驟S606處產生證明,證明者電腦裝備602b另外將輸入『
』供應至證明產生過程中,該證明產生過程包括有效指派中之所有秘密參數,例如,至函數F 708之秘密輸入(父私密金鑰
702)及任何秘密輔助變數。
證明者電腦裝備602b另外將證明金鑰
作為輸入供應至證明產生過程中。
由證明者電腦裝備602b實施之證明產生過程使用輸入『
』、『
』及證明金鑰
來產生證明π。鮑勃之證明展示,愛麗絲103a自鮑勃獲得之經硬化公開金鑰實際上為鮑勃之經認證父金鑰的子代。
在此實例中,ZKP建構如下: 給定
,提供見證
之zkSNARK證明
用於:
。
為了驗證證明,驗證者電腦裝備602a將證明及輸入『
』供應至證明驗證過程中,此實例實施例中,該證明驗證過程包括至函數F 708之公開輸入(父鏈碼
704及金鑰索引
706)及來自函數
708之公開輸出(經硬化子公開金鑰
710及父公開金鑰
712)。
驗證者電腦裝備602a另外將驗證金鑰
作為輸入供應至證明驗證過程中。
由驗證者電腦裝備602a實施之證明驗證過程使用證明、輸入『
』、驗證金鑰
來驗證證明π。證明驗證過程取決於證明被發現為有效抑或無效而輸出接受或拒絕決策。藉由在步驟S610處驗證鮑勃之證明,愛麗絲103a可確保經硬化子公開金鑰
已使用BIP32導出方法正確地自父私密金鑰
導出。此向愛麗絲103a保證其為鮑勃具有之付款位址實際上為正確的付款位址。
驗證者(愛麗絲103a)具有對父代公開金鑰
(其為輸入『
』之部分)之複本的先前知識。在一些實施例中,驗證者電腦裝備602a可自證明者電腦裝備602b接收由證明者電腦裝備602b使用以產生證明之父公開金鑰,且除證明驗證之外,判定子公開金鑰之真實性可進一步基於由證明者電腦裝備602b使用以產生證明之父公開金鑰
是否與驗證者具有先前知識之父公開金鑰之複本匹配。亦即,若由證明者電腦裝備602b使用以產生證明之父公開金鑰
與父公開金鑰之複本匹配,則此向愛麗絲103a確認證明者(鮑勃103b)之身分識別係所預期的且子公開金鑰判定為真實的。
此實施例已參考用於包含一些公開輸入『x』(例如,父鏈碼
704及金鑰索引
706)之證明產生及證明驗證過程中的輸入
。應瞭解,父鏈碼
704及金鑰索引
706中之一者或二者可為秘密輸入『w』,該秘密輸入為用於證明產生過程中之輸入
的部分。父鏈碼
704及金鑰索引
706中之各者可為秘密或公開的。 經硬化或未經硬化子金鑰導出證明
經硬化或未經硬化之不同延伸金鑰的知識可引起以下三種情形: 1. 延伸公開父金鑰之知識:攻擊者獲得父公開金鑰及父鏈碼之知識且能夠導出所有未經硬化子公開金鑰。 2. 延伸公開父金鑰及未經硬化子私密金鑰之知識:攻擊者可執行提權攻擊。 3. 多個延伸公開子金鑰之知識:攻擊者具有包括於延伸串列化格式中之4位元組父指紋的知識,且可識別兄弟金鑰之間的關係。
在所有三種情形中,區塊鏈之公開性質意謂攻擊者可能夠追蹤支出模式。除隱私問題之外,在情形2中,攻擊者可竊用與被破解賬戶相關聯的資金。
吾人在本文中描述一種隱藏接收者之延伸父公開金鑰之方法,其中ZKP經建構以證明未經硬化或經硬化子公開金鑰之正確導出。本文中所描述之解決方案藉由隱藏延伸父公開金鑰來確保HD電子錢包免受提權攻擊,且保護接收者之隱私。
圖8中所說明之電路C表示用於經硬化子公開金鑰
或未經硬化子公開金鑰
之BIP32 CKD函數,且對於該函數,給定一或多個已知輸出,將證明函數之輸入的知識。圖8用於展示哪些輸入/輸出在證明產生/驗證過程中為公開/秘密的。
電路C係基於以下假設: ● 延伸公開父金鑰
為未已知的。 ● BIP32 CKD方法為已知的,使得
為第
未經硬化子金鑰,或
為第
經硬化子金鑰。 ● 橢圓曲線產生器點
針對證明者及驗證者二者經硬編碼。
至電路之輸入為: ● 秘密輸入
o 私密父金鑰
802 o 對應於父金鑰
之鏈碼804 o 金鑰索引
806 且輸出為: ● 未經硬化
或經硬化
子公開金鑰810。
父公開金鑰可未經硬化或經硬化(
);為簡單起見,在此處使用記法
。
電路可採用公開或私密父金鑰作為輸入以分別導出輸出中之未經硬化或經硬化子金鑰。為了適應二個類型之輸出,私密金鑰
可經設定為輸入,且可在電路內導出對應公開金鑰,如藉由圖8之示意圖中的函數
808之第一行所表明。
儘管圖8說明私密金鑰
經設定為輸入,但公開父金鑰
可替代地設定為輸入,但此將輸出僅限制為未經硬化子金鑰。
證明者電腦裝備602b執行電路C,以輸出有效指派。亦即,證明者電腦裝備602b將上文提及之輸入供應至電路C,以產生上文提及之輸出。
電路之有效指派
包含3個輸入
)、1個輸出(
)及包括
之輔助變數,其中對於
,
,或對於
,
。
圖8說明輸入係公開的抑或秘密的(由陰影框表示),以及在產生指定輸出之函數F 808內發生之計算。在函數F 808之執行期間產生的輔助變數並未明確地展示於圖8中。
在高層級,用於此有效指派之電路中的計算步驟如下:
步驟 1 .設定所有秘密輸入
:
步驟 2 .使用給定輸入執行函數
808:
i.Compute
ii.If
:
a.Compute
Elseif
:
b.Compute
Else:
c.Fail.
iii.Compute
iv.Compute
v.Compute
: If
:
a. Else:
b. 步驟 3 .函數
之公開輸出使得
:
or
。
若在輸出(輸出包括鏈碼
)中需要延伸子公開金鑰,則鏈碼
可藉由複製用於HMAC函數之最右輸出
的步驟2iii來計算。
對於給定延伸父金鑰,有可能將金鑰(公開或私密)及鏈碼二者設定為秘密輸入,以表明有可能在不具有輸入之任何知識之情況下證明子金鑰之導出。因此,請求證明子公開金鑰已經被正確導出之第三當事方可在不具有電路之輸入的明確知識之情況下驗證此證明。此係因為用於zkSNARK協定中之驗證金鑰
被鏈接至電路。因此,電路之知識(藉由擁有驗證金鑰
)對於驗證者接受或拒絕電路之輸出係足夠的。此外,將電路之所有輸入設定為秘密的確保不會洩露關於擁有者之身分識別及/或其交易歷史之資訊。
若需要公開輸入,則可僅將延伸父金鑰之部分設定為秘密輸入;但完整的延伸父金鑰為未知的。亦即,若公開父金鑰
經設定為輸入,則對應於父金鑰
之鏈碼804經設定為秘密輸入。若私密父金鑰
經設定為輸入,則對應於父金鑰
之鏈碼804可經設定為公開或秘密輸入。金鑰索引806可為秘密或公開的。
考慮到其中使用者愛麗絲103a希望將付款發送至另一使用者鮑勃103b之情形。在此情形下,驗證者電腦裝備602a對應於愛麗絲之電腦裝備102a。
愛麗絲103a具有用於鮑勃103b之未經認證公開金鑰
,且不確定所得付款位址是否為真實的。此在步驟S602 (直接自證明者電腦裝備602b,自鮑勃之電子錢包伺服器,或藉由某一其他構件)獲得。
在步驟S604處,愛麗絲103a請求證明此公開金鑰在完成其付款交易之前係真實的。此處,證明者電腦裝備602b可對應於與鮑勃103b相關聯之電腦裝備102b或與鮑勃之BIP32電子錢包提供者相關聯之電子錢包伺服器。吾人在下文參考其中證明者電腦裝備602b對應於與鮑勃之BIP32電子錢包提供者相關聯的電子錢包伺服器之實例。
在步驟S606,證明者電腦裝備602b基於對表示CKD函數之公開電路的有效指派而產生證明。
為了在步驟S606處產生證明,證明者電腦裝備602b將輸入『
』供應至證明產生過程中,在圖8中所展示之實例中,該證明產生過程不包括至函數
808之公開輸入及來自函數
之公開輸出810,在此實例中,該公開輸出為經硬化子公開金鑰
。
為了在步驟S606處產生證明,證明者電腦裝備602b另外將輸入『
』供應至證明產生過程中,該證明產生過程包括有效指派中之所有秘密參數,例如,至函數F 808之秘密輸入(父私密金鑰
802、父鏈碼
804及金鑰索引
806)及任何秘密輔助變數。
證明者電腦裝備602b另外將證明金鑰
作為輸入供應至證明產生過程中。
由證明者電腦裝備602b實施之證明產生過程使用輸入『
』、『
』及證明金鑰
來產生證明π。鮑勃之證明展示,愛麗絲103a自鮑勃獲得之經硬化子公開金鑰
實際上為鮑勃之經認證父金鑰的子代。
為了驗證證明,驗證者電腦裝備602a將證明及輸入『
』供應至證明驗證過程中,在圖8中所說明之實例中,該證明驗證過程不包括至函數F 808之公開輸入及來自函數
808之公開輸出(經硬化子公開金鑰
810)。
驗證者電腦裝備602a另外將驗證金鑰
作為輸入供應至證明驗證過程中。藉由在步驟S610處驗證鮑勃之證明,愛麗絲103a可確保經硬化子公開金鑰
已使用BIP32導出方法正確地自父私密金鑰
導出。此向愛麗絲103a保證其為鮑勃具有之付款位址實際上為正確的付款位址。
在另一實例中,證明者電腦裝備602b使用由鮑勃之延伸父公開金鑰
構成之有效指派產生證明,以證明未經硬化公開金鑰
正確地自電子錢包之CKD函數導出。此處,證明限於使用父公開金鑰作為輸入導出之證明,亦即,此處之輸出為未經硬化子公開金鑰
。
藉由驗證電子錢包提供者之證明
,愛麗絲確信自未經硬化子公開金鑰
導出之付款位址為正確的。
ZKP建構如下: 給定
,提供見證
之zkSNARK證明
用於:
。
儘管此實施例已在上文參考用於證明產生過程中之輸入『
』描述,該輸入包含父鏈碼
804及金鑰索引
806,但此僅為實例,且父鏈碼
804及金鑰索引
806中之一者或二者可為公開輸入『x』,該公開輸入為用於證明產生及證明驗證過程中之輸入『
』之部分。父鏈碼
804及金鑰索引
806中之各者可為秘密或公開的。 身分識別鏈接之子金鑰導出證明
在傳統公開金鑰基礎建設(PKI)中,憑證機構(CA)發佈認證私密-公開金鑰對之所有權的數位憑證。金鑰對之擁有者創建使其公開金鑰由CA認證之憑證請求,且使用其對應私密金鑰對請求進行簽署以證明金鑰對之所有權。CA通常在簽署及發佈數位憑證之前驗證身分識別相關資訊。
CA為可信賴的機構,且其數位簽章確保憑證之真實性及完整性。以下演算法概述數位簽章之創建及驗證,關於數位簽章,輸入及輸出在以下表2中列出: I.
簽署-簽章者使用數位簽章演算法中之其私密金鑰
簽署訊息
。簽章
、訊息
及簽章者之公開金鑰
接著發送至驗證者。 II.
驗證-驗證者使用簽章者之公開金鑰
及相同數位簽章演算法以驗證簽章
且驗核訊息
之真實性。
表 2
演算法 | 輸入 | 輸出 |
簽署 | 訊息 、私密金鑰 | 數位簽章 |
驗證 | 訊息 、公開金鑰 、數位簽章 | 決策位元1或0 |
由CA發佈之憑證含有訊息上之簽章
及訊息
二者,且寫成:
其中訊息
為使用CA之金鑰對之適當數位簽章演算法(例如,橢圓曲線金鑰對之ECDSA)用CA之私密金鑰
簽署之資料結構。
憑證可藉由驗證其內容(訊息
)上之CA之簽章來驗核且表示為:
其中
中之簽章係使用與簽署階段相同的簽章演算法用CA之公開金鑰
來驗證。驗證CA之簽章確保憑證之真實性,此係由於可信賴的CA使用其金鑰對(
)來認證資料。訊息之完整性係由數位簽章演算法提供,該數位簽章演算法通常雜湊訊息而非簽署原始資料,使得訊息在其已經簽署之後的任何改變由於雜湊函數之確定性特性而使簽章無效。
由CA發佈之憑證可基於廣泛接受之國際X.509 PKI標準(如圖12中所說明),其具有以下欄位: ●
包括數位憑證版本號碼(在編寫時為版本3)、指派給憑證之唯一ID、CA用於其簽章之公開金鑰算法、唯一識別發佈CA之名稱、憑證在其之後不可信賴的過期日期及唯一識別憑證之接收者的名稱。 ●
為接收者之公開金鑰及公開金鑰演算法。 ●
表示CA及/或接收者希望經簽署之額外資訊,例如聯絡人細節、社會保險號碼。應注意,此等條目係任選的,但「延伸」欄位通常指定數位憑證之類型。 ●
為經簽署訊息。 ●
為CA之簽章。
應瞭解,本文中所描述之實施例不限於任何特定憑證標準。
使用者將其身分識別鏈接至其公開金鑰存在許多益處。一個簡單實例為改良之使用者體驗;相比於共用構成公開金鑰之十六進數位之長字串,共用人類可讀聯絡人或基於身分識別之資訊為更簡單的。基於身分識別之資訊相對更可記憶,此使得使用者之間的交易更可存取。
重要益處為愈來愈需要反洗錢措施就位,尤其對於經由公開區塊鏈進行假名交易之使用者。舉例而言,使用者可由認證機構(CA)驗證其數位身分識別。可稽核由經認證私密金鑰簽署之交易,且因此為接受數位付款之當事方提供保證。
當使用諸如BIP32之HD電子錢包時,公開金鑰之認證可延伸至認證金鑰之整個電子錢包。使用者可簡單地認證主要或帳戶金鑰,使得所有其子金鑰可證明地鏈接至經驗證之身分識別。
吾人在本文中描述一種用於證明子金鑰係自經認證父公開金鑰導出之方法,其中父公開金鑰經隱藏以保護隱私。吾人首先描述設置階段,其中證明者(愛麗絲)使其身分識別由CA驗證。當驗證者(鮑勃)使用證明者之身分識別資訊以自其電子錢包伺服器請求子公開金鑰時,隨後產生ZKP。
以下描述證明者之(愛麗絲之)父公開金鑰
之憑證: 1. 愛麗絲將憑證請求提交至發佈CA。 2. 愛麗絲接收具有以下形式之經簽署數位憑證:
其中,
為要被經簽署之身分識別相關訊息,包括
中之愛麗絲之公開金鑰
及
中之愛麗絲之唯一識別符(例如,她的電子郵件位址
),且
為用於產生訊息上之簽章
的CA之私密金鑰。 3. 愛麗絲藉由使用公開金鑰
驗證CA之簽章來驗核她的憑證,如:
4. 愛麗絲將
提交給她的電子錢包伺服器。
接下來,吾人描述可如何使用憑證
之內容自身分識別鏈接之父金鑰
產生ZKP。
圖9中所說明之電路C表示用於經硬化子公開金鑰
或未經硬化子公開金鑰
之BIP32 CKD函數,且對於該函數,給定一或多個已知輸出,將證明函數之輸入的知識。圖9用於展示哪些輸入/輸出在證明產生/驗證過程中為公開/秘密的。
電路C係基於以下假設: ● 延伸公開父金鑰
為未知的。 ●
中之接收者之身分識別資訊為已知的。 ● BIP32 CKD方法為已知的,使得
為第
未經硬化子金鑰且
為第
經硬化子金鑰。 ● 橢圓曲線產生器點
針對證明者及驗證者二者經硬編碼。
至電路之輸入為: ● 秘密輸入
o 接收者之經簽署數位憑證
(含有經認證公開父金鑰
) 902 o 對應於父金鑰
之鏈碼904 o 索引
906 o (任選的)若輸出中之經硬化金鑰,則私密父金鑰
908 ● 公開輸入
o 證明者之電子郵件位址
910(或證明者之任何其他唯一識別符) o 發佈CA之公開金鑰
912 且輸出為: ● 未經硬化
或經硬化
子公開金鑰916。
父公開金鑰可未經硬化或經硬化(
);為簡單起見,在此處使用記法
。
證明者電腦裝備602b執行電路C,以輸出有效指派。亦即,證明者電腦裝備602b將上文提及之輸入供應至電路C,以產生上文提及之輸出。
電路之有效指派
包含6個輸入(
)、1個輸出(
)及包括
之輔助變數,其中對於
,
,或對於
,
。
在高層級,用於此有效指派之電路中的計算步驟如下:
步驟 1 .將秘密
及公開
輸入設定為:
步驟 2 .使用給定輸入執行函數
914:
i.Compute
Parse
for
: If
:
a.Compute
Else:
b.Fail.
ii.Compute
Parse
for
: If
:
a.Compute
If
:
A.Continue to Step 2iii. Else:
B.Fail. Else:
b. null string.
iii.If
:
a.Compute
Elseif
:
b.Compute
Else:
c.Fail.
iv.Compute
v.Compute
vi.Compute
If
:
a. Else:
b. 步驟 3 .函數
之公開輸出:
or
若在輸出(輸出包括鏈碼
)中需要延伸子公開金鑰,則鏈碼
可藉由複製用於HMAC函數之最右輸出
的步驟2iv來計算。
當電路僅輸出未經硬化子金鑰時,第四輸入(
908)並非必需的。
電路C首先檢查證明者之公開已知的身分識別資料,亦即愛麗絲之電子郵件位址(
),與身分識別憑證之
欄位中公佈之資料匹配。對此公開身分識別之知識建立至經認證身分識別之可驗證鏈接,其中後者經隱藏以避免在憑證之資料結構(
)中揭露證明者之父公開金鑰
。前已述及,驗證者具有由電路進行之檢查之知識,此係因為驗證金鑰鏈接至電路。電路檢查憑證中之身分識別,且使用來自憑證之經認證公開金鑰以導出由驗證者已知之輸出。因此,不需要經認證父金鑰之明確知識。電路藉由使用作為公開輸入包括之CA公開金鑰驗證CA之簽章來驗核憑證。若簽章檢查通過,則電路解析父公開金鑰之憑證,且使用此導出未經硬化子金鑰作為輸出。若需要經硬化子金鑰,則必須包括私密父金鑰
908作為至電路之額外秘密輸入。電路必須接著使用ECSM次常式計算其對應公開金鑰來檢查此私密金鑰是否對應於憑證中之經認證公開金鑰。一旦已滿足所有此等檢查,則電路輸出中之子金鑰被接受。上文所提及之檢查經整合至驗證金鑰中,使得若證明驗證使用驗證金鑰通過,則驗證者知道此等檢查已通過。
考慮使用者鮑勃(驗證者)希望僅使用愛麗絲之電子郵件位址向愛麗絲(證明者)付款之情形。在此情形下,驗證者電腦裝備602a對應於鮑勃之電腦裝備102a。證明者電腦裝備602b可對應於與愛麗絲103a相關聯之電腦裝備102a或與愛麗絲之BIP32電子錢包提供者相關聯之電子錢包伺服器。吾人在下文參考其中證明者電腦裝備602b對應於與愛麗絲之BIP32電子錢包提供者相關聯的電子錢包伺服器之實例。
鮑勃103b使用
自愛麗絲之電子錢包伺服器(證明者電腦裝備602b)請求她的付款位址,且隨後自愛麗絲之電子錢包伺服器接收愛麗絲103a之付款位址。在步驟S602處,鮑勃103b亦獲得未經硬化子公開金鑰
或經硬化子公開金鑰
916 (直接自愛麗絲之電腦裝備102a,自愛麗絲之電子錢包伺服器,或藉由一些其他構件)。
在步驟S604處,鮑勃103b請求證明此公開金鑰在完成其付款交易之前係真實的。
在步驟S606,電子錢包伺服器基於對表示CKD函數之公開電路的有效指派而產生證明。特別地,電子錢包伺服器為鮑勃產生證明
以驗證他已具備鏈接至愛麗絲之經認證金鑰
之有效子公開金鑰,而不揭露經認證父公開金鑰自身。
為了在步驟S606處產生證明,愛麗絲之電子錢包伺服器(證明者電腦裝備602b)將輸入『
』供應至證明產生過程中,在此實例實施例中,該證明產生過程包括至函數F 914之公開輸入(證明者之電子郵件位址
910及發佈CA之公開金鑰
912))公用輸出及來自函數
914之公開輸出(經硬化子公開金鑰
或未經硬化子公開金鑰
916)。
為了在步驟S606處產生證明,愛麗絲之電子錢包伺服器(證明者電腦裝備602b)另外將輸入『
』供應至證明產生過程中,該證明產生過程包括有效指派中之所有秘密參數,例如至函數F 914之秘密輸入(在輸出中之經硬化金鑰之情況下,接收者之經簽署數位憑證
902、對應於父金鑰
之鏈碼904、索引
906及私密父金鑰
908)及任何秘密輔助變數。
證明者電腦裝備602b另外將證明金鑰
作為輸入供應至證明產生過程中。
由證明者電腦裝備602b實施之證明產生過程使用輸入『
』、『
』及證明金鑰
來產生證明π。
為簡單起見,吾人在此針對此實例證明僅指未經硬化子金鑰。藉由驗證電子錢包伺服器之證明,鮑勃確信自子公開金鑰
導出之付款位址為正確的。
身分識別鏈接之CKD協定如下: 1. 給定
及
,產生
其中包括
之
為公開的,且
為秘密的。 2. 給定
及
,產生
其中
為秘密的。 3. 給定
,計算
,其滿足
為公開的且
為秘密的。
ZKP建構如下: 給定
、
及
,提供見證
之zkSNARK證明
用於
,
。
為了驗證證明,驗證者電腦裝備602a將證明及輸入『
』供應至證明驗證過程中,此實例實施例中,該證明驗證過程包括至函數F 914之公開輸入(證明者之電子郵件位址
910及發佈CA之公開金鑰
912)及來自函數
之公開輸出(經硬化子公開金鑰
及未經硬化子公開金鑰
916)。
驗證者電腦裝備602a另外將驗證金鑰
作為輸入供應至證明驗證過程中。
由驗證者電腦裝備602a實施之證明驗證過程使用證明、輸入『
』及驗證金鑰
來驗證證明π。證明驗證過程取決於證明被發現為有效抑或無效而輸出接受或拒絕決策。藉由在步驟S610處驗證愛麗絲之證明,鮑勃103b可確保子公開金鑰已使用BIP32導出方法正確地自經認證父公開金鑰導出。此向鮑勃103b保證其為愛麗絲具有之付款位址實際上為正確的付款位址。
儘管此實施例已在上文參考用於證明產生過程中之輸入『
』描述,該輸入包含父鏈碼
904及金鑰索引
906,但此僅為實例,且父鏈碼
904及金鑰索引
906中之一者或二者可為公開輸入『x』,該公開輸入為用於證明產生及證明驗證過程中之輸入『
』之部分。父鏈碼
904及金鑰索引
906中之各者可為秘密或公開的。 經混淆及身分識別鏈接之子金鑰導出證明
在此實施例中,吾人描述用於身分識別鏈接之CKD證明之替代協定,其試圖降低電子錢包使用者之憑證的計算成本,同時最佳化ZKP之計算效率。
上一節描述使用者(例如,充當證明者之愛麗絲)使用CA認證其之父公開金鑰所遵循的步驟。對於需要定期更新其到期身分識別憑證之使用者,此認證過程產生增長的計算成本。在此實施例中,此費用藉由引入用於憑證發佈之內部服務而移位至電子錢包伺服器。
此處,證明者之電子錢包伺服器或附屬於證明者之電子錢包伺服器之第三當事方可藉由自可信賴的CA獲得憑證而充當簽署機構(SA)。SA接著使用其CA認證之金鑰對來認證使用者金鑰。CA、SA及使用者之間的所得信任鏈實現使用者金鑰之大規模認證,此係因為將簽署特權分配至可接著向其使用者提供憑證之電子錢包伺服器。應注意,驗證者需要藉由以下操作來驗核此信任鏈: ● 驗證CA之簽章以認證SA之身分識別,及 ● 驗證SA之簽章以認證使用者之身分識別。
在上文所描述之章節中,使用者之身分識別憑證經設定為至電路之秘密輸入,使得嵌入憑證資料結構內之父公開金鑰在驗證期間自驗證者隱藏。電路之大小可藉由獨立於驗證證明執行簽章驗證來減小以最佳化ZKP之計算效率。此需要額外步驟以確保經認證父金鑰對驗證者保持隱藏。
此處,吾人需要SA在將使用者之父公開金鑰嵌入於憑證中之前使其混淆。更具體地,SA產生父金鑰之基於雜湊之認可,其接著鏈接至由SA簽署之資料結構中的使用者身分識別。此經簽署資料結構之格式不同於CA發佈之身分識別憑證,此係因為其含有使用者之父金鑰之認可,而非父公開金鑰自身。
認可方案是發生在發送者(
認可者)和接收者(
驗證者)之間的以下二階段協定: I.
認可-認可者知道秘密訊息
且使用隨機值
產生。經認可值
接著發送至驗證者。 II.
打開 -認可者顯露訊息
及隨機值
,且驗證者可打開認可並驗核其正確性。
認可方案應滿足以下二個安全特性: ●
隱藏-在認可階段之後,認可不應將任何資訊洩漏例如至關於訊息
之惡意驗證者,及 ●
繫結 -在打開階段期間,認可者無法改變訊息
,例如藉由發送不同隨機性
來使得認可打開不同訊息
。
安全認可為滿足隱藏及繫結特性二者之認可。認可方案可使用雜湊函數或隨機化加密演算法。
儘管吾人在本文中出於效率目的提及基於雜湊之認可方案之使用,但應瞭解,可使用其他類型之認可方案。
吾人將簽署機構(SA)界定為可信賴的聯盟,其代表電子錢包伺服器起作用以鏈接父金鑰與身分識別。SA首先導出證明者之父金鑰之基於雜湊的認可,其接著鏈接至其在類似於數位憑證(在本文中亦被稱作第二識別憑證)之經簽署資料結構中的身分識別資料。由SA發佈之經簽署資料結構含有使用者之父公開金鑰的之基於雜湊之認可,而非通常包括於數位憑證中之原始父公開金鑰。
此處,吾人假定SA之身分識別已在設置之前驗證(遵循與上文所描述之章節中之證明者相同的步驟),其中CA發佈數位憑證以認證SA之數位金鑰對。應注意,設置期間的所有計算離線地進行以保護SA之私密金鑰
且減小其受攻擊面。
I. 父金鑰混淆 :SA截至導出基於雜湊之認可來混淆證明者之公開父金鑰
(或
),如下:
其中
且
。
II. 簽章產生 :SA藉由創建訊息
之雜湊之簽章來授權證明者之身分識別,如下:
其中
含有混淆父公開金鑰及呈別名形式之身分識別相關資訊,且
為用於在訊息
上產生SA之簽章的私密金鑰。SA亦可將時戳添加至簽章以保證所得子金鑰具有使用期限。
以上步驟I中之公開金鑰之混淆確保使用者隱私得到保護。在創建認可之前,完整的延伸父金鑰亦可藉由串接公開父金鑰與鏈碼(
)來混淆。替代地,用於公開金鑰及鏈碼之二個單獨認可
可分別使用二個相異隨機值
來計算。值得注意的是,對於使用此協定之CKD證明的各使用者請求歸因於認可內含有之相異隨機數
而產生相異認可
。
在此實施例中,父公開金鑰之經簽署認可用於產生ZKP。
圖10中所說明之電路C表示用於經硬化子公開金鑰
或未經硬化子公開金鑰
之BIP32 CKD函數,且對於該函數,給定一或多個已知輸出,將證明函數之輸入的知識。圖10用於展示哪些輸入/輸出在證明產生/驗證過程中為公開/秘密的。
電路C係基於以下假設: ● 延伸公開父金鑰
為未知的。 ● 接收者之別名為已知的。 ● BIP32 CKD方法為已知的,使得
為第
未經硬化子金鑰,且
為第
經硬化子金鑰。 ● 橢圓曲線產生器點
針對證明者及驗證者二者經硬編碼。
至電路之輸入為: ● 秘密輸入
o 私密父金鑰
1002 o 對應於父金鑰
之鏈碼1004 o 索引
1006 o 隨機值
1008 ● 公開輸入
o 證明者之別名
(亦即,證明者之唯一識別符) 1010 且輸出為: ● 子公開金鑰
或
1014 ● 訊息
1016
父公開金鑰可未經硬化或經硬化(
);為簡單起見,在此處使用記法
。
證明者電腦裝備602b執行電路C,以輸出有效指派。亦即,證明者電腦裝備602b將上文提及之輸入供應至電路C,以產生上文提及之輸出。
電路之有效的指派
包含5個輸入(
、2個輸出(
及包括
之輔助變數,其中對於
,
,或對於
,
。
圖10說明輸入係公開的抑或秘密的(由陰影框表示),以及在產生指定輸出之函數F 1012內發生之計算。在函數F 1012之執行期間產生的輔助變數並未明確地展示於圖10中。
在高層級,用於此有效指派之電路中的計算步驟如下:
步驟 1 .將秘密
及公開
輸入設定為:
步驟 2 .使用給定輸入執行函數
1012:
i.Compute
ii.If
:
a.Compute
Elseif
:
b.Compute
Else:
c.Fail.
iii.Compute
iv.Compute
v.Compute
: If
:
a. Else:
b. vi.Compute
vii.Compute
步驟 3 .函數
之公開輸出:
or
,
。
儘管圖10說明設定為輸入之私密金鑰
,但公開父金鑰
可替代地設定為輸入,但此將輸出僅限制為未經硬化子金鑰(步驟2i並非必需的)。
若在輸出(輸出包括鏈碼
)中需要延伸子公開金鑰,則鏈碼
可藉由複製用於HMAC函數之最右輸出
的步驟2iii來計算。
圖11a說明在用於驗證子公開金鑰之真實性之過程600中由驗證者電腦裝備602a及證明者電腦裝備602b執行之步驟。
考慮其中使用者鮑勃(驗證者)將想要使用愛麗絲之別名
向愛麗絲(證明者)發送付款之情形。在此情形下,驗證者電腦裝備602a對應於鮑勃之電腦裝備102b。吾人在下文參考其中證明者電腦裝備602b對應於與愛麗絲之BIP32電子錢包提供者相關聯的電子錢包伺服器之實例。在此變體中,證明者電腦裝備602b可對應於愛麗絲之電腦裝備102a。
在步驟S1102處,與驗證者鮑勃相關聯之驗證者電腦裝備602a向愛麗絲之電子錢包伺服器(證明者電腦裝備602b)提交對鏈接至
之付款位址(電子郵件位址或與證明者相關聯之任何其他唯一識別符)之請求。
在步驟S1104處,愛麗絲之電子錢包伺服器(證明者電腦裝備602b)獲得第一數位憑證
(由CA發佈)。第一數位憑證
包含CA之簽章。
在步驟S1106處,愛麗絲之電子錢包伺服器(證明者電腦裝備602b)獲得第二數位憑證,其為愛麗絲之經簽署承諾及別名
(由SA發佈),含有她的公開已知的身分識別資料
及混淆父金鑰
。
在一些實施例中,電子錢包伺服器(證明者電腦裝備602b)可藉由自可信賴的CA獲得憑證來充當簽署機構(SA)。在此等實施例中,電子錢包伺服器在不涉及遠端簽署機構裝置之情況下執行步驟S1104及S1106。
在其他實施例中,錢包伺服器藉由與遠端簽署機構裝置602c通信而執行步驟S1104及S1106。此說明於圖11b中,其中在步驟S1152處,電子錢包伺服器將對身分識別鏈接之父金鑰之請求傳輸至遠端簽署機構裝置602c。在步驟S1154處,遠端簽署機構裝置602c獲得第一數位憑證
。在步驟S1156處,遠端簽署機構裝置602c執行上文所描述之父公開金鑰混淆,且在步驟S1158處,產生第二數位憑證
。步驟S1156及S1158較佳地由遠端簽署機構裝置602c執行,同時出於安全原因而離線(無網際網路存取)來保護SA之私密金鑰
且減小其受攻擊面。
因此,代表電子錢包伺服器行動,遠端簽署機構裝置602c如下制定身分識別鏈接之CKD協定: 1. 給定
,產生
其中
為公開的,且
為秘密的。 2. 給定
,產生
其中
為公開的。 3. 給定
及
,產生
其中
為公開的。
在步驟S1160,遠端簽署機構裝置602c將第一數位憑證
及第二數位憑證
傳輸至電子錢包伺服器(證明者電腦裝備602b)。
在步驟S1108,電子錢包伺服器(證明者電腦裝備602b)基於對表示CKD函數之公開電路的有效指派而產生證明。
為了在步驟S1108處產生證明,證明者電腦裝備602b將輸入『
』供應至一證明產生過程中,在此實例實施例中,該證明產生過程包括至函數F 1012之公開輸入(證明者之唯一識別符
1010)及來自函數
1012之公開輸出(未經硬化
或經硬化
子公開金鑰1014;及訊息
1016)。
子公開金鑰1014可為由電子錢包伺服器(證明者電腦裝備602b)計算。替代地,在圖11b之實例中,子公開金鑰1014可由遠端簽署機構裝置602c計算且在步驟S1160供應至錢包伺服器。
在實例證明中之未經硬化公開父及子金鑰的實例中,此子公開金鑰計算包含: 給定
,計算
以滿足
其中
為公開的,且
為秘密的。
此證明證明給定子金鑰
自
中之經簽署且混淆之父金鑰產生。
為了在步驟S1108處產生證明,證明者電腦裝備602b另外將輸入『
』供應至證明產生過程中,該證明產生過程包括有效指派中之所有秘密參數,例如,至函數F 1012之秘密輸入(私密父金鑰
1002、對應於父金鑰
之鏈碼1004、索引
1006及隨機值
1008)及任何秘密輔助變數。
證明者電腦裝備602b另外將證明金鑰
作為輸入供應至證明產生過程中。
在實例證明中之未經硬化公開父及子金鑰的實例中,電子錢包伺服器如下建構ZKP: 1. 給定
及
,提供見證
之zkSNARK證明
用於
,
。
由電子錢包伺服器實施之證明產生過程使用輸入『
』、『
』及證明金鑰
來產生證明π。愛麗絲之證明展示將發送至鮑勃之公開金鑰實際上為其經認證父金鑰的子代。
在步驟S1110處,電子錢包伺服器(證明者電腦裝備602b)將第一數位憑證
、第二數位憑證
、證明π及用於
之子金鑰傳輸至驗證者電腦裝備602a。
在此實施例中,判定子公開金鑰之真實性包含多個步驟。
在步驟S1112處,驗證者電腦裝備602a驗證證明π。為了驗證證明,驗證者電腦裝備602a將證明及輸入『
』供應至證明驗證過程中,在此實例實施例中,該證明驗證過程包括至函數F 1012之公開輸入(證明者之唯一識別符
1010)及來自函數
1012之公開輸出(未經硬化
或經硬化
子公開金鑰1014;及訊息
1016)。
驗證者電腦裝備602a另外將驗證金鑰
作為輸入供應至證明驗證過程中。
由驗證者電腦裝備602a實施之證明驗證過程使用證明、輸入『
』及驗證金鑰
來驗證證明π。證明驗證過程取決於證明被發現為有效抑或無效而輸出接受或拒絕決策。
藉由驗證
之證明,鮑勃在第二輸出
內將驗證其作為認可中之身分識別鏈接之父金鑰之子代的真實性。
在步驟S1114處,第二數位憑證
中之父金鑰的混淆版本之完整性係藉由以下操作來驗證:(i)驗證第一數位憑證
之CA之簽章(使用CA之公開金鑰),及驗證第二數位憑證
之SA之簽章(使用SA之公開金鑰)。驗證SA之身分識別憑證及愛麗絲之經簽署認可中之簽章建立CA、SA與愛麗絲之間的信任鏈;因此,鮑勃可確信
中之混淆父金鑰之完整性。
此引起以下情形: 1. 給定
及
,計算
。 2. 給定
、
及
,計算
。
在步驟S1116處,驗證者電腦裝備602a驗證在第二數位憑證
中接收之訊息
。
特別地,驗證者電腦裝備602a獲得由證明電腦裝置使用之訊息
1016以產生證明。舉例而言,驗證者電腦裝備602a可自證明電腦裝置接收訊息
1016 (由證明電腦裝置使用以產生證明)。驗證者電腦裝備602a驗證由證明電腦裝置使用以產生證明之訊息
1016與在第二數位憑證
中接收到之訊息
匹配。
一旦此等三個驗證步驟已成功地在步驟1118處通過,則驗證者接受子公開金鑰為真實的。鮑勃103b可接著繼續進行至將交易發送至自子金鑰導出之付款位址。
儘管此實施例已在上文參考用於證明產生過程中之輸入『
』描述,該輸入包含父鏈碼
1004及金鑰索引
1006,但此僅為實例,且父鏈碼
1004及金鑰索引
1006中之一者或二者可為公開輸入『x』,該公開輸入為用於證明產生及證明驗證過程中之輸入『
』之部分。父鏈碼
1004及金鑰索引1006中之各者可為秘密或公開的。 結論
一旦給定本文中之揭露內容,所揭露技術之其他變體或使用案例對於熟習此項技術者可變得顯而易見。本揭露內容之範疇不受所描述實施例限制而僅受隨附申請專利範圍限制。
舉例而言,儘管上文一些實施例已參考作為證明者之電子郵件位址的證明者的唯一識別符進行描述,但此僅為一個實例,且可使用其他唯一識別符(例如,電話號碼或其他聯絡人細節、社會保險號碼、ID號碼等)。
熟習此項技術者應瞭解,由證明電腦裝置使用輸入『
』、『
』及證明金鑰
以產生證明π所實施之證明產生過程中涉及的步驟將取決於正實施之ZKP的特定類型,且此等步驟對於熟習此項技術者為已知的。類似地,熟習此項技術者應瞭解,由驗證者電腦裝備使用證明、輸入『
』及驗證金鑰
以驗證證明π所實施之證明驗證過程中涉及的步驟將取決於正實施之ZKP的特定類型,且此等步驟對於熟習此項技術者為已知的。
上文已在驗證者發送付款至證明者及證明證明了自子公開金鑰導出之付款位址為真實的上下文中描述了實施例,然而,本發明之實施例不限於該付款上下文,且實施例延伸至使用數位金鑰(表示線上身分識別)之任何應用程式,例如在資料交易、智慧型合約等中。
儘管上文已參考BIP32金鑰導出協定描述實施例,但實施例延伸至其他金鑰導出協定。
上文一些實施例已關於比特幣網路106、比特幣區塊鏈150及比特幣節點104而進行描述。然而,應瞭解,比特幣區塊鏈為區塊鏈150之一個特定實例,並且以上描述通常可適用於任何區塊鏈。亦即,本發明絕不限於比特幣區塊鏈。更一般而言,以上對比特幣網路106、比特幣區塊鏈150及比特幣節點104之任何引用可分別用對區塊鏈網路106、區塊鏈150及區塊鏈節點104之引用來替換。區塊鏈、區塊鏈網路及/或區塊鏈節點可共用如上文所描述之比特幣區塊鏈150、比特幣網路106及比特幣節點104之所描述特性中的一些或全部。
在本發明之較佳實施例中,區塊鏈網路106為比特幣網路,且比特幣節點104執行創建、公佈、傳播及儲存區塊鏈150之區塊151的所描述功能中之至少全部。不排除可存在僅執行此等功能中之一者或一些而非所有的其他網路實體(或網路元件)。亦即,網路實體可執行傳播及/或儲存區塊而不創建及公佈區塊之功能(前已述及,此等實體不被視為較佳比特幣網路106之節點)。
在本發明之其他實施例中,區塊鏈網路106可能並非比特幣網路。在此等實施例中,不排除節點可執行創建、公佈、傳播及儲存區塊鏈150之區塊151的功能中之至少一者或一些而非所有。舉例而言,在彼等其他區塊鏈網路上,「節點」可用於指網路實體,該網路實體經組配以針對其他節點創建及公佈區塊151,而非儲存及/或傳播彼等區塊151。
甚至更一般而言,對以上術語「比特幣節點」104之任何引用可用術語「網路實體」或「網路元件」來替換,其中此類實體/元件經組配以執行創建、公佈、傳播及儲存區塊之角色中之一些或全部。此網路實體/元件之功能可以上文參考區塊鏈節點104所描述之相同方式實施於硬體中。
應瞭解,已僅藉助於實例描述以上實施例。更一般而言,可提供根據以下陳述項中之任何一或多者的方法、設備或程式。
下文參考以下條項界定本揭露內容之態樣:
1.一種驗證與實體相關聯之子公開金鑰之真實性的電腦實施方法,該方法係在計算裝置上執行且包含: 獲得子公開金鑰; 自證明計算裝置接收零知識證明;證明計算裝置可與該實體相關聯; 使用證明、子公開金鑰及驗證金鑰來驗證零知識證明為有效的,以判定金鑰導出協定已用於自父金鑰導出子公開金鑰;以及 基於該驗證判定子公開金鑰之真實性。
2. 如條項1之電腦實施方法,其中獲得子公開金鑰包含自證明計算裝置接收子公開金鑰。
3. 如條項1或2之電腦實施方法,其中該方法包含: 將請求傳輸至證明電腦裝置以證明子公開金鑰為真實的; 其中回應於請求而接收零知識證明。
4. 如任一前述條項之電腦實施方法,其中父金鑰為私密父金鑰,且子公開金鑰為經硬化子公開金鑰。
5. 如條項1至3中任一項之電腦實施方法,其中父金鑰為父公開金鑰。
6. 如條項4之電腦實施方法,其進一步包含: 獲得對應於私密父金鑰之父公開金鑰之複本;以及驗證零知識證明為有效的另外使用父公開金鑰。
7. 如條項6之電腦實施方法,其進一步包含: 自證明電腦裝置接收由證明電腦裝置使用以產生證明之父公開金鑰;以及 判定子公開金鑰之真實性係進一步基於由證明電腦裝置使用以產生證明之父公開金鑰是否與父公開金鑰之所獲得複本匹配。
8. 如條項6之電腦實施方法,其中父金鑰為由憑證機構發佈之經簽署數位憑證的經認證父公開金鑰。
9. 如條項8之電腦實施方法,其中該經簽署數位憑證包括實體之唯一識別符,且驗證零知識證明為有效的包含檢查實體之公開唯一識別符與經簽署數位憑證中之實體的唯一識別符匹配。
10. 如條項8或9之電腦實施方法,其中經簽署數位憑證係使用憑證機構之私密金鑰來簽署,且驗證零知識證明為有效的包含使用憑證機構之公開金鑰來驗證憑證機構之簽章。
11. 如條項1至5中任一項之電腦實施方法,其中該方法包含: 接收與簽署機構相關聯之第一身分識別憑證,該第一身分識別憑證包含憑證機構之第一簽章; 接收與實體相關聯之第二識別憑證,第二識別憑證包含簽署機構之第二簽章及訊息,訊息包含父金鑰之混淆版本及實體之唯一識別符;以及 驗證零知識證明為有效的另外使用訊息。
12. 如條項11之電腦實施方法,其中判定子公開金鑰之真實性係進一步基於: 藉由使用憑證機構之公開金鑰驗證第一簽章及使用簽署機構之公開金鑰驗證第二簽章來驗證第二識別憑證中之父金鑰之混淆版本的完整性。
13. 如條項11或12之電腦實施方法,其進一步包含: 獲得由證明電腦裝置使用以產生證明之訊息;以及 判定子公開金鑰之真實性係進一步基於驗證由證明電腦裝置使用以產生證明之訊息與第二識別憑證中之訊息匹配。
14. 如條項11至13中任一項之電腦實施方法,其中該方法包含: 將請求傳輸至證明電腦裝置,請求請求子公開金鑰;以及 回應於請求,接收子公開金鑰、零知識證明、第一身分識別憑證及第二身分識別憑證。
15. 一種提供對與實體相關聯之子公開金鑰之真實性的證明之電腦實施方法,該方法係在計算裝置上執行且包含: 使用用於導出子公開金鑰之父金鑰、子公開金鑰及證明金鑰來產生零知識證明;以及 將零知識證明傳輸至驗證計算裝置以使得驗證計算裝置能夠證明金鑰導出協定已用於自父金鑰導出子公開金鑰。
16. 如條項15之電腦實施方法,其中父金鑰係使用雜湊函數輸出之第一部分來產生,且該方法包含使用雜湊函數輸出之剩餘部分來產生零知識證明。
17. 如條項15或16之電腦實施方法,其中該方法包含使用指示子公開金鑰係經硬化抑或未經硬化之金鑰索引來產生零知識證明。
18. 如條項15至17中任一項之電腦實施方法,其中父金鑰為未暴露於驗證計算裝置之父私密金鑰,且子公開金鑰為經硬化子公開金鑰。
19. 如條項15至17中任一項之電腦實施方法,其中父金鑰為父公開金鑰。
20. 如條項19之電腦實施方法,其中該方法包含 另外使用以下來產生零知識證明:(i)經簽署數位憑證,其中經簽署數位憑證包含父公開金鑰及實體之公開已知的唯一識別符,其中經簽署數位憑證由憑證機構簽署且未暴露於驗證計算裝置;(ii)實體之唯一識別符;及(iii)與憑證機構相關聯之公開金鑰。
21. 如條項20之電腦實施方法,其中該方法包含另外使用(iv)對應於父公開金鑰之父私密金鑰來產生零知識證明,其中子公開金鑰為經硬化子公開金鑰。
22. 如條項19或20之電腦實施方法,子公開金鑰為未經硬化子公開金鑰。
23. 如條項15至18中任一項之電腦實施方法,其中該方法包含: 獲得與簽署機構相關聯之第一身分識別憑證,第一身分識別憑證包含憑證機構之第一簽章;以及 獲得與實體相關聯之第二識別憑證,該第二識別憑證包含簽署機構之第二簽章及訊息,訊息包含父金鑰之混淆版本及實體之唯一識別符; 其中方法包含另外使用用於產生父金鑰之混淆版本之隨機值及與計算裝置相關聯之實體的唯一識別符來產生零知識證明,且該方法進一步包含: 將第一身分識別憑證及第二識別憑證傳輸至驗證計算裝置。
24. 如條項23之電腦實施方法,其中計算裝置充當簽署機構,且獲得第二識別憑證包含: 使用隨機值來使父金鑰混淆,以產生父金鑰之混淆版本; 藉由使用與簽署機構相關聯之私密金鑰簽署訊息來產生第二識別憑證,訊息包含父金鑰之混淆版本及實體之識別符。
25. 如條項23或24之電腦實施方法,其中獲得第一識別憑證及第二識別憑證包含自與簽署機構相關聯之遠端計算裝置接收第一識別憑證及第二識別憑證。
26. 如條項23至25中任一項之電腦實施方法,其中該方法包含將子公開金鑰傳輸至驗證計算裝置。
27. 如條項15至18中任一項之電腦實施方法,其中該方法包含將對應於父私密金鑰之父公開金鑰傳輸至驗證計算裝置。
28. 如任一前述條項中之電腦實施方法,其中金鑰導出協定包含將父金鑰作為輸入之雜湊函數。
29. 如任一前述條項之電腦實施方法,其中金鑰導出協定為BIP32。
30. 一種電腦程式,其在由計算裝置讀取時使得計算裝置執行如任一前述條項之方法。
31. 一種包含電腦可讀指令之非暫時性電腦可讀儲存媒體,該等電腦可讀指令在由計算裝置讀取時使得計算裝置執行如條項1至29中任一項之方法。
32. 一種計算裝置,其包含處理器及記憶體,記憶體儲存指令,該等指令在由處理器執行時使得計算裝置執行如條項1至29中任一項之方法。
指令可設置於載體上,該載體諸如磁碟、CD-或DVD-ROM、諸如唯讀記憶體(韌體)之程式化記憶體,或設置於資料載體上,該資料載體諸如光或電信號載體。實施本揭露內容之實施例之指令可包含呈諸如C之慣用程式設計語言(解譯或編輯)之源、目標或可執行碼,或組譯程式碼,用於設定或控制特殊應用積體電路(ASIC)或場可程式化閘陣列(FPGA)之程式碼,或用於硬體描述語言之程式碼。
100:系統 101:封包交換網路 102:電腦終端機 102a,102b:電腦裝備 103,103a:使用者 103b:實體 104:區塊鏈節點 105,105a:客戶端應用程式 105b:客戶端 106:同級間網路 150:區塊鏈 151:區塊 151n:新區塊 151n-1:先前創建之區塊 152:交易 152i:先前交易 152j:目前交易 153:起源區塊 154:有序集合 155:區塊指標 201:標頭 202:輸入 203:輸出 401:交易引擎 402:使用者介面層 500:使用者介面 501,502:UI元件 503:資訊元件 600:過程 602a:驗證者電腦裝備 602b:證明者電腦裝備 602c:遠端簽署機構裝置 702,802:父私密金鑰 704,804,904,1004:父鏈碼 706,806,906,1006:金鑰索引 708,808,914,1012:函數 710,810:經硬化子公開金鑰 712:父公開金鑰 902:接收者之經簽署數位憑證 908:私密父金鑰 910:證明者之電子郵件位址 912:公開金鑰 916,1014:子公開金鑰 1002:私密父金鑰 1008:隨機值 1010:證明者之唯一識別符 1016:訊息 S602,S604,S606,S608,S610,S612,S1102,S1104,S1106,S1108,S1110,S1112,S1114,S1116,S1118,S1152,S1154,S1156,S1158,S1160:步驟
為了輔助理解本揭露內容之實施例且展示此類實施例可如何付諸實施,僅藉助於實例參考隨附圖式,在隨附圖式中: 圖1為用於實施區塊鏈之系統的示意性方塊圖; 圖2示意性地說明可記錄於區塊鏈中之交易的一些實例; 圖3A為客戶端應用程式之示意性方塊圖; 圖3B為可藉由圖3A之客戶端應用程式呈現之實例使用者介面的示意性模型; 圖4為用於一組輸入及輸出之Groth16類zkSNARK構造之階段的示意性方塊圖; 圖5說明BIP32金鑰導出協定; 圖6說明用於證明與驗證子公開金鑰之真實性的過程; 圖7展示表示根據本發明之實施例的BIP32子金鑰導出函數之電路,其說明哪些輸入及輸出在證明產生及證明驗證過程中為公開及秘密的; 圖8展示表示根據本發明之另一實施例的BIP32子金鑰導出函數之電路,其說明哪些輸入及輸出在證明產生及證明驗證過程中為公開及秘密的; 圖9展示表示根據本發明之另一實施例的BIP32子金鑰導出函數之電路,其說明哪些輸入及輸出在證明產生及證明驗證過程中為公開及秘密的; 圖10展示表示根據本發明之另一實施例的BIP32子金鑰導出函數之電路,其說明哪些輸入及輸出在證明產生及證明驗證過程中為公開及秘密的; 圖11a及圖11b說明用於證明與驗證子公開金鑰之真實性的過程;且 圖12說明X.509數位憑證之資料結構。
600:過程
602a:驗證者電腦裝備
602b:證明者電腦裝備
S602,S604,S606,S608,S610,S612:步驟
Claims (32)
- 一種驗證與一實體相關聯之一子公開金鑰之真實性的電腦實施方法,該方法係在一計算裝置上執行且包含: 獲得該子公開金鑰; 自一證明計算裝置接收一零知識證明; 使用該證明、該子公開金鑰及一驗證金鑰來驗證該零知識證明為有效的,以判定一金鑰導出協定已用於自一父金鑰導出該子公開金鑰;以及 基於該驗證判定該子公開金鑰之該真實性。
- 如請求項1之電腦實施方法,其中獲得該子公開金鑰包含自該證明計算裝置接收該子公開金鑰。
- 如請求項1或2之電腦實施方法,其中該方法包含: 將一請求傳輸至該證明電腦裝置以證明該子公開金鑰為真實的; 其中該零知識證明回應於該請求而被接收。
- 如前述請求項中任一項之電腦實施方法,其中該父金鑰為一私密父金鑰,且該子公開金鑰為一經硬化子公開金鑰。
- 如請求項1至3中任一項之電腦實施方法,其中該父金鑰為一父公開金鑰。
- 如請求項4之電腦實施方法,其進一步包含: 獲得對應於該私密父金鑰之一父公開金鑰之一複本;以及驗證該零知識證明為有效的另外使用該父公開金鑰。
- 如請求項6之電腦實施方法,其進一步包含: 自該證明電腦裝置接收由該證明電腦裝置使用以產生該證明之一父公開金鑰;以及 判定該子公開金鑰之該真實性係進一步基於由該證明電腦裝置使用以產生該證明之該父公開金鑰是否與所獲得之該父公開金鑰之該複本匹配。
- 如請求項6之電腦實施方法,其中該父金鑰為由一憑證機構發佈之一經簽署數位憑證的一經認證父公開金鑰。
- 如請求項8之電腦實施方法,其中該經簽署數位憑證包括該實體之一唯一識別符,且驗證該零知識證明為有效的包含檢查該實體之一公開唯一識別符與該經簽署數位憑證中之該實體的該唯一識別符匹配。
- 如請求項8或9之電腦實施方法,其中該經簽署數位憑證係使用該憑證機構之一私密金鑰來簽署,且驗證該零知識證明為有效的包含使用該憑證機構之一公開金鑰來驗證該憑證機構之一簽章。
- 如請求項1至5中任一項之電腦實施方法,其中該方法包含: 接收與一簽署機構相關聯之一第一身分識別憑證,該第一身分識別憑證包含一憑證機構之一第一簽章; 接收與該實體相關聯之一第二識別憑證,該第二識別憑證包含一簽署機構之一第二簽章及一訊息,該訊息包含該父金鑰之一混淆版本及該實體之一唯一識別符;以及 驗證該零知識證明為有效的另外使用該訊息。
- 如請求項11之電腦實施方法,其中判定該子公開金鑰之該真實性係進一步基於: 藉由使用該憑證機構之一公開金鑰驗證該第一簽章及使用該簽署機構之一公開金鑰驗證該第二簽章來驗證該第二識別憑證中之該父金鑰之該混淆版本的完整性。
- 如請求項11或12之電腦實施方法,其進一步包含: 獲得由該證明電腦裝置使用以產生該證明之一訊息;以及 判定該子公開金鑰之該真實性係進一步基於驗證由該證明電腦裝置使用以產生該證明之該訊息與該第二識別憑證中之該訊息匹配。
- 如請求項11至13中任一項之電腦實施方法,其中該方法包含: 將一請求傳輸至該證明電腦裝置,該請求請求該子公開金鑰;以及 回應於該請求,接收該子公開金鑰、該零知識證明、該第一身分識別憑證及該第二身分識別憑證。
- 一種提供對與一實體相關聯之一子公開金鑰之真實性的證明之電腦實施方法,該方法係在一計算裝置上執行且包含: 使用用於導出該子公開金鑰之一父金鑰、該子公開金鑰及一證明金鑰來產生一零知識證明;以及 將該零知識證明傳輸至一驗證計算裝置以使得該驗證計算裝置能夠證明一金鑰導出協定已用於自該父金鑰導出該子公開金鑰。
- 如請求項15之電腦實施方法,其中該父金鑰係使用一雜湊函數輸出之一第一部分來產生,且該方法包含使用該雜湊函數輸出之一剩餘部分來產生該零知識證明。
- 如請求項15或16之電腦實施方法,其中該方法包含使用指示該子公開金鑰係經硬化抑或未經硬化之一金鑰索引來產生該零知識證明。
- 如請求項15至17中任一項之電腦實施方法,其中該父金鑰為未暴露於該驗證計算裝置之一父私密金鑰,且該子公開金鑰為一經硬化子公開金鑰。
- 如請求項15至17中任一項之電腦實施方法,其中該父金鑰為一父公開金鑰。
- 如請求項19之電腦實施方法,其中該方法包含 另外使用以下來產生該零知識證明:(i)一經簽署數位憑證,其中該經簽署數位憑證包含該父公開金鑰及該實體之一公開已知的唯一識別符,其中該經簽署數位憑證由一憑證機構簽署且未暴露於該驗證計算裝置;(ii)該實體之該唯一識別符;及(iii)與該憑證機構相關聯之一公開金鑰。
- 如請求項20之電腦實施方法,其中該方法包含另外使用(iv)對應於該父公開金鑰之一父私密金鑰來產生該零知識證明,其中該子公開金鑰為一經硬化子公開金鑰。
- 如請求項19或20之電腦實施方法,該子公開金鑰為一未經硬化子公開金鑰。
- 如請求項15至18中任一項之電腦實施方法,其中該方法包含: 獲得與一簽署機構相關聯之一第一身分識別憑證,該第一身分識別憑證包含一憑證機構之一第一簽章;以及 獲得與一實體相關聯之一第二識別憑證,該第二識別憑證包含一簽署機構之一第二簽章及一訊息,該訊息包含該父金鑰之一混淆版本及該實體之一唯一識別符; 其中該方法包含另外使用用於產生該父金鑰之該混淆版本之一隨機值及與該計算裝置相關聯之該實體的該唯一識別符來產生該零知識證明,且該方法進一步包含: 將該第一身分識別憑證及該第二識別憑證傳輸至該驗證計算裝置。
- 如請求項23之電腦實施方法,其中該計算裝置充當該簽署機構,且獲得該第二識別憑證包含: 使用該隨機值來使該父金鑰混淆,以產生該父金鑰之該混淆版本; 藉由使用與該簽署機構相關聯之一私密金鑰簽署一訊息來產生該第二識別憑證,該訊息包含該父金鑰之該混淆版本及該實體之該識別符。
- 如請求項23或24之電腦實施方法,其中獲得該第一識別憑證及該第二識別憑證包含自與該簽署機構相關聯之一遠端計算裝置接收該第一識別憑證及該第二識別憑證。
- 如請求項23至25中任一項之電腦實施方法,其中該方法包含將該子公開金鑰傳輸至該驗證計算裝置。
- 如請求項15至18中任一項之電腦實施方法,其中該方法包含將對應於該父私密金鑰之一父公開金鑰傳輸至該驗證計算裝置。
- 如任一前述請求項之電腦實施方法,其中該金鑰導出協定包含將該父金鑰作為一輸入之一雜湊函數。
- 如任一前述請求項之電腦實施方法,其中該金鑰導出協定為BIP32。
- 一種電腦程式,其在由一計算裝置讀取時使得該計算裝置執行如任一前述請求項之方法。
- 一種包含電腦可讀指令之非暫時性電腦可讀儲存媒體,該等電腦可讀指令在由一計算裝置讀取時使得該計算裝置執行如請求項1至29中任一項之方法。
- 一種計算裝置,其包含一處理器及記憶體,該記憶體儲存指令,該等指令在由該處理器執行時使得該計算裝置執行如請求項1至29中任一項之方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB202118449 | 2021-12-17 | ||
GB2118449.4 | 2021-12-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202345545A true TW202345545A (zh) | 2023-11-16 |
Family
ID=79601659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111146193A TW202345545A (zh) | 2021-12-17 | 2022-12-01 | 用於證明與驗證子金鑰真實性之技術 |
Country Status (2)
Country | Link |
---|---|
TW (1) | TW202345545A (zh) |
WO (1) | WO2023110551A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12015713B1 (en) | 2023-08-23 | 2024-06-18 | Yuga Labs, Inc. | Artificial intelligence protocols for enhancing token holder autonomy |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11151558B2 (en) * | 2018-12-12 | 2021-10-19 | American Express Travel Related Services Company, Inc | Zero-knowledge proof payments using blockchain |
GB201907396D0 (en) * | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Hash function attacks |
-
2022
- 2022-12-01 TW TW111146193A patent/TW202345545A/zh unknown
- 2022-12-06 WO PCT/EP2022/084661 patent/WO2023110551A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023110551A1 (en) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4333357A2 (en) | Hash function attacks | |
CN113875186A (zh) | 知识证明 | |
US20230308287A1 (en) | Threshold signatures | |
JP2022533777A (ja) | プルーフ・オブ・ワーク | |
EP3977674A1 (en) | Knowledge proof | |
JP2022533751A (ja) | 知識証明 | |
CN114747172A (zh) | 加密链接身份 | |
US20230308292A1 (en) | Digital signatures | |
JP2023554148A (ja) | 機密データのブロック | |
TW202345545A (zh) | 用於證明與驗證子金鑰真實性之技術 | |
JP2022533845A (ja) | 知識証明 | |
TW202402009A (zh) | 所有權證明之技術 | |
TW202316844A (zh) | 鎖定腳本傳播技術 | |
JP2023537698A (ja) | ブロックチェーンネットワークとの接続 | |
WO2021213920A1 (en) | Method for implementing a digital coin system using a blockchain | |
US20230396450A1 (en) | Key derivation method | |
GB2614077A (en) | Signature-based atomic swap | |
WO2024041862A1 (en) | Blockchain transaction | |
GB2625325A (en) | Computer-implemented method and systems | |
WO2024041866A1 (en) | Blockchain transaction | |
WO2023208809A1 (en) | Non-native blockchain signatures | |
TW202416296A (zh) | 所有權證明之技術 | |
CN117941317A (zh) | 生成区块链事务 | |
WO2023208832A1 (en) | Blockchain transaction | |
CN116569515A (zh) | 密钥生成方法 |