Arxi Docs

Documentació de gravació de proves i evidències que mostren manipulació.

Altres documents de producte

Model d’Evidència Arxi i Arquitectura d’Integritat

Audience: Engineers implementing envelope ingestion, hashing, signing, Audiència: Enginyers que implementen la ingestió d’envelopes, hashing, signatura i verificació d’integritat.


Taula de continguts

  1. Visió Executiva
  2. Identitat i Primitives d’Esquema
  3. Model d’Envolupament i Segmentació
  4. Codificació i Hashing Canònics
  5. Integritat de l’Adjunt
  6. Model de Signatura
  7. Resultat de Verificació d’Àlgebra
  8. File per Fitxer Referència Creuada

Executive Overview

La integritat d’Arxi es basa en bytes canònics més enllaç criptogràfic:

  • hashes de contingut de sobre sobre vistes hashables canonitzades de 11 camps,
  • hashes de cadena que vinculen cada sobre amb l’estat anterior,
  • enllaç de segment genesis i cadena predecessor capçalera,
  • signatures d’envelopa opcionals sobre bytes de hash de contingut.

F:crates/arxi-envelope/src/envelope.rs L46-L92 F:crates/arxi-envelope/src/encoding.rs L252-L296 F:crates/arxi-envelope/src/segment.rs L39-L66


Identitat i Primitives d’Esquema

  • IDs basats en UUIDv7: EnvelopeId, SegmentId, BundleId.
  • IDs de cadena amb validació: EventType, ActorId, EnvironmentId, etc.
  • String-backed IDs fail closed on empty, whitespace-only, and Els IDs basats en cadenes fallen tancats amb entrades buides, només amb espais en blanc i caràcters de control.
  • String-backed IDs enforce explicit max-length bounds (256 for Els IDs basats en cadenes imposen límits màxims de longitud explícits (256 per a trace/session/actor/environment, 128 per a IDs d’esdeveniments/adaptadors).
  • String-backed ID serde paths are constructor-validated so hostile JSON cannot Els camins de serialització d’ID basats en cadenes són validats pel constructor, de manera que JSON hostil no pot eludir les invariants.
  • KeyId is strict canonical lowercase hex(SHA-256(public_key_bytes)) KeyId és estrictament canònic en minúscules hex(SHA-256(public_key_bytes)) (64 caràcters).
  • SchemaVersion és explícit i actualment fixat a 1 (CURRENT_SCHEMA_VERSION).

F:crates/arxi-core/src/identity.rs L31-L55 F:crates/arxi-core/src/identity.rs L205-L647 F:crates/arxi-core/src/schema.rs L24-L49


Model d’Envolupament i Segmentació

Estats de l’envolupant

  • UnsealedEnvelope: camps hashables proporcionats per l’adaptador.
  • Envelope: recorder-sealed record with content_hash, chain_hash, Envelope: registre segellat amb content_hash, chain_hash, sequence, segment_id i signatura opcional.

F:crates/arxi-envelope/src/envelope.rs L98-L131 F:crates/arxi-envelope/src/envelope.rs L46-L92

Invariants del constructor

EnvelopeBuilder imposa camps requerits, temps de reclamació UTC i ordenació d’adjunts determinista abans de produir un UnsealedEnvelope. F:crates/arxi-envelope/src/envelope.rs L284-L328

Estructura del segment

SegmentGenesis és metadades estructurals (no un sobre) i ancla el càlcul de primera cadena; els camps predecessors han de ser establerts conjuntament o absents. recorder_id està limitat per la mateixa longitud màxima que ActorId i els camins de deserialització són validats pel constructor. F:crates/arxi-envelope/src/segment.rs L39-L109

SealRecord captura l’estat del segment final i la taxonomia SealReason. F:crates/arxi-envelope/src/segment.rs L116-L170


Codificació i Hashing Canònics

Arxi utilitza JCS (serde_jcs) sobre estructures de vista privades i hashables. Invariants importants:

  • None s serialitza com null en la sortida canònica.
  • les marques de temps utilitzen un format fix de 9 dígits en nanosegons UTC.
  • les referències d’adjunció estan ordenades per hash hex en vistes canòniques.

F:crates/arxi-envelope/src/encoding.rs L19-L31 F:crates/arxi-envelope/src/encoding.rs L48-L77 F:crates/arxi-envelope/src/encoding.rs L148-L162

Model de hash:

  • content_hash = H(canonical_bytes)
  • chain_hash = H(prev_chain_hash || content_hash)
  • el primer sobre en el segment utilitza H(segment_genesis_hash || content_hash)

F:crates/arxi-envelope/src/encoding.rs L239-L246 F:crates/arxi-envelope/src/encoding.rs L262-L273 F:crates/arxi-envelope/src/encoding.rs L285-L296

Les funcions hash són identificades per algoritmes i es poden connectar mitjançant HashFunction. L’actual per defecte és Sha256HashFunction. F:crates/arxi-core/src/hash.rs L200-L274


Integritat de l’Adjunt

Dues representacions d’adjunt:

  • AttachmentData: bytes en línia presentats a l’ingest.
  • AttachmentRef: metadades adreçades al contingut incrustades en sobres.

AttachmentRef i AttachmentData rebutgen valors content_type buits, només amb espais i que continguin caràcters de control, imposen una longitud màxima (255) i deserialitzen AttachmentRef mitjançant la validació del constructor. AttachmentData també requereix bytes no buits. F:crates/arxi-envelope/src/attachment.rs L35-L85 F:crates/arxi-envelope/src/attachment.rs L99-L133


Model de Signatura

Contracte bàsic:

  • EnvelopeSigner signa content_hash bytes.
  • SignatureVerifier verifica els bytes del missatge sota claus específiques d’algoritme.
  • TrustRoot and TrustPolicy define trusted key material and signature TrustRoot i TrustPolicy defineixen material de clau de confiança i política d’acceptació de signatures (AnyTrustedKey, AllMustSign, Threshold).

F:crates/arxi-core/src/signature.rs L131-L270 F:crates/arxi-core/src/signature.rs L301-L337

Implementació actual:

  • Ed25519Signer derives key ID as hex(SHA-256(public_key_bytes)) and signs content_hash. Ed25519Signer deriva l’ID de la clau com hex(SHA-256(public_key_bytes)) i signa content_hash. F:crates/arxi-envelope/src/signer.rs L68-L113
  • Ed25519SignatureVerifier uses strict verification. Ed25519SignatureVerifier utilitza una verificació estricta. F:crates/arxi-envelope/src/signature.rs L32-L95
  • Verifier phase 6 uses trust-root lookup + algorithm dispatch and applies policy checks after per-envelope signature validation. Verifier la fase 6 utilitza la cerca de trust-root + despach d’algorismes i aplica comprovacions de política després de la validació de la signatura per sobre. F:crates/arxi-recorder/src/verifier.rs L509-L651

Resultat de Verificació Àlgebra

arxi-envelope defineix tipus de dades de verificació, mentre que la verificació algorítmica s’executa en arxi-recorder.

Estructures clau:

  • VerificationManifest i ManifestSegmentEntry
  • VerificationVerdict i VerdictStatus
  • ComprovacióResultat, ComprovacióTipus, i comprovacions especialitzades de cadena/segment creuat/signatura
  • VerificationWarning per a troballes no fatals

F:crates/arxi-envelope/src/verification.rs L39-L79 F:crates/arxi-envelope/src/verification.rs L85-L132 F:crates/arxi-envelope/src/verification.rs L189-L266


File per Fitxer Referència Creuada

ÀreaFitxerNotes
Contractes d’identitatcrates/arxi-core/src/identity.rsValidació d’ID i nous tipus de serialització estables.
Contractes de hashcrates/arxi-core/src/hash.rsTipus de hash, igualtat en temps constant, registre d’algorismes.
Contractes de signaturacrates/arxi-core/src/signature.rsTraits de signant/verificador i forma de signatura d’envolta.
Model d’envoltacrates/arxi-envelope/src/envelope.rsFormularis segellats/no segellats i invariants de constructor.
Codificació canònicacrates/arxi-envelope/src/encoding.rsBytes canònics JCS i fórmules de cadena.
Model de segmentcrates/arxi-envelope/src/segment.rsMetadades de gènesi i segell.
Adjuntscrates/arxi-envelope/src/attachment.rsReferències d’adjunts adreçades al contingut.
Model de verificaciócrates/arxi-envelope/src/verification.rsÀlgebra de veredicte i resultat de comprovació.
Verificació Ed25519crates/arxi-envelope/src/signature.rsImplementació estricta de verificació de signatura.
Signatura Ed25519crates/arxi-envelope/src/signer.rsImplementació de signatura d’envolta.