Utiliser le cryptage dans vos applications personnalisées
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Décrire la classe Apex Crypto.
- Présenter les différents cas d’utilisation de la classe Apex Crypto et du chiffrement personnalisé
- Implémenter le chiffrement dans votre propre application
Qu’est-ce que la classe Apex Crypto ?
Pour implémenter le chiffrement dans votre application Salesforce, Apex vous donne la flexibilité nécessaire pour écrire vos propres fonctions cryptographiques, tout en vous permettant d’accéder à un large choix de fonctions prédéfinies. Dans cette unité, vous explorerez certaines des fonctions puissantes que Salesforce met à votre disposition pour créer des empreintes, des codes d’authentification des messages (MAC), des signatures ainsi que des fonctions de chiffrement et de déchiffrement grâce à la classe Apex Crypto.
La classe Crypto fournit des ensembles de fonctions particulièrement précieux pour protéger vos communications. Grâce à ces fonctions, vous pouvez protéger efficacement les données confidentielles des regards indiscrets, vous assurer que les données d’un message sont complètes et non modifiées, et vérifier l’authenticité des expéditeurs et des destinataires. Chacune de ces fonctions prend en charge différents algorithmes. Vous disposez ainsi d’un bon niveau de contrôle sur la composition de votre solution tout en réduisant la charge de travail exigée par la sécurisation de votre application.
Chiffrement et déchiffrement pour protéger la confidentialité
Le chiffrement et le déchiffrement peuvent être effectués de manière simple et flexible avec les fonctions Apex Crypto.Encrypt()
et Crypto.Decrypt()
, qui prennent en charge les algorithmes AES128, AES192 et AES256. Des fonctions de chiffrement et de déchiffrement sont essentielles pour assurer la confidentialité des données de votre application. Vous avez ensuite la possibilité de générer votre propre clé de chiffrement ou d’utiliser la méthode Crypto.generateAESKey(Integer keylength)
. Pour sécuriser les clés de chiffrement, vous disposez des techniques apprises dans l’unité précédente pour stocker les secrets dans des types de métadonnées ou des paramètres personnalisés protégés.
Des empreintes de hachage pour protéger l’intégrité
La fonction Apex Crypto.generateDigest()
est aussi très utile pour vérifier l’intégrité des données. Cette méthode génère une empreinte de hachage à sens unique, et prend en charge des algorithmes tels que MD5, SHA1, SHA256, et SHA512. Ces empreintes de hachage peuvent être utiles pour identifier les données corrompues accidentellement (ou d’autres modifications non souhaitées). Grâce à des comparaisons de vérification des empreintes de hachage, vous pouvez détecter rapidement les modifications apportées aux données. En effet, l’empreinte calculée pour ces données ne correspondra pas à l’originale, ce qui confirmera que les données ont été modifiées. Vous pouvez ainsi repérer des événements tels que des données corrompues, des modifications accidentelles et des altérations malveillantes.
Notons que les algorithmes de hachage sont d’une puissance variable en termes de sécurité. Bien que la classe Crypto prenne en charge MD5, il est considéré comme un algorithme de hachage faible, et Salesforce suggère donc d’utiliser SHA2 ou mieux pour calculer les empreintes de hachage.
Codes d’authentification des messages (MAC) fondés sur le hachage pour attester de l’authenticité et de l’intégrité
La fonction Apex Crypto.generateMac()
est aussi très utile pour créer des MAC. Les MAC peuvent être utilisés en complément des fonctions d’empreintes de messages pour mettre en place des MAC hachés (ou HMAC). Les HMAC sont utilisés dans les protocoles TLS et IPSec pour authentifier les expéditeurs de messages et s’assurer que les messages ne sont pas modifiés (ni interceptables) lors de leur transit.
La méthode Crypto.generateMac()
prend en charge les algorithmes HMACMD5, HMACSHA1, HMACSHA256 et HMAC512. Les fonctions HMAC reposent sur des empreintes de messages et sur une clé partagée utilisée par l’expéditeur pour générer un MAC, et par le destinataire pour vérifier le MAC. Comme le destinataire doit vérifier le MAC avec la clé privée partagée, cela prouve l’authenticité de l’expéditeur. Les empreintes de messages peuvent ensuite être comparées pour permettre au destinataire de confirmer que le message n’a pas été modifié pendant son transit (par une attaque de type « Man-in-the-Middle »).
Création d’une signature numérique
Les signatures numériques garantissent l’intégrité et l’authenticité des messages grâce à la cryptographie asymétrique qui permet d’éviter le partage de clés privées. Pour générer une signature numérique, vous pouvez utiliser la fonction Crypto.sign()
, qui utilise l’algorithme spécifié ainsi que la clé privée afin de créer une signature des données d’entrée. Grâce à cette configuration, le destinataire d’un message peut utiliser la clé publique correspondante pour vérifier l’intégrité des données signées.
Maintenant que vous savez comment implémenter certaines méthodes de chiffrement dans votre application Salesforce, vous pouvez utiliser la flexibilité d’Apex pour tirer parti des fonctions prédéfinies afin de préserver la confidentialité de vos données.
Le chiffrement ainsi que les fonctionnalités de la plate-forme telles que celles offertes par la classe Apex Crypto vous permettent de garantir la sécurité des applications que vous créez pour Salesforce Platform.
Ressources