Bitcoin Forum
May 04, 2024, 02:12:32 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 5 6 7 8 »  All
  Print  
Author Topic: Bitcoin smartcard Point of Sale terminal  (Read 26799 times)
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 03:19:50 AM
 #1

Hello all,

I've been having these ideas lately, about how to implement a bitcoin PoS with a physical card, akin to a Debit Card. I'm pretty sure my ideas are correct, but I'd like to validate a few assumptions first.

After reading some on SIM cards and smart cards in general, I've established following:

  • There is protected storage (r/w) on the smart card, and the only way to access it is by using the API provided by the software loaded on the card. (Unless you have a scanning tunneling microscope).
  • Software that runs on the card can be either in C or Java
    • C is cheaper hardware-wise, but very inflexible. Any changes required at later stages mean huge costs
    • Java is cheaper to develop, as it has an integrated development environment and lots of classes (including cryptoapi), but the cards themselves are more expensive
  • You can write a program for the smartcard, that executes on the smart card, and is able to do various actions like:
    • Authorizing access to the private keys with a PIN
    • Validating a digital signature
    • Signing a block of data
    • Initializing a blank card with a bunch of keypairs

With this is mind, it's not possible to put the block chain on the card, or do any extensive validation, due to processing power constraints.
So the job of doing that should be performed by a terminal. Modern terminals are essentially computers, connected to the network, either via modem, broadband, or GPRS connection. So they are able to keep the block chain fresh.

The issue is this - due to a limited space on the card, I'm not sure if it's possible to keep the entire wallet on the card. So there needs to be some sort of algorithm to quickly scan the block chain to establish the balance available for the keys that are stored on the card.

I've talked to a guy, who's job is writing software for SIM cards, the ones in everyone's cell phones. He said, that a 1Mb JavaCard would cost about $1, if the order is for 50000 cards at once. So it's not too bad.

Next step would be to research how modern POS terminals operate, and whether it's possible to add support for bitcoin processing on them, or maybe even develop something from scratch.

Other things
Technically the card can be limited to one keypair, but that would greatly reduce anonymity. I guess there's a possibility of having various classes of bitcoin cards with different amount of keypairs available for usage.

The keypair(s) could be programmed into the card at the time of manufacturing. Problem is that then the keys are available to 3rd party. But then it would be possible to create pre-paid bitcoin cards.

Alternatively, the keypairs could be created by the card itself, at the POS, when money is added.
Also, POS terminal can print out a bitcoin address on the receipt, so you can add more money to the card with regular bitcoin software.

It's also possible to have the card validate the POS, to ensure compliance. If the POS is validated (by crypto-key verification) of course, then (probably) additional safeguards can be implemented, like accepting transactions with no confirmations, but somehow temporarily preventing the card from double-spending, etc. Or give option at payment like "pay with no validations, but the card is locked for next 10 minutes" or "pay regularly, but goods are released upon validation"

Issues
This is not a bank account access card. It would be an actual wallet card, so if it's lost - the money is gone forever. If it's stolen - the PIN code should prevent access to private keys. It would be possible to create 2 level PIN protection, similar to PIN and PUK in cell phones.

It's also possible to create a "doomsday pin" that wipes the card clean, in case you're under duress, or something out of a spy novel Cheesy

What do you guys think?

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
1714831952
Hero Member
*
Offline Offline

Posts: 1714831952

View Profile Personal Message (Offline)

Ignore
1714831952
Reply with quote  #2

1714831952
Report to moderator
1714831952
Hero Member
*
Offline Offline

Posts: 1714831952

View Profile Personal Message (Offline)

Ignore
1714831952
Reply with quote  #2

1714831952
Report to moderator
1714831952
Hero Member
*
Offline Offline

Posts: 1714831952

View Profile Personal Message (Offline)

Ignore
1714831952
Reply with quote  #2

1714831952
Report to moderator
Bitcoin addresses contain a checksum, so it is very unlikely that mistyping an address will cause you to lose money.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714831952
Hero Member
*
Offline Offline

Posts: 1714831952

View Profile Personal Message (Offline)

Ignore
1714831952
Reply with quote  #2

1714831952
Report to moderator
1714831952
Hero Member
*
Offline Offline

Posts: 1714831952

View Profile Personal Message (Offline)

Ignore
1714831952
Reply with quote  #2

1714831952
Report to moderator
1714831952
Hero Member
*
Offline Offline

Posts: 1714831952

View Profile Personal Message (Offline)

Ignore
1714831952
Reply with quote  #2

1714831952
Report to moderator
lfm
Full Member
***
Offline Offline

Activity: 196
Merit: 104



View Profile
May 08, 2011, 04:12:26 AM
 #2

I dont see what this has to do with bitcoin, in fact it looks nothing like bitcoin.
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 04:13:46 AM
 #3

Which specific points are you disagreeing about?

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
Garrett Burgwardt
Sr. Member
****
Offline Offline

