DE102021130812A1 - Implementieren einer opportunistischen authentifizierung von verschlüsselten daten - Google Patents

Implementieren einer opportunistischen authentifizierung von verschlüsselten daten Download PDF

Info

Publication number
DE102021130812A1
DE102021130812A1 DE102021130812.7A DE102021130812A DE102021130812A1 DE 102021130812 A1 DE102021130812 A1 DE 102021130812A1 DE 102021130812 A DE102021130812 A DE 102021130812A DE 102021130812 A1 DE102021130812 A1 DE 102021130812A1
Authority
DE
Germany
Prior art keywords
data instance
compressed data
computer
instance
encrypted
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.)
Pending
Application number
DE102021130812.7A
Other languages
English (en)
Inventor
Glen Alan Jaquette
William J. Scales
Danny Harnik
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102021130812A1 publication Critical patent/DE102021130812A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein durch einen Computer implementiertes Verfahren gemäß einer Ausführungsform aufweist Komprimieren einer nichtkomprimierten Dateninstanz, um eine komprimierte Dateninstanz zu erzeugen; Verschlüsseln der komprimierten Dateninstanz als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert; Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz; und Hinzufügen eines Nullblocks variabler Länge und des MAC zu der verschlüsselten komprimierten Dateninstanz, um eine formatierte Zeichenfolge zu erzeugen.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Datensicherheit und insbesondere auf Implementieren eines Ende-zu-Ende-Datenintegritätsschutzes unter Verwendung eines Nachrichtenauthentifizierungscodes (message authentication code, MAC).
  • Eine gute Möglichkeit, einen Datenintegritätsschutz zu implementieren, besteht darin, einen Nachrichtenauthentifizierungscode (MAC) zu verwenden. Ein MAC kann zum Beispiel verwendet werden, um die Authentizität und Integrität von empfangenen Daten zu bestätigen. Darüber hinaus ist eine deterministische Verschlüsselung bei der Datenspeicherung insofern nützlich, als sie es ermöglicht, Duplikate von verschlüsselten Daten zu erkennen und aus dem Datenspeicher zu entfernen. Die deterministische Verschlüsselung kann mit längenerhaltender Komprimierung (length preserving compression, LPC) kombiniert werden, um ein Speichersystem in die Lage zu versetzen, eine Datendeduplizierung von Daten durchzuführen, die bereits auf einem Host dauerhaft verschlüsselt wurden. Die derzeitigen LPC-Implementierungen setzen jedoch keinen Datenintegritätsschutz um.
  • KURZDARSTELLUNG
  • Ein durch einen Computer implementiertes Verfahren gemäß einer Ausführungsform umfasst Komprimieren einer nichtkomprimierten Dateninstanz, um eine komprimierte Dateninstanz zu erzeugen; Verschlüsseln der komprimierten Dateninstanz als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert; Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz; und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz, um eine formatierte Zeichenfolge zu erzeugen.
  • Gemäß einer anderen Ausführungsform enthält ein Computerprogrammprodukt ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen, die gemeinsam auf dem einen oder mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisungen Anweisungen enthalten, die so konfiguriert sind, dass sie einen oder mehrere Prozessoren veranlassen, ein Verfahren auszuführen, das Komprimieren einer nichtkomprimierten Dateninstanz durch den Prozessor umfasst, um eine komprimierte Dateninstanz zu erzeugen; sowie Verschlüsseln der komprimierten Dateninstanz durch den Prozessor als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert; Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz durch den Prozessor; und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz durch den Prozessor, um eine formatierte Zeichenfolge zu erzeugen.
  • Gemäß einer anderen Ausführungsform umfasst ein durch einen Computer implementiertes Verfahren Komprimieren einer nichtkomprimierten Dateninstanz, um eine komprimierte Dateninstanz zu erzeugen; als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert, Verschlüsseln der komprimierten Dateninstanz, Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz, um eine formatierte Zeichenfolge zu erzeugen; und als Reaktion auf ein Feststellen, dass die Größe der komprimierten Dateninstanz umfangreicher ist als der festgelegte Schwellenwert, Abbrechen der komprimierten Dateninstanz und Verschlüsseln der nichtkomprimierten Dateninstanz, um die formatierte Zeichenfolge zu erzeugen.
  • Weitere Aspekte und Ausführungsformen der vorliegenden Erfindung ergeben sich aus der folgenden ausführlichen Beschreibung, die in Verbindung mit den Zeichnungen die Grundgedanken der Erfindung beispielhaft veranschaulicht.
  • Figurenliste
    • 1 zeigt eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 zeigt Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 zeigt einen Cloud-Computing-Knoten gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 4 zeigt ein Datenspeichersystem mit mehreren Ebenen gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 5 zeigt einen Ablaufplan eines Verfahrens zum Implementieren einer opportunistischen Authentifizierung von verschlüsselten Daten gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 zeigt einen Ablaufplan eines Verfahrens zum Verschlüsseln einer nichtkomprimierten Dateninstanz gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 7 zeigt einen Ablaufplan eines Verfahrens zum Verschlüsseln und opportunistischen Authentifizieren einer Dateninstanz gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 8 zeigt einen Ablaufplan eines Verfahrens zum Durchführen einer Datendeduplizierung gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 9 zeigt eine beispielhafte Umgebung zum Durchführen einer Breitblockverschlüsselung (wide-block encryption) einer komprimierten Klartextinstanz gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 10 zeigt eine beispielhafte Umgebung zum Durchführen einer Breitblockverschlüsselung einer nichtkomprimierten Klartextinstanz gemäß einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung dient der Veranschaulichung der allgemeinen Grundgedanken der vorliegenden Erfindung und soll die hier beanspruchten Aspekte der Erfindung nicht einschränken. Darüber hinaus können hier beschriebene besondere Merkmale in Verbindung mit anderen beschriebenen Merkmalen in jeder der verschiedenen möglichen Kombinationen und Permutationen verwendet werden.
  • Sofern hier nicht ausdrücklich anders definiert, sind alle Begriffe so weit wie möglich auszulegen, einschließlich der aus der Beschreibung implizierten Bedeutungen sowie der Bedeutungen, die von Fachleuten verstanden werden und/oder die in Wörterbüchern, Abhandlungen usw. definiert sind.
  • Sofern nicht anders angegeben, ist ferner darauf hinzuweisen, dass die Singularformen „ein/eine/einer/eines“ und „der/die/das“, wie sie in der Beschreibung und den beigefügten Ansprüchen verwendet werden, auch die Pluralform enthalten. Es versteht sich ferner, dass die Begriffe „aufweisen“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, die Anwesenheit von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht die Anwesenheit oder Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
  • In der folgenden Beschreibung werden mehrere Ausführungsformen zum Implementieren einer opportunistischen Authentifizierung von verschlüsselten Daten offengelegt.
  • In einer allgemeinen Ausführungsform umfasst ein durch einen Computer implementiertes Verfahren Komprimieren einer nichtkomprimierten Dateninstanz, um eine komprimierte Dateninstanz zu erzeugen; Verschlüsseln der komprimierten Dateninstanz als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert; Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz; und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz, um eine formatierte Zeichenfolge zu erzeugen.
  • In einer anderen allgemeinen Ausführungsform enthält ein Computerprogrammprodukt ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen, die gemeinsam auf dem einen oder mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisungen Anweisungen enthalten, die so konfiguriert sind, dass sie einen oder mehrere Prozessoren veranlassen, ein Verfahren auszuführen, das Komprimieren einer nichtkomprimierten Dateninstanz durch den Prozessor umfasst, um eine komprimierte Dateninstanz zu erzeugen; sowie Verschlüsseln der komprimierten Dateninstanz durch den Prozessor als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert; Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz durch den Prozessor; und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz durch den Prozessor, um eine formatierte Zeichenfolge zu erzeugen.
  • In einer anderen allgemeinen Ausführungsform umfasst ein durch einen Computer implementiertes Verfahren Komprimieren einer nichtkomprimierten Dateninstanz, um eine komprimierte Dateninstanz zu erzeugen; als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz kleiner ist als ein festgelegter Schwellenwert, Verschlüsseln der komprimierten Dateninstanz, Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz, um eine formatierte Zeichenfolge zu erzeugen; und als Reaktion auf ein Feststellen, dass die Größe der komprimierten Dateninstanz umfangreicher ist als der festgelegte Schwellenwert, Abbrechen der komprimierten Dateninstanz und Verschlüsseln der nichtkomprimierten Dateninstanz, um die formatierte Zeichenfolge zu erzeugen.
  • Die vorliegende Offenbarung enthält zwar eine ausführliche Beschreibung von Cloud-Computing, es versteht sich jedoch, dass die Umsetzung der hier dargelegten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit beliebigen Arten von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Modell zum Liefern eines Dienstes, der einen problemlosen, bedarfsorientierten Netzwerkzugriff auf einen gemeinsamen Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Speicher, Anwendungen, virtuelle Maschinen und Dienste) ermöglicht, die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle enthalten.
  • Bei den Eigenschaften handelt es sich um die Folgenden:
  • On-Demand Self-Service (bedarfsorientierte Selbstbedienung): Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher bereitstellen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
  • Broad Network Access (breiter Netzzugriff): Über ein Netzwerk sind Funktionen verfügbar, auf die durch Standardmechanismen zugegriffen wird, die die Verwendung durch heterogene schlanke oder leistungsintensive Client-Plattformen unterstützen (z.B. Mobiltelefone, Laptops und PDAs).
  • Ressource Pooling (Ressourcen-Bündelung): Die Datenverarbeitungsressourcen des Anbieters werden gebündelt, um mehreren Nutzern unter Verwendung eines Mehrmietermodells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
  • Rapid Elasticity (schnelle Anpassungsfähigkeit): Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
  • Measured Service (messbarer Dienst): Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Inanspruchnahme von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz bereitgestellt wird.
  • Es gibt folgende Dienstmodelle:
  • Software as a Service (Saas) (Software als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine schlanke Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende eMail) von verschiedenen Client-Einheiten aus zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Einstellungen der Anwendungskonfiguration.
  • Platform as a Service (Paas) (Plattform als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Werkzeugen erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Hosting-Umgebung der Anwendung.
  • Infrastructure as a Service (laas) (Infrastruktur als Dienst): Die dem Nutzer bereitgestellte Funktion besteht darin, Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Es gibt folgende Einsatzmodelle:
  • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
  • Community Cloud (Benutzergemeinschafts-Cloud): Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Anliegen hat (z.B. Aufgabe, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder fremden Räumen befinden.
  • Public Cloud (öffentliche Cloud): Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Branchengruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
  • Hybrid Cloud (hybride Cloud): Die Cloud-Infrastruktur besteht aus zwei oder mehr Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Entitäten bleiben, aber durch eine standardisierte oder herstellereigene Technologie miteinander verbunden sind, die eine Übertragbarkeit von Daten und Anwendungen ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
  • Eine Cloud-Computing-Umgebung ist dienstorientiert und schwerpunktmäßig auf Statusunabhängigkeit, geringe Kopplung, Modularität und semantische Interoperabilität ausgerichtet. Der Kern der Cloud-Computing ist eine Infrastruktur, die ein Netzwerk aus miteinander verbundenen Knoten enthält.
  • Mit Bezug nunmehr auf 1 ist eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie der persönliche digitale Assistent (PDA) oder das Mobiltelefon 54A, der Desktop-Computer 54B, der Laptop-Computer 54C und/oder das Kraftfahrzeug-Computersystem 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken wie private, benutzergemeinschaftliche, öffentliche oder hybride Clouds wie oben beschrieben oder in einer Kombination davon in Gruppen angeordnet sein (nicht dargestellt). Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es ist ersichtlich, dass die Arten von Datenverarbeitungseinheiten 54A bis N, die in 1 dargestellt sind, nur veranschaulichend sein sollen und die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 mit jeder Art von computergestützter Einheit über jede Art von Netzwerk und/oder netzwerkadressierbarer Verbindung Daten austauschen kann (z.B. über einen Web-Browser).
  • Mit Bezug nunmehr auf 2 wird ein Satz funktionaler Abstraktionsschichten gezeigt, die von der Cloud-Computing-Umgebung 50 (1) bereitgestellt werden. Es versteht sich von vornherein, dass die in 2 dargestellten Komponenten, Schichten und Funktionen nur veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Die Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: die Großrechner 61; die Server 62 auf Grundlage der RISC-Architektur (RISC = Reduced Instruction Set Computer, Computer mit reduziertem Befehlssatz), die Server 63; die Blade-Server 64; die Speichereinheiten 65; sowie die Netzwerke und Netzwerkkomponenten 66. In einigen Ausführungsformen enthalten die Software-Komponenten die Netzwerkanwendungs-Serversoftware 67 und die Datenbank-Software 68.
  • Die Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Entitäten bereitgestellt werden können: virtuelle Server 71; virtuelle Speicher 72; virtuelle Netzwerke 73; darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Die Ressourcenbereitstellung 81 ermöglicht eine dynamische Bereitstellung von Datenverarbeitungsressourcen und anderen Ressourcen, die verwendet werden, um Aufgaben in der Cloud-Computing-Umgebung durchzuführen. Messen und Preisfindung 82 stellen Kostenverfolgung beim Verwenden von Ressourcen in der Cloud-Computing-Umgebung sowie Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Die Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zur Cloud-Computing-Umgebung bereit. Die Verwaltung der Dienstgüte 84 stellt Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, sodass die erforderliche Dienstgüte erreicht wird. Die Planung und Erfüllung der Dienstgütevereinbarung (Service Level Agreement, SLA) 85 stellt eine Vorabeinteilung und eine Beschaffung von Cloud-Computing-Ressourcen bereit, deren künftiger Bedarf auf der Grundlage einer Dienstgütevereinbarung vorausgesehen wird.
  • Die Arbeitslastschicht 90 stellt Beispiele für Funktionalitäten bereit, für die die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und Nachrichtenauthentifizierung 96.
  • Mit Bezug auf 3 nunmehr ist eine schematische Darstellung eines Beispiels eines Cloud-Computing-Knotens dargestellt. Der Cloud-Computing-Knoten 10 ist nur ein Beispiel eines geeigneten Cloud-Computing-Knotens und soll keine Beschränkung des Anwendungsbereichs der Nutzung oder Funktionalität von Ausführungsformen der hier beschriebenen Erfindung nahelegen. Ungeachtet dessen kann der Cloud-Computing-Knoten 10 implementiert werden und/oder eine beliebige der vorstehend dargelegten Funktionalitäten durchführen.
  • Im Cloud-Computing-Knoten 10 gibt es ein Computersystem/einen Server 12, der mit zahlreichen anderen universellen oder speziellen Datenverarbeitungssystem-Umgebungen oder Konfigurationen funktionsfähig ist. Beispiele für bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für die Nutzung mit dem Computersystem/Server 12 geeignet sein können, sind unter anderem, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computer-Systeme, schlanke Clients, leistungsintensive Clients, Hand- oder Laptop-Einheiten, Mehrprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Beistellgeräte, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Großrechnersysteme und verteilte Cloud-Computing-Umgebungen, die jedes beliebige der vorstehend genannten Systeme oder Einheiten und Ähnliches enthalten.
  • Das Computersystem/der Server 12 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen beschrieben werden, z.B. Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen eingesetzt werden, wo die Aufgaben von entfernt angeordneten Verarbeitungseinheiten durchgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl auf lokalen als auch auf entfernt angeordneten Computersystem-Speichermedien befinden, darunter Speichereinheiten mit Arbeitsspeichern.
  • Wie in 3 gezeigt, wird das Computersystem/der Server 12 im Cloud-Computing-Knoten 10 in Form einer universellen Datenverarbeitungseinheit dargestellt. Bei den Komponenten des Computersystems/Servers 12 kann es sich - ohne auf diese beschränkt zu sein - um einen oder mehrere Prozessoren oder Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18 handeln, der verschiedene Systemkomponenten, darunter den Systemspeicher 28, mit dem Prozessor 16 verbindet.
  • Der Bus 18 stellt einen oder mehrere von beliebigen mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder eine Speichersteuereinheit, einen Peripheriebus, eine AGP-Schnittstelle (Accelerated Graphics Port) und einen Prozessor oder lokalen Bus, der eine beliebige aus einer Vielfalt von Busarchitekturen nutzt. Beispielsweise und nicht einschränkend enthalten solche Architekturen einen Industry-Standard-Architecture-(ISA-)Bus, einen Micro-Channel-Architecture-(MCA-)Bus, einen Enhanced-ISA-(EISA-)Bus, einen lokalen Video-Electronics-Standards-Association-(VESA-)Bus und einen Peripheral-Component-Interconnects-(PCI-)Bus.
  • Das Computersystem/der Server 12 umfasst in der Regel eine Vielfalt von durch einen Computer lesbaren Medien. Bei diesen Medien kann es sich um beliebige verfügbare Medien handeln, auf die das Computersystem/der Server 12 zugreifen kann, darunter flüchtige und nichtflüchtige Medien, wechselbare und nichtwechselbare Medien.
  • Der Systemspeicher 28 kann vom Computersystem lesbare Medien in Form von flüchtigen Speichern, z.B. Direktzugriffsspeicher (RAM) 30 und/oder Cache 32, enthalten. Das Computersystem/der Server 12 kann ferner weitere wechselbare/nichtwechselbare, flüchtige/nichtflüchtige Computersystem-Speichermedien enthalten. Nur beispielhaft kann das Speichersystem 34 bereitgestellt werden, um ein nichtwechselbares, nichtflüchtiges magnetisches Medium auszulesen und zu beschreiben (nicht dargestellt und üblicherweise als „Festplatte“ bezeichnet). Obwohl nicht dargestellt, können ein Laufwerk für magnetische Speicherplatten zum Auslesen und Beschreiben einer wechselbaren, nichtflüchtigen magnetischen Speicherplatte (z.B. „Diskette“) und ein Laufwerk für optische Speicherplatten zum Auslesen oder Beschreiben einer wechselbaren, nichtflüchtigen optischen Speicherplatte wie einer CD-ROM, DVD-ROM und andere optische Medien bereitgestellt werden. In solchen Fällen kann jedes über eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 18 verbunden sein. Wie unten weiter dargestellt und beschrieben, kann der Speicher 28 mindestens ein Programmprodukt mit einem (z.B. mindestens einem) Satz von Programmmodulen enthalten, die so konfiguriert sind, dass sie die Funktionen der Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 40 mit (mindestens) einem Satz von Programmmodulen 42 kann beispielsweise und nicht einschränkend im Speicher 28 gespeichert sein, ebenso ein Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, weitere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Implementierung einer Netzwerkumgebung enthalten. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder Methodiken von Ausführungsformen der hier beschriebenen Erfindung aus.
  • Das Computersystem/der Server 12 kann auch mit einem oder mehreren externen Einheiten 14, z.B. einer Tastatur, einer Zeigeeinheit, einer Anzeige 24 usw.; einer oder mehreren Einheiten, die einen Benutzer in die Lage versetzen, mit dem Computersystem/dem Server 12 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die das Computersystem/den Server 12 in die Lage versetzen, mit einer oder mehreren Datenverarbeitungseinheiten Daten auszutauschen. Eine solche Datenübertragung kann über die Eingabe/Ausgabe-Schnittstellen (E/A-Schnittstellen) 22 erfolgen. Überdies kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken, z.B. einem lokalen Netzwerk (LAN), einem allgemeinen Weitverkehrsnetzwerk (WAN) und/oder einem öffentlichen Netzwerk (z.B. das Internet), über den Netzwerkadapter 20 Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 20 über den Bus 18 mit den anderen Komponenten des Computersystems/Servers 12 Daten aus. Es versteht sich, dass sonstige Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden können, auch wenn sie nicht dargestellt sind. Beispiele sind unter anderem, ohne auf diese beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, Anordnungen externer Festplattenlaufwerke, RAID-Systeme, Bandlaufwerke und Speichersysteme für die Datenarchivierung usw.
  • Mit Bezug nunmehr auf 4 wird ein System 400 gemäß einer Ausführungsform gezeigt. Es ist zu beachten, dass einige der in 4 gezeigten Elemente gemäß verschiedener Ausführungsformen als Hardware und/oder Software implementiert werden können. Das Speichersystem 400 kann einen Speichersystemmanager 412 für den Datenaustausch mit einer Mehrzahl von Medien auf mindestens einer höheren Speicherebene 402 und mindestens einer niedrigeren Speicherebene 406 enthalten. Die höhere(n) Speicherebene(n) 402 kann/können vorzugsweise ein oder mehrere Medien mit wahlfreiem Zugriff und/oder Direktzugriff 404 umfassen, wie z.B. Festplatten in Festplattenlaufwerken (hard disk drives, HDDs), nichtflüchtige Speicher (nonvolatile memory, NVM), Halbleiterspeicher in Halbleiterdatenträgern (solid state drives, SSDs), Flash-Speicher, SSD-Anordnungen, Flash-Speicher-Anordnungen usw. und/oder andere hier aufgeführte oder nach dem Stand der Technik bekannte Medien. Die niedrigere(n) Speicherebene(n) 406 kann/können vorzugsweise ein oder mehrere Speichermedien 408 mit geringerer Leistung umfassen, z.B. Medien mit sequenziellem Zugriff wie Magnetbänder in Bandlaufwerken und/oder optische Medien, langsamer zugreifende HDDs, langsamer zugreifende SSDs usw. und/oder andere hier aufgeführte oder nach dem Stand der Technik bekannte Medien. Eine oder mehrere zusätzliche Speicherebenen 416 können eine beliebige Kombination von Speichermedien enthalten, die von einem Entwickler des Systems 400 gewünscht wird. Außerdem kann jede der höheren Speicherebenen 402 und/oder der niedrigeren Speicherebenen 406 eine Kombination von Speichereinheiten und/oder Speichermedien enthalten.
  • Der Speichersystemmanager 412 kann mit den Speichermedien 404, 408 auf der/den höheren Speicherebene(n) 402 und der/den niedrigeren Speicherebene(n) 406 über ein Netzwerk 410, z.B. ein Speichernetzwerk (storage area network, SAN), wie in 4 dargestellt oder eine andere geeignete Art von Netzwerk Daten austauschen. Der Speichersystemmanager 412 kann auch mit einem oder mehreren Host-Systemen (nicht dargestellt) über eine Host-Schnittstelle 414 Daten austauschen, die Teil des Speichersystemmanagers 412 sein kann. Der Speichersystemmanager 412 und/oder andere Komponenten des Speichersystems 400 kann/können in Hardware und/oder Software implementiert werden und einen (nicht dargestellten) Prozessor eines nach dem Stand der Technik bekannten Typs, wie z.B. eine Zentraleinheit (CPU), eine vor Ort programmierbare Gatter-Anordnung (field programmable gate array, FPGA), eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit, ASIC) usw., zum Ausführen von Befehlen verwenden. Natürlich kann jede beliebige Anordnung eines Speichersystems verwendet werden, wie es für den Fachmann beim Lesen der vorliegenden Beschreibung offensichtlich ist.
  • In mehreren Ausführungsformen kann das Speichersystem 400 eine beliebige Anzahl von Datenspeicherebenen umfassen und innerhalb jeder Speicherebene die gleichen oder unterschiedliche Speichermedien enthalten. Beispielsweise kann jede Datenspeicherebene den gleichen Typ von Speichermedien, z.B. HDDs, SSDs, Medien mit sequenziellem Zugriff (Band in Bandlaufwerken, optische Platte in optischen Plattenlaufwerken usw.), Medien mit direktem Zugriff (CD-ROM, DVD-ROM usw.) oder eine beliebige Kombination von Medienspeichertypen umfassen. In einer solchen Konfiguration kann eine höhere Speicherebene 402 eine Mehrheit von SSD-Speichermedien zum Speichern von Daten in einer leistungsfähigeren Speicherumgebung umfassen, und die übrigen Speicherebenen, darunter die niedrigere Speicherebene 406 und zusätzliche Speicherebenen 416, können jede beliebige Kombination von SSDs, HDDs, Bandlaufwerken usw. zum Speichern von Daten in einer weniger leistungsfähigen Speicherumgebung umfassen. Auf diese Weise können Daten, auf die häufiger zugegriffen wird, Daten mit höherer Priorität, Daten, auf die schneller zugegriffen werden muss, usw. in der höheren Speicherebene 402 gespeichert werden, während Daten, die keines dieser Attribute aufweisen, in den zusätzlichen Speicherebenen 416, darunter die niedrigere Speicherebene 406, gespeichert werden können. Natürlich kann ein Fachmann, wenn er die vorliegenden Beschreibungen liest, viele andere Kombinationen von Speichermedientypen entwickeln, die er in verschiedene Speicherschemata gemäß den hierin vorgestellten Ausführungsformen implementieren kann.
  • Gemäß einigen Ausführungsformen kann das Speichersystem (z.B. 400) eine Logik enthalten, die so konfiguriert ist, dass sie eine Anforderung zum Öffnen eines Datensatzes empfängt, eine Logik, die so konfiguriert ist, dass sie ermittelt, ob der angeforderte Datensatz auf einer niedrigeren Speicherebene 406 eines Datenspeichersystems 400 mit mehreren Ebenen in mehreren zugehörigen Teilen gespeichert ist, eine Logik, die so konfiguriert ist, dass sie jeden zugehörigen Teil des angeforderten Datensatzes auf eine höhere Speicherebene 402 des Datenspeichersystems 400 mit mehreren Ebenen verschiebt, und eine Logik, die so konfiguriert ist, dass sie den angeforderten Datensatz auf der höheren Speicherebene 402 des Datenspeichersystems 400 mit mehreren Ebenen aus den zugehörigen Teilen zusammensetzt.
  • Natürlich kann diese Logik als Verfahren auf einer beliebigen Einheit und/oder beliebigem System oder als Computerprogrammprodukt gemäß verschiedenen Ausführungsformen implementiert werden.
  • Mit Bezug nunmehr auf 5 wird ein Ablaufplan eines Verfahrens 500 gemäß einer Ausführungsform gezeigt. Das Verfahren 500 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen unter anderem in jeder der in den 1 bis 4 und 9 und 10 abgebildeten Umgebungen durchgeführt werden. Das Verfahren 500 kann natürlich mehr oder weniger Operationen wie diejenigen speziell in 5 beschriebenen umfassen, wie es für den Fachmann beim Lesen dieser Beschreibungen offensichtlich ist.
  • Jeder der Schritte des Verfahrens 500 kann von geeigneten Komponenten der Betriebsumgebung ausgeführt werden. Beispielsweise kann das Verfahren 500 in verschiedenen Ausführungsformen teilweise oder vollständig von einem oder mehreren Servern, Computern oder einer anderen Einheit mit einem oder mehreren Prozessoren durchgeführt werden. Der Prozessor, z.B. Verarbeitungsschaltung(en), Chip(s) und/oder Modul(e), die in Hardware und/oder Software implementiert sind und vorzugsweise mindestens eine Hardware-Komponente aufweisen, kann in einer beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 500 durchzuführen. Zu veranschaulichenden Prozessoren gehören eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), eine vor Ort programmierbare Gatter-Anordnung (FPGA) usw., Kombinationen davon oder jede andere geeignete, nach dem Stand der Technik bekannte Datenverarbeitungseinheit, ohne auf diese beschränkt zu sein. Zu weiteren beispielhaften Komponenten zählen ein oder mehrere Co-Prozessoren oder Beschleuniger, die auf demselben Chip oder auf demselben Substrat oder Modul wie die CPU untergebracht sein können.
  • Wie in 5 dargestellt, kann das Verfahren 500 mit der Operation 502 beginnen, bei der eine nichtkomprimierte Dateninstanz komprimiert wird, um eine komprimierte Dateninstanz zu erzeugen. In einer Ausführungsform kann die nichtkomprimierte Dateninstanz unter Verwendung eines oder mehrerer Komprimierungsalgorithmen komprimiert werden, um die komprimierte Dateninstanz zu erzeugen. Ein Komprimierungsalgorithmus kann beispielsweise auf die nichtkomprimierte Dateninstanz angewendet werden, um die komprimierte Dateninstanz zu erzeugen.
  • In einer Ausführungsform kann die nichtkomprimierte Dateninstanz auch Daten enthalten, die als verschlüsselt identifiziert wurden. Eine Aufforderung zum Verschlüsseln der nichtkomprimierten Dateninstanz kann beispielsweise von einer Anwendung, einem Benutzer usw. empfangen werden. In einer anderen Ausführungsform kann die nichtkomprimierte Dateninstanz eine Klartextinstanz enthalten.
  • Das Verfahren 500 kann weiterhin mit der Operation 504 fortfahren, bei der die komprimierte Dateninstanz verschlüsselt wird, wenn festgestellt wird, dass die Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert. In einer Ausführungsform kann die Größe der komprimierten Dateninstanz mit dem festgelegten Schwellenwert verglichen werden. In einer anderen Ausführungsform kann der festgelegte Schwellenwert eine Schwellenwert-Datengröße enthalten. In einer weiteren Ausführungsform kann die komprimierte Dateninstanz abgebrochen, gelöscht oder entfernt werden, wenn festgestellt wird, dass die Größe der komprimierten Dateninstanz umfangreicher ist als der festgelegte Schwellenwert.
  • Die komprimierte Dateninstanz kann beispielsweise abgebrochen und durch eine zukünftige Ausgabe der Komprimierungssteuerkomponente überschrieben werden. Die abgebrochenen Daten können dann gelöscht werden, wenn festgestellt wird, dass keine weiteren Daten eingehen oder dass ein Stromausfall festgestellt wurde oder unmittelbar bevorsteht.
  • In einer Ausführungsform kann der festgelegte Schwellenwert weiterhin eine Summe einer Größe eines Längenfeldes, einer festgelegten Mindestlänge des Nullblocks und eines Feldes des Nachrichtenauthentifizierungscodes (MAC) umfassen. So können beispielsweise das Längenfeld, der festgelegte Nullblock und das Feld des Nachrichtenauthentifizierungscodes (MAC) jeweils eine festgelegte Größe haben. In einer anderen Ausführungsform kann Verschlüsseln der komprimierten Dateninstanz zu einer verschlüsselten komprimierten Dateninstanz führen.
  • In einer Ausführungsform kann die komprimierte Dateninstanz auch unter Verwendung einer Breitblockverschlüsselung verschlüsselt werden. Das Verschlüsseln der komprimierten Dateninstanz unter Verwendung einer Breitblockverschlüsselung kann beispielsweise Anwenden eines Breitblockverschlüsselungsalgorithmus auf die komprimierte Dateninstanz umfassen. In einem anderen Beispiel kann der Breitblockverschlüsselungsalgorithmus einen EME2-AES-Verschlüsselungsalgorithmus, einen XCB-AES-Verschlüsselungsalgorithmus usw. umfassen.
  • In einer Ausführungsform kann sich der Breitblockverschlüsselungsalgorithmus darüber hinaus wie eine einzelne Blockchiffre verhalten und die komprimierte Dateninstanz als Eingabe verwenden. In einer anderen Ausführungsform kann der Breitblockverschlüsselungsalgorithmus intern eine beschränkte Blockchiffre (z.B. eine Advanced-Encryption-Standard-(AES-)Verschlüsselung) verwenden, während er die komprimierte Dateninstanz verschlüsselt. In einer weiteren Ausführungsform kann der Breitblockverschlüsselungsalgorithmus die verschlüsselte komprimierte Dateninstanz ausgeben. In einer weiteren Ausführungsform kann das Verschlüsseln der komprimierten Dateninstanz unter Verwendung einer Breitblockverschlüsselung Anwenden eines Breitblockverschlüsselungsalgorithmus auf die komprimierte Dateninstanz umfassen.
  • Darüber hinaus kann die komprimierte Dateninstanz in einer Ausführungsform unter Verwendung eines Erweiterungsverschlüsselungsmodus (expanding encryption mode) verschlüsselt werden, der einen Initialisierungsvektor enthält (z.B. Counter Mode Encryption usw.). So kann beispielsweise ein Initialisierungsvektor unter Verwendung der komprimierten Dateninstanz und eines geheimen Schlüssels erzeugt werden. In einem anderen Beispiel kann der geheime Schlüssel eine Dateninstanz enthalten, die zum Verschlüsseln verwendet wird und die nicht öffentlich zugänglich ist (z.B. im Besitz einer Entität ist, die das Verschlüsseln der Dateninstanz durchführt). In einem weiteren Beispiel kann der geheime Schlüssel auch als privater Schlüssel bezeichnet werden.
  • In einer Ausführungsform kann der Initialisierungsvektor auch einen verschlüsselten Hashwert enthalten. In einer anderen Ausführungsform kann sich der verschlüsselte Hashwert aus dem Anwenden einer Hashfunktion auf den geheimen Schlüssel und die komprimierte Dateninstanz ergeben. In einer weiteren Ausführungsform kann die Hashfunktion auf den geheimen Schlüssel und den Klartext in beliebiger Reihenfolge angewendet werden (z.B. zuerst der geheime Schlüssel und dann die komprimierte Dateninstanz oder zuerst die komprimierte Dateninstanz und dann der geheime Schlüssel).
  • In einer Ausführungsform kann die Hashfunktion auch den geheimen Schlüssel und die komprimierte Dateninstanz auf Hashwerte fester Größe abbilden, die den verschlüsselten Hashwert bilden. In einer anderen Ausführungsform kann die Hashfunktion einen sicheren Hashalgorithmus-256 (SHA-256) als kryptografische Hashfunktion enthalten. In einer weiteren Ausführungsform kann der Initialisierungsvektor eine Berechnung eines Nachrichtenauthentifizierungscodes mit verschlüsseltem Hashwert/Nachrichtenauthentifizierungscodes auf der Grundlage einer Hashfunktion (HMAC) mit einem Hashing-Schlüssel und dem Klartext enthalten. Bei einem weiteren Aspekt kann der Hashing-Schlüssel mit dem geheimen Schlüssel identisch sein, der zum Verschlüsseln der Daten verwendet wird, oder er kann durch Schlüsselableitung mit diesem geheimen Schlüssel verbunden sein, und der verschlüsselte Hashwert kann unter Verwendung eines Verschlüsselungsalgorithmus berechnet werden.
  • Zusätzlich kann ein Schlüssel für das Hashing in einer Ausführungsform aus dem geheimen Schlüssel abgeleitet werden, und der verschlüsselte Hashwert kann unter Verwendung eines Verschlüsselungsalgorithmus berechnet werden. Der verschlüsselte Hashwert kann beispielsweise durch Verschlüsseln des Hashwerts des Klartextes mit einem Hash-Verschlüsselungsschlüssel ermittelt werden. Bei einem Hash-Verschlüsselungsschlüssel handelt es sich um eine Art von Hashing-Schlüssel, der daher mit dem geheimen Schlüssel, der zum Verschlüsseln der Daten verwendet wird, identisch sein oder durch Schlüsselableitung mit diesem geheimen Schlüssel verbunden sein kann. Beim Verwenden eines Hash-Verschlüsselungschlüssels kann ein einfacher Verschlüsselungsalgorithmus wie der Electronic Codebook Mode (ECB) des Verschlüsselungsalgorithmus des Advanced Encryption Standard (AES) mit 128-Bit-Schlüsseln (d.h. ECB-AES-128) verwendet werden. Bei einem weiteren Aspekt kann der Hashing-Schlüssel auch unabhängig vom geheimen Schlüssel erzeugt werden; ist dies der Fall, muss er so aufbewahrt werden, dass er zusammen mit dem geheimen Schlüssel für eine weitere Verschlüsselung mit denselben Schlüsseln verwendet werden kann, um eine Datendeduplizierung zu ermöglichen. Ein unabhängig erzeugter Hashing-Schlüssel trägt zur Eindeutigkeit des Initialisierungsvektors (IV) bei. Ein unabhängig erzeugter Hashing-Schlüssel müsste ebenfalls aufbewahrt werden, wenn überprüft werden soll, ob der IV mit dem Klartext-Ergebnis einer Entschlüsselung von Geheimtext (ciphertext) übereinstimmt, der unter Verwendung dieses IV erstellt wurde.
  • In einer Ausführungsform kann die komprimierte Dateninstanz weiterhin unter Verwendung des Initialisierungsvektors, des geheimen Schlüssels und der komprimierten Dateninstanz verschlüsselt werden. Das Verschlüsseln der komprimierten Dateninstanz kann beispielsweise zu einer verschlüsselten komprimierten Dateninstanz führen. In einem anderen Beispiel kann das Verschlüsseln der komprimierten Dateninstanz Anwenden eines Verschlüsselungsmodus (z.B. eines Verschlüsselungsalgorithmus) auf die komprimierte Dateninstanz unter Verwendung des Initialisierungsvektors und des geheimen Schlüssels umfassen.
  • In einer Ausführungsform kann der Verschlüsselungsmodus weiterhin einen Verschlüsselungsmodus umfassen, der von einem IV oder Nonce wie CBC, PCBC, CFB, OFB, OCB, CTR, CCM oder GCM abhängt. Ein auf einem Zähler beruhender Verschlüsselungsmodus (z.B. CTR, GCM usw.) kann den Initialisierungsvektor beispielsweise mit einem beliebigen Zählerwert verknüpfen, um einen ersten Wert zu erzeugen. Dieser erste Wert kann dann inkrementiert werden, um einen beliebig langen Zählstrom (count stream) zu erzeugen. Der Zählstrom kann anschließend unter Verwendung des geheimen Schlüssels mit einer Blockverschlüsselung verschlüsselt werden (z.B. Verschlüsselung mit dem Advanced Encryption Standard (AES) usw.), um einen Verschlüsselungsstrom (cipherstream) zu erzeugen. Die Dateninstanz kann anschließend mit dem Verschlüsselungsstrom kombiniert werden (z.B. mit einer Exklusiv-ODER-(XOR-)Operation), um die verschlüsselte Dateninstanz zu erzeugen.
  • In einer Ausführungsform kann der Verschlüsselungsmodus auch einen Verschlüsselungsmodus nach dem Galois Counter Mode (GCM) umfassen. Ein GCM-Verschlüsselungsmodus kann zum Beispiel eine Anzahl von Blöcken innerhalb der komprimierten Dateninstanz ermitteln. In einem anderen Beispiel kann die Anzahl von Blöcken mit dem Initialisierungsvektor verknüpft werden, um einen ersten Wert zu erzeugen. Dieser erste Wert kann dann inkrementiert werden, um einen beliebig langen Zählstrom zu erzeugen. Der Zählstrom kann anschließend unter Verwendung des geheimen Schlüssels mit einer Blockverschlüsselung verschlüsselt werden (z.B. Verschlüsselung mit dem Advanced Encryption Standard (AES) usw.), um einen Verschlüsselungsstrom (cipherstream) zu erzeugen. Die Dateninstanz kann anschließend mit dem Verschlüsselungsstrom kombiniert werden (z.B. mit einer XOR-Operation), um die verschlüsselte Dateninstanz zu erzeugen.
  • Darüber hinaus kann die verschlüsselte komprimierte Dateninstanz in einer Ausführungsform eine Geheimtextinstanz enthalten (z.B. verschlüsselter Text, der sich aus dem Anwenden eines Verschlüsselungsalgorithmus auf die komprimierte Dateninstanz ergibt, usw.).
  • Das Verfahren 500 kann weiterhin mit der Operation 506 fortfahren, bei der ein Nachrichtenauthentifizierungscode (MAC) für die verschlüsselte komprimierte Dateninstanz erzeugt wird. In einer Ausführungsform kann der MAC Daten enthalten, die zum Authentifizieren der verschlüsselten komprimierten Dateninstanz nach ihrer Übertragung an einen Empfänger dienen. In einer anderen Ausführungsform kann der MAC mit demselben geheimen Schlüssel sowohl erzeugt als auch überprüft werden. In einer weiteren Ausführungsform kann ein Schlüsselerzeugungsalgorithmus einen geheimen Schlüssel aus einem Schlüsselbereich auswählen (z.B. nach dem Zufallsprinzip usw.).
  • In einer Ausführungsform kann der Schlüsselerzeugungsalgorithmus auch einen festgelegten geheimen Schlüssel auswählen. In einer anderen Ausführungsform kann ein Signieralgorithmus eine Kennung (z.B. den MAC) ausgeben, wenn er den ausgewählten geheimen Schlüssel und die verschlüsselte komprimierte Dateninstanz als Eingabe erhält. In einer weiteren Ausführungsform kann ein Überprüfungsalgorithmus eine Nachricht, die die verschlüsselte komprimierte Dateninstanz und die Kennung (z.B. eine Geheimtext-Zeichenfolge) enthält, unter Verwendung der Kennung und des ausgewählten geheimen Schlüssels annehmen oder ablehnen.
  • Auf diese Weise kann die Authentizität der verschlüsselten komprimierten Dateninstanz unter Verwendung des MAC überprüft werden.
  • Zusätzlich kann der MAC in einer Ausführungsform einen Galois-Nachrichtenauthentifizierungscode (GMAC oder GCM-MAC) enthalten, der als Teil des GCM-Verschlüsselungsmodus erzeugt wird. Die komprimierte Dateninstanz kann beispielsweise unter Verwendung des GCM-Verschlüsselungsmodus verschlüsselt werden, und der MAC kann als Teil derselben Verschlüsselungsberechnung erzeugt werden (z.B. unter Verwendung desselben geheimen Schlüssels usw.).
  • In einer Ausführungsform kann der MAC auch einen Nachrichtenauthentifizierungscode mit verschlüsseltem Hashwert oder einen Nachrichtenauthentifizierungscode auf der Grundlage einer Hashfunktion (z.B. einen HMAC) enthalten. Der HMAC kann beispielsweise auf der Grundlage einer zugrunde liegenden kryptografischen Hashfunktion (z.B. SHA2-256 oder SHA3-256) erzeugt werden. In einem anderen Beispiel können zwei Durchläufe einer Hashwert-Berechnung verwendet werden, um den HMAC zu erzeugen.
  • Ein geheimer Schlüssel kann beispielsweise zwei Schlüssel (einen internen und einen externen Schlüssel) aus der verschlüsselten komprimierten Dateninstanz berechnen. In einer anderen Ausführungsform kann ein erster Durchlauf der kryptografischen Hashfunktion einen internen Hashwert unter Verwendung der verschlüsselten komprimierten Dateninstanz und des internen Schlüssels erzeugen. In einer weiteren Ausführungsform kann ein zweiter Durchlauf der kryptografischen Hashfunktion den endgültigen HMAC unter Verwendung des internen Hashwerts und des externen Schlüssels erzeugen.
  • Das Verfahren 500 kann weiterhin mit der Operation 508 fortfahren, bei der ein Nullblock und der MAC zu der verschlüsselten komprimierten Dateninstanz hinzugefügt werden, um eine formatierte Zeichenfolge zu erzeugen. In einer Ausführungsform kann der verschlüsselten komprimierten Dateninstanz auch ein Längenfeld hinzugefügt werden, wobei das Längenfeld ein Feld mit einer festgelegten Länge (z.B. zwei Byte usw.) enthalten kann, das eine Länge der verschlüsselten komprimierten Dateninstanz angibt. In einer anderen Ausführungsform kann eine Länge der verschlüsselten komprimierten Dateninstanz ermittelt werden, und die Länge kann in das Längenfeld codiert werden, das mit der verschlüsselten komprimierten Dateninstanz verknüpft wird.
  • In einer anderen Ausführungsform kann die Größe des Längenfeldes auf der Grundlage einer Größe der verschlüsselten komprimierten Dateninstanz berechnet werden. In einer Ausführungsform kann der HMAC berechnet werden, nachdem eines oder mehrere der Längenfelder und der Nullblock zu der verschlüsselten komprimierten Dateninstanz hinzugefügt wurden.
  • In einer Ausführungsform kann der Mindest-Nullblock auch eine festgelegte Mindestanzahl von Bytes enthalten, die einen hochkomprimierbaren und leicht erkennbaren Wert haben, beispielsweise dass alle Bytes auf Null gesetzt sind. In einer anderen Ausführungsform kann die Länge des Nullblocks größer als ein festgelegter Schwellenwert sein. Der festgelegte Schwellenwert kann zum Beispiel eine variable Anzahl von Bytes mit einer Mindestlänge umfassen. In einer weiteren Ausführungsform kann der Nullblock mit der verschlüsselten komprimierten Dateninstanz, mit dem Längenfeld usw. verknüpft werden.
  • Darüber hinaus kann der MAC in einer Ausführungsform ein Feld mit einer festgelegten Länge enthalten. In einer anderen Ausführungsform kann der MAC mit der verschlüsselten komprimierten Dateninstanz, dem Längenfeld, dem Nullblock usw. verknüpft werden. In einer weiteren Ausführungsform kann eine Länge der Geheimtext-Zeichenfolge (z.B. eine Länge des Längenfeldes, der verschlüsselten komprimierten Dateninstanz, des Nullblocks und des MAC) der Länge der nichtkomprimierten Dateninstanz entsprechen. Wenn die komprimierte Dateninstanz unter Verwendung eines Initialisierungsvektors (IV) verschlüsselt wird, kann der IV in einer weiteren Ausführungsform mit der verschlüsselten komprimierten Dateninstanz, dem Längenfeld, dem Nullblock, dem MAC usw. verknüpft werden.
  • Darüber hinaus kann eine Länge des Längenfeldes, der verschlüsselten komprimierten Dateninstanz, des Nullblocks, des MAC und des IV in einer Ausführungsform einer Länge der nichtkomprimierten Dateninstanz entsprechen. Auf diese Weise kann eine längenerhaltende Komprimierung (LPC) implementiert werden, während die Dateninstanz gleichzeitig komprimiert und verschlüsselt wird und Integritätsschutz für die Dateninstanz bereitgestellt wird.
  • Ferner kann die formatierte Zeichenfolge in einer Ausführungsform gespeichert und/oder übertragen werden. So kann die formatierte Zeichenfolge beispielsweise in einer Datenbank, einem verteilten Speichersystem, einer Cloud-Computing-Umgebung usw. gespeichert werden. In einer anderen Ausführungsform kann die formatierte Zeichenfolge über ein oder mehrere Netzwerke an einen oder mehrere Benutzer, eine oder mehrere Einheiten, ein oder mehrere entfernt angeordnete Speichersysteme usw. gesendet werden.
  • In einer Ausführungsform kann der Nullblock auch verwendet werden, um die verschlüsselte komprimierte Dateninstanz zu identifizieren (z.B. als Reaktion auf Empfangen der verschlüsselten komprimierten Dateninstanz oder Lesen der verschlüsselten komprimierten Dateninstanz aus dem Speicher). Beispielsweise kann eine empfangende Entität nach Erhalt der formatierten Zeichenfolge die Zeichenfolge nach dem Nullblock durchsuchen (z.B. an einer festgelegten Position innerhalb der Geheimtext-Zeichenfolge usw.). In einem anderen Beispiel kann die formatierte Zeichenfolge als verschlüsselte komprimierte Dateninstanz identifiziert werden, wenn der Nullblock identifiziert wird. In einem anderen Beispiel kann die formatierte Zeichenfolge als verschlüsselte nichtkomprimierte Dateninstanz identifiziert werden, wenn der Nullblock nicht identifiziert wird.
  • In einer Ausführungsform kann der MAC auch zum Überprüfen der Datenintegrität und der Authentizität der Geheimtext-Zeichenfolge verwendet werden. Nach Erhalt der Geheimtext-Zeichenfolge kann beispielsweise der MAC aus der Geheimtext-Zeichenfolge extrahiert werden. So kann dem Empfänger beispielsweise eine Position des MAC in der Geheimtext-Zeichenfolge bereitgestellt und zum Extrahieren des MAC verwendet werden. In einem anderen Beispiel kann ein Überprüfungsalgorithmus (der mit dem geheimen Schlüssel bereitgestellt wird) den MAC unter Verwendung der Geheimtext-Zeichenfolge und des geheimen Schlüssels (z.B. des geheimen Schlüssels, der zum Erzeugen des MAC verwendet wurde) ermitteln.
  • Außerdem kann der ermittelte MAC in einer Ausführungsform mit dem extrahierten MAC verglichen werden. In einer anderen Ausführungsform kann der Geheimtext als gültig bestätigt werden, wenn der ermittelte MAC mit dem extrahierten MAC übereinstimmt. In einer weiteren Ausführungsform kann der Geheimtext als ungültig zurückgewiesen werden, wenn der ermittelte MAC nicht mit dem extrahierten MAC übereinstimmt.
  • Auf diese Weise kann eine vollständig deterministische Geheimtext-Zeichenfolge erzeugt und für die Dateninstanz gespeichert werden. Die Geheimtext-Zeichenfolge ist insofern vollständig deterministisch, als bei Verwendung der oben genannten Breitblockverschlüsselungstechniken eine erste Geheimtext-Zeichenfolge, die für eine erste Dateninstanz unter Verwendung eines ersten Schlüssels erzeugt wurde, mit einer zweiten Geheimtext-Zeichenfolge identisch sein kann, die für eine zweite Dateninstanz unter Verwendung eines zweiten Schlüssels erzeugt wurde, wenn die erste Dateninstanz mit der zweiten Dateninstanz identisch ist und der erste Schlüssel mit dem zweiten Schlüssel identisch ist. Dadurch können doppelte Geheimtext-Zeichenfolgen im Hardware-Speicher identifiziert und entfernt werden, wodurch der verfügbare Speicherplatz im Hardware-Speicher vergrößert und die Leistung des Hardware-Speichers verbessert wird, während die Sicherheit der gespeicherten Daten durch eine robuste Verschlüsselung erhalten bleibt.
  • Durch Einbeziehen eines MAC in die Geheimtext-Zeichenfolge kann die Geheimtext-Zeichenfolge außerdem beim Empfang daraufhin überprüft werden, ob sie beschädigt wurde (z.B. durch einen Übertragungsfehler, durch Schadsoftware usw.). Dadurch kann ein Ende-zu-Ende-Integritätsschutz während des Speicherns und Übertragens von Geheimtext-Zeichenfolgen bereitgestellt werden.
  • Mit Bezug nunmehr auf 6 wird ein Ablaufplan eines Verfahrens 600 zum Verschlüsseln einer nichtkomprimierten Dateninstanz gemäß einer Ausführungsform gezeigt. Das Verfahren 600 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen unter anderem in jeder der in den 1 bis 4 und 9 und 10 abgebildeten Umgebungen durchgeführt werden. Das Verfahren 600 kann natürlich mehr oder weniger Operationen wie diejenigen speziell in 6 beschriebenen umfassen, wie es für den Fachmann beim Lesen dieser Beschreibungen offensichtlich ist.
  • Jeder der Schritte des Verfahrens 600 kann von geeigneten Komponenten der Betriebsumgebung ausgeführt werden. Beispielsweise kann das Verfahren 600 in verschiedenen Ausführungsformen teilweise oder vollständig von einem oder mehreren Servern, Computern oder einer anderen Einheit mit einem oder mehreren Prozessoren durchgeführt werden. Der Prozessor, z.B. Verarbeitungsschaltung(en), Chip(s) und/oder Modul(e), die in Hardware und/oder Software implementiert sind und vorzugsweise mindestens eine Hardware-Komponente aufweisen, kann in einer beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 600 durchzuführen. Zu veranschaulichenden Prozessoren gehören eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), eine vor Ort programmierbare Gatter-Anordnung (FPGA) usw., Kombinationen davon oder jede andere geeignete, nach dem Stand der Technik bekannte Datenverarbeitungseinheit, ohne auf diese beschränkt zu sein. Zu weiteren beispielhaften Komponenten zählen ein oder mehrere Co-Prozessoren oder Beschleuniger, die auf demselben Chip oder auf demselben Substrat oder Modul wie die CPU untergebracht sein können.
  • Wie in 6 dargestellt, kann das Verfahren 600 mit der Operation 602 beginnen, bei der festgestellt wird, dass eine Größe einer komprimierten Dateninstanz umfangreicher ist als ein festgelegter Schwellenwert. In einer Ausführungsform kann die nichtkomprimierte Dateninstanz Daten enthalten, die als verschlüsselt identifiziert wurden. Eine Anforderung zum Verschlüsseln der nichtkomprimierten Dateninstanz kann beispielsweise von einer Anwendung, einem Benutzer usw. empfangen werden.
  • In einer Ausführungsform kann die nichtkomprimierte Dateninstanz auch eine Klartextinstanz enthalten. Der Klartext kann zum Beispiel unverschlüsselte Informationen enthalten, die mit einem oder mehreren Verschlüsselungsalgorithmen verschlüsselt werden sollen. In einer anderen Ausführungsform kann die nichtkomprimierte Dateninstanz unter Verwendung eines oder mehrerer Komprimierungsalgorithmen komprimiert werden, um die komprimierte Dateninstanz zu erzeugen.
  • In einer Ausführungsform kann die Größe der komprimierten Dateninstanz weiterhin mit einem festgelegten Schwellenwert verglichen werden. In einer anderen Ausführungsform kann der festgelegte Schwellenwert eine Schwellenwert-Datengröße enthalten. In einer weiteren Ausführungsform kann der festgelegte Schwellenwert Platz für die Summe eines Längenfeldes und einer festgelegten Mindestlänge des Nullblocks enthalten. In einer weiteren Ausführungsform kann die komprimierte Dateninstanz abgebrochen (z. B. entfernt, gelöscht usw.) werden, wenn festgestellt wird, dass die Größe der komprimierten Dateninstanz umfangreicher ist als der festgelegte Schwellenwert.
  • Weiterhin kann das Verfahren 600 mit der Operation 604 fortfahren, bei der eine nichtkomprimierte Dateninstanz verschlüsselt wird, um eine Geheimtext-Zeichenfolge zu erzeugen, ohne den unkomprimierten Datenbestand vorher zu komprimieren. In einer Ausführungsform kann Verschlüsseln der nichtkomprimierten Dateninstanz zu einer verschlüsselten nichtkomprimierten Dateninstanz führen. In einer anderen Ausführungsform kann die verschlüsselte nichtkomprimierte Dateninstanz die gleiche Größe/Länge wie die nichtkomprimierte Dateninstanz haben.
  • In einer Ausführungsform kann die nichtkomprimierte Dateninstanz auch unter Verwendung einer Verschlüsselung mit dem Advanced Encryption Standard (AES) verschlüsselt werden. In einer anderen Ausführungsform kann die nichtkomprimierte Dateninstanz unter Verwendung einer Breitblockverschlüsselung verschlüsselt werden. Das Verschlüsseln der nichtkomprimierten Dateninstanz unter Verwendung der Breitblockverschlüsselung kann beispielsweise Anwenden eines Breitblockverschlüsselungsalgorithmus auf die nichtkomprimierte Dateninstanz umfassen.
  • Darüber hinaus kann der Breitblockverschlüsselungsalgorithmus in einer Ausführungsform einen EME2-AES-Verschlüsselungsalgorithmus, einen XCB-AES-Verschlüsselungsalgorithmus usw. umfassen. In einer anderen Ausführungsform kann sich der Breitblockverschlüsselungsalgorithmus wie eine einzelne Blockchiffre verhalten und die nichtkomprimierte Dateninstanz als Eingabe verwenden. In einer anderen Ausführungsform kann der Breitblockverschlüsselungsalgorithmus intern eine beschränkte Blockchiffre (z.B. eine Advanced Encryption Standard (AES)-Verschlüsselung) verwenden, während er die nichtkomprimierte Dateninstanz verschlüsselt.
  • In einer Ausführungsform kann der Breitblockverschlüsselungsalgorithmus weiterhin die verschlüsselte nichtkomprimierte Dateninstanz ausgeben. In einer anderen Ausführungsform kann die verschlüsselte nichtkomprimierte Dateninstanz eine Geheimtextinstanz enthalten (z.B. verschlüsselter Text, der sich aus dem Anwenden eines Verschlüsselungsalgorithmus auf eine nichtkomprimierte Dateninstanz ergibt usw.).
  • Darüber hinaus kann die Geheimtext-Zeichenfolge in einer Ausführungsform gespeichert und/oder übertragen werden. So kann die Geheimtext-Zeichenfolge beispielsweise in einer Datenbank, einem verteilten Speichersystem, einer Cloud-Computing-Umgebung usw. gespeichert werden. In einer anderen Ausführungsform kann die Geheimtext-Zeichenfolge über ein oder mehrere Netzwerke an einen oder mehrere Benutzer, eine oder mehrere Einheiten, ein oder mehrere entfernt angeordnete Speichersysteme usw. gesendet werden.
  • Mit Bezug nunmehr auf 7 wird ein Ablaufplan eines Verfahrens 700 zum Verschlüsseln und opportunistischen Authentifizieren einer Dateninstanz gemäß einer Ausführungsform gezeigt. Das Verfahren 700 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen unter anderem in jeder der in den 1 bis 4 und 9 und 10 abgebildeten Umgebungen durchgeführt werden. Das Verfahren 700 kann natürlich mehr oder weniger Operationen wie diejenigen speziell in 7 beschriebenen umfassen, wie es für den Fachmann beim Lesen dieser Beschreibungen offensichtlich ist.
  • Jeder der Schritte des Verfahrens 700 kann von geeigneten Komponenten der Betriebsumgebung ausgeführt werden. Beispielsweise kann das Verfahren 700 in verschiedenen Ausführungsformen teilweise oder vollständig von einem oder mehreren Servern, Computern oder einer anderen Einheit mit einem oder mehreren Prozessoren durchgeführt werden. Der Prozessor, z.B. Verarbeitungsschaltung(en), Chip(s) und/oder Modul(e), die in Hardware und/oder Software implementiert sind und vorzugsweise mindestens eine Hardware-Komponente aufweisen, kann in einer beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 700 durchzuführen. Zu veranschaulichenden Prozessoren gehören eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), eine vor Ort programmierbare Gatter-Anordnung (FPGA) usw., Kombinationen davon oder jede andere geeignete, nach dem Stand der Technik bekannte Datenverarbeitungseinheit, ohne auf diese beschränkt zu sein. Zu weiteren beispielhaften Komponenten zählen ein oder mehrere Co-Prozessoren oder Beschleuniger, die auf demselben Chip oder auf demselben Substrat oder Modul wie die CPU untergebracht sein können.
  • Wie in 7 dargestellt, kann das Verfahren 700 mit der Operation 702 beginnen, bei der eine nichtkomprimierte Dateninstanz komprimiert wird, um eine komprimierte Dateninstanz zu erzeugen. Weiterhin kann das Verfahren 700 mit der Operation 704 fortfahren, bei der als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert, die komprimierte Dateninstanz verschlüsselt wird, ein Nachrichtenauthentifizierungscode (MAC) für die verschlüsselte komprimierte Dateninstanz erzeugt wird und ein Nullblock und der MAC zu der verschlüsselten komprimierten Dateninstanz hinzugefügt werden, um eine formatierte Zeichenfolge zu erzeugen.
  • Das Verfahren 700 kann ferner mit der Operation 706 fortfahren, bei der als Reaktion auf ein Feststellen, dass die Größe der komprimierten Dateninstanz umfangreicher ist als der festgelegte Schwellenwert, die komprimierte Dateninstanz abgebrochen wird und die nichtkomprimierte Dateninstanz verschlüsselt wird, um die formatierte Zeichenfolge zu erzeugen.
  • Mit Bezug nunmehr auf 8 wird ein Ablaufplan eines Verfahrens 800 zum Durchführen einer Datendeduplizierung gemäß einer Ausführungsform gezeigt. Das Verfahren 800 kann gemäß der vorliegenden Erfindung in verschiedenen Ausführungsformen unter anderem in jeder der in den 1 bis 4 und 9 und 10 abgebildeten Umgebungen durchgeführt werden. Das Verfahren 800 kann natürlich mehr oder weniger Operationen wie diejenigen speziell in 8 beschriebenen umfassen, wie es für den Fachmann beim Lesen dieser Beschreibungen offensichtlich ist.
  • Jeder der Schritte des Verfahrens 800 kann von geeigneten Komponenten der Betriebsumgebung ausgeführt werden. Beispielsweise kann das Verfahren 800 in verschiedenen Ausführungsformen teilweise oder vollständig von einem oder mehreren Servern, Computern oder einer anderen Einheit mit einem oder mehreren Prozessoren durchgeführt werden. Der Prozessor, z.B. Verarbeitungsschaltung(en), Chip(s) und/oder Modul(e), die in Hardware und/oder Software implementiert sind und vorzugsweise mindestens eine Hardware-Komponente aufweisen, kann in einer beliebigen Einheit verwendet werden, um einen oder mehrere Schritte des Verfahrens 800 durchzuführen. Zu veranschaulichenden Prozessoren gehören eine Zentraleinheit (CPU), eine anwendungsspezifische integrierte Schaltung (ASIC), eine vor Ort programmierbare Gatter-Anordnung (FPGA) usw., Kombinationen davon oder jede andere geeignete, nach dem Stand der Technik bekannte Datenverarbeitungseinheit, ohne auf diese beschränkt zu sein. Zu weiteren beispielhaften Komponenten zählen ein oder mehrere Co-Prozessoren oder Beschleuniger, die auf demselben Chip oder auf demselben Substrat oder Modul wie die CPU untergebracht sein können.
  • Wie in 8 dargestellt, kann das Verfahren 800 mit der Operation 802 beginnen, bei der eine Mehrzahl von Geheimtext-Zeichenfolgen analysiert wird. In einer Ausführungsform kann der Datenspeicher eine Datenbank, ein verteiltes Speichersystem, eine Cloud-Computing-Umgebung usw. umfassen. In einer anderen Ausführungsform kann das Analysieren Vergleichen einer einzelnen Geheimtext-Zeichenfolge im Datenspeicher mit anderen Geheimtext-Zeichenfolgen im Datenspeicher umfassen, um zu ermitteln, ob es im Datenspeicher Übereinstimmungen (z.B. Duplikate) gibt.
  • In einer weiteren Ausführungsform kann eine oder mehrere der Mehrzahl von Geheimtext-Zeichenfolgen erzeugt werden, indem bei einer nichtkomprimierten Klartextinstanz eine Breitblockverschlüsselung durchgeführt wird, um eine verschlüsselte nichtkomprimierte Klartextinstanz mit einer Länge zu erzeugen, die einer Länge der nichtkomprimierten Klartextinstanz entspricht. In einer weiteren Ausführungsform kann eine oder mehrere der Mehrzahl von Geheimtext-Zeichenfolgen durch Durchführen einer Breitblockverschlüsselung bei einer komprimierten Klartextinstanz erzeugt werden, um eine verschlüsselte komprimierte Klartextinstanz zu erzeugen. Der verschlüsselten komprimierten Klartextinstanz können ein Längenfeld und ein Nullblock variabler Länge hinzugefügt werden, um eine Geheimtext-Zeichenfolge zu erzeugen, deren Länge einer Länge der nichtkomprimierten Klartextinstanz entspricht.
  • Ferner kann das Verfahren 800 mit der Operation 804 fortfahren, bei der auf der Grundlage dieser Analyse eine oder mehrere redundante Geheimtext-Zeichenfolgen aus dem Datenspeicher entfernt werden. In einer Ausführungsform können als Reaktion auf ein Feststellen, dass eine oder mehrere Übereinstimmungen/Duplikate für eine gegebene Geheimtext-Zeichenfolge im Datenspeicher gefunden wurden, eine oder mehrere Instanzen der gegebenen Geheimtext-Zeichenfolge aus dem Datenspeicher entfernt (z.B. gelöscht, migriert usw.) werden. In einer anderen Ausführungsform können doppelte Geheimtext-Zeichenfolgen aus dem Datenspeicher entfernt werden, sodass eine einzige Instanz der Geheimtext-Zeichenfolge im Datenspeicher verbleibt.
  • Infolgedessen kann eine Deduplizierung im Datenspeicher durchgeführt werden, wodurch der verfügbare Speicherplatz im Datenspeicher maximiert und die Leistung der Hardware, die den Datenspeicher implementiert, verbessert werden kann.
  • 9 veranschaulicht eine beispielhafte Umgebung 900 zum Durchführen einer Verschlüsselung 906 einer komprimierten Klartextinstanz 902 gemäß einer beispielhaften Ausführungsform. Wie dargestellt, wird eine nichtkomprimierte Klartextinstanz 904 mit Anweisungen zum Verschlüsseln dieses nichtkomprimierten Klartextes 904 empfangen. Daraufhin wird die nichtkomprimierte Klartextinstanz 904 komprimiert 914, um die komprimierte Klartextinstanz 902 zu erzeugen.
  • Darüber hinaus wird eine Größe der komprimierten Klartextinstanz 902 mit einem festgelegten Größenschwellenwert verglichen (z.B. eine Größe der nichtkomprimierten Klartextinstanz 904 abzüglich einer Größe des Nullblocks 912 und einer Größe eines Längenfeldes 910), und es wird festgestellt, dass sie geringer ist als der festgelegte Größenschwellenwert. Als Reaktion auf dieses Feststellen wird die Verschlüsselung 906 bei der komprimierten Klartextinstanz 902 durchgeführt, um eine verschlüsselte komprimierte Klartextinstanz 908 zu erzeugen, die die gleiche Größe wie die komprimierte Klartextinstanz 902 hat.
  • Außerdem wird eine Länge der komprimierten Klartextinstanz 902 ermittelt und als Längenfeld 910 zur verschlüsselten komprimierten Klartextinstanz 908 hinzugefügt. Für die verschlüsselte komprimierte Klartextinstanz 908 wird ein MAC 916 berechnet und an die verschlüsselte komprimierte Klartextinstanz 908 angehängt. Ein Nullblock 912 variabler Länge mit einer festgelegten Mindestlänge wird erzeugt und an den MAC 916 angehängt.
  • In einer anderen Ausführungsform kann der Nullblock 912 zunächst an die verschlüsselte komprimierte Klartextinstanz 908 angehängt werden, und der MAC 916 kann sowohl für den Nullblock 912 als auch für die verschlüsselte komprimierte Klartextinstanz 908 berechnet werden.
  • Auf diese Weise wird eine Geheimtext-Zeichenfolge erzeugt, indem das Längenfeld 910, die verschlüsselte komprimierte Klartextinstanz 908 und der Nullblock 912 kombiniert werden. Eine Länge dieser Geheimtext-Zeichenfolge entspricht der Länge der nichtkomprimierten Klartextinstanz 904, wodurch die längenerhaltende Komprimierung (LPC) beibehalten wird.
  • 10 veranschaulicht eine beispielhafte Umgebung 1000 zum Durchführen einer Verschlüsselung 1008 einer nichtkomprimierten Klartextinstanz 1004 gemäß einer beispielhaften Ausführungsform. Wie dargestellt, wird eine nichtkomprimierte Klartextinstanz 1004 mit Anweisungen zum Verschlüsseln dieses nichtkomprimierten Klartextes 1004 empfangen. Daraufhin wird die nichtkomprimierte Klartextinstanz 1004 komprimiert 1002, um die komprimierte Klartextinstanz 1006 zu erzeugen.
  • Außerdem wird eine Größe der komprimierten Klartextinstanz 1006 mit einem festgelegten Größenschwellenwert verglichen, dabei wird festgestellt, dass sie umfangreicher ist als der festgelegte Größenschwellenwert. Als Reaktion auf dieses Feststellen wird die komprimierte Klartextinstanz 1006 verworfen und die Verschlüsselung 1008 wird bei der nichtkomprimierten Klartextinstanz 1004 durchgeführt, um eine verschlüsselte nichtkomprimierte Klartextinstanz 1010 zu erzeugen, die die gleiche Größe wie die nichtkomprimierte Klartextinstanz 1004 hat.
  • Auf diese Weise wird die längenerhaltende Komprimierung (LPC) beibehalten.
  • Opportunistische Authentifizierung der LPC-Erweiterungsverschlüsselung
  • In einer Ausführungsform wird ein Nachrichtenauthentifizierungscode (MAC) in das Formatieren von ausreichend komprimierbaren Daten eingefügt. Das Hinzufügen eines MAC macht die gespeicherten Daten widerstandsfähiger gegen Manipulationen, da der Geheimtext nicht mehr manipulierbar ist. Es ist insbesondere nicht mehr möglich, einen Teil des Geheimtextes eines verschlüsselten Sektors, der durch diesen MAC geschützt ist, zu ersetzen.
  • Das Einfügen eines MAC erfolgt opportunistisch, d.h., ein MAC wird nur dann eingefügt, wenn die Daten ausreichend komprimierbar sind, sodass genügend Platz vorhanden ist, um einen MAC einzufügen.
  • In einer Ausführungsform kann ein MAC separat für den Klartext berechnet werden (z.B. vor der Verschlüsselung). Dies wird als Authentifizierung und anschließende Verschlüsselung (authenticate then encrypt, AtE) bezeichnet. In einer anderen Ausführungsform kann ein MAC separat auf der Grundlage des aus der Verschlüsselung entstandenen Geheimtextes berechnet werden. Dies wird als Verschlüsselung und anschließende Authentifizierung (encrypt then authenticate, EtA) bezeichnet.
  • In einer weiteren Ausführungsform kann der MAC als Teil der Verschlüsselung unter Verwendung eines authentifizierenden Verschlüsselungsalgorithmus wie GCM berechnet werden. Wenn ein MAC separat berechnet wird, kann eine HMAC-Berechnung in einer anderen Ausführungsform verwendet werden, um einen sicheren MAC zu erzeugen.
  • In einer Ausführungsform umfasst ein Verfahren zum Authentifizieren von Dateneinheiten Komprimieren jeder Dateneinheit in komprimierte Daten; Berechnen der Länge der komprimierten Daten und Vergleichen mit einem Schwellenwert, wobei die Daten ausreichend komprimierbar sind, wenn die Länge der komprimierten Daten kleiner ist als der Schwellenwert; Verschlüsseln der Daten und Einfügen eines Nachrichtenauthentifizierungscodes in das Formatieren der Dateneinheit, wenn die Dateneinheit ausreichend komprimierbar ist; Verschlüsseln der Daten ohne Einfügen des Nachrichtenauthentifizierungscodes, wenn eine Dateneinheit nicht ausreichend komprimierbar ist.
  • In einer anderen Ausführungsform kann die Verschlüsselung mehrere Formen annehmen. Eine erste Möglichkeit, ausreichend komprimierbare Daten zu verschlüsseln, besteht beispielsweise darin, ein Initialisierungsvektorfeld (IV-Feld) und einen IV-abhängigen Verschlüsselungsmodus zu verwenden, und das Formatieren der Dateneinheit umfasst sowohl das IV-Feld als auch den MAC; und eine zweite Möglichkeit, ausreichend komprimierbare Daten zu verschlüsseln, besteht darin, die komprimierten Daten mit einem Breitblockverschlüsselungscode zu verschlüsseln, und das Formatieren der Dateneinheit umfasst den MAC und kein IV-Feld.
  • Auf diese Weise kann die Datenintegrität verbessert werden, indem komprimierte Daten (die verschlüsselt oder unverschlüsselt sein können) zusätzlich authentifiziert werden.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jedem möglichen technischen Detaillierungsgrad der Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Ausführungsformen der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hier nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hier beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o. ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA) oder programmierbare Logikanordnungen (programmable logic arrays, PLA) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Ausführungsformen der vorliegenden Erfindung durchzuführen. Weitere beispielhafte Schaltungen umfassen einen oder mehrere Co-Prozessoren oder Beschleuniger, die auf demselben Chip oder auf demselben Substrat oder Modul wie die CPU untergebracht sein können.
  • Ausführungsformen der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Ausführungsformen der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit als ein Schritt ausgeführt, gleichzeitig ausgeführt, im Wesentlich gleichzeitig ausgeführt, ganz oder teilweise zeitlich überlappend ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und eine in den Prozessor integrierte und/oder von ihm ausführbare Logik enthalten, wobei die Logik so konfiguriert ist, dass sie einen oder mehrere der hier beschriebenen Prozessschritte ausführt. Mit „integriert in“ ist gemeint, dass der Prozessor eine eingebettete Logik als Hardware-Logik hat, wie z.B. eine anwendungsspezifische integrierte Schaltung (ASIC), eine FPGA usw. Mit „ausführbar durch den Prozessor“ ist gemeint, dass die Logik Hardware-Logik ist; Software-Logik wie z.B. Firmware, Teil eines Betriebssystems, Teil eines Anwendungsprogramms; usw. oder eine Kombination aus Hardware- und Software-Logik, auf die der Prozessor zugreifen kann und die so konfiguriert ist, dass der Prozessor veranlasst wird, beim Ausführen durch den Prozessor eine bestimmte Funktionalität auszuführen. Software-Logik kann auf einem lokalen und/oder entfernt angeordneten Speicher eines beliebigen Speichertyps gespeichert werden, wie er nach dem Stand der Technik bekannt ist. Jeder in der Technik bekannte Prozessor kann verwendet werden, z.B. ein Software-Prozessor-Modul und/oder ein Hardware-Prozessor wie eine ASIC, eine FPGA, eine Zentraleinheit (CPU), ein integrierter Schaltkreis (IC), eine Grafikverarbeitungseinheit (GPU), usw. Weitere beispielhafte Prozessoren umfassen einen oder mehrere Co-Prozessoren oder Beschleuniger, die auf demselben Chip oder auf demselben Substrat oder Modul wie die CPU untergebracht sein können.
  • Es ist offensichtlich, dass die verschiedenen Merkmale der oben genannten Systeme und/oder Methodiken in beliebiger Weise kombiniert werden können, sodass sich aus den obigen Beschreibungen eine Mehrzahl an Kombinationen ergibt.
  • Es ist weiterhin offensichtlich, dass Ausführungsformen der vorliegenden Erfindung in Form eines Dienstes zur Verfügung gestellt werden können, der für einen Kunden eingesetzt wird, um eine Dienstleistung auf Anfrage anzubieten.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung vorgestellt, sollen jedoch nicht erschöpfend oder auf die Ausführungsformen beschränkt sein. Für Fachleute ist offensichtlich, dass viele Änderungen und Abwandlungen möglich sind, ohne vom Anwendungsbereich und Erfindungsgedanken der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber Technologien auf dem Markt bestmöglich zu erläutern oder es Fachleuten zu ermöglichen, die hier beschriebenen Ausführungsformen zu verstehen.

