DE102021129979B3 - Verfahren und System zur anonymen Übertragung von digitalen Daten - Google Patents

Verfahren und System zur anonymen Übertragung von digitalen Daten Download PDF

Info

Publication number
DE102021129979B3
DE102021129979B3 DE102021129979.9A DE102021129979A DE102021129979B3 DE 102021129979 B3 DE102021129979 B3 DE 102021129979B3 DE 102021129979 A DE102021129979 A DE 102021129979A DE 102021129979 B3 DE102021129979 B3 DE 102021129979B3
Authority
DE
Germany
Prior art keywords
data
network
node
network node
digital data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102021129979.9A
Other languages
English (en)
Inventor
Daniel Peters
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Phys Technische Bundesanstalt Braunschweig und Berlin
Bundesministerium fuer Wirtschaft und Energie
Original Assignee
Phys Technische Bundesanstalt Braunschweig und Berlin
Bundesministerium fuer Wirtschaft und Energie
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Phys Technische Bundesanstalt Braunschweig und Berlin, Bundesministerium fuer Wirtschaft und Energie filed Critical Phys Technische Bundesanstalt Braunschweig und Berlin
Priority to DE102021129979.9A priority Critical patent/DE102021129979B3/de
Application granted granted Critical
Publication of DE102021129979B3 publication Critical patent/DE102021129979B3/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/42Anonymization, e.g. involving pseudonyms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur anonymen Übertragung von digitalen Daten von einer Mehrzahl von Datensendern an einen Datenempfänger mittels eines Anonymisierungsnetzwerkes, das eine Vielzahl von Netzwerkknoten hat und digitale Daten zur Anonymisierung der Verbindungsdaten über eine ausgewählte Anzahl von Netzwerkknoten des Anonymisierungsnetzwerkes überträgt, wobei eine Übertragungsfolge von Netzwerkknoten des Anonymisierungsnetzwerkes bestimmt wird, wobei für jeden Netzwerkknoten einer solchen Übertragungsfolge ein dem jeweiligen Netzwerkknoten zugeordneter kryptographischer Schlüssel ermittelt wird, wobei an jedem Datensender die digitalen Daten schichtweise verschlüsselt werden, wobei an jedem Netzwerkknoten, an dem eine vorgegebene Anzahl von schichtweise verschlüsselten digitalen Daten empfangen wurde, wird die betreffende Verschlüsselungsschicht der schichtweisen Verschlüsselung der jeweils empfangenen digitalen Daten entschlüsselt, wobei die Reihenfolge des Empfangs der digitalen Daten an dem betreffenden Netzwerkknoten permutiert wird, wobei die an dem jeweiligen Netzwerkknoten empfangenen digitalen Daten, deren betreffende Verschlüsselungsschicht entschlüsselt wurde, in einer öffentlichen Datenbank in der permutierten Reihenfolge durch den betreffenden Netzwerkknoten hinterlegt werden, bevor sie an den nächsten Netzwerkknoten in der Übertragungsfolge in der permutierten Reihenfolge übertragen werden.

