WHISPERs A practical approach to OTP encryption Dipl. Eng. Billian Marinov Owner, EB”BARIN” 30.03.2015 We will skip the historical lesson about OTP, it’s good and bad sides – everyone can look on the web and learn the basics of OTP in 15 minutes. Presented in this document is an idea. It was born from the conviction, that everything in cryptography has become too complicated and out of control for the basic user, that wants his data secure. Traps in algorithms, massive cryptanalytic agencies, weaknesses in encryption devices, backdoors and intelligent systems, pretending to be legit and stealing all your data. And among these hundreds of algorithms and protocols you can find only one, which has no math behind it – the Vernam cipher. Despite all its negative aspects, if implemented with its three rules, remains the only one forever secure. Let’s pretend, that we have an error free communication channel between Alice and Bob. Any errors will break this algorithm. Eve, the eavesdropper, is able to copy all data exchanged between Alice and Bob. Let’s pretend both Alice and Bob have the ability to generate very good quality random key material. There goes WHISPER’s: Prequisite: Alice generates a big library of true randomness and she shares it with Bob before any communication, securely. In our case it’s a twin pair of 4GB SD cards. They have an error free clear channel. LIB(x:x) is the value of the random 8 bit word in the library at specific address x. Example: LIB(4:2) – second byte at address 4 (starting position in the lib - bit 4*32=128). www.bureaubarin.eu * office@bureaubarin.eu * +359 884706189 Bob wants to send Alice some sensitive information. 1) Bob uses his TRNG to generate a 32bit KEY. 2) Bob XOR’s the first 8 bits of the KEY with the first 8 bits of the library LIB, using the value extracted from address 0 to encrypt his key – KEY:0 XOR LIB(0:0) = XKEY1 3) Bob XOR’s this KEY with his DATA, encrypting the data – KEY:0 XOR DATA1 = XDATA1 4) Bob send to Alice XKEY1, then XDATA1. 5) Alice receives XKEY1 and uses the first 8 bits of her library to decrypt the round key – XKEY1 XOR LIB(0:0) = KEY:0 6) Alice receives XDATA and uses the retrieved KEY to decrypt it to DATA. XDATA1 XOR KEY:0 = DATA1 7) Alice stores the KEY:0 value in the libadd1 variable. 8) Bob XOR’s the next 8 bits from his key with the next 8 bits of the library LIB, using the value extracted from address 0 to encrypt his key – KEY:1 XOR LIB(0:1) = XKEY2 9) Bob XOR’s the second byte from the KEY with his next DATA byte, encrypting the data – KEY:1 XOR DATA2 = XDATA2 10) Bob send to Alice XKEY2, then XDATA2. 11) Alice decrypts the second byte the same way and stores the extracted KEY:1 in a second variable libadd2. After going thru 4 such loops and using up the 32 bits fetched from the library and his key, Bob generates a new 32 bit key for the next 4 bytes of data. Now Alice has 4 variables libadd1 thru libadd4. She combines them to get the full 32 bit KEY that Bob generated, using it as 32 bit library address point. 32 bits can address the full 4GB space and because the generated KEY(x:x) values are properly random and will be used to address and fetch values from a library with properly random bytes, if the stream is error free, it will be totally secure. She jumps to that address and gets the new LIB(1:x) value for the next 4 rounds of comms. This is one full communication round. Key exchange is protected with OTP, with the KEY itself providing the security. The library data, being random, serves only as a key mask, but a secure one. Synchronization is provided by the KEY itself, using it to address the library. All Eve will get is randomness. The key changes every 32 bits. Man in the middle attack is worthless, if Eve XOR’s the two bytes in the stream with each other, all she’ll get is DATA XOR LIB, which is random too. If the library is regenerated and updated at small enough intervals, security will be maintained. www.bureaubarin.eu * office@bureaubarin.eu * +359 884706189 While this method sounds secure to us, we are not mathematicians. I hope this algorithm gets checked by the community and we hope we receive feedback. WHISPERs TRNG prototype – the test bed for the WHISPERs algorithm. www.bureaubarin.eu * office@bureaubarin.eu * +359 884706189
© Copyright 2024