Catégorie OWASP : MASVS-CRYPTO : cryptographie
Présentation
Malgré l'utilisation généralisée de la cryptographie pour protéger la confidentialité et l'intégrité des données, un risque important survient lorsque les développeurs implémentent par inadvertance des algorithmes cryptographiques faibles ou obsolètes. Cette faille découle des faiblesses inhérentes à ces algorithmes, qui peuvent être exploitées par des personnes malveillantes disposant de la puissance de calcul ou des connaissances nécessaires. Les conséquences d'une telle exploitation peuvent être graves, car elles peuvent entraîner un accès non autorisé, des violations de données et la manipulation d'informations sensibles.
Impact
Les données sensibles peuvent être divulguées, modifiées ou falsifiées. Des algorithmes cryptographiques défectueux ou risqués peuvent entraîner des failles de sécurité et être utilisés à mauvais escient pour déchiffrer des informations sensibles, falsifier des données ou usurper l'identité d'entités légitimes. L'exploitation de ces failles peut avoir des conséquences allant des fuites de données et des pertes financières à l'atteinte à la réputation et à la perte de confiance des utilisateurs.
Risque : fonctions de hachage cryptographiques faibles ou défaillantes
L'utilisation de fonctions de hachage cryptographiques faibles ou cassées (telles que MD5
ou SHA1
) présente un risque important pour la sécurité et l'intégrité des données. Les fonctions de hachage sont conçues pour créer des empreintes digitales (hachages) uniques et de longueur fixe à partir des données d'entrée. Elles sont donc utiles à diverses fins, y compris pour vérifier l'intégrité des données, stocker les mots de passe et créer des signatures numériques. Toutefois, lorsque des fonctions de hachage faibles ou compromises sont utilisées, plusieurs failles peuvent apparaître :
- Attaques par collision : les fonctions de hachage faibles sont sensibles aux attaques par collision, où un pirate informatique trouve deux entrées différentes qui produisent la même valeur de hachage. Cela peut leur permettre de remplacer des données légitimes par des données malveillantes sans être détectés, ce qui compromet l'intégrité des données.
- Violations de données : si les mots de passe sont hachés avec un algorithme faible, une violation réussie d'un système peut entraîner l'exposition des identifiants des utilisateurs. Les pirates informatiques pourraient alors utiliser des tables arc-en-ciel ou d'autres techniques pour déchiffrer les mots de passe et accéder aux comptes de manière non autorisée.
- Répudiation des signatures numériques : les fonctions de hachage faibles utilisées dans les signatures numériques peuvent être exploitées pour créer des signatures falsifiées, ce qui rend difficile la détermination de l'authenticité et de l'intégrité des documents ou des messages.
Stratégies d'atténuation
Pour atténuer ces risques, il est essentiel d'utiliser des fonctions de hachage cryptographiques robustes et bien testées, comme SHA-2
ou SHA-3
, et de les tenir à jour à mesure que de nouvelles failles sont découvertes. De plus, l'adoption de pratiques de sécurité telles que le salage des mots de passe et l'utilisation d'algorithmes de hachage spécifiques aux mots de passe comme bcrypt
ou Argon2
peuvent renforcer davantage la protection des données.
Risque : fonctions de chiffrement cryptographique faibles ou cassées
L'utilisation de fonctions de chiffrement cryptographiques faibles ou défectueuses (telles que DES
ou RC4
) présente des risques importants pour la confidentialité des données sensibles. Le chiffrement est conçu pour protéger les informations en les transformant dans un format illisible. Toutefois, si l'algorithme de chiffrement est défectueux, ces protections peuvent être contournées :
- Violations de données : les algorithmes de chiffrement faibles sont sensibles à diverses attaques, y compris les attaques par force brute, les attaques à texte clair connu et les techniques de cryptanalyse. En cas de succès, ces attaques peuvent exposer des données chiffrées, permettant un accès non autorisé à des informations sensibles telles que des informations personnelles, des données financières ou des données d'entreprise confidentielles.
- Manipulation et falsification des données : même si un pirate informatique ne peut pas déchiffrer complètement les données, il peut quand même les manipuler sans être détecté si l'algorithme de chiffrement est faible. Cela peut entraîner des modifications non autorisées des données, ce qui peut potentiellement entraîner des fraudes, des déclarations trompeuses ou d'autres activités malveillantes.
Stratégies d'atténuation
Utiliser des algorithmes de chiffrement performants dans les fonctions de chiffrement
Pour atténuer ces risques, il est essentiel d'utiliser des algorithmes de chiffrement robustes et bien testés, et de suivre les bonnes pratiques pour la gestion des clés et l'implémentation du chiffrement. Il est également essentiel de mettre à jour régulièrement les algorithmes de chiffrement et de se tenir informé des nouvelles menaces pour maintenir une sécurité des données robuste.
Voici quelques algorithmes par défaut recommandés :
- Chiffrement symétrique :
AES-128
/AES-256
avec le modeGCM
Chacha20
- Chiffrement asymétrique :
RSA-2048
/RSA-4096
avec une marge intérieure deOAEP
Utilisez des primitives sécurisées d'une bibliothèque de cryptographie pour réduire les pièges courants.
Bien qu'il soit essentiel de sélectionner un algorithme de chiffrement approprié, pour minimiser réellement les failles de sécurité, envisagez d'utiliser une bibliothèque de chiffrement qui offre une API simplifiée et met l'accent sur les configurations sécurisées par défaut. Cette approche renforce non seulement la sécurité de vos applications, mais réduit également considérablement le risque d'introduire des failles en raison d'erreurs de programmation. Par exemple, Tink simplifie les choix de chiffrement en proposant deux options distinctes : le chiffrement AEAD
et le chiffrement Hybrid
. Les développeurs peuvent ainsi prendre des décisions éclairées en matière de sécurité.
Risque : fonctions de signature cryptographique faibles ou non fonctionnelles
L'utilisation de fonctions de signature cryptographique faibles ou cassées (telles que RSA-PKCS#1 v1.5
ou celles basées sur des fonctions de hachage faibles) présente de graves risques pour l'intégrité des données et des communications. Les signatures numériques sont conçues pour fournir l'authentification, la non-répudiation et l'intégrité des données. Elles permettent de s'assurer qu'un message ou un document provient d'un expéditeur spécifique et n'a pas été falsifié. Toutefois, lorsque l'algorithme de signature sous-jacent est défectueux, ces assurances peuvent être compromises :
- Falsification de signatures : les algorithmes de signature faibles peuvent être vulnérables aux attaques qui permettent à des acteurs malveillants de créer des signatures falsifiées. Cela signifie qu'ils peuvent se faire passer pour des entités légitimes, fabriquer des documents ou falsifier des messages sans être détectés.
- Répudiation des signatures : si un algorithme de signature est piraté, un signataire peut être en mesure de prétendre à tort qu'il n'a pas signé un document, ce qui compromet le principe de non-répudiation et crée des problèmes juridiques et logistiques.
- Manipulation et falsification des données : dans les scénarios où les signatures sont utilisées pour protéger l'intégrité des données, un algorithme faible peut permettre aux pirates informatiques de modifier les données sans invalider la signature, ce qui entraîne une falsification non détectée et une compromission potentielle des informations critiques.
Stratégies d'atténuation
Utiliser des algorithmes de signature cryptographique forts
Pour atténuer ces risques, il est essentiel d'utiliser des algorithmes de signature cryptographique robustes et bien testés :
RSA-2048
/RSA-4096
avec une marge intérieure dePSS
- Algorithme de signature numérique à courbe elliptique (
ECDSA
) avec des courbes sécurisées
Utilisez des primitives sécurisées d'une bibliothèque de cryptographie pour réduire les pièges courants.
Il est essentiel de choisir le bon algorithme de signature, mais pour minimiser réellement les failles de sécurité, envisagez d'utiliser une bibliothèque de cryptographie qui offre des garanties de sécurité robustes par défaut. Tink, par exemple, simplifie les choix de signature en proposant ECDSA
avec des courbes sécurisées comme option par défaut, le tout dans une API simple et complète. Cette approche améliore non seulement la sécurité, mais simplifie également le développement en éliminant le besoin de configuration ou de prise de décision complexes.
Ressources
- Bibliothèque de cryptographie Tink
- Qualité des applications Android : cryptographie
- Signature numérique avec Tink
- Chiffrement hybride avec Tink
- Chiffrement authentifié avec Tink
- Lint de sécurité Android pour les fonctions de hachage et de chiffrement cryptographiques faibles ou cassées
- CWE-327 : Utilisation d'un algorithme cryptographique défectueux ou risqué
- CWE-328 : Utilisation d'un hachage faible
- CWE-780 : Utilisation de l'algorithme RSA sans OAEP
- Page du NIST sur les fonctions de hachage approuvées
- Advanced Encryption Standard (Wikipédia)
- Secure Hash Algorithm 2 (Wikipédia)
- Secure Hash Algorithm 3 (Wikipédia)
- Cryptosystème RSA (Wikipedia)
- Elliptic Curve Digital Signature Algorithm (Wikipédia)
- Chiffrement de flux ChaCha (Wikipedia)
- Salage du mot de passe (Wikipédia)
- Cryptosystème hybride (Wikipédia)
- Chiffrement authentifié