KGE is an encryption system i'm working on which attempts to use references from AES and other stuff to encrypt data. It uses a graphing system to create multiple points and dummy points on a 3D graph, which the computer analyzes and decrypts. It uses two IVs and two passwords to work (because two is better than one).
Have been working on finishing this sooner than later, organized and got in coroutine for faster speed. Whereas there was a noticeable lag before, the entire process happens within less than a second on a computer with a
Overall, KGE has been created using Unity Bolt Visual scripting. I am going to change it to Python but i'll be using Bolt for now as it really helps with organizing things and even acts kind of like psuedocode.
For now, the UI consists of 6 main elements:
IV I (The first randomly generated string of ASCII characters)
IV II (The second randomly generated string of ASCII characters)
Password I (The password a user sets)
Password II (The password a user, server or the hardware itself sets)
Text to be encrypted (The string a user sets, can be set in html-like format to support documents)
In this example, I set Password I, II and the Text to be Encrypted
Upon pressing Encrypt, the first thing that comes to note is the fact that both IVs are generated.
Unreadable, right? This is the point of these IVs in particular and the reason they look like this will be explained later in this update. For now, lets try to understand what happens behind the scene.
Now you may be thinking "Woah, that's a lot to unravel (or for some of you a little)!" However upon further inspection the system is both simple yet effective.
For starters, the text placed into the textboxes are turned into the variable. However, the way this text is taken can easily be changed as you see fit. Also ignore the string box, that is for me to use by the next update.
Next up, IV I and II is generated. IV I and II are very similar in generation so there is no need to post IV II. Essentially the program takes a file I created with each newline having a character from ASCII I want to use. Then, that is turned into a list in Unity. A random character is taken 40 times and upon completion the resulting string is turned into a variable.
A file with each newline having an ASCII character is used to create a list and turned into a list, which is saved as a variable.
Now this system is saved within a "Super Unit" (think of it like a container for code which allows you to put a chunk of it into one box instead of being strung out on the main dashboard). Let's investigate this further.
For starters, the User String length is divided by four. If not enough characters exist for four, the null sign is added to a pairing until there is enough for four. All characters are then put into a list.
Next, the entire thing goes through a loop. The loop increases by four (and for those unaware, lists start at 0 in programming) like 0,3,7,11 and during each jump the number, +1, +2 and +3 of the list number is used as what number item to check in the character list. That is taken and added to a list.
*Simply showing as explained above*
Another Super Unit is used now. However, each character is turned into the ASCII value representation of itself and turned into a new list.
Now that we have left both of those Super Units, we are looking at the toggle value option. Essentially we are trying to reorder and organize the list of ASCII characters in a way that can be undone later.
Within these two, the variables switch between organizing the ASCII character values to groups of four and to 3,1,2,4 and 4,3,12. This will be expanded on later for more organizing patterns. However, this system will next add the values of IV and Password together before adding, subtracting, multiplying and dividing to each value in the list to obfuscate it.
Now, this has to be done 20 times with being able to undo it with the proper variables. I also want to make the system more advanced later by obfuscating the system further at this stage. I do not feel it is enough yet.
Turn Results From All Rounds Into List Of ASCII IDs VIA Password/IV Based Polynomial Equation (v1.2)
Put All Points Into Trios (X,Y,Z) And Order Using Artificial Sequencing Order (1, 2, 3 is now 11, 24, 50) (v1.2)
Use Hyperboloids Generated Using Both IVs As Compression References (v1.2)
Add Dummy Points Using IVs (v1.2)
For reference, v1.2 is when most of this really is done! V 1.0 and 1.1 are viability tests!
Decryption
Generate Math Module
Remove Dummy Points Using IVs In Equation
Input IVs To Hyperboloid Equation And Calculate Original Points
Get Artificial Sequencing Order And Organize Points
Turn IVs and Passwords to Polynomial Equation To ASCII IDs and Turn Variables To Characters
Use IVs And Password to Unobfuscate
Switch Pair Placement
Concat Pairs To Single String
Repeat 6-8 20 times
Use IVs and Passwords to Unobfuscate
Generate Byte Substitution Chart VIA Password+IVs
Get String From 10 and Decrypt
Equations Used
To be listed later
There are many things that KGE does which makes it hard for even quantum computers to decrypt the password without the proper information. Computers are able to decrypt data because what they commonly do is run over every possible combination. Quantum computers can go over more combinations at an extremely fast pace compared to standard computers. However, KGE creates so many variables (IV, IVII, Password, Password II, Math Module, Dummy Points, Etc.) the amount of possibilities possible not only make it super hard for a computer to churn out all of the pieces to make sense together but there are multiple possibilities with one possibility, making the Quantum computer less capable of telling if a certain password out of a range is correct.
Biggest Problem:
The Math Module System still isn't completely solid, as in While 1+1 = E, E-1 might not be 1. I want to change the Math Module Equation to switch the way it works so that it makes more sense at the theoretical level.
This is an overview of the layout in which KGE works.
Get User String (Round 0)
Split String Into Pairs
If Not Enough Then Add Specially Made Character Which Is Deleted During Decryption
Use Byte Substitution
Switch User Strings To IDs and Find Replacement Term For Each Key
To Find Replacements For Each Key, Use Cipher w=x^n+(y*n^2)/Y, where w is the first character to the new key, x is the first old character key, y is the second old character key and n is the second new character key, obtained from n=(round*y/x)^2, where the round is 100 at 0 and 1 at Round One, 2 at Round 2, etc. N is then divided by 220 (Cipher Only Allows 33-126, 128-255)
This Equation Will Likely Be Changed
Always Round To Zero
Switch Pair Placement
Get IV I if Round is 0 or Even and IV II if Round Is Odd
Split To Pairs
Change Order By First Pair To Last, Last Pair To Third and Fourth Pair To 6th, Then Flip All Characters For Next Loop
Turn To IDs and repeat 256*x until the ID is reached, always round
Obfuscate (Start Of Round 1-20)
Get First 5 ID Pairings, for each pair, add the pair second to it, subtract the pair third to it, divide the pair fourth to it and multiply the pair fifth/password pieces relative to it. Treat as if string loops twice (makes more sense in example). Reference by IDs, not actual text.
Get Result From Obfuscation And Split
Always split into threes and use special character when needed, Just Reference The Example
Switch Pair Placement
Get IV I if Round is 0 or Even and IV II if Round Is Odd
Split To Pairs
Change Order By First Pair To Last, Last Pair To Third and Fourth Pair To 6th, Then Flip All Characters For Next Loop
Turn To IDs and repeat 256*x until the ID is reached, always round
Obfuscate
Get ID Pairings, for each pair, add the pair second to it, subtract the pair third to it, divide the pair fourth to it and multiply the pair fifth to it. Treat as if string loops twice (makes more sense in example). Reference by IDs, not actual text.
Repeat Steps 2 then 6 - 8 20 Times (End Of Round 1-20)
Turn End Result Into List of IDs In List (Start Of Round 21)
Always in trios, if number is missing y/z value, use 0 and 0.
Pair All Strings (Threes) And Graph All Points
Find All Possible Paths Between All Points Given, Adding An Artificial Range
Use First IV character at Round 20 as x asymptope, use First IV II character at Round 20 as y asymptope, use Last IV I Character at Round 20 as Domain Minimum and Last IV II Character at Round 20 As Range Minimum. Remove Domain and Range if needed.
Get Intersection Points and Reference Degree Of “Father” Line Within Key
Cipher All Reference Points Using IV I and II as well as Password I and II
Add Dummy Points Using Parabolic Area And Cone Area Equation.
Example (Not Made To Fit Math IRL, Visual Example):
IV I and IV II
mRxL6X3Rc2xWO1BNd3sY
ihcqh4LMCWg0wDtPm05F
Password I and II
Go Mets, Oh Yeah
Get A Home Run, Baby
“Sword Art Online”
Sw or d_ Ar t_ On li ne
93
94
95
96
97
98
99
100
93
xx
xx
xx
xx
xx
xx
xx
xx
94
xx
xx
xx
xx
xx
xx
xx
xx
95
xx
xx
xx
xx
xx
xx
xx
4m
96
xx
xx
xx
xx
xx
xx
xx
xx
97
xx
xx
xx
xx
xx
xx
xx
xx
98
xx
xx
xx
xx
xx
xx
xx
xx
99
xx
xx
xx
xx
xx
xx
xx
xx
100
xx
xx
xx
xx
xx
xx
xx
xx
w=x^n+(y*n^2)/Y, n=(round*y/x)^2
X = 100
Y = 95
Round = 100
N = (100*95/100)^2
= 9025/220
=41
N=41
W=100^41+(95*41^2)/95
=15
(Create Better Equation, Do by 256 for special equation?)
KGE (Or Kinda Good Encryption) is an experimental encryption system designed to help with encrypting against Quantum Computer and Computer Farms. To understand how this all works, let's say you're sending a message to your friends Dave and John.
You, Dave and John are absolutely cracked at Apex Legends but they continuously get 1k less damage to you so you decide to tell them to switch to a new legend before a tournament begins.
If you use a Cipher such as AES, the data is properly obfuscated using a Password and IV and is sent to Dave and John, who can use a password and IV to decipher the message you sent, which explains that a Revenant, Pathfinder and Ash team (or The Metal Men) is superior due to Dave's ability to take good sniper shots but needing to change position every minute or so to reach higher ground and John's ability to hunt then push teams really hard for short periods of time.
However, your nemesis Matthew wants to find out your secret plan so that he may sabotage you in a long Twitter rant saying that those three legends are broken and should be banned on competitions. He somehow intercepts the message you sent and gets the ciphertext as well as the IV (which is usually not bothered with being too protected). He plugs it into his quantum computer and starts churning numbers, needing the password to decrypt the message.
Does the quantum computer send a qubit to the server, representing every possible password?
No, the internet can't send qubits (yet) and even then, developers should be smarter than to allow qubits for a login system.
Does the quantum computer compile a huge list of possible passwords and allow you to press a collapse to correct option?
Not that simple my friend.
Instead, what the password does is allow for more answers to be tested at a faster pace. It uses algorithms such as Shor's or Grover's Equation to basically increase the possibility of an answer at either an exponential or quadratic rise. if a standard computer took 10 milliseconds to try a password and there were 16 characters with One Trillion Possibilities, it would take at least 3,168,876 years to try every possible password, which is longer than Matthew's lifespan. However, a Quantum Computer allows this to be done in much less time, taking what may be a few days compared to the alternative. This gives Matthew the power to try every single possible password in just a matter of days.
What KGE attempts to do is increase in the number of possible answers and combinations to the point that attempting to use any sort of decryption system seems pointless.
In extremely bare terms (which are expanded on the Encryption Steps Post), an IV and IV II is randomly generated, while two passwords are made from the user. The result is turned into a group of points, with details from the IV being used to create several points and ranges on a 3D graph. These points then are added into a third IV, which requires the first and second IV and the first and second password to use. This is used to tell the decryption process which points to look at and in which order. What makes this better is the fact that this does snot use conventional math. As an example, while 1+1 may be 2, the system may decide that 1+1=@, which is better explained within the next log.
This adds in many more variables not present before and even if you were to use a Quantum Computer to attempt to find the password, there are many more things that you must account for now such as how the basic math system works and what points on the graph is real/fake. Also due to the high placement of numbers and special characters there are many more combinations compared to a regular system.
Now, when Matthew decides to attempt a decryption using the Quantum Computer, not only does he have to go through what is a much higher number of possible combinations, he also has to get all possible math modules following the basic laws of mathematics and go through...