Table of Contents

Meilleures pratiques en matière de sécurité : Protéger votre code et vos données**

Introduction

Python est un langage de programmation puissant et polyvalent, largement utilisé à diverses fins, notamment pour le développement web, l’analyse de données et l’apprentissage automatique. Cependant, comme tout autre logiciel, les applications Python sont susceptibles de présenter des failles de sécurité. Dans cet article, nous allons discuter des meilleures pratiques de sécurité Python pour vous aider à protéger votre code et vos données contre les menaces potentielles.


Pourquoi la sécurité de Python est importante

Assurer la sécurité de vos applications Python est crucial pour plusieurs raisons :

  1. Protection des données : Les applications Python manipulent souvent des données sensibles, telles que des informations sur les utilisateurs, des dossiers financiers ou des éléments de propriété intellectuelle. Une faille de sécurité peut conduire à un vol de données ou à un accès non autorisé, ce qui peut avoir de graves conséquences.

  2. Intégrité du système : Les vulnérabilités du code Python peuvent être exploitées pour obtenir un accès non autorisé aux systèmes, manipuler des données ou interrompre des services. En mettant en œuvre les meilleures pratiques de sécurité, vous pouvez préserver l’intégrité de vos systèmes et empêcher les activités non autorisées.

  3. Réputation et confiance : Les failles de sécurité ne nuisent pas seulement à votre organisation, mais elles érosionnent la confiance de vos clients et utilisateurs. En donnant la priorité à la sécurité, vous démontrez votre engagement à protéger leurs intérêts et leurs données, renforçant ainsi votre réputation de fournisseur fiable et digne de confiance.

La mise en œuvre de mesures de sécurité robustes dans vos applications Python permet d’atténuer les risques et de garantir la confidentialité, l’intégrité et la disponibilité de vos données. Il est essentiel d’établir une fondation de sécurité solide pour se protéger contre les menaces cybernétiques et conserver la confiance de vos utilisateurs et parties prenantes.


Meilleures pratiques de sécurité Python

Pour renforcer la sécurité de vos applications Python, il est essentiel de suivre ces bonnes pratiques :

1. Maintenez votre interprète Python à jour

La mise à jour régulière de votre interprète Python vers la dernière version stable vous permet de bénéficier des derniers rattrapages de sécurité et corrections de bogues. La communauté Python traite activement les vulnérabilités et publie des mises à jour afin d’améliorer la sécurité et la stabilité du langage. Visitez le site Python website pour télécharger la dernière version.

En gardant votre interprète Python à jour, vous bénéficiez des dernières améliorations de sécurité qui corrigent les vulnérabilités connues. Ces mises à jour sont conçues pour atténuer les risques et protéger vos applications contre les attaques potentielles. En outre, le fait de rester à jour vous permet d’exploiter les nouvelles fonctionnalités et les améliorations introduites dans les versions plus récentes de Python.

Par exemple, si vous utilisez Python 3.7 et qu’une faille de sécurité critique est découverte, la communauté Python publiera un correctif spécifique à cette faille. En mettant à jour votre interpréteur Python vers la dernière version, telle que Python 3.9, vous vous assurez que votre code est protégé contre les problèmes de sécurité connus.

La mise à jour de votre interpréteur Python est un processus simple. Il vous suffit de vous rendre sur le site Python downloads page et choisissez le programme d’installation approprié pour votre système d’exploitation. Suivez les instructions d’installation fournies pour mettre à jour votre interpréteur Python vers la dernière version.

N’oubliez pas de vérifier périodiquement la présence de mises à jour et de mettre régulièrement à jour votre interpréteur Python afin de rester à l’affût des risques potentiels en matière de sécurité.

2. Utiliser des pratiques de codage sécurisées

