# Evaluation assurance level

La Evaluation Assurance Level (livello di garanzia della valutazione, in italiano), variabile da un minimo di EAL1 a un massimo di EAL7, di un prodotto o sistema elettronico (in inglese si usa chiamarli prodotti IT) è un valore numerico caratteristico di una valutazione di sicurezza basata sui Common Criteria, standard internazionale in vigore dal 1999; (successivamente riconosciuto dall'ISO nella ISO/IEC 15408). Il prodotto valutato, detto “TOE” (Target of Evaluation, in italiano ODV - Oggetto della Valutazione), può essere hardware, software, o anche hardware e software (comprendendo anche il firmware).
Un livello di garanzia più alto rispecchia la presenza di maggiori requisiti che devono essere soddisfatti per raggiungere la certificazione Common Criteria. Lo scopo dei vari livelli è di garantire, per quanto possibile, che le funzioni del sistema siano state realizzate in modo affidabile: di per sé il livello EAL non misura la sicurezza o l'affidabilità del sistema stesso, ma stabilisce soltanto come il sistema è stato progettato, realizzato e collaudato.
Per raggiungere uno specifico EAL, il sistema o il software deve soddisfare specifici requisiti di garanzia. La maggior parte di tali requisiti riguardano la documentazione di progetto, l'accuratezza del progetto, test funzionali e/o test di intrusione. Valori di EAL più alti comportano test e analisi più dettagliati, il che di solito si traduce in maggiori costi e maggior tempo necessari rispetto ai livelli inferiori. Il numero EAL assegnato a un sistema o a un software certifica che esso ha superato tutti i requisiti di quel livello.
Anche se ogni prodotto e sistema deve soddisfare gli stessi requisiti di garanzia per ottenere un dato livello EAL, oggetti con lo stesso EAL possono avere requisiti funzionali molto diversi: le funzioni specifiche un prodotto certificato sono precisate nel Security Target (Traguardo di Sicurezza, in italiano), documento appositamente compilato dal produttore per consentire la valutazione del prodotto. Per questo motivo un prodotto con EAL più alto non è necessariamente "più sicuro" in un dato ambito, perché può avere funzioni molto diverse nel suo Security Target. Se due prodotti offrono le stesse funzioni nel loro Security Target, allora quello con l'EAL più alto dovrebbe essere il più sicuro per quel genere di uso.

## Livelli di garanzia
### EAL1: Testato funzionalmente

EAL1 è applicabile dove si richiede il buon funzionamento dell'''oggetto della valutazione'', ma i bachi e le minacce alla sicurezza non sono considerati un vero problema. È utile in caso di contenzioso, come prova che il progettista ha posto la dovuta diligenza nello sviluppo del prodotto, sia nell'evitare errori di progetto, sia nel proteggere informazioni e dati personali. EAL1 valuta il prodotto/sistema così come viene reso disponibile al cliente e include:
* un test indipendente a fronte di una specifica fornita;
* un esame della documentazione fornita all'utente.
La valutazione EAL1 può essere eseguita anche senza la collaborazione del progettista, e con un costo minimo. Questa valutazione ha lo scopo di provare che il software implementa realmente le funzioni descritte nella documentazione allegata, e che fornisce una protezione utile contro errori, guasti e intrusioni.

### EAL2: Testato strutturalmente

EAL2 richiede la cooperazione del progettista, che deve fornire informazioni di progetto e risultati dei test interni, ma non dovrebbe richiedere più lavoro di quella che è la buona pratica di sviluppo del software commerciale: pertanto non dovrebbe comportare un incremento di tempi o di costi del progetto. EAL2 si applica quando lo sviluppatore o l'utente richiedono un minimo di garanzie sul buon funzionamento e sulla sicurezza di un prodotto/sistema, in mancanza di una completa documentazione interna di sviluppo. Questa situazione può verificarsi durante l'aggiornamento di un software legacy, cioè molto vecchio.

### EAL3: Testato e controllato

EAL3 permette a un progettista diligente di avvantaggiarsi di consolidate pratiche di ingegneria del software, in fase di progetto, senza cambiare di molto le buone pratiche di sviluppo software già in uso. EAL3 è pensato per utenti che richiedono garanzie sul prodotto/sistema (per un sw gli utenti potrebbero essere degli sviluppatori). La certificazione richiede l'esame di tutta la documentazione di progetto e richiede l'applicazione delle pratiche ingegneristiche di cui sopra, ma in generale non dovrebbe imporre una riprogettazione completa. macOS di Apple è certificato EAL3.

### EAL4: Progettato, testato ed esaminato secondo metodologie

EAL4 richiede l'applicazione completa, metodica e documentata delle suddette pratiche di ingegneria del software all'intera applicazione. È la maggiore garanzia di qualità che si possa ottenere senza ricorrere a conoscenze e strumenti specialistici; è anche, di norma, il massimo livello di sicurezza del software raggiungibile (in modo economico) sviluppando un prodotto software già esistente. EAL4 è quindi il massimo livello di garanzia applicabile quando sviluppatori o utenti richiedono garanzie di buon funzionamento nei normali prodotti software, e sono preparati a costi aggiuntivi per una migliore qualità e sicurezza.
I sistemi operativi commerciali che forniscono le convenzionali caratteristiche di sicurezza e qualità del software sono generalmente valutati a livello EAL4, ecco di seguito una lista:
* AIX,
* HP-UX,
* Solaris,
* Novell NetWare,
* FreeBSD,
* FIN.X RTOS SE V4.0
* Oracle Linux, SUSE Linux Enterprise Server 9, SUSE Linux Enterprise Server 10, Red Hat Enterprise Linux 5,
* Windows 2000 Service Pack 3, Windows 2003, Windows XP, Windows Vista, Windows 7, Windows Server 2008 R2,
* z/OS versione 2.1 e z/VM versione 6.3.
I sistemi operativi che forniscono sicurezza a più livelli sono valutati almeno a EAL4; esempi sono Trusted Solaris, Solaris 10 Release 11/06 Trusted Extensions, la prima versione di XTS-400 e VMware ESXi versione 3.0.2, 3.5, 4.0 e 5.0 (EAL 4+).

### EAL5: Progetto semiformale e testato

EAL5 pone requisiti sull'ambiente di sviluppo, che deve obbedire a precise condizioni, e richiede l'applicazione di tecniche specialistiche di ingegneria del software. Un sistema o un software EAL5 o superiore viene in genere progettato e sviluppato fin dall'inizio con lo scopo di soddisfare quei requisiti; generalmente si tratta di sistemi embedded o dedicati a scopi particolari. EAL5 è pensato per garantire un alto livello di qualità e sicurezza del software, adottando uno sviluppo software pianificato per minimizzare i costi e i tempi aggiuntivi dovuti all'implementazione di tecnologie specialistiche.
Molti dispositivi smart card sono certificati EAL5, in quanto hanno dispositivi di sicurezza multilivello come l'Interactive Link di Tenix. L'XTS-400 (STOP 6) è un sistema operativo general-purpose che è stato certificato come EAL5 incrementato. LPAR su IBM System z è certificato EAL5.

### EAL6: Progetto semiformale, verificato e testato

EAL6 permette ai progettisti di ottenere un'alta affidabilità dall'applicazione di tecniche ingegneristiche di sicurezza in un ambiente di sviluppo rigoroso, ottenendo software con sicurezza molto elevata: per esempio, i memory leak sono del tutto assenti in questa classe di sistemi, perché l'allocazione dinamica della memoria non è ammessa (niente malloc e simili). EAL6 è quindi applicabile allo sviluppo di software ad alto rischio potenziale (trasporto di persone, robot chirurgici) e/o dove il valore dei beni in gioco giustifica i maggiori costi (governo di satelliti, aerei, navi).
Il sistema operativo realtime INTEGRITY-178B di Green Hills Software è certificato a livello EAL6 incrementato, e fa funzionare l'avionica in molti aerei militari e civili.

### EAL7: Progetto formale, verificato e testato

Le applicazioni pratiche di EAL7 sono al momento limitate a sistemi con funzioni limitate a un ambito molto specifico e suscettibili di una estesa analisi formale. Il Data Diodo ARBIT, il Data Diode Device di Tenix e il Fox Data Diode di Fox-IT (dispositivi di comunicazione a senso unico) dichiarano di essere stati valutati a livello EAL7 incrementato (EAL7+).

## Implicazioni dei livelli di garanzia

Tecnicamente, un livello EAL superiore significa che il prodotto ha soddisfatto un più stringente insieme di requisiti di garanzia. Si ritiene che un sistema che ha conseguito un livello EAL superiore sarà più sicuro e più affidabile (e le necessarie analisi e test di terze parti ed esperti di sicurezza la rendono un'ipotesi ragionevole), ma non c'è quasi nessuna prova pubblicata in letteratura che dimostri questa assunzione.

### Impatto su costi e tempi di sviluppo

Nel 2006, il Government Accountability Office statunitense ha pubblicato un rapporto sulle valutazioni Common Criteria che riassumeva una gamma di costi e tempi di sviluppo per superare valutazioni di livello EAL2, EAL3 ed EAL4.
Nella seconda metà degli anni '90, i venditori hanno riferito costi compresi fra 1 e 2,5 milioni di dollari per superare valutazioni confrontabili a EAL4. Non è stato pubblicato alcun rapporto sui costi delle valutazioni EAL di Microsoft Windows.

### Notazione EAL

Gli standard Common Criteria denotano gli EAL come mostrato in questo articolo: il prefisso "EAL" concatenato con una cifra da 1 a 7 (Esempio: EAL1, EAL3, EAL5). In pratica, alcuni paesi mettono uno spazio fra il prefisso e la cifra (EAL 1, EAL 3, EAL 5). In certi casi, la valutazione può essere incrementata per includere requisiti al di là del minimo necessario per un dato livello EAL. Ufficialmente questo è indicato dalla parola augmented dopo la cifra EAL e in genere segue un elenco di codici che specificano quali requisiti addizionali sono soddisfatti; i produttori usano informalmente il segno più per indicare tale incremento (es. EAL4+ o EAL 4+).