Skip to content
forked from dyne/Zenroom

Small, secure and portable virtual machine for crypto language processing

License

Notifications You must be signed in to change notification settings

thingful/zenroom

 
 

Repository files navigation

Zenroom - crypto language VM

software by Dyne.org

Build Status

Zenroom is a brand new, small and portable virtual machine for cryptographic operations. Our effort is that of improving people's awareness of how their data is processed by algorithms, as well facilitate the work of developers to create and publish algorithms that can be used both client and server side. The Zenroom VM has no external dependencies, is smaller than 1MB, runs in less than 64KiB memory and is ready for experimental use on many target platforms: desktop, embedded, mobile, cloud and browsers.

Latest stable release is 0.5.0:

Documentation:

* = Work in Progress

Zenroom is software in ALPHA stage and is part of the DECODE project about data-ownership and technological sovereignty.

DECODE project

This software aims to make it easy and less error-prone to write portable scripts using end-to-end encryption inside isolated environments that can be easily made interoperable. Basic crypto functions provided include primitives to manage a/symmetric keys, key derivation, hashing and signing functionalities.

Zenroom is software inspired by the language-theoretical security research, it allows to expresses cryptographic operations in a readable scripting language that has no access to the calling process, underlying operating system or filesystem.

* = Work in Progress

No more Turing Completion!

Zenroom's restricted execution environment is a sort of sandbox whose parser is based on LUA's syntax-direct translation and has coarse-grained control of computations and memory. The Zenroom VM is designed to "brittle" and exit execution returning a meaningful message on any error.

Zenroom's documentation and examples are being written to encourage a declarative approach to scripting, providing functional tools to manipulate efficiently even complex data structures.

Full Recognition Before Processing!

The main use case for Zenroom is that of distributed computing of untrusted code where advanced cryptographic functions are required, for instance it can be used as a distributed ledger implementation (also known as blockchain smart contracts).

Horizon 2020

This project is receiving funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement nr. 732546 (DECODE).

Acknowledgements

Copyright (C) 2017-2018 by Dyne.org foundation, Amsterdam

With contributions by Ivan J., Puria Nafisi Azizi, Jordi Coscolla.

Special thanks to Francesca Bria for leading the DECODE project and to George Danezis, Ola Bini, Mark de Villiers and Alberto Sonnino for their expert reviews.

This software includes software components by:

  • R. Ierusalimschy, W. Celes and L.H. de Figueiredo (lua)
  • Mike Scott and Kealan McCusker (milagro-crypto-c)
  • Ralph Hempel (umm_malloc)
  • Mark Pulford (lua-cjson)
  • Daan Sprenkels (randombytes)

And Lua extensions written and documented by:

  • Roland Yonaba (moses)
  • Enrique García Cota (inspect)
  • Sebastian Schoener (schema)
  • Kyle Conroy (finite state machine)
  • Scott Lembcke (debugger)
  • Michael Lutz and David Manura (matrix and complex)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

About

Small, secure and portable virtual machine for crypto language processing

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 71.9%
  • Lua 14.4%
  • HTML 11.7%
  • Makefile 0.8%
  • C++ 0.6%
  • Shell 0.3%
  • Other 0.3%