Neuverschlüsselung durch Proxy und homomorphe Verschlüsselung

Datennutzung und Datenschutz stehen häufig in Konflikt. Wenn wir zum Beispiel alle unsere Gesundheitsdaten offen mit Forschern teilen würden, würde dies die Arbeit an neuen Gesundheitstechnologien und Heilmitteln beschleunigen. Wir haben jedoch zu Recht Angst davor, was ein böswilliger Akteur mit unseren Gesundheitsdaten tun könnte. Hier kann das Gebiet der Kryptographie Abhilfe schaffen. Neuverschlüsselung durch Proxy und homomorphe Verschlüsselung sind Werkzeuge, mit denen wir unseren Kuchen behalten und auch essen können, wenn es um Datennutzung und Datenschutz geht.

Durch die erneute Verschlüsselung durch einen Proxy kann ein Dateneigentümer seine Daten einmal verschlüsseln und anschließend sicher mit Käufern teilen, so oft er möchte, und dabei die Dienste eines Dritten nutzen. Die homomorphe Verschlüsselung ermöglicht es einem Datenkäufer, Berechnungen für verschlüsselte Daten durchzuführen, die von nicht vertrauenswürdigen Dritten gespeichert und berechnet wurden, und Ergebnisse oder Erkenntnisse zu diesen Daten zu erhalten, ohne die Daten einer Person in unverschlüsselter Form preiszugeben.

Diese Techniken dienen beispielsweise als Bausteine für komplexere Kryptosysteme Unlynx entwickelt von der EPFL, der theoretischen Inspiration für unsere aktuelle Arbeit). Daher ist unser Plan wie folgt 1) Erstellen Sie einfach zu verwendende und praktische Bibliotheken für fortgeschrittene Kryptographie-Grundelemente 2) Diese Bibliotheken helfen Entwicklern beim Erstellen und Kombinieren erweiterter Grundelemente, um komplexe Kryptosysteme zu erstellen, die einen sichereren Datenaustausch ermöglichen 3) Ein sicherer und nützlicher Datenaustausch wird die Forschungsgeschwindigkeit zu wichtigen Problemen wie der Krebs- und Diabetesforschung verzehnfachen 4) rette die Welt :-).

Zu Beginn haben wir eine Alpha-Version eines Proof-of-Concept entwickelt Bibliothek . Der folgende Code verwendet diese Bibliothek, um ein Beispiel dafür zu geben, wie wir diese Technologien anwenden, um einen sicheren und bequemen Datenfluss von den Eigentümern zu den Benutzern zu ermöglichen.

Neuverschlüsselung durch Proxy

Die Neuverschlüsselung durch Proxy ist ein Prozess, bei dem ein Dritter, der als Proxy bezeichnet wird, einen von einer Partei verschlüsselten Chiffretext so ändert, dass er von einer zweiten Partei entschlüsselt werden kann.

Auf der Nebula-Plattform fungiert der Proxy als Depotbank für verschlüsselte Genomdaten und verwaltet den Zugriff der Käufer auf diese Daten im Auftrag des Eigentümers. Während der Proxy nicht auf die zugrunde liegenden Rohdaten zugreifen kann, kann der Proxy (mit Erlaubnis des Eigentümers) die verschlüsselten Daten so ändern, dass der Benutzer sie anschließend entschlüsseln kann. Der Dateneigentümer kann diese Aufgabe somit an den Proxy delegieren, ohne dem Proxy Klartextinformationen mitzuteilen. Eine weitere Folge dieser Delegierung ist, dass weder der Dateneigentümer noch der Empfänger online sein müssen.

In unserem Beispiel wird angenommen, dass der Proxy eine Gruppe von Servern ist, die als dezentrale kollektive Autorität fungieren. Lassen Sie uns nun ein Beispiel für die Neuverschlüsselung durch einen Proxy durchgehen, bei dem Alice, eine Dateneigentümerin, über den Proxy Genomdaten mit Bob, einem Datenbenutzer, teilt.

Lassen Sie uns zuerst die oben erwähnte Bibliothek installieren.

Jetzt können wir das Nebelpaket importieren.

Lassen Sie uns nun den Freigabeprozess durchgehen. Der erste Schritt ist, dass Alice ihre Daten verschlüsselt. Wir generieren einen symmetrischen Schlüssel, den sie verwenden kann ChaCha20 + Poly1305 .

(<umbral.point.Point at 0x10389fe10>, b'\x10\x91Y\xb1*\x8c\xf0\x7f@=\xefx\xe9\xf6\x12\xf3W\xbd\xdel\xc4\x06{\xae\x05%\x1b\x89U\xf9eN\xe5e\x1a\xe71xn\xac@v\xf4')

Der Proxy der kollektiven Autorität verfügt über einen eigenen öffentlichen Schlüssel, der die Summe der öffentlichen Schlüssel seiner Server darstellt.

Alice nimmt nun den Verschlüsselungsschlüssel, den sie für ihre Daten verwendet hat, und verschlüsselt ihn mit dem öffentlichen Schlüssel der kollektiven Behörde. Beachten Sie, dass wir verwenden Kryptographie mit elliptischen Kurven die zwei Chiffretexte, die ElGamal-Verschlüsselung erzeugt sind Punkte auf der gewählten elliptischen Kurve. Was Sie in der folgenden Ausgabe sehen, sind die Koordinaten der beiden Punkte in (x, y) -Form.

((35632791306511153190425382918654119432212363349182003014749353343128802126727, 64242079364444117954338938658093117507689717419524224721788857406414950009581), (97847103734799578346073884785318736156070617710068604497289838935308031857554, 100772267217308028038724925681024365362775942293927562577198462564518506731626))

