KeibiDrop: Building Post-Quantum Encrypted File Sync

6,228 lines of Go, 140 hours, and lessons learned.

Index

Why Build This

Quantum computers will eventually break RSA and elliptic curve cryptography. That is not controversial. The question is when.

The real threat is "harvest now, decrypt later." Adversaries collect encrypted data today, knowing they can decrypt it once quantum computers arrive. If your data has long-term value, this matters now.

KeibiDrop is a file sync tool that uses post-quantum cryptography. It lets you share files between devices with encryption that will remain secure even after quantum computers arrive.

Cryptographic Choices

We use a hybrid approach combining classical and post-quantum algorithms:

Why hybrid? If ML-KEM is broken (it is new), X25519 still protects you. If X25519 is broken (quantum), ML-KEM still protects you. Defense in depth.

Go 1.24 includes ML-KEM in the standard library (crypto/mlkem), which made implementation straightforward.

Architecture

KeibiDrop has three components:

The connection flow:

  1. Both peers generate ML-KEM and X25519 keypairs
  2. Public keys uploaded to relay server
  3. Peers exchange fingerprints out-of-band (via chat, email, etc.)
  4. Direct P2P connection established over IPv6
  5. All file transfers encrypted end-to-end

We chose IPv6-only to avoid NAT traversal complexity. No STUN/TURN servers means no metadata leakage to third parties.

FUSE Filesystem Challenges

KeibiDrop mounts as a folder on your computer. Drag files in, they appear on the peer. No special apps needed.

Building a FUSE filesystem was the hardest part. Challenges included:

Cross-Platform Development

One codebase runs on macOS (Intel + Apple Silicon), Windows, Linux, iOS, and Android.

The stack:

The result is a 20MB binary. Compare that to Electron apps that ship 500MB of Chromium.

Lessons Learned

Total time: 140 hours. Professional estimates for similar projects: 6-12 months.

Speed comes from depth. Having built similar systems before means fewer wrong turns.