Science Sunday: Eavesdropping on Computers for Fun and Profit
Some researchers in Israel analyzed the noises a computer was making and used that to analyze exactly what the CPU was doing! Acoustic cryptoanalysis is a thing now! This is one of the coolest papers I’ve ever read. The gist is as follows:
- As CPUs do differing work they require differing levels of voltage.
- The fluctuating voltage demands produces noises in the capacitors in the computer.
- It is possible to figure out what the CPU is doing by listening to the noisy capacitors.
This is a completely brilliant idea that I wish I’d thought of and think should have been more obvious, since as the researchers themselves point out, “Auditory eavesdropping on human conversations is a common practice, first published several millenia ago.” I’m so glad they included this in their related work section. On the other hand, it’s actually non-obvious conceptually since what they are listening to is sounds mostly above 30kHz, well outside human hearing range. The noises we think of as computer noises are by and large coming from the fan and spinning disks, rather than the CPU, so all listening to the computer must be done via some computer analysis. (Possibly necessary acronym explanation: CPU is central processing unit, the thing in the computer that actually does all the computer work.)
In order to make this interesting (and publishable) research the researchers don’t want to just eavesdrop on any old CPU operation, they want cryptographic operations. The first problem is obviously to make sure that the targeted computer is actually performing cryptographic operations. Quick, to the emails! Thunderbird is a popular email client, which has a popular plugin, enigmail, which is used for encrypting and decrypting emails in OpenPGP format using GNUpg. Meaning if the computer under attack is currently running Thunderbird with enigmail, the attacker can send encrypted emails which Thunderbird will then automatically decrypt. Voilà, crypto operations for the listening!
More detailed and necessary acronym explanations. GNU is Gnus Not Unix (which makes total sense, I swear), a movement dedicated to free software, the providing and promoting of. GNUpg is GNU Privacy Guard, the most current implementation of PGP. PGP is Pretty Good Privacy, and it’s an encryption program that supports asymmetric key encryption.
Got all that? Great, time for a quick and dirty description of asymmetric key encryption. Asymmetric here means as opposed to symmetric. If two people, conventionally referred to as Alice and Bob, want to discuss secret things remotely, they need to encrypt their secret things somehow. If they use a symmetric key, that means they both have the same key which both decrypts and encrypts their secret messages. This is all well and good, and indeed, traditional, but for Alice to give Bob her symmetrical key without running the risk of having it detected by a third party can involve all sorts of logistical difficulties. Enter asymmetric key cryptography, in which Alice has two keys. One she keeps private, the other she publishes any which way. This is the public key and it truly doesn’t matter if any eavesdroppers get it. A message encrypted with the public key can only be decrypted with the private key. The reverse is also true. Without getting into the gory mathematical details, because that would be a post all in itself, the mathematical relationship between the two keys will be (depending on algorithm) either impossible to derive or so computationally difficult it would take, given modern computing equipment, years. At least. This means that the keys are considered mathematically secure.
As a side note, I will one day write a romance novel about the steamy relationship between Alice and Bob.
Back to our regular programming, the researchers are using asymmetric keys that are 4096 bits long, which is mathematically secure until the year 2031. A bit is a binary digit, so the key is a number that when, converted into binary, is 4096 digits long. So when the target machine is receiving an email that has been encrypted with a public key and what Thunderbird is doing is applying a private key automatically. Our very brilliant researchers are taking a bit by bit approach to breaking this private key. Literally. Everything in a computer is binary, ultimately, and a 1 and a 0 sound different. So with time, it is possible to get all 4096 mathematically secure bits by listening to see what digits are being generated in order to decrypt the email. This does, however, require time (they say an hour to completely decrypt a key), and multiple exposures to a cryptographic operation, so the attacker has to be sending multiple emails while maintaining acoustic access to the targeted machine. Still, in a coffeehouse scenario, assuming the emails sound not completely crazy, this is not unreasonable.
How worried should we all be about this? Probably not very just yet (though always feel free to tell me how wrong I am). This paper is just a proof of concept with an implementation tailored to a specific email program with an encryption plugin, and while the attack program can be loaded as an app on a phone, we probably don’t need to be terrified of strangers with smart phones near our laptops just yet. Or the government, since I am under the impression that the NSA is usually more into demanding backdoor encryption access. That being said, it is always true that the more physical access an attacker has to a machine, the more damage can be done. Acoustic attacks just expand that truism. Now it’s not completely obvious how to mitigate acoustic attacks, short of doing one’s computing in a sound-proof cave, which is no way to live. There are implementations of GNUpg that make this a lot harder to do, but not impossible. Besides which, developing software to mask noises that the developer cannot personally hear has got to be hard. Myself, I would probably panic if was told to alter some code in order to change the acoustic signature of a CPU running the code, because what?! I don’t know how to do that! I might actually maintain dogmatically that since this is a hardware problem it should be addressed in hardware. But until our wonderful hardware manufacturers fix this, what can we do? Adding more ambient noises doesn’t help, since CPU sounds are in a specific frequency range and programmatically filtering sounds by frequency is fairly trivial. Most freeware audio editors should be able to do this just fine. With modern laptops, we can’t easily make the chassis soundproof. The chassis has to have openings because otherwise it will get too hot for the electronics. Fortunately, we do have networking available. From a laptop in a coffee house (which I can’t computer at anymore because the only decent coffee shop in this tiny hamlet where I live is drive through only. First world problems.) I can open a remote connection to a machine that I’m certain is physically secure and do all my sensitive work on a physically secure machine.
Featured image from wikigallery.org.