code

2017年7月3日 星期一

Bitcoin筆記11 - Cold Wallet

儲存錢幣

利用wallet software,有兩種可能:

  • offline storage (cold),安全但是不方便!
  • online storage (hot),方便但是不安全!

下圖是一個offline bitcoin wallet,左邊印有public address(QR code以及 58字元的字串):

右邊雷射彌封的就是這個public address相關連的private key:


可以同時規劃兩者,但兩者之間也不容易流通,主要是cold storage並沒always聯網。一個解決方案是利用hierarchical wallet

Hierarchical key generation

主要概念就是把generate key的know how publish 出來,所以可以動態產生public address/private key pair:

bitcoin使用的ECDSA signature機制有support hierarchical key generation!
所以cold / hot wallet不用為了聯網溝通:



拆散private keys (不是真的“拆”成parts)

雞蛋放在一個籃子裡面很危險,即便是cold storage,也有可能被偷竊。可以利用密碼學的技巧來拆散一組private key,把它拆成N份,如果任何人得到至少其中K份,則可以重建此key,否則將永遠無法窺知此key。

例如一組private key S,如果標記在x-y座標上,可以點在y軸上,形成一個intersect。如果利用一條直線方程式,斜率為R,則通過此(0,S)的斜率為R的直線,線上的所有點都可以是N個sample中的一員(此處N ~= inifinity)。 但是實際上我們只要這直線上的任意兩點(K=2),就能找出S,但是K<2則不可能解出S:


所以可以用更高次方程式,來提高K值。

不過這種分散private key儲存地方的方法,有一個最致命的就是當private key合在一起的時候,有可能被竊取或是攻擊,這是架構上的問題,無法修正。

所以另一個比較好的架構是Multi-sig

MultiSig

這種簽名法,把一個private key拆成N份,只要K份以上就能製作valid signature。重點是,在簽名時不需要把所有key segment合併再一起,也就是不會還原私鑰。所以會比上面講的方法安全多了。


沒有留言:

張貼留言