[IT-Security-2] 數位貨幣及比特幣 Digital Cash and Bitcoin
Digital Cash and Bitcoin
Notes from RWTH Aachen University course 
“IT security 2” Wintersemester 2019/20
professor: Meyer, Ulrike Michaela
 Money
- Commodity money
- salt, gold, silver
 
 - Commodity standard
- tokens (paper notes) of gold and silver
 
 - Fiat money
- tokens have value decared by government
 
 - Electronic money
- electronic representation of money
 
 
 E-cash
- Naive approach
- \((\text{value},sig_{bank}(\text{value}))\)
 
 Problem 1: Double spending- 用 serial number (sn)
 - \((\text{sn, value},sig_{bank}(\text{sn, value}))\)
 - bank maintain sn 的database
 - 只有沒有被 deposit 過的錢可以被 deposit
 
 Problem 2: increasing database- 用 expiration time (exp)
 - \((\text{sn, value, exp},sig_{bank}(\text{sn, value, exp}))\)
 
 Problem 3: traceability- bank可以透過 sn link user/merchant
 - Blind RSA signatures
- \(h=\text{H(sn,value,exp)}\)
 - user 選擇一個 random number \(r\)
 - user 給 bank \(h\cdot r^e \text{ mod } n\)
 - bank 簽章 \(h^d \cdot r \text{ mod } n\)
 - user 計算 \(h^d\cdot r\cdot r^{-1}\text{ mod } n\)
 - 即得到 bank 的數位簽章 \(h^d\text{ mod } n\)
 
bank 無法link \(h^d \cdot r\) 及 \(h^d\)
 
 Problem 4: how much the user pay- bank 用不同的 key 簽章
 
- 其他機制:
- 使用者要對 bank 認證自己
 
 
 
 Bitcoin
 Motivation- 沒有bank/ government
 - 沒有transaction cost,適合micropayments
 - anonymous payment
 
 Address- Address 是 public key 的 Hash
 
 Transactions- 對前一個交易的 output address (public key) 簽章以 authorize
前一筆交易只有擁有 private key 的人能用
 
- 對前一個交易的 output address (public key) 簽章以 authorize
 
 Wallet- 有 private key/ public key pairs
 - 有 private key 就能花錢
 
 Transaction Verification- double spending
 - 沒有 bank 可以驗證這筆錢只花了一次
 - 用 Proof of Work
- 找到nonce
 
 
 Blocks- transactions 的 collections
 - 三種type
- in the main chain
 - in a side branch
 - orphan(孤兒) blocks: 沒有前一個 block
 
 
- Merkle root
- 所有 transactions 的 hash
 - 要驗證某筆交易是不是在 block 中,不需要下載所有交易
只需要有跟這筆交易計算到 hash 的交易就可以 
 
 Block Verification- 每個 transaction 被廣播
 - peer 蒐集 transaction
 - 驗證每個 transaction 的
- 簽章
 - 輸入等於輸出
 - 前一筆交易是否在 main chain 中
 
 - 集合每個驗證的 transactions
 - 加入Tx0和自己的output address
 - 計算 nonce
 - 公開 nonce 和 hash 值
 
 Incentives- mining (驗證 block 的獎勵)
- 透過 Tx0 得到
 
 - transaction fee (optionally)
- 不直接定義
 - input - output
 - 透過 Tx0 傳給自己 的address
 
 
- mining (驗證 block 的獎勵)
 
 Double spending- 兩個transaction在同個block: 會立刻被檢查到
 - 在不同個block: 一個已經在main chain上,另一個就不能再接下去
 
 Fast transaction- 通常要經過 6 個 block 後,才會被認為此 block 在 main chain 上
 
bitcoin 不適合 fast transaction
 Anonymity- 製造多個地址,如果 address 和 identity 被連起來的話才不容易被知道
 - Problem: 如何被 customers 辨別多個地址是同個人
 - Problem: 如果要花錢要 link 兩個 addresses
 
- Bitcoin 沒有提供 unlinkability
 
 Linking with Multiple input transactions- 多個同個使用者的input
 
 Linking with the help of Change to Own Address- input: address 0
output: address 1, address 2 - address 0 必屬於 1 或 2
 
- input: address 0
 
 Linking with real identity- 購買 bitcoin 通常會要真實 identity (with vendor/ exchange)
 
 Protecting against de-anonymization- 用 Mixes
 
 Online wallet- 與 wallet 進行交易
 - 大家只會看到 wallet 的交易
 - 但會向 wallet 透露 identity
 
 Dedicated mixing service- 不要求identity
 - 送 bitcoin 給 mixing addresses
 - 再告訴 mix 要送到哪個 address
 
 CoinJoin- Decentralized mixing
 - users 共同創造一個 transaction
 - 只簽章自己的 transaction
 - 步驟:
 - 找到誰要 mix
 - 交換 input/ output
 - 創造 transaction
 - 每個人簽章自己的交易
 - 送到Bitcoin
 
Readings
§ David Chaum, Blind Signatures for untraceable payments, 1982 §Ron Rivest, PayWord and MicroMint, 1996
§ Satoshi Nakamoto, Bitcoin- A Peer-to-Peer Electronic Cash System, 2009 
§ Bitcoin Wiki
§ Nrayanan, Bonneau, Felten, Millder, Goldfeer: Bitoin and Cryptocurrency Technologies, Princeton University Press 2016




留言
張貼留言