[Cryptography] [Announce] Unsnoopable - Completely unsnoopable messaging (was: Brainstorming for encrypted text messaging ideas...with a twist)

Ashish Gulhati crypto at ashish.neomailbox.com
Wed Jun 21 01:57:05 EDT 2017


You guys are circling close to a scheme for completely unsnoopable
messaging that I've been trying to turn into a usable solution for
quite some time (with recent success, I believe).

The basic idea is simple enough, and I implemented a first version of
it in early 2004. Use one-time pads generated on offline air-gapped
machines, and encryption and decryption happens on those machines as
well. Plaintext and OTPs never leave the air-gapped machines. Voila:
completely secure encryption, completely secure OTPs and plaintext
(from any kind of network-based attack - physical attacks are out of
scope).

I think I briefly considered mechanical OTP devices, but decided to
just go with a regular small computer. At that time I used a Compaq iPAQ 
and a Sharp Zaurus. The minimal first version I wrote in 2004 was in Perl 
and relied on sneakernet, by means of Sony memory sticks or SD cards, 
to move the ciphertext between the air-gapped machine and one that was 
online and could send and receive messages.

It was a bit too cumbersome for actual use, and few people at the time 
had a computer that could be dedicated full time to being an offline 
air-gapped device. So I never published the Perl module 
(Crypt::OneTimePad) and the simple command-line utilities to use it. 
It just kept sitting in my Code directory and getting copied from machine 
to machine over the years.

(When I recently opened it to restart work on it, after having hit upon
the way to make this system quite usable, all the files were
corrupted. No biggie, it was pretty simple code-wise).

In mid-2014 the idea popped into my head again, and this time I had a
solution for the sneakernet component, and the need for two
computers. This solution was along the same lines as Tom described in
his recent message: use an old model iPod Touch or similar device as
the air-gapped device, and your regular smartphone as the online
device.

As to how to send the ciphertext across between the two without using
a network, the solution I came up with in 2014 was to use an audio
cable connected between their headphone/mic jacks, and to use
a software modem to send the data over the cable encoded as audio.

As the obvious target devices for this idea seemed to be an iPod Touch
and an iPhone, I spent some time trying to learn iOS programming in
order to implement it. This was a real drag: coming from Perl the iOS
development landscape is pretty horrible, with a bureaucratic, overly
verbose language and frameworks. And no way to avoid reinventing
wheels even remotely comparable to CPAN, of course.

Plus there was the prospect of having to eventually get the app
through Apple's approval process to get on the app store. And what if
they decided it was something they didn't approve of? All that trouble
for nothing. It was also a problem that an iPod Touch contains
wireless networking hardware that you can never truly be sure is off,
even if you turn it off in the UI. Also bad: Apple's devices have no
MicroSD card slot.

Anyway, I didn't see any other practical method to implement this so I
kept trying to learn iOS programming, and also wrote most of a
preliminary patent application for this system (patent to be licensed
under the Defensive Patent License, of course). This was also quite a
painful exercise, especially as I realised that it was probably
pointless.

At the end of July 2014 a group led by Jeffrey Chang launched a
Kickstarter campain for JackPair, an air-gapped device designed to
encrypt voice calls and communicate over the network through a mobile
phone, which it would connect to using, yep, an audio cable.

I backed that project and tried to spread the word about it. The
project did get funded but so far they have not delivered the
device. JackPair was still quite different from my idea in that it
wasn't *perfectly unsnoopable* messaging, as it didn't use OTPs, and
required the unencrypted message to be spoken, making it susceptible
to all forms of audio snooping.

Anyway, the iOS programming didn't go anywhere and neither did
finishing the PPA. Life intervened and this went on the back-burner
again, though I did plan to get back to it asap.

Just about a year ago, amost to the day, I hit upon the two final insights 
that could make it all work: use QR codes to move the ciphertext between 
devices; and screw iOS and waiting around for Apple's permission to 
release code. Instead, just write it in Perl and run it on a Raspberry Pi or
similar open device with a small screen and a camera.

I immediately started designing a device to run it on, and I've made
good progress on that front. Will be working to get a Kickstarter going
for it soon.

I came up with a few names for this system in 2014, but nothing I
really liked. Last year I also hit upon a good name for it, and registered 
unsnoopable.(com|net|org).

A couple of days ago I finally published to CPAN the Perl module
Crypt::Unsnoopable. The distribution includes a simple GUI app that 
implements this system. A website with info and pre-built executables 
for various platforms will be up at http://www.unsnoopable.org shortly.

All comments, ideas, code, translation assistance, etc. most welcome 
and greatly appreciated.

Oh, and one more thing:

Some days ago I also released HashCash, a permissionless, Chaumian
digital cash system that can be used from air-gapped devices, to keep
coins super safe (using the same QR code based communication as in
Unsnoopable). Separate post about that next.

Cheers

Hash



More information about the cryptography mailing list