SHOW:
|
|
- or go back to the newest paste.
| 1 | OUROBOROS : WATERFALL ( Cascading Key Encryption ) | |
| 2 | =================================================================================================== | |
| 3 | AUTHOR: THOTHEOLH | |
| 4 | ||
| 5 | INTRODUCTION: | |
| 6 | Keys are usually wrapped with the help of other keys with the purpose of secure transmission or for | |
| 7 | storage in mind. A wrapping key may not always be ideal especially in the field of keys at rest. | |
| 8 | If a resting key has to be wrapped for protection, the wrapping key must also be protected and this | |
| 9 | will result in a chain of keys that need to be protected by other keys. The ideal way of handling | |
| 10 | key protection is to have the key protect itself somehow. A person remembering his master key is one | |
| 11 | such method of protecting the key as the master key would usually be in the form of a master password | |
| 12 | which a security conscious person would remember and hopefully not fall into security pitfalls. | |
| 13 | ||
| 14 | OUROBOROS : WATERFALL is a somewhat abstract idea of an algorithm for a key to protect itself by the | |
| 15 | virtue of the key "consuming itself" to generate it's own encryption that will produce it's own | |
| 16 | ciphertext. | |
| 17 | ||
| 18 | OUROBOROS is the name of a concept of this algorithm and also a family of such algorithms that | |
| 19 | "consumes itself" like the Ouroboros serpent of legends from many different ancient civilisations. The | |
| 20 | Ouroboros world serpent has the ability to consume itself and yet renew itself (thus in a way self- | |
| 21 | creating and self-preserving) similar to the workings of this family of self-encrypting key encryption | |
| 22 | that uses itself as the material to secure itself. WATERFALL is the name assigned to this very | |
| 23 | particular algorithm since the style it uses looks similar to a cascading waterfall which would be | |
| 24 | explained in much details later on in this document. | |
| 25 | ||
| 26 | ||
| 27 | ||
| 28 | THREAT-MODEL: | |
| 29 | The goal of WATERFALL is to allow keys the ability to protect itself from attackers whom have gained a | |
| 30 | copy of it. | |
| 31 | ||
| 32 | ||
| 33 | ||
| 34 | SAMPLE SCENARIO: | |
| 35 | The ideal scenario for the use of WATERFALL to protect keys is a user credential database | |
| 36 | that contains multiple passwords of each individual. Whenever a credentials database gets snatched from | |
| 37 | a database server, their passwords would quickly be decoded and the secrecy of passwords stored in the | |
| 38 | credentials database would be leaked. One of the reasons why hashed passwords are easily cracked is due | |
| 39 | to the fact that weak hashes with some salt would be carelessly used to create password hashes (usually | |
| 40 | system defaults). One way to circumvent such threats is to use a Hardware Security Module (HSM) to | |
| 41 | escrow keys on the behalf of users but that would mean the administrators of the HSM would have to be | |
| 42 | trusted and a HSM is not some cheap computing tool everyone can afford. | |
| 43 | ||
| 44 | ||
| 45 | ||
| 46 | MECHANICS: | |
| 47 | WATERFALL algorithm uses the keys to "consume" itself by using the key as the key material to encrypt | |
| 48 | itself. The original key is divided into equal sized blocks of n length with the block size at least | |
| 49 | bigger than 2 bits. The algorithm sequence would proceed from the first block to the last block | |
| 50 | sequentially from the Most Significant Block (left side) to the Least Significant Block (right side). | |
| 51 | The targeted block for encryption would be encrypted with the remaining blocks. The arrangement for the | |
| 52 | remaining blocks as key material to encrypt the targeted block would be arranged from the Most | |
| 53 | Significant Block to the Least Significant Block in order with the exception of the target itself as | |
| 54 | the algorithm is trying to encrypt the targeted block. Every iteration would move the targeted block | |
| 55 | from the Most Significant Block to the Least Significant Block and every iteration's output called a | |
| 56 | 'Ciphered Key Text Block' would be merged according to their original target's significance position into a | |
| 57 | complete 'Ciphered Key Text'. The encryption algorithm is not fixed. One may use any encryption algorithm. | |
| 58 | ||
| 59 | Below is an ASCII diagram representation on the concept. | |
| 60 | ||
| 61 | 1.) ________________________________________________________________________________________ | |
| 62 | | | | |
| 63 | | Original Key | | |
| 64 | |_______________________________________________________________________________________| | |
| 65 | ||
| 66 | | | |
| 67 | | | |
| 68 | \|/ | |
| 69 | v | |
| 70 | ||
| 71 | 2.) _________________________________________________________________________________________ | |
| 72 | | | | | | | | | | |
| 73 | | Block #1 | Block #2 | Block #3 | Block #4 | Block #5 | Block #6 | Block #7 | | |
| 74 | |___________|___________|___________|____________|_____________|____________|____________| | |
| 75 | ||
| 76 | Blocks are broken into 7 equal sized blocks. | |
| 77 | ||
| 78 | | | |
| 79 | | | |
| 80 | \|/ | |
| 81 | v | |
| 82 | ||
| 83 | 3.) ____________ _____________________________________________________________________________ | |
| 84 | | | | | | | | | | | |
| 85 | | Block #1 | | Block #2 | Block #3 | Block #4 | Block #5 | Block #6 | Block #7 | | |
| 86 | |___________| |___________|___________|____________|_____________|____________|____________| | |
| 87 | Target for <------------------Encryption key for iteration 1 --------------------------> | |
| 88 | iteration #1. | |
| 89 | ||
| 90 | For iteration 1, the first block is taken as the target for encryption with the rest (block 2-7) | |
| 91 | that is used as the key for iteration 1. The 'Ciphered Key Text Block' for the first iteration, | |
| 92 | CKTB 1, would be generated from the encryption of the first iteration and set aside. | |
| 93 | ||
| 94 | | | |
| 95 | | | |
| 96 | \|/ | |
| 97 | v | |
| 98 | ||
| 99 | 4.) ____________ _____________________________________________________________________________ | |
| 100 | | | | | | | | | | | |
| 101 | | Block #2 | | Block #1 | Block #3 | Block #4 | Block #5 | Block #6 | Block #7 | | |
| 102 | |___________| |___________|___________|____________|_____________|____________|____________| | |
| 103 | Target for <------------------Encryption key for iteration 2 --------------------------> | |
| 104 | iteration #2. | |
| 105 | ||
| 106 | For iteration 2, the second block is taken as the target for encryption with the rest (block 1, | |
| 107 | 3-7) that is used as the key for iteration 2. The 'Ciphered Key Text Block' for the second | |
| 108 | iteration,CKTB 2, would be generated from the encryption of the second iteration and set aside. | |
| 109 | ||
| 110 | | | |
| 111 | | <Fast forward to last iteration> | |
| 112 | \|/ | |
| 113 | v | |
| 114 | ||
| 115 | 4.) ____________ _____________________________________________________________________________ | |
| 116 | | | | | | | | | | | |
| 117 | | Block #7 | | Block #1 | Block #2 | Block #3 | Block #4 | Block #5 | Block #6 | | |
| 118 | |___________| |___________|___________|____________|_____________|____________|____________| | |
| 119 | Target for <------------------Encryption key for iteration 7 --------------------------> | |
| 120 | iteration #7. | |
| 121 | ||
| 122 | For iteration 7, the seventh block is taken as the target for encryption with the rest (block 2-7) | |
| 123 | that is used as the key for iteration 7. The 'Ciphered Key Text Block' for the seventh | |
| 124 | iteration,CKTB 7, would be generated from the encryption of the seventh iteration and set aside. | |
| 125 | ||
| 126 | | | |
| 127 | | | |
| 128 | \|/ | |
| 129 | v | |
| 130 | ||
| 131 | 5.) _________________________________________________________________________________________ | |
| 132 | | | | | | | | | | |
| 133 | | CKTB #1 | CKTB #2 | CKTB #3 | CKTB #4 | CKTB #5 | CKTB #6 | CKTB #7 | | |
| 134 | |___________|___________|___________|____________|_____________|____________|____________| | |
| 135 | <---------------------------Completed Ciphered Key Text----------------------------------> | |
| 136 | ||
| 137 | The CKTBs are merged together according to their original unciphered text's significant positions. | |
| 138 | ||
| 139 | | | |
| 140 | | | |
| 141 | \|/ | |
| 142 | v | |
| 143 | ||
| 144 | 6.) To decrypt, the original password / key is presented, split into equal pieces and decrypted in the | |
| 145 | reverse process. The encryption algorithm used for every iteration is up to the choice of the user. | |
| 146 | The generated Ciphered Key Text would be significantly larger than it's original key it protects. | |
| 147 | ||
| 148 | ||
| 149 | ||
| 150 | NOTES: | |
| 151 | The use of WATERFALL to protect passwords and keys that only authorized parties have conscious access to | |
| 152 | is required. Attempting to use WATERFALL as a key wrapping device to send keys across a channel would | |
| 153 | require the sender and receiver to know the original password / key. Leaking any part of the password / | |
| 154 | key, as with other security protocol, would reduce the security of the algorithm. | |
| 155 | ||
| 156 | ||
| 157 | ||
| 158 | INTELLECTUAL PROPERTY: | |
| 159 | This algorithm described here is free to the public to implement, distribute and modify at their own will | |
| 160 | without legal restrains of any sort in regards to patents and intellectual property, however, the only | |
| 161 | contract is to not claim the original design falsefully and / or use it to restrict others from freely | |
| 162 | implementing, modifying or distributing this algorithm. |