L’adoption de pratiques de codage sécurisées minimise la probabilité d’introduire des vulnérabilités de sécurité dans votre code Python. En suivant ces pratiques, vous pouvez renforcer la posture de sécurité de vos applications et vous protéger contre les vecteurs d’attaque courants. Examinons quelques pratiques clés :

  • Validation des entrées : Validez toutes les entrées utilisateur pour éviter les attaques par injection et autres problèmes de sécurité liés aux entrées. Mettez en œuvre des techniques telles que la liste blanche, la vérification des entrées et les requêtes paramétrées pour vous assurer que les données fournies par l’utilisateur sont validées et utilisables en toute sécurité. Par exemple, lors de l’acceptation d’une entrée utilisateur par le biais d’un formulaire web, validez et assainissez l’entrée avant de la traiter ou de la stocker dans une base de données. Cela permet d’éviter que des codes malveillants ou des entrées involontaires ne compromettent l’application.

  • Éviter l’injection de code** : N’exécutez jamais de code fourni par l’utilisateur sans une validation et un assainissement appropriés. Les attaques par injection de code se produisent lorsqu’un attaquant est capable d’injecter et d’exécuter du code arbitraire dans le contexte de votre application. Pour éviter cela, évaluez et validez soigneusement tout code fourni par les utilisateurs avant de l’exécuter. Utilisez des pratiques de codage sécurisées et des bibliothèques qui offrent une protection contre les vulnérabilités liées à l’injection de code.

  • Traitement sécurisé des mots de passe** : Lorsque vous travaillez avec des mots de passe, il est essentiel de les traiter de manière sécurisée. Hacher et saler les mots de passe en utilisant des algorithmes de hachage et des techniques d’étirement de clés appropriés. Il est fortement déconseillé de stocker des mots de passe en texte clair, car cela expose les utilisateurs à des risques importants. Au lieu de cela, conservez uniquement les hachages de mots de passe et veillez à ce que leur stockage soit sécurisé. Utilisez des algorithmes de hachage puissants tels que bcrypt ou Argon2 et envisagez d’appliquer des techniques telles que salt et pepper pour renforcer la sécurité des mots de passe. En mettant en œuvre des pratiques sécurisées de traitement des mots de passe, vous pouvez protéger les informations d’identification des utilisateurs même si la base de données sous-jacente est compromise.

Il est important de noter que les pratiques de codage sécurisé vont au-delà de ces exemples. Soyez toujours vigilant et tenez-vous au courant des dernières directives et recommandations en matière de sécurité pour vous assurer que votre code Python reste sécurisé.

3. Mettre en place un contrôle d’accès basé sur les rôles (RBAC)

Le Contrôle d’accès basé sur les rôles (RBAC) est un modèle de sécurité puissant qui restreint l’accès aux ressources en fonction des rôles attribués aux utilisateurs. En mettant en œuvre le RBAC dans vos applications Python, vous pouvez vous assurer que les utilisateurs disposent uniquement des privilèges nécessaires pour effectuer les tâches qui leur sont assignées, minimisant ainsi le risque d’accès non autorisé et réduisant la surface d’attaque.

Dans le système RBAC, chaque utilisateur se voit attribuer un ou plusieurs rôles, et chaque rôle est associé à des autorisations et à des droits d’accès spécifiques. Par exemple, dans une application web, vous pouvez avoir des rôles tels que admin, utilisateur et invité. Le rôle admin peut avoir un accès complet à toutes les caractéristiques et fonctionnalités, tandis que le rôle utilisateur peut avoir un accès limité et le rôle invité peut avoir un accès minimal ou en lecture seule.

La mise en œuvre d’un système RBAC comporte plusieurs étapes, notamment

  1. Identifier les rôles : Analysez les fonctionnalités de votre application et déterminez les différents rôles que les utilisateurs peuvent avoir. Tenez compte des autorisations et des privilèges spécifiques associés à chaque rôle.

  2. Assignation des rôles : Attribuez des rôles aux utilisateurs en fonction de leurs responsabilités et du niveau d’accès dont ils ont besoin. Cela peut se faire par le biais de systèmes de gestion des utilisateurs ou de bases de données.

  3. Définir les autorisations : Définir les autorisations associées à chaque rôle. Par exemple, un rôle d’administrateur peut être autorisé à créer, lire, mettre à jour et supprimer des enregistrements, tandis qu’un rôle d’utilisateur peut n’avoir que des autorisations de lecture et de mise à jour.

  4. Renforcer le RBAC : Implémentez des mécanismes RBAC dans votre application Python afin d’appliquer un contrôle d’accès basé sur les rôles. Cela peut impliquer l’utilisation de décorateurs, middleware, ou librairies de contrôle d’accès pour vérifier le rôle de l’utilisateur et vérifier ses permissions avant d’autoriser l’accès à des ressources spécifiques.

