Démonstration d'envoi de message chiffré S/MIME
Vous êtes webmaster et
vous voulez pouvoir envoyer un email chiffré depuis votre serveur
vers un commerçant par exemple (informations cartes bancaires) ?
Voici une solution.
Le principe
Vous avez des formulaires HTTPS sur votre serveur.
C'est bien, cela permet à l'utilisateur de saisir des informations
sensibles (comme son numéro de carte bancaire, son adresse, son téléphone)
et de les envoyer au serveur. Une fois ces données sur le serveur,
il faut les renvoyer à la personne qui pourra les traiter, en général
le commerçant. Soyons franc : aujourd'hui il y a des webmasters
qui renvoient ces données dans un email normal ! Infamie !
On fait croire que le processus est sécurisé, mais le traitement ne
l'est pas. (Et inutile que je vous explique que l'envoi d'email en clair
est encore plus risqué que l'envoi de données par http en clair,
n'est ce pas ?)
Je ne fais la morale à personne mais les webmasters qui n'assurent
pas une transmission chiffrée des données sensible de bout en bout sont des ***.
Nous avons donc mis au point 2 petits scripts perl associés à OpenSSL 0.9.5.
Ils permettent d'envoyer un email chiffré par S/MIME depuis un serveur linux.
Voyons voir comment cela marche grâce à une démonstration où l'on va vous
faire passer pour un commerçant en ligne.
1 - Avoir un logiciel email S/MIME
Si vous n'utilisez pas déjà S/MIME :
inutile d'aller plus loin ! Il faut d'abord vous équiper, vous reviendrez
ici ensuite. Donc faites un bookmark et cliquez sur le lien de votre choix :
j'utilise Outlook Express,
j'utilise Communicator ou
j'utilise un autre logiciel email.
Maintenant vous (le commerçant) êtes équipé d'un logiciel correct et d'un
certificat. En cas de doute, envoyez un email signé à
tag-smime-demo@TBS-internet.com
pour tester.
2 - Stockage de votre certificat
Le principe du chiffrement avec des clef publiques, c'est que
pour chiffrer un message à destination de quelqu'un il faut connaitre sa clef publique,
c'est à dire son certificat. Le certificat ne contient que des données publiques,
il n'y a aucun risque à le communiquer. C'est grâce à lui et à sa clef privée
associée que vous êtes sûr que personne d'autre ne pourra lire le message chiffré.
Pour communiquer votre certificat à notre serveur de démonstration il vous faut
simplement lui envoyer un message signé à l'adresse
tag-smime-store@TBS-internet.com.
C'est le premier de nos 2 programmes perl qui reçoit votre message,
qui vérifié la signature S/MIME et qui extrait et sauve votre certificat.
3 - Saisie du bon de commande
On a mis en place un
pseudo formulaire de commande dont vous pouvez et devez renseigner l'adresse email
du commercant (merchant). Evidement sur un formulaire normal ce paramètre n'est
jamais modifiable par l'utilisateur, mais ici c'est une démonstration.
Le reste du formulaire bon de commande est à remplir normalement. Une fois validé,
le programme va vérifier qu'il peut bien envoyer la commande au commerçant (merchant)
et le faire ! Si vous avez bien renseigné l'email
du commerçant (la votre) vous allez recevoir, en mode chiffré, le bon de commande.
Le pseudo-client recevra aussi par email une confirmation de commande.
Evidement on ne vérifie pas le numéro de carte bancaire !
Le programme qui reçoit la commande sur le serveur envoit,
grâce à notre second programme perl, la commande par email chiffré. Et le tour est joué,
la chaine de sécurité n'a pas été rompue jusqu'au marchand.
Le détail
Convaincu par la démonstration ? Utiliser S/MIME depuis un serveur
c'est possible ! Dans cette démonstration on n'utilise que le chiffrement, mais
on peut également faire en sorte que les emails soient signés, pour prouver qu'ils
viennent bien du serveur.
De plus, utiliser S/MIME depuis un serveur c'est simple ! Nous utilisons 2
logiciels pour se faire.
smime-store.pl
Ce programme a pour unique but d'acquérir et de stocker les certificats. Pour
se faire il "écoute sur une adresse email", vérifie la signature S/MIME,
et si cette signature est valide, sauvegarde le certificat. Evidement
il faut que la signature S/MIME soit accompagnée du certificat, ce qui
est le cas de la plupart des certificats. Le programme ne reconnait que
les certificats émis par Thawte et Verisign. Il stocke les certificats
par adresse email dans un répertoire prévu à cet effet qui doit être
lisible par le user faisant tourner http.
Exemple de mise en place avec qmail :
$ cat .qmail-smime-store
| bin/smime-store.pl
smime-send-encrypted.pl
C'est ce programme qui chiffre et envoie l'email. Il fait tout pour
vous ! Il prend le corps du message sur l'entrée standard et
les différents paramètres en paramètre au lancement :
-to destinataire@domaine.com
-from envoyeur@domaine.com
-subject "le sujet"
Ces 3 paramètres sont obligatoires. Il y a 2 paramètres optionnels :
-reply reply-to@domaine.com
-cipher [des3|des|rc2-128] (des 3 étant la valeur par défaut)
Evidement si cela se passe mal, il retourne un code d'erreur.
Le problème le plus courant est que le certificat du destinataire doit être dans la base !
Il suffit donc d'éditer vos scripts favoris pour remplacer l'appel de la
fonction mail par smime-send-encrypted.pl Vous pouvez aussi trouver d'autres
à ce script, par exemple pour faire un tunnel chiffré pour une boîte aux lettres...
A l'installation des 2 scripts, il faut penser à remplacer l'executable
d'envoi de mail de qmail (qmail-inject) par celui
de votre serveur de mail favori.
En plus des 2 scripts il vous faudra installer
openssl 0.9.5 ou supérieur.
Il vous faudra aussi avoir perl 5 évidement. Ca a été testé sous linux,
mais y'a pas de raison majeure pour que cela ne puisse pas fonctionner
sous Windows NT avec quelques modifications.
Obtenir les scripts
Nous distribuons les scripts gratuitement à nos clients.
Usage à vos risques et péril bien sur !
Nous vous demanderons du feedback sur l'installation et l'utilisation afin de parfaire les scripts (licence Artistic).
Extensions : il n'est pas particulièrement difficile d'étendre les
fonctions de ce script pour également signer les messages. Ou faire un
autre script du même type qui signerai les messages.
TBS
est une société de conseil spécialisée dans les télécommunications spatiales, le
conseil aux ISPs et la sécurité du commerce électronique. TBS-internet est courtier en certificats depuis 1996.
Sécurisation Outlook Express |
Sécurisation Netscape Communicator |
Sécurisation serveurs SMTP/POP/IMAP |
Autres documents sécurité TBS
|