DE102012218576A1 - Verschlüsseln von Daten und Charakterisierungsdaten, die den gültigen Inhalt einer Spalte beschreiben - Google Patents

Verschlüsseln von Daten und Charakterisierungsdaten, die den gültigen Inhalt einer Spalte beschreiben Download PDF

Info

Publication number
DE102012218576A1
DE102012218576A1 DE102012218576A DE102012218576A DE102012218576A1 DE 102012218576 A1 DE102012218576 A1 DE 102012218576A1 DE 102012218576 A DE102012218576 A DE 102012218576A DE 102012218576 A DE102012218576 A DE 102012218576A DE 102012218576 A1 DE102012218576 A1 DE 102012218576A1
Authority
DE
Germany
Prior art keywords
data
column
characterization data
characterization
command
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.)
Granted
Application number
DE102012218576A
Other languages
English (en)
Other versions
DE102012218576B4 (de
Inventor
Roger A. Mittelstadt
Brian R. Muras
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 DE102012218576A1 publication Critical patent/DE102012218576A1/de
Application granted granted Critical
Publication of DE102012218576B4 publication Critical patent/DE102012218576B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • 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
    • G06F21/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Ein Verfahren, ein computerlesbares Speichermedium und ein Computersystem werden bereitgestellt. In einer Ausführungsform werden als Reaktion auf den Empfang eines ersten Befehls, der erste Daten angibt, eines ersten kryptographischen Schlüssels und einer Spaltenkennung, die eine Spalte mit Zeilen in einer Datenbank kennzeichnet, die ersten Daten mit Hilfe des ersten kryptographischen Schlüssels in verschlüsselte Daten verschlüsselt. Die verschlüsselten Daten werden in einer ersten Zeile in der Spalte in der Datenbank gespeichert. Als Reaktion auf den Empfang des ersten Befehls werden Charakterisierungsdaten erzeugt, die den gültigen Inhalt der Spalte mit den Zeilen angeben. Als Reaktion auf den Empfang eines Abfragebefehls, der einen zweiten kryptographischen Schlüssel und die Spalte angibt, wird die Spalte mit Hilfe des zweiten Schlüssels entschlüsselt, um entschlüsselte Daten zu erzeugen. Wenn die entschlüsselten Daten dem von den Charakterisierungsdaten angegebenen gültigen Inhalt nicht entsprechen, wird eine Aktion mit einem ungültigen kryptographischen Schlüssel durchgeführt.

Description

  • Bereich
  • Eine Ausführungsform der Erfindung betrifft allgemein Datenbank-Verwaltungssysteme, die Daten verschlüsseln.
  • Hintergrund
  • Computersysteme weisen üblicherweise eine Kombination von Computerprogrammen und Hardware, wie zum Beispiel Halbleiter, Transistoren, Chips, Leiterplatten, Plattenspeichereinheiten und Prozessoren, auf. Die Computerprogramme werden in den Plattenspeichereinheiten gespeichert und von den Prozessoren ausgeführt. Im Grunde werden Computersysteme zur Speicherung, Bearbeitung und Auswertung von Daten verwendet.
  • Ein Mechanismus zur Verwaltung von Daten wird als Datenbank-Verwaltungssystem (database management system (DBMS)) oder einfach als Datenbank bezeichnet. Viele verschiedene Arten von Datenbanken sind bekannt, die gebräuchlichste wird jedoch gewöhnlich als relationale Datenbank bezeichnet, die Daten in Tabellen organisiert, welche über Zeilen, die einzelne Einträge, Tupel oder Datensätze in der Datenbank darstellen, sowie Spalten, Felder oder Attribute verfügen, die festlegen, was in jedem Eintrag, jedem Tupel oder jedem Datensatz gespeichert wird. Jede Tabelle hat einen eindeutigen Namen in der Datenbank und jede Spalte hat einen eindeutigen Namen in der jeweiligen Tabelle. Die Datenbank hat auch einen oder mehrere Indizes, bei denen es sich um Datenstrukturen handelt, die das DBMS über die Position einer bestimmten Zeile in einer Tabelle unter Berücksichtigung eines indexierten Spaltenwerts informieren, analog zu einem Buchindex, der den Leser über die Seite, auf der ein bestimmtes Wort erscheint, informiert.
  • Der Abruf von Daten aus einer Datenbank erfolgt meistens über Anweisungen, die als Datenbankabfragen bezeichnet werden und von Benutzerschnittstellen, Anwendungsprogrammen oder fernen Computersystemen wie zum Beispiel Clients oder gleichgeordneten Computern (Peers) stammen. Eine Abfrage ist ein von dem DBMS ausgewerteter Ausdruck, um Daten aus der Datenbank abzurufen, die die Kriterien oder Bedingungen erfüllen, welche in der Abfrage angegeben sind.
  • Datenbanken machen oft von der Kryptographie Gebrauch, bei der es sich um eine Vorgehensweise zum Verstecken von Informationen handelt, um die Geheimhaltung sicherzustellen, und die die Verschlüsselung und Entschlüsselung von Daten beinhaltet. Verschlüsselung ist der Prozess, bei dem gewöhnliche Informationen (Klartext) in unverständliche Informationen, die als Geheimtext bezeichnet werden, umgewandelt werden, welche für Personen, die Informationen abfangen oder abhören, oder für andere unbefugte und nicht vorgesehene Personen ohne Kenntnis des Geheimnisses (nämlich des zur Entschlüsselung benötigten Schlüssels) nicht lesbar oder nicht verständlich sind. Datenbanken verwenden die Kryptographie, um in der Datenbank gespeicherte Daten zu verschlüsseln, so dass ein verschlüsseltes Datenbankfeld selbst dann sicher bleibt, wenn eine unbefugte Person die verschlüsselten Daten liest und weiß, welcher Verschlüsselungsalgorithmus zur Erzeugung der verschlüsselten Daten verwendet worden ist.
  • Kurzdarstellung
  • Ein Verfahren, ein computerlesbares Speichermedium und ein Computersystem werden bereitgestellt. In einer Ausführungsform werden als Reaktion auf den Empfang eines ersten Befehls, der erste Daten angibt, eines ersten kryptographischen Schlüssels und einer Spaltenkennung, die eine Spalte mit Zeilen in einer Datenbank kennzeichnet, die ersten Daten mit Hilfe des ersten kryptographischen Schlüssels in verschlüsselte Daten verschlüsselt. Die verschlüsselten Daten werden in einer ersten Zeile in der Spalte in der Datenbank gespeichert. Als Reaktion auf den Empfang des ersten Befehls werden Charakterisierungsdaten erzeugt, die den gültigen Inhalt der Spalte mit den Zeilen angeben. Als Reaktion auf den Empfang eines Abfragebefehls, der einen zweiten kryptographischen Schlüssel und die Spalte angibt, wird die Spalte mit Hilfe des zweiten Schlüssels entschlüsselt, um entschlüsselte Daten zu erzeugen. Wenn die entschlüsselten Daten dem von den Charakterisierungsdaten angegebenen gültigen Inhalt nicht entsprechen, wird eine Aktion mit einem ungültigen kryptographischen Schlüssel durchgeführt.
  • Kurze Beschreibung der diversen Ansichten der Zeichnungen
  • 1 zeigt ein Übersichtsblockschaltbild eines beispielhaften Systems zur Realisierung einer Ausführungsform der Erfindung.
  • 2 zeigt ein Blockschaltbild eines beispielhaften Datenbank-Verwaltungssystems gemäß einer Ausführungsform der Erfindung.
  • 3 zeigt ein Blockschaltbild einer beispielhaften Datenstruktur für eine Datenbank gemäß einer Ausführungsform der Erfindung.
  • 4 zeigt ein Flussdiagramm einer beispielhaften Verarbeitung für Einfüge- und Aktualisierungsbefehle gemäß einer Ausführungsform der Erfindung.
  • 5 zeigt ein Flussdiagramm einer beispielhaften Verarbeitung für eine Abfrage gemäß einer Ausführungsform der Erfindung.
  • Es sei jedoch angemerkt, dass die beigefügten Zeichnungen lediglich beispielhafte Ausführungsformen der Erfindung zeigen und folglich nicht als Einschränkung des Umfangs von anderen Ausführungsformen der Erfindung betrachtet werden.
  • Ausführliche Beschreibung
  • Bezug nehmend auf die Zeichnungen, in denen gleiche Bezugszahlen überall in den diversen Ansichten gleiche Teile bezeichnen, zeigt 1 eine Übersichtsblockschaltbilddarstellung eines Server-Computersystems 100 gemäß einer Ausführungsform der vorliegenden Erfindung, das über ein Netzwerk 130 mit einem Client-Computersystem 132 verbunden ist. Die Begriffe ”Server” und ”Client” werden hier lediglich der Einfachheit halber verwendet, und in verschiedenen Ausführungsformen kann ein Computersystem, das in einer Umgebung als Client-Computer betrieben wird, in einer anderen Umgebung als Server-Computer betrieben werden, und umgekehrt. Die Mechanismen und Vorrichtungen von Ausführungsformen der vorliegenden Erfindung gelten gleichermaßen für jedes beliebige geeignete Datenverarbeitungssystem.
  • Die Hauptkomponenten des Computersystems 100 weisen einen oder mehrere Prozessoren 101, einen Hauptspeicher 102, eine Endgeräteschnittstelle 111, eine Speicherschnittstelle 112, eine Schnittstelle 113 für eine E/A-(Eingabe/Ausgabe-)Einheit und einen Netzwerkadapter 114 auf, von denen alle direkt oder indirekt kommunikativ verbunden sind, um über einen Speicherbus 103, einen E/A-Bus 104 und eine E/A-Busschnittstelleneinheit 105 Daten zwischen den Komponenten zu übertragen.
  • Das Computersystem 100 enthält eine oder mehrere programmierbare Universal-Zentraleinheiten (CPUs) 101A, 101B, 101C und 101D, die hier allgemein als der Prozessor 101 bezeichnet werden. In einer Ausführungsform enthält das Computersystem 100 mehrere Prozessoren, die typisch für ein verhältnismäßig großes System sind; in einer anderen Ausführungsform kann das Computersystem 100 alternativ jedoch ein einzelnes CPU-System sein. Jeder Prozessor 101 führt Befehle aus, die im Hauptspeicher 102 gespeichert sind, und kann eine oder mehrere Stufen mit integriertem Cachespeicher aufweisen.
  • In einer Ausführungsform kann der Hauptspeicher 102 einen Direktzugriff-Halbleiterspeicher, eine Plattenspeichereinheit oder ein Speichermedium (entweder flüchtig oder nicht flüchtig) aufweisen, um Daten und Programme zu speichern oder zu codieren. In einer anderen Ausführungsform stellt der Hauptspeicher 102 den gesamten virtuellen Speicher des Computersystems 100 dar und kann auch den virtuellen Speicher von anderen Computersystemen enthalten, die mit dem Computersystem 100 verbunden oder über das Netzwerk 130 angeschlossen sind. Der Hauptspeicher 102 ist als eine einzelne monolithische Einheit konzipiert, in anderen Ausführungsformen ist der Hauptspeicher 102 jedoch komplexer aufgebaut, beispielsweise als eine Hierarchie von Cachespeichern und anderen Arbeitsspeichereinheiten. Der Arbeitsspeicher kann zum Beispiel in mehreren Cachespeicher-Stufen vorhanden sein und diese Cachespeicher können weiter nach ihrer Funktion unterteilt werden, so dass ein Cachespeicher Befehle enthält, während ein anderer Cachespeicher Daten, die keine Befehle sind, enthält, welche von dem Prozessor oder den Prozessoren verwendet werden. Der Arbeitsspeicher kann darüber hinaus verteilt und verschiedenen CPUs oder Gruppen von CPUs zugeordnet sein, wie dies bei beliebigen von verschiedenen Computerarchitekturen mit so genanntem nichteinheitlichem Speicherzugriff (non-uniform memory access (NUMA)) bekannt ist.
  • Der Hauptspeicher 102 speichert oder codiert ein Datenbank-Verwaltungssystem (DBMS) 150, einen Ergebnissatz 152, einen Einfüge-/Aktualisierungsbefehl 154, eine Abfrage 158 und eine Anwendung 160. Das DBMS 150, der Ergebnissatz 152, der Einfüge-/Aktualisierungsbefehl 154, die Abfrage 158 und die Anwendung 160 sind zwar als im Hauptspeicher 102 im Computersystem 100 enthalten gezeigt, doch können sich ein Teil oder alle von ihnen in anderen Ausführungsformen auf verschiedenen Computersystemen befinden und auf sie kann beispielsweise über das Netzwerk 130 ein Fernzugriff erfolgen. Das Computersystem 100 kann Mechanismen der virtuellen Adressierung verwenden, die es den Programmen des Computersystems 100 ermöglichen, sich so zu verhalten, als hätten sie anstelle des Zugriffs auf mehrere kleinere Speicherentitäten nur Zugriff auf eine einzige große Speicherentität. Während das Datenbank-Verwaltungssystem 150, der Ergebnissatz 152, der Einfüge-/Aktualisierungsbefehl 154, die Abfrage 158 und die Anwendung 160 als im Hauptspeicher 102 enthalten gezeigt sind, sind diese Elemente somit nicht unbedingt alle vollständig und gleichzeitig in derselben Plattenspeichereinheit enthalten. Überdies sind das Datenbank-Verwaltungssystem 150, der Ergebnissatz 152, der Einfüge-/Aktualisierungsbefehl 154, die Abfrage 158 und die Anwendung 160 zwar als getrennte Entitäten gezeigt, doch können einige von ihnen, Teile von einigen von ihnen oder alle von ihnen in anderen Ausführungsformen gemeinsam untergebracht sein.
  • In einer Ausführungsform weisen das DBMS 150 und/oder die Anwendung 160 Befehle oder Anweisungen auf, die auf dem Prozessor 101 ausgeführt werden, oder Befehle oder Anweisungen, die von Befehlen oder Anweisungen ausgewertet werden, welche auf dem Prozessor 101 ausgeführt werden, um die Funktionen auszuführen, die nachstehend mit Bezug auf die 2, 3, 4 und 5 näher beschrieben werden. In einer anderen Ausführungsform sind das DBMS 150 und/oder die Anwendung 160 mittels Halbleitereinheiten, Chips, Logikgattern, Schaltungen, Schaltungskarten und/oder anderen physischen Hardware-Einheiten anstelle von oder zusätzlich zu einem auf einem Prozessor beruhenden System in Hardware ausgeführt. In einer Ausführungsform weisen das DBMS 150 und/oder die Anwendung 160 zusätzlich zu Befehlen oder Anweisungen Daten auf. In verschiedenen Ausführungsformen ist die Anwendung 160 eine Benutzeranwendung, eine Anwendung eines Drittanbieters, ein Betriebssystem oder ein beliebiger Teil, ein Mehrfaches oder eine Kombination davon.
  • Der Speicherbus 103 stellt einen Datenübertragungspfad zur Übertragung von Daten zwischen dem Prozessor 101, dem Hauptspeicher 102 und der E/A-Busschnittstelleneinheit 105 bereit. Die E/A-Busschnittstelleneinheit 105 ist des Weiteren mit dem System-E/A-Bus 104 verbunden, um Daten an die und von den verschiedenen E/A-Einheiten zu übertragen. Die E/A-Busschnittstelleneinheit 105 kommuniziert über den System-E/A-Bus 104 mit mehreren E/A-Schnittstelleneinheiten 111, 112, 113 und 114, die auch als E/A-Prozessoren (IOPs) oder E/A-Adapter (IOAs) bezeichnet werden.
  • Die E/A-Schnittstelleneinheiten unterstützen die Kommunikation mit vielen verschiedenen Plattenspeicher- und E/A-Einheiten. Die Endgerät-Schnittstelleneinheit 111 unterstützt beispielsweise den Anschluss von einer oder mehreren Benutzer-E/A-Einheiten 121, die Benutzer-Ausgabeeinheiten (wie zum Beispiel einen Bildschirm, einen Lautsprecher und/oder ein Fernsehgerät) und Benutzer-Eingabeeinheiten (wie zum Beispiel eine Tastatur, eine Maus, einen Ziffernblock, ein Tastfeld (Touchpad), eine Rollkugel, Schaltflächen, einen Lichtgriffel oder eine andere Zeigeeinheit) aufweisen können. Ein Benutzer kann die Benutzer-Eingabeeinheiten mit Hilfe einer Benutzerschnittstelle betätigen, um der Benutzer-E/A-Einheit 121 und dem Computersystem 100 Eingabedaten und Befehle zuzuführen und er kann Ausgabedaten über die Benutzer-Ausgabeeinheiten empfangen. Eine Benutzerschnittstelle kann beispielsweise durch die Benutzer-E/A-Einheit 121 dargestellt werden, wie sie zum Beispiel auf einem Bildschirm angezeigt, über einen Lautsprecher wiedergegeben oder über einen Drucker ausgegeben wird.
  • Die Speicher-Schnittstelleneinheit 112 unterstützt den Anschluss von einem oder mehreren Plattenlaufwerken oder Direktzugriffspeichereinheiten 125 (bei denen es sich üblicherweise um rotierende Magnetplattenlaufwerk-Speichereinheiten handelt, obgleich sie alternativ auch andere Plattenspeichereinheiten einschließlich Anordnungen von Festplattenlaufwerken, die so konfiguriert sind, dass sie einem Hostcomputer als eine einzige große Plattenspeichereinheit erscheinen, sein könnten). In einer anderen Ausführungsform kann die Plattenspeichereinheit 125 mittels einer beliebigen Art einer sekundären Plattenspeichereinheit realisiert werden. Der Inhalt des Hauptspeichers 102 oder eines beliebigen Teils davon kann nach Bedarf in der Plattenspeichereinheit 125 gespeichert oder daraus abgerufen werden. Die E/A-Einheitenschnittstelle 113 stellt beliebigen von verschiedenen anderen Eingabe-/Ausgabeeinheiten oder Einheiten anderer Art, wie zum Beispiel Druckern oder Telefaxgeräten, eine Schnittstelle bereit. Der Netzwerkadapter 114 stellt einen oder mehrere Übertragungspfade vom Computersystem 100 zu anderen digitalen Einheiten und Computersystemen 132 bereit; diese Pfade können zum Beispiel ein oder mehrere Netzwerke 130 aufweisen.
  • Obgleich der Speicherbus 103 in 1 als eine verhältnismäßig einfache Struktur mit einem einzigen Bus gezeigt ist, die einen direkten Übertragungspfad zwischen den Prozessoren 101, dem Hauptspeicher 102 und der E/A-Busschnittstelle 105 bereitstellt, kann der Speicherbus 103 tatsächlich mehrere unterschiedliche Busse oder Übertragungspfade aufweisen, die in einer beliebigen von verschiedenen Formen angeordnet sein können, wie zum Beispiel als Punkt-zu-Punkt-Verbindungen in hierarchischen, Stern- oder Netzkonfigurationen, als mehrere hierarchische Busse, parallele und redundante Pfade oder in einer beliebigen anderen geeigneten Art der Konfiguration. Während die E/A-Busschnittstelle 105 und der E/A-Bus 104 als einzelne jeweilige Einheiten gezeigt sind, kann das Computersystem 100 außerdem tatsächlich mehrere E/A-Busschnittstelleneinheiten 105 und/oder mehrere E/A-Busse 104 enthalten. Zwar sind mehrere E/A-Schnittstelleneinheiten gezeigt, die den System-E/A-Bus 104 von verschiedenen Übertragungspfaden trennen, die zu den verschiedenen E/A-Einheiten führen, doch sind ein Teil oder alle der E/A-Einheiten in anderen Ausführungsformen direkt mit einem oder mehreren System-E/A-Bussen verbunden.
  • In verschiedenen Ausführungsformen ist das Computersystem 100 ein Mehrbenutzer-Großrechnersystem, ein Einbenutzersystem oder ein Servercomputer oder eine ähnliche Einheit, die nur eine kleine oder gar keine direkte Benutzerschnittstelle hat, aber Anforderungen von anderen Computersystemen (Clients) empfängt. In anderen Ausführungsformen ist das Computersystem 100 als ein Desktop-Computer, ein tragbarer Computer, ein Laptop- oder Notebook-Computer, ein Tablet-Computer, ein Taschencomputer, ein Telefon, ein Smartphone, ein Funkrufempfänger, ein Fahrzeug-, ein Telefonkonferenzsystem, eine Appliance oder eine beliebige andere geeignete Art eines elektronischen Geräts ausgeführt.
  • Das Netzwerk 130 kann ein beliebiges geeignetes Netzwerk oder eine Kombination von Netzwerken sein und es kann jedes beliebige geeignete Protokoll unterstützen, das zur Übertragung von Daten und/oder Code an das/von dem Computersystem 100 und an das/von dem Computersystem 132 geeignet ist. In verschiedenen Ausführungsformen kann das Netzwerk 130 eine Plattenspeichereinheit oder eine Kombination von Plattenspeichereinheiten darstellen, die entweder direkt oder indirekt mit dem Computersystem 100 verbunden sind. In einer anderen Ausführungsform kann das Netzwerk 130 drahtlose Übertragungen unterstützen. In einer anderen Ausführungsform kann das Netzwerk 130 fest verdrahtete Übertragungen wie zum Beispiel eine Telefonleitung oder ein -kabel unterstützen. In einer anderen Ausführungsform kann das Netzwerk 130 das Internet sein und das Internet Protocol (IP) unterstützen. In einer anderen Ausführungsform ist das Netzwerk 130 als ein lokales Netzwerk (LAN) oder als Weitverkehrsnetz (WAN) realisiert. In einer anderen Ausführungsform ist das Netzwerk 130 als ein Notspot-Netzwerk eines Diensteanbieters realisiert. In einer anderen Ausführungsform ist das Netzwerk 130 als ein Intranet realisiert. In einer anderen Ausführungsform ist das Netzwerk 130 als ein beliebiges geeignetes zellenorientiertes Datennetzwerk, eine zellenbasierte Funknetzwerktechnologie oder ein drahtloses Netzwerk realisiert. In einer anderen Ausführungsform ist das Netzwerk 130 als ein beliebiges geeignetes Netzwerk oder als eine Kombination von Netzwerken realisiert. Obgleich nur ein einziges Netzwerk 130 gezeigt ist, kann in anderen Ausführungsformen eine beliebige Anzahl von Netzwerken (derselben oder unterschiedlicher Art) vorhanden sein.
  • Das Computersystem 132 kann einen Teil oder alle der Hardware- und/oder Computerprogramm-Elemente des Computersystems 100 aufweisen.
  • 1 soll die repräsentativen Hauptkomponenten des Computersystems 100, des Netzwerks 130 und des Computersystems 132 darstellen. Jedoch können einzelne Komponenten eine größere Komplexität als in 1 dargestellt aufweisen, andere Komponenten als die in 1 gezeigten oder zusätzliche Komponenten zu den in 1 gezeigten können vorhanden sein, und die Anzahl, die Art und die Konfiguration dieser Komponenten kann voneinander abweichend sein. Mehrere bestimmte Beispiele für diese zusätzliche Komplexität oder diese zusätzlichen abweichenden Gestaltungsformen werden hier offengelegt; sie haben jedoch nur Beispielcharakter und sind nicht unbedingt die einzigen dieser abweichenden Gestaltungsformen. Die verschiedenen in 1 gezeigten Programmkomponenten sowie die Umsetzung von verschiedenen Ausführungsformen der Erfindung können auf mehrere Arten realisiert werden, einschließlich der Verwendung von verschiedenen Computeranwendungen, Routinen, Komponenten, Programmen, Objekten, Modulen, Datenstrukturen usw., und sie werden nachstehend als ”Computerprogramme” oder einfach ”Programme” bezeichnet.
  • Die Computerprogramme weisen einen oder mehrere Befehle oder Anweisungen auf, die sich zu unterschiedlichen Zeiten in verschiedenen Haupt- und Plattenspeichereinheiten in dem Computersystem 100 befinden und die, wenn sie von einem oder mehreren Prozessoren in dem Computersystem 100 gelesen und ausgeführt werden oder wenn sie von Befehlen ausgewertet werden, die von einem oder mehreren Prozessoren ausgeführt werden, das Computersystem 100 veranlassen, die Aktionen durchzuführen, die notwendig sind, um Schritte oder Elemente auszuführen, welche die verschiedenen Erscheinungsformen von Ausführungsformen der Erfindung aufweisen. Erscheinungsformen von Ausführungsformen der Erfindung können als ein System, ein Verfahren oder ein Computerprogrammprodukt realisiert werden. Folglich können Erscheinungsformen von Ausführungsformen der Erfindung die Form einer ganz in Hardware realisierten Ausführung, einer ganz als Programm realisierten Ausführung (einschließlich Firmware, residenter Programme, Mikrocode usw., die in einer Plattenspeichereinheit gespeichert werden) oder einer Ausführung annehmen, die Programm- und Hardware-Erscheinungsformen kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können Ausführungsformen der Erfindung die Form eines Computerprogrammprodukts annehmen, das sich auf einem oder mehreren computerlesbaren Datenträger(n) befindet, auf dem beziehungsweise denen sich computerlesbarer Programmcode befindet.
  • Jede beliebige Kombination aus einem oder mehreren computerlesbaren Datenträgern kann verwendet werden. Der computerlesbare Datenträger kann ein computerlesbarer Signaldatenträger oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung, -einheit oder eine beliebige geeignete Kombination des Vorstehenden, ohne darauf beschränkt zu sein, sein. Konkretere Beispiele (wobei die Liste keinen Anspruch auf Vollständigkeit erhebt) für die computerlesbaren Speichermedien können aufweisen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte (z. B. die Plattenspeichereinheit 125), einen Direktzugriffsspeicher (RAM) (z. B. den Speicher 102), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM) oder einen Flash-Speicher, einen Lichtwellenleiter, einen tragbaren Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Plattenspeichereinheit, eine magnetische Plattenspeichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. Im Rahmen dieses Schriftstücks kann ein computerlesbares Speichermedium jedes physisch greifbare Medium sein, das ein Programm zur Verwendung durch ein Befehlsausführungssystem, eine Befehlsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • Ein computerlesbarer Signaldatenträger kann ein übertragenes Datensignal mit einem darin enthaltenen computerlesbaren Programmcode, beispielsweise in einem Basisband oder als Teil einer Trägerwelle, aufweisen. Solch ein übertragenes Signal kann eine beliebige einer Vielzahl von Formen einschließlich elektromagnetischer, optischer Formen oder jede beliebige geeignete Kombination dieser Formen, ohne darauf beschränkt zu sein, annehmen. Bei einem computerlesbaren Signaldatenträger kann es sich um jeden beliebigen computerlesbaren Datenträger handeln, der kein computerlesbares Speichermedium ist und der ein Programm zur Verwendung durch oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit überträgt, weiterleitet oder transportiert. Auf einem computerlesbaren Datenträger enthaltener Programmcode kann mittels eines geeigneten Mediums einschließlich eines drahtlosen Mediums, eines drahtgebundenen Mediums, eines Lichtwellenleiterkabels, mittels Hochfrequenz usw., ohne auf diese beschränkt zu sein, oder mittels jeder beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computerprogrammcode, um Operationen für Erscheinungsformen von Ausführungsformen der vorliegenden Erfindung durchzuführen, kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, einschließlich objektorientierter Programmiersprachen und herkömmlicher prozeduraler Programmiersprachen, geschrieben sein. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf einem fernen Computer oder ganz auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden werden oder die Verbindung kann über einen externen Computer (zum Beispiel über das Internet mittels eines Internet-Diensteanbieters) vorgenommen werden.
  • Erscheinungsformen von Ausführungsformen der Erfindung werden nachstehend mit Bezug auf Darstellungen in Flussdiagrammen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten beschrieben. Jeder Block der Darstellungen in den Flussdiagrammen und/oder der Blockschaltbilder sowie Kombinationen aus Blöcken in den Darstellungen der Flussdiagramme und/oder den Blockschaltbildern kann mittels Computerprogrammbefehlen realisiert werden, die sich auf einem computerlesbaren Datenträger befinden. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Computers für spezielle Anwendungen oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die mittels des Prozessors des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die von dem Block oder den Blöcken der Flussdiagramme und/oder der Blockschaltbilder angegeben werden. Diese Computerprogrammbefehle können auch auf einem computerlesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem computerlesbaren Datenträger gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehle enthält, die die Funktion/den Vorgang ausführen, welche bzw. welcher von dem Block oder den Blöcken der Flussdiagramme und/oder der Blockschaltbilder angegeben wird.
  • Die Computerprogramme, die die Funktionen von verschiedenen Ausführungsformen der Erfindung festlegen, können einem Computersystem über viele verschiedene physische, computerlesbare Speichermedien bereitgestellt werden, die operativ oder kommunikativ mit dem Prozessor oder mit den Prozessoren (direkt oder indirekt) verbunden sein können. Die Computerprogrammbefehle können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Flussdiagramme und/oder Blockschaltbilder angegeben sind.
  • Das Flussdiagramm und die Blockschaltbilder in den Figuren zeigen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder den Blockschaltbildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Ausführung der angegebenen logischen Funktion(en) aufweist. In manchen Ausführungsformen treten die in dem Block angegebenen Funktionen gegebenenfalls nicht in der in den Figuren angegebenen Reihenfolge auf. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Jeder Block der Blockschaltbilder und/oder der Darstellung in den Flussdiagrammen sowie Kombinationen aus Blöcken in den Blockschaltbildern und/oder den Darstellungen in den Flussdiagrammen kann von Systemen, die auf Hardware für spezielle Anwendungen beruhen und die angegebenen Funktionen oder Vorgänge durchführen, in Kombinationen aus Hardware für spezielle Anwendungen und Computerbefehlen ausgeführt werden.
  • Ausführungsformen der Erfindung können auch als Teil eines Serviceprojekts mit einem Kunden-Unternehmen, einer gemeinnützigen Organisation, einer staatlichen Stelle oder einer internen Organisationsstruktur geliefert werden. Erscheinungsformen dieser Ausführungsformen können das Konfigurieren eines Computersystems, um bestimmte oder alle der hier beschriebenen Verfahren durchzuführen, und das Einsetzen von Datenverarbeitungsdiensten (z. B. computerlesbarem Code, Hardware und Web-Diensten), die bestimmte oder alle der hier beschriebenen Verfahren umsetzen, aufweisen. Erscheinungsformen dieser Ausführungsformen können auch das Analysieren des Kundenunternehmens, das Erstellen von Empfehlungen als Reaktion auf die Analyse, das Erzeugen von computerlesbarem Code, um Teile der Empfehlungen umzusetzen, das Einbinden des computerlesbaren Codes in vorhandene Prozesse, Computersysteme und Datenverarbeitungsinfrastruktur, das Messen der Inanspruchnahme der hier beschriebenen Verfahren und Systeme mit einem Zähler, das Zuordnen von Kosten zu Benutzern und das dem Benutzer gegenüber erfolgende Inrechnungstellen der Inanspruchnahme dieser Verfahren und Systeme aufweisen. Überdies können verschiedene, nachstehend beschriebene Programme auf der Grundlage der Anwendung, für die sie in einer bestimmten Ausführungsform der Erfindung realisiert werden, angegeben werden. Jede bestimmte Programm-Nomenklatur, die sich ergibt, wird jedoch lediglich aus Gründen der Zweckmäßigkeit verwendet, und folglich sind Ausführungsformen der Erfindung nicht auf eine alleinige Verwendung in einer bestimmten Anwendung, die von dieser Nomenklatur angegeben wird und/oder durch diese Nomenklatur stillschweigend vorausgesetzt wird, beschränkt. Die in 1 dargestellten beispielhaften Umgebungen sind nicht als Einschränkung der vorliegenden Erfindung zu verstehen. Tatsächlich können andere alternative Hardware- und/oder Programmumgebungen verwendet werden, ohne vom Umfang der erfindungsgemäßen Ausführungsformen abzuweichen.
  • 2 zeigt ein Blockschaltbild eines beispielhaften Datenbank-Verwaltungssystems 150 gemäß einer Ausführungsform der Erfindung. Das DBMS 150 weist einen Parser 205, eine syntaktisch analysierte Anweisung 210, einen Optimierer 215, eine Datenbank 220, einen Ausführungsplan 225, eine Ausführungs-Steuerkomponente 230 und eine kryptographische Steuerkomponente 250 auf. In einer anderen Ausführungsform kann die kryptographische Steuerkomponente 250 von dem DBMS 150 getrennt sein und mit dem DBMS 150 kommunizieren. Die kryptographische Steuerkomponente 250 kann zum Beispiel Teil eines Betriebssystems oder eines anderen Programms sein. Die Datenbank 220 weist Tabellen 235, einen Index oder mehrere Indizes 240 und Spalten-Charakterisierungsdaten 242 auf. Die Tabellen 235 organisieren Daten in Zeilen, die einzelne Einträge, Tupel oder Datensätze darstellen, und in Spalten, Felder oder Attribute, die festlegen, was in jeder Zeile, jedem Eintrag, jedem Tupel oder jedem Datensatz gespeichert wird. Jede Tabelle 235 hat einen eindeutigen Namen in der Datenbank 220 und jede Spalte hat einen eindeutigen Namen in der jeweiligen Tabelle 235. Bei den Indizes 240 handelt es sich um Datenstrukturen, die das DBMS 150 als Reaktion darauf, dass die Indizes 240 einen indexierten Spaltenwert empfangen, über die Position einer bestimmten Zeile in einer Tabelle 235 informieren.
  • Der Parser 205 empfängt die Abfrage 158 von der Anwendung 160. Die Abfrage 158 stellt die Anforderung, dass das DBMS 150 nach einer Zeile oder einer Kombination von Zeilen mit Daten sucht oder diese findet und die Daten aus diesen gefundenen Zeilen in dem Ergebnissatz 152 speichert, die die von der Abfrage 158 angegebenen Kriterien, Schlüssel und/oder Werte erfüllen beziehungsweise diesen entsprechen. In einer Ausführungsform sendet die Anwendung 160 dieselbe Abfrage 158 mehrmals an das DBMS 150, was in Abhängigkeit davon, ob sich die Daten in dem DBMS 150 zwischen dem jeweiligen Auftreten der Abfrage 158 geändert haben, gegebenenfalls einen anderen Ergebnissatz 152 zur Folge hat. Der Parser 205 erzeugt aus der Abfrage 158 eine syntaktisch analysierte Anweisung 210, die er dann an den Optimierer 215 sendet. Der Optimierer 215 führt eine Abfrage-Optimierung an der syntaktisch analysierten Anweisung 210 durch. Als Ergebnis der Abfrage-Optimierung erzeugt der Optimierer 215 einen oder mehrere Ausführungspläne 225, wobei er Daten wie zum Beispiel die Verfügbarkeit von Ressourcen, Plattformfunktionen, Informationen über den Inhalt der Abfrage usw. verwendet, die in der Datenbank 220 gespeichert sind. Sobald er erzeugt ist, sendet der Optimierer 215 den Ausführungsplan 225 an die Ausführungs-Steuerkomponente 230, die die Abfrage 158 unter Verwendung des Ausführungsplans 225 und der Indizes 240 ausführt, um die Daten in den Datenbanktabellen 235 in der Datenbank 220 zu finden und abzurufen, welche die Kriterien der Abfrage 158 erfüllen. Die Ausführungs-Steuerkomponente 230 speichert die resultierenden Daten, die die von der Abfrage 158 angegebenen Kriterien erfüllen, in dem Ergebnissatz 152, der als Antwort auf die Abfrage 158 an die Anwendung 160 zurückgeliefert wird. In einer Ausführungsform speichert das DBMS 150 verschiedene Schwellwerte in dem Ausführungsplan 225. Das DBMS 150 kann die verschiedenen Schwellwerte von der Anwendung 160, von einem Benutzer oder von einem Datenbank-Administrator empfangen oder die Schwellwerte können von einem Entwickler des Optimierers 215 gesetzt werden.
  • Die kryptographische Steuerkomponente 250 verschlüsselt die Spalten-Charakterisierungsdaten 242, verschlüsselt von dem Einfüge-/Aktualisierungsbefehl 154 empfangene Werte, wobei sie Schlüssel verwendet, die mit dem Einfüge-/Aktualisierungsbefehl 154 empfangen wurden, und speichert die verschlüsselten Werte in den Tabellen 235. Die kryptographische Steuerkomponente 250 entschlüsselt auch Werte, die als Reaktion auf syntaktisch analysierte Anweisungen aus den Tabellen 235 gelesen wurden. Die Ausführungs-Steuerkomponente 230 kann die kryptographische Steuerkomponente 250 aufrufen, um Daten zu verschlüsseln und zu entschlüsseln.
  • 3 zeigt ein Blockschaltbild einer beispielhaften Datenstruktur für eine Datenbank 220 gemäß einer Ausführungsform der Erfindung. Die Datenbank 220 weist beispielhafte Tabellen 235, Indizes 240 und beispielhafte Spalten-Charakterisierungsdaten 242 auf.
  • Die Tabellen 235 können eine beliebige Anzahl von Tabellen, wie zum Beispiel die beispielhafte Tabelle y 235-1 aufweisen. Die beispielhafte Tabelle y 235-1 ist in Zeilen und Spalten gegliedert. Die Tabelle y 235-1 weist beispielsweise die Spalte y.id 325 und die Spalte y.address 330 auf. Die Tabelle y 235-1 weist des Weiteren eine erste Zeile mit ”1”, was in der Spalte y.id 325 gespeichert wird, und ”679 5th Str Rochester, MN 55905”, was in der Spalte y.address 330 gespeichert wird, auf; eine zweite Zeile mit ”1”, was in der Spalte y.id 325 gespeichert wird, und ”597 9th Str Rochester, MN 55906”, was in der Spalte y.address 330 gespeichert wird, usw. Die Tabelle y 235-1 zeigt Zeilenkennungen (”Zeile 1”, ”Zeile 2”, ”Zeile 3” usw.), die die jeweiligen Zeilen in der Tabelle y 235-1 kennzeichnen. In einer anderen Ausführungsform sind die Zeilenkennungen Adressen (entweder absolute, relative, physische, logische oder virtuelle Adressen), die den Speicherplatz der jeweiligen Zeile kennzeichnen. In einer Ausführungsform zeigen Adressen oder Kennungen in dem Index 240 auf die Zeilenkennungen. In einer anderen Ausführungsform sind die Zeilenkennungen eindeutige Werte in einer Spalte.
  • Die in der Tabelle y 235-1 gespeicherten Datenwerte können verschlüsselt oder unverschlüsselt sein. Verschlüsselung ist der von der kryptographischen Steuerkomponente 250 durchgeführte Prozess, bei dem gewöhnliche Informationen (Klartext) in unverständliche Informationen, die als Geheimtext bezeichnet werden, umgewandelt werden, welche für Personen, die Informationen abfangen oder abhören, oder für andere unbefugte und nicht vorgesehene Personen ohne Kenntnis des Geheimnisses (nämlich des zur Entschlüsselung benötigten Schlüssels) nicht lesbar oder nicht verständlich sind. Obgleich der Geheimtext unverständlich ist, weist er alle Informationen des Klartextes auf. Die Entschlüsselung ist der umgekehrte Prozess, der ebenfalls von der kryptographischen Steuerkomponente 250 durchgeführt wird, bei dem unverständlicher Geheimtext mit Hilfe eines kryptographischen Schlüssels in Klartext umgewandelt wird. Eine Chiffre ist ein Paar von Algorithmen oder Prozessen, die diese Verschlüsselung und die umgekehrte Entschlüsselung vornehmen. Die Funktionsweise der Chiffre wird sowohl von dem Algorithmus der kryptographischen Steuerkomponente 250 als auch von dem kryptographischen Schlüssel gesteuert. Der kryptographische Schlüssel wird auch als Krypto-Variable bezeichnet.
  • In verschiedenen Ausführungsformen kann die kryptographische Steuerkomponente 250 eine Kryptographie mit einem öffentlichen Schlüssel oder mit einem geheimen Schlüssel durchführen. Die Kryptographie mit einem öffentlichen Schlüssel, die auch als asymmetrische Kryptographie bezeichnet wird, ist eine Form der Kryptographie, die ein Paar von verschiedenen kryptographischen Schlüsseln verwendet, welche als öffentlicher Schlüssel (der zur Verschlüsselung verwendet wird) und als privater Schlüssel (der zur Entschlüsselung verwendet wird) bezeichnet werden. Zu Beispielen für Chiffres mit öffentlichem Schlüssel gehören der Diffie-Hellman-Algorithmus, der RSA-Algorithmus (RSA steht für Rivest, Shamir und Adleman), das Cramer-Shoup-Kryptosystem, die EIGamal-Verschlüsselung und Algorithmen mit elliptischen Kurven, doch kann in anderen Ausführungsformen jede geeignete Chiffre mit öffentlichem Schlüssel verwendet werden. Die Kryptographie mit öffentlichem Schlüssel wird der Kryptographie mit geheimem Schlüssel gegenübergestellt, die auch als symmetrische Kryptographie bezeichnet wird und bei der ein einziger geheimer Schlüssel sowohl für die Ver- als auch die Entschlüsselung verwendet wird.
  • Bei der Kryptographie mit öffentlichem Schlüssel hält der Eigentümer des privaten Schlüssels (der Abfragen an die Datenbank richtet) den privaten Schlüssel geheim und teilt ihn nicht mit einer anderen Person, aber der öffentliche Schlüssel kann großräumig an eine beliebige Person oder eine beliebige Entität, die gegebenenfalls über Einfüge- oder Aktualisierungsoperationen Daten an die Datenbank sendet oder an die Datenbank übergibt, verteilt sein. Der öffentliche Schlüssel und der private Schlüssel stehen in einer mathematischen Beziehung zueinander und werden geheim, als ein in Wechselbeziehung stehendes Paar erzeugt, jedoch kann der private Schlüssel praktisch nicht von dem öffentlichen Schlüssel abgeleitet werden. Sender (wie zum Beispiel die Anwendung 160), die Daten an die Datenbank senden, verschlüsseln die Daten mit einer Verschlüsselungs-Chiffre, die den öffentlichen Schlüssel als Eingabe akzeptiert, und anschließend können die verschlüsselten Daten, die ausgegeben werden, nur über eine Entschlüsselungs-Chiffre entschlüsselt werden, die den entsprechenden privaten Schlüssel und die verschlüsselten Daten als Eingabe verwendet.
  • Die beispielhaften Spalten-Charakterisierungsdaten 242 weisen eine beliebige Anzahl von Einträgen auf, einen Eintrag für jede Spalte in jeder Tabelle der Datenbank 220. In dem Beispiel von 3 weisen die Spalten-Charakterisierungsdaten 242 die Einträge 340, 342 und 344 auf. Jeder Eintrag 340, 342 und 344 weist ein beispielhaftes Spaltenkennungs-Feld 350, ein Charakterisierungsdaten-Feld 352 und ein Charakterisierung-aktiviert-Feld 354 auf. Der Inhalt des Spaltenkennungs-Feldes 350 in jedem Eintrag kennzeichnet eindeutig eine Spalte in der Tabelle 235.
  • In einer Ausführungsform weist der Inhalt des Charakterisierungsdaten-Felds 352 die eindeutigen gültigen Zeichen auf, die in der Spalte vorhanden sind, welche von dem Spaltenkennungs-Feld 350 in demselben Eintrag gekennzeichnet wird. Die Zeichen in den Charakterisierungsdaten 352 sind eindeutig, ja jedes Zeichen in einem Eintrag in den Charakterisierungsdaten 352 nur einmal vorhanden ist, selbst wenn dieses Zeichen in der Spalte, die von der Spaltenkennung 350 in demselben Eintrag gekennzeichnet wird, doppelt auftritt. Das Zeichen ”9” ist beispielsweise in den Charakterisierungsdaten 352 des Eintrags 342 nur einmal vorhanden, obgleich es in der Spalte y.address 330 fünf Mal (zweimal in der Zeile 1 und dreimal in der Zeile 2) vorhanden ist. Die Zeichen in den Charakterisierungsdaten 352 kommen nicht unbedingt in der gleichen Reihenfolge vor wie die Zeichen in der Spalte, die von dem Spaltenkennungs-Feld 350 in demselben Eintrag gekennzeichnet wird. In einer Ausführungsform weisen die Charakterisierungsdaten 352 einen Bereich (z. B. den Eintrag 344), der alle Zeichen in der Spalte umfasst, die von der Spaltenkennung 350 in demselben Eintrag gekennzeichnet wird, für alle Zeichen in allen Zeilen der Spalte auf. Der Bereich weist einen niedrigsten oder kleinsten Bereichsanfangswert und einen höchsten oder größten Bereichsendwert auf, und der gesamte gültige Inhalt der Spalte (die von der Spaltenkennung 350 in demselben Eintrag gekennzeichnet wird) der Zeilen liegt innerhalb dieses Bereichs. In einer Ausführungsform werden die Charakterisierungsdaten 352 in einem verschlüsselten Format gespeichert. In einer Ausführungsform werden die Charakterisierungsdaten 352 als Bitmap realisiert.
  • Das Charakterisierung-aktiviert-Feld 354 zeigt an, ob die Charakterisierung für die Spalte, die von dem Spaltenkennungs-Feld 350 in demselben Eintrag gekennzeichnet wird, aktiviert ist. Wenn das Charakterisierung-aktiviert-Feld 354 in einem Eintrag anzeigt, dass die Charakterisierung aktiviert ist, erzeugt das DBMS 150 als Reaktion auf Werte, die in der Spalte, welche von dem Spaltenkennungs-Feld 350 in demselben Eintrag gekennzeichnet wird, hinzugefügt oder aktualisiert werden, einen Inhalt oder fügt dem Charakterisierungsdaten-Feld 352 einen Inhalt hinzu. Wenn das Charakterisierung-aktiviert-Feld 354 in einem Eintrag anzeigt, dass die Charakterisierung nicht aktiviert ist, erzeugt das DBMS 150 als Reaktion auf Werte, die in der Spalte, welche von dem Spaltenkennungs-Feld 350 in demselben Eintrag gekennzeichnet wird, hinzugefügt oder aktualisiert werden, keinen Inhalt oder fügt dem Charakterisierungsdaten-Feld 352 auch keinen Inhalt hinzu. In einer Ausführungsform initialisiert das DBMS 150 als Reaktion auf die Erzeugung eines jeden Eintrags in den Spalten-Charakterisierungsdaten 242 das Charakterisierung-aktiviert-Feld 354, um anzuzeigen, dass die Charakterisierung aktiviert ist.
  • 4 zeigt ein Flussdiagramm einer beispielhaften Verarbeitung für Einfüge- und Aktualisierungsbefehle gemäß einer Ausführungsform der Erfindung. Die Steuerung beginnt am Block 400. Die Steuerung schaltet dann zum Block 405, an dem das DBMS 150 von der Anwendung 160 einen Einfüge- oder Aktualisierungsbefehl 154 empfängt, der eine angegebene Tabelle, eine angegebene Spalte und einen Datenwert angibt, dessen Einfügen in eine neue Zeile in der angegebenen Tabelle der Einfüge- oder Aktualisierungsbefehl 154 anfordert beziehungsweise dessen Speicherung in einer vorhandenen angegebenen Zeile in der angegebenen Tabelle der Befehl anfordert. Der Einfüge- oder Aktualisierungsbefehl 154 weist optional einen kryptographischen Schlüssel und die Angabe der vorhandenen Zeile auf.
  • Die Steuerung schaltet dann zum Block 410, an dem das DBMS 150 als Reaktion auf den Empfang des Einfüge- oder Aktualisierungsbefehls 154 oder als Folge des Empfangs des Einfüge- oder Aktualisierungsbefehls 154 feststellt, ob der empfangene Einfüge- oder Aktualisierungsbefehl 154 einen kryptographischen Schlüssel angibt. Wenn die Feststellung am Block 410 wahr (”true”) ist, gibt der empfangene Einfüge- oder Aktualisierungsbefehl 154 einen kryptographischen Schlüssel an, so dass die Steuerung zum Block 415 schaltet, an dem das DBMS 150 als Reaktion auf den Empfang des Einfüge-/Aktualisierungsbefehls 154 oder als Folge des Empfangs des Einfüge-/Aktualisierungsbefehls 154 und der Feststellung, dass der kryptographische Schlüssel angegeben ist, feststellt, ob die Charakterisierung für die von dem empfangenen Einfüge- oder Aktualisierungsbefehl 154 gekennzeichnete Spalte aktiviert ist. In einer Ausführungsform trifft das DBMS 150 die Feststellung vom Block 415, indem es einen Eintrag in den Spalten-Charakterisierungsdaten 242 mit einer Spaltenkennung 350 findet, die mit der Spaltenkennung übereinstimmt, welche von dem empfangenen Einfüge-/Aktualisierungsbefehl 154 angegeben wird, und indem es feststellt, ob das Charakterisierung-aktiviert-Feld 354 in demselben Eintrag anzeigt, ob die Charakterisierung aktiviert ist.
  • Wenn die Feststellung am Block 415 wahr ist, ist die Charakterisierung für die Spalte, die von dem empfangenen Einfüge- oder Aktualisierungsbefehl 154 angegeben wird, aktiviert, so dass die Steuerung zum Block 420 schaltet, an dem das DBMS 150 Charakterisierungsdaten für den empfangenen Datenwert erzeugt, der einen gültigen Inhalt des empfangenen Datenwerts angibt, die Charakterisierungsdaten mit Hilfe des kryptographischen Schlüssels verschlüsselt und die verschlüsselten Charakterisierungsdaten zu dem Charakterisierungsdaten-Feld 352 des Eintrags hinzufügt, dessen Spaltenkennungs-Feld 350 mit der angegebenen Spalte übereinstimmt. Indem man mehrere Charakterisierungsdaten für mehrere empfangene Datenwerte für verschiedene Zeilen in der Spalte erzeugt, die von mehreren Einfüge-/Aktualisierungsbefehlen 154 angegeben wird, und indem man die erzeugten Charakterisierungsdaten wiederholt zu den Charakterisierungsdaten 352 für jede Zeile in der Spalte hinzufügt oder die vorhandenen Charakterisierungsdaten 352 mittels der neu erzeugten Charakterisierungsdaten für den aktuellen empfangenen Befehl 154 ändert, erzeugt das DBMS 150 so Charakterisierungsdaten 352, die die gültigen Zeichen für alle Zeilen in der Spalte beschreiben oder wiedergeben.
  • In einer Ausführungsform erzeugt das DBMS 150 die Charakterisierungsdaten, die den gültigen Inhalt der Spalte angeben, indem es alle Zeichen von dem Datenwert, die noch nicht in den Charakterisierungsdaten vorhanden sind, zu den Charakterisierungsdaten hinzufügt und es unterlässt, alle Zeichen von dem Datenwert, die in den Charakterisierungsdaten für die Spalte bereits vorhanden sind, hinzuzufügen. In einer Ausführungsform weisen die Charakterisierungsdaten 352 in einem Eintrag der Spalten-Charakterisierungsdaten 242 ein einmaliges Auftreten eines jeden Zeichens, das in den Zeilen der Spalte vorhanden ist, welche von der Spaltenkennung 350 gekennzeichnet wird, in demselben Eintrag der Spalten-Charakterisierungsdaten 242 auf.
  • In einer Ausführungsform erzeugt das DBMS 150 die Charakterisierungsdaten, die den gültigen Inhalt der Spalte angeben, indem es einen Bereich in den Charakterisierungsdaten speichert, der alle Zeichen in dem empfangenen Datenwert und alle Zeichen in allen Zeilen der Spalte umfasst. Der Bereich weist einen niedrigsten oder kleinsten Bereichsanfangswert und einen höchsten oder größten Bereichsendwert auf, und der gesamte gültige Inhalt der Spalte der Zeilen liegt innerhalb dieses Bereichs.
  • In einer Ausführungsform erzeugt das DBMS 150 die Charakterisierungsdaten, indem es eine Bitmap, einen Hash, Hash-Werte, Hash-Codes, eine Hash-Summe oder eine Prüfsumme des Datenwerts erzeugt, der von dem Einfüge-/Aktualisierungsbefehl 154 angegeben wird, und den Hash zu den Charakterisierungsdaten 352 hinzufügt. In verschiedenen Ausführungsformen erzeugt das DBMS 150 die Charakterisierungsdaten aus allen Datenwerten, die von allen Befehlen empfangen werden, oder indem es Datenwerte aus einem Befehlsmuster abtastet. In einer Ausführungsform tastet das DBMS 150 mehr Daten von Befehlen ab, die eine größere Datenmenge angeben, und es tastet weniger Daten von Befehlen ab, die eine kleinere Datenmenge angeben.
  • Die Steuerung schaltet dann zum Block 425, an dem das DBMS 150 den Datenwert mit Hilfe des kryptographischen Schlüssels verschlüsselt und den verschlüsselten Wert in eine Zeile der Spalte in der Datenbank, die von dem Einfüge-/Aktualisierungsbefehl 154 angegeben wird, einfügt oder den verschlüsselten Wert aktualisiert.
  • Daraufhin schaltet die Steuerung zum Block 430, an dem das DBMS 150 feststellt, ob mehr als ein Schwellwert-Prozentsatz aller möglichen Zeichen in den Charakterisierungsdaten 352 für die Spalte vorhanden sind oder ob das DBMS 150 in letzter Zeit mehr als eine Schwellwertzahl von Einfüge-/Aktualisierungsbefehlen (innerhalb eines Schwellwert-Zeitraums) von der Anwendung 160 empfangen hat, welche den Einfüge-/Aktualisierungsbefehl 154 gesendet hat.
  • Wenn die Feststellung am Block 430 wahr ist, ist mehr als ein Schwellwert-Prozentsatz aller möglichen Zeichen in den Charakterisierungsdaten 352 für die Spalte vorhanden oder von dem DBMS 150 wurde in letzter Zeit mehr als eine Schwellwertzahl von Einfüge-/Aktualisierungsbefehlen 154 von der Anwendung 160, die den Einfüge-/Aktualisierungsbefehl 154 gesendet hat, empfangen (innerhalb eines Schwellwert-Zeitraums), so dass die Steuerung zum Block 435 schaltet, an dem das DBMS 150 die Charakterisierung für die Spalte deaktiviert, indem es das Charakterisierung-aktiviert-Feld 354 in dem Eintrag mit einem Spaltenkennungs-Feld 350 setzt, das mit der Spalte übereinstimmt, welche von dem Einfüge-/Aktualisierungsbefehl 154 angegeben wurde, um anzuzeigen, dass die Charakterisierung nicht aktiviert ist oder nicht angehalten wurde. Die Steuerung schaltet dann zum Block 499, an dem die Logik von 4 zurückkehrt.
  • Wenn die Feststellung am Block 430 falsch ist, ist ein Prozentsatz aller möglichen Zeichen, der geringer oder gleich einem Schwellwert-Prozentsatz ist, in den Charakterisierungsdaten 352 für die Spalte vorhanden und von dem DBMS 150 wurde in letzter Zeit eine Anzahl von Einfüge-/Aktualisierungsbefehlen 154, die geringer oder gleich einer Schwellwertzahl ist, von der Anwendung 160 empfangen (innerhalb eines Schwellwert-Zeitraums), die den Einfüge-/Aktualisierungsbefehl 154 gesendet hat, so dass die Steuerung zum Block 499 schaltet, an dem die Logik des Blocks 499 zurückkehrt, ohne die Charakterisierung für die Spalte zu deaktivieren.
  • Wenn die Feststellung am Block 415 falsch ist, ist die Charakterisierung für die von dem empfangenen Einfüge-/Aktualisierungsbefehl 154 angegebene Spalte nicht aktiviert oder wurde nicht angehalten, so dass die Steuerung zum Block 440 schaltet, an dem das DBMS 150 den empfangenen Datenwert mit Hilfe des kryptographischen Schlüssels verschlüsselt und den verschlüsselten Datenwert in eine(r) Zeile in der Spalte, die von dem empfangenen Einfüge-/Aktualisierungsbefehl 154 angegeben wird, einfügt/den verschlüsselten Datenwert aktualisiert, ohne Charakterisierungsdaten zu erzeugen. Die Steuerung schaltet dann zum Block 499, an dem die Logik von 4 zurückkehrt.
  • Wenn die Feststellung am Block 410 falsch ist, gibt der empfangene Befehl keinen kryptographischen Schlüssel an, so dass die Steuerung zum Block 445 schaltet, an dem das DBMS 150 den Datenwert in eine(r) Zeile in der angegebenen Spalte in der angegebenen Tabelle in der Datenbank einfügt oder den Datenwert aktualisiert, ohne Charakterisierungsdaten zu erzeugen. Die Steuerung schaltet dann zum Block 499, an dem die Logik von 4 zurückkehrt.
  • 5 zeigt ein Flussdiagramm einer beispielhaften Verarbeitung für eine Abfrage gemäß einer Ausführungsform der Erfindung. Die Steuerung beginnt am Block 500. Die Steuerung schaltet dann zum Block 505, an dem das DBMS 150 (von der Anwendung 160) einen Abfragebefehl 158 empfängt, der eine bestimmte Tabelle, eine bestimmte Spalte, ein bestimmtes Kriterium und optional einen bestimmten kryptographischen Schlüssel angibt.
  • Die Steuerung schaltet dann zum Block 510, an dem das DBMS 150 feststellt, ob die empfangene Abfrage einen kryptographischen Schlüssel angibt. Wenn die Feststellung am Block 510 wahr ist, gibt die empfangene Abfrage einen kryptographischen Schlüssel an, so dass die Steuerung zum Block 515 schaltet, an dem das DBMS 150 alle Zeilen der Spalte mit Hilfe des von der Abfrage angegebenen kryptographischen Schlüssels in einen entschlüsselten Datenwert entschlüsselt. In verschiedenen Ausführungsformen kann der empfangene kryptographische Schlüssel mit dem kryptographischen Schlüssel, mit dem das DBMS 150 Daten in der angegebenen Spalte verschlüsselt hat, übereinstimmen oder von diesem abweichen. Die Steuerung schaltet dann zum Block 520, an dem das DBMS 150 feststellt, ob die Charakterisierung für die von dem Abfragebefehl angegebene Spalte aktiviert ist, indem es das Charakterisierung-aktiviert-Feld 354 von dem Eintrag mit einer Spaltenkennung 350, die mit der angegebenen Spalte übereinstimmt, liest.
  • Wenn die Feststellung am Block 520 wahr ist, ist die Charakterisierung für die von dem Abfragebefehl 158 angegebene Spalte aktiviert, so dass die Steuerung zum Block 525 schaltet, an dem das DBMS 150 feststellt, ob der entschlüsselte Datenwert den Charakterisierungsdaten 352 entspricht (z. B., ob alle Zeichen in dem entschlüsselten Datenwert in den Charakterisierungsdaten 352 vorhanden sind oder innerhalb des Bereichs der gültigen Zeichen liegen oder von diesem abgedeckt werden, der von den Charakterisierungsdaten 352 für die Spalte angegeben wird).
  • Wenn die Feststellung am Block 525 wahr ist, entspricht der entschlüsselte Datenwert den Charakterisierungsdaten 352 (z. B. alle Zeichen in dem entschlüsselten Datenwert sind in den Charakterisierungsdaten 352 vorhanden oder befinden sich innerhalb des Bereichs der gültigen Zeichen, die von den Charakterisierungsdaten 352 für die Spalte angegeben werden, oder werden von diesem Bereich abgedeckt), so dass die Steuerung zum Block 530 schaltet, an dem das DBMS 150 einen Ergebnissatz 152, der Daten von den Zeilen der Spalten der Datenbank 220 aufweist, welche die von dem Abfragebefehl 158 angegebenen Kriterien erfüllen, erzeugt und im Speicher 102 ablegt und den Ergebnissatz 152 an die Anwendung 160 sendet, die den Abfragebefehl 158 gesendet hat. Das DBMS 150 erzeugt den Ergebnissatz 152, indem es alle Zeilen in den Datenbanktabellen 235 findet, die die von der Abfrage 158 angegebenen Kriterien erfüllen, und diese Zeilen in dem Ergebnissatz 152 im Speicher 102 speichert. Die Steuerung schaltet dann zum Block 599, an dem die Logik von 5 zurückkehrt.
  • Wenn die Feststellung am Block 525 falsch ist, genügt oder entspricht der entschlüsselte Datenwert nicht den Charakterisierungsdaten 352 (z. B. mindestens eines der Zeichen in dem entschlüsselten Datenwert ist in den Charakterisierungsdaten 352 nicht vorhanden oder befindet sich außerhalb des Bereichs der gültigen Zeichen, die von den Charakterisierungsdaten 352 für die Spalte angegeben werden, oder werden von diesem Bereich nicht abgedeckt), so dass die Steuerung zum Block 535 schaltet, an dem das DBMS 150 eine Aktion mit einem ungültigen kryptographischen Schlüssel durchführt. In verschiedenen Ausführungsformen weist die Aktion mit dem ungültigen kryptographischen Schlüssel das Unterlassen der Speicherung der entschlüsselten Daten in dem Ergebnissatz 152, das Verzögern einer Antwort auf einen nächsten Befehl von dem Anwendungsprogramm 160, das den ersten Befehl gesendet hat, das Speichern von Informationen, die das Anwendungsprogramm 160 beschreiben, das den ersten Befehl gesendet hat, das Anhalten der Ausführung des Anwendungsprogramms 160, das den ersten Befehl gesendet hat, das Schließen einer Verbindung zu dem Anwendungsprogramm 160, das den ersten Befehl gesendet hat, das Benachrichtigen eines Administrators, dass die entschlüsselten Daten nicht dem gültigen Inhalt entsprechen, der von den Charakterisierungsdaten 352 angegeben wird, das Zurückliefern von Null oder anderen ungültigen Daten an das Anwendungsprogramm 160, das Erhöhen der Verzögerung, mit der auf den Befehl reagiert wird, bei jedem Befehl, bei dem der entschlüsselte Datenwert nicht den Charakterisierungsdaten 352 entspricht, das Speichern der Daten in einem Protokoll, das den Benutzer, das Anwendungsprogramm 160, die Netzwerkadresse des Anwendungsprogramms 160, den Abfragebefehl 158 und/oder den Stapelspeicher des Anwendungsprogramms 160 ausweist, und/oder das Aufrufen eines Exitprogramms, das von einem Entwickler oder Administrator des DBMS 150 bereitgestellt wird, auf. Folglich erkennt das DBMS 150 in einer Ausführungsform die Übergabe von ungültigen kryptographischen Schlüsseln und ergreift als Reaktion darauf eine geeignete Maßnahme. In verschiedenen Ausführungsformen können ungültige kryptographische Schlüssel von unbefugten Benutzern herrühren, die versucht haben, auf die vertraulichen Daten von anderen zuzugreifen, oder sie können von einer nicht ordnungsgemäß konfigurierten Umgebung herrühren. Die Steuerung schaltet dann zum Block 599, an dem die Logik von 5 zurückkehrt.
  • Wenn die Feststellung am Block 520 falsch ist, ist die Charakterisierung für die Spalte nicht aktiviert oder wurde nicht angehalten, so dass die Steuerung zum Block 530 schaltet, wie vorstehend bereits beschrieben wurde. Die Steuerung schaltet dann zum Block 599, an dem die Logik von 5 zurückkehrt.
  • Wenn die Feststellung am Block 510 falsch ist, gibt die Abfrage keinen kryptographischen Schlüssel an, so dass die Steuerung zum Block 530 schaltet, wie vorstehend bereits beschrieben wurde.
  • Die hier verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben und ist nicht als Einschränkung der Erfindung zu verstehen. Die Singular-Formen ”ein”, ”eine” und ”der”, ”die”, ”das” sollen in der hier verwendeten Weise auch die Plural-Formen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe ”aufweist” und/oder ”aufweisend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein der angegebenen Merkmale, ganzen Zahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen der Vorgenannten jedoch nicht ausschließen. In der vorhergehenden ausführlichen Beschreibung von beispielhaften Ausführungsformen der Erfindung wurde Bezug auf die beigefügten Zeichnungen genommen (in denen gleiche Bezugszahlen gleiche Elemente darstellen), die Bestandteil hiervon sind und in denen bestimmte beispielhafte Ausführungsformen, in denen die Erfindung in die Praxis umgesetzt werden kann, abgebildet sind. Diese Ausführungsformen wurden ausführlich genug beschrieben, um es einem Fachmann zu ermöglichen, die Erfindung in die Praxis umzusetzen, doch können andere Ausführungsformen verwendet werden und logische, mechanische, elektrische und andere Änderungen können vorgenommen werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen. In der vorhergehenden Beschreibung wurden zahlreiche ganz bestimmte Einzelheiten aufgezeigt, um ein tiefgreifendes Verständnis von Ausführungsformen der Erfindung zu ermöglichen. Ausführungsformen der Erfindung können jedoch auch ohne diese ganz bestimmten Einzelheiten in die Praxis umgesetzt werden. In anderen Fällen wurden bekannte Schaltungen, Strukturen und Techniken nicht ausführlich gezeigt, um bei Ausführungsformen der Erfindung keine Unklarheit aufkommen zu lassen.
  • Verschiedene Instanzen des Wortes ”Ausführungsform”, wie sie in dieser Beschreibung verwendet werden, beziehen sich nicht unbedingt auf dieselbe Ausführungsform, können sich aber auf dieselbe Ausführungsform beziehen. Alle Daten und Datenstrukturen, die hier veranschaulicht oder beschrieben werden, haben lediglich Beispielcharakter und in anderen Ausführungsformen können andere Datenmengen, andere Arten von Daten, andere Felder, eine andere Anzahl und andere Arten von Feldern, andere Feldnamen, eine andere Anzahl und andere Arten von Zeilen, Datensätzen, Einträgen oder Organisationen der Daten verwendet werden. Überdies können alle Daten mit Logik kombiniert werden, so dass keine gesonderte Datenstruktur notwendig ist. Die vorhergehende ausführliche Beschreibung ist daher nicht als Einschränkung zu verstehen.

Claims (15)

  1. Verfahren, aufweisend: als Reaktion auf einen Empfang eines ersten Befehls, der erste Daten angibt, eines ersten kryptographischen Schlüssels und einer Spaltenkennung, die eine Spalte mit Zeilen in einer Datenbank kennzeichnet, Verschlüsseln der ersten Daten mit Hilfe des ersten kryptographischen Schlüssels in verschlüsselte Daten und Speichern der verschlüsselten Daten in einer ersten Zeile in der Spalte in der Datenbank; als Reaktion auf den Empfang des ersten Befehls, Erzeugen von Charakterisierungsdaten, die den gültigen Inhalt der Spalte mit den Zeilen angeben; als Reaktion auf einen Empfang eines Abfragebefehls, der einen zweiten kryptographischen Schlüssel und die Spalte angibt, Entschlüsseln der Spalte mit Hilfe des zweiten Schlüssels, um entschlüsselte Daten zu erzeugen; und wenn die entschlüsselten Daten dem von den Charakterisierungsdaten angegebenen gültigen Inhalt nicht entsprechen, Durchführen einer Aktion mit einem ungültigen kryptographischen Schlüssel.
  2. Verfahren nach Anspruch 1, wobei das Erzeugen der Charakterisierungsdaten des Weiteren aufweist: Hinzufügen aller Zeichen von den ersten Daten, die noch nicht in den Charakterisierungsdaten vorhanden sind, zu den Charakterisierungsdaten und Unterlassen des Hinzufügens aller Zeichen von den ersten Daten, die bereits in den Charakterisierungsdaten vorhanden sind, wobei die Charakterisierungsdaten ein einmaliges Auftreten eines jeden Zeichens aufweisen, das in der Spalte mit den Zeilen vorhanden ist.
  3. Verfahren nach Anspruch 2, das des Weiteren aufweist: wenn mehr als ein Schwellwert-Prozentsatz aller möglichen Zeichen in den Charakterisierungsdaten vorhanden ist, Deaktivieren des Hinzufügens aller Zeichen von den ersten Daten, die noch nicht in den Charakterisierungsdaten vorhanden sind, zu den Charakterisierungsdaten.
  4. Verfahren nach Anspruch 1, wobei das Erzeugen der Charakterisierungsdaten des Weiteren aufweist: Erzeugen eines Bereichs, wobei der gesamte gültige Inhalt der Spalte mit den Zeilen innerhalb des Bereichs liegt.
  5. Verfahren nach Anspruch 1, wobei das Erzeugen der Charakterisierungsdaten des Weiteren aufweist: Erzeugen eines Hashs der ersten Daten.
  6. Verfahren nach Anspruch 1, wobei das Erzeugen der Charakterisierungsdaten des Weiteren aufweist: Verschlüsseln der Charakterisierungsdaten.
  7. Verfahren nach Anspruch 1, das des Weiteren aufweist: wenn mehr als eine Schwellwertzahl von Einfügebefehlen innerhalb eines Schwellwert-Zeitraums empfangen worden ist, Deaktivieren des Erzeugens der Charakterisierungsdaten.
  8. Verfahren nach Anspruch 1, das des Weiteren aufweist: wenn die entschlüsselten Daten dem gültigen Inhalt entsprechen, der von den Charakterisierungsdaten angegeben wird, Speichern der entschlüsselten Daten in einem Ergebnissatz.
  9. Verfahren nach Anspruch 1, wobei die Aktion mit dem ungültigen kryptographischen Schlüssel aus einer Gruppe ausgewählt wird, die besteht aus: Unterlassen der Speicherung der entschlüsselten Daten in einem Ergebnissatz, Verzögern einer Antwort auf einen nächsten Befehl von einem Programm, das den ersten Befehl gesendet hat, Speichern von Informationen, die das Programm beschreiben, das den ersten Befehl gesendet hat, Anhalten der Ausführung des Programms, das den ersten Befehl gesendet hat, Schließen einer Verbindung zu dem Programm, das den ersten Befehl gesendet hat, und Benachrichtigen eines Administrators, dass die entschlüsselten Daten nicht dem gültigen Inhalt entsprechen, der von den Charakterisierungsdaten angegeben wird.
  10. Computersystem, aufweisend: einen Prozessor; und Hauptspeicher, der kommunikativ mit dem Prozessor verbunden ist, wobei der Speicher mit Befehlen codiert wird, wobei die Befehle, wenn sie von dem Prozessor ausgeführt werden, aufweisen: als Reaktion auf einen Empfang eines ersten Befehls, der erste Daten angibt, eines ersten kryptographischen Schlüssels und einer Spaltenkennung, die eine Spalte mit Zeilen in einer Datenbank kennzeichnet, Verschlüsseln der ersten Daten mit Hilfe des ersten kryptographischen Schlüssels in verschlüsselte Daten und Speichern der verschlüsselten Daten in einer ersten Zeile in der Spalte in der Datenbank, als Reaktion auf den Empfang des ersten Befehls, Erzeugen von Charakterisierungsdaten, die den gültigen Inhalt der Spalte mit den Zeilen angeben, wobei die Charakterisierungsdaten verschlüsselt werden, als Reaktion auf einen Empfang eines Abfragebefehls, der einen zweiten kryptographischen Schlüssel und die Spalte angibt, Entschlüsseln der Spalte mit Hilfe des zweiten Schlüssels, um entschlüsselte Daten zu erzeugen, wenn die entschlüsselten Daten dem von den Charakterisierungsdaten angegebenen gültigen Inhalt nicht entsprechen, Durchführen einer Aktion mit einem ungültigen kryptographischen Schlüssel, wenn die entschlüsselten Daten dem von den Charakterisierungsdaten angegebenen gültigen Inhalt entsprechen, Speichern der entschlüsselten Daten in einem Ergebnissatz und wenn mehr als eine Schwellwertzahl von Einfügebefehlen innerhalb eines Schwellwert-Zeitraums empfangen worden ist, Deaktivieren des Erzeugens der Charakterisierungsdaten.
  11. Computersystem nach Anspruch 10, wobei das Erzeugen der Charakterisierungsdaten des Weiteren aufweist: Hinzufügen aller Zeichen von den ersten Daten, die noch nicht in den Charakterisierungsdaten vorhanden sind, zu den Charakterisierungsdaten und Unterlassen des Hinzufügens aller Zeichen von den ersten Daten, die bereits in den Charakterisierungsdaten vorhanden sind, wobei die Charakterisierungsdaten ein einmaliges Auftreten eines jeden Zeichens aufweisen, das in der Spalte mit den Zeilen vorhanden ist.
  12. Computersystem nach Anspruch 11, wobei die Befehle des Weiteren aufweisen: wenn mehr als ein Schwellwert-Prozentsatz aller möglichen Zeichen in den Charakterisierungsdaten vorhanden ist, Deaktivieren des Hinzufügens aller Zeichen von den ersten Daten, die noch nicht in den Charakterisierungsdaten vorhanden sind, zu den Charakterisierungsdaten.
  13. Computersystem nach Anspruch 10, wobei das Erzeugen der Charakterisierungsdaten des Weiteren aufweist: Erzeugen eines Bereichs, wobei der gesamte gültige Inhalt der Spalte mit den Zeilen innerhalb des Bereichs liegt.
  14. Computersystem nach Anspruch 10, wobei die Aktion mit dem ungültigen kryptographischen Schlüssel aus einer Gruppe ausgewählt wird, die besteht aus: Unterlassen der Speicherung der entschlüsselten Daten in einem Ergebnissatz, Verzögern einer Antwort auf einen nächsten Befehl von einem Programm, das den ersten Befehl gesendet hat, Speichern von Informationen, die das Programm beschreiben, das den ersten Befehl gesendet hat, Anhalten der Ausführung des Programms, das den ersten Befehl gesendet hat, Schließen einer Verbindung zu dem Programm, das den ersten Befehl gesendet hat, und Benachrichtigen eines Administrators, dass die entschlüsselten Daten nicht dem gültigen Inhalt entsprechen, der von den Charakterisierungsdaten angegeben wird.
  15. Computerlesbares Speichermedium, das mit Befehlen codiert wird, wobei die Befehle, wenn sie ausgeführt werden, aufweisen: als Reaktion auf den Empfang eines ersten Befehls, der erste Daten angibt, eines ersten kryptographischen Schlüssels und einer Spaltenkennung, die eine Spalte mit Zeilen in einer Datenbank kennzeichnet, Verschlüsseln der ersten Daten mit Hilfe des ersten kryptographischen Schlüssels in verschlüsselte Daten und Speichern der verschlüsselten Daten in einer ersten Zeile in der Spalte in der Datenbank; als Reaktion auf den Empfang des ersten Befehls, Erzeugen von Charakterisierungsdaten, die den gültigen Inhalt der Spalte mit den Zeilen angeben, wobei die Charakterisierungsdaten verschlüsselt werden; als Reaktion auf den Empfang eines Abfragebefehls, der einen zweiten kryptographischen Schlüssel und die Spalte angibt, Entschlüsseln der Spalte mit Hilfe des zweiten Schlüssels, um entschlüsselte Daten zu erzeugen; wenn die entschlüsselten Daten dem von den Charakterisierungsdaten angegebenen gültigen Inhalt nicht entsprechen, Durchführen einer Aktion mit einem ungültigen kryptographischen Schlüssel; und wenn die entschlüsselten Daten dem von den Charakterisierungsdaten angegebenen gültigen Inhalt entsprechen, Speichern der entschlüsselten Daten in einem Ergebnissatz.
