Berlin, 2022-11-22
Raimundo’s first month: randomness and Encryptle
Tags:
collaboration

It is strange to think that less than two months have passed since the last time I wrote here. In this short period, I learned about languages and libraries (Rust, TypeScript, React, Tailwind CSS, etc.), containerization and deployment (Docker, fly.io, Azure, etc.), aspects of HTTP (MIME types, CORS, etc.) and software in general (RNG’s, WebAssembly, WebPack, NGINX, etc.).

I have been focusing mainly on two things. On the one hand, I worked on our Secure Multi-Party Computation (SMPC) engine. I will tell you more about my experience with it after its release, which will happen during the next week! On the other hand, I worked on Encryptle, our word-guessing game that will allow you to see the SMPC engine in action. I will tell you more about it below.

So, what is Encryptle? It is a privacy-preserving version of New York Times’s popular game Wordle, running on top of our SMPC engine. Encryptle plays just like the regular Wordle: the user types in a five-letter word and is told for each letter whether the secret word (that changes daily) contains that letter and, if so, whether it is in the right place. The difference lies on the way this information is computed. In the original Wordle (and in other versions thereof), the user’s guess is sent over to the server, where it is compared to the secret word. In Encryptle neither the server has access to the user’s guesses, nor the user to the server’s word of the day (except by correctly guessing it, of course). The two words are never actually compared! This might sound impossible, but it is precisely what Secure Multi-Party Computation brings to the table: the possibility of collaborating over data (in this case, the guess and the solution) while keeping it private. Server and client only share encrypted messages (hence the name), keeping the actual letters hidden from both parties. Soon, we will tell you more about how our engine achieves this: stay tuned!

At the end of the last post, I said that I knew how to start working on what would eventually become Encryptle. Indeed, it didn’t take long to develop the very first iteration of the game. It ran on the command-line and used ASCII codes instead of letters—hence being hilariously difficult—but it ran on top of the SMPC engine nevertheless! I was very happy and eager to improve on it.

With the support of my colleagues, I got it to use letters and moved on to the next challenge: having the server randomly select a word from a list. This might sound very simple, but there’s a catch: we needed the randomness to be synchronized. In other words, we needed to have one word per day, regardless of how many servers would run the app and of whether they were restarted. Since, evidently, we also needed the word to remain secret, we could not use any easily crackable logic.

These complexities got me thinking of how we take for granted that we can instruct a machine to do something at random. As users of computers, we don’t even notice how conceptually bizarre this idea is. A computer is a machine and will only do what we tell it to. Just as a car won’t turn “at random,” so a computer won’t spit out data “at random.” Behind what seemed to be a very simple step, lied this extremely interesting conceptual puzzle. This would be enough to keep us entertained for a long time discussing the very notion of randomness and how it relates to determinism. But part of the beauty of software development is that we are forced to have a down-to-earth approach to philosophical and conceptual problems (which, if I may venture, makes it a great place from which to tackle philosophical discussions). It turns out we don’t actually tell a computer to select something at random, but rather give it some data—the seed—and complex instructions on how to select something based on it. As long as the seed remains inaccessible, it is virtually impossible to know how the data is being generated and we get our desired “randomness.” In the standard cases, we use a seed provided by the operating system that represents some physical state of our machine. This is exactly what we couldn’t use in our case. And luckily so, as it led me to learn and think about Random Number Generators (RNGs).

Once we started working on the frontend of our app, we realized that there are many Wordle (so to say) clones. We found this repository, providing one such clone under an MIT license and decided to use it, adapting it to our particular needs. This proved to be an amazing learning opportunity. At first, the idea of adapting a whole app to something for which it had not been built was overwhelming and I failed to see how it could be put together with our engine. After a very useful pair programming session, however, I learned how to overcome this difficulty and also how I could tackle similar situations in the future. As time went by, I got more familiar with the code and started being able to fix frontend issues by myself, which was very rewarding.

Encryptle was a very fun project to work on. It allowed me to learn about all sorts of things, from React, TypeScript, and (easy to neglect) CSS animations to WebAssembly, MIME types, Docker, and deployment solutions, among others. I got all the support I needed, but also felt like I was given enough space to try things out on my own. I am quite proud of the result and hope that people can have fun with the game while also learning about SMPC. It is just a matter of days until that is possible. At SINE, we are very excited about the release of our SMPC engine and hope we can get you on board! I will be writing here again when it happens!

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.