Sicurezza del software: L'analisi di fase di disegno


  Share  
|


Un disegno completo fornisce le soluzioni al problema indirizzato dal prodotto ed anche gli introiti in considerazione gli effetti dell'innovazione. La sicurezza di un'applicazione inoltre è generata ed aumentata da un disegno completo.

Una volta che un'organizzazione scarta l'idea di sicurezza come caratteristica, diventa apparente che il rity di secu ha bisogno presto della considerazione. Mentre ogni organizzazione potrebbe avere metodi differenti di progettazione un prodotto o dell'applicazione, il seguente metodo è utile da assicurare un livello elevato di sicurezza in un disegno. La fase di disegno analizzata da tre punti di vista:

· Globale

· Organizzativo

· Componente

Il punto di vista globale è l'più alta vista del sistema; accerta le necessità indirizzate dall'applicazione e dal relativo insieme della caratteristica. Il punto di vista organizzativo evidenzia i diversi componenti che fanno in su la domanda. Il punto di vista componente va al livello seguente del granularity, esaminando i particolari espliciti di ogni componente e della relativa esecuzione. Il metodo incrementale usato qui tiene conto un'analisi più profonda e più completa che inoltre fornisce un flusso trattato facilmente capito. Ciò aiuta i responsabili e gli sviluppatori a mettere le procedure adatte a posto per accertare la considerazione di sicurezza nella loro applicazione.

Il Punto di vista Globale

Molte applicazioni risultano da un bisogno non realizzato o dalla deficienza delle soluzioni correnti. Un buon disegno identifica le seguenti preoccupazioni di sicurezza:

· I problemi di sicurezza si sono riferiti alle soluzioni attuali al problema o al bisogno che è risolto

· La risposta dell'applicazione a quei problemi di sicurezza

· Vulnerabilità potenziali di sicurezza che esistono nelle innovazioni che sono fatte

Un'analisi globale fornisce le informazioni che un attacker troverebbe al contrario dopo che l'applicazione sia liberata. A questa fase, un'architettura di sicurezza dovrebbe essere definita per l'applicazione. Questa architettura formalizza il livello di sicurezza stato necessario in un'applicazione. Contribuisce a stabilire la portata di sicurezza dell'applicazione identificando il rapporto tra l'applicazione e i relativi dintorni ed il livello di sicurezza fornito da loro. Un'architettura di sicurezza inoltre evidenzia l'esigenza di e l'importo, di sicurezza indipendente che un'applicazione deve assicurare, come pure le caratteristiche richieste.

Un'analisi e un'istituzione globali di un'architettura di sicurezza sono fatte via la categorizzazione incrementale dei moduli, dei componenti, delle interfacce e dei metodi impiegati nell'applicazione. La loro posizione e rapporto l'un l'altro e la loro esposizione alle applicazioni esterne, agli utenti ed alle interfacce sono punti importanti.

Il punto di vista globale di un'applicazione inizialmente presenta "la scatola nera proverbial" che—gli unici particolari conosciuti sono quelli visti dagli stranieri. Questi caratteristiche esterne e requisiti funzionali allora sono separati nei moduli per analisi di sicurezza.

Cercando i advisories del fornitore, i newsgroup, le liste spedenti e le tribune in linea le vulnerabilità rilevate competere o nelle applicazioni simili è un buon senso imparare circa alcuni dei problemi di sicurezza principali relativi all'applicazione. Inoltre contribuisce a precisare le soluzioni inefficaci alle vulnerabilità trovate nelle applicazioni simili.

Inchiesta, Fase I

Questo esempio ipotetico è un'inchiesta per lo sviluppo di un'applicazione di commercio del Internet. Questo servizio permette che gli utenti colleghino dai loro browsers per fare gli acquisti in linea.

Il primo livello nel disegno di questa applicazione è la definizione delle relative possibilità, indipendente dai metodi di esecuzione impiegati. Queste caratteristiche hanno potuto includere quanto segue:

· La selezione di un sistema operativo adatto per ospitare le applicazioni

· Accesso di base di dati per registrazione delle informazioni riservate e pubbliche

· Serving di fotoricettore

· Connettività di queste parti usando le applicazioni sviluppate

· Connettività alle istituzioni finanziarie per le transazioni

Dal punto di vista globale, un progettista discerne le caratteristiche di sicurezza richieste per ogni componente di queste funzioni.

