GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Eine Einführung in Hashing und Prüfsummen in Linux

Wahrscheinlich haben Sie schon einmal Hinweise auf Hashes oder Prüfsummen gesehen, wenn Sie Software aus dem Internet heruntergeladen haben. Oft wird die Software angezeigt und neben dem Link befindet sich eine Prüfsumme. Die Prüfsumme kann als MD5, SHA oder mit einem anderen ähnlichen Namen bezeichnet werden. Hier ist ein Beispiel mit einem meiner alten Lieblingsspiele aus den 1990ern namens Nethack:

Viele Menschen wissen nicht genau, was diese Informationen bedeuten oder wie sie damit umgehen sollen. In diesem Artikel bespreche ich den Zweck des Hashings und seine Verwendung.

[ Den Lesern hat auch gefallen: Erste Schritte mit GPG (GnuPG) ]

Ziele der Kryptografie

In diesem ersten Abschnitt möchte ich, dass Sie etwas verlernen. Insbesondere möchte ich, dass Sie die Assoziation zwischen dem Wort Verschlüsselung in Ihrem Kopf aufheben und das Wort vertraulich . Viele von uns betrachten diese beiden Wörter als Synonyme, obwohl dies eigentlich nicht der Fall ist. Kryptografie, die Verschlüsselung beinhaltet, kann bietet Vertraulichkeit, kann aber auch anderen Zielen dienen.

Kryptografie hat eigentlich drei Ziele:

  • Vertraulichkeit - um zu verhindern, dass der Dateiinhalt von unbefugten Benutzern gelesen wird
  • Authentizität - um zu beweisen, woher eine Datei stammt
  • Integrität - um zu beweisen, dass eine Datei nicht unerwartet geändert wurde

Es ist das dritte Konzept, Integrität , die uns hier interessieren. Integrität bedeutet in diesem Zusammenhang, nachzuweisen, dass sich Daten nicht unerwartet geändert haben. Der Integritätsnachweis ist in vielen Szenarien nützlich:

  • Internet-Downloads wie Linux-Distributionen, Software oder Datendateien
  • Netzwerkdateiübertragungen über NFS, SSH oder andere Protokolle
  • Softwareinstallationen überprüfen
  • Vergleichen eines gespeicherten Werts, z. B. eines Passworts, mit einem von einem Benutzer eingegebenen Wert
  • Backups, die zwei Dateien vergleichen, um zu sehen, ob sie sich geändert haben

Was ist Hashing?

Kryptografie verwendet Hashing, um zu bestätigen, dass eine Datei unverändert ist. Die einfache Erklärung ist, dass dieselbe Hashing-Methode für eine Datei an jedem Ende eines Internet-Downloads verwendet wird. Die Datei wird auf dem Webserver vom Webadministrator gehasht und das Hash-Ergebnis veröffentlicht. Ein Benutzer lädt die Datei herunter und wendet dieselbe Hash-Methode an. Die Hash-Ergebnisse oder Prüfsummen , werden verglichen. Wenn die Prüfsumme der heruntergeladenen Datei mit der der Originaldatei übereinstimmt, sind die beiden Dateien identisch und es gab keine unerwarteten Änderungen aufgrund von Dateibeschädigungen, Man-in-the-Middle-Angriffen usw.

Hashing ist ein Einwegprozess. Das gehashte Ergebnis kann nicht rückgängig gemacht werden, um die Originaldaten offenzulegen. Die Prüfsumme ist eine Ausgabezeichenfolge mit einer festgelegten Größe. Technisch bedeutet das, dass Hashing keine Verschlüsselung ist, da die Verschlüsselung rückgängig gemacht (entschlüsselt) werden soll.

Welche Art von Hash-Kryptographie könnten Sie unter Linux verwenden?

Message Digest und sicherer Hash-Algorithmus

Unter Linux interagieren Sie wahrscheinlich mit einer von zwei Hash-Methoden:

  • MD5
  • SHA256

Diese Kryptographie-Tools sind in die meisten Linux-Distributionen sowie in macOS integriert. Windows enthält diese Dienstprogramme normalerweise nicht, daher müssen Sie sie separat von Drittanbietern herunterladen, wenn Sie diese Sicherheitstechnik verwenden möchten. Ich finde es toll, dass Sicherheitstools wie diese Teil von Linux und macOS sind.

Message Digest versus sicherer Hash-Algorithmus

