DE69838074T2 - Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten - Google Patents

Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten Download PDF

Info

Publication number
DE69838074T2
DE69838074T2 DE69838074T DE69838074T DE69838074T2 DE 69838074 T2 DE69838074 T2 DE 69838074T2 DE 69838074 T DE69838074 T DE 69838074T DE 69838074 T DE69838074 T DE 69838074T DE 69838074 T2 DE69838074 T2 DE 69838074T2
Authority
DE
Germany
Prior art keywords
compression
input data
range
encryption key
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.)
Expired - Lifetime
Application number
DE69838074T
Other languages
English (en)
Other versions
DE69838074D1 (de
Inventor
Richard E. Portland CRANDALL
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of DE69838074D1 publication Critical patent/DE69838074D1/de
Application granted granted Critical
Publication of DE69838074T2 publication Critical patent/DE69838074T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • 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/30Compression, e.g. Merkle-Damgard construction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft ein Verfahren gemäß dem Oberbegriff von Anspruch 1 für eine Datenverschlüsselung und Datenkomprimierung, eine Vorrichtung gemäß dem Oberbegriff von Anspruch 9 und ein maschinenlesbares Medium gemäß dem Oberbegriff von Anspruch 17. Ein solches System und Verfahren ist aus der EP-0 793 366 bekannt, die sich auf ein Informationsverarbeitungsverfahren bezieht, das ein Komprimieren und Verschlüsseln von Daten umfasst. Insbesondere bezieht sich die vorliegende Erfindung auf das gleichzeitige Verschlüsseln und Komprimieren von Daten.
  • HINTERGRUND
  • Datenverschlüsseln ist eine Sache von Individuen, Geschäften und Regierungen nahezu seit der Entwicklung des geschriebenen Worts gewesen. Neuerdings haben eine Datenspeicherung und eine Datenübertragung über öffentliche Wege, wie das Internet, zu einem zunehmenden Wunsch geführt, Daten speichern und übertragen zu können, ohne dass sie von anderen, die nicht einer gewählten Gruppe zugehören, erkannt werden können. Die sich immer weiter entwickelnde Computertechnik hat jedoch zu modernen Computersystemen geführt, die fähig sind, Kodes und Verschlüsselungsschemata mit zunehmender Geschwindigkeit zu entschlüsseln oder zu "knacken". Somit ist eine sichere Verschlüsselung zunehmend schwierig geworden.
  • Da zusätzlich die Welt das "Informationszeitalter" betreten hat, hat sich die weitere Notwendigkeit der Datenkomprimierung ergeben. Große Mengen von Information werden täglich gespeichert und übertragen. Die Speichervorrichtungen und die Kommunikationspfade haben jedoch mit den Anforderungen der Benutzer an die Speicherung und Übertragung nicht Schritt halten können. Somit werden unter Verwendung verschiedener Komprimiertechniken die Daten in einer kleineren Speichervorrichtung gespeichert oder in einer kürzeren Zeit übertragen als nicht komprimierte Daten.
  • Ein Problem bei den aktuellen Komprimierungs- und Verschlüsselungsverfahren ist jedoch die Geschwindigkeit. Jeder zusätzlich unternommene Verarbeitungsschritt, wie die Komprimierung und/oder Verschlüsselung, erfordert von einem Computersystem zusätzliche Verarbeitungszeit. Somit ist zusätzlich Zeit erforderlich, damit die gewünschte Speicherung oder Datenübertragung stattfinden kann.
  • Somit wird eine bessere Art für das Komprimieren und Verschlüsseln von Daten benötigt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es wird hier ein Verfahren und eine Vorrichtung für das simultane Verschlüsseln und Komprimieren von Daten angegeben. Die vorliegende Erfindung identifiziert einen Verschlüsselungsschlüssel und verwendet den Verschlüsselungsschlüssel, um einen Komprimierungsalgorithmus aus einem Satz von Komprimierungsalgorithmen zu identifizieren. Die vorliegende Erfindung komprimiert dann die Daten gemäß dem einen Komprimierungsalgorithmus.
  • Gemäß einem ersten Aspekt der vorliegenden Erfindung ist ein Verfahren für das gleichzeitig Verschlüsseln und Komprimieren von Eingangsdaten offenbart. Das Verfahren umfasst das Identifizieren eines Verschlüsselungsschlüssels und das Verwenden des Verschlüsselungsschlüssels, um einen Wert für eine Variable zu bestimmen. Dieser Wert identifiziert einen Komprimierungsalgorithmus aus einem Satz von Komprimierungsalgorithmen, der durch einen Satz von Werten für die Variable definiert wird. Das Verfahren ist dadurch gekennzeichnet, dass das Verfahren weiter einen Schritt der Komprimierung aller Zeichen eines ersten Teils der Eingangsdaten gemäß dem einen Komprimierungsalgorithmus umfasst, wobei der Schritt der Komprimierung alle Zeichen des ersten Teils der Eingangsdaten mit dem einen Komprimierungsalgorithmus, wie er durch den Verschlüsselungsschlüssel identifiziert ist, komprimiert, und gleichzeitig alle Zeichen des ersten Teils der Eingangsdaten ohne die Verwendung eines getrennten Verschlüsselungsalgorithmus verschlüsselt.
  • Gemäß einem zweiten Aspekt der vorliegenden Erfindung ist eine Vorrichtung für das gleichzeitige Verschlüsseln und Komprimieren von Eingangsdaten offenbart. Diese Vorrichtung umfasst einen Komprimierungssatz, der eine Vielzahl von Komprimierungsalgorithmen einschließt, die durch einen Satz von Werten für eine Variable in einem Komprimierungsalgorithmus definiert werden, und sie ist dadurch gekennzeichnet, dass die Vorrichtung weiter einen Comcryptor umfasst. Der Comcryptor umfasst Mittel, um einen Komprimierungsalgorithmus aus der Vielzahl von Komprimierungsalgorithmen basierend zum Teil auf der Verwendung eines Verschlüsselungsschlüssels, um den Wert der Variable zu bestimmen, zu identifizieren, und um alle Zeichen eines ersten Teils der Eingangsdaten gemäß dem einen Komprimierungsalgorithmus zu komprimieren. Das Komprimieren aller Zeichen des ersten Teils der Eingangsdaten mit dem einen Komprimierungsalgorithmus, wie er durch den Verschlüsselungsschlüssel identifiziert wurde, verschlüsselt gleichzeitig alle Zeichen des ersten Teils der Eingangsdaten ohne die Verwendung eines getrennten Verschlüsselungsalgorithmus.
  • Gemäß einem dritten Aspekt der vorliegenden Erfindung ist ein maschinenlesbares Medium, auf dem eine Vielzahl von Anweisungen gespeichert sind, offenbart. Die Vielzahl von Anweisungen sind ausgelegt, um durch einen Prozessor ausgeführt zu werden, um eine Funktion zu implementieren, um einen Verschlüsselungsschlüssel zu identifizieren und den Verschlüsselungsschlüssel zu verwenden, um einen Wert für eine Variable zu bestimmen, wobei der Wert einen Komprimierungsalgorithmus aus einem Satz von Komprimierungsalgorithmen, die durch einen Satz der Werte der Variable definiert sind, identifiziert. Das maschinenlesbare Medium ist dadurch gekennzeichnet, dass die Funktion weiter einen Schritt der Komprimierung aller Zeichen eines ersten Teils der Eingangsdaten gemäß dem einen Komprimierungsalgorithmus umfasst. Der Schritt der Komprimierung komprimiert alle die Zeichen des ersten Teils der Eingangsdaten mit einem Komprimierungsalgorithmus, wie er durch den Verschlüsselungsschlüssel identifiziert ist, und verschlüsselt gleichzeitig alle Zeichen des ersten Teils der Eingangsdaten ohne die Verwendung eines getrennten Verschlüsselungsalgorithmus.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung ist beispielhaft und nicht eingrenzend in den Figuren der begleitenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen.
  • 1 ist ein Blockdiagramm, das eine Vorrichtung für die gleichzeitige Datenverschlüsselung und Komprimierung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 2 ist ein Flussdiagramm, das die Schritte zeigt, denen bei der gleichzeitigen Verschlüsselung und Komprimierung von Daten gemäß einer Ausführungsform der vorliegenden Erfindung gefolgt wird;
  • 3 ist ein Flussdiagramm, das die Schritte des Auswählens eines Move-forward-Komprimierungsalgorithmus und der Komprimierung von Daten gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
  • 4a, 4b, 4c, 4d, 4e und 4f zeigen ein Beispiel des Komprimierungsverfahrens gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5a, 5b, 5c, 5d, 5e und 5f zeigen ein anderes Beispiel des Komprimierungsverfahrens gemäß einer Ausführungsform der vorliegenden Erfindung; und
  • 6 zeigt ein Hardwaresystem oder eine Maschine, wie sie mit einer Ausführungsform der vorliegenden Erfindung verwendet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden verschiedene Aspekte der vorliegenden Erfindung beschrieben. Fachleute werden jedoch verstehen, dass die vorliegende Erfindung mit nur einigen oder allen Aspekten der vorliegenden Erfindung in die Praxis umgesetzt werden kann. Für die Zwecke der Erläuterung sind spezifischen Zahlen, Materialien und Konfigurationen angegeben, um ein tiefes Verständnis der vorliegenden Erfindung zu gewähren. Fachleute werden jedoch auch erkennen, dass die vorliegende Erfindung ohne diese spezifischen Details in die Praxis umgesetzt werden kann.
  • Einige Teile der folgenden detaillierten Beschreibungen sind anhand von Algorithmen und symbolischen Darstellungen der Operationen mit Datenbits in einem Computerspeicher angegeben. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten auf den Gebiet der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit an andere Fachleute am effektivsten zu befördern. Ein Algorithmus wird hier und allgemein als eine selbstkonsistente Sequenz von Schritten, die zu einem gewünschten Ergebnis führt, begriffen. Die Schritte sind solche, die physikalische Manipulationen von physikalischen Größen erfordern. Gewöhnlicherweise aber nicht notwendigerweise nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und anderswie manipuliert werden können. Es hat sich zu Zeiten als passend erwiesen, im Prinzip aus Gründen einer gemeinsamen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Ausdrücke, Zahlen oder dergleichen zu bezeichnen. Man sollte jedoch im Gedächtnis behalten, dass alle diese und ähnliche Ausdrücke mit den passenden physikalischen Größen verknüpft werden müssen und bloß praktische Bezeichnungen sind, die auf diese Größen angewandt werden. Wenn es nicht anders angegeben ist, kann man aus den folgenden Diskussionen erkennen, dass in der gesamten Erfindung sich Diskussionen, die Ausdrücke wie "Verarbeiten" oder "Berechnen" oder "Ausrechnen" oder "Bestimmen" oder "Anzeigen" oder dergleichen verwenden, auf die Aktionen und Verfahren eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, die Daten manipuliert und transformiert, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt sind, in andere Daten, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern oder anderer solcher Informationsspeicher, Übertragungs- oder Anzeigevorrichtungen dargestellt sind.
  • 1 ist ein Blockdiagramm, das eine Vorrichtung für die gleichzeitige Datenverschlüsselung und Komprimierung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Ein "Comcryptor" 100, ein Komprimierungssatz 105 und ein optionaler Permutationssatz 110 sind dargestellt. Der Comcryptor 100 führt eine gleichzeitige Komprimierung und Verschlüsselung von Eingangsquellendaten 115 auf der Basis eines Eingangsschlüssels 120 aus. Das Ausgangssignal des Comcryptors 100 ist komprimiert und verschlüsselt und wird hier als "komprimierte und verschlüsselte (komkrypte)" Daten 125 bezeichnet.
  • Der Komprimierungssatz 105 umfasst mehrere Komprimierungsalgorithmen für eine Verwendung durch den Comcryptor 100. Gemäß einer Ausführungsform sind eine beträchtliche Anzahl von Komprimierungsalgorithmen als Komprimierungssatz 105 verfügbar. Es kann im Grunde jede Anzahl von Komprimierungsalgorithmen als Komprimierungssatz 105 verfügbar sein, wobei jedoch typischerweise mindestens zwei Komprimierungsalgorithmen als Komprimierungssatz 105 verfügbar sind. Es sollte angemerkt werden, dass im allgemeinen die Komprimierung und Verschlüsselung der vorliegenden Erfindung sicherer wird (das heißt, die verschlüsselten Daten sind ohne den Schlüssel schwieriger zu dekodieren), wenn die Zahl der Komprimierungsalgorithmen, die als Komprimierungssatz 105 verfügbar sind, zunimmt.
  • Welche von den mehreren Komprimierungsalgorithmen vom Comcryptor 100 verwendet wird, hängt vom Schlüssel 120 ab. Gemäß einer Ausführungsform der vorliegenden Erfindung sind mindestens einige der Komprimierungsalgorithmen, die für den Comcryptor 100 im Komprimierungssatz 105 erhältlich sind, variable Bitstromkomprimierer. Ein variabler Bitstromkommprimierer liefert eine Ausgabe, bei der verschiedene Eingangszeichen durch verschiedene Anzahlen von Bits dargestellt werden. Somit werden zwei unterschiedliche Zeichen, die komprimiert werden, unter Verwendung einer verschiedenen Anzahl von Bits dargestellt, wie beispielsweise "0", um das Zeichen "e" darzustellen und "1011011", um das Zeichen "z" darzustellen.
  • Ein Permutationssatz 110 umfasst mehrere Permutationsalgorithmen für die Verwendung durch den Comcryptor 100. Wie unten detaillierter diskutiert werden wird, ist der Permutationssatz 110 und die Verwendung der Permutation durch den Comcryptor 100 optional. Gemäß einer Ausführungsform sind eine substantielle Anzahl von Permutationsalgorithmen als Permutationssatz 110 verfügbar. Praktisch jede Zahl von Permutationsalgorithmen kann als Permutationssatz 110 verfügbar sein. Welcher der mehreren Permutationsalgorithmen vom Comcryptor 100 verwendet wird, hängt vom Schlüssel 120 ab. Jede aus einer großen Vielzahl von konventionellen Permutationsalgorithmen kann als Permutationssatz 110 verfügbar sein, wie solche, die auf der Luby-Rackoff-Permutation basieren. Für eine weitere Diskussion der Luby-Rackoff-Permutation wird der Leser verwiesen auf "How to construct pseudorandom permutations from pseudorandom functions", M. Luby & C. Rackoff, SIAM Journal an Computing, V. 17, Nr. 2 (1988), Seiten 373 bis 386.
  • Der Schlüssel 120 kann ein Mehrbitschlüssel oder ein Passwort sein. Der Schlüssel 120 kann in numerischer, alphabetischer oder symbolischer Form oder als eine beliebige Kombination daraus vorliegen. Alphanumerische Zeichen und Symbole werden in eine Serie von Bits in irgend einer großen Vielzahl konventioneller Arten, wie unter Verwendung einer ASCII-Kodierung, umgewandelt. Somit kann ein Benutzer ein Wort, eine Zahl, einen Satz etc. wählen, die er oder sie sich leicht als Schlüssel merken kann, statt dass die Verwendung einer längeren Primzahl oder einem ähnlich umständlichen Schlüssel notwendig ist.
  • Die Quelldaten 115 sind die Eingangsdaten, die durch den Comcryptor 100 komprimiert und verschlüsselt werden. Die Quelldaten 115 können aus jedem Typ von Daten bestehen, die reine Textdaten, Daten, die durch einen anderen Komprimierungs- oder Verschlüsselungsalgorithmus komprimiert oder verschlüsselt sind, Bilddaten etc. einschließen. In der dargestellten Ausführungsform komprimiert und verschlüsselt der Comcryptor 100 Quelldaten 115 auf Zeichen für Zeichen. In einer alternativen Ausführungsform komprimier und verschlüsselt der Comcryptor 100 Quelldaten 115 auf einer Mehrzeichenbasis.
  • 2 ist ein Flussdiagramm, das die Schritte darstellt, denen beim gleichzeitigen Verschlüsseln und Komprimieren von Daten gemäß einer Ausführungsform der vorliegenden Erfindung gefolgt wird. Es wird im Schritt 205 zunächst ein Stück Daten empfangen. In der dargestellten Ausführungsform ist jedes Stück von Daten ein Mehrzeichenblock von Daten, wie ein Zweizeichenblock oder ein Dreizeichenblock. In alternativen Ausführungsformen kann jedoch jedes Stück von Daten größer sein, wie ein Satz, ein Absatz oder eine andere Gruppierung von Zeichen, oder einfach jeder Mehrbitteil (beispielsweise 8-Bit oder 16-Bit) von Eingangsdaten oder auch kleinre, wie ein einzelnes Zeichen.
  • Nach dem Empfang der Daten identifiziert der Comcryptor 100 auf der Basis des Schlüssels einen speziellen Komprimierungsalgorithmus, Schritt 210. Der Comcryptor 100 komprimiert die Daten unter Verwendung dieses speziellen Komprimierungsalgorithmus und wahlweise permutiert er die Daten, Schritt 215. Wenn eine Permutation ausgeführt wird, so wird der Schlüssel 120 als ein Index in mehrere Permutationsalgorithmen verwendet, um somit einen der Algorithmen auszuwählen. Der Comcryptor 100 kann einzelne Bits des Schlüssels 120 verwenden, oder er kann alternativ mehrere Bits des Schlüssels 120 verwenden, um einen speziellen Permutationsalgorithmus zu identifizieren, analog zur Auswahl eines speziellen Komprimierungsalgorithmus, wie das unten detaillierter diskutiert werden wird. Die Auswahl eines Komprimierungsalgorithmus und optional eines Permutationsalgorithmus auf der Basis des Schlüssels 120 ist der Verschlüsselungsteil der vorliegenden Erfindung. Der Comcryptor 100 gibt dann die komprimierten Daten aus, Schritt 220. Somit kann man sehen, dass unter Verwendung des Schlüssels, um einen speziellen zu verwendenden Komprimierungsalgorithmus zu identifizieren, die Daten gleichzeitig sowohl komprimiert als auch verschlüsselt wurden. Somit sind die komprimierten Daten, die im Schritt 220 ausgegeben werden, die komprimierten und verschlüsselten Daten.
  • Somit werden, wie man das in der Darstellung der 2 sieht, die Quelldaten unter Verwendung eines einzigen kombinierten Verschlüsselungs- und Komprimierverfahrens in einem einzigen Schritt sowohl verschlüsselt als auch komprimiert. Durch das gleichzeitige Verschlüsseln und Komprimieren kann die vorliegende Erfindung die Daten schneller komprimieren und verschlüsseln, als dies getan werden kann, wenn man die Verschlüsselung und Komprimierung getrennt ausführt. Weiterhin liefert, wenn man die große Zahl von Komprimierungsalgorithmen betrachtet, die als Komprimierungssatz 105 verfügbar ist, aus denen der Comcryptor 100 wählen kann, und die Möglichkeit den Komprimierungsalgorithmus für jedes Stück von Daten zu ändern, der Comcryptor 100 ein sicheres Verschlüsselungsverfahren. Somit kann die vorliegende Erfindung Daten komprimieren und eine sichere Verschlüsselung in kürzerer Zeit liefern.
  • Die Entkomprimierung und Entschlüsselung der komprimierten und verschlüsselten Daten wird ausgeführt, indem die Umkehr der Schritte ausgeführt wird, die beim Komprimieren und Verschlüsseln der Daten verwendet wurden. Mit dem gegebenen Schlüssel und den komprimierten und verschlüsselten Daten kann eine Entkomprimier-Entschlüsselungs-Vorrichtung den Komprimierungsalgorithmus identifizieren, der verwendet wurde, um jedes Stück der Daten zu komprimieren, und er kann so die Daten unter Verwendung des passenden Dekomprimierungsalgorithmus entkomprimieren und entschlüsseln.
  • In der dargestellten Ausführungsform wird jedes Bit des Schlüssels 120 verwendet, um einen Komprimierungsalgorithmus für ein spezielles Zeichen der Daten zu identifizieren. Gemäß einer alternativen Ausführungsform der vorliegenden Erfindung wird ein einzelnes Bit verwendet, um einen Komprimierungsalgorithmus für mehrere Zeichen der Daten zu identifizieren. Beispielsweise könnte der Schlüssel 120 einen speziellen Komprimierungsalgorithmus identifizieren, der für einen gesamten Block von Daten zu verwenden ist, beispielsweise einen Absatz eines Textdokuments oder ein ganzes Textdokument.
  • Gemäß einer Ausführungsform der Erfindung kann eine zusätzliche Sicherheit durch einen weiteren Verschlüsselungsschlüssel 120 oder komprimierte und verschlüsselte Daten 125 erreicht werden. Beispielsweise können der Schlüssel 120 oder komprimierte und verschlüsselte Daten 125 verschlüsselt werden, bevor sie zur Entschlüsselungs- und Entkomprimierungspartei übertragen werden, unter Verwendung eines Mechanismus aus eine Vielzahl konventioneller Verschlüsselungsmechanismen. Es ist jedoch zu beachten, dass obwohl eine solche zusätzliche Verschlüsselung die Sicherheit der Datenübertragung erhöht, sie jedoch auch die Zeit erhöht, die erforderlich ist, um die Daten zu komprimieren und zu verschlüsseln und sie dann zu verschlüsseln, als auch um die Daten beim Empfang zu entschlüsseln und dann zu entkomprimieren und zu entschlüsseln. Beispiele solcher zusätzlichen Verschlüsselungsverfahren umfassen solche, die man in den US-Patenten 5,159,632 , 5,271,061 und 5,463,690 finden kann, als auch andere Verfahren, wie die wohlbekannten RSA-Algorithmen.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung umfasst der Komprimierungssatz 105 der 1 mehrere Variationen eines "Move-forward"-Komprimierungsalgorithmus. Der Move-forward-Komprimierungsalgorithmus ist eine Modifikation des wohl bekannten BSTW-Komprimierungsalgorithmus. Bei einer Standard-BSTW-Komprimierung wird ein Stapel von Zeichen, der den Eingangsdaten entspricht, vorgehalten, wobei immer ein Zeichen zur Front des Stapels bewegt wird, wenn es in den Eingangsdaten erscheint. Wenn man den Zustand des Stapels am Ende des Komprimierungsverfahrens hat, so kann ein Dekomprimierer die ursprünglichen Daten wieder berechnen. Typischerweise umfasst der Stapel in einer BSTW-Komprimierung 256 Zeichen, die in einer ASCII-Kodierung verwendet werden. Für eine weitere Diskussion der BSTW-Komprimierung wird der Leser auf Lelewer, D. A., und Hirschberg, D. S., ACM Computing Surveys, 3, 19, September 1987, Seiten 261–296 verwiesen.
  • Bei der Move-forward-Komprimierung wird wie bei der BSTW-Komprimierung ein Stapel von Zeichen, der den Eingangsdaten entspricht, vorgehalten, wobei aber jedes Mal, wenn ein Zeichen in den Eingangsdaten erscheint, es im Stapel an eine Position, die höher im Stapel ist als seine aktuelle Position, aber nicht notwendigerweise an die Spitze des Stapels bewegt. Gemäß einer Ausführungsform der vorliegenden Erfindung umfasst der Stapel 256 Zeichen. Typische Werte der Größe des Stapels reichen von 256 bis 65536 Elementen, wobei jedoch alternative Ausführungsformen größere oder kleinere Stapelgrößen verwenden können. Gemäß einer Ausführungsform der vorliegenden Erfindung ist jeder Eintrag oder jedes Element im Stapel ein Mehrzeichenblock von Daten, wie "ed", "ing", "the", etc. Gemäß einer anderen Ausführungsform der vorliegenden Erfindung ist jeder Eintrag oder jedes Element im Stapel ein Einzeichenblock von Daten, wie "a", "b", "c" etc.
  • Die Gleichung für das Bestimmen einer neuen Position im Stapel für ein Zeichen unter Verwendung der Move-forward-Komprimierung ist: x = y – z·ywobei die Spitze des Stapels die Position 0 ist, x die neue Position im Stapel für das Zeichen ist, y die aktuelle Position des Zeichens im Stapel ist, und z eine Variable ist, die von null bis eins reicht, die anzeigt, wie weit nach vorn das Zeichen zu bewegen ist. Man kann aus dieser Gleichung sehen, dass je größer der Wert von z ist, desto weiter vorwärts das Zeichen bewegt wird. Wie unten detaillierter diskutiert werden wird, kann der Wert von z gemäß den Bits des Schlüssels dynamisch zugewiesen werden. Es sollte angemerkt werden, dass in Abhängigkeit von den Werten von y und z der Wert von x ein nicht ganzzahliger Wert sein kann. Wenn x ein nicht ganzzahliger Wert ist, so wird der Wert von x gemäß einer Regel aus einer Vielzahl von Rundungsregeln gerundet. Beispielsweise könnte die ganzzahlige Basis von x verwendet werden, indem man den ganzzahligen Teil nimmt und den Dezimalteil fallen lässt. In einer Implementierung wird der Wert von x aufgerundet, wenn der Dezimalteil von x größer als ein Schwellwert von 0,5 ist, und ansonsten abgerundet. Alternative Implementierungen können jedoch einen anderen Schwellwert verwenden, der zwischen null und eins liegt.
  • 3 ist ein Flussdiagramm, das die Schritte des Auswählens eines Move-forward-Komprimierungsalgorithmus und des Komprimierens von Daten gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • Der Comcryptor 100 identifiziert zuerst einen speziellen Mehrzeichenblock von Daten, Schritt 305. Der Comcryptor permutiert dann optional den Mehrzeichenblock von Daten, Schritt 307. Dann wird, wenn diese Option gewählt wird, die Manipulation des Stapels unter Verwendung permutierter Mehrzeichenblöcke von Daten statt der ursprünglichen Quelldaten ausgeführt.
  • Der Comcryptor 100 prüft dann, ob sich der identifizierte Mehrzeichenblock im Stapel befindet, Schritt 310. Wenn sich der Mehrzeichenblock nicht im Stapel befindet, dann werden die eigentlichen Zeichen des Blocks ausgegeben, Schritt 315. Wenn sich jedoch der identifizierte Mehrzeichenblock im Stapel befindet, dann wird der Ort des Blocks im Stapel identifiziert, Schritt 320, und der Ort wird als die komprimierte Darstellung des Mehrzeichenblocks von Daten ausgegeben, Schritt 325.
  • In der dargestellten Ausführungsform wird ein Kodierer auf Entropiebasis verwendet, um die ausgegebenen Stapelorte und die eigentlichen Zeichen des Blocks, wenn sich der Mehrzeichenblock nicht im Stapel befindet, zu kodieren. Der Kodierer auf Entropiebasis liefert die variable Bitstromausgabe, wobei niedrigere numerische Stapelorte weniger Bits erfordern. Beispielsweise erfordert der Wert "0" in den ausgegebenen Stapelorten weniger Bits als der Wert "255" in den ausgegebenen Stapelorten. Jedes Schema aus einer großen Vielzahl von konventionellen Kodierschemata auf Entropiebasis kann verwendet werden, wie beispielsweise die wohl bekannte Huffmann Kodierung.
  • Der Comcryptor 100 identifiziert dann das Schlüsselbit, das dem identifizierten Mehrzeichenblock entspricht, Schritt 330, und prüft, ob das Schlüsselbit null ist, Schritt 335. Wenn das Schlüsselbit null ist, so bewegt der Comcryptor 100 dann den Mehrzeichenblock ein Viertel des Weges im Stapel nach oben, Schritt 340. Wenn das Schlüsselbit jedoch nicht null ist, dann wird der Mehrzeichenblock die halbe Strecke im Stapel nach oben bewegt, Schritt 345. Das Verfahren wiederholt dies dann mit dem nächsten Mehrzeichenblock, Schritt 305.
  • In der dargestellten Ausführungsform entsprechen verschiedene Mehrzeichenblöcke von Quelldaten 115 verschiedene Bits des Schlüssels 120. Typischerweise umfassen die Quelldaten 115 viele Mehrzeichenblöcke von Daten, wie ein Bild oder ein Textdokument. Die Quelldaten 115 umfassen im allgemeinen mehr Mehrzeichenblöcke als es Bits im Schlüssel 120 gibt, so dass ein einziges Bit des Schlüssels 120 mehreren Blöcken von Quelldaten 115 entspricht. Der erste Mehrzeichenblock der Daten 115 entspricht einem vorbestimmten Bit des Schlüssels 120, wie dem ersten Bit. Der zweite Mehrzeichenblock von Daten 115 entspricht dann dem nächsten Bit des Schlüssels 120, das das zweite Bit ist, wenn das vorbestimmte Bit das erste Bit ist. Diese Sequenz setzt sich fort, bis zum Ende des Schlüssels 120, wobei sich an diesem Punkt das Verfahren zum Beginn des Schlüssels 120 herumwendet. Wenn beispielsweise der Schlüssel 120 ein 128-Bit-Schlüssel ist, dann entspricht der 129-te Mehrzeichenblock der Quelldaten 115 dem ersten Bit des Schlüssels 120.
  • In einer alternativen Ausführungsform der vorliegenden Erfindung werden mehrere Bits des Schlüssels 120 verwendet, um den Komprimierungsalgorithmus für einen speziellen Mehrzeichenblock zu identifizieren, statt dass nur ein einzelnes Bit verwendet wird. Durch die Verwendung mehrerer Bits nimmt die Anzahl von Komprimierungsalgorithmen, die verwendet werden könnten, um einen speziellen Mehrzeichenblock zu komprimieren, zu. Wenn beispielsweise ein Vier-Bit-Teil des Schlüssels 120 verwendet wird, um einen speziellen Komprimierungsalgorithmus zu identifizieren, würde es 24 oder 16 verschiedene Komprimierungsalgorithmen geben, die für jeden der Mehrzeichenblöcke verwendet werden könnten. Beispiele dieser verschiedenen Komprimieralgorithmen umfassen Variationen des Move-forward-Algorithmus, wie Move forward um eine Hälfte, ein Drittel, ein Viertel, ein Fünftel, ein Sechstel etc.
  • Es sollte angemerkt werden, dass wenn mehrere Bits des Schlüssels 120 verwendet werden, um den Komprimierungsalgorithmus für einen speziellen Mehrzeichenblock zu identifizieren, sich dann diese Sätze von mehreren Bits überlappen können. Beispielsweise könnten die Bits 1, 2, 3 und 4 verwendet werden, um den Komprimierungsalgorithmus für den ersten Mehrzeichenblock zu identifizieren, die Bits 2, 3, 4 und 5 könnten verwendet werden, um den Komprimierungsalgorithmus für den zweiten Mehrzeichenblock zu identifizieren, etc. Alternativ können die Sätze der mehreren Bits nicht überlappend sein. Beispielsweise könnten die Bits 1, 2, 3 und 4 verwendet werden, um den Komprimierungsalgorithmus für den ersten Mehrzeichenblock zu identifizieren, die Bits 5, 6, 7 und 8 könnten verwendet werden, um den Komprimierungsalgorithmus für den zweiten Mehrzeichenblock zu identifizieren, etc.
  • In einer anderen Ausführungsform der vorliegenden Erfindung tritt eine weitere Permutation der Ausgabedaten im Schritt 325 auf. Beispielsweise können die ausgegebenen Bytes vom Schritt 325 mit Bytes vom Schlüssel und Bytes vom identifizierten Ort oder beiden in Form einer Exklusiv-Oder-Verknüpfung verknüpft werden.
  • In den unten stehenden Beispielen der 4a4f und 5a5f ist das Komprimierungsverfahren unter Verwendung eines Stapels einzelner Zeichen statt von Mehrzeichenblöcken dargestellt. Es ist zu beachten, dass dies nur aus Gründen einer einfacheren Erläuterung folgt, und dass das Verfahren analog auf Mehrzeichenblöcke von Daten angewandt werden kann.
  • Die 4a, 4b, 4c, 4d und 4f zeigen ein Beispiel des Komprimierungsverfahrens gemäß einer Ausführungsform der vorliegenden Erfindung. Im dargestellten Beispiel ist der Quelldatenstrom "FACED" und der Schlüssel wird durch den Bitstrom "0011" dargestellt. Für eine leichtere Erläuterung sind die Stapel 400, 410, 420, 430, 440 und 450 der 4a, 4b, 4c, 4d, 4e und 4f jeweils auf sieben Zeichen begrenzt worden. Es ist zu beachten, dass diese Begrenzung nur aus Gründen einer leichteren Erläuterung erfolgt, und dass der Stapel eine beliebige Anzahl von Zeichen enthalten kann.
  • Wie dargestellt ist, ist das erste Zeichen des Quelldatenstroms "F". Das Zeichen "F" weist einen Ort von 5 im Stapel 400 auf, so dass der Comcryptor 100 den Wert 5 ausgibt. Das erste Zeichen im Quelldatenstrom entspricht dem ersten Bit des Schlüssels, das eine "0" ist. Wenn man der obigen Ausführungsform der 3 folgt, so zeigt das Schlüsselbit "0" an, dass das Zeichen ein Viertel des Weges im Stapel nach oben zu bewegen ist. Ein Viertel von 5 ist 1,25, was auf einen ganzzahligen Wert von 1 gerundet wird. So wird das Zeichen "F" um 1 Ort im Stapel auf die Position 4 nach oben bewegt, wie das im Stapel 410 der 4b dargestellt ist.
  • Das nächste Zeichen des Quelldatenstroms ist "A". Das Zeichen "A" weist einen Ort von 0 im Stapel 410 auf, so dass der Comcryptor 100 den Wert 0 ausgibt. Das zweite Zeichen im Quelldatenstrom entspricht dem zweiten Bit des Schlüssels, das eine "0" ist. Das Schlüsselbit, das eine "0" ist, zeigt an, dass das Zeichen ein Viertel des Weges nach oben im Speicher zu bewegen ist. Ein Viertel von 0 ist 0, so dass das Zeichen "A" 0 Orte im Stapel zur Position 0 bewegt wird, wie das im Stapel 420 der 4c dargestellt ist.
  • Das nächste Zeichen des Quelldatenstroms ist "C". Das "C" weist einen Ort von 2 im Stapel 420 auf, so dass der Comcryptor 100 den Wert 2 ausgibt. Das dritte Zeichen im Quelldatenstrom entspricht dem dritten Bit des Schlüssels, das eine "1" ist. Wenn man der obigen Ausführungsform der 3 folgt, so zeigt das Schlüsselbit mit dem Wert "1" an, dass das Zeichen die Hälfte des Weges nach oben im Stapel zu bewegen ist. Eine Hälfte von 2 ist 1. Somit wird das Zeichen "C" einen Ort im Stapel an die Position 1 nach oben bewegt, wie das im Stapel 430 der 4d dargestellt ist.
  • Das nächste Zeichen des Quelldatenstroms ist "E". Das "E" weist einen Ort von 5 im Stapel 430 auf, so dass der Comcryptor 100 den Wert 5 ausgibt. Das vierte Zeichen im Quelldatenstrom entspricht dem vierten Bit des Schlüssels, das eine "1" ist, was anzeigt, dass das Zeichen die Hälfte des Weges im Stapel nach oben zu bewegen ist. Eine Hälfte von 5 ist 2,5, was auf einen ganzzahligen Wert von 3 gerundet wird, so dass das Zeichen "E" 3 Orte im Stapel an die Position 2 nach oben bewegt wird, wie das im Stapel 440 der 4e angegeben ist.
  • Das letzte Zeichen des Quelldatenstroms ist "D". Das "D" hat einen Ort von 4 im Stapel 440, so dass der Comcryptor 100 den Wert 4 ausgibt. Da der Schlüssel nur vier Bits hat, so geht das fünfte Zeichen im Quelldatenstrom um den Schlüssel herum und entspricht dem ersten Bit des Schlüssels, das eine "0" ist. Die "0" zeigt an, dass das Zeichen ein Viertel des Weges im Stapel nach oben zu bewegen ist. Ein Viertel von 4 ist 1, so dass das Zeichen "D" einen Ort im Stapel zur Position 3 bewegt wird, wie das im Stapel 450 der 4f dargestellt ist.
  • Wie oben diskutiert wurde, werden die ausgegebenen Stapelorte (5, 0, 2, 5 und 4) auch unter Verwendung eines Kodierers auf Entropiebasis kodiert, um einen variablen Bitstrom komprimierter und verschlüsselter Daten auszugeben.
  • Die 5a, 5b, 5c, 5d und 5f zeigen ein anderes Beispiel des Komprimierungsverfahrens gemäß einer Ausführungsform der vorliegenden Erfindung. Im dargestellten Beispiel ist der Quelldatenstrom "FACED" und der Schlüssel wird durch den Bitstrom "1100" dargestellt. Für eine leichtere Erläuterung sind die Stapel 500, 510, 520, 530, 540 und 550 der 5a, 5b, 5c, 5d, 5e und 5f jeweils auf sieben Zeichen begrenzt worden. Es ist zu beachten, dass diese Begrenzung nur aus Gründen einer leichteren Erläuterung erfolgt, und dass der Stapel eine beliebige Anzahl von Zeichen enthalten kann.
  • Wie dargestellt ist, ist das erste Zeichen des Quelldatenstroms "F". Das Zeichen "F" weist einen Ort von 5 im Stapel 500 auf, so dass der Comcryptor 100 den Wert 5 ausgibt. Das erste Zeichen im Quelldatenstrom entspricht dem ersten Bit des Schlüssels, das eine "1" ist. Wenn man der obigen Ausführungsform der 3 folgt, so zeigt das Schlüsselbit "1" an, dass das Zeichen eine Hälfte des Weges im Stapel nach oben zu bewegen ist. Eine Hälfte von 5 ist 2,5, was auf einen ganzzahligen Wert von 3 gerundet wird. So wird das Zeichen "F" um 3 Orte im Stapel auf die Position 2 nach oben bewegt, wie das im Stapel 510 der 5b dargestellt ist.
  • Das nächste Zeichen des Quelldatenstroms ist "A". Das Zeichen "A" weist einen Ort von 0 im Stapel 510 auf, so dass der Comcryptor 100 den Wert 0 ausgibt. Das zweite Zeichen im Quelldatenstrom entspricht dem zweiten Bit des Schlüssels, das eine "1" ist. Das Schlüsselbit, das eine "0" ist, zeigt an, dass das Zeichen eine Hälfte des Weges nach oben im Speicher zu bewegen ist. Eine Hälfte von 0 ist 0, so dass das Zeichen "A" 0 Orte im Stapel zur Position 0 bewegt wird, wie das im Stapel 520 der 5c dargestellt ist.
  • Das nächste Zeichen des Quelldatenstroms ist "C". Das "C" weist einen Ort von 3 im Stapel 520 auf, so dass der Comcryptor 100 den Wert 3 ausgibt. Das dritte Zeichen im Quelldatenstrom entspricht dem dritten Bit des Schlüssels, das eine "0" ist. Wenn man der obigen Ausführungsform der 3 folgt, so zeigt das Schlüsselbit mit dem Wert "0" an, dass das Zeichen ein Viertel des Weges nach oben im Stapel zu bewegen ist. Ein Viertel von 3 ist 0,75, was auf einen ganzzahligen Wert von 1 gerundet wird. Somit wird das Zeichen "C" einen Ort im Stapel an die Position 1 nach oben bewegt, wie das im Stapel 530 der 5d dargestellt ist.
  • Das nächste Zeichen des Quelldatenstroms ist "E". Das "E" weist einen Ort von 5 im Stapel 530 auf, so dass der Comcryptor 100 den Wert 5 ausgibt. Das vierte Zeichen im Quelldatenstrom entspricht dem vierten Bit des Schlüssels, das eine "0" ist, was anzeigt, dass das Zeichen ein Viertel des Weges im Stapel nach oben zu bewegen ist. Ein Viertel von 5 ist 1,25, was auf einen ganzzahligen Wert von 1 gerundet wird, so dass das Zeichen "E" 1 Ort im Stapel an die Position 4 nach oben bewegt wird, wie das im Stapel 540 der 5e angegeben ist.
  • Das letzte Zeichen des Quelldatenstroms ist "D". Das "D" hat einen Ort von 5 im Stapel 540, so dass der Comcryptor 100 den Wert 5 ausgibt. Da der Schlüssel nur vier Bits hat, so geht das fünfte Zeichen im Quelldatenstrom um den Schlüssel herum und entspricht dem ersten Bit des Schlüssels, das eine "1" ist. Die "1" zeigt an, dass das Zeichen eine Hälfte des Weges im Stapel nach oben zu bewegen ist. Eine Hälfte von 5 ist 2, 5, was auf einen ganzzahligen Wert von 3 gerundet wird, so dass das Zeichen "D" 3 Orte im Stapel zur Position 2 bewegt wird, wie das im Stapel 550 der 5f dargestellt ist.
  • Wie oben diskutiert wurde, werden die ausgegebenen Stapelorte (5, 0, 3, 5 und 5) auch unter Verwendung eines Kodierers auf Entropiebasis kodiert, um einen variablen Bitstrom komprimierter und verschlüsselter Daten auszugeben.
  • Somit verwendet der Comcryptor 100 der 1, wie das in den 3, 4a bis 4f und 5a bis 5f dargestellt ist, die Bits des Schlüssels 120, um einen speziellen Komprimierungsalgorithmus aus dem Komprimierungssatz 105 für die Zeichen der Quelldaten 115 zu identifizieren. In den Beispielen der 4a bis 4f und 5a bis 5f sind im Komprimierungssatz 105 nur zwei Komprimierungsalgorithmen verfügbar. Diese Beispiele wurden auf zwei Komprimierungsalgorithmen begrenzt, um die Erläuterung zu erleichtern; alternative Ausführungsformen der vorliegenden Erfindung umfassen wesentlich größere Zahlen von Komprimierungsalgorithmen.
  • Weiterhin werden in der Ausführungsform der 3, 4a bis 4f und 5a bis 5f die Werte der Bits des Schlüssels 120 verwendet, um den Wert einer Variablen in einem Move-forward-Komprimierungsalgorithmus zu identifizieren. In einer alternativen Ausführungsform wird der gesamte Schlüssel verwendet, um einen speziellen Algorithmus aus dem Komprimierungssatz 105 zu identifizieren, der für alle Quelldaten 115 zu verwenden ist. Somit würde ein m-Bit-Schlüssel einen von 2m Komprimierungsalgorithmen aus dem Komprimierungssatz 105 eindeutig identifizieren.
  • 6 zeigt ein Hardwaresystem oder eine Maschine, wie sie mit einer Ausführungsform der vorliegenden Erfindung verwendet werden kann. In der dargestellten Ausführungsform umfasst das Hardwaresystem 600 einen Prozessor 602 und einen Cache-Speicher 604, die in der angegebenen Weise miteinander gekoppelt sind. Zusätzlich umfasst das Hardwaresystem 600 einen Eingabe/Ausgabe(E/A)-Bus 606 hoher Leistung und einen Standard-E/A-Bus 608. Eine Host-Brücke 610 koppelt den Prozessor 602 mit dem E/A-Bus 606 hoher Leistung, wohingegen die E/A-Busbrücke 612 die zwei Busse 606 und 608 miteinander koppelt. Mit dem Bus 606 sind eine Netz/Kommunikations-Schnittstelle 624, ein Systemspeicher 614 und ein Videospeicher 616 gekoppelt. Eine Anzeigevorrichtung 618 ist wiederum mit dem Videospeicher 616 gekoppelt.
  • Mit dem Bus 608 sind ein Massenspeicher 620, eine Tastatur und Zeigevorrichtung 622 und E/A-Anschlüsse 626 gekoppelt. Gemeinsam sollen diese Elemente eine breite Kategorie von Hardwaresystemen darstellen, die in nicht einschränkender Weise allgemeine Computersysteme auf der Basis der PowerPC® Prozessorfamilie von Prozessoren, die von Motorola, Inc. aus Schaumburg, Illinois erhältlich sind, oder der Pentium® Prozessorfamilie, die von Intel Corporation aus Santa Clara, Kalifornien erhältlich sind, einschließen.
  • Diese Elemente 602 bis 626 führen ihre konventionellen Funktionen, die aus dem Stand der Technik bekannt sind, aus. Insbesondere wird die Netz/Kommunikationsschnittstelle 624 verwendet, um eine Kommunikation zwischen dem System 600 und einem Netz einer großen Vielzahl konventioneller Netze, wie dem Ethernet, einem Token-Ring, dem Internet, etc. zu liefern. Es sollte verständlich sein, dass die Schaltung der Schnittstelle 624 vom Typ des Netzes, mit dem das System 600 gekoppelt ist, abhängt.
  • Der Massenspeicher 620 wird verwendet, um einen permanenten Speicher für die Daten und Programminstruktionen zu liefern, um die oben beschriebenen Funktionen der Komprimierung und Verschlüsselung auszuführen, wohingegen der Systemspeicher 614 verwendet wird, um einen temporären Speicher für die Daten- und Programminstruktionen zu liefern, wenn diese vom Prozessor 602 ausgeführt werden.
  • Die E/A-Anschlüsse 620 sind ein oder mehrere serielle und/oder parallele Kommunikationsanschlüsse, die verwendet werden, um eine Kommunikation zwischen zusätzlichen peripheren Vorrichtungen, die mit dem Hardwaresystem 600 gekoppelt werden, zu liefern.
  • Man kann erkennen, dass verschiedene Komponenten des Hardwaresystems 600 anders angeordnet werden können. Beispielsweise kann der Cache 604 sich mit dem Prozessor 602 auf einem Chip befinden. Weiterhin kann es sein, dass gewisse Implementierungen der vorliegenden Erfindung nicht alle obigen Komponenten benötigen oder einschließen. Beispielsweise kann es sein, dass der Massenspeicher 620, die Tastatur- und Zeigevorrichtung 622 und/oder die Anzeigevorrichtung 618 und der Videospeicher 616 nicht im System 600 enthalten sind. Zusätzlich können die peripheren Vorrichtungen, die gekoppelt mit dem Standard-E/A-Bus 608 gezeigt sind, mit dem E/A-Bus 606 hoher Leistung gekoppelt werden; zusätzlich kann es sein, dass in einigen Implementierungen nur ein einziger Bus existiert und die Komponenten des Hardwaresystems 600 mit dem einzigen Bus gekoppelt sind. Weiterhin können zusätzliche Komponenten in das System 600 eingeschlossen werden, wie zusätzliche Prozessoren, Speichervorrichtungen oder Speicher.
  • In einer Ausführungsform ist der Comcryptor 100 der 1 als eine Serie von Softwareroutinen, die von einem Hardwaresystem 600 der 6 zum Ablaufen gebracht werden, implementiert. Diese Softwareroutinen umfassen eine Vielzahl von Serien von Instruktionen, die von einem Prozessor in einem Hardwaresystem auszuführen sind, wie dem Prozessor der 6. Zu Beginn sind die Serien der Instruktionen auf einer Speichervorrichtung, wie einem Massenspeicher 620, gespeichert. Es ist zu erkennen, dass die Serien von Instruktionen auf jedem konventionellen Speichermedium gespeichert werden können, wie einer Diskette, einer CD-ROM, einem Magnetband, einer DVD (DVD wird aktuell als eine Abkürzung für eine digitale Bildplatte verwendet; wobei es aber so erscheint, als ob die Verwendung sich auf eine digitale Vielseitigkeitsplatte geändert hat, um die Fähigkeit der DVD-Technik zu zeigen, für andere Daten als Video verwendet zu werden), einer Laserplatte, einem ROM, einem Flash-Speicher etc. Es ist auch erkennbar, dass die Serie von Instruktionen nicht lokal gespeichert werden muss und sie von einer entfernten Speichervorrichtung, wie einem Server auf einem Netz, über die Netz/Kommunikationsschnittstelle 624 empfangen werden kann.
  • Die Instruktionen werden von der Speichervorrichtung, wie dem Massenspeicher 620, in den Speicher 614 kopiert, und dann wird auf sie vom Prozessor 602 zugegriffen und sie werden von diesem ausgeführt. In einer Implementierung sind diese Softwareroutinen in der Programmiersprache C++ geschrieben. Es ist jedoch erkennbar, dass diese Routinen in jeder Sprache einer Vielzahl von Programmiersprachen implementiert sein können.
  • In alternativen Ausführungsformen ist die vorliegende Erfindung in diskreter Hardware oder Firmware implementiert. Beispielsweise ist in einer alternativen Ausführungsform eine anwendungsspezifische integrierte Schaltung (ASIC) mit den oben beschriebenen Funktionen der vorliegenden Erfindung programmiert.
  • Gemäß einer Ausführungsform der vorliegenden Erfindung ist jeder der Komprimierungsalgorithmen, die für die Verwendung durch den Comcryptor 100 im Komprimierungssatz 105 der 1 verfügbar sind, ein verlustloser Komprimierungsalgorithmus. Bei der verlustlosen Komprimierung wird die "Größe" des Datenblocks, der komprimiert wird, reduziert, ohne irgend einen Verlust von Daten. Das heißt, der Datenblock kann komprimiert, gespeichert oder übertragen und dann dekomprimiert werden, und der dekomprimierte Datenblock wird identisch dem ursprünglichen Datenblock sein. In alternativen Ausführungsformen umfasst der Komprimierungssatz 105 verlustbehaftete Komprimierungsalgorithmen. Bei der verlustbehafteten Komprimierung wird die Größe des Datenblocks reduziert, und ein gewisser Datenverlust tritt auf. Somit wird sich ein Datenblock, der komprimiert, gespeichert oder übertragen und dann dekomprimiert wird, leicht vom ursprünglichen Datenblock unterscheiden. Obwohl die verlustbehaftete Komprimierung einen gewissen Datenverlust verursacht, ist dieser Datenverlust bei gewissen Typen von Daten, wie Bilddaten, für den Benutzer typischerweise nicht evident.
  • In den Diskussionen oben wurden Ausführungsformen beschrieben, die "Move-forward"-Komprimierungsalgorithmen verwenden. Es sollte angemerkt werden, dass alternative Ausführungsformen verschiedene Typen von Komprimierungsalgorithmen umfassen können, oder eine Kombination von Move-forward-Komprimierungsalgorithmen und anderen Typen von Komprimierungsalgorithmen.
  • Somit ist ein Verfahren und eine Vorrichtung für das gleichzeitige Verschlüsseln und Komprimieren von Daten beschrieben worden. Während viele Änderungen und Modifikationen der vorliegenden Erfindung von einem Fachmann erkannt werden, nachdem er die vorangehende Beschreibung gelesen hat, sollte verständlich sein, dass die speziellen Ausführungsformen, die in illustrierender Weise gezeigt und beschrieben wurden, auf keinen Fall als begrenzend verstanden werden sollen. Bezugnahmen zu Details spezieller Ausführungsformen sollen den Umfang der Ansprüche nicht begrenzen.

Claims (23)

  1. Verfahren zum simultanen Verschlüsseln und Komprimieren von Eingangsdaten, wobei der Verfahren umfasst: • Identifizieren eines Verschlüsselungsschlüssels (120); und • Verwenden des Verschlüsselungsschlüssels (120), um einen Wert für eine Variable zu bestimmen (210), wobei der Wert einen Komprimierungsalgorithmus aus einem Satz von Komprimierungsalgorithmen identifiziert, die durch einen Satz von Werten für die Variable definiert sind; • dadurch gekennzeichnet, dass das Verfahren weiter einen Schritt eines Komprimierens (215) aller Zeichen eines ersten Bereichs der Eingangsdaten gemäß dem einen Komprimierungsalgorithmus umfasst, wobei der Schritt des Komprimierens (215) alle Zeichen des ersten Bereichs der Eingangsdaten mit dem einen Komprimierungsalgorithmus komprimiert, wie durch den Verschlüsselungsschlüssel (120) identifiziert und simultan alle Zeichen des ersten Bereichs der Eingangsdaten ohne eine Verwendung eines separaten Verschlüsselungsalgorithmus verschlüsselt.
  2. Verfahren nach Anspruch 1, wobei der erste Bereich der Eingangsdaten ein einzelnes Zeichen umfasst.
  3. Verfahren nach Anspruch 1, wobei der erste Bereich der Eingangsdaten alle Bereiche der Eingangsdaten umfasst.
  4. Verfahren nach Anspruch 1, wobei ein Verwenden des Verschlüsselungsschlüssels (120) ein Verwenden eines einzelnen Bits des Verschlüsselungsschlüssels (120) umfasst, um den einen Komprimierungsalgorithmus aus einem Satz von Komprimierungsalgorithmen zu identifizieren.
  5. Verfahren nach Anspruch 4, weiter umfassend: • Verwenden des Verschlüsselungsschlüssels (120), um einen zweiten Wert für die Variable zu bestimmen, um einen zweiten Komprimierungsalgorithmus aus einem Satz von Komprimierungsalgorithmen zu identifizieren, und • Komprimieren des zweiten Bereichs der Eingangsdaten gemäß dem zweiten Komprimierungsalgorithmus.
  6. Verfahren nach Anspruch 1, wobei der Satz von Komprimierungsalgorithmen mehrere Move-Forward-Komprimierungsalgorithmen umfasst.
  7. Verfahren nach Anspruch 6, wobei die Menge des ersten Bereichs der Eingangsdaten, die gemäß der mehreren Move-Forward-Komprimierungsalgorithmen dem Move-Forward-Verfahren unterzogen wird, von einem einzelnen Bit des Verschlüsselungsschlüssels abhängt.
  8. Verfahren nach Anspruch 1, weiter umfassend Permutieren des ersten Bereichs der Eingangsdaten, bevor der erste Bereich der Eingangsdaten komprimiert wird.
  9. Vorrichtung zum simultanen Verschlüsseln und Komprimieren von Eingangsdaten, wobei die Vorrichtung umfasst: • einen Komprimierungssatz (105), der mehrere Komprimierungsalgorithmen einschließt, die durch einen Satz von Werten für eine Variable in einem Kompressionsalgorithmus definiert sind; • dadurch gekennzeichnet, dass die Vorrichtung weiter einen Comcryptor (100) umfasst, der Mittel zum Identifizieren eines Komprimierungsalgorithmus aus den mehreren Komprimierungsalgorithmen umfasst, auf Grundlage zumindest teilweise von Verwenden eines Verschlüsselungsschlüssels (120), um den Wert der Variablen zu bestimmen (210) und alle Zeichen eines ersten Bereichs der Eingangsdaten gemäß dem einen Komprimierungsalgorithmus zu komprimieren (215), wobei das Komprimieren aller Zeichen des ersten Bereichs der Eingangsdaten mit dem einen Komprimierungsalgorithmus, wie durch den Verschlüsselungsschlüssel (120) identifiziert simultan alle Zeichen des ersten Bereichs der Eingangsdaten ohne die Verwendung eines separaten Verschlüsselungsalgorithmus verschlüsselt.
  10. Vorrichtung nach Anspruch 9, wobei der erste Bereich der Eingangsdaten ein einzelnes Zeichen umfasst.
  11. Vorrichtung nach Anspruch 9, wobei der erste Bereich der Eingangsdaten alle Bereiche der Eingangsdaten umfasst.
  12. Vorrichtung nach Anspruch 9, wobei der Comcryptor (100) weiter betriebsfähig ist, ein einzelnes Bits des Verschlüsselungsschlüssels (120) zu verwenden, um den einen Komprimierungsalgorithmus aus mehreren der Komprimierungsalgorithmen zu identifizieren.
  13. Vorrichtung nach Anspruch 12, wobei der Comcryptor (100) weiter betriebsfähig ist, den Verschlüsselungsschlüssel (120) zu verwenden, um einen zweiten Wert der Variable zu bestimmen, um einen zweiten Komprimierungsalgorithmus aus mehreren Komprimierungsalgorithmen zu identifizieren und um einen zweiten Bereich der Eingangsdaten gemäß dem zweiten Komprimierungsalgorithmus zu komprimieren.
  14. Vorrichtung nach Anspruch 9, wobei der Satz von Komprimierungsalgorithmen mehrere Move-Forward-Komprimierungsalgorithmen umfasst.
  15. Vorrichtung nach Anspruch 14, wobei die Menge des ersten Bereichs der Eingangsdaten, die gemäß der mehreren Move-Forward-Komprimierungsalgorithmen dem Move-Forward-Verfahren unterzogen wird, von einem einzelnen Bit des Verschlüsselungsschlüssels (120) abhängt.
  16. Vorrichtung nach Anspruch 9, wobei der Comcryptor (100) weiter betriebsfähig ist, den ersten Bereich der Eingangsdaten zu permutieren, bevor der erste Bereich der Eingangsdaten komprimiert wird.
  17. Maschinenlesbares Medium, mit mehreren darauf gespeicherten Anweisungen, die angepasst sind, wenn sie auf einem Computer laufen, ein Verfahren auszuführen, zum: • Identifizieren eines Verschlüsselungsschlüssels (120); und • Verwenden des Verschlüsselungsschlüssels (120), um einen Wert für eine Variable zu bestimmen (210), wobei der Wert einen Komprimierungsalgorithmus aus einem Satz von Komprimierungsalgorithmen identifiziert, die durch einen Satz von Werten für die Variable definiert sind; • dadurch gekennzeichnet, dass das Verfahren weiter einen Schritt des Komprimierens (215) aller Zeichen eines ersten Bereichs der Eingangsdaten gemäß dem einen Komprimierungsalgorithmus umfasst, wobei der Schritt des Komprimierens (215) alle Zeichen eines ersten Bereichs der Eingangsdaten mit einem Komprimierungsalgorithmus komprimiert, wie durch den Verschlüsselungsschlüssel (120) identifiziert, und simultan alle Zeichen des ersten Bereichs der Eingangsdaten ohne eine Verwendung eines separaten Verschlüsselungsalgorithmus verschlüsselt.
  18. Maschinenlesbares Medium nach Anspruch 17, wobei der erste Bereich der Eingangsdaten ein einzelnes Zeichen umfasst.
  19. Maschinenlesbares Medium nach Anspruch 17, wobei die Funktion des Verwenden des Verschlüsselungsschlüssels (120) ein Verwenden eines einzelnen Bits des Verschlüsselungsschlüssels (120) umfasst, um den einen Komprimierungsalgorithmus aus dem Satz von Komprimierungsalgorithmen zu identifizieren.
  20. Maschinenlesbares Medium nach Anspruch 19, wobei die Funktion weiter betriebsfähig ist, zum: • Verwenden des Verschlüsselungsschlüssels (120), um einen zweiten Wert für die Variable zu bestimmen, um einen zweiten Komprimierungsalgorithmus aus dem Satz von Komprimierungsalgorithmen zu identifizieren, und • Komprimieren eines zweiten Bereichs der Eingangsdaten gemäß dem zweiten Komprimierungsalgorithmus.
  21. Maschinenlesbares Medium nach Anspruch 17, wobei der Satz von Komprimierungsalgorithmen mehrere Move-Forward-Komprimierungsalgorithmen umfasst.
  22. Verfahren nach Anspruch 21, wobei die Menge des ersten Bereichs der Eingangsdaten, die gemäß der mehreren Move-Forward-Komprimierungsalgorithmen dem Move-Forward-Verfahren unterzogen wird, von einem einzelnen Bit des Verschlüsselungsschlüssels (120) abhängt.
  23. Maschinenlesbares Medium nach Anspruch 17, wobei die Funktion weiter betriebsfähig ist, zum Permutieren des ersten Bereichs der Eingangsdaten, bevor der erste Bereich der Eingangsdaten komprimiert wird.
DE69838074T 1997-12-17 1998-11-16 Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten Expired - Lifetime DE69838074T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US992683 1992-12-18
US08/992,683 US6154542A (en) 1997-12-17 1997-12-17 Method and apparatus for simultaneously encrypting and compressing data
PCT/US1998/024461 WO1999031843A1 (en) 1997-12-17 1998-11-16 Method and apparatus for simultaneously encrypting and compressing data

Publications (2)

Publication Number Publication Date
DE69838074D1 DE69838074D1 (de) 2007-08-23
DE69838074T2 true DE69838074T2 (de) 2008-03-13

Family

ID=25538627

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69838074T Expired - Lifetime DE69838074T2 (de) 1997-12-17 1998-11-16 Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten

Country Status (7)

Country Link
US (1) US6154542A (de)
EP (1) EP1040618B1 (de)
JP (1) JP4739519B2 (de)
AU (1) AU2197399A (de)
CA (1) CA2314939C (de)
DE (1) DE69838074T2 (de)
WO (1) WO1999031843A1 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6885749B1 (en) * 1999-10-01 2005-04-26 At&T Corp Scrambling a compression-coded signal
JP2001189718A (ja) * 1999-12-28 2001-07-10 Eiichi Masai 期日指定文書の作製方法及びその作製装置、並びに期日指定文書の作製プログラムを記録した記録媒体
US20020087884A1 (en) * 2000-06-12 2002-07-04 Hovav Shacham Method and apparatus for enhancing network security protection server performance
US20020039420A1 (en) * 2000-06-12 2002-04-04 Hovav Shacham Method and apparatus for batched network security protection server performance
US20040015725A1 (en) * 2000-08-07 2004-01-22 Dan Boneh Client-side inspection and processing of secure content
US7137143B2 (en) 2000-08-07 2006-11-14 Ingrian Systems Inc. Method and system for caching secure web content
JP4003203B2 (ja) * 2000-08-10 2007-11-07 サイファーゲート株式会社 暗号化プログラムを記録した記録媒体及び復号化プログラムを記録した記録媒体
US7757278B2 (en) * 2001-01-04 2010-07-13 Safenet, Inc. Method and apparatus for transparent encryption
US7298849B2 (en) * 2001-06-29 2007-11-20 Intel Corporation Method and apparatus for simultaneous encryption and decryption of publicly distributed media
US6920484B2 (en) * 2002-05-13 2005-07-19 Nvidia Corporation Method and apparatus for providing an integrated virtual disk subsystem
US7120653B2 (en) * 2002-05-13 2006-10-10 Nvidia Corporation Method and apparatus for providing an integrated file system
AU2003262857A1 (en) * 2002-08-24 2004-03-11 Ingrian Networks, Inc. Selective feature activation
WO2004036362A2 (en) * 2002-10-15 2004-04-29 Ingrian Networks, Inc. Compression of secure content
DE10330643A1 (de) * 2003-07-07 2005-02-10 Siemens Ag Verfahren zur verschlüsselten Datenübertragung über ein Kommunikationsnetz
US20060149962A1 (en) * 2003-07-11 2006-07-06 Ingrian Networks, Inc. Network attached encryption
JP2005217842A (ja) * 2004-01-30 2005-08-11 Fujitsu Ltd データ圧縮方法、データ復元方法及びそのプログラム
US7519835B2 (en) 2004-05-20 2009-04-14 Safenet, Inc. Encrypted table indexes and searching encrypted tables
US8437392B2 (en) * 2005-04-15 2013-05-07 Apple Inc. Selective reencoding for GOP conformity
US7669130B2 (en) * 2005-04-15 2010-02-23 Apple Inc. Dynamic real-time playback
US20060233237A1 (en) * 2005-04-15 2006-10-19 Apple Computer, Inc. Single pass constrained constant bit-rate encoding
US20070079386A1 (en) * 2005-09-26 2007-04-05 Brian Metzger Transparent encryption using secure encryption device
US20070079140A1 (en) * 2005-09-26 2007-04-05 Brian Metzger Data migration
US8386768B2 (en) 2006-02-08 2013-02-26 Safenet, Inc. High performance data encryption server and method for transparently encrypting/decrypting data
US7958091B2 (en) 2006-02-16 2011-06-07 Ingrian Networks, Inc. Method for fast bulk loading data into a database while bypassing exit routines
US7565339B2 (en) * 2006-03-31 2009-07-21 Agiledelta, Inc. Knowledge based encoding of data
US20070242703A1 (en) * 2006-04-12 2007-10-18 Telefonaktiebolaget Lm Ericsson (Publ) Binding/combining of plural telecommunications functions
CN101421973B (zh) * 2006-04-12 2014-01-29 艾利森电话股份有限公司 具有共享事务处理的多个远程通信功能的方法和装置
US8189586B2 (en) * 2006-04-12 2012-05-29 Telefonaktiebolaget Lm Ericsson (Publ) Plural telecommunications functions having sharing transaction(s)
JP4975806B2 (ja) * 2006-04-12 2012-07-11 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 共有トランザクション(群)を有する複数通信機能
US8769311B2 (en) 2006-05-31 2014-07-01 International Business Machines Corporation Systems and methods for transformation of logical data objects for storage
EP2033128A4 (de) 2006-05-31 2012-08-15 Ibm Verfahren und system zur transformation logischer datenobjekte zur speicherung
US7730088B2 (en) * 2006-09-14 2010-06-01 International Business Machines Corporation Queriable hierarchical text data
US8661263B2 (en) * 2006-09-29 2014-02-25 Protegrity Corporation Meta-complete data storage
US8379865B2 (en) * 2006-10-27 2013-02-19 Safenet, Inc. Multikey support for multiple office system
US7730106B2 (en) * 2006-12-28 2010-06-01 Teradata Us, Inc. Compression of encrypted data in database management systems
US20090132804A1 (en) * 2007-11-21 2009-05-21 Prabir Paul Secured live software migration
US8225106B2 (en) 2008-04-02 2012-07-17 Protegrity Corporation Differential encryption utilizing trust modes
KR101048661B1 (ko) 2009-01-28 2011-07-14 한국과학기술원 데이터에 대한 압축 및 암호화 연산을 위한 방법, 장치 및 컴퓨터 판독 가능한 기록 매체
WO2013159112A1 (en) * 2012-04-20 2013-10-24 The Board Of Regents Of The University Of Texas System Systems and methods for simultaneous compression and encryption
US8949617B2 (en) * 2013-05-03 2015-02-03 Citrix Systems, Inc. Disrupting password attack using compression
US20190036543A1 (en) * 2015-09-09 2019-01-31 Rodney Smith A Method of Protecting Data Using Compression Algorithms
US9654140B1 (en) * 2016-08-27 2017-05-16 Scured2 Corporation Multi-dimensional run-length encoding

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4386416A (en) * 1980-06-02 1983-05-31 Mostek Corporation Data compression, encryption, and in-line transmission system
US5367572A (en) * 1984-11-30 1994-11-22 Weiss Kenneth P Method and apparatus for personal identification
US5199069A (en) * 1991-02-25 1993-03-30 Motorola, Inc. Automatic encryption selector
US5479512A (en) * 1991-06-07 1995-12-26 Security Dynamics Technologies, Inc. Method and apparatus for performing concryption
US5237614A (en) * 1991-06-07 1993-08-17 Security Dynamics Technologies, Inc. Integrated network security system
US5271061A (en) * 1991-09-17 1993-12-14 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5159632A (en) * 1991-09-17 1992-10-27 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
US5517614A (en) * 1992-05-29 1996-05-14 Kabushiki Kaisha Toshiba Data compression/encryption processing apparatus
US5315655A (en) * 1992-12-16 1994-05-24 Notable Technologies, Inc. Method and apparatus for encoding data objects on a computer system
JP3746098B2 (ja) * 1996-02-28 2006-02-15 株式会社日立製作所 データの暗号化装置
US5768372A (en) * 1996-03-13 1998-06-16 Altera Corporation Method and apparatus for securing programming data of a programmable logic device

Also Published As

Publication number Publication date
EP1040618A1 (de) 2000-10-04
DE69838074D1 (de) 2007-08-23
WO1999031843A1 (en) 1999-06-24
EP1040618B1 (de) 2007-07-11
US6154542A (en) 2000-11-28
CA2314939C (en) 2010-09-21
JP4739519B2 (ja) 2011-08-03
AU2197399A (en) 1999-07-05
JP2002509389A (ja) 2002-03-26
CA2314939A1 (en) 1999-06-24
EP1040618A4 (de) 2004-11-03

Similar Documents

Publication Publication Date Title
DE69838074T2 (de) Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE19742417B4 (de) Vorrichtung und Verfahren zur Durchführung von M-fachem Maschinenendzustands-Entropiekodieren bzw. Entropiekodieren mit einer Maschine mit finitem Zustand
DE69725215T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen
DE69535118T2 (de) Verfahren zur Datenkomprimierung und -dekomprimierung und zugehöriges Datenkomprimierungs- und -dekomprimierungsgerät
DE60131247T2 (de) Dezimal-Binär Kodierer/Dekodierer
DE19635251A1 (de) Verfahren und Apparat zur Komprimierung beliebiger Daten
DE112012005557B4 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE4340591A1 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE3485824T2 (de) Verfahren zur datenkompression.
DE19534730A1 (de) Verfahren zum Codieren und Decodieren von Daten
DE602004007904T2 (de) Verschlüsselungsverfahren und -system
DE69916874T2 (de) Vermeidung von nicht erlaubten mustern in audio- oder videodaten
DE10131801B4 (de) Verfahren zur Datenkompression und Navigationssystem
DE60104213T2 (de) Teilverschlüsselung von zusammengesetzten bitströmen
EP3127272B1 (de) Verschlüsselungsverfahren und pseudo-zufallszahlengenerator
DE60311886T2 (de) Verfahren und vorrichtung zum sortieren zyklischer daten in lexikographischer reihenfolge
DE10162991A1 (de) Verfahren zum rechnergestützten Ver- und Entschlüsseln von Daten
DE102018113772A1 (de) Verschlüsselungsverfahren
DE10158003B4 (de) Verfahren zur Erzeugung von Schlüsseln für die Datenverschlüsselung sowie Verfahren zur Datenverschlüsselung
DE102018126763B4 (de) Kryptographieverfahren
EP1388230A2 (de) Verfahren und vorrichtung zum verschlüsseln eines diskreten signals sowie verfahren und vorrichtung zur entschlüsselung
DE10351022B4 (de) Verfahren zum Verschlüsseln einer von einer Sendeeinrichtung an eine Empfangseinrichtung abzugebenden Menge elektronischer Daten
Haghighi et al. Optimizing run-length algorithm using octonary repetition tree
EP2835931A1 (de) Verfahren zur Verschlüsselung von Zeichenketten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: APPLE INC., CUPERTINO, CALIF., US