16.2 A Digital Cash System

This section is not needed for the remaining sections of the chapter. It is included because it has some interesting ideas and it shows how hard it is to achieve the desired requirements of a digital currency.

We describe a system due to S. Brands [Brands]. The reader will surely notice that it is much more complicated than the centuries-old system of actual coins. This is because, as we mentioned previously, electronic objects can be reproduced at essentially no cost, in contrast to physical cash, which has usually been rather difficult to counterfeit. Therefore, steps are needed to catch electronic cash counterfeiters. But this means that something like a user’s signature needs to be attached to an electronic coin. How, then, can anonymity be preserved? The solution uses “restricted blind signatures.” This process contributes much of the complexity to the scheme.

16.2.1 Participants

Participants are the Bank, the Spender, and the Merchant.

16.2.2 Initialization

Initialization is done once and for all by some central authority. Choose a large prime p such that q=(p1)/2 is also prime (see Exercise 15 in Chapter 13). Let g be the square of a primitive root mod p. This implies that gk1gk2 (mod p)k1k2 (mod q). Two secret random exponents are chosen, and g1 and g2 are defined to be g raised to these exponents mod p. These exponents are then discarded (storing them serves no useful purpose, and if a hacker discovers them, then the system is compromised). The numbers

g, g1, g2

are made public. Also, two public hash functions are chosen. The first, H, takes a 5-tuple of integers as input and outputs an integer mod q. The second, H0, takes a 4-tuple of integers as input and outputs an integer mod q.

16.2.3 The Bank

The bank chooses its secret identity number x and computes

hgx(mod p).

The number h is made public and identifies the bank.

16.2.4 The Spender

The Spender chooses a secret identity number u and computes the account number

Ig1u(mod p).

The number I is sent to the Bank, which stores I along with information identifying the Spender (e.g., name, address). However, the Spender does not send u to the bank. The Bank sends

z(Ig2)x(mod p)

to the Spender.

16.2.5 The Merchant

The Merchant chooses an identification number M and registers it with the bank.

16.2.6 Creating a Coin

The Spender contacts the bank, asking for a coin. The bank requires proof of identity, just as when someone is withdrawing classical cash from an account. All coins in the present scheme have the same value. A coin will be represented by a 6-tuple of numbers

(A, B, z, a, b, r).

This may seem overly complicated, but we’ll see that most of this effort is needed to preserve anonymity and at the same time prevent double spending.

Here is how the numbers are constructed.

  1. The Bank chooses a random number w (a different number for each coin), computes

    gwgw and β(Ig2)w(mod p), 

    and sends gw and β to the Spender.

  2. The Spender chooses a secret random 5-tuple of integers

    (s, x1, x2, α1, α2).
  3. The Spender computes

    A(Ig2)s, Bg1x1g2x2, zzs, agwα1gα2, bβsα1Aα2(mod p).

    Coins with A=1 are not allowed. This can happen in only two ways. One is when s0 (mod q), so we require s0. The other is when Ig21 (mod p), which means the Spender has solved a discrete logarithm problem by a lucky choice of u. The prime p should be chosen so large that this has essentially no chance of happening.

  4. The Spender computes

    cα11H(A, B, z, a, b)(mod q)

    and sends c to the Bank. Here H is the public hash function mentioned earlier.

  5. The Bank computes c1cx+w (mod q) and sends c1 to the Spender.

  6. The Spender computes

    rα1c1+α2(mod q).

    The coin (A, B, z, a, b, r) is now complete. The amount of the coin is deducted from the Spender’s bank account.

The procedure, which is quite fast, is repeated each time a Spender wants a coin. A new random number w should be chosen by the Bank for each transaction. Similarly, each spender should choose a new 5-tuple (s, x1, x2, α1, α2) for each coin.

16.2.7 Spending the Coin

The Spender gives the coin (A, B, z, a, b, r) to the Merchant. The following procedure is then performed:

  1. The Merchant checks whether

    grahH(A, B, z, a, b)ArzH(A, B, z, a, b)b (mod p).

    If this is the case, the Merchant knows that the coin is valid. However, more steps are required to prevent double spending.

  2. The Merchant computes

    d=H0(A, B, M, t), 

    where H0 is the hash function chosen in the initialization phase and t is a number representing the date and time of the transaction. The number t is included so that different transactions will have different values of d. The Merchant sends d to the Spender.

  3. The Spender computes

    r1dus+x1, r2ds+x2(mod q), 

    where u is the Spender’s secret number, and s, x1, x2 are part of the secret random 5-tuple chosen earlier. The Spender sends r1 and r2 to the Merchant.

  4. The Merchant checks whether

    g1r1g2r2AdB(mod p).

    If this congruence holds, the Merchant accepts the coin. Otherwise, the Merchant rejects it.

16.2.8 The Merchant Deposits the Coin in the Bank

A few days after receiving the coin, the Merchant wants to deposit it in the Bank. The Merchant submits the coin (A, B, z, a, b, r) plus the triple (r1, r2, d). The Bank performs the following:

  1. The Bank checks that the coin (A, B, z, a, b, r) has not been previously deposited. If it hasn’t been, then the next step is performed. If it has been previously deposited, the Bank skips to the Fraud Control procedures discussed in the next subsection.

  2. The Bank checks that

    grahH(A, B, z, a, b)ArzH(A, B, z, a, b)b,  and g1r1g2r2AdB (mod p).

    If so, the coin is valid and the Merchant’s account is credited.

