Cenni sulla sicurezza | ||
I tre componenti principali di .NET Framework Common Language Runtime/Infrastructure (CLR/CLI) CLS - Common Language Specification CIL - Common Intermediate Language VES - Virtual Execution System |
Sicurezza basata sulle evidenze Il sistema di sicurezza del .NET Framework fornisce un controllo fine ed a livello di metodo su ciò che le applicazioni possono o meno fare in base alle intenzioni di chi ha scritto il codice, di dove il codice è stato installato e di chi lo esegue. Sicurezza per Internet L'infrastruttura per la sicurezza del .NET Framework comprende funzionalità che consentono di gestire sia l'autenticazione degli utenti sia la sicurezza di accesso al codice, che rafforza i permessi sul codice sulla base di criteri di fiducia. Una libreria espandibile di funzioni di crittografia fornisce un facile accesso all'hashing e alla crittografazione del codice gestito, incluse le firme digitali per l'XML. Sicurezza per l'accesso al codice e sicurezza basata sui ruoli. Il .NET Framework mette a disposizione la sicurezza attraverso due categorie di alto livello: la sicurezza per l'accesso al codice e la sicurezza basata sui ruoli. La sicurezza per l'accesso al codice è il meccanismo tramite il quale gli sviluppatori possono specificare il livello di accesso che il codice dovrebbe avere su risorse ed operazioni. La sicurezza basata sui ruoli viene utilizzata per controllare i permessi sulla base dell'identità dell'utente. La sicurezza per l'acceso al codice è profondamente integrata nel .NET Framework, e potenzia la sicurezza impostando diversi livelli di fiducia a seconda del codice - persino per parti distinte del codice all'interno della stessa applicazione in esecuzione. Ad esempio, il codice su Internet dovrebbe essere ritenuto in generale meno sicuro rispetto a quello realizzato da un produttore di provata affidabilità. Molti problemi di sicurezza derivano da codice non troppo sicuro che esce dai confini che lo rendono sicuro. Dal momento che il runtime ha il controllo sull'esecuzione di tutto il codice gestito, esso continua a potenziare le restrizioni per ciò che il codice poco sicuro potrebbe fare. La sicurezza per l'accesso al codice viene implementata attraverso un sistema di criteri di sicurezza basati sulle evidenze che consente di impostare i permessi appropriati. Un oggetto permission rappresenta il diritto di eseguire una determinata operazione, come ad esempio scrivere un file, visualizzare un contenuto sullo schermo e via dicendo. Le evidenze per ogni codice - la sua posizione, la firma digitale ecc. - vengono sottoposte al sistema dei criteri di sicurezza affinché possa prendere una decisione corretta sulla base dei criteri stabiliti dall'amministratore. Se un'applicazione tenta di effettuare un'operazione protetta, un controllo di sicurezza richiederà che il codice e tutti i relativi chiamanti siano in possesso dei privilegi necessari per poter eseguire l'operazione. Il controllo di tutti i chiamanti è importante per evitare che codice potenzialmente poco sicuro possa eseguire codice più sicuro per effettuare un'operazione privilegiata. Il .NET Framework può costringere codice gestito a subire un processo denominato verifica per potenziare la sicurezza. La verifica assicura che il codice utilizza solamente interfacce ben definite nell'interazione con altri oggetti, evitando l'accesso a memoria non autorizzata. La sicurezza basata sui ruoli si fonda su due concetti fondamentali: l'autenticazione e l'autorizzazione. L'autenticazione è il processo di validazione di un insieme di credenziali da parte di un'authority. Se le credenziali sono valide, si dice che l'utente possiede un'identità. L'autorizzazione è il processo che utilizza tale identità per acquisire l'accesso ad una risorsa o proteggerla. Le applicazioni possono autenticare gli utenti utilizzando un qualsiasi protocollo di autenticazione, tra cui Basic, Digest, Microsoft Passport, l'autenticazione integrata di Windows (formalmente nota come Windows NT LAN Manager o NTLM), o l'autenticazione tramite form. Il programma applicativo è scritto sempre allo stesso modo, ed è indipendente dal tipo di autenticazione utilizzato. Inoltre, se necessario, è possibile inserire ulteriori provider di autenticazioni definiti dall'utente in questa architettura uniforme, così ad esempio un database clienti con user name e password può essere facilmente utilizzato come nuovo provider di autenticazioni. API per la crittografazione. Una libreria per la crittografazione fornisce hash, crittografazione, decrittografazione e generazione di numeri casuali facili da utilizzare. È incluso anche il supporto di crittografazione per diversi algoritmi simmetrici ed asimmetrici. Oltre a ciò, Microsoft sta tracciando gli standard per le nuove firme digitali XML e presto possiderà metodi per firmare e verificare l'XML firmato.
|