Claims (15)

  1. Durch einen Computer implementiertes Verfahren, das aufweist: Komprimieren einer nichtkomprimierten Dateninstanz, um eine komprimierte Dateninstanz zu erzeugen; Verschlüsseln der komprimierten Dateninstanz als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert; Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz; und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz, um eine formatierte Zeichenfolge zu erzeugen.
  2. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei die nichtkomprimierte Dateninstanz eine Klartextinstanz aufweist.
  3. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei die komprimierte Dateninstanz als Reaktion auf ein Feststellen, dass die Größe der komprimierten Dateninstanz umfangreicher ist als ein festgelegter Schwellenwert, abgebrochen wird.
  4. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei der festgelegte Schwellenwert eine Größe einer Summe eines Längenfeldes, eine festgelegte Mindestgröße eines Nullblocks und den MAC aufweist.
  5. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei die komprimierte Dateninstanz unter Verwendung einer Breitblockverschlüsselung verschlüsselt wird.
  6. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei die komprimierte Dateninstanz unter Verwendung eines Erweiterungsverschlüsselungsmodus verschlüsselt wird, der einen Initialisierungsvektor aufweist.
  7. Durch einen Computer implementiertes Verfahren nach Anspruch 1, das weiterhin Hinzufügen eines Längenfeldes zu der verschlüsselten komprimierten Dateninstanz aufweist, wobei das Längenfeld ein Feld enthält, das eine Länge der verschlüsselten komprimierten Dateninstanz angibt.
  8. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei der Nullblock eine variable Anzahl von Bytes mit einem hochkomprimierbaren und leicht erkennbaren Datenmuster aufweist, beispielsweise dass jedes Byte einen Wert Null hat.
  9. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei eine Länge eines Längenfeldes, der verschlüsselten komprimierten Dateninstanz, des Nullblocks und des MAC einer Länge der nichtkomprimierten Dateninstanz entspricht.
  10. Durch einen Computer implementiertes Verfahren nach Anspruch 1, das weiterhin Speichern oder Übertragen der formatierten Zeichenfolge aufweist.
  11. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei der MAC einen Galois-Nachrichtenauthentifizierungscode (GMAC) aufweist, der als Teil eines Verschlüsselungsmodus nach einem Galois Counter Mode (GCM) erzeugt wird.
  12. Durch einen Computer implementiertes Verfahren nach Anspruch 1, wobei der MAC einen Nachrichtenauthentifizierungscode mit verschlüsseltem Hashwert oder einen Nachrichtenauthentifizierungscode auf der Grundlage einer Hashfunktion aufweist.
  13. Durch einen Computer implementiertes Verfahren nach Anspruch 1, das ferner Verwenden des MAC aufweist, um die Datenintegrität und Authentizität der formatierten Zeichenfolge zu überprüfen.
  14. Computerprogrammprodukt, das ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen aufweist, die gemeinsam auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die Programmanweisungen Anweisungen aufweisen, die so konfiguriert sind, dass sie einen oder mehrere Prozessoren veranlassen, ein Verfahren nach einem der Ansprüche 1 bis 13 durchzuführen.
  15. Durch einen Computer implementiertes Verfahren, das aufweist: Komprimieren einer nichtkomprimierten Dateninstanz, um eine komprimierte Dateninstanz zu erzeugen; als Reaktion auf ein Feststellen, dass eine Größe der komprimierten Dateninstanz geringer ist als ein festgelegter Schwellenwert: Verschlüsseln der komprimierten Dateninstanz, Erzeugen eines Nachrichtenauthentifizierungscodes (MAC) für die verschlüsselte komprimierte Dateninstanz, und Hinzufügen eines Nullblocks und des MAC zu der verschlüsselten komprimierten Dateninstanz, um eine formatierte Zeichenfolge zu erzeugen; und als Reaktion auf ein Feststellen, dass die Größe der komprimierten Dateninstanz umfangreicher ist als ein festgelegter Schwellenwert: Abbrechen der komprimierten Dateninstanz, und Verschlüsseln der nichtkomprimierten Dateninstanz, um die formatierte Zeichenfolge zu erzeugen.
