Usar criptografia em aplicativos personalizados
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Descrever a classe Crypto do Apex.
- Explicar os diferentes casos de uso da classe Crypto do Apex e da criptografia personalizada.
- Implementar a criptografia em seu próprio aplicativo.
O que é a Classe Crypto do Apex?
Quando se trata de implementar criptografia em seu aplicativo Salesforce, o Apex oferece a você a flexibilidade de escrever suas próprias funções criptográficas personalizadas e permite usar muitas funções pré-criadas. Nesta unidade, você aprendeu algumas das funções mais poderosas que o Salesforce oferece para criar resumos, códigos de autenticação de mensagem (MACs), assinaturas e funções de criptografia e descriptografia por meio da classe Crypto do Apex.
A classe Crypto disponibiliza conjuntos de funções que são especialmente valiosas para proteger suas comunicações. Usando estas funções, você consegue proteger eficazmente os dados confidenciais contra pessoas indesejadas, verificar se os dados da mensagem estão completos e inalterados e verificar a autenticidade dos remetentes e destinatários. Cada uma destas funções suporta vários algoritmos diferentes. Isso proporciona um bom nível de controle sobre a composição da sua solução, minimizando o trabalho extra necessário para proteger seu aplicativo.
Criptografia e descriptografia para proteger a confidencialidade
A criptografia e a descriptografia podem ser processadas facilmente e de forma flexível com as funções Apex Crypto.Encrypt()
e Crypto.Decrypt()
, que são compatíveis com os algoritmos AES128, AES192 e AES256. As funções de criptografia e descriptografia são essenciais para garantir a confidencialidade dos dados do seu aplicativo. Em seguida, você tem a opção de gerar sua própria chave de criptografia ou usar o método Crypto.generateAESKey(Integer keylength)
. Para proteger as chaves de criptografia, você pode usar as técnicas que aprendeu na unidade anterior para armazenar segredos em tipos de metadados personalizados protegidos ou configurações personalizadas protegidas.
Resumos (hash) para proteger a integridade
Outra função útil para verificar a integridade dos dados é a função Apex Crypto.generateDigest()
. Esse método gera um resumo (hash) unidirecional e é compatível com algoritmos como MD5, SHA1, SHA256 e SHA512. Os resumos (hash) podem ser muito úteis na identificação de dados corrompidos acidentalmente (ou outras modificações indesejadas). Ao efetuar verificações de comparação em resumos (hash), você pode encontrar alterações nos dados rapidamente. O resumo recalculado desses dados não corresponderá ao resumo original, o que permite confirmar que os dados foram modificados. Essa situação pode alertá-lo para eventos como dados corrompidos e alterações acidentais ou mal-intencionadas.
Observe que os algoritmos de hash possuem graus de força distintos em termos de segurança. Embora a classe Crypto ofereça suporte ao MD5, ele é considerado um algoritmo de hash fraco e, por isso, o Salesforce sugere a utilização do SHA2 ou superior para calcular resumos (hash).
Códigos de autenticação de mensagem (MACs) com base em hash para demonstrar autenticidade e integridade
Outra função útil é o método Apex Crypto.generateMac()
, que pode ser usado para criar MACs. Os MACs podem ser usados juntamente com funções de resumo da mensagem para configurar MACs com base em hash (HMACs). Os HMACs são usados nos protocolos TLS e IPSec para autenticar remetentes de mensagens e fazer com que as mensagens não sejam modificadas (ou interceptadas) em trânsito.
O método Crypto.generateMac()
é compatível com os algoritmos HMACMD5, HMACSHA1, HMACSHA256 e HMAC512. As funções HMAC envolvem o uso de resumos da mensagem e de uma chave compartilhada que o remetente usa para gerar um MAC e que o destinatário usa para verificar o MAC. Como o destinatário precisa verificar o MAC usando a chave privada compartilhada, isso indica a autenticidade do remetente da mensagem. Os resumos da mensagem podem, então, ser comparados para permitir que o destinatário confirme que a mensagem não foi modificada em trânsito — ou seja, por meio de um ataque person-in-the-middle.
Como criar uma assinatura digital
As assinaturas digitais garantem a integridade e a autenticidade das mensagens usando criptografia assimétrica para eliminar a necessidade de compartilhar chaves privadas. Para gerar uma assinatura digital, você pode usar a função Crypto.sign()
, que usa o algoritmo especificado e a chave privada para criar uma assinatura dos dados de entrada. Com essa configuração, o receptor de uma mensagem pode usar a chave pública correspondente para verificar a integridade dos dados assinados.
Agora que você sabe como implementar alguns métodos de criptografia em seu aplicativo Salesforce, você pode usar a flexibilidade do Apex para aproveitar as funções pré-criadas para ajudar a manter seus dados privados.
A criptografia, em conjunto com recursos da plataforma como os oferecidos pela classe Crypto do Apex, ajuda a garantir a segurança dos aplicativos que você cria para a Salesforce Platform.
Recursos