Au cours des années, j'ai rencontré ce scénario plus d'une fois. Vous avez un tas de données relatives aux utilisateurs que vous souhaitez envoyer d'une application à une autre. La deuxième application devrait "faire confiance" à ce "jeton" et utiliser les données qu'il contient. Un horodatage est inclus dans le jeton pour empêcher une attaque de vol/réutilisation. Pour une raison ou une autre (ne nous en préoccupons pas ici), une solution personnalisée a été choisie plutôt qu'une norme industrielle comme SAML.Le jeton d'authentification est crypté mais pas signé - faiblesse?
Pour moi, il semble que la signature numérique des données est ce que vous voulez ici. Si les données doivent être secrètes, vous pouvez également les crypter. Mais ce que je vois beaucoup, c'est que les développeurs vont utiliser le cryptage symétrique, par exemple. AES. Ils supposent qu'en plus de rendre les données "secrètes", le chiffrement fournit également 1) l'intégrité des messages et 2) la confiance (authentification de la source).
Ai-je raison de soupçonner qu'il y a une faiblesse inhérente ici? À première vue, cela semble fonctionner si la clé symétrique est correctement gérée. En l'absence de cette clé, je ne saurais certainement pas comment modifier un jeton chiffré, ou lancer une sorte d'attaque cryptographique après avoir intercepté plusieurs jetons. Mais un attaquant plus sophistiqué pourrait-il exploiter quelque chose ici?
Bien placé! En outre, l'utilisation d'un MAC au lieu d'une signature numérique (protection d'intégrité par chiffrement symétrique au lieu d'une cyrptographie à clé publique) est excellente - aucun point dans cette surcharge pour RSA/DSA et autres, puisque votre système est le seul celui qui a besoin de le vérifier. – AviD
L'article de note de pied vaut vraiment la peine d'être lu. –