Introduction aux algorithmes de signature EC et RSA dans JWT
Apprenez les éléments essentiels du chiffrement asymétrique et comprenez les avantages et inconvénients des deux algorithmes de clé de signature JWT populaires - EC et RSA.
Contexte
Dans le monde numérique, la quête d'une sécurité renforcée de la transmission de données est restée constante et en constante évolution. De nos jours, les JSON Web Tokens (JWT) ont été largement adoptés et jouent un rôle crucial dans OAuth 2.0 et OIDC. Mais comment un serveur d'autorisation vérifie-t-il et fait-il confiance à un jeton JWT envoyé par un client ? Comment le jeton est-il émis et signé par l'émetteur ? Dans cet article de blog, nous parlerons du chiffrement asymétrique et approfondirons les avantages et inconvénients des différents algorithmes de signature qu'utilise Logto dans ses jetons JWT.
Comprendre le chiffrement asymétrique
Le chiffrement asymétrique, également connu sous le nom de cryptographie à clé publique, est un concept fondamental dans la sécurité informatique et la cryptographie. Il implique l'utilisation d'une paire unique de clés liées : une clé publique et une clé privée. Les rôles de ces clés peuvent sembler contre-intuitifs au début, mais ils sont essentiels pour la sécurité des données.
- Clé publique : La clé publique, comme son nom l'indique, est conçue pour un partage ouvert. Dans le contexte de JWT et de systèmes similaires, la clé publique est utilisée pour la vérification de signature, non pour le chiffrement. Lorsque les données sont signées avec la clé privée et que le destinataire possède la clé publique correspondante, il peut valider que les données ont bien été signées par le détenteur de la clé privée et n'ont pas été altérées durant la transmission. Cependant, dans une utilisation traditionnelle du chiffrement asymétrique, comme HTTPS, la clé publique est utilisée pour le chiffrement, et les données chiffrées ne peuvent être déchiffrées que par le serveur cible qui détient la clé privée associée.
- Clé privée : En revanche, la clé privée est un secret bien gardé qui ne devrait être connu que de son propriétaire légitime. Dans le contexte de JWT, la clé privée est utilisée pour créer des signatures numériques qui peuvent être vérifiées par quiconque ayant accès à la clé publique correspondante. De plus, dans le contexte d'un chiffrement asymétrique plus traditionnel, la clé privée est effectivement utilisée pour le déchiffrement, permettant l'accès aux données qui ont été sécurisées avec la clé publique.
Cet agencement unique de clés, où la clé publique vérifie ou chiffre les données et la clé privée les signe ou les déchiffre, forme la base des mécanismes de transmission sécurisée des données et d'authentification des utilisateurs dans le monde numérique. Consultez cet article de blog pour plus de détails.
Algorithmes de chiffrement asymétrique : RSA vs EC
Les algorithmes RSA (Rivest-Shamir-Adelman) et EC (Courbe Elliptique) sont les deux "fonctions mathématiques" les plus couramment utilisées en chiffrement asymétrique. En tant que développeurs, nous sommes souvent confrontés à un choix entre ces algorithmes lorsqu'il s'agit de traiter un cadre d'authentification et ses JWT. Mais lequel choisiriez-vous ? Explorons les avantages et inconvénients de chacun.
Algorithme de signature RSA
- Avantages :
- Support étendu : RSA est largement supporté sur diverses plateformes et bibliothèques, garantissant la compatibilité dans de nombreux environnements.
- Long historique : RSA a une longue histoire de sécurité fiable, et ses algorithmes sont bien compris par la communauté cryptographique.
- Inconvénients :
- Tailles des clés : Les clés RSA sont plus longues pour atteindre le même niveau de sécurité qu'une clé EC, entraînant des tailles de jetons plus grandes et un surcoût de calcul accru.
- Performance : Les opérations RSA ont tendance à être plus lentes que celles de EC, ce qui peut être un inconvénient dans des applications à fort trafic.
Algorithme de signature EC
- Avantages :
- Efficacité : EC offre des performances supérieures par rapport à RSA, ce qui le rend idéal pour les applications avec des contraintes de ressources ou des charges de trafic élevées.
- Tailles de clés compactes : Les clés EC sont bien plus courtes que leurs homologues RSA tout en offrant des niveaux de sécurité équivalents. Cela conduit à des exigences réduites de stockage et de réseau, ainsi qu'à des opérations cryptographiques accélérées.
- Sécurité : EC est très apprécié pour sa sécurité robuste, renforcée par les mathématiques complexes derrière les courbes elliptiques, ce qui le rend résistant aux attaques par force brute.
- Inconvénients :
- Support limité : Certains systèmes et bibliothèques plus anciens peuvent avoir un support EC complet limité, pouvant causer des problèmes de compatibilité. Par exemple, Cloudflare Zero Trust ne supporte pas les jetons signés EC.
- Complexité : La mise en œuvre de EC peut être plus complexe en raison des intricités mathématiques impliquées.
Choix de Logto pour les algorithmes de signature JWT
Logto s'est toujours engagé à respecter les normes les plus strictes de sécurité et de flexibilité et a tendance à utiliser les solutions les plus modernes et performantes à son cœur. EC offre une combinaison gagnante de sécurité robuste et d'efficacité de calcul, ce qui en fait un choix idéal pour les besoins modernes d'authentification et d'autorisation. Par conséquent, EC a été notre algorithme de clé de signature par défaut dès le début de notre produit.
Cependant, nous avons également reçu de nombreux retours de nos utilisateurs indiquant que les jetons signés EC ne sont pas compatibles avec certains systèmes et frameworks tiers, en particulier les plus anciens. Par conséquent, nous travaillons à fournir un support pour l'algorithme RSA également, garantissant que Logto reste adaptable et polyvalent pour tous vos besoins d'authentification.
Dans la prochaine version, Logto Cloud introduira une fonction de « Rotation de clé privée », qui vous permettra de créer une nouvelle clé privée OIDC et une clé de cookie dans votre locataire. (La clé privée est utilisée pour signer vos jetons JWT et la clé de cookie pour signer vos cookies.)
Cette fonction aide à atténuer les risques associés à l'exposition ou à la compromission des clés à long terme. Tourner régulièrement les clés privées devrait être une pratique fondamentale dans la stratégie de sécurité de toute organisation et est fortement recommandée par Logto.
De plus, lors de la rotation de votre clé de signature JWT, nous proposerons également une option pour sélectionner l'algorithme de la clé de signature entre EC et RSA. Donc, si vous faites face à des problèmes de connexion à une plateforme tierce en raison de l'algorithme de signature JWT non pris en charge, c'est le moment de faire tourner et de sélectionner l'algorithme RSA pour votre nouvelle clé privée.
Étant donné que ce paramètre se trouve sur la page des paramètres du locataire, l'interface utilisateur ne sera pas disponible pour les utilisateurs OSS. Mais ne vous inquiétez pas, vous pouvez toujours y parvenir en mettant à jour vers la dernière version et en exécutant les commandes CLI suivantes dans le répertoire racine de Logto.
En bref
Le chiffrement asymétrique aide à sécuriser vos jetons JWT dans votre système d'authentification. Les algorithmes EC et RSA sont des algorithmes essentiels et populaires en cryptographie. Comprendre les avantages et inconvénients ainsi que les principes mathématiques derrière ces algorithmes permet de prendre de meilleures décisions pour que votre application fonctionne avec un cadre d'authentification et d'autorisation.
Logto continuera à explorer et à vous offrir une expérience utilisateur plus sûre et plus robuste.