Skip to main content

IoT Firmware Sealer — full provenance chain verification for firmware updates on edge devices

Project description

tibet-edge — IoT Firmware Sealer

Not just hash verification. Full provenance chain for firmware updates.

Who built it, from what source, on what build server, why this version.

tibet-edge seals firmware images with a complete TIBET provenance chain covering every step from developer to device. A missing step means a rejected update. No exceptions.

The Problem: Hashes Are Not Enough

Everyone verifies firmware hashes. But a hash only proves "the binary hasn't changed." It doesn't prove:

  • Who compiled it (intern or senior engineer?)
  • What source code it came from (which git commit?)
  • Where it was built (CI server or compromised laptop?)
  • Why this version exists (security patch or backdoor?)

A supply chain attacker who compromises the build server produces a binary with a perfectly valid hash — of the wrong firmware.

The Firmware Envelope

┌─────────────────────────────────────────────────────────────────────┐
│                     FIRMWARE ENVELOPE                               │
│                                                                     │
│  ┌────────────────────────────────────────────────────────────────┐ │
│  │ FIRMWARE BINARY                                                │ │
│  │ SHA-256: a1b2c3...  Size: 2.4MB  Version: 3.1.7              │ │
│  └────────────────────────────────────────────────────────────────┘ │
│                                                                     │
│  ┌─ BUILD CHAIN (every step = TIBET token) ─────────────────────┐  │
│  │                                                               │  │
│  │  [1] commit    dev@company    git:abc123    → src_hash       │  │
│  │       │                                                       │  │
│  │  [2] compile   ci-server-04   GCC 13.2      → obj_hash      │  │
│  │       │                                                       │  │
│  │  [3] test      ci-server-04   pytest 8.1    → test_hash     │  │
│  │       │                                                       │  │
│  │  [4] sign      hsm-prod-01   ECDSA P-256    → sig_hash      │  │
│  │       │                                                       │  │
│  │  [5] package   ci-server-04   fwtools 2.0   → pkg_hash      │  │
│  │       │                                                       │  │
│  │  [6] release   release-mgr    approved       → rel_hash      │  │
│  │                                                               │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                     │
│  Missing step? → REJECT UPDATE                                      │
│  Broken chain? → REJECT UPDATE                                      │
│  Unknown actor? → REJECT UPDATE                                     │
│                                                                     │
│  TIBET Token: jis:fw:envelope:a1b2c3d4                              │
│  Sealed by:  jis:ci:build-pipeline-prod                             │
│  Sealed at:  2026-02-27T14:00:00Z                                   │
└─────────────────────────────────────────────────────────────────────┘

Install

pip install tibet-edge

Quick Start

from tibet_edge import FirmwareSealer, BuildStep

sealer = FirmwareSealer(actor="ci-pipeline-prod")

# Record each build step
sealer.add_build_step(BuildStep(
    name="compile",
    actor="ci-server-04",
    input_hash="abc123...",
    output_hash="def456...",
    tool="GCC 13.2",
    environment="Ubuntu 24.04",
))

# Seal the firmware
envelope = sealer.seal(
    firmware_path="firmware-v3.1.7.bin",
    version="3.1.7",
    metadata={"reason": "Security patch CVE-2026-1234"},
)

# Verify: every step present, hashes match, chain unbroken
result = sealer.verify(envelope)
print(result.valid)           # True
print(result.steps_verified)  # 6
print(result.missing_steps)   # []

CLI

tibet-edge info           # Concept overview
tibet-edge demo           # Full demo: seal, verify, tamper detection
tibet-edge profiles       # Sector profiles (automotive, medical, etc.)
tibet-edge seal fw.bin    # Seal a firmware file (demo mode if no file)
tibet-edge verify env.json  # Verify a firmware envelope

Use Cases

Sector Threat tibet-edge Response
Automotive OTA (Tesla, VW) Tampered ECU firmware via OTA Full build chain from git to ECU, dual-sign required
Medical Devices (insulin pumps) Unauthorized firmware modification FDA-compliant provenance, clinical trial reference
Consumer IoT (cameras, routers) Mirai-style botnet injection Minimum viable provenance, rejects unsigned builds
Industrial SCADA Stuxnet-style PLC manipulation OT-specific fields, air-gap compatible verification

Sector Profiles

tibet-edge profiles
Profile Required Steps Min Trust Dual Sign Max Age
automotive commit, compile, test, sign, package, release 0.95 Yes 90 days
medical commit, compile, test, clinical_review, sign, fda_submit, release 0.99 Yes 365 days
industrial commit, compile, test, sign, release 0.90 No 180 days
consumer_iot compile, sign, release 0.70 No 30 days

EU Cyber Resilience Act (CRA) Compliance

tibet-edge's firmware envelope provides the technical evidence required by the EU CRA:

  • Article 10(6): Identify and document vulnerabilities — ERACHTER layer records CVE references and patch intent
  • Article 10(9): Security updates with provenance — the envelope IS the provenance
  • Article 10(10): SBOM compatibility — build chain maps to SBOM components

TIBET Provenance Layers

Layer Firmware Content
ERIN Firmware version, hash, size
ERAAN Build chain steps, git commit, parent envelope
EROMHEEN Build server, compiler, OS, hardware
ERACHTER "Security patch CVE-xxxx", release intent

Target Implementations

  • Python — Reference implementation (this package)
  • C — Embedded library for constrained devices (planned)
  • Rust — Safety-critical embedded systems (planned)

Part of the TIBET Ecosystem

Package Purpose
tibet-core Protocol core
tibet-y2k38 Y2K38 Time Bridge
tibet-pol Process Integrity Checker
tibet-pqc Post-Quantum Crypto Router
tibet-overlay Identity Overlay
tibet-twin Digital Twin Guard
tibet-edge IoT Firmware Sealer

License

MIT — Humotica / J. van de Meent 2025

Authors

Credits

Designed by Jasper van de Meent. Built by Jasper and Root AI as part of HumoticaOS.


Stack-positie: Groep agentic · Bootstrap = OSAPI-handshake naar tibet + jis (fail → snaft-rule + tibet-pol-rapport) · ← tibet-iot · tibet-mesh → · See STACK.md · See demo/golden-path/ for the spine end-to-end.

Enterprise

For private hub hosting, SLA support, custom integrations, or compliance guidance:

Enterprise enterprise@humotica.com
Support support@humotica.com
Security security@humotica.com

See ENTERPRISE.md for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tibet_edge-0.1.1.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tibet_edge-0.1.1-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file tibet_edge-0.1.1.tar.gz.

File metadata

  • Download URL: tibet_edge-0.1.1.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for tibet_edge-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c09a9455bf59c48457c9225d82e438f35aa4849aeac4a68ca6a1dd2ca5f45311
MD5 504540c1b1c6c89b0b5d33a3ed7cc745
BLAKE2b-256 d6b4e1dc7c48235e67ab77d6857d3ad36711013eb28243709d4331be69219adc

See more details on using hashes here.

File details

Details for the file tibet_edge-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tibet_edge-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for tibet_edge-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 52946c4faae547f89b12f33c3a0bc298a9f77c96b6242a7cf2d1ca9d60629a3f
MD5 cd9db2845d44cdaa1fb97b17d794a7d4
BLAKE2b-256 18ad18965b9abeb68cb2852a23f3f4cfb36b72c35ed8f96f4a0388f5a6152ae3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page