Che materia stai cercando?

Riassunto esame Sistemi Informativi, prof. C. Cappiello

Il documento rappresenta un riassunto ideale per la preparazione dell'esame di Sistemi Informativi. Le pagine sono una rielaborazione degli appunti presi a lezione e informazioni aggiuntive derivanti dallo studio dei libri consigliati per sostenere l'esame.
Il seguente documento si compone come di seguito:
1 - Introduzione al corso
2 - Basi di dati
3 - SQL
4 - Progettazione concettuale... Vedi di più

Esame di Sistemi informativi docente Prof. C. Cappiello

Anteprima

ESTRATTO DOCUMENTO

- Considerando la possibilità di istruire gli algoritmi con esempi ideali si possono distinguere le

tecniche di data mining in tecniche in apprendimento supervisionato e non supervisionato.

Supervisionato: associano a ogni record considerato una variabile target che può essere ad

o esempio un’etichetta di classificazione di quell’insieme di dati. La variabile target costituisce

l’output desiderato a partire dall’analisi del record che sarebbe l’input a sistema.

Non supervisionato: le tecniche non considerano una variabile target e perciò mirano a

o identificare regolarità o regole ricorrenti significative.

- Considerando gli obiettivi di analisi in base a cui si possono distinguere tecniche predittive e

descrittive.

Descrittive: analizzano i dati del passato e li categorizzano, filtrano e individuano pattern

o applicando funzioni matematiche o statistiche;

Predittive: analizzano i dati del passato per supportare predizioni e decisioni in grado di

o anticipare eventi.

Tecniche di Data mining:

Le numerose tecniche di data mining possono essere ricondotte a 3 aree di applicazione:

 Associazione – individuazione di elementi che compaiono spesso assieme in un determinato evento;

 Classificazione – individuazione di caratteristiche distintive che permettono di catalogare gli

elementi in classi;

 Clustering – individuazione di gruppi con elementi omogenei all’interno del gruppo e diversi da

gruppo a gruppo.

Associazione

Le tecniche associative descrivono relazioni che intercorrono tra elementi che compaiono insieme in un

determinato evento. Sono solitamente espresse con la formula A B dove A è detto antecedente e B

conseguente e costituiscono una implicazione (se si verifica A allora si verifica B). La tecnica delle regole

associative è anche chiamata Market Basket Analysis.

La validità di una regola associativa può essere valutata sulla base di due valori: il supporto e la confidenza.

 Supporto di una regola: Il supporto fornisce la rilevanza statistica della regola e indica invece il

numero di volte per cui la regola è verificata sul totale delle registrazioni nel data set ed è quindi

P( A , B)

uguale a .

 Confidenza di una regola: misura la forza della regola, quindi quante volte nel data set analizzato, se

si verifica la condizione espressa nell’antecedente, si verifica anche quella del conseguente. In

|

( )=P(

P B A A , B)/ P( A)

termini probabilistici si può esprimere come la probabilità condizionata

Classificazione

La classificazione permette di assegnare in modo automatico gli elementi della base di dati a classi

predefinite. La tecnica di classificazione permette di trovare il profilo descrittivo per ogni classe attraverso il

training set, e assegnare elementi inclusi in un test set alla classe appropriata. Possibili applicazioni della

classificazione sono la predizione della qualità dei fornitori o dei prodotti, e la predizione della propensione

all’acquisto dei clienti. Esistono diversi tipi di classificatori basati su diverse tecniche tra cui funzioni

33

matematiche, reti Bayesiane, alberi di decisione e reti neurali.

Prendiamo come esempio gli alberi di decisione:

 Un metodo efficace per la classificazione sono gli alberi di decisione;

 Gli alberi di decisione si costruiscono in due fasi:

Fase di build: si costruisce l’albero di partenza esaminando e partizionando gli elementi

o appartenenti al training set;

Fase di pruning: si eliminano i rami dovuti a rumore o fluttuazioni statistiche.

o

Clustering

Il clustering, come la classificazione, permette di raggruppare un insieme di elementi in base alle loro

caratteristiche, assegnando loro una classe di appartenenza.

 Il cluster è una tecnica che permette di suddividere un insieme di oggetti in gruppo in modo che:

Gli oggetti di uno stesso gruppo devono essere molto simili tra loro;

o Gli oggetti appartenenti a classi diverse devono avere caratteristiche molto diverse.

o

 Il problema fondamentale del clustering è quello della definizione della misura di similarità

 Applicazioni identificazione di popolazioni omogenee di clienti in basi di dati di marketing.

Procedimento di clustering:

 Rappresentazione dei pattern: identifica un sottoinsieme di caratteristiche originarie

Per individuare la rappresentazione ideale si può procedere con una tecnica:

o  agglomerativa: inizia con un pattern in ciascun cluster e unisce cluster vicini;

 separativa: inizia con un unico cluster e lo divide.

per formare i cluster posso considerare le caratteristiche in modo:

o  politetico: tutte le caratteristiche sono usate contemporaneamente;

 monotetico: le caratteristiche sono considerate in modo sequenziale per dividere i pattern.

 Definizione di una misura di prossimità che sia appropriata al dominio applicativo.

 Raggruppamento vero e proprio:

Hard clustering: ogni pattern è associato ad un solo cluster;

o Fuzzy clustering: ad ogni pattern viene associato un grado di appartenenza a diversi cluster

o

 Astrazione dei dati (eventuali): produrre una rappresentazione semplice e compatta dei dati.

 Valutazione del risultato (eventuale): si valuta la validità dei cluster e si fa un confronto tra gli

algoritmi di clustering.

16/10/17

SISTEMI INFORMATIVI

(LEZ 9 – RETI)

Reti di calcolatori:

Quando si parla di comunicazione, indipendentemente dagli attori in gioco e dalle modalità di

comunicazione, è sempre possibile ricondurre il tutto ad un modello molto semplice:

(i) un trasmittente, che vuole inviare il messaggio, (ii) un ricevente, che è il destinatario del messaggio,

(iii) un canale di trasmissione su cui il messaggio viene inviato da trasmittente e ricevente sotto forma di

segnale.

Quando si parla di comunicazione tra elaboratori il modello è identico, in questo caso, il messaggio è

rappresentato da un dato, il trasmittente e il ricevente sono due nodi di elaborazione, il canale di

trasmissione può essere o un filo, e in questo caso si parla di comunicazione di tipo wired, oppure l’aria, e

34

quindi con comunicazione di tipo wireless. Il trasmettitore ha un dato, memorizzato nel nodo in forma

digitale, che vuole trasmettere, e per farlo deve trasformarlo in maniera opportuna per renderie possibile la

sua trasmissione sul canale di comunicazione prescelto. Il ricevente, in ascolto sul canale, una volta captato

e letto il segnale dovrà trasformarlo per rappresentarlo all’interno del proprio sistema sempre in formato

digitale. Uno degli aspetti cruciali è riuscire a trasmettere i messaggi in modo efficiente ed efficace. Il ritardo

tra il momento della trasmissione e quello della ricezione deve essere ridotto così come deve essere garantito

che il dato inviato corrisponda a quello ricevuto. Sistemi di codifica e controllo garantiscono la correttezza

del dato da un lato ma dall’altro possono ridurre l’efficienza.

Classificazione delle reti:

Le reti si possono classificare considerando diversi aspetti: la loro estensione geografica, la topologia con

cui sono collocati i nodi nello spazio e la tecnica di instradamento utilizzata.

Per estensione:

Riguardo all’estensione della rete è possibile individuare 4 possibili tipologie di reti:

 PAN (Personal Area Network): la sua estensione è tra qualche centimetro e pochi metri e,

solitamente, indica reti che collegano dispositivi personali. Bluetooth è il protocollo principalmente

utilizzato, mentre USB è la tecnologia usata per la connessione di tipo wired.

 LAN (Local Area Network): indica una rete che collega nodi abbastanza vicini, tipicamente

all’interno dello stesso edificio. Questo avviene attraverso una opportuna cablatura degli edifici al

fine di fornire prese di rete distribuite tra le varie stanze. Con l’avvento della comunicazione wireless

di tipo wi-fi, la cablatura include anche la presenza di access point per una connessione ancora più

flessibile.

 MAN (Metropolitan Area Network): la rete copre alcuni chilometri e di solito è limitata a specifiche

aree urbane. La connettività è garantita da un operatore pubblico o privato che offre la connettività

attraverso connessioni tipicamente di tipo wired.

 WAN (Wide Area Network): indica una rete la cui estensione è di diverse decine, o anche centinaio,

di chilometri. Anche in questo caso, vi è un operatore di rete che ha il compito di realizzare

l’infrastruttura di connessione utilizzando anche tecnologie diverse: fibra ottica per le dorsali, cavi

fino alle centrali, doppino di rame per l’ultimo miglio.

Per topologia:

È possibile classificare le reti di elaboratori secondo la loro topologia, cioè come i vari nodi sono

posizionati, a seconda del mezzo trasmissivo utilizzato, rispetto agli altri.

 Bus: un unico canale trasmissivo condiviso tra tutti i nodi. Inizialmente questo tipo di topologia era

quello adottato per la comunicazione wired. Oggi la topologia a bus è associata alla comunicazione

di tipo wireless visto che l’aria è un mezzo trasmissivo per sua natura condiviso. I protocolli definiti

per lavorare su questo tipo di topologia devono fornire strumenti per la gestione dell’accesso

concorrente (un esempio è il protocollo Ethernet);

 Anello: vede una comunicazione diretta solo tra coppie di nodi e assicurandosi che ogni nodo sia

collegato a solo altri 2 nodi. Il protocollo solitamente utilizzato per garantire la comunicazione su

questo tipo di struttura è il token ring che prevede la definizione di un verso dei messaggi e il

principio secondo il quale un nodo può inviare un messaggio solo se in possesso del token. Sulla rete

viaggia appunto in modo circolare un messaggio particolare, detto token. Quando un nodo riceve il

token, significa che ha la possibilità di utilizzare la rete per la trasmissione e questo implica che il

35 token venga consumato e il messaggio, recante il nodo destinatario finale, inviato al nodo successivo.

Nel caso questo risulti il destinatario finale, letto il messaggio, rigenererà il token e lo invierà di

nuovo sulla rete, per dar modo ad altri di inviare il proprio messaggio. Se invece non è il destinatario

finale, inoltrerà il messaggio al nodo successivo che si comporterà allo stesso modo. Quello che può

rendere difficile la sua adozione è la necessità di collegare questi sistemi secondo una topologia che

potrebbe richiedere costi notevoli oltre al fatto che interferenze nella trasmissione o rotture nelle

comunicazioni potrebbero rompere l’anello (per risolvere questi problemi sono stati proposti

meccanismi a doppio anello). Un ulteriore complicanza è dovuta alla gestione del token che, a causa

di interferenze nella trasmissione, o di indisponibilità dei nodi, potrebbe essere compromesso e la sua

trasmissione bloccarsi (per risolvere sono stati proposti meccanismi di rigenerazione del token).

 Stella: in questo caso, oltre ai nodi di elaborazione, vi è presente anche un nodo aggiuntivo detto hub.

In questo caso i nodi non sono collegati direttamente tra di loro, ma attraverso una connessione

all’hub. Quando un nodo vuole inviare un messaggio, lo invia all’hub indicando nel messaggio il

destinatario finale. Sarà quindi compito dell’hub inoltrare il messaggio al destinatario finale. Il

vantaggio di questa soluzione sta nella sua facilità realizzativa. Lo svantaggio risiede nella presenza

di un nodo accentratore, l’hub, il cui malfunzionamento preclude la comunicazione a tutti i nodi, o

altri hub ad esso collegati.

 Reti magliate: che possono essere complete o parziali. Nel primo caso si ha una soluzione che

prevede la presenza di un mezzo trasmissivo per ogni coppia di nodi. Questa struttura viene detta a

maglia completa. Questa soluzione soffre di alti costi di realizzazione e manutenzione in quanto deve

