We use instant messenger every day and most people simply trust the companies behind them to be responsible with our data and chat logs. But I don't. I want my communication to be inherent secure and therefore encrypted.
The problem is today encrypted communication is very unintuitive. Either you have to mess with gpg or you have to trust companies. But when I saw encryption via a QR Code you scan from your partners device, that inspired me.
I wished for a way to share those information on the go without an unnatural action like scanning somebody else's mobile display. I thought of big fairs where you shake hands with hundreds of people and get hundreds of business cards.
I wanted to embed the encryption and the share of business cards in the action you do anyway, the handshake.
The finished device is supposed to fit under a wristwatch or to be directly integrated in a smartwatch.
Components
1×
piezo
from an misting device
1×
ICE40HX1K
small FPGA, to handle the timing
1×
ATmega328
Microprocessor, to handle the protocol
1×
24FC512
TWI EEPROM, to hold the FPGA configuration and the public key
Today I began with the work on the electronics, since a basic ultrasonic transmission worked out yesterday. I started with populating an ATmega328 and a 24FC512 (I went for the FC type because that gives me the possibility to later run the digital part of the design at 1.8V to significantly reduce its power consumption while it is in idle mode).
I successfully uploaded an Arduino bootloader to the ATmega328 and was able to reuse the code I wrote for the eeprom programmer earlier, I just had to do some minor changes to handle the 16-bit address range, required by the 512kBits of memory.
I also coded some python scripts that handle automatic upload of FPGA bitstreams to the eeprom.
To verify that the piezos I took from the misting devices can be used as ultrasonic transducer, I setup a test environment for a basic ultrasonic transmission. I simply took two gummy bears to simulate a human body because I did not want to use my finger in the test setup all the time.
I setup a Signal Generator to produce a slow triangle pattern, which I fed into a Voltage Controlled Oscillator and into the X deflection of an oscilloscope. I hooked the output of the VCO to the upper piezo, so it generates an ultrasonic wave, which gets picked up by the gummy bears and is transmitted to the other piezo, which is connected via a high pass filter to the Y deflection of the oscilloscope.
Since I don't own a modern digital oscilloscope to store the data, I took long time exposure pictures of the screen. I combined three picture to create the spectrum below. I also marked some interesting frequencies.
The project is going to be implemented on an FPGA because that gives me the necessary flexibility in the design. I have chosen the ICE40HX1K that requires 34112 bytes of configuration data, so that it fits into a simple 24LC512 eeprom. I have built an Arduino based eeprom programmer earlier, that will serve as an starting point for my project:
I will implement the communication via an ultrasonic link. Ultrasonic is advantageous because it requires a real physical contact between the communication partner. That is due to the big difference in acoustic impedance between water (and therefore human) and air, it causes mostly everything to be reflected when crossing between these media. It makes it almost impossible to fake a key exchange without real physical contact.
I have done some initial experiments with high voltage piezos (right) with a resonance frequency of about 100kHz, but they performed very bad, in fact I was not able to transmit any ultrasonic. I thought about what other piezos I could use and came up with ultrasonic misting devices. I got some (left), if they are suitable is still a point of research.