La base di dati memorizza le informazioni riservate su molti utenti differenti, compreso le parole d'accesso, i numeri della carta di credito e le informazioni del contatto. Per proteggere queste informazioni, la base di dati dovrebbe avere componenti di sicurezza che sostengono le limitazioni agli oggetti e forse alla loro crittografia.

Il web server dovrebbe sostenere le comunicazioni sicure con il protocollo sicuro di strato degli zoccoli (SSL) e un certo metodo di collegare mediante interfaccia alle applicazioni esterne ed alla base di dati. Ciò ha potuto essere via i servlets ed i applet del Java, o i programmi del cgi.

Le comunicazioni della rete sono una parte inerente di questo sistema. Il software dell'assistente della base di dati e di web server probabilmente funziona sulle macchine separate, quindi il mezzo assicurare loro la comunicazione della rete è richiesto.

L'ultimo componente da considerare è il collegamento reale all'organizzazione che autorizza le transazioni. Ciò potrebbe essere una banca o un'azienda della carta di credito che autorizza i dispendii dagli utenti. I collegamenti probabilmente sono compiuti con un modem o l'altra parte dell'apparecchiatura di telecomunicazioni che si interagisce con l'organizzazione finanziaria e realizza la convalida. Questi collegamenti richiedono l'alta sicurezza, per evitare l'accesso dagli utenti non autorizzati.

Queste comprensioni sono spigolate da conoscenza del campo, dell'analisi dei prodotti competenti e della familiarità con i requisiti del cliente. A questo punto, la ricerca diligente deve essere fatta per documentare le vulnerabilità passate e correnti di sicurezza in prodotti relativi. La lista risultante dovrebbe identificare le zone di rischio che devono richiamare. Le caratteristiche di sicurezza che mancano dalla lista iniziale di requisiti sono identificate spesso con questa analisi, un altro dei relativi benefici.

Nel nostro esempio di commercio del Internet, i ricercatori hanno trovato le seguenti vulnerabilità in prodotti paragonabili:

· Le basi di dati non hanno avute schemi di protezione, con conseguente esposizione delle informazioni del cliente riservato.

· Il web server ha avuto fori che hanno permesso l'esecuzione del codice arbitrario sul sistema. La configurazione di difetto dell'assistente inoltre ha permesso l'indice traversal, che permette che gli utenti esterni accedano a molti lime ed indici riservati sul sistema.

· Le applicazioni del cgi hanno usato comunicare con la base di dati hanno avute vulnerabilità che hanno permesso che i attackers a distanza impersonate altri clienti.

La ricerca inoltre indica che la protezione di dati, i trabocchi dell'amplificatore, la configurazione di difetto e le edizioni di convalida dell'input devono essere evitati perché queste vulnerabilità si sono presentate frequentemente con le applicazioni simili. Inoltre ha indicato che i fornitori hanno aggiunto le caratteristiche e le zone di sicurezza che proteggeranno da questi problemi. _ ciò fa autenticazione e accesso controllo importante requisito, con rete sicurezza.

A questo punto, il progettista sa delle vulnerabilità connesse con l'applicazione, i metodi da cui altre organizzazioni rispondono a loro e un insieme delle caratteristiche importanti di sicurezza che costituiscono la base di un'architettura di sicurezza. L'architettura di sicurezza si sviluppa più ulteriormente nella fase prossima del disegno.

Il Punto di vista Organizzativo

La sicurezza non è una scienza esatta; i relativi bisogni sono specifici ad ogni applicazione ed ambiente. Di conseguenza, non è sufficiente guardare la sicurezza soltanto dalla vista globale. Anche se un'applicazione al contrario ben progettata potrebbe esistere indipendentemente da tutte le altre applicazioni sul sistema, l'interazione di tutti i componenti in quanto l'applicazione potrebbe proporre le minacce di sicurezza. Il punto di vista organizzativo identifica i diversi elementi o gruppi degli elementi che gli formano l'intera applicazione, le loro funzioni ed i loro rapporti con. Un elemento potrebbe essere una funzione, un codice categoria, un processo, o un insieme di questi elementi che sono raggruppati dal loro rapporto all'applicazione.

Una domanda è fatta tipicamente di parecchi moduli funzionali, quali l'interfaccia di utente, i componenti di comunicazione o della rete, o gli attrezzi di registrazione di dati e di ricerca.

