Garble - A New Programming Language for Secure Multiparty Computation
We are releasing our programming language Garble as open-source, as the first building block in our cryptographic system for solving data-sharing dilemmas in the sustainability sector.
Tags:
smpc

At SINE, we are building an engine for Secure Multi-Party Computation to help us solve data-sharing dilemmas in the sustainability sector. Our first piece of the puzzle is our new programming language for SMPC, Garble, which we are releasing as open source (under an MIT license).

Secure Multi-Party Computation (SMPC) is a cryptographic field with the goal of allowing two or more parties to cooperatively compute a result while keeping their inputs private.

One of the oldest and simplest examples is the so-called "millionaires' problem": Imagine two millionaires who want to find out which of them is richer without revealing their net worth to the other. With SMPC, the two millionaires keep their inputs private from each other and then compute the function a < b, receiving as a result an answer of true or false, but with no way to infer the exact input of the other party from the computation.[1]

This example might be a bit contrived, but SMPC is a very general technique that goes far beyond such a simple use case. A much more intricate example is "mental poker": Imagine that you want to play poker with a group of friends, but without sitting in the same room, for example by mail. In the case of games such as chess this is easy, because there is no information that needs to be kept hidden from another player. But in the case of poker, how do you keep the hands of all the players hidden from each other, while also guaranteeing that nobody is cheating and claiming to have cards that they do not have? You could of course elect a neutral third party that is trusted by all players and have it act as a central hub, but what if you cannot or do not want to trust a central party? It might seem impossible to solve this dilemma in a decentralized way, but SMPC provides a very elegant and general solution.

Although the resulting protocols require more back-and-forth communication between the parties than plain-text program execution, they allow almost arbitrary computations to be performed without revealing the inputs of the different parties to each other.

Our aim at SINE is to make advanced technology, such as SMPC, available to as many companies as possible. We are especially keen to apply SMPC for the exchange of sustainability data in situations where it would otherwise not have been feasible, for instance whenever there is no trusted third party that could perform the computation on behalf of the parties. One such example is benchmarking of carbon footprints: How can companies benchmark the footprint of their products against the ones of their competitors, to find out how they compare in their industry, without revealing their exact data to their competitors? SMPC can solve this dilemma, by computing a benchmark result cooperatively without revealing carbon footprint data.

Garble, our programming language for SMPC, allows anyone to write SMPC programs and run them against our soon-to-be-released SMPC engine. We want every software developer to make use of SMPC with as least friction as possible.

To achieve this, Garble compiles down to so-called Garbled Circuits (hence the name of the language). Garbled Circuits are a foundational approach to SMPC, based on the execution of boolean gates (AND, XOR and NOT gates) very similar to how CPUs work at the gate level.

Garble's syntax and some of its semantics are borrowed from Rust, but in contrast to Rust there is no borrow checker in Garble, which makes the language very easy to pick up even for non-Rust developers. Garble is statically typed and supports structs, enums and pattern matching. Before looking at the language semantics in more detail, here is a snippet of Garble to compute the millionaires' problem mentioned above:

As you can see, the code looks like an ordinary Rust program. In fact, Garble is practically a subset of Rust, except that there is no borrow checker and all values in Garble are conceptually always cloned, even large arrays. There is no garbage collection either, values always "stay around" (for as long as they are in scope). This might sound incredibly inefficient, but is a consequence of the computational model of garbled circuits, which are boolean circuits without any notion of main memory, stateful latches or any looping construct. All values in such a boolean circuits are just a collection of binary "wires" in the circuit, which can be connected to an arbitrary number of other gates. There is nothing that could be garbage collected, because there is no memory that could be overwritten, it is boolean gates all the way down.

As a result, garbled circuits cannot represent arbitrary programs which might loop endlessly. Instead, circuits express terminating functions and are Turing-incomplete. This is one of the reasons why we chose to implement a custom programming language instead of using something off the shelf: A general purpose language such as Rust contains constructs such as loops or recursion that are potentially unbounded, with the exact number of iterations depending on values only known at runtime. In contrast, Garble deliberately only supports bounded recursion, with loops over fixed-size arrays or ranges.

Apart from being compiled to garbled circuits, here are some other reasons that differentiate Garble from other languages:

  • practically a (pure) subset of Rust
  • static types, structs, enums, pattern matching
  • no crate dependencies (even serde is optional)
  • runs on WASM in addition to native architectures

At the moment, the only way to execute Garble programs is by using the binary shipped inside the crate, which you can install using cargo install garble-lang.

We are currently working on an SMPC engine that can run Garble programs and will release it as open source as soon as it has reached a usable alpha state. If you want to learn more about Garble in the meantime, head over to the repository or check out the language tour. We are building the language primarily for our own use, so some of the documentation might still be a bit rough. Please reach out if anything is unclear or if you would like to contribute to the language in any way.