DE102021130812.7A 2020-12-03 2021-11-24 Implementieren einer opportunistischen authentifizierung von verschlüsselten daten Pending DE102021130812A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/111,312 2020-12-03
US17/111,312 US11917072B2 (en) 2020-12-03 2020-12-03 Implementing opportunistic authentication of encrypted data

Publications (1)

Publication Number Publication Date
DE102021130812A1 true DE102021130812A1 (de) 2022-06-09

Family

ID=79163984

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021130812.7A Pending DE102021130812A1 (de) 2020-12-03 2021-11-24 Implementieren einer opportunistischen authentifizierung von verschlüsselten daten

Country Status (5)

Country Link
US (1) US11917072B2 (de)
JP (1) JP2022089190A (de)
CN (1) CN114595466A (de)
DE (1) DE102021130812A1 (de)
GB (1) GB2601906B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11695541B2 (en) * 2020-12-07 2023-07-04 International Business Machines Corporation Implementing resilient deterministic encryption
US20230086249A1 (en) * 2021-09-22 2023-03-23 Bank Of America Corporation Email Verification Using Injected Tokens for Message Authentication
CN115758434B (zh) * 2023-01-06 2023-05-12 深圳奥联信息安全技术有限公司 一种数据高效编码加密方法

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5642421A (en) * 1995-09-15 1997-06-24 International Business Machines Corporation Encryption of low data content ATM cells
US5778395A (en) 1995-10-23 1998-07-07 Stac, Inc. System for backing up files from disk volumes on multiple nodes of a computer network
JP2000048230A (ja) * 1998-07-27 2000-02-18 Toshiba Corp 無線料金収受システム
US20050015608A1 (en) 2003-07-16 2005-01-20 Pkware, Inc. Method for strongly encrypting .ZIP files
US6983365B1 (en) 2000-05-05 2006-01-03 Microsoft Corporation Encryption systems and methods for identifying and coalescing identical objects encrypted with different keys
US9143546B2 (en) * 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
JP2004184516A (ja) * 2002-11-29 2004-07-02 Canon Inc デジタルデータ送信端末
JPWO2004093446A1 (ja) * 2003-04-17 2006-07-13 富士通株式会社 圧縮データと非圧縮データを同時転送する場合のタスクスケジューリング方法
US7746866B2 (en) * 2005-05-13 2010-06-29 Intel Corporation Ordered and duplicate-free delivery of wireless data frames
CN1905554A (zh) 2005-07-29 2007-01-31 华为技术有限公司 一种认证授权计费协议消息传输方法
US7725927B2 (en) * 2005-10-28 2010-05-25 Yahoo! Inc. Low code-footprint security solution
WO2007138603A2 (en) 2006-05-31 2007-12-06 Storwize Ltd. Method and system for transformation of logical data objects for storage
US8494166B2 (en) * 2007-05-01 2013-07-23 International Business Machines Corporation Use of indirect data keys for encrypted tape cartridges
US8656186B2 (en) * 2007-05-01 2014-02-18 International Business Machines Corporation Use of indirect data keys for encrypted tape cartridges
EP2153340A4 (de) 2007-05-08 2015-10-21 Riverbed Technology Inc Hybrider segmentorientierter dateiserver und wan-beschleuniger
US9324361B2 (en) * 2007-08-14 2016-04-26 Seagate Technology Llc Protecting stored data from traffic analysis
JP2010050616A (ja) * 2008-08-20 2010-03-04 Sony Corp 記録装置および記録方法、再生装置および再生方法、プログラム、並びに記録再生装置
US8555053B1 (en) 2008-08-29 2013-10-08 Crossroads Systems, Inc. System and method for adjusting to drive specific criteria
US8218759B2 (en) 2009-04-17 2012-07-10 Oracle America, Inc. System and method for encrypting data
US20100303229A1 (en) * 2009-05-27 2010-12-02 Unruh Gregory Modified counter mode encryption
US8731190B2 (en) 2009-06-09 2014-05-20 Emc Corporation Segment deduplication system with encryption and compression of segments
US8401181B2 (en) 2009-06-09 2013-03-19 Emc Corporation Segment deduplication system with encryption of segments
US8706727B2 (en) * 2009-06-19 2014-04-22 Sybase, Inc. Data compression for reducing storage requirements in a database system
US8560848B2 (en) * 2009-09-02 2013-10-15 Marvell World Trade Ltd. Galois/counter mode encryption in a wireless network
JP5240151B2 (ja) * 2009-09-30 2013-07-17 富士通株式会社 画像処理装置、および画像処理制御プログラム
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
CN102364949A (zh) 2011-11-10 2012-02-29 中山大学深圳研究院 一种基于h.264_avc视频流完整性认证脆弱水印的方法
US10785545B2 (en) 2012-04-20 2020-09-22 The Board Of Regents Of The University Of Texas System Systems and methods for simultaneous compression and encryption
US9197607B2 (en) 2013-08-15 2015-11-24 Yahoo! Inc. Enhancing network security
JP6631989B2 (ja) * 2013-10-24 2020-01-15 鈴木 秀一 暗号化装置、制御方法、及びプログラム
US9407437B1 (en) 2014-03-25 2016-08-02 Amazon Technologies, Inc. Secure initialization vector generation
WO2016010604A2 (en) * 2014-04-28 2016-01-21 Topia Technology, Inc. Systems and methods for security hardening of data in transit and at rest via segmentation, shuffling and multi-key encryption
US10164772B2 (en) 2014-05-30 2018-12-25 Apple Inc. Permutation composition based hash function
US20150379276A1 (en) 2014-06-27 2015-12-31 Freescale Semiconductor, Inc. System on a chip, controller and method for securing data
US9397833B2 (en) 2014-08-27 2016-07-19 International Business Machines Corporation Receipt, data reduction, and storage of encrypted data
CN105808151B (zh) 2014-12-29 2019-09-27 华为技术有限公司 固态硬盘存储设备和固态硬盘存储设备的数据存取方法
US9904807B2 (en) * 2015-01-09 2018-02-27 Toshiba Memory Corporation Memory system and information processing system
US10540504B2 (en) 2015-05-12 2020-01-21 Datrium, Inc. Distributed data method for encrypting data
US10514986B2 (en) 2015-09-30 2019-12-24 Commvault Systems, Inc. Dynamic triggering of block-level backups based on block change thresholds and corresponding file identities in a data storage management system
US20180034787A1 (en) 2016-08-01 2018-02-01 Vormetric, Inc. Data encryption key sharing for a storage system
KR102563888B1 (ko) * 2016-09-30 2023-08-09 한국전기연구원 네트워크 환경에서 데이터 프레임 중복 제거 방법, 그 방법을 수행하는 장치 및 컴퓨터 프로그램
CN108184118A (zh) * 2016-12-08 2018-06-19 中兴通讯股份有限公司 云桌面内容编码与解码方法及装置、系统
US20180191492A1 (en) 2017-01-04 2018-07-05 International Business Machines Corporation Decryption-Side Initialization Vector Discovery
US10387661B2 (en) 2017-01-09 2019-08-20 Pure Storage, Inc. Data reduction with end-to-end security
US10304155B2 (en) * 2017-02-24 2019-05-28 Advanced Micro Devices, Inc. Delta color compression application to video
US10509733B2 (en) * 2017-03-24 2019-12-17 Red Hat, Inc. Kernel same-page merging for encrypted memory
US10944568B2 (en) * 2017-10-06 2021-03-09 The Boeing Company Methods for constructing secure hash functions from bit-mixers
US11902417B2 (en) 2017-11-14 2024-02-13 Pii Guard Aps Computer-implemented method of performing format-preserving encryption of a data object of variable size
JP6988394B2 (ja) * 2017-11-15 2022-01-05 住友電気工業株式会社 映像伝送システム、映像送信装置、映像受信装置、映像送信方法、映像受信方法およびコンピュータプログラム
US10505715B2 (en) 2017-11-17 2019-12-10 Marpex, Inc. Method and system of synchronous encryption to render computer files and messages impervious to pattern recognition and brute force attacks
US10666435B2 (en) * 2018-01-09 2020-05-26 Vmware, Inc. Multi-tenant encryption on distributed storage having deduplication and compression capability
US10958416B2 (en) * 2018-11-26 2021-03-23 International Business Machines Corporation Encrypted and compressed data transmission with padding
WO2020148746A1 (en) 2019-01-20 2020-07-23 Arilou Information Security Technologies Ltd. System and method for data compression based on data position in frames structure
EP3921976A1 (de) * 2019-02-06 2021-12-15 ABB Power Grids Switzerland AG Verfahren zur authentifizierung von nachrichten in ressourcenbeschränkten systemen
US11588829B2 (en) * 2020-05-07 2023-02-21 Mcafee, Llc Methods and apparatus for network detection of malicious data streams inside binary files
US11301344B2 (en) * 2020-06-16 2022-04-12 Intel Corporation Aggregate GHASH-based message authentication code (MAC) over multiple cachelines with incremental updates
JP7225175B2 (ja) * 2020-09-17 2023-02-20 株式会社日立製作所 ストレージ装置及びデータ処理方法
US11582025B2 (en) * 2020-09-29 2023-02-14 Amazon Technologies, Inc. Efficient deduplication using block-based convergent encryption
US11329803B2 (en) * 2020-09-29 2022-05-10 Amazon Technologies, Inc. Redundancy controls in convergent encryption using dynamic salt values
US11507292B2 (en) * 2020-10-15 2022-11-22 Dell Products L.P. System and method to utilize a composite block of data during compression of data blocks of fixed size

