Wenn Sie nur Korruption erkennen möchten, können Sie ein *sum
Dienstprogramm wie sha256sum
.
Führen Sie in dem zu schützenden Verzeichnis Folgendes aus. Beachten Sie die Verwendung von find ... -print0
und xargs -0
, um Pfade mit Leerzeichen oder anderen Sonderzeichen aufzunehmen.
find . -type f -print0 \ | xargs -0 sha256sum \ > manifest.sum
Verwenden Sie anschließend Folgendes, um den Dateiinhalt zu überprüfen.
sha256sum -c manifest.sum
Die Ausgabe listet Dateien mit OK
oder auf FAILED
, und der Rückgabewert ist 0
(Null), wenn alle Dateien ausgecheckt wurden, oder nicht Null, wenn Fehler aufgetreten sind.
Dieser Prozess überprüft alle Dateien im aktuellen Verzeichnis und lässt sie manifest.sum
zurück.
Idealerweise würden Sie manifest.sum
an der Quelle generieren (z. B. zur Erstellungszeit) und diese mit den Dateien verteilen - nur die Verifizierung ( sha256sum -c
) auf dem Zielgerät.
Da Sie bereits erwähnt haben, dass dies ein Firmware-Update-Prozess ist, würde ich Ihnen empfehlen, weiter nachzusehen, als nur die Daten auf Korruption zu überprüfen.
In vielen Fällen ist es von Vorteil, sicherzustellen, dass das angewendete Upgrade echt ist und von der vorgesehenen Quelle bereitgestellt wurde ... Wenn Sie zulassen, dass ein Upgrade auf ein System angewendet wird, öffnen Sie es aus Versehen (und möglicherweise auch aus Versehen) schädigende) Updates sowie schädliche Updates.
Um dies zu beheben, sollten Sie das kryptographische Signieren des Updates überprüfen.
- Sie könnten mit dem Signieren nur das
manifest.sum
oben erzeugte umgehen (weniger Bearbeitungsaufwand). Indem Sie die Prüfsummen signieren, können Sie den Inhalt jeder Datei überprüfen ... unter der Annahme, dass der Digest natürlich sicher ist ... ( MD5 wäre keine gute Wahl) - Es kann jedoch besser sein, ein signiertes (und möglicherweise verschlüsseltes) Archiv vollständig zu verteilen und zu überprüfen, bevor es überhaupt extrahiert wird.
Da die *sum
Dienstprogramme ASCII-Text enthalten, können Sie gpg --clearsign
die Daten signieren:
find . -type f -print0 \ | xargs -0 sha256sum \ | gpg --clearsign --default-key 7826F053 \ > manifest.asc
Auf dem Ziel können Sie dann die Signatur überprüfen:
gpg --verify manifest.asc
Wenn und nur dann, wenn die Signatur gültig ist und von einem erwarteten Ursprung stammt (Sie müssen --status-fd
dies überprüfen), können Sie den Inhalt der Datei überprüfen:
gpg --decrypt manifest.asc \ | sha256sum -c -
Beachten Sie, dass Sie *sum
sich am " Ende " der Pipeline befinden müssen, um sicherzustellen, dass Sie den Rückkehrcode sehen ... alternativ könnten Sie verwendenset -o pipefail
Ich erwähnte die Verwendung von --status-fd
oben ... es wird unordentlich in der Shell, so dass Sie wahrscheinlich eine Anwendung schreiben möchten, um das besser zu behandeln ... Etwas wie dieses wird " funktionieren " (dh: einen Punkt beweisen).
Der Fingerabdruck des Schlüssels verwendet, um das Manifest zu unterzeichnen ist: A5C929D6A230C02067720F1DB2B38B43C2ABEB33
.
gpg --status-fd 3 --verify manifest.asc 3>&1 1>/dev/null \ | grep -Eq '^\[GNUPG:\] VALIDSIG A5C929D6A230C02067720F1DB2B38B43C2ABEB33 '