MainnetBlock …letzter Block …prüfe Kette…Was heißt das?
Alle News
·DOI Labs AG·3 Min. Lesezeit

Doichain Seal: Ein Siegel für jedes Software-Release

Eine GitHub Action verankert jede Veröffentlichung mit Repository, Tag und Commit in der Doichain. Ohne Konto, ohne Wallet, ohne Geheimnis im Repo, mit einem Siegel für die README und einer Prüfseite, auf der jeder einen Download gegen die Kette prüfen kann.

Doichain Seal, fälschungssichere Zeitstempel für Software-Releases. Kostenlose GitHub Action, Siegel für die README, Prüfseite für jeden.
Doichain Seal, fälschungssichere Zeitstempel für Software-Releases. Kostenlose GitHub Action, Siegel für die README, Prüfseite für jeden.

Wer Software veröffentlicht, verspricht etwas: Die Datei, die jemand morgen herunterlädt, ist dieselbe, die heute gebaut wurde. Prüfsummen in einer Textdatei und Signaturen belegen, dass ein Artefakt zu einem Schlüssel passt. Was sie nicht belegen, ist der Zeitpunkt. Wurde die Prüfsumme wirklich beim Release geschrieben oder erst nachträglich, als es darauf ankam? Genau diese Frage beantwortet Doichain Seal mit dem, was eine öffentliche Blockchain am besten kann: einem Zeitstempel, den niemand zurückdrehen kann.

Seit heute gibt es die GitHub Action neubuot/doichain-seal. Drei Zeilen im Release-Workflow genügen. Die Action berechnet den SHA-256 jeder Release-Datei und verankert ihn als Namen poe/<sha256> in der Doichain, zusammen mit Repository, Tag und Commit. Zurück kommt ein Siegel für die README und eine Prüfseite, auf der jeder einen Download gegen die Kette prüfen kann.

So funktioniert es

Vier Stationen: Release-Workflow baut die Dateien, GitHub stellt ein OIDC-Token mit Repository, Tag und Commit aus, die Doichain-API prüft das Token und verankert den Hash, zurück kommen Siegel und Prüfseite.
Die Dateien bleiben auf dem Runner. In die Doichain gehen nur Hash, Repository, Tag, Commit und Dateiname.
  1. Der Workflow baut das Release wie bisher. Die Action bekommt die Dateien genannt, zum Beispiel dist/* oder die SHA256SUMS, und berechnet lokal den SHA-256.
  2. GitHub bestätigt die Herkunft. Der Job fordert ein OIDC-Token an, das GitHub signiert und das Repository, Ref und Commit des Laufs bezeugt. Dafür braucht der Job nur die Berechtigung id-token: write. Ein Schlüssel oder ein Geheimnis im Repo ist nicht nötig.
  3. Die Doichain-API prüft und verankert. Sie prüft Signatur, Aussteller, Zielgruppe und Ablauf des Tokens und registriert den Namen poe/<sha256> mit dem Zusatzfeld gh (Repository, Ref, Commit) im Wert. Die Gebühren trägt DOI Labs.
  4. Siegel und Prüfseite. Nach dem nächsten Block zeigt das Siegel in der README Tag und Blockhöhe. Die Prüfseite nennt Hash, Block, Zeit, Transaktion und die geprüfte Herkunft, dazu die Anleitung, wie man das mit sha256sum und einer beliebigen Doichain-Node selbst nachrechnet.

Was das Siegel beweist

  • Existenz und Zeitpunkt. Eine Datei mit genau diesem SHA-256 existierte spätestens zur Zeit des Blocks, der das Siegel enthält.
  • Herkunft. Repository, Ref und Commit stammen aus dem von GitHub signierten Token, nicht aus einer Angabe des Absenders. Die Prüfseite kennzeichnet solche Siegel als geprüfte Herkunft, weil der Name vom Wallet der API geschrieben wurde.
  • Unabhängigkeit. Der Beweis liegt auf einer öffentlichen Blockchain. Er lässt sich mit jeder Doichain-Node, mit der Doichain-API, mit Verifile oder über den MCP-Server prüfen. Verschwindet der Dienst, bleibt der Beweis.

Was das Siegel nicht ersetzt: eine Signatur mit dem Schlüssel des Projekts. Sigstore und GPG beantworten die Frage wer, das Siegel beantwortet wann und was. Beides zusammen ergibt die vollständige Herkunftskette. Namen auf der Doichain laufen nach 36.000 Blöcken ab, rund 250 Tage, der Zeitstempel bleibt für immer in der Kettenhistorie, und die Prüfseite zeigt stets die erste Verankerung.

In drei Zeilen eingebaut

permissions:
  contents: read
  id-token: write      # damit sich der Job beim Siegeldienst ausweisen kann

steps:
  - uses: actions/checkout@v4
  - run: ./build.sh                    # erzeugt dist/*
  - uses: neubuot/doichain-seal@v1
    with:
      files: dist/*

Danach das Siegel in die README, den fertigen Schnipsel schreibt die Action in die Zusammenfassung des Jobs:

[![Doichain Seal](https://doi-api.sendlabs.de/seal/github/OWNER/REPO/seal.svg)](https://doi-api.sendlabs.de/seal/github/OWNER/REPO)

Das Siegel zeigt den Tag des neuesten Releases, die Blockhöhe und das Datum. Wer es lieber kompakt mag, nimmt badge.svg im Stil der üblichen README-Abzeichen.

Der erste Nutzer ist die Action selbst

Bei jedem Release packt die Action ihren eigenen Quellbaum, hängt ihn an das GitHub-Release und versiegelt ihn. Das erste Siegel liegt in Block 436044 der Doichain, prüfbar unter doi-api.sendlabs.de/seal/github/neubuot/doichain-seal. Die Repos von DOI Labs ziehen nach, dieser Hub eingeschlossen.

Grenzen und Spielregeln

Kostenlos im Rahmen von 20 Siegeln je Repository und Tag und 300 je Tag für alle. Repository, Tag, Commit und Dateiname sind öffentlich auf der Kette, die Datei selbst verlässt den Runner nicht. Wer den Dienst selbst betreiben will, findet die Siegel-Endpunkte in der offenen Doichain-API und stellt die Action mit api-url auf die eigene Adresse um.

Weiterlesen

Doichain Hub durchsuchen