# Introduction

Kryptor is a simple, modern, and secure file encryption and signing tool for Windows, Linux, and macOS.

It aims to be a better version of [age](https://github.com/FiloSottile/age) and [Minisign](https://jedisct1.github.io/minisign/) to provide a leaner, user friendly alternative to [GPG](https://gnupg.org/).

<figure><img src="https://1398872273-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQ3mYNSOjNkHuQB7Nyt%2Fuploads%2FLYwzNSZXguKmCDazB8N8%2Fkryptor.gif?alt=media&#x26;token=78e8fd1f-1527-4e7d-a1de-27607f3db5a4" alt=""><figcaption></figcaption></figure>

## Download Kryptor

### Pre-built binaries

* [Windows (x64)](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-windows-x64.zip) ([Kryptor signature](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-windows-x64.zip.signature)) ([SHA-256](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-windows-x64.zip.digest))
* [Linux (x64)](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-linux-x64.zip) ([Kryptor signature](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-linux-x64.zip.signature)) ([SHA-256](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-linux-x64.zip.digest))
* [macOS (x64)](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-macos-x64.zip) ([Kryptor signature](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-macos-x64.zip.signature)) ([SHA-256](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-macos-x64.zip.digest))
* [Linux (ARM64)](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-linux-arm64.zip) ([Kryptor signature](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-linux-arm64.zip.signature)) ([SHA-256](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-linux-arm64.zip.digest))
* [macOS (ARM64)](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-macos-arm64.zip) ([Kryptor signature](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-macos-arm64.zip.signature)) ([SHA-256](https://github.com/samuel-lucas6/Kryptor/releases/latest/download/kryptor-macos-arm64.zip.digest))

For instructions on verifying the signatures and digests, please see the [Installation](https://www.kryptor.co.uk/installation#verifying-signatures) page.

{% hint style="success" %}
Please follow the project on [GitHub](https://github.com/samuel-lucas6/Kryptor) to stay up to date.
{% endhint %}

### Package managers

<table data-header-hidden><thead><tr><th>Software</th><th>Command</th><th data-hidden></th></tr></thead><tbody><tr><td><a href="https://community.chocolatey.org/packages/kryptor">Chocolatey</a> (Windows)</td><td><code>choco install kryptor</code></td><td></td></tr><tr><td><a href="https://scoop.sh/">Scoop</a> (Windows)</td><td><code>scoop bucket add extras; scoop install kryptor</code></td><td></td></tr><tr><td><a href="https://brew.sh/">Homebrew</a> (macOS)</td><td>Help wanted!</td><td></td></tr><tr><td><a href="https://aur.archlinux.org/packages?O=0&#x26;SeB=nd&#x26;K=kryptor&#x26;outdated=&#x26;SB=p&#x26;SO=d&#x26;PP=50&#x26;submit=Go">AUR</a> (Arch Linux)</td><td><code>yay -S kryptor</code> (from source) or <code>yay -S kryptor-bin</code> (published binary)</td><td></td></tr><tr><td><a href="https://search.nixos.org/packages?channel=unstable&#x26;show=kryptor&#x26;from=0&#x26;size=50&#x26;sort=relevance&#x26;type=packages&#x26;query=kryptor">NixOS</a></td><td><code>nix-shell -p kryptor</code></td><td></td></tr></tbody></table>

{% hint style="success" %}
Up for maintaining a package? [Let's talk](#contact)!
{% endhint %}

## Source code

You can find the source code on [GitHub](https://github.com/samuel-lucas6/Kryptor).

## License

Kryptor is licensed under [GPLv3](https://github.com/samuel-lucas6/Kryptor/blob/master/LICENSE).

## Contact

If you'd like to report a bug, provide feedback, ask a question, or need technical support, [GitHub](https://github.com/samuel-lucas6/Kryptor/issues/new/choose) is the place to go.

To report a vulnerability, please see the [SECURITY.md](https://github.com/samuel-lucas6/Kryptor/blob/master/SECURITY.md) file.

For other enquiries, please email me at `samuel at samuellucas dot com`.

## Donate

If you've found the software useful or just approve of the design and goals, please consider donating. As a student, every little helps, and I will be eternally grateful.

* PayPal: [samuellucas6](https://www.paypal.com/paypalme/samuellucas6)
* Monero: `46hQy5JebdE5L3XsCAwh9tQ6zVA4631JQQb5f9mFJWQ99XaH1SUs7CDPq5QPnKq74rbzGZPxFQD9K45UYxq211V8C2F5iVD`

## Goals

Kryptor aims to be better than a combination of [age](https://github.com/FiloSottile/age) and [Minisign](https://jedisct1.github.io/minisign/) in terms of security and usability. The use case is to protect files for backups and sharing, with a focus on limiting metadata.

It's not attempting to be a complete replacement of GPG. That would lead to similar problems, such as considerable complexity and too much code to single-handedly audit.

### Simple

* No [cryptographic agility](https://www.imperialviolet.org/2016/05/16/agility.html)/config options.
* A [limited](https://www.kryptor.co.uk/usage) number of command-line options.
* Allow some options to be skipped to shorten commands.
* Encryption and signing support to avoid having to use different tools.
* Support for passphrases, symmetric keys, and asymmetric keys.
* Encryption of multiple files and directories to avoid having to use different tools.
* Optional file name encryption and overwriting of input files.
* Short public keys that can be copied and pasted or shared as files.
* Generate key pairs without having to use a separate keygen program.

### Secure

* The [latest and greatest](https://www.kryptor.co.uk/features#security) cryptographic algorithms.
* Rely on a [widely used](https://doc.libsodium.org/libsodium_users), [fast](https://monocypher.org/speed), and [audited](https://www.privateinternetaccess.com/blog/libsodium-v1-0-12-and-v1-0-13-security-assessment/) cryptographic library.
* [Post-quantum secure](https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.html?nn=433196) symmetric cryptography.
* [Pre-shared key](https://www.wireguard.com/protocol/) support (or [keep your public key secret](https://crypto.stackexchange.com/q/119226/102678)) for [post-quantum secure](https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Brochure/quantum-safe-cryptography.html?nn=433196) key exchange, unlike older versions of [age](https://github.com/FiloSottile/age/discussions/231) ([v1.3.0](https://github.com/FiloSottile/age/releases/tag/v1.3.0) onwards has hybrid ML-KEM-768).
* AEAD [stream encryption](https://www.imperialviolet.org/2014/06/27/streamingencryption.html) with [key commitment](https://eprint.iacr.org/2022/268), unlike [age](https://github.com/FiloSottile/age/commit/2194f6962c8bb3bca8a55f313d5b9302596b593b).
* [Sender authenticated](https://neilmadden.blog/2018/11/26/public-key-authenticated-encryption-and-why-you-want-it-part-ii/) key exchange for hybrid file encryption (with some [caveats](https://www.kryptor.co.uk/security-limitations#multi-recipient-sender-authentication)), unlike [age](https://github.com/FiloSottile/age/discussions/229) (without [secret public keys](https://words.filippo.io/age-authentication/)).
* Private key encryption for protection at rest, unlike [age](https://github.com/FiloSottile/age/discussions/252) [by default](https://github.com/FiloSottile/age?tab=readme-ov-file#passphrase-protected-key-files).
* Sign the whole signature file and support [non-prehashed](https://cryptologie.net/article/497/eddsa-ed25519-ed25519-ietf-ed25519ph-ed25519ctx-hasheddsa-pureeddsa-wtf/) signatures, unlike [Minisign](https://github.com/jedisct1/minisign/issues/104).
* Make encrypted files completely [indistinguishable from random](https://petsymposium.org/2019/files/papers/issue4/popets-2019-0056.pdf) to limit metadata, unlike [age](https://github.com/C2SP/C2SP/blob/main/age.md).

### Documented

* The [protocol](https://www.kryptor.co.uk/specification) is explained in sufficient detail to not have to read much code.
* Readable [code](https://github.com/samuel-lucas6/Kryptor/tree/master/src).
* It's [clear](https://github.com/samuel-lucas6/Kryptor/blob/master/SECURITY.md) how to report security vulnerabilities.
* A thorough [tutorial](https://www.kryptor.co.uk/tutorial) to help newcomers.
* There's a [roadmap](https://www.kryptor.co.uk/roadmap) and [changelog](https://www.kryptor.co.uk/changelog).
* [Commits](https://github.com/samuel-lucas6/Kryptor/commits/master) have decent naming to track individual changes.

### Out of scope

* Backwards compatibility (for [major versions](https://semver.org/)): Kryptor uses an indistinguishable from random file format for encryption, meaning there's no way to tell if a file was encrypted by Kryptor or which version was used from looking at the contents. Furthermore, almost every protocol has flaws/limitations that cannot be corrected without breaking changes. A good example is adding support for post-quantum algorithms, which are still being researched/standardised.
* Compatibility with other tools and protocols: you cannot be better by being the same, and compatibility on top of something new just increases complexity. There are limitations with other programs that need to be addressed, which requires breaking changes, such as the lack of [authenticated key exchange](https://github.com/FiloSottile/age/discussions/229) and [key commitment](https://github.com/FiloSottile/age/commit/2194f6962c8bb3bca8a55f313d5b9302596b593b) in [age](https://github.com/FiloSottile/age).
* Key distribution: just share your public keys on a personal website or social media account. If you only use them to communicate with friends or family members, you can share them via a messaging app like [Signal](https://www.signal.org/).
* Disk encryption: this is completely different to file encryption. It's best left to [another](https://gitlab.com/cryptsetup/cryptsetup/) tool.
* Anything related to email: although you can, of course, attach encrypted files and signature files to emails.
* A GUI and mobile apps: a lot easier said than done. I simply don't have the time.
* A [password store](https://www.passwordstore.org/): there are [numerous problems](https://rot256.dev/post/pass/) with this approach. Just use a GUI password manager like [Bitwarden](https://bitwarden.com/) or [KeePassXC](https://keepassxc.org/).
* Things few people *currently* use: for example, [YubiKeys](https://en.wikipedia.org/wiki/YubiKey). It might be a '*cool*' feature to have, but it's useless for the majority of people.

## Acknowledgements

Huge thanks to everyone in this section!

### Contributors

* Everyone who has reported bugs and provided feedback on the design, code quality, UX, and documentation.
* [replydev](https://github.com/replydev) for making and maintaining [AUR](https://aur.archlinux.org/packages?O=0\&SeB=nd\&K=kryptor\&outdated=\&SB=p\&SO=d\&PP=50\&submit=Go) packages.
* [arthsmn](https://github.com/arthsmn) for making and maintaining a [NixOS](https://search.nixos.org/packages?channel=unstable\&show=kryptor\&from=0\&size=50\&sort=relevance\&type=packages\&query=kryptor) package.

### Dependencies

* Frank Denis for writing the [libsodium](https://doc.libsodium.org/) library.
* Loup Vaillant for writing the [Monocypher](https://monocypher.org/) library.
* Nate McMaster for working on the [CommandLineUtils](https://github.com/natemcmaster/CommandLineUtils) library.
* Alexandre Mutel for creating the [Monocypher.NET](https://github.com/xoofx/Monocypher.NET) library.
* ​Klaus Hartke, Trond Arne Bråthen, Adam Caudill, and everyone who contributed to the libsodium-net and [libsodium-core](https://github.com/tabrath/libsodium-core/) libraries.

### Cryptographers

* Daniel J. Bernstein for designing [ChaCha20](https://cr.yp.to/chacha.html), [Poly1305](https://cr.yp.to/mac.html), and [Curve25519](https://cr.yp.to/ecdh.html).
* Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, and Bo-Yin Yang for designing [Ed25519](https://ed25519.cr.yp.to/).
* Daniel J. Bernstein, Mike Hamburg, Anna Krasnova, and Tanja Lange for designing [Elligator](https://elligator.cr.yp.to/).
* Alex Biryukov, Daniel Dinu, and Dmitry Khovratovich for designing [Argon2](https://github.com/P-H-C/phc-winner-argon2).
* Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, and Christian Winnerlein for designing [BLAKE2](https://www.blake2.net/).

### Organisations

* [GitBook](https://www.gitbook.com/) for their free open source plan.
* [Tuta](https://tuta.com/) for donating their private email service.
* The [EFF](https://www.eff.org/) for making their [wordlists for random passphrases](https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases).
