Anonymous Internet banking

From HandWiki
Revision as of 03:10, 14 June 2021 by imported>MainAI (over-write)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Anonymous Internet banking is the proposed use of strong financial cryptography to make electronic bank secrecy (or more precisely pseudonymous banking) possible. The bank issues currency in the form of electronic tokens that can be converted on presentation to the bank to some other currency. This concept has a long history in which free banking institutions have issued their own paper currency often backed by a physical commodity.

History

While the academic study of trust relationships and systems has long been the domain of intelligence services such as the NSA, the growth of the Internet in the 1990s and the contemporary declassification of related knowledge allowed for greater public discussion of the potential for anonymous banking services by groups such as the cryptoanarchists and cypherpunks.

The underlying mathematics

Anonymous internet banking depends on the mathematics of public key cryptography and blind signature algorithms. In this simple example we have Alice and Bob and a banker. The banker generates an RSA public key with modulus [math]\displaystyle{ n= P Q }[/math], where [math]\displaystyle{ P }[/math] and [math]\displaystyle{ Q }[/math] are large primes, making [math]\displaystyle{ n }[/math] a semiprime. As described in RSA operation, the bank also generates public key exponent [math]\displaystyle{ e }[/math] and private key exponent [math]\displaystyle{ d }[/math].

Bob asks the banker for a $100 deposit slip in anticipation of Alice wanting to transfer money to him. To generate a deposit slip the bank selects a large, globally unique random number [math]\displaystyle{ R }[/math] and encrypts it using the bank's public key; this means that it can only be decrypted with the bank's secret key:

[math]\displaystyle{ R' = R^e\pmod n }[/math]

This encrypted value [math]\displaystyle{ R' }[/math] is sent to Bob with the promise to deposit $100 into his account when Bob sends the value [math]\displaystyle{ R }[/math] back to the bank. The bank is confident that Bob won't be able to break RSA to generate [math]\displaystyle{ R }[/math] from [math]\displaystyle{ R' }[/math] within a reasonable period without knowledge of [math]\displaystyle{ d }[/math], so it does not worry about handing out the deposit slips without receiving anything from Bob.

When Alice wants to pay Bob $100 she asks for the deposit slip and Bob sends her [math]\displaystyle{ R' }[/math]. Alice selects a large random value [math]\displaystyle{ w }[/math] coprime with [math]\displaystyle{ n }[/math] (so as to have an inverse modulo [math]\displaystyle{ n }[/math]) and uses it to blind [math]\displaystyle{ R''=w^e*R' }[/math] and sends it to the bank to be blind signed. The Bank charges Alice $100 for this operation and returns the blind signed value [math]\displaystyle{ R''' }[/math]. Due to the symmetric properties of RSA, this provides her with [math]\displaystyle{ R }[/math]:

[math]\displaystyle{ \begin{align} R''' & = (w^e*R')^d \pmod n \\ & = (w^e*R^e)^d \pmod n \\ & = (w*R)^{ed} \pmod n \\ & = w * R \pmod n\\ \end{align} }[/math]

Because of the blinding process, the Bank is not able to associate [math]\displaystyle{ R'' }[/math] or [math]\displaystyle{ R''' }[/math] with [math]\displaystyle{ R' }[/math] or [math]\displaystyle{ R }[/math]. The only possible way for the bank to do this is to trial divide [math]\displaystyle{ R'' }[/math] by all the values of [math]\displaystyle{ R' }[/math] that it gave out or [math]\displaystyle{ R''' }[/math] by all values of [math]\displaystyle{ R }[/math]. This means the bank is unable to determine that Bob and Alice are doing business together, preserving the anonymity of the transaction. Alice unblinds [math]\displaystyle{ R''' }[/math] (by dividing it by [math]\displaystyle{ w }[/math]) to generate the original value [math]\displaystyle{ R }[/math], which she sends to Bob. Bob verifies that [math]\displaystyle{ R }[/math] can be encrypted with the bank's public key by computing [math]\displaystyle{ R' = R^e \pmod n }[/math], which means that Alice has deposited $100 into the bank. Bob then sends this value to the bank and the bank checks its records to be sure that [math]\displaystyle{ R }[/math] has not been already used. If [math]\displaystyle{ R }[/math] is confirmed to be unused the bank then deposits $100 into Bob's account and updates its database that the unique value [math]\displaystyle{ R }[/math] has been redeemed.

Different public keys can be used for different denominations of currency so this system doesn't take appreciably longer for large transactions.

Note that if neither Alice nor Bob wishes the bank to know that they performed a transaction with each other, then it is hard for the bank to find out. However, in order to ensure this is the case many people need to be making transactions at the same time. Otherwise the bank can figure it out by the timing of the transactions, using traffic analysis.

See also

References


External links