Human friendly crypto library for storage and messaging for mobile, servers and front-ends.
C C++ PHP Java Python Objective-C Other
Latest commit 2b0282d Feb 16, 2017 @Lagovas Lagovas committed on GitHub delete brace

README.md

Themis provides strong, usable cryptography for busy people

Themis provides strong, usable cryptography for busy people


GitHub release Circle CI Platforms Coverage Status


Crypto library for storage and messaging for Swift, ObjC, Android, С++, JS, Python, Ruby, PHP, Go.


Themis is open-source high-level cryptographic services library for mobile and server platforms, providing secure data exchange and storage. Current stable release is 0.9.4, dated 22nd of November.

Themis provides four important cryptographic services:

  • Secure Message: a simple encrypted messaging solution for widest scope of applications. Just exchange the keys between parties and you're good to go! Two pairs of underlying crytosystems: ECC + ECDSA / RSA + PSS + PKCS#7.
  • Secure Session: session-oriented, forward secrecy datagram exchange solution with better security guarantees, but more demanding infrastructure. Secure Session works perfect as socket encryption, session security or (with some additional infrastructure) as high-level messaging primitive. ECDH key agreement, ECC & AES encryption.
  • Secure Cell: a multi-mode cryptographic container, suitable for storing anything from encrypted files to database records and format-preserved strings. Secure Cell is built around AES in GCM (Token and Seal modes) and CTR (Context imprint mode).
  • Secure Comparator: a Zero-Knowledge based cryptographic protocol for authentication and comparing secrets.

Themis works in most operating systems (see Availability), and is available for Swift (iOS, macOS), Objective-C (iOS, macOS), Java+Android, Ruby, Python, PHP, C++, Javascript (NodeJS), Go, Google Chrome.

We're also porting Themis features to different environments where people might need them: Redis module, PostgreSQL module

Themis was designed to provide complicated cryptosystems in easy-to-use infrastructure, designed with modern rapid development in mind:

  • EASY: Themis does not require users to obsess over parameters, cipher combination and yet achieve high levels of security
  • DO YOUR THING: Themis allows developers to focus on doing what is necessary: developing their applications.
  • BEST PRACTICE: Themis is based on best modern practices in implementing complicated security systems.

Themis is open source, Apache 2 Licensed.

Quickstart

  1. Fetch the repository: git clone https://github.com/cossacklabs/themis.git
  2. Have OpenSSL/LibreSSL + OpenSSL/LibreSSL Dev package (libssl-dev) installed at typical paths: /usr/lib, /usr/include.
  3. Have typical GCC/clang environment installed
  4. Type 'make install' and you're done (most of the cases)
  5. Dive into our wiki for the docs of language of your choice, take a look at docs/examples for examples.

It is really advisable to go the long way and read the docs, but god blesses the brave.

Languages

Themis is available for the following languages/platforms:

Platform Documentation Examples Version
🔶 Swift (iOS, OSX) Swift Howto docs/examples/swift CocoaPods
📱 Objective-C (iOS, OSX) Objective-C Howto docs/examples/objc CocoaPods
☕️ Java / Android Java & Android Howto jni example
♦️ Ruby Ruby Howto docs/examples/ruby Gem
🐍 Python Python Howto docs/examples/python PyPI
🐘 PHP PHP Howto docs/examples/php
➕ C++ CPP Howto docs/examples/c++
🍭 Javascript (NodeJS) NodeJS Howto docs/examples/js npm
🐨 Go Go-Howto docs/examples/go
🕸 С++ PNaCl for Google Chrome WebThemis project

Plugins

Themis-based plugins are built to enable Themis features across various platforms and products:

Availability

Themis supports the following architectures: x86/x64, armv*, various androids

It is checked to compile on latest stable versions of :

  • Debian 7.8+, CentOS 7, Ubuntu 14, Arch Linux 2014+
  • Windows XP+
  • OSX 10.9+
  • Android 4-5+ / CyanogenMod 11+
  • iOS8—iOS10+, x32/x64

We plan to expand this minuscule availability scope with broader set of platforms. If you'd like to help Themis arrive (or get better) on your favourite platform / language — get in touch.

Tutorials

As long as it is feasible, we'll accumulate list of all tutorials we publish on how to use Themis in different cases here:

Sample projects

During development, we frequently do Proof-of-Concept projects to test different assumptions. They serve as interesting demos of what Themis is capable of:

Demo Description Repo Blog post
0fc Anonymous web chat
* pythemis (Python)
* webthemis (C++ + HTML/JS)
repo blog post
sesto Secure storage
* pythemis (Python)
* webthemis (C++ + HTML/JS)
repo blog post
swift alps demo Secure communication (iOS app with Python server based on Secure Session)
* Swift wrapper
* pythemis (Python)
repo slides

Themis Server

If you'd like to experiment with Themis in more interactive environment, check out Themis Server, interactive debugging environment for Themis.

Documentation

Project's github wiki contains ever-evolving official documentation, which contains everything from how to use it to ways to contribute to it, with a brief explanation of cryptosystems and architecture behind main Themis library in between.

Communication

Twitter CossackLabs Blog Join the chat at https://gitter.im/cossacklabs/themis