17/10/2026 –, Paralela 3
Como fazer .filter() em dados encriptados? Exploramos os tradeoffs de queryability: criptografia determinística, blind indexes e pgcrypto e um núcleo criptográfico experimental em Rust via PyO3.
Criptografar dados sensíveis é não só uma boa prática de desenvolvimento, como uma exigência crescente por conta de leis como a LGPD e GDPR. No entanto, o que pode parecer simples mostra sua verdadeira face quando fazemos um .filter() no Django e notamos que nada está sendo retornado.
Esse é o coração dessa palestra, a queryability. Vamos dissecar três abordagens reais:
- criptografia determinística
- blind indexes via HMAC
- delegação ao banco com pgcrypto
Entendendo o que cada uma protege, o que cada uma expõe, e qual o custo em complexidade e performance. E eu já posso adiantar que não existe uma bala de prata.
Com esse mapa em mãos, a segunda parte explora uma direção experimental para o núcleo criptográfico: uma lib em Rust exposta ao Python via PyO3, aproveitando o ecossistema RustCrypto para operações em bulk com segurança de memória garantida em tempo de compilação.
Vamos ver como isso se integra como um Field customizado no Django e onde ainda há perguntas em aberto.
Experiência com a ORM do Django, entender o que são modelos e como fazer queries com .filter(). Entender que é possível criar campos customizados em models do Django. Noções básicas sobre criptografia, saber o que é uma chave, o que é encriptar, desencriptar e o valor agragado que a criptografia traz à segurança do dado. Conhecimento de SQL suficiente para entender SELECTe WHERE, já que serão os únicos exemplos utilizados na palestra.
É importante ressaltar que Rust e PyO3 não são pré-requisitos, a última parte da palestra será focada no conceito e na facilidade de integração entre essas duas linguagens, não na sintaxe do Rust em si.
¿Qué pueden esperar aprender los participantes en tu actividad?:Ao fim da palestra, o público será capaz de entender o problema da criptografia no Django, quais são algumas das abordagens possíveis e, principalmente, os seus tradeoffs. Especificamente, não entender por que o .filter() quebra com implementações simples de criptografia e entender qual das contramedidas abordadas mais faz sentido para cada contexto.
Além disso, vão ter uma introdução prática e acessível à ponte entre Python e Rust, entendendo como cruzar essa fronteira, quais são as implicações no projeto e como isso se parece na prática.
O objetivo final não é de entregar uma biblioteca pronta, ou mostrar uma solução perfeita, mas mostrar diferentes abordagens e plantar essa pulga atrás da orelha da comunidade.
Elige una o más áreas en las que esta propuesta encaja.: Desarrollo Web, Seguridad de la InformaciónNascido e criado em Recife, Pernambuco, sou desenvolvedor na Vinta Software. O que mais gosto (além de café) é quebrar sistemas e, depois, pensar em maneiras de torná-los à prova de falhas.