Enabling Message Level Protection at Uber
summary
A central client‑side field‑level crypto library is built and deployed that uses AES‑GCM envelope encryption with key‑wrapping, integrates with Vault/AWS KMS or local keys, and exposes a Go DI‑friendly API. It adds a HMAC‑SHA256 deterministic hasher for searchable fields, offers local/remote/hybrid modes, and uses namespace/versioned keys for rotation. Latency and throughput tradeoffs appear (examples show ~10 ms added), migrations from legacy ciphertexts and onboarding prove the hardest operational problems, but the system functions in production.
AI-written summary · about
chapters (28)
- 0:00Intro
- 2:26what are we trying to do?
- 4:41example
- 6:32requirements
- 8:06Uber Service Graph
- 10:17field-level encryption
- 11:42impacts of encrypting data
- 17:30approaches
- 18:02volume/disk encryption
- 18:49database (TDE)
- 19:45database (column-level)
- 20:34application ("server-side")
- 21:47application ("client-side")
- 24:48envelope encryption
- 26:17config driven
- 28:54tech specs
- 30:27dataflow
- 32:35where (and how) to encrypt?
- 35:15crypto interfaces (crypter)
- 36:22crypto interfaces (hasher)
- 37:15crypto interfaces (options)
- 38:17crypto interfaces (crypter, hasher)
- 39:00ciphertext schema
- 40:18language-specific devices
- 44:50developer evangelism
- 47:55supporting legacy flows
- 50:46signer interface
- 51:48search over encrypted data
related talks
29mProtecting data vs systems: practicality, performance, and problems...
47mEnd-to-end Encryption in Cloud Services
29mSecuring your messaging networks: What needs protecting and how?
31mModern Security With Microservices And The Cloud
36mSecuring Every Bit
27mEncrypting 6 Petabytes of Customer Data with AWS KMS
51mClient-Side Field-Level Encryption for Apache Kafka Connect
26mWeb application compromise mitigation with crypto anchoring
