Software

Many network protocols require bidirectional communication, which is prevented by data diodes. We developed pydiode, an open-source Python package for reliably sending data through a data diode.

pydiode Protocol

Bidirectional network protocols (e.g., TCP) handle packet loss by requesting retransmission of lost packets. This is not possible when using a data diode, since the receiver physically cannot communicate with the sender.

The pydiode protocol minimizes packet loss by enforcing a user-specified maximum bitrate. Also, pydiode transmits each chunk of data a configurable number of times, for resilience against lost packets. Finally, pydiode compares a SHA-256 digest of the received data to a digest of the sent data, and exits with an error if the digests don’t match.

pydiode is very reliable: when data chunks are sent twice (the default), we saw no errors.

Read Our Paper

Diode Transfer GUI

pydiode includes a robust command-line interface and GUI. pydiode sends streams of data, so it can be easily integrated with other software.

Diode Transfer's send and receive tabs. The send tab lets you add files to the file transfer queue. The receive tab lets you save files to a directory.

pydiode supports macOS and Linux, and is available on GitHub and pypi. We also plan to publish pydiode on the Mac App Store and as a Debian package.

The logo for pydiode's GUI: a one way traffic sign, with the text Diode Transfer and an arrow.
pydiode on GitHub

FAQ