Description

  • Die Erfindung betrifft ein Verfahren zur anonymen Übertragung von digitalen Daten von einer Mehrzahl von Datensendern an einen Datenempfänger mittels eines Anonymisierungsnetzwerkes, das eine Vielzahl von Netzwerkknoten hat und digitale Daten zur Anonymisierung der Verbindungsdaten über eine ausgewählte Anzahl von Netzwerkknoten des Anonymisierungsnetzwerkes überträgt. Die Erfindung betrifft ebenso ein System hierzu.
  • Derartige digitale Daten können bspw. ein digitaler Datenstrom (Datastream) sein, der ein Fluss von Datensätzen ist. Im Sinne der vorliegenden Erfindung bezeichnet ein Datenstrom eine Aneinanderreihung von insbesondere gleich großen Datenpaketen, die zusammengefügt einen Datensatz darstellen können.
  • Gegenwärtige Abstimmungsmechanismen, wie bspw. öffentliche Wahlen, beruhen auf mindestens einem vertrauenswürdigen Teil, damit die Stimmabgabe wirklich anonymisiert wird. Wenn dieser vertrauenswürdige Teil kompromittiert ist, bleibt die Manipulation oft verborgen und die Anonymität wird niemals gewährleistet. Diese Problematik wird noch verstärkt, wenn die Abstimmung über eine Netzwerkinfrastruktur digital erfolgen soll unter Verwendung von elektronischen Datenverarbeitungsanlagen. Denn systembedingt kann unter normalen Umständen nicht sichergestellt werden, dass der Sender einer Nachricht, die sein Abstimmungsverhalten enthält, anonym bleibt, da die Netzwerkinfrastruktur Kenntnis von den Beteiligten Netzwerkteilnehmern haben muss, um die Nachricht richtig übermitteln zu können.
  • Es sind digitale Anonymisierungsmechanismen bekannt, mit denen die Identität eines Senders in einer digitalen Netzwerkinfrastruktur verborgen werden kann. Ein solcher digitaler Anonymisierungsmechanismus ist beispielsweise das „Onion-Routing“ (auch Zwiebelverschlüsselung genannt), bei dem die Daten, die es zu übertragen gilt, mehrfach verschlüsselt werden. Gegenwärtige Anonymisierungsmechanismen können bspw. auf VPNs beruhen und brauchen mindestens einen vertrauenswürdigen Teil (wie bspw. das VPN Gateway), der Pakete zwischenverarbeitet. Wenn dieser vertrauenswürdige Teil kompromittiert ist, können Datenverbindungen nachvollzogen werden und die Anonymität der Verbindung wird nicht gewährleistet, d.h. der vertrauenswürdige Knoten weiß zumindest, wer mit wem Daten austauscht.
  • Beim Onion-Routing fragt der Sender ein Anonymisierungsnetzwerk nach den zur Verfügung stehenden Netzwerkknoten ab und erstellt eine Übertragungsfolge, die eine Liste von Netzwerkknoten enthält, zu den nacheinander das Netzwerkpaket geschickt werden soll. Von jedem dieser Netzwerkknoten wird nun ein öffentlicher Schlüssel abgefragt, um das Netzwerkpaket mit diesen öffentlichen Schlüsseln zu verschlüsseln. Dabei wird der Klartext mit dem öffentlichen Schlüssel des letzten Netzwerkknoten in der Liste verschlüsselt, um eine erste Verschlüsselungsschicht (erster Ciphertext) zu bilden. Diese erste Verschlüsselungsschicht wird nun mit dem öffentlichen Schlüssel des vorletzten Netzwerkknotens verschlüsselt, um so eine zweite Verschlüsselungsschicht (zweiter Ciphertext) zu bilden. Dies wird wiederholt, bis am ersten Netzwerkknoten (Eingangsknoten in das Netzwerk) die n-te Verschlüsselungsschicht erzeugt wurde. Damit wird jedem Netzwerkknoten gemäß der Reihenfolge der Netzwerkknoten in der erstellten Übertragungsfolge eine Verschlüsselungsschicht in der gesamten verschlüsselten Nachricht zugeordnet.
  • Anschließend wird die so verschlüsselte Nachricht an den ersten Netzwerkknoten der Übertragungsfolge übermittelt, wobei die äußere Verschlüsselungsschicht mit dem öffentlichen Schlüssel dieses Netzwerkknotens verschlüsselt wurde. Dieser Netzwerkknoten hat dabei Kenntnis von dem zum öffentlichen Schlüssel gehörenden privaten Schlüssel und kann so diese n-te Verschlüsselungsschicht des Eingangsknotens entschlüsseln. Als Ergebnis erhält der Eingangsknoten dabei die n-1te Verschlüsselungsschicht, die mit dem öffentlichen Schlüssel des auf den Eingangsknoten nachfolgenden Netzwerkknotens verschlüsselt wurde. Der Eingangsknoten sendet nun seine entschlüsselte Nachricht an den nachfolgenden Netzwerkknoten, der wiederum mit seinem privaten Schlüssel seine ihm zugeordnete Verschlüsselungsschicht entschlüsselt. Der letzte Knoten, der Ausgangsknoten, kann dann mit seinem privaten Schlüssel die eigentliche Klartextnachricht des Senders entschlüsseln und diese dann an den Empfänger weiterleiten.
  • Mit Hilfe des Onion-Routings wird es somit möglich, die Identität des Senders beim Übertragen seiner Nachricht an den Empfänger zu verschleiern, sodass es grundsätzlich nahezu unmöglich ist, rückwirkend die Identität des Senders zu ermitteln. Nachteilig hierbei ist jedoch, dass auch für den Sender die Übertragung seiner Nachricht verborgen bleibt und er somit nicht nachvollziehen kann, wann die beim Empfänger eingetroffen sind. Damit ergibt sich für den Sender auch nicht die Möglichkeit, solche Nachrichten noch vor dem Eintreffen beim Empfänger zurückzuziehen, da die Übertragung für den Sender nicht transparent nachvollziehbar ist.
  • Solche klassischen Anonymisierungsnetzwerke, wie bspw. TOR, sind darüber hinaus nicht kontrollierbar. So können verschiedene Knoten über dieses Netzwerk DDoS Angriffe durchführen, wobei der Verwaltungsknoten dann alle Knoten sperren muss (bspw. mittels einer Blacklist), die im Anonymisierungsnetzwerk als Anonymisierungsknoten agieren, um dieser Attacke zu entkommen. Deshalb verbieten viele Server auch Verbindungen, die über das TOR Netzwerk aufgebaut werden. Zudem müssen in so einem Netzwerk Verbindungen aufrechterhalten werden, weil ein Server dem Knoten nur bestätigen kann, dass er ein Paket vom ihm erhalten hat, falls er das Antwortpaket wieder über dieselbe Verbindungskette zurücksenden kann. Dafür muss die gesamte Kette die Verbindung halten.
  • Aus der EP 2 429 115 B1 ist ein Verfahren bekannt, bei dem die Überprüfung der Korrektheit der Entschlüsselung eines Satzes verschlüsselter Nachrichten auf einem Beweis beruht, der zeigt, dass das Ergebnis der Operation mit einem Operator ϕ von Blöcken verschlüsselter Nachrichten gleich der Verschlüsselung des Ergebnisses der Operation mit dem Operator e von Blöcken ist, die aus denselben entschlüsselten Nachrichten bestehen. Zu diesem Zweck wird für jeden Block verschlüsselter Nachrichten auf der Grundlage der Operation ϕ der verschlüsselten Nachrichten ein erster Eingangsintegritätsnachweis erzeugt, und die Verbindung mit den Ausgangsintegritätsnachweisen, die mit der Operation Θ der entschlüsselten Nachrichten, aus denen jeder Block besteht, erzeugt wurden, überprüft.
  • Es ist daher Aufgabe der vorliegenden Erfindung ein verbessertes Verfahren und System anzugeben, mit dem Datenpakete anonymen von einem Sender zu einem Empfänger übertragen werden können, für den Sender jedoch die Übertragung an den Empfänger transparent nachvollziehbar bleibt.
  • Die Aufgabe wird mit dem Verfahren gemäß Patentanspruch 1 erfindungsgemäß gelöst. Vorteilhafte Ausgestaltungen der Erfindung finden sich in den entsprechenden Unteransprüchen.
  • Gemäß Anspruch 1 wird ein Verfahren zur anonymen Übertragung von digitalen Daten von einer Mehrzahl von Datensendern an einen Datenempfänger mittels eines Anonymisierungsnetzwerkes vorgeschlagen, wobei das Anonymisierungsnetzwerk eine Vielzahl von Netzwerkknoten hat und eingerichtet ist, digitale Daten zur Anonymisierung der Verbindungsdaten über eine ausgewählte Anzahl von Netzwerkknoten des Anonymisierungsnetzwerkes zu übertragen. Ein solches Anonymisierungsnetzwerk kann dabei beispielsweise auf dem Prinzip des Onion-Routings beruhen. Dabei kann ein zentraler Steuerungsknoten vorgesehen sein, der das Netzwerk verwaltet und immer erreichbar bzw. online ist (oder zumindest dafür gesorgt wird, dass der Steuerungsknoten nur minimale Ausfälle hat und resilient ist). Dieser Steuerungsknoten des Anonymisierungsnetzwerkes wählt dabei nach einem gewissen Ablauf diejenigen Knoten zu einem gewissen Zeitpunkt aus, die schließlich das Anonymisierungsnetzwerk zur Übertragung der digitalen Daten bilden sollen. Die Netzwerkknoten, die das Anonymisierungsnetzwerk bilden sollen und von dem Steuerungsknoten ausgewählt werden, können dabei über die Zeit variieren und werden bspw. anhand der Verfügbarkeit ausgewählt.
  • Unter einem Datensender wird dabei insbesondere eine Computereinrichtung verstanden, welche digitale Daten mithilfe von Netzwerkpaketen über eine digitale Netzwerkinfrastruktur (beispielsweise Ethernet) an einen Datenempfänger übertragen möchte. Ein solcher Datenempfänger ist aber ebenfalls eine Computereinrichtung, die mit dem Netzwerk verbunden ist. Ein solches Netzwerk kann beispielsweise das Internet sein.
  • An jedem Datensender wird zunächst eine Übertragungsfolge von Netzwerkknoten des Anonymisierungsnetzwerkes bestimmt, über die der jeweilige Datensender seine digitalen Daten an den Datenempfänger übertragen will, wobei für jeden Netzwerkknoten einer solchen Übertragungsfolge ein dem jeweiligen Netzwerkknoten zugeordneter kryptographischer Schlüssel ermittelt (abgefragt) wird. Die Liste oder auch eine Teilliste aller öffentlichen kryptographischen Schlüssel kann bspw. jederzeit über den Steuerungsknoten abgefragt werden.
  • Eine solche Übertragungsfolge enthält dabei eine Liste von Netzwerkknoten, welche die Reihenfolge der Übertragung durch das Anonymisierungsnetzwerk bestimmt. Die digitalen Daten werden dabei mithilfe von Netzwerkpaketen von einem Netzwerkknoten zum in der Liste nachfolgenden Netzwerkknoten übertragen. Jeder Netzwerkknoten hat dabei ein Schlüsselpaar bestehend aus einem öffentlichen Schlüssel und einem privaten Schlüssel, wobei jeder Datensender zu den ermittelten Netzwerkknoten seine Übertragungsfolge auch die jedem einzelnen Netzwerkknoten zugehörigen öffentlichen Schlüssel ermittelt und hinterlegt.
  • An jedem Datensender werden nun die jeweiligen digitalen Daten mittels der ermittelten kryptographischen Schlüssel der in der jeweiligen Übertragungsfolge des Datensenders enthaltenen Netzwerkknoten schichtweise verschlüsselt, wobei die Verschlüsselung der digitalen Daten eines Datensenders gemäß der Reihenfolge der Netzwerkknoten in der Übertragungsfolge nacheinander beginnend mit dem letzten Netzwerkknoten der Übertragungsfolge erfolgt und jedem Netzwerkknoten somit eine Verschlüsselungsschicht der gesamten Verschlüsselung zugeordnet ist.
  • Jeder Datensender überträgt dann seine verschachtelt verschlüsselten digitalen Daten an den ersten Netzwerkknoten (Eingangsknoten) der Übertragungsfolge des entsprechenden Datensenders, umso die Übertragung der digitalen Daten durch das Anonymisierungsnetzwerk zu starten.
  • An jedem Netzwerkknoten, an dem eine Anzahl von schichtweise verschlüsselten digitalen Daten empfangen wurde, wird die betreffende Verschlüsselungsschicht der schichtweisen Verschlüsselung der jeweils empfangenen digitalen Daten entschlüsselt, wobei die Reihenfolge des Empfangs der digitalen Daten an dem betreffenden Netzwerkknoten permutiert wird. Durch das Permutieren der Reihenfolge der empfangenen digitalen Daten durch den betreffenden Netzwerkknoten wird somit die Information eliminiert, welches Paket von welchem Sender bzw. vorherigen Netzwerkknoten stand.
  • Die an dem jeweiligen Netzwerkknoten empfangenen digitalen Daten, deren betreffende Verschlüsselungsschicht entschlüsselt wurde, werden schließlich (bspw. wieder über den Steuerungsknoten) in einer öffentlichen Datenbank in der permutierten Reihenfolge durch den betreffenden Netzwerkknoten hinterlegt, bevor sie an den nächsten Netzwerkknoten in der Übertragungsfolge in der permutierten Reihenfolge übertragen werden.
  • Durch die vorliegende Erfindung wird es möglich, digitale Daten von einer Vielzahl von Datensendern zu einem Datenempfänger zu übertragen, ohne dass der Datenempfänger feststellen kann, welche digitalen Daten welchen Datensender zuzuordnen sind. Jedoch kann jeder Datensender zu jedem Zeitpunkt nachvollziehen, wo sich seine Datenpakete im Netzwerk befinden und wann sie beim Empfänger eingetroffen sind (transparent nachvollziehbar), ohne dass jemand sonst weiß, von wem welches Paket stammt.
  • Mithilfe der vorliegenden Erfindung lässt sich somit anonymisiert und transparent nachvollziehbar ein Datentransfer von m Datensender zu einem Datenempfänger realisieren, wodurch sich beispielsweise mithilfe einer digitalen Infrastruktur öffentliche Wahlen abhalten lassen.
  • Nachfolgend wird im Detail ein konkreter Implementierungsvorschlag erläutert. Jeder potentielle Datensender kann bei Anfrage, die zyklisch erfolgen sollte, vom Steuerungsknoten eine Liste von Knoten mit deren IP-Adresse erhalten, die in diesem Zeitfenster das Anonymitätsnetzwerk bilden. Dabei kann der Steuerungsknoten das Anonymitätsnetzwerk für jedes Zeitintervall von t Zeiteinheiten verändern und die Anzahl und/oder Auswahl der Netzwerkknoten variieren.
  • Beispielsweise sind Smartphones so konzipiert, dass Software im Hintergrund nur sporadisch aufgeweckt werden kann und dann auch nur für 30 Sekunden läuft. Wenn also das Zeitintervall in diesem Fall auf t=15 Sekunden gesetzt wird, kann der Steuerungsknoten das Gerät zu diesem Intervall ein paar Sekunden vorher aufwecken und sicher sein, dass das Gerät in den 15 Sekunden Anfragen beantworten kann.
  • Der Steuerungsknoten kann nun von allen Knoten, die er im Netzwerk ansprechen kann, für jedes Zeitintervall à t Zeiteinheiten, intelligent eine Liste von Netzwerknoten auswählen, die es durch ihre Leistung und Quantität schaffen, alle Datenpakete in diesem Zeitintervall zu bearbeiten. Dafür kann jeder Netzwerkknoten dem Steuerknoten seine potenzielle Leistungsfähigkeit mitteilen, d.h. wie viele Pakete er glaubt in der Zeit verarbeiten zu können.
  • Beispielsweise könnte t auf 15 Sekunden gesetzt werden, der Steuerungsknoten aber für mehrere Zeitintervalle die Liste schon vorher festlegen im Zeitraum T von beispielsweise 15 Minuten. So wären in diesem Beispiel immer 60 Listen von Anonymitätsnetzwerkknoten für jedes dieser Zeitintervalle bekannt. Der Steuerungsknoten bestimmt somit immer eine neue Liste von Knoten, die in 15 Minuten online sein sollen, sobald ein Zeitintervall abgelaufen ist.
  • Jeder Knoten im Netzwerk bekommt somit bei Anfrage mehrere Listen von Knoten mit deren IP-Adressen für jedes Zeitintervall der Länge t, das sich im größeren Zeitintervall T befindet. Dabei kann der Steuerknoten auch nur Teillisten schicken, damit der Datenaustausch nicht zu groß ist. Jedoch sollte er für jedes Zeitintervall von t Zeiteinheiten so viele Knoten in der Liste haben, das mindestens einer sicher erreichbar (online) ist. Im Fall, dass keiner der Knoten erreichbar sein sollte, kann der Datensender im Notfall immer den Steuerungsknoten nach einer vollständig aktualisierten Liste für das jetzige Zeitintervall fragen.
  • Der Datensender wählt sich dann einen Knoten aus der Liste aus und fragt ihn nach einer vollständigen, aktualisierten Liste der Anonymitätsknoten und deren öffentlichen Schlüssel. Dafür bekommt jeder Anonymitätsknoten aktualisiert die Liste aller noch aktiven Netzwerkknoten im Zeitintervall der Länge t Zeiteinheiten signiert zugesendet. Bei Anfrage eines Datensenders, sendet dieser Knoten diese aktualisierte Liste mit Signatur vom Steuerungsknoten zu.
  • Jeder Sender kann dann seine verschachtelt verschlüsselten digitalen Daten an einen Knoten (Eingangsknoten) senden, der im Anonymitätsnetzwerk online ist und von dem der Datensender die IP-Adresse kennt. Dieser Eingangsknoten überprüft, erst ob der Datensender überhaupt Daten über das Anonymitätsnetzwerk verschicken kann.
  • Jeder Knoten, der ein Paket im Zeitintervall T versenden möchte, fragt vorher beim Steuerungsknoten nach, ob er Datenpakete versenden darf. Hierbei kann der Steuerungsknoten entweder allen Knoten die Erlaubnis geben, (unbeschränkt) Pakete wann immer versenden zu dürfen. Dann ist eine Anfrage nicht notwendig. Falls der Steuerungsknoten die Datenbandbreite jedoch drosseln möchte, gibt er den Knoten des Anonymisierungsnetzwerkes Bescheid, dass nur Pakete angenommen werden dürfen, die ein von ihm signiertes Token enthalten.
  • Das Token ist eineineindeutig und wird vom Datensender selbst bestimmt. Beispielsweise kann dies der Hashwert eines zufälligen 128 Bit langen Bitstrings sein. Der Datensender generiert nun mindestens so viele Token wie er Pakete in einem Zeitintervall der Länge T2 Zeiteinheiten versenden möchte.
  • Im Normalfall sollte der Steuerungsknoten T2 selbst festlegen und auch die maximale Menge an Token, die ein Knoten besitzen kann. Dabei kann der Steuerungsknoten die Anzahl auch individuell festlegen.
  • Beispielsweise kann T2 auf 6 h gesetzt werden. Dann würde der Steuerungsknoten alle 6 Stunden ein neues Schlüsselpaar generieren, mit dem er Token blind signieren kann. Wenn ein Knoten ihm nun Token blind sendet, werden diese von ihm signiert, falls der Knoten seine maximale Tokensignierung in dem Zeitintervall von 6h nicht überschritten hat.
  • Ein Knoten könnte im Fall, dass er mehr Signierung haben möchte, beispielsweise dem Steuerungsknoten eine Entschädigung zahlen, um so seine maximale Anzahl zu erhöhen. Jeder Knoten sollte dabei immer seine maximale Anzahl an Signierungen direkt anfragen und am besten auch am Anfang des Zeitfensters.
  • Wie nun erwähnt, würde der Eingangsknoten das Datenpaket nur annehmen (falls der Steuerungsknoten das Netzwerk drosselt), wenn es ein vom Steuerungsknoten signiertes Token enthält, welches mit dem Datenpaket mitgesendet wird. Zudem ist, wie im Beispiel erwähnt, das Token der Hashwert einer Zufallszahl. Diese Zufallszahl kennt nur der Datensender. Deswegen verschlüsselt er das Datenpaket (ohne Token) noch mit der Zufallszahl zusammen, d.h. die Zufallszahl befindet sich in der Zwiebelverschlüsselung, beispielsweise, bevor sie anfängt oder angehängt dahinter. Diese Verschlüsselung findet mit dem öffentlichen Schlüssel des Steuerungsknoten statt.
  • Dafür hat der Steuerungsknoten einen öffentlichen Schlüssel, der nicht zum Signieren, sondern zum Verschlüsseln geeignet ist und theoretisch auch immer konstant bleiben kann. Dieser Schlüssel wird für die zweitletzte Zwiebelverschlüsselungsschicht gebraucht, sowie für die allererste gerade beschriebene Verschlüsselung.
  • Falls ein Anonymisierungsknoten das Token akzeptiert, sendet er das Datenpaket mit Token zum Steuerungsknoten. Dieser entschlüsselt die erste Schicht und überprüft, ob die Zufallszahl mit dem Hash des Tokens übereinstimmt und natürlich auch, ob das Token von ihm signiert wurde. So wird sichergestellt, dass der Anonymisierungskoten das Token nicht stiehlt und damit ein anderes Datenpaket versendet. Der Anonymisierungsknoten kennt nämlich die Zufallszahl vom Hashwert nicht. Falls alles passt, also auch das Token in dem Zeitintervall nicht schon benutzt wurde, schreibt der Steuerungsknoten das Paket (Zufallszahl und Token kann entfernt werden) in die Datenbank.
  • Falls sich eine vorgegebene Anzahl an nichtbearbeiteten Datenpaketen in der Datenbank befindet, werden diese an die jeweiligen Netzwerknoten weitergeleitet zu denen, die Verschlüsselungsschicht passt. Dafür kann vor jeder Verschlüsselung Schicht beispielsweise die ID des Knotens (z.B. einfach der eindeutige öffentliche Schlüssel des Knotens) stehen. Entweder lesen die Knoten die Datenbank selbständig aus, oder der Steuerungsknoten sendet ihnen die Pakete automatisch zu.
  • Bevor die Daten in die Datenbank in der permutierten Reihenfolge hinterlegt und an den nächsten Netzwerkknoten in der Übertragungsfolgte in der permutierten Reihenfolge übertragen werden, erzeugt der Knoten aber noch einen Zero-Knowledge-Beweis, der zeigt, dass die Datenpakete richtig entschlüsselt und permutiert wurden, d.h. kein Datenpaket ausgetauscht wurde. Dieser Beweis wird mit den Datenpaketen an den Steuerungsknoten geschickt, welcher diesen überprüft und nur nach bestehen die permutierten Datenpakete in die Datenbank einträgt.
  • Das Anonymisierungsnetzwerk kann über einen Steuerknoten (netzwerkfähige Datenverarbeitungsanlage) verwaltet werden, der allen Knoten die nötigen Informationen zur Verfügung stellt, um das Netzwerk zu kontrollieren.
  • Gemäß einer Ausführungsform ist vorgesehen, dass an jedem Netzwerkknoten, an dem eine vorgegebene Anzahl von schichtweise verschlüsselten digitalen Daten empfangen wurde, durch den jeweiligen Netzwerkknoten ein Zero-Knowledge-Beweis erstellt und das Ergebnis zusammen mit den betreffenden digitalen Daten an den nachfolgenden Netzwerkknoten übermittelt wird. Die betreffenden digitalen Daten können dabei an den Steuerungsknoten übermittelt werden, der den Zero-Knowledge-Beweis überprüft. Falls dieser zeigt, dass der Netzwerkknoten seine Schicht richtig entschlüsselt hat und beim Permutieren der Datenpakete keine ausgetauscht oder entfernt hat, werden diese Datenpakete an den nachfolgenden Netzwerkknoten weitergeleitet.
  • Hierdurch wird es möglich, bei jedem Schritt des Entschlüsselns der äußeren Verschlüsselungsschicht an einem Netzwerkknoten mit einer gewissen Wahrscheinlichkeit zu zeigen, dass richtig permutiert und entschlüsselt wurde. Bei einem Zero-Knowledge-Beweis kommunizieren zwei Parteien (der Beweiser und der Verifizierende) miteinander, wobei der Beweiser dabei den Verifizierenden mit einer gewissen Wahrscheinlichkeit davon überzeugt, dass er ein Geheimnis kennt, ohne dabei Informationen über das Geheimnis selbst bekanntzugeben. Damit kann der nachfolgenden Netzwerkknoten einer gewissen Wahrscheinlichkeit überprüfen, ob der Netzwerkknoten davor auch richtig entschlüsselt und permutiert hat.
  • Gemäß einer Ausführungsform ist vorgesehen, dass der Zero-Knowledge-Beweis in Abhängigkeit von der permutierten Reihenfolge und/oder in Abhängigkeit von dem kryptographischen Schlüssel, mit dem die dem jeweiligen Netzwerkknoten zugeordnete Verschlüsselungsschicht entschlüsselt wurde, erstellt wird. Als Geheimnis für den Zero-Knowledge-Beweis wird demnach die Reihenfolge des Ergebnisses der Permutation und/oder der private kryptographischen Schlüssel des Netzwerkknoten, der seine Verschlüsselungsschicht damit entschlüsselt hat, verwendet.
  • Gemäß einer Ausführungsform ist vorgesehen, dass die Veröffentlichung der öffentlichen Datenbank mittels einer Blockchain erfolgt. Bei einer Blockchain werden dabei immer Informationen der vorhergehenden Transaktion berücksichtigt, sodass die gesamte Transaktionskette hinsichtlich ihrer Integrität überprüft werden kann. Hierdurch kann die öffentliche Datenbank manipulationssicher aufgebaut werden, um so die transparente Nachvollziehbarkeit der Datenübertragung sicherzustellen. In diesem Fall kann jeder Netzwerknoten falls gewünscht an der Blockchain teilnehmen und jeden Block auslesen, wobei über Smart Contracts die Zero-Knowlegde-Beweise geprüft werden. Jedoch sollte hier die Datenbank nur vom Steuerungsknoten beschreibbar sein.
  • Gemäß einer Ausführungsform ist vorgesehen, dass an zumindest einem Netzwerkknoten des Anonymisierungsnetzwerkes der jeweilige Datensender der digitalen Daten mittels einer blinden Signatur authentifiziert wird. Dies passiert im Normalfall am ersten Knoten, der das komplett verschlüsselte Datenpaket vom Datensender erhält. Mithilfe einer blinden Signatur kann somit das Datenpaket an einem Netzwerkknoten authentifiziert werden, ohne dass der Netzwerkknoten zuvor wusste, was eigentlich signiert werden soll. Hierdurch können hohes Maß an Anonymität erreicht werden.
  • Gemäß einer Ausführungsform ist vorgesehen, dass durch einen Steuerungsknoten des Anonymisierungsnetzwerkes für einen Datensender ein oder mehrere Zufallszahlen generiert werden, die jeweils Teil einer blinden Signatur für den betreffenden Datensender sind. Gemäß eine Ausführungsform ist vorgesehen, dass durch einen Steuerungsknoten des Anonymisierungsnetzwerkes für einen Datensender Netzwerkinformationen zur Verfügung gestellt werden sowie ggf. ein oder mehrere Zufallszahlen blind empfange werden, die jeweils Teil einer blinden Signatur für den betreffenden Datensender sind.
  • Gemäß einer Ausführungsform ist vorgesehen, dass die digitalen Daten eines Netzwerkknotens (Datensenders) in Abhängigkeit von einer vorgegebenen Bedingung oder einem vorgegebenen Ereignis an den nächsten Netzwerkknoten (Datenempfänger) in der jeweiligen Übertragungsfolge oder an den Empfänger übertragen werden. So kann beispielsweise eingestellt werden, dass erst nach Überschreiten eines gewissen Zeitpunktes oder nach Erhalt einer gewissen Anzahl von Datenpaketen mit den digitalen Daten der Datentransfer zum nächsten Netzwerkknoten erfolgt. Somit kann der Datentransfer in Art eines Mediators, bspw. mittels des Steuerungsknoten, überwacht werden. Dabei kann bspw. erst nach Überschreiten eines gewissen Zeitpunktes oder nach Erhalt einer gewissen Anzahl von Datenpaketen mit den digitalen Daten der Datentransfer vom Steuerungsknoten, welcher in diesem Fall immer der letzte Knoten im Anonymisierungsnetzwerk sein sollte, der die Daten vom eigentlichen Datenempfänger erhält, erfolgen.
  • Gemäß einer Ausführungsform ist vorgesehen, dass digitale Daten zumindest eines Datensenders, die von einem Netzwerkknoten (bspw. dem Steuerungsknoten) des Anonymisierungsnetzwerkes erhalten wurden, durch Anfrage des betreffenden Datensenders gelöscht werden. Dafür erstellt jeder Datensender bspw. für jedes Datenpaket eine große Zufallszahl und bestimmt deren Hashwert (idealerweise sollte die Hashfunktion eine Zahl im gleichen Zahlenraum zurückgeben, z.B. wenn die Zufallszahl ein 128 Bit String ist, sollte das Ergebnis der Hashfunktion auch ein 128 Bit String sein). Beide Werte merkt sich der Datensender, sendet jedoch nur den Hashwert als Anhang in der zweitletzten Zwiebelschicht, die an den Steuerungsknoten gerichtet ist, also mit dem öffentlichen Schlüssel des Steuerungsknotens verschlüsselt ist.
  • Wenn der Steuerungsknoten seine Schicht entschlüsselt, erhält er somit den Hashwert plus die letzte Schicht, die mit dem öffentlichen Schlüssel des Empfängers verschlüsselt ist. Wenn ein Datensender nun sein Paket wieder löschen will, sendet er einfach anstatt des Hashwerts die Zufallszahl und setzt die letzte Zwielbelverschlüsselung auf einen ungültigen Wert (beispielsweise ein Bitstring nur aus Nullen). Sobald der Steuerungsknoten eine Zufallszahl erhält deren Hashwert existiert (und auch das restliche Datenpaket nur aus beispielsweise Nullen besteht), löscht er das Paket mit diesem Hashwert, d.h. leitet es nicht mehr zum Empfänger weiter.
  • Da der jeweilige Datensender aufgrund der Veröffentlichung der Übertragung seiner Daten feststellen kann, wo sich in der gesamten Kette seine Daten befinden, wenn die Datenbank veröffentlicht ist, besteht die Möglichkeit, diese digitalen Daten zu löschen bzw. zurückzuziehen, sodass diese nicht an den Empfänger weitergeleitet werden. Somit kann bspw. ein bereits abgegebenes Abstimmungsergebnis zurückgezogen und erneut veranlasst werden. Zudem kann so sichergestellt werden, dass der Steuerungsknoten nicht selbstständig Datenpakete entfernt. Er muss durch einen Datenbankeintrag beweisen, dass er eine Zufallszahl erhalten hat, die zu einem Hashwert passt, indem er nur diesen Teil seiner Pakete so entschlüsselt, dass alle Parameter vorhanden sind, um mit dem öffentlichen Schlüssel des Steuerungsknotens diese Felder wieder so zu entschlüsseln, dass sie mit den Feldern in der Datenbank übereinstimmen. Falls nun die Zufallszahl zum Hashwert passt, wird das Paket mit dem Hashwert nicht mehr entschlüsselt und kann so nie vom Datenempfänger ausgelesen werden.
  • Ein Aspekt der Erfindung betrifft ein Verfahren zur anonymen Übertragung von digitalen Datenstreams von einer Mehrzahl von Datensendern an einen Datenempfänger mittels eines sich stetig veränderten Anonymisierungsnetzwerkes, das eine Vielzahl von Netzwerkknoten hat und digitale Daten zur Anonymisierung der Verbindungsdaten über eine ausgewählte Anzahl von Netzwerkknoten des Anonymisierungsnetzwerkes überträgt, welches wiederum von einem Steuerungsknoten überwacht wird, welcher auch die Brandbreite des Netzwerkes und der einzelnen Netzwerkknoten limitieren oder durch Belohnungen erweitern kann, wobei das Verfahren einen oder mehrere der folgenden Schritte umfasst:
    • - der Steuerungsknoten ist im Idealfall von jedem Netzwerknoten immer ansprechbar, d.h. jeder Knoten kann jederzeit eine Verbindung zum Steuerungsknoten aufbauen, falls dieser online ist, wobei der Steuerungskoten so aufgebaut ist, dass er bei Ausfällen schnellstmöglich wieder online verfügbar ist und nie selbstständig offline geht;
    • - jeder Netzwerkknoten versucht sich mindestens einmal mit dem Steuerungsknoten in einem Zeitintervall T zu verbinden, wobei der Netzwerkknoten bei der Verbindung, eine Liste der Netzwerknoten beim Steuerknoten herunterlädt, die aussagt welche Knoten für das Zeitfenster T1 der Länge T und welche Knoten für das nächste Zeitfenster T2 das Anonymisierungsnetzwerk bilden und welche öffentliche kryptographische Schlüssel sie besitzen, dabei kann jedes Zeitfenster der Länge T noch in kleinere Intervalle t eingeteilt sein, wobei in jedem dieser t Intervalle andere Knoten das Anonymisierungsnetzwerk bilden;
    • - der Steuerknoten kann zusätzlich die Anonymisierungsknoten im Zeitintervall in denen sie ausgewählt wurden aufwecken, falls diese im Standby Modus sind, beispielsweise können Apps die im Hintergrund auf Smartphones laufen über Push Nachtrichten für 30 Sekunden aufgeweckt werden (falls t <= 30 s ist);
    • - jeder Knoten bestimmt nun eine zufällige Übertragungsfolge für jedes Zeitintervall t, mit vorher festgelegten Anzahl Anonymisierungsknoten aus dem Anonymisierungsnetzwerkes, über die der jeweilige Datensender seine digitalen Daten an den Datenempfänger übertragen will, wobei wie erwähnt für jeden Netzwerkknoten einer solchen Übertragungsfolge ein dem jeweiligen Netzwerkknoten zugeordneter kryptographischer Schlüssel existiert und die erste innere Schicht mit dem öffentlichen Schlüssel des Datenempfängers und die zweite innere Schicht mit dem öffentlichen Schlüssel des Steuerknotens verschlüsselt ist;
    • - an jedem Knoten werden die jeweilige Übertragungsfolgen mittels der ermittelten kryptographischen Schlüssel der in der jeweiligen Übertragungsfolge des Datensenders enthaltenen Netzwerkknoten schichtweise verschlüsselt, wobei die Verschlüsselung der Übertragungsfolge gemäß der Reihenfolge der Netzwerkknoten in der Übertragungsfolge nacheinander beginnend mit dem letzten Netzwerkknoten der Übertragungsfolge erfolgt und jedem Netzwerkknoten somit eine Verschlüsselungsschicht der gesamten Verschlüsselung zugeordnet ist, dabei ist jedes Datenpaket immer gleich groß;
    • - falls eine uneingeschränkte Übertragung von Datenpaketen im Anonymisierungsnetzwerkes vom Steuerknoten nicht erlaubt wird, muss jeder Knoten ein eineindeutiges selbstbestimmtes Token, beispielsweise seine verschlüsselte Übertragungsfolge oder einfach eine Zufallszahl von dem Steuerungsknoten blind signieren lassen;
    • - falls ein Knoten Daten versenden will, wird er zum Datensender für das zu dem Zeitpunkt bestehende Zeitfenster der Länge t, dafür verschlüsselt er seine Daten in der Übertragungsreihenfolge und sendet sie an den ersten Netzwerknoten dieser Übertragungsreihenfolge, wobei auch das Token mitgesendet wird, falls die Bandbreite vom Steuerknoten kontrolliert wird;
    • - falls die Bandbreite gedrosselt ist, überprüft der erste Knoten die Signatur, um sicherzustellen, dass diese vom Steuerknoten stammt, zudem sendet er, wenn alles okay ist, die Signatur (falls vorhanden) und die Daten an den Steuerknoten, der die verschlüsselten digitalen Daten mit verschlüsselter Übertragungsreihenfolge in eine Datenbank einträgt, falls alles okay ist;
    • - die Datenbank ist nur vom Steuerknoten beschreibbar, kann aber direkt oder indirekt von den Anonymisierungsknoten eingelesen werden, falls nicht direkt dann durch Anfrage der Datenbankeinträge beim Steuerknoten;
    • - sobald sich in der Datenbank eine vorgegebene Anzahl schichtweise verschlüsselter digitaler Daten befindet, die noch nicht bearbeitet wurden, also noch komplett verschlüsselt vorliegen, wird an jedem Netzwerkknoten, an dem die zu gerade bearbeitende äußere Schicht mit seinem öffentlichen Schlüssel verschlüsselt ist, die betreffende Verschlüsselungsschicht der schichtweisen Verschlüsselung der jeweils empfangenen digitalen Daten entschlüsselt,
    • - wobei die Reihenfolge des Empfangs der digitalen Daten an dem betreffenden Netzwerkknoten permutiert wird,
    • - wobei die an dem jeweiligen Netzwerkknoten empfangenen digitalen Daten, deren betreffende Verschlüsselungsschicht entschlüsselt wurde, in der Datenbank in der permutierten Reihenfolge durch den betreffenden Netzwerkknoten hinterlegt werden, also zum Steuerknoten geschickt werden, der diese in die Datenbank einträgt, bevor sie vom Steuerknoten an den nächsten Netzwerkknoten in der Übertragungsfolge in der permutierten Reihenfolge übertragen werden,
    • - dabei überprüft der Steuerknoten, ob die Schicht korrekt entschlüsselt wurde und ob eine zulässige Permutation verschickt wurde, also keine Pakete beim Permutieren ausgetauscht wurden,
    • - dafür sendet jeder Netzwerknoten auch einen zero Knowledge Beweis an den Steuerknoten, der diese Behauptung beweisbar macht, dieser zero Knowledge Beweis wird dann vom Steuerknoten überprüft,
    • - zusätzlich wählt der Steuerknoten intelligent die Datenbandbreite für jeden Netzwerknoten im Anonymisierungsnetzwerk in jedem Schritt und teilt diese allen Anonymisierungsnetzwerknoten mit;
    • - der Datensender gibt seinem anfangs in der innersten Schicht verschlüsselten Datenpaket weitere Informationen mit, wie eine Zufallszahl,
    • - die Zufallszahl wird vom Datenempfänger vorher blind signiert, falls der Datenempfänger selbst auch die Datenpakete bei ihm ankommender valider Pakete drosseln möchte, ansonsten nicht,
    • - dafür stellt der Datensender vor Beginn eines Datenstreams eine Verbindung mit dem Datenempfänger her, wobei diese Verbindung nur hergestellt werden muss, falls die Datenrate gedrosselt werden soll, hier wird bestimmt wie viele Datenpakete und wie viele Datenstreams der Datensender an den Datenempfänger senden darf;
    • - falls der Datensender den Datenempfänger nicht direkt im Netzwerk ansprechen kann, kann dies durch den Steuerknoten geschehen;
    • - sobald der Datensender weiß, wie viele n Datenstreams und m Datenpakte er versenden darf, erzeugt er m unterschiedliche Zufallszahlen und sendet davon n (große) Zufallszahlen blind (für das blinde signieren) an den Datenempfänger, welche diese mit dem gleichen festgelegen Schlüssel blind signiert;
    • - zudem sendet der Datensender die m-n weiteren unterschiedlichen Zufallszahlen zum blinden Signieren an den Datenempfänger, der diese auch alle mit dem gleichen Schlüssel verschlüsselt, jedoch ist dies ein zweiter Schlüssel, der sich vom ersten unterscheidet mit dem die n Zufallszahlen blind signiert wurden;
    • - durch diese Vorgehensweise können immer noch mehr als die autorisierte Menge von Paketen an den Datenempfänger weitergeleitet werden, möchte der Datenempfänger zudem die Bandbreite der ankommenden Pakete vom Steuerknoten drosseln, signiert er blind m weitere Token, welche vom Datensender eineindeutig bestimmt werden, mit dem gleichen, aber von den beiden anderen benutzen Schlüsseln unterschiedlichen Schlüssel;
    • - der Datensender hängt dann ein noch nicht benutztes Token an jedes seiner Datenpakete (innerste verschlüsselte Schicht) an plus ein altes Token, welches die Zufallszahl eines zuvor versendeten Datenpaketes enthält, falls es nicht das erste Datenpaket eines Datenstream ist, ansonsten einen invaliden Wert, wie beispielsweise 0;
    • - der Steuerknoten überprüft im letzten Schritt vor der Weiterleitung an den Datenempfänger, ob die Signatur von dem Datenempfänger stammt, entschlüsselt seine Schicht und leitet das Paket nur in diesem Fall weiter;
    • - sobald der Datenempfänger ein Paket erhält, schaut er welche Zufallszahl benutzt wurde, um auf das vorherige Datenpaket zu referieren,
    • - so kann der Datenempfänger die Datenstreams wie eine Kette zusammenfügen, wobei jedes Datenpaket so aufgefüllt ist, dass alle Datenpakete die exakt gleiche Länge haben,
    • - falls jedes Datenpaket noch durch eine Signatur authentifiziert sein muss, überprüft der Datenempfänger noch die Signaturen der Zufallszahl, ein beginnender Datenstream enthält eine Zufallszahl die mit dem ersten seiner Schlüssel signiert wurde, alle weiteren Zufallszahlen in den Datenpaketen sind mit seinem zweiten Schlüssel verschlüsselt;
  • Die oben bezeichneten Schritte können einzeln oder zusammen mit dem zuvor bezeichneten Verfahren kombiniert werden.
  • Die Aufgabe wird im Übrigen auch mit dem System gemäß Anspruch 10 erfindungsgemäß gelöst, wobei das System zur anonymen Übertragung von digitalen Daten von einer Mehrzahl von Datensendern an einen Datenempfänger mittels eines Anonymisierungsnetzwerkes eingerichtet ist. Das Anonymisierungsnetzwerk hat eine Vielzahl von Netzwerkknoten, um digitale Daten zur Anonymisierung der Verbindungsdaten über eine ausgewählte Anzahl von Netzwerkknoten des Anonymisierungsnetzwerkes zu übertragen. Das System ist zur Durchführung des Verfahrens wie vorstehend beschrieben eingerichtet und umfasst eine Mehrzahl von Datensender, mindestens einen Datenempfänger und ein Anonymisierungsnetzwerk mit einer Mehrzahl von Netzwerkknoten umfasst. Vorzugsweise kann das System einen Steuerungsknoten - wie vorstehend beschrieben - umfassen.
  • Die Erfindung wird anhand der beigefügten Figuren beispielhaft näher erläutert. Es zeigen:
    • 1 schematische Darstellung einer schichtweisen Verschlüsselung von digitalen Daten (Zwiebelverschlüsselung);
    • 2 schematische Darstellung der Erfindung;
    • 3 Beispielhafter Algorithmus, der bei den Datensendern ausgeführt wird, um die Knoten und der öffentliche Schlüssel für die schichtweise Verschlüsselung auszuwählen;
    • 4 Kette von Datenpaketen die zu einem Datenstream beim Empfänger zusammengefügt werden.
  • 1 zeigt digitale Daten 10, die durch mehrere Verschlüsselungsschichten 11, 12 und 13 schichtweise bzw. verschachtelt verschlüsselt wurde. Die digitalen Daten 10, die den Klartext der Nachricht darstellen, wurden dabei zunächst mit einem ersten öffentlichen Schlüssel PK1 verschlüsselt, um die erste Verschlüsselungsschicht 11 zu erzeugen. Anschließend wurde diese erste Verschlüsselungsschicht 11 mit einem zweiten öffentlichen Schlüssel PK2 verschlüsselt, um die zweite Verschlüsselungsschicht 12 zu erzeugen. Schließlich wurde die zweite Verschlüsselungsschicht 12 mit einem dritten öffentlichen Schlüssel PK3 verschlüsselt, um die dritte Verschlüsselungsschicht dreizehnte erzeugen. Hierbei sind die asymmetrischen Verschlüsselungsverfahren so gewählt, dass Verschlüsselungen gleicher Daten mit gleichem privatem Schlüssel ununterscheidbar sind (am besten IND-CCA2 sicher).
  • Um nun an den Klartext der digitalen Daten 10 zu gelangen, muss in dieser Reihenfolge wieder entschlüsselt werden. Es wird demnach die dritte Verschlüsselungsschicht 13 mithilfe eines zu dem dritten öffentlichen Schlüssel PK3 gehörenden privaten Schlüssels entschlüsselt, um an die zweite Verschlüsselungsschicht 12 zu gelangen. Die zweite Verschlüsselungsschicht 12 wird nun mit einem passenden privaten Schlüssel entschlüsselt, um an die erste Verschlüsselungsschicht 11 zu gelangen, die dann mit einem passenden privaten Schlüssel entschlüsselt wird, um an die digitalen Daten 10 im Klartext zu gelangen.
  • 2 zeigt in einer schematischen Darstellung den Ablauf des erfindungsgemäßen Verfahrens. Zunächst existieren eine Mehrzahl von Datensendern 100, die jeweils Daten an einen Datenempfänger 200 übertragen möchten. Um diese Übertragung anonym durchzuführen, werden die digitalen Daten 10 durch ein Anonymisierungsnetzwerk 300 geschleust, um die Herkunft der Daten 10 zu verschleiern. Der Empfänger 200 kann danach nicht mehr feststellen, welcher der Datensender welche digitalen Daten an ihn gesandt hat.
  • Nachfolgend wird das Übertragen von digitalen Daten eines einzelnen Datensenders 101 beschrieben, was jedoch auf alle übrigen Datensender zu übertragen ist. Der Datensender 101 ermittelt über den Steuerungsknoten 500 zunächst eine Liste von Netzwerkknoten 301, 302 und 303, über die seine digitalen Daten 10 an den Empfänger 200 übertragen werden sollen. Diese so erstellte Übertragungsfolge enthält dabei eine Reihenfolge, über die digitalen Daten an den Empfänger 200 gesendet werden sollen. Dabei ist im Ausführungsbeispiel der 2 vorgesehen, dass die digitalen Daten zunächst an den ersten Netzwerkknoten 301 übertragen werden sollen, von wo aus die Daten dann an den zweiten Netzwerkknoten 302 und anschließend an den dritten Netzwerkknoten 303 übertragen werden sollen. Die übrigen Netzwerkknoten 304 und 305 des Automatisierungsnetzwerkes bleiben in dieser Übertragungsfolge unberücksichtigt.
  • Von jedem dieser Netzwerkknoten 301, 302 und 303 ermittelt der Datensender 101 nun die zugehörigen öffentlichen Schlüssel PK1, PK2 und PK3, um die digitalen Daten gemäß dem Prinzip der Zwiebelverschlüsselung wie in 1 gezeigte zu verschlüsseln.
  • Nachdem dies geschehen ist, werden die digitalen Daten 10 mit allen 3 Verschlüsselungsschicht denn an den ersten Netzwerkknoten 301 gesendet. Dieser sendet diese Daten an den Steuerungsknoten 500 (immer noch verschlüsselt), falls der Datensender 101 auch wirklich Daten versenden darf, also das Token beispielsweise die Signatur des Steuerknotens 500 enthält. Wenn das Token noch nicht benutzt wurde, trägt der Steuerungsknoten 500 das Paket in die Datenbank 400 ein. Falls genügend unbearbeitete Pakete in der Datenbank 400 liegen, fängt der Netzwerknoten an seine erste Schicht zu entschlüsseln. Dort wird mit dem entsprechenden privaten Schlüssel dieses Netzwerkknotens die erste Verschlüsselungsschicht entschlüsselt und das Ergebnis, wie zuvor an den Steuerungsknoten übertragen, der diesen dann an einen zweiten Netzwerkknoten 302 überträgt. Dafür prüft der Steuerungsknoten aber vorher, ob der vorherige Netzwerknoten, die Datenpakete, die für ihn in der Datenbank lagen, auch richtig entschlüsselt und permutiert hat. Jeder Netzwerknoten erstellt aus diesem Grunde einen Zero-Knowledge-Beweis. Am zweiten Netzwerkknoten wird die zweite Verschlüsselungsschicht entschlüsselt und das Ergebnis wie zuvor über den Steuerungsknoten an den dritten Netzwerkknoten übertragen, wobei der dritte Netzwerkknoten 303 die dritte Verschlüsselungsschicht entschlüsselt und das Ergebnis wieder über den Steuerungsknoten 500 an den Empfänger 200 weiterleitet.
  • An jedem Netzwerkknoten in dieser Kette wird dabei gewartet, bis eine gewisse Anzahl von Datenpaketen mit entsprechender Verschlüsselungsschicht eingetroffen ist, wobei erst dann mit der Entschlüsselung begonnen wird. Anschließend wird die Reihenfolge des Eingangs der Datenpakete von den anderen Datensendern permutiert, wobei dann diese Permutation jedes einzelnen Netzwerkknotens in einer öffentlichen Datenbank 400 hinterlegt wird. Hierbei werden die Schritte mit allen Netzwerknoten mittels dem Steuerungsknoten synchronisiert. Sobald eine vom Steuerungsknoten festgelegte Anzahl von Paketen in der Datenbank liegen, schickt er die Pakete an die jeweiligen Netzwerkknoten, also falls sie diese noch nicht bekommen haben.
  • Die öffentlichen Datenbank 400 kann beispielsweise ein Blockchain sein, um so den Übertragungsweg der Pakete ohne Kenntnis des Senders transparent nachvollziehbar zu hinterlegen. Wie schon erwähnt sollte nur der Steuerungsknoten 500 in diese Blockchain schreiben können, jedoch könnten so alle Knoten jederzeit die Blöcke der Blockchain herunterladen, um genau nachvollziehen, was zu jedem Zeitpunkt passiert ist. In dieser Blockchain sind dann auch die (non-interaktiven) Zero-Knowledge-Beweise abgelegt.
  • Dabei kann vorgesehen sein, dass mithilfe einer blinden Signatur jedes Datenpaket an den jeweiligen Netzwerkknoten authentifiziert wird, um so sicherzustellen, dass der Datensender 100 auch autorisiert ist, Daten an den Empfänger 200 zuschicken. So kann insbesondere auch die Anzahl der übertragbaren Datenpakete von einem Datensender entsprechend limitiert werden, umso beispielsweise bei digitalen Abstimmungen mehrfache Abstimmungen zu verhindern.
  • Anhand eines ausführlichen Beispiels soll nun die Erfindung weiter detailliert beschrieben werden.
  • Alice ist der Sender 101, Bob der Empfänger 200. Alice fragt anfangs den Plattformbetreiber in Form des Steuerungsknoten 500, welche Netzwerknoten online und zur Verfügung stehen und wie viele Netzwerknoten im Anonymisierungsnetzwerk ausgewählt werden dürfen. Diese Anzahl sollte für jede Kommunikation in einem Zeitintervall die gleiche sein (beispielsweise 3 Netzwerkknoten wie in 2).
  • Zudem bekommt Alice vom Plattformbetreiber die Information, wie groß die Zeitintervalle sind, also wie häufig die Netzwerknoten für das Anonymisierungsnetzwerk ausgetauscht werden. Dafür beobachtet der Plattformbetreiber fortlaufend, wie viele Sender es in den letzten Zeiteinheiten gab und wie viele Datenpakete im Schnitt in diesem Zeitintervall gesendet werden.
  • Beispielsweise könnte das Netzwerk aus einer Millionen Netzwerkknoten bestehen, von denen die Knoten im Schnitt nicht mehr als 15 Sekunden durchgehend online sein können. Zudem weiß der Plattformbetreiber aus vorherigen Beobachtungen, dass in 15 Sekunden ca. 10.000 Netzwerknoten insgesamt 1.000.000 Pakete verschicken wollen. Außerdem teilt ihm jeder Knoten mit, wie viel Zeit ein Knoten braucht, um die minimale Anzahl an Paketen zu verarbeiten. So könnte der Plattformbetreiber festlegen, dass ein Knoten innerhalb von 30 Millisekunden mindestens 15 Pakete empfangen, verarbeiten (permutieren, entschlüsseln und Zero-Knowledge-Beweis erstellen) und versenden muss. Nur solche Knoten dürfen an dem Netzwerk teilnehmen. Gleichzeitig kann der Plattformbetreiber eine maximale Anzahl festlegen, damit das System so dezentral wie möglich bleibt und nicht nur Server die Arbeit übernehmen. Beispielsweise könnte festgelegt sein, dass nicht mehr als 150 Pakete im Schnitt verarbeitet werden sollen. Zum Schluss würde er auch festlegen, durch wie viele Knoten ein Paket geleitet werden soll. In dem Beispiel könnte es gut sein, wenn Pakete innerhalb von 90 Millisekunden durch das Netzwerk geschickt werden, wobei dann ein Paket durch 3 Knoten gehen sollte (a 30 Millisekunden).
  • In diesem Beispiel würde der Plattformbetreiber Alice mitteilen, dass das Anonymitätsnetzwerk sich alle 15 Sekunden verändert. Zusätzlich würde er Alice mehrere Listen von Knoten senden, die in den nächsten beispielsweise 60 Zeitintervallen von 15 Sekunden höchstwahrscheinlich für das Anonymitätsnetzwerk verantwortlich sind und auch direkt angesprochen werden können. Diese 60 Listen würden in diesem Beispiel 15 Minuten abdecken. Alice müsste also alle 15 Minuten beim Plattformbetreiber neue Listen anfragen, um so jederzeit Pakete versenden zu können. Zudem teilt der Plattformbetreiber Alice mit, dass sie 3 Knoten auswählen muss, durch die sie ihr Paket versenden möchte.
  • Eine Liste muss dabei nicht alle Knoten des Anonymitätsnetzwerkes enthalten, sondern nur eine kleinere Teilmenge, von der auszugehen ist, dass sie mit großer Wahrscheinlichkeit online sein wird. Beispielsweise könnte der Plattformbetreiber 60 Listen mit den IP-Adressen von je 10 Knoten erstellen und diese Alice senden. Sobald Alice ein Paket versenden möchte schaut sie nach in welchem 15 Sekunden Intervall sie sich gerade befindet und kennt somit die 10 Knoten und deren IP Adressen, womit sie diese ansprechen kann. Sie wählt sich einen dieser Knoten aus und fragt, wie viele Netzwerkknoten gerade im Anonymisierungsnetzwerk online sind.
  • Im Beispiel würden, wenn ein Knoten im Schnitt 20 Pakete alle 30 ms verarbeiten kann, aber 1.000.000 Pakete in 15 Sekunden (ca. 2000 Pakete pro 30 ms) verarbeitet werden müssen, 100 Knoten für das Netzwerk verantwortlich sein. Weil die Liste in diesem Fall recht klein ist, könnte sich Alice direkt alle öffentlichen Schlüssel von dem Knoten herunterladen. Jeder Knoten im Anonymisierungsnetzwerk hat in diesem Fall die komplette Liste aller öffentlichen Schlüssel vom Plattformbetreiber kurz vor Anfang ihres Zeitintervalls erhalten.
  • Weil ein öffentlicher Schlüssel mindestens 256 Bit groß sein sollte (32 Byte), könnte diese Liste aber auch recht groß werden (bei 1 Millionen Knoten 32 MB). Wenn nun viel mehr Pakete versendet werden, könnte die Liste aufgeteilt werden. Dann würden in Alice Liste jeder Knoten ein Teil der Liste enthalten (beispielsweise jeder der Knoten ein unterschiedliches Zehntel der Gesamtliste). Jedenfalls könnte sich Alice so durchfragen und von jedem Knoten verschiedene öffentliche Schlüssel bekommen, von denen sie dann 3 auswählt, um die Zwiebelverschlüsselung zu starten.
  • Natürlich sollten die Listen nicht 100-prozentig auf ein statisches System zugeschnitten sein. So sollte der Plattformbetreiber auch immer ein Buffer einbauen für die Anzahl der Knoten, die unerwartet ausfallen können. So sollten falls im System 100 Knoten benötigt werden, besser 120 Knoten ausgewählt werden (wenn 20% im Schnitt ausfallen). Genauso sollte sichergestellt werden, dass Alice mindestens einen Knoten in der Liste im Zeitintervall erreicht. Falls dies wider Erwarten nicht der Fall sein sollte kann Alice notfalls auch immer den Plattformbetreiber (Steuerungsknoten) nach einer aktuellen Liste fragen.
  • Alice sendet diese Zwiebelverschlüsselung an einen ausgewählten Eingangsknoten, im Beispiel könnte sie einen der 10 Koten in der Liste nach einer Teilliste von IP-Adressen andere Knoten anfragen, die dieser Knoten kennt. Zu jedem öffentlichen Schlüssel den ein Anonymisierungsknoten hat, sollte er auch die IP-Adresse kennen (mitgeteilt vom Plattformbetreiber). Alice wählt nun eine IP-Adresse aus, mit welcher sie ihren Eingangsknoten ansprechen kann. Der Eingangsknoten 301 enthält nun das komplett (zwiebel)verschlüsselte Datenpaket von Alice.
  • Zusätzlich sendet Alice auch noch ein Token zum Eingangsknoten. Dieses Token erhält sie vom Plattformbetreiber, vorausgesetzt dieser erlaubt ihr, Pakete über das Anonymisierungsnetzwerk zu versenden. Beispielsweise könnte der Plattformbetreiber festlegen, dass ein Knoten nicht mehr als 1.000.000 Datenpakete innerhalb von 6 Stunden versenden darf. Falls dies der Fall ist, könnte Alice nun im Zeitintervall von 6 Stunden, 1.000.000 neue Token anfragen. Ein Token kann recht groß sein (ab 128 Byte), weshalb in diesem Beispiel vielleicht nur 100 Token pro Sekunde übertragen werden.
  • Die Token entstehen durch das blinde Signieren. Wenn Alice nun für diese Sekunde 100 Token anfragt, erstellt sie vorher 100 Zufallszahlen, beispielsweise 128 Bit große zufällig gewählte Bitstrings. Zu jedem dieser 100 Zufallszahlen erstellt sie einen Hash gleicher Länge (also auch 128 Bit) und speichert diese 100 Paare. Die 100 Hashwerte sendet sie blind zum Plattformbetreiber, der diese signiert. Weil dies durch das blinde signieren passiert, weiß der Plattformbetreiber nicht welche Daten er signiert, dennoch bekommt Alice am Ende der Ausführung 100 Plattformbetreiber-Signaturen zurück, die zu den jeweiligen Hashen gehören.
  • Der Eingangsknoten enthält nun das Token (Hash mit Signatur) mit der Zwiebelverschlüsselung, wobei die gesamte Zwiebelverschlüsselung nochmal mit dem öffentlichen Schlüssel vom Plattformbetreiber verschlüsselt ist und in dieser Schicht auch noch die Zufallszahl enthalten ist, die zum Hash des Tokens gehört. Der Eingangsknoten überprüft die Signatur des Tokens und falls diese korrekt ist und dem Plattformbetreiber gehört, sendet er das Paket komplett verschlüsselt mit Token zum Plattformbetreiber.
  • Der Plattformbetreiber überprüft die Signatur nochmals und falls alles okay ist, entschlüsselt er seine Schicht. Falls die Zufallszahl in seiner Schicht gehasht dem Hash des Tokens entspricht, weiß der Plattformbetreiber, dass dies ein korrektes Datenpaket ist, dessen Inhalt nicht vom Eingangsknoten verändert wurde, weil dieser die Zufallszahl nicht kennen konnte, diese ist nur Alice bekannt. Falls also alles korrekt ist, trägt der Plattformbetreiber die Zwiebelverschlüsselung ohne Token und Zufallszahl und seine erste Schicht entschlüsselt in die Datenbank 400 ein.
  • Nun wird gewartet bis sich eine festgelegte Anzahl unbearbeiteter Pakete in der öffentlichen Datenbank befinden. Hat das Anonymisierungsnetzwerk bspw. 100 Knoten in der Liste, die genutzt werden können, und soll jeder Eintrittsknoten beispielsweise im Durchschnitt 10 Datenpakete erhalten, so wird gewartet, bis 1000 Datenpakete auf der öffentlichen Datenbank liegen. Sobald dies der Fall ist, entschlüsselt jeder Eingangsknoten die Pakete in der Datenbank, die zu ihm gehören, und erstellt eine Permutation der Anordnung der Pakete, d. h. er mischt die Reihenfolge der Pakete durcheinander, sodass das Paket, welches als erstes eingetroffen ist, jetzt an einer anderen beliebigen Stelle steht, genauso wie jedes andere. Falls die Knoten keinen direkten Zugriff auf die Datenbank haben, sendet der Plattformbetreiber ihnen die Pakte zu, die zu ihnen gehören. Diese neue Liste der Pakete, von denen nun die erste Schicht entschlüsselt wurde, wird nun wieder an den Plattformbetreiber gesendet, der diese in die die öffentliche Datenbank einträgt. Dies macht jeder Knoten. Nun stehen in der öffentlichen Datenbank alle Pakete für die 2. Knoten. Diese machen nun das Gleiche und der Vorgang wird beendet, bis die Austrittsknoten ihre letzte Schicht entschlüsseln.
  • Bei jedem Schritt des Entschlüsselns und des Mixens erstellt jeder Knoten einen Zero-Knowledge-Beweis (zkProof, Zero-Knowledge-Proof) der zeigt, dass er richtig gemischt und entschlüsselt hat. Bei einem Zero-Knowledge-Beweis kommunizieren zwei Parteien (der Beweiser und der Verifizierer) miteinander. Der Beweiser überzeugt dabei den Verifizierer mit einer gewissen Wahrscheinlichkeit davon, dass er ein Geheimnis kennt, ohne dabei Informationen über das Geheimnis selbst bekannt zu geben. Im vorliegenden Ausführungsbeispiel ist das Geheimnis die neue Anordnung der Pakete, die der Knoten gewählt hat, wie auch der private Schlüssel, den der Knoten benutzt hat, um eine Schicht zu entschlüsseln.
  • Der Gesamte Vorgang wird jedes Mal wiederholt, wenn wieder genügend Eintrittsknoten die vordefinierte Anzahl der Pakete erhalten haben, also wieder genügend Pakete in der Datenbank eingetragen sind. So können auch mehrere Vorgänge parallel gestartet werden, falls wieder genügend Pakete von Sendern eingetroffen sind, der komplette Vorgang aber noch nicht abgeschlossen wurde.
  • Jedoch sollte der Steuerungsknoten das Netzwerk synchronisieren. So könnte wie im Beispiel nur ein Schritt alle 30 ms durchgeführt werden. Das bedeutet, wenn ein Sender 3 Knoten auswählt, durch die das Paket verlaufen soll, sind das 3 Schritte, die das Paket benötigt, bis es den dritten Knoten verlässt. So kann jeder Knoten in 30 ms nur einen Schritt ausführen aber für jeweils 3 Paketklassen, die Pakete, die den ersten Schritt durchlaufen, die Pakete, die sich im zweiten Schritt befinden und die Pakete, die den Dritten durchlaufen. Alle 30 ms können also 3 Paketklassen von jedem Knoten bearbeitet werden. Außerdem kann im Beispiel der Steuerungsknoten alle 15 Sekunden die Anzahl der Knoten und die internen Intervalle anpassen, demnach wie viele Pakete in dem Zeitintervall im Schnitt wie schnell bearbeitet werden sollen.
  • Um als Sender dieses Anonymitätsnetzwerk benutzen zu dürfen, melden sich jeder Sender beim einem Steuerungsknoten 500 (Plattformbetreiber) an und lässt sich x Hashwerte von Zufallszahlen (die der Sender generiert und nur er kennt) blind signieren. Dies gilt, wenn der Steuerungsknoten die Netzwerkbandbreite individuell limitieren will (in dem Fall auf x Pakete pro Knoten). Beispielsweise kann der Plattformbetreiber für jede Stunde des Tages ein anderes Schlüsselpaar generieren und für die jetzige Stunde x/2 Zufallszahlen signieren und für die nächste Stunde x/2 mit dem Schlüsselpaar der nächsten Stunde. Die Gruppe der Zufallszahlen wird dafür benutzt das Anonymitätsnetzwerk für genau diese Stunde zu nutzen. Diese Signierung plus Zufallszahl kann an Datenpakete angehängt werden, um sich bei einem Knoten im Anonymitätsnetzwerk zu autorisieren. Dieses Schlüsselpaar wird hier S_A genannt.
  • Das blinde Signieren ist formal ein kryptografisches Protokoll, an dem zwei Parteien beteiligt sind, eine Benutzerin Alice, die Signaturen für ihre Nachrichten erhalten möchte, und ein Unterzeichner Bob, der im Besitz seines geheimen Signaturschlüssels ist. Am Ende des Protokolls erhält Alice Bobs Unterschrift auf die Nachricht, ohne dass Bob etwas über die Nachricht erfährt. Dafür sendet Alice Bob anfangs kryptographisch gesichert die Nachricht die Bob signieren soll. Bob kann auf dieser Nachricht so arbeiten, dass er den „ersten Teil“ der Signatur erzeugen kann, ohne die vollkommene Signatur, oder die Nachricht entschlüsseln zu können. Der erste Teil wird dann wieder an Alice gesendet, die darauf wiederum Berechnungen ausführen kann, welche die vollkommene Signatur erstellt. Dabei bleibt Bobs privater Schüssel für Alice immer ein Geheimnis, wie auch für Bob, die Nachricht und die eigentliche Signatur. Wenn Alice nun jemandem die Nachricht mit der Signatur sendet, kann diese Person die Signatur über den öffentlichen Schlüssel von Bob überprüfen.
  • Die Sender, die an einem m zu 1 Datentransfer teilnehmen dürfen, bekommen dies direkt oder indirekt (öffentliche Datenbank beim Plattformbetreiber) vom Empfänger mitgeteilt, und können auch überprüfen, dass der Empfänger, beispielsweise durch ein Zertifikat des Plattformbetreibers autorisiert ist, ein Datentransfer zu starten (und zu empfangen). Nun melden sie sich beim Empfänger, falls sie daran teilnehmen wollen. Dieser überprüft, ob sie die Kriterien erfüllen, um an dem Transfer teilzunehmen und autorisiert sie. Dies passiert durch das blinde Signieren von Zufallszahlen.
  • Dafür sendet ihm der Sender über das Verfahren des blinden Signierens 2 Gruppen von je a verschiedenen Zufallszahlen zu. Der Empfänger besitzt 3 Schlüsselpaare (S1, S2, S3) die jeweils unterschiedliche blinde Signaturen generieren.
  • In der ersten Gruppe wird nun mit 2 unterschiedlichen Schlüsselpaaren (S2, S3) vom Empfänger blind signiert. Dabei werden y (y <= a) Zufallszahl mit S2 signiert, die a-y anderen Zufallszahlen mit S3. Die y Zufallszahlen werden benutzt, um vom Sender einen neuen Datenstream zu starten, dessen Größe mindestens ein Datenpaket ist. Die a-y Zufallszahlen können genutzt werden, um einen zusammenhängenden Datenblock zu generieren, der größer ist als ein Datenpaket (ein Vielfaches der Größe eines Datenpaketes).
  • Dafür bilden die Zufallszahlen eine Zufallskette, wie in 4 gezeigt. Die a Datenpakete mit S2 signierter Zufallszahl werden mit Nullen aufgefüllt, damit jedes Feld gleich groß ist. Die anderen Zufallszahlen referieren immer im ersten Teil die vorherige Zufallszahl und erhalten im zweiten Teil die neue Zufallszahl, die neuen Zufallszahlen sind mit S3 signiert. Alternativ kann eine Hashkette genutzt werden, dann muss aber die maximale Länge eines Datenstreams von Anfang an hart feststehen und kann somit nicht dynamisch wie im ersten Beispiel erweitert werden.
  • In der zweiten Gruppe werden andere a Zufallszahlen, mit dem anderen speziellen Schlüsselpaar S1 von welchem der Plattformbetreiber den öffentlichen Schlüssel kennt, blind signiert. Dieses Schlüsselpaar wird von jedem Empfänger, für den dazugehörigen m zu 1 Datentransfer erstellt und dient dazu, dass sobald die Pakete beim Plattformbetreiber ankommen, dieser weiß, dass der Empfänger diese auch autorisiert hat. Nachfolgend ist gezeigt, wie so ein Datenstream aussehen kann, der aus 3 Datenpaketen besteht und durch 3 Knoten im Anonymitätsnetzwerk geleitet wird, wenn er vom Sender losgeschickt wird. E ( pk_K1 ;  h ( x1 ) + S_P ( h ( x1 ) ) + E ( pk_P; x 1 + K 2 + E ( pk _ K 2 ;  K 3 + E ( pk _ K 3 ;  P + E ( pk _ P ;  h ( z2 ) ) + E ( pk_P ;  h ( z1 ) + S1 ( h ( z1 ) ) + Empf + C1 + E ( pk_E ;  z 1 + 0 + a1 + S2 ( a1 ) + D 1 ) ) ) ) ) )
    Figure DE102021129979B3_0001
    E ( pk_K4 ;  h ( x2 ) + S_P ( h ( x2 ) ) + E ( pk_P; x2 + K5 + E ( pk _ K5 ;  K6 + E ( pk _ K6 ;  P + E ( pk _ P ;  h ( z4 ) ) + E ( pk_P ;  h ( z3 ) + S1 ( z 3 ) + Empf + C2 + E ( pk_E ;  a 1 + y1 + S 2 ( y 1 ) + D 2 ) ) ) ) )
    Figure DE102021129979B3_0002
  • Hierbei bedeutet E(pk_K; x), „Daten x verschlüsselt mit öffentlichem Schlüssel K“, E ist eine asymmetrische, nicht deterministische Verschlüsselungsfunktion, die mit dem öffentlichen Schüssel pk_K, Daten x verschlüsselt. S_A(x) bedeutet x signiert mit dem privaten Schlüssel von A. K_x ist der Indentifier von Knoten x im Netzwerk, P ist der Identifier vom Plattformbetreiber, pk_E ist der öffentliche Schlüssel vom Empfänger, pk_P der öffentliche Schlüssel des Plattformbetreibers. K1 bis K6 sind die Identifer der ausgewählten Knoten im Anonymitätsnetzwerkes und Empf der Identifier vom Empfänger. Das Plus bedeutet eine Aneinanderreihung von Daten und ist kommutativ (Reihenfolge der „Datenblöcke“ vor und nach den Pluszeichen spielen keine Rolle in den inneren Klammern; es müssen nicht einmal Aneinanderreihungen von festen Datenblöcken sein, die Bits können zufällig angeordnet sein, man muss nachher nur die Reihenfolge kennen, um die Bits wieder so zusammensetzen zu können, dass sie die getrennten Datenblöcke ergeben). C1 und C2 sind die Konditionen vom Sender wann das Paket vom Plattformbetreiber an den Empfänger weitergeleitet werden soll. Die Funktion h() ist eine Hashfunktion.
  • Für das erste Paket wählt sich also der Sender, 3 Knoten aus dem Anonymisierungsnetzwerk zufällig aus, K1, K2 und K3. Dann verschlüsselt er den Token mit pk_K1, gibt also den Hash der Zufallszahl x1 an, mit der Signatur S_A(h(x1)). Also dieser Hash der Zufallszahl hat eine Signatur vom Plattformbetreiber, die dem ersten Knoten im Netzwerk zeigt, dass der Sender überhaupt das Netzwerk benutzen darf.
  • Als nächstes folgt die erste Schicht der Zwiebelverschlüsselung, sie enthält die Zufallszahl x1 mit dem Identifier K2 vom nächsten Knoten verschlüsselt mit dem öffentlichen Schlüssel vom Plattformbetreiber. Der erste Knoten K1 sendet das Paket mit Signatur erst zum Plattformbetreiber, wenn die Signatur stimmt, und dieser überprüft nachher den Hash der Zufallszahl mit der Signatur. Falls alles in Ordnung ist, trägt er seine entschlüsselte Schicht in die Datenbank ein. Zudem erstellt er einen eineindeutigen Identifier (z. B. eine fortlaufende Nummer), die das Paket in eine Paketklasse einordnet. Diese sendet er an den Eintrittsknoten, welcher sie dann an den eigentlichen Sender weiterleitet. Dafür muss der Eintrittsknoten die Verbindung zum Sender offenhalten, solange die Paketklasse des Senders nicht vollständig bearbeitet wurde. Genauso merkt sich der Plattformbetreiber welche Eintrittsknoten auf die Beendigung welcher Paketklassen warten. Jedoch kennt der Plattformbetreiber den direkten Sender nicht.
  • Eine Paketklasse stellt alle Eintrittspakete dar, die zusammen durch die, im Beispiel, 3 Schritte gehen. So fängt sie an, sobald ein neues Zeitintervall von 30 ms anfängt und genügend Pakete in diesem Zeitraum auf die Bearbeitung warten. In dem Beispiel mit Alice wären das 1000 Pakete, die noch vollkommen unbearbeitet in der Datenbank liegen müssen. Diese Tausend Pakete würden dann in drei Schritten abgearbeitet und falls alles okay ist, sendet der Plattformbetreiber eine Nachricht an die Eintrittsknoten, die auf die Beendigung gewartet haben. Diese Nachricht wird dann vom Eintrittsknoten zu Alice weitergeleitet. Dabei ist jede Nachricht vom Plattformbetreiber von ihm auch signiert, so wie jeder Datenbankeintrag. Somit kann Alice überprüfen, ob die Nachricht ursprünglich vom Plattformbetreiber stammt und falls ja weiß sie, dass die Nachricht zumindest beim Plattformbetreiber angekommen ist, und dieser sie unmittelbar an Bob weiterleiten wird.
  • Jedoch kann es sein, dass manche Knoten nicht mehr oder zu langsam reagieren. Dann können die 1000 Pakete nicht in 3 Schritten bearbeitet werden. In diesem Fall sendet der Plattformbetreiber den Eintrittsknoten die Anzahl von Knoten, die in dem Schritt von welchem Knoten nicht bearbeitet wurden. Der Eintrittsknoten sendet dies dann an Alice weiter. Falls nach 3 Schritten alle Knoten (3 in dem Beispiel), die Alice ausgewählt hat alle Pakete abarbeiten konnten, weiß Alice, dass alles okay ist. Sollte jedoch mindestens ein Knoten dabei sein, der es nicht geschafft hat alle Pakete der Paketklasse zu bearbeiten, versucht er es im nächsten Schritt nochmal. Dabei können im nächsten Schritt wieder neue Pakete dazukommen, wobei der Knoten erst die in der Warteschlange oben abarbeitet. Alice muss dann so lange warten, bis sie eine Nachricht erhält, dass alle ihre Knoten alle Pakete ihrer Paketklasse abgearbeitet hat. Am besten hält Alice so lange die Verbindung zum Eintrittsknoten offen, bis dieser ihr mitteilt, dass auch alle Pakete ihrer Paketklasse verarbeitet wurden, so gibt sie ihm keine Informationen auf welche Pakete sie noch wartet. Im schlimmsten Fall sollte sie ein Delta warten und falls bis dahin nicht die Nachricht eingetroffen ist, dass ihr Paket angekommen ist, sollte sie es nochmal mit anderen Knoten und anderem Token probieren.
  • Die einfachste Methode ist es ein neues Token zu benutzen. In diesem Fall ist das Alte zwar verbraucht, obwohl das Paket nie angekommen ist, jedoch könnte der Plattformbetreiber dem entgegenwirken, indem er immer eine Prozentzahl mehr an Token verteilt, die diese Verlustrate widerspiegeln. In einem komplexeren Verfahren müsste der Plattformbetreiber mitloggen, welche Pakete bei welchem Knoten hängen geblieben sind. Auch der Sender müsste in jeder Schicht der Zwiebelverschlüsselung ein Feld hinzufügen, das er benutzt, um ein Reservetoken zu erzeugen. Hierfür würde der Sender für jede Schicht eine Zufallszahl und deren Hash erstellen. Außerdem würde sich der Sender den Hash aller Schichten der Zwiebelverschlüsselung merken. In dem Feld der Schicht würde er dann den ersten Teil der blinden Signatur des Hashes der Zufallszahl, die zu dieser Schicht gehört mit einbauen (blinde Signatur vom Plattformbetreiber).
  • Der Plattformbetreiber würde nun beispielsweise falls eine Paketklasse innerhalb von 3 Schritten abgearbeitet werden soll, 9 Schritte warten. Wenn bis dahin die Paketklasse nicht abgearbeitet ist, sendet der Plattformbetreiber eine Liste der Hashes der noch unbearbeiteten Knoten (auch mit zusätzlicher Information, wie an welchem Knoten sie nicht bearbeitet wurden und welcher Paketklasse sie angehören). Zusätzlich würde er den zweiten Teil der blinden Signatur durchführen und diese mit dem Hash mitsenden. Der Eintrittsknoten leitet dann in dem Beispiel alles an Alice weiter. Diese kann, falls ihr Paket nicht angekommen ist, den Hash finden und die blinde Signatur eines neuen Tokens fertigstellen.
  • In diesem Fall geht kein Token verloren für Pakete, die nicht ankommen, jedoch werden dafür alle Pakete um einiges größer (1024 Bit Schlüssel sind bei sicheren blinden Signaturen keine Seltenheit). Zudem muss der Plattformbetreiber Angreifer erkennen, die das System überlasten wollen, indem sie absichtlich Pakete an Knoten senden, die überfordert sind. Wie in 4 zu sehen ist, muss der Plattformbetreiber immer im Blick haben welche Knoten gerade wie viel zu tun haben und merken, wenn ein Sender den Algorithmus in 4 nicht richtig ausführt. Also wenn ein Paket zu einem Knoten gesendet wird, der als nicht arbeitstüchtig für den Schritt eingeteilt ist, wird der Token auch nicht neu generiert und verfällt.
  • In der nächsten Schicht der Zwiebelverschlüsselung sind die Daten dann mit dem öffentlichen Schlüssel von K2 verschlüsselt. Dies ist nur der Identifier von K3 und die nächste Schicht. Die nächste Schicht ist dann verschlüsselt mit pk_K3 und enthält den Identifier vom Plattformbetreiber und die zweitletzte Verschlüsselungsschicht. Diese besteht aus zwei Teilen, die jeweils mit pk_P verschlüsselt sind. Der erste Teil den Hash einer Zuffalszahl z2. Die Zahl z2 merkt der Sender sich. Falls er ein Paket löschen möchte, bevor es beim Empfänger ankommt, also noch beim Plattformbetreiber liegt, kann der Sender ihm einfach in dem Feld die Zahl z2 schicken und den Rest des Paketes mit 0en auffüllen. Wenn der Plattformbetreiber ein Paket bekommt das am Ende (im 2. Teil) ungültig ist (beispielsweise nur aus 0en besteht), weiß er das das Feld nicht ein neuer Hash ist, sondern die Zufallszahl zu einem Hash. Er kann dann den Hash suchen, der zu dieser Zufallszahl z2 passt und dieses Paket löschen noch bevor es den Empfänger erreicht.
  • Der zweite Teil (falls nicht ungültig) enthält den Hash einer anderen Zufallszahl z1, so wie die Signatur des Empfängers von h(z1), sodass der Plattformbetreiber weiß, dass das Paket wirklich für den Empfänger autorisiert ist. Zum Schluss verbleibt die Empfängerschicht. Diese enthält im ersten Paket 0en mit der Signatur von a1 und a1. Diese Signatur zeigt, dass es sich um das erste Paket eines Datenstreams handelt, und die 0en werden benutzt um das Datenpaket auf die gleiche Größe wie alle anderen Datenpakete zu bringen (0en sind hier nur ein Platzhalter, der natürlich auch jeden Wert ungleich 0 annehmen kann). Dies gilt für jedes Datenpaket, welches ein Sender absendet, es muss immer gleich groß sein für jeden Sender. Deshalb wird beispielsweise auch C1 und C2 mit 0en aufgefüllt, bis alle die gleiche Größe haben. Die Größen werden initial festgelegt, normalerweise vom Plattformbetreiber und sollten für jeden m zu 1 Datentransfer gelten.
  • Falls ein Folgepaket geschickt wird, dass zu dem Datenstream gehört, nimmt dieses Bezug auf das Paket davor E(pk_E; a1 + y1 + S2(y1) + D2)) , also mit der Zahl a1 weiß der Empfänger, es gehört zu a1 und die neue Zufallszahl y1 erzeugt einen neuen Pointer, der benutzt werden kann, den Datenstream zum Schluss zusammenzusetzen, also bilden D1 + D2 in dieser Reihenfolge dann den gesamten zusammenhängenden Datenstream ab.
  • Am Ende des Anonymitätsnetzwerkes erhält der Plattformbetreiber all diese Pakete durchgemixt in der Datenbank. Er wartet, bis die Kondition erfüllt ist, falls es eine gibt, die angibt ab wann die Pakete zum Empfänger versendet werden (beispielsweise festgelegter Zeitpunkt), mixt alle Pakete, die er für den Sender bis zu diesem Zeitpunkt erhalten hat, nochmal durch und schickt seine entschlüsselte Schicht zum Empfänger.
  • Für jeden Datentransfer existieren somit 4 unterschiedliche Signierungs-Schlüsselpaare, wohingegen S_A zum Benutzen des Anonymisierungsnetzwerks für alle Datentransfers gelten und der private Schlüssel nur dem Plattformbetreiber bekannt ist. Dieser kann wie erwähnt beispielsweise stündlich S_A verändern, sodass niemand alte Zufallszahlen benutzen kann. Die anderen Schlüsselpaare werden jedoch für jeden Datentransfer vom jeweiligen Empfänger neu erstellt und sind somit unterschiedlich.
  • Die Zufallszahl mit dem privaten Schlüssel von S2 signiert, kann der Sender angehängt an seine Daten (beides zusammen ab hier Klartext genannt) an den Plattformbetreiber senden. Dieser Klartext ist zweimal verschlüsselt, außen mit dem Schlüssel des Plattformbetreibers (Schlüsselpaar V1) und innen mit dem Schlüssel des Empfängers (Schlüsselpaar V2).
  • Diese doppelte Verschlüsselung geht dann noch wie beschrieben durch das Anonymisierungsnetzwerk, wodurch für jeden Knoten noch eine weitere Verschlüsselungsschicht hinzukommt.
  • Der Plattformbetreiber kann dann wie erwähnt nach Erfüllung der Kondition die äußere Schicht entschlüsseln. Dabei stellt beispielsweise C1 einen Zeitstempel dar ab wann das Paket entschlüsselt werden soll. Der Empfänger kann aber auch am Anfang eine Kondition angeben, ab wann alle Pakete mit dieser Signatur an ihn gesendet werden sollen. C1 kann aber auch ein Pointer auf ein Programm darstellen, welches True ausgibt falls gewisse Ereignisse erfüllt sind, False sonst. Bei True wird das Paket dann vom Plattformbetreiber entschlüsselt.
  • Falls gewünscht, kann der Plattformbetreiber dann nochmal alle Datenpakete für den Empfänger, die die Kondition erfüllen, durchmixen und dann an den Empfänger (oder die öffentliche Datenbank) senden. Es ist aber auch möglich, dass der Plattformbetreiber noch Berechnungen auf den Daten durchführt, wenn V2 zu einer homomorphen Verschlüsselung oder funktionellen Verschlüsselung gehört. Ein homomorphes Verschlüsselungssystem erlaubt das Rechnen auf verschlüsselten Eingaben ohne diese zu Entschlüsseln und gibt das Ergebnis wieder verschlüsselt aus. Bei der funktionellen Verschlüsselung ist es sogar möglich auf verschlüsselten Eingaben Rechnungen durchzuführen, ohne diese einzeln entschlüsseln zu können, jedoch wird das Ergebnis der Berechnung unverschlüsselt ausgegeben.
  • Jedoch sollte über zkProofs immer gezeigt werden, dass der Plattformbetreiber auch wirklich gerechnet hat, was er sollte. Dasselbe gilt, wenn die Pakete einfach nur durchgemixt werden, dann wird über ein zkProof gezeigt, dass alles ordnungsgemäß gemixt (permutiert) wurde.
  • Zum Schluss liegen dem Empfänger dann ein Ergebnis oder durchgemixte Datenpakete vor, welche er weiterverarbeiten oder veröffentlichen kann, beispielsweise falls sie noch verschlüsselt sind durch Entschlüsselung. Wenn es komplett transparent ablaufen soll, wird das Ergebnis mit zkProof vom Plattformbetreiber direkt in die öffentliche Datenbank geschrieben. Der Empfänger kann dann zum Schluss alle Entschlüsselungen auch wieder permutieren und mit zkProof zeigen das alles richtig gemacht wird. Dieses Ergebnis legt er dann auf die öffentliche Datenbank.
  • Der Vorteil daran ist, dass nun jeder Sender zum Schluss seine Datenpakete wiederfinden kann (Zufallszahl wiederfinden) und sogar das Ergebnis selbst berechnen kann. So findet er jedes seiner Datenpakete wieder und weiß auch welche, wie zusammenhängen (Zufallszahlkette).
  • In einem statischen Anonymitätsnetzwerk sind alle Knoten immer online. Hier soll noch die Möglichkeit besprochen werden, wie auch ein dynamisches Netzwerk verwaltet werden kann. Hierbei sollten sich die Knoten beim Plattformbetreiber melden und falls möglich angeben wie lange sie planen online zu bleiben. Der Plattformbetreiber verwaltet nun eine Prioritätsliste, in der er angibt, welche Knoten zu welchem Zeitpunkt für das Netzwerk verantwortlich sind. Der Plattformbetreiber passt die Liste für jedes Zeitfenster neu an, beispielsweise könnten alle 20 Sekunden neue Knoten ausgewählt werden, welche für die nächsten 20 Sekunden für Sender angesprochen werden können.
  • Dabei sollte der Plattformbetreiber die Anfragen an das Netzwerk überwachen, um zu wissen wie viele Knoten ausgewählt werden sollen. Außerdem sollte jeder Knoten ihm mitteilen, wie viele Pakete er pro Schritt versenden kann. Ein Beispiel wäre, dass ein Knoten mindestens 10 Pakete pro Schritt im Schnittverarbeiten können muss aber maximal 100. Wenn nun im Schnitt a Pakete pro Schritt insgesamt versendet werden sollen, wählt der Plattformbetreiber b Knoten aus, wobei ihre individuellen Paketverarbeitung zusammenaddiert genau a ergeben oder minimal größer a sind.
  • Nun ergänzt der Platformbetreiber noch c Knoten, die als Buffer dienen. Beispielsweise falls in einem Zeitfenster im Schnitt c Knoten ausfallen wird dies dadurch kompensiert. Dabei sollte geguckt werden, ob die c Knoten insgesamt mehr Datenpakete senden, können als im Schnitt pro Zeitfenster verloren gehen. Falls nicht müssen nochmal d Knoten hinzugefügt werden, sodass die Datenpaketrate immer erfüllt werden kann, aber nicht mehr. Nun gibt es insgesamt e = c + d Knoten für ein Zeitfenster, die das Anonymitätsnetzwerk abbilden.
  • Es soll nun davon ausgegangen werden, dass der Plattformbetreiber die Verwaltung der öffentlichen Datenbank komplett und korrekt übernimmt. Dadurch muss nur der Plattformbetreiber alle Pakete zu jedem Schritt empfangen. Andere Knoten empfangen dann die Pakete, die genau für sie bestimmt sind vom Plattformbetreiber und jemand anderem, jedoch sind alle Pakete, die ursprünglich vom Plattformbetreiber stammen auch von ihm signiert.
  • Der Ablauf ist in dem Fall wie folgt. Der Plattformbetreiber bestimmt für eine Zeitspanne t, genau e = c + d Knoten (siehe Algorithmus 3). Also e ist in diesem Fall numRouters im Algorithmus. Diese e Router könnten beispielsweise in einer sortierten Liste sein, wobei die die gerade online und am längsten warten ganz oben stehen. Dabei muss sichergestellt werden, dass die Gesamtkapazität der Router die Kapazität, der in so einem Zeitfenster gesendeten Pakete abdeckt und der im Schnitt ausfallenden Router in so einem Zeitfenster (also das d dementsprechend angepasst wird). Von diesen e Routern wählt der Plattformbetreiber zufällig f << e Router aus (f beispielsweise 100), die von den Sendern angesprochen werden können, um die gesamte Liste von e Routern von diesen f Routern herunterzuladen. Dafür sollten die Sender die ganze Zeit mit dem Plattformbetreiber verbunden sein, beziehungsweise sollten sie auch mit ihm verbunden sein, falls sie keine Pakete versenden wollen. Der Plattformbetreiber sendet dann allen Teilnehmern des Netzwerkes in diesem Zeitfenster mindestens einmal diese kleine Liste von f Knoten, wobei für jeden Teilnehmer andere f Knoten ausgewählt werden, sodass nicht alle Knoten bei den gleichen f Knoten anfragen. Falls sich ein Sender dazu entscheidet ein Paket zu senden, fragt er einen zufälligen Knoten der f an, ihm die komplette Liste der e Knoten zu senden.
  • Der Plattformbetreiber sendet jedem der e Knoten in einer Zeitspanne ts < t die Liste aller Knoten zu, die gerade im Anonymitätsnetzwerkes online sind und noch Datenpakete verarbeiten können (wobei ts idealerweise die Zeit ist, die ein Knoten im Schnitt braucht um einen Schritt durchzuführen, kann aber auch länger sein). Dabei kann eingeteilt werden, wie viele Pakete jeder Knoten noch für jeden Schritt in der Pipeline hat. Beispielsweise könnte ein Knoten initial angeben, dass er nur 50 Pakete pro Schritt verarbeiten kann. Dann sollte er aber beispielsweise maximal 50% mehr verarbeiten können (also 75 Pakete). Nun kann der Plattformbetreiber also höchstens diese 75 Pakete an den Knoten weiterleiten, aber wenn für diesen Schritt beispielsweise 100 Paket für ihn angekommen sind, müssen diese für die nächste Phase zurückgestellt werden. Dann fängt der Knoten also mit 25 Paketen in der Pipeline in der nächsten Phase in Schritt 3 an und kann im Schnitt nur noch 25 neue empfangen. Der Plattformbetreiber kann anhand dieser Informationen die Kapazität der Knoten im Zeitraum ts anpassen und an die e Knoten senden. Diese senden diese Informationen dann an die Sender weiter, wenn diese die Liste anfragen. Dementsprechend kann auch der Algorithmus von oben angepasst werden, dass pro Schritt auch beachtet wird, ob für bestimmte Knoten die Kapazität verkleinert wurde.
  • Die Sender müssen auch nicht direkt beim Plattformbetreiber die öffentliche Datenbank anfragen. Nachdem sie eine Liste von e Knoten erhalten haben, führen sie den Algorithmus durch. Dann senden sie das zwiebelverschlüsselte Datenpaket an den ersten Knoten, gemeinsam mit der signierten Zufallszahl, die zeigt, dass sie das Netzwerk benutzen dürfen. Der Knoten sendet dann dieses Paket an den Plattformbetreiber, der das gesamte Paket signiert und zusätzlich eine eindeutige ID vergibt für die Versandphase dieses Paketes. Alle Sender einer Phase (Alle Pakete die gleichzeitig zusammen alle Schritte durchführen) erhalten die gleiche ID zurück. Diese Signatur wird dann an den Knoten weitergeleitet, und vom Knoten wieder an den Sender. So weiß der Sender, dass sein Paket in der öffentlichen Datenbank eingetragen wurde, ohne direkt den Plattformbetreiber zu fragen. Genauso kann der Plattformbetreiber überwachen ob alle Pakete einer Phase bei ihm angekommen sind. Falls dies der Fall ist, sendet er die ID mit einem OK signiert an den Knoten, der ihn wieder an den Sender weiterleiten kann. So bekommt ein Sender auch mit, dass sein Paket auch komplett verarbeitet wurde.
  • Da das Netzwerk durch dynamische Knoten verwaltet wird (beispielsweise Smartphones, die nicht immer online sind), sollte ein Anreiz dafür geschaffen werden, dass die Knoten auch beim Mixen mitmachen. Dafür eignen sich spezielle Token. So kann der Plattformbetreiber am Ende einer Zeitspanne diese Token nach einem vordefinierten Vorgehen ausschütten. Mixerknoten erhalten beispielsweise 1 Token, wenn sie während der Zeitspanne 100% online waren Falls sie doch weniger Prozent online waren oder Pakete nicht weitergeleitet haben, bekommen sie „1 Token mal Prozent online mal Prozent durchgelassene Pakete“. Wobei die Vorgehensweise der Ausschüttung von Token auch komplexer sein kann (Grenzwerte ab denen immer noch 100% ausgeschüttet wird, etc.).
  • Anwendungsbeispiel 1: Metrologischer Datenaustausch
  • Ein Anwendungsfall ist die European Metrology Cloud. Dies ist ein Projekt, welches unterschiedliche Partner des gesetzlichen Messwesens digital zusammenbringen möchte. Das sind zum einen Messgerätehersteller, Eichbehörden wie auch Metrologie Institute. Auf dieser Plattform soll es beispielsweise möglich sein, Informationen über Messgeräte auszuwerten, die der „remote maintenance“ helfen, also die Messgeräte senden Daten von ihren Sensoren, welche dann vom Empfänger verarbeitet werden können, um zu dem Entschluss zu kommen, ob ein Gerät überprüft werden soll. Dabei wären die Messgerätehersteller die Empfänger, die Sensoren der Messgeräte die Sender (wobei ein Datenstream zu einem Messgerät aus den zusammenhängenden Datenpakete der Sensoren eines individuellen Messgerätes bestehen können), und das Metrologie Institut der Plattformbetreiber. Hierbei möchten die Messgerätehersteller nicht, dass die Eichbehörden immer genau wissen, wie ihre Geräte gewartet sind, sonst könnte eine teure Nacheichung nötig sein. Sie möchten erst mal selbst Daten sammeln, welche dann auch vom Metrologieinstitut benutzt werden kann, um Algorithmen zu entwickeln, welche die jetzige Situation von fehlerhaften Messgeräten abbildet. Dabei muss sich der Hersteller sicher sein, dass keine Daten auf seine Messgeräte zurückzuführen sind, somit alles anonym abläuft. Er könnte auch festlegen, dass der Plattformbetreiber die Daten nur veröffentlicht sobald genügend Datenstreams von vielen unterschiedlichen Messgeräten eingetroffen sind, damit es unmöglich wird die Datenstreams richtig zuzuordnen (Kondition)
  • Anwendungsbeispiel 2: Wahlen
  • Bei Wahlen wie auch anonymen Umfragen ist es wichtig, dass die Wähler ihre Auswahl geheim halten. Hier wären die Wähler die Sender, der Empfänger ist der Wahlinitiator und der Plattformbetreiber könnte eine Behörde sein. Ein Datenstream ist in dem Sinne eine Kette von Wahlentscheidungen. So kann der Sender seine Wahl immer wieder ändern oder ungültig machen, am Ende erhält der Empfänger eine durchgemixte Liste von Wahlzetteln anhand der er ein zusammenhängenden Datenstream erzeugen kann, wobei das letzte Paket im Stream auch die valide Stimme ist, die anderen werden alle ungültig. Der Empfänger erhält dann alle Datenpakete, sobald die Deadline der Wahl (Kondition) abgelaufen ist und veröffentlicht alles. Die Sender können dann ihre Wahlzettel über die Zufallszahlen wiederfinden und sichergehen, dass auch richtig ausgezählt wurde. Dabei kann man festlegen, dass der Wähler nur genau einen solchen Datenstream erzeugen kann (nur einmal wählen), aber seine Wahlstimme bis zu der Deadline auch immer wieder verändern kann.
  • Hierbei bietet es sich auch an die Datenbank 400 komplett öffentlich zu machen, wobei nur die Behörde auf ihr schreiben kann. Eine Blockchain bietet sich hier an, um sicherzustellen dass keine Datenpakete gelöscht werden. In dieser Blockchain wären dann auch alle zkPrrofs hinterlegt, sodass jeder Wähler selbst überprüfen kann das jeder Schritt korrekt durchgeführt wurde. Zum Schluss könnte der Wahlinitiator seine gesamten entschlüsselten Stimmzettel (auch nochmal gemixt falls gewünscht) mit zkProof an die Behörde schicken, die alle auf der Blockchain veröffentlicht. So kann jeder transparent seine Wahlzettel wiederfinden und auch zum Nachprüfen alles selbständig auszählen.
  • Für Umfragen kann es hilfreich sein zu sehen, wie oft ein Wähler seine Meinung geändert hat und wie genau er sich umstimmen hat alles. Das wäre hier durch den Datenstream nachvollziehbar. Jedoch könnten bei echten Wahlen zu viele Informationen dadurch nach außen dringen. Wenn man am Ende nur die Endergebnisse haben möchte, kann das Verfahren so aufgebaut sein, dass der Wähler seine Wahl mit einem Paket initiiert, dass einen ungültigen Wahlzettel enthält (beispielsweise nur 0en) und alle weiteren Wahlzettel, die eine Stimme ändern referieren auf die erste Zufallszahl. Sobald der Wähler also eine Stimme ändern möchte, löscht er den zweiten Wahlzettel bei der Behörde und fügt einen neuen zweiten an (im Beispiel gibt er einfach z3 an). Somit hat jeder Wähler der richtig gewählt hat zum Schluss nur 2 Datenpakete beim Empfänger, eins das den Datenstream einleitet (ungültige Stimme) und das zweite das daran angehängt ist (mit der gültigen), egal wie oft er eigentlich gewählt hat, weil die Behörde seine gelöschten Wahlzettel nie entschlüsselt an den Empfänger weiterleitet.
  • Anwendungsbeispiel 3: Emailprotokoll und Chatprotokoll mit Anonymisierung der Sender vor dem Plattformbetreiber
  • Ein anderes Beispiel ist ein Email-Postfach, das den Absender vor dem Plattformbetreiber geheim hält. Beispielsweise könnte dies interessant sein zum Senden von Kontaktverfolgungsdaten bei einer Pandemie. Der Empfänger wäre das Gesundheitsamt und bekommt als Daten Identifikationsnummern zugesendet, welche nicht auf Personen zurückzuführen sind. Jedoch sind im konventionellen Verfahren auch die IP-Adresse des Absenders unbekannt. Mit diesem Verfahren werden diese auch geheim gehalten. So können über die Datenbank alle Kontaktpersonen anhand ihrer ID sehen, ob sie mit einer infizierten Person, Kontakt hatten. Ein anderes Beispiel ist ein Chat-Client, so würde nicht wie bisher bei Privacy-based Clients, nur die Daten verschlüsselt, sondern auch die IP-Adresse verschleiert.
  • In den Daten würde sich dann die Adresse des Absenders befinden, sodass der Empfänger auch wieder antworten kann. So bekommt der Plattformbetreiber nicht mit wer mit wem Nachrichten schreibt. Das Verfahren wie bisher beschrieben läuft asynchron, d.h. der Plattformbetreiber speichert die Pakete zwischen, bis der Empfänger online ist, oder eine Kondition erfüllt ist. Es ist aber auch leicht veränderbar, so könnte die zweitletzte Schicht nicht an den Plattformbetreiber gesandt werden, sondern direkt an den Empfänger, wenn der Identifier von ihm angegeben ist (IP-Adresse) und dieser online ist (und der Port für das Empfangen der direkten Daten geöffnet ist). Das hat den Vorteil, dass der Plattformbetreiber nicht mal mehr weiß wie viele Pakete ein Empfänger erhält. Dies ist auch praktisch für das Streamen, VoIP oder Videotelefonie. Vorausgesetzt die Verarbeitung der Schritte bei den einzelnen Knoten ist schnell genug, um den Ping kleinzuhalten.
  • Bezugszeichenliste
  • 10
    digitale Daten
    11
    erste Verschlüsselungsschicht
    12
    zweite Verschlüsselungsschicht
    13
    dritte Verschlüsselungsschicht
    100
    Datensender (mit 101 - 104)
    200
    Datenempfänger
    300
    Anonymisierungsnetzwerk
    301 - 305
    Netzwerkknoten
    400
    Datenbank
    500
    Steuerungsknoten/Plattformbetreiber

