DE19811593C1 - Matrixgesteuerte Hashfunktion - Google Patents
Matrixgesteuerte HashfunktionInfo
- Publication number
- DE19811593C1 DE19811593C1 DE19811593A DE19811593A DE19811593C1 DE 19811593 C1 DE19811593 C1 DE 19811593C1 DE 19811593 A DE19811593 A DE 19811593A DE 19811593 A DE19811593 A DE 19811593A DE 19811593 C1 DE19811593 C1 DE 19811593C1
- Authority
- DE
- Germany
- Prior art keywords
- file
- hash value
- matrix
- symbol
- transmitted
- 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 - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Description
Die Erfindung befaßt sich mit einer Einweg-Hashfunktion, die in
der Kryptografie selbst keine Protokolle bildet und auch keine
chiffrierten Daten erzeugt, die übertragen werden sollen,
sondern als grundlegender Baustein eine Art Fingerabdruck einer
zumeist als Klartext vorliegenden lesbaren Textdatei (Dokument,
Information, Vertrag, Nachricht, Auftrag) erzeugt. Mit dem durch
die Hashfunktion gebildeten Hashwert kann ein Vergleich
stattfinden, ob von derselben Datei ausgegangen worden ist oder
ob eine nichtverschlüsselte Datei auf dem Daten-Übertragungsweg
geändert worden ist oder mit Fehlern versehen wurde. Dann, wenn
nicht dieselben Hashwerte aufgrund der Anwendung derselben
Hashfunktion auf zwei verschiedene Dateien herauskommen, sind
diese beiden verschiedenen Dateien nicht gleich. Das kann in der
Kryptoanalyse auf zwei Weisen verwendet werden. Es können zwei
Originale an verschiedenen Stellen verglichen werden, wenn nur
der Hashwert der einen Datei an den anderen Ort zum Empfänger
übermittelt wird und dort von der zu vergleichenden, nicht
übertragenen Datei ein Hashwert berechnet wird. Das kann aber
auch so verwendet werden, daß eine mit einem Hashwert parallel
übermittelte Datei am Empfängerort daraufhin überprüft werden
kann, ob beim Anwenden der dem Empfänger bekannten Hashfunktion
auf die empfangene Datei derselbe Hashwert herauskommt, der mit
der übertragenen Datei übermittelt wurde. Letztere Anwendung der
Hashfunktion dient der Nachrichten-Authentifizierung oder
Integrität, während Erstere einen Vergleich ermöglicht, ähnlich
dem eingangs erwähnten Vergleich von Fingerabdrücken.
Es liegt in der Natur der Sache, daß eine "Einweg-Funktion"
tatsächlich nur einen Hinweg hat und der Rückweg praktisch
verschlossen ist. Wird eine Klartext-Datei der eingangs
genannten Art mit einer Hashfunktion bearbeitet, so kann aus dem
sich ergebenden Hashwert die Datei nicht rekonstruiert werden.
Die Umkehrfunktion, die bei der Übertragung von verschlüsselten
Daten so wichtig ist, findet bei der Hashfunktion also keine
Anwendung. Es werden vielmehr Klartext-Dateien übertragen, die
von jederman gelesen werden können, aber nicht geändert werden
können, ohne diese Änderungen dem Empfänger der Datei, der einen
Vergleich von Hashwerten vornimmt, sichtbar zu machen.
Eine Hashfunktion der beschriebenen Art wird von ZEMOR-G, "Hash
functions and graphs with large girths" in Advances in
Cryptology, Eurocrypt 1991, Springer-Verlag 1991, Seiten 508
bis 511, beschrieben; diese Funktion wandelt große Dateien
(mehrere Megabyte) in die Signatur darstellende wenige hundert
bit um. Je größer die Dateien aber werden, desto mehrdeutiger
werden die vorgegebenen bits der Signatur.
Das Problem der Erfindung liegt darin, eine Hashfunktion
vorzuschlagen, die es ermöglicht eine Datei beliebiger Länge
möglichst eindeutig einem Hashwert zuzuordnen, so daß es
praktisch unmöglich wird, Dateien gezielt so zu ändern, daß sie
denselben Hashwert ergeben.
Dazu schlägt die Erfindung das Verfahren gemäß Anspruch 1 und
das Verfahren gemäß Anspruch 10 vor, wobei das Verfahren gemäß
Anspruch 10 den Empfänger betrifft, der eine nicht chiffrierte
Datei empfängt und einen empfangenen Hashwert mit einem
selbstgenerierten Hashwert aus der empfangenen (oder beim
Empfänger vorhandenen) Datei vergleicht, um sich Sicherheit über
die Integrität oder die Autentizität der Datei zu verschaffen.
Die Erfindung löst sich von dem Gedanken, eine feste Länge des
Hashwertes anzugeben, vielmehr wird der Hashwert um so länger
oder um so größer, je länger die Datei ist, die von der
Hashfunktion bearbeitet wird, die also die Eingangsgröße der
erfindungsgemäßen Hashfunktion ist. Es ist im Stand der Technik
zwar eine Einweg-Hashfunktion schon beschrieben, die eine
variable Länge hat; diese Hashfunktion heißt HAVAL, vgl. Bruce
Schneier, "Angewandte Kryptologie", Addison-Wesley, Ziffer 18.9,
Seite 508 oder Zheng, Pieprzyk, Seberry, "HAVAL- a one-way
hashing algorithm with variable length of output" - Abstract of:
Advances in Cryptology, AUSCRIPT 92, Berlin, Springer-Verlag,
1993, Seiten 83-104. Diese HAVAL-Funktion arbeitet mit variabler
Rundenzahl von 3 bis 5 (mit jeweils 16 Schritten) und kann
Hashwerte der Länge 128, 160, 192, 224 oder 256 Bit erzeugen.
Ein gleitender, stetig mit der Länge der Datei, die der
Hashfunktion unterworfen wird, wachsender Hashwert ist diese
Funktion nicht, dagegen erlaubt die Erfindung ein größer
werdendes Kontrollwort (Hashwert), wenn die Dateien größer
werden. Bereits durch diese grundlegende Überlegung kann
erfindungsgemäß eine Datei möglichst eindeutig einem Hashwert
zugeordnet werden, wobei ersichtlich ist, daß eine größere Datei
für eine eindeutigere Abbildung in einem Hashwert auch einen
größeren Hashwert benötigt. Umgekehrt kann eine Hashfunktion,
wie SNEFRU, die 128 oder 256 Bit als Hashwert mit fester Länge
erzeugt, bei immer größeren Dateien in die Probleme geraten, daß
immer mehr verschiedene (gezielt geänderte) Dateien in demselben
Hashwert abgebildet werden. Gezielte Änderungen, die an mehreren
Stellen einer Datei vorgenommen werden, können so nicht mehr
durch die Hashfunktion erkannt werden und das eröffnet größere
Möglichkeiten für Fälschungen in übertragenen Klartext-Dateien,
die dem Empfänger als zwar geänderte Datei übermittelt werden,
aber bei Erproben der empfängerseits bekannten Hashfunktion
denselben Hashwert liefert, den diejenige Datei geliefert hat,
die noch nicht verfälscht war.
Im Kern der Erfindung liegt es, die Datei, die der Hashfunktion
unterworfen wird in kurze Blöcke aufzuteilen, so beispielsweise
Blocklängen von < 2 byte, bevorzugt in der Größenordnung von 30
bis 50 byte. Jeder Block dient einer Symbolverteilung von
Symbolen in einer vorgegebenen Matrix mit einer definierten
Dimension. Es können auch mehrere Matrizen verwendet werden,
ebenso wie mehrdimensionale Matrizen Einsatz finden können. Die
Symbole werden auf die Elemente der Matrix so verteilt, daß in
allen Elementen der Matrix kein Symbol doppelt vorkommt. Diese
Verteilung der Symbole, was voraussetzt, daß mehr oder zumindest
gleich viel Symbole als Symbolvorrat zur Verfügung stehen, als
Elemente der Matrix vorhanden sind, wird gesteuert von dem
ersten Ausschnitt (Block) der Klartext-Datei, die im folgenden
nur als "Datei" bezeichnet werden soll. Der Ausschnitt ist der
erste kurze Block und er steuert die Symbolverteilung. Diese
Symbolverteilung wird erfindungsgemäß positionsgewichtet und
bildet einen ersten Teil-Hashwert, sei es durch Addition,
Subtraktion oder eine sonstige Rechenfunktion. Die
Positionsgewichtung kann so erfolgen, daß jedes Symbol mit dem
Platz in der Matrix gewichtet wird, an dem es durch den ersten
kurzen Block gesteuert gelangte. Das kann eine aufsteigende
numerische Variable und/oder eine fortlaufende Ziffer von Reihen
sein, die durch einen später zu erläuternden mathematischen
Reihengenerator zur Verfügung gestellt wurde.
Ein weiterer Teil-Hashwert wird für den nächsten kurzen Block,
der der Länge des ersten Blocks entspricht und den folgenden
Ausschnitt der Klartext-Datei darstellt, auf gleiche Weise
ermittelt, wie der erste Teil-Hashwert. Auch hier wird eine
Symbolverteilung vorgenommen, die aber jetzt anders ist, weil
die Eingangsgröße (der zweite Ausschnitt aus der Datei) andere
Werte aufweist. Die Positionsgewichtung erfolgt mit der
geänderten Symbolverteilung. Es wird ein zweiter Hashwert
ermittelt. Die beiden Teil-Hashwerte werden zusammengefaßt, sei
es durch Addition oder eine sonstwie lineare Kombination und es
ergibt sich ein neuer Teil-Hashwert.
Es wird mit der gesamten Datei so weiter verfahren. Weitere
Teil-Hashwerte können mit dem sich zuvor ergebenden Teil-
Hashwert zusammengefaßt werden, so daß sich inkrementell ein
abschließender Hashwert ergibt, der möglichst eindeutig der
Klartext-Datei zugeordnet ist (Anspruch 2).
Die Symbolverteilung kann neben einer Steuerung nur durch den
kurzen Block zusätzlich einer sich nur mit langer Periode
wiederholenden Verschiebung oder Aufschaltung verändern, so daß
selbst Dateien die aus nur gleichen Buchstaben bestehen, nicht
zu immer gleichen Teil-Hashwerten führen. Eine Verschiebung oder
ein Offset nach jeder Symbolverteilung und anknüpfend an einen
jeweiligen neuen Block aus der Datei, deren Hashwert zu bilden
ist, bietet zusätzliche Sicherheit (Anspruch 7).
Ist die Datei von einer solchen Länge, die kein ganzzahliges
Vielfaches der kurzen Blocklänge aufzunehmen vermag, so wird die
Datei um entsprechende "Character" ergänzt, bis auch der letzte
Block vollständig ist. Diese Ergänzung von Charactern ist
unkritisch, es sollte aber sichergestellt sein, daß alle
Character der Datei mit der Hashfunktion bearbeitet worden sind,
um auszuschließen, daß gerade in dem letzten Block, der nicht
vollständig ist und vielleicht unberücksichtigt sein könnte,
Änderungen erfolgen, die von dem Hashwert nicht erfaßt sind.
Derjenige, der die Hashfunktion erneut anwendet auf die
übertragene Datei würde ebenso vorgehen und am Ende eine
bekannte Ergänzung hinzunehmen, so zum Beispiel die Zahl "Null"
in entsprechender Länge bis zur Auffüllung des letzten Blocks.
Ist die erfindungsgemäß verwendete Hashfunktion öffentlich, so
wird sie zur Integritätsprüfung verwendet. Ist sie "privat",
also nur dem Sender und Empfänger bekannt, so kann eine
Authentizitäts-Kontrolle vorgenommen werden, der Empfänger kann
bei nur zweiseitig bekannter Hashfunktion sicher sein, daß die
ihm übermittelte Nachricht von demjenigen kommt, der sowohl die
Datei abgesendet hat, als auch mit der nur auf beiden Seiten
vorhandenen privaten Hashfunktion den Hashwert aus dieser Datei
gebildet und mit der Datei übertragen hat (Anspruch 9).
Bei sehr umfangreichen Dateien kann der Hashwert eine sehr große
Zahl erreichen, es wird zweckmäßig deshalb in einem höheren
Zahlensystem der Hashwert ausgegeben (Anspruch 5, 8).
Eine mehrfache Verwendung bei den Einzelstufen, also bei der
Bestimmung der Teil-Hashwerte von jeweils einem kurzen Block,
kann integriert werden (Anspruch 6). Jeder Teil-Hashwert setzt
sich dann aus zwei, drei oder vier (oder mehreren) anteiligen
Hashwerten zusammen, die gemeinsam zusammengefaßt, z. B. addiert,
den Teil-Hashwert bilden, der z. B. ein vierfach mit vier
verschiedenen Symbolverteilungen in der Matrix ermittelter aus
vier anteiligen Hashwerten bestehender Teil-Hashwerte ist. Die
Sicherheit dieses Teil-Hashwertes und damit die Sicherheit des
aus ihm zusammengesetzten abschließenden Hashwertes nimmt mit
zunehmender Zahl der Matrizen zu, wobei hier sowohl ein
paralleles Arbeiten von mehreren Matrizen gleichzeitig, die
jeweils eine unterschiedliche Symbolverteilung haben, möglich
ist, als auch ein sequentielles Arbeiten, bei dem dieselbe
Matrix nacheinander mit mehreren unterschiedlichen
Symbolverteilungen belegt wird und dann für jede
Symbolverteilung die Positionsgewichtung durchgeführt wird, um
den jeweiligen anteiligen Hashwert zu errechnen.
Beispiele erläutern und ergänzen die Erfindung.
Fig. 1 veranschaulicht die Ermittlung eines Hashwertes oder
einer Hashzahl (Kontrollwort) in der Ausgabeebene 130
unter Berücksichtigung von Klartext-Daten 110 und
vorgegebenen externen Schlüsseldaten 100, die von einem
Datenträger zugespeist werden.
Fig. 2 veranschaulicht ein einfaches Beispiel einer
Positionsgewichtung an einer Matrixbelegung mit einer
2 × 2 Matrix und vier Charactern. Der Teil-Hashwert
beträgt 42.
Fig. 3 ist eine detaillierte Darstellung der Fig. 1 mit zwei
parallelen Matrizen und einer gesteuerten
Symbolverteilung SV.
Fig. 4 veranschaulicht die Blöcke B1, B2, ..., einer Klartext-
Datei 110 und ihre Einspeisung in die
Symbolverteilung 101.
In der Fig. 1 wird global erläutert, wie der Ablauf der
Anwendung einer Hash-Funktion auf Klartext-Daten in einer
Datei 110 erfolgt. Ein mathematischer Reihengenerator MRG 101
wird gespeist von einer Karte 100 und den Klartext-Daten der
Datei 110. Ein Block von einer bestimmten Anzahl von Zeichen
- bevorzugt 40 Byte - aus der Datei 110 bildet den Eingabeblock
in Schritt 1. In Schritt 2 wird eine Kontrollzahl K aus der
Summe aller ASCII-Codes des Eingabeblocks gebildet. Es wird in
Schritt 3 eine Basisreihe B von mindestens 80 Ziffern aus den
ASCII-Codes des Eingabeblocks unter Modifizierung der Code-
Zahlen durch Subtraktion oder Addition mit einem als internem
Bestimmungsfaktor festgelegten konstanten Wert D und Weglassen
der ersten Ziffer im Falle von dreistelligen Ergebnissen im
Falle der Modifikation gebildet. Die internen
Bestimmungsfaktoren iB sind aus Fig. 3 ersichtlich, wo sie in
dem MRG als mathematischer Reihengenerator 101 vorgesehen sind,
der später erläutert wird.
In Schritt 4 und 5 werden - zuvor, danach oder gleichzeitig -
zumindest acht Argumente a mit bis zu 18 Stellen unter
Verwendung von Daten einer Stringvariablen S von der Karte 100
geladen. Es werden außerdem mindestens acht Funktionszahlen f
aus den Daten der Stringvariablen S von der Karte 100 in den
MRG 101 geladen. Dies sind die extenen Bestimmungsfaktoren eB,
ersichtlich aus Fig. 3.
In Schritt 6 erfolgt eine Berechnung von mindestens acht
Ergebnissen mit jeweils mindestens 10 Stellen nach dem Komma
unter Anwendung verschiedener mathematischer Funktionen, was die
Betriebsweise des MRG 101 beschreibt, der später gesondert
erläutert wird.
Der MRG bildet Reihen A, B, C, D von jeweils mindestens 160
Ziffern, wobei soviele Reihen generiert werden, wie Matrizen
vorhanden sind, in denen Symbole aus einem Symbolvorrat SM
(Symbolmenge) 104 verteilt werden müssen. Diese Verteilung
übernimmt die Steuerung SV.
Die Matrizen werden vor Belegung in ihren Dimensionen
festgelegt. Hier wird vorgeschlagen, ein internes Zahlensystem Z
zur Basis zwischen zwei und höchsten 128 als Maßstab für die
Elemente der jeweiligen Matrix zu verwenden. Die Matrizen sind
mit mindestens zwei und höchstens acht Dimensionen ausgestattet
und haben die Aufgabe die Symbole, die auf sie verteilt werden,
zu speichern.
Es werden in Schritt 10 Folgen der Ziffer Null bis zur höchsten
Ziffer nach der vorhergehenden Festlegung des internen
Zahlensystems Z gewählt, so daß jede Ziffer des Zahlensystems Z
nur einmal vorkommt, aber abhängig von dem MRG frei verteilt
sind; doppelt auftretende Ziffern werden ausgeblendet. Das sind
dann die Folgen A, B, C und D.
Der Symbolvorrat oder die Symbolmenge 104 gemäß Fig. 3 wird in
dem Umfang festgelegt, wie Speicherkapazität in den jeweiligen
Matrizen A, B, C und D, hier mit MAT-A und MAT-B repräsentiert
und ohne Darstellung von MAT-C, MAT-D, entsprechend den Matrizen
A, B, benötigt wird. Die entsprechende Menge ergibt sich aus den
Dimensionen, den Zeilen und Spalten, und zwar in der Form, daß
jedes Element in der Matrix mit einem Symbol zu belegen ist, so
daß die gesamte Matrix kein Symbol doppelt enthält.
Die Verteilung SV erfolgt gesteuert von dem MRG 101, der von den
Klartext-Zeichen, respektive dem aus der Datei 110 entnommenen
Block B1 (siehe dazu Fig. 4) gesteuert wird, so daß die
Klartextzeichen der der Hashfunktion unterworfenen Datei die
Verteilung des Symbolvorrates auf die Matrizen MAT-A und MAT-B
bestimmen, also steuern, und so steuern, daß jeweils eine Matrix
kein Symbol doppelt hat.
Nach dieser unregelmäßigen Verteilung (Permutation) werden
Positionsgewichtungen PG durchgeführt, von einem Gewichter 106,
der die verteilten Symbole entsprechend ihrem Wert und ihrer
Position gewichtet und einen Teil-Hashwert Hash 1 (#1) bildet.
Dies kann geschehen durch Multiplikation der ACSII-Codes eines
jeden Symbols aus dem vorhergehenden Schritt der Permutation für
jede der Matrizen MAT-A und MAT-B mit einer aufsteigenden,
numerischen Variablen. Es kann aber ebenso eine fortlaufende
Ziffer der zuvor erwähnten Reihen A, B, C und D sein.
Für einen weiteren Block B2 aus der Datei 110 wird eine andere
Symbolverteilung vorgenommen, wie sich ersichtlich aus der für
den geänderten Klartextblock geltenden Verteilungsvorschrift
über den MRG ergibt, der den Symbolvorrat SM auf dieselbe Matrix
MAT-A oder eine zweite Matrix MAT-B neu verteilt. Auch dabei
findet eine Positionsgewichtung PG statt, die zu einem zweiten
Hashwert Hash 2 (#2) führt, der zum ersten Hashwert #1
addiert 102 wird und eine Summe Hash S (#S) bildet. Dieser
Summenwert ist der Ausgangswert 130 und wenn alle Blöcke Bi
(i = 1...n) der Datei 110 über die Symbolverteilung SV in einen
jeweiligen Teil-Hashwert abgebildet worden sind, ergibt sich der
abschließende Hashwert 130, der der "Fingerabdruck" der
Datei 110 ist.
In Fig. 2 ist einfach erläutert, wie die Positionsgewichtung PG
arbeitet, ausgehend von der Symbolverteilung 102a in einer als
Beispiel herangezogenen Matrix mit vier Elementen. Vier
Symbole 8, 4, 2, 5 sind dort verteilt und gewichtet werden sie mit
den Zahlen 1, 2, 3 und 4 wie von dem Positionsgewichter 106
angedeutet. Als Hashwert ergibt sich für die erste Teil-Hashzahl
der Wert 42.
Die Fig. 4 veranschaulicht, wie eine gesamte Datei 110, die in
Blöcken B1, B2, B3 ...(Bi; i = 1 ...n) mit jeweils 40 byte dargestellt
ist, nacheinander eine Symbolverteilung über den MRG 101 und die
Symbolverteilung 102 vornimmt und zu weiteren Teil-Hashwerten
führt, die hier symbolisch mit Hash 3 (#3) bezeichnet sind.
Angedeutet ist ein Multiplexer, der die Leitung 110a jeweils um
einen Block Bi weiterschaltet, wenn der vorhergehende Block der
Datei 110 der Hashfunktion unterworfen wurde. Am Ende der Datei
kann es sein, daß ein Restblock Bn übrigbbleibt, der keine
40 byte mehr hat, so daß ein Ergänzungs-Block E angefügt wird, um
einen abschließenden Block von wieder 40 byte Länge zu erhalten.
Damit ist die gesamte Datei mit allen Klartextzeichen der
Hashfunktion unterworfen und jedwede Änderung nach der
Durchführung der Funktion ergibt einen anderen Hashwert als
Kontrollwort und die Datei ist mit dem berechneten Kontrollwort
eindeutig identifiziert, im Sinne eines Fingerabdrucks.
Eine Veränderung der Symbolverteilungssteuerung 102 führt dazu,
daß ein Block der Datei 110 mehrere Matrizen MAT-A, MAT-B
parallel mit unterschiedlichen Symbolverteilungen oder aber
dieselbe Matrix nacheinander mit unterschiedlichen
Symbolverteilungen belegt wird und daraus jeweils ein anteiliger
Teil-Hashwert gebildet wird, der zunächst in mehreren
Durchläufen, wie beispielsweise vier Durchfläufe zu einem Teil-
Hashwert #1 zusammengesetzt wird. Dadurch steigt zwar die
Rechenzeit an, kann aber durch parallele Verarbeitung und
mehrere parallele Matrizen, die gleichzeitig belegt werden, und
demgemäß auch mehrere parallele Symbolverteiler 102 wieder
beschleunigt werden. Die Sicherheit kann durch diese
Mehrfachdurchläufe erhöht werden.
Die Teil-Hashwerte werden entweder nach einer jeweiligen
Positionsgewichtung oder nach Durchführen aller
Positionsgewichtungen auf einmal in dem Addierer 103 addiert und
bilden das abschließende Kontrollwort Hash S (#S).
Der MRG 101 ergibt sich aus der folgenden Erläuterung. Ziel sind
n-dimensionale Matrizen in einem beliebigen Zahlensystem (Basis
2 bis Basis 128), in denen eine vom gewählten Zahlensystem Z
abhängige Menge von ASCII-Zeichen, die eine Teilmenge der ASCII-
Zeichen, alle ASCII-Zeichen oder Kombinationen aus zwei oder
mehr ASCII-Zeichen als Symbole umfassen, unregelmäßig verteilt
enthalten sind. Dabei ist jedes Symbol in jeder Matrix MAT-A,
MAT-B, MAT-C oder MAT-D nur einmal vorhanden. Die Verteilung der
Elemente in den Matrizen ist abhängig von dem Inhalt der Blöcke
der Textdatei 110. Als Kontrollzahl K ermittelt das Programm
zunächst die Summe aller ASCII-Werte der Zeichen eines Blocks
(hier als Beispiel 40 Zeichen) der Textdatei 110. Weiter wird
vom ASCII-Wert jedes einzelnen Zeichens die Konstante D = 20
abgezogen (Teil der iB) und bei verbleibenden dreistelligen
Zahlen wird die erste Ziffer weggelassen, so daß sich folgende
Basisreihe B als Beispiel ergibt:
Die aus den Textblöcken Bi gewonnene Basisreihe B ist Grundlage
für weitere Schritte der Symbolverteilung. Als nächster Schritt
werden von der externen Karte 100 eine vom Hersteller mit einem
Zufallsgenerator erzeugte und auf der Karte gespeicherte
Stringvariable S geladen, zum Beispiel:
Die geladene Stringvariable S enthält Faktoren zur Steuerung des
mathematischen Reihengenerators MRG. Die ersten 8 zweistelligen
Ziffern 14, 68, 24, 36, 12, 43, 52, 77 zuzüglich jeweils einer im MRG
festgelegten Konstanten (hier 1) bestimmen die Positionen, an
denen aus der Basisreihe B jeweils drei zusammenhängende Ziffern
zuzüglich der Kontrollsumme (hier: 89) als Argumente "a" für den
mathematischen Reihengenerator entnommen werden. Mit Hilfe
verschiedener mathematischer Funktionen, deren Ergebnisse
mindestens 10 Stellen nach dem Komma aufweisen (z. B. SIN, COS,
TAN, Log(n), LN, nˆ(1/m)) erzeugt der MRG unregelmäßige
Reihenfolgen der Ziffern 0 bis 9 mit einer Länge von z. B.
jeweils 160 Ziffern. Es werden so viele Reihenfolgen (Reihe A,
Reihe B, Reihe C, Reihe D ....) generiert, wie Matrizen
vorhanden sind. Zur Erzeugung der Reihenfolgen werden die
Ergebnisse der mathematischen Funktionen aus den Argumenten "a"
(Schritt 4) noch mit je einer Funktionszahl f (Schritt 5)
multipliziert (alternativ: dividiert, radiziert oder
potenziert). Diese Funktionszahlen f entnimmt der MRG z. B
beginnend an den letzten 24 Ziffern der von der Karte 100
geladenen Stringvariablen S vom Ende her gerechnet. Ein Beispiel
soll dargestellt werden:
Der MRG 101 errechnet in Schritt 6 die einzelnen Ziffernfolgen
mit Hilfe der mathematischen Funktionen unter Anwendung der
Argumente a und Funktionszahlen f wie folgt:
Die Ziffern vor dem Komma werden unterdrückt und alle 10 Ziffern
nach dem Komma zu einer Reihenfolge von 80 Ziffern
zusammengefaßt. Für eine vollständige Reihe von 160 Ziffern
durchläuft der MRG die mathematischen Funktionen ein zweites
Mal, jedoch mit anderen Werten. Es werden in mehreren
Durchläufen so viele Reihen erzeugt, wie Matrizen MAT-A, MAT-B,
MAT-C, MAT-D vorhanden sind. Bei jedem Durchlauf im MRG werden
die Argumente a und Funktions-Zahlen f variiert, so daß immer
verschiedene und voneinander unabhängige Reihen entstehen. Die
Variation wird durch interne Bestimmungsfaktoren iB gesteuert,
die vom Hersteller für jedes Programm unterschiedlich festgelegt
werden können. Aus den Nachkommastellen obiger Ziffern (1) bis
(8) entstehen folgende Reihen.
Die Verteilung der Symbole auf die Zeilen und Spalten einer der
Matrizen MAT-A, MAT-B schafft eine gründliche Durchmischung der
ursprünglich geordneten Menge aller ASCII-Zeichen (Permutation)
die von der Textdatei gesteuert ist. Um das zu erreichen, werden
aus den Reihen A, B (C, D) Folgen der Ziffern 0 bis zur
höchsten Ziffer im gewählten Zahlensystem (hier zur Basis 15 die
Ziffern 0 bis 14) abgeleitet, in welchen Folgen jede Ziffer nur
einmal vorkommt. Diese Folgengenerierung, deren Ergebnis unten
dargestellt ist, baut auf den vorherigen Reihen auf.
Es soll grob skizziert werden, daß interne Bestimmungsfaktoren iB
eine Steuergröße für die Auswahl bestimmter Bereiche darstellen,
aus denen zweistellige Wertepaare nacheinander entnommen werden
und so verarbeitet werden, daß keine Ziffer doppelt vorkommt.
Eine Möglichkeit liegt darin, die entnommene Wertepaare in einer
Modulo-Berechnung auf solche Wertepaare zu reduzieren, die sich
im gewählten Zahlensystemen halten, hier also Modulo 15 zur
Abbildung jedes Wertepaares in eine Ziffer 0 bis 14; entsteht
bei sukzessiver Auswertung des ausgewählten Bereiches eine Zahl
erneut, die zuvor bereits ermittelt war, so wird sie
übersprungen und zum nächsten Wertepaar übergegangen. Ist der
Bereich, der beispielsweise 20 Ziffern umfassen kann,
abgearbeitet, so bestimmt ein interner Bestimmungsfaktor einen
neuen Anfangspunkt in der Reihe, von dem ausgehend ein zweiter
Bereich von beispielsweise auch 20 Ziffern herausgenommen wird,
dessen Wertepaare sukzessive mit der Modulo-Berechnung und dem
Vergleich, ob die modulo-berechnete Zahl schon auftrat,
unterworfen wird. Ein Beispiel für vier ermittelte Folgen A
bis D aus den vier Reihen A bis D ist unten angegeben. In einer
jeweiligen Folge tritt kein Wert doppelt auf.
Da jede Folge die Durchmischung der Zeichen in der zugeordneten
Matrix steuert, werden mindestens so viele unterschiedliche
Folgen erzeugt, wie Matrizen vorhanden sind. Sowohl die Reihen
als auch die Folgen ändern sich, sobald auch nur ein Wert in dem
Textblock aus der Datei 110 geändert wird. Damit sind die
Verteilungen der Symbole in den Matrizen abhängig von dem Inhalt
der Blöcke der Textdatei. Der Hashwert ist über die PG
matrixgesteuert.
Claims (11)
1. Verfahren zum Berechnen eines Kontrollwortes (Hashwert)
einer Text- oder Informationsdatei, das mit der Datei
zusammen übertragen wird, um dem Empfänger die Integrität
der mitübertragenen Datei oder die richtige Herkunft
(Autentizität) der Datei zu signalisieren, oder ohne die
Datei als Kontrollwort alleine übertragen wird, um dem
Empfänger einen Vergleichswert zur Verfügung zu stellen,
so daß eine beim Empfänger vorhandene Datei mit einer
nicht mitübertragenen Datei über das Kontrollwort
verglichen werden kann,
bei welchem Verfahren
- a) mit einem ersten, in seiner Länge gegenüber der
Gesamtlänge der Datei (110) kurzen Block von
Zeichen (B1) der Datei eine erste Symbolverteilung
(SV, 102) in einer eine vorgegebene Dimension
aufweisenden Matrix (MAT-A, MAT-B) vorgenommen wird,
so daß jedes Element der Matrix ein anderes Symbol
aus einem Symbolvorrat (SM) enthält;
- 1. die erste Symbolverteilung in der Matrix positionsgewichtet (106, PG) zu einem ersten Teil- Hashwert (#1) zusammengefaßt wird;
- b) mit einem weiteren, der Länge des ersten Blocks
entsprechenden zweiten Block (B2) von Zeichen
derselben Datei (110) eine geänderte
Symbolverteilung (SV, 102) in derselben Matrix
(MAT-A) oder einer zweiten Matrix (MAT-B)
vorgenommen wird;
- 1. die geänderte Symbolverteilung erneut positionsgewichtet (106) wird, um einen weiteren Teil-Hashwert (#2) zu errechnen;
2. Verfahren nach Anspruch 1, bei dem die gesamte Datei (110)
nacheinander in Teil-Hashwerte umgerechnet wird, deren
Gesamtsumme als abschließender Hashwert (#S) mit der
Übertragung der nicht verschlüsselten Datei als
Integritätsnachweis an den Empfänger übertragbar ist, oder
alleine als Hashwert ohne Übertragung der Datei an einen
Empfänger zu Vergleichszwecken übermittelbar ist oder von
einem Empfänger als Vergleichswert von einer empfangenen
Datei errechnet wird, um mit dem mitübertragenen
abschließenden Hashwert (#S) derjenigen Datei (110) vor
der Übertragung am Empfängerort verglichen zu werden.
3. Verfahren nach einem der vorigen Ansprüche, bei dem die
Länge eines Blocks unter 100 byte und über 2 byte,
insbesondere etwa zwischen 30 und 50 byte liegt.
4. Verfahren nach einem der vorigen Ansprüche, bei dem die
Symbole der Symbolverteilung (SV) ASCII-Worte oder
-Character sind.
5. Verfahren nach einem der vorigen Ansprüche, bei dem die
Teil-Hashwerte im Zahlensystem zumindest zur Basis 8
definiert und ausgegeben werden.
6. Verfahren nach einem der vorigen Ansprüche, bei dem die
Bildung eines Teil-Hashwertes aus einem der kurzen Blöcke
mehrfach wiederholt wird, insbesondere zwei- bis viermal,
jedes Mal mit einer geänderten Symbolverteilung in der
Matrix oder gleichzeitig mit mehreren verschiedenen
Symbolverteilungen in mehreren parallelen Matrizen und
jede Symbolverteilung positionsgewichtet (106) wird, um
einen jeweils anteiligen Hashwert an dem Teil-Hashwert zu
ergeben, wobei eine Zusammenfassung der anteiligen
Hashwerte den Teil-Hashwert (#1, #2) ergibt.
7. Verfahren nach einem der vorigen Ansprüche, bei dem in die
Symbolverteilung (SV) ein Modulo-Verhalten mit langer
Periode integriert ist.
8. Verfahren nach einem der vorigen Ansprüche, bei dem der
endgültige Hashwert (#S) in einem höheren Zahlensystem
ausgegeben wird, als das Zahlensystem der Blöcke (Bi,
i = 1 ..n) der Datei (110)'.
9. Verfahren nach einem der vorigen Ansprüche, bei dem
- a) die Verteilungsvorschrift (101, 102) der Symbolverteilung (SV) öffentlich ist, um mehreren Empfängern die Möglichkeit zu geben, die Integritätskontrolle durchzuführen;
- b) die Verteilungsvorschrift (101, 102) für die Symbolverteilung (SV) der Symbole in der Matrix nur wenigen, insbesondere nur zwei Personen bekannt ist, um dem Empfänger eine Authentizitätskontrolle der übermittelten Datei oder anhand des übermittelten Hashwertes zu ermöglichen.
10. Verfahren - insbesondere nach Anspruch 1 -, bei dem der
Empfänger eines Kontrollwortes (Hashwert, #S) einer Text-
oder Informationsdatei, das mit der Datei zusammen
übertragen wird, oder ohne die Datei als Kontrollwort
alleine übertragen wird, eigenständig ein Kontrollwort
errechnet, bei welchem Verfahren
- a) mit einem ersten, in seiner Länge gegenüber der Gesamtlänge der übertragenen oder vorhandenen Datei kurzen Block von Zeichen der Datei eine erste Symbolverteilung (102, 101) in einer eine vorgegebene Dimension aufweisenden Matrix (MAT-A, MAT-B) vorgenommen wird, so daß jedes Element der Matrix ein anderes Symbol enthält;
- b) die erste Symbolverteilung in der Matrix positionsgewichtet (PG, 106) zu einem ersten Teil- Hashwert (#1) zusammengefaßt wird;
- c) mit einem weiteren, der Länge des ersten Blocks entsprechenden zweiten Block von Zeichen derselben Datei (110) eine geänderte Symbolverteilung (102, 101) in derselben Matrix oder einer zweiten Matrix vorgenommen wird;
- d) die geänderte Symbolverteilung erneut positionsgewichtet (PG) wird, um einen weiteren Teil- Hashwert (#2) zu errechnen;
11. Verfahren nach Anspruch 10, bei dem die gesamte Datei über
Teil-Hashwerte in einen abschließenden Hashwert am
Empfängerort abgebildet wird.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19811593A DE19811593C1 (de) | 1997-12-19 | 1998-03-17 | Matrixgesteuerte Hashfunktion |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19756792 | 1997-12-19 | ||
DE19811111 | 1998-03-13 | ||
DE19811593A DE19811593C1 (de) | 1997-12-19 | 1998-03-17 | Matrixgesteuerte Hashfunktion |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19811593C1 true DE19811593C1 (de) | 1999-05-06 |
Family
ID=26042667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19811593A Expired - Fee Related DE19811593C1 (de) | 1997-12-19 | 1998-03-17 | Matrixgesteuerte Hashfunktion |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE19811593C1 (de) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1119130A2 (de) * | 2000-01-21 | 2001-07-25 | Victor Company of Japan, Ltd. | Geheimübertragungsverfahren und -Vorrichtung |
WO2002037883A1 (de) * | 2000-10-30 | 2002-05-10 | Siemens Aktiengesellschaft | Übertragung von authentifizierungsdaten für den integritätsschutz in einem funk-kommunikationssystem (z. bsp.: geran) |
EP1326369A1 (de) * | 2000-10-26 | 2003-07-09 | Sangikyo Corporation | Methode zur digitalen Signierung, eine Hashfunktion zur Komprimierung der Daten verwendend und den berechnteten Hashwert signierend |
DE102004051771A1 (de) * | 2004-10-15 | 2006-04-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtungen und Verfahren zum Prüfen und Ermitteln von Prüfwerten |
DE102005027455A1 (de) * | 2005-06-14 | 2006-12-28 | Infineon Technologies Ag | Verfahren und Schaltungsanordnung zur Fehlererkennung in einem Datensatz |
-
1998
- 1998-03-17 DE DE19811593A patent/DE19811593C1/de not_active Expired - Fee Related
Non-Patent Citations (2)
Title |
---|
ZEMOR-G.: Hash functions and graphs with large girth, In: Advances in Cryptology-Eurocrypt`91, Berlin, Springer-Verlag 1991, S. 508-511 * |
ZHENG. Y. u.a.: HAVAL-a one-way hashing algorithm with variable length of output, In: Advances in Cryptology-AUSCRYPTC92, Berlin, Springer-Verlag 1993, S. 83-104 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1119130A2 (de) * | 2000-01-21 | 2001-07-25 | Victor Company of Japan, Ltd. | Geheimübertragungsverfahren und -Vorrichtung |
EP1119130A3 (de) * | 2000-01-21 | 2002-09-04 | Victor Company of Japan, Ltd. | Geheimübertragungsverfahren und -Vorrichtung |
EP1326366A1 (de) * | 2000-01-21 | 2003-07-09 | Victor Company Of Japan, Limited | Geheimübertragungsverfahren und -vorrichtung |
EP1326369A1 (de) * | 2000-10-26 | 2003-07-09 | Sangikyo Corporation | Methode zur digitalen Signierung, eine Hashfunktion zur Komprimierung der Daten verwendend und den berechnteten Hashwert signierend |
WO2002037883A1 (de) * | 2000-10-30 | 2002-05-10 | Siemens Aktiengesellschaft | Übertragung von authentifizierungsdaten für den integritätsschutz in einem funk-kommunikationssystem (z. bsp.: geran) |
DE102004051771A1 (de) * | 2004-10-15 | 2006-04-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtungen und Verfahren zum Prüfen und Ermitteln von Prüfwerten |
DE102005027455A1 (de) * | 2005-06-14 | 2006-12-28 | Infineon Technologies Ag | Verfahren und Schaltungsanordnung zur Fehlererkennung in einem Datensatz |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69634880T2 (de) | Verfahren und gerät zum kontrollierten zugriff zu verschlüsselten datenakten in einem computersystem | |
DE69222090T2 (de) | Einrichtung und Verfahren zum blockweisen Verschlüsseln von Daten | |
DE3689510T2 (de) | Einrichtung und Verfahren zur Datenverschleierung. | |
DE69626223T2 (de) | Vorrichtung und verfahren zur kryptographisch gesicherten kommunikation | |
EP3707854B1 (de) | Verfahren zum verknuepfen eines ersten datenblocks mit einem zweiten datenblock, verfahren zum ueberpruefen der integritaet einer blockchain-struktur, vorrichtung und computerprogrammprodukt | |
DE69932740T2 (de) | Verfahren und vorrichtung zur kryptographischen datenverarbeitung | |
DE2734456A1 (de) | Datenabtastsystem zum bestimmen der gueltigkeit eines aufzeichnungstraegers | |
DE2245360A1 (de) | Pseudo-zufallszahlengenerator fuer datenverarbeitung | |
DE1449544A1 (de) | Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk | |
DE19811593C1 (de) | Matrixgesteuerte Hashfunktion | |
DE60022840T2 (de) | Verfahren zum sichern einer oder mehrerer elektronischer baugruppen, unter zuhilfenahme eines privatschlüssel-krypto-algorithmus, sowie elektronische baugruppe | |
DE69811477T2 (de) | Verfahren und Vorrichtung zur Hashkodierung | |
EP3127272B1 (de) | Verschlüsselungsverfahren und pseudo-zufallszahlengenerator | |
DE60001585T2 (de) | Datenverarbeitungseinrichtung und -verfahren | |
DE69934707T2 (de) | Gegenmassnahmenvorrichtung in einem elektronischen bauteil um einen krypto-algorithmus mit geheimschlüssel durchzuführen | |
DE2360788A1 (de) | Elektronische datenverarbeitungsanlage | |
EP2835931B1 (de) | Verfahren zur Verschlüsselung von Zeichenketten | |
EP1573955B1 (de) | Verschl sselungsverfahren | |
EP1177536B1 (de) | Verfahren zur ableitung von identifikationsnummern | |
DE2639806C2 (de) | Verfahren und Einrichtung zum Verschlüsseln oder Entschlüsseln von Datenblöcken in binärer Darstellung | |
DE102018006313A1 (de) | Verfahren mit Safe-Error-Abwehrmaßnahme | |
EP3734486B1 (de) | Computerimplementiertes verfahren zum ersetzen eines datenstrings | |
EP1556754B1 (de) | Vorrichtung und verfahren zum erzeugen einer pseudozufälligen folge von zahlen | |
DE102019214379A1 (de) | Vorrichtung und Verfahren zur Verschlüsselung | |
DE19856793A1 (de) | Blockverschlüsselung zur Datenübertragung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8100 | Publication of patent without earlier publication of application | ||
D1 | Grant (no unexamined application published) patent law 81 | ||
8380 | Miscellaneous part iii |
Free format text: DIE NEBENKLASSE "G06K 5/00" IST EINMAL ZU STREICHEN |
|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: SCHNOOR, ERNST ERICH, 81545 MUENCHEN, DE |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20131001 |