Com 4D, pode cifrar seus dados para garantir sua confidencialidade, independentemente do contexto de uso. Em 4D particularmente, o cifrado têm as características chaves seguintes:
A capacidade de cifrar os datos confidenciais dentro de um banco, mas não necessariamente todo o arquivo de dados,
Uma capa de segurança adicional para proteger o acesso aos dados,
Encriptação não baseada em hardware, você controla a chave (conforme às exigências das empresas de hosting externas).
Nota: para saber mais sobre como 4D maneja as perguntas de segurança, consulte a Guía de segurança de 4D.
4D oferece dois modos de cifrado diferentes, que respondem a duas necessidades diferentes:
Cifrado assimétrico, baseado em um par de chaves. A criptografia se realiza com a chave pública, enquanto que o descifrado exige a chave privada. Este modo é adequado para assegurar intercâmbios de dados através de uma rede, já que permite a autenticação e o cifrado. Em 4D, se implementa mediante os comandos GENERATE ENCRYPTION KEYPAIR, ENCRYPT BLOB e DECRYPT BLOB.
Cifrado simétrico, onde se utiliza a mesma chave tanto para o cifrado como para o descifrado (algoritmo AES 256) Este é o modo adequado para o cifrado de datos locais. É compatível com os comandos de tema Segurança de Dados, tais como Encrypt data BLOB e Decrypt data BLOB.
A criptografia de dados em 4D se baseia nos seguintes conceitos:
Granularidade: o cifrado se realiza a nível de tabela. As tabelas que contêm dados confidenciais estão marcadas como "criptografáveis" na estrutura do banco de dados (arquivo .4db). Para saber mais sobre como configurar tabelas criptografáveis, consulte o parágrafo Criptografia.
Chave de criptografia: as tabelas são cifradas mediante uma chave AES, gerada utilizando um algoritmo SHA-256 a partir de uma "frase passe de senha" dada. A chave de cifrado pode ser armazenada em um arquivo em um dispositivo externo, como uma pendrive, que poderia conectar-se ao servidor apenas quando for necessário.
Chaveiro: quando tiver proporcionado uma chave de cifrado válida para um arquivo de dados cifrados, ela é guardada na memória no chveiro 4D. Portanto, o arquivo de dados pode ser fechado e voltará a abrir sem proporcionar a chave (através de um dispositivo ou com o método dataStore.provideDataKey( )). Na configuração cliente/servidor, o chaveiro é armazenado no servidor. O chaveiro é esvaziado quando 4D se fechar.
Frase Passe de senha: a frase passe de senha é uma versão mais segura de uma senha comum, pode conter uma grande qantidade de caracteres e se utiliza para gerar a chave de cifrado. A mesma frase passe sempre dará como resultado a mesma chave de cifrado.
Cifrado simétrico: a mesma chave de criptografia se utiliza para cifrar e descifrar dados.
Leitura e escritura de dados cifrados: quando tiver proporcionado uma chave de cifrado válida a um arquivo de dados cifrados:
Todas as modificações de dados em tabelas criptografáveis são cifrados automaticamente no disco.
Todos os dados carregados de tabelas criptografáveis são descifradas automaticamente na memória
Arquivos dedestino: o cifrado se aplica a todos os arquivos que manejam dados: .4dd, .journal, .4dIndex.
Advertência: se perder a chave de cifrado e a frase passe, será impossível, mesmo para os serviços técnicos de 4D, acessar aos datos cifrados.
O cifrado em 4D se baseia em um cenário simples de dois passos:
Passo 1: Selecionando tabelas para cifrar
O desenvolvedor seleciona tabelas para cifrar a nivel da estrutura do banco de dados (ver Criptografia).
Por razões de rendimento, só se devem selecionar as tabelas que contenham dados confidenciais.
Não se realiza nenhum cifrado neste passo, os usuários podem trabalhar normalmente, sem criptografia de dados.
Paso 2: Criptografar dados selecionados
Ao lançar uma aplicação (se solicitar o cliente) o desenvolvedor habilita a criptografia usando Centro de segurança e manutenção (CSM), ou com a linguagem 4D.
O cifrado se propaga a todas as tabelas pré-selecionadas.
Os dados cifrados são decifrados automaticamente quando forem lidos e tornam a ser cifrados quando forem salvos, se tiver proporcionado a chave de criptografia.
Nota: o chaveio 4D só é válido durante a sessão 4D em execução. É salvo na memória e é eliminado automaticamente quando fechar a aplicação 4D.
Este gráfico inclui os passos abaixo:
Quando o usuário tentar abrir um arquivo de dados cifrados, 4D busca uma chave de cifrado válida no chaveiro 4D. Se for encontrado, o acesso é outorgado (leitura/escrita) aos dados cifrados.
Se não for encontrada uma chave de cifrado válida no chaveiro 4D, 4D escaneia todos os dispositivos conectados (no primeiro nível) para encontrar um arquivo .4DKeyChain que contenha uma chave de cifrado válida (ver abaixo Armazenando chaves de criptografia de dados em arquivos).
Neste passo, o arquivo de dados está realmente aberto. Se não for proporcionada uma chave de criptografia válida, não é possível o acesso de leitura/escrita nos dados cifrados.
Entretanto o usuário pode proporcionar uma chave de cifrado de dados válida mediante:
conectando um dispositivo que contenha o arquivo .4DKeyChain e chamando ao comando Discover data key, ou
Se proporcionar uma chave de cifrado de dados válida, se permite o acesso de leitura/escrita nos dados cifrados.
Cada vez que encontrar uma chave de cifrado válida, se agrega ao chaveiro 4D. Um dispositivo conectado que contenha uma chave de cifrado não necessita permanecer conectado quando a chave de cifrado tiver sido agregada à string 4D.
Pode criar arquivos de chave de cifrado de dados para armazená-los em dispositivos externos (por exemplo, chaves USB ou discos externos) para que 4D possaa usá-los automaticamente ao inicio ou depois de uma chamada a Discover data key para descifrar dados (ver acima). Quando tiver encontrado uma chave de cifrado válida, se armazena na memória no chaveiro 4D e se utiliza durante toda a sessão. Neste passo, o dispositivo externo pode se desconectar.
Um arquivo de chave cifrada deve cumprir com as regras abaixo:
O nome de arquivo deve ter a extensão .4DKeyChain. Por exemplo, "myKeys.4DKeyChain".
Deve ser um arquivo de texto formatado em JSON.
Pode conter uma ou mais chaves de cifrado ou frases de senha em objetos JSON ou coleções de objetos; cada objeto deve conter uma propriedade encodedKey ou passPhrase. Ver o comando New data key para aprender como gerar um arquivo de chave.
O arquivo deve ser armazenado na raíz de dispositivo externo.
Podem ser utilizados múltiplos arquivos .4DKeyChain simultaneamente.
Nota: o conteúdo de todos os arquivos .4DKeychain encontrados se analisa para detectar se uma chave coincide com os dados, independentemente dos nomes dos arquivos.
Aquí há um exemplo de um arquivo que contém três chaves:
[ { "encodedKey":"D1AB499C9BE1F210BDB[...]0F63EF6CE8CC0C6CA4" }, { "encodedKey":"F68A20FCBC70[...]21B55F6D89687ABC7CFAB95720A" }, { "passPhrase":"Bonjour il fait beau" } ]