Kryptor
  • Introduction
  • Features
  • FAQ
  • Installation
  • Usage
  • Tutorial
    • Running Kryptor
    • Specifying files
    • Entering a passphrase
    • Encrypting files for yourself
    • Encrypting files for others
    • Encryption options
    • Decrypting your files
    • Decrypting received files
    • Decryption options
    • Signing files
    • Signing options
    • Verifying signatures
    • Generating a new key pair
    • Key pair options
  • Specification
  • Known limitations
  • Changelog
  • Roadmap
Powered by GitBook
On this page
  • General
  • Best practices
  • Contributing
  • Crypto
  • Coding

FAQ

Last updated 1 month ago

General

Is Kryptor compatible with age and Minisign?

No, it uses newer cryptographic primitives and different file formats to address with both tools. However, Kryptor isn't perfect either.

Why should I use Kryptor over the alternatives?

Three words: security, privacy, and usability.

  1. Kryptor uses cryptographic algorithms, offering . It also addresses security of tools like and .

  2. Unlike most tools, Kryptor limits metadata by using an indistinguishable from random encrypted file format. Encrypted files have no identifiable headers and are randomly padded. File names can also be encrypted.

  3. Encrypt/sign multiple files and directories at once. No need to specify an output file path. No config options. Short public keys. Fewer command-line options than whilst also supporting encryption.

When should I not use Kryptor?
  • If you want to frequently access lots of your encrypted files (e.g. multiple large directories), you should use or .​​

  • If you want to encrypt a disk, you should use on Windows, on Linux, and on macOS.

  • If you want to use SSH keys, you should use . However, SSH keys aren't recommended by the author.

  • If you want something based on an industry standard, you're with .

Has Kryptor been audited?

No, audits are extremely expensive (e.g. $5,000+). A very generous donation would be required to cover the cost.

However, some cryptographers were contacted for design feedback and advice, and are used for the cryptography, and it should be possible to single-handedly audit the code.

I forgot my passphrase/lost a key, can I recover encrypted files?

No, it would take an impractical amount of time to bruteforce the encryption keys unless you used a very weak passphrase/low entropy key.

Is it safe to use Kryptor for long-term backups?

To ensure you can decrypt files in the future, you can either:

  1. Keep a copy of the executable and source code of the version used to encrypt files. The .NET version will eventually go out of support, but you can edit the version in the source code and rebuild. The main risk is that further changes may be needed to get things working due to .NET/dependency changes, which would require some familiarity with C#.

  1. Re-encrypt files when a new major version is released.

The second approach is recommended if possible.

Does Kryptor connect to the internet?

Best practices

Which method of encryption should I use?
  • For yourself: passphrases or random pre-shared keys. Keep them in a password manager.

  • For others: your private key and their public key. Keep your private key backed up on external storage (e.g. memory sticks).

How do I choose a strong passphrase?
What's a keyfile?

A keyfile is a file that's combined with or used instead of a passphrase. If combined, it acts like 2FA. Used alone, it's weaker than a passphrase in that it's stored on disk and can't be memorised.

How do I choose a keyfile?

However, if you insist on choosing a regular file, make sure it's a compressed file type (e.g. .zip).

Should I store keyfiles in the cloud?

No, they're not encrypted. It would be like uploading a text file containing your passphrase.

How do I share my public key?

Send people your public key string or .public file. Either could also be put on a personal website.

How do I back up my private key?

Navigate to the ~/.kryptor directory and copy any .private files to external storage (e.g. memory sticks). Keeping private keys offline is good practice even though they're encrypted.

How do I share a pre-shared key?
When should I rotate my key pair?

When you think the private key has been compromised, which shouldn't happen if you keep it offline and use a strong passphrase.

Contributing

How do I report bugs?
How do I report vulnerabilities?
Can I help package Kryptor?

Crypto

Why ChaCha20-Poly1305?
How does the key-committing ChaCha20-Poly1305 padding fix work?
Why BLAKE2b?
Why Argon2id?
Why randomised padding?

Coding

How do I build from source?
Why are Kryptor executables ~30 MiB?
What programming language is Kryptor written in?
What versioning do you use?

Sort of. Backwards compatibility for major versions is not a goal for Kryptor, as explained . However, Kryptor doesn't get updated that frequently. Breaking changes will get grouped together and require significant planning and sometimes waiting for dependencies to get updated.

No, unless you use the -u|--update option to check for updates via , as explained .

Just let Kryptor for you and store it in a password manager like or .

A is equivalent to a random symmetric key stored on disk. Using a regular file as a keyfile is equivalent to hashing the file, so the file should be high in entropy (e.g. compressed).

Just let Kryptor for you and back it up on external storage (e.g. memory sticks).

Using an with enabled.

Please use the Bug report issue template on .

Please read the file on GitHub.

Yes, please .

It's fast, , doesn't require hardware support, and ChaCha20 has a than AES.

The latter 32 bytes of block 0 (after the Poly1305 key) are prepended to the ciphertext as a commitment. For decryption, this commitment is checked in constant time alongside the tag, eliminating a timing difference. some code.

This is similar to the padding fix discussed in . Credit goes to Loup Vaillant for the block 0 .

It's than SHA-2 and SHA-3 whilst having a larger security margin than and being as real-world as SHA-3.

Argon2 won the in 2015 and is now recommended over other password-based key derivation algorithms, such as PBKDF2 and scrypt.

Argon2id is used because it's the recommended mode in the and Argon2i is vulnerable to plus weaker in terms of GPU/ASIC resistance.

padding, which is deterministic, was originally implemented. However, convinced me that it to have deterministic file sizes when trying to make files indistinguishable from random.

Instructions can be found .

Because the .NET runtime is so users don't have to install .NET themselves, and compilation is enabled to improve startup performance.

using .

.

generate a passphrase
KeePassXC
Bitwarden
end-to-end encrypted messenger
disappearing messages
GitHub
SECURITY.md
standardised
higher security margin
Here's
How to Abuse and Fix Authenticated Encryption Without Key Commitment
idea
faster
BLAKE3
secure
Password Hashing Competition
RFC
attacks
PADMÉ
Covert Encryption
seems wrong
included
ReadyToRun
C#
.NET 6
Semantic versioning
post-quantum security
age
Minisign
Minisign
Cryptomator
VeraCrypt
VeraCrypt
LUKS
FileVault
age
stuck
GPG
libsodium
Monocypher
GitHub
here
here
get in touch
problems
limitations
generate a keyfile
random keyfile
strong, fast, and modern
here