Activity: 406
Merit: 256


View Profile
May 08, 2011, 04:24:18 AM
 #4

Not sure what lfm is talking about, but this sounds good. Of course, we still have work to do on the pure internet side of things, but work on physical bitcoin implementations should be a priority too.

Looks good, the only thing I'd be concerned about is making sure that smartphone clients can use the same system.
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 04:28:02 AM
 #5

Well, for smartphone clients it would be a printed receipt with a payee address. Or a QR code, or something.
I guess that type of POS is beyond this particular topic. I want to focus on the smart card implementation...

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
Matt Corallo
Hero Member
*****
expert
Offline Offline

Activity: 755
Merit: 515


View Profile
May 08, 2011, 11:12:07 AM
 #6

This is great.  However, there are too many problems for bitcoin PoS use which need to be solved first anyway.  (like the confirmation delay, etc).  For now, its much easier to just figure out bitcoin PoS payments with QR codes and such and see if it ever catches on before we start going off defining standards which will be used by 10 people.

Bitcoin Core, rust-lightning, http://bitcoinfibre.org etc.
PGP ID: 07DF 3E57 A548 CCFB 7530  7091 89BB B866 3E2E65CE
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 07:45:31 PM
 #7

Well, that's the thing - the smart card can generate the keypair. You are not able to get it, ever. You can still use it, if you know the pin code. But you cannot clone the wallet onto another card or on a computer. Therefore possibility of double spending is severely restricted using this method.

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
Matt Corallo
Hero Member
*****
expert
Offline Offline

Activity: 755
Merit: 515


View Profile
May 08, 2011, 07:53:43 PM
 #8

Well, that's the thing - the smart card can generate the keypair. You are not able to get it, ever. You can still use it, if you know the pin code. But you cannot clone the wallet onto another card or on a computer. Therefore possibility of double spending is severely restricted using this method.
That doesn't prevent double spends, I can write sign a ton of txes ready to double spend and then go to a store and the second it spends, send all those txes to the big miners from my phone. 
Still, its a great idea and a cool dream but until we actually have a use for it (ie PoSs ready for use and stores ready to accept bitcoin), spending time on it seems like a waste of resources.

Bitcoin Core, rust-lightning, http://bitcoinfibre.org etc.
PGP ID: 07DF 3E57 A548 CCFB 7530  7091 89BB B866 3E2E65CE
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 07:55:36 PM
 #9

How can you sign a lot of transactions without having the private key?

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
Matt Corallo
Hero Member
*****
expert
Offline Offline

Activity: 755
Merit: 515


View Profile
May 08, 2011, 07:57:49 PM
 #10

How can you sign a lot of transactions without having the private key?
The point of a smart card is you give it data and it signs it.  So if I have my smart card which I use to pay, I send it txes to sign with each address that it might use to send money.

Bitcoin Core, rust-lightning, http://bitcoinfibre.org etc.
PGP ID: 07DF 3E57 A548 CCFB 7530  7091 89BB B866 3E2E65CE
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 08:02:06 PM
 #11

Yes, but if you'd read my original post in whole, you might notice the section when I mull on the idea of reciprocal authorization between the card and POS terminal, which would allow for advanced options for payment. If you have a "hacked" POS, it wouldn't authenticate and prevent you from signing transactions in bulk. Or just making you wait for confirmation.

If Plato works out something with his global WoT, if might be integrated into this system as well... So that various trust levels would require various amount of required confirmations.

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
benjamindees
Legendary
*
Offline Offline

Activity: 1330
Merit: 1000


View Profile
May 08, 2011, 08:17:37 PM
 #12

First of all, this is an obvious way to go and entirely doable so I'm not sure I understand why anyone would say it isn't Bitcoin related.  A smartcard is just a small tamper-resistant computer.

And I'm thinking a store with several POS terminals could theoretically have their own dedicated miner on-site just to process their own transactions.  Wouldn't this speed up the transaction time or am I missing something important?

Civil Liberty Through Complex Mathematics
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 08:23:32 PM
 #13

Well, currently more research is needed. Because, from what I've read, custom ECDSA implementation for JavaCard is really slow, so, either the card must support it natively, or a C implementation is required.

http://amadousarr.free.fr/crypto/ECDSAJAVACARD.pdf

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
Matt Corallo
Hero Member
*****
expert
Offline Offline

Activity: 755
Merit: 515


View Profile
May 08, 2011, 08:23:50 PM
 #14

Yes, but if you'd read my original post in whole, you might notice the section when I mull on the idea of reciprocal authorization between the card and POS terminal, which would allow for advanced options for payment. If you have a "hacked" POS, it wouldn't authenticate and prevent you from signing transactions in bulk. Or just making you wait for confirmation.
Have fun stopping the hackers Wink.  In any case I suppose the problem isn't unsolvable, just impossible on a huge scale.  In any case, getting merchants on board (or at least interested before starting would be cool as AFAIK, there are no where near enough IRL bitcoin merchants for this to be reasonable).  

