heim - Smart-TV
Einen Hash verwenden. Hash-Funktionen: Konzept und Grundlagen

Hashing ist eine spezielle Methode zur Adressierung von Daten (ein bestimmter Anordnungsalgorithmus). durch ihre eindeutigen Schlüssel ( Schlüssel ) um schnell die benötigten Informationen zu finden.

Grundlegendes Konzept

Hash-tabelle

Eine Hash-Tabelle ist ein reguläres Array mit spezieller Adressierung, die durch eine Funktion (Hash-Funktion) angegeben wird.

Hash-Funktion

Eine Funktion, die den Schlüssel eines Datenelements einem Index in einer Tabelle zuordnet ( Hash-tabelle), angerufen Hashing-Funktion oder Hash-Funktion :

ich = H (Schlüssel );

Wo Schlüssel- Cabrio-Schlüssel, ich- der resultierende Tabellenindex, d.h. Der Schlüssel wird in einer Menge angezeigt, beispielsweise aus ganzen Zahlen ( Hash-Adressen ), die anschließend für den Zugriff auf die Daten verwendet werden.

Beim Hashing auf diese Weise handelt es sich um eine Technik, bei der der Wert eines Schlüssels verwendet wird, um seine Position in einer speziellen Tabelle zu bestimmen.

Die Anordnungsfunktion kann jedoch mehrere Eindeutige Schlüsselwerte ergeben denselben Positionswert ich in der Hash-Tabelle. Eine Situation, in der zwei oder mehr Schlüssel denselben Index (Hash-Adresse) teilen, wird aufgerufen Kollision (Konflikt) beim Hashing. Daher muss das Hashing-Schema enthalten Konfliktlösungsalgorithmus , das die Reihenfolge der Aktionen an der Position bestimmt ich=H(Schlüssel) ist bereits mit einem Datensatz mit einem anderen Schlüssel belegt.

Abhängig von der verwendeten Hash-Funktion gibt es viele Hash-Schemata. H(Schlüssel) und Konfliktlösungsalgorithmen.

Die gebräuchlichste Methode zur Angabe einer Hash-Funktion ist: Divisionsmethode.

Die Anfangsdaten sind: - ein ganzzahliger Schlüssel Schlüssel und Tischgröße M. Das Ergebnis dieser Funktion ist der Rest, wenn dieser Schlüssel durch die Größe der Tabelle dividiert wird. Die allgemeine Ansicht einer solchen Funktion in der Programmiersprache C/C++ ist:

