This project is a computer security one. The challenge this project addresses is to help prevent the possibility of malicious communications going from internet-connected PCs back to airgapped PCs when a file is transferred from the airgapped PC to the network-connected one. The main use case is to generate ciphertext securely on the airgapped PC, and to transfer it over to a recipient via a network-connected PC. Another use case is to generate your passwords for all your online accounts on the airgapped PC, put into an encrypted file, then transfer over to be used on networked PCs. If you just use a USB stick to transfer a file from an airgapped PC to a non-airgapped one, with exploits like BadUSB and other forms of USB malware there may be a way to get malware on the USB stick then back to the airgapped PC that you trust most. This is because there is two-way communication anytime you plug in a USB stick to a PC. This is the main scenario I hope this device can help prevent.
This project plans to alleviate this problem by using one-way communication from a serial port on the Arduino Uno where the user places the "airgapped" SD card, to another Arduino Uno that reads from the serial port and writes what it receives to a file on the SD card. Even though every transducer is technically bi-directional, I am unable to find *practical* research or a proof-of-concept that can breach this data diode at this time, side-channel attacks must be used to do so at this time.
This project may be world changing because it simplifies this form of secure one-way transfer of files that is previously limited to state agencies and militaries around the world. It may help prevent a lot of malware infections (that is my hope, at least). The data diode design I am using is located here: http:://imgur.com/a/5Cv19
My plan is to get Arduino Uno's with SD card shields and to use the SD card library to read a file from one side, to dump that to the serial port, with the data traveling through a serial data diode that I have verified to be working, then to read in from the serial port on the other side, and to put that into a file. I believe that capability is laid out in the SD card libraries, but I am not 100% sure at this time. I am prototyping with Arduino mostly because of the easy-to-use SD card library and platform. I do hope the concept can be expanded to any platform though, being "platform agnostic".