Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

Digitale Signaturen zur Verifikation der Integrität binärer Dateien unter Linux

Einführung

Digitale Signaturen zur Verifikation der Integrität binärer Dateien unter Linux

In einer Welt, in der Daten abgefangen oder verändert werden können, ist Vertrauen in die Authentizität empfangener Dateien paramount. Wenn User A eine Binärdatei per E-Mail an User B sendet – wie kann B sicher sein, dass die Datei nicht manipuliert wurde? Digitale Signaturen (DS) bieten eine zuverlässige Lösung, indem sie Daten an die einzigartigen Credentials des Absenders binden.

Dieser Artikel demonstriert eine praktische DS-Implementierung zur Verifikation der Integrität von 64-Bit ELF Binaries unter Linux. Der Ansatz nutzt ein direktes Signaturschema (kein Drittpartei-Arbiter) und verlässt sich auf einen Private Key zum Signieren und ein Public Certificate zur Verifikation.

DS Implementierungsbeispiel

Die Signaturimplementierung umfasst folgende Schritte:

  1. MD5 Hash der Quell-Binärdatei generieren.
  2. Private Key und selbstsigniertes Public Certificate erstellen.
  3. Binärdatei signieren:
    • MD5 Hash mit Private Key verschlüsseln.
    • Verschlüsselten Hash in neue .sig Section der ELF Datei speichern.
    • Certificate in ~/.ssh für spätere Verifikation speichern.

Der gesamte Prozess kann mit openssl, objcopy und md5sum gescriptet werden. Unten ein Beispielscript sign_elf.sh, das das Signieren von ELF Binaries automatisiert. (Der Quellcode ohne Zeilennummern findet sich am Artikelende.)

#!/bin/bash
KEY_DIR="$HOME/.ssh"
PRIVATE_KEY="$KEY_DIR/priv.key"
CERTIFICATE="$KEY_DIR/pub.crt"
SUBJECT="/C=DE/ST=Bayern/L=Muenchen/O=Example/OU=DEV/CN=www.example.com"
if [ "$#" = "0" ]; then
 echo "Usage: sign_elfs.sh [ELF files]"
 exit 1
fi
[ ! -d "$KEY_DIR" ] && mkdir "$KEY_DIR"
# Private Key und Certificate generieren
openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout "$PRIVATE_KEY" -out "$CERTIFICATE" -days 365 -subj "$SUBJECT"
for ELF_BIN in "$@"; do
 ELF_BASE_NAME="${ELF_BIN##*/}"
 ELF_BIN_SIGNATURE="$ELF_BASE_NAME.sha256"
 ELF_BIN_MD5="$ELF_BASE_NAME.md5"
 if [ ! -f "$ELF_BIN" ]; then
 echo "Error: no such file $ELF_BIN"
 exit 103
 fi
 # Existierende .sig Section entfernen
 objcopy --remove-section=.sig "$ELF_BIN"
 # 512-Byte Zero-filled .sig Section hinzufügen
 rm -f dummy.txt
 touch dummy.txt
 truncate --size=512 dummy.txt
 objcopy --add-section .sig=dummy.txt --set-section-flags .sig=noload,readonly "$ELF_BIN"
 # MD5 Hash der Binary (mit .sig Section) berechnen
 md5sum "$ELF_BIN" | awk '{ print $1 }' > "$KEY_DIR/$ELF_BIN_MD5"
 # MD5 Hash mit Private Key signieren
 openssl dgst -sha256 -sign "$PRIVATE_KEY" -out "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5"
 # Signatur sofort verifizieren (optional)
 openssl dgst -sha256 -verify <(openssl x509 -in "$CERTIFICATE" -pubkey -noout) -signature "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5"
 # Verschlüsselten Hash in .sig Section einbetten
 objcopy --update-section .sig="$KEY_DIR/$ELF_BIN_SIGNATURE" --set-section-flags .sig=noload,readonly "$ELF_BIN"
 # Inhalt der .sig Section zur Inspektion anzeigen
 objdump -sj .sig "$ELF_BIN"
done
rm -f dummy.txt
ls -ls ~/.ssh
Digitale Signaturen zur Verifikation der Integrität binärer Dateien unter Linux
Abbildung 1. Der Prozess des Signierens einer ELF Binary. (Quelle: Auriga)

Detaillierte Script-Erläuterung

Zeile 19 – Certificate Generierung

openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout "$PRIVATE_KEY" -out "$CERTIFICATE" -days 365 -subj "$SUBJECT"

Nach diesem Schritt hält ~/.ssh/priv.key den Private Key und ~/.ssh/pub.crt das Certificate. Der Private Key verschlüsselt Daten; das Certificate enthält den Public Key für Verifikation.

Schleife über ELF Files

Jede auf der Kommandozeile spezifizierte Binary wird sequenziell verarbeitet. Das Script stellt sicher, dass jede vorexistierende .sig Section vor Neu-Signierung entfernt wird.

Section Management

Hash Berechnung

md5sum "$ELF_BIN" | awk '{ print $1 }' > "$KEY_DIR/$ELF_BIN_MD5"

MD5 wird über die Binary inklusive Platzhalter .sig Section berechnet und in binary_name.md5 gespeichert.

Hash Signieren

openssl dgst -sha256 -sign "$PRIVATE_KEY" -out "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5"

Der MD5 Hash wird mit dem Private Key verschlüsselt, was eine Signaturdatei erzeugt (z.B. binary_name.sha256).

Verifikation (Optional)

openssl dgst -sha256 -verify <(openssl x509 -in "$CERTIFICATE" -pubkey -noout) -signature "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5"

Dieser Schritt bestätigt, dass die Signatur zum Hash passt, using den Public Key aus dem Certificate.

Signatur Einbetten

objcopy --update-section .sig="$KEY_DIR/$ELF_BIN_SIGNATURE" --set-section-flags .sig=noload,readonly "$ELF_BIN"

Der verschlüsselte Hash ersetzt den Platzhalter, finalisiert die signierte ELF Binary.

Das Ausführen des Scripts auf einer Menge ELF Files produziert signierte Binaries, die sicher verteilt werden können. Der Empfänger kann Integrität verifizieren, indem er die .sig Section extrahiert, mit dem Public Certificate entschlüsselt und den resultierenden Hash mit einem frisch berechneten Hash der empfangenen Datei vergleicht.

Internet der Dinge-Technologie

  1. IoT-Synergien treiben: Wie Boschs Connectivity CoC eine vernetzte Zukunft formt
  2. Fertigungsabläufe mit IoT auf KI vorbereiten
  3. Digital Twins: Intelligentes Edge-IoT in der Fertigung freisetzen – Teil 2
  4. Predictive Maintenance: Industry 4.0 für unterbrechungsfreie Produktion nutzen
  5. Ist Ihre Fertigungsstätte bereit für IoT? Ein praktischer Leitfaden
  6. Digital Insurance: 5 Trends, die Versicherungsabschluss und -management revolutionieren
  7. Western Digital startet robuste 64-Layer 3D NAND Storage für Industrial IoT und Edge Computing
  8. Western Digital launcht robuste 64-Layer 3D NAND Storage für Industrial IoT
  9. Warum Cloud Computing für die Speicherung von IoT-Daten unverzichtbar ist
  10. Industrie 4.0 nutzen: Bewährte Strategien für eine gewinnende digitale Roadmap