encryption & distributed systems - Some past projects: TrueCrypt & OpenSSL audits, Linux Foundation Core Infrastructure Initiative, super cookie research, DHS, DOD - Life- and safety-critical systems
the source of trust? - In a server-side encryption model, a leak or breach can be catastrophic - This potentially includes: logs, backups, temp files, process memory…
the source of trust? - In a server-side encryption model, a leak or breach can be catastrophic - This potentially includes: logs, backups, temp files, process memory… - Privileged credential users/processes see everything
the source of trust? - In a server-side encryption model, a leak or breach can be catastrophic - This potentially includes: logs, backups, temp files, process memory… - Privileged credential users/processes see everything
ever leaves the application? ❏ Some workloads require end-to-end or client-side encryption ❏ Similar to e2e in messaging apps ❏ This is a solved problem, yes?
ever leaves the application? ❏ Some workloads require end-to-end or client-side encryption ❏ Similar to e2e in messaging apps ❏ This is a solved problem, yes?
ever leaves the application? ❏ Some workloads require end-to-end or client-side encryption ❏ Similar to e2e in messaging apps ❏ This is a solved problem, yes? Narrator: It is not.
problem "I want client-side database encryption" "Here. Here's an SDK." "So I just run my queries as-is?" "Oh, no sorry. You'll have to re-write everything."
problem "I want client-side database encryption" "Here. Here's an SDK." "So I just run my queries as-is?" "Oh, no sorry. You'll have to re-write everything." "But at least I can search my database?" "Oh, no sorry."
...use some clunky and limited SDK ...rewrite all your app query code ...lose the ability to search your database What if... You could create a key, set a config, and just go?
drivers, platforms, build) ❏ 3 independent security reviews ❏ dozens of formal developer UX studies ❏ 7 months of real-world customer beta testing ❏ 2 years from initial scope to GA ❏ one of the largest engineering investments we've made
(CSFLE) ❏ Most popular NoSQL database in the world ❏ Runs on 19+ platforms - 12 MongoDB supported language drivers + 7 community drivers - Java, Reactive Native, Scala, Python, Node.js, Go, C, C++, C# .NET, PHP, Ruby, Swift...
into shell ❏ All encrypt/decrypt is done in the driver, on client ❏ Drivers have expanded MQL awareness for automatic encryption ❏ Individual fields within collections can be marked as encrypted
into shell ❏ All encrypt/decrypt is done in the driver, on client ❏ Drivers have expanded MQL awareness for automatic encryption ❏ Individual fields within collections can be marked as encrypted ❏ Keys can be used on a per-field or per-document basis
into shell ❏ All encrypt/decrypt is done in the driver, on client ❏ Drivers have expanded MQL awareness for automatic encryption ❏ Individual fields within collections can be marked as encrypted ❏ Keys can be used on a per-field or per-document basis ❏ Native subdocument & aggregation pipeline support
on app server only) ❏ Stored field keys protected by strong symmetric encryption server-side (opaque to operator) ❏ Field wrapping keys secured in HSM-backed external KMS
on app server only) ❏ Stored field keys protected by strong symmetric encryption server-side (opaque to operator) ❏ Field wrapping keys secured in HSM-backed external KMS ❏ Outside cryptanalysis & design reviews
on app server only) ❏ Stored field keys protected by strong symmetric encryption server-side (opaque to operator) ❏ Field wrapping keys secured in HSM-backed external KMS ❏ Outside cryptanalysis & design reviews ❏ Core constructions are Post Quantum resistant
reads the docs (no, really) ❏ Operating systems will ship the oldest, weirdest system libraries you can imagine ❏ Never underestimate user experience, just to get to hello world ❏ Make copy/paste examples before the web does for you ❏ Every mistake in configuration that can be made will be made
DB platform features ❏ Make key mgmt as simple as possible, but no more ❏ (Almost) no one really understands IAM ❏ <5% of the actual engineering involved cryptography
Homomorphic encryption will not save us ❏ Developer ease of use > technical properties ❏ Make technical choices easier ❏ Solving the 95% use case > offering impractical choices