Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié...

30
Développement Développement Sécurisé Sécurisé Tour Novembre-Décembre Tour Novembre-Décembre 2005 2005 Eric Mittelette, Eric Vernié [email protected] [email protected] Microsoft France – DPE Novembre 2005

Transcript of Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié...

Page 1: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Développement Développement SécuriséSécurisé

Tour Novembre-Décembre 2005Tour Novembre-Décembre 2005

Eric Mittelette, Eric Vernié[email protected]@microsoft.com Microsoft France – DPENovembre 2005

Page 2: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

AgendaAgenda

Partie I : Méthodologie Partie I : Méthodologie Sécurité et le développementSécurité et le développement

Partie II : Hack et codePartie II : Hack et codeTop X des problèmes de développementTop X des problèmes de développement

ConclusionConclusion

Page 3: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Partie I: Sécurité et le Partie I: Sécurité et le développement développement

Stratégie de sécurité MicrosoftStratégie de sécurité MicrosoftSD3 - SDLSD3 - SDL

Analyse des risques, outils, méthodologie Analyse des risques, outils, méthodologie

Stratégie de développement sécuriséStratégie de développement sécuriséInformatique de confiance et SDL (WSI)Informatique de confiance et SDL (WSI)

STRIDE Model et analyse des menaces …STRIDE Model et analyse des menaces …

Security et ressource humaine…Security et ressource humaine…

Outils de test et d’analyse de code …Outils de test et d’analyse de code …

PAG de sécuritéPAG de sécuritéhttp://msdn.microsoft.com/library/default.asp?url=/lihttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/SecurityGuidanceIndex.asbrary/en-us/dnpag2/html/SecurityGuidanceIndex.aspp

Page 4: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Les 10 grandes règles de sécuritéLes 10 grandes règles de sécurité Qu'un développeur doit connaître pour protéger son codeQu'un développeur doit connaître pour protéger son code

Se méfier des entrées utilisateurSe méfier des entrées utilisateurSe protéger contre les saturations de tamponSe protéger contre les saturations de tamponÉviter les scripts inter-siteÉviter les scripts inter-siteN'exigez pas d'autorisations d'administrateur N'exigez pas d'autorisations d'administrateur système (sa)système (sa)Attention au code de cryptage !Attention au code de cryptage !Réduisez votre profil d'attaqueRéduisez votre profil d'attaqueUtilisez le principe du moindre privilègeUtilisez le principe du moindre privilègeFaites attention aux modes de défaillanceFaites attention aux modes de défaillanceL'emprunt d'identité est fragileL'emprunt d'identité est fragile

Écrivez des applications que les non-administrateurs Écrivez des applications que les non-administrateurs puissent réellement utiliserpuissent réellement utiliser

Page 5: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Partie IIPartie II

« Top 10 » des questions de sécurité« Top 10 » des questions de sécuritéContrôle des saisiesContrôle des saisies

Problèmes liés à la localisationProblèmes liés à la localisation

Protéger un secretProtéger un secret

Utiliser la cryptographieUtiliser la cryptographie

Problèmes de déni de serviceProblèmes de déni de service

Contrôler l’exécution du codeContrôler l’exécution du code

Sécurité et gestion des rôlesSécurité et gestion des rôles

Propriétés intellectuellePropriétés intellectuelle

Sécuriser un site WEBSécuriser un site WEB

Sécuriser un Web ServiceSécuriser un Web Service

Page 6: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Toute saisie est source de Toute saisie est source de problèmeproblème

Point fondamental lors de la conception Point fondamental lors de la conception

Identifier au plus tôt saisie,règles de saisieIdentifier au plus tôt saisie,règles de saisieSaisie et Buffer overrun dans le code C/C++Saisie et Buffer overrun dans le code C/C++

Les formes canoniques (piège dans les url)Les formes canoniques (piège dans les url)

Saisie et base de données (Sql injection)Saisie et base de données (Sql injection)

