IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fiabilité algorithme de cryptage


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de DeadlyLullaby
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 19
    Par défaut Fiabilité algorithme de cryptage
    Bonjour,

    Je compte mettre en place cet algorithme de cryptage/décryptage pour sécuriser les données transitant dans mon projet web. J'aimerais votre avis sur la fiabilité du code en terme de sécurité et s'il y a des choses à améliorer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php
    class Cipher {
        private $securekey, $iv; //clé privée en paramètre de la classe
        function __construct($textkey) {
            $this->securekey = hash('sha256',$textkey,TRUE); //construction et hashage de la clé privée en SHA-256
            $this->iv = mcrypt_create_iv(32);
        }
        function encrypt($input) { //fonction d'encryptage algorithme blowfish sur base de la clé privée
            return base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, $this->securekey, $input, MCRYPT_MODE_ECB, $this->iv));
        }
        function decrypt($input) { //décryptage
            return trim(mcrypt_decrypt(MCRYPT_BLOWFISH, $this->securekey, base64_decode($input), MCRYPT_MODE_ECB, $this->iv));
        }
    }
     
    $cipher = new Cipher('secret passphrase'); //création de l'objet avec une pass phrase
     
    $encryptedtext = $cipher->encrypt("hide me"); //encryptage du texte
    echo "->encrypt = $encryptedtext<br />"; //affiche texte encrypté
     
    $decryptedtext = $cipher->decrypt($encryptedtext); //décryptage du texte
    echo "->decrypt = $decryptedtext<br />"; //affichage du texte décrypté
     
    //var_dump($cipher);
    ?>

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Le chiffrement est une problématique délicate qu'il vaut mieux laisser aux spécialistes (et je ne suis pas l'un d'entre eux, loin de là!). Il y a tellement de choses qui peuvent mal se passer et qui donnent lieu à des vulnérabilités importantes qu'il vaut mieux éviter de développer sa propre solution et qu'il faut plutôt utiliser des solutions fiables dévelopées par des experts. La moindre erreur dans ce domaine peut se payer très cher.

    N'étant pas spécialiste, je vois déjà quelques problème au sujet de ce code:
    - il utilise mcrypt. OpenSSL est largement préférable. Cet article explique en détail pourquoi il ne faut plus utiliser mcrypt, mais pour résumer: libmcrypt n'est plus mis à jour depuis 2007 (une étérnité en informatique), et non seulement n'est plus mis à jour, mais a plein de bugs non patchés; et un code écrit avec mcrypt est plus vulnérable à une attaque appelée padding oracle attack.

    - Ce code ne vérifie pas l'authenticité du message. Je pourrais lui donner n'importe quel message à déchiffrer, et il le déchiffrera sans se poser de problème, même si ce n'est pas un message valide. Or, autoriser le déchiffrement de n'importe quel message est une vulnérabilité qui peut permettre de décrypter un message, bit par bit.

    La solution est d'utiliser une bibliothèque sans vulnérabilité (pour l'instant!) et écrit par des gens qui s'y connaissent: Libsodium si tu peux installer un composant pecl sur ton serveur, ou PHP Encryption, plus facile à installer et très facile à utiliser(voir le fichier example.php), avec ou sans composer (sans composer, il suffit d'inclure le fichier autoload.php).

  3. #3
    Membre averti Avatar de DeadlyLullaby
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 19
    Par défaut
    Merci je vais porter mon choix sur php-encryption alors

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. algorithme de cryptage sous linux
    Par open_source dans le forum Linux
    Réponses: 6
    Dernier message: 16/12/2007, 23h02
  2. J'ai créé mon propre algorithme de cryptage, est-t-il résistant?
    Par dimalta5 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 14/12/2007, 17h04
  3. Réponses: 5
    Dernier message: 12/10/2007, 17h48
  4. Quel algorithme de cryptage je peux utiliser?
    Par bejaouijamil dans le forum Sécurité
    Réponses: 2
    Dernier message: 04/01/2007, 15h33
  5. Algorithme de cryptage
    Par gilles641 dans le forum C++
    Réponses: 3
    Dernier message: 12/09/2005, 07h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo