[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
MATH: Brands' cash, Hal's post #2
-----BEGIN PGP SIGNED MESSAGE-----
This post gives numerical examples to go along with Hal Finney's excellent
description of Brands' digital cash, posted earlier. If the math is too
much, just remember the whole point:
> Blind signatures are, IMO, the key to anonymous digital cash, and in fact
> to many forms of anonymity. The ability to engage in mutual information
> manipulation with another person, while guaranteeing that no linkage will
> later be possible between the data exchanged and the results of that
> calculation, is the foundation for interacting in a complex way without
> losing any privacy...
> Vicki wants to end up with a non-interactive signature on m', which is a
> special transformation of m. To do this, she engages in an interactive
> signature protocol with Paul, getting him to sign m... the result is
> that she ends up with a non-interactive signature on m' because Paul was
> willing to participate in an interactive signature session on m
Continuing along:
> Now for the mathematics. Recall the g is the "generator" of the group,
> the base of all of the powers. x is Paul's secret key, and GX=g^x is his
> public key.
I will use g = 10, n = 17389 as in the previous example. Paul will choose
x = 351 to be his secret key, so GX = 10^351 mod 17389 = 16987 is his public
key. In addition, the message is m = 1994.
> As the first step of the interactive protocol, Paul chooses a random w
> and sends Vicki MX = m^x, GW = g^w, and MW = m^w.
Paul chooses a random w = 666
MX = 1994^351 mod 17389 = 11740
GW = 10^666 mod 17389 = 7115
MW = 1994^666 mod 17389 = 13262
> The relationship between m', which is what Vicki will end up
> with a signature on, and m, which is the number that Paul sees, is
> m' = (m^s)*(g^t).
Vicki chooses s = 3694, t = 1243
m' = (1994^3694)*(10^1243) mod 17389 = 10313
> the challenge c is calculated as the hash of (m,MX,GW,MW). Vicki
> must transform these numbers so that Paul will not recognize them, but in
> such a way that the mathematical relationships are maintained.
> To do this, Vicki chooses two (more) random numbers, u and v (along with
> s and t above).
Vicki chooses u = 5192, v = 100
> MX' = m'^x = ((m^s)*(g^t))^x = (m^(s*x))*(g^(t*x)) = (MX^s)*(GX^t)
> GW' = g^w' = g^(u*w+v) = (g^(u*w))*(g^v) = (GW^u)*(g^v)
> MW' = m'^w' = ((m^s)*(g^t))^(u*w+v) = [...] =
> (GW^(u*t))*(MW^(u*s))*(m'^v)
MX' = (MX^s)*(GX^t) = (11740^3694)*(16987^1243) mod 17389 = 10710
GW' = (GW^u)*(g^v) = (7115^5192)*(10^100) mod 17389 = 12113
MW' = (7115^(5192 1243))*(11740^(5192 3694))*(10313^100) mod 17389 = 9314
> Using these, Vicki calculates her hash c'= Hash(m',MX',GW',MW').
c' = hash(10313,10710,12113,9314) = 7672 (some hash function I made up)
> Now, the c she sends to Paul...
> c = c'/u
c = (7672/5192) mod 17389 = 323
[ 5192 c = 7672 mod 17389
--> 5192 c" = 1 mod 17389
--> c" = 3520
==> c = c" 7672 mod 17389 = 323
check: (323 5192) mod 17389 = 7672
]
> Paul will ... calculate r = c*x+w.
r = (323 351 + 666) mod 17388 = 9711
> [Vicki calculates] r' = u*r + v
r' = (5192 9711 + 100) mod 17388 = 11800
> The resulting signature on m' is (MX',GW',MW',r')
So the resulting signature is (10710,12113,9314,11800)
Okay, that should be an actual example of the protocol, unless I messed
up somewhere ;) I hope to finish going through Hal's third post soon.
Karl Barrus
[email protected]
-----BEGIN PGP SIGNATURE-----
Version: 2.6.1
iQCVAwUBLoImUMSF/V8IjI8hAQGRmAP/RojMlpm8rnnx4K6c3GEHsBoQL7hIhdBB
bTiwBhkXbi8ZhHsZJtX9mFceIhTK7yIxVsq9y17d2m5NghGME1qtIN+MjbbvwHfp
j9S9fWwF6/mIiRvV9IM1a23IGhyZi0ZQASLKRiPlStjbcwv6QoGxZQuTyGOD8pSn
hpoKosUFbqY=
=EIjf
-----END PGP SIGNATURE-----