Was ist der Unterschied zwischen dem Message Digest und sicheren Hash-Algorithmen? Der Unterschied liegt in der beteiligten Mathematik, aber die beiden erreichen ähnliche Ziele. Systemadministratoren bevorzugen möglicherweise eine der anderen, aber für die meisten Zwecke funktionieren sie ähnlich. Sie sind jedoch nicht austauschbar. Ein mit MD5 an einem Ende der Verbindung generierter Hash ist nicht sinnvoll, wenn am anderen Ende SHA256 verwendet wird. Auf beiden Seiten muss dieselbe Hash-Methode verwendet werden.

SHA256 generiert einen größeren Hash und kann mehr Zeit und Rechenleistung in Anspruch nehmen. Es gilt als sicherer Ansatz. MD5 ist wahrscheinlich gut genug für die meisten grundlegenden Integritätsprüfungen, wie z. B. das Herunterladen von Dateien.

Wo finden Sie Hashing in Linux?

Linux verwendet Hashes an vielen Stellen und in Situationen. Prüfsummen können vom Benutzer manuell generiert werden. Wie das genau geht, erfahren Sie später in diesem Artikel. Außerdem sind Hash-Fähigkeiten in /etc/shadow enthalten , rsync , und andere Dienstprogramme.

Zum Beispiel die Passwörter, die in /etc/shadow gespeichert sind Datei sind eigentlich Hashes. Wenn Sie sich bei einem Linux-System anmelden, vergleicht der Authentifizierungsprozess den gespeicherten Hashwert mit einer gehashten Version des von Ihnen eingegebenen Kennworts. Wenn die beiden Prüfsummen identisch sind, sind das ursprüngliche Kennwort und das von Ihnen eingegebene Kennwort identisch. Mit anderen Worten, Sie haben das richtige Passwort eingegeben. Dies wird jedoch ermittelt, ohne dass das gespeicherte Passwort jemals tatsächlich auf Ihrem System entschlüsselt wird. Überprüfen Sie die ersten beiden Zeichen des zweiten Felds für Ihr Benutzerkonto in /etc/shadow . Wenn die beiden Zeichen $1 sind , wird Ihr Passwort mit MD5 verschlüsselt. Wenn die Zeichen $5 sind , wird Ihr Passwort mit SHA256 verschlüsselt. Wenn der Wert 6 $ beträgt , SHA512 wird verwendet. SHA512 wird auf meiner virtuellen Fedora 33-Maschine verwendet, wie unten zu sehen:

So generieren Sie Prüfsummen manuell

Die Verwendung der Hash-Dienstprogramme ist sehr einfach. Ich werde Sie durch ein sehr einfaches Szenario führen, das Sie auf einem Laborcomputer oder einem beliebigen Linux-System, das Ihnen zur Verfügung steht, durchführen können. Der Zweck dieses Szenarios besteht darin, festzustellen, ob sich eine Datei geändert hat.

Öffnen Sie zunächst Ihren bevorzugten Texteditor und erstellen Sie eine Datei mit dem Namen original.txt mit einer Textzeile, die lautet:Originalinformationen.

[damon@localhost ~]$ vim original.txt
[damon@localhost ~]$ cat original.txt
Original information.
[damon@localhost ~]$

Als nächstes führen Sie die Datei durch einen Hash-Algorithmus. Ich werde jetzt MD5 verwenden. Der Befehl lautet md5sum . Hier ist ein Beispiel:

[damon@localhost ~]$ md5sum original.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

Beachten Sie den resultierenden Prüfsummenwert. Dieser Wert ist groß genug, dass es schwierig ist, damit zu arbeiten. Lassen Sie uns diesen Wert für die zukünftige Verwendung speichern, indem wir ihn in eine Datei umleiten:

[damon@localhost ~]$ md5sum original.txt > hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
[damon@localhost ~]$

An diesem Punkt haben Sie eine Originaldatei. Kopieren Sie diese Datei nach /tmp Verzeichnis mit dem Namen duplicate.txt . Kopieren Sie die Datei mit dem folgenden Befehl (achten Sie darauf, zu kopieren, nicht zu verschieben):

[damon@localhost ~]$ cp original.txt /tmp/duplicate.txt
[damon@localhost ~]$

Führen Sie den folgenden Befehl aus, um eine Prüfsumme der kopierten Datei zu erstellen:

[damon@localhost ~]$ md5sum /tmp/duplicate.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Als nächstes hängen Sie das Hash-Ergebnis an unsere hashes.txt an Datei und vergleichen Sie dann die beiden. Seien Sie sehr vorsichtig bei der Verwendung von >> Fügen Sie hier den Weiterleitungsoperator hinzu, da > überschreibt den Hashwert der original.txt Datei.

Führen Sie den folgenden Befehl aus:

[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
[damon@localhost ~]$

Die beiden Hash-Ergebnisse sind identisch, die Datei hat sich also während des Kopiervorgangs nicht verändert.

Simulieren Sie als Nächstes eine Änderung. Geben Sie den folgenden Befehl ein, um /tmp/duplicate.txt zu ändern Dateiinhalt und führen Sie dann md5sum erneut aus Befehl mit dem >> Anfügeoperator:

[damon@localhost ~]$ hostname >> /tmp/duplicate.txt
[damon@localhost ~]$ md5sum /tmp/duplicate.txt >> hashes.txt
[damon@localhost ~]$

Sie wissen, dass die duplicate.txt Datei ist nicht mehr identisch mit der original.txt Datei, aber lassen Sie uns das beweisen:

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt
[damon@localhost ~]$

Die beiden Prüfsummenwerte sind nicht identisch, und daher sind die beiden Dateien, aus denen die Prüfsummen generiert wurden, nicht identisch.

Im obigen Beispiel haben Sie die Hash-Werte manuell verglichen, indem Sie sie mit cat angezeigt haben . Sie können den --check verwenden Option, um md5sum zu haben Machen Sie den Vergleich für uns. Ich habe beide Methoden unten aufgeführt:

[damon@localhost ~]$ cat hashes.txt
80bffb4ca7cc62662d951326714a71be  original.txt
80bffb4ca7cc62662d951326714a71be  /tmp/duplicate.txt
1f59bbdc4e80240e0159f09ecfe3954d  /tmp/duplicate.txt

[damon@localhost ~]$ md5sum --check hashes.txt
original.txt: OK
/tmp/duplicate.txt: FAILED
/tmp/duplicate.txt: OK
md5sum: WARNING: 1 computed checksum did NOT match
[damon@localhost ~]$

Sie können die obigen Schritte wiederholen, indem Sie sha256sum ersetzen für die md5sum Befehl, um zu sehen, wie der Prozess mit dem SHA-Algorithmus funktioniert. Die sha256sum Der Befehl enthält auch eine --check checksum Option, die die resultierenden Hashes vergleicht und eine Meldung anzeigt, ob sich die Dateien unterscheiden.

Hinweis :Wenn Sie Dateien zwischen Linux, macOS und Windows übertragen, können Sie trotzdem Hashing verwenden, um die Integrität der Dateien zu überprüfen. Um unter macOS einen Hashwert zu generieren, führen Sie md5 aus Befehl. Um dies unter Windows zu tun, müssen Sie ein Programm eines Drittanbieters herunterladen. Ich persönlich verwende md5checker . Machen Sie sich unbedingt mit der Lizenzierung dieser Dienstprogramme vertraut. Möglicherweise können Sie das PowerShell-Cmdlet get-filehash verwenden , abhängig von der Version von PowerShell, die Sie installiert haben.

[ Kostenloser Kurs:Technischer Überblick über Red Hat Satellite. ] 

Abschluss

Hashing bestätigt, dass sich Daten während einer Dateiübertragung, eines Downloads oder eines anderen Ereignisses nicht unerwartet geändert haben. Dieses Konzept wird als Dateiintegrität bezeichnet. Hashing sagt Ihnen nicht, was sich geändert hat, sondern nur, dass sich etwas geändert hat. Sobald das Hashing Ihnen sagt, dass zwei Dateien unterschiedlich sind, können Sie Befehle wie diff verwenden um herauszufinden, welche Unterschiede bestehen.


Linux
  1. Was ist NFS und wie wird es unter Linux installiert?

  2. Linux – Unix-Berechtigungen und Dateitypen verstehen?

  3. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

  4. Komprimierungs- und Archivierungsmethoden in Linux

  5. Linux .htaccess Tipps und Tricks

Eine Einführung in Pipes und Named Pipes in Linux

Einführung in das Linux-Dateisystem

So mounten und unmounten Sie Dateisysteme in Linux

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

Linux-Hostdatei:Wie wird sie bearbeitet und verwendet?

So erstellen und verwenden Sie eine Auslagerungsdatei unter Linux