Introduction

CurvedSalsa is a program capable of encrypting/decrypting files with the ChaCha variant of Salsa20 (Snuffle 2008) via a shared key calculated from a Diffie-Hellman-Key-Exchange using D. J. Bernstein's  curve25519.

It is written in C/C++ using the following libraries/3rd-party-code:

In a nutshell it works like this:
Alice wants to send a confidential file to Bob over an unencrypted/insecure line. Bob and Alice exchange their public keys in an authenticated way (i.e. via phone or personally). The public keys can be exchanged over an insecure line, but must be authenticated to prevent man-in-the-middle attacks. Alice encrypts/signs the file with a shared secret key composed from Bob's public key and her own private passphrase. Bob decrypts/checks the signature of the file by calculating the same shared secret key from Alice's public Key and his private passphrase.
Neither the private keys nor the shared secret itself are ever exchanged.

This is basically the same as using traditional RSA based private/public-key encryption but has some major advantages:

Screenshots

Download

A current development snapshot can be obtained from the Mercurial repository via:

hg clone http://www.miller-online.eu/hg/curvedsalsa

The changelog to the repository can be viewed here.

License

CurvedSalsa is released in the public domain.