So schützen wir eure Antworten

„So mag ich’s“ vergleicht eure Antworten, ohne dass wir oder der Messenger sie zu sehen bekommen. Ihr seht die Karten, bei denen ihr beide Ja oder Vielleicht gewählt habt. Fehlt eine Karte, bei der du selbst Ja oder Vielleicht gewählt hast, kannst du daraus auf ein Nein deines Gegenübers schließen.

Das Verfahren in einfachen Worten

  1. Dein Browser wählt einen geheimen Zufallsschlüssel. Jede Karte, die du mit Ja oder Vielleicht beantwortest, wird in einen Zahlenwert umgerechnet und mit deinem Schlüssel „verschlossen“. Die Reihenfolge wird gemischt.
  2. Dein Gegenüber verschließt deine Werte zusätzlich mit seinem eigenen Schlüssel und schickt sie zurück, zusammen mit seinen eigenen, nur mit seinem Schlüssel verschlossenen Werten.
  3. Dein Browser verschließt die Werte deines Gegenübers mit deinem Schlüssel. Jetzt tragen alle Werte beide Schlösser. Nur gleiche Karten ergeben gleiche Werte, und nur diese erkennt dein Browser wieder. Mit dem letzten Link kann auch dein Gegenüber die gemeinsamen Karten bestimmen.

Fachlich ist das eine Private Set Intersection nach Diffie-Hellman auf der Gruppe ristretto255 (RFC 9496); Karten werden mit hash_to_ristretto255 (RFC 9380) abgebildet, mit einer eigenen Kennung je Abgleich. Wir nutzen die Open-Source-Bibliothek @noble/curves (MIT-Lizenz, Lizenztext), die auf unserem Server liegt und nicht von fremden Servern geladen wird.

Warum unser Server nichts sieht

Die verschlüsselten Werte stehen im Link hinter dem #-Zeichen. Browser schicken diesen Teil eines Links nie an den Server. Unser Server liefert nur die App aus und zählt Seitenaufrufe ohne Cookies und ohne IP-Adresse (Datenschutz).

Was das Verfahren nicht leistet

Fragen zur Technik beantworten wir gern: Venture34@westlabsai.com.