I am developing a new key schedule, and there is this article (Enhanced Key Expansion for AES-256 by Using Even-Odd Method) where the authors also propose a new algorithm and one of the objectives is to eliminate "weak keys" of the AES. The authors call weak keys those in which all bits are 1 or 0, or those in which the first half of the bits is 1 and the second is 0 (or vice versa). When the key to be expanded shows patterns (as in the weak keys) it is still possible to see these patterns in the first subkeys.
They consider these keys weak, because when they are expanded, you can see lots of patterns in the round keys, these patterns come in the form of repetitions of bit sequences. I wanted to test my algorithm, so I wrote a script to find repetitions in all the round keys and count them, this is an example of the script execution:
Block Size: 4 Pattern: 1110 repeated 24 times Pattern: 1101 repeated 9 times Pattern: 0000 repeated 3 times Pattern: 0101 repeated 1 times Pattern: 0110 repeated 0 times
I am having some trouble in grouping results, this had as entry a single bit sequence to be expanded, but if I want reliable results, I should use as sample thousands of keys with my algorithm and then see the results.
Suppose I have a second entry using the same key schedule (the one I want to test) and the result is:
Block Size: 4 Pattern: 1100 repeated 19 times Pattern: 1001 repeated 15 times Pattern: 0001 repeated 3 times Pattern: 0000 repeated 1 times Pattern: 0111 repeated 0 times
How do you think I should group these two results? taking an average of the patterns that had more repetitions? In this case it would be 21.5. Adding the repetitions for a result of 43? None of these seem right to me, what do you think?