Simplify and speed up detection algorithm #40
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proof of equivalence:
https://gist.github.com/marcan/bbbc229f27ad4de0a43a2df175d5c8c4
The above code tests all possible residues for all primes in the original implementation against the new one. The only discrepancies are for the class of moduli with small prime factors (residue=0). These would be previously reported as not vulnerable (although they are obviously trivially factorizable and completely broken), while the new code will report them as vulnerable if they have a small prime factor not present in the new test list but also have the residues expected of an Infineon-generated modulus. This is obviously a good thing, as such keys are even more broken and trivially factorizable.
Passes unit tests.