Criptografia do Aplicativo

A funcionalidade descrita nesta seção permite que implementações configurem quais campos criptografar ao armazená-los no banco de dados. Essa funcionalidade é mutuamente exclusiva da funcionalidade Máscara da Interface de Usuário. Esse recurso permite criptografar elementos específicos armazenados em uma coluna CLOB ou XML.

Os pontos a seguir destacam os recursos da funcionalidade de criptografia.

  • A chave de criptografia é definida usando um keyring. Para obter informações sobre como definir keyrings de criptografia, consulte Criptografia de Campo.

  • Quando um campo é configurado para ser criptografado, os dados criptografados são armazenados em um campo de criptografia especial que não é o campo de origem (aquele exposto ao usuário na interface do usuário). O campo de origem captura os dados como mascarados. Como um campo especial é necessário para suportar criptografia, o produto deve fornecer suporte para o campo a ser criptografado.

  • Para dados criptografados que devem permitir a pesquisa, o sistema suporta a captura de um valor hash em um campo especial. O produto deve fornecer suporte para esta funcionalidade. Além de fornecer um campo especial para capturar o valor hash, a funcionalidade de pesquisa-base desses dados também deve usar os dados para esta configuração.

  • O sistema suporta dados de criptografia que são capturados como um elemento dentro de um campo XML. Se o campo XML for fornecido em esquema pertencente ao produto, o produto deverá fornecer suporte específico para a captura de dados criptografados.

  • Para garantir compatibilidade retroativa, o sistema também oferece suporte a chaves de criptografia e chaves de hash definidas usando um keystore. Este não é o método recomendado no futuro, mas mais informações sobre a definição do keystore no sistema estão disponíveis no Guia de Instalação. Para obter informações sobre como adotar a funcionalidade de keyring caso você esteja usando keystore, consulte Migrando de Keystore para Keyring.

As seções a seguir fornecem informações adicionais sobre o suporte para a criptografia fornecida pela estrutura. Consulte o capítulo de segurança do guia de administração de seu produto específico para obter mais informações.

Criptografia e Máscara de Dados

Quando um produto permite a criptografia de determinado campo, um campo de criptografia especial deve ser criado para capturar o valor criptografado. Como a criptografia é opcional, o campo de origem (aquele exposto ao usuário) não deve ser este campo criptografado especial. Se a criptografia for configurada, o sistema preencherá internamente o campo criptografado. O campo de origem será preenchido com asteriscos, por padrão. Dessa forma, os dados mascarados são mostrados ao usuário na página, em vez do valor criptografado.

Os pontos a seguir destacam como o sistema atua quando a criptografia é configurada e quando não é. Por exemplo, presuma que o campo é um número de cartão de crédito. O usuário vê e preenche o campo com o nome do campo CC_​NBR. A tabela também tem um segundo campo ENCR_​CC_​NBR. O usuário preenche o número do cartão de crédito:

  • Se a criptografia não for configurada, o CC_​NBR será atualizado com o número de cartão de crédito inserido e ENCR_​CC_​NBR ficará vazio. Observe que, neste caso, uma implementação pode optar por configurar a máscara de interface do usuário.

  • Se a criptografia for configurada, o CC_​NBR será atualizado com ‘*******************’ e ENCR_​CC_​NBR conterá o valor criptografado. Os asteriscos do campo padrão serão preenchidos com o tamanho total do campo de até 50 caracteres.

Se por algum motivo a máscara padrão que usa todos os asteriscos não for desejada, o sistema vai suportar o fornecimento de um algoritmo de máscara explícito usando a mesma Configuração do Recurso - spot de plug-in da Máscara de Dados usado para a Máscara da Interface do Usuário.

Aviso: Ao contrário da máscara da interface do usuário, a máscara de campos criptografados não é controlada por segurança. Os dados armazenados no campo de origem de todos os dados criptografados devem ser mascarados. Certifique-se de não configurar a lógica de autorização de segurança em algoritmos usados para este tipo de máscara.

Configuração da Opção do Recurso

Crie uma configuração do recurso com um Tipo de Recurso de Criptografia. Para cada campo de origem que você estiver criptografando, insira uma opção com o tipo de opção de Criptografia de Campo. O valor conterá mnemônicos que referenciam o apelido do keyring apropriada na chave de acesso junto com a configuração relacionada com o campo e seu local da tabela. Diferentemente da máscara de dados da interface do usuário, a configuração da criptografia de dados é relacionada a como os dados são armazenados, em vez de em como eles são exibidos. Além disso, cada entrada pode definir um algoritmo de máscara explícito para substituir o padrão e, se há suporte, também pode definir um campo de hash e um keyringde hash.

Para obter informações sobre como definir keyrings de criptografia, consulte Criptografia de Campo.