Claims (11)

  1. Verfahren zur anonymen Übertragung von digitalen Daten von einer Mehrzahl von Datensendern (100) an einen Datenempfänger (200) mittels eines Anonymisierungsnetzwerkes (300), das eine Vielzahl von Netzwerkknoten (301-305) hat und digitale Daten (10) zur Anonymisierung der Verbindungsdaten über eine ausgewählte Anzahl von Netzwerkknoten (301-305) des Anonymisierungsnetzwerkes (300) überträgt, wobei das Verfahren die folgenden Schritte umfasst: - an jedem Datensender (100) wird eine Übertragungsfolge von Netzwerkknoten (301-305) des Anonymisierungsnetzwerkes (300) bestimmt, über die der jeweilige Datensender (100) seine digitalen Daten an den Datenempfänger (200) übertragen will, wobei für jeden Netzwerkknoten (301-305) einer solchen Übertragungsfolge ein dem jeweiligen Netzwerkknoten (301-305) zugeordneter kryptographischer Schlüssel ermittelt wird; - an jedem Datensender (100) werden die jeweiligen digitalen Daten mittels der ermittelten kryptographischen Schlüssel der in der jeweiligen Übertragungsfolge des Datensenders (100) enthaltenen Netzwerkknoten (301-305) schichtweise verschlüsselt, wobei die Verschlüsselung der digitalen Daten eines Datensenders (100) gemäß der Reihenfolge der Netzwerkknoten (301-305) in der Übertragungsfolge nacheinander beginnend mit dem letzten Netzwerkknoten (301-305) der Übertragungsfolge erfolgt und jedem Netzwerkknoten (301-305) somit eine Verschlüsselungsschicht (11,12,13) der gesamten Verschlüsselung zugeordnet ist; - jeder Datensender (100) überträgt seine verschachtelt verschlüsselten digitalen Daten an den ersten Netzwerkknoten (301-305) der Übertragungsfolge des entsprechenden Datensenders (100); - an jedem Netzwerkknoten (301-305), an dem eine vorgegebene Anzahl von schichtweise verschlüsselten digitalen Daten empfangen wurde, wird die betreffende Verschlüsselungsschicht (11,12,13) der schichtweisen Verschlüsselung der jeweils empfangenen digitalen Daten entschlüsselt, - wobei die Reihenfolge des Empfangs der digitalen Daten an dem betreffenden Netzwerkknoten (301-305) permutiert wird, - wobei die an dem jeweiligen Netzwerkknoten (301-305) empfangenen digitalen Daten, deren betreffende Verschlüsselungsschicht (11,12,13) entschlüsselt wurde, in einer öffentlichen Datenbank (400) in der permutierten Reihenfolge durch den betreffenden Netzwerkknoten (301-305) hinterlegt werden, bevor sie an den nächsten Netzwerkknoten (301-305) in der Übertragungsfolge in der permutierten Reihenfolge übertragen werden.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass an jedem Netzwerkknoten (301-305), an dem eine vorgegebene Anzahl von schichtweise verschlüsselten digitalen Daten empfangen wurde, durch den jeweiligen Netzwerkknoten (301-305) ein Zero-Knowledge-Beweis erstellt und das Ergebnis zusammen mit den betreffenden digitalen Daten an den nachfolgenden Netzwerkknoten (301-305) übermittelt wird.
  3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Zero-Knowledge-Beweis in Abhängigkeit von der permutierten Reihenfolge und/oder in Abhängigkeit von dem kryptographischen Schlüssel, mit dem die dem jeweiligen Netzwerkknoten (301-305) zugeordnete Verschlüsselungsschicht (11,12,13) entschlüsselt wurde, erstellt wird.
  4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Veröffentlichung der öffentlichen Datenbank (400) mittels einer Blockchain erfolgt.
  5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass an zumindest einem Netzwerkknoten (301-305) des Anonymisierungsnetzwerkes (300) der jeweilige Datensender (100) der digitalen Daten mittels einer blinden Signatur authentifiziert wird.
  6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, dass durch einen Steuerungsknoten (500) des Anonymisierungsnetzwerkes (300) für einen Datensender (100) ein oder mehrere Zufallszahlen generiert werden, die jeweils Teil einer blinden Signatur für den betreffenden Datensender (100) sind oder dass durch einen Steuerungsknoten (500) des Anonymisierungsnetzwerkes (300) für einen Datensender (100) Netzwerkinformationen zur Verfügung gestellt werden sowie ggf. ein oder mehrere Zufallszahlen blind empfange werden, die jeweils Teil einer blinden Signatur für den betreffenden Datensender sind.
  7. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die digitalen Daten eines Netzwerkknotens (301-305) in Abhängigkeit von einer vorgegebenen Bedingung oder einem vorgegebenen Ereignis an den nächsten Netzwerkknoten (301-305) in der jeweiligen Übertragungsfolge oder an den Empfänger übertragen werden.
  8. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass digitale Daten (10) zumindest eines Datensenders (100), die von einem Netzwerkknoten (301-305) des Anonymisierungsnetzwerkes (300) erhalten wurden, durch Anfrage des betreffenden Datensenders (100) gelöscht werden.
  9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Datenempfänger (200) eine nur von ihm autorisierte Anzahl von Datenpaketen erhält, wobei der Datenempfänger (200) nach Erhalt der Datenpakete diese selbständig in die richtige Reihenfolge zusammenfügt, um einen Datenstrom zu erzeugen.
  10. System zur anonymen Übertragung von digitalen Daten von einer Mehrzahl von Datensendern (100) an einen Datenempfänger (200) mittels eines Anonymisierungsnetzwerkes (300), das eine Vielzahl von Netzwerkknoten (301-305) hat und digitale Daten (10) zur Anonymisierung der Verbindungsdaten über eine ausgewählte Anzahl von Netzwerkknoten (301-305) des Anonymisierungsnetzwerkes (300) überträgt, wobei das System zur Durchführung des Verfahrens nach einem der vorhergehenden Ansprüche eingerichtet ist und eine Mehrzahl von Datensender (100), mindestens einen Datenempfänger (200) und ein Anonymisierungsnetzwerk (300) mit einer Mehrzahl von Netzwerkknoten (301-305) umfasst.
  11. System nach Anspruch 10, dadurch gekennzeichnet, dass das System weiterhin einen Steuerungsknoten (500) aufweist, der zur Steuerung des Datentransfers ausgebildet ist.