16.2.9 Fraud Control

There are several possible ways for someone to try to cheat. Here is how they are dealt with.

  1. The Spender spends the coin twice, once with the Merchant, and once with someone we’ll call the Vendor. The Merchant submits the coin along with the triple (r1, r2, d). The Vendor submits the coin along with the triple (r1, r2, d). An easy calculation shows that

    r1r1us(dd), r2r2s(dd)(mod q).

    Dividing yields u(r1r1)(r2r2)1 (mod q). The Bank computes Ig1u (mod p) and identifies the Spender. Since the Bank cannot discover u otherwise, it has proof (at least beyond a reasonable doubt) that double spending has occurred. The Spender is then sent to jail (if the jury believes that the discrete logarithm problem is hard).

  2. The Merchant tries submitting the coin twice, once with the legitimate triple (r1, r2, d) and once with a forged triple (r1, r2, d). This is essentially impossible for the Merchant to do, since it is very difficult for the Merchant to produce numbers such that

    g1r1g2r2AdB(mod p).
  3. Someone tries to make an unauthorized coin. This requires finding numbers such that grahH(A, B, z, a, b) and ArzH(A, B, z, a, b)b. This is probably hard to do. For example, starting with A, B, z, a, b, then trying to find r, requires solving a discrete logarithm problem just to make the first equation work. Note that the Spender is foiled in attempts to produce a second coin using a new 5-tuple since the values of x is known only to the Bank. Therefore, finding the correct value of r is very difficult.

  4. Eve L. Dewar, an evil merchant, receives a coin from the Spender and deposits it in the bank, but also tries to spend the coin with the Merchant. Eve gives the coin to the Merchant, who computes d, which very likely is not equal to d. Eve does not know u, x1, x2, s, but she must choose r1 and r2 such that g1r1g2r2AdB (mod p). This again is a type of discrete logarithm problem. Why can’t Eve simply use the r1, r2 that she already knows? Since dd, the Merchant would find that g1r1g2r2AdB.

  5. Someone working in the Bank tries to forge a coin. This person has essentially the same information as Eve, plus the identification number I. It is possible to make a coin that satisfies grahH(A, B, z, a, b). However, since the Spender has kept u secret, the person in the bank will not be able to produce a suitable r1. Of course, if s=0 were allowed, this would be possible; this is one reason A=1 is not allowed.

  6. Someone steals the coin from the Spender and tries to spend it. The first verification equation is still satisfied, but the thief does not know u and therefore will not be able to produce r1, r2 such that g1r1g2r2AdB.

  7. Eve L. Dewar, the evil merchant, steals the coin and (r1, r2, d) from the Merchant before they are submitted to the Bank. Unless the bank requires merchants to keep records of the time and date of each transaction, and therefore be able to reproduce the inputs that produced d, Eve’s theft will be successful. This, of course, is a flaw of ordinary cash, too.

16.2.10 Anonymity

During the entire transaction with the Merchant, the Spender never needs to provide any identification. This is the same as for purchases made with conventional cash. Also, note that the Bank never sees the values of A, B, z, a, b, r for the coin until it is deposited by the Merchant. In fact, the Bank provides only the number w and the number c1, and has seen only c. However, the coin still contains information that identifies the Spender in the case of double spending. Is it possible for the Merchant or the Bank to extract the Spender’s identity from knowledge of the coin (A, B, z, a, b, r) and the triple (r1, r2, d)? Since the Bank also knows the identification number I, it suffices to consider the case where the Bank is trying to identify the Spender. Since s, x1, x2 are secret random numbers known only to the Spender, A and B are random numbers. In particular, A is a random power of g and cannot be used to deduce I. The number z is simply Ax (mod p), and so does not provide any help beyond what is known from A. Since a and b introduce two new secret random exponents α1, α2, they are again random numbers from the viewpoint of everyone except the Spender.

At this point, there are five numbers, A, B, z, a, b, that look like random powers of g to everyone except the Spender. However, when cα11H(A, B, z, a, b)(mod q) is sent to the Bank, the Bank might try to compute the value of H and thus deduce α1. But the Bank has not seen the coin and so cannot compute H. The Bank could try to keep a list of all values c it has received, along with values of H for every coin that is deposited, and then try all combinations to find α1. But it is easily seen that, in a system with millions of coins, the number of possible values of α1 is too large for this to be practical. Therefore, it is unlikely that knowledge of c, hence of b, will help the Bank identify the Spender.

The numbers α1 and α2 provide what Brands calls a restricted blind signature for the coin. Namely, using the coin once does not allow identification of the signer (namely, the Spender), but using it twice does (and the Spender is sent to jail, as pointed out previously).

To see the effect of the restricted blind signature, suppose α1 is essentially removed from the process by taking α1=1. Then the Bank could keep a list of values of c, along with the person corresponding to each c. When a coin is deposited, the value of H would then be computed and compared with the list. Probably there would be only one person for a given c, so the Bank could identify the Spender.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset