Skip to content

Instantly share code, notes, and snippets.

@auxesis
Created October 20, 2025 06:13
Show Gist options
  • Save auxesis/540d02c049ea2fab7914fac7d65e663e to your computer and use it in GitHub Desktop.
Save auxesis/540d02c049ea2fab7914fac7d65e663e to your computer and use it in GitHub Desktop.

Searching the unsearchable: how we made encrypted JSON searchable

Speaker: Lindsay Holmwood

When protecting sensitive data in our apps, everyone uses the same tried-and-true approach: build layers of controls around that data. But there is always a constraint: sensitive data must be stored in plaintext. What if we could encrypt it and perform range, match, and unique queries without ever decrypting it?

In this talk you will learn:

  • Why traditional encryption doesn’t give you the security outcomes you think it does
  • What searchable encryption is, and how it works in PostgreSQL with data types like JSON
  • How to use unique keys for every value you encrypt, while keeping your workloads fast and reliable

Encrypt like a pro: a developer’s guide to using Protect.js

Speaker: Dan Draper

JSON objects are flexible and can contain rich data structures like lists, nested records and a variety of data types. Database queries over large collections of JSON objects make for a rich, powerful information retrieval system.

Traditional encryption on JSON object encrypts the whole object into a single opaque blob. The flexibility and power of JSON is lost. 😢

Can we make searchable encryption work with the myriad of operations available for JSON in modern databases like Postgres?

Yes.

Protect.js is a package that gives you end-to-end searchable field-level encryption in your TypeScript apps.

This lets you search encrypted data without decrypting it, including strings, numbers, and JSON.

In this talk you will learn:

  • How to encrypt and search JSON stored in Postgres
  • How Protect.js keeps your apps fast and responsive with bulk encryption and decryption
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment