Faites des formulaires sécurisés sans HTTPS

Voilà une idée qui peut paraître farfelue… Mais si vous n’avez pas moyen d’avoir une connexion sécurisée pour diverses raisons (pour ma part, il s’agit d’une limitation de Google AppEngine quand on l’utilise avec un nom de domaine personnalisé).

L’idée est de pouvoir crypter des données de formulaires (mots de passe etc…) et de les transporter jusqu’au serveur de manière cryptée.

Pour cela, on utilisera un couple classique clé privée/clé publique. Les clés sont générées grâce à l’outil Keytool de java. Une fois que l’on dispose du KeyStore, il faut extraire la clé publique et la transformer en hexadécimal pour la partie client ( avec la commande suivante dans une console unix “obase=16;<la clé décimale>” | bc).

Cette clé, j’ai fait le choix de la poser en dur dans la page. On peut très bien imaginer que le serveur pose la clé dans une page dynamique.

Ensuite, j’ai utilisé les outils fournis ici : http://www-cs-students.stanford.edu/~tjw/jsbn/

Un peu de JQuery, une servlet serveur capable de décoder tout ça (je suis preneur pour un exemple en PHP et en CGI Perl ou Python ou autre…).

Sur cette servlet, j’utilise le classLoader pour charger le fichier keystore. Cette technique permet de faire fonctionner le mécanisme sur AppEngine.

Le code source de mon exemple est disponible sur GitHub.

A propos Mathieu Passenaud

Passionné de technologies Web, diplômé d'informatique embarquée et actuellement dans le développement d'applications en Cloud Computing.

Je vous propose également...

Zeroshell 3.0.0 est sorti

La nouvelle version de Zeroshell est sortie le 2 janvier dernier. A priori, peu de …

La surveillance américaine expliquée aux patates

L’affaire Snowden n’est pas prête d’être étouffée… Quelle bombe !! Et nos dirigeants s’offusquent maintenant …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.