En mettant en œuvre le système RBAC, vous établissez un système de contrôle d’accès granulaire qui garantit que les utilisateurs ont le niveau d’accès approprié en fonction de leur rôle. Cela permet d’éviter les actions non autorisées et de limiter les dommages potentiels en cas de violation de la sécurité.

Pour en savoir plus sur l’implémentation de RBAC en Python, vous pouvez vous référer au document officiel Python Security documentation ou explorer les bibliothèques et frameworks Python pertinents qui fournissent des fonctionnalités RBAC, tels que Flask-Security, Django Guardian, ou Pyramid Authorization.

4. Protéger les données sensibles

Lorsque vous manipulez des données sensibles dans vos applications Python, il est crucial d’utiliser des techniques de chiffrement puissantes pour protéger la confidentialité et l’intégrité des données. En utilisant des algorithmes et des protocoles de chiffrement bien établis, tels que AES (Advanced Encryption Standard) et TLS (Transport Layer Security), vous pouvez vous assurer que les données sont chiffrées à la fois au repos et en transit.

**Le chiffrement consiste à transformer des données en un format illisible, appelé texte chiffré, à l’aide d’algorithmes de chiffrement et de clés cryptographiques. Seules les parties autorisées disposant des clés de déchiffrement correspondantes peuvent déchiffrer le texte chiffré et accéder aux données d’origine.

Voici quelques exemples de la manière dont vous pouvez protéger les données sensibles en Python :

  • Cryptage des données : Utilisez des algorithmes de chiffrement tels que l’AES pour chiffrer les données sensibles avant de les stocker dans des bases de données ou d’autres systèmes de stockage. Cela permet de s’assurer que même si les données sont consultées sans autorisation, elles restent illisibles et inutilisables.

  • Cryptage TLS : Lors de la transmission de données sensibles sur des réseaux, par exemple lors d’appels API ou de l’authentification d’utilisateurs, utilisez le cryptage TLS pour établir des connexions sécurisées et cryptées. TLS garantit que les données échangées entre un client et un serveur sont cryptées, ce qui empêche l’écoute et la falsification des données.

En appliquant des techniques de cryptage pour protéger les données sensibles, vous ajoutez une couche de sécurité supplémentaire à vos applications Python. Cela réduit considérablement le risque de violation des données et d’accès non autorisé à des informations sensibles.

Pour en savoir plus sur le chiffrement en Python et sur la manière de le mettre en œuvre efficacement, vous pouvez vous référer aux bibliothèques et à la documentation pertinentes, telles que la bibliothèque Python Cryptography et le document officiel TLS RFC pour comprendre le protocole TLS.

N’oubliez pas que le chiffrement n’est qu’un aspect de la protection des données sensibles. Il est tout aussi important de mettre en œuvre des pratiques de stockage sécurisé, de contrôle d’accès et de gestion sécurisée des clés pour garantir une protection complète des données.

5. Accès sécurisé à la base de données

Si votre application Python interagit avec des bases de données, il est essentiel de suivre des pratiques de sécurité pour se protéger contre les vulnérabilités potentielles. Considérez les meilleures pratiques suivantes :

  • Utiliser des instructions préparées : Lorsque vous exécutez des requêtes de base de données, utilisez des énoncés préparés ou des requêtes paramétrées pour éviter les attaques par injection SQL. Les instructions préparées séparent le code SQL des données fournies par l’utilisateur, ce qui réduit le risque d’accès non autorisé à la base de données. Par exemple, en Python, vous pouvez utiliser des bibliothèques comme SQLAlchemy ou psycopg2 pour implémenter des instructions préparées et vous protéger contre les vulnérabilités d’injection SQL.

  • Mettez en œuvre le principe du moindre privilège** : Assurez-vous que l’utilisateur de la base de données associé à votre application Python dispose du minimum de privilèges nécessaires à son fonctionnement. En suivant le principe du moindre privilège, vous limitez les capacités de l’utilisateur de la base de données au strict nécessaire, minimisant ainsi l’impact potentiel d’une connexion compromise à la base de données. Par exemple, si votre application ne nécessite qu’un accès en lecture seule à certaines tables, accordez à l’utilisateur de la base de données des privilèges de lecture seule pour ces tables spécifiques plutôt qu’un accès complet à l’ensemble de la base de données.

En utilisant des instructions préparées et en appliquant le principe du moindre privilège, vous renforcez la sécurité de l’accès à votre base de données et atténuez les risques associés aux vecteurs d’attaque courants. Il est également important de se tenir au courant des dernières directives de sécurité et des meilleures pratiques fournies par les fournisseurs de bases de données et la documentation pertinente.

Pour en savoir plus sur l’accès sécurisé aux bases de données en Python, vous pouvez vous référer à la documentation et aux ressources des bibliothèques de bases de données populaires telles que SQLAlchemy pour travailler avec des bases de données relationnelles, psycopg2 pour PostgreSQL, ou à la documentation spécifique fournie par le système de gestion de base de données que vous avez choisi.

N’oubliez pas que la sécurisation de l’accès aux bases de données est un aspect essentiel de la protection de vos données et du maintien de l’intégrité de vos applications Python.

6. Mettre à jour régulièrement les dépendances

Les projets Python s’appuient souvent sur des bibliothèques et frameworks tiers pour améliorer les fonctionnalités et rationaliser le développement. Cependant, il est crucial de mettre à jour régulièrement ces dépendances pour assurer la sécurité et la stabilité de votre projet.

En restant vigilant sur la mise à jour des dépendances, vous pouvez bénéficier des rattrapages de sécurité et des corrections de bogues publiés par les responsables des bibliothèques. En gardant vos dépendances à jour, vous réduisez le risque de vulnérabilités potentielles et vous vous assurez que votre projet fonctionne sur les dernières versions stables.

Pour gérer efficacement les dépendances, prenez en compte les pratiques suivantes :

  • Suivre les vulnérabilités : Restez informé des vulnérabilités signalées dans les dépendances de votre projet. Des sites web tels que Snyk fournissent des bases de données de vulnérabilités et des outils qui peuvent vous aider à identifier et à traiter les vulnérabilités de vos dépendances. En surveillant régulièrement ces vulnérabilités, vous pouvez prendre des mesures opportunes pour mettre à jour ou remplacer les dépendances concernées.

  • Mettez rapidement à jour les dépendances** : Lorsque des correctifs ou des mises à jour de sécurité sont publiés pour les dépendances de votre projet, mettez-les à jour rapidement. Retarder les mises à jour augmente le risque d’exploitation, car les attaquants peuvent cibler des vulnérabilités connues dans des versions obsolètes.

  • Automatisez la gestion des dépendances** : Envisagez d’utiliser des outils de gestion des dépendances tels que Pipenv ou Conda pour automatiser l’installation des dépendances, le contrôle des versions et les mises à jour. Ces outils peuvent simplifier le processus de gestion des dépendances et garantir que les mises à jour sont appliquées de manière cohérente dans différents environnements.

N’oubliez pas que la mise à jour des dépendances est un processus continu. Établissez un programme régulier pour revoir et mettre à jour les dépendances de votre projet, en gardant la sécurité comme priorité absolue. En restant proactif et vigilant, vous pouvez réduire de manière significative le risque de failles de sécurité potentielles dans vos projets Python.

7. Activer la journalisation et la surveillance

Pour améliorer la sécurité de vos applications Python, il est essentiel de mettre en œuvre des mécanismes complets de journalisation et de surveillance. La journalisation vous permet de suivre les événements et les activités au sein de votre application, tandis que la surveillance fournit une visibilité en temps réel sur le comportement du système, permettant la détection et l’investigation des incidents de sécurité.

En activant la journalisation, vous pouvez capturer des informations pertinentes sur l’exécution de votre application, y compris les erreurs, les avertissements et les activités de l’utilisateur. Une journalisation correctement configurée vous aide à identifier les problèmes, à les déboguer et à tracer les événements liés à la sécurité. Par exemple, vous pouvez consigner les tentatives d’authentification, l’accès aux ressources sensibles ou les activités suspectes susceptibles d’indiquer une faille de sécurité.

En outre, la surveillance vous permet d’observer le comportement de l’exécution de votre application et de détecter toute anomalie ou modèle lié à la sécurité. Pour ce faire, vous pouvez utiliser des outils et des services qui fournissent une surveillance en temps réel, une agrégation des journaux et des capacités d’alerte. Par exemple, des services comme AWS CloudWatch, Datadog ou Prometheus offrent des solutions de surveillance qui peuvent être intégrées à vos applications Python.

