Implémentation du Secure by Design dans les produits logiciels
Développer des logiciels intégrant la sécurité dès les premières phases de développement représente un grand changement pour les développeurs de logiciels. Traditionnellement, les logiciels étaient conçus avec « une couche de sécurité complémentaire », ajoutée une fois le développement terminé.
Dans ce modèle traditionnel, la sécurité ne fait pas partie intégrante de la solution. Partout où il existe une connexion entre le produit principal et un module complémentaire, cela crée un point vulnérable potentiel qui constitue une cible idéale pour les pirates.
Dans le Secure by Design, les mesures de sécurité sont au coeur de la démarche et constituent la principale priorité tout au long du cycle SDLC (Software Development Lifecycle).
Intégrer les principes du Secure by Design tout au long du processus, au lieu d'attendre que le code soit écrit, garantit que la sécurité est une priorité dès les phases de planification et de conception. Cette approche implique d'identifier très tôt les menaces potentielles et de tisser les mesures de défense directement dans l'architecture du logiciel.
Les pratiques de codage sécurisé sont primordiales pour développer des logiciels qui traitent préventivement les vulnérabilités de sécurité. En appliquant des consignes comme celles du projet OWASP (Open Worldwide Application Security Project), et en effectuant une vérification du code et des analyses statiques, il est possible de repérer très tôt les problèmes de sécurité. Les pratiques clés consistent à valider les entrées, à éviter les secrets codés en dur et à choisir des bibliothèques sécurisées. L'utilisation d'outils de recherche en continu des vulnérabilités et de modélisation des menaces renforce encore la protection des logiciels contre les cybermenaces.
Des tests de sécurité très complets à chaque étape du développement garantissent que les vulnérabilités sont découvertes et éliminées en amont, avant de poser des problèmes à l'utilisateur final. Vous évitez ainsi les coûts et la complexité que génère le traitement de ces problèmes plus tard au cours du cycle SDLC ou, pire encore, après la sortie du produit.
Un éditeur doit exécuter des tests SAS (Static Application Security Testing) et DAS (Dynamic Application Security Testing) dans le code. Il doit aussi effectuer des tests unitaires et d'intégration tout au long du cycle SDLC, au lieu d'attendre la fin du processus pour réaliser cette modélisation et ces tests.
Voici les principales fonctions qu'il faut intégrer à un logiciel pour qu'il soit conforme aux principes du Secure by Design :
- Authentification, et combinaison entre un élément connu (mot de passe), un élément possédé (smartphone) et un élément inhérent (biométrie). L'autorisation par RBAC (Contrôle d'accès basé sur les rôles) et PBAC (Contrôle d'accès basé sur des stratégies) garantit que les utilisateurs disposent uniquement du niveau d'accès nécessaire, ce qui limite les risques.
- Chiffrement et protection des données. Le chiffrement protège les données sensibles, que ce soit au repos ou en transit, à l'aide d'algorithmes comme AES (Advanced Encryption Standard) et RSA (du nom des scientifiques du MIT Rivest, Shamir et Adleman). Un bon chiffrement implique une gestion sécurisée des clés : les clés sont stockées séparément des données et des HSM (Modules de sécurité matériels) sont utilisés. Des mises à jour régulières des protocoles et des audits renforcent la sécurité.