DE102012218576.3A 2011-10-14 2012-10-11 Verschlüsseln von Daten und Charakterisierungsdaten, die den gültigen Inhalt einer Spalte beschreiben Active DE102012218576B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/273,725 US8769302B2 (en) 2011-10-14 2011-10-14 Encrypting data and characterization data that describes valid contents of a column
US13/273,725 2011-10-14

Publications (2)

Publication Number Publication Date
DE102012218576A1 true DE102012218576A1 (de) 2013-04-18
DE102012218576B4 DE102012218576B4 (de) 2021-08-26

Family

ID=47225469

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102012218576.3A Active DE102012218576B4 (de) 2011-10-14 2012-10-11 Verschlüsseln von Daten und Charakterisierungsdaten, die den gültigen Inhalt einer Spalte beschreiben

Country Status (3)

Country Link
US (1) US8769302B2 (de)
DE (1) DE102012218576B4 (de)
GB (1) GB2495599B (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6056850B2 (ja) * 2012-03-29 2017-01-11 日本電気株式会社 暗号化データベースシステム、クライアント端末、データベースサーバ、データ結合方法、および、プログラム
WO2013174457A1 (en) * 2012-05-24 2013-11-28 Nec Europe Ltd. Method for storing data in a relational database and relational database server
US9076003B2 (en) * 2013-08-20 2015-07-07 Janus Technologies, Inc. Method and apparatus for transparently encrypting and decrypting computer interface data
US10031904B2 (en) * 2014-06-30 2018-07-24 International Business Machines Corporation Database management system based on a spreadsheet concept deployed in an object grid
CN105450406B (zh) * 2014-07-25 2018-10-02 华为技术有限公司 数据处理的方法和装置
CN106934030B (zh) * 2016-12-08 2019-12-31 戴林 一种面向数据库加密的密文索引方法和库内加密系统
US10540338B2 (en) 2017-01-30 2020-01-21 Alfresco Software, Inc. Scalable fine grained access control within a search engine
US11886431B2 (en) * 2018-05-22 2024-01-30 Hyland Uk Operations Limited Real-time analytical queries of a document store
US11074364B2 (en) * 2018-12-20 2021-07-27 Microsoft Technology Licensing, Llc Confidential data security

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7152165B1 (en) * 1999-07-16 2006-12-19 Intertrust Technologies Corp. Trusted storage systems and methods
US7493488B2 (en) 2003-07-24 2009-02-17 International Business Machines Corporation Method to disable on/off capacity in demand
US7751568B2 (en) 2003-12-31 2010-07-06 International Business Machines Corporation Method for securely creating an endorsement certificate utilizing signing key pairs
US8639947B2 (en) * 2004-06-01 2014-01-28 Ben Gurion University Of The Negev Research And Development Authority Structure preserving database encryption method and system
US7409558B2 (en) 2004-09-02 2008-08-05 International Business Machines Corporation Low-latency data decryption interface
US7797342B2 (en) 2004-09-03 2010-09-14 Sybase, Inc. Database system providing encrypted column support for applications
US20060282372A1 (en) * 2005-06-09 2006-12-14 Endres Timothy G Method to secure credit card information stored electronically
EP2039053B1 (de) 2006-06-30 2018-05-23 Koninklijke Philips N.V. Verfahren und vorrichtung zur verschlüsselung und entschlüsselung von daten
US8077059B2 (en) * 2006-07-21 2011-12-13 Eric John Davies Database adapter for relational datasets
US8024579B2 (en) 2006-12-29 2011-09-20 Lenovo (Singapore) Pte Ltd. Authenticating suspect data using key tables
US7870398B2 (en) * 2007-01-25 2011-01-11 International Business Machines Corporation Integrity assurance of query result from database service provider
US20100131752A1 (en) 2008-11-26 2010-05-27 Ulrich Flegel Method and system for invalidation of cryptographic shares in computer systems

Also Published As

Publication number Publication date
US20130097430A1 (en) 2013-04-18
GB2495599B (en) 2015-06-03
US8769302B2 (en) 2014-07-01
DE102012218576B4 (de) 2021-08-26
GB201217507D0 (en) 2012-11-14
GB2495599A (en) 2013-04-17

Similar Documents

Publication Publication Date Title
DE102012218576B4 (de) Verschlüsseln von Daten und Charakterisierungsdaten, die den gültigen Inhalt einer Spalte beschreiben
DE112018000779T5 (de) Tokenbereitstellung für Daten
DE112018001285B4 (de) Kryptografische Schlüsselerzeugung mit Anwendung auf Datendeduplizierung
DE60112205T2 (de) Methode und Verfahren zum Schutz von aus einer Datenbank abgerufenen Daten
DE202018006529U1 (de) Gemeinsames Nutzen bzw. Teilen von Daten in einem mandantenfähigen Datenbanksystem
DE112012002541B4 (de) Einer Warteschlangenumgebung für Anforderung/Antwort-Nachrichten zugehörige dynamische Datenschutzrichtlinien
EP2409255B1 (de) Verfahren zur erzeugung von asymmetrischen kryptografischen schlüsselpaaren
US20180189511A1 (en) Method and System for Range Search on Encrypted Data
US20080107272A1 (en) Access Control Over Multicast
DE202015104128U1 (de) Datenzugriffssystem
DE112021004937T5 (de) Sicheres erneutes verschlüsseln von homomorph verschlüsselten daten
DE202012013453U1 (de) Gehostete Speichersperrung
DE202012013482U1 (de) Verteilung von Zugriffsinformationen auf Overlay-Netzwerken
DE112021005561T5 (de) Implementieren einer widerstandsfähigen deterministischen verschlüsselung
DE112021000224T5 (de) Verschlüsselung von message queues
DE102011003784B3 (de) Sichern von Zugriffen auf verteilte Daten in einem unsicheren Datennetz
EP3552141B1 (de) Server-computersystem zur bereitstellung von datensätzen
EP3588357B1 (de) System mit zertifikat-basierter zugriffskontrolle
WO2016139371A1 (de) Verfahren und system zum verwalten von nutzerdaten eines nutzerendgeräts
DE112019003808B4 (de) Zweckspezifische Zugriffssteuerung auf Grundlage einer Datenverschlüsselung
WO2015074745A1 (de) Verfahren, vorrichtungen und system zur online-datensicherung
DE102021108961A1 (de) Verschlüsselungsschlüssel von speichersystemen
Vonitsanos et al. Security and privacy solutions associated with NoSQL data stores
EP3105703B1 (de) Verfahren und system zum sichern von datenbankrelationen vor unberechtigtem zugriff
Rahman et al. A novel privacy preserving search technique for stego data in untrusted cloud

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: SPIES DANNER & PARTNER PATENTANWAELTE PARTNERS, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES DANNER & PARTNER PATENTANWAE, DE

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final