En activant la journalisation et la surveillance, vous pouvez :

  • Détecter les incidents de sécurité : Les entrées de journaux et les données de surveillance peuvent vous aider à identifier les incidents de sécurité ou les activités suspectes, ce qui vous permet de réagir rapidement et efficacement.

  • Enquêter sur les violations** : Lorsqu’un incident de sécurité se produit, les journaux et les données de surveillance fournissent des informations précieuses pour les enquêtes postérieures à l’incident et les analyses médico-légales.

  • Améliorer la posture de sécurité** : En analysant les journaux et les données de surveillance, vous pouvez obtenir des informations sur l’efficacité de vos mesures de sécurité, identifier les vulnérabilités potentielles et prendre des mesures proactives pour améliorer la sécurité de votre application.

N’oubliez pas de configurer la journalisation et la surveillance de manière appropriée, en équilibrant le niveau de détail capturé avec l’impact potentiel sur les performances et le stockage. Il est également essentiel d’examiner et d’analyser régulièrement les journaux et les données de surveillance collectés afin de rester proactif dans l’identification et la résolution des problèmes de sécurité.

La mise en œuvre de solutions de gestion des journaux et l’utilisation d’outils de surveillance vous permettent de garder une longueur d’avance sur les menaces de sécurité potentielles et de protéger efficacement vos applications Python.

8. Éduquer et former les développeurs

Pour renforcer les meilleures pratiques de sécurité Python, il est crucial d’investir dans l’éducation et la formation de vos développeurs Python. En leur fournissant les connaissances et les compétences nécessaires, vous donnez à votre équipe de développement les moyens d’écrire du code sécurisé et de détecter les problèmes de sécurité potentiels dès le début du cycle de développement.

Voici quelques mesures que vous pouvez prendre pour promouvoir l’éducation et la formation des développeurs :

  • Programmes de sensibilisation à la sécurité : Organisez régulièrement des programmes de sensibilisation à la sécurité pour informer les développeurs sur les vulnérabilités de sécurité courantes et les pratiques de codage sécurisé. Ces programmes peuvent prendre la forme d’ateliers, de webinaires ou de sessions de formation en ligne adaptés au développement d’applications Python.

  • Directives de codage sécurisé** : Établir des conseils de codage sécurisé spécifiques au développement Python, décrivant les pratiques recommandées et les modèles de code qui atténuent les vulnérabilités courantes. Ces lignes directrices peuvent porter sur des sujets tels que la validation des entrées, l’authentification sécurisée, le chiffrement des données et le traitement sécurisé des informations sensibles.

  • Revues de code et programmation en binôme** : Encouragez une culture de collaboration et d’apprentissage par le biais des examens de code et de la programmation en binôme. En examinant le code ensemble, les développeurs peuvent partager leurs connaissances, identifier les faiblesses en matière de sécurité et suggérer des améliorations. Cela permet de maintenir la qualité du code et d’adhérer à des pratiques de codage sécurisées.

  • Outils axés sur la sécurité** : Intégrez des outils axés sur la sécurité, tels que les outils d’analyse du code statique, dans votre processus de développement. Ces outils peuvent automatiquement identifier les problèmes de sécurité potentiels, les modèles de codage non sécurisés et les vulnérabilités dans la base de code. Pour Python, vous pouvez explorer des outils comme Bandit ou Pylint pour analyser votre code à la recherche de vulnérabilités de sécurité.

  • Apprentissage continu** : Encouragez les développeurs à se tenir au courant des dernières tendances en matière de sécurité, des meilleures pratiques et des menaces émergentes dans l’écosystème Python. Cela peut se faire en participant à des conférences sur la sécurité, à des webinaires ou en suivant des ressources de sécurité réputées comme la communauté OWASP (Open Web Application Security Project).

En investissant dans l’éducation et la formation des développeurs, vous créez une base solide pour la création d’applications Python sécurisées. La promotion d’un état d’esprit axé sur la sécurité parmi les développeurs permet de prévenir les incidents de sécurité, de réduire les vulnérabilités et d’assurer la sécurité globale de votre logiciel.

N’oubliez pas que la sécurité est un processus continu, et qu’une formation continue est nécessaire pour rester à la pointe des menaces en constante évolution et maintenir les normes de sécurité les plus élevées dans vos projets de développement Python.


Aide-mémoire sur les meilleures pratiques de sécurité en Python

