code

2017年6月24日 星期六

Bitcoin 筆記 3 - Digital signatures and Applications

理想簽名的特性

一個有用的簽名,日常生活中代表了某人的身分。所以理想上,沒有任何人可以模仿出其他人的簽名,以及無法透過任何方式把偷取真的簽名來冒用在任何文件上,旁人只能驗證這個簽名的真偽。

Digital signatures built on cryptographic hash functions

數位簽章可以用hash function來達成。我們需要以下兩個component來達成理想簽章的數位版:

  • secret signing key (sk): 每次簽名我們只能用個key
  • public verification key (pk): 讓旁人驗證你的簽名真偽的key
所以我們會有一個產生此兩個key的api:

然後利用產生的sk可以簽署在任何message上(意即製作hash value),此時會產生一個signature:

以上兩個api需要極佳的randomness,否則sk有可能洩漏!!!!!

旁人可能透過某些途徑獲得了宣稱是你簽章過的message,他們可以用public verification key和此宣稱為真的message以及message上面的簽章,透過以下api驗證真偽:


數位簽章無法冒簽,即便旁人擁有public key以及某個message的真實signature,也無法偽造出另一個不同的message的signature,這受惠於cryptographic hash function的三個特性。

ECDSA

bitcoin使用的digital signature standard是國家標準的演算法: Elliptic Curve Digital Signature Algorithm,這依賴極佳的randomness,數學相當複雜,有興趣自己去研究 XD

Decentralized Identity Scheme

public key其實就相當於某個人的身分認證了,因為public key一定伴隨一個private key,這樣驗證簽名才會通過,所以某個public key可以代表某個private key 的公眾身分,而private key則是此個人身分真實的內涵。此外,當一個人想要在此數位簽章的世界中擁有另一個公眾身分,只要產生另一組private/public key pair就可以了。

擁有隨意創造新身分的能力,這是一個decentralized identity management,沒有一個政府或中心組織來核發身分證! 在bitcoin的世界中,一個自己創造的identity 有一個專有名詞,就是住址(address),事實上就是指隨意創造出來的public key。

此address無法辨識出此人在世界中的真實身分,但是當然可以做inference,如果用同一個address進行一連串的行為或是交易,則有可能被連結到某人在真實世界中的行為,進而洩漏身分。


沒有留言:

張貼留言