essere garantita la posa e il funzionamento di tutte le connessioni. Per ovviare a tale complessità, si

possono inserire nella rete alcuni nodi addetti allo smistamento dei messaggi per far sì che questi

arrivino a destinazione senza richiedere una maglia completa. La rete risultante non prevede quindi

più la presenza di una connessione diretta tra tutti i nodi, ma una rete a maglia parziale dove è

sufficiente che nessuno dei nodi risulti isolato in quanto deve esistere almeno un cammino

36

Per tecnica di instradamento:

Questo tipo di classificazione riguarda come i messaggi attraversano la rete per arrivare a destinazione e

deriva dal fatto che in una rete è possibile avere connessioni di tipo dedicato o commutato. Nel primo caso,

il collegamento tra nodi è esclusivo per i due nodi collegati. Al contrario nelle reti commutate il

collegamento tra due nodi viene creato solo quando serve utilizzando i collegamenti esistenti.

In particolare, a seconda di come viene gestita la trasmissione su queste reti, si può avere uno scambio di

dati con commutazione di circuito o commutazione di pacchetto. Il primo caso rispecchia il funzionamento

dei primi impianti telefonici. Con la commutazione di pacchetto, invece, non è richiesta la costruzione di un

circuito per dare il via alla trasmissione ma: il trasmittente spezzerà il messaggio in tanti pacchetti, li

intesterà con l’indirizzo del ricevente, e li invierà al nodo commutatore, il quale si farà carico di farli arrivare

a destinazione.

Protocolli di comunicazione:

Lo stack protocollare, o pila ISO/OSI fornisce un modello di riferimento per individuare i principi

architetturali e i servizi che i protocolli che regolano la comunicazione tra due o più nodi di elaborazione

devono soddisfare. La pila ISO/OSI è composta da 7 livelli. Ogni livello si occupa di fornire un insieme di

strumenti, governati da protocolli, per fornire servizi al livello successivo della pila.

 Fisico: si occupa della trasmissione vera e propria del pacchetto ricevuto dal livello dati, secondo un

particolare mezzo trasmissivo. Il livello fisico si occupa anche della trasmissione di dati tra nodi di

elaborazione connessi fisicamente e direttamente attraverso lo stesso mezzo trasmissivo;

37

 Dati: a questo livello, a ogni interfaccia di rete viene assegnato un indirizzo univoco a livello globale

che lo caratterizza indipendentemente dalla rete in cui il nodo è inserito detto indirizzo fisico.

Solitamente l’indirizzo utilizzato è il MAC Address: un numero di 48 bit rappresentato come una

serie di 6 coppie di cifre esadecimali nella forma: XX:XX:XX:XX:XX:XX dove le prime 3 coppie

identificano il produttore della scheda (OUI) mentre le rimanenti 3 coppie il numero seriale della

scheda specifica per il produttore (NIC). Tra i protocolli più utilizzati a questo livello si ha l’Ethernet

che prevede il supporto del meccanismo CSMA/CD (Carrier Sense Media Access/ Collision

Detection);

 Rete: quando la comunicazione non interessa due nodi direttamente collegati, a questo livello si

forniscono gli strumenti per garantire comunque la possibilità di scambiarsi pacchetti. È necessario

indirizzare i nodi di elaborazione, per questo motivo, ad ogni nodo, è associato un indirizzo di rete.

Al contrario che per il livello dati, l’indirizzo di rete è dinamico e deve essere univoco solo

all’interno della rete in cui esso si trova;

 Trasporto: in questo livello sono supportati tutti i meccanismi governati da opportuni protocolli in

grado di far comunicare le diverse applicazioni in esecuzione sul nodo. Ad ogni applicazione è

assegnato un indirizzo specifico. A questo livello sono anche presenti meccanismi per

l’ottimizzazione della trasmissione che prevede tra gli altri:

La suddivisione del messaggio da inviare in pacchetti che saranno inviati in modo

o indipendente gli uni dagli altri dal livello di rete;

Il riassemblaggio nell’ordine corretto dei pacchetti alla destinazione;

o Il controllo della congestione della comunicazione.

o

 Sessione: siccome le diverse applicazioni presenti sul nodo possono richiedere l’accesso alla rete

contemporaneamente, a questo livello deve essere garantito l’isolamento tra i flussi di messaggi

generati dalle diverse applicazioni;

 Presentazione: considera le modalità più adeguate per rappresentare l’informazione contenuta nei

messaggi sulla base delle caratteristiche del nodo;

 Applicazione: questo livello può essere identificato dall’applicazione che genera e riceve messaggi A

questo livello troviamo ad esempio, i browser e i client di posta.

Secondo questo schema, affinché la comunicazione possa essere considerata avvenuta, ogni livello deve

vedersi soddisfatto il protocollo che governa il suo servizio.

16/10/17

SISTEMI INFORMATIVI

38

(LEZ 10 – SUITE TCP/IP)

Suite e protocolli TCP/IP:

Tra le diverse realizzazioni del modello di riferimento ISO/OSI, quella che ha avuto il maggior impatto è

rappresentata dalla suite di protocolli TCP/IP. Questa suite rappresenta un insieme di protocolli tra cui i

rappresentanti principali sono il TCP (Transmission Control Protocol), per il livello di trasporto, e l’IP

(Internet Protocol), per il livello di rete. Questi 2 protocolli, infatti, costituiscono l’asse portante di internet

su cui si poggiano protocolli applicativi quali, ad esempio HTTP (HyperText Transfer Protocol), SMTP

(Simple Mail Transfer Protocol), POP3 (Post Ofice Protocol), IMAP (Internet Message Access Point), per la

gestione della posta, FTP (File Transfer Protocol), per trasmissione di file.

Il gateway permette ai nodi di comunicare anche con sotto-reti diverse rispetto a quelle da cui il messaggio

ha origine.

A differenza di un gateway, un router, ha la possibilità di riuscire ad inviare un messaggio anche a nodi non

direttamente collegati sfruttando il concetto di instradamento (routing) in quanto un router ha una

conoscenza che va al di là dei nodi direttamente collegati. Al fine di riuscire a gestire una rete con questo

tipo di complessità, la suite di protocolli TCP/IP prevede che ogni nodo supporti un certo insieme di

protocolli

39

I nodi che rappresentano il mittente e il destinatario finale dei messaggi supportano l’intera suite di pro-

tocolli secondo una struttura a livelli simile a quella della pila ISO/OSI. Qui però, i 7 livelli originari sono

ristrutturati in 5 livelli: dove il trasporto include anche il livello di sessione, mentre il livello di applicazione

include anche i servizi di presentazione.

Protocollo IP:

Il protocollo IP fornisce un insieme di servizi per garantire la trasmissione di messaggi tra nodi (detti host)

non direttamente collegati tra di loro. Il protocollo, innanzitutto, prevede che ogni host, che esso sia un

router o un nodo finale, sia univocamente identificato, per questo ad ogni nodo è associato un indirizzo IP,

che nella versione 4 si traduce in un numero di 32 bit, rappresentato da 4 coppie di 8 cifre binarie. Avere un

indirizzo unico all’interno della stessa rete permette al nodo mittente, di indicare sul messaggio la

destinazione del messaggio in modo univoco, e quindi di evitare errori nella trasmissione. Al fine di

migliorare le tecniche di instradamento, gli indirizzi IP sono costruiti in modo da contenere informazione

riguardo alla struttura della rete e, quindi alla posizione del nodo all’interno della rete.

Gli indirizzi IP sono stati raggruppati in classi:

- classe A: hanno la forma 0-127.X.X.X (quindi sono compresi tra 0.0.0.0 e 127.255.255.255) con

subnet mask 255.0.0.0

- classe B: hanno la forma 128-191.X.X.X (quindi sono compresi tra 128.0.0.0 e 191.255.255.255) con

subnet mask 255.255.0.0

- classe C: hanno la forma 192-223.X.X.X (quindi sono compresi tra 192.0.0.0 e 223.255.255.255)

con subnet mask 255.255.255.0

Ad ogni classe è assegnata una subnet mask. Questa è un numero binario, nella stessa forma dell’indirizzo IP

(quindi 4 cifre di 8 bit) utilizzato per capire quale parte dell’indirizzo identifica la sottorete e quale l’host al

.

suo interno

Oltre alla classificazione per classi, è possibile distinguere gli indirizzi IP in pubblici e privati. Un indirizzo

IP pubblico è un indirizzo che è univoco su tutta la rete e permette di far comunicare un host con qualunque

dispositivo su Internet. Tali indirizzi sono assegnati dall’ICANN, un ente internazionale che ha il compito di

assegnare, previa richiesta, blocchi di indirizzi di una certa classe.

Un qualunque dispositivo collegato ad Internet, come detto in precedenza, deve avere per definizione un

indirizzo IP. Tale indirizzo viene assegnato dal gestore della rete che, avendo ottenuto un blocco di indirizzi

di una certa classe, decide tale assegnamento. Una volta ottenuto l’indirizzo, il dispositivo sarà sempre

identificato da esso. Tale indirizzo IP è anche detto statico e non potrà essere usato da nessun altro

dispositivo, anche se il dispositivo proprietario dell’indirizzo in questione è spento. Siccome spesso gli

indirizzi IP a disposizione non sono sufficienti per coprire il numero di host che si collegheranno alla rete, si

adottano due tecniche che puntano ad ottimizzarne l’uso.

 La prima prevede l’uso di un assegnamento di tipo dinamico. Utilizzando un particolare protocollo,

40 detto DHCP, i dispositivi della rete richiedono ad un server DHCP un indirizzo tra il set di indirizzi

disponibili, il quale ne assegna uno per un tempo prestabilito.

 La seconda prevede un mix tra indirizzi pubblici e privati

Le modalità di distribuzione degli indirizzi elencate, sono rivolte all’ottimizzazione nella fase di

instradamento dei messaggi. Infatti, conoscere l’indirizzo IP significa conoscere l’indirizzo di sottorete e

quindi si suppone, attraverso l’uso di subnet mask, che tutti gli indirizzi con lo stesso prefisso appartengano

alla stessa sottorete, e pertanto possano essere raggiunti dallo stesso router.

In secondo luogo, sfruttando un principio simile a quello dei sei gradi di separazione, anche quando un

router non conosce il destinatario finale, può inviare il messaggio a un router che conosce e che, a sua volta,

potrebbe conoscere la destinazione finale o, perlomeno, arrivarci con pochi passi.

Protocollo TCP:

Lo scopo del protocollo TCP è creare e gestire una connessione durevole tra i livelli di trasporto dei due nodi

in comunicazione. A tal proposito, il protocollo TCP si occupa anche della segmentazione del messaggio, del

suo riassemblaggio, del mantenimento della sessione e della gestione del traffico. Partendo dalla

segmentazione, essa è richiesta in quanto il messaggio, proveniente dal livello applicativo, potrebbe essere

di lunghezza troppo elevata per essere trasmesso con un unico invio sia per questioni di capacità di canale

che di traffico. Per ovviare a ciò, il messaggio iniziale viene spezzato in tanti segmenti successivamente

numerati. Ognuno dei segmenti viene quindi inoltrato al livello IP che si occuperà, per ognuno di essi, di

trovare il percorso migliore per arrivare a destinazione. Infatti, sebbene appartengano allo stesso messaggio,

non è detto che tutti i segmenti seguano lo stesso itinerario in quanto il traffico sulla rete è soggetto a

variazioni anche repentine a cui il messaggio stesso contribuisce. Pertanto, il livello di trasporto nel nodo

destinazione riceverà in modo disordinato i vari segmenti ma, sfruttando il numero d’ordine, saprà

riordinarli e una volta ricostruito il messaggio invierà un messaggio di acknowledgement (ACK). È bene

definire un tempo di time out dall’invio del messaggio, trascorso il quale, se il messaggio di ACK non viene

ricevuto la comunicazione viene considerata non avvenuta.

Un’altra importante caratteristica del protocollo TCP riguarda il controllo di flusso, che impone una velocità

massima di ricezione dei pacchetti sulla base dell’occupazione del nodo ricevente, e il controllo della

