1 / 43

S é curisez vos a pplications à l'aide de Microsoft .NET Framework

S é curisez vos a pplications à l'aide de Microsoft .NET Framework. Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft France. Ce que nous allons é tudier. Fonctionnalit é s de s é curit é du .NET Framework

lynley
Télécharger la présentation

S é curisez vos a pplications à l'aide de Microsoft .NET Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sécurisez vos applicationsàl'aidedeMicrosoft.NETFramework Eric Mittelette & Eric Vernié & Pascal Belaud Relation Technique Développeurs Microsoft France

  2. Cequenousallonsétudier • Fonctionnalitésdesécuritédu.NETFramework • En 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) • Gestion de rôles applicatifs basés ou non sur le log-on Windows • Sécurité d'accès au code (CAS) • Vérification de « qui fait quoi » dans le code • Cryptographie • En quoi le .NET Framework simplifie t il les codes nécessitant de la cryptographie. • SQL Server 2005 : quoi de neuf ?

  3. Programme • Fonctionnalitésdesécuritéde.NETFramework • Sécurité basée sur les rôles • Sécurité d'accès au code • Cryptographie

  4. Sécuritédel'exécutionmanagée.NET • Lesfonctionnalitésdesécuritéde.NET • Vous aident à développer des applications sûres • Comprennent de nombreux composants, dont: • Vérification de type • Gestionnaire d'exceptions • Moteur de sécurité • Complètent sans la remplacer la sécurité de Windows

  5. Systèmedetypesécurisé • Uncodedetypesécurisé: • Empêche le débordement de mémoire tampon • Limite l'accès à des emplacements de mémoire autorisés • Permet à plusieurs assemblage de s'exécuter dans le même processus • Les domaines d'application permettent: • AppDomain : Notion de sous processus… • De meilleures performances • Une plus grande sécurité du code par isolation

  6. Protectioncontreledébordementdemémoiretampon • Lavérificationdutypeempêchelesremplacementsarbitrairesdanslamémoire • Les objets de classe System.String .NET sont immuables • La classe System.Text.StringBuilder .NET vérifie les limites du tampon voidCopyString(stringsrc) { stringDest = src; }

  7. Interceptiondeserreursarithmétiques • L'interceptiondeserreursarithmétiquesestactivéeenutilisant: • Le mot cléchecked • Les paramètres du projet byteb=0; while (true) { Console.WriteLine (b); checked { b++; } }

  8. Vérification du code • Possibilité de vérifier son code : • Option du compilateur : Csc / checked[+;-] • Instruction checked/unchecked • Opérateur checked(….)

  9. Architecture simplifiée de la démo Saisie infos Fabrique de Classe BD Validation mot de passe Chargement des rôles Affecter les politiques de sécurité en fonction des rôles Comment éviter la saisie du mot de passe en clair ? Comment éviter que n’importe qui appel ma fabrique de classe ? Comment faire confiance aux dlls chargées dynamiquement ? Sous quelle forme dois-je stocker le mot de passe ? Sous quelle forme dois-je stocker la chaîne de connexion ? Qu’est-ce qui peut me garantir la sécurité d’accès de mes objets de base de données ?

  10. Démonstration1SécuritédestypesBuffer overrun vs .NETGestion des secrets vs string

  11. Assemblagesavecnomfort • Lesnomsfortssont • Des identificateurs uniques (contenantuneclé publique) • Utilisés pour signer numériquement desassemblys • Les assemblages avec nom fort • Empêchent la falsification • Confirment l'identité de l'éditeur de l'assembly • Autorisent les composants côte à côte sn–kMa_Clé_Complète.snk

  12. Assemblies et Signature IL En-Tête CLR Signature numérique RSA [assembly: AssemblyKeyFile(@"Cle.snk")] Valeur de hachage Signature Numérique RSA Metadonnées Fichier PE Haché Signé avec La clé privée Manifeste Clé publique Intégré dans le fichier PE

  13. Lestockageisolé • Fournitunsystèmedefichiersvirtuel • Autorise les quotas • Met en œuvre l'isolation du système de fichiers en fonction: • De l'identité de l'application • De l'identité de l'utilisateur IsolatedStorageFileisoStore=IsolatedStorageFile.GetUserStoreForAssembly();

  14. Programme • Fonctionnalitésdesécuritéde.NETFramework • Sécurité basée sur les rôles • Sécurité d'accès au code • Cryptographie

  15. AuthentificationetAutorisation • L'authentificationdemande: • «Quiêtes-vous?» • «Êtes-vousvraimentlapersonnequevousprétendezêtre?» • L'autorisation demande: • « Êtes-vous autoriséà… ? »

  16. Identitésetentitésdesécurité • Uneidentitécontientdesinformationssurunutilisateur,commesonnomdeconnexion • Une entité de sécurité contient des informations de rôle sur un utilisateur ou un ordinateur • .NET Framework propose: • Les objetsWindowsIdentity et WindowsPrincipal • Les objetsGenericIdentity et GenericPrincipal

  17. Créationd'identitésetd'entitésdesécuritéWindows • UtiliserlesobjetsWindowsIdentityetWindowsPrincipalpour: • Une validation • Plusieurs validations WindowsIdentitymon_Ident=WindowsIdentity.GetCurrent(); WindowsPrincipal mon_Ent = new WindowsPrincipal(mon_Ident); AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); WindowsPrincipal mon_Ent = System.Threading.Thread.CurrentPrincipal;

  18. Créationd'identitésetd'entitésdesécuritégénériques • CréerunobjetGenericIdentityetunobjetGenericPrincipal • Attacher l'objet GenericPrincipal au thread actuel GenericIdentitymon_Ident=newGenericIdentity("Utilisateur1"); string[] roles = {"Directeur", "Caissier"}; GenericPrincipal mon_Ent = new GenericPrincipal(mon_Ident, roles); System.Threading.Thread.CurrentPrincipal=mon_Ent;

  19. Réalisationdevérificationsdesécurité • Utiliserlesmembresidentitéetentitédansducode • Par exemple, en utilisant la propriétéName de l'objet Identity pour vérifier le nom de connexion de l'utilisateur • Par exemple, en utilisant la méthode IsInRole de l'objet Principal pour vérifier l'appartenance à un rôle if(String.Compare(mon_Ent.Identity.Name,"DOMAINE\\Fred", true)==0) { // Effectuer une action } if(mon_Ent.IsInRole("BUILTIN\\Administrateurs")) { // Effectuer une action }

  20. Vérificationsdesécuritéimpérativesetdéclaratives • Utiliserdesautorisationspoureffectuerdesvérificationsdesécuritébaséessurlesrôles • Vérifications impératives PrincipalPermissionaut_Ent=newPrincipalPermission("Caissier",“Directeur”,true); try { aut_Ent.Demand(); //Les éléments ci-dessus correspondent-ils à ceux de l'entité de sécurité active ? } • Vérificationsdéclaratives [PrincipalPermission(SecurityAction.Demand,Role="Caissier",Authenticated=true)]

  21. Démonstration2Sécuritébaséesurlesrôles

  22. Programme • Fonctionnalitésdesécuritéde.NETFramework • Sécurité basée sur les rôles • Sécurité d'accès au code • Cryptographie

  23. Sécuritébaséesurlespreuves • Lespreuves • Sont évaluées au chargement d'un assembly • Servent à déterminer les autorisations del'assembly • Peuvent comprendre les éléments suivants de l'assembly: • Informations de nom fort • URL • Zone • Signature Authenticode

  24. Stratégiesdesécurité

  25. Parcours de pile et vérification de la sécurité Appel à ReadFile Appel à ReadFile 1. Un assemblyA demande l'accès à une méthode de votre assembly 2. Votre assemblyB transmet la demande à un assembly .NET Framework 3. Le système de sécurité vérifie que les appelants de la pile disposent des autorisations requises 4. Le système de sécurité accorde l'accès ou lève une exception Pile des appels AssemblyA Accorder : Execute Votre_AssemblyB Accorder : ReadFile Demande d'autorisation Système de sécurité Assembly .NET Framework Exception de sécuritéAccès refusé Accorder l'accès ? Accorder : ReadFile

  26. Typesdevérificationsdesécurité • Lesvérificationsdesécuritéimpératives • Créent des objets Permission • Appellent des méthodes Permission • Les vérifications de sécurité déclaratives • Utilisent des attributs Permission • S'appliquent à des méthodes ou à des classes • Les vérifications de sécurité de substitution • Utilisent la méthode Assert • Empêchent le parcours de la pile

  27. Demandesd'autorisations • Utiliséesparlesdéveloppeurspourindiquerlesautorisationsrequises • Implémentées sous forme d'attributs • Empêchent le chargement d'un assembly en cas d'absence des autorisations minimales //Jenem'exécuteraiquesijepeuxappelerducodenonmanagé [assembly:SecurityPermission (SecurityAction.RequestMinimum, UnmanagedCode=true)]

  28. Démonstration3Sécuritéd'accèsaucodeRéalisationdevérificationsdesécuritéDemandesd'autorisationsDémonstration3Sécuritéd'accèsaucodeRéalisationdevérificationsdesécuritéDemandesd'autorisations

  29. Programme • Fonctionnalitésdesécuritéde.NETFramework • Sécurité basée sur les rôles • Sécurité d'accès au code • Cryptographie

  30. Rappelsconcernantlacryptographie .NETFrameworkfournitdesclassesquiimplémententcesopérations

  31. Cryptographie et Framework.NET • Plusieurs namespaces .NET consacrés à la cryptographie • System.Security.Cryptography • Fournis les services cryptographiques : • Encodage/Décodage sécurisé des données • hashing, random number, message authentication. … • System.Security.Cryptography.X509Certificates • Authenticode X.509 v.3 certificate. • Le certificat est signé avec une  « private key » qui identifie explicitement et de manière unique le propriétaire du certificat. • System.Security.Cryptography.Xml • Réservé a données XML • Permet de signer les « objets » XML avec une signature digitale

  32. Cryptographie et Framework.NET • Model objet du namespace Cryptography • Algorithme Type : (abstract class) • Algorithmes Symétrique et Hash • Algorithme Class : (abstract class) • RC2, SHA1… • Implémentation des « Algorithmes Class » • RC2CryptoServiceProvider, SHA1Managed… • Grâce a ce « design pattern » il est possible de faire ses propres ajouts/implémentations aux algorithmes aux différents niveaux. • Les algorithmes symétriques et de hash sont implémentés « stream-oriented » • La Configuration Cryptographique • Permet de résoudre les implémentations spécifiques de certains algorithmes

  33. DPAPI • Data Protection API • API Windows de cryptage décryptage • Wrapper .NET 1.0 et 1.1 nécessaire • Accessible dans la CLR 2.0 :

  34. Crytography Application Block • http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag2/html/crypto1.asp • Cryptography Application Block : • Réduit le temps de développement sur le code standard de cryptographie • Aide à maintenir les bonnes pratiques en terme de cryptographie • Apprentissage aisé car le modèle d’architecture est constant quelque soit les fonctionnalités. • Fournis une implémentation standard de l’utilisation des techniques de cryptographie. • Code extensible; supportant d’addinitionnelles implémentation et providers de cryptographie.

  35. Démonstration4Cryptage.NETFrameworkCryptage des donnéesPAG Security

  36. Programme • Fonctionnalitésdesécuritéde.NETFramework • Sécurité basée sur les rôles • Sécurité d'accès au code • Cryptographie • SQL Server 2005 : quoi de neuf ?

  37. SQL Server 2005 • Conférence SQL DAYS 2005 • Paris, le 9 juin 2005 • Marseille, le 14 juin 2005 • Toulouse, le 16 juin 2005 • Une journée gratuite • www.microsoft.com/france/sql/sqldays.aspx

  38. Résumédelasession • Fonctionnalitésdesécuritéde.NETFramework • Sécurité d'accès au code • Sécurité basée sur les rôles • Cryptographie • SQL Server 2005

  39. Étapessuivantes • Êtreinformésurlasécurité • S'inscrire aux bulletins de sécurité : http://www.microsoft.com/security/security_bulletins/alerts2.asp(en anglais) • Obtenir l'aide la plus récente de Microsoft sur la sécurité : http://www.microsoft.com/france/securite/default.asp • Obtenir des activités de formation supplémentaires sur la sécurité • Trouver des séminaires de formation: http://www.microsoft.com/france/events/default.asp • Trouver un centre de formation local agréé Microsoft (CTEC) pour des cours pratiques: http://www.microsoft.com/france/formation/centres/recherche.asp

  40. Pourplusd'informations • SiteMicrosoftsurlasécurité(toutpublic) • http://www.microsoft.com/france/securite/default.asp • Site MSDN sur la sécurité (développeurs) • http://msdn.microsoft.com/security (en anglais) • Site TechNet sur la sécurité (informaticiens) • http://www.microsoft.com/france/technet/themes/secur/default.asp

  41. Questionsetréponses

  42. BD Comment éviter la saisie du mot de passe en claire ? Saisie infos Comment faire confiance qui appel ma fabrique de classe ? Comment faire confiance dans les dlls chargées dynamiquement ? Fabrique de Classe Sous quelle forme dois-je stocker le mot de passe ? Validation mot de passe Sous quelle forme dois-je stocker la chaînes de connexion ? Chargement des rôles Affecter les politiques de sécurité

More Related