Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Niveaude difficulté : o
LukaszLach,MichalStanowski
Voussavezprobablementtous en quoi
consistela cryptographie. Vousdisposez
d'une information(parexempletexte)et vous
fa chiffrezde sorte qu'unepersonnenon
autoriséene puissepas le lire.Vousvoyezla
cryptographie tous les jours : en utilisantune
banquelnternetou en envoyantun courriel
chiffré.Toutcelaest possibleavec PHP.
deconnexion sécurisée. permet non seulement de générer le mas,disponiblesdu coté du script PHP. Le
Dans I'exemplede cet article,vous hachageHMAC-MDSmais aussi HMAC- code source de la fonction parseFormsê
égalementdes versionsHMAC
utiliserez SHAI ; vousdisposezdoncde deuxalgo- trouve ci{essous. Elle est appelée avant
deI'algorithme MDS.HMAC-MDS est une rithmessupplémentaires pour les utiliser d'envoyer le formulaire. Ce formulaire se
extensionde la fonctionde hachageMD5 dansvos projets. trouve dans la partie body du document et
contient quatre champs importants :
N'4/2006
PHPSolutions www.phpsolmag.org
que lesdonnéesconcemant le nomd,utili- Notions de la cryptogra-
sateuret le motde passeserontenvoyées p h i e - c r y p t
- de déchiffrerI'information, n'existepas.
En pratique,il s'agitd'uneautrefonction
sousformevisible.Malgrécela,vousêtes Contrairement aux suppositions, la fonc- de hachage.Regardezcommentvous
toujourscapablesde vousconnectersans tioflcrypt permetde chiffreren une seule pouvez
créer un script d'authentification
problèmes. Retournons au codesourcede direction,la fonctiondecrypr,permettant plus simple,à I'aide
de cettefonctionet
la fonctionanalysée. Si le nomd'utilisateur
ou le mot de passene sont pas précisés,
Listing 1. lmplémentation de l'atgorithme HMAC-MD|pourpHp
affichezun messageadéquatet placez
le curseurdans le champ vide. Sinon, ' php
modifiezle contenudu champ,contenant d e f i n e ' H M A C _ M D' 5 , I, ;
le mot de passeen hachageHMAC-MDS d e f i n er ' H M A C _ S H A I ' 2, , ;
function hmaci$strin9, $key, $algorithm = HMAC
de MDSdu motde passesaisiet de la clé MD5,
$algorithm = $algorithm == HMAC_MD5 'md5' : 'sha1,;
unique,disponible dansle champrey. De 'hash_hmac'
if rf u n c t i o n _ e x i s t s ,
plus,paramétrez la valeurdu champ1s r e t u r n h a s h _ h m a c$ a l g o r i t h m , $ s t r i n g , $ k e y , -
en 1 et autorisezI'envoidu formulaireen if i s s e t r$ k e v 6 4 l
retournant la valeurtrue. $ k e y = p a c k , ' H * ' , $ a l g o r i t h m g k e y r, ;
N' 4/2006
PtlPSolutions www.phpsolmag.org
la variable$salt doit comprendre douze Cr y p t o gr a ph i e présentecommentinstalleret configurer
caractèresavec la chaîne$1$au début. a v a n c é e M C r y p t - la bibliothèque.
ll s'agira de seize caractèresqui com- MCryptest une extensionPHP proposant MCryptest un outilpuissant.En vousy
mencentpar s2sou $2a$pourI'algorithme les méthodesqui permettentde chiffrer basant,vouscréerezdoncun exempleas-
Blowfish.La variablessat-r est ensuite les données à I'aide des algorithmes sez complexe.Vous écnrezune application
ajoutéeau hachagegénéré. commeDES,TripleDES, Blowfish, RC2et quivouspermettra de stockersurle serveur
Retournonsà notreexempleoù vous d'autres.La listedes algorithmes les plus les fichiersde touttypesousformechifirée.
créez un script d'authentification via le populaires,disponiblespour cette exten- Pourles chargersur le disquelocal,il fau-
protocoleHTTP.Les nomsd'utilisateurs et sion, se trouvedans le Tableau2. L'en- dra préciserun mot de passe,identique
leursmotsde passese trouverontdansle cadré lnstallationde l'ertension MCrypt à celuiutilisélors du chiftementdu docu-
fichiertexte(Listing5).
Mentionnons toutd'abordune caracté-
Listing 4. Exemplede l'utilisationde la fonctioncrypt
ristiqueintéressante de la fonctiollcrypt.
Si vous essayezde créerun hachagede php
l'information envoyéepar I'utilisateur (par $password:
rqwert!ri
'$lSabcde$','
exemple,le mot de passe)en précisant $sa1t =
$hash = crypt ! $password, $saItl ;
le hachagestockédans la base de don-
echo Shash;
néesou dansle fichier(modèledu mot de
passe)en tantQUê$sarr,la fonctiondevra
retoumerle même hachage.Cette situa- Listing 5. Format de données du fichier contenant les données des utilisateurs
' tionn'a lieuque si le motde passeprécisé
a d m i n : $ 1 $ L p 5. 2 / / . S U M L I A W J J B 9 f L R F .U 4 g S A w t
conespondà celuiutilisépourla première
u s e r : $ 1 $ h I 3 . W d O $. t h b t d l a t 0 a u C N f n T s 5 B d y l
fois pour créer le hachage.Utilisezcette
caractéristique dansvotrescriptd'authenti- Listing 6. Scnpf de validation de données /ors de l'autorisation
fication.N'oubliezpasque I'authentification
lphp
baséesur le protocoleHTTPestdisponible
d e f i n ei ' U S E R SF I L E ' , ' u s e r s . t x t ' r ;
seulementquandvotrePHPfonctionneen i f i i s s e t r $ _ S E R V E R ' P H P _ A U T H _ U S Er iR ' & & i s s e t i $ _ S E R V E R , ' P H P - A U T H - P W I ;'
tant que moduleApache.Si ce n'est pas
le cas (doncPHP fonctionneen tant que $ u s e r s = e x P l o d e i " \ n " , f i l e _ g e t _ c o n t e n t s l U S E R S _ F I L E) ;)
CGI),votreexemplene fonctionnera pas. foreachi$users as $userl
tification.ll est toutefoisrecommandéd'uti- 'daIe' int '10I unsigned default ' 0 ',
'Iength' varchar i255; default r0',
liserles algorithmes commeMDSet SHAI
' key' varch ar ',32) default NULL,
(donc les fonctionsmd5,srrar)câr I'algo- 'data'text,
rithmeDES n'estpas aussicomplexe.De PRIMARYKEY { 'id')
plus,lorsde la créationdu hachage,seuls ) TYPE=MyISAM,'
8 premierscaractèressontutilisés.
Installation
MCrypt
de I'extension
Si vous disposez du système Win-
dows, vous avez sûrement le fichier
libmcrypt.arr disponibleà télécharger
sur le site httpt/ftp.emini.dUpub/php/
win32/mcryptl. ll faut le placer dans le
répertoirec:\wndorvs\system32\.Si vous
disposez d'un autre système, visitez le
site httpt/mcrypt.sourceforge.neV,télé-
chargez les sources de la bibliothèque
et compilez-les.Afin d'utiliserl'extension
MCrypt en PHP, compilez-laavec la di-
rective-with-mcrypt [=DrR]où DIR est
d'un stockagesécunséde fichierssurle serueursousforme
Figure 2. Apptication un cheminde la bibliothèquelibmcrypt.
chiffrée
php
9fiIe: S FILES r f i l o l
Conclusion
if $file 'error' =: UPLOADERR OK && lEttPtY $ POST Nous avons présentédans cet article
une partieseulementdes fonctionnalités
i f l ! e t n P t yr $ _ P O S T ' n a m e ' ) j des fonctionscryptographiquesque vous
$fife 'name, = $ POST'name' ,. pouvezutilisezdansles applications
PHP.
SkeY = nd5 $-P.ST 'keY' ';
Dans nos exemples,nous vous avons
Sdata = file_get_contents SfiIe 'tmp_name','
$td = mcrypt module open,rdesr, " ,
'ecb', ' 'r
,'
expliquécommentprotégerles donnéeset
$subkey = substr Skey, 0, mcrypt enc get key size $td ; créer des systèmesd'authentification
sé-
$iv_size = mcrypt_enc_get_iv_size Std ; curisée.Dansles prochainsarticles,nous
Siv = mcrypt_create_iv,$iv_size, MCRYPT_RÀN
; D, vous parleronsnotammentde la bibliothè-
mcrypt generic init $td, $subkey, $iv ;
que OpenSSLet de I'envoides courriels
9encrypted_data = mcrypt_generic $td, $datar ;
mcrypt generic deinit Std; sécurisésdepuisPHP.r
m.rrfni- mnrirr I e nl nca $gd ,'