congestione che lato mittente regola la velocità di invio dei pacchetti sulla base dello stato della rete.

Sliding window indica il numero di segmenti che contemporaneamente il livello di trasporto può inviare

al livello di rete senza congestionare né la rete, né il nodo ricevente.

Protocolli applicativi:

A livello applicativo si trovano diversi protocolli in grado di fornire i servizi ormai di uso comune. Ogni

risorsa presente sulla rete è identificata da un nome univoco nel formato URL (Uniform Resource Locator)

che si presenta nella forma: protocol://host:porta/path dove:

 Protocol: indica il protocollo applicativo da utilizzare per accedere a tale risorsa;

 Host: può essere l’indirizzo IP del nodo su cui è attivo il servizio che supporta il protocollo

specificato, un nome di facile memorizzazione associato ad esso;

 Porta: indica la porta applicativa (parte dell’indirizzo a livello di trasporto) a cui risponde il servizio

applicativo. Alcuni servizio, quali HTTP FTP, SMTP hanno una porta predefinita (rispettivamente

80, 21, 25);

 Path: indica il percorso, all’interno del file system di competenza del servizio applicativo.

Tra i protocolli applicativi disponibili sulla infrastruttura Internet, un ruolo fondamentale è ricoperto da

HTTP. Questo protocollo regola la comunicazione tra un nodo di elaborazione su cui è attivo un processo

41

detto HTTP server o Web server, in grado di fornire documenti (statici o dinamici), immagini, video, e un

nodo che richiede tali informazioni attraverso un processo detto HTTP client o Web browser. Il protocollo

HTTP prevede il supporto per diverse operazioni, detti metodi, i cui principali operandi sono GET, POST,

PUT, DELETE.

23/10/17

SISTEMI INFORMATIVI (LEZ 11 –

ARCHITETTURA DEI SISTEMI INFORMATIVI)

Instrada i messaggi all’interno della rete locale

 ha piena conoscenza della rete locale

Gateway Se le reti vogliono

mandare messaggi a reti

A1 ACCESS POINT esterne si andranno a

collegare a un router che

ha le stesse funzioni del

Collegamento

A2 Gateway +

diretto tra Router l’instradamento

Gateway INSTRADAMENTO(R

OUTING)

A3 B1 Gateway (HUB) Router

B2 C2

C1

Il Gateway nelle “reti bus” è l’ACCESS POINT

Il Gateway nelle “reti a stella” è l’HUB

Il router tramite l’instradamento è in grado di inviare messaggi senza necessariamente il bisogno di

conoscere la topologia della rete.

1. INTERNET PROTOCOL

Indirizzo IP nella versione 4 è composto da 32 bit, i quali sono espressi in notazione decimale.

È composto da 2 sezioni:

NET_ID (prefisso): identifica la sottorete di instradamento

 HOST_ID (Suffisso)

 

Subnet Mask Questa è un numero binario, nella stessa forma dell’indirizzo IP (quindi 4 cifre di 8 bit)

utilizzato per capire quale parte dell’indirizzo identifica la sottorete e quale l’host al suo interno

42

Utilizzo: mettiamo in AND l’indirizzo IP e quello della Subnet Mask, otterremo quindi come risultato

l’indirizzo IP che mantiene gli 1 solo laddove è coperto da 1 nella Subnet mask

Quindi 131.175.0.0 è l’indirizzo di rete a cui appartiene l’host con indirizzo 131.175.120.1

Tabelle di instradamento se il messaggio avviene tra reti di cui il router conosce la posizione

l’instradamento è diretto. Se ciò non avviene il router chiede ad altri router a cui è collegato; qualora non si

trovi ancora la rete, il router chiederà a un router ad un livello + alto. Quindi con la tabella di instradamento

riesco a capire dove inviare il messaggio.

Assegnamento dinamico IP DHCP (Dynamic Host Configuration Protocol) è il protocollo che

assegna/alloca per un intervallo di tempo dinamico gli indirizzi IP. Si occupa quindi di controllare lo stato

degli indirizzi e allocarli agli utenti. Indirizzi unici all’interno delle reti locali.

Per l’invio di messaggi esterni, il router prende le nostre richieste e l’invia al mittente solamente dopo aver

assegnato l’indirizzo pubblico (assegnatoci dal provider di rete) identificati univocamente sulla rete

Tecnica NAT (Network Address Translation) per eseguire le traduzioni da indirizzo privato a pubblico e

instradarlo correttamente uso le tecniche NAT.

2. LIVELLO 4 (TRASPORTO)

Il livello di trasporto include anche il livello di sessione previsto nella pila ISO/OSI.

Il TCP (Transmission Control Protocol) è un indirizzo ed ha 3 compiti fondamentali:

1. Segmentazione e riassemblaggio messaggio

2. Mantenimento sessione di comunicazione

3. Gestione traffico

1) Arriva un messaggio (insieme di bit) e prepara tanti pacchetti di lunghezza fissa. Ogni pacchetto dati avrà

un indice (n° in sequenza), perché ogni pacchetto viene poi mandato al livello sottostante, i pacchetti

vengono inviati indipendentemente l’uno dall’altro. A livello destinatario il TCP ha quindi il compito di

prendere i vari pacchetti e riassemblare il messaggio in base all’ordine che viene specificato dal n° in

sequenza dell’indice Per ogni pacchetto ricevuto viene inviato un

TCP messaggio di ACK che informerà il mittente

della ricezione del messaggio

43 TCP

2) Il TCP vuole virtualmente creare un canale sicuro/affidabile di comunicazione

perché garantisce appunto il mantenimento della sessione tra le 2 parti. La sessione si apre solamente alla

ricezione del 1° pacchetto e si chiude con la ricezione dell’ultimo.

Timeout è il tempo che la rete fissa, all’interno del quale tutti i pacchetti devono essere ricevuti. Il

mittente si può aspettare un messaggio di ACK oppure un messaggio di Timeout, il messaggio verrà quindi

continuamente inviato fino a ricezione del messaggio di ACK. Il TCP a livello mittente dovrò quindi gestire

i duplicati.

3) Il traffico a livello di rete può incontrare 2 problemi:

- Dall’host destinatario l’host può essere non attivo (vedremo quindi un messaggio che

ci dice che il nodo non è attivo)

- Dalla rete (non affidabile)

Spesso le 2 macchine hanno capacità molto diverse. Solitamente si cerca quindi di settare la connessione in

base alla capacità che ha la macchina a capacità minore.

Sliding Window indica il numero di segmenti che contemporaneamente il livello di trasporto può inviare

al livello di rete senza congestionare ne la rete, ne il nodo ricevente

Congestion Window invio un pacchetto, ma la rete risulta congestionata, quindi il pacchetto viene

rimandato indietro e questo si riduce di 1 finché non viene accettato dalla rete

Si definisce quindi la velocità di connessione considerando la velocità della rete e la velocità del

destinatario.

Best effort la rete viene considerata best effort, ovvero, se il messaggio lascia il mittente allora arriva a

destinazione (TCP comunicazione affidabile).

Indirizzo di trasporto composto da indirizzo IP e porta (canali di comunicazione utilizzati dalle app).

L’indirizzo IP e la porta definiscono l’applicazione.

L’applicazione che sto usando si trova a livello applicativo

3. LIVELLO 5 (APPLICATIVO) 

HTTP (Hyper Text Transfer Protocol) per navigare il Web, l’HTTP è un protocollo Stateless (senza stato),

ovvero è un protocollo a memoria corta: gestisce la vostra richiesta e una volta eseguito il compito dimentica

la richiesta fatta. Inoltre, l’HTTP è completamente inaffidabile, invia solamente il comando, il TCP si

preoccupa di far arrivare il comando al WebServer

FTP (File Transfer Protocol) download/upload file

SMTP (Simple Mail Transfer Protocol) gestione posta (entrata: POP/IMAP | uscita: SMTP)

http://www.polimi.it/index.html Appartenenza rete

http://nomehost.dominiodisecondolivello.dominiodiprimolivello/ 

(rif. Geografico .it) (rif.

Commerciale .com) (rif.

Da acquistare 

Governativo .gov) (rif.

Universitario .edu)

DNS (Demain Name Server)

Client applicazione in grado di inviare richieste

Path identificano in modo univoco un file (la pagina che vogliamo cercare)

44

2

30/10/17

SISTEMI INFORMATIVI

(LEZ 12- WEB INFORMATION SYSTEM E SOA)

Web Server è la macchina in cui ci sono i contenuti del sito che volete mostrare

Cookies sono file che memorizzano temporaneamente le vostre richieste, memorizzano quindi dati

temporanei che servono per il mantenimento della sessione. Autorizzando i cookies, autorizziamo i siti a

memorizzare le nostre sessioni, dando la possibilità al sito di accedere alla nostra cartella personale dei

cookies. I cookies devono essere di piccole dimensioni (4 Kilobyte), perciò molti siti memorizzano sulla

nostra macchina solo l’id (riferimento che dice chi siamo) e poi hanno sul loro Server un file contenente

tutte le nostre info.

Richieste HTTP

GET vogliamo recuperare una risorsa

 

POST/PUT Mandano qualcosa (compilazione form), i dati vengono inviati al Web

 

Server tramite una Post. La POST la utilizzo se la risorsa non esisteva, mentre per

l’aggiornamento utilizzo una PUT

DELETE elimino una risorsa dal Web Server

 

Richieste FTP 

Protocolo POP carica dal Client al server (Disallinea le viste)

Protocollo IMAP tutte le azioni praticate sul client viene salvata sul server. Ogni azione che viene fatta su

una WebApp viene poi replicata sul server.

Una architettura è definita come l’insieme dei concetti e delle proprietà fondamentali di un sistema che

trova la sua caratterizzazione nelle componenti dell’architettura, le relazioni tra di essi, e i principi seguite

nella sua progettazione ed evoluzione. Al fine di rappresentare un’architettura è quindi necessario

considerare il sistema secondo tre viste:

Vista Statica: l’insieme di elementi che contribuiscono al sistema di cui si sta

 definendo l’architettura. Componenti Hardware e Software;

Vista Dinamica: mi permette di collegare i componenti tra di loro (relazioni tra

 componenti, quali dati si scambiano/ come comunicano);

Vista temporale: come il sistema evolve, dalla sua nascita alla sua dismissione.

Le architetture si costituiscono principalmente in due macro categorie, ovvero:

Architettura centralizzata: architettura composta da un solo nodo di elaborazione (hardware), e dal

o punto di vista Software tutte le applicazioni di cui l’azienda dispone sono istallate su questo

calcolatore.

45 Nascono negli anni ’50 ’60 e vengono poi raffinate attorno agli anni ’70 ‘80

Legge di Grosch: «C’è una regola fondamentale che viene chiamata modestamente la legge di

Grosch, che sta dando un impulso all'economia come la radice quadrata dell'aumento in velocità —

per fare una elaborazione 10 volte più economica bisogna farla 100 volte più veloce»

Partendo da questo presupposto, è facile capire come nelle aziende le macchine venissero utilizzate

per aumentare la velocità di esecuzione, l’efficienza dei processi e, soprattutto, per garantire lo

sfruttamento delle economie di scala.Per il raggiungimento di questi obiettivi, venivano creati dei

sistemi informatici centralizzati: nell’impresa era presente una singola macchina (cioè il mainframe),

con la quale interagivano tutti i cosiddetti “terminali stupidi” (ossia le interfacce utente, che erano

prive di qualsiasi capacità di processazione e potevano soltanto comunicare con la macchina

principale).

Svantaggi di questa architettura:

- Una volta raggiunto il punto di max prestazione (vincolo del calcolatore) il calcolatore non

riesce più a processare informazioni (il calcolatore si siede) l’unico modo per superare

questo blocco è comprarne uno nuovo in quanto non è possibile effettuare un upgrade di

calcolo cambiare il mainframe è un investimento ingente per l’impresa (per questo le

architetture centralizzate diventano meno popolari)

Architettura distribuite: un’architettura per essere definita distribuita, deve soddisfare almeno una

o delle seguenti due condizioni:

- Le applicazioni, tra loro cooperanti, risiedono su più nodi applicativi (elaborazione

distribuita);

- Il patrimonio informativo, unitario, è ospitato su più nodi elaborativi (base di dati distribuita).

In termini generali, quindi, un sistema distribuito è costituito da: uno o più nodi di elaborazione che,

al contrario dei terminali del sistema centralizzato, possono eseguire anche applicazioni in locale, e

una o più di applicazioni logicamente indipendenti che collaborano per il perseguimento di obiettivi

comuni attraverso un’infrastruttura di comunicazione.

L’architettura di un’applicazione può essere molto complessa. È possibile però, in generale, strutturare le

applicazioni secondo tre livelli logici, in letteratura spesso indicati come layer, che trovano corrispondenza

in altrettanti strati software nei quali vengono partizionate le applicazioni:

 Il livello presentazione si occupa di gestire la logica di presentazione, quindi le modalità di

interazione con l’utente: contiene le modalità di interfacciamento e di rendering delle informazioni.

Questo livello viene anche denominato Front-End dell’applicazione ed è accessibile dall’utente

attraverso una GUI, o interfaccia grafica;

 Il livello della logica applicativa o logica di business si occupa delle funzioni da mettere a

disposizione dell’utente;

 Il livello di logica di accesso ai dati (DBMS) si occupa della gestione dell’informazione,

eventualmente con accesso ai database, o a sistemi legacy, o anche a risorse informative disponibili

in rete.

I livelli di logica applicativa e di accesso ai dati costituiscono il back-end dell’applicazione e, al contrario

della logica di presentazione, è accessibile attraverso delle API (Application Program Interface).

Applicazioni distribuite:

Nei sistemi distribuiti, i livelli logici software (layer) vengono installati su livelli hardware (detti tier), dove

un livello rappresenta una macchina (o un insieme di macchine), ognuna con la propria capacità elaborativa.

A seconda di come questa distribuzione di layer sui tier avviene, un’applicazione può essere configurata in

46

modi diversi.

1 TIER (single tiered)L’architettura centralizzata è quella che andiamo a definire con un Tier,

tutti i Layer software saranno su un singolo Tier. In questo caso tutti e tre i livelli logici software

sono assegnati ad un’unica macchina.

Paradigma client e server: paradigma utilizzato per fare del software, ho 2 entità (client/server), il

client è l’entità che ha bisogno di un’entità e non riesce a riconoscerla localmente e deve quindi

mandare una richiesta al server (chiede di eseguire un pezzo di codice), il server restituisce quindi

una risposta al client.

Il Client è un’oggetto che chiede qualcosa, il server è un’oggetto che riceve la richiesta del client

svolge un pezzo di progetto e restituisce la risposta al client. Se il server non ha delle conoscenze per

svolgere una richiesta può diventare client all’interno di altre comunicazioni con altri server.

Client e Server risiedono sulla stessa macchina (es MySQL (Server) e WorkBench (Client)).

Client e Server risiedono su macchine differenti, 2 TIER (two tiered) il compito è quello di

prendere i Layer software e posizionarli sui 2 Tier. Nella norma il Client è responsabile solo della

presentazione mentre i server hanno applicazione e dati. A seconda delle funzionalità assegnate al

nodo client, si parla di thin client o thick client.

Thin Client il client è leggero, in quanto gestisce la sola logica di presentazione o solo una parte

viene eseguita dal Client (dal browser su cui mi collego). Questo tipo di soluzione, che ha il

vantaggio di funzionare anche con risorse limitate, richiede una connessione stabile tra lato client e

lato server per poter rispondere a tutte le richieste degli utenti.

 

Fat Client una parte (o l’intero) dello strato applicativo viene spostata sul Client quindi si parla

di thick client quando oltre alla logica di presentazione, vi è presente anche parte (o l’intera) della

logica applicativa. Questo tipo di logica presenta il vantaggio che non è richiesta una connessione

stabile fra client e server, ma solo limitata ai momenti in cui le funzionalità o i dati non risiedono sul

lato client. Hanno introdotto anche alcuni svantaggi, in quanto è più complesso aggiornare e gestire

la logica applicativa su diverse macchine client che su un singolo server (+ complesso da gestire

rispetto ad una situazione standard di Thin Client).

47 

3 TIER (three tiered) i tre livelli applicativi sono suddivisi, in linea di principio, fra altrettante

macchine dedicate, ovvero: una stazione di lavoro utente, un server intermedio (detto anche middle

tier) e un server di gestione dei dati. Questo tipo di architettura era la prassi in azienda prima

dell’introduzione del Web nella stessa. Essa mi permetteva di dividere i dati dalle applicazioni

 e poter porre più attenzione al Server. Un sistema a tre livelli (tier) conferisce alle infrastrutture

ICT maggiori caratteristiche di scalabilità e flessibilità.

Mentre il passaggio tra architetture Single-Tiered a Two-tiered ha permesso di alleggerire il carico

del mainframe spostando parte della potenza di calcolo sui nodi client, che nel frattempo si erano

diffusi grazie al calo dei costi, l’architettura Three-Tiered punta a ottimizzare il carico lato server

distribuendolo su due nodi.

Applicazioni ad N livelli. In azienda solitamente ci possono essere 4 livelli che si

N TIER 

ottengono dividendo lo strato applicativo. Client/Application Server/Gateway/più DBMS. Il

Gateway nasconde la complessità del livello dati e permette quindi all’applicazione di avere un

Database solo omogeneo (invece di tanti DB eterogenei). Il Gateway interroga i vari database e ci

restituisce una risposta già integrata, traduce la nostra query in queries più piccole, traduce i dati e

restituisce la risposta alla logica applicativa.

I sistemi informativi basati su Web spesso si basano su 5 tier. In particolare, la presentazione viene

realizzata attraverso tre tier: il browser dell’utente, il Web server che garantisce l’accesso alle pagine

ed agli oggetti statici e lo Script engine che si occupa della generazione delle pagine dinamiche. I tier

4 e 5 corrispondono all’application server e al DBMS.

48 

I siti statici sono a 2 livelli Client (Browser) e Server (Web Server)

I siti dinamici, che invece sono + complessi e devono accedere a DB complessi e logichi più

complesse sono generalmente a 3 livelli o più.

Siti con metodi di pagamento sono almeno a 9 livelli.

31/10/17

SISTEMI INFORMATIVI

(LEZ 13 – CLOUD COMPUTING)

Quando ci sono più di 2 tier, la macchina comunica a coppia con il paradigma Client-Server.

Web Information System sono simili alle applicazioni solo che cambia l’interfaccia, ossia per accedere

usiamo il browser. Quindi utilizziamo il protocollo HTTP. Sono sistemi in cui il client ha come interfaccia il

browser. Hanno una loro architettura, diversa dalle solite perché hanno una componente web.

Il primo tier dopo il client è il web. 

Se le pagine sono statiche allora l’architettura si ferma qui (client server), ha due livelli.

Per gestire i siti dinamici solitamente non basta un singolo server, vengono utilizzati gli script (pezzi di

codici che servono per personalizzare la visualizzazione, ritrovano dei dati che riguardano ciascun utente).

Script engine: esegue tutti gli script e visualizza le pagine dinamiche solitamente è compreso nel web

server, nei casi di siti complessi invece il web server si appoggia ad un altro server (3 livelli).

Quando ci sono delle visualizzazioni c’è anche bisogno del database server. E se riguarda una grande

aziende c’è l’applicativo server.

49

Server Farm: seguendo l’approccio di tipo scale-out, i tier fisici possono essere realizzati anche come

server farm, ovvero come un insieme di elaboratori che condividono il carico elaborativo, le applicazioni e,

a seconda delle configurazioni, i dati. Una server farm è gestita dagli altri livelli come un’unica risorsa. Si

hanno delle macchine che lavorano in parallelo con la stessa funzione (vengono considerati come unico

server). Le server farm possono essere realizzate secondo due principi progettuali: Cloning (clonazione) e

Partitioning (partizionamento).

Si parla di clonazione quando sui server vengono installate le stesse applicazioni software ed i medesimi

dati. Le richieste sono poi instradate ai vari membri appartenenti all’insieme dei cloni usando un sistema di

load-balancing. Quindi quando arriva una richiesta al web server c’è il load balancer, che è un componente

che analizza il carico di elaborazione di ogni macchina e invia la richiesta alla macchina più scarica, ossia

quella che può rispondere prima.

 Un insieme di cloni dedicati allo svolgimento di un particolare servizio è detto RACS (Reliable Array of

Cloned Services) ed ogni clone implementa lo stesso insieme di funzionalità.

I RACS si possono presentare in 2 configurazioni:

Racs shared nothing:

- le macchine sono autonome

e non condividono niente. Il problema è con le

applicazioni write-intensive si usa

prevalentemente per applicazioni di sola lettura

(read-only).

- Racs shared disk: tutte le macchine condividono

un database risolve il problema

dell’allineamento

La tecnica di partizionamento prevede viceversa la duplicazione dell’hardware e del

software, ma non dei dati, che invece vengono ripartiti tra i nodi (Figura 1.6). Ogni nodo

50

svolge quindi una funzione specializzata; ad esempio il sistema Web di vendite di un’azienda

può essere suddiviso per tipologie di clienti o per linee di prodotto ed ognuna è gestita da un

nodo. 

Ogni macchina ha una funzionalità diversa i dati vengono spezzettati il problema è che non si ottimizza

perché se tutti richiedono la stessa funzione si blocca, oppure se si rompe una sola macchina viene perso il

risultato finale di tutte. Questa caratteristica è nota come proprietà di graceful degradation (degrado

parziale) dei sistemi distribuiti: a differenza dei sistemi centralizzati, in caso di malfunzionamento non tutto

il sistema risulta inaccessibile, ma solo alcune funzionalità non risultano più disponibili.

 Per risolvere il problema di indisponibilità di alcune funzionalità applicative in caso di guasto, si impiega

spesso la clonazione dei singoli server che costituiscono la partizione, creando in tale modo dei pack. Si

parla allora di RAPS (Reliable Array of Partitioned Service), una soluzione che garantisce sia

scalabilità che disponibilità del servizio.

1 TIER 2 TIER N TIER

OLTP APP WIS

LOCALI

CRITICH DSS Enterprise - WIDE

E Scalabilità

Costi di aggiornamento

51 Complessità gestione

Sicurezza

Scalabilità: proprietà che un sistema ha di crescere dal punto di vista delle richieste e delle funzionalità

(cresce al crescere dei livelli). Con scalabilità di una architettura IT si intende la capacità dell’infrastruttura

di soddisfare richieste crescenti da parte degli utenti (o di un maggiore numero di utenti) con aggiornamenti

adeguati. In generale possiamo identificare 2 tipi di scalabilità:

 scalabilità verticale (scale-up): l’aumento di prestazioni si ottiene mantenendo inalterato il numero

di nodi di elaborazione, ma aumentandone la loro capacità elaborativa.

 scalabilità orizzontale (scale-out): l’aumento di capacità avviene attraverso una replicazione dei nodi

che costituiscono l’eventuale collo di bottiglia. In tal modo, i processi, che inizialmente il singolo

nodo non era in grado di gestire, sono distribuiti tra i nodi replica. In questo caso, l’upgrade del

sistema è più complesso in quanto impatta sulla struttura dei tier.

In ambito Web, non si parla di scalabilità ma di elasticità del sistema: la proprietà di un sistema di non

solo aumentare le proprie risorse a fronte di picchi di richieste, ma anche di diminuirle quando le

richieste vengono meno. L’elasticità, che vedremo essere uno dei cardini delle soluzioni basate su Cloud

Computing, potrebbe essere vista come una scalabilità di tipo orizzontale reversibile, dove non solo è

prevista l’aggiunta di nodi, ma anche la loro rimozione.

06/11/17

SISTEMI INFORMATIVI (LEZ 13 – SICUREZZA

DEI SI)

