Zenroom is a brand new, small and portable virtual machine for cryptographic operations. The Zenroom VM has no external dependencies, is smaller than 2MB, runs in even less memory and is ready for experimental use on many target platforms: desktop, embedded, mobile, cloud and browsers (webassembly).
The goal of this project is that of improving people's awareness of how their data is processed by algorithms, as well facilitate the work of developers to create along privacy by design principles using algorithms that can be deployed in any situation without any change.
Homepage
Download
Recent Releases
0.9.025 Jun 2019 08:42
major feature:
Completed high-level language implementation of Zencode and underlying zero-knowledge proof credential system Coconut, Elgamal and homomorphic encryption. Overall improvements to primitives and to AES-GCM crypto. Full implementation of authentication and secure petition signing. Several bug fixes and improvements targeting reliability, error reporting and portability. Removed many unused libraries, Schema refactoring. Working builds for python2/3, nodejs/wasm, golang, Android and iOS. Native integration in the mobile react-native app for DDDC petitions.
0.8.005 Nov 2018 17:55
major feature:
New Elliptic Curve Arithmetics (ECP2) with Twisted Curve Pairings (Miller-Loop). Hamming distance measurements on OCTET (bitwise). Example of ECP based ElGamal implementation of omomorphic encryption over integers for petition and tally, with verifications. Default encryption now AES-GCM with AEAD authenticated headers, examples using a public random IV. Support for Javascript's React-Native. Language bindings for Go lang, Python version 2 and 3. Zenroom virtual machine language design improvements to build and documentation, object introspection.
0.7.001 Oct 2018 08:17
major feature:
Adopted AES-GCM as default encryption method, downgraded CBC as weak. Fixes to the exposed API for complete usage in Zenroom-studio. Added seccomp kernel-level protection and insured unikernel functionality with provable isolation from network and filesystem access. Added language bindings, a Python module is now provided.
Switched to BLS383 curve for ECP operations and upgraded Milagro to version 4.12.0. Implemented arithmetic operations on BIG numbers and improved the language design around ECP, ECDH and OCTET. Exposed and improved objects for HASH and RNG. Added curves GOLDILOCKS and SECP256K1 for use in ECDH and Base58 for OCTET. Added support for MSGPACK binary serialization format.
Updated tests and examples, added new simple implementation for ElGamal with ZKP using ECP primitives. Started ECP2 twisted curve implementation. Improved build system; added python, java and esp32 targets. Updated API documentation.
0.6.014 Jul 2018 16:52
major feature:
Implemented arithmetic operations on elliptic curve points (ECP) as cryptographic primitives to implement new schemes.
Modularised ECDH class/factory implementation to support multiple curve types.
Support for multiple memory managers (still not fully reentrant), improved use of memory (and reflexivity), better constructors in scripts.
Further progress on syntax in relation to use-cases (DECODE D3.5).
Abstract Syntax Tree parsing of smart rules and rendering to JSON (based on lpeglabels and lua-parser).
Exposed more public calls on zenroom.h for usage as a library (stdout/stderr to memory).
Added contributed scripts for iOS, Android and Go shared builds.
0.5.013 Apr 2018 09:00
major feature:
Fully adopted Milagro-crypto-C as underlying crypto library, abandoning luazen at least for now. Refactored the API and language approach to adopt a more object-oriented posture towards first-class citizen data objects (octets) and keyrings. Full ECDH implementation with support for multiple curve types.
Direct-syntax interpreter upgraded to Lua 5.3; dropped dependency from lua_sandbox effectively cleaning up large portions of code.
Improved support for javascript; implemented a cryptographically secure random generator linked to different RNG functions provided by native platforms. Added build targets for Android and iOS, improved JS support both for NodeJS and WASM targets.
Adopted an embedded memory-manager (umm) optionally enabled at runtime, achieving significant speed improvements, reduction of resources used and full control on memory allocation; adopted a function pointer mechanism to easily include different memory managers in the future.
Updated documentation accordingly with more examples and tests. Half-baked RSA implementation may be abandoned in the future unless use-cases arise.