Mentre un modulo potrebbe sembrare ragionevolmente sicuro, il relativo rapporto con gli altri componenti potrebbe essere eseguito insecurely. Simile all'analisi delle interazioni dell'applicazione, l'analisi livellata organizzativa prende i requisiti funzionali e determina l'architettura usata. I requisiti funzionali permettono che il progettista identifichi un insieme dei componenti e dei metodi che forniscono la funzionalità; un'analisi della sicurezza fra loro come si interagiscono rendimenti le scelte più sicuri per l'inclusione con l'applicazione.

L'identificazione, l'organizzazione e la categorizzazione incrementali di ogni componente nell'applicazione continua in questa fase. Un posto logico da cominciare—e particolarmente sospetto in termini di sicurezza—è i bordi di un modulo. I bordi sono i punti dell'uscita o dell'entrata in cui i dati attraversare i contorni fra i moduli. Per esempio, i dati attraversare i contorni fra i moduli durante queste funzioni:

· Passando dei dati come parametri

· Regolazione delle variabili globali

· Memoria comune di maneggiamento

· Dati di scrittura alle lime

· Trasmissione dei dati attraverso una scanalatura di comunicazione quale la rete

· Ricezione dell'input dell'utente

Inchiesta, Fase II

Nella fase organizzativa di progettazione dell'applicazione di commercio del Internet del campione, ogni componente di applicazione—il web server, l'assistente della base di dati e le applicazioni collegate—è categorizzato nel relativo modulo funzionale per ulteriore analisi.

L'assistente della base di dati ha un componente di immagazzinaggio, un componente di controllo di accesso e di autenticazione e un componente di comunicazione. Il web server ha il componente del serving di fotoricettore, un modello di programmazione esterno e componenti sicuri sicuri di comunicazione del cliente e della base di dati di comunicazione. Le interazioni fra questi componenti formano un percorso definibile, con parecchi punti in cui la sicurezza deve essere forte. A seguito di un'interazione fra il web server ed il cliente, un web browser del cliente trasmette i dati sensibili al web server. Questi dati allora sono passati all'applicazione su ordinazione che si interagisce con la base di dati e l'istituzione finanziaria. A seguito del percorso di dati con l'applicazione, uno sviluppatore può osservare i punti della vulnerabilità nella comunicazione del cliente, nell'interazione di applicazione di web server, nella comunicazione dal web server alla base di dati e nell'interazione fra loro.

I requisiti di sicurezza cominciano a definirsi. L'applicazione deve richiamare queste zone di rischio e fornire la sicurezza in queste forme:

· Assicuri la comunicazione al web browser del cliente sotto forma di la comunicazione cifrata della rete, l'autenticazione degli utenti ed i meccanismi di controllo di accesso sulle loro informazioni.

· Interazione sicuro fra il web browser e l'applicazione di e-commercio per accertare la sicurezza del sistema

· Integrità di applicazione del programma di commercio

· Assicuri le comunicazioni con la base di dati

· Sicurezza degli oggetti della base di dati

Da questi requisiti, un'architettura comincia a definirsi. L'uso dello SSL sul web server protegge le comunicazioni del assistente-$$$-SERVER-TO-BROWSER. L'applicazione avrà relativo proprio meccanismo di autenticazione che permette che i clienti firmino sicuro dentro. I meccanismi di convalida e di protezione di dati inoltre saranno effettuati ad un modo organizzato che usa soltanto il privilegio richiesto minimo di funzionare. La funzionalità sarà compresa nella domanda di protezione dell'oggetto e nella crittografia sull'assistente della base di dati. I particolari reali di esecuzione saranno sviluppati nella fase componente finale.

I metodi pertinenti di sicurezza saliranno alla superficie quando le seguenti domande sono fatte nella fase organizzativa:

· Come proteggeremo le informazioni comunicate?

· Che cosa sono gli effetti se un modulo passa i dati spuri ad un altro?

· I vincoli dei dati sono stati definiti?

· È ci un metodo preferito di passare i dati che si prestano a sicurezza aumentata?

· Quali componenti, applicazioni ed utenti hanno bisogno dell'accesso ai dati? Che genere di accesso è passivo—richiesto o sia colto che scrive le possibilità?

Il Punto di vista Componente

Il punto di vista finale da cui l'analisi di disegno si presenta è la dissezione di diversi componenti all'interno di un'applicazione. I più piccoli particolari di esecuzione e di disegno possono introdurre evidente ed i problemi oscuri di sicurezza che sono difficili da trovare alberino-si liberano. La povera esecuzione può anche undo lo sforzo messo nella sicurezza di un disegno.

Alcune delle precauzioni hanno suggerito qui la caduta in che cosa sono considerati buone pratiche di codificazione e non sono necessariamente sicurezza specifica, ma hanno un effetto sulla sicurezza di un'applicazione.

L'architettura di sicurezza che è definita per un'applicazione affiderà che in mandato ci è una serie di controlli e di equilibrii a cui l'applicazione deve essere conforme. Questi controlli ed equilibrii forniranno un alto grado di assicurazione che un'applicazione si comporta in un modo dell'uniforme in caso di i dati o le informazioni inattesi.

La vista componente esamina ogni parte che forma un modulo. (moduli, a loro volta, formano l'applicazione.) Questi componenti dovrebbero essere analizzati per le loro diverse caratteristiche di sicurezza e le interazioni con altri componenti all'interno di quel modulo. Punti di partenza quando le edizioni programmatiche esaminanti all'interno di un modulo sono

· Valori di ritorno

· Precedenza e requisiti preliminari

· Convalida di dati

· Risposta e recupero identificati

· Permessi e privilegio

I valori di ritorno sono indicatori di successo o di guasto all'interno di una funzione. I componenti di un modulo specifico sono fatti delle funzioni, che il interoperate ed ha stabilito i rapporti che permettono che il programma effettui correttamente. Gli sviluppatori dovrebbero anche capire che cosa significa quando una funzione viene a mancare e dovrebbe reagire giustamente a quel guasto. Una comprensione completa di questi rapporti permette che uno sviluppatore capisca le dipendenze fra le funzionalità. Sulla base di queste dipendenze, i componenti all'interno di un modulo possono essere organizzati per aumentare l'affidabilità e la sicurezza.

I dati sono dinamici in tutta l'applicazione che—viaggiano fra le funzioni ed i moduli ed alle applicazioni separate, alteranti l'esecuzione dell'applicazione iniziale come così. Con l'identificazione dei moduli che formano un'applicazione ed i componenti che successivamente formano quei moduli, il percorso dei dati con un'intera applicazione può essere seguito. I punti di entrata fra i moduli e le funzioni sono gli elementi chiave che interessano il successo o il guasto dell'applicazione, quindi convalidare i dati a questi punti è vitale. Funzionando hand-in-hand con la convalida è una risposta definita ai dati non validi ed alle circostanze anomale. Molte applicazioni non riescono a formulare un meccanismo di recupero in caso di gli eventi inattesi; ciò provoca spesso le applicazioni instabili che si arrestano al segno più in anticipo dei dati imperfetti.

La conoscenza dei permessi e dei privilegi richiesti per i componenti per funzionare fornisce le informazioni importanti per i progettisti di applicazione. A seguito del modello di meno privilegio è una buona pratica di disegno; suggerisce l'isolamento e la limitazione del privilegio in un'applicazione corrente. Nella maggior parte dei casi, i livelli elevati di privilegio sono necessari molto raramente e soltanto nei casi isolati. Molte applicazioni che richiedono i privilegi elevati per una piccola parte di funzionalità commettono l'intera applicazione a quel livello elevato di privilegio per la relativa intera esistenza. Ciò genera un ambiente pericoloso in cui ogni vulnerabilità che è trovata esiste in questo modo privilegiato.

Il privilegio si riferisce soprattutto ai parecchi livelli di autorità su un sistema operativo. Ad ogni livello elevato del privilegio, gli utenti autorizzati hanno progressivamente accesso a più risorse nel sistema, quale la memoria, nelle altre applicazioni, nei dispositivi di fissaggi e nei dati. L'utente della radice in UNIX, il coordinatore ed il cliente speciale del SISTEMA in Windows esemplificano il livello elevato del privilegio. Ci sono spesso vari gradi di accesso che forniscono il controllo di accesso granulare, inoltre. Il controllo di accesso granulare permette i metodi definibili di rifiuto e di accesso per l'applicazione. Le lime, il traffico della rete, gli utenti e gli oggetti possono essere limitati ad un insieme dei permessi espliciti che permettono loro o respingono loro l'accesso.

Inchiesta, Fase III

L'analisi componente di fase della nostra applicazione di commercio del Internet guarda i diversi componenti usati nell'applicazione e nella loro sicurezza. Entrando in questa fase, i progettisti dovrebbero avere un senso del percorso di dati completo ed i rapporti fra i moduli. Il punto granulare seguente stabilisce la base per l'esecuzione dell'applicazione. Gli obiettivi di questa analisi sono di determinare i privilegi di vari componenti, un senso dell'organizzazione che sarà usato durante l'esecuzione e la conoscenza di come l'esecuzione accadrà. Qui, i requisiti precedentemente risoluti sono tradotti in metodi dettagliati di esecuzione.

I progettisti scelgono un web server e un assistente della base di dati a questo punto, basato sui requisiti stabiliti. Nel nostro esempio, un web server del Apache è stato scelto perché può essere fatto per sostenere le comunicazioni dello SSL ed ha un metodo ben documentato da interagirsi con le applicazioni esterne. Un assistente della base di dati di oracolo è stato scelto perché fornisce la flessibilità, lo scalability e la sicurezza richiesta nella base di dati ed anche perché sostiene l'interazione Java-basata. Java è stato scelto come la lingua e l'estensione per effettuare il software reale di commercio del Internet perché funziona con gli assistenti della base di dati e di fotoricettore e sostiene un modello forte e configurabile di sicurezza.

L'assistente della base di dati e di web server allora è progettato determinando i metodi più sicuri per i seguenti componenti:

· Configurazione di difetto dell'assistente

· Configurazione di sicurezza del sistema operativo di fondo

· Privilegi richiesti a interoperate con le applicazioni del Java

· Componenti di controllo di accesso

Il software di commercio è organizzato per fornire questi componenti:

· Requisiti di privilegio effettuare le relative funzioni

· I punti di entrata di interazione e di comunicazione di web server

· Metodi di controllo di autenticazione e di accesso dell'utente

· Metodi di sicurezza di sessione per impedire impersonation degli utenti

· I punti di entrata di interazione e di comunicazione dell'assistente della base di dati

Sulla base di queste analisi ed organizzazione, è determinato che l'unica parte del sistema che richiede i privilegi elevati del sistema operativo sia l'applicazione di commercio. Inoltre ha bisogno di un insieme interno dei livelli di privilegio di fare rispettare il controllo e l'autenticazione di accesso dell'utente. Le configurazioni di difetto permettono soltanto la funzionalità stata necessaria per il funzionamento del sistema ed ogni sistema operativo sicurezza-è indurito con lo stesso metodo del minimalist.

L'applicazione di commercio è dove la maggior parte dei componenti di sicurezza esiste. Ha la responsabilità di convalidazione delle credenziali dell'utente, regolando i permessi su base di dati obietta, tenendosi al corrente di ogni sessione dell'utente e facendo richiedere l'intelligenza reale per mantenere il funzionamento del sistema.

L'applicazione di commercio ha bisogno dei privilegi elevati soltanto quando controlla la partenza e l'arresto dell'assistente della base di dati e di fotoricettore. Il metodo più sicuro per realizzare queste azioni è determinato per essere un processo separato del regolatore che aumenta i relativi privilegi allora che realizza un'azione di arresto o di partenza; allora cede i relativi privilegi fino alla richiesta seguente. Il processo del regolatore comunica soltanto con l'applicazione di commercio ed usa i messaggi autenticati per iniziare la partenza o l'arresto del sistema.

L'applicazione di commercio inoltre cifrerà le informazioni riservate prima della memorizzazione esso nella base di dati per proteggere le credenziali dell'utente e le informazioni finanziarie. In caso di le condizioni di errore ed anomale quali i dati di input non validi, i guasti di autenticazione dell'utente e le comunicazioni guastate, il disegno richiede un sistema di segnalazione che può annotare queste informazioni e rispondere giustamente agli eventi.

L'attivazione del sistema aumenta naturalmente dall'analisi continua fornita nelle fasi di analisi globali, organizzative e componenti preceding. Gli sviluppatori seguono le guide e le procedure sul posto per aiutarli a scrivere il codice che effettua il livello elevato di sicurezza stabilito.

ciò è un articolo aggiunto da Tamas Querolin


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions