-
TECHNISCHES GEBIET
-
Diese Offenbarung betrifft allgemein durchsuchbare Verschlüsselung und, insbesondere, ein System für Durchsuchbare-Symmetrische-Verschlüsselung (SSE) und ein Verfahren zum Verarbeiten eines invertierten Indexes.
-
KURZDARSTELLUNG
-
Eine Kurzdarstellung gewisser hier offenbarter Ausführungsformen ist im Folgenden dargelegt. Es versteht sich, dass diese Aspekte lediglich präsentiert werden, um dem Leser eine kurze Kurzfassung dieser gewissen Ausführungsformen zu geben und dass diese Aspekte nicht dafür gedacht sind, den Schutzumfang dieser Offenbarung zu beschränken. Tatsächlich kann diese Offenbarung eine Vielfalt von Aspekten einschließen, die im Folgenden möglicherweise nicht dargelegt werden.
-
Ausführungsformen der Offenbarung betreffen ein System für Durchsuchbare-Symmetrische-Verschlüsselung (SSE) und ein Verfahren zum Verarbeiten eines invertierten Indexes. Das SSE-System beinhaltet beispielsweise genKey-, buildSecureIndex-, genToken- und Suchoperationen. Ein compress X ist in die buildSecureIndex- und/oder Suchoperationen integriert. Das komprimiere-dann-X (compress then X) nimmt jeden Eintrag eines verschlüsselten Indexes, komprimiert den Eintrag des verschlüsselten Indexes in einen komprimierten Eintrag und verarbeitet dann den komprimierten Eintrag mit einer Funktion. Die Funktion umfasst eine Linked-List-Funktion und eine Array-Funktion. Die Suchoperation dekomprimiert den verarbeiteten Eintrag und gibt den dekomprimierten Eintrag aus. Die SSE umfasst eine Client-Vorrichtung und einen Server. Die genKey-, buildSecureIndex- und genToken-Operationen sind in die Client-Vorrichtung integriert und die Suchoperation ist in den Server integriert.
-
Gemäß einem weiteren Aspekt der Offenbarung umfasst ein Client-Server-System einen Server, eine Client-Vorrichtung, beinhaltend einen verschlüsselten Schlüssel zum Durchsuchen einer verschlüsselten Datei, und ein computerlesbares Medium, gekoppelt mit der Client-Vorrichtung, wobei die Client-Vorrichtung ausgelegt ist zum Durchsuchen der auf dem computerlesbaren Medium gespeicherten verschlüsselten Datei unter Verwendung des verschlüsselten Schlüssels. Die Client-Vorrichtung umfasst ferner einen zweiten Eingabeschlüssel, wobei der zweite Eingabeschlüssel eine Dateikennung, ein Schlüsselwort und ein invertierter Index ist. Die Client-Vorrichtung ist ausgelegt zum Durchsuchen der auf dem computerlesbaren Medium gespeicherten verschlüsselten Datei unter Verwendung des verschlüsselten Schlüssels mit der Kennung oder dem Schlüsselwort oder dem invertierten Index. Das computerlesbare Medium ist in den Server oder in ein Cloud-Netzwerk integriert.
-
Ein Verfahren zum Durchsuchen einer entfernt gespeicherten verschlüsselten Datei gemäß einem anderen Aspekt der Offenbarung, durchgeführt von einer Client-Vorrichtung, wobei das Verfahren Folgendes umfasst: Erzeugen eines genKey, umfassend einen Suchindex und einen kryptographischen Schlüssel, Erzeugen eines buildSecureIndex, umfassend einen Verschlüsselungsschlüssel und einen Klartextindex, Erzeugen eines Tokens, und Zusammenstellen des Klartextindexes. Der Klartextindex umfasst mindestens ein eindeutiges Schlüsselwort und eine Liste von Dokumentenkennungen, wobei jede Dokumentenkennung einen Eintrag aufweist, wobei der Eintrag mindestens ein Element aufweist. Das Element des Eintrags ist einer zufällig ausgewählten Einheit eines vorzugewiesenen Arrays zugeordnet. Das Verfahren umfasst ferner Verbinden der Auswahleinheit mit einer anderen Auswahleinheit unter Verwendung eines Indikators, wobei die Auswahleinheit und die andere Auswahleinheit aus demselben Eintrag erzeugt werden.
-
Figurenliste
-
Diese und andere Merkmale, Aspekte und Vorteile dieser Offenbarung werden besser verstanden werden, wenn die folgende ausführliche Beschreibung gewisser Ausführungsbeispiele unter Bezugnahme auf die begleitenden Zeichnungen, in welchen gleiche Zeichen über die Zeichnungen hinweg gleiche Teile repräsentieren, gelesen wird.
- 1 ist ein Blockdiagramm einer Architektur auf hohem Niveau, die eine durchsuchbare symmetrische Verschlüsselung (SSE) gemäß einer beschriebenen Ausführungsform der Offenbarung implementiert; und
- 2 ist ein Blockdiagramm des SSE-Systems gemäß einem Ausführungsbeispiel der Offenbarung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die folgende Beschreibung wird dargelegt, um einem Fachmann auf dem Gebiet zu ermöglichen, die beschriebenen Ausführungsformen herzustellen und zu verwenden, und wird im Zusammenhang einer speziellen Anwendung und ihrer Anforderungen bereitgestellt. Verschiedene Modifikationen an den beschriebenen Ausführungsformen sind Fachleuten auf dem Gebiet leicht erkenntlich und die allgemeinen vorliegend definierten Prinzipien können bei anderen Ausführungsformen und Anwendungen angewendet werden, ohne vom Gedanken und Schutzumfang der beschriebenen Ausführungsformen abzuweichen. Somit sind die beschriebenen Ausführungsformen nicht auf die dargestellten Ausführungsformen beschränkt, sondern sollen den breitesten Umfang, der mit den vorliegend offenbarten Prinzipien und Merkmalen konsistent ist, gewährt werden.
-
1 schildert ein Client-Server-System 100, das ein System für eine durchsuchbare symmetrische Verschlüsselung (SSE) implementiert, um eine Client-Computervorrichtung (Client) 104 zu befähigen, verschlüsselte Dateien, die in einem Speicher eines Servers 144 gespeichert sind, zu durchsuchen. Das SSE-System erlaubt es dem Client 104, die Daten in der verschlüsselten Form an den Server 144, d. h. an einen Drittpartei-Diensteanbieter oder ein Netzwerk 180, d. h. ein Cloud-Netzwerk, auszulagern, während der Client 104 einen Verschlüsselungsschlüssel behält. Die Verschlüsselung nimmt beispielsweise einen Klartext, wie etwa eine Dateikennung und den Verschlüsselungsschlüssel, als eine Eingabe. Bei manchen Ausführungsformen nimmt der Client 104 ein Schlüsselwort und den Verschlüsselungsschlüssel als Eingabe und liefert ein Such-Token für das Schlüsselwort. Bei einer anderen Ausführungsform wird das Such-Token an den Client 104 des Drittpartei-Diensteanbieters 144 mit einer Suchanfrage geliefert und der Client 104 verwendet das Such-Token zum Empfangen einer Menge von bei dem Drittpartei-Diensteanbieter 144 gespeicherten verschlüsselten Dokumenten, die eine Antwort auf das zugrundeliegende Schlüsselwort darstellen. Der Drittpartei-Diensteanbieter 144 gibt alle verschlüsselten Dokumente zurück, ohne irgendwelche Informationen über Schlüsselwörter und die Dokumente zu erfahren. Durchsuchbare Verschlüsselung kann Auslagern von Daten sichern, indem der verschlüsselte Schlüssel beim Client 104 verbleibt. Bei einer Ausführungsform wird der verschlüsselte Schlüssel in dem Speicher 112 der Client-Vorrichtung 104 gespeichert. In Abhängigkeit von der Anwendung wird ein auf einem invertierten Index basierendes SSE-System zum Durchsuchen der verschlüsselten Daten bereitgestellt. Beispielsweise wird ein Index mit jedem Such-Token und den zurückgegebenen verschlüsselten Daten bevölkert. Bei manchen Ausführungsformen kann der Index zum Suchen mit konstanter Zeit verwendet werden, wenn ein Schlüsselwort erneut gesucht wird. Mit anderen Worten gesagt, kann das dem Schlüsselwort entsprechende Such-Token als eine Eingabe für den Index verwendet werden, um die verschlüsselten Daten abzurufen.
-
Das System 100 beinhaltet den Client 104, den Server 144 und ein Netzwerk 180, wie etwa ein lokales Netzwerk (LAN), ein Weitbereichsnetzwerk (WAN), ein Mobilfunknetzwerk, das Internet, ein Telefonnetzwerk, ein Cloud-Netzwerk oder ein anderes geeignetes Datennetzwerk, das Kommunikation zwischen dem Client 104 und dem Server 144 ermöglicht. Der Client 104 beinhaltet einen Client-Prozessor 108 und einen Speicher 112. Der Prozessor 108 ist ein Mikroprozessor oder eine andere digitale Logikvorrichtung, die gespeicherte Programmanweisungen ausführt, und der Speicher 112 beinhaltet sowohl flüchtige Datenspeicherungsvorrichtungen, wie etwa Direktzugriffsspeicher (RAM), als auch nichtflüchtige Datenspeicherungsvorrichtungen, wie etwa Magnetscheiben und Festplattenlaufwerke. Manche Ausführungsformen des Client-Prozessors 108 beinhalten
Parallelausführungshardware, die mehrere Verarbeitungskerne einschließt, oder andere Parallelverarbeitungskomponenten zum Durchführen von Dateiverschlüsselung und -entschlüsselung, Suchtermverschlüsselung, Dateiaktualisierungsoperationen und anderen Operationen, die als Teil eines DSSE-Schemas gleichzeitig implementiert sind. Beispiele für Client-Rechenvorrichtungen beinhalten tragbare und Tisch-Personalcomputer (PCs), Smartphones, Tablet-Rechenvorrichtungen, anziehbare Rechenvorrichtungen, Thick-Clients, Thin-Clients und jegliche beliebige geeignete digitale Rechenvorrichtung.
-
Der Server 144 beinhaltet einen Serverprozessor 148 und einen Speicher 152. Der Prozessor 148 in dem Server 144 ist ein Mikroprozessor oder eine andere digitale Logikvorrichtung, die gespeicherte Programmanweisungen ausführt, um Suchen und Dateispeicherungs- und -abfragedienste für den Client 104 durchzuführen. Der Server 144 kann optional in das Netzwerk 180 integriert sein. Bei manchen Ausführungsformen können ein oder mehrere Server über das Netzwerk 180 kommunizierend mit der Client-Rechenvorrichtung 104 gekoppelt sein. Obgleich es keine Anforderung ist, weist der Serverprozessor 148 bei manchen Ausführungsformen eine größere Rechenleistung als die des Client-Prozessors 108 auf. Manche Ausführungsformen des Serverprozessors 148 beinhalten Parallelausführungshardware, die mehrere Verarbeitungskerne oder andere Parallelverarbeitungskomponenten einschließt, um Suchen und andere Operationen, die als Teil eines SSE-Systems implementiert sind, gleichzeitig durchzuführen. Der Speicher 152 in dem Server 144 beinhaltet sowohl flüchtige Datenspeicherungsvorrichtungen, wie etwa Direktzugriffsspeicher (RAM), als auch nichtflüchtige Datenspeicherungsvorrichtungen, wie etwa Magnetscheiben und Festplattenlaufwerke. Obgleich es keine Anforderung ist, weist der Serverspeicher 152 bei manchen Ausführungsformen eine größere Kapazität als der Client-Speicher 112 auf, um den Serverspeicher 152 zu befähigen, eine große Anzahl von verschlüsselten Dateien zu speichern. Obgleich 1 einen Einzel-Client 104 zu veranschaulichenden Zwecken darstellt, speichert der Server 144 in vielen Ausführungsformen verschlüsselte Daten für mehrere Client-Rechenvorrichtungen. Jede Client-Rechenvorrichtung erzeugt verschlüsselte Daten, sendet die verschlüsselten Daten zur Speicherung über das Netzwerk 180 an den Server 144. Die verschlüsselten Daten werden dann in dem Serverspeicher 152 gespeichert.
-
In dem System 100 kommuniziert der Client 104 mit dem Server 144 über das Netzwerk 180. Sowohl der Client 108 als auch der Server 144 beinhalten Netzwerkkommunikationsgeräte, wie etwa drahtgebundene Netzwerkgeräte (z. B. Ethernet oder eine andere geeignete drahtgebundene Netzwerkschnittstelle) und drahtlose Netzwerkgeräte (z. B. Bluetooth oder IEEE 802.11 drahtloses LAN und 3G-, 4G-, LTE-Drahtlos-WAN oder ein WAN mit einem beliebigen drahtlosen Mobilfunkprotokoll). Bei der nachfolgenden Erörterung wird angenommen, dass der Client 104 und der Server 144 unter Verwendung von authentifizierten und verschlüsselten Kommunikationsprozessen kommunizieren, die im Stand der Technik bekannt sind und hier nicht weiter ausführlich beschrieben werden. Somit kann eine abhörende Rechenvorrichtung, die Verkehr über das Netzwerk 180 überwacht, den Inhalt von Kommunikationen zwischen dem Client 104 und dem Server 144 nicht bestimmen. Ein „Angreifer“ bezieht sich auf eine Rechenvorrichtung oder -entität, die Zugang zu dem Server 144 und/oder dem Netzwerk 180 hat und die Fähigkeit zum Lesen von zumindest Teilen der in dem Serverspeicher 152 und/oder dem Netzwerk 180 gespeicherten Daten aufweist, wie etwa ein Drittpartei-Diensteanbieter auf eine nicht von dem Client 104 genehmigte Weise. Der Angreifer hat ein Ziel, Informationen über in dem Serverspeicher 152 und/oder dem Netzwerk 180 gespeicherte verschlüsselte Client-Dateien zu extrahieren, um die Privatsphäre des Inhalts dieser Dateien zu verringern oder zu eliminieren. Der Angreifer beobachtet auch die Inhalte der verschlüsselten Suche und der während des Betriebs in dem Server 144 erzeugten Daten, um Informationen über die verschlüsselten Dateien zu erzeugen. Es wird auch angenommen, dass der Angreifer über die Fähigkeit verfügt, Netzwerkkommunikationen am Server 144 und/oder dem Netzwerk 180 zu überwachen, um die Verschlüsselung von Kommunikationsnachrichten zwischen dem Client 104 und dem Server 144 zu umgehen. Obgleich der Angreifer Kommunikationen von dem Client 104 beobachten kann, hat der Angreifer keinen direkten Zugang zu den Inhalten des Client-Speichers 112, des Servers 144 noch des Netzwerks 180.
-
2 veranschaulicht ein Blockdiagramm eines SSE-Systems 100 gemäß eines Ausführungsbeispiels der Offenbarung. Das SSE-System 100 beinhaltet vier Operationen: genKey, buildSecureIndex, genToken und Suchen. Anwendungsabhängig können andere geeignete Operationen in dem SSE-System enthalten sein. Die ersten drei Operationen laufen auf einer Client-Vorrichtung 204 und die letztere läuft auf einem Cloud-Server 244, d. h. einem Drittpartei-Diensteanbieter. Gen ist eine Operation zum Erzeugen eines Suchindexes und eines Suchschlüssels, genKey ist eine Erzeugungsoperation für einen Kryptographieschlüssel, buildSecureIndex ist eine Erzeugungsoperation für einen build-Secure-Index, genToken ist eine Token-Erzeugungsoperation und Suchen ist eine Suchoperation. Innerhalb dem buildSecureIndex sind eine Verschlüsselungsoperation und eine Zusammenstellungsoperation enthalten. Die Verschlüsselungsoperation nimmt einen Klartextindex und einen verschlüsselten Schlüssel , d. h. einen Kryptographieschlüssel, zum Erstellen von verschlüsselten Daten zum Schützen der Indexprivatsphäre. Die Zusammenstellungsoperation stellt den Klartextindex zusammen, um statistische Informationen zu schützen, wie etwa Schlüsselwortfrequenz usw. Anwendungsabhängig kann die Reihenfolge der Verschlüsselungsoperation und der Zusammenstellungsoperation zufällig sein. Mit anderen Worten gesagt kann jegliche Operation zuerst kommen.
-
Beispielsweise wird ein Eingabeklartextindex in die Zusammenstellungsoperation dargestellt als:
wobei w
1,...,w
n eindeutige Schlüsselwörter sind, DB(w) die Liste der Dokumentenkennungen F
ij ist, die das Schlüsselwort w enthalten, DB(w
i) ein Eintrag in die DB für 1 ≤ i ≤ n ist und F
ij die Dokumentenkennung DB(w
i) für 1 ≤ j ≤ c ist.
-
Um die Zusammenstellungsoperation zu implementieren, kann eine Linked-List-Funktion oder eine Array-Funktion, die dem Fachmann bekannt sind, verwendet werden. Die Linked-List-Funktion weist jedes Element der Einträge in DB einer zufällig ausgewählten Einheit eines vorzugeordneten Arrays zu und linkt die ausgewählte Einheit über einen Indikator, falls die jeweiligen Elemente demselben Eintrag angehören. Besteht DB = {DB(w
1),..., DB(w
n)} aus n Einträgen und
Elementen, d.h. gesamten Dokumentenkennungen, so weist die Client-Vorrichtung
204 beispielsweise ein Array der Größe N im Voraus zu, packt jedes Element in eine Einheit der Array-Größe N und verbindet diese Einheiten mit Indikatoren, wenn die Elemente demselben Eintrag angehören. Mit anderen Worten gesagt wird die Einheit in dem Array zwei Werte Speichern, d. h. der erste Wert ist das Element des Eintrags, welcher eine Dokumentenkennung in der DB(w) ist, und der zweite Wert ist entweder der Indikator, der den Wert der nächsten Einheit, die zu demselben Eintrag gehört, angibt oder der NULL-Indikator, falls es keine weiteren den selben Eintrag verknüpfende Elemente gibt. Die Array-Funktion bildet jeden Eintrag von DB auf ein Array einer designierten Länge ab und fügt jene Arrays in einer beliebigen Reihenfolge, d. h. einer zufälligen Reihenfolge, zusammen. Die designierte Länge ist aus Sicherheitsgründen gewöhnlich auf die Größe des Eintrags eingestellt, der eine Maximalanzahl der Elemente aufweist, ohne dass Struktur- oder Statistikinformationen zum Cloud-Server
244 rüberlecken. Bei DB = {DB(w
1),..., DB(wn)}, bei dem
die Maximalgröße des Eintrags in DB ist, weist die Client-Vorrichtung
204 beispielsweise jeden Eintrag DB(w) einem Array von L zu, indem nicht belegte Einheiten mit „Stopf‟”-Zeichenketten aufgefüllt werden, und fügt dann diese Arrays zusammen.
-
Ein beispielhaftes komprimiere-dann-X-Schema ist in der Zusammenstellungsoperation des SSE-Systems 200 implementiert. X ist entweder als eine Linked-List-Funktion oder eine Array-Funktion definiert. Das komprimiere-dann-X-Schema komprimiert jeden Eintrag des Indexes DB in einen komprimierten Eintrag und verarbeitet dann den komprimierten Eintrag mit entweder der Linked-List-Funktion oder der Array-Funktion in der buildSecureIndex. Umgekehrt dekomprimiert die Suchoperation den verarbeiteten Eintrag. Zum Beispiel sei LCA = (Komprimieren, Dekomprimieren) eine beliebige verlustlose Komprimierungscodieroperation, wie etwa eine Arithmetik-Codieroperation oder eine Huffman-Codieroperation, wobei Komprimieren die Binärzeichenkette in die komprimierte Zeichenkette komprimiert und das Dekomprimieren die komprimierte Zeichenkette wieder zu einer unkomprimierten Zeichenkette wiederherstellt. Wie oben eingeführt, ist buildSecureIndex eine Erzeugungsoperation für build-Secure-Index. Für jeden Eintrag von DB fügt die buildSecureIndex alle Elemente in einer Zeichenkette stri = Fi1 ||...||Fic zusammen, unter der Annahme, dass der Eintrag beispielsweise c Elemente aufweist. Die verlustlose KomprimierungsCodieroperation LCA.compress wird auf die Zeichenkette stri angewandt und eine komprimierte Zeichenkette str'i wird erzeugt. Die buildSecureIndex teilt dann str'i in Segmente gleicher Länge str'i = str'i1 ||...|| str'iz auf, so dass str'ij, 1 ≤ j ≤ z, dieselbe Länge wie die der Dokumentenkennung aufweist, d. h. |str'ij| = |Fij|. Nachdem der Eintrag von DB verarbeitet wurde, wendet das komprimiere-dann-X-Schema entweder die Linked-List-Funktion oder die Array-Funktion auf die resultierende komprimierte Zeichenkette str'i an. Bei Anfrage ruft das Suchen die komprimierte Zeichenkette str'i ab, dekomprimiert die komprimierte Zeichenkette str'i zu stn, unter Verwendung von LCA.decompress. Man sieht, dass das komprimiere-dann-X-Schema nicht nur Eingabe- und Ausgabeeffizienz verbessert, sondern dass das komprimiere-dann-X-Schema den Speicherüberhang minimiert. Als ein Ergebnis wurde die Verringerung der Anzahl an Plattenzugriffen beim Abrufen einer Reihe von Einträgen verbessert.
-
Die oben beschriebenen Ausführungsformen sind beispielhaft dargestellt worden und es versteht sich, dass diese Ausführungsformen verschiedenen Modifikationen und Alternativformen unterzogen werden können. Weiterhin versteht sich, dass die Ansprüche nicht durch die offenbarten bestimmten Formen beschränkt werden sollen, sondern stattdessen alle Modifikationen, Äquivalente und Alternativen, die in das Wesen und den Schutzumfang dieser Offenbarung fallen, abdecken sollen.
-
Ausführungsformen innerhalb des Schutzumfangs der Offenbarung können auch nichtvergängliche computerlesbare Speichermedien oder ein maschinenlesbares Medium zum Führen von darauf gespeicherten oder zu speichernden computerausführbaren Anweisungen oder Datenstrukturen beinhalten. Solche nichtvergängliche computerlesbare Speichermedien oder solch ein maschinenlesbares Medium können beliebige verfügbare Medien sein, auf die durch einen Mehrzweck- oder Sonderzweckcomputer zugegriffen werden kann. Als Beispiel und nicht als Beschränkung können derartige nichtvergängliche computerlesbare Speichermedien oder ein maschinenlesbares Medium RAM, ROM, EEPROM, CD-ROM oder andere optische Plattenspeicher-, magnetische Plattenspeicher- oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium, die zum Tragen oder Speichern von gewünschten Programmcodemitteln in der Form von computerausführbaren Anweisungen oder Datenstrukturen verwendet werden können, umfassen. Kombinationen der Obigen sollen ebenfalls in den Schutzumfang der nichtvergänglichen computerlesbaren Speichermedien oder des maschinenlesbaren Mediums fallen.
-
Ausführungsformen können auch in verteilten Rechenumgebungen praktiziert werden, in denen Aufgaben von lokalen und fernen Verarbeitungsvorrichtungen durchgeführt werden, die über ein Kommunikationsnetzwerk (entweder durch festverdrahtete Verbindungsstrecken, drahtlose Verbindungsstrecken oder eine Kombination davon) verlinkt sind.
-
Computerausführbare Anweisungen beinhalten beispielsweise Anweisungen und Daten, die einen Allzweckcomputer, einen Sonderzweckcomputer oder eine Sonderzweckverarbeitungsvorrichtung veranlassen, eine gewisse Funktion oder Gruppe von Funktionen durchzuführen. Computerausführbare Anweisungen beinhalten auch Programmmodule, die von Computern in eigenständigen oder Netzwerkumgebungen ausgeführt werden. Im Allgemeinen beinhalten Programmmodule Routinen, Programme, Objekte, Komponenten und Datenstrukturen usw., die besondere Aufgaben durchführen ober besondere abstrakte Datenarten implementieren. Computerausführbare Anweisungen, verknüpfte Datenstrukturen, und Programmmodule stellen Beispiele für Programcodemittel zum Ausführen von Schritten hier offenbarter Verfahren dar. Die besondere Abfolge solcher ausführbaren Anweisungen oder verknüpften Datenstrukturen stellt Beispiele für entsprechende Handlungen zum Implementieren der in solchen Schritten beschriebenen Funktionen dar.
-
Obgleich das Patent unter Bezugnahme auf verschiedene Ausführungsformen beschrieben worden ist, versteht sich, dass diese Ausführungsformen veranschaulichend sind und dass der Schutzumfang der Offenbarung nicht auf diese beschränkt ist. Viele Variationen, Modifikationen, Ergänzungen und Verbesserungen sind möglich. Allgemeiner gesagt, sind Ausführungsformen gemäß dem Patent im Kontext oder in gewissen Ausführungsformen beschrieben worden. Die Funktionalität kann in verschiedenen Ausführungsformen der Offenbarung unterschiedlich getrennt oder in Blöcken kombiniert oder mit anderer Terminologie beschrieben werden. Diese und andere Varianten, Modifikationen, Ergänzungen und Verbesserungen können in den Schutzumfang der Offenbarung fallen, wie er in den folgenden Ansprüchen definiert ist.