-
FELD
-
Der hierin offenbarte Gegenstand betrifft sichere Kommunikation und betrifft insbesondere sichere Kommunikation in einem nichtdeterministischen Netzwerk.
-
HINTERGRUND
-
Knoten kommunizieren oft in nichtdeterministischen Netzwerken.
-
KURZE ZUSAMMENFASSUNG
-
Eine Vorrichtung für eine sichere Kommunikation in einem nichtdeterministischen Netzwerk ist offenbart. Die Vorrichtung enthält eine Netzwerkverbindung, einen Prozessor und einen Speicher, der Code speichert der von dem Prozessor ausführbar. Der Prozessor bestimmt einen ersten Kommunikationspfad zu einem ersten Zielknoten in einem Netzwerk von Knoten, das als ein ungerichteter Graph organisiert ist und sich in Kommunikation mit der Netzwerkverbindung befindet. Der Kommunikationspfad ist ein aufspannender Baum von Pfadknoten des ungerichteten Graphs. Der Prozessor verschlüsselt weiter eine Nachricht an den ersten Zielknoten mit einer Verschlüsselung unter Verwendung einer Menge von ersten Verschlüsselungsschlüsseln. Zusätzlich kommuniziert der Prozessor die verschlüsselte Nachricht über die Pfadknoten des ersten Kommunikationspfads. Jede Transaktion von jedem Pfadknoten mit der verschlüsselten Nachricht wird aufgezeichnet und die verschlüsselte Nachricht wird an dem ersten Zielknoten mit einer Teilmenge der Menge von ersten Verschlüsselungsschlüsseln entschlüsselt. Die Teilmenge der Menge von ersten Verschlüsselungsschlüsseln werden von Schlüsselhalteknoten gehalten, die sich in Kommunikation mit dem ersten Zielknoten befinden. Ein Verfahren und Programmprodukt führen auch die Funktionen der Vorrichtung durch.
-
Figurenliste
-
Eine genauere Beschreibung der oben kurz beschriebenen Ausführungsformen wird durch Bezugnahme auf spezifische Ausführungsformen dargestellt, die in den beigefügten Zeichnungen illustriert sind. Mit dem Verständnis, dass diese Zeichnungen nur einige Ausführungsformen abbilden und deshalb nicht als den Gegenstand einschränkend verstanden werden sollen, werden die Ausführungsformen mit zusätzlicher Spezifizität und Detail durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, in denen:
- 1A ein schematisches Diagramm ist, das eine Ausführungsform eines nichtdeterministischen Netzwerks illustriert;
- 1B ein schematisches Diagramm ist, das eine Ausführungsform eines Kommunikationspfads illustriert;
- 1C ein schematisches Diagramm ist, das eine alternative Ausführungsform eines Kommunikationspfads illustriert;
- 2A ein schematisches Blockdiagramm ist, das eine Ausführungsform einer Nachricht illustriert;
- 2B ein schematisches Blockdiagramm ist, das eine Ausführungsform von Kommunikationspfaddaten illustriert;
- 2C ein schematisches Blockdiagramm ist, das eine Ausführungsform einer Kommunikationspfad-Datenbank illustriert;
- 2D ein schematisches Blockdiagramm ist, das eine Ausführungsform einer Blockkettenaufzeichnung illustriert;
- 2E ein schematisches Blockdiagramm ist, das eine Ausführungsform einer Menge von Verschlüsselungsschlüsseln illustriert;
- 2F ein schematisches Blockdiagramm ist, das eine Ausführungsform von Knoten-Verschlüsselungsschlüsseln illustriert;
- 3A ein schematisches Blockdiagramm ist, das eine Ausführungsform einer verschlüsselten Nachricht illustriert;
- 3B ein schematisches Blockdiagramm ist, das eine alternative Ausführungsform einer verschlüsselten Nachricht illustriert;
- 4 ein schematisches Blockdiagramm ist, das eine Ausführungsform eines Knotens illustriert; und
- 5 ein schematisches Flussdiagramm ist, das eine Ausführungsform eines sicheren Kommunikationsverfahrens illustriert.
-
DETAILLIERTE BESCHREIBUNG
-
Wie von einem Fachmann verstanden werden wird, können Aspekte der Ausführungsformen in einem System, Verfahren oder Programmprodukt ausgeführt sein. Dementsprechend können Ausführungsformen die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (inklusive Firmware, residenter Software, Mikrocode, etc.) oder einer Ausführungsform, die Software- und Hardwareaspekte kombiniert, annehmen, auf die alle im Allgemeinen hierin als „Schaltkreis“, „Modul“ oder „System“ Bezug genommen werden kann. Weiterhin können Ausführungsformen die Form eines Programmprodukts annehmen, das in einem oder mehreren computerlesbaren Speichergeräten ausgeführt sein kann, die maschinenlesbaren Code, computerlesbaren Code und/oder Programmcode speichern, auf den im Folgenden als Code Bezug genommen wird. Die Speichergeräte können greifbar, nicht transient und/oder nicht übertragend sein, Die Speichergeräte können keine Signale enthalten. In einer bestimmten Ausführungsform verwenden die Speichergeräte nur Signale, um auf Code zuzugreifen.
-
Viele von den in dieser Spezifikation beschriebenen, funktionalen Einheiten wurden als Module bezeichnet, um deren Unabhängigkeit der Implementierung besonders zu betonen. Zum Beispiel kann ein Modul als ein Hardware-Schaltkreis implementiert sein, umfassend benutzerdefinierte VLSI-Schaltkreise oder Gatteranordnungen, handelsübliche Halbleiter, so wie Logikchips, Transistoren oder andere diskrete Komponenten. Ein Modul kann auch in programmierbaren Hardwaregeräten implementiert sein, so wie einer feldprogrammierbaren Gatteranordnung, programmierbarer Anordnungslogik, programmierbaren Logikgeräten oder dergleichen.
-
Module können auch in Code und/oder Software zur Ausführung durch verschiedene Prozessoren implementiert sein. Ein identifiziertes Modul von Code kann zum Beispiel einen oder mehrere physikalische oder logische Blöcke von ausführbarem Code enthalten, die zum Beispiel als ein Objekt, Prozedur oder Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Dateien eines identifizierten Moduls nicht physikalisch zusammen angeordnet sein, jedoch können sie uneinheitliche Anweisungen, die an verschiedenen Orten gespeichert sind, enthalten, die, wenn sie logisch verknüpft werden, die Module enthalten und den genannten Zweck für das Modul erreichen.
-
Tatsächlich kann ein Modul von Code eine einzelne Anweisung oder viele Anweisungen sein und kann sogar über viele verschiedenen Codesegmente, unter verschiedenen Programmen und über viele verschiedenen Speichergeräte verteilt sein. In gleicher Weise können Betriebsdaten, die hierin illustriert sind, innerhalb von Modulen identifiziert sein und können in jeglicher passenden Form ausgeführt und innerhalb jeglicher passenden Art von Datenstruktur organisiert sein. Die Betriebsdaten können als eine einzelne Datenmenge gesammelt sein oder können über verschiedene Orte verteilt sein, inklusive verschiedener computerlesbarer Speichergeräte. Wenn ein Modul oder Teile eines Moduls in Software implementiert sind, sind die Softwareteile auf einem oder mehreren computerlesbaren Speichergeräten gespeichert.
-
Jegliche Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Speichermedium sein. Das computerlesbare Speichermedium kann ein Speichergerät sein, das den Code speichert. Das Speichergerät kann zum Beispiel ein elektronisches Speichergerät, magnetisches Speichergerät, optisches Speichergerät, elektromagnetisches Speichergerät, Infrarot-Speichergerät, holografisches Speichergerät, mikromechanisches Speichergerät oder Halbleitersystem, -vorrichtung oder -gerät oder jede passende Kombination der vorgenannten, ist aber nicht darauf beschränkt.
-
Spezifischere Beispiele (eine nicht abschließende Liste) des Speichergeräts würden die Folgenden enthalten: eine elektrische Verbindung, die eine oder mehrere Drähte aufweist, eine tragbare Computerdiskette, eine Festplatte, einen wahlfreien Zugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein tragbarer Kompaktdisk-Nur-Lese-Speicher (CD-ROM), ein optisches Speichergerät, ein magnetisches Speichergerät oder jede passende Kombination der Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium ein greifbares Medium sein, das ein Programm zur Verwendung von oder in Verbindung mit einem Instruktionsausführungssystem, -vorrichtung oder -gerät enthält oder speichert.
-
Code zum Durchführen der Bedienungen für Ausführungsformen kann in jeglicher Kombination von einer oder mehreren Programmiersprachen geschrieben sein, inclusive einer Objekt-orientierten Programmiersprache, so wie Python, Ruby, Java, Smalltalk, C++ oder dergleichen konventionellen, prozeduralen Programmiersprachen, so wie die „C“-Programmiersprache oder dergleichen und/oder Maschinensprache, so wie Assemblersprachen. Der Code kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der Computer mit dem Computer des Benutzers durch jegliche Art von Netzwerk verbunden sein, inklusive (LAN) oder einem Weitverkehrsnetz (WAN) oder die Verbindung kann mit einem externen Computer erzeugt werden (zum Beispiel durch das Internet unter Verwendung eines Internetdienstanbieters) .
-
Ein Bezug in dieser Spezifikation auf „die eine Ausführungsform“ oder „eine Ausführungsform“ oder eine ähnliche Sprache meint, dass ein bestimmtes Merkmal, Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben ist, in zumindest einer Ausführungsform enthalten ist. Deshalb kann sich das Auftreten sämtlicher Phrasen „in der einen Ausführungsform“ oder „in einer Ausführungsform“ und eine ähnliche Sprache in dieser Beschreibung auf dieselbe Ausführungsform beziehen, muss es aber nicht, sondern meint „eine oder mehrere aber nicht alle Ausführungsformen“, soweit nicht ausdrücklich anderweitig spezifiziert. Die Begriffe „enthaltend“, „umfassend“, „aufweisend“ und Variationen davon bedeuten „enthaltend“, jedoch nicht darauf „beschränkt“, soweit nicht ausdrücklich anderweitig spezifiziert. Eine Aufzählungsliste von Gegenständen impliziert nicht, dass sich eines oder alle von den Gegenständen ausschließen, soweit nicht ausdrücklich anderweitig spezifiziert. Die Begriffe „ein“, „eine“ und „der“, „die“, „das“ beziehen sich auch auf „ein oder mehrere“, soweit nicht ausdrücklich anderweitig spezifiziert.
-
Weiterhin können die beschriebenen Merkmale, Strukturen oder Charakteristiken der Ausführungsformen in jeder passenden Weise kombiniert werden. In der folgenden Beschreibung werden zahlreiche spezifische Details bereitgestellt, so wie Beispiele von Programmierungen, Softwaremodulen, Benutzerauswahlen, Netzwerkübertragungen, Datenbankanfragen, Datenbankstrukturen, Hardwaremodulen, Hardwareschaltkreisen, Hardwarechips, etc., um ein gründliches Verständnis von Ausführungsformen bereitzustellen. Ein Fachmann wird jedoch erkennen, dass die Ausführungsformen ohne eine oder mehrere der spezifischen Details oder mit anderen Verfahren, Komponenten, Materialien, etc. ausgebildet sein können. In anderen Beispielen sind wohlbekannte Strukturen, Materialien oder Bedienungen nicht im Detail gezeigt oder beschrieben, um Verwirrung von Aspekten einer Ausführungsform zu vermeiden.
-
Aspekte der Ausführungsformen sind unten in Bezug auf schematische Flussdiagramme und/oder schematische Blockdiagramme von Verfahren, Vorrichtungen, Systemen und Programmprodukten gemäß Ausführungsformen beschreiben. Jeder Block der schematischen Ablaufdiagramme und/oder schematischen Blockdiagramme und Kombinationen von Blöcken in den schematischen Ablaufdiagrammen und/oder schematischen Blockdiagrammen können durch Code implementiert werden. Dieser Code kann an einen Prozessor eines Allzweckcomputers, Sonderzweckcomputers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Instruktionen, die von dem Prozessor des Computers oder der anderen Datenverarbeitungsvorrichtung ausgeführt werden, Mittel für die Implementierung der Funktionen/Handlungen erzeugt, die in den schematischen Flussdiagrammen und/oder Block oder Blöcken der schematischen Blockdiagramme spezifiziert sind.
-
Der Code kann auch in einem Speichergerät gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Geräte steuern kann, in einer bestimmten Weise zu funktionieren, sodass die Instruktionen, die in dem Speichergerät gespeichert sind, einen Fertigungsartikel erzeugen, inklusive Instruktionen, die die Funktionen/Handlungen, die in den schematischen Flussdiagrammen und/oder Block oder Blöcken der schematischen Blockdiagramme spezifiziert sind, implementieren.
-
Der Code kann auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtung oder andere Geräte geladen werden, um eine Reihe von Bedienschritten zu bewirken, die auf dem Computer, anderen programmierbaren Vorrichtung oder anderen Geräten einen computerimplementierten Prozess erzeugen, sodass der Code, der auf dem Computer oder anderen programmierbaren Vorrichtung ausgeführt wird, Prozesse zur Implementierung der Funktionen/Handlungen, die in dem Flussdiagramm und/oder Block oder Blöcken des Blockdiagramms spezifiziert sind.
-
Die schematischen Flussdiagramme und/oder schematischen Blockdiagramme in den Figuren illustrieren die Architektur, Funktionalität und Bedienung von möglichen Implementierungen von Vorrichtungen, Systemen, Verfahren und Programmprodukten gemäß verschiedenen Ausführungsformen. Diesbezüglich kann jeder Block in den schematischen Flussdiagrammen und/oder schematischen Blockdiagrammen ein Modul, Segment oder Teil von Code repräsentieren, der eine oder mehrere ausführbare Instruktionen von dem Code zur Implementierung der spezifizierten logischen Funktion(en) umfasst.
-
In einigen alternativen Implementierungen können die in dem Block notierten Funktionen außerhalb der Ordnung auftreten, in der sie in den Figuren notiert sind, auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der entgegensetzten Reichenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Andere Schritte und Verfahren können als äquivalent in Funktion, Logik oder Effekt zu einem oder mehreren Blöcken oder Teilen davon aus den illustrierten Figuren verstanden werden.
-
Obwohl verschiedene Pfeiltypen und Linientypen in dem Flussdiagramm und/oder Blockdiagrammen benutzt werden können, sollen diese nicht als den Gegenstand der entsprechenden Ausführungsformen verstanden werden. Tatsächlich können einige Pfeile oder andere Verbinder verwendet werden, um nur auf den logischen Fluss der abgebildeten Ausführungsform hinzuweisen. Zum Beispiel kann ein Pfeil auf ein Warte- oder Überwachungsperiode von unbestimmter Dauer zwischen aufgezählten Schritten der abgebildeten Ausführungsform hinweisen. Auch kann jeder Block der Blockdiagramme und/oder Flussdiagramme und Kombinationen von Blöcken in den Blockdiagrammen und/oder Flussdiagrammen von Systemen implementiert sein, die auf Sonderzweck-Hardware basieren, die die spezifizierten Funktionen oder Handlungen durchführen oder Kombinationen von Sonderzweck-Hardware und Code.
-
Die Beschreibung von Elementen in jeder Figur kann sich auf Elemente von weiterführenden Figuren beziehen. Gleiche Zahlen beziehen sich auf gleiche Elemente in allen Figuren, inklusive alternativer Ausführungsformen gleicher Elemente.
-
1A ist ein schematisches Diagramm, das eine Ausführungsform eines nichtdeterministischen Netzwerks 100 illustriert. Das nichtdeterministische Netzwerk 100 kann Kommunikation zwischen einer Mehrzahl von Knoten 105 unterstützen. In einer Ausführungsform ist das nichtdeterministische Netzwerk 100 ein Internet-der-Dinge-(IoT-)Netzwerk. In der abgebildeten Ausführungsform enthält das nichtdeterministische Netzwerk 100 eine Mehrzahl von Gerätknoten 105b und eine Mehrzahl von Routerknoten 105a. Die Knoten 105 sind durch Kanten 110 verbunden. Eine Kante 110 kann eine drahtgebundene Verbindung, eine drahtlose Verbindung Kombinationen davon sein. Das nichtdeterministische Netzwerk 100 kann sich weiter in Kommunikation mit einem Netzwerk 115 befinden, so wie ein lokales Netzwerk, ein Weitverkehrsnetzwerk, ein Wi-Fi-Netzwerk, ein mobiles Telefonnetzwerk, das Internet oder Kombinationen davon.
-
Kommunikationen zwischen den Knoten 105 sind nichtdeterministisch. Zum Beispiel kann eine erste Nachricht, die zwischen zwei Knoten kommuniziert wird, einen ersten Kommunikationspfad nehmen, während eine zweite Nachricht, die zwischen denselben zwei Knoten 105 kommuniziert wird, einen zweiten Kommunikationspfad nehmen kann. Auf einen Knoten 105 entlang des Kommunikationspfads kann als ein Pfadknoten 105 Bezug genommen werden.
-
Unglücklicherweise macht es die nichtdeterministische Natur des Netzwerks 100 verwundbar für eine Manipulation. Zum Beispiel könnte ein bösartig Handelnder einen der Knoten 105 kompromittieren und den kompromittierten Knoten 105 verwenden, um Kommunikationen zwischen den Knoten 105 abzufangen und/oder zu modifizieren, auf das Netzwerk 115 zuzugreifen und anderweitig unbefugte und/oder bösartige Handlungen durchzuführen.
-
Die hierin beschriebenen Ausführungsformen bestimmen Kommunikationspfade und kommunizieren verschlüsselte Nachrichten über die Kommunikationspfade, um das nichtdeterministische Netzwerk 100 zu sichern. Als Ergebnis bleiben andere Knoten 105, das nichtdeterministische Netzwerk 100 das Netzwerk 115 sicher, selbst wenn ein erster Knoten 105 kompromittiert wird.
-
1B ist ein schematisches Diagramm, das eine Ausführungsform eines ersten Kommunikationspfads 120a illustriert. In einer Ausführungsform kann ein erster Knoten 105b1 eine erste Nachricht über den ersten Kommunikationspfad 120a an einen ersten Zielknoten 105b2 in dem nichtdeterministischen Netzwerk 100 von 1A übertragen. Der erste Kommunikationspfad 120a kann beim Aufstarten des ersten Knotens 105b1 bestimmt werden. Zusätzlich kann der erste Kommunikationspfad 120a beim Aufstarten des nichtdeterministischen Netzwerks 100 bestimmt werden. In einer Ausführungsform wird der erste Kommunikationspfad 120a dynamisch in Erwiderung darauf bestimmt, dass die Nachricht bereit ist, zu übertragen.
-
Wenn zusätzlich der erste Zielknoten 105b2 nicht in der Lage ist, die Nachricht zu empfangen, die über den ersten Kommunikationspfad 120a kommuniziert wird, kann ein alternativer Zielknoten 105b3 die Nachricht für den ersten Zielknoten 105b2 empfangen.
-
1C ist ein schematisches Diagramm, das eine alternative Ausführungsform eines Kommunikationspfads 120 illustriert. In der abgebildeten Ausführungsform ist ein zweiter Kommunikationspfad 120b zwischen dem ersten Knoten 105b1 und dem ersten Zielknoten 105b2 des nichtdeterministischen Netzwerks von 1A gezeigt. Eine zweite Nachricht kann über den zweiten Kommunikationspfad 120b an den ersten Zielknoten 105b2 kommuniziert werden.
-
In einer alternativen Ausführungsform wird die Nachricht an einen Wissensendknoten 105a4 als den ersten Zielknoten kommuniziert. Der Wissensendknoten 105a4 kann ein Knoten 105 sein, der Wissen über den ersten Knoten 105b1 hat und von dem angenommen wird, dass er sich in Kommunikation mit einem zweiten und/oder finalen Zielknoten 105b2 befindet. Die Nachricht kann von dem ersten Knoten 105b1 an den ersten Zielknoten 105a4 über einen Kommunikationspfad 120 und von dem ersten Zielknoten 105a4 an den zweiten Zielknoten 105b2 über einen anderen Kommunikationspfad 120 kommuniziert werden.
-
2A ist ein schematisches Blockdiagramm, das eine Ausführungsform einer Nachricht 200 illustriert. Die Nachricht 200 kann als eine Datenstruktur in einem Speicher organisiert sein. Zusätzlich kann die Nachricht 120 als organisierte Daten über eine Kante 110 zwischen Knoten 105 übertragen werden. In der abgebildeten Ausführungsform enthält die Nachricht 200 Daten 201 und Kommunikationspfaddaten 220. Die Daten 201 können von dem ersten Gerät 105b1 erzeugt werden und unabhängig von den Kommunikationspfaddaten 220 sein. Die Kommunikationspfaddaten 220 können den Kommunikationspfad 120 beschreiben. Die Kommunikationspfaddaten 220 werden detaillierte in 2B beschrieben.
-
2B ist ein schematisches Blockdiagramm, das eine Ausführungsform der Kommunikationspfaddaten 220 illustriert. In der abgebildeten Ausführungsform enthalten die Kommunikationspfaddaten 220 eine Mehrzahl von Knotenidentifikatoren 221. Jeder Knotenidentifikator 221 kann einen Pfadknoten 105 in dem Kommunikationspfad 120 identifizieren. In einer bestimmten Ausführungsform sind die Knotenidentifikatoren 221 in einer sequenziellen Reihenfolge aufgelistet, wobei die Nachricht 200 von Pfadknoten 105 zu Pfadknoten 105 in der sequenziellen Reihenfolge kommuniziert wird.
-
In einer Ausführungsform enthalten die Kommunikationspfaddaten 220 enthält einen oder mehrere von einem Wissensendknotenidentifikator 223 und einem finalen Zielknotenidentifikator 225. Der Wissensendknotenidentifikator 223 kann enthalten sein, um die Nachricht 200 an einen finalen Zielknoten 105 zu senden der sich jenseits des Wissens des sendenden Knotens 105 befindet. Zum Beispiel kann der sendende Knoten 105 kein Wissen über Kommunikationspfade 120 zu dem finalen Zielknoten 105 haben. Als Ergebnis kann der sendende Knoten 105 einen Wissensendknoten 105 in dem Wissensendknotenidentifikator 223 identifizieren sowie den finalen Zielknoten 105 in dem finalen Zielknotenidentifikator 225 identifizieren. Die Nachricht 200 kann über einen ersten Kommunikationspfad 120, der von den Knotenidentifikatoren 221 identifiziert wurde, zu dem Wissensendknoten 105, der von dem Wissensendknotenidentifikator 223 identifiziert wurde kommuniziert werden. Der Wissensendknoten 105 kann dann einen zweiten Kommunikationspfad 120 zu einem zweiten Zielknoten 105 bestimmen. Der zweite Zielknoten 105 kann ein anderer Wissensendknoten 105 sein, der in dem Wissensendknotenidentifikator 223 spezifiziert ist, wobei der finale Zielknoten 105 in dem finalen Zielknotenidentifikator 225 spezifiziert ist. Alternativ kann der zweite Zielknoten 105 der finale Zielknoten 105 sein und kann mit dem finalen Zielknotenidentifikator 225 spezifiziert sein. Die Verwendung des Wissensendknotenidentifikators 223 und des finalen Zielknotenidentifikators 225 ermöglicht dem sendenden Knoten 105, Nachrichten 200 an Zielknoten 105 zu kommunizieren, über die der sendende Knoten 105 nur ein unvollständiges Wissen über die dazwischenliegenden Knoten 105 hat.
-
2C ist ein schematisches Blockdiagramm, das eine Ausführungsform der Kommunikationspfad-Datenbank 229 illustriert. Die Kommunikationspfad-Datenbank 229 kann eine zentralisierte Datenbank sein, die Kommunikationspfade 120 für eine Mehrzahl von Knoten 105 speichert. Zum Beispiel kann ein Routerknoten 105a die Kommunikationspfad-Datenbank 229 pflegen. Die Kommunikationspfad-Datenbank 229 kann Kommunikationspfaddaten 220 für eine Mehrzahl Kommunikationspfaden 120 speichern.
-
2D ist ein schematisches Blockdiagramm, das eine Ausführungsform einer Blockkettenaufzeichnung 210 illustriert. Die Blockkettenaufzeichnung 210 kann verwendet werden, um Nachrichtentransaktionen 215 zwischen Knoten aufzuzeichnen. Die Blockkettenaufzeichnung 210 enthält mehrere Blöcke 217. Aus Gründen der Einfachheit sind drei Blöcke 217a-c in der abgebildeten Ausführungsform gezeigt. Es kann jedoch jede Zahl von Blöcken 217 verwendet werden. Jeder Block 217 kann an einem Knoten 105 gespeichert werden. Die Blöcke 217 der Blockkettenaufzeichnung 210 können über mehrere Knoten 105 geteilt und synchronisiert werden. Manche Knoten 105 können eine Blockkettenaufzeichnung 210 unabhängig mit mehreren Blöcken 217 pflegen.
-
Jeder Block 217 kann eine Mehrzahl von Nachrichtentransaktionen 215 aufzeichnen. Die Nachrichtentransaktionen 215 können gehasht werden. In einer Ausführungsform werden die gehashten Nachrichtentransaktionen 215 für jeden Block 217 verglichen. Der Block 217 kann nur in der Blockkettenaufzeichnung 210 aufgezeichnet werden, wenn es eine Übereinstimmung für jede Instanz des Blocks 217 gibt.
-
In einer Ausführungsform wird Arbeitsnachweis 211 für jeden Block 217 berechnet. Der Arbeitsnachweis 211 kann so berechnet werden, dass er ein Verschlüsselungsmerkmal aufweist, das schwierig zu berechnen aber einfach zu verifizieren ist. In einer Ausführungsform beinhaltet der Arbeitsnachweis 231 vorherigen Blöcke 213. Der Arbeitsnachweis 231 kann verwendet werden, um die Selbstkonsistenz eines jeden Blocks 217 der Blockkettenaufzeichnung 210 zu validieren.
-
2E ist ein schematisches Blockdiagramm, das eine Ausführungsform einer Menge 230 von Verschlüsselungsschlüsseln 231 illustriert. Die Menge 230 von Verschlüsselungsschlüsseln 231 enthält eine Mehrzahl von N Verschlüsselungsschlüsseln 231. Die Menge 230 von Verschlüsselungsschlüsseln 231 kann verwendet werden, um die Nachricht 200 zu verschlüsseln. Zum Beispiel kann ein sendender Knoten 105 die Menge 230 von Verschlüsselungsschlüsseln 231 verwenden, um die Nachricht 200 zu verschlüsseln. In einer Ausführungsform wird nur eine Teilmenge 233 von M Verschlüsselungsschlüsseln 231 der Menge 230 von N Verschlüsselungsschlüsseln 231 benötigt, um die Nachricht 200 zu entschlüsseln. Zum Beispiel kann ein Zielknoten 105 die Teilmenge 233 der Menge 230 von Verschlüsselungsschlüsseln 231 verwenden, um eine verschlüsselte Nachricht zu entschlüsseln.
-
2F ist ein schematisches Blockdiagramm, das eine Ausführungsform von Knoten-Verschlüsselungsschlüsseln 240 illustriert. In der abgebildeten Ausführungsform kann ein Knoten 105 einen Verschlüsselungsschlüssel 231 aufweisen. Der Verschlüsselungsschlüssel 231 kann von einem Pfadknoten 105 verwendet werden, um eine verschlüsselte Nachricht teilweise zu entschlüsseln, wenn die Nachricht 200 an dem Pfadknoten 105 empfangen wird. Zusätzlich kann der Verschlüsselungsschlüssel 231 von einem Schlüsselhalteknoten 105 an einen Zielknoten 105 bereitgestellt werden.
-
3A ist ein schematisches Blockdiagramm, das eine Ausführungsform einer verschlüsselten Nachricht 300 illustriert. In der abgebildeten Ausführungsform ist die Nachricht 200 mit einer Verschlüsselung 305 verschlüsselt. Die Verschlüsselung 305 kann erzeugt werden unter Verwendung der Menge 230 von Verschlüsselungsschlüsseln 231. Zusätzlich kann die einzelne Verschlüsselung 305 mit der Teilmenge 233 der Menge 230 von Verschlüsselungsschlüssel 231 entschlüsselt werden.
-
3B ist ein schematisches Blockdiagramm, das eine alternative Ausführungsform der verschlüsselten Nachricht 300 illustriert. In der abgebildeten Ausführungsform ist die Nachricht 200 mit der Verschlüsselung 305 wie in 3A gezeigt verschlüsselt. Jede nachfolgende Transaktion der verschlüsselten Nachricht 300 durch einen Pfadknoten 105 wird als eine Nachrichtentransaktion 215 von einer Zwiebelschalenaufzeichnung 310 aufgezeichnet, wobei jede nachfolgende Nachrichtentransaktion 215 vorherigen Nachrichtentransaktionen 215, die Verschlüsselung 305 und die Nachricht 200 einkapselt. Die Zwiebelschalenaufzeichnung 310 kann eine Mehrzahl von Schichten von Nachrichtentransaktionen 215 umfassen. Jede Schicht kann eine Nachrichtentransaktion 215 repräsentieren. Zusätzlich kann jede Schicht von einem Knoten 105 signiert und an die verschlüsselte Nachricht 300 angehängt werden. Der Zielknoten 105 kann die Signatur von jedem Knoten 105 validieren.
-
In einer Ausführungsform entschlüsselt jeder Pfadknoten 105, der die verschlüsselte Nachricht 300 verarbeitet, einen Bereich der Verschlüsselung 305 mit dem Verschlüsselungsschlüssel 231 des Pfadknotens 105. Die Verschlüsselung 305 der Nachricht 200 kann verbleiben, aber die nachfolgende Verschlüsselung 305 enthält nicht den Verschlüsselungsschlüssel 231 des verarbeitenden Pfadknotens 105.
-
In einer alternativen Ausführungsform verschlüsselt jede Transaktion 215 die verschlüsselte Nachricht 300 weiter mit dem Verschlüsselungsschlüssel 231 des Knotens 105 der die Transaktion 215 durchführt.
-
4 ist ein schematisches Blockdiagramm, das eine Ausführungsform eines Knotens 105 illustriert. In der abgebildeten Ausführungsform enthält der Knoten 105 einen Prozessor 405, einen Speicher 410 und eine Netzwerkverbindung 415. Der Speicher 410 kann ein Halbleiter-Speichergerät, Festplatte, ein optisches Speichergerät, ein mikromechanisches Speichergerät oder Kombinationen davon enthalten. Der Speicher 410 kann Code speichern. Der Prozessor 405 kann den Code ausführen. Die Netzwerkverbindung 415 kann mit anderen Knoten 105 in dem nichtdeterministischen Netzwerk 100 kommunizieren.
-
5 ist ein schematisches Flussdiagramm, das eine Ausführungsform eines sicheren Kommunikationsverfahrens 500 illustriert. Das Verfahren 500 kann Nachrichten 200 zwischen den Knoten 105 des nichtdeterministischen Netzwerk 100 sicher kommunizieren. Das Verfahren 500 kann von einem oder mehreren Knoten 105 und/oder den Prozessoren 405 davon durchgeführt werden.
-
Das Verfahren 500 startet in einer Ausführungsform damit, dass der Prozessor 405 eine Kommunikationspfad 120 zu einem Zielknoten 105 in einem Netzwerk von Knoten 105 bestimmt 505. Das Netzwerk von Knoten 105 kann das nichtdeterministische Netzwerk 100 sein. Zusätzlich kann das Netzwerk von Knoten 105 als ein ungerichteter Graph organisiert sein, wobei Kanten 110 zwischen den Knoten 105 bidirektionale Kommunikationskanäle sind.
-
Die Zielknoten 105 können der finale Zielknoten 105 sein, der durch den finalen Zielknotenidentifikator 225 spezifiziert ist. Alternativ kann der Zielknoten 105 ein Wissensendknoten 105 sein. Der Knotenidentifikator 221 für den Wissensendknoten 105 kann als der Wissensendknotenidentifikator 223 aufgezeichnet sein. Der Knotenidentifikator 221 des finalen Zielknotens 105 kann als der finale Zielknotenidentifikator 225 aufgezeichnet sein.
-
Der Kommunikationspfad 120 kann ein aufspannender Baum der Pfadknoten 105 des ungerichteten Graphen sein. Der aufspannende Baum kann eine Teilmenge des nichtdeterministischen Netzwerks 100 sein, wobei all die Knoten 105 mit einer minimal möglichen Anzahl von Kanten 110 umfasst sind. Als ein Ergebnis weist der aufspannende Baum keine zyklischen Verbindungen auf, wobei zwei Knoten 105 durch mehr als einen Kommunikationspfad 120 verbunden sind. Deshalb ist jeder Pfadknoten 105 des Kommunikationspfads 120 bekannt.
-
In einer Ausführungsform wird der Kommunikationspfad 120 in einer Datenstruktur so wie die Kommunikationspfaddaten 220 aufgezeichnet und an die Nachricht 200 angehängt wie in 2A gezeigt. Zusätzlich kann der Kommunikationspfad 120 als eine Datenstruktur so wie die Kommunikationspfaddaten 220 in der Kommunikationspfad-Datenbank 229 aufgezeichnet werden.
-
Der Prozessor 405 kann die Nachricht 200 an einen ersten Zielknoten 105 mit einer Verschlüsselung 305 verschlüsseln 510. Die Verschlüsselung 305 kann jeden Verschlüsselungsschlüssel 231 der Menge 230 von Verschlüsselungsschlüsseln 231 verwenden. Die Verschlüsselungsschlüssel 231 der Menge 230 sind bekannt, da jeder Pfadknoten 105 des Kommunikationspfads 120 auch bekannt ist. Die Verschlüsselung 305 kann nur die Teilmenge 233 der Menge 230 von Verschlüsselungsschlüsseln 231 zum Entschlüsseln verwenden. In einer bestimmten Ausführungsform wird die Nachricht 200 mit einem Kassenbuch-Verschlüsselungsalgorithmus verschlüsselt 510.
-
Der Prozessor 405 kann weiter die verschlüsselte Nachricht 300 über die Pfadknoten 105 des Kommunikationspfads 120 kommunizieren 515. In einer Ausführungsform wird jede Transaktion 215 von jedem Pfadknoten 105 mit der Nachricht 200 und/oder verschlüsselten Nachricht 300 aufgezeichnet. Jede Transaktion 215 kann als eine Blockkettenaufzeichnung 210 aufgezeichnet werden, wie in 2D beschrieben. Die Blöcke 217 der Blockkettenaufzeichnung 210 können an einem oder mehreren Abrechnungsknoten 105 aufgezeichnet werden.
-
In einer Ausführungsform wird jede Transaktion 215 von jedem Pfadknoten 105 mit der Nachricht 200 und/oder verschlüsselten Nachricht 300 als eine Zwiebelschalenaufzeichnung 310 aufgezeichnet, wie in 3B gezeigt. Die Zwiebelschalenaufzeichnung 310 kann eine Mehrzahl von Schichten enthalten. Jede Schicht kann eine Nachrichtentransaktion 215 sein und kann von dem Pfadknoten 215, der die Nachricht 200 und/oder die verschlüsselte Nachricht 300 verarbeitet, signiert werden. Die Schicht kann an die Nachricht 200 und/oder verschlüsselte Nachricht 300 angehängt werden. Der Kassenbuch-Verschlüsselungsalgorithmus kann die Nachrichtentransaktionen 215 und/oder Blöcke 217 der Blockkettenaufzeichnungen 210 von 2D verschlüsseln.
-
Der Prozessor 405 kann die verschlüsselte Nachricht 300 entschlüsseln 525. In einer Ausführungsform wird die verschlüsselte Nachricht 300 an dem Zielknoten 105 mit der Teilmenge 233 der Menge 230 von Verschlüsselungsschlüssel 231 entschlüsselt 525. Die Teilmenge 233 von Verschlüsselungsschlüsseln 231 kann von Schlüsselhalteknoten 105 gehalten werden, die sich in Kommunikation mit dem Zielknoten 105 befinden. In einer Ausführungsform akquiriert der Zielknoten 105 die Verschlüsselungsschlüssel 231 der Teilmenge 233 von den Schlüsselhalteknoten 105. Zum Beispiel kann der Zielknoten 105 drei Verschlüsselungsschlüssel 231 von drei Schlüsselhalteknoten 105 anfragen. Die Schlüsselhalteknoten 105 können Kanten 110 mit den Zielknoten 105 teilen.
-
In einer bestimmten Ausführungsform entschlüsselt 525 jeder Pfadknoten 105, die verschlüsselte Nachricht 300 verarbeitet die verschlüsselte Nachricht 300 mit einem Verschlüsselungsschlüssel 231 von der Teilmenge 233 von Verschlüsselungsschlüsseln 231 und der Zielknoten 105 entschlüsselt 525 die verschlüsselte Nachricht 300 mit einem anderen Verschlüsselungsschlüssel 231 von der Teilmenge 233 von Verschlüsselungsschlüsseln 231. Als ein Ergebnis muss die verschlüsselts Nachricht 300 von jedem Pfadknoten 105 des Kommunikationspfads 120 verarbeitet werden, um entschlüsselt 525 zu werden.
-
Der Prozessor 405 kann jede Nachrichtentransaktion 215 entlang des Kommunikationspfads 120 verifizieren 530. Die Nachrichtentransaktionen 215 entlang des Kommunikationspfads 120 können an dem Zielknoten 105 verifiziert 530 werden. In einer Ausführungsform werden die Nachrichtentransaktionen 215 der Zwiebelschale 310 auf eine Manipulation inspiziert. Zusätzlich können die Nachrichtentransaktionen 215 von einem oder mehreren Blöcken 217 auf Manipulation inspiziert werden.
-
Der Prozessor 405 kann bestimmen 535, ob der Zielknoten 105 ein finaler Zielknoten 105 ist. Der Prozessor 405 kann den Knotenidentifikator 221 des Zielknotens 105 mit dem Wissensendknotenidentifikator 223 und dem finalen Zielknotenidentifikator 225 vergleichen. Wenn der Knotenidentifikator 221 des Zielknotens 105 der finale Zielknotenidentifikator 225 ist, ist der Zielknoten 105 der finale Zielknoten 105 und das Verfahren 500 endet.
-
Wenn der Knotenidentifikator 221 des Zielknotens 105 der Wissensendknotenidentifikator 223 ist, kann der Prozessor 405 einen zweiten Kommunikationspfad 120 zu einem zweiten Zielknoten 105 bestimmen 505. Der zweite Zielknoten 105 kann der finale Zielknoten 105 sein, der von dem finalen Zielknotenidentifikator 225 spezifiziert ist. Alternativ kann der zweite Zielknoten 105 ein Wissensendknoten 105 sein. Der Knotenidentifikator 221 für den Wissensendknoten 105 kann als der Wissensendknotenidentifikator 223 aufgezeichnet sein.
-
Der Prozessor 405 kann weiter die Nachricht 200 an den zweiten Zielknoten 105 mit einer Verschlüsselung 305 unter Verwendung einer Menge 230 von zweiten Verschlüsselungsschlüsseln 231 verschlüsseln 510. Die Verschlüsselung 305 kann eine Teilmenge 233 der Menge 230 von zweiten Verschlüsselungsschlüsseln 231 benötigen, um sie zu entschlüsseln. Der Prozessor 405 kann die verschlüsselte Nachricht 300 kommunizieren 515, jede Transaktion 215 von jedem Pfadknoten 105 aufzeichnen 520, die verschlüsselte Nachricht 300 entschlüsseln 525, die Transaktionen 215 verifizieren 530, erneut bestimmen 535, ob der Zielknoten 105 der finale Zielknoten 105 ist, wie oben beschrieben, bis der Zielknoten 105 der finale Zielknoten 105 ist und das Verfahren 500 endet. Al sein Ergebnis kann die Nachricht 200 durch eine Reihe von Wissensendknoten 105 kommuniziert werden, bis der finale Zielknoten 105 erreicht ist.
-
Die Ausführungsformen bestimmen einen Kommunikationspfad 120 zu einem Zielknoten 105 in einem Netzwerk von Knoten 105, das als ein ungerichteter Graph organisiert ist, wobei der Kommunikationspfad 120 ein aufspannender Baum von Pfadknoten 105 des ungerichteten Graphs ist. Als ein Ergebnis ist jeder Pfadknoten 105 des Kommunikationspfads 120 bekannt. Die Ausführungsformen verschlüsseln weiter die Nachricht 200 zu dem Zielknoten 105 mit einer Verschlüsselung 305, die die Teilmenge 233 der Menge 230 von Verschlüsselungsschlüsseln 231 zum Entschlüsseln benötigt.
-
Die Ausführungsformen kommunizieren weiter die verschlüsselte Nachricht 300 über die Pfadknoten 105 des Kommunikationspfads 120 wobei die verschlüsselte Nachricht an dem Zielknoten 105 mit der Teilmenge 233 von Verschlüsselungsschlüsseln 231 entschlüsselt wird. Als ein Ergebnis wird die Nachricht 200 sicher innerhalb der nichtdeterministischen Netzwerks 100 kommuniziert.
-
Ausführungsformen können in anderen spezifischen Formen ausgeübt werden. Die beschriebenen Ausführungsformen sollen in allen Belangen nur als illustrativ und nicht beschränkend verstanden werden. Auf den Gegenstand der Erfindung wird daher in den beigefügten Ansprüchen hingewiesen, anstatt in der vorangegangenen Beschreibung. Alle Änderungen, die innerhalb der Bedeutung und im Bereich der Äquivalenz der Ansprüche liegen, sollen innerhalb deren Umfang gefasst sein.