140 likes | 313 Views
Java Beveiliging. Wim De Blende (2TI). Java Beveiliging. Inleiding Java architectuur Beveiliging in lagen JCA JCE JSSE JAAS Slot Links. Java Beveiliging Inleiding. Essentieel Java 1.0 sandbox model voor applets geen flexibiliteit Java 1.1
E N D
Java Beveiliging Wim De Blende (2TI)
Java Beveiliging • Inleiding • Java architectuur • Beveiliging in lagen • JCA • JCE • JSSE • JAAS • Slot • Links
Java BeveiligingInleiding • Essentieel • Java 1.0 • sandbox model voor applets • geen flexibiliteit • Java 1.1 • Laat vertrouwde code buiten de sandbox toe • Gelimiteerde flexibiliteit • Java 1.2 (Java 2) core security • Certificaten op basis van oorsprong en auteur • Applet niet meer begrensd door de sandbox
Java Beveiligingarchitectuur Java Authentication and Authorization Service (JAAS) Java Secure Socket Extension (JSSE) Java Cryptography Extension (JCE) Core Java 2.0 Security Architecture Java Cryptography Architecture (JCA) Java 2.0 Platform
Java Beveiligingin lagen • Simpele code • Geen pointers • Stricte typecasting • Grenzen van een array niet overschrijdbaar • JVM • Class loader • Bytecode verifier • Security manager • Klassenbibliotheek • Controle op toegangsrechten
Java BeveiligingCryptography Architecture • JCA voorziet support klassen voor onderliggende mechanismen • Begrippen zoals: • Key (and PrivateKey, PublicKey) • Certificate • Principal • Policy • Voorziet een architectuur waardoor # crypto implementaties ingeplugd kunnen worden • Het doet de encryptie niet zelf
Java BeveiligingCryptography Extension • JCE voorziet algoritmen om de encryptie uit te voeren • de JCE verliest veel functionaliteit door een export verbod van de V.S.
Java BeveiligingSecure Socket Extension • JSSE is de Java interface voor het SSL/TLS protocol • Laat alle SSL/TLS eigenschappen toe: • Uitwisseling van certificaten voor authentificatie • Uitwisseling van encrypted data • Laat SSL/TLS toe voor meer dan HTTP alleen • WTLS voor encryptie in Wireless omgeving
Java BeveiligingAuthentication & Authorisation • JAAS voorziet support voor: • login authentificatie • ACL-gebaseerde authorisatie • Gebruikt een "Pluggable Authentication Module" (PAM) architectuur • Zoals bij Linux • Laat verschillende onderliggende authentificatie mechanismen toe zoals paswoorden, smart cards, enz.
Java BeveiligingJAAS klassen • java.security.Principal • Identiteit van een gebruiker • javax.security.auth.Subject • Stelt een individu of een organisatie voor met meerdere principals • javax.security.auth.login.LoginContext • een API for Subjects (Principals) om in of uit te loggen • javax.security.auth.spi.LoginModule • Interface die login server providers moeten volgen • javax.security.auth.login.Configuration • Laat de configuratie van meerdere LoginModules toe
Java BeveiligingJAAS client voorbeeld try { // Create LoginContextloginContext = new LoginContext("SampleLoginModule", newMyCallbackHandler()); //Attempt authenticationloginContext.login(); //Retrieve authenticated Subject and perform SampleAction as Subject.Subject subject = loginContext.getSubject();SampleAction sampleAction = new SampleAction();Subject.doAs(subject, sampleAction); } catch (LoginException le) { System.out.println("Error logging in."); }
Java BeveiligingSlot • Nadelen • Veiligheid ten koste van preformance • Voordelen • Geen structurele fouten bekend in het beveiligingsmechanisme
Java BeveiligingLinks • Basic security: java vs. .NET