https://en.bitcoin.it/w/api.php?action=feedcontributions&user=Dwhite&feedformat=atomBitcoin Wiki - User contributions [en]2024-03-29T09:41:32ZUser contributionsMediaWiki 1.30.0https://en.bitcoin.it/w/index.php?title=Smart_card_wallet&diff=34765Smart card wallet2013-01-07T02:39:45Z<p>Dwhite: /* 3. implement wallet on a simple smart card */</p>
<hr />
<div>This pages gathers resources for the implementation of a Bitcoin wallet on a smart card.<br />
<br />
===Rationale===<br />
<br />
*Computers and smartphones are target for malware. The software on a smart card can be protected.<br />
*Smart cards do not need a battery, nor internet connection, they are robust.<br />
*Adoption: people are already used to paying with smart cards.<br />
<br />
===Desired features===<br />
<br />
*no blockchain, no node; the card contains only private keys, and an algorithm to sign a transaction<br />
*the smart card should have its own keyboard (for pin code protection) and display (to show the transaction amount)<br />
(<- Alternative to this is the card returning, to the terminal screen, the debit amount multiplied by a number only the card holder knows which cycles from 1 to 100 to 1 incrementing by 1 each transfer - the card is locked 10 minutes if a second amount is send before a pin is typed.)<br />
* The card holder will know pin, puk, private key and address only from when he programmed it or ordered his smart card.<br />
*the card should implement a deterministic wallet, so that funds can be recovered if the card is lost.<br />
<br />
===Usage scenario===<br />
<br />
* the reading device may belong to a merchant at a point of sale; it cannot be trusted with private keys. <br />
* the reading device is connected to a full bitcoin node; it can be trusted for getting and sending blockchain information.<br />
* the reading device sends to the card the current balance of its bitcoin addresses. This information can be cached in the card.<br />
* the reading device sends a bitcoin receiving address and transaction amount to the card.<br />
* the amount is displayed by the card ; the user confirms the transaction with his pin code.<br />
* the smart card creates a signed transaction and sends it to the reading device<br />
* the transaction is checked and broadcast by the bitcoin node.<br />
<br />
==Implementation steps==<br />
<br />
===1. write a bitcoin daemon that can talk to a lightweight wallet===<br />
*this has been done already, see for example bitcoinjs: https://github.com/bitcoinjs/bitcoinjs-lib<br />
*See also this pull request: [https://github.com/piotrnar/bitcoin/tree/importexporttx importexporttx] can be used to broadcast the transaction<br />
* https://bitcointalk.org/index.php?topic=28278.msg383312#msg383312<br />
<br />
===2. write a lightweight wallet===<br />
*wallet without blockchain, in order to test the daemon<br />
*this lightweight wallet will be later implemented on the card <br />
*use it to define the communication protocol between card and reading device.<br />
<br />
update: this is done, see [[Electrum]]<br />
<br />
===3. implement wallet on a simple smart card===<br />
<br />
* http://www.opensc-project.org/opensc openSC : tools and libraries for smart cards. <br />
* amadousarr.free.fr/crypto/ECDSAJAVACARD.pdf : A Software Implementation of ECDSA on a Java Smart Card<br />
* http://www.acs.com.hk : cards, readers, development kits; no display, pincode needs to be typed on the reading device<br />
* http://www.basiccard.com/index.html?overview.htm : Smart Card (ZC7.5) which contains RSA/EC and DES/AES coprocessors. Used in an implementation of the OpenPGP Card 2.0 standard (http://g10code.com/p-card.html)<br />
<br />
===4. implement wallet on a smart card with display and pincode ===<br />
<br />
list of vendors:<br />
* http://www.nidsecurity.com/products/solution-enterprise.html (smart cards with LCD displays)<br />
* http://www.avesodisplays.com/ (smard cards with flexible displays)<br />
<br />
<br />
==references==<br />
*https://bitcointalk.org/index.php?topic=7539.0 Bitcoin smartcard Point of Sale terminal<br />
*https://bitcointalk.org/index.php?topic=20933.0 Bitcoin and Smart Cards <br />
<br />
<br />
<br />
[[category:Developer]]<br />
[[category:Technical]]<br />
[[category:Wallets]]<br />
[[Category:Mobile]]</div>Dwhitehttps://en.bitcoin.it/w/index.php?title=Smart_card_wallet&diff=34763Smart card wallet2013-01-07T01:46:03Z<p>Dwhite: /* 3. implement wallet on a simple smart card */</p>
<hr />
<div>This pages gathers resources for the implementation of a Bitcoin wallet on a smart card.<br />
<br />
===Rationale===<br />
<br />
*Computers and smartphones are target for malware. The software on a smart card can be protected.<br />
*Smart cards do not need a battery, nor internet connection, they are robust.<br />
*Adoption: people are already used to paying with smart cards.<br />
<br />
===Desired features===<br />
<br />
*no blockchain, no node; the card contains only private keys, and an algorithm to sign a transaction<br />
*the smart card should have its own keyboard (for pin code protection) and display (to show the transaction amount)<br />
(<- Alternative to this is the card returning, to the terminal screen, the debit amount multiplied by a number only the card holder knows which cycles from 1 to 100 to 1 incrementing by 1 each transfer - the card is locked 10 minutes if a second amount is send before a pin is typed.)<br />
* The card holder will know pin, puk, private key and address only from when he programmed it or ordered his smart card.<br />
*the card should implement a deterministic wallet, so that funds can be recovered if the card is lost.<br />
<br />
===Usage scenario===<br />
<br />
* the reading device may belong to a merchant at a point of sale; it cannot be trusted with private keys. <br />
* the reading device is connected to a full bitcoin node; it can be trusted for getting and sending blockchain information.<br />
* the reading device sends to the card the current balance of its bitcoin addresses. This information can be cached in the card.<br />
* the reading device sends a bitcoin receiving address and transaction amount to the card.<br />
* the amount is displayed by the card ; the user confirms the transaction with his pin code.<br />
* the smart card creates a signed transaction and sends it to the reading device<br />
* the transaction is checked and broadcast by the bitcoin node.<br />
<br />
==Implementation steps==<br />
<br />
===1. write a bitcoin daemon that can talk to a lightweight wallet===<br />
*this has been done already, see for example bitcoinjs: https://github.com/bitcoinjs/bitcoinjs-lib<br />
*See also this pull request: [https://github.com/piotrnar/bitcoin/tree/importexporttx importexporttx] can be used to broadcast the transaction<br />
* https://bitcointalk.org/index.php?topic=28278.msg383312#msg383312<br />
<br />
===2. write a lightweight wallet===<br />
*wallet without blockchain, in order to test the daemon<br />
*this lightweight wallet will be later implemented on the card <br />
*use it to define the communication protocol between card and reading device.<br />
<br />
update: this is done, see [[Electrum]]<br />
<br />
===3. implement wallet on a simple smart card===<br />
<br />
* http://www.opensc-project.org/opensc openSC : tools and libraries for smart cards. <br />
* amadousarr.free.fr/crypto/ECDSAJAVACARD.pdf : A Software Implementation of ECDSA on a Java Smart Card<br />
* http://www.acs.com.hk : cards, readers, development kits; no display, pincode needs to be typed on the reading device<br />
* http://www.basiccard.com/index.html?overview.htm : Smart Card (ZC7.5) which contains RSA/EC and DES/AES coprocessors. Used in the implementation of the OpenPGP Card 2.0 standard (http://g10code.com/p-card.html)<br />
<br />
===4. implement wallet on a smart card with display and pincode ===<br />
<br />
list of vendors:<br />
* http://www.nidsecurity.com/products/solution-enterprise.html (smart cards with LCD displays)<br />
* http://www.avesodisplays.com/ (smard cards with flexible displays)<br />
<br />
<br />
==references==<br />
*https://bitcointalk.org/index.php?topic=7539.0 Bitcoin smartcard Point of Sale terminal<br />
*https://bitcointalk.org/index.php?topic=20933.0 Bitcoin and Smart Cards <br />
<br />
<br />
<br />
[[category:Developer]]<br />
[[category:Technical]]<br />
[[category:Wallets]]<br />
[[Category:Mobile]]</div>Dwhite