Voici un résumé des meilleures pratiques de sécurité en Python présentées dans cet article :

  1. Maintenez votre interpréteur Python à jour avec la dernière version stable pour bénéficier des correctifs de sécurité et des corrections de bogues. Visitez le site Python website - Downloads pour télécharger la dernière version.

  2. Suivre des pratiques de codage sécurisées, y compris la validation d’entrée pour prévenir les attaques par injection, éviter l’injection de code en validant et en assainissant le code fourni par l’utilisateur, et la gestion sécurisée des mots de passe en utilisant des algorithmes de hachage et des techniques de stockage de mots de passe appropriés.

  3. Mettre en place un contrôle d’accès basé sur les rôles (RBAC) pour restreindre les accès non autorisés. Le RBAC attribue des rôles aux utilisateurs en fonction de leurs responsabilités et leur accorde des privilèges d’accès en conséquence. Se référer au NIST - Role-Based Access Control pour plus de détails.

  4. Protégez les données sensibles à l’aide de techniques de cryptage puissantes. Utilisez des algorithmes de cryptage bien établis tels que AES (Advanced Encryption Standard) et assurez un stockage et une transmission sécurisés des informations sensibles. Vous pouvez vous référer à la norme AES Wikipedia page pour plus d’informations.

  5. Sécurisez l’accès à la base de données en utilisant des prepared statements pour prévenir les attaques par injection SQL et en mettant en œuvre le least privilege pour limiter les autorisations des utilisateurs de la base de données. Ces pratiques minimisent le risque d’accès non autorisé aux données sensibles. Pour en savoir plus sur les énoncés préparés, consultez la section SQLAlchemy documentation and least privilege in the OWASP RBAC Cheat Sheet

  6. Mettez régulièrement à jour les dépendances pour corriger les failles de sécurité et bénéficier des corrections de bogues. Des outils comme Snyk - Open Source Security Platform peut vous aider à identifier les vulnérabilités dans les dépendances de votre projet.

  7. Activez la journalisation et la surveillance pour détecter et étudier les incidents de sécurité. La journalisation capture des informations pertinentes sur les événements d’application, tandis que la surveillance fournit une visibilité en temps réel sur le comportement du système. Envisagez d’utiliser des services tels que AWS CloudWatch, Datadog ou Prometheus pour une surveillance complète.

  8. Éduquer et former les développeurs aux pratiques de codage sécurisées et aux vulnérabilités courantes en matière de sécurité. Promouvoir les programmes de sensibilisation à la sécurité, établir des directives de codage sécurisé et encourager les revues de code et la programmation en binôme. Explorer des outils de sécurité tels que Bandit ou Pylint pour l’analyse statique du code.

Pour un guide plus complet sur la sécurité de Python, reportez-vous au document officiel Python Security documentation


Conclusion

La protection de votre code et de vos données Python contre les failles de sécurité devrait être une priorité absolue pour tout développeur ou toute organisation. En suivant les meilleures pratiques décrites dans cet article, vous pouvez minimiser le risque de failles de sécurité et garantir l’intégrité et la confidentialité de vos applications. Restez informé des dernières menaces de sécurité, adoptez des pratiques de codage sécurisées et donnez la priorité à la sécurité tout au long du cycle de développement.

N’oubliez pas que la sécurisation de vos applications Python est un processus continu. Mettez régulièrement votre code à jour, restez informé des menaces émergentes et améliorez continuellement vos pratiques de sécurité pour garder une longueur d’avance sur les attaquants potentiels.


Références

  1. Site web de Python - Téléchargements : Link
  2. NIST - Contrôle d’accès basé sur le rôle : Link
  3. TLS - Transport Layer Security (sécurité de la couche transport) : Link
  4. Snyk - Plate-forme de sécurité open source : Link
  5. Documentation officielle de Python : Link
  6. OWASP - Open Web Application Security Project (projet ouvert de sécurité des applications Web) : Link
  7. NIST - National Institute of Standards and Technology (Institut national des normes et de la technologie) : Link
  8. L’eau de Javel : Link
  9. html5lib : Link
  10. SQLAlchemy : Link
  11. psycopg2 : Link
  12. bcrypt : Link
  13. Argon2 : Link
  14. AES - Advanced Encryption Standard (norme de cryptage avancée) : Link
  15. RSA - RSA (cryptosystem): Link
  1. Pipenv : Link
  1. Conda : Link