Search this site: 

 

Digital Fortress

Dan Brown

New York: St Martins's Press, 1998. ISBN: 0-312-99542-3. Pp.: 430

Review © 2004 Branislav L. Slantchev

This (mercifully) concludes my four-day getaway with Dan Brown's oeuvre. I did the reading in reverse chronological order and with increasing frustration. One thing is sure, Mr Brown has improved immensely from the days of this, his first, novel. Although there was much to gripe about in his others, at least The Da Vinci Code is much tighter and with fewer obvious plot holes compared to this one. Which, unfortunately, is not saying much.

This time, the secret organization is the National Security Agency, which is secret only if you have been living in a hole for the last forty years. Next thing Mr Brown will be telling me that FEMA is also super-secret and sinister. OK, maybe people who have never been near or heard of natural disasters don't know about FEMA. But the NSA? Super-secret? Unknown to 97% of Americans? Muhahahahahahahaha. I order Mr Brown to march to the bookstore, and get one of half a dozen books on the organization. Or better, yet, just go to their super-secret website. Oh, yes, they WILL track you being there, of course. As they WILL track you purchasing a book about them. And they WILL not care.

Anyway, the NSA employs the best and the brightest mathematicians (preferably the most beautiful ones too) and some convicted felons. It also indulges in the stupidest thing it possibly can: building a super-fast computer super-expensive computer to crack encrypted data. Mr Brown does not have the foggiest idea about how crypto works and is definitely not on a first-name basis with computer technology. Anyway, the stunning smart genius Susan is called in to help her not-so-stunning and not-so-smart boss run a program while her handsome smart boyfriend runs around Seville (Spain) looking for a code that would prevent the NSA from becoming obsolete and will keep intact the US government's ability to steal your grandma's cookie recipe when she emails it to you.

Just for the fun of it, let's poke a few at some of the most glaring problems with Mr Brown's novel.

Digital Fortress is encrypted with itself, and the program that has done the encryption is apparently destroyed, only the key exists. Uh, excuse me? And how, pray, is one going to decrypt the program with the key? Mr Brown apparently has no clue that there's a difference between a data file and an executable. So perhaps there is a program that will do the decryption using the key, after all? Maybe even the program is a self-decrypting executable. Fine, but then it can be reverse-engineered so people can see how the key is applied. Oh, well.

A computer getting infected by a virus is not news-worthy. A computer getting infected by a virus from a data file that it is trying to decrypt, on the other hand, is totally bogus. Yes, if one knows a heck of a lot about the way the software processes these files and if the software is programmed by a ten-year old brain-dead dolt, then yes, one can design a data file that will cause the program to crash or go into a loop (mostly by causing it to fuck up its memory management), but then again the NSA probably does not hire ten-year old brain-dead dolts to be its software engineers, at least not on the $2 bn supercomputer.

The decryption described in the book is the stupidest thing one can attempt. Brute force does not work even for today's ciphers if you use long-enough keys. It does not matter if you string together 3 million or 30 million chips, the mathematical possibilities are simply huge to hope that such a stupid attack would work. I also could not help but wonder just how the NSA computer knows that it has decrypted the file. Does it scan the cleartext after each iteration? How does it know it's not encrypted itself with some simple text substitution scheme and so no words would be recognizable? Or what language it's written in? Damn it, if the NSA is as naive as described in the book, we'd all be commies right now. And by the way, it's extremely easy to design a code that no computer (or human) can break. You don't need anything more than a pen and a piece of paper. Here's an encrypted message:

Q0F5Z2EB67F7191C5PWWA662136BB044SAU17795A5D2B
(The solution is at the bottom of this page.)

The ending is banal. Imagine people staring at a huge screen where five concentric circles describe the levels of protection of the NSA computer. Each level slowly dissolves as the virus works its way into the system (what?), then black lines appear - hackers trying to get it (what?), and the count-down begins. Well, first, why not shut down the computer. The NSA, like any normal company, has backups of all its data. Heck, the backups are probably fully automated every hour or so, and probably moved offline to an off-site location for safe-keeping. Erasing the hard drive of the main databank means nothing. Second, instead of shutting down anything, how about severing the phone, ISDN, whatever, connections to the outside world. Do these hackers just connect through thin air? Geez, if you know enough about them to put a nice arrow on a computer screen, you probably know where they are coming from and which back door they are trying to use. Pull the damn plug on that line, damnit!

