DE69431944T3 - Verfahren zum effizienten Aktualisieren des Hashwertes einer Datei - Google Patents

Verfahren zum effizienten Aktualisieren des Hashwertes einer Datei Download PDF

Info

Publication number
DE69431944T3
DE69431944T3 DE69431944T DE69431944T DE69431944T3 DE 69431944 T3 DE69431944 T3 DE 69431944T3 DE 69431944 T DE69431944 T DE 69431944T DE 69431944 T DE69431944 T DE 69431944T DE 69431944 T3 DE69431944 T3 DE 69431944T3
Authority
DE
Germany
Prior art keywords
data
file
hash
checksum
function
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
DE69431944T2 (de
DE69431944D1 (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(T3) "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
Publication of DE69431944T2 publication Critical patent/DE69431944T2/de
Application granted granted Critical
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

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, dass 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, dass 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, dass die Unversehrtheit der Datei geschützt werden kann, indem eine Einwegprüfsumme (z.B., indem MDS 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, dass 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, dass die Dateiprüfsumme auf eine Weise gespeichert wird, dass sie ihre eigene Unverfälschtheit gewährleistet, kann sie verwendet werden, um zu gewährleisten, dass 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, dass 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, dass 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ühren wird.
  • Bestehende Techniken erfordern, dass 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, dass 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 Tage 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, dass 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, dass 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, dass, 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, muss 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.
  • Die Veröffentlichung RFC 1071 „Computing the Internet Checksum" von R. Grader, D. Bormann und C. Partridge offenbart einen Schutz von Dateien, die von Zeit zu Zeit modifiziert werden, indem ein Hash-Wert in Form einer Prüfsummenberechnung ermittelt wird, und die ohne die Notwendigkeit einer vollständigen Neuberechnung aktualisiert werden.
  • Es ist eine Aufgabe der vorliegenden Erfindung, die Effizienz der Aktualisierung zu verbessern. Diese Aufgabe wird durch das Verfahren des beigefügten Anspruchs 1 gelöst.
  • 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 Einschluss und die unabhängige Löschung von jedem individuellen Prüfsummenwert von dem angesammelten Prüfsummenwert zulässt.
  • Ein derartiges Verfahren bietet einen neuen Weg, die Inhalte von einer Datei mit Prüfsummen zu versehen, so dass 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ässt es zu, dass jedes Barunterliegende 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 dass Änderungen an bestehenden Pro grammen 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, dass ein unsicheres Berechnungssystem sicher elektronische Hochsicherheitsfinanztransaktionen durchführt. Wie es hier im Detail erläutert wird, lässt es das vorliegende Verfahren zu, dass die Prüfsumme einer Datei auf einer inkrementellen Basis gemacht wird. Das erlaubt es, dass 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 dass die Prüfsumme der gesamten Datei gemäß den herkömmlichen Verfahren neu berechnet werden muss.
  • "H", Das Ausführungsbeispiel erfüllt diese Aufgaben unter Verwendung von zwei Funktionen. Die erste Funktion ist eine effektive Einwegprüfsummenfunktion 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 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 Funktion umfassen Exklusiv-ODER ("XOR") und die arithmetische Addition.
  • Die Methodologie umfasst 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 berechtigen 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, dass 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 Flussdiagramm 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 Flussdiagramm 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 Flussdiagramm zeigt, das die Operationsfolge darstellt, die gemäß einem Ausführungsbeispiel für eine Schließoperation durchgeführt wird.
  • DETALLIERTE 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 umfasst 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 umfasst auch eine herkömmliche IBM PC-Kommunikationskarte (nicht gezeigt), die, wenn sie an ein herkömmliches Modem 6, 8, bzw. 10, angeschlossen ist, zulässt, dass die Terminals Nachrichten übertragen und empfangen. Jedes Terminal umfasst eine herkömmliche IBM PC-Plattenspeichervorrichtung, die zulässt, dass 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 Nachricht 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.
  • Terminals 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 bewusst, mit dem die Benutzer anderer eine Nachricht verschlüsseln. Außerdem ist sich jeder Benutzer des Terminals des Verschlüsselungsschlüssels bewusst, 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 Signatu ren 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, dass nur der Halter des geheimen Entschlüsselungsschlüssels die Nachricht erzeugt haben sollte. Somit hat der Empfänger der signierten Nachricht den Beweis, dass 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, dass es nicht gemäß einer zugehörigen PAI berechtigt ist. Die PAI – Information wird eingesetzt, um Programme dagegen schützen, dass 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, dass 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 man 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 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 I 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 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 (ihren. Auf Platten, die so organisiert 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, dass 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 Dateibeschä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 Datensatzverarbeitungsinformationen für den Fall, dass 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, dass 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, und 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, dass 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 muss, 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 Arbeitsdatenstruktur 50 fünf Felder auf. Das Operationsfeld 52 zeigt entweder eine "Addiere"-, "Aktualisiere"-, "Lösche"- oder "Null"- Operation an. Ein Datenkennzeichnerfeld 54 kennzeichnet Ki. Außerdem umfasst 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 irgendein 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 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, dass weder die Datenprüfsumme noch die Arbeitsdaten durch kluge Gegner manipuliert werden können.
  • Es gibt noch einen weiteren Angriff, der berücksichtigt werden muss, nämlich, dass 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, bewusst 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, dass 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, dass 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 muss derart ausgelegt sein, dass 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 dass sie von dem gültigen Benutzer(n) als vertrauenswürdig verifiziert werden kann.
  • Irgend eine andere Technik kann eingesetzt werden, so dass 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ässt, dass 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 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 vorn 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, dass Datensätze am besten durch einen Indexdatenschlüssel unterschieden werden, das ist der Wert K1, 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((Ki i & Ri)).
  • Mit diesem Protokoll kann die überarbeitete Hash wie geändert berechnet und gespeichert werden.
  • 4 zeigt ein Flussdiagramm, 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 Dateiflash auf 0 initialisiert wird, wird der Zustand eingestellt, um durch die Datei zu scannen, um zu gewährleisten, dass alle Datensätze vorhanden sind, und gleichzeitig, dass keiner der Datensätze verfälscht wurde oder neu angeordnet wurde, und um zu gewährleisten, dass 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, dass 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, dass eine Arbeitsdatendatenstruktur existiert, dann wird ein Prozess 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 dass sie entschlüsselt werden muss, um ihre Inhalte zu lesen. Eine Überprüfung wird dann in Block 1030 gemacht, um zu gewährleisten, dass 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, dass Unterbrechungen nicht auftraten, als die Arbeitsdateninformationen verarbeitet wurden.
  • Wenn die berechnete Hash nicht mit der in Feld 60 gespeicherten Hash übereinstimmet (1050), dann verzweigt die Routine zu Block 1220, wo die Verarbeitung zum Erzeugen neuer Arbeitsdaten beginnt. Das Nichtübereinstimmen der Prüfsummen impliziert, dass 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, dass 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ähren, 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 Daten satzes 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, dass 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, dass 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, dass 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, dass 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, dass die Datenbankdatei und die Daten-Hash beide genau und konsistent sind. Wenn die Überprüfung in Block 1120 anzeigt, dass 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, dass die Arbeitsdatendatei falsch aufgebaut war.
  • Wenn die Überprüfung 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, dass die Datenbankdatei konsistent mit der Datei-Hash ist. Um diesen Prozess 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 ge kennzeichneten 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 Flussdiagramm, dass 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. 5 nimmt die unten beschriebene Nomenklatur an, dass die Operation auf den Datensatz Kn stattfindet, und dass für eine Addier- und Aktualisieroperation NeuRn der Wert des Datensatzes Kn ist, der einzusetzen ist. Die folgende Nomenklatur nimmt an, dass 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 wir in Block 2020 gemacht, um festzustellen, ob die Operation Aktualisieren oder Löschen ist. Wenn die Operation Aktualisieren oder Löschen ist (so dass 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, dass 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 überarbeitete 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 das Schreiben misslang, 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 zu Teil oder fehlerhaft geschrieben wurden, dann wird die endgü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, dass 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ässt 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, dass 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 Flussdiagramm, 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 Nulloperationsanzeige in Feld 52 einge setzt und Dummyfelder in die Felder 54 und 56 eingesetzt werden. Die endgültige Datei-Hash wird in Feld 58 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, dass 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, dass 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 (22)

  1. Verfahren zum Schützen von Sammlungen mehrerer diskreter Dateneinheiten, die von Zeit zu Zeit durch ein zugehöriges Datenverarbeitungssystem modifiziert werden, mit dem Gewinnen eines Prüfsummenwerts für jede der diskreten Dateneinheiten durch Ausführen einer ersten Funktion, welche eine Einweg-Prüfsummenfunktion ist, für welche es rechnerisch unmöglich ist, zwei Datenwerte zu finden, die bei Prüfsummenbildung zu demselben Resultat führen, indem eine Prüfsumme unter Verwendung zumindest des Datenwertteils der Dateneinheit durchgeführt wird, der zu schützen ist, wobei der Schritt des Gewinnens eines Prüfsummenwertes den 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 umfasst; und Ansammeln des Prüfsummenwerts für jede diskrete Dateneinheit unter Verwendung einer zweiten Funktion, die den unabhängigen Einschluss und die unabhängig Löschung von jedem individuellen Prüfsummenwert aus dem angesammelten Prüfsummenwert zulässt.
  2. Verfahren nach Anspruch 1, des Weiteren mit dem Schritt des Löschens eines individuellen Prüfsummenwerts unter Verwendung des Inversen der genannten zweiten Funktion.
  3. 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 des Inversen der genannten zweiten Funktion.
  4. Verfahren nach Anspruch 1, bei dem der Anzeiger eine Nummer einer Vielzahl von sequentiell geordneten Dateneinheitsnummern ist.
  5. Verfahren nach Anspruch 1, bei dem der Anzeiger ein Schlüsselwert ist, der eingesetzt wird, um die diskreten Dateneinheiten assoziativ zu indizieren.
  6. Verfahren nach Anspruch 1, bei dem die diskreten Dateneinheiten Bytes sind.
  7. Verfahren nach Anspruch 1, bei dem die diskreten Dateneinheiten Sektoren sind.
  8. Verfahren nach Anspruch 1, des Weiteren mit den folgenden Schritten: Durchführen der genannten ersten Funktion an einer ersten Datengruppe und einem Anzeiger, der die erste Gruppe identifiziert; Durchführen der genannten zweiten Funktion an einer zweiten Datengruppe und einem Anzeiger, der die zweite Gruppe identifiziert; und Kombinieren der Prüfsummen, um eine angesammelte Prüfsumme unter Verwendung der zweiten Funktion festzustellen, wodurch die Prüfsumme der ersten Gruppe und die Prüfsumme der zweiten Gruppe nacheinander aus der angesammelten Prüfsumme unter Verwendung des Inversen der genannten anderen Funktion extrahiert werden können.
  9. Verfahren nach Anspruch 8, bei dem der Schritt des Durchführens einer Aktualisieroperation den folgenden Schritt umfasst: Arbeiten mit der angesammelten Prüfsumme unter Verwendung des Inversen der genannten zweiten Funktion.
  10. Verfahren nach Anspruch 8, 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.
  11. Verfahren nach Anspruch 1 oder 8, bei dem die diskreten Dateneinheiten oder die erste Datengruppe und die zweite Datengruppe Datensätze sind.
  12. 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üfsummen; 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 die zweite Funktion mit sowohl assoziativer Eigenschaft auf die angesammelte Prüfsumme und die aktualisierte Dateneinheit angewendet wird.
  13. 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 der genannten ersten Funktion an der angesammelten Datenkette, um einen Prüfsummenwert zu bestimmen; und Anwenden der genannten zweiten Funktion mit sowohl assoziativer als auch kommutativer Eigenschaft auf den prüfsummenwert.
  14. Verfahren nach einem der Ansprüche 1, 8, 12 oder 13, 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.
  15. Verfahren nach Anspruch 14, 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.
  16. Verfahren nach Anspruch 14, des Weiteren mit dem Schritt des Bereitstellens der Datenstruktur mit einem Feld zum Identifizieren einer überarbeiteten Version einer angesammelten Prüfsumme.
  17. Verfahren nach Anspruch 14, des Weiteren mit dem Schritt des Bereitstellens der Datenstruktur mit einem Feld zum Speichern der Prüfsumme von Feldern in der Datenstruktur.
  18. Verfahren nach Anspruch 14, des Weiteren mit dem Schritt des Verschlüsselns zumindest eines Teils der Struktur.
  19. Verfahren nach einem der Ansprüche 1, 8, 12 oder 16, des Weiteren mit dem Schritt des Speicherns der angesammelten Prüfsumme.
  20. Verfahren nach einem der Ansprüche 1, 8, 12 oder 16, des Weiteren mit dem Schritt des Speicherns der angesammelten Prüfsumme, derart, dass sie nicht von irgend jemand anderem als einem berechtigten Benutzer modifiziert werden kann.
  21. Verfahren nach einem der Ansprüche 1, 8, 12 oder 13, bei dem die Funktion eines Exklusiv-ODER-Operation ist.
  22. Verfahren nach einem der Ansprüche 1, 8, 12 oder 13, 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
US08/154,520 US5475826A (en) 1993-11-19 1993-11-19 Method for protecting a volatile file using a single hash
US154520 1993-11-19

Publications (3)

Publication Number Publication Date
DE69431944D1 DE69431944D1 (de) 2003-02-06
DE69431944T2 DE69431944T2 (de) 2008-01-24
DE69431944T3 true 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 (122)

* 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
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
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
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
US6026379A (en) * 1996-06-17 2000-02-15 Verifone, Inc. System, method and article of manufacture for managing transactions in a high availability system
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
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
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
US6002767A (en) * 1996-06-17 1999-12-14 Verifone, Inc. System, method and article of manufacture for a modular gateway server architecture
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
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
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
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
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
CA2293684A1 (en) * 1997-03-10 1998-10-15 Paul N. Alito Secure deterministic encryption key generator system and method
AU723002B2 (en) * 1997-04-14 2000-08-17 Prasendt Investments, Llc Method and arrangement for forming and checking a checksum for digital data which are grouped into a number of data segments
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
US7340600B1 (en) 2000-01-14 2008-03-04 Hewlett-Packard Development Company, L.P. Authorization infrastructure based on public key cryptography
US7269726B1 (en) * 2000-01-14 2007-09-11 Hewlett-Packard Development Company, L.P. Lightweight public key infrastructure employing unsigned certificates
US7010683B2 (en) * 2000-01-14 2006-03-07 Howlett-Packard Development Company, L.P. Public key validation service
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
US7080090B2 (en) * 2000-04-27 2006-07-18 Hyperion Solutions Corporation Allocation measures and metric calculations in star schema multi-dimensional data warehouse
US7072897B2 (en) * 2000-04-27 2006-07-04 Hyperion Solutions Corporation Non-additive measures and metric calculation
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
AU2003292300A1 (en) * 2002-10-30 2004-06-07 Thomson Licensing S.A. Simplified method for renewing symmetrical keys in a digital network
US7263720B2 (en) * 2002-12-16 2007-08-28 Intel Corporation Method and mechanism for validating legitimate software calls into secure software
US7373664B2 (en) * 2002-12-16 2008-05-13 Symantec Corporation Proactive protection against e-mail worms and spam
US20040153666A1 (en) * 2003-02-05 2004-08-05 Sobel William E. Structured rollout of updates to malicious computer code detection definitions
US7293290B2 (en) * 2003-02-06 2007-11-06 Symantec Corporation Dynamic detection of computer worms
US20040158546A1 (en) * 2003-02-06 2004-08-12 Sobel William E. Integrity checking for software downloaded from untrusted sources
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
EP3798874A1 (de) 2003-08-26 2021-03-31 Panasonic Intellectual Property Corporation of America Programmausführungsvorrichtung
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
US7373667B1 (en) 2004-05-14 2008-05-13 Symantec Corporation Protecting a computer coupled to a network from malicious code infections
US7484094B1 (en) 2004-05-14 2009-01-27 Symantec Corporation Opening computer files quickly and safely over a network
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
US7975303B1 (en) 2005-06-27 2011-07-05 Symantec Corporation Efficient file scanning using input-output hints
US7895654B1 (en) 2005-06-27 2011-02-22 Symantec Corporation Efficient file scanning using secure listing of file modification times
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis 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
WO2008056700A1 (fr) * 2006-11-09 2008-05-15 Panasonic Corporation Système de détection de falsification, procédé de détection de falsification, programme de détection de falsification, support d'enregistrement, circuit intégré, dispositif de génération d'informations d'authentification et dispositif de détection de fals
JP2008146601A (ja) * 2006-12-13 2008-06-26 Canon Inc 情報処理装置及び情報処理方法
JP4998019B2 (ja) * 2007-03-06 2012-08-15 富士通株式会社 状態表示制御装置
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
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
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
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
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
TW201103298A (en) 2009-03-25 2011-01-16 Pacid Technologies Llc Method and system for securing communication
US8959350B2 (en) 2009-03-25 2015-02-17 Pacid Technologies, Llc Token for securing communication
US8934625B2 (en) * 2009-03-25 2015-01-13 Pacid Technologies, Llc Method and system for securing communication
US8726032B2 (en) 2009-03-25 2014-05-13 Pacid Technologies, Llc System and method for protecting secrets file
US8782408B2 (en) 2009-03-25 2014-07-15 Pacid Technologies, Llc Method and system for securing communication
JP5341209B2 (ja) 2009-12-25 2013-11-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 階層型データベースにおけるポインタの整合性をチェックするためのシステム、方法及びプログラム
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 キヤノン電子株式会社 情報処理装置及びその制御方法、プログラムおよびシステム
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
US4868877A (en) * 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5005200A (en) * 1988-02-12 1991-04-02 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
EP0654920B2 (de) 2007-09-05
EP0654920A2 (de) 1995-05-24
CA2120678C (en) 1999-08-24
ATE230534T1 (de) 2003-01-15
EP0654920A3 (de) 2000-03-08
DE69431944T2 (de) 2008-01-24
AU5778394A (en) 1995-05-25
US5475826A (en) 1995-12-12
DE69431944D1 (de) 2003-02-06
US5694569A (en) 1997-12-02
CA2120678A1 (en) 1995-05-20
JP2006092574A (ja) 2006-04-06
EP0654920B1 (de) 2003-01-02
JPH0883046A (ja) 1996-03-26

Similar Documents

Publication Publication Date Title
DE69431944T3 (de) Verfahren zum effizienten Aktualisieren des Hashwertes einer Datei
DE60204049T2 (de) Systeme, verfahren und einrichtungen zur sicheren datenverarbeitung
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
DE69931967T2 (de) Methode zur sicherung von elektronischer information
DE60117598T2 (de) Sichere transaktionen mit passiven speichermedien
DE69721038T2 (de) Transaktionssystem
EP1944716B1 (de) Verfahren und Vorrichtung zum Sichern eines Dokuments mit eingefügtem Signaturabbild und biometrischen Daten in einem Computersystem
DE4243908C2 (de) Verfahren zur Erzeugung einer digitalen Signatur mit Hilfe eines biometrischen Merkmals
DE19964198A1 (de) Datenverarbeitungsvorrichtung
US20050138046A1 (en) Method for ensuring the integrity of a data record set
DE3407642A1 (de) Verfahren und einrichtung zur sicherung des zugriffs zu dateien
DE19959764A1 (de) Verbesserte digitale Signatur
EP3552344B1 (de) Bidirektional verkettete blockchainstruktur
DE112022000906T5 (de) Trennen von blockchain-daten
WO1998026537A1 (de) Verfahren zur elektronisch gesicherten speicherung von daten in einer datenbank
DE19932703C2 (de) Datenverarbeitungsvorrichtung
EP4080847A1 (de) Sicheres verändern von anwendungsdaten in einer blockchain
EP1306820A2 (de) Signatur eines Dokuments
WO1999057688A1 (de) Verfahren zum echtheitsnachweis von urkunden
EP0567492B1 (de) Verfahren und anordnung zur überwachung von rechnermanipulationen
AU720583B2 (en) A method for protecting data
WO2024038210A1 (de) Verfahren zum bereitstellen eines digitalen schlüssels
DE102022000967A1 (de) Verfahren zur Speicherung von Daten die in einer Baumstruktur organisiert und in einem Speicher eines Computersystems abgespeichert sind, wobei der Speicher wiederkehren einen Hash des aktuellen Wurzel-Objekts der Baumstruktur über einen Zeitstempel-Dienst absichert
AT8195U1 (de) Gesicherte übertragung und archivierung von daten

Legal Events

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