Jeder Server in der kollektiven Autorität entschlüsselt teilweise Alices Schlüssel für Bob und verschlüsselt ihn dann erneut.

  1. Um den Schlüssel von Alice teilweise zu entschlüsseln, verwendet jeder Server seinen privaten Schlüssel
  2. Um den Schlüssel von Alice für Bob teilweise neu zu verschlüsseln, verwendet jeder Server den öffentlichen Schlüssel von Bob
((77420738395268270953686214496801457604160876120513979866307802146750959593560, 54288930850798967899941066319180759019666461705141800680259295043110704970240), (43931260115404950504844368880031328989231014591201216806426924428987149667105, 90907867688890000833998990379245369153741769092073562236593684729778667077837))

Bob empfängt und entschlüsselt Alices Schlüssel mit seinem privaten Schlüssel und entschlüsselt dann mit Alices Schlüssel die Originaldaten.

True
b'My genomic data'

Stellen Sie sich hier ein vollständiges Genom vor, anstatt nur diesen String!

Homomorphe Verschlüsselung

ElGamal-Verschlüsselung ist additiv homomorph Dies bedeutet, dass das Ergebnis der Summierung von Chiffretexten das Ergebnis widerspiegelt, das durch Summieren der entsprechenden Klartexte erhalten würde. Wenn wir daher eine verschlüsselte Summe entschlüsseln, ist das Ergebnis die Summe der Klartexte. Durch die homomorphe Verschlüsselung kann ein Interessent eine Abfrage nach aggregierten Informationen durchführen und die entsprechende Antwort erhalten, ohne jedoch die zugrunde liegenden Datenpunkte zu sehen. (Dies setzt voraus, dass einige andere Einschränkungen wie angegeben erfüllt sind Hier .)

Im Folgenden finden Sie ein dreistufiges Beispiel, das zeigt, wie unsere kollektive Autorität / unser Stellvertreter eine Anfrage von Bob nach der Anzahl der Personen mit einer bestimmten Genvariante in unserem Datensatz beantworten kann.

  1. Die Behörde führt die erforderliche Berechnung für die verschlüsselten Daten im Datensatz durch.
  2. Die Behörde nimmt dieses Gesamtergebnis (Personen werden mit 1 für die Variante und 0 für das Fehlen der Variante markiert) und verschlüsselt es erneut mit Bobs öffentlichem Schlüssel.
  3. Bob entschlüsselt das Gesamtergebnis mit seinem privaten Schlüssel und hat jetzt die richtige Summe, aber keine Sichtbarkeit der einzelnen Datenpunkte.

Verschlüsselte Daten summieren

Im Folgenden „simulieren“ wir 1000 Personen, die der Plattform genomische Informationen zur Verfügung stellen. Insgesamt gibt es 448 Personen mit dieser speziellen Genvariante. Die Daten jeder Person werden verschlüsselt und sicher gespeichert.

Number of people with Genvariante: 488 ((21226922480075498561329291252368547521899161064631964196023720750821691033728, 22373176000434530074330330136750061845273006440607485558527039957320386973412), (73527396063873421512162165532068395819931745318640280343429662961367630577212, 38439465994848418879243894553165852646308170673055923181635051985961737087067))

CA verschlüsselt die verschlüsselte Summe für Bob neu

Bob geht voran und fordert Informationen über die Häufigkeit von Genvarianten in der Population an. Die Zertifizierungsstelle fasst es zusammen und verschlüsselt die Daten erneut an Bob. Beachten Sie, dass die (x, y) -Koordinaten der neu verschlüsselten Verschlüsselung nicht den Koordinaten der obigen ursprünglichen Verschlüsselung entsprechen.

((26066336990521229606715532856762274058860058654632118019680516577894483977430, 111016076743629331281471026942315236039952684121365861080441162051376755931177), (74777752915141648361212288792719003318012040162755253888817602184232651456038, 79121323403285772024091404265686004833455157263244527767410139385386809682035))

Bob entschlüsselt die Summe

(488, 488)

Bob kann einen Einblick in die Daten als Ganzes erhalten, ohne einen Einblick in die Informationen eines einzelnen Eigentümers zu erhalten. Auf diese Weise können Dateneigentümer, die ihre Daten nicht preisgeben möchten, weiterhin einen Beitrag zur Plattform leisten.

Beachten Sie, dass die Neuverschlüsselung durch Proxy eine Schlüsselrolle dabei spielte, dies für Bob bequem zu machen. Da jeder Dateneigentümer an den Proxy delegiert war, musste Bob nur eine Abfrage ausgeben. Ohne den Proxy müsste er für jeden gewünschten Datenpunkt eine Abfrage ausstellen.

Durch die erneute Verschlüsselung durch Proxy und homomorphe Verschlüsselung kann Nebula Benutzerdaten sichern, Datenkäufern bequemen Zugriff auf Daten bieten und Datenkäufern Einblicke gewähren, ohne die Privatsphäre des Einzelnen zu beeinträchtigen.

Aufruf zum Handeln

Wir bei Nebula Genomics glauben, dass Datenschutzbedenken eine erhebliche Hürde für den biomedizinischen Datenaustausch darstellen. Dies behindert die medizinische Forschung und Entwicklung neuer Therapien. Wir können diese Herausforderung nicht alleine lösen.

Wenn Sie an dem Code interessiert sind, können Sie gerne mit der Bibliothek spielen, aber seien Sie sicher: Diese spezielle Implementierung wurde keiner Sicherheitsüberprüfung unterzogen und ist derzeit nur für Bildungszwecke bestimmt 🙂

Wenn Sie mehr über Nebula Genomics erfahren möchten, sollten Sie dies unbedingt tun Folge uns auf Twitter auf dem Laufenden bleiben.