Bitcoin Core, rust-lightning, http://bitcoinfibre.org etc.
PGP ID: 07DF 3E57 A548 CCFB 7530  7091 89BB B866 3E2E65CE
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 08:28:52 PM
 #15

Yes. That is one of the reasons I'm posting this.

If we could research the possibility of a) Low cost smart card manufacture process and b) cheap pos hardware, that would make it super easy to approach merchants and say, hey, hate those Visa and Interac (canadian debit system) fees you have to pay for each transaction - here's BitCoin terminal.

Actually, a lot of smaller establishments remain cash only, simply because merchant transaction fees are so damn high. So that would be an easy sell, i think.

<pipedream>
Then they'd get their suppliers to switch to bitcoin, and so on, and so forth Smiley
</pipedream>

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
caveden
Legendary
*
Offline Offline

Activity: 1106
Merit: 1004



View Profile
May 08, 2011, 08:38:58 PM
 #16

The idea is good, but the price quoting you mentioned seems high. $1 per card, not to mention the $50k initial investment?

It would particularly awesome if somehow you made it work in existent machines that accept Visa and Mastercard, but I don't think it's possible... is it? Can new software be installed in these machines?
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 08:44:58 PM
 #17

That would be another avenue of research.

The price I had was approximate, but other types of cards, like visa or mc are of no use to us, because we have to implement bitcoin specific algorithms. In order to have a bitcoin cards - the development is a necessity. However, I'm pretty sure there are enough geeks that do it for fun anyway, just a matter of finding some Smiley

It is possible to obtain development kits from major smart card manufacturers, they are around $300 per kit. So if we find someone willing - a bounty could be established.

Also, more cards are ordered - lower the per-card price is. Considering it's quite a massive up-front investment, something like a http://www.KickStarter.com project can be established, where many people can participate and pay a small amount to get a card or multiple cards they could distribute locally.

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
casascius
Mike Caldwell
VIP
Legendary
*
Offline Offline

Activity: 1386
Merit: 1136


The Casascius 1oz 10BTC Silver Round (w/ Gold B)


View Profile WWW
May 08, 2011, 08:49:35 PM
 #18

I have a significant amount of experience programming for VeriFone point-of-sale terminals... they tend to be programmed in C/C++ and have a proprietary OS that mimics POSIX compliance.  These also have smart card readers, though I have never programmed the smart card portion.  PM me if you'd like to discuss.  Programming Bitcoin on POS terminals is absolutely possible.

Companies claiming they got hacked and lost your coins sounds like fraud so perfect it could be called fashionable.  I never believe them.  If I ever experience the misfortune of a real intrusion, I declare I have been honest about the way I have managed the keys in Casascius Coins.  I maintain no ability to recover or reproduce the keys, not even under limitless duress or total intrusion.  Remember that trusting strangers with your coins without any recourse is, as a matter of principle, not a best practice.  Don't keep coins online. Use paper or hardware wallets instead.
Vasili Sviridov (OP)
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
May 08, 2011, 08:53:12 PM
 #19

Cool. I think I'd establish a wiki page for this project first, put all details there so that people can contribute.
I don't really have any specific questions about the PoS part right now. Unless maybe this: is it possible to make them work with any arbitrary smart card? Is it just a matter of the software running on it? I would imagine so...

If that's the case - will they be fast enough to perform block scanning and signature validation and stuff? Not to mention that they'd basically be running a version of bitcoin software, and that means validating the block chain and all the other stuff that it does...

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
casascius
Mike Caldwell
VIP
Legendary
*
Offline Offline

Activity: 1386
Merit: 1136


The Casascius 1oz 10BTC Silver Round (w/ Gold B)


View Profile WWW
May 08, 2011, 08:53:45 PM
 #20

It would particularly awesome if somehow you made it work in existent machines that accept Visa and Mastercard, but I don't think it's possible... is it? Can new software be installed in these machines?

I can run the following on a VeriFone Vx570 POS terminal


#include <string.h>
#include <svc.h>
char Greeting[] = "Hello World";
void main (void)
{
   int display = open(DEV_CONSOLE, O_WRONLY);
   write(display, Greeting, strlen(Greeting));
   normal_tone();
}

Companies claiming they got hacked and lost your coins sounds like fraud so perfect it could be called fashionable.  I never believe them.  If I ever experience the misfortune of a real intrusion, I declare I have been honest about the way I have managed the keys in Casascius Coins.  I maintain no ability to recover or reproduce the keys, not even under limitless duress or total intrusion.  Remember that trusting strangers with your coins without any recourse is, as a matter of principle, not a best practice.  Don't keep coins online. Use paper or hardware wallets instead.
Pages: [1] 2 3 4 5 6 7 8 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!