Servizi: l’architettura a servizi (SOA o Service Oriented Architecture) è un approccio black box. Il

programmatore realizza i servizi, ossia pezzi di codice auto contenuti (indipendente da altri pezzi di codice,

può essere eseguito ed ottenere un output significativo).

Innanzitutto, è necessario identificare gli attori principali della SOA che sono, come per ogni ambito

dominato dai servizi, il provider e il consumer.

 Il service provider (programmatore) scrive il codice ma non lo esporta (quindi noi vediamo solo

un’interfaccia, non il codice) nell’interfaccia vediamo una lista di operazioni che possiamo fare e l’URI

(link da utilizzare per eseguire quel servizio).

 Il service consumer deve realizzare un programma e gli serve l’URI di un servizio, senza conoscere la loro

complessità (es. quando cerco hotel, metto degli input ed ottengo l’output senza vedere la complessità di

ricerca).

L’interfaccia grafica si chiama GUI.

Black box: i consumatori utilizzano il servizio senza conoscerne la logica (il servizio nasconde la logica).

L’obiettivo è permettere a chi non ha le competenze di progettare, la possibilità di usare i servizi.

La logica servizi viene utilizzata in piccolo in azienda: ossia l’azienda realizza codici utilizzando la logica

servizi e li pubblica in questo modo i codici possono essere riutilizzati all’interno della stessa azienda.

Questo comporta un risparmio di risorse umane e fisiche. Le interfacce dei servizi utilizzano tutte lo stesso

52

linguaggio. Accedo ai servizi allo stesso modo. Il linguaggio USDL. Questo permette l’interrogabilità.

Inoltre, si può espandere la lista dei codici in ogni momento. Due servizi fra loro devono essere

disaccoppiati, ossia non devono avere funzionalità che dipendono l’una dall’altra, devono solo scambiarsi

informazioni.

Virtualizzazione: rende software delle risorse hardware, ossia si cerca di virtualizzare delle risorse fisiche.

Si va dunque a creare una rappresentazione logica di risorse non limitata da vincoli fisici.

Alcune macchine vengono utilizzare al 5-10% delle loro possibilità nasce la virtualizzazione: l’obiettivo

è poter eseguire programmi di natura eterogenea sulla stessa macchina.

L’insieme delle risorse virtuali necessarie al funzionamento di una applicazione è detta macchina virtuale,

che, per essere eseguita necessita di una macchina fisica in grado di fornire le risorse reali.

È stato quindi creato “virtual machine monitor” che è in grado di disaccoppiare le operazioni della

macchina: la virtual machine gestisce una parte di memoria e usa una porzione di CPU, all’interno viene

installata un programma con le sue applicazioni.

Essendo la macchina virtuale, agli occhi di una applicazione, una macchina a tutti gli effetti, su di essa è

possibile installare a sua volta un sistema operativo (detto sistema operativo guest) che può anche differire

dal sistema operativo host. In questo modo, con un hypervisor in modalità hosted.

La virtualizzazione ha offerto, negli ultimi anni, la possibilità di migliorare e ottimizzare la gestione delle

risorse soprattutto nelle server farm. Infatti, uno dei problemi delle server farm, e dei data center in generale,

risiede nello spreco di risorse nel momento in cui le richieste, per una data applicazione, risultano – anche

solo temporaneamente – al di sotto della capacità dell’architettura. Questo tipo di spreco è evidente nel

momento in cui, ad ogni applicazione, è riservata una specifica macchina fisica. Infatti, statisticamente,

l’utilizzo medio di un server è di circa 5-10% rispetto alle sue potenzialità. Al fine di ovviare a questo tipo di

situazione, la virtualizzazione ha permesso di attuare politiche di server consolidation

Server consolidation: ricentralizzazione delle applicazioni dei sistemi distribuiti su un numero inferiore di

macchine fisiche con l’obiettivo di ridurre i costi dell’impianto informatico. Eliminiamo le risorse che non

vengono utilizzate. Una risorsa non può essere utilizzata oltre al 70%, perché oltre vengono deteriorate le

prestazioni. Le macchine sono continuamente accese e questo comporta consumo continuo di energia e

condizionamento continuo (la temperatura deve essere sempre più o meno costante).

Virtualizzazione + logica servizi = Cloud Computing

Cloud computing vuol dire avere a disposizione delle risorse illimitate a cui possono accedere in modo

trasparente. Il Cloud Computing è quindi un paradigma per la realizzazione di architetture applicative che,

poggiando su sistemi virtualizzati, possono accedere a tali risorse da qualunque dispositivo connesso alla

rete da qualunque località. La particolarità di tali risorse è la possibilità di richiederle on demand, quindi

solo quando servono. Sarà poi la piattaforma Cloud a offrire i servizi per metterle a disposizione quando

necessario e a rilasciarle quando non più utili.

Caratteristiche del cloud computing:

1. On-demand e self-service: on-demand ossia solo quando sono richiesti e self-service in quanto il

cliente può disporre unilateralmente di capacità di calcolo, senza richiedere l’interazione umana con

alcun fornitore di servizio;

2. Accesso alla rete onnipresente: non posso accedere ai servizi cloud senza avere la rete;

3. Accesso alle risorse indipendente dalla localizzazione: le risorse sono suddivise in più server e

l’utente di solito non sa dove queste sono localizzate;

4. Elasticity: le risorse possono essere rapidamente assegnate, aumentate o ridotte per soddisfare le

richieste dei clienti. L’obiettivo del cloud è fornire risorse illimitate, es. se google assegna 15 giga di

memoria ad utente e questo non li utilizza subito tutti, i giga rimanenti vengono assegnati ad altri. Se

lo stesso utente ha poi bisogno di tutti i giga rimanenti, google ne trova, in tempo reale, altri da poter

utilizzare. questo è possibile perché vengono spostati pezzi di virtual machine, questo

53 trasferimento può essere fatto a freddo (macchine spente) o a caldo (macchine accese); Per garantire

l’elasticity le risorse sono sempre sotto controllo c’è un sistema di monitoraggio;

5. Monitoraggio sull’utilizzo: Non si paga il servizio continuamente ma solo quando viene utilizzato;

Il cloud offre all’aziende 3 tipi di servizi (delivery) diversi:

 

IASS (infrastruttura come servizio): ossia offrire hardware, l’azienda affitta risorse hardware deve

preparare delle virtual machine da trasferire su server in cloud. Il vantaggio dell’impresa è il

risparmio sull’hardware. L’azienda paga in base a quanto consuma. Gli elementi infrastrutturali fisici

(server, ma anche storage, fino ai dispositivi di rete) vengono visti nel sistema come elementi

virtuali. Si definiscono come virtual machine (VM) macchine virtuali con caratteristiche tipiche di un

server fisico (numero di core, quantità di memoria disponibile, storage interno, ecc.). Sulle macchine

virtuali gli utenti possono installare il proprio software di piattaforma e le applicazioni. Le macchine

virtuali sono caratterizzate dalla possibilità di configurarle e quindi gestirle in modo flessibile,

acquisendo e rilasciando dinamicamente risorse computazionali.

 PAAS (piattaforma come servizio): le aziende usano in cloud piattaforme per la realizzazione delle

loro applicazioni. Con PaaS si considera una piattaforma in grado di supportare i programmatori

nello sviluppo e rilascio di applicazioni Cloud-ready. Negli ultimi anni, con il termine PaaS, si stanno

invece affermando ambienti – spesso chiamati anche semplicemente Cloud Platform – su cui sono

messe a disposizione una serie di servizi e applicazioni utili a costruire sistemi più complessi.

 SAAS (software come servizio): l’unica cosa che l’azienda fa è accedere all’applicazione ed

utilizzarlo. (es gmail, dropbox...). La complessità del software e la sua gestione non ricade sull’utente

che la utilizza. Queste applicazioni, disponibili immediatamente, permettono di essere fruite in modo

trasparente rispetto al dispositivo e, dato per scontata l’esistenza di una connessione Internet,

permette di essere sempre acceduta da qualunque posizione fisica. Utilizzo di software non residente

nelle postazioni aziendali.

In aggiunta ai classici tre modelli di erogazione, il mondo dell’IT ha visto un proliferare di ulteriori modelli

che spesso sono solo specializzazioni dei tre principali. Per questo si è introdotto il termine *aaS - everythis

as a service: qui altri componenti a livello applicativo, business e fisico vengono forniti come servizi. Si

parla ad esempio di DaaS (Data as a Service), BPaaS (Business Process as a Service), e così via.

Vengono definiti 4 tipi diversi di deployment:

 Private cloud: infrastruttura fornita ad uso esclusivo di una singola organizzazione;

54  Community cloud: ’infrastruttura è fornita ad uso di una comunità di organizzazioni che

condividono un obiettivo o un’esigenza comune, implementato con l’obiettivo di abbattere i costi

di investimento sul data center.

 Public cloud: l’infrastruttura è fornita ad uso pubblico;

 Hybrid cloud: questo caso corrisponde ad una combinazione delle precedenti

07/11/17

SISTEMI INFORMATIVI (LEZ 14 – SICUREZZA

DEI SI)

SAAS l’azienda non si preoccupa di nulla (delle applicazioni) in quanto vengono erogate come servizio.

Essendo l’applicazione in cloud non sappiamo esattamente quale è la struttura del sistema e quindi

da quanti livelli è formata.

Multi-tenant: si riferisce ad una architettura software in cui una singola istanza del suddetto software

gira su un server ed è utilizzata da più di una client organization (tenant). La multi-tenancy

rappresenta il concetto opposto all'architettura multi-istanza, nella quale separate istanze

del software sono dedicate alle client organization.

In un'architettura multi tenant, un'applicazione software è progettata per partizionare virtualmente i

suoi dati e la sua configurazione in modo che ogni client lavori con un'istanza virtuale personalizzata.

Ogni istanza non è dedicata all’azienda ma viene personalizzata per ogni singola azienda attraverso

metadati. 2 aziende “vedono” quindi 2 cose diverse, ma il software è lo stesso.

Vantaggi (nell’avere un’istanza sola rispetto che N):

- 

Aggiornamenti/manutenzione del software diminuzione dei prezzi

Svantaggi:

55 - 

Troppe aziende che accedono alla stessa istanza crea problemi vengono quindi create delle

istanze in parallelo (delle server farm con + istanze). Creo quindi un tenant load balancer il

quale decide dove andrà (su quale istanza) la richiesta.

NB: il numero di istanze è sempre minore rispetto al numero di aziende.

Sicurezza

Ogni volta che abbiamo una comunicazione interna o esterna all’azienda potremmo avere dei problemi di

sicurezza. Vi sono 4 proprietà fondamentali di sicurezza:

 Disponibilità: il nostro sistema informativo deve essere operativo nel momento in cui un agente ne

richiede le funzionalità.

 Integrità: i dati che vengono spediti/trattati all’interno del sistema informativo non devono essere

manipolati da agenti non autorizzati;

 Riservatezza/Confidenzialità: tutela rispetto all’identità del destinatario;

 Autenticità: in tutte le comunicazioni i messaggi devono essere integri e contenere delle informazioni

che rivelano l’identità del mittente;

 Autenticazione: ogni agente deve venire identificato prima di poter interagire con il sistema.

Le minacce a un sistema possono essere:

 

Fisiche: danneggiano fisicamente le infrastrutture furti/sottrazione di pezzi dal SI

 Logiche: sottraggono o alterano informazioni

 Accidentali: errori all’interno del software

Le violazioni, ovvero le conseguenze alle minacce, commesse ai danni dei sistemi informativi vengono

perpetrare sfruttando le vulnerabilità e possono comportare variate situazioni non desiderate o illegittime. La

maggior parte delle vulnerabilità di un sistema è causata da scarsa attenzione a problematiche di sicurezza

durante il ciclo di sviluppo delle applicazioni. Gli attacchi possono essere perpetrati alle reti di

comunicazione, ai server, ai Database, ai client, ciascuno con modalità di attacco differente.

