Com base em que criar chaves de dados

Oct 16 2020

Para PII, temos que criptografar algumas colunas em nosso banco de dados (toda a nossa infra reside em nosso próprio DC, não usando nenhum provedor de nuvem).

Agora, aproximadamente o que estamos fazendo é

  • Criou um CMK na AWS.
  • Gerar chave de dados usando CMK
  • Armazene a chave criptografada no banco de dados
  • Para cada solicitação, descriptografamos a chave de dados criptografada via AWS e obtemos a chave de dados de texto simples. (Basicamente, não fazemos isso para cada solicitação, armazenamos em cache por algum tempo na memória devido a problemas de custo / desempenho)
  • Criamos nossa própria biblioteca de criptografia (usando AES-256 com CBC com IV aleatório / salt aleatório para cada solicitação)
  • Em seguida, usando a chave de dados de texto simples, chamamos a biblioteca AES para criptografar / descriptografar.

Agora eu tenho algumas perguntas

  1. a) Quantas chaves de dados diferentes precisamos criar? Quero dizer se deve ser diferente para cada coluna / diferente para cada serviço / equipe de chamada?

  2. O AES-256 com CBC (Random SALT / Random IV para cada solicitação) é adequado para nosso caso de uso ou preciso usar AES com GCM?

  3. Eu preciso girar as chaves de dados?

Respostas

LjmDullaart Oct 16 2020 at 14:18

Não podemos saber as respostas. Depende totalmente do seu caso de uso, do qual você explicou muito pouco.

Algumas considerações:

  1. Quantas chaves de dados você precisa criar? Tanto quanto você tiver permissões de acesso diferentes. Por exemplo: se o grupo1 tiver acesso a col1, col2, col3 e o grupo2 tiver acesso a col1, col4, col5, você precisará de 3 chaves de dados (uma para col1, uma para col2 / 3 e uma para col4 / 5). Se você deseja ser realmente flexível, por exemplo, porque sua organização freqüentemente se reorganiza, você pode escolher usar mais chaves, por exemplo, uma por coluna.

  2. Eu escolheria o GCM, pelos seguintes motivos:

  • desempenho
  • CBC é menos seguro (ataques de preenchimento fe)
  • Sempre gostei de Evariste Galois
  1. Isso depende muito do seu aplicativo. Para bancos de dados muito grandes que contêm muitos anos de dados históricos, a rotação de chaves geralmente é impraticável. Para bancos de dados pequenos onde o valor dos dados é limitado no tempo, você pode.