Für Auditoren
Nachweise, die Sie testen können, statt ihnen zu glauben.
- Offline prüfenJeder signierte Eintrag lässt sich offline mit Standard-openssl prüfen, ohne Toevan-Software und ohne Konto.
- Sehen, wie jeder Fakt erhoben wurdeNeu berechnet, gemeldet, erklärt, übernommen oder nicht erfasst, bei jedem Fakt.
- Wissen, was nicht abgedeckt istJeder Bericht listet die Controls, die bei der Organisation bleiben.
Drei Wege zur Prüfung
Drei Wege zur Prüfung, einer davon offline mit Standard-openssl.
Wählen Sie den Weg, der zu Ihrer Rolle passt. Nur der dritte braucht Werkzeuge: Er prüft offline mit Standard-openssl, ohne Toevan-Software und ohne Konto.
1
In der App der Organisation
Jeder von der Organisation eingeladene Auditor
Eine Auditor-Rolle, kein Repository-Zugriff
Lesezugriff auf die Nachweisliste, die Exporte und die Berichte, mit „Jetzt prüfen“, um Ledger, Signaturen und Log-Belege erneut zu prüfen.
- Signatur gültig für jeden Eintrag
- Seit der Signatur unverändert
- Zeit protokolliert, wenn die Rekor-Verankerung aktiv ist
2
Der Organisation beim Prüfen zusehen
Übliche Tests anhand kundenerzeugter Berichte
Bildschirmfreigabe oder ein Besuch
Sie wählen die Stichproben während der Sitzung; ein Engineer führt die Prüfungen aus, während Sie zusehen.
- Prüfung der gezogenen Einträge
- Konten von Autor und Freigebendem je Stichprobe
- Das Code-Ergebnis für einen Commit Ihrer Wahl
3
Selbst ausführen
IT-Audit-Spezialisten
git, openssl und befristeter Lesezugriff; für die ganze Kette der Toevan-Verifier (auf Anfrage, noch nicht öffentlich)
Prüfen Sie jeden Eintrag offline mit gängigen Werkzeugen gegen den veröffentlichten Schlüssel. Um die ganze Kette nachzuspielen, stellt Toevan auf Anfrage den Befehl toevan bereit; er ist noch nicht öffentlich.
- Signatur und Eintrag, offline, mit openssl
- Spitzen des Evidence-Branches gegen den Bericht
- Unabhängigkeit anhand der Konto-IDs in jedem Eintrag
Die Prüfung, wie die README des Evidence-Branches Ihres Kunden sie druckt, nach Clone und Schlüssel-Download. Sie brauchen openssl (OpenSSL 3 oder neuer, oder das LibreSSL, das macOS mitliefert) und die Shell-Werkzeuge sed, wc, tr, cut, cat und printf in einer beliebigen POSIX-Shell. Von Toevan wird nichts benötigt.
- der Fingerabdruck des Schlüssels: vergleichen Sie ihn mit der Schlüssel-ID unter api.toevan.com/v1/public/evidence/keys
- die Signatur, über genau die Bytes, die signiert wurden (DSSE v1)
- die Eintragsdatei ist die, die das signierte Statement nennt
- worum es im Statement geht; vergleichen Sie es mit dem gewählten Eintrag
$ git clone --branch toevan/evidence <your-client's-repo> evidence && cd evidence
$ curl -o toevan.pub https://api.toevan.com/v1/public/evidence/keys/<key_id>.pem
$ ENV=attestations/<head_sha>/<record_id>.dsse.json
$ REC=records/<head_sha>/<record_id>.json
$ PUB=toevan.pub
$ openssl pkey -pubin -in "$PUB" -outform DER | openssl dgst -sha256
SHA2-256(stdin)= <key id>
$ T=$(sed -E 's/.*"payloadType":"([^"]*)".*/\1/' "$ENV")
$ sed -E 's/.*"payload":"([^"]*)".*/\1/' "$ENV" | openssl base64 -d -A > statement.json
$ sed -E 's/.*"sig":"([^"]*)".*/\1/' "$ENV" | openssl base64 -d -A > sig.der
$ { printf 'DSSEv1 %s %s %s ' "${#T}" "$T" "$(wc -c < statement.json | tr -d ' ')"; cat statement.json; } > pae.bin
$ openssl dgst -sha256 -verify "$PUB" -signature sig.der pae.bin
Verified OK
$ H=$(sed -E 's/.*"record_hash":"sha256:([0-9a-f]{64})".*/\1/' statement.json)
$ if [ "$(openssl dgst -sha256 -r "$REC" | cut -d' ' -f1)" = "$H" ]; then echo "record matches the statement"; else echo "RECORD DOES NOT MATCH THE STATEMENT"; fi
record matches the statement
$ printf 'record %s\n' "$(sed -nE 's/.*"record_id":"([^"]*)".*/\1/p' statement.json)"
record <the record id you picked>
$ printf 'subject %s\n' "$(sed -nE 's/.*"subject":\[\{"digest":\{"([^"]*)":"([^"]*)"\},"name":"([^"]*)"\}\].*/\3 \1:\2/p' statement.json)"
subject git+https://github.com/<owner>/<repository> gitCommit:<the commit you picked>
Die Envelope-Datei ist eine Zeile JSON, so wie Toevan sie schreibt; wurde sie umformatiert, bringen Sie sie zuerst wieder auf eine Zeile. Prüfen Sie den Schlüssel gegen die Schlüssel-ID, die Toevan unter api.toevan.com/v1/public/evidence/keys veröffentlicht und in jedem Bericht druckt.
Herkunft
Wie jeder Fakt erhoben wurde.
Jeder Fakt in einem Eintrag und einem Bericht trägt eines von sechs Labels, damit Ihr Auditor weiß, wie weit er sich darauf stützen kann.
- Neu berechnet
- Toevan hat es selbst aus Code oder Git-Historie berechnet. Mit denselben Eingaben nachvollziehen und dasselbe Ergebnis erhalten.
- Gemeldet + versiegelt
- GitHub hat es gemeldet; Toevan hat es beim Ereignis erfasst und signiert. Verlassen Sie sich darauf, soweit Sie GitHub vertrauen. Jede spätere Änderung ist erkennbar.
- Erklärt + versiegelt
- Die Organisation hat es erklärt, etwa eine Änderung dessen, was geprüft wird; Toevan hat die Erklärung und ihre Historie signiert. Sehen Sie, wer was wann erklärt hat, und jede spätere Änderung.
- Toevan-Eintrag, nicht versiegelt
- In der Datenbank von Toevan gespeichert, aber nicht im Ledger versiegelt, etwa eine Ausnahmegenehmigung heute. Keine Signatur schützt ihn. Behandeln Sie ihn als Aussage von Toevan und fragen Sie die Organisation nach der Freigabe dahinter.
- Übernommen
- Aus den Deployment- und Release-Einträgen von GitHub übernommen und per Commit oder Digest verknüpft. Den Originaleintrag in GitHub prüfen.
- Nicht erfasst
- Es gab keine verlässliche Quelle. Toevan schließt nichts daraus. Auf anderem Weg bei der Organisation einholen.
Was Sie erhalten
Vier Dateien, jede mit ihrem Hash.
Der SHA-256 jeder Datei ist aufgeführt, damit Sie bestätigen können, was Sie bekommen haben.
- Änderungsnachweis-Bericht
sha256:3f9a…c21ePDF - Einträge
sha256:[csv hash]CSV · gemergte Änderungen, Control-Änderungen, Stichproben - Öffentlicher Toevan-Schlüssel
sha256:[key hash]toevan.pub · keyid 8c1f…e0a2 - Toevan-Befehl
sha256:[binary hash]toevan audit verify · von Toevan auf Anfrage bereitgestellt, noch nicht öffentlich
Die Schlüssel-ID ist die, die Toevan unter api.toevan.com/v1/public/evidence/keys veröffentlicht und in jedem Bericht druckt.
Fragen von Auditoren
Wenn ein Kunde Ihnen Toevan-Nachweise übergibt, kommen meist diese Fragen zuerst.
Schreiben Sie unspilots@toevan.com
Die Einträge
4 FragenWas ist ein Toevan-Nachweiseintrag?
Eine signierte Aussage über ein einzelnes Ereignis. Heute ist das eine Code-Prüfung auf einem Pull Request oder auf main. Seit v1.4.0 gehören auch ein Merge, eine geänderte Review-Regel oder ein direkter Push dazu. Ein Änderungseintrag nennt den Pull Request, wer ihn verfasst, freigegeben und gemergt hat, die geltenden Checks und Regeln und die Code-Ergebnisse, jeder Fakt mit Label, wie er erhoben wurde. Personen erscheinen als Digests ihrer GitHub-Konten.
Technisch ist es ein in-toto-Statement mit dem SLSA-Verification-Summary-Prädikat in einem DSSE-Envelope, signiert mit ECDSA P-256; weitere Eintragsarten tragen ihre eigenen Prädikate. Die Verankerung im öffentlichen Rekor-Transparenz-Log von Sigstore ist eingebaut, als Opt-in je Organisation; veröffentlicht werden nur Eintrags-Hashes. Enterprise-Organisationen können auch in ihrem eigenen Rekor verankern.
Wann wird ein Eintrag geschrieben, und von wem?
Wenn das Ereignis eintritt: heute bei jeder Code-Prüfung, seit v1.4.0 bei jedem Merge eines Pull Requests in den Standard-Branch, jeder Änderung einer Review-Regel oder jedem Push, der das Review umgeht. Einträge werden nicht nachträglich aus Logs oder Tickets zusammengesetzt, daher bleibt keine Lücke zwischen Momentaufnahmen unbemerkt.
Was bedeuten die Labels an jedem Fakt?
Neu berechnete Fakten hat Toevan aus Code oder Git-Historie berechnet, und Sie können sie nachvollziehen. Gemeldet + versiegelte Fakten kamen von GitHub und wurden beim Ereignis signiert, Sie verlassen sich darauf, soweit Sie GitHub vertrauen. Erklärt + versiegelte Fakten, etwa eine Änderung dessen, was geprüft wird, hat die Organisation samt Historie erklärt. Ausnahmegenehmigungen sind Toevan-Einträge, die heute nicht im Ledger versiegelt sind, und der Bericht sagt das. Übernommene Fakten stammen aus den Deployment- und Release-Einträgen von GitHub und sind per Commit oder Digest verknüpft; prüfen Sie den Originaleintrag in GitHub. Nicht erfasst heißt: Es gab keine verlässliche Quelle, und Toevan schließt nichts daraus.
Ist das Code-Ergebnis deterministisch?
Ja. Regeln werden gegen den Code-Graphen des Repositories ausgewertet, ohne Machine-Learning-Modell in der Entscheidung. Derselbe Commit, dieselbe Engine-Version und dieselbe Regelsatz-Version ergeben immer dasselbe Ergebnis, sodass Sie eine gezogene Auswertung erneut laufen lassen und ein identisches Ergebnis erwarten können.
Prüfung
4 FragenWelche Werkzeuge prüfen die Nachweise?
In der App prüft „Jetzt prüfen“ die Hash-Kette, jede Signatur und die gespeicherten Belege erneut. Das läuft in Toevan.
Mit gängigen Werkzeugen und ohne Toevan-Konto prüft openssl einen Eintrag gegen die öffentliche Liste aller Schlüssel, mit denen Toevan signiert hat, aktuell und ausgemustert: die Signatur und dass die Eintragsdatei die ist, die das Statement nennt. Die Berichte und der Evidence-Branch drucken die Befehle, und Toevan dokumentiert eine cosign-v2-Zeile, die die Signatur und den Statement-Typ prüft, nicht die Bindung an den Eintrag.
Mit dem Toevan-Verifier, auf Anfrage bei Toevan erhältlich und noch nicht öffentlich, spielt ein Befehl die ganze Kette offline nach und prüft jede Signatur und jeden Rekor-Beleg.
Mit git lesen Sie die Nachweise auf einem per Hash verketteten, nur vorwärts geschriebenen Branch toevan/evidence im eigenen Repository des Kunden, und jeder Bericht trägt einen Inhalts-Digest, den SHA-256 des Manifests, das dem PDF beiliegt. Sie können außerdem die Grundgesamtheit der Änderungen mit git und der CSV-Datei des Berichts nachzählen.
Die Verankerung im öffentlichen Rekor-Transparenz-Log von Sigstore ist eingebaut, als Opt-in je Organisation; veröffentlicht werden nur Eintrags-Hashes. Signierte Gate-Urteile lassen sich auch in die Kosli-Trails des Kunden übertragen.
Wie teste ich die Vollständigkeit, nicht nur die Richtigkeit?
Der Änderungsnachweis-Bericht listet jeden Commit, der im Zeitraum den Standard-Branch erreicht hat, direkt aus der Git-Historie und ordnet jeden dem Eintrag des gemergten Pull Requests oder Pushes zu, der ihn dorthin gebracht hat. Ein Commit, den kein Eintrag erklärt, wird mit Grund markiert, nie erschlossen. Sie können die Grundgesamtheit mit git anhand der CSV-Datei der Grundgesamtheit selbst nachvollziehen. Jedes Deployment, das GitHub als Produktion kennzeichnet, wird mit dem ausgelieferten Commit verknüpft. Produktions-Branches, die die Organisation festlegt, etwa ein Release-Branch, erhalten dieselbe Grundgesamtheit, was geplant ist.
Wie werden auf Release-Branches kopierte Fixes behandelt?
Geplant. Ein kopierter Fix erhält eine neue Commit-ID, daher geht sein Review nicht automatisch mit. Toevan wird ihn per Inhalt mit git patch-id dem geprüften Original zuordnen und eine Kopie mit geändertem Inhalt als eigenes Review behandeln.
Was zeigt das öffentliche Transparenz-Log?
Die Verankerung im öffentlichen Rekor-Transparenz-Log von Sigstore ist eingebaut, als Opt-in je Organisation; veröffentlicht werden nur Eintrags-Hashes. Ein Eintrag zeigt nur, dass ein Eintrag mit einem bestimmten Hash zu einer bestimmten Zeit existierte: keinen Code, keine Dateinamen, keine Befunde. Enterprise-Organisationen können auch in ihrem eigenen Rekor verankern.
Umfang und Aufbewahrung
4 FragenWas bedeutet ein sauberer Bericht nicht?
Er bedeutet nicht, dass der Kunde das Framework einhält, und Toevan äußert keine Meinung dazu, ob Controls angemessen gestaltet sind oder wirksam arbeiten. Zugriffsprüfungen, Laufzeitüberwachung, Incident Response, Drittparteirisiko, physische Sicherheit und Änderungen außerhalb der Versionskontrolle brauchen Ihre üblichen Verfahren. Jeder Bericht listet sie auf.
Welche Versionskontrollsysteme sind abgedeckt?
Heute GitHub. GitLab und Bitbucket stehen auf der Roadmap. Änderungen außerhalb der Versionskontrolle, etwa direkt in Datenbank oder Konsole, liegen außerhalb der Nachweise.
Wo liegen die Nachweise, und wie lange?
In Toevans Append-only-Speicher, mindestens drei Jahre aufbewahrt (5, 7 oder 10 bei Enterprise), und als Kopie auf einem Branch im eigenen Repository des Kunden. Berichte lassen sich als PDF und CSV je Framework, Zeitraum und Repository exportieren.
Was, wenn der Kunde Toevan nicht mehr nutzt?
Die Kopie im Repository des Kunden bleibt, wo sie ist. Jeder signierte Eintrag lässt sich mit Standard-openssl gegen den veröffentlichten Schlüssel prüfen, mit den Befehlen auf dem Evidence-Branch, ohne Toevan-Software. Die Prüfung vergangener Einträge hängt nicht davon ab, dass Toevan den Dienst weiter betreibt. Die ganze Kette nachzuspielen braucht den Toevan-Verifier, auf Anfrage bei Toevan erhältlich und noch nicht öffentlich.
Gehen Sie mit uns die Nachweise eines Kunden durch.
Wenn Sie einen Toevan-Kunden prüfen, führen wir Sie in einem Call durch die Prüfung, mit Ihren eigenen Werkzeugen.
- Im Call, mit Ihren eigenen Werkzeugen
- Nur Lesezugriff, nichts ändert sich
- Ohne Toevan-Konto prüfbar