Saisie sur le Web et XSS (cross scripting site)Saisie sur le Web et XSS (cross scripting site)

Denis de service et robustesse des codesDenis de service et robustesse des codes

http://www.microsoft.com/france/technet/securite/secmod94.mspx#EIBAC

Page 7: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

void UnSafe (const char* uncheckedData)

{

int anotherLocalVariable;

strcpy (localVariable, uncheckedData);

}

char localVariable[4];

ExempleExemple dede débordementdébordement dede lala pilepile

Haut de la pile

char[4]

int

Adresse de retour

Page 8: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

DébordementDébordement dede segmentssegments dede mémoiremémoire

RemplaceRemplace lesles donnéesdonnées stockéesstockées dansdans lele segmentsegment

Plus difficile à exploiter qu'un Plus difficile à exploiter qu'un débordement de mémoire tampondébordement de mémoire tamponDonnées

Pointeur

Données

Données

Pointeur

Pointeur

strcpystrcpy xxxxxxxxxxxxxxxxxxxxxxxxxxxx

Page 9: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Problèmes liés à la Problèmes liés à la localisationlocalisation

La localisation peut être une source de La localisation peut être une source de faille de sécurité.faille de sécurité.

Notamment en C/C++ et lors de la Notamment en C/C++ et lors de la manipulation des chaines UNICODEmanipulation des chaines UNICODE

MultiByteToWideCharMultiByteToWideChar() ()

Outil d’analyse statique de codeOutil d’analyse statique de code/Analyse et VS2005 (C++)/Analyse et VS2005 (C++)

http://www.microsoft.com/france/technet/securite/default.mspx

Page 10: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

PausePause

Page 11: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Protéger un secretProtéger un secret

Identifier les données « secrètes » de Identifier les données « secrètes » de l’applicationl’application

Chaîne de connexionChaîne de connexionSaisie d’un mot de passeSaisie d’un mot de passeSecureString SecureString

Gestion des mots de passe dans .NET vs natifGestion des mots de passe dans .NET vs natif

Utiliser la cryptographie et choisir la Utiliser la cryptographie et choisir la bonne approche…bonne approche…

Ne pas ré inventer la roueNe pas ré inventer la roueRester à jour des hack et paradesRester à jour des hack et parades

http://www.microsoft.com/france/msdn/securite/secmod39.mspx

Page 12: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Utiliser la CryptographieUtiliser la Cryptographie

Différents algorithmesDifférents algorithmesSymétrique – asymétriqueSymétrique – asymétriqueHashHashSignature, et certificatSignature, et certificat

.NET encapsule certains d’entre eux.NET encapsule certains d’entre euxCas concrets:Cas concrets:

Comment transmettre un secret à un Comment transmettre un secret à un utilisateur utilisateur Gérer le mot de passe de l’utilisateurGérer le mot de passe de l’utilisateur

http://www.microsoft.com/france/msdn/securite/secmod39.mspx

Page 13: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Problème de Déni de Problème de Déni de service service 

L’attaque vise a mettre a genoux les L’attaque vise a mettre a genoux les application serveurapplication serveur

Buffer énorme, recherche de faille Buffer énorme, recherche de faille technique, hack sur les services du technique, hack sur les services du serveur…serveur…

Utilisation abusive du compte sa pour Utilisation abusive du compte sa pour une base de donnéesune base de données

http://www.microsoft.com/france/technet/securite/secmod97.mspx Menaces et contre mesure :http://www.microsoft.com/france/technet/securite/secmod75.mspx

Page 14: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Contrôle de l’exécution du Contrôle de l’exécution du code .NETcode .NET

Code Access SecurityCode Access SecurityInitiative .NET de contrôle de l’exécution d’un codeInitiative .NET de contrôle de l’exécution d’un codeTout code appartient a un groupe de code, un groupe de code Tout code appartient a un groupe de code, un groupe de code va posséder un jeu d’autorisation.va posséder un jeu d’autorisation.On peut créer ses jeux de permissionOn peut créer ses jeux de permission

Entité de sécurité

Description

StratégieStratégie

Définie par les administrateursAppliquée au moment de l'exécutionSimplifie l'administrationContient des autorisationsContient des groupes de codes

GroupeGroupe dede codescodes

Associe des composants similairesBasé sur les preuvesLié à un ou plusieurs jeux d'autorisations

JeuJeu d'autorisationsd'autorisations

Est un ensemble d'autorisations accordées

http://www.microsoft.com/france/technet/securite/secmod79.mspx

Page 15: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Gestion des rôles Gestion des rôles applicatifs .NETapplicatifs .NETNotion d’ Identificateur et de RôlesNotion d’ Identificateur et de Rôles

Comparable au mécanisme COM+Comparable au mécanisme COM+

Rôle et users peuvent être des Rôle et users peuvent être des comptes/groupes NT ou créé par la logique comptes/groupes NT ou créé par la logique applicativeapplicative

Couplage « de fait » avec ActiveDirectory…Couplage « de fait » avec ActiveDirectory…

Et/ou Rôles ApplicatifsEt/ou Rôles Applicatifs

Role Based Security est traité au même niveau Role Based Security est traité au même niveau que Code Access Securityque Code Access Security

Même mécanisme d’interception/EceptionMême mécanisme d’interception/Eception

Utilise l’Objet : PrincipalPermissionUtilise l’Objet : PrincipalPermissionL’application en cours doit en avoir les droits…L’application en cours doit en avoir les droits…

Le rôle est porté par la thread d’exécution…Le rôle est porté par la thread d’exécution…http://www.microsoft.com/france/technet/securite/secmod80.mspx

Page 16: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Protection de la propriété Protection de la propriété intellectuelleintellectuelle

Le code MSIL est lisible, et l’on peut y Le code MSIL est lisible, et l’on peut y comprendre les algorithmes utiliséscomprendre les algorithmes utilisés

Les Obfuscator sont la réponseLes Obfuscator sont la réponseAttention aux idées reçue sur .NETAttention aux idées reçue sur .NET

Dé assemblage et code natif…Dé assemblage et code natif…

http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vsent7/html/vxoriDesignConsiderationsForDistributedApplications.asp

Page 17: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Sécuriser un site WEBSécuriser un site WEB

Authentification ASP.NETAuthentification ASP.NETConfig.webConfig.web

Windows, Passport, Forms, NoneWindows, Passport, Forms, None

En accord avec l’Authentification En accord avec l’Authentification IISIIS

AnonymeAnonyme

Basic/DigestBasic/Digest

IntegratedIntegrated

Autorisation (web.config)Autorisation (web.config)allowallow

denydeny

http://www.microsoft.com/france/technet/securite/secmod08.mspx

Page 18: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Sécuriser un WebServiceSécuriser un WebService

WS-I WS-*WS-I WS-*Sécurité indépendante des couches de Sécurité indépendante des couches de transportstransports

Travail sur les enveloppes SOAP (header)Travail sur les enveloppes SOAP (header)

http://www.microsoft.com/france/technet/securite/secmod10.mspx

Page 19: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Service Web et la sécurité Service Web et la sécurité La sécurité se décline en plusieurs notionsLa sécurité se décline en plusieurs notions

AuthentificationAuthentificationPasser une identité au Service WebPasser une identité au Service Web

AutorisationAutorisationDonner des droits sur des ressourcesDonner des droits sur des ressources

Confidentialité des donnéesConfidentialité des donnéesContrôler les données Contrôler les données

Intégrité des donnéesIntégrité des donnéesAssurer que les données ne soient pas altéréesAssurer que les données ne soient pas altérées

Dénie de ServiceDénie de ServiceBloquer les accès aux ServicesBloquer les accès aux Services

Page 20: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

