Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

Digitale Handtekeningen Gebruiken om Binaire Bestandsintegriteit te Verifiëren op Linux

Inleiding

Digitale Handtekeningen Gebruiken om Binaire Bestandsintegriteit te Verifiëren op Linux

In een wereld waar data kan worden afgeluisterd of gewijzigd, is vertrouwen in de authenticiteit van ontvangen bestanden van vitaal belang. Als Gebruiker A bijvoorbeeld een binair bestand naar Gebruiker B via e-mail stuurt, hoe kan B zeker weten dat het bestand niet is gemanipuleerd? Digitale handtekeningen (DH) bieden een betrouwbare oplossing door de data te binden aan de unieke referenties van de afzender.

  • De handtekening moet afgeleid zijn van het ondertekende bericht.
  • Het moet de unieke informatie van de afzender incorporeren.
  • Creatie moet eenvoudig zijn.
  • Het moet computationeel onmogelijk zijn om te vervalsen.
  • De handtekeninggrootte moet klein blijven.

Dit artikel demonstreert een praktische DH-implementatie voor het verifiëren van de integriteit van 64-bit ELF binaries op Linux. De benadering gebruikt een direct handtekeningsschema (geen derde-partij arbitrator) en vertrouwt op een private key voor ondertekening en een publiek certificaat voor verificatie.

DH Implementatie Voorbeeld

Het implementeren van de handtekening omvat de volgende stappen:

  1. Genereer een MD5 hash van de bron binary.
  2. Maak een private key en een self-signed publiek certificaat aan.
  3. Onderteken de binary:
    • Versleutel de MD5 hash met de private key.
    • Sla de versleutelde hash op in een nieuwe .sig sectie van het ELF bestand.
    • Bewaar het certificaat in ~/.ssh voor latere verificatie.

Het hele proces kan gescript worden met openssl, objcopy en md5sum. Hieronder is een voorbeeldscript, sign_elf.sh, dat het ondertekenen van ELF binaries automatiseert. (De broncode zonder regelnummers verschijnt aan het einde van dit artikel.)

#!/bin/bash KEY_DIR="$HOME/.ssh" PRIVATE_KEY="$KEY_DIR/priv.key" CERTIFICATE="$KEY_DIR/pub.crt" SUBJECT="/C=NL/ST=Noord-Holland/L=Amsterdam/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" # Genereer private key en certificaat 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 # Verwijder bestaande .sig sectie objcopy --remove-section=.sig "$ELF_BIN" # Voeg een 512-byte nul-gevulde .sig sectie toe 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" # Bereken MD5 hash van de binary (met .sig sectie) md5sum "$ELF_BIN" | awk '{ print $1 }' > "$KEY_DIR/$ELF_BIN_MD5" # Onderteken de MD5 hash met de private key openssl dgst -sha256 -sign "$PRIVATE_KEY" -out "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5" # Verifieer de handtekening direct (optioneel) openssl dgst -sha256 -verify <(openssl x509 -in "$CERTIFICATE" -pubkey -noout) -signature "$KEY_DIR/$ELF_BIN_SIGNATURE" "$KEY_DIR/$ELF_BIN_MD5" # Embed de versleutelde hash in de .sig sectie objcopy --update-section .sig="$KEY_DIR/$ELF_BIN_SIGNATURE" --set-section-flags .sig=noload,readonly "$ELF_BIN" # Toon de inhoud van de .sig sectie ter inspectie objdump -sj .sig "$ELF_BIN" done rm -f dummy.txt ls -ls ~/.ssh

Digitale Handtekeningen Gebruiken om Binaire Bestandsintegriteit te Verifiëren op Linux
Figuur 1. Het proces van het ondertekenen van een ELF binary. (Bron: Auriga)

Het script voert de volgende taken in detail uit:

Regel 19 – Certificaat Generatie

openssl req -nodes -x509 -sha256 -newkey rsa:4096 -keyout "$PRIVATE_KEY" -out "$CERTIFICATE" -days 365 -subj "$SUBJECT"
  • req creëert een certificaat signing request.
  • -nodes produceert een plain-text private key.
  • -x509 output een self-signed certificaat.
  • -sha256 selecteert SHA-256 voor hashing.
  • -newkey rsa:4096 genereert een 4096-bit RSA key.
  • Het SUBJECT veld volgt RFC 5280 formaat, bijv. /C=NL/ST=.../CN=....

Na deze stap bevat ~/.ssh/priv.key de private key en ~/.ssh/pub.crt het certificaat. De private key versleutelt data; het certificaat bevat de publieke key nodig voor verificatie.

Lus over ELF bestanden (Regel 21)

Elke binary gespecificeerd op de commandoregel wordt sequentieel verwerkt. Het script zorgt ervoor dat elke pre-bestaande .sig sectie verwijderd wordt voor opnieuw ondertekenen.

Sectie Beheer (Regels 33-40)

  • De bestaande .sig sectie wordt verwijderd met objcopy --remove-section=.sig.
  • Een 512-byte placeholder bestand wordt aangemaakt en toegevoegd als een read-only, non-loadable .sig sectie.

Hash Berekening (Regel 42)

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

MD5 wordt berekend over de binary, inclusief de placeholder .sig sectie, en opgeslagen in binary_name.md5.

De Hash Ondertekenen (Regel 45)

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

De MD5 hash wordt versleuteld met de private key, wat een handtekeningbestand produceert (bijv. binary_name.sha256).

Verificatie (Optioneel) (Regel 48)

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

De Handtekening Embedden (Regel 52)

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

De versleutelde hash vervangt de placeholder, wat de ondertekende ELF binary finaliseert.

Het uitvoeren van het script op een set ELF bestanden produceert ondertekende binaries die veilig gedistribueerd kunnen worden. De ontvanger kan integriteit verifiëren door de .sig sectie te extraheren, deze te ontsleutelen met het publieke certificaat, en de resulterende hash te vergelijken met een vers berekende hash van het ontvangen bestand.

Internet of Things-technologie

  1. Industrie 4.0 benutten: Bewezen strategieën voor een winnende digitale roadmap
  2. Neurale Netwerken Versnellen Röntgenbeeldreconstructie
  3. IoT-synergieën Drijven: Hoe Bosch's Connectivity CoC een Verbonden Toekomst Vormt
  4. Uw Productieoperaties Voor AI Klaarmaken Met IoT
  5. Digitale Tweelingen: Intelligent Edge IoT in Productie Ontgrendelen – Deel 2
  6. Voorspellend Onderhoud: Industry 4.0 Inzetten voor Ononderbroken Productie
  7. Is uw productiefaciliteit klaar voor IoT? Een praktische gids
  8. Digitale verzekeringen: 5 trends die revolutioneren hoe we verzekeringen kopen en beheren
  9. Western Digital Lanceert Ruwe 64-laags 3D NAND-opslag Voor Industriële IoT En Edge Computing
  10. Western Digital Lanceert Ruwe 64-laags 3D NAND-opslag Voor Industriële IoT
  11. Waarom cloud computing essentieel is voor het opslaan van IoT-data