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
- Visió Executiva
- Identitat i Primitives d’Esquema
- Model d’Envolupament i Segmentació
- Codificació i Hashing Canònics
- Integritat de l’Adjunt
- Model de Signatura
- Resultat de Verificació d’Àlgebra
- 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 (
256for Els IDs basats en cadenes imposen límits màxims de longitud explícits (256per a trace/session/actor/environment,128per 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.
KeyIdis strict canonical lowercasehex(SHA-256(public_key_bytes))KeyIdés estrictament canònic en minúsculeshex(SHA-256(public_key_bytes))(64 caràcters).SchemaVersionés explícit i actualment fixat a1(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 withcontent_hash,chain_hash,Envelope: registre segellat ambcontent_hash,chain_hash,sequence,segment_idi 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:
Nones serialitza comnullen 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:
EnvelopeSignersignacontent_hashbytes.SignatureVerifierverifica els bytes del missatge sota claus específiques d’algoritme.TrustRootandTrustPolicydefine trusted key material and signatureTrustRootiTrustPolicydefineixen 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:
Ed25519Signerderives key ID ashex(SHA-256(public_key_bytes))and signscontent_hash.Ed25519Signerderiva l’ID de la clau comhex(SHA-256(public_key_bytes))i signacontent_hash. F:crates/arxi-envelope/src/signer.rs L68-L113Ed25519SignatureVerifieruses strict verification.Ed25519SignatureVerifierutilitza una verificació estricta. F:crates/arxi-envelope/src/signature.rs L32-L95Verifierphase 6 uses trust-root lookup + algorithm dispatch and applies policy checks after per-envelope signature validation.Verifierla 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:
VerificationManifestiManifestSegmentEntryVerificationVerdictiVerdictStatusComprovacióResultat,ComprovacióTipus, i comprovacions especialitzades de cadena/segment creuat/signaturaVerificationWarningper 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
| Àrea | Fitxer | Notes |
|---|---|---|
| Contractes d’identitat | crates/arxi-core/src/identity.rs | Validació d’ID i nous tipus de serialització estables. |
| Contractes de hash | crates/arxi-core/src/hash.rs | Tipus de hash, igualtat en temps constant, registre d’algorismes. |
| Contractes de signatura | crates/arxi-core/src/signature.rs | Traits de signant/verificador i forma de signatura d’envolta. |
| Model d’envolta | crates/arxi-envelope/src/envelope.rs | Formularis segellats/no segellats i invariants de constructor. |
| Codificació canònica | crates/arxi-envelope/src/encoding.rs | Bytes canònics JCS i fórmules de cadena. |
| Model de segment | crates/arxi-envelope/src/segment.rs | Metadades de gènesi i segell. |
| Adjunts | crates/arxi-envelope/src/attachment.rs | Referències d’adjunts adreçades al contingut. |
| Model de verificació | crates/arxi-envelope/src/verification.rs | Àlgebra de veredicte i resultat de comprovació. |
| Verificació Ed25519 | crates/arxi-envelope/src/signature.rs | Implementació estricta de verificació de signatura. |
| Signatura Ed25519 | crates/arxi-envelope/src/signer.rs | Implementació de signatura d’envolta. |