43
Sécurisez vos Sécurisez vos a a pplications pplications à à l'aide l'aide de de Microsoft Microsoft .NET .NET Framework Framework Eric Mittelette & Eric Vernié & Eric Mittelette & Eric Vernié & Pascal Belaud Pascal Belaud Relation Technique Développeurs Relation Technique Développeurs Microsoft France Microsoft France

Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Embed Size (px)

Citation preview

Page 1: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Sécurisez vosSécurisez vos a applicationspplications àà l'aidel'aide dede MicrosoftMicrosoft .NET.NET FrameworkFramework

Sécurisez vosSécurisez vos a applicationspplications àà l'aidel'aide dede MicrosoftMicrosoft .NET.NET FrameworkFramework

Eric Mittelette & Eric Vernié & Pascal Eric Mittelette & Eric Vernié & Pascal Belaud Belaud Relation Technique DéveloppeursRelation Technique DéveloppeursMicrosoft FranceMicrosoft France

Page 2: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

CeCe queque nousnous allonsallons étudierétudier

FonctionnalitésFonctionnalités dede sécuritésécurité dudu .NET.NET FrameworkFrameworkEn quoi une code .NET est plus sécurisé par défaut qu’un code natifEn quoi une code .NET est plus sécurisé par défaut qu’un code natif

Sécurité basée sur les rôles (Role Based)Sécurité basée sur les rôles (Role Based)Gestion de rôles applicatifs basés ou non sur le log-on WindowsGestion de rôles applicatifs basés ou non sur le log-on Windows

Sécurité d'accès au code (CAS)Sécurité d'accès au code (CAS)Vérification de « qui fait quoi » dans le codeVérification de « qui fait quoi » dans le code

CryptographieCryptographieEn quoi le .NET Framework simplifie t il les codes nécessitant de la En quoi le .NET Framework simplifie t il les codes nécessitant de la cryptographie. cryptographie.

SQL Server 2005 : quoi de neuf ?SQL Server 2005 : quoi de neuf ?

Page 3: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

ProgrammeProgramme

FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework

Sécurité basée sur les rôlesSécurité basée sur les rôles

Sécurité d'accès au codeSécurité d'accès au code

CryptographieCryptographie

Page 4: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

SécuritéSécurité dede l'exécutionl'exécution managéemanagée .NET.NET

LesLes fonctionnalitésfonctionnalités dede sécuritésécurité dede .NET.NET Vous aident à développer des applications sûresVous aident à développer des applications sûres

Comprennent de nombreux composants, dont :Comprennent de nombreux composants, dont :Vérification de typeVérification de type

Gestionnaire d'exceptionsGestionnaire d'exceptions

Moteur de sécuritéMoteur de sécurité

Complètent sans la remplacer la sécurité de Complètent sans la remplacer la sécurité de WindowsWindows

Page 5: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

SystèmeSystème dede typetype sécurisésécurisé

UnUn codecode dede typetype sécurisésécurisé  ::Empêche le débordement de mémoire tamponEmpêche le débordement de mémoire tamponLimite l'accès à des emplacements de mémoire Limite l'accès à des emplacements de mémoire autorisésautorisésPermet à plusieurs assemblage de s'exécuter dans Permet à plusieurs assemblage de s'exécuter dans le même processusle même processus

Les domaines d'application permettent :Les domaines d'application permettent :AppDomain : Notion de sous processus…AppDomain : Notion de sous processus…De meilleures performancesDe meilleures performancesUne plus grande sécurité du code par isolationUne plus grande sécurité du code par isolation

Page 6: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

ProtectionProtection contrecontre lele débordementdébordement dede mémoiremémoire tampontampon

LaLa vérificationvérification dudu typetype empêcheempêche lesles remplacementsremplacements arbitrairesarbitraires dansdans lala mémoiremémoireLes objets de classe Les objets de classe System.StringSystem.String .NET .NET sont immuablessont immuables

La classe La classe System.Text.StringBuilderSystem.Text.StringBuilder .NET vérifie .NET vérifie les limites du tamponles limites du tampon

void CopyString (string src){

stringDest = src;}

Page 7: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

InterceptionInterception desdes erreurserreurs arithmétiquesarithmétiques

L'interceptionL'interception desdes erreurserreurs arithmétiquesarithmétiques estest activéeactivée enen utilisantutilisant  ::

Le mot clé Le mot clé checked checked Les paramètres du projetLes paramètres du projet

byte b=0;while (true){

Console.WriteLine (b);

checked{

b++;}

}

