Wie addierst du zwei Zahlen, die du nicht sehen darfst?
Man hat mir das am Wochenende gestellt und ich habe eine schlechte Antwort gegeben, also habe ich nachgeschlagen und es richtig gelesen.
Hedger verwendet homomorphe Verschlüsselung basierend auf ElGamal über ECC. Die vereinfachte Version davon, was dir das bringt, ist: Du kannst Berechnungen auf VERSCHLÜSSELTEN Werten durchführen, ohne sie vorher zu entschlüsseln.
So kann ein Vertrag, der zwei verschlüsselte Guthaben hält, die verschlüsselte Summe korrekt erzeugen, ohne jemals irgendeine der beiden Zahlen oder die Gesamtsumme zu kennen.
Das klingt wie ein Zaubertrick, ist aber keiner. Es ist eine Eigenschaft, wie die Verschlüsselung strukturiert ist, und ElGamal hat diese Eigenschaft für Multiplikation, die auf Addition im Exponenten abbildet. Das ist seit den Achtzigern bekannt.
Warum das mit Zero-Knowledge-Beweisen kombinieren, statt es nur für sich allein zu nutzen?
Weil homomorphe Verschlüsselung dir sagt, dass die Mathematik an verborgenen Werten GEMACHT werden kann. Sie sagt dir nicht, dass die Person, die das durchführt, es auch ehrlich gemacht hat, oder dass die Eingaben überhaupt gültig waren. Dafür sind die Beweise da.
Also: Eine Primitive übernimmt die vertrauliche Berechnung, die andere die überprüfbare Korrektheit, und keine von beiden ersetzt die andere. Die meisten Privatsphäre-Systeme setzen nur auf Beweise und zahlen dann in komplexen Schaltkreisen, weil man dann Aussagen über Arithmetik beweist, die man auch noch verbergen musste.
Die ehrliche Einschränkung: Homomorphe Verfahren sind nicht kostenlos. Das hier ist teilweise homomorph, nicht die vollständig homomorphe Verschlüsselung, über die Leute atemlos Artikel schreiben. Der Unterschied ist, dass ein teilweises Schema bestimmte Operationen unterstützt, statt beliebige Berechnungen. Diese Einschränkung ist genau der Grund, warum es GENUG schnell ist, um in einem Browser in unter zwei Sekunden zu laufen.
Das ist auch der Trade-Off, den ich gemacht hätte: Allzweckfähig und unbrauchbar hilft niemandem.
#dusk @Dusk $DUSK