Skip to content

Equim-chan/eae

Repository files navigation

eae

Release License

eae is a tiny CLI tool that helps encrypt/decrypt a single file using AEAD ciphers. The key is derived using scrypt. AES256GCM and ChaCha20Poly1305 are supported.

💡
For further documents, please refer to eae(1).

Install

You can view the release page for handy prebuilt binaries.

Build

To build eae, dep and goversioninfo are required. If you want to build the manpage, you need asciidoctor too.

$ git clone https://github.com/Equim-chan/eae.git $GOPATH/src/ekyu.moe/eae
$ cd $GOPATH/src/ekyu.moe/eae
$ make
$ make install
$ $GOPATH/bin/eae

Details

File format

The following values are all in little endian.

figure

Nonce counter

First, we generate a 12-byte cryptographically strong pseudo-random slice as nonceSeed, and a slice counter of 12-byte zero. When a new chunk is to be processed, nonce will be nonceSeed XOR counter, and then counter will increases itself by 0x1 in little endian. This is implemented in lib/aeadstream/aeadstream.go.

Technically, when chunk size is 256KiB (as in eae), and nonce size is 12 bytes, one single key(not passphrase) can be used to process at most 2^54 EiB of data.

License