# Can a book cipher be cracked without key?

Book cipher works this way :

1. Choose a reference book.
2. For each word find its position in the book.
3. replace each word by its coordinates (ie: 2,3,4 = page 2, 3rd line, 4th word).

How would somebody go about cracking a book cipher without the knowing what the key [or book used in this case] is?

Finding the key is either impossible or would take a impractical amount of time. Given a known plain text and a cipher text, finding the right key [or book] is impractical because all possible keys that match the plain text would require 40 billion years using modern day technology to go through.

Example of a book cipher : Beale ciphers, it used the United States Declaration of Independence as a key.

• Could you please (semi) formally describe the cipher? It's not even clear to me what the key is, if the ciphertext is the position of the words... – Maarten Bodewes Jan 12 '16 at 21:52
• I guess it's a substitution cipher where plaintext words are taken, searched for in the book and substituted for their position (possibly randomized across multiple occurrences) in the book. The number of all available books is not that big, so a player such as Google (they have a large database of scanned books) would be able to try a lot of books on one ciphertext and check each resulting plaintext in a natural language framework whether correct sentences were generated. If you assume that no books can be used for breaking it, then this is seems like a perfectly secure cipher. – Artjom B. Jan 12 '16 at 22:00
• @MaartenBodewes the key could be any form of text. for example I used my own post. using the positions of certain words to generate a cipher text. – 5hammer Jan 12 '16 at 23:20
• @5hammer Can you check whether the edit clarifies the scheme in the way that you mean it? If not, then you should provide a better description of what you mean. – Artjom B. Jan 13 '16 at 15:46
• @MaartenBodewes thank you, yes that is the scheme that I was having a hard time describing. – 5hammer Jan 14 '16 at 2:28

First things first, finding the key (book) is not impossible, but just tough. If someone, like Google for example, has scanned millions of books into digital formats then it won't take long for them to figure out which book (simply try decrypting the first sentence only until the key is found, should be feasible for a mainframe).

Also, there is a lack of randomness. As the book you choose might not have random sequences the substitution will not decorrelate anything, which is another drawback. The best way to improve this is by choosing random references for each character by using a random number generator, which is tedious.

• I know that finding which book could be possible but assume for the fact that simply brute forcing would take 40 quitillion years even if during every year the computing power of the world doubles. what i want is the other methods that could be used to reduce the amount of books that I would have to check. – 5hammer Jan 14 '16 at 2:31
• @5hammer: How are you getting a number like 40 Quintilian? As described the complexity of this is only linear in the number of books available. – Ukko Jan 15 '16 at 17:42
• I suppose it cound be fairly advantageous to simply postprocess the ciphertext from a book cipher with a transposition in the classical sense such that the user's manual work would be hard to analyze even with resources comparable to that of Google. – Mok-Kong Shen Jan 16 '16 at 9:17

For this to be a practical cryptosystem with a short key, you're limited to specifying a published book that everyone including the adversary has access to.* Let's say are approximately a billion distinct published books out there. Cursory research suggests this is an overestimate by a factor of about ten, but let's not quibble details. For each book, let's say there's an average of a million words. This is also a huge overestimate.

That makes a trillion possible keys, $10^{12} \approx 2^{40}$—and to write down your cryptosystem, you must literally fill a library.

You're better served by using the archaic broken-by-brute-force DES cipher with a 56-bit key than by using this effectively 40-bit key for a book cipher. If you need to do this with pen and paper—if somehow you can afford a billion-book library but not a computer—there are probably better pen-and-paper ciphers available, like [1] and [2].

* If you're not limited to published books, you might as well exchange call numbers in the Library of Babel, but such a proposition is even less practical.

There is a major side channel attack on such ciphers, imaginatively called a premises search attack. Whilst you'd think that all the books in the world are at your disposal, in fact they're not. You have to have the book at some point, and so does your cipher text recipient. And they have to be word for word, page for page identical.

So if you're reporting on a local colony of wombles, you might encipher and send:-

"Great Uncle Bulgaria – the oldest and wisest of the Wimbledon Wombles and their leader."

But if you're spying on a pharmaceutical company, then your secret message might be:-

"Here we present a model of trabeculation in mice that integrates dynamic endocardial and myocardial cell behaviours and ECM remodelling, and reveal new epistatic relationships between the involved signalling pathways. "

There are not many books in the world that contain these exact words, and both message sender and recipient have had to possess one. So suddenly all books in the world are reduced to not many at all. A long bookshelf with 10,000 books is still only ~13 bits of book choice. And who has 10,000 different books incorporating the word "Wombles"? Searching through either the sender's or recipient's bookshelves would vastly impact security.

If Thomas Beale's house had been searched at the time, the treasure would have probably been easily located as he'd had to have a copy of the Declaration of Independence on his book shelf.

Comparatively, imagine if you could recover an AES key by using a side channel to reduce the unknown key space by 99%. That would mean looking for a better cipher. It's more secure and more practical to substitute letters rather than words. That way you can simply use the Bible for everything.

I think the idea is that these can't be cracked, without the key you can't decipher it. You could use computer programs hoping that the particular book has been scanned in, but remember if your code is based on page and word numbers then the "edition"/"printing" of the book is also a factor. A paperback book has different page numbering than a hard back. If you are using an older book with different typeface, the words will fall on different pages than a modern copy. This is why these codes are so useful, but each person would have to have the same edition of the book in order to understand each other.

The quickest way to determine what the key is would be to understand the person working the code and try to determine which book/key they would use.