Additionally, if (non-blockchain) cryptography, governance mechanisms and sustainability sound interesting and you are looking for work as a cryptographer / protocol engineer, we are hiring. Even though we are a non-profit, we believe that employees should be compensated fairly and transparently, so all our job descriptions list salary ranges and are based on a 4 day work week.

[1]: The millionaires' problem does raise another question, however: How do you guarantee that both millionaires are telling the truth? Such a question is outside the purely mathematical scope of SMPC, but becomes extremely relevant when you want to actually use SMPC in practice. It is fundamentally an issue of trust and cannot be solved with cryptographic techniques alone, instead requiring governance mechanisms that incentivize the different parties to tell the truth. This is why we believe that SMPC and cryptography are just one side of the coin and why we are actively working on truth-telling mechanisms.

back to library
About Us
We are a diverse group of specialists with academic and entrepreneurial backgrounds that are driven by a shared vision: to solve the current data sharing dilemma for the better. Please find our full founding vision in our manifesto.
For Members
Do you want to shape how data is being shared in a post-platform economy with us?

We welcome any individual with any background.
For Universities
Do you want to bridge the gap between your research and various industries?

We help you to connect to companies and to turn your research into action.
For Companies
Do you want to evaluate the potential if you start sharing your data with other companies in your ecosystem?

We help you to define a ecosystem strategy, to connect with other companies and to gain significant efficiency gains by sharing your data with others.
Please feel free to get in touch!
contact
Imprint
SINE e.V.
c/o Martin Pompéry
Bredowstr. 35a, 10551 Berlin
Email: Vorstand@sine.foundation
Represented by the board (Vorstand): Aurel Stenzel, Martin Poméry, Aline Blankertz, Karina Buschsieweke.
Registration number: Applied
VAT number: Applied
Tax ID: Applied
Responsible for any journalistic and editorial content on this website according to 55 para.2 RStV: Aurel Stenzel, Görschstr. 14, 13187 Berlin.

Disclaimer: As a service provider, Sine e.V. is responsible for its own information, which is offered on this website, in accordance with section 3 para.1 and section 7 para.1 of the German Telemedia Act (TMG). However, Sine e.V. has no control over the content, the data protection guidelines or the practices of websites or services of third parties and assumes no responsibility for this (see § 8 TMG). Sine e.V. is neither directly nor indirectly responsible or liable for damage or loss caused by or in connection with the use or reliance on such available content, goods or services on such websites and services.

July 2020
privacy policy

Datenschutzerklärung Sine e.V.

§ 1 Information über die Erhebung personenbezogener Daten

(1) Im Folgenden informieren wir über die Erhebung personenbezogener Daten bei Nutzung unserer Website. Personenbezogene Daten sind alle Daten, die auf Sie persönlich beziehbar sind, z. B. Name, Adresse und E-Mail-Adresse.

(2) Verantwortlicher gem. Art. 4 Abs.7 EU-Datenschutz-Grundverordnung (DS-GVO) ist SINE e.V., Görschstr. 14, 13187 Berlin, vorstand@sine.foundation, vertreten durch den Vorstand Aurel Stenzel, Aline Blankertz, Karina Buschsieweke, Martin Pompéry.

(3) Wir verarbeiten personenbezogene Daten unserer Nutzer grundsätzlich nur, soweit dies zur Bereitstellung einer funktionsfähigen Website sowie unserer Inhalte und Leistungen erforderlich ist. Die Verarbeitung personenbezogener Daten unserer Nutzer erfolgt regelmäßig nur nach Einwilligung des Nutzers. Eine Ausnahme gilt in solchen Fällen, in denen eine vorherige Einholung einer Einwilligung aus tatsächlichen Gründen nicht möglich ist und die Verarbeitung der Daten durch gesetzliche Vorschriften gestattet ist.

(4) Bei Ihrer Kontaktaufnahme mit uns per E-Mail über das Kontaktformular (“Contact me Button”) werden die von Ihnen mitgeteilten Daten (Ihre E-Mail-Adresse, ggf. Ihr Name und Ihre Telefonnummer, sofern Sie uns diese mitteilen) von uns gespeichert, um Ihre Fragen zu beantworten. Die in diesem Zusammenhang anfallenden Daten löschen wir, nachdem die Speicherung nicht mehr erforderlich ist, oder schränken die Verarbeitung ein, falls gesetzliche Aufbewahrungspflichten bestehen.

