
Simple Encryption in PHP.
composer require defuse/php-encryption
Ceci est une bibliothèque permettant de chiffrer des données avec une clé ou un mot de passe en PHP. Elle nécessite PHP 5.6 ou plus récent et OpenSSL 1.0.1 ou plus récent. Nous recommandons d'utiliser une version de PHP qui bénéficie encore d'un support de sécurité, ce qui, au moment de la rédaction, signifie PHP 8.0 ou ultérieur. L'utilisation de cette bibliothèque avec une version non prise en charge de PHP pourrait entraîner des vulnérabilités de sécurité.
La version actuelle de php-encryption est la v2.4.0. Cette bibliothèque devrait
rester stable et être maintenue par ses auteurs avec des correctifs de sécurité et de bogues jusqu'au
moins le 1er janvier 2024.
La bibliothèque est le fruit d'un effort conjoint de Taylor Hornby et Scott Arciszewski ainsi que de nombreux contributeurs open-source.
Ce qui distingue cette bibliothèque des autres bibliothèques de chiffrement PHP, c'est, premièrement, qu'elle est sécurisée. Les auteurs rencontraient quotidiennement du code de chiffrement PHP non sécurisé, c'est pourquoi ils ont créé cette bibliothèque pour apporter davantage de sécurité à l'écosystème. Deuxièmement, cette bibliothèque est « difficile à mal utiliser ». Comme libsodium, son API est conçue pour être facile à utiliser de manière sécurisée et difficile à utiliser de manière non sécurisée.
Cette bibliothèque ne nécessite aucune dépendance particulière, hormis PHP 5.6 ou plus récent avec les extensions OpenSSL (version 1.0.1 ou ultérieure) activées (c'est le réglage par défaut). Elle utilise random_compat, qui est intégré à cette bibliothèque afin que vos utilisateurs n'aient pas à suivre de procédure d'installation particulière.
Commencez par le Tutoriel. Vous trouverez des instructions pour obtenir le code de cette bibliothèque de manière sécurisée dans la documentation Installation et Vérification.
Après avoir lu le tutoriel et obtenu le code, reportez-vous à la documentation formelle pour chacune des classes fournies par cette bibliothèque :
Si vous rencontrez des difficultés, consultez les réponses de la FAQ. Les correctifs des problèmes les plus fréquemment signalés y sont expliqués.
Si vous êtes cryptographe et souhaitez comprendre les détails les plus pointus du fonctionnement de cette bibliothèque, consultez la documentation Détails de cryptographie.
Si vous souhaitez contribuer à cette bibliothèque, consultez la Documentation interne pour les développeurs.
Cette bibliothèque est destinée aux logiciels PHP côté serveur qui doivent chiffrer des données au repos. Si vous développez un logiciel nécessitant un chiffrement côté client, ou si vous construisez un système exigeant une prise en charge multiplateforme du chiffrement/déchiffrement, nous recommandons vivement d'utiliser libsodium à la place.
Si la documentation ne vous suffit pas pour comprendre comment utiliser cette bibliothèque, vous pouvez consulter un exemple de projet qui l'utilise :
Ce code n'a pas fait l'objet d'un audit de sécurité formel et rémunéré. Cependant, il a reçu de nombreuses relectures de la part de membres de la communauté de la sécurité PHP, et les auteurs sont expérimentés en cryptographie. Selon toute vraisemblance, vous êtes plus en sécurité en utilisant cette bibliothèque qu'avec presque toute autre bibliothèque de chiffrement pour PHP.
Si vous utilisez cette bibliothèque dans le cadre de votre activité et souhaitez contribuer au financement d'un audit formel, veuillez contacter Taylor Hornby.
La clé publique GnuPG utilisée pour signer les versions actuelles et nouvelles est disponible dans dist/signingkey-new.asc. Son empreinte est :
6DD6 E677 0281 5846 FC85 25A3 DD2E 507F 7BDB 1669
Vous pouvez la vérifier sur la page de contact de Taylor Hornby et sur twitter.
Les versions plus anciennes étaient signées avec une clé (désormais expirée) disponible dans dist/signingkey-old.asc. L'empreinte de l'ancienne clé est :
2FA6 1D8D 99B9 2658 6BAC 3D53 385E E055 A129 1538
L'empreinte de l'ancienne clé peut être vérifiée sur la page de contact de Taylor Hornby et sur twitter.
Une signature de cette nouvelle clé par l'ancienne clé est disponible dans dist/signingkey-new.asc.sig.