This is an image that has become kind of a cultural icon in the cryptography and InfoSec community. I’m speaking about “the penguin”, a picture of the Tux Linux mascot encrypted with a block cipher in ECB mode that still shows clearly the outline of the original.
You have a cipher, that with a key will encrypt 16 bytes of data. And you have some data, that is more than 16 bytes. So you have a problem. Well, ECB is the wrong solution to that problem: you just encrypt each 16-bytes block separately.
Why is it wrong? Because this way blocks that were equal before encryption will remain equal also after! And this will lead to all kinds of unwanted consequences.
One good example is the recent Adobe passwords crossword game but the best visualization of the concept is him, the penguin!
It has even been proposed as a Wikipedia featured picture.
Nothing more is known about the original. I wrote an email to the author, and I will update the blog post if he replies.
My take at it
The picture is amazing, but rather low quality even for screen, let alone for printing. So, I decided to generate my own.
First thing needed was an image format where the pixels were represented sequentially as plain bytes, without any compression, and possibly with a simple header. The perfect candidate turned out to be the PPM binary format, part of the Netpbm spec. (It is just basically a ASCII header and then a sequence of 3-bytes RGB representations of the pixels.)
Here is the process:
1 2 3 4 5 6 7 8
And the result! (Prints on sale, it makes for a great nerdy office decoration, much like “Crypto Safety Procedures”)
Bonus: pop art