SécuritéSécurité dede niveauniveau messagemessage Les messages XML

transmettent des informations de sécurité

Informations d'identification

Signatures numériques

Les messages peuvent être cryptés

Client

Transport

Service

TransportTout transport

XML

XML XML

XMLLa sécurité est indépendante

du protocole de transport

Page 21: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Sécurité au niveau Sécurité au niveau ApplicatifApplicatifAuthentificationAuthentification

Étendre le modèle de Service Web ASP.NETÉtendre le modèle de Service Web ASP.NETUtilisation d’en-têtes SOAP personnalisésUtilisation d’en-têtes SOAP personnalisésFlexibilité d’utiliser son propre mécanismeFlexibilité d’utiliser son propre mécanisme

Intégrité et ConfidentialitéIntégrité et ConfidentialitéUtilisation des APIs de cryptographie et les Utilisation des APIs de cryptographie et les standards du Web en terme de signatures et standards du Web en terme de signatures et d’encryptaged’encryptageAlternative : est l’utilisation de SSL combiné avec Alternative : est l’utilisation de SSL combiné avec les entêtes SOAPles entêtes SOAP

Quand l’utiliser ?Quand l’utiliser ?Utilisation de schémas de bases de données Utilisation de schémas de bases de données existant pour la validation d’utilisateurs ou de rôlesexistant pour la validation d’utilisateurs ou de rôlesCrypter une partie du message plutôt que la Crypter une partie du message plutôt que la totalité du fluxtotalité du fluxIndépendant du transportIndépendant du transport

Page 22: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

WS-* Architecture des SpécificationsWS-* Architecture des Spécifications

Transports HTTP , HTTPS, SMTP, TCP…Transports HTTP , HTTPS, SMTP, TCP…

XML XML, XSD, XPath XML XML, XSD, XPath

Messaging SOAP, WS-AddressingMessaging SOAP, WS-Addressing

SecurityWS-Security

WS-TrustWS-Federation

SecurityWS-Security

WS-TrustWS-Federation

ReliabilityWS-ReliableMessaging

ReliabilityWS-ReliableMessaging

TransactionsWS-BusinessActivity

WS-CoordinationWS-AtomicTransaction

TransactionsWS-BusinessActivity

WS-CoordinationWS-AtomicTransaction

Met

adat

aW

SD

L, W

S-P

olic

y

Met

adat

aW

SD

L, W

S-P

olic

y

Livre blanc commun IBM Microsoft:Livre blanc commun IBM Microsoft:

http://msdn.microsoft.com/webServices/default.aspx?pull=/library/en-us/dnwebsrv/html/wsoverview.asphttp://msdn.microsoft.com/webServices/default.aspx?pull=/library/en-us/dnwebsrv/html/wsoverview.asp

Page 23: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Web Services ArchitectureWeb Services Architecture

Modulaire : Composition d’en-têtes SOAPModulaire : Composition d’en-têtes SOAP

Largement adoptéeLargement adoptée

Toutes nouvelles spécifications XML sont étudiées par Toutes nouvelles spécifications XML sont étudiées par l’organisme WS-Il’organisme WS-I

L’industrie centralise ses efforts sur l’interopérabilité des outils L’industrie centralise ses efforts sur l’interopérabilité des outils et des plates-formes autour de Services Webet des plates-formes autour de Services Web

On réutilise, on ne réinvente pasOn réutilise, on ne réinvente pas

Tous les modules sont indépendants des plates-Tous les modules sont indépendants des plates-formes et langagesformes et langages

Page 24: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Modulaire : ExempleModulaire : Exemple

Sécurité Et

Licence

Routage

