Zero-Egress
Sensitive evidence never leaves your infrastructure. Only cryptographic commitments (hashes) are shared externally.
GLACIS is designed with security as a foundational principle. This document describes the security model, threat assumptions, and cryptographic guarantees.
Zero-Egress
Sensitive evidence never leaves your infrastructure. Only cryptographic commitments (hashes) are shared externally.
Defense in Depth
Multiple layers of security controls ensure no single point of failure.
Minimal Trust
Components are designed to require minimal trust in each other.
Cryptographic Integrity
All attestations are cryptographically signed and verifiable.
| Threat | Mitigation |
|---|---|
| Attestation forgery | Ed25519 signatures; only authorized sidecars can sign |
| Replay attacks | Epoch binding + monotonic counters |
| Data exfiltration | Zero-egress design; only commitments leave infrastructure |
| Tampering | Merkle tree ordering; any modification detectable |
| Unauthorized access | API key authentication; RBAC in dashboard |
| Man-in-the-middle | TLS 1.3 for all connections |
| Threat | Responsibility |
|---|---|
| Compromised sidecar | Your infrastructure security |
| AI model attacks | AI provider security |
| Insider threats | Your access controls |
| Physical access | Your data center security |
┌─────────────────────────────────────────────────────────────┐│ Trust Boundaries │├─────────────────────────────────────────────────────────────┤│ ││ YOUR INFRASTRUCTURE (You control) ││ ┌─────────────────────────────────────────────────────┐ ││ │ • Sidecar deployment │ ││ │ • API keys and secrets │ ││ │ • Network access │ ││ │ • Evidence storage (L2) │ ││ └─────────────────────────────────────────────────────┘ ││ ││ GLACIS SERVICES (GLACIS controls) ││ ┌─────────────────────────────────────────────────────┐ ││ │ • Witness service (epoch management) │ ││ │ • Receipt service (Merkle tree) │ ││ │ • Dashboard (compliance management) │ ││ │ • Receives only: commitments, metadata, proofs │ ││ └─────────────────────────────────────────────────────┘ ││ ││ AI PROVIDERS (Third-party) ││ ┌─────────────────────────────────────────────────────┐ ││ │ • OpenAI, Anthropic, etc. │ ││ │ • Process your AI requests │ ││ │ • Subject to their security practices │ ││ └─────────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────┐│ Request/Response (Sensitive) ││ • Stays in your infrastructure ││ • Only commitment hash leaves │└──────────────────────────┬──────────────────────────────────┘ │ │ commitment = sha256(data) ▼┌─────────────────────────────────────────────────────────────┐│ GLACIS Services (Non-sensitive) ││ • Receives: commitment hash ││ • Cannot: reverse hash to get original data ││ • Can: verify proof mathematically │└─────────────────────────────────────────────────────────────┘Every attestation is signed using Ed25519:
// Sidecar holds private keyconst signature = ed25519.sign( canonicalize(attestation), sidecarPrivateKey);
// Anyone with public key can verifyconst valid = ed25519.verify( canonicalize(attestation), signature, sidecarPublicKey);Properties:
Commitments bind attestations to data without revealing it:
// Request commitmentconst requestCommitment = sha256(canonicalize({ model: 'gpt-4', messages: [...], timestamp: Date.now(),}));
// Evidence commitment (L2 only)const evidenceCommitment = sha256(canonicalize({ request: {...}, response: {...}, policyScores: {...},}));Properties:
Attestations are ordered in a Merkle tree:
Root Hash / \ H(A+B) H(C+D) / \ / \ H(A) H(B) H(C) H(D) │ │ │ │ Att₁ Att₂ Att₃ Att₄Properties:
Conversation state in the wizard is protected:
const stateSignature = hmacSha256( canonicalize(conversationState), serverSecret);
// Verify on each requestconst valid = hmacSha256( canonicalize(receivedState), serverSecret) === receivedSignature;Authorization: Bearer glc_live_abc123...Key types:
| Prefix | Environment | Use |
|---|---|---|
glc_live_ | Production | Real attestations |
glc_test_ | Testing | Test attestations |
Epoch-bound tokens for sidecars:
Authorization: Bearer wt_abc123...Properties:
Dashboard uses session cookies:
| Role | Permissions |
|---|---|
| Admin | Full access, user management, settings |
| Editor | Read/write controls, evidence, reports |
| Viewer | Read-only access to all data |
| API | Programmatic access per key scope |
All connections require TLS 1.3:
| Endpoint | Protection |
|---|---|
api.glacis.io | API key + rate limiting |
witness.glacis.io | API key + epoch validation |
receipts.glacis.io | Bearer token + 7-phase validation |
app.glacis.io | Session + CSRF protection |
| Data | Encryption |
|---|---|
| API keys | Argon2id hash |
| Passwords | Argon2id hash |
| PII fields | XChaCha20-Poly1305 |
| Sessions | Secure random tokens |
All operations are logged:
interface AuditEntry { id: string; timestamp: number; organizationId: string; actorId: string; action: string; resource: string; details: Record<string, unknown>; ipAddress: string; userAgent: string;}Audit logs are:
GLACIS services are SOC 2 Type II certified:
For EU customers:
For healthcare customers:
Report security vulnerabilities to: security@glacis.io
We follow responsible disclosure:
Zero-Egress Design
Deep dive into the zero-egress architecture.
Encryption Details
Understand encryption algorithms and key management.