Ir para o conteúdo

Adicionando uma Coluna Criptografada a uma Tabela

A criptografia em nível de aplicativo pode ser usada para proteger dados confidenciais armazenados em colunas de tabelas. A criptografia e a descriptografia ocorrem dentro do mecanismo de negócios do Vinyl. Conseqüentemente, a criptografia em nível de aplicativo é neutra em termos de fornecedor: o Vinyl oferece suporte à criptografia de coluna em nível de aplicativo em todos os provedores de RDBMS.

Para adicionar uma coluna criptografada a uma tabela, comece entrando no Vinyl como administrador.

  1. Navegue até App Workbench
  2. Clique no ficha Tabelas
  3. Identifique a tabela à qual adicionar a coluna e clique no ícone Abrir registro correspondente
  4. No painel Colunas, clique no botão + Coluna
  5. Forneça a coluna Nome e selecione as seguintes opções:
    • Tipo de dados lógicos: String
    • Tipo de dados físicos: Texto criptografado
  6. Clique no botão Salvar
  7. Clique no ícone Fechar (X) para descartar o pop-up

Quaisquer valores gravados na coluna serão criptografados automaticamente. Os valores lidos da coluna serão descriptografados automaticamente.

Se você tiver acesso direto ao banco de dados, poderá confirmar se os dados estão criptografados. Comece criptografando um valor:

  1. No painel Tabela, localize a tabela e clique no ícone Resultados para visualizar os dados da tabela
  2. Clique no ícone Editar para modificar uma linha existente
  3. Forneça um valor para a coluna criptografada
  4. Clique no ícone Salvar

Conecte-se ao banco de dados usando uma ferramenta como * SQL Server Management Studio*. Selecione os dados da tabela. Os dados criptografados serão prefixados com a sequência de bytes 0x09F0.

Usando uma Coluna de Tabela Criptografada

Colunas criptografadas podem ser usadas de diversas maneiras. Normalmente, um desenvolvedor criará um objeto de dados que seleciona a coluna criptografada da tabela de destino. Usando segurança baseada em funções, o desenvolvedor pode limitar o acesso ao objeto de dados. O desenvolvedor pode então vincular um painel ao objeto de dados e um controle Texto ou Senha à coluna criptografada. Nesse ponto, os usuários com permissão para o objeto de dados poderão visualizar e modificar o valor do texto simples.

Além de vincular controles a colunas criptografadas, também é possível criar regras de negócios CRUD que copiam dados de e para colunas criptografadas. As regras de negócios CRUD podem ser usadas para:

  • Migração de dados de colunas não criptografadas para colunas criptografadas (ou vice-versa).
  • Lidar com dados confidenciais dentro ou fora de um sistema de externo.
  • Passando dados confidenciais para um endpoint de serviço da web REST ou OData.
  • Finalmente, colunas criptografadas podem ser usadas por plugins. No entanto, o suporte para colunas criptografadas varia de plug-in para plug-in. Consulte a documentação do plug-in para obter informações adicionais.

Chaves de Criptografia de Dados

Os dados da coluna são criptografados com uma chave de criptografia de dados (DEK). Cada fonte de dados possui seu próprio conjunto de chaves rolantes. Embora qualquer chave possa ser usada para descriptografar dados, apenas uma chave é usada para criptografia em um determinado momento. Uma nova DEK é criada a cada 90 dias.

DEKs estão vinculados aos seguintes atributos no modelo lógico Vinyl:

  • DataSourceId – O identificador da fonte de dados isola chaves.
  • TableId – O identificador da tabela é usado para criar uma chave derivada para a tabela.
  • ColumnId – O identificador da coluna é usado para criar uma chave derivada para a coluna.

Aviso

Se o DataSourceId, TableId ou ColumnId alteração, os valores criptografados existentes não poderão ser descriptografados.

Além disso, cada valor de coluna possui um vetor de inicialização exclusivo. Como resultado, o mesmo valor de texto simples terá um texto cifrado binário diferente em linhas diferentes.

Visualizando Chaves de Criptografia de Dados

Como as DEKs são usadas para criptografar dados no banco de dados, o material da chave criptográfica não pode ser armazenado no banco de dados. Por esse motivo, os DEKs são armazenados em um dos vários locais configuráveis. Consulte Configuração de criptografia de dados para obter mais informações.

Mesmo que o material da chave em si não esteja armazenado no banco de dados, os atributos da chave são visíveis no Vinyl. Para obter os detalhes da chave de criptografia de uma fonte de dados, comece entrando no Vinyl como administrador.

  1. Navegue até App Workbench
  2. Clique no ficha Fontes de dados
  3. Selecione o banco de dados relacional no painel Fonte de dados
  4. Clique no botão Chaves de criptografia

A página Chaves de criptografia de dados listará as propriedades da chave existentes:

  • Data de Criação - A data e hora em que a chave foi gerada.
  • Data de ativação: a data e a hora em que a chave foi usada para criptografar os dados da coluna.
  • Data de Expiração – A data e hora em que a chave não foi mais usada para criptografar dados.

Nota

Como as chaves de criptografia de dados são criadas sob demanda, uma fonte de dados não terá nenhuma chave de criptografia de dados até que os dados sejam criptografados pela primeira vez.

Algoritmos de Criptografia e Validação

A criptografia fornece confidencialidade; validação, autenticidade (também conhecida como à prova de adulteração).

O Vinyl criptografa dados usando AES-256 no modo de cifra de bloco CBC com preenchimento PKCS #7.

O Vinyl garante a integridade dos dados criptografados usando HMAC-SHA256.

Problemas Conhecidos e Limitações

A lista a seguir descreve problemas conhecidos e limitações na implementação de criptografia em nível de coluna do Vinyl.

  • Somente o tipo de dados lógicos String suporta criptografia.
  • Somente provedores de dados RDBMS suportam criptografia.
  • Uma coluna não pode ser convertida para o tipo de dados de armazenamento criptografado.
  • Uma coluna não pode ser convertida do tipo de dados de armazenamento criptografado para outro tipo de dados.
  • Colunas criptografadas não suportam Filtro, Pesquisa ou Classificação.
  • Controles como páginas, painéis e listas não podem ser vinculados a uma coluna criptografada.
  • Colunas criptografadas não suportam tradução.
  • O Vinyl não migra automaticamente valores criptografados com chaves antigas: cabe ao desenvolvedor recriptografar os dados periodicamente.
  • Os dados não podem ser migrados de/para colunas criptografadas usando uma regra de migração. Os desenvolvedores devem usar regras de negócios CRUD para mover dados de/para colunas criptografadas.
  • Os dados não podem ser copiados de/para colunas criptografadas usando regras de banco de dados CRUD. Os desenvolvedores devem usar regras de negócios CRUD para mover dados de/para colunas criptografadas.
  • As expressões mvSQL só podem fazer referência ao texto cifrado binário, não ao valor de texto simples de uma coluna criptografada.
  • Se um valor criptografado não puder ser descriptografado, nenhum erro será exibido: o valor parece ser NULL.