<?xml version="1.0" encoding="utf-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <S:Header> <m:path xmlns:m="http://schemas.xmlsoap.org/rp"> <m:action>http://tickers-r-us.org/getQuote</m:action> <m:to>soap://tickers-r-us.org/stocks</m:to> <m:from>mailto:[email protected]</m:from> <m:id>uuid:84b9f5d0-33fb-4a81-b02b-5b760641c1d6</m:id> </m:path> <wssec:credentials xmlns:wssec="http://schemas.xmlsoap.org/ws/2001/10/security"> <wslic:binaryLicense xmlns:wslic="http://schemas.xmlsoap.org/ws/2001/10/licenses" wslic:valueType="wslic:x509v3" xsi:type="xsd:base64Binary">      dWJzY3JpYmVyLVBlc…..eFw0wMTEwMTAwMD </wslic:binaryLicense> </wssec:credentials> </S:Header> <S:Body> <tru:StockSymbol xmlns:tru="http://tickers-r-us.org/payloads"> QQQ </tru:StockSymbol> </S:Body></S:Envelope>

MessageMessageSOAPSOAP

Page 25: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Implémentation MicrosoftImplémentation Microsoft

Web Services Enhancements 1.0 ,2.0 et Web Services Enhancements 1.0 ,2.0 et 3.0 pour Microsoft .NET3.0 pour Microsoft .NET

Nouvelle bibliothèque de classes Nouvelle bibliothèque de classes Microsoft .NET de Services Web Microsoft .NET de Services Web (Microsoft.Web.Services)(Microsoft.Web.Services)

Page 26: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Runtime WSE …Runtime WSE …

Moteur d’application des Moteur d’application des protocoles WS-*, à des protocoles WS-*, à des messages SOAPmessages SOAP

Fournit un modèle de Fournit un modèle de programmation pour manipuler programmation pour manipuler les entêtes SOAP.les entêtes SOAP.

Implémentation côté client et Implémentation côté client et serveurserveur

Notion de pipelines et de filtresNotion de pipelines et de filtresLecture des entêtes SOAP entrantLecture des entêtes SOAP entrant

Écriture dans les entêtes SOAP Écriture dans les entêtes SOAP sortantsortant

Transformation du corps SOAP Transformation du corps SOAP (Cryptage)(Cryptage)

Page 27: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

Ma boite à outilMa boite à outil

Les outilsLes outilsCAS cnfg et Caspol…CAS cnfg et Caspol…FxCop, /AnalyseFxCop, /AnalyseTest unitaires intégrés dans VS2005Test unitaires intégrés dans VS2005ObfuscatorObfuscatorOutil de hacking, pour tester les attaques Outil de hacking, pour tester les attaques connuesconnuesOutil de configuration du WEB (ASP-v2)Outil de configuration du WEB (ASP-v2)Et la presse…d’éric !Et la presse…d’éric !

Page 28: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

ConclusionConclusion

Restons vigilant !Restons vigilant !

Cycle itératifs sur la sécurité dés la Cycle itératifs sur la sécurité dés la phase de conception jusqu’à la phase phase de conception jusqu’à la phase de maintenance…de maintenance…

Créer une équipe sécurité, penser à la Créer une équipe sécurité, penser à la formation et mise a jour annuelle des formation et mise a jour annuelle des développeursdéveloppeurs

S’équiper d’outils de test et de S’équiper d’outils de test et de mesures…mesures…

Page 29: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.

RessourceRessource

Writing Secure Code – M HowardWriting Secure Code – M HowardOuvrage de référence pour les Ouvrage de référence pour les développeursdéveloppeursSDL et publicationSDL et publication

PAGPAGGuideline pour la securité avec code à Guideline pour la securité avec code à l’appuisl’appuis

Centre de développements sur MSDNCentre de développements sur MSDNWebcast de ces rencontresWebcast de ces rencontresDémo, webcast articles, réguliersDémo, webcast articles, réguliers

http://www.microsoft.com/france/msdn/securite/default.mspx

Page 30: Développement Sécurisé Tour Novembre-Décembre 2005 Eric Mittelette, Eric Vernié ericmitt@microsoft.com ericv@microsoft.com Microsoft France – DPE Novembre.