DE102021129979.9A 2021-11-17 2021-11-17 Verfahren und System zur anonymen Übertragung von digitalen Daten Active DE102021129979B3 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102021129979.9A DE102021129979B3 (de) 2021-11-17 2021-11-17 Verfahren und System zur anonymen Übertragung von digitalen Daten

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102021129979.9A DE102021129979B3 (de) 2021-11-17 2021-11-17 Verfahren und System zur anonymen Übertragung von digitalen Daten

Publications (1)

Publication Number Publication Date
DE102021129979B3 true DE102021129979B3 (de) 2023-03-23

Family

ID=85383781

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021129979.9A Active DE102021129979B3 (de) 2021-11-17 2021-11-17 Verfahren und System zur anonymen Übertragung von digitalen Daten

Country Status (1)

Country Link
DE (1) DE102021129979B3 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2429115B1 (de) 2009-05-05 2019-02-20 Scytl Secure Electronic Voting, S.A. Verfahren zur verifikation von entschlüsselungsprozessen

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2429115B1 (de) 2009-05-05 2019-02-20 Scytl Secure Electronic Voting, S.A. Verfahren zur verifikation von entschlüsselungsprozessen

Similar Documents

Publication Publication Date Title
EP1793525B1 (de) Verfahren zum Ändern eines Gruppenschlüssels in einer Gruppe von Netzelementen in einem Netz
DE60312659T2 (de) Leichtgewicht identifizierung von informationen
DE60124765T2 (de) Verfahren und vorrichtung zur verwaltung von sicherheitssensiblen kollaborativen transaktionen
DE102016224537B4 (de) Masterblockchain
EP3518492B1 (de) Verfahren und system zur offenlegung mindestens eines kryptographischen schlüssels
DE102014113582B4 (de) Vorrichtung, Verfahren und System für die kontextbewusste Sicherheitssteuerung in einer Cloud-Umgebung
EP2421221A1 (de) Verfahren und Architekur zur Sicherung von Echtzeitdaten
DE102016115193A1 (de) Verfahren zur sicheren Datenhaltung in einem Computernetzwerk
DE102015200279A1 (de) Einwegübertragungseinrichtung, Vorrichtung undVerfahren zum rückwirkungsfreien Erfassen von Daten
EP1721235B1 (de) Kommunikationssystem und verfahren zur bereitstellung eines mobilen kommunikationsdienstes
DE102009032466B4 (de) Sicherheit in Netzwerken
DE102021129979B3 (de) Verfahren und System zur anonymen Übertragung von digitalen Daten
EP3837823B1 (de) Gegen angriffe gesicherte netzwerkschnittstelle
DE102017212474A1 (de) Verfahren und Kommunikationssystem zur Überprüfung von Verbindungsparametern einer kryptographisch geschützten Kommunikationsverbindung während des Verbindungsaufbaus
DE102006003167B3 (de) Sichere Echtzeit-Kommunikation
WO2005074189A1 (de) Schaltungsanordnung und verfahren zur kommunikationssicherheit innerhalb von kommunikationsnetzen
EP2685696A1 (de) Verfahren zum sicheren Betrieb von Verbundnetzen, insbesondere von Windpark- oder anderen ausgedehnten Netzen
EP3955509A1 (de) Bereitstellung von quantenschlüsseln in einem netzwerk
EP1584156B1 (de) Telekommunikationsgestützter zeitstempel
DE102006024008A1 (de) Verfahren zum Erstellen einer teilnehmerspezifischen Senderausschlussliste und Verfahren zum Weiterleiten von Nachrichten in einem dezentralen Kommunikationssystem
EP2830277B1 (de) Verfahren und system zur manipulationssicheren übertragung von datenpaketen
EP3955511B1 (de) Gesicherte datenübertragung innerhalb eines qkd-netzwerkknotens
EP3881486B1 (de) Verfahren zur bereitstellung eines herkunftsortnachweises für ein digitales schlüsselpaar
EP1446934B1 (de) Verfahren zum aufbau einer telekommunikationsverbindung und ein telekommunikationsnetz
DE102019007457A1 (de) Generierung klonresistenter Gruppen von elektronischen Einheiten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final