Page 8: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Vérification du codeVérification du code

Possibilité de vérifier son code :Possibilité de vérifier son code :Option du compilateur : Csc / checked[+;-]Option du compilateur : Csc / checked[+;-]

Instruction checked/uncheckedInstruction checked/unchecked

Opérateur checked(….)Opérateur checked(….)

Page 9: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Saisie infos

Fabrique de Classe

Validation mot de passe

BDChargement des rôles

Comment éviter la saisie du mot de passe en clair ?

Affecter les politiques de sécurité en fonction des

rôles

Affichage des données

Comment faire confiance aux dlls chargées dynamiquement ?

Comment éviter que n’importe qui appel ma fabrique de classe ?

Sous quelle forme dois-je stocker le mot de passe ?

Sous quelle forme dois-je stocker la chaîne de connexion ?

Architecture simplifiée de la Architecture simplifiée de la démo démo

Qu’est-ce qui peut me garantir la sécurité d’accès de mes objets de

base de données ?

Page 10: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

DémonstrationDémonstration  11 SécuritéSécurité desdes typestypes

Buffer overrun vs .NETBuffer overrun vs .NETGestion des secrets vs stringGestion des secrets vs string

DémonstrationDémonstration  11 SécuritéSécurité desdes typestypes

Buffer overrun vs .NETBuffer overrun vs .NETGestion des secrets vs stringGestion des secrets vs string

Page 11: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

AssemblagesAssemblages avecavec nomnom fortfort

LesLes nomsnoms fortsforts sontsontDes identificateurs uniques Des identificateurs uniques (contenant une clé publique)(contenant une clé publique)Utilisés pour signer numériquement Utilisés pour signer numériquement des assemblysdes assemblys

Les assemblages avec nom fortLes assemblages avec nom fortEmpêchent la falsificationEmpêchent la falsificationConfirment l'identité de l'éditeur de Confirment l'identité de l'éditeur de l'assemblyl'assemblyAutorisent les composants côte à côteAutorisent les composants côte à côte

sn –k Ma_Clé_Complète.snk

Page 12: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Assemblies et SignatureAssemblies et Signature

[assembly: AssemblyKeyFile(@"Cle.snk")]

ILIL

Metadonnées

Manifeste

En-Tête CLR

Signature numérique RSA

Clé publique

Fichier

PE

Haché

Valeurde

hachageSigné avec

La clé privée

SignatureNumérique RSA

Intégré dans le fichier PE

Page 13: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

LeLe stockagestockage isoléisolé

FournitFournit unun systèmesystème dede fichiersfichiers virtuelvirtuel

Autorise les quotasAutorise les quotas

Met en œuvre l'isolation du Met en œuvre l'isolation du système de fichiers en fonction :système de fichiers en fonction :

De l'identité de l'applicationDe l'identité de l'application

De l'identité de l'utilisateurDe l'identité de l'utilisateur

IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly();

Page 14: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

ProgrammeProgramme

FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework

Sécurité basée sur les rôlesSécurité basée sur les rôles

Sécurité d'accès au codeSécurité d'accès au code

CryptographieCryptographie

Page 15: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

AuthentificationAuthentification etet AutorisationAutorisation

L'authentificationL'authentification demandedemande  ::««  QuiQui êtes-vousêtes-vous  ?»?»

««  Êtes-vousÊtes-vous vraimentvraiment lala personnepersonne queque vousvous prétendezprétendez êtreêtre  ??  »»

L'autorisation demande :L'autorisation demande :« Êtes-vous autorisé à … ? »« Êtes-vous autorisé à … ? »

Page 16: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

IdentitésIdentités etet entitésentités dede sécuritésécurité

UneUne identitéidentité contientcontient desdes informationsinformations sursur unun utilisateur,utilisateur, commecomme sonson nomnom dede connexionconnexion

Une entité de sécurité contient des informations Une entité de sécurité contient des informations de rôle sur un utilisateur ou un ordinateurde rôle sur un utilisateur ou un ordinateur

.NET Framework propose :.NET Framework propose :Les objetsLes objets WindowsIdentityWindowsIdentity et et WindowsPrincipalWindowsPrincipal

Les objetsLes objets GenericIdentityGenericIdentity et et GenericPrincipalGenericPrincipal

Page 17: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

CréationCréation d'identitésd'identités etet d'entitésd'entités dede sécuritésécurité WindowsWindows

UtiliserUtiliser lesles objetsobjets WindowsIdentityWindowsIdentity etet