Tipi di attacco:

Tra gli attacchi più frequenti, a livello di rete troviamo:

 Sniffing: non vengono alterate le informazioni tra A e B ma si limitano ad ascoltare;

 Spoofing: l’utente C non si limita ad ascoltare, ma invia un messaggio a B facendo finta di essere A.

C maschera l’indirizzo IP e utilizza quello di A;

 Hi-Jacking (man in the middle): l’utente C intercetta le comunicazioni tra A e B, cambio I messaggi

e lo rimando a B. Fa spoofing (perché si maschera). Viene preso il messaggio originale, viene

trattenuto dall’agente terzo, viene cambiato e rispedito mascherando la propria identità. Va contro la

proprietà di riservatezza (riceve un messaggio come destinatario ma non è autorizzato) e va contro le

proprietà di integrità (perché il messaggio viene alterato da chi non autorizzato)

 Denial of service (DOS): attacco alle macchine per limitare la disponibilità del servizio. La macchina

viene intasata e non ha più il tempo di rispondere ad altre richieste, cade il server.

A livello applicativo invece troviamo attacchi quali:

 MalVware: software che danneggiano un’applicazione

Virus si “attacca” a un software e si propaga tramite file

o 

Worm collegato a file “.exe” e si propaga

o 

Trojan non sono fatti per propagarsi, ma danneggiano solo la macchinas u cui si trova;

o

56

 Back door: Sono vulnerabilità introdotte apposta dai programmatori per poter loro stessi fare

modifiche successive al software. I malintenzionati spesso vanno alla ricerca delle backdoor per

entrare nel sistema.

 Spyware: Software usati per raccogliere informazioni dal sistema su cui sono installati e per

trasmetterle a un destinatario interessato. Non sono effettivamente malware in quanto non

danneggiano la macchina ma monitorano, spiano alla ricerca di dati sensibili. Possiamo definire

un’ampia gamma di spyware, quali l’invio di pubblicità non richiesta (spam), la modifica della

pagina iniziale o della lista dei preferiti del browser, la redirezione su falsi siti di e-commerce o

installazione di dialer che chiamano numeri a tariffazione speciale.

20/11/17

SISTEMI INFORMATIVI (LEZ 15 – SICUREZZA

DEI SI)

Come tutelarsi dagli attacchi durante la comunicazione?

Si usa la CRITTOGRAFIA, questa si basa su un algoritmo crittografico e su un’informazione segreta

detta chiave (ovvero lo strumento che gli autorizzati hanno per interpretare i messaggi). Crittografare

significa quindi codificare l’informazione in modo da renderla intelligibile solo a chi possiede una o più

chiavi. Ci si avvale sempre di algoritmi noti e resi pubblici. Alla crittografia si aggiungono ulteriori

meccanismi di tutela quali l’autenticazione e il controllo d’accesso.

Mittente A e destinatario B, il messaggio M prima di essere inviato viene trasformato con una fase di

cifratura e gli viene assegnata una chiave di cifratura quindi ora il messaggio si chiama M’.

M’ va in rete e arriva al destinatario autorizzato ed entra un blocco di decifratura in cui si ha in input il

messaggio M’ e una chiave di decifratura. Dopo aver attraversato il blocco il messaggio torna ad essere M,

identico a quello iniziale.

57

Il malintenzionato per attaccare il sistema può intercettare dei messaggi criptati e tramite delle criptoanalisi

può risalire ad un algoritmo di decriptazione, è quindi importante cambiare spesso la chiave.

Definizione: Crittografare significa codificare l’informazione in modo da renderla intelligibile solo a chi

possieda una o più chiavi.

I meccanismi di crittografia sono composti da un algoritmo (funzione crittografica) e da una (o più) chiavi.

Ci si avvale sempre di algoritmi noti e resi pubblici. Solo la segretezza della chiave (o delle chiavi)

garantisce confidenzialità, integrità e autenticità dei messaggi.

Esistono due classi di algoritmi:

Algoritmi a chiave simmetrica: quali gli algoritmi di sostituzione, algoritmi di

 trasposizione, e di trasposizioni e sostituzioni. In questi algoritmi, esiste una sola

chiave, detta segreta o simmetrica, che deve essere condivisa in modo sicuro da chi

invia e da chi riceve.

Kc=Kd quindi la chiave è uguale sia per A che per B, è la stessa in entrambi i blocchi. Il punto

debole sta proprio in questa condivisione in quanto A e B in qualche modo se la devono mandare.

Questo tipo di algoritmo è molto veloce nell’eseguire le azioni di criptazione e decriptazione.

Esempi per questa classe di algoritmi sono il DES (Data Encryption Standard) e AES (Advanced

Encryption Standard).

Algoritmo DES

o esempio: K=PADRE messaggio: ciao domani ci vediamo.

Scompongo il messaggio in 5 colonne

Ciaod – Omani – Cived - iamo.

Ora riordino il messaggio scrivendo le colonne nell’ordine suggerito dall’ordine alfabetico delle

imiaaavmdid.cocioneo

lettere della chiave. P A D R E è il messaggio cifrato

4 1 2 5 3

Algoritmo AES

o Questo tipo è un algoritmo di cifratura a blocchi utilizzato come standard dal governo degli stati uniti

d’America. L’algoritmo è pubblico ma la segretezza sta nella chiave, cioè è talmente difficile capire la

relazione tra messaggio e chiave che non è necessario mantenerne segreto il funzionamento.

Le due tecniche principali alla base della crittografia simmetrica sono la sostituzione e la

trasposizione (o permutazione). Uno degli algoritmi a chiave simmetrica basato sul meccanismo di

sostituzione fissa è l’algoritmo di Cesare. Questo consiste nel fornire un numero come chiave e nel

cifrare il messaggio si sostituisce alla lettera quella tanti numeri successivi quanto è il numero dato

come chiave. Esempio K=3 messaggio: CIAO messaggio cifrato=FNDR

Algoritmi a chiave asimmetrica: si basano su problemi matematicamente complessi

 e su una coppia di chiave privata-chiave pubblica per ogni agente che partecipa alla

trasmissione in rete.

A ha una chiave privata. Quindi ogni agente ha 2 chiavi, la chiave privata non va mai mandata, e

deve essere segreta, la chiave pubblica invece è liberamente condivisibile e tutti la possono

conoscere tant’è che si può mandare anche per e mail.

58 Caso 1) A può cifrare con la propria chiave privata, decifro con chiave pubblica di A. Quindi

chiunque sia in ascolto può decifrare i messaggi di A. Questo tipo di cifratura possiede le proprietà di

autenticità del messaggio.

Caso 2) A può cifrare il messaggio utilizzando la chiave pubblica di B. la decifratura può essere fatta

solo tramite la chiave privata di B. Il punto debole di questo algoritmo è che chiunque può scrivere

messaggi a B. Con questo algoritmo è rispettata la proprietà di riservatezza (solo gli enti autorizzati

ricevono il messaggio).

Caso 3) Per garantire sia la proprietà di autenticità sia la proprietà di riservatezza i due approcci

descritti sopra sono da combinare con una doppia fase di cifratura. Utilizzo tutte e 4 le chiavi cosi da

rispettare sia l’autenticità che la riservatezza. Utilizzo 2 blocchi di decifratura. È un algoritmo

leggermente più complesso ma garantisce maggiore sicurezza.

Il principio su cui si basa la crittografia asimmetrica è l’uso di una funzione f semplice, la cui inversa

−1

−1

f è complessa. Per esempio, il calcolo del prodotto di due numeri primi (f) è semplice, mentre f

(trovare due numeri primi che, dato un numero di partenza, ne siano fattori) è complesso, specie se il

100

numero da fattorizzare è molto grande (> 10 ). Lo schema della crittografia asimmetrica fu

proposto da Diffie e Hellmann nel 1976, basandosi proprio sul prodotto di due numeri primi molto

grandi. Anche un altro degli algoritmi più famosi, l’algoritmo RSA, è basato sulla difficoltà di

trovare i fattori primi di numeri grandi e la costruzione della coppia di chiavi avviene secondo i

seguenti passi:

1. Si scelgono due numeri primi P e Q, di valore elevato;

59 2. si calcola N = P ×Q e Z = (P −1) × (Q−1). N, come vedremo, sarà la componente

comune delle due chiavi;

Vanno ora scelti due valori E e D che comporranno il resto delle chiavi;

3. a. E (con E<N) va scelto tra i numeri che non ha fattori comuni con Z (E, Z sono detti

relativamente primi);

b. D deve soddisfare la seguente equazione (E × D) mod Z = 1, quindi (E × D) − 1 deve essere

divisibile per Z

4. la chiave pubblica Kp e chiave privata Kpr sono quindi definite come: Kp =(E,N),Kpr =(D,N)

NB: La crittografia simmetrica garantisce velocità, quella asimmetrica garantisce sicurezza. Quindi c’è un

trade-off da tenere in considerazione. Comunque, in entrambi risiede una pecca, ovvero sia gli algoritmi a

chiave simmetrica e asimmetrica non garantiscono integrità: un agente C non riuscendo a decifrare il

messaggio lo può manipolare per renderlo incomprensibile.

Abbiamo quindi detto che gli algoritmi simmetrici e quelli asimmetrici, garantiscono le proprietà di

riservatezza e autenticità. Per riuscire a fornire anche una garanzia in termini di integrità ci si deve avvalere

delle funzioni di hash.

sono

Funzioni di Hash funzioni matematiche, le cui proprietà sono fondamentali per la sicurezza

informatica e che risolvono il problema dell’integrità.

Do in input alla funzione una stringa di bit e la funzione di hash mi restituisce un’impronta o digest del

messaggio, che in poche parole è un riassunto, una sintesi. Gli algoritmi di hash sono pubblici e ben noti.

La funzione di hash viene utilizzata in questo ambito in quanto caratterizzata dalle seguenti proprietà:

 Non invertibilità: La particolarità è che la funzione non è invertibile e dunque anche conoscendo

l’impronta deve essere impossibile risalire al messaggio originale.

 Univocità: È estremamente improbabile (ma non impossibile) che due messaggi diversi, anche molto

simili, abbiano due digest uguali;

 Coerenza: a messaggi uguale deve essere associato lo stesso digest.

Come viene utilizzato il digest e la funzione di Hash?

 Funzione di Hash + algoritmo simmetrico = Keyed digest (HMAC)

A: il messaggio viene cifrato e si ottiene M’, poi lo passo nella funzione di hash e ottengo il digest di

M’. Quindi mando sia il digest che il messaggio M’.

B: riceve M’ e calcola il proprio digest, lo confronta con il digest ricevuto e se non sono uguali

significa che è stato manipolato da terzi. In caso contrario vado a cifrare il messaggio con la chiave

simmetrica.

 Funzione di Hash + algoritmo asimmetrico = firma digitale

60 la firma digitale non è da confondere con la firma autografa digitale.

Nel momento in cui l’azienda applica una firma digitale sta garantendo delle proprietà:

in particolare, la firma digitale viene usata per mandare documenti alla pubblica amministrazione.

Nella firma abbiamo sia informazioni relative al messaggio sia informazioni relative alla chiave

privata. La firma digitale ha un valore legale molto importante, vige infatti la “legge del non

ripudio”.

L’obiettivo della creazione e apposizione a un dato/informazione di una firma digitale è garantire

l’autenticità dei dati e identificare con certezza il loro creatore.

Aspetti di gestione delle chiavi e certificati digitali:

Per poter applicare gli algoritmi di crittografia, e talvolta anche quelli di digest, occorre che le parti

interessate posseggano e condivano chiavi. Questo aspetto è detto la gestione di chiavi (key management) e

richiedere la soluzione di vari sotto problemi, quali la generazione e la conservazione delle chiavi e lo

scambio delle chiavi. Per la conservazione e la generazione ci sono meccanismi per far fronte ai problemi,

nello scambio di chiavi ci sono però delle criticità.

Alcune tecniche utilizzate per lo scambio di chiavi sono:

 Out Of Bound (OOB): il canale per trasmettere la chiave non deve essere lo stesso utilizzato per

