Tuesday, September 22, 2009

A Stick Figure Guide to the Advanced Encryption Standard (AES)

(A play in 4 acts. Please feel free to exit along with the stage character that best represents you. Take intermissions as you see fit. Click on the stage if you have a hard time seeing it. If you get bored, you can jump to the code. Most importantly, enjoy the show!)

Act 1: Once Upon a Time...

introsadaes act 1 scene 03 cinderellaaes act 1 scene 04 startedaes act 1 scene 05 judgeaes act 1 scene 06 nbs decreeaes act 1 scene 07 luciferaes act 1 scene 08 anoint desaes act 1 scene 09 des ruledaes act 1 scene 10 des defeatedaes act 1 scene 11 triple desaes act 1 scene 12 nist decreeaes act 1 scene 13 ralliedaes act 1 scene 14 rijndaelaes act 1 scene 15 voteaes act 1 scene 16 wonaes act 1 scene 17 intelaes act 1 scene 18 crypto question

Act 2: Crypto Basics

aes act 2 scene 01 three big ideasaes act 2 scene 02 confusionaes act 2 scene 03 diffusionaes act 2 scene 04 key secrecyaes act 2 scene 05 aes details question

Act 3: Details

aes act 3 scene 01 sign thisaes act 3 scene 02 agreementaes act 3 scene 03 state matrixaes act 3 scene 04 initial roundaes act 3 scene 05 xor tributeaes act 3 scene 06 key expansion part 1aes act 3 scene 07 key expansion part 2aaes act 3 scene 08 key expansion part 2baes act 3 scene 09 key expansion part 3aes act 3 scene 10 intermediate round startaes act 3 scene 11 substitute bytesaes act 3 scene 12 shift rowsaes act 3 scene 13 mix columnsaes act 3 scene 14 add round keyaes act 3 scene 15 final roundaes act 3 scene 16 more rounds the merrieraes act 3 scene 17 tradeoffsaes act 3 scene 18 security marginaes act 3 scene 19 in picturesaes act 3 scene 20 decryptingaes act 3 scene 21 modesaes act 3 scene 22 questions what really happensaes act 3 scene 23 math

Act 4: Math!

aes act 4 scene 01 algebra classaes act 4 scene 02 reviewing the basicsaes act 4 scene 03 algebra coefficientsaes act 4 scene 04 remember multiplication growthaes act 4 scene 05 cant go biggeraes act 4 scene 06 clock mathaes act 4 scene 07 clock math polynomialsaes act 4 scene 08 divide by mxaes act 4 scene 09 logarithmsaes act 4 scene 10 using logarithmsaes act 4 scene 11 polynomial as byteaes act 4 scene 12 byte operationsaes act 4 scene 13 byte inversesaes act 4 scene 14 sbox mathaes act 4 scene 15 round constantsaes act 4 scene 16 mix columns mathaes act 4 scene 17 crib sheetaes act 4 scene 18 got it nowaes act 4 scene 19 so much moreaes act 4 scene 20 gotta goaes act 4 scene 21 the end

Epilogue

I created a heavily-commented AES/Rijndael implementation to go along with this post and put it on GitHub. In keeping with the Foot-Shooting Prevention Agreement, it shouldn't be used for production code, but it should be helpful in seeing exactly where all the numbers came from in this play. Several resources were useful in creating this:

Please leave a comment if you notice something that can be better explained.

Update #1: Several scenes were updated to fix some errors mentioned in the comments.
Update #2: By request, I've created a slide show presentation of this play in both PowerPoint and PDF formats. I've licensed them under the Creative Commons Attribution License so that you can use them as you see fit. If you're teaching a class, consider giving extra credit to any student giving a worthy interpretive dance rendition in accordance with the Foot-Shooting Prevention Agreement.