int H (int Schlüssel , int M ) {

Für M= 10 Hash-Funktion gibt die niedrigstwertige Ziffer des Schlüssels zurück.

Für m= 100 gibt die Hash-Funktion die beiden niedrigstwertigen Ziffern des Schlüssels zurück.

In den betrachteten Beispielen die Hash-Funktion ich=H(Schlüssel) definiert nur die Position, ab der Sie einen Datensatz mit einem Schlüssel suchen (oder zunächst in der Tabelle platzieren) müssen Schlüssel. Als nächstes müssen Sie ein Hashing-Schema (Algorithmus) verwenden.

Hash-Schemata

Bei den meisten Problemen haben zwei oder mehr Schlüssel denselben Hash, können aber nicht dieselbe Zelle in der Hash-Tabelle belegen. Es gibt zwei mögliche Optionen: entweder eine andere Position für den neuen Schlüssel finden oder eine separate Liste für jeden Hash-Tabellenindex erstellen, die alle Schlüssel enthält, die diesem Index zugeordnet sind.

Diese Optionen stellen zwei klassische Hashing-Schemata dar:

    Hashing mit der offenen Adressierungsmethode mit linearer Abtastung - linear Sonde offen Adressierung.

    Hashing mit der Kettenmethode (mit Listen) oder sogenanntes mehrdimensionales Hashing - Verkettung mit separate Listen;

Offene Adressierungsmethode mit linearer Abtastung . Zunächst werden alle Zellen der Hash-Tabelle, bei der es sich um ein regelmäßiges eindimensionales Array handelt, als unbelegt markiert. Daher wird beim Hinzufügen eines neuen Schlüssels geprüft, ob die angegebene Zelle belegt ist. Ist die Zelle belegt, sucht der Algorithmus im Kreis, bis ein freier Platz gefunden wird („offene Adresse“).

Diese. Elemente mit homogenen Schlüsseln werden in der Nähe des resultierenden Index platziert.

Suchen Sie in Zukunft bei der Suche zunächst nach der Position anhand des Schlüssels ich in der Tabelle, und wenn der Schlüssel nicht übereinstimmt, erfolgt die anschließende Suche gemäß dem Konfliktlösungsalgorithmus, beginnend mit der Position ich. .

Kettenmethode ist die vorherrschende Strategie . In diesem Fall ich wird aus der ausgewählten Hash-Funktion ermittelt H(Schlüssel)=ich, wird als Index in einer Hash-Tabelle von Listen behandelt, d. h. Schlüssel zuerst Schlüssel Der nächste Eintrag wird der Position zugeordnet ich = H(Schlüssel) Tabellen. Ist die Position frei, wird dort ein Element mit Schlüssel platziert Schlüssel, wenn es beschäftigt ist, wird ein Konfliktlösungsalgorithmus ausgearbeitet, wodurch solche Schlüssel in einer Liste beginnend bei platziert werden ich-diese Zelle der Hash-Tabelle. Zum Beispiel

Als Ergebnis haben wir eine Tabelle mit einem Array verknüpfter Listen oder Bäume.

Das Füllen (Lesen) einer Hash-Tabelle ist einfach, der Zugriff auf die Elemente erfordert jedoch die folgenden Vorgänge:

Indexberechnung ich;

Suche im entsprechenden Thread.

Um die Suche beim Hinzufügen eines neuen Elements zu verbessern, können Sie den Einfügealgorithmus nicht am Ende der Liste, sondern mit Reihenfolge verwenden, d.h. Fügen Sie ein Element an der gewünschten Stelle hinzu.

Ein Beispiel für die Implementierung der Direktadressierungsmethode mit linearer Abtastung . Die Quelldaten bestehen aus 7 Datensätzen (der Einfachheit halber besteht der Informationsteil nur aus ganzzahligen Daten), deklarierter Strukturtyp:

int-Schlüssel; // Schlüssel

int info; // Information

(59,1), (70,3), (96,5), (81,7), (13,8), (41,2), (79,9); Hash-Tabellengröße m=10.

Hash-Funktion ich=H(Daten) =Daten.Schlüssel%10; diese. Rest der Division durch 10 - ich.

Basierend auf den Ausgangsdaten füllen wir nacheinander die Hash-Tabelle aus.

Das Hashing der ersten fünf Schlüssel ergibt verschiedene Indizes (Hash-Adressen):

Die erste Kollision findet zwischen den Tasten 81 und 41 statt – der Platz mit Index 1 ist belegt. Daher durchsuchen wir die Hash-Tabelle, um den nächstgelegenen freien Speicherplatz zu finden, in diesem Fall ist es dieser ich = 2.

Auch die nächste Taste 79 erzeugt eine Kollision: Position 9 ist bereits belegt. Die Effizienz des Algorithmus sinkt stark, weil Es waren 6 Stichproben (Vergleiche) nötig, um einen freien Platz zu finden, der Index erwies sich als frei ich= 4.

Die Gesamtzahl der Stichproben dieser Methode beträgt 1 bis n-1 Stichproben pro Element, wobei n die Größe der Hash-Tabelle ist.

Implementierung der Kettenmethode für das vorherige Beispiel. Wir deklarieren einen strukturierten Typ für ein Listenelement (unidirektional):

int-Schlüssel; // Schlüssel

int info; // Information

zap*Next; // Zeiger auf das nächste Element in der Liste

Basierend auf den Ausgangsdaten füllen wir nacheinander die Hash-Tabelle und fügen am Ende der Liste ein neues Element hinzu, wenn der Platz bereits belegt ist.

Das Hashing der ersten fünf Schlüssel, wie im vorherigen Fall, ergibt verschiedene Indizes (Hash-Adressen): 9, 0, 6, 1 und 3.

Bei einer Kollision wird am Ende der Liste ein neues Element hinzugefügt. Daher wird das Element mit Schlüssel 41 nach dem Element mit Schlüssel 81 und das Element mit Schlüssel 79 nach dem Element mit Schlüssel 59 platziert.

Individuelle Aufgaben

1. Binärbäume. Erhalten Sie mit dem Zufallszahlensensorprogramm 10 Werte von 1 bis 99 und erstellen Sie einen Binärbaum.

Machen Sie einen Umweg:

1.a Durchquerung von links nach rechts: Links-Wurzel-Rechts: Zuerst besuchen wir den linken Teilbaum, dann die Wurzel und schließlich den rechten Teilbaum.

(Oder umgekehrt, von rechts nach links: Right -Root- Left)

1.b Durchquerung von oben nach unten: Wurzel-Links-Rechts: Wir besuchen die Wurzel der Teilbäume.

1.c Durchquerung von unten nach oben: Links-Rechts-Wurzel: Besuchen Sie die Wurzel nach den Teilbäumen

Hashing(vom englischen Hashing) – Umwandlung von Eingabedaten beliebiger Länge in eine Ausgabebitfolge fester Länge, sodass eine Änderung der Eingabedaten zu einer unvorhersehbaren Änderung der Ausgabedaten führt. Solche Transformationen werden auch Hash-Funktionen oder Faltungsfunktionen genannt, und ihre Ergebnisse werden Hash oder Hash-Code genannt.

Hash-Probleme

Passphrasenprüfung

Heutzutage ist es gefährlich, Passwörter auf Zielobjekten zu speichern, da sie von dort aus von Angreifern gestohlen und für eigene Zwecke verwendet werden können. Daher werden dort nur Passwort-Hashes gespeichert, die nicht rückgängig gemacht werden können und das Passwort nicht herausgefunden werden kann. Bei der Passwortprüfung wird das eingegebene Passwort gehasht und die Hashwerte verglichen.

Die gängigsten Algorithmen: MD5 (MD4, MD2), SHA1.

Beschleunigen Sie den Datenabruf

Beispielsweise kann in einer Datenbank beim Schreiben von Textfeldern deren Hash-Code berechnet und in ein separates Feld geschrieben werden. Bei der Suche nach Daten müssen Sie dann den Hash-Code der Daten berechnen und nicht die gesamte Datenbank, sondern nur einen Abschnitt davon durchsuchen.

Prüfsummenberechnung.

Um ein Paket auf Fehler zu überprüfen, wird häufig eine Prüfsumme verwendet, die zusammen mit der Nachricht übertragen wird. Auf der Empfängerseite wird beim Empfang einer Nachricht die Prüfsumme erneut berechnet und wenn der Wert mit dem gesendeten Wert übereinstimmt, wurde die Nachricht fehlerfrei übertragen.

Berechnung der elektronischen digitalen Signatur.

Um ein elektronisches Dokument vor Fälschung zu schützen, wird eine elektronische digitale Signatur verwendet. Durch die Konvertierung von Informationen mithilfe eines privaten Schlüssels erhalten, können Sie den Besitzer des Signaturschlüssels identifizieren und feststellen, dass in einem elektronischen Dokument keine Informationsverfälschung vorliegt

Anforderungen an einen Hashing-Algorithmus

    Eine Hash-Funktion kann auf ein Argument beliebiger Größe angewendet werden.

    Der Ausgabewert hat eine feste Größe.

    Die Geschwindigkeit der Berechnung der Hash-Funktion muss so sein, dass die Geschwindigkeit der Generierung einer digitalen Signatur bei Verwendung der Hash-Funktion die Geschwindigkeit der Generierung einer digitalen Signatur bei Verwendung der Nachricht selbst deutlich übersteigt.

    Eine Hash-Funktion ist eine Einwegfunktion. Daher ist es für jedes m rechnerisch unmöglich, einen solchen Klartext X zu finden, h(X) = m

    Die Wahrscheinlichkeit, dass die Hashwerte zweier verschiedener Dokumente (unabhängig von ihrer Länge) übereinstimmen, sollte vernachlässigbar sein.

AlgorithmusM.D.5

MD5(Message Digest 5) ist ein Hashing-Algorithmus, der 1991 von R. Rivest vom Massachusetts Institute of Technology (MIT) entwickelt wurde

Eine detaillierte Beschreibung des Algorithmus finden Sie in RFC 1321.

Am Ausgang erzeugt der Algorithmus einen 128-Bit-Nachrichtenauszug (Fingerabdruck). Die Länge der Originalnachricht kann beliebig sein.

Der MD5-Algorithmus ist anfällig für einige Angriffe, beispielsweise die Möglichkeit, zwei Nachrichten mit derselben Hash-Summe zu erstellen. Daher wird seine Verwendung in neuen Projekten nicht empfohlen.

AlgorithmusSHA-1

Der Hashing-Algorithmus SHA (Secure Hash Algorithm) wurde 1992 als US-Standard übernommen.

Beschrieben in RFC 3174.

Entwickelt für die Verwendung in Verbindung mit einem digitalen Signaturalgorithmus. Bei der Eingabe von Klartext erzeugt der Algorithmus eine 160-Bit-Ausgabenachricht (Digest), die zur Generierung einer digitalen Signatur verwendet wird.

Der SHA-Hashing-Algorithmus wird als sicher bezeichnet, weil er so konzipiert ist, dass es rechnerisch unmöglich ist, eine Nachricht zu rekonstruieren, die einem bestimmten Digest entspricht, und auch zwei verschiedene Nachrichten zu finden, die denselben Digest ergeben.

Die Unterschiede zwischen den SHA- und MD5-Algorithmen sind wie folgt:

1. SHA erzeugt einen 160-Bit-Hashwert und ist resistenter gegen Brute-Force-Angriffe als MD5, das einen 128-Bit-Hashwert erzeugt.

2. Die SHA-Komprimierungsfunktion umfasst 80 Runden, nicht 64 wie in MD5.

3. Der Mischvorgang ist kompliziert.

Familie von AlgorithmenSHA-2

Unterfamilienalgorithmen SHA-2 , genau wie der Algorithmus SHA-1 wurden von der US-amerikanischen National Security Agency entwickelt und im August 2002 vom National Institute of Standards and Technology (NIST) im BundesiFIPS PUB 180–2 veröffentlicht.

Zum Einsatz kommen Algorithmen der SHA-2-Familie SSL, SSH, S/ MIME, DNSSEC, X.509 , PGP, IPSec, beim Übertragen von Dateien über das Netzwerk ( BitTorrent).

AlgorithmenHashing

MD5 md5 = new MD5CryptoServiceProvider();

string stringToHash = „Iss noch etwas von diesen weichen französischen Brötchen und trink etwas Tee“;

Byte-Hash = md5.ComputeHash(Encoding.Unicode.GetBytes(stringToHash));

Console.WriteLine(ByteHelper.ByteArrayToHexString(hash));

string anotherStringToHash = „Der schnelle Braunfuchs springt über den faulen Hund“;

HashAlgorithm sha512 = HashAlgorithm.Create("SHA512");

Console.WriteLine(

ByteHelper.ByteArrayToHexString(

sha512.ComputeHash(

Encoding.Unicode.GetBytes(

Hashing oder Hashing(englisches Hashing) – Umwandlung eines Arrays von Eingabedaten beliebiger Länge in eine (Ausgabe-)Bitfolge fester Länge, durchgeführt durch einen bestimmten Algorithmus. Die Funktion, die den Algorithmus implementiert und die Transformation durchführt, heißt „ Hash-Funktion " oder " Faltungsfunktion " Die Originaldaten werden als Eingabearray bezeichnet, „ Schlüssel" oder " Nachricht " Das Ergebnis der Transformation (Ausgabe) heißt „ Hash », « Hash-Code », « Hash-Summe ", "Nachrichtenzusammenfassung".

Hashing wird in folgenden Fällen verwendet:

  • beim Aufbau assoziativer Arrays;
  • bei der Suche nach Duplikaten in einer Reihe von Datensätzen;
  • beim Erstellen eindeutiger Identifikatoren für Datensätze;
  • bei der Berechnung von Prüfsummen aus Daten (Signalen) zur späteren Erkennung von darin enthaltenen (versehentlich oder absichtlich verursachten) Fehlern, die bei der Speicherung und/oder Übertragung von Daten auftreten;
  • beim Speichern von Passwörtern in Schutzsystemen in Form eines Hash-Codes (um ein Passwort mithilfe eines Hash-Codes wiederherzustellen, ist eine Funktion erforderlich, die zur verwendeten Hash-Funktion invers ist);
  • bei der Entwicklung einer elektronischen Signatur (in der Praxis wird oft nicht die Nachricht selbst signiert, sondern ihr „Hash-Bild“);
  • usw.

Arten von Hash-Funktionen

Eine „gute“ Hash-Funktion muss zwei erfüllen Eigenschaften:

  • schnelle Berechnung;
  • minimale Anzahl von „Kollisionen“.

Führen wir die folgende Notation ein:

∀ k ∈ (0 ; K) : h (k)< M {\displaystyle \forall k\in (0;\,K):h(k).

Ein Beispiel für eine „schlechte“ Hash-Funktion ist eine Funktion mit M = 1000 (\displaystyle M=1000), eine zehnstellige natürliche Zahl K (\displaystyle K) vergleicht drei Ziffern, die aus der Mitte eines zwanzigstelligen Quadrats einer Zahl ausgewählt werden K (\displaystyle K). Es scheint, dass die „Hash-Code“-Werte dies tun sollten gleichmäßig verteilt zwischen „ 000 " Und " 999 ", aber für " real„Daten Dies ist nur wahr, wenn“ Schlüssel„haben weder links noch rechts eine „große“ Anzahl an Nullen.

Schauen wir uns einige einfache und zuverlässige Implementierungen von Hash-Funktionen an.

„Hash-Funktionen“ basierend auf Division

1. „Hash-Code“ als Rest der Division durch die Anzahl aller möglichen „Hashes“

Eine Hash-Funktion kann den „Hash“ als Rest der Division der Eingabedaten durch berechnen M (\displaystyle M):

h (k) = k mod M (\displaystyle h(k)=k\mod M)

Wo M (\displaystyle M)- die Anzahl aller möglichen „Hashes“ (Ausgabedaten).

Darüber hinaus ist es offensichtlich, dass sogar M (\displaystyle M) Der Wert der Funktion ist gerade, wenn er gerade ist k (\displaystyle k) und seltsam – wenn seltsam k (\displaystyle k). Sollte auch nicht als verwendet werden M (\displaystyle M) die Basis des Zahlensystems des Computers, da der „Hash-Code“ nur davon abhängt mehrere Ziffern Zahlen k (\displaystyle k), befindet sich auf der rechten Seite, was zu einer großen Anzahl von Kollisionen führen wird. In der Praxis wählen sie meist ein einfaches M (\displaystyle M); In den meisten Fällen ist diese Wahl durchaus zufriedenstellend.

2. „Hash-Code“ als Satz von Koeffizienten des resultierenden Polynoms

Eine Hash-Funktion kann eine Modulo-Zwei-Division der Eingabedaten durch ein Polynom durchführen. Bei dieser Methode M (\displaystyle M) muss eine Zweierpotenz sein und Binärschlüssel ( K = k n − 1 k n − 2 . . . k 0 (\displaystyle K=k_(n-1)k_(n-2)...k_(0))) werden im Formular dargestellt Polynome, die Werte der Koeffizienten werden als „Hash-Code“ verwendet Polynom, erhalten als Rest der Division der Eingabedaten K (\displaystyle K) zu einem vorgewählten Polynom P (\displaystyle P) Grad m (\displaystyle m):

K (x) mod P (x) = h m − 1 x m − 1 + ⋯ + h 1 x + h 0 (\displaystyle K(x)\mod P(x)=h_(m-1)x^(m- 1)+\dots +h_(1)x+h_(0)) h (x) = h m − 1 . . . h 1 h 0 (\displaystyle h(x)=h_(m-1)...h_(1)h_(0))

Mit der richtigen Wahl P(x) (\displaystyle P(x)) die Vermeidung von Kollisionen zwischen nahezu identischen Schlüsseln ist gewährleistet.

„Hash-Funktionen“ basierend auf Multiplikation

Bezeichnen wir mit dem Symbol w (\displaystyle w) die Anzahl der Zahlen, die durch ein Maschinenwort dargestellt werden. Beispielsweise für 32-Bit-Computer, die mit IBM PC kompatibel sind, w = 2 32 (\displaystyle w=2^(32)).

Wählen wir eine Konstante A (\displaystyle A) so dass A (\displaystyle A) war Koprime mit w (\displaystyle w). Dann könnte eine Hash-Funktion mit Multiplikation so aussehen:

h (K) = [ M ⌊ A w ∗ K ⌋ ] (\displaystyle h(K)=\left)

In diesem Fall auf einem Computer mit binärem Zahlensystem M (\displaystyle M) ist eine Zweierpotenz und h (K) (\displaystyle h(K)) besteht aus den höchstwertigen Teilen der rechten Hälfte des Produkts A ∗ K (\displaystyle A*K).

Unter den Vorteilen von Hash-Funktionen, die auf Division und Multiplikation basieren, ist die vorteilhafte Nutzung der Nichtzufälligkeit realer Schlüssel hervorzuheben. Wenn es sich bei den Schlüsseln beispielsweise um eine arithmetische Folge handelt (z. B. die Namensfolge „Name 1“, „Name 2“, „Name 3“), ordnet eine Hash-Funktion mithilfe von Multiplikation die arithmetische Folge einer annähernd arithmetischen Folge von zu die unterschiedlichen Hash-Werte, wodurch die Anzahl der Kollisionen im Vergleich zu einer zufälligen Situation verringert wird.

Eine Hash-Funktion, die Multiplikation verwendet, ist die Hash-Funktion, die Fibonacci-Hashing verwendet. Das Fibonacci-Hashing basiert auf den Eigenschaften des Goldenen Schnitts. Als Konstante A (\displaystyle A) hier die ganze Zahl, die am nächsten kommt φ − 1 ∗ w (\displaystyle \varphi ^(-1)*w) und koprimieren mit w (\displaystyle w), Wo φ (\displaystyle \varphi )- Das ist der Goldene Schnitt.

Hashing von Zeichenfolgen variabler Länge

Die oben genannten Methoden sind auch anwendbar, wenn Schlüssel berücksichtigt werden müssen, die aus mehreren Wörtern bestehen oder Schlüssel variabler Länge sind. Sie können beispielsweise Wörter mithilfe der Modulo-Addition zu einem kombinieren w (\displaystyle w) oder „exklusive“ ODER-Operationen. Einer der Algorithmen, der nach diesem Prinzip arbeitet, ist die Pearson-Hash-Funktion.

Universelles Hashing

Methoden zum Umgang mit Kollisionen

Eine Kollision (manchmal auch ein Konflikt oder eine Kollision) ist der Fall, in dem eine Hash-Funktion für verschiedene Eingabeblöcke dieselben Hash-Codes zurückgibt.

Methoden zum Umgang mit Kollisionen in Hash-Tabellen

Die meisten frühen Arbeiten, die Hashing beschreiben, befassten sich mit Methoden zum Umgang mit Kollisionen in Hash-Tabellen. Damals wurden Hash-Funktionen verwendet, um in großen Dateien nach Text zu suchen. Es gibt zwei Hauptmethoden zum Umgang mit Kollisionen in Hash-Tabellen:

  1. Kettenmethode (direkte Verknüpfungsmethode);
  2. offene Adressierungsmethode.

Bei Verwendung der Verkettungsmethode speichert die Hash-Tabelle Paare aus „verknüpfter Schlüsselliste“ und „Hash-Code“. Für jeden Schlüssel berechnet die Hash-Funktion einen Hash-Code; Wenn der Hash-Code zuvor erhalten wurde (für einen anderen Schlüssel), wird der Schlüssel zur vorhandenen Liste der mit dem Hash-Code gepaarten Schlüssel hinzugefügt. Andernfalls wird ein neues Paar aus „Schlüsselliste“ und „Hashcode“ erstellt und der Schlüssel zur erstellten Liste hinzugefügt. Im Allgemeinen, wenn ja N (\displaystyle N) Schlüssel und M (\displaystyle M) Listen wird die durchschnittliche Größe der Hash-Tabelle sein N M (\displaystyle (\frac (N)(M))). In diesem Fall verringert sich der durchschnittliche Arbeitsaufwand beim Durchsuchen einer Tabelle im Vergleich zu einer sequentiellen Suche um ungefähr M (\displaystyle M) einmal.

Bei Verwendung der offenen Adressierungsmethode speichert die Hash-Tabelle Schlüssel-Hash-Code-Paare. Für jeden Schlüssel berechnet die Hash-Funktion einen Hash-Code; Das Paar „Schlüssel“ – „Hashcode“ wird in der Tabelle gespeichert. In diesem Fall werden beim Durchsuchen der Tabelle im Vergleich zu dem Fall, in dem verknüpfte Listen verwendet werden, keine Links verwendet, eine sequentielle Suche nach „Schlüssel“-“Hashcode“-Paaren durchgeführt und die Suche stoppt, nachdem der erforderliche Schlüssel gefunden wurde . Die Reihenfolge, in der Tabellenzellen gescannt werden, wird als Sondensequenz bezeichnet.

Kryptografisches Salz

Verwendung von Hash-Funktionen

Hash-Funktionen werden häufig in der Kryptographie sowie in vielen Datenstrukturen verwendet – Hash-Tabellen, Bloom-Filter und kartesische Bäume.

Kryptografische Hash-Funktionen

Es ist üblich, zwischen den vielen existierenden Hash-Funktionen zu unterscheiden

Hash-Funktionen finden ihre Anwendung in den unterschiedlichsten Branchen der Informationstechnologie. Sie sollen einerseits den Datenaustausch zwischen Benutzern und die Verarbeitung von Dateien für verschiedene Zwecke erheblich vereinfachen und andererseits Algorithmen zur Gewährleistung der Zugriffskontrolle auf relevante Ressourcen optimieren. Die Hash-Funktion ist eines der wichtigsten Werkzeuge zur Gewährleistung des Passwortschutzes von Daten sowie zur Organisation des Austauschs von mit einer elektronischen digitalen Signatur signierten Dokumenten. Es gibt eine Vielzahl von Standards, über die Datei-Caching durchgeführt werden kann. Viele davon wurden von russischen Spezialisten entwickelt. In welchen Arten von Hash-Funktionen können dargestellt werden? Was sind die Hauptmechanismen für ihre praktische Anwendung?

Was ist das?

Lassen Sie uns zunächst das Konzept einer Hash-Funktion untersuchen. Unter diesem Begriff versteht man üblicherweise einen Algorithmus, der mithilfe mathematischer Methoden eine bestimmte Informationsmenge in eine kürzere Zeichenfolge umwandelt. Die praktische Bedeutung der Hash-Funktion zeigt sich in verschiedenen Bereichen. Somit können sie bei der Überprüfung von Dateien und Programmen auf Integrität verwendet werden. Kryptografische Hash-Funktionen werden auch in Verschlüsselungsalgorithmen verwendet.

Eigenschaften

Betrachten wir die Hauptmerkmale der untersuchten Algorithmen. Darunter:

  • das Vorhandensein interner Algorithmen zum Konvertieren von Daten der ursprünglichen Länge in eine kürzere Zeichenfolge;
  • offen für kryptografische Verifizierung;
  • das Vorhandensein von Algorithmen, die eine zuverlässige Verschlüsselung der Originaldaten ermöglichen;
  • Anpassungsfähigkeit an die Entschlüsselung bei Verwendung geringer Rechenleistung.

Weitere wichtige Eigenschaften der Hash-Funktion sind:

  • Fähigkeit, anfängliche Datenarrays beliebiger Länge zu verarbeiten;
  • Hash-Blöcke mit fester Länge generieren;
  • Verteilen Sie die Funktionswerte am Ausgang gleichmäßig.

Die betrachteten Algorithmen gehen auch von einer Empfindlichkeit gegenüber Eingabedaten auf der 1-Bit-Ebene aus. Das heißt, selbst wenn sich relativ gesehen mindestens ein Buchstabe im Quelldokument ändert, sieht die Hash-Funktion anders aus.

Anforderungen an Hash-Funktionen

Es gibt eine Reihe von Anforderungen an Hash-Funktionen, die für den praktischen Einsatz in einem bestimmten Bereich vorgesehen sind. Erstens muss der entsprechende Algorithmus empfindlich auf Änderungen in der internen Struktur der gehashten Dokumente reagieren. Das heißt, wenn es sich bei der Hash-Funktion um eine Textdatei handelt, sollten Absatzneuanordnungen und Bindestriche erkannt werden. Einerseits ändert sich der Inhalt des Dokuments nicht, andererseits wird seine Struktur angepasst, und dieser Vorgang muss beim Hashing erkannt werden. Zweitens muss der jeweilige Algorithmus die Daten so transformieren, dass die umgekehrte Operation (Konvertierung des Hashs in das Originaldokument) in der Praxis unmöglich ist. Drittens muss die Hash-Funktion den Einsatz von Algorithmen beinhalten, die die Bildung derselben Zeichenfolge in Form eines Hashs, also das Auftreten sogenannter Kollisionen, nahezu ausschließen. Wir werden uns etwas später mit ihrem Wesen befassen.

Die genannten Anforderungen, die ein Hash-Funktionsalgorithmus erfüllen muss, können hauptsächlich durch den Einsatz komplexer mathematischer Ansätze erreicht werden.

Struktur

Lassen Sie uns untersuchen, wie die Struktur der betrachteten Funktionen aussehen könnte. Wie oben erwähnt, besteht eine der Hauptanforderungen an die betrachteten Algorithmen darin, eine unidirektionale Verschlüsselung sicherzustellen. Eine Person, die nur über einen Hash verfügt, sollte praktisch nicht in der Lage sein, daraus das Originaldokument zu erhalten.

In welcher Struktur kann eine für solche Zwecke verwendete Hash-Funktion dargestellt werden? Ein Beispiel für seine Zusammensetzung könnte wie folgt sein: H (Hash, also Hash) = f (T (Text), H1), wobei H1 der Textverarbeitungsalgorithmus T ist. Diese Funktion hasht T auf eine Weise, die ohne Wissen erfolgt Von H1 kann es fast unmöglich sein, eine vollwertige Datei zu öffnen.

Verwendung von Hash-Funktionen in der Praxis: Herunterladen von Dateien

Lassen Sie uns nun die Möglichkeiten der Verwendung von Hash-Funktionen in der Praxis genauer untersuchen. Beim Schreiben von Skripten zum Herunterladen von Dateien von Internetservern kann die Verwendung geeigneter Algorithmen verwendet werden.

In den meisten Fällen wird für jede Datei eine bestimmte Prüfsumme ermittelt – das ist der Hash. Es muss dasselbe für das Objekt sein, das sich auf dem Server befindet und auf den Computer des Benutzers heruntergeladen wird. Ist dies nicht der Fall, wird die Datei möglicherweise nicht geöffnet oder nicht ordnungsgemäß gestartet.

Hash-Funktion und digitale Signatur

Der Einsatz von Hash-Funktionen ist bei der Organisation des Austauschs von Dokumenten mit digitaler Signatur üblich. In diesem Fall wird die zu signierende Datei gehasht, sodass der Empfänger überprüfen kann, ob sie echt ist. Obwohl die Hash-Funktion formal nicht in der Struktur des elektronischen Schlüssels enthalten ist, kann sie im Flash-Speicher der Hardware aufgezeichnet werden, die zum Signieren von Dokumenten wie eToken verwendet wird.

Eine elektronische Signatur ist die Verschlüsselung einer Datei mit öffentlichen und privaten Schlüsseln. Das heißt, eine mit einem privaten Schlüssel verschlüsselte Nachricht wird an die Quelldatei angehängt und die digitale Signatur wird mit einem öffentlichen Schlüssel überprüft. Stimmt die Hash-Funktion beider Dokumente überein, wird die Datei des Empfängers als echt und die Signatur des Absenders als korrekt erkannt.

Hashing ist, wie oben erwähnt, kein direkter Bestandteil der digitalen Signatur, ermöglicht aber eine sehr effektive Optimierung der Algorithmen für die Verwendung einer elektronischen Signatur. Tatsächlich kann also nur der Hash verschlüsselt werden, nicht aber das Dokument selbst. Dadurch erhöht sich die Geschwindigkeit der Dateiverarbeitung deutlich und gleichzeitig wird es möglich, wirksamere Mechanismen zum Schutz digitaler Signaturen bereitzustellen, da der Schwerpunkt bei Rechenvorgängen in diesem Fall nicht auf der Verarbeitung der Originaldaten, sondern auf der Verarbeitung liegt Sicherstellung der kryptografischen Stärke der Signatur. Die Hash-Funktion ermöglicht auch das Signieren verschiedener Datentypen, nicht nur von Text.

Passwörter prüfen

Ein weiterer möglicher Anwendungsbereich von Hashing ist die Organisation von Passwort-Verifizierungsalgorithmen, die den Zugriff auf bestimmte Dateiressourcen einschränken sollen. Wie können bestimmte Arten von Hash-Funktionen zur Lösung solcher Probleme eingesetzt werden? Sehr einfach.

Tatsache ist, dass auf den meisten Servern, deren Zugriff eingeschränkt ist, Passwörter in Form von Hash-Werten gespeichert werden. Das ist ziemlich logisch – wenn Passwörter im Klartext dargestellt würden, könnten Hacker, die sich Zugriff darauf verschafften, geheime Daten leicht lesen. Es ist wiederum nicht einfach, ein Passwort anhand eines Hashs zu berechnen.

Wie wird der Benutzerzugriff bei Verwendung der betreffenden Algorithmen überprüft? Das vom Benutzer eingegebene Passwort wird mit den Aufzeichnungen in der Hash-Funktion verglichen, die auf dem Server gespeichert ist. Stimmen die Werte der Textblöcke überein, erhält der Nutzer den nötigen Zugriff auf Ressourcen.

Die einfachste Hash-Funktion kann als Tool zur Passwortprüfung verwendet werden. In der Praxis verwenden IT-Spezialisten jedoch am häufigsten komplexe mehrstufige kryptografische Algorithmen. Sie werden in der Regel durch die Verwendung von Standards für die Datenübertragung über einen sicheren Kanal ergänzt, damit Hacker das vom Computer des Benutzers an die Server übertragene Passwort nicht erkennen oder berechnen können, bevor es mit gehashten Textblöcken überprüft wird.

Kollisionen von Hash-Funktionen

Die Theorie der Hash-Funktionen sieht ein Phänomen wie Kollision vor. Was ist sein Wesen? Eine Hash-Kollision ist eine Situation, in der zwei verschiedene Dateien denselben Hash-Code haben. Dies ist möglich, wenn die Länge der Zielzeichenfolge klein ist. In diesem Fall ist die Wahrscheinlichkeit einer Hash-Übereinstimmung höher.

Um Kollisionen zu vermeiden, empfiehlt sich insbesondere die Verwendung eines dualen Algorithmus namens Hash-Funktions-Hashing. Dabei handelt es sich um die Bildung von offenem und geschlossenem Code. Viele Programmierer empfehlen bei der Lösung wichtiger Probleme, in Fällen, in denen dies nicht erforderlich ist, keine Hash-Funktionen zu verwenden und die entsprechenden Algorithmen stets auf die beste Kompatibilität mit bestimmten Schlüsseln zu testen.

Geschichte des Aussehens

Als Begründer der Theorie der Hash-Funktionen gelten die Forscher Carter, Wegman, Simonson und Bierbrauer. In den ersten Versionen wurden die entsprechenden Algorithmen als Werkzeuge verwendet, um eindeutige Bilder von Zeichenfolgen beliebiger Länge zu erzeugen und diese anschließend zu identifizieren und auf Authentizität zu prüfen. Der Hash wiederum musste gemäß den vorgegebenen Kriterien eine Länge von 30-512 Bit haben. Als besonders nützliche Eigenschaft der entsprechenden Funktionen wurde die Eignung als Ressource zum schnellen Suchen oder Sortieren von Dateien angesehen.

Beliebte Hashing-Standards

Betrachten wir nun, in welchen gängigen Standards Hash-Funktionen dargestellt werden können. Dazu gehört CRC. Dieser Algorithmus ist ein zyklischer Code, auch Prüfsumme genannt. Dieser Standard zeichnet sich durch Einfachheit und gleichzeitig Universalität aus – mit ihm lassen sich unterschiedlichste Daten hashen. CRC ist einer der gebräuchlichsten nicht-kryptografischen Algorithmen.

Die Standards MD4 und MD5 wiederum werden häufig in der Verschlüsselung verwendet. Ein weiterer beliebter kryptografischer Algorithmus ist SHA-1. Es zeichnet sich insbesondere durch eine Hash-Größe von 160 Bit aus, die größer als MD5 ist – dieser Standard unterstützt 128 Bit. Es gibt russische Standards, die die Verwendung von Hash-Funktionen regeln – GOST R 34.11-94 sowie GOST R 34.11-2012, die diese ersetzt haben. Es ist zu beachten, dass der von den in der Russischen Föderation übernommenen Algorithmen bereitgestellte Hash-Wert 256 Bit beträgt.

Die betreffenden Standards können aus verschiedenen Gründen klassifiziert werden. Es gibt beispielsweise solche, die Block- und Spezialalgorithmen verwenden. Die Einfachheit von Berechnungen, die auf Standards des ersten Typs basieren, geht oft mit ihrer geringen Geschwindigkeit einher. Daher können als Alternative zu Blockalgorithmen solche verwendet werden, die eine geringere Anzahl notwendiger Rechenoperationen erfordern. Zu den Hochgeschwindigkeitsstandards zählen in der Regel insbesondere die oben genannten Standards MD4, MD5 sowie SHA. Schauen wir uns die Besonderheiten spezieller Hashing-Algorithmen am Beispiel von SHA genauer an.

Merkmale des SHA-Algorithmus

Der Einsatz von Hash-Funktionen auf Basis des SHA-Standards erfolgt am häufigsten bei der Entwicklung digitaler Signaturtools für DSA-Dokumente. Wie oben erwähnt, unterstützt der SHA-Algorithmus einen Hash von 160 Bit (der einen sogenannten „Digest“ der Zeichenfolge bereitstellt). Der betrachtete Standard unterteilt das Datenarray zunächst in Blöcke zu 512 Bit. Falls die Länge des letzten Blocks die angegebene Ziffer nicht erreicht, wird die Dateistruktur bei Bedarf um 1 und die erforderliche Anzahl von Nullen ergänzt. Außerdem wird am Ende des entsprechenden Blocks ein Code geschrieben, der die Länge der Nachricht festlegt. Der betrachtete Algorithmus verwendet 80 logische Funktionen, durch die 3 in 32 Bit dargestellte Wörter verarbeitet werden. Der SHA-Standard sieht außerdem die Verwendung von 4 Konstanten vor.

Vergleich von Hashing-Algorithmen

Lassen Sie uns am Beispiel des Vergleichs der Eigenschaften des russischen Standards GOST R 34.11-94 und des amerikanischen SHA, den wir oben untersucht haben, untersuchen, wie die Eigenschaften von Hash-Funktionen in Bezug auf verschiedene Standards korrelieren. Zunächst ist anzumerken, dass der in der Russischen Föderation entwickelte Algorithmus die Implementierung von 4 Verschlüsselungsvorgängen pro Zyklus voraussetzt. Dies entspricht 128 Schuss. Wenn wiederum SHA verwendet wird, werden in einer Runde etwa 20 Befehle berechnet, während es insgesamt 80 Runden gibt. Somit können bei Verwendung von SHA 512 Bits an Quelldaten innerhalb eines Zyklus verarbeitet werden. Während der russische Standard in der Lage ist, Operationen in einem Zyklus von 256 Datenbits durchzuführen.

Besonderheiten des neuesten russischen Algorithmus

Wir haben oben festgestellt, dass der Standard GOST R 34.11-94 durch einen neueren ersetzt wurde – GOST R 34.11-2012 „Stribog“. Lassen Sie uns seine Besonderheiten genauer untersuchen.

Mit diesem Standard können kryptografische Hash-Funktionen implementiert werden, wie im Fall der oben diskutierten Algorithmen. Es sei darauf hingewiesen, dass der neueste russische Standard einen 512-Bit-Eingabedatenblock unterstützt. Hauptvorteile von GOST R 34.11-2012:

  • hohes Maß an Sicherheit gegen das Brechen von Codes;
  • Zuverlässigkeit, unterstützt durch die Verwendung bewährter Designs;
  • schnelle Berechnung der Hash-Funktion, Fehlen von Transformationen im Algorithmus, die den Entwurf der Funktion erschweren und die Berechnung verlangsamen.

Die genannten Vorteile des neuen russischen kryptografischen Verschlüsselungsstandards ermöglichen dessen Verwendung bei der Organisation des Dokumentenflusses, der die strengsten Kriterien erfüllt, die in den Bestimmungen der Regulierungsgesetzgebung vorgeschrieben sind.

Besonderheiten kryptografischer Hash-Funktionen

Schauen wir uns genauer an, wie die von uns untersuchten Algorithmentypen im Bereich der Kryptographie eingesetzt werden können. Die zentrale Voraussetzung für die entsprechenden Funktionen ist die oben erwähnte Kollisionsfestigkeit. Das heißt, es sollten keine doppelten Hash-Funktionswerte generiert werden, wenn diese Werte bereits in der Struktur des Nachbaralgorithmus vorhanden sind. Kryptografische Funktionen müssen auch die anderen oben genannten Kriterien erfüllen. Es ist klar, dass es theoretisch immer eine Möglichkeit gibt, die Originaldatei basierend auf dem Hash wiederherzustellen, insbesondere wenn ein leistungsstarkes Computertool verfügbar ist. Es wird jedoch erwartet, dass ein solches Szenario dank zuverlässiger Verschlüsselungsalgorithmen minimiert wird. Daher wird es sehr schwierig sein, eine Hash-Funktion zu berechnen, wenn ihre Rechenstärke der Formel 2^(n/2) entspricht.

Ein weiteres wichtiges Kriterium eines kryptografischen Algorithmus ist die Änderung des Hashes bei Korrektur des ursprünglichen Datenfeldes. Wir haben oben darauf hingewiesen, dass Verschlüsselungsstandards 1-Bit-sensitiv sein müssen. Somit ist diese Eigenschaft ein Schlüsselfaktor für einen zuverlässigen Passwortschutz des Zugriffs auf Dateien.

Iterative Schemata

Lassen Sie uns nun untersuchen, wie kryptografische Hashing-Algorithmen konstruiert werden können. Zu den gebräuchlichsten Lösungsansätzen für dieses Problem gehört die Verwendung eines iterativen sequentiellen Modells. Es basiert auf der Verwendung der sogenannten Kompressionsfunktion, bei der die Anzahl der Eingangsbits deutlich größer ist als die am Ausgang erfassten.

Natürlich muss die Komprimierungsfunktion die erforderlichen kryptografischen Stärkekriterien erfüllen. In einem interaktiven Schema wird die erste Operation zur Verarbeitung des Eingabedatenstroms in Blöcke unterteilt, deren Größe in Bits berechnet wird. Der entsprechende Algorithmus verwendet auch temporäre Variablen einer bestimmten Anzahl von Bits. Als erster Wert wird eine bekannte Zahl verwendet, während nachfolgende Datenblöcke mit dem Wert der betreffenden Funktion als Ausgabe kombiniert werden. Der Hashwert wird zu den Ausgabebits für die letzte Iteration, die den gesamten Eingabestream einschließlich des ersten Werts berücksichtigt. Der sogenannte „Lawineneffekt“ des Hashings ist gewährleistet.

Die Hauptschwierigkeit, die das als iterative Schema implementierte Hashing charakterisiert, besteht darin, dass Hash-Funktionen manchmal schwierig zu konstruieren sind, wenn der Eingabestream nicht mit der Größe des Blocks identisch ist, in den das ursprüngliche Datenarray unterteilt ist. In diesem Fall kann der Hashing-Standard jedoch Algorithmen enthalten, mit denen der ursprüngliche Stream auf die eine oder andere Weise erweitert werden kann.

In einigen Fällen können bei der Datenverarbeitung innerhalb des iterativen Schemas sogenannte Multi-Pass-Algorithmen verwendet werden. Sie deuten auf die Entstehung eines noch intensiveren „Lawineneffekts“ hin. In einem solchen Szenario kommt es zur Bildung wiederholter Datensätze, und erst an zweiter Stelle kommt es zu einer Erweiterung.

Blockalgorithmus

Die Komprimierungsfunktion kann auch auf dem Blockalgorithmus basieren, mit dem die Verschlüsselung durchgeführt wird. Um das Sicherheitsniveau zu erhöhen, können Sie daher Datenblöcke, die in der aktuellen Iteration einem Hashing unterliegen, als Schlüssel und das Ergebnis von Operationen, die während der Ausführung der Komprimierungsfunktion zuvor erhalten wurden, als Eingabe verwenden. Infolgedessen liefert die letzte Iteration die Ausgabe des Algorithmus. Die Sicherheit des Hashings hängt von der Robustheit des verwendeten Algorithmus ab.

Allerdings gehen Blockalgorithmen, wie wir oben erwähnt haben, angesichts verschiedener Arten von Hash-Funktionen häufig mit der Notwendigkeit einher, große Rechenleistung zu verwenden. Wenn sie nicht verfügbar sind, reicht die Dmöglicherweise nicht aus, um praktische Probleme im Zusammenhang mit der Verwendung von Hash-Funktionen zu lösen. Gleichzeitig kann die erforderliche kryptografische Stärke mit einer geringen Anzahl von Operationen mit Quelldatenströmen erreicht werden, insbesondere sind die von uns betrachteten Algorithmen – MD5, SHA und russische kryptografische Verschlüsselungsstandards – an die Lösung solcher Probleme angepasst.

Was ist ein Hash? Eine Hash-Funktion ist eine mathematische Umwandlung von Informationen in eine kurze Zeichenfolge einer bestimmten Länge.

Warum ist das notwendig? Die Analyse mithilfe von Hash-Funktionen wird häufig verwendet, um die Integrität wichtiger Betriebssystemdateien, wichtiger Programme und wichtiger Daten zu überwachen. Die Kontrolle kann entweder bedarfsorientiert oder regelmäßig erfolgen.

Wie es gemacht wird? Bestimmen Sie zunächst die Integrität der Dateien, die überwacht werden müssen. Für jede Datei wird deren Hashwert mithilfe eines speziellen Algorithmus berechnet und das Ergebnis gespeichert. Nach Ablauf der erforderlichen Zeit wird eine ähnliche Berechnung durchgeführt und die Ergebnisse verglichen. Wenn die Werte unterschiedlich sind, wurden die in der Datei enthaltenen Informationen geändert.

Welche Eigenschaften sollte eine Hash-Funktion haben?

  • muss in der Lage sein, Datenkonvertierungen beliebiger in Daten fester Länge durchzuführen;
  • muss über einen offenen Algorithmus verfügen, damit seine kryptografische Stärke untersucht werden kann;
  • muss einseitig sein, d. h. es sollte rechnerisch nicht möglich sein, anhand des Ergebnisses die Ausgangsdaten zu ermitteln;
  • muss Kollisionen „widerstehen“, d. h. es darf nicht die gleichen Werte für unterschiedliche Eingabedaten erzeugen;
  • sollte keine großen Rechenressourcen erfordern;
  • Bei der geringsten Änderung der Eingabedaten sollte sich das Ergebnis erheblich ändern.

Was sind die beliebtesten Hashing-Algorithmen? Derzeit werden folgende Hash-Funktionen verwendet:

  • CRC – zyklischer Redundanzcode oder Prüfsumme. Der Algorithmus ist sehr einfach und weist je nach erforderlicher Ausgabelänge eine große Anzahl an Variationen auf. Nicht kryptografisch!
  • MD 5 ist ein sehr beliebter Algorithmus. MD 4 ist wie seine Vorgängerversion eine kryptografische Funktion. Die Hash-Größe beträgt 128 Bit.
  • SHA-1 ist auch eine sehr beliebte kryptografische Funktion. Die Hash-Größe beträgt 160 Bit.
  • GOST R 34.11-94 ist ein russischer kryptografischer Standard für Hash-Funktionsberechnungen. Die Hash-Größe beträgt 256 Bit.

Wann kann ein Systemadministrator diese Algorithmen verwenden? Beim Herunterladen von Inhalten, beispielsweise Programmen von der Website des Herstellers, Musik, Filmen oder anderen Informationen, wird häufig ein Wert von Prüfsummen berechnet, der mithilfe eines bestimmten Algorithmus berechnet wird. Aus Sicherheitsgründen müssen Sie nach dem Herunterladen die Hash-Funktion selbstständig berechnen und den Wert mit den Angaben auf der Website oder im Anhang der Datei vergleichen. Haben Sie das schon einmal gemacht?

Was ist bequemer, um einen Hash zu berechnen? Mittlerweile gibt es eine große Anzahl ähnlicher Dienstprogramme, sowohl kostenpflichtige als auch kostenlose. Mir persönlich hat HashTab gefallen. Erstens wird das Dienstprogramm während der Installation als Registerkarte in die Dateieigenschaften integriert, zweitens ermöglicht es die Auswahl einer großen Anzahl von Hashing-Algorithmen und drittens ist es für den privaten, nicht kommerziellen Gebrauch kostenlos.

Was ist Russisch? Wie oben erwähnt, gibt es in Russland den Hashing-Standard GOST R 34.11-94, der von vielen Herstellern von Informationssicherheitstools weit verbreitet ist. Eines dieser Tools ist das Programm zum Fixieren und Überwachen des Ausgangszustands des FIX-Softwarepakets. Dieses Programm ist ein Mittel zur Überwachung der Wirksamkeit des Einsatzes der Informationssicherheit.

FIX (Version 2.0.1) für Windows 9x/NT/2000/XP

  • Berechnung der Prüfsummen vorgegebener Dateien mithilfe eines von 5 implementierten Algorithmen.
  • Fixierung und anschließende Überwachung des Ausgangszustands des Softwarepakets.
  • Vergleich der Softwarepaketversionen.
  • Fixierung und Kontrolle von Verzeichnissen.
  • Überwachen von Änderungen in bestimmten Dateien (Verzeichnissen).
  • Erstellen von Berichten in den Formaten TXT, HTML und SV.
  • Das Produkt verfügt bis zum 1. Juni 2013 über ein FSTEC-Zertifikat für NDV 3 Nr. 913.

Was ist mit der digitalen Signatur? Das Ergebnis der Hash-Funktionsberechnung gelangt zusammen mit dem geheimen Schlüssel des Benutzers in den Eingang des kryptografischen Algorithmus, wo die elektronische digitale Signatur berechnet wird. Streng genommen ist die Hash-Funktion kein Teil des digitalen Signaturalgorithmus, häufig geschieht dies jedoch absichtlich, um einen Angriff mit einem öffentlichen Schlüssel auszuschließen.

Derzeit ist es bei vielen E-Commerce-Anwendungen möglich, den geheimen Schlüssel des Benutzers in einem privaten Token-Bereich (ruToken, eToken) zu speichern, ohne dass die technische Möglichkeit besteht, ihn von dort abzurufen. Der Token selbst verfügt über einen sehr begrenzten Speicherbereich, gemessen in Kilobyte. Um ein Dokument zu signieren, gibt es keine Möglichkeit, das Dokument auf den Token selbst zu übertragen. Es ist jedoch sehr einfach, den Hash des Dokuments auf den Token zu übertragen und am Ausgang eine elektronische digitale Signatur zu erhalten.



 


Lesen:



Touchpad lässt sich auf einem Asus-Laptop nicht ausschalten

Touchpad lässt sich auf einem Asus-Laptop nicht ausschalten

In diesem Artikel erkläre ich Ihnen, wie Sie das Touchpad eines Laptops mit verschiedenen Methoden deaktivieren, die jedem zur Verfügung stehen. Ohne Maus ist es heute fast unmöglich...

Standardmethoden und -programme zum Scannen von einem MFP-Drucker auf einen Computer

Standardmethoden und -programme zum Scannen von einem MFP-Drucker auf einen Computer

In fast jedem Haushalt gibt es einen Scanner. Wenn Sie es auch haben und sein volles Potenzial ausschöpfen möchten, empfehlen wir den Download von VueScan Pro für Windows 10....

Löschen und Erstellen von Seiten im Microsoft Word-Texteditor

Löschen und Erstellen von Seiten im Microsoft Word-Texteditor

Der Word-Texteditor gehört zu den TOP 10 der beliebtesten Programme unter Windows-Benutzern. Kein Wunder, dass die Leute so viele haben...

Regeln zum Erstellen von HTML-Dokumenten Loader-Regeln HTML

Regeln zum Erstellen von HTML-Dokumenten Loader-Regeln HTML

Mit Freude habe ich diese Empfehlungen gelesen und biete Ihnen nun eine Übersetzung an. Einleitung In diesem Leitfaden werden die Regeln für die Registrierung und... beschrieben.

Feed-Bild RSS