trasmettere il messaggio successivamente (posso utilizzare cellulari sms, scambiarla di persona…)

 se utilizzo un meccanismo di comunicazione asimmetrico posso mandare li la chiave da utilizzare

poi per il meccanismo simmetrico cosi che nessuno conosce la chiave anche se è pubblica, cosi posso

mandare messaggi con crittografia simmetrica in modo sicuro cosi da ottimizzare il fattore tempo in

quanto la crittografia simmetrica è molto più veloce. Il tipo di scambio appena descritto viene

utilizzato quanto due utenti hanno necessità di scambiare messaggi in tempo reale mantenendo

comunque una certa riservatezza.

 IT distribution centre: enti che distribuiscono la chiave ai due utenti che vogliono comunicare.

 come scambiare la chiave pubblica: non avrei problemi in termini di scambio in quanto essendo

pubblica non ci sono problemi se anche utenti terzi ne vengono a conoscenza. Ci sono però problemi

in quanto l’utente terzo può fare una specie di hijacking in quanto la chiave pubblica ricevuta

potrebbe non essere della persona con cui voglio comunicare, cioè qualcuno potrebbe aver

intercettato la chiave pubblica e sostituirla con la sua. Questo accadeva prima in quanto ora è stato

inventato il certificato digitale che associa in modo certo una chiave pubblica ad una persona.

L’infrastruttura a chiave pubblica (PKI, Public Key Infrastructure) mette in gioco gli enti che

certificano le chiavi.

61 Materialmente il certificato digitale è un file (di testo) in cui si trovano informazioni come:

- Numero seriale del certificato, identificatore del certificato;

- Algoritmo che è stato usato per certificare la firma;

- Nome dell’autorità di certificazione;

- Validità (intervallo di tempo);

- Soggetto a cui è associato il certificato (dettagli sull’identità della persona o

dell’organizzazione).

NB: Il certificato non può essere alterato da un agente terzo in quanto protetto da firma digitale.

Ultimo problema è quello per cui l’agente terzo può sostituirsi alle autorità di certificazione e quindi

rilasciare certificati falsi che vengono sfruttati per entrare in possesso di informazioni.

Esiste una lista di autorità di certificazione di cui ci si può fidare. Inoltre, esiste un ente di certificazione

superiore che rilascia chiavi pubbliche certificate agli enti che rilasciano copie di chiavi certificate agli

utenti. Anche gli enti di certificazione superiore vengono certificati da un ente ancora superiore… si risale

così l’albero fino ad arrivare ad un’istituzione superiore che non ha bisogno di una chiave certificata da altri.

21/11/17

SISTEMI INFORMATIVI

(LEZ 16 – PIANIFIAZIONE DEI SI)

 

Profilo(utente) Privilegi Autorizzazione

Preliminarmente ad ogni controllo di sicurezza, è necessario autenticare gli agenti prima di permettere loro

di apire un canale di comunicazione o di accedere a informazioni situate in Intranet o comunque protette.

(fase di autenticazione). Un agente può essere identificato sfruttando una o più delle seguenti

caratteristiche:

 Something you know (SIK) – un’informazione conosciuta.

 Something you have (SYH) – un oggetto posseduto (es. una carta magnetica)

 Something you are (SYA) – una caratteristica fisica (riconoscimento biometrico)

Autenticazione semplice: User ID e password;

Autenticazione robusta:

 OTP: One-Time-Password;

62

 Sistemi challenge-response: la password non viene mai trasmessa ma solo usata per effettuare un

calcolo che ne dimostra indirettamente la conoscenza;

 Dispositivi personali (es smart card);

 Caratteristiche biometriche. 

Dopo l’autenticazione vi è una fase di autorizzazione analizzando il file dei privilegi, l’utente potrà

accedere ai dati solo se il sistema lo permette, può consentire l’accesso o altrimenti non ci sono i privilegi

per accedere.

In particolare, il controllo degli accesi è l’insieme delle procedure che verificano se l’agente è autorizzato

allo svolgimento di funzioni elementari. Può essere svolto dal sistema operativo, dal DBMS, da

sistemi/programmi. Il controllo degli accessi limita i danni che possono essere causati da programmi

malevoli

Sistemi di controllo di accesso ai dati:

Vi sono 2 modi di definire l’accesso, per i dati e per le applicazioni.

 

Regole d’accesso (applicazioni) vengono definite guardando le politiche di sicurezza (decise

dall’azienda). Le politiche di sicurezza possono essere:

 Sistema aperto: tutto viene lasciato aperto all’uso. Il sistema di controllo, riceve la richiesta,

analizza la richiesta e controlla se nel database delle regole di accesso vi è una regola specifica

per cui l’accesso verrà negato alla persona interessata a loggarsi all’app;

 Sistema chiuso: tutto è negato di default (accessi alle applicazioni), si cercherà nel database delle

regole di accesso e se vi sono delle regole specifiche per l’utente che vuole loggarsi all’app esso

potrà accedere.

I controlli di accesso nei DBMS si basano su regole accesso composte da:

 Autorizzazioni:

- Concetto di ownership sulle risorse (chi crea un dato ne diventa owner), permette al

possessore di una risorsa di gestirne gli accessi in modo selettivo, diventando così

l’autorizzatore di quella risorsa.;

- L’autorizzatore ha funzioni di controllo sui dati.

 Soggetti:

- Utenti (definiti dai loro user profile), amministratori e programmatori;

- Gruppi o classi;

- Transazioni o applicativi;

- 

Se l’utente è in + gruppi o usa vari applicativi, il soggetto è identificato da una tupla tipo

{UserID, GroupID}, {UserID, ApplID}, {UserID, RoleID}.

 Oggetti:

- Scelta della granularità degli oggetti protetti è cruciale per efficacia/efficienza dei controlli;

- Occorre proteggere anche gli schemi o i dizionari;

- Transazioni e programmi anche come oggetti.

 Diritti: indica i modi di accesso (ad esempio read, write, execute per i programmi, oppure CRUD,

Create, Read, Update e Delete per i dati)

 

Regole d’accesso (dati) vengono definiti 2 diversi sistemi:

 Sistemi discrezionali (DAC): creo una base di dati, io divento proprietario della base di dati.

Definendo questo concetto di proprietario, io posso dare accesso ad altre persone. Definisce

quindi chi può usare/accedere alla base di dati ed in che modo. Nei sistemi discrezionali se io

proprietario do l’accesso a una persona con particolari privilegi, questa può dare i diritti di

accesso ad altri. Nei sistemi DAC vengono definite delle regole:

- Chi è il soggetto (persona luogo)

63 - Qual è l’oggetto su cui deve lavorare

- Quali sono i diritti

- Definisco dei vincoli

Soggetto Oggetto Diritti (CRUD Vincoli

operations)

John tbl IMPIEGATI (READ & UPDATE) Salario <1500

... ... ... ...

- In SQL queste regole vengono definite tramite la key word GRANT

“GRANT SELECT UPDATE ON IMP TO JOHN WHERE STIPENDIO < 1500”

 Sistemi mandatori (MAC): vengono utilizzati per la protezione di dati veramente importanti

(ambito militare). In questi sistemi viene tolto il concetto del proprietario, viene quindi definito

un responsabile. C’è una classificazione (clearance [soggetti], sensitività [oggetti]). Vengono

definite delle classi di sicurezza (SC – Security Class):

- Unclassified

- Confidential

- Secret

- Top secret

Regola di base (1) No Read Up: i soggetti possono leggere solo le info per cui i soggetti hanno un

livello di autorizzazione maggiore o uguale al livello di clearance dell’oggetto. Ovvero un soggetto

confidental potrà leggere solamente oggetto con un livello di sicurezza unclassified.

( )

L s ≥ L(O) No

Regola di base (2) Write Down: i nostri soggetti possono scrivere i dati ad un livello di

sensitività maggiore o uguale di clearence. Voglio evitare un flusso di informazioni dall’alto verso il

basso.

( )

L s ≤ L(O)

Nb: Queste due regole, combinate assieme, impediscono flussi di dati tra soggetti “high” e “low”.

Polinstanziazione: accetta che per un oggetto ci siano più istanze. Dal punto di vista pratico vuol dire

che un soggetto Confidential vedrà i valori (oggetti) confidential o a livelli più alti come mancanti.

Se il soggetto volesse scrivere una informazione, potrà farlo anche su un campo Confidental o +, il

sistema non gli negherà il servizio per non dare informazioni su quali informazioni sono a lui

oscurate. Così facendo verranno create diverse istanze (provenienti da + categorie) sulla stessa

informazione.

L’accesso a MLR (Multi Level Relation) avviene come segue:

Lettura: un soggetto può accedere in lettura alle istanze del MLR al proprio livello o al di

o sotto;

Scrittura: può generare Polinstanziazione se l’elemento da modificare esiste già:

o  Se il soggetto richiedente ha classificazione più bassa a quella dell’elemento da

 

scrivere l’elemento non sarà visibile polinstanziazione evita interferenza;

 Se il soggetto richiedente ha classificazione più alta a quella dell’elemento da scrivere

 polinstanziazione evita negazione di servizio

Questo tipo di sistemi tendono a non dare agli utenti le informazioni a cui quel dato non è destinato.

64

Attacco più comune alle base di dati – SQL injection:

 Ad esempio, volendo usare un database per autenticare gli utenti tramite la seguente query:

- SELECT username, password FROM users WHERE username = ‘inputUsername’ AND

password = ‘inputPassword’

 Se la query precedente restituisce una linea allora l’utente è autenticato altrimenti no.

 Problema: Cosa succede se l’utente inserisce uno inputUsername valido ma come inputPassword

la seguente stringa?

- ‘nonImporta’ OR ‘a’=‘a’

 La query processata sarebbe:

- SELECT username, password FROM users WHERE username = ‘inputUsername’ AND

password = ‘nonImporta’ OR ‘a’=‘a’

 L’utente viene comunque autenticato perché la query restituisce sempre almeno una riga.

Componenti architetturali per la sicurezza – Firewall e IDS

Altri sistemi di sicurezza (controllo accessi e attacchi)

Firewall: insieme di componenti hardware e software il cui obiettivo è collegare

 una rete fidata con una insicura. Esso controlla, implementando opportune

policy di sicurezza, il traffico in entrata e in uscita dalla rete da proteggere con

lo scopo di prevenire, rilevare e annullare eventuali attacchi e richieste non

autorizzate.

Intrusion Detection System (IDS): si intende il processo di monitoraggio

 degli eventi di un sistema, o di una rete di calcolatori, il cui obiettivo è

individuare le intrusioni definite come il tentativo di compromettere l’integrità o

la disponibilità del sistema.

Firewall:

Rappresentano la prima linea di difesa per la sicurezza della rete;

 Difesa di tipo perimetrale, verifica che i pacchetti destinati alla rete da

 proteggere siano in linea con la politica di sicurezza aziendali e non possano

causare danni ai sistemi interni;

Il firewall viene normalmente posizionato all’interno del gateway che collega

 una rete con le realtà esterne;

In generale è un sistema costituito da varie componenti hardware e software. Al

 limite, può anche essere realizzato tramite un unico componente hardware che

ospita diversi processi software.

L’aumento del grado di sicurezza portato da un firewall dipende dalla

 correttezza delle regole specificate.

Le tre leggi dei firewall:

Il firewall deve essere l’unico punto di contatto tra la rete interna e l’esterno;

 Tutti i pacchetti devono essere bloccati, tranne quelli “autorizzati”;

 Il firewall deve essere un sistema “sicuro” a sua volta.

I componenti di base che permettono il monitoraggio del traffico da parte del firewall sono di due tipi:

Screening router analizzano richieste TCP/IP, hanno 2 tipi di controlli:

 

Packet filtering: ha la lista delle famiglie di indirizzi IP autorizzati

o Packet inspection: non controllano solo l’informazione, ma controllano

o anche il contenuto, anche se è spezzettato (aspetta la ricezione di tutti i

pacchetti)

