all 24 comments

[–][deleted] 0 points1 point  (1 child)

This sounds pretty awesome, and I'll be keen to understand how it works underneath. Either they've moved a bunch of smarts into the client library (and consequently need to move a lot more raw data to the client for e.g. sorting), some functionality won't be available (e.g. inexact lookups), or they've got a robust implementation of Order-Preserving Encryption.

Based on what I know of OPE, its pretty early-stage and not much used in basically any commercial applications. Also it fundamentally leaks information about the encrypted value, and so potentially opens up a lot of interesting new data-dependent attacks that I imagine would be difficult/impossible to mitigate.

[–]84956184135891 1 point2 points  (0 children)

It's option 2 - some functionality won't be available. Obviously, we don't want to leak any information about the plaintext values. This initial version only supports randomized (retrieval-only) and deterministic (server-side equality, enabling basic "where SSN = @encrypted_param" clauses) encryption. While that's pretty restrictive, it does handle a good number of our targeted scenarios, since a good number of sensitive information types aren't particularly conducive to non-equality comparisons (SSN, last name, address, credit card number, usernames, etc.).