Also Published As

Publication number Publication date
GB202116629D0 (en) 2022-01-05
CN114595466A (zh) 2022-06-07
US20220182242A1 (en) 2022-06-09
US11917072B2 (en) 2024-02-27
JP2022089190A (ja) 2022-06-15
GB2601906B (en) 2023-01-25
GB2601906A (en) 2022-06-15

Similar Documents

Publication Publication Date Title
DE102021130812A1 (de) Implementieren einer opportunistischen authentifizierung von verschlüsselten daten
DE112018001285T5 (de) Kryptografische Schlüsselerzeugung mit Anwendung auf Datendeduplizierung
DE112021005561T5 (de) Implementieren einer widerstandsfähigen deterministischen verschlüsselung
DE102012219155A1 (de) Verschlüsseln von Datenobjekten zur Datensicherung
DE112021004937T5 (de) Sicheres erneutes verschlüsseln von homomorph verschlüsselten daten
DE112018004008B4 (de) Auf dateisysteminhalten beruhende sicherheit
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE112016000790B4 (de) Instanziierung von Broadcast-Verschlüsselungsschemata zur Laufzeit
DE102016102424A1 (de) Auf Inhalt beruhende Hardware-Sicherheitsmodulzuweisung zu virtuellen Maschinen
DE112021003270T5 (de) Deduplizierung von mit mehreren schlüsseln verschlüsselten daten
DE112020002164T5 (de) Sichere datenspeicherung auf der grundlage von verschleierung durch verteilung
DE112020003357T5 (de) Undurchsichtige verschlüsselung für datendeduplizierung
DE112021006372T5 (de) Sichere bereitstellung einer datenverarbeitungsressource unter verwendung einer homomorphen verschlüsselung
DE112021002099T5 (de) Hypervisor-geschützter schlüssel
DE112019003130T5 (de) Hsm-selbstzerstörung in einer hybriden cloud-kms-lösung
DE112022003785T5 (de) Sichere verschlüsselung von teilblöcken
DE112021004008T5 (de) Validieren von verfolgten abschnitten von empfangenen sensordaten mithilfe von kryptographischer computerverarbeitung
DE102021129514A1 (de) Binden von post-quanten-zertifikaten
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE112020005526T5 (de) Reservieren eines oder mehrerer sicherheitsmodule für einen sicheren gast
DE112021004770T5 (de) Ultraschallübertragung von aufgeteilten schlüsseln für verbesserte sicherheit
DE102021130942A1 (de) Mehrstufiger schutz für datenzentrierte objekte
DE112021006008T5 (de) Sichere übertragung grosser datenmengen
DE112021005862T5 (de) Selbstprüfende blockchain
DE112021001764T5 (de) Ermitteln eines urhebers eines verschlüsselten objekts

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence