In my free time, I write an algorithm for fun (and it may be the best hobby I had so far).
Currently, the output this algorithm produces is indistinguishable. I ran multiple analysis process and asked two mathematicians to double check that part (no definite answer but pretty good so far).
But the inherent problem is that the algorithm takes two shared secrets that we obtains via two DH with 4096 bit.
If it is very solid for a high number of possibilities, I crafted a case where the two shared secrets are below 10. And.. it is weak. No matter if we pass that in a kdf. We can deduce it anyway (public code).
Since the rest of the algorithm depends on those two values, an attacker can access all the information by following the algorithm flow.
Question:
How could I spice it up so that even low values are as hard as a better pair?
Constraints:
no public key infrastructure
once we have the two shared secrets, we can only send one packet to the other party, and it has to be enough.(Part of the fun)
the message inside is pseudo random
Edit: I added random values that defeats weak pair so that you don't know when to stop. but it breaks one of my constraints: now, I need 2 exchanges per side. So, for now, I will submit my algo to my friends again and see what comes out.