# Crypt-analysis methods for breaking or finding weakness in an encryption algorithm? [closed]

How cryptanalysts work on an algorithm related to diffusion/confusion factors in order to find a weaknesses in an algorithm, for example how cryptanalysts could find weakness on DES? is there methods or software for that?

Or if a person designs an symmetric encryption, how can he/she can test it from stand point of weaknesses and probability of obtaining information about main data?

For example after designing an encryption algorithm , he/she encrypts a text with that algorithm and now he/she has cipher-text, how can test it that it is enough disorganization?

• Maths, gotta be good at the maths. – RoraΖ May 6 '15 at 12:12

For cryptanalysis, the usual three-point method applies:

1. Write down the problem.
2. Think real hard.

And that's about all that can be said generically.

The methodology of a cryptanalyst is about the same as that of researchers in any other science. The core of the daily work of a cryptographer is to read, read, read all the papers. Accumulate knowledge and ideas. Then, when the cryptographer sees the design of some cryptographic algorithm, his subconscious mind may recognize the pattern, manifesting itself in the cryptographer's brain as something like: "mmh, this looks like the kind of structure that Schrupkovski was breaking in his article presented at NoWhereCrypt'93, except that this one is in bitslice mode with an extra FFT". Ultimately, Research is all about putting together ideas and concepts originating from many distinct sources.

Security of a cryptographic algorithm cannot be tested, let alone proven (though one can have some nice reduction proofs, which unfortunately cover only part of the problem, by definition). What can be demonstrated is insecurity: if you find an attack, then the algorithm is broken. To ensure that an algorithm is probably secure, let some cryptographers try to break it; lots of cryptographers for a lot of time. If none could break it, then the algorithm might be fine. This is the whole idea of the AES competition, for instance.

The difficult trick is to attract cryptographers. You have to do several things:

1. You must do your homework. The algorithm must be described completely, in a readable mathematical way (not as code in any language).

2. You should also explain why some generic classes of attacks don't apply to your design (e.g. differential cryptanalysis).

3. The algorithm must be interesting, which basically means that it must be more efficient than the existing alternatives. For symmetric encryption, this means that the algorithm must be faster than the AES, or as fast as the AES but with constant-time implementations, or amenable to extremely compact implementations, or some other similar advantage. Nobody will invest time trying to break an algorithm which would not get used anyway since it is too slow or too big.

4. Patents. Do not apply for a patent. Most cryptographers run away when they see a patent, because they don't fully grasp the consequences of working on patented algorithms (they are specialists on cryptography, not on patent law). Patenting a cryptographic algorithm is, in practice, an extremely good way to ensure that the algorithm will not receive external scrutiny and won't be used.

I take it that your question is:

How do people determine if a cryptosystem is weak?

Well there are two types of people who need to do this as you pointed out: the ones who made the system and those who want to break the system.

If the process is symmetric, then all we need is that the process is not linear. That is why AES won - it is long and extensive, and it is not linear at all (linear meaning it can't be mapped by matrices).

Every system can be broken somehow, and people need to determine how long that process takes. If the process is symmetric, then we know how to crack it - it just takes a while.

If computers get too fast though, then we need to switch to a new cryptosystem. That's why we left DES - we always new it would be fairly weak to fast computation and when faster computers came out - we had to switch.

So we tried to find a cryptosystem that took much longer to break.

The ones who make the cryptosystem have to know how to break it in every way possible too.

For cryptosystems like RSA and ECC, it might be fairly hard to know how to crack it. The security off of these are based off of what is called: NP-hard problems.

These are problems that are really tough to solve and computers don't do squat to help crack them.

Yes computers can factorize numbers faster than humans, but the algorithms of doing so are VERY slow.

There are many NP-hard problems out there though.

You can take any one of these and make a cryptosystem, and it will likely be secure! That's how they made ECC - they picked a random NP-hard problem, found out that all the computations were fast and easy and that was it!