SD Card Data Diode System

A system to transfer files from an airgapped PC to an non-airgapped PC by dumping files from SD card to serial port back to another SD card.

Similar projects worth following
Using 2 Arduino Uno's with an SD card shield and the SD card libraries, and a working serial data diode design, I hope to build a system to transfer files from one SD card to another without the possibility for the receiving side to talk back to the transmitting side.

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:://

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".

  • Log 0

    Int-Mosfet06/09/2017 at 03:32 0 comments

    So this is my first log, I've been busy with work, and spending time with my SO. I've been able to get my prototypes I'm going to work on built, the main thing now is software. I'm going to start slow, just sending (hopefully it works) one whole file over serial port, with hardcoded names in the code. But I would be very pleased if I could, say, push a button, my code scans the SD card for all the file names (saves those as strings, uses those strings to open files for reading and then transferring those strings, with headers or markers that it's a file name, and opening a file on receiver and being able to close after copying over; this is my vision right now).

    Today I had a couple of hours to work (and I wasn't exhausted from coding/designing/tracking bugs down all day) and was able to copy a file back to the same SD card, worked like a charm. I'm thinking it would be wise to make a copy of files, then ready that for transfer, just in case something happens, the original file shouldn't be touched otherwise.

    I'm trying to learn Eagle to make my first board, it's going to be a really simple board but I've never made my own board, it always gets done for me and I program them or suggest design changes. If I could get that done for a small price, would be great, but another side of me says to learn the CAD program and make a board. I don't like how Eagle needs to be online though, may switch to KiCAD because of that.

    Anyway, enough blabbing, that's a small status update right now, main thing is I'm happy I can copy files to SD card by dicing up the file into buffers of 64 bytes, this gives me a little more confidence my idea will work how I thought it would.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates