Security

Note: Cryptocat is currently Beta software.
The Security page is currently incomplete and will be elaborated once the software is considered stable.

Encryption Overview

Cryptocat uses a TextSecure-based encryption protocol that combines a forward-secure ratchet with a zero round-trip authenticated key exchange. As a transport layer for encrypted messages, Cryptocat adopts the OMEMO Multi-End Message and Object Encryption standard, which also gives Cryptocat multi-device support and allows for offline messaging.

Every Cryptocat device owns a long-term identityKeyPair which helps with the establishment of the initial authenticated key exchange. This key pair also serves to sign the device's signedPreKey, an ephemeral public key that also is mixed into the authenticated key exchange. The signedPreKey is also shipped with 100, unsigned, one-time-use preKeys, and is regenerated and re-signed every week.

Between messages, Cryptocat maintains a forward-secure ratcheting chain that derives new ephemeral key pairs that keep their chain of authenticity by mixing in with the authenticated key exchanged via a Hash-Based Key Derivation Function (HKDF).

Primitives

Threat Model

Cryptocat makes the following assumptions:

Security Goals

Given our threat model, Cryptocat aims to accomplish the following security goals:

Miscellaneous Security Features

Aside of the message encryption protocol, Cryptocat adopts the following security features in order to provide a generally more robust experience across the client:
Follow Cryptocat on Twitter
English - Français - Català
"Cryptocat" and the Cryptocat logo are registered trademarks.
Copyright © 2016 Nadim Kobeissi, all rights reserved.