Para os dados que são armazenados em uma coluna específica em uma tabela, deve haver um campo explícito para capturar o valor criptografado. Indica o nome da tabela, o nome do campo de origem e o nome do campo criptografado com o keyring: table='table_​name', field='fld_​name', encryptedField='encr_​fld_​name', keyRing='key ring code'

Uma cláusula "where" também pode ser especificada quando os dados residem em uma tabela-filho e somente os dados de determinado tipo precisam ser criptografados.

Exemplo: table='CI_​PER_​ID', field='PER_​ID_​NBR', encryptedField='ENCR_​PER_​ID_​NBR', keyRing='CM-SymmetricKey', where='ID_​TYPE_​CD='SSN''

Para dados armazenados em uma coluna XML em um registro, o campo de origem a ser criptografado deve referenciar um nome de campo de metadados na definição de esquema dele junto com o elemento que captura os dados criptografados e o alias: field='field_​name', encryptedField='encr_​field_​name', keyRing='key ring code'

A sintaxe para adicionar uma referência a um algoritmo de máscara é maskAlg='algorithm name' .

A sintaxe para adicionar a configuração para capturar um valor hash para fins de pesquisa é hashKeyRing='key ring code' hashField='HASH_​FLD_​NAME'.

Veja a seguir um exemplo de configuração que usa todas as opções possíveis (algoritmo de máscara específico, onde cláusula e campo hash suportam):

table='CI_​​PER_​​ID', field='PER_​​ID_​​NBR', keyRing='CM-SymmetricKey', encryptedField='ENCR_​​PER_​​ID_​​NBR', hashKeyRing='CM-HashKey' hashField='HASH_​​PER_​​ID_​​NBR', where='ID_​​TYPE_​​CD=SSN', maskAlg='CM-PERIDMASK'

Para garantir compatibilidade com versões anteriores, o produto oferece suporte à definição de uma chave de criptografia usando um keystore. Para implementações que continuam a usar essa configuração, faça referência ao alias ou alias de hash em vez do keyring. Veja a seguir um exemplo da configuração que usa todas as opções possíveis, mas usa o alias em vez de um keyring.

table='CI_​​PER_​​ID', field='PER_​​ID_​​NBR', alias='aliasKey', encryptedField='ENCR_​​PER_​​ID_​​NBR', hashAlias='hashAliasKey' hashField='HASH_​​PER_​​ID_​​NBR', where='ID_​​TYPE_​​CD=SSN', maskAlg='CM-PERIDMASK'

Além disso, ao usar um alias, o campo criptografado pode ser "encapsulado" opcionalmente com um marcador especial (por exemplo, ENC{} ) para indicar que o valor do campo está criptografado. Isso pode ser especificado pela definição de wrap="true" ou wrap="false". O padrão é falso. Isso deve ser definido como falso, a menos que um processamento adicional seja incluído no código para lidar com o marcador especial.

Para obter informações sobre como adotar a funcionalidade de keyring caso você esteja usando keystore, consulte Migrando de Keystore para Keyring.

Pesquisando um Valor Criptografado

Se o produto suportar um valor mascarado de um campo criptografado para fins de pesquisa, os seguintes pontos destacam a configuração da zona do explorador para este propósito

  • O valor do filtro do usuário deve referenciar o campo de origem e deve incluir um mnemônico encrypt= adicional. Por exemplo

    type=STRING
    label=PER_ID_NBR 
    encrypt=[CI_PER_ID,PER_ID_NBR,ID_TYPE_CD,F1]

    Para obter mais informações, consulte Filtros do Usuário.

  • O SQL deve incluir o valor mascarado na cláusula WHERE. Observe que como a criptografia é opcional, uma zona do produto que inclui pesquisa por um campo elegível para criptografia incluirá encontrar uma correspondência para o filtro no campo de origem (como texto simples) ou no campo mascarado. Por exemplo:

    WHERE
       [(F2) (ID.PER_ID_NBR =:F2 OR ID.HASH_PER_ID_NBR = :F2)]

Personalizando o Algoritmo de Criptografia

Esse recurso é aplicável somente a implementações que usam keystore. Esta não é a configuração recomendada daqui para frente. O texto é mantido aqui para fins informativos.

Embora o algoritmo de criptografia a ser usado com uma determinada chave possa ser recolhido de uma chave na chave de acesso, às vezes há informações extras associadas a um algoritmo que talvez precisem ser usadas para criptografar ou descriptografar dados.

O sistema fornece uma opção de configuração do recurso para o tipo de recurso de Criptografia usando o tipo de opção Informações do Algoritmo que pode ser usado para ajustar o comportamento da criptografia.

  • É possível modificar o modo padrão e o preenchimento do algoritmo de criptografia.

  • Se for usada uma chave para assinar algo digitalmente, o algoritmo de assinatura também pode ser especificado para a chave.

Para obter detalhes sobre a sintaxe, consulte a descrição detalhada do tipo de opção do recurso.