(5) Falls wir für einzelne Funktionen unseres Angebots auf beauftragte Dienstleister zurückgreifen oder Ihre Daten für Werbezwecke nutzen möchten, werden wir Sie untenstehend im Detail über die jeweiligen Vorgänge informieren.


§ 2 Ihre Rechte

(1) Sie haben gegenüber uns folgende Rechte hinsichtlich der Sie betreffenden personenbezogenen Daten:

• Recht auf Auskunft nach Art. 15 DS-GVO: Sie können Auskunft über die Verarbeitungszwecke, die Kategorien der personenbezogenen Daten, die verarbeitet werden, die Kategorien von Empfängern, gegenüber denen Ihre Daten offengelegt wurden oder werden, die geplante Speicherdauer, das Bestehen eines Rechts auf Berichtigung, Löschung, Einschränkung der Verarbeitung oder Widerspruch, das Bestehen eines Beschwerderechts, die Herkunft ihrer Daten, sowie über das Bestehen einer automatisierten Entscheidungsfindung einschließlich Profiling zu verlangen;

• Recht auf Berichtigung gemäß Art. 16 DS-GVO: Sie können unverzüglich die Berichtigung unrichtiger oder Vervollständigung Ihrer bei uns gespeicherten personenbezogenen Daten verlangen;

• Recht auf Löschung gemäß Art. 17 DS-GVO: Sie können die Löschung Ihrer bei uns gespeicherten personenbezogenen Daten verlangen, es sei denn, die Verarbeitung zur Ausübung des Rechts auf freie Meinungsäußerung und Information, zur Erfüllung einer rechtlichen Verpflichtung, aus Gründen des öffentlichen Interesses oder zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen stehen dem entgegen;

• Recht auf Einschränkung gemäß Art. 18 DS-GVO: Sie können die Einschränkung der Verarbeitung Ihrer personenbezogenen Daten verlangen, soweit die Richtigkeit der Daten von Ihnen bestritten wird, die Verarbeitung unrechtmäßig ist, Sie aber die Löschung ablehnen, wir die Daten nicht mehr benötigen, Sie jedoch diese zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen benötigen oder Sie gemäß Art. 21 DS-GVO Widerspruch gegen die Verarbeitung eingelegt haben;  

• Recht auf Datenübertragbarkeit gemäß Art. 20 DS-GVO: Sie können verlangen, dass Sie Ihre personenbezogenen Daten, die Sie uns bereitgestellt haben, in einem strukturierten, gängigen und maschinenlesebaren Format erhalten oder dass wir die Daten an einen anderen Verantwortlichen übermitteln.


• Recht auf Widerspruch gemäß Art. 21 DS-GVO: Sie können Widerspruch gegen die Verarbeitung erheben, sofern Ihre personenbezogenen Daten auf Grundlage von berechtigten Interessen gemäß Art. 6 Abs. 1 Satz 1 lit f. DS-GVO verarbeitet werden. Dazu müssen Gründe vorliegen, die sich aus Ihrer besonderen Situation ergeben. Ein solcher Widerruf beeinflusst die Zulässigkeit der Verarbeitung ihrer personenbezogenen Daten, nachdem Sie ihn gegenüber uns ausgesprochen haben.


(2) Sie haben zudem das Recht, sich bei einer Datenschutzaufsichtsbehörde über die Verarbeitung Ihrer personenbezogenen Daten durch uns zu beschweren. In unserem Fall ist das die Berliner Beauftragte für Datenschutz und Informationsfreiheit unter https://www.datenschutz-berlin.de/


§ 3 Erhebung personenbezogener Daten bei Besuch unserer Website

(1) Bei der bloß informatorischen Nutzung der Website, also wenn Sie sich nicht registrieren oder uns anderweitig Informationen übermitteln, erheben wir nur die personenbezogenen Daten, die Ihr Browser an unseren Server übermittelt. Wenn Sie unsere Website betrachten möchten, erheben wir die folgenden Daten, die für uns technisch erforderlich sind, um Ihnen unsere Website anzuzeigen um einen reibungslosen Verbindungsaufbau und eine komfortable Nutzung der Website zu gewährleisten sowie zur Auswertung der Stabilität und Systemsicherheit. Rechtsgrundlage ist dabei Art. 6 Abs. 1 S. 1 lit. f DS-GVO. Unser berechtigtes Interesse basiert auf den genannten Zwecken zur Datenerhebung. IP-Adresse Datum und Uhrzeit der Anfrage   User Agent String, der den Browser oder das Betriebssystem für den Server identifiziertinstallierte Schriftarten MIME-TypenSprache  und Zeitzone der BrowsersoftwareSilverlight Dateninstallierte Plugins HTTP HeadersBildschirmauflösung
Die Daten werden gelöscht, sobald sie für die Erreichung des Zweckes ihrer Erhebung nicht mehr erforderlich sind. Im Falle der Erfassung der Daten zur Bereitstellung der Website ist dies der Fall, wenn die jeweilige Sitzung beendet ist.


