DE69431944T2 - Verfahren zum effizienten Aktualisieren des Hashwertes eines Dateien - Google Patents

Verfahren zum effizienten Aktualisieren des Hashwertes eines Dateien Download PDF

Info

Publication number
DE69431944T2
DE69431944T2 DE69431944T DE69431944T DE69431944T2 DE 69431944 T2 DE69431944 T2 DE 69431944T2 DE 69431944 T DE69431944 T DE 69431944T DE 69431944 T DE69431944 T DE 69431944T DE 69431944 T2 DE69431944 T2 DE 69431944T2
Authority
DE
Germany
Prior art keywords
data
file
checksum
hash
record
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69431944T
Other languages
English (en)
Other versions
DE69431944D1 (de
DE69431944T3 (de
Inventor
Addison M Fischer
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.)
Individual
Original Assignee
Individual
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=22551646&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE69431944(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Individual filed Critical Individual
Publication of DE69431944D1 publication Critical patent/DE69431944D1/de
Application granted granted Critical
Publication of DE69431944T2 publication Critical patent/DE69431944T2/de
Publication of DE69431944T3 publication Critical patent/DE69431944T3/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • 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
    • 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
    • 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/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft im großen und ganzen die Computerdatensicherheit. Insbesondere betrifft sie die Methodologie zum Erzeugen der Prüfsumme einer Datei, die periodisch aktualisiert wird.
  • HINTERGRUND UND ZUSAMMENFASSUNG DER ERFINDUNG
  • Insbesondere wurde es mit dem Auftauchen von elektronischen Geschäftstransaktionen äußerst wichtig, Vertraulichkeit und Unversehrtheit von Daten einer Arbeitsstation zu gewährleisten (unabhängig davon, ob sie von einem Laptop-Computer, einem Terminal eines Großrechners, einem Einzelplatz-PC, oder irgend einer anderen Art einer Computernetzwerkarbeitsstation erzeugt werden). Zum Beispiel verschlüsseln viele Anwender von Laptop-Computern alle Festplattendaten, um die Vertraulichkeit der Daten zu gewährleisten. Die Verschlüsselung versteckt die Daten gegenüber unbeabsichtigter Offenbarung.
  • An sich und für sich genommen gewährleistet die Verschlüsselung nicht die Unversehrtheit der Daten. Zum Beispiel hindert die Verschlüsselung nicht einen Gegner, der heimlich Zugang zu dem Computer erhalten kann, daran, ein spezielles Sabotageprogramm laufen zu lassen, das – obwohl es unfähig ist, von einem bestimmten Stück der verschlüsselten Daten Sinn zu machen – versuchen kann, zufällig die verschlüsselten Daten mit anderen möglichen zufälligen Informationen zu überschreiben, wodurch eine fehlerhafte Analyse bewirkt wird, wenn die Daten schließlich für die Eingabe von anderen Prozessen entschlüsselt werden.
  • In Abhängigkeit von dem Verschlüsselungsprotokoll, dem Dateityp, der beschädigt wurde, und wie er beschädigt wurde, ist es möglich, daß diese Änderung unbemerkt bleiben kann und zu fehlerhaften Resultaten führen kann, wenn die Daten von dem richtigen Eigentümer verarbeitet werden. Es ist z.B. insbesondere leicht, daß das auftritt, wenn die beschädigten Daten binäre numerische Daten enthalten. Der Eigentümer kann zu einer fehlerhaften Handlung durch die falschen Resultate geführt werden.
  • Es ist bekannt, daß die Unversehrtheit der Datei geschützt werden kann, indem eine Einwegprüfsumme (z.B., indem MD5 oder der sichere Prüfsummenalgorithmus SHA eingesetzt wird) über den Inhalt der Datei gemacht wird. Durch Implementieren und Vergleichen eines aktuell berechneten Prüfsummenwerts mit einem zuvor gespeicherten Prüfsummenwert gewährleistet die richtige Unversehrtheit der Datei, daß die Bedrohung einer mutwilligen Verfälschung (oder sogar die zufällige externe Modifikation) detektiert werden kann – wodurch die Zuverlässigkeit und Sicherheit von Endergebnissen verbessert wird. Unter der Annahme, daß die Dateiprüfsumme auf eine Weise gespeichert wird, daß sie ihre eigene Unverfälschtheit gewährleistet, kann sie verwendet werden, um zu gewährleisten, daß die gesamte Datei nicht beschädigt oder absichtlich verfälscht wurde.
  • Eine derartige Prüfsumme kann berechnet werden, wenn die Datei der Reihe nach abgearbeitet wird. Die Prüfsumme kann berechnet werden, wenn (oder als) die Datei der Reihe nach aufgebaut wird (wurde); und dann wieder geprüft, wann immer die Datei verwendet wird. Vorausgesetzt, daß der Prüfsummenwert gegenüber einer Veränderung geschützt ist – z.B., indem er durch einen Schlüssel verschlüsselt wird, der nur dem Anwender bekannt ist, oder indem er digital auf eine Weise unterzeichnet wird, der der Anwender vertraut, oder indem er in einer verlässlichen Berechtigungsmarkenvorrichtung gespeichert ist, kann der Anwender sicher sein, daß die Datei nicht geändert wurde, weil die Veränderung von irgend einem Teil der Datei zu einer Wiederberechnung von einem unterschiedlichen Prüfsummenwert führer wird.
  • Bestehende Techniken erfordern, daß die gesamte Datei sequenziell abgearbeitet wird, um den Prüfsummenwert zu berechnen oder wiederzuberechnen. Diese Techniken werden für Dateien unhandlich, wenn nicht unpraktikabel, die häufig aktualisiert werden oder die "zufällig" verarbeitet werden.
  • Das bekannte Validierungsverfahren besteht aus dem Verifizieren der Prüfsumme, wenn auf die Datei das erste Mal zugegriffen wird, dem Verändern der Datei, und dann dem Neuberechnen der Prüfsumme der überarbeiteten Datei, nachdem alle Änderungen gemacht wurden. Dieses bekannte Verfahren ist für bestimmte Anwendungen nicht gut geeignet, wie z.B. solche, die lange laufen, oder solche, bei denen die Datei häufig geändert oder ständig im Gebrauch ist, oder wenn es eine Gefahr gibt, daß das bestimmte Programm oder Computersystem, das das Gesendete aktualisiert, jederzeit unterbrochen werden kann (z.B. kann der Computer ausgeschaltet werden), bevor das Programm zu einer abschließenden Feststellung kommt, wo die aktualisierte Datei abgespeichert ist, und die neue Prüfsumme neu berechnet und gespeichert ist. Das ist der Fall, weil es im großen und ganzen unpraktikabel ist, die Prüfsumme für die gesamte Datei neu zu berechnen, wann immer eine Aktualisierung stattfindet. Ohne eine derartige Berechnung liegt die Datei in einem offensichtlich verfälschten Zustand zwischen dem Moment, an dem die erste Aktualisierung gemacht wird, bis die endgültige Prüfsumme neu berechnet wird, vor.
  • Derartige praktische Probleme existieren, wenn herkömmliche Prüfsummentechniken auf bestimmte Dateiarten angewendet werden. Einige Dateien, wie z.B. indizierte Datenbanken, werden "zufällig" (d.h. nur ein Untersatz an Aufzeichnungen wird in einer nicht sequenziellen Reihenfolge aktualisiert) und über eine lange Zeitdauer aktualisiert. Die Datei kann über eine Zeitdauer von Minuten, Stunden oder (in dem Fall von Großrechnern oder "Servern") sogar Tagen aktualisiert werden.
  • Wenn die Prüfsumme über die gesamte Datei berechnet und die Datei häufig aktualisiert wird, dann führt das Berechnen einer geänderten Prüfsumme über die gesamte Datei, jedes Mal, wenn sie geändert wird, zu einem nicht akzeptablen Overhead. Wenn andererseits die Prüfsumme über die gesamte Datei berechnet wird und die Datei häufig aktualisiert wird, dann führt das Verzögern der Berechnung der geänderten Dateiprüfsumme, bis die Datei geschlossen wird (oder das Programm abgeschlossen wird) dazu, daß die Datei in einem scheinbar "falschen" Zustand zwischen dem Moment der ersten Aktualisierung und der Neuberechnung der endgültigen Prüfsumme gelassen wird. Wenn das System oder ein anderes Programm vorzeitig beendet wird, dann wird die Datei in diesem scheinbaren Zustand belassen.
  • Wenn eine Prüfsumme für jede Aufzeichnung geführt wird, dann wird zusätzlicher Aufzeichnungsplatz erforderlich, der das Layout der Datei oder ihrer Aufzeichnungen betreffen kann. Üblicherweise kann die Prüfsumme jeder Aufzeichnung in einem Raum gespeichert werden, der an dem Ende von jeder Aufzeichnung reserviert ist. Eine derartige Dateilayoutüberarbeitung kann bei einigen Anwendungen akzeptabel sein, wobei dieser Ansatz jedoch an verschiedenen Nachteilen leidet, einschließlich dem, daß er zusätzlichen Speicherplatz für jede Aufzeichnung erfordert.
  • Ein weiterer Nachteil, eine Prüfsumme nur auf einer Aufzeichnung-pro-Aufzeichnung-Basis zu führen, ist es, daß, wenn ein Widersacher eine alte Kopie der Datenbank hat (sogar wenn die Datenbank verschlüsselt war), er solche alten Aufzeichnungen isolieren kann. Eine derartige Datenbasis, die ausgelegt ist, um "zufällig" aktualisiert zu werden, muß in Aufzeichnungseinheiten verschlüsselt werden – Chiffrierketten über Aufzeichnungsgrenzen machen ein "zufälliges" Aktualisieren unmöglich. Der Widersacher könnte dann blind diese anachronistischen Aufzeichnungen gegen entsprechende Aufzeichnungen in der aktuellen aktiven Kopie der Datenbank ersetzen (das könnte gemacht werden, selbst wenn der Widersacher über den aktuellen Inhalt der Aufzeichnungen unsicher ist und nur ein Durcheinander bewirken will) – um dadurch die Integrität der Datenbank auf eine Weise zu beschädigen, die unmöglich ist, automatisch detektiert zu werden.
  • Gemäß der vorliegenden Erfindung wird ein Verfahren zum Schützen von Sammlungen einer Vielzahl diskreter Dateneinheiten bereitgestellt, die von Zeit zu Zeit von einem zugeordneten Datenverarbeitungssystem einschließlich dem Erhalten einer Prüfsumme für jede der diskreten Dateneinheiten modifiziert werden, indem eine Prüfsummenoperation unter Verwendung zumindest des Datenwertanteils der Dateneinheit durchgeführt wird, der zu schützen ist, gekennzeichnet durch
    Ansammeln des Prüfsummenwerts für jede diskrete Einheit von Daten unter Verwendung einer Funktion, die den unabhängigen Einschluß und die unabhängige Löschung von jedem individuellen Prüfsummenwert von dem angesammelten Prüfsummenwert zuläßt.
  • Ein derartiges Verfahren bietet einen neuen Weg, die Inhalte von einer Datei mit Prüfsummen zu versehen, so daß eine weitergehende Prüfsumme geführt und auf eine effektive Weise andauernd aktualisiert werden kann. Die Integrität der Datenbank kann ohne das Einführen des unnötigen und übermäßigen zusätzlichen Overheads des wiederholten Neuverarbeitens der gesamten Datei und ohne die Datei in einem scheinbar falschen Zustand für längere Zeitdauern zu lassen, aufrechterhalten werden (wie z.B. während ein lange dauerndes Echtzeitprogramm läuft).
  • Derartige Verfahren erfordern nur eine begrenzte zusätzliche Speichermenge für jede Datei, die leicht in dem Systemverzeichnis geführt werden kann, oder in einer speziellen (und möglicherweise verschlüsselten) Zusatzdatei zusammen mit weiteren Informationen über jede Datei. Das vorliegende Verfahren läßt es zu, daß jedes darunterliegende Dateiformat und jede darunterliegende Dateistruktur unverändert bleibt, und schafft daher die Integrität "transparent" als Teil der Dateiverarbeitung, möglicherweise in oder neben der "System"-Ebene, ohne daß Änderungen an bestehenden Programmen erforderlich sind. Das überwindet Kompatibilitätschwierigkeiten bei Systemen, die versuchen, diesen zusätzlichen Integritätsdienst als eine transparente Dienstleistung zusätzlich zum normalen Betrieb zu schaffen (unabhängig von irgend einer bestimmten Anwendung).
  • Die Methodologie der vorliegenden Anmeldung erlaubt es, daß ein unsicheres Berechnungssystem sicher elektronische Hochsicherheitsfinanztransaktionen durchführt. Wie es hier im Detail erläutert wird, läßt es das vorliegende Verfahren zu, daß die Prüfsumme einer Datei auf einer inkrementellen Basis gemacht wird. Das erlaubt es, daß irgend ein Teil der Datei geändert wird, während eine neue angesammelte Prüfsumme auf der Basis des geänderten Dateiteils und der früheren Gesamtprüfsumme berechnet wird. Gemäß den Verfahren der vorliegenden Anmeldung ist die angesammelte Prüfsumme ohne weiteres bei jeder Aufzeichnungsänderung aktualisierbar, ohne daß die Prüfsumme der gesamten Datei gemäß den herkömmlichen Verfahren neu berechnet werden muß.
  • Das Ausführungsbeispiel erfüllt diese Aufgaben unter Verwendung von zwei Funktionen. Die erste Funktion ist eine effektive Einwegprüfsummenfunktion "H", für die es berechnungsmäßig unmöglich ist, zwei Datenwerte zu finden, die zu dem selben Prüfsummenergebnis führen. Beispiele derartiger Funktionen umfassen den bekannten MD5 und den SHA-Algorithmus. Die zweite Funktion ist eine kommutative und assoziative Funktion "F" (und die inverse "Finv"), und schafft einen Mechanismus zum Kombinieren der angesammelten Prüfsumme und der Prüfsumme aktualisierter Aufzeichnungen. Beispiele dieser letzteren Funktionen umfassen Exklusiv-ODER ("XOR") und die arithmetische Addition.
  • Die Methodologie umfaßt das Kombinieren der Prüfsumme von jeder Dateiaufzeichnung und der Prüfsumme einer Identifikation der Aufzeichnung (d.h. einer Aufzeichnungsnummer oder eines Aufzeichnungsschlüssels). Diese Prüfsummen werden unter Verwendung einer Funktion ("F") kombiniert, wodurch einzelne Aufzeichnungen unter Verwendung der Inversen dieser Funktion (Finv) extrahiert werden können. Auf diese Weise kann eine einzelne Aufzeichnung aus der angesammelten Prüfsumme extrahiert und aktualisiert werden. Mit dieser Aktualisierung wird die Dateiprüfsumme, wie sie gemäß dieser Erfindung berechnet wird, vorzugsweise auch geschrieben, nachdem sie mit einem Schlüssel verschlüsselt wurde, der nur dem berechtigten Benutzer bekannt ist, oder die von dem berechtigten Benutzer digital signiert wird, oder wenn sie in einem verfälschungssicheren Speicher geführt wird. Jede Aufzeichnung wird durch ihre Identifikation repräsentiert, die zusammen mit ihrem Dateninhalt prüfsummiert wird. Alle derartigen Aufzeichnungen werden zusammenaddiert, um eine sehr sichere Integritätsüberprüfung zu schaffen. Diese angesammelte Prüfsumme gibt die gesamte Datenbank wieder, derart, daß das Verfälschen (oder Neuanordnen) irgend einer Datenaufzeichnung durch die Verwendung von dem Aufzeichnungsidentifizierer (d.h. der Aufzeichnungsnummer) bei der Prüfsummenberechnung aufgrund ihres Einflusses auf die angesammelte Prüfsumme (z.B. der Summe) zum Vorschein gebracht wird. Durch Verwendung dieser Methodologie kann ein Benutzer nicht dazu gebracht werden, mit irreführenden Daten zu arbeiten.
  • Die Verfahren dieser Anmeldung können vorzugsweise zumindest die Nachteile des Standes der Technik einer erheblichen Neuberechnung für jede Dateiänderung, langer Zeitdauern, in denen die fragliche Datei als "ungültig" betrachtet wird, wenn die Anwendung oder das System abrupt beendet wird, zusätzlichen Speicherraums für eine Prüfsumme (oder MAC) für jede Aufzeichnung, und der Möglichkeit für einen Widersacher, alte Aufzeichnungen zu ersetzen, überwinden, weil die Integrität der gesamten Datei und die Beziehung aller Aufzeichnungen zueinander in einem einzigen Dateiprüfsummenwert geführt wird, der geändert wird, wenn jede Dateiaktualisierung ausgeführt wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Diese Merkmale und weitere Merkmale dieser Erfindung werden durch das Lesen der folgenden Beschreibung des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung im Zusammenhang mit den beigefügten Zeichnungen klarer, wobei:
  • 1 ein Blockdiagramm eines Kommunikationssystems zeigt, bei dem die vorliegende Erfindung eingesetzt werden kann;
  • 2 im großen und ganzen ein beispielhaftes Aufzeichnungsformat gemäß dem Ausführungsbeispiel der vorliegenden Erfindung zeigt;
  • 3 eine beispielhafte Darstellung einer Datenstruktur für Arbeitsdaten zeigt;
  • 4 ein Flußdiagramm zeigt, das die Operationsfolge darstellt, die gemäß einem Ausführungsbeispiel durchgeführt wird, wenn das System eine Datei öffnet, die zu aktualisieren ist oder auf irgend eine Weise verwendet wird;
  • 5 ein Flußdiagramm zeigt, das die Operationsfolge darstellt, die gemäß einem Ausführungsbeispiel durchgeführt wird, wenn eine Addier-, Aktualisier- oder Löschoperation ausgeführt wird; und
  • 6 ein Flußdiagramm zeigt, das die Operationsabfolge darstellt, die gemäß einem Ausführungsbeispiel für eine Schließoperation durchgeführt wird.
  • DETAILLIERTE BESCHREIBUNG DER ZUR ZEIT
  • BEVORZUGTEN AUSFÜHRUNGSFORM
  • 1 zeigt in Blockdiagrammform ein beispielhaftes Berechnungssystem, in dem die vorliegende Erfindung als ein Teil eines Computernetzwerkes zum elektronischen Handeln eingesetzt werden kann. Während die vorliegende Erfindung in einer solchen Kommunikationsnetzwerkumgebung eingesetzt werden kann, kann die Erfindung entsprechend vorteilhafterweise in Verbindung mit einem Laptop-Computer, einem Einzelplatz-PC, einem Großrechnercomputer oder irgend einem anderen Computersystem eingesetzt werden, wo die Datensicherheit entscheidend ist.
  • Das in 1 gezeigte System umfaßt ein beispielhaftes Computernetzwerk mit einem ungesicherten Kommunikationskanal 12, über den Kommunikationen zwischen den Terminals A, B, N stattfinden können. Der Kommunikationskanal 12 kann z.B. eine Telefonleitung sein. Die Terminals A, B bis N können nur beispielsweise IBM PCs mit einem Prozessor (mit Hauptspeicher) 2 sein, der an eine gewöhnliche Tastatur/CRT 4 angeschlossen ist. Jedes Terminal A, B bis N umfaßt auch eine herkömmliche IBM PC-Kommunikationskarte (nicht gezeigt), die, wenn sie an ein herkömmliches Modem 6, 8, bzw. 10 angeschlossen ist, zuläßt, daß die Terminals Nachrichten übertragen und empfangen. Jedes Terminal umfaßt eine herkömmliche IBM PC-Plattenspeichervorrichtung, die zuläßt, daß der Computer Datenbankinformationen liest, schreibt und speichert.
  • Jedes Terminal kann reinen Text oder eine unchiffrierte Nachricht erzeugen und Signaturoperationen durchführen, welche auch immer erforderlich sein können, und die Nach richt zu irgend einem anderen Terminal übertragen, das an dem Kommunikationskanal 12 angeschlossen ist (oder an ein Kommunikationsnetzwerk (nicht gezeigt), das an den Kommunikationskanal 12 angeschlossen sein kann). Außerdem kann jedes der Terminals A, B bis N eine Signaturverifikation von jeder Nachricht durchführen.
  • Jeder der Benutzer des Terminals hat einen öffentlichen Verschlüsselungsschlüssel und einen zugehörigen geheimen privaten Entschlüsselungsschlüssel. Bei dem in 1 gezeigten Verschlüsselungssystem mit öffentlichem Schlüssel ist sich jeder Benutzer des Terminals des allgemeinen Verfahrens bewußt, mit dem die Benutzer anderer Terminals eine Nachricht verschlüsseln. Außerdem ist sich jeder Benutzer des Terminals des Verschlüsselungsschlüssels bewußt, der von dem Verschlüsselungsverfahren des Terminals eingesetzt wird, um eine chiffrierte Nachricht zu erzeugen.
  • Jeder Benutzer des Terminals offenbart jedoch nicht, wenn er seine Verschlüsselungsverfahren und Verschlüsselungsschlüssel offenbart, seinen privaten Entschlüsselungsschlüssel, der notwendig ist, um die chiffrierte Nachricht zu entschlüsseln und Signaturen zu erzeugen. In dieser Hinsicht ist es computertechnisch nicht machbar, den Entschlüsselungsschlüssel aus der Kenntnis des Verschlüsselungsschlüssels zu berechnen.
  • Neben der Fähigkeit, eine private Nachricht zu übertragen, hat jeder Benutzer des Terminals entsprechend die Fähigkeit, eine übertragene Nachricht digital zu signieren. Eine Nachricht kann digital signiert werden, indem ein Benutzer des Terminals eine Nachricht mit seinem privaten Entschlüsselungsschlüssel entschlüsselt, bevor er die Nachricht überträgt. Nach dem Empfang der Nachricht kann der Empfänger die Nachricht lesen, indem der öffentliche Entschlüsselungsschlüssels des Senders verwendet wird. Auf diese Weise kann der Empfänger verifizieren, daß nur der Halter des geheimen Entschlüsselungsschlüssels die Nachricht erzeugt haben sollte. Somit hat der Empfänger der signierten Nachricht den Beweis, daß die Nachricht von dem Sender stammt.
  • Weitere Details der beispielhaften Methodologie zur digitalen Signatur, die in Verbindung mit der vorliegenden Erfindung eingesetzt werden können, sind in dem US-Patent Nr. 4,405,829 und der Methodologie des Anmelders zur digitalen Signatur offenbart, die in den US-Patenten Nr. 4,868,877 und 5,005,200 offenbart ist.
  • Jedes der Computerterminals A bis N ist vorzugsweise ausgelegt, um eine sichere Arbeitsstation für elektronischen Handel zu sein. Bei dem vorliegenden System kann der gesamte Speicherplatz eines Computerterminals auf eine Weise geschützt sein, die im Detail unten beschrieben ist, oder wenn es erwünscht ist, kann nur ein Teil des Speicherbereichs geschützt sein. Jedes der in dem Terminalspeicherbereich residenten Programme ist vorzugsweise gemäß der Programmberechtigungsinformation (PAI) geschützt, wie sie in der parallel anhängigen Anmeldung mit der Seriennummer 07/883,868 des Anmelders mit dem Titel "Computer System Security Method and Apparatus Having Program Authorization Information Data Structures" beschrieben ist. Gemäß der beispielhaften Implementation der vorliegenden Erfindung kann ein Programm auf Terminals A bis N laufen, es sei denn, daß es nicht gemöß einer zugehörigen PAI berechtigt ist. Die PAI-Information wird eingesetzt, um Programme dagegen schützen, daß sie verfälscht werden. Datenverschlüsselung gemäß herkömmlichen Techniken wird eingesetzt, um die Vertrauenswürdigkeit der Daten zu schützen, auf die das Programm angewendet wird. Die vorliegende Erfindung wird eingesetzt, um die Datendateien dagegen zu schützen, daß sie verfälscht werden. Insbesondere, wenn man es gemeinsam benutzt, ergibt sich eine Hochsicherheitsarbeitsstation, die zuverlässig beim elektronischen Handel eingesetzt werden kann.
  • Wenn ein Terminal A ein Laptop-Computer ist, der gemäß dieser Methodologie geschützt wird, kann das Terminal irgendwo getragen werden, und sogar eingesetzt werden, um Programme laufen zu lassen, die einen Virus enthalten können. Der geschützte Teil des Speicherplatzes gemäß dieser Methodologie, die unten beschrieben ist, wird gegen ein derartiges verfälschtes Programm immun sein, und der Anwender kann einen sehr hohen Sicherheitsgrad bei den Daten haben, die in dem Computersystem verarbeitet werden, darauf gespeichert sind, darauf gespeichert werden und davon übertragen werden.
  • 2 zeigt in vereinfachter Form ein beispielhaftes Aufzeichnungsformat gemäß dem Ausführungsbeispiel der vorliegenden Erfindung. Wie in 2 gezeigt, enthält die Datei n diskrete Datensätze Ri (wobei i von 1 bis n variiert). Jeder Datensatz Ri hat einen zugehörigen Datensatzkennzeichner, z.B. "Ki", der eine Datensatznummer sein kann. Ki kann irgend ein indizierter Wert sein, wie z.B. eine Angestelltennummer. Auf diese Weise kann die Datei als eine sequenzielle Datei organisiert sein (beginnend mit einem Datensatz 1, gefolgt von einem Datensatz 2 bis zu einem Datensatz n). Die Datensatzkennzeichner können Sektorzahlen auf einer Platte sein. Die Datensatzkennzeichner können auf irgend eine assoziative Weise organisiert sein (z.B. durch Angestelltennummern usw.), solange jeder Datensatz gleich und konsistent identifiziert wird. Zusätzlich zu einem Datensatzkennzeichner Ki ist jeder Datensatz Daten zusammen mit herkömmlichen Medienkontrollsignalen zugeordnet, wie es den Fachleuten auf dem Gebiet klar ist.
  • Wie hier verwendet, kann die Interpretation eines Datensatzes in Abhängigkeit von der Anwendung oder dem eingesetzten Computersystem abhängen. Es kann angebracht sein, jedes Byte als einen Datensatz zu behandeln. Durch Anwenden auf jedes Byte ist es möglich, immer eine perfekte Prüfsumme von der gesamten Datei zu führen. Auf Platten, die so organi siert sind, könnte jeder Sektor als ein Datensatz betrachtet werden. Bei einigen Systemen, wie z.B. Systemen mit einer S/360-Architektur, gibt es diskrete Datensätze, die auf gemischte Weisen definiert sein können, einschließlich der sequenziellen Nummerierung. Bei einigen Datenbanksystemen werden Datensätze am besten unterschieden, indem Ki ein Datenschlüssel ist – der Wert davon wird eingesetzt, um einen bestimmten Datensatz zu identifizieren.
  • Natürlich soll dieses Ausführungsbeispiel nur als ein möglicher Weg gesehen werden, die Erfindung zu implementieren. Andere Techniken könnten umfassen, nur eine bestimmte Datenmenge zu verwenden, oder eine Prüfsumme von Aspekten von einigen bestimmten Daten statt der Daten selber zu verwenden, oder durch Konstruieren von Datensätzen als Kombinationen von Rohdaten und/oder den Prüfsummenwerten noch weiterer Daten.
  • Gemäß einem Ausführungsbeispiel der Erfindung gewährleisten die unten beschriebenen Datenstrukturen, daß die Datei immer angesichts normaler Unterbrechungen wiederherstellbar ist (unabhängig davon, wie das System unterbrochen worden sein kann, wenn die Datei aktualisiert wurde). Irgend welche anderen Arten von Datenbeschädigungen, zufällig oder unbeabsichtigt, werden immer detektierbar sein. Wenn die vollständige Wiederherstellbarkeit nach allen Unterbrechungen nicht erwünscht ist, dann können Teile der folgenden Logik entfernt werden.
  • Das Ausführungsbeispiel verwendet eine Datenbankdatei ebenso wie "Arbeitsdaten"- und "Dateiprüfsummen"-Datenstrukturen, um eine vollständige Wiederherstellungsfähigkeit (nach Unterbrechungen) zusammen mit einer absoluten Widerstandsfähigkeit gegenüber Widersachern zu schaffen. Die Datenbankdateidatenstruktur enthält die Daten des Benutzers. Die Arbeitsdatendatenstruktur enthält Datensatzverarbeitungs informationen für den Fall, daß das System unterbrochen wird, während Aktualisierungen in Gang sind.
  • Die Art und Weise, auf der die Arbeitsdatendatei der Datenbankdatei zugeordnet ist, hängt von der Implementierung ab. Zum Beispiel könnten die Arbeitsdaten eine Datei sein, die der Datenbankdatei durch den Dateinamen zugeordnet ist – wobei das Vorhandensein von Arbeitsdaten, wenn die Datenbankdatei geöffnet ist, anzeigt, daß ihre vorherige Verwendung unterbrochen wurde und eine Wiederherstellung notwendig war. Die Arbeitsdatendatei wird neu erzeugt, während sie nicht während des Öffnens der Datei existierte, und gelöscht, wann immer die Datenbankdatei erfolgreich geschlossen wurde. Dieser Ansatz wird durch die beispielhafte unten beschriebene Implementierung erläutert. Alternativ könnte ein Pool von Arbeitsdatenelementen resident in dem permanenten Speicher sein, der von der Betriebsumgebung geführt wird, und aktiven Datenbankdateien zugeordnet werden, wann immer sie geöffnet sind; dem Pool zurückgegeben werden, wenn die Dateien geschlossen werden; und nach einer Systemunterbrechung geprüft werden, um irgend welche Aktualisierungen, die in Gang sind, zu säubern.
  • Wenn ein Leistungsfehler auftritt, während die Arbeitsdateien verarbeitet werden, dann wird es erkennbar sein, daß die Datei inhärent vertrauenswürdig ist. Wenn alternativ ein Leistungsausfall auftritt, während die Datei verarbeitet wird, dann werden die in der Arbeitsdateiendatei gespeicherten Daten eingesetzt, um die Datei wiederherstellbar zu machen. Somit wird die Datei, indem eine Spur von dem verfolgt wird, was mit der Datei gemacht werden muß, und indem die geeignete Operation unter Verwendung der Arbeitsdatenstruktur durchgeführt wird, im wesentlichen "kugelsicher" bezüglich derartigen Unterbrechungen.
  • Wie in 3 gezeigt, weist eine beispielhafte Arbeitsdatendatenstruktur 50 fünf Felder auf. Das Operationsfeld 52 zeigt entweder eine "Addiere"-, "Aktualisiere"-, "Lösche"- oder "Null"-Operation an. Ein Datensatzkennzeichnerfeld 54 kennzeichnet Ki. Außerdem umfaßt die Arbeitsdatendatenstruktur Felder, die den Wert von dem überarbeiteten Datensatz Ri anzeigen (56). Die überarbeitete Version der gesamten oder zukünftigen Datenbankprüfsumme (58); und die Prüfsumme von den Feldern 52, 54, 56 und 58 (60). Die Felder 54 und 56 werden für eine "Null"-Operation ignoriert, und das Feld 58 wird für eine "Lösche"-Operation ignoriert.
  • Wenn irgend ein Teil der Arbeitsdaten selbst falsch oder beschädigt ist, entweder durch blinden Vandalismus, normalen Hardwarefehler (wie z.B. von den Medien), oder als die Folge einer Unterbrechung, während geschrieben wurde, dann wird das über eine Nichtübereinstimmung mit der Prüfsumme der Arbeitsdaten festgestellt, die in Feld 60 der Arbeitsdatendatenstruktur geführt wird. Die Arbeitsdaten sollten auf eine Weise geschützt werden, die ähnlich zu der Dateiprüfsumme ist – damit ein Gegner sie nicht modifiziert, um eine unfreiwillige Änderung der Datenbankdatei zu bewirken. Bei einer bevorzugten Implementierung werden die Dateiprüfsummen-, Arbeitsdaten- und Datenbankdateidatenstrukturen insgesamt in einer verschlüsselten Form mit einem Schlüssel gespeichert, der nur den gültigen Benutzer(n) bekannt ist. Die Aufzeichnungen werden verschlüsselt, bevor sie geschrieben werden, und entschlüsselt, wenn sie gelesen werden.
  • Wenn nur die Unversehrtheit und nicht die Vertrauenswürdigkeit der Datenbankdatei erforderlich ist, dann sind die einzigen Daten, die verschlüsselt werden müssen, Feld 60 in dem Arbeitsdatendatensatz und die Dateiprüfsumme. Das gewährleistet, daß weder die Dateiprüfsumme noch die Arbeitsdaten durch kluge Gegner manipuliert werden können.
  • Es gibt noch einen weiteren Angriff, der berücksichtigt werden muß, nämlich, daß ein Gegner alte Daten gegen die Datenbankdatei, die Arbeitsdaten und die Dateiprüfsumme insgesamt austauscht. In diesem Fall ist die Datenbank konsistent und reflektiert genau einen früheren Zustand der Datenbank – erfüllt dadurch alle Gültigkeitsprüfungen-, aber sie gibt einen nicht aktuellen Stand und dadurch möglicherweise irreführende Daten wieder.
  • Dieser Bedrohung könnte auf verschiedene Weisen begegnet werden, wie z.B., indem das Datum/die Zeit der letzten Aktualisierung als ein zusätzliches Feld geführt und es mit den Dateiprüfsummendaten gespeichert wird. Diese Datum-/Zeit-Daten könnten dann dem Benutzer jedes Mal als ein Teil des Öffnens der Datei angezeigt werden. Das erlaubt es auch dem Benutzer, bewußt wiederherzustellen und eine ältere Version der Datenbankdatei zu verwenden. Es würde auch möglich sein, das Datum/die Zeit des letzten "Öffnens" als ein Teil der Dateiprüfsummendaten zu speichern, und auch das in einem Gegenstand des Benutzers (z.B. einer SmartCard) zu speichern, die gegenüber einer heimlichen Veränderung unverletzlich ist (der Gegenstand könnte auch verwendet werden, um den Verschlüsselungsschlüssel zu speichern). Wenn das Datum/die Zeit, die in der Dateiprüfsumme gefunden wird, von der in dem Gegenstand des Benutzers abweicht, wird der Benutzer von der Tatsache alarmiert, daß eine obsolete Version der Datenbankdatei verwendet wird. Wenn das Datum/die Zeit zutrifft, wie es normalerweise erwartet wird, dann darf der Benutzer fortfahren, ohne eine Entscheidung machen zu müssen.
  • Der Bedrohung kann auch begegnet werden, indem der Verschlüsselungsschlüssel geändert wird, der verwendet wird, um als Teil des Starts jeder Öffnungsanfrage die Dateiprüfsumme und die Arbeitsdaten zu verstecken. Das gewährleistet, daß jede Dateiprüfsumme und die Arbeitsdaten niemals von Sitzung zu Sitzung dupliziert werden können. Der letzte Schlüssel könnte dann in einem unveränderbaren Gegenstand gespeichert werden, der von dem Benutzer verwahrt wird.
  • Die Datei-Hash wird gespeichert, wobei sie der Datenbankdatei zugeordnet werden kann. Sie muß derart ausgelegt sein, daß sie nicht heimlich von irgend jemand anderem als dem autorisierten Benutzer verändert werden kann. Das kann auf verschiedenem Wege gemacht werden, einschließlich dem Verschlüsseln unter einem symmetrischen Chiffrierschlüssel, der nur dem gültigen Benutzer(n) bekannt ist; unter einem öffentlichen Schlüssel verschlüsselt wird, der einem privaten Schlüssel entspricht, der den gültigen Benutzer(n) bekannt ist oder digital signiert wird, so daß sie von dem gültigen Benutzer(n) als vertrauenswürdig verifiziert werden kann.
  • Irgend eine andere Technik kann eingesetzt werden, so daß der gültige Benutzer (die gültigen Benutzer) dem Datei-Hash-Wert vertrauen können und er nicht von einem Gegner geändert werden kann. Die vertrauenswürdige Datei-Hash könnte z.B. in dem der Datei entsprechenden Verzeichniseintrag, als ein Anhang zu der Datei selbst oder in einer speziellen Datenbank gespeichert werden, die es zuläßt, daß sie mit der Datei in Verbindung gebracht wird.
  • Gemäß dem Ausführungsbeispiel wird ein Hash der Datei wie folgt berechnet. Der Datei-Hash wird anfänglich gleich einem Anfangswert (z.B. Null) gesetzt. Danach indiziert die Hash-Routine über alle Datensätze in der Datei unter Verwendung der Datensatzkennzeichner Ki der Datensätze 1 bis N, wobei der folgende Wert berechnet wird: Datei-Hash = F (Datei-Hash, H(Ki & Ri)).
  • Die Notation Ki & Ri zeigt eine Operation an, die eindeutig den Wert von "K1" und den Wert des zugeordneten Datensatzes Ri kombiniert. Ein einfacher Weg, das zu tun, ist es, wenn Ki eine einheitliche Länge für alle Schlüssel hat (vielleicht ein binärer Integer, der in vier Bytes gepackt ist), die beiden Werte zu verketten. Wenn das Feld "Ki" in der Länge variieren kann, dann sollte die Operation durchgeführt werden, um effektiv dem Wert "Ki" seinen Längenanzeiger voranzustellen, um eindeutig den "Ki"- und dem "Ri"-Wert zu unterscheiden und dann die drei Werte zu verketten, wie z.B. Länge von (Ki)||Ki||Ri.
  • Nachdem Ki und der Inhalt des Datensatzes Ri eindeutig kombiniert sind (z.B. durch Verketten), wird die Hash des angesammelten Datenstrings unter Verwendung der Hash-Funktion H gebildet, und das Ergebnis wird mit dem richtigen angesammelten Datei-Hash-Wert unter Verwendung der spezialisierten Funktion F kombiniert. Die Hash-Funktion H ist eine Einweg-Hash-Funktion, für die es computertechnisch unmöglich ist, die zwei Datenwerte zu dem selben Ergebnis prüfsummieren. Beispiele für derartige Funktionen umfassen den MD5-Prüfsummieralgorithmus, der vom MIT Professor Dr. Rivest entwickelt wurde, oder den sicheren Hash-Algorithmus (SHA).
  • Die Funktion F ist eine kommutative und assoziative Funktion, die eine zugeordnete inverse Funktion "Finv" aufweist und einen Mechanismus zum Kombinieren der angesammelten Hash und der Hash aktualisierter Datensätze bereitstellt. Beispiele derartiger kommutativer und assoziativer Funktionen umfassen Exklusiv-ODER (XOR) und die arithmetische Addition. Nach der Anwendung der Funktion F wird die angesammelte Hash die Hash für alle alten Datensätze einschließlich des neuen Datensatzes. Diese Verarbeitung wird für alle Datensätze in der Datei gemacht. In dem Fall, daß Datensätze am besten durch einen Indexdatenschlüssel unterschieden werden, das ist der Wert Ki, der eingesetzt wird, um einen bestimmten Datensatz zu identifizieren, wird die Verarbeitungsschleife, die oben beschrieben ist, über alle aktiven indizierten Einträge gemacht.
  • Wenn ein Datensatz Ki aktualisiert wird (wobei Ri der alte Datensatz und R2i der neue Datensatzwert ist), dann wird die neue überarbeitete Datei-Hash wie folgt neu berechnet: Datei-Hash = F(Finv (Datei-Hash, H(Ki & Ri)), H(Ki & R2i)).
  • Mit anderen Worten wird die Hash des ehemaligen Datensatzes entfernt und der neue Wert wird eingesetzt. Wenn ein Datensatz "Ki" aus der Datenbank entfernt wird, dann wird die
  • Datendatei-Hash auf folgendes revidiert: Datei-Hash = Finv (Datei-Hash, H(Ki & Ri)).
  • Wenn ein neuer Datensatz Ki eingeführt wird, dann wird die überarbeitete Hash wie folgt: Datei-Hash = F(Datei-Hash, H(Kii & Ri)).
  • Mit diesem Protokoll kann die überarbeitete Hash wie geändert berechnet und gespeichert werden.
  • 4 zeigt ein Flußdiagramm, das die Operationsfolge darstellt, wenn das System eine Datei öffnet (um aktualisiert oder auf irgend eine Weise benutzt zu werden), um die Gültigkeit der Datei festzustellen. Die Dateiverarbeitung beginnt, indem die Datenbankdatei geöffnet wird (1010). Eine Prüfung wird am Anfang in Block 1012 gemacht, um festzustellen, ob die Datenbankdatei am Anfang erzeugt wird oder neu initialisiert wird (d.h. überschrieben).
  • Wenn die Datei eine neue Datei ist oder neu initialisiert wird, dann wird die Variable "Datei-Hash" auf 0 gesetzt und die Routine verzweigt zu Block 1230. Indem die Datei-Hash auf 0 initialisiert wird, wird der Zustand eingestellt, um durch die Datei zu scannen, um zu gewährleisten, daß alle Datensätze vorhanden sind, und gleichzeitig, daß keiner der Datensätze verfälscht wurde oder neu angeordnet wurde, und um zu gewährleisten, daß die gesamte Datei im Zusammenhang geeigneten Prüfungen entspricht. Somit wird, wann immer eine Datenbank zuerst eingesetzt wird, die Datei überprüft, um die gespeicherte Hash zu prüfen.
  • Wenn die Überprüfung in Block 1012 anzeigt, daß die Datenbankdatei, die verarbeitet ist, eine alte Datei ist, dann verzweigt die Routine zu Block 1020, wo die zugeordnete "Datei-Hash" zugewiesen wird. Die Datei-Hash kann in einem sicheren Verzeichnis gespeichert und mit einem Schlüssel verschlüsselt werden, der nur dem Benutzer bekannt ist. Dieser Wert reflektiert den Zustand der Datei, wenn sie das letzte Mal verwendet wurde. Wo sie genau gespeichert wird, hängt von der Implementierung ab. Bei einer bevorzugten Ausführung der vorliegenden Erfindung kann die File-Hash in einer getrennten Datenbank, die sich von der Datei unterscheidet, oder als ein Anhang zu dem Verzeichniseintrag der Datei gespeichert werden.
  • Eine Überprüfung wird in Block 1025 gemacht, um festzustellen, ob Arbeitsdaten existieren, die der Datenbankdatei entsprechen. Wenn Arbeitsdaten, wie oben in 3 gezeigt, nicht für die Datenbankdatei existieren, dann verzweigt die Routine zu Block 1230.
  • Wenn die Überprüfung in Block 1025 anzeigt, daß eine Arbeitsdatendatenstruktur existiert, dann wird ein Prozeß in Block 1030 begonnen, um die Wiederherstellung für Aktualisierungen zu den Datenbankdateien zu handhaben, die während des früheren Verarbeitens unterbrochen worden sein können. Am Anfang wird die Arbeitsdatendatenstruktur geöffnet und gelesen. Bei der bevorzugten Ausführung ist die Arbeitsdatendatei verschlüsselt, so daß sie entschlüsselt werden muß, um ihre Inhalte zu lesen. Eine Überprüfung wird dann in Block 1030 gemacht, um zu gewährleisten, daß die Arbeitsdaten selbst gültig sind, indem die Hash der Felder 52, 54, 56 und 58 berechnet und die derart berechnete Hash mit der gespeicherten Hash in Feld 60 von 3 verglichen wird. Auf diese Weise kann man gewährleisten, daß Unterbrechungen nicht auftraten, als die Arbeitsdateninformationen verarbeitet wurden.
  • Wenn die berechnete Hash nicht mit der in Feld 60 gespeicherten Hash übereinstimmt (1050), dann verzweigt die Routine zu Block 1220, wo die Verarbeitung zum Erzeugen neuer Arbeitsdaten beginnt. Das Nichtübereinstimmen der Prüfsummen impliziert, daß unterbrochen wurde, während die Arbeitsdaten selber geschrieben wurden. Wenn das der Fall ist, sollte die Datenbankdatei und die Datei-Hash richtig und konsistent sein, was man erwartet, daß es durch die Fortsetzung in Block 1220 verifiziert wird.
  • Wenn die Prüfsummen übereinstimmen, fährt die Verarbeitung in Block 1060 fort, wo Aktualisierungen, die in der früheren Verarbeitung involviert wären, wieder angewendet werden. Somit werden die letzten Operationen, die auf die Datenbankdatei durchgeführt worden wären, unter Verwendung von Daten aus der Arbeitsdatendatenstruktur auf Grundlage der Operation wiederholt, die in Feld 52 angegeben ist, dem Datensatzkennzeichner von Feld 54, dem Wert des überarbeiteten Datensatzes von Feld 56 und der überarbeiteten Version der gesamten Datenbank-Hash (die die neue oder die zukünftige Hash ist) in Feld 58 der Datenstruktur, die in 3 gezeigt ist.
  • Eine Überprüfung wird dann in Block 1065 gemacht, um festzustellen, ob die Operation, die in Feld 52 der Arbeitsdatendatenstruktur 50 angegeben ist, eine Addier-Operation ist. Wenn das der Fall ist, dann verzweigt die Routine zu Block 1070, der die Wiederholung der Addier-Operation initiiert. Der Wert Rn (der den Inhalt des Datensatzes von Feld 56 der Arbeitsdatendatenstruktur 50 angibt) wird in den Datensatz gestellt, der durch den Kennzeichner Kn gekennzeichnet ist. Wenn der Datensatz Kn existiert, dann wird er gegen den Wert Rn ersetzt. Anderenfalls, wenn der Datensatz Kn nicht existiert, dann wird der neue Rn eingesetzt. Danach verzweigt die Routine zu Block 1200, wo der Datei-Hash-Wert aktualisiert wird.
  • Wenn die Überprüfung in Block 1065 angibt, daß die Operation keine Addieroperation ist, dann wird eine Überprüfung gemacht, um festzustellen, ob die Operation eine Aktualisieroperation ist (1080). Wenn die Überprüfung eine Aktualisieroperation angibt, dann wird in Block 1090 die Aktualisieroperation durchgeführt, indem der Wert in dem Datensatz Kn gegen den Wert Rn (den überarbeiteten Datensatzdateninhalt) ausgetauscht, und die Routine verzweigt zu Block 1200.
  • Wenn die Überprüfung in Block 1080 angibt, daß die Operation keine Aktualisieroperation ist, dann wird eine Überprüfung in Block 1100 gemacht, um festzustellen, ob die Operation eine Löschoperation ist. Wenn die Operation eine Löschoperation ist, dann verzweigt die Routine zu Block 1110, wo eine Überprüfung gemacht wird, um zu gewährleisten, daß der Datensatz, der von dem Kennzeichner Kn gekennzeichnet wird, fehlt. Wenn der durch Kn gekennzeichnete Datensatz vorhanden ist, dann wird der Datensatz gelöscht, und die Routine verzweigt zu Block 1200.
  • Wenn die Überprüfung in Block 1100 angibt, daß die Operation keine Löschoperation ist, dann wird in Block 1120 eine Überprüfung gemacht, um festzustellen, ob die Operation eine "Null"-Operation ist. Eine Nulloperation wird an dem Anfang und an dem Ende der Dateiverarbeitung durchgeführt, um die Arbeitsdatendatei zu erzeugen, wenn eine Datei geöffnet und wenn sie geschlossen wird. Wenn die Operation eine Nulloperation ist, dann verzweigt die Routine zu Block 1220, in Erwartung der Übereinstimmung, daß die Datenbankdatei und die Daten-Hash beide genau und konsistent sind. Wenn die Überprüfung in Block 1120 anzeigt, daß die Operation keine Nulloperation ist, dann existiert ein Fehlerzustand, und die Operation wird in Block 1130 unterdrückt. Durch Erreichen von Block 1130 hat man festgestellt, daß die Arbeitsdatendatei falsch aufgebaut war.
  • Wenn die Überprüfungen in Block 1065, 1080 oder 1100 auf eine Addier-, Aktualisier- oder Löschoperation hinweisen, dann verzweigt die Verarbeitung zu Block 1200, wo der Datei-Hash-Wert aktualisiert wird, um den letzten bekannten Wert nach der Durchführung der jeweiligen Operation wiederzugeben. Auf diese Weise wird der Datei-Hash-Wert auf das eingestellt, was der neue Datei-Hash nach der Durchführung der gewünschten Operation aufgrund der geschützten Arbeitsdaten und der geschützten Dateidaten sein sollte. Dieser neue Datei-Hash-Wert wird wie gewünscht verschlüsselt und in die Datei-Hash-Datenstruktur geschrieben.
  • Die Verarbeitung fährt in Block 1220 fort, wo das Arbeitsdatenfeld 52 auf die Nulloperation zurückgesetzt wird. Wenn gewünscht, werden die Rücksetzarbeitsdaten verschlüsselt und in die Arbeitsdaten 50 geschrieben. Danach wird die Arbeitsdatendatei in ihrer Gesamtheit gelöscht.
  • Wenn die Routine die Verarbeitung in Block 1230 beginnt, wurden die Arbeitsdaten absorbiert und gelöscht und die zugehörige Datei wurde aktualisiert. An diesem Punkt der Verarbeitung sollten die zugeordneten Dateidaten richtig sein. In Block 1230 wird eine neue Arbeitsdatendatei erzeugt, die auf die Nulloperation initialisiert, wenn notwendig verschlüsselt und geschrieben wird.
  • Nachdem die neue Arbeitsdatendatei erzeugt wurde, wird das Verarbeiten in Block 1400 begonnen, um zu gewährleisten, daß die Datenbankdatei konsistent mit der Datei-Hash ist. Um diesen Prozeß zu beginnen, wird die berechnete Hash gleich Null gesetzt. In Block 1410 wird eine Schleife begonnen, die durch alle Datensätze in der Datei läuft. Nachdem alle Datensätze in der Schleife verarbeitet wurden (Block 1420), verzweigt die Routine zu Block 1430. Wenn die Datenbankdatei gerade erzeugt wird, dann gibt es null Datensätze, und die Schleife wird überhaupt nicht ausgeführt, und die Routine verzweigt unmittelbar zu Block 1430.
  • In Block 1420 wird der Wert Rn des durch Kn gekennzeichneten Datensatzes gelesen und, wenn notwendig, entschlüsselt. Die berechnete Hash wird dann mit dem neuen Datensatz Rn vergrößert, indem folgendes berechnet wird: berechnete Hash = F (berechnete Hash, Hash, ((Länge von Kn)||Kn||Rn))
  • Bei der bevorzugten Implementierung, bei der F und F-invers Exklusiv-ODER sind, wird dies: berechnete Hash = berechnete Hash XOR Hash, (Länge von Kn)||Kn||Rn)
  • Die Routine verzweigt zurück zu Block 1410, bis alle Aufzeichnungen genau einmal verarbeitet sind.
  • Nachdem alle Datensätze verarbeitet sind, wird in Block 1430 eine Überprüfung gemacht, um festzustellen, ob die neue "Datei-Hash" gleich der "berechneten Hash" ist. Wenn die Prüfsummen übereinstimmen, hat sich die Datenbankdatei als gültig, konsistent und unverfälscht erwiesen, und die Routine verzweigt zu der Hauptroutine zurück, wo die vertrauenswürdigen Daten dann verarbeitet werden. Wenn alternativ die Prüfsummen nicht übereinstimmen, wurde zumindest von der Datenbankdatei, der Datei-Hash oder den Arbeitsdaten eines beschädigt oder auf irgend eine Weise verfälscht. Dieser Fehlerzustand wird dem Benutzer oder dem Anwendungsprogramm angezeigt (1440), woraufhin die Anwendung abbricht oder in Abhängigkeit von der Ausführung dem Benutzer erlaubt werden kann, zu entscheiden, die Verarbeitung abzubrechen oder die Verarbeitung auf sein oder ihr eigenes Risiko fortzusetzen.
  • 5 zeigt ein Flußdiagramm, das die Operationsfolge beim Durchführen einer Addier-, Aktualisier- oder Löschfunktion darstellt. Die in 5 gezeigte Routine wird somit ausgeführt, wenn die angezeigte Operation entweder eine Addier-, Aktualisier- oder Löschoperation ist. In 5 nimmt die unten beschriebene Nomenklatur an, daß die Operation auf den Datensatz Kn stattfindet, und daß für eine Addier- und Aktualisieroperation NeuRn der Wert des Datensatzes Kn ist, der einzusetzen ist. Die folgende Nomenklatur nimmt an, daß für eine Aktualisier- und Löschoperation AltRn der aktuelle Wert des Datensatzes Kn ist, an dem die Operation beginnt. Somit sind die beiden Variablen, die unten gekennzeichnet sind, für eine Addier- und Aktualisieroperation "NeuRn", die den neuen Wert des Datensatzes Kn darstellt, der einzusetzen ist, und für eine Aktualisier- und Löschoperation "AltRn", die der aktuelle Wert des Datensatzes Kn ist, wenn die Operation beginnt.
  • In Block 2010 beginnt die Verarbeitung durch Vorbereiten, neue Arbeitsdaten zu bilden, durch Einsetzen der relevanten Operation (Addiere, Aktualisiere oder Lösche) in Feld 52 und Einsetzen des Datensatzkennzeichners Kn (einschließlich seiner Länge) in Feld 54 von 3. Eine Überprüfung wird in Block 2020 gemacht, um festzustellen, ob die Operation Aktualisieren oder Löschen ist. Wenn die Operation Aktualisieren oder Löschen ist (so daß ein alter Datensatz ausgetauscht wird), dann wird in Block 2030 die Hash der angesammelten Datei berechnet, indem der alte Datensatz herausgezogen wird. Um den alten Datensatz aus der Gesamthash zu entfernen, wird die Funktion Finv wie folgt eingesetzt: Datei-Hash = Finv (Datei-Hash, Hash (Länge von Kn||Kn||AltRn)).
  • Bei der bevorzugten Implementierung, bei der F und Finv Exklusiv-ODER sind, wird dies: Datei-Hash = Datei-Hash XOR Hash (Länge von Kn||Kn||AltRn).
  • Wenn eine Löschoperation angezeigt wird, dann werden Dummyfelder 54 und 56 für den Wert des überarbeiteten Datensatzes eingesetzt, weil es keine solchen Werte gibt.
  • Wenn die Operation nicht Aktualisieren oder Löschen ist (oder nach der Neuberechnung der Hash des existierenden Datensatzes in Block 2030) erreicht die Steuerung Block 2040, wo eine Überprüfung gemacht wird, um festzustellen, ob die Operation Addieren oder Aktualisieren ist. Wenn die Operation Addieren oder Aktualisieren ist, dann verzweigt die Routine zu Block 2050, in dem ein neuer Datensatz derart verarbeitet wird, daß der neue Datensatz in das Arbeitsdatendatenstrukturfeld 56 eingesetzt wird, und der vorgeschlagene überarbeitete Datensatz NeuRn in die Gesamtdatei-Hash unter Verwendung des folgenden aufgenommen wird: Datei-Hash = F(Datei-Hash, Hash (Länge von Kn||Kn||NeuRn)).
  • Bei der bevorzugten Implementierung, bei der Fn und Finv Exklusiv-ODER sind, wird dies: Datei-Hash = Datei-Hash XOR Hash (Länge von Kn||Kn||NeuRn).
  • Wenn die Operation nicht Addieren oder Aktualisieren ist (oder nach der Verarbeitung in Block 2050), wird die überarbeite Datei-Hash der gesamten Datenbank in Feld 58 von der Arbeitsdatendatenstruktur 50 eingesetzt (2060). Die Hash der Verkettung der neu vorgeschlagenen Arbeitsdatenfelder 52, 54, 56 und 58 wird berechnet und in Feld 60 der Arbeitsdatenstruktur 50 eingesetzt. Die neuen Arbeitsdaten werden in die Arbeitsdatendatei nach der Verschlüsselung derartiger Daten, wenn es notwendig ist, geschrieben. Zumindest Feld 60 von der Arbeitsdatendatei sollte zum Schutz verschlüsselt werden.
  • Eine Überprüfung wird in Block 2070 gemacht, um festzustellen, ob das Schreiben einer derartigen Information auf z.B. den Plattenspeicher erfolgreich war. Wenn des Schreiben mißlang, verzweigt die Routine zu Block 2080. Anderenfalls wird mit Block 2100 fortgefahren.
  • Selbst in dem Fall eines Fehlers an diesem Punkt bei der Verarbeitung der Datenbankdatei sollte die Dateihash intakt und konsistent sein, und eine zukünftige Wiederherstellung wird richtige Daten ergeben, weil: wenn die Arbeitsdaten tatsächlich überhaupt nicht geschrieben wurden, dann wird die Wiederherstellung die letzte Aktualisierung sehen und die Datenbankdatei in ihrem aktuellen Zustand wieder speichern. Wenn die Arbeitsdaten zum Teil oder fehlerhaft geschrieben wurden, dann wird die entgültige Hash in Feld 60 einer späteren Wiederherstellung den Fehler zeigen; keine Aktion wird gemacht werden, und die Datenbank wird in ihrem aktuellen (richtigen) Zustand bleiben dürfen. Wenn die Arbeitsdaten tatsächlich wie gewünscht geschrieben wurden, dann wird die Wiederherstellung eine richtige Aufzeichnung sehen und die letzten Änderungen wie beabsichtigt anwenden. Die Aktualisierung wird dann beendet.
  • Wenn die Überprüfung in Block 2070 anzeigt, daß das Schreiben erfolgreich war, dann wird die beabsichtigte Aktualisieroperation (z.B. Addiere, Aktualisiere, Lösche) in Block 2100 durchgeführt. Eine Überprüfung wird dann in Block 2110 gemacht, um festzustellen, ob die Operation erfolgreich durchgeführt wurde. Die Operation kann aus einer Vielfalt von Gründen fehlschlagen (einschließlich z.B. der Stromunterbrechung durch den Benutzer). Auf jeden Fall wird während des Wiederherstellungsverfahrens die Operation wieder versucht werden. Bei dem Ausführungsbeispiel verläßt die Routine die aktuelle Addier-, Aktualisier- und Löschroutine (2115) und stellt den Fehler dem Aufrufer dar.
  • Wenn die Operation erfolgreich war, dann wird die aktualisierte Datei-Hash geschrieben und verschlüsselt (2120). Sobald der Datei-Hash-Wert erfolgreich geschrieben wurde, wie durch die Überprüfung in Block 2130 festgestellt, verzweigt die Routine zurück mit einem Hinweis, daß die Datenbankdateimodifikation erfolgreich war (2145). Wenn das Schreiben nicht erfolgreich war, wie durch die Überprüfung in Block 2130 angezeigt, dann verzweigt die Routine zu Block 2140, wo die Routine mit einem Fehler abbricht. Jeder zukünftige Wiederherstellungsversuch wird die durchgeführte Arbeit bei einem Versuch wiederholen, die Datei-Hash richtig einzustellen. Während das in Verbindung mit den 4 und 5 beschriebene Ausführungsbeispiel die Handhabung von nur einem einzigen Datensatz und einer einzigen Operation zu einer Zeit betrifft, könnte sie, wie es den Fachleuten klar ist, erweitert werden, um mehrere Datensätze zu handhaben.
  • 6 zeigt ein Flußdiagramm, das die Operationsfolge darstellt, die bei Schließenoperationen involviert sind. Wie in Block 3010 angedeutet, wird eine neue endgültige Arbeitsdatenstruktur 50 gebildet, wobei eine Nulloperationanzeige in Feld 52 eingesetzt und Dummyfelder in die Felder 54 und 56 eingesetzt werden. Die endgültige Datei-Hash wird in Feld 58 eingesetzt, und die Hash wird aus der Verkettung der neu gebildeten Arbeitsdatenfelder 52, 54, 56 und 58 berechnet. Diese Hash wird dann in das Arbeitsdatenstrukturfeld 60 eingesetzt. Die endgültige Arbeitsdatenstruktur wird wie geeignet verschlüsselt und in den Speicher geschrieben. Die Verarbeitungsschritte werden dann durchgeführt, um zu gewährleisten, daß der endgültige Datei-Hash-Wert mit der Datei gespeichert wird, indem er z.B. in das Dateiverzeichnis oder in ein anderes sicheres Gebiet bewegt wird (3020). Danach wird die Datenbankdatei geschlossen (3030) und die Arbeitsdatendatei wird gelöscht oder auf andere Weise von der aktuellen Datenbankdatei getrennt (3040).
  • Das Ausführungsbeispiel schafft die volle Dateiintegrität, während es die oben genannten früheren Probleme vermeidet. Die volle Integrität wird mit dem bescheidenen Extra-Overhead des Speicherns eines Hash-Werts erreicht, der jeder Datei in einem Systemdateiverzeichnis zugeordnet ist (in einigen Umgebungen könnte die gesamte Festplatte als eine Datei betrachtet werden), oder in einer speziellen Sicherheitsdatenbank; zusätzliche Verarbeitung, wenn auf jede Datei das erste Mal zugegriffen wird ("geöffnet wird"), um die gesamte Datei abzutasten und die Prüfsumme neu zu berechnen, um sie mit der gespeicherten Hash zu verifizieren; zusätzlicher Arbeitsspeicher, um die Hash für Dateien zu speichern, die in einem bestimmten Moment in Verwendung sind; zusätzliche Verarbeitung, wenn irgend ein Datensatz hinzugefügt, aktualisiert oder entfernt wird – um die überarbeitete Hash zu berechnen und diese Hash für die Datei erneut zu schreiben.
  • Während die Erfindung in Verbindung mit dem beschrieben wurde, was zur Zeit als das praktikabelste und bevorzugteste Ausführungsbeispiel ist, ist es klar, daß die Erfindung nicht auf das offenbarte Ausführungsbeispiel beschränkt sein soll, sondern im Gegenteil ist es beabsichtigt, verschiedene Modifikationen und äquivalente Anordnungen zu erfassen, die in dem Schutzbereich der beigefügten Ansprüche enthalten sind.

Claims (23)

  1. Verfahren zum Schützen von Sammlungen mehrerer diskreter Dateneinheiten, die von Zeit zu Zeit durch ein zugehöriges Datenverarbeitungssystem modifiziert werden, mit dem Erhalten eines Prüfsummenwerts für jede der diskreten Dateneinheiten, indem eine Prüfsummenoperation unter Verwendung zumindest des Datenwertteils der Dateneinheit durchgeführt wird, der zu schützen ist, gekennzeichnet durch: Ansammeln des Prüfsummenwerts für jede diskrete Dateneinheit unter Verwendung einer Funktion, die den unabhängigen Einschluß und die unabhängige Löschung von jedem individuellen Prüfsummenwert aus dem angesammelten Prüfsummenwert zuläßt.
  2. Verfahren nach Anspruch 1, des Weiteren mit dem Schritt des Löschens eines individuellen Prüfsummenwerts unter Verwendung der Inversen der Funktion.
  3. Verfahren nach Anspruch 1, des Weiteren mit dem Schritt des Einschließens eines Anzeigers, der die relative Reihenfolge jeder Dateneinheit gegenüber den anderen Dateneinheiten unterscheidet, als Teil der für jede Dateneinheit prüfzusummierenden Daten.
  4. Verfahren nach Anspruch 1, des Weiteren mit dem Schritt des Aktualisierens einer der diskreten Dateneinheiten, und des Arbeitens mit dem angesammelten Prüfsummenwert unter Verwendung der Inversen der Funktion.
  5. Verfahren nach Anspruch 3, bei dem der Anzeiger eine Nummer einer Vielzahl von sequenziell angeordneten Dateneinheitsnummern ist.
  6. Verfahren nach Anspruch 1, bei dem der Anzeiger ein Schlüsselwert ist, der eingesetzt wird, um die diskreten Dateneinheiten assoziativ zu indizieren.
  7. Verfahren nach Anspruch 1, bei dem die diskreten Dateneinheiten Bytes sind.
  8. Verfahren nach Anspruch 1, bei dem die diskreten Dateneinheiten Sektoren sind.
  9. Verfahren nach Anspruch 1, des Weiteren mit den folgenden Schritten: Durchführen einer bestimmten Prüfsummenoperation auf eine erste Datengruppe und einen Anzeiger, der die erste Gruppe identifiziert; Durchführen einer bestimmten Prüfsummenoperation auf eine zweite Datengruppe und einen Anzeiger, der die zweite Gruppe identifiziert; und Kombinieren der Prüfsummen, um eine angesammelte Prüfsumme, unter Verwendung einer Funktion festzustellen, wodurch die Prüfsumme der ersten Gruppe und die Prüfsumme der zweiten Gruppe nacheinander aus der angesammelten Prüfsumme unter Verwendung der Inversen der Funktion extrahiert werden können.
  10. Verfahren nach Anspruch 9, bei dem der Schritt des Durchführens einer Aktualisieroperation den folgenden Schritt umfaßt: Arbeiten mit der angesammelten Prüfsumme unter Verwendung der Inversen der Funktion.
  11. Verfahren nach Anspruch 9, bei dem der Schritt des Berechnens der Prüfsumme einen Anzeiger, der die erste Datengruppe identifiziert, und einen Anzeiger einsetzt, der die zweite Datengruppe identifiziert.
  12. Verfahren nach Anspruch 1 oder 9, bei dem die diskreten Dateneinheiten oder die erste Datengruppe und die zweite Datengruppe Datensätze sind.
  13. Verfahren nach Anspruch 1, des Weiteren mit dem Führen eines Gültigkeitsanzeigers einer aktualisierbaren Datendatei mit einer Vielzahl von Dateneinheiten und einer zugehörigen Dateiprüfsumme mit den folgenden Schritten: Zugreifen auf die Dateiprüfsumme; Aktualisieren einer Dateneinheit der Vielzahl von Dateneinheiten, um eine aktualisierte Dateneinheit zu erzeugen; und Berechnen einer angesammelten Prüfsumme unter Verwendung der aktualisierten Dateneinheit, indem eine Funktion mit sowohl assoziativer als auch kommutativer Eigenschaft auf die angesammelte Prüfsumme und die aktualisierte Dateneinheit angewendet wird.
  14. Verfahren nach Anspruch 1, des Weiteren mit den folgenden Schritten: Kombinieren des Informationsinhalts eines Datensatzes mit einem Datensatzkennzeichner, um eine angesammelte Datenkette festzustellen; Durchführung einer Prüfsummenoperation auf die angesammelte Datenkette, um einen Prüfsummenwert zu bestimmen; und Anwenden einer Funktion mit sowohl assoziativer als auch kommutativer Eigenschaft auf den Prüfsummenwert.
  15. Verfahren nach einem der Ansprüche 1, 9, 13 oder 14, des Weiteren mit dem Schritt des Zuordnens einer Datenstruktur zu zumindest einer diskreten Dateneinheit oder zumindest entweder der ersten Datengruppe oder der zweiten Datengruppe, oder Gruppen von Datensätzen zur Verwendung, wenn das Datenverarbeitungssystem unterbrochen wird, wenn Aktualisierungen für die Dateneinheit, die Datengruppe oder die Datensätze in Gang sind.
  16. Verfahren nach Anspruch 15, des Weiteren mit dem Schritt des Versehens der Datenstruktur mit einem Feld zum Identifizieren einer Aktualisierungsoperation, die für die Einheit oder Gruppe durchzuführen ist.
  17. Verfahren nach Anspruch 15, des Weiteren mit dem Schritt des Bereitstellens der Datenstruktur mit einem Feld zum Identifizieren einer überarbeiteten Version einer angesammelten Prüfsumme.
  18. Verfahren nach Anspruch 15, des Weiteren mit dem Schritt des Bereitstellens der Datenstruktur mit einem Feld zum Speichern der Prüfsumme von Feldern in der Datenstruktur.
  19. Verfahren nach Anspruch 15, des Weiteren mit dem Schritt des Verschlüsselns zumindest eines Teils der Struktur.
  20. Verfahren nach einem der Ansprüche 1, 9, 13 oder 17, des Weiteren mit dem Schritt des Speicherns der angesammelten Prüfsumme.
  21. Verfahren nach einem der Ansprüche 1, 9, 13 oder 17, des Weiteren mit dem Schritt des Speicherns der ange sammelten Prüfsumme, derart, daß sie nicht von irgend jemand anderem als einem berechtigten Benutzer modifiziert werden kann.
  22. Verfahren nach einem der Ansprüche 1, 9, 13 oder 14, bei dem die Funktion eine Exklusiv-ODER-Operation ist.
  23. Verfahren nach einem der Ansprüche 1, 9, 13 oder 14, bei dem die Funktion eine Additionsoperation ist.
DE69431944T 1993-11-19 1994-05-12 Verfahren zum effizienten Aktualisieren des Hashwertes einer Datei Expired - Lifetime DE69431944T3 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US154520 1993-11-19
US08/154,520 US5475826A (en) 1993-11-19 1993-11-19 Method for protecting a volatile file using a single hash

Publications (3)

Publication Number Publication Date
DE69431944D1 DE69431944D1 (de) 2003-02-06
DE69431944T2 true DE69431944T2 (de) 2008-01-24
DE69431944T3 DE69431944T3 (de) 2008-05-21

Family

ID=22551646

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69431944T Expired - Lifetime DE69431944T3 (de) 1993-11-19 1994-05-12 Verfahren zum effizienten Aktualisieren des Hashwertes einer Datei

Country Status (7)

Country Link
US (2) US5475826A (de)
EP (1) EP0654920B2 (de)
JP (2) JPH0883046A (de)
AT (1) ATE230534T1 (de)
AU (1) AU5778394A (de)
CA (1) CA2120678C (de)
DE (1) DE69431944T3 (de)

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475826A (en) * 1993-11-19 1995-12-12 Fischer; Addison M. Method for protecting a volatile file using a single hash
US5687361A (en) * 1995-02-13 1997-11-11 Unisys Corporation System for managing and accessing a dynamically expanding computer database
WO1996032685A1 (en) 1995-04-11 1996-10-17 Kinetech, Inc. Identifying data in a data processing system
US5987140A (en) * 1996-04-26 1999-11-16 Verifone, Inc. System, method and article of manufacture for secure network electronic payment and credit collection
US5963924A (en) * 1996-04-26 1999-10-05 Verifone, Inc. System, method and article of manufacture for the use of payment instrument holders and payment instruments in network electronic commerce
US6016484A (en) * 1996-04-26 2000-01-18 Verifone, Inc. System, method and article of manufacture for network electronic payment instrument and certification of payment and credit collection utilizing a payment
JPH09311806A (ja) * 1996-05-24 1997-12-02 Hitachi Ltd データ不正更新の検出方法
US6263442B1 (en) * 1996-05-30 2001-07-17 Sun Microsystems, Inc. System and method for securing a program's execution in a network environment
US6119105A (en) * 1996-06-17 2000-09-12 Verifone, Inc. System, method and article of manufacture for initiation of software distribution from a point of certificate creation utilizing an extensible, flexible architecture
US5889863A (en) * 1996-06-17 1999-03-30 Verifone, Inc. System, method and article of manufacture for remote virtual point of sale processing utilizing a multichannel, extensible, flexible architecture
US6002767A (en) * 1996-06-17 1999-12-14 Verifone, Inc. System, method and article of manufacture for a modular gateway server architecture
US5983208A (en) * 1996-06-17 1999-11-09 Verifone, Inc. System, method and article of manufacture for handling transaction results in a gateway payment architecture utilizing a multichannel, extensible, flexible architecture
US6072870A (en) * 1996-06-17 2000-06-06 Verifone Inc. System, method and article of manufacture for a gateway payment architecture utilizing a multichannel, extensible, flexible architecture
US5943424A (en) * 1996-06-17 1999-08-24 Hewlett-Packard Company System, method and article of manufacture for processing a plurality of transactions from a single initiation point on a multichannel, extensible, flexible architecture
US6026379A (en) * 1996-06-17 2000-02-15 Verifone, Inc. System, method and article of manufacture for managing transactions in a high availability system
US6373950B1 (en) 1996-06-17 2002-04-16 Hewlett-Packard Company System, method and article of manufacture for transmitting messages within messages utilizing an extensible, flexible architecture
US5987132A (en) * 1996-06-17 1999-11-16 Verifone, Inc. System, method and article of manufacture for conditionally accepting a payment method utilizing an extensible, flexible architecture
US5944821A (en) * 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
US5745900A (en) * 1996-08-09 1998-04-28 Digital Equipment Corporation Method for indexing duplicate database records using a full-record fingerprint
US5931917A (en) * 1996-09-26 1999-08-03 Verifone, Inc. System, method and article of manufacture for a gateway system architecture with system administration information accessible from a browser
US5892904A (en) * 1996-12-06 1999-04-06 Microsoft Corporation Code certification for network transmission
US6367012B1 (en) 1996-12-06 2002-04-02 Microsoft Corporation Embedding certifications in executable files for network transmission
US6708274B2 (en) * 1998-04-30 2004-03-16 Intel Corporation Cryptographically protected paging subsystem
US6266771B1 (en) 1997-02-10 2001-07-24 The Regents Of The University Of California Probabilistic signature scheme
US5996076A (en) * 1997-02-19 1999-11-30 Verifone, Inc. System, method and article of manufacture for secure digital certification of electronic commerce
WO1998045980A2 (en) * 1997-03-10 1998-10-15 Fielder Guy L Secure deterministic encryption key generator system and method
WO1998047264A1 (de) * 1997-04-14 1998-10-22 Siemens Aktiengesellschaft Verfahren und anordnung zur bildung und überprüfung einer prüfsumme für digitale daten, die in mehrere datensegmente gruppiert sind
US6065119A (en) * 1997-05-30 2000-05-16 The Regents Of The University Of California Data validation
US6122372A (en) * 1997-06-04 2000-09-19 Signet Assurance Company Llc System and method for encapsulating transaction messages with verifiable data generated identifiers
US6339829B1 (en) * 1998-07-30 2002-01-15 International Business Machines Corporation Method and apparatus to store extended security information in a data structure which shadows a java class object
US8347086B2 (en) * 2000-12-18 2013-01-01 Citibank, N.A. System and method for automatically detecting and then self-repairing corrupt, modified of non-existent files via a communication medium
US6460122B1 (en) * 1999-03-31 2002-10-01 International Business Machine Corporation System, apparatus and method for multi-level cache in a multi-processor/multi-controller environment
US6299452B1 (en) * 1999-07-09 2001-10-09 Cognitive Concepts, Inc. Diagnostic system and method for phonological awareness, phonological processing, and reading skill testing
AU1588601A (en) * 1999-11-08 2001-06-06 Usertrust, Inc. Legal-based or fiduciary-based data management process
US7010683B2 (en) * 2000-01-14 2006-03-07 Howlett-Packard Development Company, L.P. Public key validation service
US7269726B1 (en) * 2000-01-14 2007-09-11 Hewlett-Packard Development Company, L.P. Lightweight public key infrastructure employing unsigned certificates
US7340600B1 (en) 2000-01-14 2008-03-04 Hewlett-Packard Development Company, L.P. Authorization infrastructure based on public key cryptography
GB2359955B (en) * 2000-03-01 2003-07-23 3Com Corp Network unit including address hashing
AU2001257077A1 (en) * 2000-04-17 2001-10-30 Brio Technology, Inc. Analytical server including metrics engine
US7072897B2 (en) * 2000-04-27 2006-07-04 Hyperion Solutions Corporation Non-additive measures and metric calculation
US7080090B2 (en) * 2000-04-27 2006-07-18 Hyperion Solutions Corporation Allocation measures and metric calculations in star schema multi-dimensional data warehouse
JP2001346135A (ja) * 2000-06-01 2001-12-14 Nikon Gijutsu Kobo:Kk デジタルプリントの注文・作成方法及び装置、並びに画像データの管理方法
US6865577B1 (en) 2000-11-06 2005-03-08 At&T Corp. Method and system for efficiently retrieving information from a database
US7069594B1 (en) * 2001-06-15 2006-06-27 Mcafee, Inc. File system level integrity verification and validation
US7003672B2 (en) * 2001-09-25 2006-02-21 Hewlett-Packard Development Company, L.P. Authentication and verification for use of software
US8266113B2 (en) * 2003-04-01 2012-09-11 Cybersoft, Inc. Methods, apparatus and articles of manufacture for computer file integrity and baseline maintenance
JP2003223365A (ja) * 2002-01-31 2003-08-08 Fujitsu Ltd データ管理機構及びデータ管理機構を有する装置又はカード
US7624434B2 (en) * 2002-03-01 2009-11-24 3Com Corporation System for providing firewall capabilities to a communication device
JP2004030079A (ja) * 2002-06-24 2004-01-29 Fuji Electric Holdings Co Ltd コンテンツ受配信システム
US7337471B2 (en) * 2002-10-07 2008-02-26 Symantec Corporation Selective detection of malicious computer code
US7260847B2 (en) * 2002-10-24 2007-08-21 Symantec Corporation Antivirus scanning in a hard-linked environment
AU2003292299A1 (en) * 2002-10-30 2004-06-03 Thomson Licensing S.A. Method for renewing symmetrical keys in a digital network
US7373664B2 (en) * 2002-12-16 2008-05-13 Symantec Corporation Proactive protection against e-mail worms and spam
US7263720B2 (en) * 2002-12-16 2007-08-28 Intel Corporation Method and mechanism for validating legitimate software calls into secure software
US20040153666A1 (en) * 2003-02-05 2004-08-05 Sobel William E. Structured rollout of updates to malicious computer code detection definitions
US20040158546A1 (en) * 2003-02-06 2004-08-12 Sobel William E. Integrity checking for software downloaded from untrusted sources
US7293290B2 (en) * 2003-02-06 2007-11-06 Symantec Corporation Dynamic detection of computer worms
US7246227B2 (en) * 2003-02-10 2007-07-17 Symantec Corporation Efficient scanning of stream based data
US7546638B2 (en) * 2003-03-18 2009-06-09 Symantec Corporation Automated identification and clean-up of malicious computer code
US7739278B1 (en) * 2003-08-22 2010-06-15 Symantec Corporation Source independent file attribute tracking
CN1871568B (zh) 2003-08-26 2010-04-28 松下电器产业株式会社 程序执行设备
US20050071640A1 (en) * 2003-09-25 2005-03-31 General Instrument Corporation Method and apparatus for authenticating data
US7519822B2 (en) * 2004-03-10 2009-04-14 Hewlett-Packard Development Company, L.P. Method and apparatus for processing descriptive statements
US7130981B1 (en) 2004-04-06 2006-10-31 Symantec Corporation Signature driven cache extension for stream based scanning
US7861304B1 (en) 2004-05-07 2010-12-28 Symantec Corporation Pattern matching using embedded functions
US7484094B1 (en) 2004-05-14 2009-01-27 Symantec Corporation Opening computer files quickly and safely over a network
US7373667B1 (en) 2004-05-14 2008-05-13 Symantec Corporation Protecting a computer coupled to a network from malicious code infections
US7487353B2 (en) * 2004-05-20 2009-02-03 International Business Machines Corporation System, method and program for protecting communication
US7509680B1 (en) 2004-09-01 2009-03-24 Symantec Corporation Detecting computer worms as they arrive at local computers through open network shares
US7565686B1 (en) 2004-11-08 2009-07-21 Symantec Corporation Preventing unauthorized loading of late binding code into a process
US20060150153A1 (en) * 2004-12-04 2006-07-06 Micah Altman Digital object verification method
US7984018B2 (en) * 2005-04-18 2011-07-19 Microsoft Corporation Efficient point-to-multipoint data reconciliation
GB0510878D0 (en) * 2005-05-27 2005-07-06 Qinetiq Ltd Digital evidence bag
US7895654B1 (en) 2005-06-27 2011-02-22 Symantec Corporation Efficient file scanning using secure listing of file modification times
US7975303B1 (en) 2005-06-27 2011-07-05 Symantec Corporation Efficient file scanning using input-output hints
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8060747B1 (en) * 2005-09-12 2011-11-15 Microsoft Corporation Digital signatures for embedded code
JP3894335B1 (ja) * 2005-10-04 2007-03-22 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースの整合性を判断する装置、およびその方法
US8185576B2 (en) 2006-03-14 2012-05-22 Altnet, Inc. Filter for a distributed network
US7966602B1 (en) * 2006-03-16 2011-06-21 Oracle America, Inc. Incremental modification detector, and methods, systems, and apparatus for implementing the same
US20080033740A1 (en) * 2006-08-04 2008-02-07 Robert Cahn On-line anonymous age verification for controlling access to selected websites
US20080022414A1 (en) * 2006-03-31 2008-01-24 Robert Cahn System and method of providing unique personal identifiers for use in the anonymous and secure exchange of data
US7757098B2 (en) * 2006-06-27 2010-07-13 Intel Corporation Method and apparatus for verifying authenticity of initial boot code
US7689547B2 (en) * 2006-09-06 2010-03-30 Microsoft Corporation Encrypted data search
US8510859B2 (en) 2006-09-26 2013-08-13 Intel Corporation Methods and arrangements to launch trusted, co-existing environments
EP1918839A1 (de) * 2006-11-03 2008-05-07 Siemens Aktiengesellschaft Modifizieren eines Softwarestands einer Steuergerätesoftware für ein Steuergerät und Erkennen einer solchen Modifikation
JP5049288B2 (ja) * 2006-11-09 2012-10-17 パナソニック株式会社 改竄検出システム、改竄検出方法、改竄検出プログラム、記録媒体、集積回路、認証情報生成装置及び改竄検出装置
JP2008146601A (ja) * 2006-12-13 2008-06-26 Canon Inc 情報処理装置及び情報処理方法
JP4998019B2 (ja) * 2007-03-06 2012-08-15 富士通株式会社 状態表示制御装置
US8893241B2 (en) 2007-06-01 2014-11-18 Albright Associates Systems and methods for universal enhanced log-in, identity document verification and dedicated survey participation
US8056118B2 (en) 2007-06-01 2011-11-08 Piliouras Teresa C Systems and methods for universal enhanced log-in, identity document verification, and dedicated survey participation
US9398022B2 (en) 2007-06-01 2016-07-19 Teresa C. Piliouras Systems and methods for universal enhanced log-in, identity document verification, and dedicated survey participation
US8959584B2 (en) 2007-06-01 2015-02-17 Albright Associates Systems and methods for universal enhanced log-in, identity document verification and dedicated survey participation
US9424266B2 (en) * 2007-10-01 2016-08-23 Microsoft Technology Licensing, Llc Efficient file hash identifier computation
US8156126B2 (en) * 2008-07-14 2012-04-10 Greenbytes, Inc. Method for the allocation of data on physical media by a file system that eliminates duplicate data
WO2010111440A2 (en) 2009-03-25 2010-09-30 Pacid Technologies, Llc Token for securing communication
US8726032B2 (en) 2009-03-25 2014-05-13 Pacid Technologies, Llc System and method for protecting secrets file
US8934625B2 (en) * 2009-03-25 2015-01-13 Pacid Technologies, Llc Method and system for securing communication
TW201103298A (en) 2009-03-25 2011-01-16 Pacid Technologies Llc Method and system for securing communication
US8782408B2 (en) 2009-03-25 2014-07-15 Pacid Technologies, Llc Method and system for securing communication
US8812513B2 (en) 2009-12-25 2014-08-19 International Business Machines Corporation Hash pointer checking for hierarchical database logical relationship
US9075798B2 (en) * 2010-07-30 2015-07-07 Adobe Systems Incorporated Verifying authenticity of input using a hashing algorithm
DE102010061733B4 (de) * 2010-11-22 2022-05-05 Beckhoff Automation Gmbh Verfahren zum Erstellen eines Steuerprogramms
EP2477137A1 (de) 2011-01-12 2012-07-18 Safelayer Secure Communications, S.A. Verfahren zur Überprüfung der Integrität eines Datensatzes
US8881294B2 (en) 2011-02-18 2014-11-04 Honeywell International Inc. Methods and systems for securely uploading files onto aircraft
US8745750B2 (en) 2011-04-21 2014-06-03 Microsoft Corporation Origination verification using execution transparent marker context
US20120324446A1 (en) * 2011-06-17 2012-12-20 Microsoft Corporation Virtual machine image composition and signing
TWI569614B (zh) 2011-08-30 2017-02-01 萬國商業機器公司 處理網路通訊之會話的方法、資訊設備、與電腦可讀媒體
US8479021B2 (en) 2011-09-29 2013-07-02 Pacid Technologies, Llc Secure island computing system and method
US20130138969A1 (en) * 2011-11-28 2013-05-30 Mocana Corporation Preventing glitching of a firmware image using one or more layers of randomness
US20130226888A1 (en) * 2012-02-28 2013-08-29 Netapp, Inc. Systems and methods for caching data files
US8806625B1 (en) * 2012-10-02 2014-08-12 Symantec Corporation Systems and methods for performing security scans
CN103778114B (zh) 2012-10-17 2016-03-09 腾讯科技(深圳)有限公司 文件修复系统和方法
GB2512373A (en) * 2013-03-28 2014-10-01 Thunderhead Ltd Document tamper detection
DE102016221108A1 (de) * 2016-10-26 2018-04-26 Volkswagen Aktiengesellschaft Verfahren zum Aktualisieren einer Software eines Steuergeräts eines Fahrzeugs
JP6894220B2 (ja) * 2016-11-30 2021-06-30 キヤノン電子株式会社 情報処理装置及びその制御方法、プログラムおよびシステム
US11036677B1 (en) * 2017-12-14 2021-06-15 Pure Storage, Inc. Replicated data integrity
EP3667505B1 (de) 2018-12-14 2021-11-10 Nxp B.V. Speichersystem und -verfahren mit einer inkrementellen hashing-operation
JP6656446B1 (ja) * 2019-03-22 2020-03-04 株式会社ウフル デバイス管理システム、デバイス管理方法、情報処理装置、及びプログラム
US11449548B2 (en) 2019-11-27 2022-09-20 Elasticsearch B.V. Systems and methods for enriching documents for indexing
US11410167B2 (en) * 2019-12-30 2022-08-09 Paypal, Inc. Efficient transaction reconciliation system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4352952A (en) * 1978-06-12 1982-10-05 Motorola Inc. Data security module
US4290105A (en) * 1979-04-02 1981-09-15 American Newspaper Publishers Association Method and apparatus for testing membership in a set through hash coding with allowable errors
US4588991A (en) * 1983-03-07 1986-05-13 Atalla Corporation File access security method and means
US5005200A (en) * 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5144659A (en) * 1989-04-19 1992-09-01 Richard P. Jones Computer file protection system
JP2668438B2 (ja) * 1989-04-21 1997-10-27 三菱電機株式会社 データ検索装置
US5204966A (en) * 1990-03-09 1993-04-20 Digital Equipment Corporation System for controlling access to a secure system by verifying acceptability of proposed password by using hashing and group of unacceptable passwords
US5136647A (en) * 1990-08-02 1992-08-04 Bell Communications Research, Inc. Method for secure time-stamping of digital documents
EP0483424A1 (de) * 1990-10-30 1992-05-06 International Business Machines Corporation Verschlüsselungsverfahren in Datenverarbeitungsgeräten
US5208853A (en) * 1991-09-09 1993-05-04 Motorola, Inc. Method and apparatus for usage protection of data files using split key and unique variable
JPH06102822A (ja) * 1991-09-26 1994-04-15 Rooreru Intelligent Syst:Kk ファイルセキュリティシステム
US5297208A (en) * 1992-08-05 1994-03-22 Roger Schlafly Secure file transfer system and method
US5483598A (en) * 1993-07-01 1996-01-09 Digital Equipment Corp., Patent Law Group Message encryption using a hash function
US5319712A (en) * 1993-08-26 1994-06-07 Motorola, Inc. Method and apparatus for providing cryptographic protection of a data stream in a communication system
US5432852A (en) * 1993-09-29 1995-07-11 Leighton; Frank T. Large provably fast and secure digital signature schemes based on secure hash functions
US5475826A (en) * 1993-11-19 1995-12-12 Fischer; Addison M. Method for protecting a volatile file using a single hash

Also Published As

Publication number Publication date
US5475826A (en) 1995-12-12
ATE230534T1 (de) 2003-01-15
JP2006092574A (ja) 2006-04-06
EP0654920B1 (de) 2003-01-02
CA2120678C (en) 1999-08-24
DE69431944D1 (de) 2003-02-06
EP0654920A3 (de) 2000-03-08
AU5778394A (en) 1995-05-25
US5694569A (en) 1997-12-02
EP0654920B2 (de) 2007-09-05
DE69431944T3 (de) 2008-05-21
CA2120678A1 (en) 1995-05-20
JPH0883046A (ja) 1996-03-26
EP0654920A2 (de) 1995-05-24

Similar Documents

Publication Publication Date Title
DE69431944T2 (de) Verfahren zum effizienten Aktualisieren des Hashwertes eines Dateien
DE60204049T2 (de) Systeme, verfahren und einrichtungen zur sicheren datenverarbeitung
DE69736310T2 (de) Erzeugung und Verteilung digitaler Dokumente
DE69634880T2 (de) Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem
DE10084964B3 (de) Verfahren zum sicheren Speichern, Übertragen und Wiedergewinnen inhaltsadresssierbarer Informationen
DE69724946T2 (de) Programmvermietungssystem und Verfahren zur Vermietung von Programmen
DE69931967T2 (de) Methode zur sicherung von elektronischer information
DE69131789T2 (de) Verfahren zur sicheren zeitstempelung von digitalen dokumenten
DE60200616T2 (de) Gesicherte Inhaltsobjekte
DE69333068T2 (de) Verfahren zur ausdehnung der gültigkeit eines kryptographischen zertifikats
DE69022424T2 (de) Nichtablehnung in Rechnernetzwerken.
DE60117598T2 (de) Sichere transaktionen mit passiven speichermedien
RU2351978C2 (ru) Способ обеспечения целостности набора записей данных
DE4243908C2 (de) Verfahren zur Erzeugung einer digitalen Signatur mit Hilfe eines biometrischen Merkmals
WO2001006341A1 (de) Datenverarbeitungsvorrichtung
DE10233297A1 (de) Vorrichtung zur digitalen Signatur eines elektronischen Dokuments
DE69737806T2 (de) Datenverschlüsselungsverfahren
EP3552344B1 (de) Bidirektional verkettete blockchainstruktur
DE60221861T2 (de) Server mit dateiverifikation
DE102007008293B4 (de) Verfahren und Vorrichtung zum gesicherten Speichern und zum gesicherten Lesen von Nutzdaten
EP0947072A1 (de) Verfahren zur elektronisch gesicherten speicherung von daten in einer datenbank
DE19932703C2 (de) Datenverarbeitungsvorrichtung
DE10162991A1 (de) Verfahren zum rechnergestützten Ver- und Entschlüsseln von Daten
EP0567492B1 (de) Verfahren und anordnung zur überwachung von rechnermanipulationen
EP4080847A1 (de) Sicheres verändern von anwendungsdaten in einer blockchain

Legal Events

Date Code Title Description
8363 Opposition against the patent
8366 Restricted maintained after opposition proceedings