
Gateway per la governance e l'evidenza dell'IA per applicazioni LLM multi-provider. FastAPI + core Rust opzionale per policy, WAF, egress, limiti di frequenza, sessioni, evidenza durevole firmata e percorsi di errore fail-closed. Self-hosted; nessuna certificazione o rivendicazione di SLO.
Gateway di governance e prove per applicazioni LLM multi-provider.
Aegis Latent Core è un gateway compatibile con OpenAI che applica policy di richiesta, WAF, egress, rate-limit e controlli di sessione prima di inoltrare il traffico a un provider di modelli a monte. Per il traffico governato, costruisce un record di prova canonico, firma il record, lo committa a un write-ahead log durevole ed espone lo stato della prova al chiamante. L'arricchimento opzionale della risposta viene eseguito dietro una coda con limite di capacità e non sostituisce mai il commit di prova autorevole.
Confine del prodotto: Aegis è un gateway di governance e prove per l'AI. Non è un LLM, un WAF universale, una certificazione di conformità, una sentenza di ammissibilità legale, un SLO di produzione o un sostituto per i controlli di rete, identità, privacy, conservazione o risposta agli incidenti.
Ultima verifica: 2026-08-25 UTC
Baseline di rilascio: v3.1.0 pubblicata
Baseline sorgente unita: 2050a310ec295afc61d033ff842c9a535a4f3105 (PR #112; quattordici anchor di versione sincronizzate a 4.0.0)
La baseline di rilascio pubblico immutabile è v3.1.0. Il commit 2050a310ec295afc61d033ff842c9a535a4f3105 è la baseline sorgente v4 unita; il suo contratto di rilascio sorgente riporta tutti i quattordici anchor di versione sincronizzati a 4.0.0. Lo streaming SSE con prove pending-terminal limitate, l'endpoint nativo Anthropic POST /v1/messages, gli SDK Python e TypeScript, le prove MMR portabili, la dashboard forense e l'esportazione ZIP, il segmento di stream ausiliario RustWal e il benchmark SSE sono capacità della sorgente unita; non sono attribuite al tag v3.1.0.
La sorgente unita rimane non rilasciata e non pubblicata. Al momento dell'audit del 2026-08-25 non esistevano tag v4.0.0, GitHub Release, pubblicazione PyPI o pubblicazione npm. Le prove di rilascio e le prove di implementazione della sorgente devono essere valutate separatamente. Il checker di prontezza al rilascio valuta solo i contratti della sorgente: non dimostra un tag, l'approvazione dell'ambiente GitHub, il percorso di fiducia del firmatario, la policy del registry, l'attestazione degli artefatti, il runtime multi-architettura o l'accettazione esterna.
Aegis è pensato per team di piattaforma, sicurezza applicativa e ingegneria AI che operano con più di un provider di modelli o che richiedono prove indipendenti dal provider per il traffico AI governato. Il focus commerciale iniziale è su team di piattaforma B2B SaaS, fintech e imprese regolamentate che necessitano di distribuzione privata e prove verificabili, ma non chiedono a questo repository di diventare un prodotto universale di autorizzazione o certificazione.
Il comitato acquirente rilevante include tipicamente il CISO o il responsabile AppSec, l'ingegneria di piattaforma, l'ingegneria AI/ML, conformità o legale, procurement e uno sponsor esecutivo. La sequenza di prova consigliata è valutazione locale → replay delle prove → pilota controllato → revisione di sicurezza → pacchetto di procurement → rollout di produzione.
I log di accesso standard possono mostrare che una chiamata API è avvenuta. Da soli, non stabiliscono gli hash esatti di richiesta e risposta governati, il percorso della policy, il confine del commit di prova, lo schema di firma, il predecessore della catena o se la richiesta è stata rifiutata prima o dopo il confine della prova. Aegis rende queste transizioni esplicite e verificabili sotto i controlli di distribuzione dichiarati.
sequenceDiagram participant C as Client participant A as Aegis Gateway participant W as Policy/WAF/Egress participant U as Upstream Model participant L as Signed WAL participant Q as Bounded Enrichment
C->>A: Authenticated OpenAI-compatible or Anthropic request
A->>W: Size, canonicalization, WAF, session, rate-limit
W-->>C: Fail-closed response + durable error evidence when rejected
W->>U: Forward only after admission
U-->>A: Complete response or bounded SSE events
A->>L: Non-stream: hash, sign, append, flush, fsync
L-->>A: Non-stream durable evidence status
A->>Q: Optional bounded response analysis
A-->>C: Non-stream response + portable MMR proof headers
A-->>C: Stream events through bounded queue
A->>L: Stream terminal summary, sign, append, flush, fsync
L-->>A: Terminal commit complete
A-->>C: Protocol terminal marker
Il ciclo di vita rigoroso è:
1. Autenticare il chiamante e assegnare un identificatore di richiesta.
2. Applicare i limiti di dimensione della richiesta e canonicalizzare la rappresentazione della richiesta.
3. Applicare i controlli WAF, comportamento di sessione, egress e limitazione della frequenza.
4. Rifiutare in caso di mancato controllo obbligatorio invece di indebolire silenziosamente il percorso di sicurezza.
5. Inoltrare al provider upstream configurato.
6. Per le chiamate non in streaming, acquisire la risposta, calcolare hash canonici, firmare le prove, aggiungere al WAL, eseguire il flush e `fsync` prima di restituirla.
7. Per le chiamate SSE, inoltrare eventi logici sanitizzati attraverso una coda limitata con contabilità dei byte. Hash incrementale dei byte esatti emessi; alla terminazione, impegnare un riepilogo terminale firmato prima di emettere il marcatore terminale del protocollo. L'header iniziale di streaming è quindi `X-Aegis-Evidence-Status: pending-terminal`, non `durable`.
8. Eseguire l'arricchimento opzionale della risposta attraverso un percorso worker limitato dopo che il record autorevole esiste.
## Contratto principale
| Controllo | Comportamento implementato | Prove e confine |
|---|---|---|
| Durabilità delle prove | Per le chiamate governate non in streaming, il proxy principale impegna le prove di richiesta/risposta prima di restituire ed emette `X-Aegis-Evidence-Status: durable`. Lo streaming SSE inizia con `pending-terminal`; un riepilogo terminale firmato viene impegnato prima del marcatore terminale del protocollo e la prova viene recuperata dopo la terminazione. | `tests/test_p0_release_gates.py`, `tests/test_proxy_streaming.py`, test del percorso di errore del proxy e test di integrità WAL. Il filesystem di destinazione e il provider di storage richiedono ancora la validazione di deployment. |
| Errori terminali durevoli | Le risposte upstream non-2xx, i percorsi di circuito aperto e i guasti di rete utilizzano il percorso di prove di errore durevoli quando il confine delle prove è disponibile. | `tests/test_enterprise_durable_evidence.py` e prove della release v3.1.0. Un errore di storage dopo l'ammissione è un incidente operativo fail-closed, non una risposta riuscita. |
| Integrità della catena | I nodi di audit collegano predecessore, hash della richiesta, hash della risposta, radice Merkle, firma e metadati dello schema. | `aegis/core/crypto_audit.py` e `verify_integrity()`. Il rilevamento di manomissioni non equivale a storage esterno immutabile. |
| Firma forte | I ledger rigorosi rifiutano il fallback Ed25519 effimero. HMAC-SHA256, PKCS#11 configurato o firma nativa configurata devono soddisfare la policy selezionata; la vecchia interfaccia HSM ora fallisce in modalità chiusa invece di derivare una chiave software. | Test del firmatario e gate di avvio rigorosi. I test PKCS#11 simulati sono solo prove dell'adattatore, HMAC è simmetrico e non è stabilita alcuna interoperabilità HSM, non-esportabilità delle chiavi, validazione FIPS o non-ripudio di terze parti. |
| Rotazione delle chiavi | Il firmatario enterprise supporta un portachiavi HMAC atomico e versionato con una chiave attiva, chiavi di verifica storiche, scadenza esplicita e metadati `key_id` non segreti. | `aegis_server/crypto/keyring.py`, `tests/test_keyring_rotation.py`. Le prove di deployment a tre repliche rimangono necessarie per un'affermazione di produzione. |
| Limitazione della frequenza | La limitazione distribuita basata su Redis fallisce in modalità chiusa quando il backend non è disponibile; la limitazione in memoria di sviluppo non è un sostituto di produzione. | Test del limitatore di frequenza e configurazione di deployment. Il comportamento Redis/TLS/HA dipende dal deployment. |
| Identità enterprise e binding del tenant | Il candidato non rilasciato deriva principal immutabili da mapping di chiavi API configurati, claim OIDC rigorosi o certificati mTLS esplicitamente fissati. Gli header tenant/sessione non selezionano il tenant delle prove o la chiave di quota. | `aegis/auth/`, `aegis/proxy/dependencies.py` e test di integrazione dell'autenticazione. IdP, terminatore TLS, ciclo di vita dei certificati e accettazione Redis rimangono dipendenti dal deployment; la sorgente mTLS attuale è in modalità leaf-pin, non validazione PKI universale. |
| Archiviazione dei segmenti finalizzati | I segmenti WAL JSONL ruotati ricevono manifest versionati e possono essere caricati tramite l'adattatore opzionale S3 Object Lock con verifica SHA-256, versione, modalità di blocco e conservazione. L'accettazione opzionale RFC 3161 richiede verifica OpenSSL contro un file CA esplicito. | `aegis/storage/`, `aegis/anchoring/` e test mirati. Questo non è un WORM normativo, una garanzia di ammissibilità legale o di tempo esterno senza accettazione di destinazione. |
| Telemetria privacy-safe | Gli eventi di sicurezza a schema chiuso omettono testo di prompt/risposta/token, embedding, identificatori grezzi di tenant/sessione, nomi dei firmatari e stringhe di eccezione; uno spool SQLite opzionale limitato esporta verso codifiche SIEM supportate. | `aegis/telemetry/` e test sentinella della privacy. Consegna a valle, conservazione, controllo accessi e SLO operativi sono esterni. |
| Report delle capacità | `aegis.crypto` espone un inventario leggibile da macchina che distingue stati implementati, runtime opzionale, stub e validazione esterna richiesta. | `aegis/crypto/capabilities.py` e test mirati. L'attuale API ZK è uno stub di test non reale, le prove MMR portabili crescono O(log n) e non è rivendicata alcuna validazione FIPS. |
| Confine di attestazione TEE | I nodi dispositivo TEE sono segnalati solo come scoperta. I report legacy scritti dal chiamante sono rifiutati; un verificatore iniettato può fornire claim normalizzati autenticati per la valutazione della policy di misurazione esatta, firmatario, nonce, freschezza, debug, TCB e dati di report. | `aegis/core/tee_manager.py` e test dei moduli hardware. Il repository non implementa un loader enclave, parsing delle quote del fornitore, validazione di certificati/collaterali, riservatezza dell'host root o accettazione di attestazione di destinazione. |
| Confine di privacy differenziale | Un primitivo interno di conteggio Laplace usa sensibilità uno e un CSPRNG di sistema per una singola release sotto adiacenza add/remove-one-record. | `aegis/core/dp_analytics.py` e test deterministici. Nessun endpoint HTTP DP è pubblicato; release ripetute richiedono un contabile durevole, identità stabile di dataset/query, memoizzazione e limiti di contribuzione revisionati che non sono implementati qui. |
| Confine delle capacità di fuzzing | Il fuzzing è disponibile solo quando esistono `cargo`, `cargo-fuzz`, un workspace privato, un manifest analizzabile limitato e tutti i file target regolari confinati esatti; lo stato di esecuzione distingue pulito, artefatto di crash, errore dello strumento, timeout e non disponibile. | `aegis/core/fuzzing_harness.py` e test mirati. L'albero attuale non ha un workspace cargo-fuzz o un harness Kani, la copertura misurata rimane non disponibile e i test limitati non sono una prova esaustiva. |
| Contesto AI consultivo | `AGENTS.md`, `llms.txt` e `.aegis_ai_context/` forniscono navigazione del repository e confini delle affermazioni per gli assistenti di codifica. | Questi file sono dati consultivi: non possono sovrascrivere l'autorizzazione, stabilire il comportamento runtime o trasformare il sorgente unito in una release. |
| Limiti della richiesta | I body sovradimensionati sono rifiutati prima dell'elaborazione normale dell'applicazione. | Test di release P0/P1. I limiti devono essere dimensionati per il provider distribuito e la policy di streaming. |
| WAF | Normalizzazione NFKC, rimozione degli zero-width, blocchi di pattern critici, guardia di profondità strutturale e analisi locale ponderata vengono eseguiti al confine dell'applicazione. | `tests/data/waf_corpus_v1.json` e `tools/security/run_waf_corpus.py`. Il parsing HTTP/2 in ingresso è al di fuori del confine dell'applicazione. |
| Egress | Le allowlist canoniche rifiutano schemi, userinfo, porte malformate, forme non supportate ed endpoint non approvati. | `aegis/proxy/egress_guard.py` e test. Questo non sostituisce firewall, namespace, NetworkPolicy o controlli egress cloud. |
| Controlli del kernel | L'avvio rigoroso può richiedere capacità Seccomp e LSM/AppArmor/SELinux e rifiuta l'enforcement mancante al di fuori della modalità sandbox esplicita. | `aegis/core/seccomp_guard.py`, `aegis/core/lsm_guard.py`, test di deployment. Il kernel di destinazione richiede ancora test di accettazione. |
| Arricchimento della risposta | L'analisi è limitata, osservabile e serializzata per sessione dove richiesto. È opzionale e non può indebolire il contratto di prove durevoli. | Test di analizzatori e code. Il comportamento della coda sotto saturazione I/O reale è descritto nel runbook di backpressure. |
| Prova di inclusione portabile | Ogni nuovo record del ledger memorizza una prova `aegis-mmr-inclusion-v1` autocontenuta, digest foglia, picchi ordinati e radice. Le risposte non in streaming restituiscono queste come header `X-Aegis-MMR-*`; le chiamate in streaming espongono un link di prova post-terminale autenticato. | Vettori golden cross-language e test di replay/manomissione WAL. Una prova valida stabilisce l'inclusione nella radice MMR dichiarata; non stabilisce da sola timestamping esterno, conservazione o ammissibilità legale. |
## Avvio rapido per valutazione locale
Il percorso locale è per sviluppo, test e replay delle prove. Non è un profilo di deployment di produzione.```bash
git clone https://github.com/JuanLunaIA/aegis-latent-core.git
cd aegis-latent-core
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --require-hashes -r requirements.lock
python -m pip install --no-deps -e .
python -m compileall -q aegis aegis_server
pytest -q
Per un gateway minimale di checkout della sorgente, usa il punto di ingresso console dichiarato aegis con un upstream locale o simulato:```bash
export AEGIS_SECURITY_ENFORCEMENT_MODE=development
export AEGIS_DEBUG_MODE=true
export AEGIS_AUTH_DISABLED=true
export AEGIS_BACKEND_URL='http://127.0.0.1:9001/v1'
export AEGIS_WAL_PATH='/tmp/aegis-evaluation.wal.jsonl'
aegis
`development` è l'unica modalità non-strict accettata nel modello di impostazioni corrente; il valore precedente `permissive` e il comando `uvicorn aegis.main:app` sono obsoleti. Non inserire mai chiavi di provider, bearer token, segreti di firma, record WAL o payload dei clienti nel controllo del codice sorgente.
## SDK con sorgente unificata
La distribuzione Python con sorgente unificata in [`sdk/python`](https://github.com/juanlunaia/aegis-latent-core/blob/HEAD/sdk/python) è un'integrazione drop-in che sottoclassa i client ufficiali OpenAI e Anthropic. I tipi di modelli di richiesta/risposta esistenti e le API di risorse sync/async vengono preservati mentre le intestazioni Aegis di tenant, sessione e bearer-auth vengono iniettate in fase di costruzione. L'ingresso nativo `/v1/messages` di Anthropic richiede `AEGIS_PROVIDER=anthropic`; preserva la forma della risposta Anthropic Messages invece di tradurla in oggetti OpenAI.
Il pacchetto TypeScript con sorgente unificata compatibile con edge in [`sdk/typescript`](https://github.com/juanlunaia/aegis-latent-core/blob/HEAD/sdk/typescript) verifica le prove `aegis-mmr-inclusion-v1` con Web Crypto e fornisce wrapper nativi del provider e opzioni del costruttore anziché ridichiarare i payload del provider. I pacchetti ufficiali OpenAI e Anthropic sono dipendenze peer, quindi le loro risorse native, i parametri di richiesta, i modelli di risposta, gli iteratori di streaming, i retry e i tipi di errore rimangono autorevoli. Entrambi gli SDK consumano gli stessi vettori di prova congelati in `sdk/shared/`.
Il candidato SDK Python non ancora rilasciato include anche adattatori di callback LangChain e LlamaIndex con privacy minimizzata. I flussi di pubblicazione sono disabilitati a meno che non siano configurati i prerequisiti esterni di trusted-publisher, ambiente, tag firmati e variabili di repository. Vedi [`docs/DEVELOPER_INTEGRATIONS_GUIDE.md`](https://github.com/juanlunaia/aegis-latent-core/blob/HEAD/docs/DEVELOPER_INTEGRATIONS_GUIDE.md).```python
from aegis_sdk.openai import OpenAI
client = OpenAI(
aegis_api_key="gateway-token",
gateway_url="https://aegis.internal",
tenant_id="tenant-42",
)
response = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[{"role": "user", "content": "hello"}],
)
La verifica delle prove è opzionale perché i chiamanti devono ottenere la radice MMR attendibile tramite un canale approvato in modo indipendente. Abilitare la verifica fidandosi della radice proveniente dalla stessa risposta non attendibile rileverebbe la corruzione ma non fornirebbe un'ancora di fiducia indipendente.
La dashboard a sorgente unificata è un'interfaccia Next.js 16 e React 19 di sola lettura. Visualizza esclusivamente dati autenticati del gateway: salute generale, un registro a finestra conservata filtrabile, proiezioni canoniche dei nodi JCS e DAG-CBOR con identificatori CIDv1, un verificatore MMR interattivo con una sandbox Web Crypto locale, metriche live derivate da Prometheus e un flusso di lavoro di esportazione forense limitato. Non contiene dati di esempio di riserva.```bash
cd sdk/typescript && npm ci && npm run build
cd ../../dashboard && npm ci
export AEGIS_PRIMARY_BASE_URL='https://aegis.internal'
export AEGIS_DASHBOARD_API_KEY='retrieve-from-your-secret-manager'
npm run dev
`AEGIS_DASHBOARD_API_KEY` è solo lato server e non viene mai serializzato nei bundle del browser. L'endpoint di esportazione richiede lo scope `audit:export` quando sono configurati scope per-chiave. Ogni ZIP delimitato contiene un `manifest.json` RFC 8785 JCS, un `ledger_slice.cbor` canonico DAG-CBOR identificato da CIDv1, `merkle_proof.json`, `audit_certificate.pdf` e `VERIFY.sh`. Il certificato è un report tecnico di integrità, non una certificazione o una conclusione di ammissibilità legale.
## Percorso di distribuzione rigoroso
La modalità rigorosa è la postura di produzione prevista. Richiede autenticazione, prove durevoli, firma forte, corpi di richiesta limitati, un backend di rate-limit distribuito, storage durevole e i controlli del kernel configurati. Utilizza un secret manager e monta il WAL su un percorso durevole e leggibile dal proprietario.```bash
export AEGIS_SECURITY_ENFORCEMENT_MODE=strict
export AEGIS_API_KEYS='replace-with-a-secret-manager-reference'
export AEGIS_SIGNING_KEY='at-least-32-bytes-of-secret-material'
export AEGIS_RATE_LIMIT_BACKEND=redis
export AEGIS_REDIS_URL='rediss://redis.internal:6380/0'
export AEGIS_REQUIRE_DISTRIBUTED_LIMITER=true
export AEGIS_REQUIRE_DURABLE_EVIDENCE=true
export AEGIS_REQUIRE_LSM=true
export AEGIS_REQUIRE_SECCOMP=true
export AEGIS_MAX_REQUEST_BODY_BYTES=1048576
export AEGIS_BACKEND_URL='https://llm.internal.example/v1'
export AEGIS_WAL_PATH='/var/lib/aegis/aegis.wal.jsonl'
Per la rotazione HMAC senza riavvio, configura un percorso keyring leggibile dal proprietario invece di affidarti a un singolo segreto all'avvio del processo:```bash export AEGIS_SIGNER_PROVIDER=hmac export AEGIS_HMAC_KEYRING_PATH='/var/lib/aegis/secrets/hmac-keyring.json' export AEGIS_HMAC_KEYRING_RELOAD_INTERVAL_S=1
Il protocollo keyring, la finestra di sovrapposizione, la scadenza, il rollback e i criteri di accettazione a tre repliche sono in [`docs/operations/KEY_ROTATION_RUNBOOK.md`](https://github.com/juanlunaia/aegis-latent-core/blob/HEAD/docs/operations/KEY_ROTATION_RUNBOOK.md). Un percorso keyring non è un gestore di segreti; la distribuzione deve comunque stabilire custodia, controllo degli accessi, consegna atomica, backup, distruzione e verificabilità.
## Modello di evidenza e firma
Il registro locale è un WAL JSONL append-only con una catena limitata in memoria e segmenti archiviati opzionali. Ogni record contiene hash di richiesta e risposta, collegamento di catena, una radice Merkle, metadati di firma e l'identificatore della richiesta. Il WAL viene scaricato e sincronizzato prima che il percorso di risposta durevole venga completato.
Le scelte di firma supportate dipendono dalla distribuzione:
| Firmatario | Confine appropriato | Limitazione importante |
|---|---|---|
| HMAC-SHA256 | Distribuzioni self-hosted a nodo singolo o con segreto condiviso | Chiave simmetrica; ogni verificatore che detiene la chiave può anche firmare. HMAC è classico, non resistente ai quantistici. |
| Firmatario basato su HSM/Vault | Distribuzioni aziendali che richiedono isolamento delle chiavi o custodia remota | Disponibilità, policy, TLS/mTLS, rotazione e verifica offline richiedono l'evidenza della distribuzione target stessa. |
| Firmatario nativo ML-DSA-65 | Ambienti che compilano e caricano il backend Rust reale | L'artefatto candidato conservato di 1M campioni non ha rilevato differenze temporali significative per `sign` (`p=0.8521504207157158`) ma non ha soddisfatto la soglia per `verify` (`p=0.0`); nessuna affermazione di tempo costante è approvata. Vedere [`docs/security/PQC_CONSTANT_TIME.md`](https://github.com/juanlunaia/aegis-latent-core/blob/HEAD/docs/security/PQC_CONSTANT_TIME.md). |
Aegis non fabbrica firme ML-DSA quando il backend nativo non è disponibile. Segnala il backend come non disponibile e richiede una policy di fallback reale esplicita. Un risultato temporale con `p > 0.05` significherebbe solo che non è stata rilevata una fuga statisticamente significativa nell'esperimento nominato; non proverebbe l'esecuzione a tempo costante.
## Semantica di backpressure e guasto
L'evidenza durevole è un invariante del percorso critico. In caso di stallo di storage o `fsync`, il percorso di richiesta può bloccarsi o rifiutare secondo i limiti configurati; non deve eliminare silenziosamente evidenza autorevole. La coda di arricchimento può rifiutare lavoro opzionale, ma una policy di coda non può trasformare una risposta accettata governata in una risposta non registrata.
L'harness deterministico di fault-injection è:```bash
PYTHONPATH=. .venv/bin/python tools/benchmarks/run_backpressure_stall.py \
--duration-s 0.25 --offered-rps 10000 --fsync-delay-ms 2 --max-workers 64 \
--output evidence/backpressure_stall_report.json
L'esecuzione conservata della v3.1.0 ha offerto 10.000 richieste a 10.000 RPS con un ritardo fsync iniettato di 2 ms. Ha registrato 10.000 commit durevoli, zero errori, zero ID mancanti, zero ID duplicati e integrità della catena valida. La latenza di commit p99 osservata è stata di 1.189,89 ms. Questo è un risultato di fault-injection limitato con code sostanziali. Non è una capacità di produzione o una dichiarazione SLO. Vedere docs/operations/BACKPRESSURE_RUNBOOK.md.
Il corpus locale copre attualmente 15 casi eseguibili dannosi e 8 casi benigni. L'esecuzione candidata della v3.1.0 ha registrato zero bypass osservati e zero falsi positivi benigni per quel corpus bloccato. Poiché il corpus è piccolo, il suo intervallo di confidenza è ampio; il risultato è un segnale di regressione, non una copertura di rilevamento universale.
L'harness applicativo non esegue la frammentazione HTTP/2, l'ordinamento dei pseudo-header, le differenze ai confini di continuazione, le differenze del parser del corpo compresso o la normalizzazione specifica dell'ingresso. nuclei-templates/waf-bypass non è considerato eseguito a meno che una revisione bloccata non venga eseguita contro un target locale usa-e-getta autorizzato e produca un artefatto conservato. Vedere docs/security/WAF_TESTING.md.
Le risposte governate espongono X-Aegis-Request-ID, X-Aegis-Session-ID, X-Aegis-Evidence-Status, X-Aegis-Analysis-Status e, dopo un commit durevole non in streaming, gli header di prova X-Aegis-MMR-Format, X-Aegis-MMR-Leaf, X-Aegis-MMR-Proof e X-Aegis-MMR-Root. Le risposte in streaming espongono un Link a /v1/audit/proofs/{request_id} e rimangono pending-terminal finché la ricerca terminale autenticata non riesce. I record autorevoli sono nell'archivio delle prove.
Gli operatori devono generare alert su errori di commit delle prove, errori di sincronizzazione WAL, errori del backend del rate-limiter, saturazione della coda, apertura del circuito, picchi di errori a monte, errori di ricaricamento del keyring, mancanza di sovrapposizione delle chiavi, indisponibilità del firmatario, rifiuto di avvio Seccomp/LSM e errore di verifica dell'integrità. Conservare i segmenti WAL e i report in sola lettura durante la gestione degli incidenti. Eseguire il rollback alla versione firmata/digest immagine precedente quando viene soddisfatto un criterio di kill.
Nella baseline di origine unita, quando l'estensione PyO3 è disponibile, ogni record terminale in streaming viene anche aggiunto una volta a un segmento RustWal ausiliario, incorniciato CRC32 e memory-mapped, in <AEGIS_WAL_PATH>.stream.rwal all'interno della stessa chiamata executor che esegue il commit autorevole del ledger JSONL. Il segmento nativo è limitato a 256 MiB. Se la sua aggiunta fallisce dopo il commit JSONL, Aegis incrementa aegis_native_stream_wal_errors_total, registra il degrado, disabilita il segmento ausiliario per il processo e preserva il marcatore terminale visibile al client perché la catena JSONL rimane l'autorità di replay. La telemetria di streaming espone anche istogrammi di durata, contatori di token e contatori di redazione per categorie limitate senza etichette di payload.
L'ordinamento globale dell'audit cross-replica e l'HA multi-regione non sono dichiarati dalla versione corrente. Utilizzare la guida di scaling e la roadmap come confine autorevole.
Il repository separa i microbenchmark di dispatch, l'overhead del proxy visibile al client, la latenza inclusiva a monte, la produttività di durabilità WAL, le metriche del corpus WAF e i tempi crittografici nativi. Ogni misurazione deve identificare carico di lavoro, hardware, warmup, numero di campioni, metodo percentile, artefatto grezzo e confine.
Il risultato di 2,70 µs pubblicato in precedenza è un microbenchmark di dispatch in background, non una latenza end-to-end del gateway. La produttività per worker è vincolata dall'interprete, dalla pianificazione dell'event-loop, dal comportamento a monte, dall'archiviazione e dalla topologia di distribuzione. Nessuna dichiarazione README di "latenza zero", "overhead zero", "capacità 10k RPS" o "1B RPM" è autorizzata senza un nuovo artefatto che soddisfi la matrice delle dichiarazioni.
L'harness di streaming in-process Phase 2 dell'origine unita è benchmarks/bench_streaming_sse.py. La sua misurazione conservata dell'albero di lavoro è evidence/commercial_phase2_streaming_benchmark.json. Esercita 1.000 eventi SSE deterministici per round e riporta la latenza del primo byte, la produttività di trasformazione, i livelli massimi della coda e la memoria di picco tracemalloc. Esclude la latenza di rete e WAL durevole e pertanto non è un risultato di capacità end-to-end.
Vedere docs/benchmarks/README.md, docs/BENCHMARKS.md e docs/performance/SCALING_GUIDE.md.
Il processo di rilascio produce un lockfile, SBOM, risultati di dipendenze/advisory, busta di provenienza, record di gate di rilascio, manifest del repository, hash degli asset e istruzioni di rollback. La policy di sicurezza è in SECURITY.md; i controlli delle dichiarazioni pubbliche sono in docs/CLAIMS_MATRIX.md. I report di vulnerabilità devono utilizzare il percorso di segnalazione privato descritto in SECURITY.md, non commenti pubblici sugli issue.
Il repository non dichiara da solo SOC 2, HIPAA, FedRAMP, conformità EU AI Act, conformità GDPR, validazione FIPS 140 o ammissibilità giudiziaria. Fornisce codice e percorsi di prove che un'organizzazione può valutare come parte di un sistema di controllo più ampio e di una valutazione indipendente. I riferimenti ai framework sono mappature di contributo, non certificazioni o conclusioni legali.
Il modello commerciale è volutamente a fasi:
Le ipotesi di prezzo, le assunzioni di costo di servizio, i blocchi di procurement e le domande degli acquirenti sono in docs/COMMERCIAL_STRATEGY_US.md e docs/BUYER_GUIDE_US.md. Il repository non fabbrica loghi clienti, testimonianze, numeri di adozione, copertura di supporto o garanzie ROI.
I controlli a livello applicativo non sostituiscono la segmentazione di rete, la policy del firewall, Kubernetes NetworkPolicy, IAM cloud, un secret manager, backup immutabili, test di disaster-recovery o un programma di incident response. I controlli rigorosi di avvio dimostrano i prerequisiti configurati all'inizializzazione; non dimostrano che un provider esterno, filesystem, kernel, firmatario o rete rimanga sano indefinitamente. HMAC-SHA256 è classico e simmetrico; le prove di lunga durata o sensibili al quantum richiedono una migrazione revisionata o un'architettura ibrida. La disponibilità di ML-DSA non equivale a prova a tempo costante, validazione FIPS 140 o certificazione.
Un rilascio è bloccato quando una risposta accettata governata manca di prove durevoli nell'ambito di test dichiarato, una catena fallisce la verifica, un caso critico del corpus WAF viene bypassato, una rotazione chiavi valida perde o invalida un record, un esperimento di temporizzazione espone una fuga, un gate della supply chain fallisce o la documentazione pubblica sovrastima le prove. Vedere docs/SECURITY_ASSURANCE_ROADMAP.md per il percorso di garanzia esterna.
Il repository è concesso in licenza secondo i termini in LICENSE e COMMERCIAL.md. I casi d'uso commerciali, gli obblighi AGPL, le esenzioni, i diritti di versione futura e i termini contrattuali richiedono il testo di licenza applicabile e una revisione legale; questo README non è consulenza legale.
L'ultimo rilascio pubblicato è v3.1.0. Il commit 2050a310ec295afc61d033ff842c9a535a4f3105 è la baseline di origine unita v4.0.0 con quattordici ancoraggi di versione 4.0.0 sincronizzati, ma rimane origine non pubblicata: nessun tag v4, GitHub Release, pacchetto PyPI o pacchetto npm è dichiarato. Nessuna pubblicazione OCI, stato WORM, livello SLSA, ammissibilità legale o dichiarazione di prontezza alla produzione è fatta. La dichiarazione di temporizzazione verify ML-DSA rimane bloccata perché l'esperimento conservato ha restituito p=0.0; un'unione di origine o un rilascio pubblicato non è prova che ogni prerequisito di distribuzione o requisito di garanzia esterna sia stato soddisfatto.
La documentazione utilizza NIST AI RMF, NIST CSF, NIST FIPS 204, W3C WCAG 2.2, CISA Secure by Design, IETF HTTP/2 e altre fonti primarie come framework di riferimento. Queste fonti definiscono terminologia o lenti di revisione. Non certificano Aegis né sostituiscono la revisione legale, di sicurezza, privacy o accessibilità specifica del cliente.
| Topologia | Uso | Confine delle prove | Rischio aperto |
|---|
| Processo singolo / WAL durevole singolo | Valutazione locale e piccole distribuzioni self-hosted | Un processo possiede la catena e il percorso di archiviazione | Processo, volume e custodia delle chiavi sono domini di errore singoli. |
| Un worker per pod | Scalabilità orizzontale dell'applicazione con bundle locali indipendenti | Ogni pod produce un bundle verificabile in modo indipendente | L'ordinamento globale cross-replica non è implicito. |
| Tre repliche con controllo chiavi condiviso | Esercizio di rotazione e failover | Ogni nodo include l'ID chiave e può verificare il materiale di sovrapposizione | La propagazione del secret-manager, l'orologio, l'archiviazione e l'orchestrazione delle repliche richiedono prove di accettazione. |
| Writer centralizzato | Prove ordinate su repliche gateway stateless | Un singolo writer o servizio di ordinamento approvato possiede la sequenza durevole | La disponibilità del writer, il comportamento della coda e le modalità di errore cross-region rimangono lavoro di architettura. |
| Pacchetto | Ambito | Confine della promessa |
|---|
| Community / OSS | Valutazione self-hosted AGPL e uso open-source | Nessuna promessa di supporto o SLA. |
| Team / Pilot | Valutazione limitata nel tempo, simile alla produzione, con ambito nominato | Ambito fisso, replay delle prove, checklist di distribuzione e ore di supporto esplicite. |
| Production | Distribuzione self-hosted commerciale, aggiornamenti e guida alla distribuzione | Termini commerciali annuali dimensionati per distribuzione e livello di richieste; nessuna promessa di certificazione non supportata. |
| Enterprise | Procurement, assistenza architetturale, revisione della sicurezza e obiettivi di risposta negoziati | Richiede un'operazione di supporto responsabile, termini legali, dichiarazione di conservazione dei dati ed esclusioni esplicite. |
| Sovereign / OEM | Air-gapped, ridistribuzione, embedded, escrow o garanzia dedicata | Offerta futura solo dopo che esistono capacità, revisione legale e garanzia indipendente. |
| Percorso | Scopo |
|---|
docs/DEVELOPER_QUICKSTART.md | Clonare, installare, eseguire, testare ed estendere il repository senza indebolire il gate delle prove. |
docs/PLATFORM_OPERATOR_GUIDE.md | Topologia di distribuzione, archiviazione, Redis, postura del kernel, telemetria e confini di rollback. |
docs/FAQ_TECHNICAL.md | Domande tecniche su ciclo di vita, semantica degli errori, WAF, tempi e topologia. |
docs/FAQ_PROCUREMENT.md | Domande di procurement su supporto, licenze, ipotesi di prezzo e confini di garanzia. |
docs/FAQ_SECURITY.md | Domande di sicurezza su FIPS, PQC, HTTP/2, WAF e supply chain. |
docs/compliance/COMPLIANCE_MAPPING.md | Mappa di contributo dei framework con confini di valutazione del cliente. |
docs/privacy/DATA_RETENTION.md | Dati persistiti, decisioni di conservazione, rischi per la privacy e controlli dell'operatore. |
docs/architecture/ARCHITECTURE.md | Confine del sistema, macchina a stati delle richieste e comportamento della topologia. |
docs/benchmarks/BENCHMARK_RESULTS.md | Risultati benchmark canonici v3.1.0 e comandi di riproduzione. |
docs/operations/ROLLBACK_RUNBOOK.md | Procedura di rollback e ripristino che preserva le prove. |
docs/institutional/README.md | Suite di revisione istituzionale in sei volumi su architettura, sicurezza, operazioni, regolamentazione e procurement con controlli delle dichiarazioni. |
aegis/proxy/app.py | Ciclo di vita core del proxy FastAPI, controlli delle richieste, gate delle prove, policy di streaming, header e arricchimento limitato. |
aegis/proxy/waf.py | Pipeline WAF e normalizzazione a livello applicativo. |
aegis/proxy/egress_guard.py | Allowlist di egress canonica e validazione degli endpoint. |
aegis/core/crypto_audit.py | Ledger forense canonico, firme, persistenza WAL, rotazione e verifica dell'integrità. |
aegis/core/forensic_bundle.py | Bundle di prove JCS/DAG-CBOR limitato, manifest CIDv1, certificato PDF e verificatore offline. |
dashboard/ | Dashboard forense Next.js in sola lettura e BFF autenticato lato server. |
sdk/python/ e sdk/typescript/ | Sottoclassi ufficiali drop-in Python; wrapper nativi TypeScript provider-native con dipendenze peer SDK del provider; verifica portabile delle prove MMR. |
benchmarks/bench_streaming_sse.py | Benchmark di trasformazione SSE in-process riproducibile con 1.000+ eventi. |
aegis/core/ratelimiter.py | Limiter di sviluppo in memoria e limiter Redis fail-closed. |
aegis/core/seccomp_guard.py | Guardia di capacità e applicazione Seccomp. |
aegis/core/lsm_guard.py | Rilevamento AppArmor/SELinux e asserzione rigorosa. |
aegis_server/crypto/keyring.py | Keyring HMAC versionato con ricaricamento atomico e verifica della sovrapposizione. |
aegis_server/ | Ciclo di vita API di persistenza e conformità enterprise. |
tests/test_p0_release_gates.py | Test di regressione P0/P1 bloccanti per la linea di rilascio v3.1.0. |
tests/test_market_hardening_gates.py | Nuovi gate di regressione WAF e fault-injection fsync. |
tools/benchmarks/run_backpressure_stall.py | Benchmark locale riproducibile di stallo WAL. |
tools/security/run_waf_corpus.py | Harness riproducibile del corpus WAF locale. |
tools/benchmarks/run_key_rotation.py | Esercizio locale di rotazione chiavi atomica multi-istanza. |
tools/benchmarks/run_pqc_timing.py | Harness di temporizzazione ML-DSA nativa con conservazione dei campioni grezzi. |
docs/CLAIMS_MATRIX.md | Stato pubblico delle dichiarazioni, localizzatore delle prove e confine di falsificazione. |
docs/architecture/ | Indice dell'architettura e record delle decisioni. |
docs/operations/ | Runbook operativi su backpressure, rotazione, rollback e operazioni. |
docs/security/ | Modello di minaccia, test WAF, valutazione PQC e roadmap di garanzia. |
docs/benchmarks/ | Contratto di misurazione e regole di interpretazione. |
requirements.lock | Risoluzione delle dipendenze con verifica hash. |
| Pubblico | Inizia qui |
|---|
| Sviluppatore | docs/DEVELOPER_QUICKSTART.md, docs/REPOSITORY_MAP.md e CONTRIBUTING.md. |
| Operatore di piattaforma | docs/PLATFORM_OPERATOR_GUIDE.md, DEPLOYMENT_GUIDE.md e i runbook operativi. |
| Revisore della sicurezza | SECURITY.md, docs/security/THREAT_MODEL.md, docs/FAQ_SECURITY.md e docs/CLAIMS_MATRIX.md. |
| Acquirente e procurement | docs/PRODUCT_BRIEF_US.md, docs/BUYER_GUIDE_US.md, docs/FAQ_PROCUREMENT.md e docs/COMMERCIAL_STRATEGY_US.md. |
| Conformità e privacy | docs/compliance/COMPLIANCE_MAPPING.md e docs/privacy/DATA_RETENTION.md. |
| Revisore istituzionale | docs/institutional/README.md, il suo grafico dichiarazioni-prove, il report delle dichiarazioni non supportate e il record di controllo dei documenti. |
| Responsabile del rilascio | CHANGELOG.md, docs/benchmarks/BENCHMARK_RESULTS.md, gli artefatti di rilascio e il record del gate. |