"Any one who considers arithmetical methods of producing random digits is, of course, in a state of sin."
- John von Neumann
Introducing Jericho Comms
Jericho Comms is an end-to-end encrypted, group text communications program which provides information-theoretic security for all messages that are sent and received. The goal is to deliver a high assurance, encrypted communications program with plausible deniability for activists, human rights lawyers, journalists, whistleblowers and citizens of the world that need high assurances that their communications are free of censorship, control and eavesdropping from the world's governments and intelligence agencies.
To defeat the world's top intelligence agencies, citizens of every country need to raise their communications security to a level where no-one can ever hope to break the encryption, regardless of advances in computing power, cryptanalysis, mathematics or quantum physics.
Advantages in using Jericho Comms
Since the global surveillance disclosures (Snowden revelations) starting in June 2013, there have been a number of secure messaging solutions released. This software was one of the earliest counter-offensives to these revelations with a fully functional prototype release in August 2013. This software has a number of strong advantages compared to other secure messaging solutions whose designers have not accounted for or understood the entire breadth and depth of the revelations. Most of them aim for mass market, average grade security and do not adequately protect their users against the full capabilities of the NSA, GCHQ and TAO.
The advantages of this software are:
- Fully open source – anyone can freely contribute, distribute, download, modify and use the software.
- Simple to understand and use – anyone can use including journalists and novice computer users.
- Runs on fully open source environments – no need to trust a closed source operating system.
- End-to-end encrypted – no service provider in the middle with ability to read user messages.
- Forward secrecy – compromise of a message or key does not compromise past or future messages.
- Plausible deniability – users under duress can provide a key that decrypts to a plausible message.
- Secure against quantum computers – secure against future advances in physics and computing.
- Information-theoretically secure – messages remain secure even against unlimited computing power.
- Automated decoy messages – hides the real number of messages being sent across the network.
- Limited network metadata – hinders traffic fingerprinting, analysis and automated remote exploits.
- Not wholly reliant on NIST – standards are combined with algorithms from trusted cryptographers.
- Full design whitepaper – design is verifiable and auditable for cryptographers and security researchers.
- Critical code is unit tested – strong confidence that the cryptography and software works correctly.
- Dependencies are vetted – by avoiding use of package managers (NPM, Composer), libraries are not blindly trusted.
- Code is well written and commented – easily verifiable for security researchers and other developers.
- Code is written to secure coding guidelines – coded defensively with knowledge of common pitfalls.
- Code is written in memory safe languages – limited attack surface for buffer overflows and exploits.
- Code is developed on an air-gapped system – prevents subtle infiltration of the code repository.
- Code and releases are signed with GnuPG – users can trust in the code's authenticity and integrity.
- Signing key fingerprint published on a blockchain – solid verification of the author's true public key.
- Signed warrant canary with every release – alerts users if the author is under duress or court order.
- Not developed in the United States – author cannot be threatened with National Security Letters.
- Not government or defense agency funded – author has no questionable affiliations or loyalties.
- Simple user guide and installation instructions – prevents user error and misconfiguration issues.
To accomplish the program's design goals, the software uses a True Random Number Generator (TRNG), the One-Time Pad (OTP) cipher for message encryption and a one-time Message Authentication Code (MAC) for message authenticity.
To provide additional protection of the one-time pad database during the initial key exchange between users, a strong password/passphrase and keyfile can be used. The program will then use a cascade of password Key Derivation Functions (KDFs), stream ciphers and MACs to encrypt and authenticate the database.
Other features of the program include a strong MAC for authentication between the clients and the server, a decoy messaging system to frustrate traffic analysis and a self destruct mechanism which can wipe all the client databases in case of an emergency.
One-time pads are not frequently used outside of government and military networks because they are somewhat inconvenient to use. This means they have generally only been reserved for truly important communications such as the highest-level Allied communications in World War II or the Washington-Moscow hotline. They are still used by the US government where heavily armoured trucks transport random numbers to the Pentagon.
The main problems are that the user needs to collect a lot of truly random data and the one-time pads must be exchanged through a secure channel, e.g. delivered in person, before communication can take place. These are not insurmountable problems and the design of this software solves the main issues which make using one-time pads too impractical. The whole system is very simple to set up and use, including generating truly random key material, exchanging the one-time pads securely, key management and communicating securely.
The program itself can be downloaded from the project's website and the full source code, which is available on GitHub, is released under the General Public License Version 3.0.
Enforce your right to privacy
In the wake of the NSA spying revelations it is clear that none of our communications are secure any longer. The NSA is actively monitoring, collecting, decrypting and indefinitely storing the whole world's communications as it transits their networks. Any traffic passing through any of the Five Eyes countries (US, UK, Canada, Australia and NZ) is monitored, collected and stored indefinitely. Any and all of your internet traffic, phone calls, email, chat messages and anything else are vulnerable to the Five Eyes spy agencies. This is no longer conspiracy theory, it is actually happening.
This is a massive breach of international human rights and it is an attack on the liberty, freedom and privacy of every person on the planet. It has huge implications for our democracy, freedom of the press, attorney-client privilege and freedom of speech. The Universal Declaration of Human Rights states clearly:
- Article 3: Everyone has the right to life, liberty and security of person.
- Article 12: No one shall be subjected to arbitrary interference with his privacy, family, home or correspondence, nor to attacks upon his honour and reputation. Everyone has the right to the protection of the law against such interference or attacks.
It is time to enforce your right to privacy by using encryption the spies can never crack.
What about other types of encryption?
Most companies and organisations worldwide are using Suite B Cryptography algorithms which have been publically published by the NIST for security of unclassified, non-military government networks. This has led most other governments, companies and individuals worldwide to adopt these standards thinking that if they are secure for the government then they must be secure for them too. In this NSA leak we see privileged, top secret information that the NSA's real plan has actually been to covertly influence these encryption policies, designs, standards and specifications to make them amenable to advanced cryptanalytic capabilities of the NSA and exploitable through their signals intelligence collection network with prior knowledge of the modification. The aim being that everyone in the world believes their systems' are secure, but in reality, and only known to the NSA, their systems are exploitable. A lot of software projects and companies still do not understand this and continue to use standards from the NIST. This gives them and their users a false sense of security that their systems are secure from the NSA.
There has been evidence of one encryption standard that was found to contain an NSA backdoor. It is absolutely naïve to assume this was the only standard that was compromised in the 25 years that the Memorandum of Understanding between NIST and NSA has existed. Some reputable cryptographers have already found problems with the NIST's elliptic curve standards. The truth is, any NIST/NSA standard could be subtly compromised in ways unbeknownst to the public cryptography community. In the 1970s the NSA made tweaks to S-Boxes to help strengthen the DES standard, but no-one at the time understood why. It took public cryptographers another two decades to discover differential cryptanalysis. It is highly likely the NSA are still years ahead of the public cryptography community in the area of cryptanalysis. What we think is secure today may not actually be secure at all when trying to protect communications from the NSA.
Finally, none of the cryptography algorithms being generally used today (RSA, DH, AES, SHA2 etc) are actually mathematically proven to be unbreakable and the ciphers are not information-theoretically secure. They are thought to be secure because they involve methods that assume solving a particular problem e.g. integer factorization or discrete logarithms is hard and would require long periods of time and/or large amounts of computing power to crack the encryption. When people say that an algorithm like AES is secure, it is usually followed by the reasoning that a lot of smart people have tried to break AES and have not succeeded. This is the naïve logic that leads the public to use weak ciphers and allow the NSA/GCHQ to break all of the world's communications. It's easy to forget that the NSA employs the smartest mathematicians and cryptographers. Also that those smart cryptanalysts are not obligated to publish their results in cryptanalysis due to non-disclosure agreements with the NSA as a condition of their employment. Also the yearly multi-billion dollar black budgets they devote to breaking cryptography including developing a quantum computer. Also the standards themselves being deliberately weakened by the NSA. Also that the NSA are years ahead in cryptanalysis. Also that there is confirmed proof that the NSA have in-house (non-public) techniques to crack block ciphers like AES. With all this in mind, how then is the qualification that the "world's best" public cryptographers cannot break a particular algorithm any assurance of security against the NSA?
Why would you naïvely trust the US government's encryption standards that they want you to use, especially when they have shown their duplicity and are running a mass surveillance system in secret?
Currently the program is fully functional and usable on PCs. However it is still in active research and development to try and cover off a broad spectrum of security threats such as traffic fingerprinting and targeted attacks that the NSA may be able to deploy against users of the program. There are also ideas and functionality in development to make it usable on various platforms e.g. tablets and mobile devices. It is hoped that users, developers, security researchers and cryptographers will provide additional ideas and security analysis so the software can be improved and made useful for everyone.
We hope that with the concepts and designs used in this software, we can prove that using one-time pads is actually a viable option outside of classified government and military networks. We hope that this project enlightens other developers to create other solutions using one-time pads. We have already seen new one-time pad based software being developed which was inspired by this project. We hope to discourage users from using the US government's compromised encryption standards that everyone else is using. We hope to encourage users to use well written, tested, security reviewed open source software and hardware.
As with any security software you should verify the software yourself and read the code to make sure it does not contain any problems. With this software you can run it live in the browser and step through the code line by line with Firebug or any of the tools built into your web browser. As you will see it should work exactly as described in the documentation. A lot of the heavy lifting e.g. cryptographic hashing has been done in a few trusted external libraries, the outputs of which have been verified against the specification documents. The aim is not to "roll-your-own" cryptography, but use algorithms from trusted authors and proven unbreakable ciphers like the one-time pad to bring a secure solution together. One-time pads are one of the simplest ciphers to implement compared to modern encryption standards (elliptic curves, RSA, AES or block ciphers), which often requires a lot of knowledge in mathematics. This means it is less likely to get the implementation wrong, compromising security through timing and other side channel attacks.
Feedback can be discussed on Github. You are free to discuss the program, possible features, installation issues, security issues, encryption, privacy and anti-surveillance techniques there. There is also a specific subreddit which focusses on information theoretic security research and development (e.g. one-time pads).
A road map of future improvements can be found on Github. For the next phase of the project we will be adding a responsive version for mobile devices. After that we have some other ideas and we can potentially look into securing file transfers, phone calls and other communications.
Developers with skills in other languages (e.g. Rust) could consider developing secure client alternatives for other platforms using the current design and software as a reference implementation.
Supporting the project
The whole code base (client and server) is open source (released under the GPL v3 licence) and free for anyone to use or modify for their own use. Each download contains the full source code necessary to run the program.
Constructive feedback from anyone is welcome and you are free to contribute to the project with ideas, bug reports or source code on GitHub. Source code contributions will be strictly managed via a Pull Request from Github and heavily scrutinized for any security weaknesses. It will be important to remain vigilant against the NSA or other governments who may try to corrupt the code base, introduce weaknesses or attempt to water down the security of the program. Contributions are welcome if you truly believe in the project and are not trying to undermine the security of the software.
The project is essentially non profit and the program is being developed for free. However we invite you to make donations to help with domain renewals, website hosting costs and future security audits so we can make this program really useful and trustworthy. The sending addresses are listed at the bottom of the page.
Version 1.5.4 released
Jericho Comms version 1.5.4 released with compatibility for Ubuntu 18.04 and PHP 7.2, also multiple language support for sending/receiving messages, UI improvements if running low on pads, TRNG output analysis improvements, security hardened server installation script, changed server database to PostgreSQL and converted the client application to an SPA.30 Dec 2019
Version 1.5.3 released
Jericho Comms version 1.5.3 released with compatibility for Ubuntu 16.04 and PHP 7, also a simple automated script to install and configure the server software without any manual work.23 Apr 2017
Version 1.5.2 released
Jericho Comms version 1.5.2 released with improved TRNG design and stronger cascaded key derivation for encrypting the one-time pad database for transport.17 Jun 2016
Version 1.5.1 released
Jericho Comms version 1.5.1 released with better network failure resiliency, improvements for mitigating timing attacks on the server API and added a failsafe CSPRNG in case of failure in the HTML5 Web Crypto API.24 Dec 2015
Version 1.5 released
Jericho Comms version 1.5 released with cascade encryption and authentication of the one-time pad database for secure transport, automated decoy message sending at random intervals to frustrate traffic analysis and desktop alerts for incoming chat messages.9 Sep 2015
Version 1.41 released
Jericho Chat version 1.41 released with a small bug fix to the user interface.19 Oct 2014
Version 1.4 released
Jericho Chat version 1.4 released with modifed TRNG algorithm after a review, also the ability to use your own custom random data with the program.5 Oct 2014
Version 1.3 released
Jericho Chat version 1.3 released with group chat between 2-7 users, a new secure server protocol and new true random number generator.3 Aug 2014
Version 1.2 released
Version 1.2 released with improved entropy collector and randomness extraction process.1 Nov 2013
Version 1.1 released
Version 1.1 released with a few minor improvements also new server and client installation guides.28 Sep 2013
Jericho Encrypted Chat Launched
Jericho Encrypted Chat v1.0 with information-theoretically secure encryption is now freely available for everyone.28 Aug 2013