MightyXOR is an open source cryptography software suite based on .NET 6 with the primary aim of being information-theoretically secure, meaning its encrypted files cannot be decrypted even if an adversary has unlimited computing resources and time.
It supports various en- and decryption algorithms and techniques, including
- the one-time pad (OTP),
- Shamir's secret sharing algorithm (SSS) and
- plausible deniability.
Given the increasing usage of highly efficient quantum computers, the question arises, when – not if – these will be able to break widely used cryptography algorithms like AES or RSA in a short space of time. Thus, MightyXOR's purpose is to provide a secure environment for especially sensitive data by means of information-theoretically secure techniques. One of these techniques is the one-time pad. It was mathematically proven that the one-time pad cannot be broken – even with vast computational power.
To put it in a nutshell, we are pursuing the following goals:
- Security on all levels
- Reliable, correctly implemented algorithms such as the OTP
- Cryptographically secure, (hardware-)generated true randomness
- Key distribution using Shamir's secret sharing scheme
- Plausible deniability
- Free, open source software
- Understandable, maintainable, readable source code
In the future, we intend to extend MightyXOR to support more techniques:
- Further information-theoretically secure cryptosystems
- A more efficient sharing scheme, namely the (k, n)-threshold secret sharing scheme described in this paper
- An API for hardware random number generators (HRNGs)
- Cross-plattform support for Linux and macOS concerning MightyXOR's graphical user interface
- Implementation of more cryptographic algorithms (AES, DES, RSA, NaCl etc.)
- C port for higher efficiency
- Better performance for large files > 4 GB
MightyXOR provides a graphical user interface which currently only runs on Windows operating systems.
A cross-plattform CLI is being worked on.
The GUI is based on Windows Forms and will be replaced by a WPF-based application as soon as possible. As depicted in this screenshot, it is divided into several components:
The encryption menu allows both ordinary OTP-based encryption and an extended one-time pad with plausible deniability. In both cases, MightyXOR offers advanced options to customize the encryption process to your choice.
In the decryption menu, an encrypted file can be decrypted using a key. If plausible deniability was used previously, MightyXOR behaves exactly as if it was not used. This way, an attacker would not recognize that an alternative key was involved.
MightyXOR also supports a secret sharing mode according to Adi Shamir's scheme based on polynomial interpolation. Using this mode, a given file can be split into N parts whereas K parts are required to restore the entire file.
It is recommended to combine MightyXOR's features in order to maximize the security. For instance, it may be feasible to encrypt a sensitive file with a OTP including plausible deniability and split both the encrypted file and keys afterwards. Under the correct circumstances, it is impossible to break this cryptosystem.
Good question. A port to C, C++ or Rust is planned, especially because Windows Forms is severely outdated.
The name should be self-explanatory. The exclusive OR really is mighty in cryptography.
No. At the moment, MightyXOR does not claim to offer the features a software such as VeraCrypt does. Comparing MightyXOR to other cryptography software is difficult since MightyXOR can be seen as a niche product. Furthermore, MightyXOR encrypts on the file level, whereas VeraCrypt and BitLocker encrypt on the volume level. Consider MightyXOR a useful extension to your cryptography toolset which you can use to en- and decrypt your especially sensitive data.
Any contribution to the MightyXOR project, be it documentation, testing or development is warmly welcome. As an MightyXOR developer, however, it should be your top priority to develop a secure, clean and easy-to-use software product. Security is crucial. Please refer to this guide for MightyXOR contributors for more detailled information.
Ideas for new features can be posted in the issues section. Please orientate yourself by the following aspects when proposing a new feature:
- Summary
- Motivation
- Detailed design
- optional: Drawbacks
- optional: Alternatives
Additionally, feel free to create pull requests. Be sure to (at least briefly) explain the points above.
The license is declared in this file.