Security Controls & Architecture
Executive Summary
Transio delivers a productionâgrade, zeroâknowledge security architecture built for cloudânative, enterprise workloads on Azure. The design merges modern cryptography with layered cloud controls to ensure that even an infrastructure compromise cannot expose user secrets.
đ AdvancedâŻCryptographicâŻEngineering
Dual encryption model â browser E2EE (Argon2id + AESâ256âGCM) and serverâside Fernet
Zeroâknowledge design â servers store ciphertext only; cannot decrypt E2EE payloads
Key governance â Azure Key VaultâŻ+âŻHSM with 30âday automatic rotation
đĄïžâŻDefenceâinâDepth Implementation
Full alignment with OWASP Top 10 (2021)
29 dedicated security tests across backend and frontend covering crypto, validation, access control, and containers
Antiâenumeration padding to neutralise timingâbased reconnaissance
âïžâŻCloudâNative Best Practices
Azure Workload Identity (no static credentials)
Distroless, nonâroot containers (UID 101, capabilities dropped)
Network isolation via Azure CNI NetworkPolicy and private endpoints
Advanced Security Architecture
Dual Encryption Model
graph TB
subgraph "Clientâside E2EE"
A1[User Input] --> B1[Argon2id KDF]
B1 --> C1[AESâ256âGCM Encrypt]
C1 --> D1[Server Storage]
D1 --> E1[Zero Knowledge]
end
subgraph "Serverâside Fernet"
A2[User Input] --> B2[Server Validation]
B2 --> C2[Fernet Encrypt]
C2 --> D2[Key Vault]
D2 --> E2[Managed Keys]
end
subgraph "Extra Controls"
F[Response Padding]
G[TimingâAttack Mitigation]
end
Cryptographic Parameters
Component
Algorithm
Key Length
Parameters
KDF
Argon2id
256âbit
3 iterations, 64âŻMiB, 4 threads
E2EE Cipher
AESâ256âGCM
256âbit
96âbit nonce, AEAD
Server Cipher
Fernet
AESâ128âCBCÂ +Â HMACâSHAâ256
MultiFernet rotation
RNG
BrowserâŻcrypto.getRandomValues()
/ os.urandom
256âbit
CSPRNG
Key Store
Azure Key Vault
HSMâbacked
30âday rotation
Security Controls Matrix
Application Layer
Control
Implementation
Risk Mitigated
Input validation
Pydantic schemas (â€Â 100âŻKiB)
Injection, DoS
Response padding
150âŻKiB target size
Enumeration, timing
Error handling
Generic HTTPÂ 4xx/5xx + structured logs
Data leakage
CORS policy
FlaskâCORS (envâaware)
Xâsite abuse
CSP
Metaâtag ContentâSecurityâPolicy
XSS, inline JS
Cryptography
Feature
Implementation
Benefit
MultiFernet
Sliding key window
Seamless rotation
Memoryâhard KDF
Argon2id 64âŻMiB
GPU/ASIC resilience
Authenticated cipher
AESâ256âGCM
ConfidentialityâŻ+âŻintegrity
Zeroâknowledge
No key on server
Insider threat defence
Infrastructure (Azure)
Layer
Control
Monitoring
Containers
Distroless, UIDÂ 101
Trivy scans
Network
Azure CNI NetworkPolicy
NSG + Container Insights
Identity
Workload Identity (AAD)
AAD logs
Secrets
Key Vault CSI driver
KV audit logs
IaC
Bicep security baseline
Drift detection
OWASP Top 10 (2021) Compliance Snapshot
ID
Mitigation Highlight
Status
A01 BrokenâŻAccessâŻControl
RBAC, NetworkPolicy
â
A02 Crypto Failures
AESâ256âGCM, Fernet, KV
â
A03Â Injection
Pydantic, JSON schema
â
A04 Insecure Design
Threat modelling, zeroâtrust
â
A05 Security Misconfig
IaC baseline, Trivy scans
â
A06 Vulnerable Components
Dependabot, image scan
â
A07 Id & Auth Failures
Workload Identity
â
A08 Integrity Failures
Signed containers
â
A09 Logging & Monitoring
Structured logs, Azure Monitor
â
A10Â SSRF
Egress filters
â
AntiâEnumeration Padding (Python)
TARGET = 150 * 1024 # 150âŻKiB
def pad ( resp : dict ) -> dict :
body = json . dumps ( resp ) . encode ()
pad_len = max ( 0 , TARGET - len ( body ))
if pad_len :
resp [ "_pad" ] = secrets . token_urlsafe ( pad_len )
return resp
Clientâside Crypto Snippet (JavaScript)
const { hash : key } = await argon2 . hash ({
pass : passphrase ,
salt ,
hashLen : 32 ,
time : 3 ,
mem : 1 << 16 , // 64âŻMiB
parallelism : 4 ,
type : argon2 . ArgonType . Argon2id
});
const ciphertext = await crypto . subtle . encrypt (
{ name : 'AES-GCM' , iv : nonce },
key ,
plaintext
);
Serverâside MultiFernet (Python)
from cryptography.fernet import Fernet , MultiFernet
keys = Config . MASTER_KEYS
cipher = MultiFernet ([ Fernet ( k ) for k in keys ])
def encrypt ( txt : str ) -> bytes :
return cipher . encrypt ( txt . encode ())
Security Test Coverage
đ 29 tests
âââ Crypto: 6
âââ Validation: 10
âââ Access Control: 9
âââ Enumeration: 2
âââ Container: 2
Vulnerability Management Pipeline
graph LR
A[Commit] --> B[SAST]
B --> C[Dep Scan]
C --> D[Build]
D --> E[Trivy]
E --> F[Staging]
F --> G[DAST]
G --> H[Approve]
H --> I[Prod]
B --> J[Dash]
C --> J
E --> J
G --> J
style J fill:#ffe5e5
This document captures Transioâs layered security posture: modern cryptography, zeroâtrust design, and automated cloud defencesâready for enterprise scrutiny.