Je développe un service Web pour lequel j'utilise le cryptage RSA pour crypter les requêtes-réponses. J'ai partagé la clé publique avec le client et je suis en mesure de déchiffrer la demande entrante à l'aide de ma clé privée. Maintenant, ma question est de savoir comment puis-je chiffrer la réponse qui doit être renvoyée au client. J'ai deux options pour cela :

(1) Utilisez ma clé privée pour chiffrer la réponse et le client la déchiffrera à l'aide d'une clé publique déjà partagée.

(2) Demandez aux clients de fournir leur clé publique et cryptez la réponse avec cette clé publique.

Veuillez suggérer quelle stratégie utiliser pour chiffrer la réponse ?

0
Jawad Tariq 3 févr. 2020 à 16:08

1 réponse

Meilleure réponse

Vous ne pouvez pas chiffrer avec la clé privée, car la clé publique est censée être publique. Le chiffrement avec la clé privée est intrinsèquement dangereux et les API de programmation en interdisent généralement l'utilisation.

Donc (2) est vraiment la seule option : avoir la clé publique des clients et les laisser déchiffrer avec la clé privée. Cependant, ce n'est pas tout :

  1. les clés publiques doivent être dignes de confiance et vous devrez peut-être configurer une infrastructure à clé publique complète pour faire confiance aux clés ;
  2. les messages plus volumineux ne peuvent pas être facilement chiffrés avec RSA, vous aurez donc peut-être besoin d'un chiffrement hybride (chiffrement d'une clé AES aléatoire et chiffrement des messages avec celle-ci) ;
  3. Les attaques d'oracle de remplissage sont très réelles et s'appliquent à RSA, donc le simple fait d'exécuter RSA est assez dangereux.

C'est pourquoi il est généralement conseillé de s'appuyer sur TLS (uniquement). TLS n'est pas toujours sécurisé, mais il est presque toujours plus sécurisé qu'un système auto-fabriqué.

2
Maarten Bodewes 3 févr. 2020 à 14:20