(2) Zusätzlich nutzen wir das Produkt Plausible Analytics. Plausible verfolgt für uns die Messung der Nutzung unserer Website, allerdings ohne einen Cookie zu setzen und ohne personenbezogene Daten von den Nutzern zu erheben. Plausible Analytics erhebt allein folgende aggegrierte Daten: URL Referrer (d.h. Website, von der die Anforderung kommt) Browser (z.B. “Firefox”)Operating System (z.B. “iOS”)Device type (z.B. “Desktop” oder “Smartphone”)Land (z.B. “Deutschland”) Keiner der genannten Datenpunkte sind personenbezogen und keine Person kann durch die genannten Datenpunkte identifiziert werden. Für mehr Informationen über Plausible Analytics klicken Sie bitte hier.


§ 4 Erhebung personenbezogener Daten beim Online Beitrittsformular

Wenn Sie unserem Verein via unserem auf unserer Website zur Verfügung gestellten Online Beitrittsformular beitreten, erheben wir im Weiteren folgende Daten von Ihnen: Vor- und NachnameAdresseEinwilligung zur Datenverarbeitung hinsichtlich des BeitrittsFerne besteht die Möglichkeit in unseren Newsletterversand (siehe hierzu § 6) einzuwilligen. Die genannten Daten werden ausschließlich zum Zweck der Mitgliederverwaltung und -betreuung verarbeitet und bis zum Austritt eines Mitgliedes bei uns gespeichert bzw. solange es gesetzliche Aufbewahrungsfristen erfordern. Es erfolgt keine Weitergabe an Dritte.


§ 5 Weitergabe von Daten an Dritte

Wir geben Ihre persönlichen Daten nur an Dritte weiter, wenn die Weitergabe nach Art. 6 Abs. 1 S. 1 lit. f DS-GVO zur Geltendmachung, Ausübung oder Verteidigung von Rechtsansprüchen erforderlich ist und kein Grund zur Annahme besteht, dass Sie ein überwiegendes schutzwürdiges Interesse an der Nichtweitergabe Ihrer Daten haben. Ferner in dem Fall, dass für die Weitergabe nach Art. 6 Abs. 1 S. 1 lit. c DS-GVO eine gesetzliche Verpflichtung besteht, sowie falls es gesetzlich zulässig und nach Art. 6 Abs. 1 S. 1 lit. b DS-GVO für die Abwicklung von Vertragsverhältnissen mit Ihnen erforderlich ist.Eine Übermittlung Ihrer persönlichen Daten an Dritte zu anderen als den genannten Zwecken findet nicht statt.


§ 6 Newsletter

Auf unserer Webseite besteht die Möglichkeit einen kostenfreien Newsletter zu abonnieren. Dabei werden bei der Anmeldung zum Newsletter die Daten aus der Eingabemaske an uns übermittelt, d.h. ihre Emailadresse sowie ihr Vor- und Nachname.  
Wir verwenden zum Versand des Newsletters Cleverreach GmbH & Co. KG, mit welchen wir einen Auftragsverarbeitungsvertrag nach Art. 28 DS-GVO geschlossen haben. Für den Versand des Newsletters verwenden wir das Double Opt-In-Verfahren. Dazu erhalten Sie den Newsletter erst, wenn Sie uns ausdrücklich bestätigt haben, dass Sie den Newsletter erhalten möchten. Es erfolgt im Zusammenhang mit der Datenverarbeitung für den Versand des Newsletters keine Weitergabe der Daten an Dritte. Die Daten werden ausschließlich für den Versand des Newsletters verwendet. Die E-Mail-Adresse des Nutzers wird solange gespeichert, wie das Abonnement des Newsletters aktiv ist. Das Abonnement des Newsletters kann durch den betroffenen Nutzer jederzeit gekündigt werden. Zu diesem Zweck findet sich in jedem Newsletter ein entsprechender Link.Rechtsgrundlage für die Verarbeitung der Daten nach Anmeldung zum Newsletters durch den Nutzer ist bei Vorliegen einer Einwilligung des Nutzers Art. 6 Abs. 1 lit. a DS-GVO.


§ 7 Änderungen der Datenschutzerklärung

Wir behalten uns das Recht vor, unsere Datenschutzerklärung zu ändern falls dies aufgrund neuer Technologien oder neu eingesetzter Dienstleister notwendig sein sollte. Werden an dieser Datenschutzerklärung grundlegende Änderungen vorgenommen, geben wir diese auf unserer Website bekannt.