Utilisateur:Qwyvin/Bouncy Castle (cryptographie)


Bouncy Castle est une collection d'API utilisées en cryptographie. Elle comprend des API pour les langages de programmation Java et C#. Les API sont maintenues par une association caritative australienne: Legion of the Bouncy Castle Inc.

Histoire modifier

Bouncy Castle a vu le jour lorsque deux collègues en ont eu assez de devoir réinventer un ensemble de bibliothèques de cryptographie à chaque fois qu'ils changeaient d'emploi dans le domaine du Java SE côté serveur. L'un des développeurs était actif dans le développement de Java ME (J2ME à l'époque) en tant que hobby et une considération de conception était d'inclure la plus grande gamme de Java VMs pour la bibliothèque, y compris ceux sur J2ME. Cette considération de conception a conduit à l'architecture qui existe dans Bouncy Castle.

Le projet, fondé en mai 2000, était à l'origine écrit uniquement en Java, mais a ajouté une API C# en 2004. L'API Java d'origine comprenait environ 27 000 lignes de code, y compris le code de test, et offrait un support pour J2ME, un fournisseur JCE/JCA et la génération de certificats X.509 de base. En comparaison, la version 1.53 comprend 390 640 lignes de code, y compris le code de test. Elle supporte la même fonctionnalité que la version originale avec un plus grand nombre d'algorithmes, plus PKCS#10, PKCS#12, CMS, S/MIME, OpenPGP, DTLS, TLS, OCSP, TSP, CMP, CRMF, DVCS, DANE, EST et les certificats d'attributs. L'API C# représente environ 145 000 lignes de code et prend en charge la plupart des fonctions de l'API Java.

Certaines propriétés clés du projet sont :

  • Fort accent sur la conformité aux normes et l'adaptabilité.
  • Les installations d'assistance publique comprennent un outil de suivi des problèmes, une liste de diffusion pour les développeurs et un wiki, tous disponibles sur le site Web.
  • Assistance commerciale fournie dans le cadre des ressources pour l'API pertinente répertoriée sur le site Web de Bouncy Castle

Le 18 octobre 2013, une association à but non lucratif, la Legion of the Bouncy Castle Inc. a été créée dans l'État de Victoria, en Australie, par les développeurs principaux et d'autres personnes afin de s'approprier le projet et de soutenir le développement continu des API. L'association a été reconnue comme une association caritative australienne avec un objectif d'avancement dans l'éducation et un objectif bénéfique pour la communauté par la Commission australienne des associations caritatives et à but non lucratif le 7 novembre 2013. L'association a été autorisée à collecter des fonds pour soutenir ses objectifs le 29 novembre 2013 par Consumer Affairs Victoria.

Architecture modifier

L'architecture Bouncy Castle se compose de deux composants principaux qui prennent en charge les capacités cryptographiques de base. Celles-ci sont connues sous le nom d'API "légères" et permettent d'utilisation de la Java Cryptography Extension (JCE). D'autres composants construits sur le fournisseur JCE prennent en charge des fonctionnalités supplémentaires, telles que la prise en charge de PGP, S/MIME, etc.

L'API de bas niveau, ou "légère", est un ensemble d'API qui implémentent tous les algorithmes cryptographiques sous-jacents. Les API ont été conçues pour être suffisamment simples à utiliser si nécessaire, mais ont fourni les éléments de base du fournisseur JCE. L'objectif est d'utiliser l'API de bas niveau dans les appareils à mémoire limitée (JavaME) ou lorsqu'un accès facile aux bibliothèques JCE n'est pas possible (comme la distribution dans une applet). Comme l'API légère n'est que du code Java, la machine virtuelle Java (JVM) n'impose aucune restriction sur le fonctionnement du code, et au début de l'histoire de Bouncy Castle, c'était le seul moyen de développer une cryptographie forte qui n'était pas limitée par les fichiers de politique de juridiction qui empêchaient les fournisseurs JCE d'effectuer un chiffrement "fort".

Le fournisseur compatible JCE est construit sur les API de bas niveau. En tant que tel, le code source du fournisseur JCE est un exemple de la manière d'implémenter de nombreux problèmes de chiffrement "courants" à l'aide de l'API de bas niveau. De nombreux projets ont été créés à l'aide du fournisseur JCE, notamment une autorité de certification Open Source EJBCA .

Versions certifiées modifier

Les versions C# et Java comportent également des flux certifiés FIPS 140-2 niveau 1. Celles-ci diffèrent des versions normales en ce sens que, bien que les modules soient conçus de manière similaires aux versions normales , les API de bas niveau sont assez différentes - en grande partie pour prendre en charge l'application des contrôles requis par FIPS lorsqu'un algorithme est utilisé. Dans le cas du niveau JCE de l'API Java, le fournisseur est toujours en grande partie un remplacement de la version standard. Les premières versions certifiées FIPS ont été mises à disposition en novembre 2016, la version Java recevant le numéro de certification 2768 et la version C# le numéro de certification 2792.

Spongy Castle modifier

Le système d'exploitation Android, depuis début 2014, comprend une version personnalisée de Bouncy Castle.[1] En raison de conflits de noms de classe, les applications Android ne peuvent pas utiliser la version officielle de Bouncy Castle telle quelle. Un projet tiers appelé Spongy Castle distribue une version renommée de la bibliothèque pour contourner ce problème.[2]

Stripy Castle modifier

À l'origine, on supposait qu'une version FIPS 140-2 de Spongy Castle pouvait également être réalisée. Il s'est avéré qu'en raison du traitement des fichiers DEX d'Android, le fournisseur doit être installé sur l'appareil séparément de l'application pour les besoins de la FIPS. La version FIPS 140-2 pour Android s'appelle désormais Stripy Castle et est empaquetée sous org.stripycastle. Cela était nécessaire pour éviter les conflits avec la version Android de Bouncy Castle ainsi que les conflits avec les applications qui pourraient utiliser Spongy Castle et ne pas avoir besoin de services certifiés FIPS 140-2.

Références modifier

  1. (en) ISSE 2014 Securing Electronic Business Processes, Wiesbaden, Springer Fachmedien Wiesbaden, (ISBN 9783658067076, DOI 10.1007/978-3-658-06708-3, S2CID 32601495, lire en ligne), p. 205
  2. « Spongy Castle » (consulté le )

[[Catégorie:Logiciel libre sous licence MIT]] [[Catégorie:Bibliothèque logicielle Java]] [[Catégorie:Logiciel de cryptographie]]