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 ne 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.
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.
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▲
Fichier Javascript de hash SHA1
Fichier Javascript de récupération par Ajax du GDS
Exemple d'implémentation du RSA pour le chiffrement de données côté client
X. Liens▲
Interne
Exemple de craquage par force brute d'un mauvais mot de passe
Tutorial Ajax
Session Hijacking et IP spoofing
Installation Apache+OpenSSL+PHP sous windows
[Forum] Discussion sur la sécurité PHP
[Forum] Discussion sur la conception d'un espace membre PHP
[Forum] Un espace membre implémentant ce qui a été présenté ici
Externe
Implémentation SHA1 en Javascript
Exemple de deux formulaires pour une identification pour récupérer le GDS
Package RSA de Pear
Site très complet sur la cryptographie