Chiffrement et hash en PHP contre l'attaque Man in the middle


précédentsommaire

VII. Conclusion

Sécuriser ne veut rien dire.
D'une part, comme je l'ai mentionné, un procédé de chiffrement n'est fiable seulement que parce qu'il n'a pas encore été cracké. Il existe des organismes chargés de tenter de casser ces algorithmes et de grosses primes à ceux qui y arrivent.
D'autre part, mettre du HTTPS avec un certificat, rajouter sa couche de RSA, de GDS, de hash, etc. pour le site de l'association des joueurs de pétanques de sa ville, ça sert à rien.
Cet exemple montre que la sécurité, c'est relatif à la demande et aux informations contenues.
Il faut savoir que si un site perso, voire communautaire, se doit d'appliquer au moins une protection minimum des données de ses membres (donc hash+GDS), un site récupérant des informations comme un numéro de carte bleue ou de pièce d'identité doit impérativement utiliser le HTTPS.
Attention aussi à ne pas trop en mettre, l'illusion de la sécurité est encore pire que ne rien mettre. Vous vous devez de savoir quoi mettre et dans quel but.

VIII. Annexes

VIII-A. Modifications du package Crypt_RSA de PEAR

Dans le but de modifier/ajouter des méthodes dans les classes, j'ai utilisé l'héritage (voir les classes du répertoire class de l'exemple d'utilisation du RSA). Les modifications réalisées sont les suivantes :
1) Ajout de deux fonctions dans la classe Key.

 
Sélectionnez

function getIntModulus()
{
    return $this->_math_obj->bin2int($this->_modulus);
}
    
function getIntExponent()
{
    return $this->_math_obj->bin2int($this->_exp);
}

Ces fonctions permettent de retourner le module et l'exposant de chaque clé sous forme de nombre, car à l'état initial après génération, on obtient un ensemble de signes ressemblant plutôt aux insultes de bandes dessinées, et ça passe plutôt mal sur une page web.

2) Modification de la "préparation" au déchiffrement réalisé par la méthode decrypt.

 
Sélectionnez

function decrypt($enc_data, $key = null)
{
	return $this->decryptBinary($this->_math_obj->int2bin($enc_data), $key);
}

Le but principal de ces modifications est de permettre la transmission de PHP vers JS et inversement en utilisant des nombres et non des "hiéroglyphes".

IX. Sources

X. Liens


précédentsommaire

  

Copyright © 25/01/2007 Guillaume Affringue. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.