So schützen wir eure Antworten

Paarklang vergleicht eure Antworten, ohne dass sie jemand anderes zu sehen bekommt: nicht wir, nicht der Messenger und nicht euer Gegenüber, außer bei Karten, bei denen ihr beide Ja oder Vielleicht gesagt habt.

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.