Using smartcards to enable probabilistic transaction on an untrusted device6496808Abstract The present method permits a user to conduct remote transactions without a network while using an untrusted computing device, such as a hand-held personal digital assistant or a laptop computer. The computing device is augmented with a smartcard reader, and the user obtains a smartcard and connects it to the device. This design can be used by an untrusted user to perform financial transactions, such as placing bets on the outcome of a probabilistic computation. Protocols are presented for adding (purchasing) or removing (selling) value on the smartcard, again without requiring a network connection. Using the instant protocols, neither the user nor the entity issuing the smartcards can benefit from cheating. Claims What is claimed is: Description FIELD OF THE INVENTION
NOTATION/ABRREVIATION DEFINITION
A .fwdarw. B: Message A is sending Message to B
[text].sub.sc text is signed by the entity SC.
A, B comma denotes concatenation of
A and B
SC smartcard
D device
MK master key
SN serial number
At step 201, the device 30 sends a message to the smartcard 20 requesting a list of games supported by the smartcard. The smartcard responds at step 202, with a list of games. It is assumed that the smartcard can support many different types of games with their own bet limits and odds. Thus, the following messages can be defined where the smartcard informs the device of the games that are available: Device.fwdarw.Smartcard: game-query Smartcard.fwdarw.Device: game-list It is assumed that the rules along with their implied probabilities are either known or included in the list. The list of games could simply be a list of numbers that index into a booklet where games are described in detail. The booklet could be available on the device, so that the user could browse the rules before playing. For example, the game of high-card could be identified as follows: Game: high-card Odds: 27:24 Limit: $100 per game The details of how games and odds are represented is not important for the present invention. The user must have some confidence that the smartcard really has the amount of money that the user has paid the house for it. Therefore, the following query should be defined which the smartcard and the device supports: Device.fwdarw.Smartcard: money-query Smartcard.fwdarw.Device: value This permits the device to prompt the smartcard for the amount of money, and the smartcard returns the current balance. At step 203 and 204, the device uses the defined query to record the balance of money left on the card (this process is useful for the transcript discussed below). At step 204, the user specifies the game she wants to play and the bet she wishes to make, and the device transmits this information to the smartcard, e.g. Device.fwdarw.Smartcard: $15, high-card At steps 206-209, the smartcard and device execute a protocol for the dealing of a random face-up card. That is, the protocol allows a card to be chosen at random from a deck such that each card is equally likely to be chosen, and there is no way for the device nor the smartcard to bias the selection. In the end, the card is known to both parties. The protocol is described with respect to a standard poker deck of 52 cards, although the protocol is easily generalized for other games as further described below. The cards in the deck are mapped to integers, as set forth in FIG. 3, so that the problem of dealing a card reduces to picking a number from 1 to 52. Thus, it can be said that the Ace of Hearts has been dealt if the number 14 is chosen. In order for a card to be dealt, the device and the smartcard run a protocol whereby they agree on a number from 1 to 52. To accomplish this, basically each side provides a random piece, and they are combined in such a way that a random choice results. At step 206, the smartcard chooses a random number salt.sub.SC from 1 to 2.sup.160, and sends it to the device: Smartcard.fwdarw.Device: salt.sub.SC The device, on the other hand, chooses a random number salt.sub.D from 1 to 2.sup.160, and another random number valued from 1 to 52. The device concatenates the three numbers and computes a one-way transformation: half.sub.D =H(salt.sub.SC, salt.sub.D, value.sub.D) It is assumed that for a randomly chosen salt.sub.D unknown to the smartcard, half.sub.D appears pseudo-random and thus reveals only negligible information about value.sub.D to the computationally bounded smartcard. In practice, a cryptographic hash function such as SHA1, can be utilized. At step 207, the device then sends half.sub.D to the smartcard: Device.fwdarw.Smartcard: half.sub.D, vector Vector, as further described below, permits the dealing of subsequent cards from the same deck without duplication of the same card. The smartcard then chooses a random number valuesc from 1 to 52. At this point, both the smartcard and the device have committed to their values, but the smartcard does not know value.sub.D and the device does not know value.sub.SC. At step 208, the smartcard reveals value.sub.SC to the device: Smartcard.fwdarw.Device: value.sub.SC, vector The device in turn, at step 209, sends value.sub.D and salt.sub.D to the smartcard: Device.fwdarw.Smartcard: value.sub.D, salt.sub.D Both sides can then compute k=((value.sub.D +value.sub.SC)mod 52)+1 which gives a random number from 1 to 52, the card that is dealt. In FIG. 2, the calculation results in the computation of the number______ which deals the card 8 of Hearts to the user at step 209. It is important that the commitment made by the device in step 207 be verified by the smartcard. After the smartcard receives the message in step 209, it must check that the value submitted is the same one that was committed to earlier. To do this, the smartcard simply recomputes the hash of the two salts and the value and compares it to the value submitted in the message at step 207. It also verifies that the card chosen is the correct one, the 8 of Hearts in the example. The device and the smartcard are, in essence, utilizing the transformation H to implement a commitment protocol. The purpose of salt.sub.D is to prevent the smartcard from computing the value chosen by the device by exhaustively searching for the preimage of H. For example, if the device simply sent H(value.sub.D) or H(value.sub.D, salt.sub.SC), the smartcard could compute H for each number from 1 to 52 and see which one matched. If could then force any card it wanted to as the choice by picking its value appropriately. The purpose of introducing salt.sub.SC is to prevent a nonuniform device from opening the commitment H( ) in two ways. For example, if the protocol requires the device to simply send H(value.sub.D, salt.sub.D), then the device could compute, offline, values salt.sub.D, value.sub.D, salt.sub.D ', value.sub.D ', with H(salt.sub.D, value.sub.D)=H(salt.sub.D ', value.sub.D ') but with value.sub.D.noteq.value.sub.D ' mod 52. This would allow the device to affect the outcome of the dealt card calculation by choosing value.sub.D or valued.sub.D ' after learning value.sub.SC. By utilizing the above protocol and a hash function for H, either the device or the smartcard can ensure that the resulting value is random and unbiased by the other party. It should be noted that the hash function H must have a number of scrambling properties of the sort commonly assumed in the literature and commonly attributed to SHA1. In particular, the hash function needs to interact securely with other operations such as signatures and concatenation, as well as the particular rules of the card game implemented. The precise requirements of the hash function are straightforward, though tedious, to enumerate precisely. Moreover, although the above description uses a hash function to implement commitment, there are other implementations of commitment that can be used--such as those with pseudo-random number generators. Also, note that the commitment is over a secure channel between the smartcard and the device, neither of which performs simultaneous transactions with other parties. Thus, it is not necessary that the commitment protocol be non-malleable, even if several cards are dealt in parallel. This is advantageous since non-malleable commitment is inefficient. Steps 210 to 213 in FIG. 2 parallel the above and results in the card 5 of Clubs being dealt, except that the steps deal with 51 cards instead of 52. The protocol uses a 52-bit vector to keep track of which cards have already been dealt to ensure that the same card is not drawn randomly. At steps 211 and 212 (as well as at 207 and 208), the two sides agree about which cards are still in the deck by transmitting the vector to each other. A bit in the vector is set fi the corresponding card is still in the deck, and it is a zero otherwise. Initially the vector consists of 52 ones, and is gradually populated with a zero at the appropriate position in the vector as that corresponding card is dealt. The number of 1s in the vector thus represents the number of cards remaining in the deck. The two values value.sub.D and value.sub.SC are chosen from 1 to n, where n is the number of one's that are in the vector. Then, once all of the messages have been exchanged, the two sides compute: k=((value.sub.D +value.sub.SC)mod n)+1 The result, k, is between 1 and n, inclusive, and the card chosen corresponds to the position of the kth 1 in the vector. Thus, vector' in steps 211 and 212 would be 52-bit vector of 1s with a "0" at the __th position which corresponds, according to FIG. 3, to the Eight of Hearts. (A more complex example would be a vector with 38 ones, such as the vector set forth in FIG. 4. Assuming that the smartcard and device generate a value.sub.D of 27 and a valueSC of 18, then k=((27+18) mod 38)+1=8. The 8.sup.th 1 is i eleventh position in the vector, so the card dealt would be the Jack of Spades.) Accordingly, at steps 210-215 the device and the smartcard exchange the following messages and finally determines that the user has won the game and the bet: Smartcard.fwdarw.Device: salt.sub.SC ' Device.fwdarw.Smartcard: half.sub.D ', vector' Smartcard.fwdarw.Device value.sub.SC ', vector' Device.fwdarw.Smartcard: value.sub.D ', salt.sub.D ', You get 5 of Clubs Device.fwdarw.Smartcard: I win $15 Smartcard.fwdarw.Device: You win $15, new balance: $1560 In practice, one could exchange the roles of the smartcard and device for the card dealing protocol in messages 210-215 to increase the number of messages sent in the same direction as previous messages. Successive messages in the same direction can also be collapsed to shorten the protocol. Another simple optimization is to deal all of the cards at once. This could easily be accomplished by combining messages at steps 206 and 210, 207 and 211, etc. To deal n cards, the size of each message increases by a factor of n, but the number of messages remains constant at four. Moreover, the same techniques can be readily extended and used to play other games. For example, the techniques can be used to play the following: BLACKJACK: The random deal can be used to play blackjack against the house. First, the house "deals" two face up cards to the user, using the techniques set forth above. Then, the house deals itself a card. The device can display a face down card to the user, but the cards has actually not been dealt yet, as a computational matter. The user then decides how to play her hand, and cards are dealt as required. Finally, when the user decides to hold her hand, the dealer's second card is dealt. In the device, the down card appears to flip over. Finally, any additional cards needed by the house are dealt. The signed transcript is used to settle any dispute s. SLOTS: The technique used to deal cards can be used to pick random numbers of any size. A slot machine is easy to implement with such a tool. The pictures on each wheel of the slot machine are numbered, and the spinning of each wheel corresponds to the house "dealing" a random number in the proper range. If the slot machine displays give images, then five random numbers are agreed upon by the device and the smartcard, and the graphical user interface is used to display five pictures corresponding to the numbers chosen. CRAPS: Rolling the dice to play craps corresponds to picking two random numbers between one and six. It is straightforward to apply the present invention to do this. POKER: A typical poker machine can be implemented as follows. The house deals five cards to the user. The user discards up to four of them (four is only allowed if the fifth card is an ace). The house then deals cards to replace the discarded ones. If the quantity of the hand is above a certain threshold, the user wins. This again can be accomplished using the above techniques. Digital Signatures and Message Chains Although the above protocols provide protection against user cheating, the user is not protected against smartcard cheating, such as when the smartcard includes a bogus message as the previous message received from the device. The system design is notably asymmetric: the smartcard's protection against the user is temper-resistant hardware, whereas the user lacks equivalent protection against smartcard misbehavior. In a preferred embodiment of the present invention, protection is provided to the user through the ability of the device to provide a transcript of the communication which can be brought to an arbiter, such as a court of law or an entity mutually agreed upon by the users and the house, for dispute-resolution. The goal is for the device to store an undeniable transcript of all communication with the smartcard; that is, the house should not be able to repudiate that the messages in the transcript were sent. Non-repudiation can be achieved through the use in the protocol of signing and hash chaining. In a preferred embodiment of the present invention, signature verification is implicitly part of the above protocol. The smartcard signs every message in the above protocol before it is sent. It is assumed that the first message from the smartcard includes the public key certificate for the smartcard signed by the house. So, in effect, every message sent by the smartcard above should be read as [msg].sub.SC and the first message sent from the smartcard as [msg].sub.SC, [SC, public-key(SC)].sub.H where H here represents that the smartcard's certificate and public key has been signed by the house public key. Thus, anyone in possession of the public key of the house can verify the certificate and then the signature by the smartcard. Notably, although the smartcard signs messages, the device as an untrusted agent of the user does not have to sign messages. Finally, non-repudiation can be achieved through the use of hash chaining, a known method for linking messages to each other within a communication session. The device generates a random key, K.sub.D, upon startup, and uses this key to produce a message authentication code (MAC) of messages that are sent to the smartcard. Cryptographic hash functions such as SHA1 or MD5 can be utilized to generate the MAC. Subsequent MAC computations include all previous MACs, and this is referred to as a running MAC. When the smartcard includes the previous message in its signed message, the running MAC is included as well. The running MAC is included in every message sent from the device to the smartcard and is computed over the previous message received from the smartcard, the current message being sent, and the running MAC from the previous message sent. In other words, the running MAC can be defined as follows: RMAC.sub.1, =MAC.sub.KD (msg.sub.1) RMAC.sub.n =MAC.sub.KD ((msg.sub.n-1, msg.sub.n, RMAC.sub.n-2) To illustrate, the communication between the device and smartcard would be as follows: Device.fwdarw.Smartcard: x.sub.1 =msg.sub.1, MAC.sub.KD (msg.sub.1) Smartcard.fwdarw.Device: x.sub.2 =[msg.sub.2, x.sub.1 ].sub.SC Device.fwdarw.Smartcard: x.sub.3 =msg.sub.3, MAC.sub.KD (msg.sub.2, msg.sub.3, MAC.sub.KD (msg.sub.1)) Smartcard.fwdarw.Device: x.sub.4 =[msg.sub.4,x.sub.3 ].sub.SC The third message can be written simply as: Smartcard.fwdarw.Device: x.sub.3 =msg.sub.3, RMAC.sub.3 Since every message from the device contains a running MAC, it is impossible for the smartcard to produce a valid message that contains a forged message from the device. Non-repudiation is achieved if it is assumed that there is no way for the device to generate two messages that map to the same MAC output with different keys. While this is not a proven property of MAC functions such as HMAC, it is widely believed to hold (the smartcard can improve things by including a new random value in every message). Armed with the history of the messages recorded by the device, a user can prove that the device sent and received messages in the order that they occurred. Protocols for Adding or Removing Value Security protocols can be provided for allowing a user to have the balance on her card increased by paying more money to the house--and for allowing the user remove value or "cash out" the balance on the card. These protocols have clear application beyond the domain of probabilistic transactions. Where there is a high bandwidth channel available between the smartcard and the house, e.g. where the device is equipped with a modem that can dial into the house, value can be added to the smartcard as follows: the user can pay $100, for example, to the house by using a credit card over the telephone or while connected to the Internet. Then, the user would dial the house from the device, and the house would send a signed message to the card to increase the balance by $100. A challenge/response protocol could be used to avoid replay. The smartcard would then verify the signature of the house and increase the balance accordingly. As for cashing out the value of the smartcard, the user can indicate to the house that she wishes to cash out, connect the device up the house, and the smartcard can send a signed message to the house over the modem connection indicating that the user cashes out a particular balance. The smartcard then sets the balance to zero, and the house issues a check for the amount to the user. Measures can easily be taken to protect against replay. Where there is no direct communication between the device and the house, the protocol illustrated in FIGS. 5 can be utilized to add value to the smartcard. It is assumed that some low bandwidth connection exists between the user and the house and between the user and the smartcard. For example, the user could make a telephone call to the house, enter a credit card number and expiration date, and receive a short string of alphanumeric characters back. The same could readily be accomplished over the Internet. The actual transport does not matter, except for the limiting factor that there is no way for the house or the device to communicate thousands of bits to each other in a user-friendly fashion. Once the user has paid for the credit, a way is needed for the house to add the credit to the smartcard in such a way that the amount is added exactly once, even in the face of a malicious user who is trying to maximize the value of her smartcard. In accordance with an embodiment of the present invention, the smartcard authenticates the request from the house by verifying that only the house could have possibly generated some string. One method of achieving this is by establishing a shared secret between the house and the smartcard. A difficulty is that every smartcard must have a different secret. Otherwise, compromising one smartcard could lead to impersonation of all the other smartcards. On the other hand, it is disadvantageous to store a large number of secret keys at the house. The solution employed in a preferred embodiment of the present invention is the use of pseudo-random functions. The house generates a master cryptographic key, MK, which it uses to compute the secret keys on the smartcards. Every smartcard, SC, comes with a unique serial number, SN, that is visible on the outside of the card. When a smartcard is manufactured, the house computes a secret key K.sub.SC =f.sub.MK (SN) which is a pseudo-random function keyed by the master key and evaluated at the serial number. It has been shown that desirable pseudo-random properties for f above can be easily constructed from simple hash functions such as HMAC. The secret key, K.sub.SC, is stored in the tamper-resistant portion of the smartcard. The key need not be saved by the house, since it can be recomputed from the serial number and the master key. Once the shared secret, namely the secret key, is established, messages can be authenticated using a secure MAC, such as HMAC. Thus, messages can be reliably transferred between the house and the smartcard with the user as an intermediary such that only the entities in possession of the secret cryptographic key, namely the house and the smartcard, could have produced the MAC. As illustrated in FIG. 5, for example, the user at step 501 utilizes the data input means on the device to indicate that she wishes to add $500 to the smartcard. The smartcard, at step 502, issues a challenge consisting of an 80 bit random nonce, No. The nonce can be of any length, although it is preferably at least 80 bits in length which can be represented by 16 alphanumeric characters, which is a reasonable amount for a user to read and convey to the house. Once the smartcard issues the challenge, it locks up and refuses any message except a valid AUTH response corresponding to the amount in the initial message (it is preferable that the card lock up until it receives a correct AUTH from the user to prevent parallel runs of the protocol, which could lead to potential attacks). At step 503, the user pays the house $500. This can be accomplished by credit card, check, cash, or any other form. In addition, she passes along the nonce and the serial number, which she can read off the outside of the smartcard. The entire transaction could take place by telephone if the house is willing to accept credit card payments by phone. Once the house receives the challenge, at step 504, it computes the secret key, Ksc, from the serial number and the master key. It then computes the MAC of the nonce and the request to add $500. The result can then be truncated to contain only the first 80 bits. At step 505, these are then sent to the user as an authorization code AUTH of 16 alphanumeric characters. The user, at step 506, then enters AUTH into the device, which passes it along to the smartcard. The smartcard, at step 507, uses its stored secret key, Ksc, to compute the truncated MAC on the request to add $500 and compares it to the one received from the house. If the computed value does not match the value from the house, then the card remains locked. Otherwise, the balance on the card is increased by $500. The protocol in FIG. 5 can also be represented by the following notation: User.fwdarw.Smartcard: "Add $500" Smartcard.fwdarw.User: N.sub.0 User.fwdarw.House: N.sub.0, SN, $500, "Add $500" House.fwdarw.User: AUTH=Trunc.sub.80 (MAC.sub.KSC (N.sub.0, SN, House, "Add $500")) User.fwdarw.Smartcard: AUTH The messages can be further signed and chained, as described above. Again, the length of the nonce and AUTH can be longer or shorter: shorter lengths may be more susceptible to compromise while longer lengths may be too long for a user to relay comfortably to the house. The above protocol is advantageously not susceptible to replay. To successfully add any amount to the smartcard, the user must receive a new challenge from the smartcard, and the smartcard does nothing until the AUTH for that amount is received. The house only releases AUTH values for the amounts that are paid, so replaying any of the messages in the protocol cannot result in stealing money from the house. An adversary who does not possess the master key cannot produce a valid AUTH for an arbitrary smartcard. Furthermore, if someone breaks into a smartcard, she can only expose the secret key for that particular card, because keys are independent from each other, given the properties of pseudo-random functions. The scheme introduces no further loss than the compromised card: compromising one card does not give one the ability to add value to another card. Analogously to FIG. 5, FIG. 6 illustrates a protocol which can be used to cash out the value of the smartcard where there is no direct communication between the device/smartcard and the house. It is again assumed that the bandwidth between the house and the smartcard is limited by a user in the middle of the protocol. Again, the entire transaction can be conducted over a telephone call from the user to the house or over the Internet, etc. At step 601, the user contacts the house and indicates a desire to withdraw money from the smartcard. The house, at step 602, provides a challenge which consists of a random nonce, preferably at least 80 bits in length which can be encoded in 16 alphanumeric characters. The user, at step 603, enters the 16 characters into the device along with the amount to be withdrawn, e.g. $500, which are then fed into the smartcard. The smartcard checks its value; if it does not have $500, it returns an error. Otherwise, the smartcard deducts $500 from the card and constructs a MAC of the challenge and the amount to be withdrawn and truncates this message to 80 bits in order to produce AUTH at step 604. The smartcard transmits the AUTH to the user via the device at step 605, which the user can read to the house at step 606, along with the serial number on the back of the smartcard. The user also indicates that the authorized withdrawal is for $500. The house, at step 607, then constructs the smartcard's secret key, K.sub.SC, from the serial number and computes the MAC and compares the resulting string to the authorization from the user. If they match, the house then at step 608 mails a check to the user for $500 (or performs a wire transfer or any other form of payment). The cash out protocol example in FIG. 6 can also be represented with the following notation: User.fwdarw.House: Withdraw House.fwdarw.User: N.sub.0 User.fwdarw.Smartcard: N.sub.0, "Withdraw $500" Smartcard.fwdarw.User: AUTH=Trunc.sub.80 (MAC.sub.KSC (N.sub.0, SN, House, "Withdraw $500")) User.fwdarw.House: AUTH, SN, "Withdraw $500" House.fwdarw.User: $500 Again, these protocols work because both the smartcard and the house have access to K.sub.SC, while nobody else does. In order to ensure that the house is able to refund the amount on the smartcard whenever the user wishes, the house can keep a certain amount of money in escrow, perhaps under the control of an arbiter. Audit Process Regardless of the cryptography or protocols utilized in a secure system, it is advantageous to include logging, audit, and other controls in a complete system. For example, it is advantageous for the house to monitor cash out requests very carefully, for example by logging all cash out requests by serial number. In the unlikely event that a particular smartcard is physically compromised, there is a danger that an attacker could attempt to manufacture money. An alarm should be triggered if a particular smartcard requests cash out with frequency or amount above a certain threshold. The suspected serial number should be added to a watch list, and if the behavior continues, an investigation may be required. One countermeasure is to notify the user that the next time she tries to cash out that her card is being replaced. The replaced card should in turn be automatically placed on a hotlist that is closely monitored. Another possible countermeasure is to issue cards with expiration times, which would limit exposure to a valid period. This could, however, lead to the side effect of increasing the take of the house because of money lost to expired smartcards, which may be ill-perceived by users. The foregoing Detailed Description is to be understood as being in every respect illustrative and exemplary, but not restrictive, and the scope of the invention disclosed herein is not to be determined from the Detailed Description, but rather from the claims as interpreted according to the full breadth permitted by the patent laws. It is to be understood that the embodiments shown and described herein are only illustrative of the principles of the present invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention. For example, the detailed description described security protocols as applied to a personalized gambling device used to play high-card. However, the principles of the present invention could be extended to perform other games as well as other types of remote transactions. Such extensions could be readily implemented by one of ordinary skill in the art given the above disclosure.
|
Same subclass Same class Consider this |
||||||||||
