I would like to study a modern symmetric cipher (I have never studied a cipher before) and I was wondering which would be the best cipher for studying purposes of the following: AES (Rijndael), Blowfish, Twofish, Threefish or Serpent. Basically I am asking which of those ciphers is the most simple to study.


closed as primarily opinion-based by D.W., e-sushi, CodesInChaos, yyyyyyy, DrLecter Jun 23 '15 at 7:20

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    $\begingroup$ Why is simplicity the only criteria? Also, how did you come up with the 5 listed ciphers? $\endgroup$ – mikeazo Jun 22 '15 at 12:34
  • $\begingroup$ Well because I have never studied a cipher before, I would prefer to not start with the most complex one ;) I just picked a few currently unbroken ciphers that are popular according to Wikipedia, IIRC Blowfish is used by OpenSSH and Twofish and Threefish are its successors. I picked AES, because well, it's extremely widely used and Serpent because it was also a candidate in the AES competition. I would like to strike a balance between popularity/practicality (instead of some obscure, but easy to study cipher that nobody uses) and simplicity. $\endgroup$ – Superpelican Jun 22 '15 at 12:49
  • 1
    $\begingroup$ What is your background? Programming, math, etc? $\endgroup$ – mikeazo Jun 22 '15 at 12:58
  • $\begingroup$ I'm still in secondary school (dutch grammar school), I have been taught basic differential and integral calculus and also some basic probability theory/statistics. I am also a (self-taught) programmer (projects: bitbucket.org/JurreVW). $\endgroup$ – Superpelican Jun 22 '15 at 13:10
  • $\begingroup$ Study, for what purposes? What are your study goals? What do you want to learn? This will greatly affect the answer. (Also, you seem to have an implicit premise that the best way to learn whatever it is you want to learn is by devoting your time to studying a single modern symmetric cipher. I think there's a good chance that premise is not accurate.) $\endgroup$ – D.W. Jun 22 '15 at 16:49

First, it is important to learn the basics behind all symmetric ciphers. You can get this from Handbook of Applied Cryptography, see Chapter 7, especially 7.1, 7.2, 7.3. If you understand those three sections, you will be off on the right foot.

From there, I would suggest just diving right into AES. It isn't that terribly difficult (yes, there are easier ciphers, but the "market penetration" of AES is so great that it is worth the added effort). There should be some good videos online, plus look at this question, the comments, and answer.

From there, I recommend the book "The Design of Rijndael". It was written by the inventors of Rijndael and has some very useful information on why they designed pieces the way they did.

Finally, I recommend using this site as much as possible to help clarify things. If there is something you don't understand as you are learning all this, search on here to see if it has already been answered. Then, if not, ask a specific question on this site.

  • $\begingroup$ Would you recommend me to also read to the rest of the handbook up to chapter 7 or just chapter 7? $\endgroup$ – Superpelican Jun 22 '15 at 19:18
  • $\begingroup$ @superpelican you can if you have the time. It doesn't cover AES though. $\endgroup$ – mikeazo Jun 22 '15 at 21:58
  • $\begingroup$ I will soon start reading the Handbook (I have been busy with some other things), but I have also been looking at some other books. In particular Cryptography: Theory and Practice by Douglas Stinson, which J.D. also recommended in his answer below. This book seems to get a lot of positive reviews and looking at the table of contents on Amazon it looks like a very nice book, that covers a lot of things that I think are useful for my research. So what do you think of this book? Would it be a good addition to reading the Handbook? $\endgroup$ – Superpelican Jul 15 '15 at 12:19
  • $\begingroup$ @Superpelican never looked at it, so can't really say. Amazon reviews tend to be pretty accurate though. $\endgroup$ – mikeazo Jul 15 '15 at 12:21
  • $\begingroup$ Ok thanks a lot for your fast reply :) It does seem to get very positive Amazon reviews, Bruce Schneier also suggests it in his A Self-Study Course paper and the cacr.uwaterloo.ca/~dstinson/CTAP2/CTAP2.html also seems to be using it. So I thought it would be a good book. $\endgroup$ – Superpelican Jul 15 '15 at 12:29

Of those you listed, AES is the best to study. Not only is it the standard that is used everywhere, it has a huge literature of people explaining it and analyzing it, far larger than any of the others on your list. Also, compared to the others on your list it is easier to understand why AES strongly resists certain major classes of attack (like linear and differential cryptanalysis), and is less resistant to other major attacks (like Biclique cryptanalysis and related key cryptanalysis).

That brings up something else - it is pointless to study 'modern' ciphers without also studying 'modern' cryptanalysis. You might be able to memorize the details of the cipher's operation (AES is not the simplest in that sense - Threefish is much easier to memorize), but without understanding the attacks it was designed to resist you won't ever actually understand the cipher. Studying AES in conjunction with cryptanalysis generally will be likely be the most fruitful course of study.

That said, if studying one strong cipher is too steep of a climb for you, you could also try the gentler slope of many simple weak ciphers with Schneier's A Self-Study Course.


You say

I have never studied a cipher before

In that case I would recommend the following:

  1. Sign up for the Stanford online class on Cryptography on Coursera. This is a great introduction to Cryptography and this will conver block ciphers.

  2. Get a library card with your local public library and ask them to get some textbooks on Cryptography for you. There are a bunch out there and what I find helpful you might not fnd helpful. Then pick one text book that you will work through on your own and use the other books for reference. It is easy to get overwhelmed if you have to omany books around you. In particular I like the book Cryptography: Theory and Practice by Stinson. This has a nice chapter on block ciphers. If you are at a University, your university library might already have a bunch os books on the shelfs.

(There are many notes and books available free online, but I personally like to have a physical book to work from if I need to learn a completely new topic on my own.)

I wouldn't worry too much about studying a specific cipher in the beginning. If you get a good understanding of (outdated) DES from an older textbook, that will give you an idea on how things work with block ciphers. This will then allow you to study more advanced ciphers in detail. I don't think it is a good idea to just jump in tryign to understand AES without having any background and therefore I think it is a good idea to first acquire some of that background.


As well as the other excellent suggestions, you might want to try your hand at developing your own simple cipher. Use the skeleton of a Feistel cipher to develop a model cipher. You will need to pick a number of rounds, say 8. Think about a key expansion method to turn your single key into 8 round keys, and also an F function to mix things up. Think about both permutation and substitution in your F function. One simple thing about the Feistel structure is that the F function does not have to be reversible.

That will give you a look at a cipher from the inside. Obviously your cipher won't be secure -- not with only 8 rounds and an amateur design, but it will give you a working model that will be good enough to keep things hidden from your sister (unless she works for the NSA).


Not the answer you're looking for? Browse other questions tagged or ask your own question.