WindowsPrincipalWindowsPrincipal pourpour  ::

Une validationUne validation

Plusieurs validationsPlusieurs validations

WindowsIdentityWindowsIdentity mon_Identmon_Ident == WindowsIdentity.GetCurrent();WindowsIdentity.GetCurrent();WindowsPrincipal mon_Ent = new WindowsPrincipal mon_Ent = new

WindowsPrincipal(mon_Ident);WindowsPrincipal(mon_Ident);

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);WindowsPrincipal mon_Ent = System.Threading.Thread.CurrentPrincipal;WindowsPrincipal mon_Ent = System.Threading.Thread.CurrentPrincipal;

Page 18: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

CréationCréation d'identitésd'identités etet d'entitésd'entités dede sécuritésécurité génériquesgénériques

CréerCréer unun objetobjet GenericIdentityGenericIdentity etet unun objetobjet GenericPrincipalGenericPrincipal

Attacher l'objet Attacher l'objet GenericPrincipalGenericPrincipal au thread au thread actuelactuel

GenericIdentityGenericIdentity mon_Identmon_Ident == newnew GenericIdentity("Utilisateur1");GenericIdentity("Utilisateur1");

string[] roles = {"Directeur", "Caissier"};string[] roles = {"Directeur", "Caissier"};GenericPrincipal mon_Ent =GenericPrincipal mon_Ent = new GenericPrincipal(mon_Ident, roles);new GenericPrincipal(mon_Ident, roles);

System.Threading.Thread.CurrentPrincipalSystem.Threading.Thread.CurrentPrincipal == mon_Ent;mon_Ent;

Page 19: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

RéalisationRéalisation dede vérificationsvérifications dede sécuritésécurité

UtiliserUtiliser lesles membresmembres identitéidentité etet entitéentité dansdans dudu codecodePar exemple, en utilisant la propriété Par exemple, en utilisant la propriété NameName de l'objet de l'objet Identity pour vérifier le nom de connexion de l'utilisateurIdentity pour vérifier le nom de connexion de l'utilisateur

Par exemple, en utilisant la méthode Par exemple, en utilisant la méthode IsInRoleIsInRole de l'objet de l'objet Principal pour vérifier l'appartenance à un rôlePrincipal pour vérifier l'appartenance à un rôle

ifif (String.Compare(mon_Ent.Identity.Name,(String.Compare(mon_Ent.Identity.Name, "DOMAINE\\Fred","DOMAINE\\Fred", true)==0)true)==0){{ // Effectuer une action// Effectuer une action}}

ifif (mon_Ent.IsInRole("BUILTIN\\Administrateurs"))(mon_Ent.IsInRole("BUILTIN\\Administrateurs")){{ // Effectuer une action// Effectuer une action}}

Page 20: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

VérificationsVérifications dede sécuritésécurité impérativesimpératives etet déclarativesdéclaratives

UtiliserUtiliser desdes autorisationsautorisations pourpour effectuereffectuer desdes vérificationsvérifications dede sécuritésécurité baséesbasées sursur lesles rôlesrôles

Vérifications impérativesVérifications impératives

PrincipalPermissionPrincipalPermission aut_Entaut_Ent == newnew PrincipalPermission("Caissier",PrincipalPermission("Caissier", “Directeur”,“Directeur”, true);true);

trytry{{ aut_Ent.Demand(); aut_Ent.Demand(); //Les éléments ci-dessus correspondent-ils à ceux de //Les éléments ci-dessus correspondent-ils à ceux de

l'entité de sécurité active ?l'entité de sécurité active ?}}

[PrincipalPermission(SecurityAction.Demand,[PrincipalPermission(SecurityAction.Demand, Role="Caissier",Role="Caissier", Authenticated=true)]Authenticated=true)]

VérificationsVérifications déclarativesdéclaratives

Page 21: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

DémonstrationDémonstration  22 SécuritéSécurité baséebasée sursur lesles rôlesrôles

DémonstrationDémonstration  22 SécuritéSécurité baséebasée sursur lesles rôlesrôles

Page 22: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

ProgrammeProgramme

FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework

Sécurité basée sur les rôlesSécurité basée sur les rôles

Sécurité d'accès au codeSécurité d'accès au code

CryptographieCryptographie

Page 23: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

SécuritéSécurité baséebasée sursur lesles preuvespreuves

LesLes preuvespreuvesSont évaluées au chargement d'un assemblySont évaluées au chargement d'un assembly

Servent à déterminer les autorisations Servent à déterminer les autorisations de l'assemblyde l'assembly

Peuvent comprendre les éléments Peuvent comprendre les éléments suivants de l'assembly :suivants de l'assembly :

Informations de nom fortInformations de nom fort

URLURL

ZoneZone

Signature AuthenticodeSignature Authenticode

Page 24: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

StratégiesStratégies dede sécuritésécurité

EntitéEntité dede sécuritésécurité DescriptionDescription

StratégieStratégie

DéfinieDéfinie parpar lesles administrateursadministrateursAppliquée au moment de Appliquée au moment de l'exécutionl'exécutionSimplifie l'administrationSimplifie l'administrationContient des autorisationsContient des autorisationsContient des groupes de codesContient des groupes de codes

GroupeGroupe dede codescodes

AssocieAssocie desdes composantscomposants similairessimilairesBasé sur les preuvesBasé sur les preuvesLié à un ou plusieurs jeux Lié à un ou plusieurs jeux d'autorisationsd'autorisations

JeuJeu d'autorisationsd'autorisations

EstEst unun ensembleensemble d'autorisationsd'autorisations accordéesaccordées

Page 25: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Parcours de pile et vérification de la sécuritéParcours de pile et vérification de la sécurité

Pile des appels

Système de sécurité

Votre_AssemblyBVotre_AssemblyB

AssemblyAAssemblyA

Assembly .NET Framework

Assembly .NET Framework

Appel à ReadFile

Appel à ReadFile

Accorder : Execute

1.1. Un Un assemblyAassemblyA demande l'accès demande l'accès à une méthode de votre à une méthode de votre assembly assembly

2.2. Votre Votre assemblyBassemblyB transmet la transmet la demande à un assembly .NET demande à un assembly .NET FrameworkFramework

3.3. Le système de sécurité vérifie Le système de sécurité vérifie que les appelants de la pile que les appelants de la pile disposent des autorisations disposent des autorisations requisesrequises

4.4. Le système de sécurité accorde Le système de sécurité accorde l'accès ou lève une exceptionl'accès ou lève une exception

Accorder : ReadFileAccorder : ReadFile

Accorder : ReadFile

Demande d'autorisation

Exception de sécurité Accès refusé

Exception de sécurité Accès refuséAccorder l'accès ?Accorder l'accès ?

Page 26: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

TypesTypes dede vérificationsvérifications dede sécuritésécurité

LesLes vérificationsvérifications dede sécuritésécurité impérativesimpérativesCréent des objets Créent des objets PermissionPermissionAppellent des méthodes Appellent des méthodes PermissionPermission

Les vérifications de sécurité déclarativesLes vérifications de sécurité déclarativesUtilisent des attributs Utilisent des attributs PermissionPermissionS'appliquent à des méthodes ou à des classesS'appliquent à des méthodes ou à des classes

Les vérifications de sécurité de substitutionLes vérifications de sécurité de substitutionUtilisent la méthode Utilisent la méthode AssertAssertEmpêchent le parcours de la pileEmpêchent le parcours de la pile

Page 27: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

DemandesDemandes d'autorisationsd'autorisations

UtiliséesUtilisées parpar lesles développeursdéveloppeurs pourpour indiquerindiquer lesles autorisationsautorisations requisesrequises

Implémentées sous forme d'attributsImplémentées sous forme d'attributs

Empêchent le chargement d'un assembly en Empêchent le chargement d'un assembly en cas d'absence des autorisations minimalescas d'absence des autorisations minimales

//Je//Je nene m'exécuteraim'exécuterai queque sisi jeje peuxpeux appelerappeler dudu codecode nonnon managémanagé

[assembly:SecurityPermission[assembly:SecurityPermission (SecurityAction.RequestMinimum,(SecurityAction.RequestMinimum, UnmanagedCode=true)]UnmanagedCode=true)]

Page 28: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

DémonstrationDémonstration  33 SécuritéSécurité d'accèsd'accès auau codecode

RéalisationRéalisation dede vérificationsvérifications dede sécuritésécuritéDemandesDemandes d'autorisationsd'autorisations

DémonstrationDémonstration  33 SécuritéSécurité d'accèsd'accès auau codecode

RéalisationRéalisation dede vérificationsvérifications dede sécuritésécuritéDemandesDemandes d'autorisationsd'autorisations

Page 29: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

ProgrammeProgramme

FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework

Sécurité basée sur les rôles Sécurité basée sur les rôles

Sécurité d'accès au codeSécurité d'accès au code

CryptographieCryptographie

Page 30: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

RappelsRappels concernantconcernant lala cryptographiecryptographie

TermeTerme dede cryptographiecryptographie DescriptionDescription

CryptageCryptage symétriquesymétrique CryptageCryptage etet décryptagedécryptage desdes donnéesdonnées avecavec uneune cléclé secrètesecrète

CryptageCryptage asymétriqueasymétrique CryptageCryptage etet décryptagedécryptage desdes donnéesdonnées avecavec uneune pairepaire cléclé publique/clépublique/clé privéeprivée

HachageHachageMappageMappage d'uned'une longuelongue chaînechaîne dede donnéesdonnées àà uneune chaînechaîne dede donnéesdonnées courte,courte, dede tailletaille fixefixe

SignatureSignature numériquenumérique HachageHachage dede donnéesdonnées etet cryptagecryptage dede lala valeurvaleur dede hachagehachage avecavec uneune cléclé privéeprivée

.NET.NET FrameworkFramework fournitfournit desdes classesclasses quiqui implémententimplémentent cesces

opérationsopérations

Page 31: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Cryptographie et Cryptographie et Framework.NETFramework.NET

Plusieurs namespaces .NET consacrés à la Plusieurs namespaces .NET consacrés à la cryptographiecryptographie

System.Security.CryptographySystem.Security.Cryptography Fournis les services cryptographiques :Fournis les services cryptographiques :

Encodage/Décodage sécurisé des donnéesEncodage/Décodage sécurisé des donnéeshashing, random number, message authentication. hashing, random number, message authentication. … …

System.Security.Cryptography.X509CertificatesSystem.Security.Cryptography.X509CertificatesAuthenticode X.509 v.3 certificate. Authenticode X.509 v.3 certificate. Le certificat est signé avec une  « private key » qui identifie Le certificat est signé avec une  « private key » qui identifie explicitement et de manière unique le propriétaire du explicitement et de manière unique le propriétaire du certificat. certificat.

System.Security.Cryptography.XmlSystem.Security.Cryptography.Xml Réservé a données XMLRéservé a données XMLPermet de signer les « objets » XML avec une signature digitalePermet de signer les « objets » XML avec une signature digitale

Page 32: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Model objet du namespace Model objet du namespace CryptographyCryptography

Algorithme TypeAlgorithme Type : (abstract class) : (abstract class)Algorithmes Symétrique et HashAlgorithmes Symétrique et Hash

Algorithme ClassAlgorithme Class : (abstract class) : (abstract class)RC2, SHA1…RC2, SHA1…

Implémentation des « Algorithmes Class »Implémentation des « Algorithmes Class »RC2CryptoServiceProvider, SHA1Managed…RC2CryptoServiceProvider, SHA1Managed…

Grâce a ce « design pattern » il est possible de faire ses propres Grâce a ce « design pattern » il est possible de faire ses propres ajouts/implémentations aux algorithmes aux différents niveaux.ajouts/implémentations aux algorithmes aux différents niveaux.

Les algorithmes symétriques et de hash sont implémentés « stream-Les algorithmes symétriques et de hash sont implémentés « stream-oriented »oriented »

La Configuration CryptographiqueLa Configuration CryptographiquePermet de résoudre les implémentations spécifiques de certains Permet de résoudre les implémentations spécifiques de certains algorithmesalgorithmes

Cryptographie et Framework.NETCryptographie et Framework.NET

Page 33: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

DPAPIDPAPI

Data Protection Data Protection APIAPI

API Windows de API Windows de cryptage cryptage décryptagedécryptage

Wrapper .NET 1.0 Wrapper .NET 1.0 et 1.1 nécessaireet 1.1 nécessaire

Accessible dans la Accessible dans la CLR 2.0 : CLR 2.0 :

Page 34: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Crytography Application BlockCrytography Application Block

http://msdn.microsoft.com/library/default.asp?http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/crypto1.aspurl=/library/en-us/dnpag2/html/crypto1.asp

Cryptography Application Block : Cryptography Application Block : Réduit le temps de développement sur le code standard de Réduit le temps de développement sur le code standard de cryptographiecryptographie

Aide à maintenir les bonnes pratiques en terme de Aide à maintenir les bonnes pratiques en terme de cryptographiecryptographie

Apprentissage aisé car le modèle d’architecture est constant Apprentissage aisé car le modèle d’architecture est constant quelque soit les fonctionnalités. quelque soit les fonctionnalités.

Fournis une implémentation standard de l’utilisation des Fournis une implémentation standard de l’utilisation des techniques de cryptographie. techniques de cryptographie.

Code extensible; supportant d’addinitionnelles Code extensible; supportant d’addinitionnelles implémentation et providers de cryptographie.implémentation et providers de cryptographie.

Page 35: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

DémonstrationDémonstration  44 CryptageCryptage .NET.NET FrameworkFramework

CryptageCryptage des données des donnéesPAG SecurityPAG Security

DémonstrationDémonstration  44 CryptageCryptage .NET.NET FrameworkFramework

CryptageCryptage des données des donnéesPAG SecurityPAG Security

Page 36: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

ProgrammeProgramme

FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework

Sécurité basée sur les rôles Sécurité basée sur les rôles

Sécurité d'accès au codeSécurité d'accès au code

CryptographieCryptographie

SQL Server 2005 : quoi de neuf ?SQL Server 2005 : quoi de neuf ?

Page 37: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

SQL Server 2005SQL Server 2005

Conférence SQL DAYS 2005Conférence SQL DAYS 2005Paris, le 9 juin 2005Paris, le 9 juin 2005

Marseille, le 14 juin 2005Marseille, le 14 juin 2005

Toulouse, le 16 juin 2005Toulouse, le 16 juin 2005

Une journée gratuiteUne journée gratuite

www.microsoft.com/france/sql/www.microsoft.com/france/sql/sqldays.aspxsqldays.aspx

Page 38: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

RésuméRésumé dede lala sessionsession

FonctionnalitésFonctionnalités dede sécuritésécurité dede .NET.NET FrameworkFramework

Sécurité d'accès au codeSécurité d'accès au code

Sécurité basée sur les rôlesSécurité basée sur les rôles

CryptographieCryptographie

SQL Server 2005SQL Server 2005

Page 39: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

ÉtapesÉtapes suivantessuivantes

1.1. ÊtreÊtre informéinformé sursur lala sécuritésécurité S'inscrire aux bulletins de sécurité :S'inscrire aux bulletins de sécurité :

http://www.microsoft.com/security/security_bulletins/alerts2.asphttp://www.microsoft.com/security/security_bulletins/alerts2.asp (en anglais)(en anglais)

Obtenir l'aide la plus récente de Microsoft sur la sécurité :Obtenir l'aide la plus récente de Microsoft sur la sécurité :http://www.microsoft.com/france/securite/default.asphttp://www.microsoft.com/france/securite/default.asp

2.2. Obtenir des activités de formation Obtenir des activités de formation supplémentaires sur la sécuritésupplémentaires sur la sécurité1.1. Trouver des séminaires de formation :Trouver des séminaires de formation :

http://www.microsoft.com/france/events/default.asphttp://www.microsoft.com/france/events/default.asp

1.1. Trouver un centre de formation local agréé Microsoft Trouver un centre de formation local agréé Microsoft (CTEC) pour des cours pratiques :(CTEC) pour des cours pratiques :http://www.microsoft.com/france/formation/centres/recherche.asphttp://www.microsoft.com/france/formation/centres/recherche.asp

Page 40: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

PourPour plusplus d'informationsd'informations

SiteSite MicrosoftMicrosoft sursur lala sécuritésécurité (tout(tout public)public)http://www.microsoft.com/france/securite/default.ashttp://www.microsoft.com/france/securite/default.aspp

Site MSDN sur la sécurité (développeurs)Site MSDN sur la sécurité (développeurs)http://msdn.microsoft.com/securityhttp://msdn.microsoft.com/security (en anglais) (en anglais)

Site TechNet sur la sécurité (informaticiens)Site TechNet sur la sécurité (informaticiens)http://www.microsoft.com/france/technet/themes/http://www.microsoft.com/france/technet/themes/secursecur/default.asp/default.asp

Page 41: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

QuestionsQuestions etet réponsesréponses

Page 42: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft
Page 43: Sécurisez vos applications à l'aide de Microsoft.NET Framework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft

Saisie infos

Fabrique de Classe

Validation mot de passe

Chargement des rôles

Affecter les politiques de sécurité

BD

Comment éviter la saisie du mot de passe en claire ?

Affichage des données

Comment faire confiance dans les dlls chargées dynamiquement ?

Comment faire confiance qui appel ma fabrique de classe ?

Sous quelle forme dois-je stocker le mot de passe ?

Sous quelle forme dois-je stocker la chaînes de connexion ?