NTK / TECHNOLOGY
The math
doesn't
lie.
AES-256-GCM encryption happens on your device. Your keys never leave. Our servers receive unintelligible bytes — and that is a mathematical guarantee, not a policy.
Scroll to read the architecture
Architecture
Four steps.
Zero access.
Every protected object passes through this exact sequence — across every product, every time.
-
Key Distribution
Your access keys are derived in the policy plane
Before anything is encrypted, NTK's Policy Manager derives and authorizes the distributed attribute material used for dABAC access. Those attribute assignments are delivered to the client through the ConductorAgent over a PQC-protected channel, then stored in the local policy store for enforcement. The client does not invent its own long-lived master key from a passphrase.
Authority: Policy Manager
Delivery: distributed attribute assignments via ConductorAgent
Transport: Kyber-768 negotiated secure channel
What the client receives: 256-bit attribute keys, 128-bit attribute IDs, labels, expiration data -
Local Encryption
Files are encrypted on the client before they leave the device
For each protected object, NTK generates a fresh one-time MEDK. That MEDK is wrapped under the dABAC-derived KEK using AES-KWP, and the file content is encrypted chunk by chunk with AES-256-GCM. A structured TLV header is authenticated separately so policy-linked metadata and wrapped-key context cannot be silently altered.
Per-chunk AEAD: AES-256-GCM
Nonce: 96-bit per chunk
Auth tag: 16 bytes per chunk
Header integrity: HMAC-SHA256, truncated to 16 bytes
Key wrap: AES-KWP (RFC 5649) for the MEDK under the dABAC KEK
Key derivation: HKDF-SHA256 -
Secure Transit
Only protected data travels the network
When NTK-protected content moves across the network, what travels is the authenticated header, the wrapped MEDK, and the encrypted chunks. The access material needed to unwrap the MEDK is controlled separately through the dABAC policy plane and distributed to authorized clients over the PQC-protected assignment channel. Storage and transit layers handle protected objects, not usable plaintext.
What travels with the object: authenticated TLV header + wrapped MEDK + encrypted chunks
What does not travel with the object: plaintext content, raw dABAC KEK, policy-derived attribute authority
Separate secure distribution: attribute assignments delivered over the PQC policy channel -
Protected Storage
We store protected objects we cannot directly use
The protected object is written to storage as authenticated metadata plus encrypted content. Without the correct distributed attributes, the client cannot reconstruct the dABAC KEK, unwrap the MEDK, and authenticate and decrypt the chunks. That means storage can persist and deliver the protected object, but access still depends on valid policy-derived key material at the edge.
Stored: TLV header, header MAC, wrapped MEDK, encrypted chunks, per-chunk GCM tags
Not stored in usable form: plaintext file contents, raw KEK material, unwrapped MEDK
Breach result: attacker gets protected objects that still require valid dABAC-derived key material for access
You control the policy plane. We never touch it.
The Policy Manager and ConductorAgent that govern your dABAC attribute assignments run under your authority — not ours. NTK has no administrative access to your policy store, no visibility into your attribute assignments, and no participation in the Kyber-768 key negotiation used to protect the distribution channel. The communication tunnels between your ConductorAgent and your clients are established end-to-end between parties you control. NTK is not in that channel and cannot be added to it.
This means we cannot grant access to your protected objects on your behalf, cannot revoke access without your instruction, and cannot be compelled to alter your policy configuration in a way that would expose key material. The architecture makes NTK structurally incapable of acting as a silent intermediary.
Specifications
Cryptographic primitives
The exact algorithms and parameters we use. No marketing language — just the spec.
// Encryption Modes
| Mode | Description | Requirements at decrypt time |
|---|---|---|
| ClassicOnly | v1.1 behavior: MEDK wrapped only under classical dABAC KEK via AES-KWP. | dABAC KEK only. |
| DualRail | MEDK available via classical unwrap or PQC KEM decapsulation (writer stores KEM ciphertexts). | EITHER dABAC KEK OR ML-KEM private key for any listed recipient. |
| HybridAnd | MEDK wrapped under a hybrid KEK derived from classical secret ∧ PQC shared secret(s). | BOTH dABAC KEK AND at least one matching ML-KEM private key. |
New deployments should start with DualRail and migrate selected data to HybridAnd once PQC key provisioning is mature.
// Symmetric & MAC Primitives
| Component | Algorithm | Parameters | Note |
|---|---|---|---|
| Per-chunk AEAD | AES-256-GCM | 96-bit nonce · 16-byte tag | AAD = full header (MAGIC ‖ HDR_LEN ‖ TLVs incl. HEADER_MAC) — ciphertext is bound to exact header and policy |
| Header MAC | HMAC-SHA256 | Truncated to 16 bytes | Authenticates TLV header fields; prevents silent metadata tampering |
| Key derivation | HKDF-SHA256 | — | Derives per-object and context-specific key material |
| Key wrap | AES-KWP | RFC 5649 | Wraps MEDK under dABAC KEK; DualRail/HybridAnd also store ML-KEM ciphertexts |
| PQC KEM (v1.2) | ML-KEM-768 | ~1 KiB ciphertext per recipient | NIST ML-KEM; aligns with future FIPS-validated modules |
| Randomness | SP 800-90A DRBG | — | Provided by the underlying crypto module |
| Transport | mTLS 1.3 | PQC + AES-256-GCM | TLS 1.0–1.2 disabled on all endpoints |
// Operational Notes
Threat Model
What we protect.
What we don't.
Honest security means being precise about what the design actually prevents.
- Server breach — attacker exfiltrates our database and gets your encrypted bytes. Without your key, the bytes are computationally useless.
- Legal order / government compulsion — we cannot produce plaintext we do not have. Our technical architecture is our legal defense.
- Insider threat — NTK employees cannot access your data. There is no privileged admin account that can read stored files.
- Content scanning — we receive ciphertext, not plaintext. No automated or manual content analysis is possible.
- Silent key rotation — GCM authentication tags ensure any byte-level tampering is detected on decryption.
- Compromised device — if malware on your device intercepts your passphrase or key before encryption, we cannot help. Device security is your responsibility.
- Weak passphrase — PBKDF2/Argon2id increases the cost of brute-force, but a very weak passphrase remains vulnerable. Use a strong one.
- Traffic analysis — we see file size and upload frequency. An adversary with full network visibility could infer activity patterns.
- Key loss — if you lose your passphrase and have no recovery mechanism configured, your data is permanently unrecoverable. This is intentional.
- Availability — we do not provide uptime guarantees against DDoS or infrastructure failure. Zero-knowledge does not mean zero-downtime.
FAQ
Common questions
See it in practice.
Four products. One architecture. The math works the same in every one.