Cerca nel blog

lunedì 4 ottobre 2010

Java Cryptography

Il linguaggio Java divide la sicurezza in due livelli:
  • un livello basso di sicurezza JVM Layer:garbage collection,class file verification, etc.
  • un livello alto di sicurezza Application Layer:sandbox, security policy, security APIs, etc.
Fino a JDK 1.4 esistevono package esterni per creare applicazioni sicure:
  • JCE (Java Cryptography Extension)
  • JSSE (Java Secure Socket Extension)
  • JAAS (Java Authentication and Authorization Service)
Dalle versioni successive a JDK 1.4 sono state aggiunte due nuove funzionalità:
  • JGSS (Java General Security Service)
  • CertPath API (Java Certificate Path API)

JVM Layer



JVM Layer
JVM Layer: Java Virtual Machine
  • è responsabile dell'indipendenza della piattaforma
  • è responsabile della macchina astratta
  • ha un set di istruzioni
  • può manipolare la memoria a runtime
  • non interpreta il codice Java ma il bytecode
  • il bytecode è memorizzato nei class file
JVM Layer: Class file structure
Il class file è composto da:
  • da una "magic" costant OxCAFEBABE
  •  version number
  • Access flag
  • "costant pool"
  • Informazioni sulla classe corrente(nome, superclasse, etc.)
  • Informazioni a riguardo i metodi e le proprietà di una classe
  • Informazioni di Debbugging

JVM Layer: The Class File Verification
  • Verifica di base della struttura della classe
  • Verifica base del "looks" delle:
    referenze di classe
    referenze dei campi
    referenze sei simboli
  • Verifica del bytecode
  • Verifica effettiva:
    referenze di classi
    accesso e modifica dei campi e metodi chiamati

Application Layer
Application Layer:Class verification
  •  Il class loader carica le classi su richiesta
  • Riduce la memoria usata
  • Enforces type-safety alongside the JVM
  • Migliora il tempo di risposta del sistema
  • Istanze di classe caricate:
    Primordial/bootstrap class loader
    System class loader
    Application class loader
  • Il class loader è chiamato è chiamato dalla JVM
  • Il class loader è responsabile di caricare le classi e di dargli un namespace
  • Associa le classi caricate ad un dominio di protezione
Protection domain
  • associa i permessi alla classe per quanto riguarda le locazioni, i certificati, etc.
  • è definito dalla security policy
  • la security policy di default si riferisce al system-wide policy ed implementa la policy di default per la sandbox 
  • policy addizionali sono user-defined
  • si possono avere una o più policy security
  • tutte le referenze alla security policy sono specificate nel security property file localizzato nella directory di installazione del JDK(o JRE)

    Nessun commento:

    Posta un commento