### How The Zodiac enciphered the Zodiac 408 cipher

I was looking through the Zodiac Killer ciphers the other day and woke in the middle of the night wondering how The Zodiac actually enciphered the first message (the one that was decoded).

The message consists of 408 symbols; there are 54 different symbols used for the alphabet. So there are multiple symbols for each letter of the alphabet. The Zodiac used a homophonic cipher to disguise the most common letters of the alphabet by using multiple symbols for common letters. For example, for the letter E The Zodiac used seven different symbols.

I started to wonder how when The Zodiac was writing out the message he picked which symbol to use. And it occurred to me that he might have used a really simple system: cycling through the symbols for each letter in the same order.

A quick look at the cipher showed that it was likely that the simple scheme was used. Here I looked at the letter E and the letter N and discovered that a simple pattern was used for each.

Using a small program I wrote I identified the sequence used by The Zodiac for all the repeated letters (note that I've used lowercase letters for the reversed or upside-down capitals used by The Zodiac):
PlaintextCipher symbols in order
EZ p W + ◉ N E
TH I L
AG S
I△ P U k
OX * T d
NO ∧ D ⦶
SF K ▣
HM ⦵
Rt r \
Df z
L B
FJ Q
(In the above table * is The Zodiac's character that looks like pi with curved legs). The Zodiac mostly kept to this scheme with occasional errors (either deliberate or unintentional).

This leads to a possible way to attack the unsolved Zodiac 340 cipher. If The Zodiac used a similar scheme where he repeated the same sequence over and again for each letter it should be possible to find those sequences and reduce the decryption to something close to a classic substitution cipher.

An attack would consist of the following:

1. Split the Zodiac 340 cipher on each of the symbols to obtain a list of lists of sequences

2. Remove any duplicated characters from the lists (since we can assume that there will be none if the characters are being used in order as in the Zodiac 408)

3. Generate all combinations of the first list and look for the same subsequence occurring in the other lists.

Looking at the Zodiac 340 it looks like it splits on average into deduplicated strings of between 20 and 30 symbols. If we look for subsequences of length say 6 then each search would require 38,760 and 593,775 combinations to be generated. For 63 characters that sets an upper bound of roughly 37m combinations. That leads me to think that this approach could be used.

Dave O said…
Nice post! If you are interested, here is some other info about homophone sequences in the Zodiac ciphers:

http://wiki.zodiac-ciphers.dreamhosters.com/wiki/Homophone_sequences

I tested for the presence of quadrant-based layouts in the 340 by measuring the quality of homophone sequences in millions of transformed versions of the 340:

I recommend the paper "An Algorithmic Solution of Sequential Homophonic Ciphers" by John C King for a description of an efficient attack that exploits sequential homophones to reduce homophonic substitution ciphers to simple substitution ciphers.

Finally, I have a brute-force homophone search in the CryptoScope: http://oranchak.com/zodiac/webtoy/stats.html

Keep up the good work!
Ah. Fascinating. I guess I stumbled across a technique others had also found. No real surprise there.

Is there a non-\$ version of the actual paper available?
Dave O said…
Yes - I will contact you via email.
Nick Pelling said…
Here's some more on this Z408 / Z340 homophone stuff you might find interesting...
TravisD. said…
Hi,I've actually been researching and studying the Zodiac for not too long now and when I saw the Halloween card and envolope,it triggered a little something in My head.I believe the Zodiac changed His cipher to trip people up.I believe He is using sequences of different languge alphabets from different times and countries.

I started doing more research on Roman,Greek,Phoenician,Babylos...Ect.And all the symbols are there,including the one from the Card,except I believe it to be two symbols put into one.I just see too many similarities between them all and I'm not dismissing it.I thought I would just speak what I had to say,thank You.Travis.
TravisD. said…
Believing to be the most intelligent killer of our time and so tricky to throw the authorities and public,even the FBI off.Was He really writing this last cipher in His own code?I've studied and observed ancient and current languges of Roman,Greek,Phoenician,Etrusian and Safaite.Many writing at that time basically had some same symbols that matched each language.We know Zodiac was more intelligent than anyone took Him for.What if He wrot His last cipher out of multple symbols from these languges?Google sear "Zodiac Alphebet" and belo on the page You'll see images,check them out.It's quite surprising and curious,but it's just a theory.
TravisD. said…
Like I had mentioned on another forum,I was curious if The Zodiac,when He was always talking about taking His slaves to paradice "paradise",could He have been talking about Paradise,CA,which is only about 144 miles NE of Vallejo.Could the Zodiac live or have lived there?
Dave O said…
The ciphers wiki has moved, so here are the corrected links from my previous comments:

http://zodiackillerciphers.com/wiki/index.php?title=Homophone_sequences

http://zodiackillerciphers.com/wiki/index.php?title=CryptoScope_Help#Discovering_sequential_homophones
olejeek said…
I think some of the Zodiac characters look like the alternative keys on on older keyboards (printed beside the normal alphabet) like the the Commodore64 schematic PETSCII
(http://en.wikipedia.org/wiki/PETSCII), although this was released in the 80's there may be some older typewriters or "computers" from the 60's that can have the same alternative characters.
Just had a thought that the Zodiac can have used some current 60's keyboard-layout to "decrypt" his messages, just have to find out if something like this existed back then.
I mean if no one ever found out his encrypt/decrypting method, who knows..
olejeek said…
Follow up to my previous post:
His letters and characters looks like those from Ascii and unicode tables.
Unknown said…
This comment has been removed by the author.
Unknown said…
has anyone noticed that the errors in the solved cipher spell "rich"?
Unknown said…
Link to "homophonic cipher" is incorrect. Page found here:
http://www.simonsingh.net/The_Black_Chamber/homophonic_cipher.html
pussycat said…
I mean why bother giving the zodiac satisfaction of even trying to decipher his code.
He is not worth it.
reginald surict said…
Good point. What's your opinion concerning this thing?
Jmd said…
How did you get to FWB?

### Your last name contains invalid characters

My last name is "Graham-Cumming". But here's a typical form response when I enter it: Does the web site have any idea how rude it is to claim that my last name contains invalid characters? Clearly not. What they actually meant is: our web site will not accept that hyphen in your last name. But do they say that? No, of course not. They decide to shove in my face the claim that there's something wrong with my name. There's nothing wrong with my name, just as there's nothing wrong with someone whose first name is Jean-Marie, or someone whose last name is O'Reilly. What is wrong is that way this is being handled. If the system can't cope with non-letters and spaces it needs to say that. How about the following error message: Our system is unable to process last names that contain non-letters, please replace them with spaces. Don't blame me for having a last name that your system doesn't like, whose fault is that? Saying "Your

### All the symmetrical watch faces (and code to generate them)

If you ever look at pictures of clocks and watches in advertising they are set to roughly 10:10 which is meant to be the most attractive (smiling!) position for the hands . They are actually set to 10:09.14 if the hands are truly symmetrical. CC BY 2.0 image by Shinji I wanted to know what all the possible symmetrical watch faces are and so I wrote some code using Processing. Here's the output (there's one watch face missing, 00:00 or 12:00, because it's very boring): The key to writing this is to figure out the relationship between the hour and minute hands when the watch face is symmetrical. In an hour the minute hand moves through 360° and the hour hand moves through 30° (12 hours are shown on the watch face and 360/12 = 30). The core loop inside the program is this:   for (int h = 0; h <= 12; h++) {     float m = (360-30*float(h))*2/13;     int s = round(60*(m-floor(m)));     int col = h%6;     int row = floor(h/6);     draw_clock((r+f)*(2*col+1), (r+f)*(row*2+1),

### The Elevator Button Problem

User interface design is hard. It's hard because people perceive apparently simple things very differently. For example, take a look at this interface to an elevator: From flickr Now imagine the following situation. You are on the third floor of this building and you wish to go to the tenth. The elevator is on the fifth floor and there's an indicator that tells you where it is. Which button do you press? Most people probably say: "press up" since they want to go up. Not long ago I watched someone do the opposite and questioned them about their behavior. They said: "well the elevator is on the fifth floor and I am on the third, so I want it to come down to me". Much can be learnt about the design of user interfaces by considering this, apparently, simple interface. If you think about the elevator button problem you'll find that something so simple has hidden depths. How do people learn about elevator calling? What's the right amount of