Oh, and that bit about Susan's colleague logging into her account and noticing a tracer running. That part's fine. But what comes next? He looks at the program source (written in a language that is a cross between C and Pascal... shudder), then modifies the source of the currently running program and causes it to abort. What? Even if the damn language was interpreted (as opposed to compiled, which it probably would be), it still would not do squat for the program currently running in the interpreter. I would much rather have seen the guy kill the tracer process instead. And he's quite pathetic at covering his tracks, for a really smart guy the NSA just had to hire, that is. And what's that about the NSA hiring known felons? (Oh, and a tracer that attaches itself to an email and then sends back the recipient's true address? Well, maybe if your recipient is your computer illiterate grandma. There's a reason some of us do not open HTML messages but only look at email in plain text.)

Mr Brown should certainly stop writing novels with smart protagonists. The problem is that these people do not behave like smart people do. They ignore obvious problems. Take Susan. She sees Greg dead. Suicide, obviously. That is, suicide if one believes that the guy would free himself from the ropes, sneak into the commander's office, steal the gun (yeah, I know we're told that Susan thought she had left the gun on the couch, but that's cheap, is it not?), then type a freaking suicide note confessing all crimes, including some that are forthcoming, then kill himself. Yep, and I am a teenage brain surgeon. But none of this is surprising given how Susan, a supposedly IQ-170 genius mathematician acts all the time. If in Mr Brown's world stunning smart women fall over and gape in amazement every five seconds between losing various parts of their skimpy dresses, then Mr Brown has clearly not met a smart woman in his life. Or outgrown horny teenage fantasies for that matter.

"The prime difference between the elements responsible for Hiroshima and Nagasaki?" THAT took them more than a second to figure out? Because the words have other meanings? The first thing I could think of was to look at the elements. But then I am neither smart nor stunning nor a mathematician.

Plotting: guy goes to a bar, happens to run into punk who knows the girl he's looking for, outruns a car on a fucking scooter (I have a Yamaha scooter, it can barely outpace seniors), gets to the airport, goes to the ladies room (don't ask), and runs into the girl he's looking for. Yep. Took all of 19 seconds to plot this intricate web of coincidences. And when the suave professor speaks, he always ends up sounding as a child molester. Several times he "misunderstood" precisely in that same fashion. Nice going for a polymath.

Spain is apparently worse than a third-world country.

OK, I am now running out of steam, there's so much that's bad about this book it's not even worth discussing further. Avoid at all costs.

The Solution to the Unbreakable Code

First, split the sequence into three groups of even lengths (15 characters each):
Q0F5Z2EB67F7191 C5PWWA662136BB0 44SAU17795A5D2B
Now take the n rightmost characters that are valid hexadecimal digits. An invalid digit marks a boundary, so discard it along with all remaining digits to its left regardless of whether they are valid or not. This results in the sequence:
2EB67F7191 A662136BB0 17795A5D2B
Convert these three numbers to decimal, and divide the resulting numbers into groups of four-digit numbers each. This gives the sequence:
2006 3030 1073 7146 1001 1056 1008 2021 3035
Start from the beginning of this review and number each paragraph consecutively starting from 1. Then number each word in each paragraph starting the count at the beginning of each paragraph with 1. Each word's number is composed by four digits: the first is the paragraph, the other three are the word number. The word 'secret' is number 4 in paragraph 2, and its code is 2004. Doing so yields:
2006 3030  1073  7146 1001 1056 1008 2021     3035
 YOU  CAN   NOT BREAK THIS CODE WITH    A COMPUTER
If you want to encode a message with this algorithm (provided all necessary words are present in this review's first nine paragraphs), just record the decimal numbers for each word, then divide them into groups of three. If the number of words is not divisible by 3, just insert 0000 anywhere in the sequence between words. Convert each group to hex separately. Write a non-hex character to the left of each group and pad with random alphanumerics until each group's length is 15. Then collapse the groups. Voila! All we have to do is agree on a good book with enough words and we can then transmit messages encoded in this way without anybody being able to decrypt them. Note in particular the random characters inserted into the sequence before collapsing the groups.

Computers won't help here. If we did not want to use the same book as the source, we can encode the source into the message itself. For example, we agree that the first N characters in the message are junk, then characters N+1...N+10 encode the source book's ISBN number, followed by the message itself using the algorithm and this particular book. Go ahead, try and break this without knowledge of any of these things.

October 25, 2004