65 Application gateway (proxy) I firewall di tipo Application gateway

 

offrono attualmente il maggior grado di controllo del traffico tra una rete

interna e la rete Internet. I proxy oltre a fare caching, funzionano anche come

firewall ostacolando la navigazione dei dipendenti (siti bloccati). Ogni

richiesta utente (HTTP, FTP) viene intercettata, analizzata e decide di

conseguenza quale richiesta autorizzare e quale bloccare.

Architetture a più livelli del sistema Web:

Elementi essenziali sistema Web sono:

 Il Web server, che si occupa della gestione delle richieste http provenienti da Internet o dalla Intranet

aziendale;

 Lo script engine, un processo che esegue gli script per la generazione di pagine HTML dinamiche;

 L’Appliclation server, assume il ruolo di middle tier ed implementa la logica di business

dell’applicazione Web;

 Il DBMS server, si occupa della gestione dei dati;

 I componenti di sicurezza, firewall e IDS

Il Web server si colloca fisicamente tra l’utente finale che accede al sistema attraverso il browser ed il

sistema informativo aziendale. Si occupa della presentazione delle informazioni verso il client ed in

particolare restituisce direttamente ai client che ne hanno fatto richiesta pagine HTML statiche, nel caso di

pagine dinamiche il Web server deve interagire con lo script engine. Lo script engine è un processo che

esegue script per la generazione di pagine HTML dinamiche interagendo con l’application server o con il

DBMS server. L’application server ha il ruolo di middle tier, implementa la logica di business

dell’applicazione e in alcuni casi svolge il ruolo di contenitore di oggetti, il DBMS server si occupa

dell’accesso e della gestione di dati aziendali.

Esempio – architettura a due zone:

 Si vuole che la macchina ospitante il server web sia accessibile dall’esterno ma evitando che le

informazioni business critical siano accessibili direttamente;

 Si vuole che le macchine della rete privata possano essere accedute direttamente da internet, ma solo

da parte di connessioni autorizzate iniziate dal web server;

 Un’architettura che permette di risolvere questo problema è quella di suddividere la rete in due zone:

DMZ (DeMilitarized Zone) accessibile dall’esterno e ritenuta “poco sicura”;

o Privata (rete interna) ove risiedono i server contenenti informazioni critical.

o Il primo firewall protegge il

Server Web e la rete privata, il

secondo fa passare solo le

connessioni dal Web Server

verso la rete privata

(nient’altro)

66

Per rendere + sicuro l’accesso ad un applicativo web, utilizzante una base di dati, che deve essere

raggiungibile via internet, si identificano 2 diverse tipologie di utenti:

 Registrati: attore fidato che può accedere, per esempio, ai dati aziendali o iniziare una transazione e-

commerce (funzioni dispositive);

 Anonimi: utenza occasionale con soli permessi di “navigazione”.

Soluzione a singolo Host:

 Su una macchina fisica operano server Web e App/DB server;

 Grado di sicurezza: nullo.

Singolo Host con firewall:

 La sicurezza aumenta avendo definito un dominio di sicurezza;

 Il firewall è l’unico punto di collegamento tra internet e la Intranet aziendale.

Host dedicati ai processi server:

 Se tutto il sistema si basasse su una singola macchina, la compromissione di un solo dei tre servizi

permetterebbe all’aggressore di compromettere anche altri dati presenti sulla stessa;

 L’introduzione di host dedicati riduce questo problema;

 La soluzione ottimale sarebbe l’uso di un’architettura a 2 zone.

67

Zona demilitarizzata (DMZ):

 Rete compresa tra i due firewall;

 Anche se il Bastion Host viene violato l’intruder non ha a disposizione alcun tipo di risorsa per

compromettere la validità dei dati.

IDS (Intusion Detection System):

 Intrusione: compromissione di confidenzialità, integrità o disponibilità di un sistema;

 Intrusion Detection (ID): monitoraggio degli eventi di un sistema, o di una rete, cercando tracce

evidenti di intrusioni;

 Intrusion Prevention (IP): estensione del concetto di ID con aspetti di controllo dell’accesso

 IDS: sistemi che automatizzano il processo di Intrusion Detection;

 Intrusion Detection Prevention System: talvolta gli IDS interagiscono con i firewall. Per alcuni

intrusioni, ad esempio un IDS può richiedere la chiusura delle connessioni attive, impedire qualsiasi

altra connessione dall’indirizzo IP dell’aggressore e notificare all’amministratore che un probabile

attacco è in atto. 

IDS (Intrusion Detection System) sono dei sistemi all’interno del sistema informativo e quello che

fanno è continuare a monitorare la rete.

Le componenti funzionali di un IDS sono:

Meccanismi software (sensori): che analizzano il traffico di rete;

 Meccanismi di analisi: monitorano le richieste che arrivano dai diversi nodi;

 Strumenti di Alert & Response: mandano avvisi e rispondono agli attacchi.

Una possibile classificazione degli IDS avviene in base alle Information Source:

Un network base IDS: è un tipo di IDS che rileva gli attacchi analizzando il traffico di

o rete per analizzare se qualche pacchetto malicious è in transitato con lo scopo di

disattivare l’IDS stesso.

Vantaggi:

- Pochi sensori per monitorare rete di grandi dimensioni;

- Non ha un gran impatto sulla configurazione e sulle prestazioni della rete.

Svantaggi:

- Poca efficienza in situazioni di congestione di rete;

- Non rileva pacchetti anomali;

- Non riesce a capire se un attacco ha avuto successo;

- Non riescono ad analizzare protocolli cifrati.

Un host based IDS: è un software, molto simile all’antivirus, da installare su ogni

o macchina da proteggere. Questo software opera sulle informazioni raccolte sul singolo

host a livello di sistema operativo e applicazione.

68 Vantaggi:

- Rilevano attacchi non rilevabili dai network IDS;

- Possono essere utilizzati anche su dati cifrati;

- Rilevano Trojan Horse e attacchi che violano l’integrità del software;

Svantaggi:

- Difficoltà di gestione;

- Possono essere resi inefficaci da attacchi di tipo Denial of Service.

Una classificazione degli IDS avviene in base al tipo di analisi:

Misuse detection: è volta ad individuare comportamenti noti già come attacchi. Essi analizzano

o l’attività del sistema confrontandola con pattern detti signature di comportamento relativi ad attacchi

noti.

Vantaggi:

- Sono in grado di rilevare gli attacchi senza generare un numero eccessivo di falsi allarmi;

- Possono rilevare tempestivamente l’uso di un tool o tecnica che genera uno specifico attacco.

Svantaggi:

- Possono rilevare soltanto attacchi conosciuti e richiedono un frequente aggiornamento delle

signature;

- Molto spesso non sono in grado di rilevare neanche le varianti di attacchi noti.

 Anomaly detection: Cercano di identificare comportamenti anomali negli host o nella rete. SI basano

sull’ipotesi che un sistema sotto attacco si comporta in modo diverso rispetto a quando funziona

normalmente. Costruiscono dei profili (normale comportamento di utenti) a partire da dati storici;

Vantaggi:

Possono rilevare attacchi senza conoscerne pienamente i dettagli;

o Possono essere utilizzati per definire le signature per i sistemi misuse detection.

o

Svantaggi:

Generano un gran numero di falsi allarmi a causa dell’imprevedibilità degli utenti di rete;

o Richiedono un training estensivo per poter definire il normale profilo di comportamento;

o Non possono riportare dettagli sul tipo di attacco rilevato, per definizione

o

Infine, si definisce Response la reazione dell’IDS quando l’analisi ha rilevato un attacco. Si hanno due tipi di

response:

 Active response: Acquisizione di maggiori informazioni: viene aumentato il livello di sensitività delle

sorgenti di informazione;

 Passive response: notificano che un attacco è in atto all’amministratore del sistema lasciando agli

operatori le successive decisioni su quali azioni intraprendere

 sono registrate su un database le peculiarità di un attacco avvenuti in passato non solo sul sistema

informativo stesso ma anche su altri sistemi informativi (presi dal web). Nel momento in cui il nostro

sistema riconosce uno dei pattern presenti in questo DB manda un Alert (sottospecie di antivirus).

22/11/17

SISTEMI INFORMATIVI (ES 1 BPMN)

Esempio processo di una compagnia di assicurazione che richiede da un cliente una richiesta di rimborso

69 Ricevo messaggio di rimborso

 registro il reclamo nel sistema

 prendo decisione da cui parte una ramificazione se concedere il rimborso e in questo caso preparo

tutti i documenti per il rimborso, oppure rifiutare il rimborso e in questo caso preparo il rifiuto. Dopo

di che faccio partire i messaggi che siano essi di rifiuto o rimborso.

Uno schema che descrive il processo deve rispondere alle seguenti domande:

 Quali attività vengono svolte?

 Quale ordine delle attività?

 Quali decisioni possono essere prese durante il processo?

 Quali eventi possono modificare il modo in cui eseguo le attività?

 Quale output del processo?

 Quale responsabile di eseguire ogni singola attività all’interno del processo?

 Quali errori possono verificarsi? 

Utilizzo quindi notazioni che mi permettono di definire delle notazioni linguaggio BPMN

 Attività

 Eventi

 Gateway (o punti di decisione o nodi di scelta) questi mi danno la possibilità di modellare più

possibilità.

Le attività vengono definite come unità di lavoro, cioè sono sotto unità del processo che mi consentono di

svolgere un passo in più verso la fine del processo. In alcuni casi le attività possono essere più complesse e

vengono dunque scomposte in ulteriori sotto unità.

Gli stati in cui si può trovare un’attività (istanza di processo) sono:

 Int;

 Ready;

 Run;

 Terminated;

 Skipped (posso non aspettare che venga completata).

se un’attività è complessa e quindi andrebbe scomposta ulteriormente la chiamo attività composta, verrà a

sua volta modellizzata tramite un processo che chiamo sotto processo. Tipi di attività:

+ O III

Attività loop Attività multiistance

(ogni

Attività normale Attività composta attività viene svolta in

modo sequenziale

fino alla condizione di

terminazione)

I Gateway vengono rappresentati da un rombo, essi sono “stupidi” in quanto non hanno alcuna logica al loro

interno ma in base alle informazioni del processo mi indirizzano.

Tipi di gateway:

 

XOR (esclusivo) questo viene utilizzato insieme ad un ramo di default (o condizione di default)

che è quella che viene percorsa nel caso non si verifichi nessuna delle condizioni che mi fanno

prendere uno degli altri rami collegati a questo nodo;

70


PAGINE

85

PESO

7.51 MB

PUBBLICATO

4 mesi fa


DESCRIZIONE APPUNTO

Il documento rappresenta un riassunto ideale per la preparazione dell'esame di Sistemi Informativi. Le pagine sono una rielaborazione degli appunti presi a lezione e informazioni aggiuntive derivanti dallo studio dei libri consigliati per sostenere l'esame.
Il seguente documento si compone come di seguito:
1 - Introduzione al corso
2 - Basi di dati
3 - SQL
4 - Progettazione concettuale DB
5 - Progettazione logica DB
6 - Data Management
7 - Data Mining
8 - Reti
9 - Suite TCP/IP
10 - Architettura SI
11 - WIS & SOA
12 - Cloud Computing
13 - Sicurezza
14 - BPMN
15 - Pianificazione SI


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria gestionale (CREMONA - MILANO)
SSD:
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher pizzini.alessandro di informazioni apprese con la frequenza delle lezioni di Sistemi informativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano - Polimi o del prof Cappiello Cinzia.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Sistemi informativi

Appunti completi di Sistemi Informativi
Appunto
Riassunto completo lezioni di Fondamenti di Automatica
Appunto
Appunti di Gestione dei sistemi logistici e produttivi : Gestione del sistema di produzione
Appunto
Riassunto esame di gestione dei sistemi logistici e produttivi, prof Andrea Sianesi, libro consigliato: La gestione del sistema di produzione, Andrea Sianesi
Appunto