Busca em dados cifrados Pedro Alves [email protected] Casos de uso Casos de uso name age address level John Snow 18 Castle Black, on a table 0 Eddard Stark 40 King's Landing, in a spear 0 Tywin Lannister 55 King's Landing 0 Lady Melisandre 432 Castle Black, naked 0 Casos de uso name age address level John Snow 18 Castle Black, on a table 0 Eddard Stark 40 King's Landing, in a spear 0 Tywin Lannister 55 King's Landing 0 Lady Melisandre 432 Castle Black, naked 0 ● ● ● Quem tem sobrenome “Stark”? Quem tem mais de 20 anos e menos de 60? Quem é a pessoa mais velha? ● Eu gostaria de alterar o “level” de uma entrada de nome “Lady Melisandre” para 20. Casos de uso 1. Seleção : keywords, intervalo de valores 2. Atualização : função arbitrária, substituição Criptossistemas Criptossistemas ( Enc, Dec) cifra = Enc chave ( mensagem ) mensagem = Dec chave ( cifra ) Probabilístico: c1 = Enc ( mensagem ) c2 = Enc ( mensagem ) Determinístico: c1 = Enc ( mensagem ) c2 = Enc ( mensagem ) c1 != c2 c1 == c2 Criptossistemas: Homomorphic encryption ( Enc, Dec, Op) c1 = Enc ( 10 ) c2 = Enc ( 20 ) c3 = c1 + c2 30 = Dec ( c3 ) Criptossistemas: Order-Preserving encryption (OPE) ( Enc, Dec) c1 = Enc ( 10 ) c2 = Enc ( 20 ) Como 10 < 20, então c1 < c2 Criptossistemas: Identity-Based Encryption (IBE) ( Enc, Dec) cifra = Enc ( “fulano”, mensagem ) mensagem = Dec ( chave_secreta_do_fulano, cifra ) Exemplo: cifra = Enc ( “[email protected]”, “Attack at Dawn” ) "ID Based Encryption: Offline and Online Steps" by Yaron Sheffer is licensed under CC BY-SA 3.0 Proposta de protocolo Proposta de protocolo Quatro tipos de atributos: keyword Utilizado para selecionar entradas static Nunca alterado ou processado h_add / h_mul Suporta adição ou multiplicação homomórfica range Utilizado para selecionar entradas por intervalo Proposta de protocolo Quatro tipos de atributos: keyword static h_add / h_mul range “[email protected]”, “infosec” corpo do e-mail quantidade de e-mails recebidos idade Proposta de protocolo 1. O usuário cifra os dados antes de envia-los para a nuvem. a. Dados imutáveis são cifrados utilizando um esquema simétrico. b. keywords são cifradas utilizando um esquema IBE. c. Atributos utilizados como operandos são cifrados com um esquema homomórfico. d. Atributos de busca por intervalo são cifrados com um esquema OPE 2. Uma entrada do banco de dados é composta por atributos de busca, imutáveis ou operáveis. 3. A nuvem não retém nenhuma chave de cifração ou decifração. Proposta de protocolo - Busca por keyword O usuário mantém controle das chaves mestre. i. c = Enc ( mpk, keyword, 1 ). ii. sk = private_keygen(msk, keyword) iii. Testa-se todas as keywords de uma entrada procurando por Dec ( sk, c ) = 1. Proposta de protocolo Atributo Criptossistema usado keyword IBE static Simétrico h_add / h_mul Homomórfico range OPE Trabalhos relacionados Trabalhos relacionados 1. Boneh, D., & Franklin, M. (2003). Identity-Based Encryption from the Weil Pairing. 2. Boldyreva, A., Chenette, N., Lee, Y., & O’Neill, A. (2009). Order-preserving symmetric encryption. 3. Paillier, P. (1999). Public-Key Cryptosystems Based on Composite Degree Residuosity Classes. 4. Elgamal, T. (1985). A public key cryptosystem and a signature scheme based on discrete logarithms. Information Theory. 5. Daemen, J., Rijmen, V., & Leuven, K. U. (1999). AES Proposal : Rijndael. Implementação Implementação 1. Esquema baseado em identidades: BF-IBE - C - RELIC 2. Esquemas homomórficos: ElGamal e Pailier - Python 3. Esquema que preserva a ordem: Boldyreva - Python 4. Esquema simétrico: AES - Python 5. Banco de dados MongoDB.