Cracking the Agrippa Code: How the Disk Worked (Discoveries From the “Cracking the Agrippa Code” Contest in 2012)
In July 2012, Quinn DuPont—at the Information Science department at University of Toronto—ran a “Cracking the Agrippa Code” contest offering hackers “every William Gibson book ever published (except Agrippa)” for solving the mystery of how the code on Agrippa’s disk actually worked to scroll Gibson’s poem up the screen and then, famously, “encrypt” it forever. The contest produced surprising discoveries.
Since its origin, Agrippa’s iconic status as a harbinger of the digital age has centered on the legendary “encryption” program on its disk. Alleged at the time to flirt with transgressing U. S. laws on export of strong cryptography, the program (especially due to its symbolic association with Gibson’s “cyberpunk” ethos) epitomized the vanguard edginess of Agrippa–its standing on the edge between print and digital, high art and cyberculture, and straight and punk.
Publicity and media reports about Agrippa in 1992 thus consistently, if confusingly, advertised its “encryption” program (and sometimes “virus”) that “destroyed” Gibson’s poem (examples: 1 | 2 ). The letters that Kevin Begos, Jr., received from the hired programmer during the making of the code (example) indicate that he and Dennis Ashbaugh as Agrippa’s originators would have had no reason to doubt the existence of a state-of-the-art encryption program. Prominent digerati such as John Perry Barlow chimed in on that premise (see Barlow’s letter offering to stand up to the NSA in defense of Agrippa’s encryption). And, in the decades afterwards, scholars of Agrippa proceeded on the same assumption.
Yet in all that time no one had actually analyzed the workings of the code. After all, until 2008 when The Agrippa Files posted a bit-for-bit copy of the disk (with the aid of Matthew Kirschenbaum and the Maryland Institute for Technology in the Humanities (MITH) with the Digital Forensics Lab at University of Maryland, College Park), Agrippa’s rarity made simply getting the code a virtual impossibility.
DuPont was interested in issues of encryption and cryptography as “a rich field of study for digital humanities” (see the article he subsequently published: “Cracking the Agrippa Code: Cryptography for the Digital Humanities,” Scholarly and Research Communication 4.3 : 1-8). Agrippa’s code offered him a tempting case study. But the difficulty of reverse engineering the code proved formidable. He hit on the established tactic in hacker circles of a code-cracking contest. As he recalls in his article:
Even though the cryptographic algorithm turned out to be very insecure, even for its release in 1992, I quickly discovered that cracking Agrippa was a considerable technical challenge…. [E]ven with the archival documents and the binary [provided by The Agrippa Files], after several weeks attempting cryptanalysis, I realized that I would need to enlist outside help.
I decided that I would marshal help by creating an online “cracking challenge.” Cracking challenges are relatively common in some subcultures on the Web, but this one was complicated by the fact that Agrippa had been developed 20 years prior and seemed to follow very few industry practices. Cracking Agrippa requires knowledge of 1992-era Macintosh software development processes, tools, and languages. And once the software yields the ciphertext, the would-be cracker must possess skills of cryptanalysis.
Once the challenge website was launched – strategically tied to the cyberpunk ethos of William Gibson – interest in the project was considerable. (p. 3)
Seed materials for DuPont’s contest were the archival resources on The Agrippa Files, including the bit-for-bit copy of the original disk. The hacker community speedily answered the call, and the contest’s course was run in less than a month (DuPont recalls in his article: “Within 12 hours, one of my advertisements was picked up by Cory Doctorow at the blog Boing Boing, and with its massive readership, many other large technology-focused websites also began to spread the word”).
Robert Xiao won the contest (see his submission), with second place going to Jeremy Cooper and mentions to Ayal Ryger, Nikita Shula, Brian Carnes, and integ3r.
DuPont posted on his site the original contest challenge, his report on the results (“Technical Description,” which included draft writing for his 2013 article), and the contest submissions (all under a CC BY-NC 3.0 license). With his cooperation, these materials are now archived on The Agrippa Files [see box above].
Highlights of Results
Highlights of the discoveries made by the contest’s participants include the following. (Quotations are excerpted from DuPont’s 2012 detailed report on the results: “Technical Description.” See also DuPont’s article).
- The Compiled Binary: “The Agrippa program was developed using Macintosh Allegro Common Lisp, possibly version 1.2.2 or 1.2.3 (see Robert), and bundled as a self-extracting binary. As mentioned in the archival documents, the auto-run, “virus-like” mechanism was never developed, and while there are some tricks to impede reverse-engineering the program, the programmer’s boasts that it would be impossible to run through a debugger are unfounded.”
- The Cryptographic Algorithm:”The Agrippa poem is pre-encrypted and stored as a string variable in the program…. All contestants discovered that the cryptographic algorithm is a custom RSA function that encrypts in three-character blocks, with additional “bit-scrambling” permutations (a kind of simple substitution cipher). Because the poem comes pre-encrypted there is no encryption routine in the program: the program simply loads the ciphertext, decrypts it to memory, and then abandons the plaintext (still in memory).”
- Encryption Effect: “When Agrippa is run the poem slowly scrolls down the screen, and when finished it displays an encryption effect, seemingly to evoke the idea that the poem is re-encrypted…. [B]y running the plaintext through a permutation routine (re-purposed from the main decryption algorithm) the plaintext is effectively encrypted using a simple substitution cipher. While this is a re-encryption of the plaintext, it is actually only for visual effect since the cryptotext generated by the substitution cipher is not saved back to disk, but is instead displayed and then abandoned. Once Agrippa is run, only one change is saved to disk: the “self-destruct” mechanism.”
- The “Self-Destruct” Mechanism: “Agrippa famously runs only a single time…. The anonymous programmer of Agrippa choose a simple mechanism: write a large string of data over a portion of the binary that contains necessary run routines. In the archived source code printout this self-destruct mechanism wrote 40,000 ASCII characters (ASCII code 255) to a specified offset, leaving a string of 320,000 binary 1’s to corrupt the program…. Evidently, at some later stage of development someone thought it would be more artistic to write a fake genetic sequence (CTAG’s) instead of merely 1’s. This self-destruct routine is called MAKE-SOME-SHIT….”
Commentary by Alan Liu, General Editor of The Agrippa Files (June 22, 2014)
The mystery of Agrippa’s code has been a main contributor to the cult of the work, driving both popular-culture hype on the Internet and, at least in part, scholarly research. The idea of a post-codex artifact able to encrypt itself–and, like the Wintermute AI in Gibson’s Neuromancer novel, possibly just waiting to break free of the confines of an art book to go feral–was simply too powerful, too much a romance of the digital age, to wait for forensics on the actual code. In this regard, scholarship (including my own discussion in Laws of Cool, pp. 339-348, which DuPont uses as a foil in his article) has been susceptible to what Jerome J. McGann in a different context calls “romantic ideology” (the implicit identification of professional scholars with the ethos of the very writers they study). Scholars of Agrippa, it might be said, have been apologists of neuromantic ideology.
The gist of it, we now know, is that there never was an encryption program as such on Agrippa’s disk. In this light, the “Cracking the Agrippa Code” contest demystifies Agrippa’s code. But, paradoxically, it reconstitutes the work’s mystery–its irreducible strangeness–in new ways. As DuPont puts it in the conclusion to his 2013 article, “something of equal fascination has taken its place” (p. 8).
On the one hand, Agrippa’s code is revealed to be smoke and mirrors. It is a Wizard of Oz trick, a one-off assemblage of “effects” wrapped around a core of not-quite-mastered RSA encryption. Or, to change allusions: if Agrippa’s code were the magic spell in Disney’s Fantasia (Disney enchantment being an important data point to add to the graph that connects Romanticism, the Wizard of Oz, and cyberpunk), then it is less the master sorcerer’s necromancy than the apprentice Mickey’s script-kiddie abracadabra (or, more apt for Agrippa, genetic ACGT):
- As Dupont’s contest reveals, there was actually no encryption program on the disk. The act of encryption with its tricked-out RSA (the “custom RSA function that encrypts in three-character blocks, with additional ‘bit-scrambling’ permutations”) happened off stage, depositing on the disk a pre-encrypted text of Gibson’s poem that was put into play by being run through a decryption algorithm, loaded to computer dynamic memory, scrolled up the screen, and then–abracadabra–made to seem reencrypted again through a weak substitution cipher generated simply by running the already decrypted plain text through the same decryption algorithm, thus effectively turning it into nonsense. In addition to the fact that Agrippa’s disk did not include an active encryption program, Dupont notes in his “Technical Description,” the encryption it contained was not strong enough even at the time to have warranted legal concern: “given the extremely short key-length (12 bits), Agrippa would never have been prevented from export, which in 1992 permitted an RSA modulus of 512 bits…. Agrippa would not have been considered strong cryptography.”
- The substitution cipher that created the appearance of live encryption was superficial not just because it was simple but because it was a façade. Behind the scenes, it abandoned the decrypted plain text of Gibson’s poem in computer memory where it could be recovered (see Freek Wiedijk’s hack in 2011 of the plain text of the poem left in memory during a run of the disk).
- Overcompensating for this ad hoc, weak, and leaky encryption “effect,” the programmer of the Agrippa disk just added some shit—referring to the MAKE-SOME-SHIT brute-force program that, upon starting the disk, nuked the stored run routines on the disk. Fossil evidence in the code shows that the programmer originally intended to write “320,000 binary 1’s to corrupt the program” but later, like making a final flourish of the magician’s cape, decided to write “a fake genetic sequence (CTAG’s) instead of merely 1’s” (quoting Dupont’s report; see the details in Robert Xiao’s winning contest submission). If the previous steps in the illusion are an abracadabra, then MAKE-SOME-SHIT–to give it a more charming name–was shazam!
But, on the other hand, the “Cracking the Agrippa Code”contest also reveals–like opening a curtain behind a curtain–the true strangeness of the artifact that is Agrippa’s code. In its time, it was not just a Rube Goldberg machine of the known (a fantastically complex and inventive bricolage for doing what we already know how to do in ordinary ways), but a Rube Goldberg machine of the unknown.
First, consider that the goal of Agrippa’s code was to imagine–at the very dawn of a digital age dominated today by the omniscience of the NSA, Google, Amazon, Facebook, Apple, Microsoft and their ilk in their mixed roles as providers/predators of collective human experience–what it would take to keep alive the unknowability of the human in the age of “the mechanism.” In Agrippa’s case, unknowability (for which the “privacy” we debate and legislate today is a weak name) is the intimate aura of family biography and personal biographia literaria that Gibson’s poem communicates in its complex weave of openness to, yet mourning for, living “in the mechanism.” According to Agrippa, keeping the mystery of the human alive in the mechanism means withdrawing legible autobiography into inscrutability again.
Secondly, consider that the means toward the above goal of unknowability may itself be Agrippa’s best demonstration of such unknowability, its real last “laughing, in the mechanism” of digital memory (to quote the end of Gibson’s poem [full text of poem]. The encryption “effect” that the anonymous programmer concocted gets the last laugh on digital omniscience because of what it is not. It is not a system for knowing, unknowing, or anything. The true significance of Agrippa’s encryption effect, in other words, is not that it is an illusion or false, but instead that it is not an integrated system that can be known all the way through on the basis of a predictable or optimized chain of principles, logic, or programmability. Today, the idea of technology as non-system is undergoing a renaissance of interest among scholars concerned with such conceptual frameworks as “making,” “media archaeology,” tactical media, “new materialism,” “assemblage theory,” “compositionism” (PDF), “science technology studies” (e.g., on “the mangle of practice”), “deformance,” “glitch,” and so on. It’s as if Agrippa has time traveled from the dawn of the popularization of digital media to the dawn of a new convergence in media archaeologies, object-oriented ontologies, agile programming, etc. that could well find their anthem in “MAKE-SOME-SHIT.” The spirit of the maker or hacker (whose “laughing in the mechanism” we see signed in that scatological program name) is now at least as intellectually, socially, and culturally interesting as strong encryption. Just as “privacy” is a weak name for unknowability in the age of the mechanism, so “innovation” (or worse, “disruption”) is a weak name for the raw, unsystemizable drive to “make some shit” represented by Agrippa’s code.
In my Laws of Cool, I called that drive “creative destructivity” (a reversal of the neoliberal mantra of “creative destruction”); and I took Agrippa as its emblem. I should have just called that drive “make some shit,” for which Agrippa’s encryption effect, while not an encryption program per se, serves equally well as emblem.