[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
digital banking, file formats, etc.
This is a run through of Hal Finney's summary of the bank protocol.
Here is what I envision the digital bank working like, with rough
sketches of file formats, conspicuously similar to the remailer's
:-):
1) Alice chooses x, r
Alice computes B = r^3 * f(x) mod n
Alice sends the following message to the bank via an anonymous
remailer
::
withdraw
<account name>
<B = r^3 * f(x) mod n>
Reply-To: <an anonymous remailer>
<remailing request to Alice encrypted with appropriate remailer
public key>
In the final version, this message will be encrypted as well
2) Bank computes D = B^(1/3)
checks <account name> for balance, withdraws if ok
Bank sends to appropriate remailer
::
Encrypted: PGP
<remailing request included in Alice's mail>
<D>
3) Alice computes C = f(x)^(1/3) by dividing D by r.
Alice gives Bob (x, C) - via anonymous mail, presumably :-)
4) Bob wants to verify (x, C)
Bob mails to Bank via anonymous remailer
::
verify
<x>
<C>
Reply-To: <an anonymous remailer>
<remailing request to Bob encrypted with appropriate remailer
public key>
In the final version, this message will be encrypted as well
5) Bank checks x to see if its been used
Bank sends back to remailer
::
Encrypted: PGP
<remailing request included in Bob's mail>
<usage status: used or unused>
6) Bob accepts the "cash"
Bob sends to bank via anonymous remailer
::
deposit
<account name>
<x>
<C>
Reply-To: <an anonymous remailer>
<remailing request for Bob encrypted with appropriate remailer
public key>
7) Bank checks x, C, account name; if everything OK, deposit
Bank replies via anonymous remailer
::
Encrypted: PGP
<remailing request included in Bob's mail>
<message indicating deposit accepted or rejected>
Alice and Bob may send message to and receive messages from the bank
via anonymous remailers. Or more than one...
During the testing/development phase, account names and balances can
be made public (available via finger command or something like that)
for verification.
Account names can be hashes of some user chosen string (Email address
plus random text, etc.)
Customers must be able to
choose: two random numbers x, r
compute: f(x)
r^3 * f(x) mod n
f(x)^(1/3) or C^3
solve: D = C r mod n for C
Bank must be able to
solve: D^3 mod n for D
So, PGP has routines which can generate random number, calculate
hashes, and be modified slightly to perform the necessary math. The
Bank will be supported by a host of scripts and the math performing
PGP routines.
Sometime later I will post a run through of the digital bank protocol
(all numbers and done with Mathematica) as an example for those who
are interested in an example of the protocol.
Any input or comments or help will be welcome. Or, if someone else
is further along than me, I volunteer! Unfortunately, since the end
of the semester draws near, I will be unable to work on this very
much for the next few weeks. Besides, I've got to go pick up the
O'Reilly and Associates Perl book to
move this project along...
---
/-----------------------------------\
| Karl L. Barrus |
| [email protected] (NeXTMail) |
| [email protected] |
\-----------------------------------/