There's a big assumption behind all of this. The assumption is that it's even possible. I sure think it is but haven't found the path yet. Please help!
The RadPad attempt at a simple protocol for low-tech, future-proof, unbreakable encryption which relies heavily on the unknowability of the One Time Pad and uses Public Key Cryptrography (PKC) to allow infinite sustainability without ever meeting the other party.
The Caesar Chiper is a simple method of encryption in which all characters in a message are changed to another letter in the character space, including themselves, by a set amount called the Shift. Caesar Ciphers are easy to crack by a variety of methods. The One Time Pad (OTP) operates much like the Caesar Cipher but by shifting each letter of the message by a truly random number of equal probability from 1 to the total number of characters in the character space, the message is completely unbreakable. The key for a Caesar Cipher is a single number but the OTP requires a key for each character of the message. It is common to create a list of Shifts which can be distributed to other parties but this list cannot be repeated and will therefore eventually be used up. Any list or replacement list must be kept and exchanged with absolute privacy which is often impossible.
PKC allows for private, sustainable key exchange by allowing each party to randomly select a Private Key which can never be shared, calculate a Public Key which can be shared over insecure channels with no risk, and calculate a Shared Key which can be used as a Shift in a given cipher protocol. The One Time Pad requires an independent key for each character in the message and those keys must be equal in probability from 1 to the total number of characters in the character space. Conventional PK cryptography does not return Shifts of equal probability or distribution and cannot be used with the OTP.
Enter the RadPad. By modifying the calculations which generate the Shifts and placing mild constraints on the character space length and Key generation, equal probability and distribution is guaranteed. The RadPad is a minimal protocol which defines these constraints. The OTP unbreakability can now be used infinitely without ever having to meet the other party.
To apply the RadPad Protocol: (See the Python code for a simpler explanation.)
- Determine P, a prime number which is 1 greater than the total number of characters in the character space. Modify the character space or find a more suitable prime if necesary.
- Determine R, a primitive root of P. Table of primes 3 through 97 provided below for convenience.
- Private Keys are determined by independently selecting 2 numbers with equal probability from 1 to the total number of characters in the character space by truly random means and adding the results.
- Calculate Public Keys by raising R to the power of your Private key, and applying P as the Modulus.((R^P)ModP)
- Raising the other party's Public to the power of your Private and applying P as the Modulus does not return equally distributed results.
The RadPad relies not on massive Primes common in PKC algorithms but in the equal probability of all outcomes of a given length. This is a fundamental difference to conventional methods but allows for far simpler calculations and future-proofing. Encryption and decryption of the message is a function of Public Keys which are a function of Private Keys. Every possible combination of Private Key selection is equally likely. Every possible Public Key is equally likely. A given Public Key has a probability of tracing back to the Private Key which generated it equal to 1/length of characters in the character space squared, but it is impossible to know if any given selection is correct without knowing a Private Key since all outcomes are equally likely. Once the correct distribution is achieved, every Shift possible will be equally likely. Finally, every possible encrypted character is equally likely and has no impact on any other character. Simply put, any message of a given length is equally likely to be any other message of the same length and it is impossible to know which is correct without the calculated secret shift.
This is what makes the RadPad so rad. If the theory behind this approach is true, no amount of computational power can make any improvement over a guess. The length of the keys is determined by the character space, not the time required to break down massive prime numbers. It is truly unbreakable, future-proof, and low-tech to the point that any calculator with a MOD function is enough. It would be easy to make tables of the number possibilities and carry a die with the appropriate number of sides to generate private keys and so on. Zero electronics at that point yet quantum proof. David and Goliath.
The following list can be used as to determine P, R. Many values for P have multiple values for R, only the lowest is listed here. 3, 2. 5, 2. 7, 3. 9, 2. 11, 2. 13, 6. 16, 5. 17, 10. 19, 10. 23, 10. 25, 2. 27, 2. 29, 10. 31, 17. 32, 5. 37, 5. 41, 6. 43, 28. 47, 10. 49, 10. 53, 26. 59, 10. 61, 10. 64, 5. 67, 12. 71, 62. 73, 5. 79, 29. 81, 11. 83, 50. 89, 30. 97, 10.
Rather than primes alone, it may be possible to use arbitrary numbers if the required equal distribution can be achieved. Primes and Primitive Roots guarantee this distribution so the RadPad currently limits P and R until distribution with arbitrary numbers can be likewise guaranteed. Several theories show hope for an answer.
It may be useful to use the same character space multiple times in order to find a convenient value for P. Any characters may be used in the character space so long as they do not repeat unequally.
The RadPad is the minimal protol to achieve the desired result and lends itself to a wide range of applications. It is itself (again, if we can ever make it work) perfectly secure and unbreakable but this is not automatically true of applications which utilize it. While the Public Keys and encrypted messages may be sent by any means desired, it is up to the application and/or the user to confirm the identity of the other party. Likewise, Parties may choose to exchange a message one character at a time preceeded by the exchange of a single Public Key in each direction or they may wish to first exchange a list of arbitrary length which is followed by the encrypted message. It is also possible to communicate with more than 2 parties. The RadPad is the pure core upon which applications are built, nothing more.