Question

J'ai besoin d'une solution de chiffrement client-serveur pour le transfert Web (côté client signé et chiffré, côté serveur vérifié et déchiffré).

J'utilise HTTP, mais SSL n'est pas disponible en raison de restrictions relatives à l'hébergement partagé (mon serveur est un environnement hôte partagé). En recherchant des solutions alternatives, j'ai choisi OpenPGP en utilisant GnuPG . L’une des raisons est qu’il est pris en charge en PHP par l’intermédiaire de divers modules PEAR et PECL (PHP est le langage que j’ai l’intention d’utiliser pour mes deux scripts client et serveurs, bien que Perl soit également disponible en tant que dernier recours).

J'essaie maintenant de décider du meilleur moyen de transmettre les données. Je suis tombé sur la RFC 1847 , qui définit des messages MIME multiparties cryptés et signés. Ce protocole est spécifiquement développé pour PGP dans la RFC 3156 . (Je pense que ces protocoles sont liés au protocole de courrier électronique crypté S / MIME).

Ma question est la suivante: existe-t-il une raison de suivre ces normes? En ce qui concerne les protocoles, ils ressemblent à des solutions judicieuses, mais existe-t-il des clients qui utilisent réellement ce protocole? Par exemple, si j’ai envoyé une demande multipart / chiffrée à un serveur Web Apache, y aura-t-il un moyen simple de récupérer les données? Mes tests avec un script PHP m’ont fait penser que PHP ne servirait à rien d’essayer de déchiffrer de telles requêtes (les données $ _POST semblent provenir de données de type MIME 'multipart / form-data').

Comme mon hôte va me laisser ouvrir des sockets, il sera possible d'utiliser l'API de programmation de socket de PHP pour écrire un script PHP destiné à servir de serveur accepte les requêtes HTTP 'multipart / encrypted' et 'multipart / signated', mais cela semble excessif.

Des suggestions?

Pour plus d'informations sur mon problème, veuillez consulter cette question .

Était-ce utile?

La solution

Vous avez raison - ces protocoles sont liés au protocole de courrier électronique crypté. Dans ce cas, vous utilisez un peu trop de ressources et vous devez utiliser l’extension OpenSSL php. Allez avec OpenPGP.

Étant donné que votre client sera écrit en PHP, envisagez les scénarios suivants:

Scénario 1: créer un service Web SOAP simple

Les méthodes serveur et client seraient les mêmes:

  • getPublicKey () - renvoie la clé publique
  • sendMessage (msg) - renvoie la réponse

Scénario 2: utiliser le message GET / POST

  • Client - > HTTP GET (envoyez moi votre clé publique) - > Serveur
  • Client < - (mon la clé publique est xxxx) < - Serveur
  • client chiffre le message avec le public du serveur key Client ajoute sa propre clé publique à la message
  • Client - > HTTP POST (envoie message crypté) - > Serveur
  • serveur décode le message et code répondre avec la clé publique du client
  • client < - (réponse codée au client) < - Serveur
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top