Sei sulla pagina 1di 97

IBO1

Informatica  si occupa di far organizzare a un computer i passi necessari per occuparsi di operazioni
molto complesse. Disciplina che attraverso l’elaborazione dei dati - mediante un calcolatore - si occupa del
trattamento automatico delle informazioni. Disciplina che studia l’elaborazione automatica delle
informazioni.  definizione formale: insieme dei processi e delle tecnologie che rendono possibile: 1)
creazione, 2) raccolta, 3) elaborazione, 4) immagazzinamento, 5) trasmissione informazioni con metodi e
strumenti automatici. Le informazioni si formano elaborando i dati.

Tecnologie informative  obiettivo: elaborare dati per ottenere informazioni significative (dato grezzo non
è un’informazione), memorizzare le informazioni elaborate (per utilizzarle con le altre come dati di un
nuovo processo elaborativo), organizzare e gestire le informazioni (rendendole più comprensibili, utili o
interessanti). Sono formate da Hardware - struttura fisica, insieme dei dispositivi fisici in grado di svolgere
materialmente l’elaborazione – e Software - livello logico e insieme delle istruzioni che, eseguite partendo
dai dati, producono i risultati. L’elaborazione passa, quindi, da hardware e software. Il ciclo di elaborazione
è un procedimento complesso che comprende 5 fasi: 1) Ingresso dei dati (input), 2) Elaborazione, 3) Uscita
dei dati (output), 4) Memorizzazione, 5) Distribuzione e comunicazione. È così possibile definire
programma la descrizione delle azioni da svolgere e del modo in cui vanno svolte durante il processo di
elaborazione. L’elaborazione è solo una fase. Ciclo di elaborazione dell’informazione è il ciclo completo.

Computer  sono macchine programmabili; dati + istruzioni, elaboratore, risultati. È un elaboratore


elettronico digitale in grado di elaborare dati in base a delle istruzioni (programma) che possono essere
eseguiti automaticamente; utilizza dei componenti elettronici per elaborare le informazioni; tratta le
informazioni mediante i due simboli binari: 0 e 1.

IBO2
Elaborazione digitale  rappresentare l’informazione in cifre binarie, cosicché possano essere elaborate e
utilizzate dalle moderne tecnologie informatiche. Le informazioni sono codificate come pattern di zeri e
uno. Con il termine bit(cifra binaria) si indicano tali cifre che consentono di codificare simboli, valori
numerici, ed altro come caratteri alfabetici, segni di punteggiatura, immagini, suoni, ecc. Evidenza
informatica  sequenza finita di bit che può essere elaborata da una procedura informatica.

Operazioni booleane  Consentono di manipolare dei valori del tipo vero/falso. Immaginiamo che: 0
rappresenti il valore falso, 1 rappresenti il valore vero. Convenzione analoga a: Luce rappresenta il valore
vero, Buio rappresenta il valore falso. Le operazioni sono tre: AND, OR, XOR (or esclusivo). Combinano una
coppia di valori (in input) per restituire un terzo valore (in output, o risultato). Analoghe alle operazioni
aritmetiche anche se combinano valori logici vero/falso e non valori numerici. AND  Riflette la verità o la
falsità di un’asserzione formata unendo due asserzioni più semplici Es: H AND E; tale asserzione è vera solo
quando entrambe le sue componenti (R, S) sono vere. Ovvero H = Harry è un mago, E = Ermione è una
strega; H AND E è vera (output =1) solo nel caso in cui è vero ciò che si presume, falsa (output = 0 ) in tutti
gli altri casi. AND gode della proprietà associativa, la porta logica è un meccanismo comune per avere un
segnale di vero se un certo numero di altri segnali sono tutti veri, e nella teoria degli insiemi corrisponde
all’intersezione. OR (V)  Riflette la verità o la falsità di un’asserzione formata unendo due asserzioni più
semplici. Es: H OR R. Tale asserzione è vera quando almeno una delle sue componenti (H, R) è vera. H=
Harry è un mago, R= Ron è una strega. H OR R: Harry è un mago OR Ron è una strega. L’asserzione finale è
vera (output =1) se è vera almeno una delle due: Harry è un mago, Ron è una strega; falsa (output = 0 ) solo
nel caso in cui sono entrambe false. OR Gode della proprietà associativa, è un meccanismo comune per
avere un segnale alto se almeno un segnale è alto, un segnale basso se e solo se tutti i segnali sono bassi.
Nella teoria degli insiemi corrisponde all’unione. XOR  Riflette la verità o la falsità di un’asserzione
formata unendo due asserzioni più semplici Es: R XOR S. Tale asserzione è vera quando una delle sue
componenti (R, S) è vera, ma non entrambe contemporaneamente. L’operatore è detto anche EX-OR
oppure OR esclusivo. Restituisce 1 se e solo se il numero degli operandi uguali a 1 è dispari, mentre
restituisce 0 in tutti gli altri casi. NOT  Opera su di un solo input, Il suo output è l’opposto dell’input. Es: P
= Paolo è un bambino, NOT P= Paolo non è un bambino. Se l’input rappresenta la verità/falsità di P (Paolo è
un bambino), l’output rappresenterà la verità/falsità di NOT P (Paolo non è un bambino). L’operatore NOT
restituisce il valore inverso a quello in entrata. Una concatenazione di NOT è semplificabile con: un solo
NOT in caso di ripetizioni dispari, nessun NOT in caso di ripetizioni pari. La porta logica NOT possiede una
sola variabile binaria e spesso è inglobata in operatori brevi.

Tabelle di verità degli operatori (principali ed altri operatori).

A B A AND A B A OR B A B A XOR
B B
0 0 0
0 0 0 0 0 0 A NOT
0 1 1
0 1 0 0 1 1 A
1 0 0 1 0 1
1 0 1 0 1
1 1 1 1A 1B 1A NOR 1 0
1 1 0
B
0 0 1
A B A 0 1 0 A B A
NAND 1 0 0 XNOR Porte logiche 
B B
1 1 0
0 0 0 1 A
BUFFER
0 una porta logica (gate) è un 0 1 0 A
1 dispositivo che dati i valori di 1 0 0 0 0
1 input produce l’output di 1 1 1 1 1
un’operazione booleana. Nei moderni calcolatori sono realizzate con circuiti
elettronici; in questo caso i valori 0 e 1 rappresentano dei livelli di tensione.

Circuito flip-flop  È un’unità fondamentale della memoria del computer. Produce un valore di output che
rimane costante fintanto che un impulso su una delle due linee di input non lo trasforma nell’altro valore. Il
valore di output è 0 o 1, l’impulso è una variazione temporanea a un 1 che torna 0. Si può configurare un
flip-flop in modo che «ricordi» l’output (0 o 1) sotto il controllo di stimoli esterni. Se gli input rimangono
entrambi 0 l’output non cambia, se l’input superiore va temporaneamente a 1 si forma l’output 1, se l’input
inferiore va temporaneamente a 1 si forma l’output 0. Con il flip-flop è possibile costruire dispositivi a
partire dalle porte logiche (processo di progettazione dei circuiti digitali), fornire un esempio di astrazione e
dell’uso di elementi astratti (esistono diversi modi per costruire un flip-flop, ma le sue proprietà esterne
rimangono le stesse), fornire un mezzo per memorizzare un bit in un computer.
Nell’ultima foto la struttura interna del circuito è differente ma le sue proprietà esterne sono le stesse. Per
usarlo come strumento astratto è sufficiente comprendere le sue proprietà esterne. In un computer si
possono utilizzare molti flip-flop (in forma di piccoli circuiti elettronici) per registrare informazioni che sono
codificate come pattern binari. La tecnologia VLSI (VeryLarge-Scale Integration) consente la costruzione di
milioni di componenti elettronici su un wafer di silicio (chip).

Pattern di bit  attività all’interno di un computer chiamati stringhe di bit. Tali stringhe possono essere
molto lunghe e prendono il nome di flussi binari - 110110101010 è un esempio di pattern di bit. Per
semplicità di notazione usiamo una notazione abbreviata detta esadecimale

Codifica esadecimale  Tale codifica impiega un solo simbolo per esprimere 4 bit. I simboli ammessi sono i
seguenti: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

IB03
La memoria principale  Composta da un gran numero di circuiti flip-flop, ognuno in grado di memorizzare
un singolo bit. Serve ad archiviare i dati in un computer e si comporta come una sorta di enorme «deposito
di bit»

Bit  Unità di misura minima del linguaggio digitale, deriva dalla contrazione di binarydigit (cifra binaria).
Può assumere due soli stati: 0 (spento) e 1 (acceso). Il bit +/-significativo  Il bit più significativo (o bit di
ordine alto) è quello posto all’estremità sinistra (Es: 1110; nella rappresentazione di un valore numerico il
bit più a sinistra è la cifra più significativa. )l bit meno significativo (o bit di ordine basso) è quello posto
all’estremità destra (Es: 1110; nella rappresentazione di un valore numerico il bit più a destra è la cifra
meno significativa).
Byte  Il byte è l’unità fondamentale del linguaggio dei computer. È composto da 8 bit e appresenta 256
possibili stati ( 28= 256).

Celle di memoria  I circuiti della memoria principale sono organizzati in unità gestibili dette celle. Una
cella ha dimensione tipica di otto bit (un byte). Ordine  In un computer non esiste il concetto di sinistra e
destra. Presumiamo che in una cella i bit siano ordinati per righe; in una riga l’estremità sinistra è l’ordine
alto, l’estremità destra è l’ordine basso. Le celle di memoria sono identificate da un indirizzo univoco, gli
indirizzi sono interamente numerici. Supponiamo che ogni cella sia posta in una singola riga e sia numerata
a partire dal valore 0: è possibile stabilire un ordine tra le celle, ovvero ha senso dire: «cella precedente» o
«cella successiva».

Conseguenze dell’ordinamento  sono l’associazione di un ordine alle celle nella memoria principale, e di
un ordine ai bit all’interno di ogni cella. L’intera sequenza di bit nella memoria principale è ordinata come
se fosse una lunga riga. Questa lunga sequenza virtuale di bit consente la memorizzazione di pattern di bit
più lunghi di una cella (Es: se la memoria è divisa in celle di 1 byte, con 4 celle di memoria consecutive
possiamo archiviare una stringa di 32 bit. Estremità di ordine alto 01011010 estremità di ordine basso. Bit
più significativo - Bit meno significativo.

RAM  E’ la memoria principale di un computer: viene organizzata in singole celle dotate di indirizzo a cui
è possibile accedere secondo le necessità. E’ chiamata RAM per indicare la capacità di accedere alle celle in
qualsiasi ordine e non in modo sequenziale come nei dispostivi a blocchi. RAM vuol dire memoria ad acceso
casuale; è una memoria di tipo volatile e lo spegnimento dell’elaboratore determina la cancellazione dei
dati in essa contenuti.

DRAM (Dynamic RAM)  tipo di memoria centrale più diffuso. Le celle di memoria mantengono i dati solo
per breve tempo e quindi devono essere aggiornate centinaia di volte al secondo. Si suddivide in varie sotto
tipologie: FPM, EDO, BEDO, SDRAM, DDR, RDRAM (Es).

SRAM (Static Ram)  Tipo di RAM volatile che non necessita di refresh. Consentono di mantenere le
informazioni ivi contenute per un tempo teoricamente illimitato. Hanno bassi tempi di lettura e bassi
consumi, ma sono più costose della DRAM perché usano molti componenti per cella. Sono solitamente
utilizzate per le memorie cache. La famiglia delle memorie SRAM si divide in: async SRAM (SRAM
asincrona)che lavora in modo asincrono rispetto al clock della CPU e viene utilizzata come cache di secondo
livello (L2); sync SRAM (SRAM sincrona) che lavora in sincronia con il clock della CPU (tempi di attesa
ridotti).

IB04
Memorizzazione  Memoria: in un sistema elettronico, dispositivo atto a conservare informazioni e a
renderle accessibili quando richiesto. La memoria è una nozione utilizzata in due ambiti: quello delle entità
biologiche (quali gli esseri umani) e quello dei computer. La memoria si configura per una serie di elementi
comuni che caratterizzano ogni sistema di memorizzazione. Korenhof identifica tre punti di contatto,
coincidenti con tre differenti abilità di trattare le informazioni: capacità di codificarle, capacità di
memorizzarle, capacità di recuperarle. Questi tre elementi interagiscono: il modo di codificare determina
cosa e come qualcosa viene memorizzata, che a sua volta determina ciò che può essere recuperato.
Perdita/sospensione del ricordo  può verificarsi a causa di errori in uno qualsiasi dei tre elementi del
processo di memorizzazione; può consistere nella perdita delle informazioni acquisite (archiviazione),
nell'impossibilità di recuperare le informazioni memorizzate (recupero) e nel deterioramento della
corrispondenza tra le informazioni ottenute e quelle recuperate (codifica).

Dall’oblio al diritto all'oblio  Oblio: dimenticanza più o meno duratura, scomparsa/sospensione del
ricordo; Diritto all’oblio: diritto di un individuo a essere dimenticato, a non essere più menzionato in
relazione a fatti che lo hanno riguardato in passato

IBO5
Unita multiple di massa per i numeri decimali

I nuovi prefissi binari  le norme: IEEE 1541:2002 “ Prefixesfor Binary Multiples”, ISO/IEC 80000
“Quantitiesand units” hanno introdotto nuovi prefissi per i multipli binari, che sono diversi da quelli
utilizzati per i multipli decimali.
Prefissi per i numeri binari e loro legame:

Differenza multipli decimali e binari  un KiB è uguale a 1024 1byte, mentre un kB è uguale a 10001byte;
un MiB è uguale a 1024 2byte mentre un MB è uguale a 10002byte; un GiB è uguale a 1024 3byte mentre
un GB è uguale a 10003 byte. E via così procedendo anche per gli altri multipli

Fattore di errore  Il fattore di errore è progressivamente maggiore man mano che si utilizzano i multipli
più grandi. Se si considera una capacità di 1 KiB, indicandola erroneamente come di 1 kB, l’errore è pari al
2,4%. 1 KiB= 1024 byte; 1 kB= 1000 byte  Calcolo dell’errore: 1.024/1.000 = 1,024; fattore di errore:
2,4%. Se si considera una capacità di 1 TiB, indicandola erroneamente come di 1 TB, l’errore è pari al 9,95%.
1 TiB= 1.099.511.627.776 byte; 1 TB = 1.000.000.000.000 byte. Calcolo dell’errore: 1.024 4/1.0004 =
1,099511627776; fattore di errore: 9,95%.

Un’abitudine erronea  Per abitudine, spesso in informatica si utilizzano i simboli dei multipli decimali per
esprimere quantità multiple binarie. Ad esempio, nella figura per il valore della quantità binaria (12,0 =
12288 byte) è utilizzato il simbolo KB in luogo del corretto KiB.

Indicare bit e byte nelle unità multiple  Nel simbolo delle unità di misura la lettera b può essere maiuscola
o minuscola: la b minuscola indica che trattiamo multipli del bit (1 Mb = 1 Megabit = 1.048.576 bit), la B
maiuscola indica che trattiamo multipli del byte (1 MB = 1 Megabyte = 1.048.576 byte = 8.388.608 bit).

Le unità multiple di bit e byte  alcune unità di misura multiple sono: nibble = 4 bit = ½ byte; word
(WORD) = di lunghezza variabile pari a 16, 32 o 64 bit a seconda del tipo di elaboratore; doubleword
(DWORD o LONGWORD) = 2 word; quadword (QWORD) = 4 word.

IBO6

Le memorie di massa  Dispositivi aggiuntivi chiamati sistemi di memoria di massa(o memoria


secondaria). Si dividono principalmente in: Dischi magnetici, CD, DVD, Nastri magnetici, Unità flash, Dischi a
stato solido. Le memorie di massa vengono introdotte per ovviare ai seguenti limiti della memoria
principale: la volatilità, la dimensione limitata. I vantaggi sono: minore volatilità, grandi capacità di
memorizzazione, possibilità di essere rimosse dalla macchina e archiviate separatamente (vale solo per
alcune tipologie di memorie). Gli svantaggi sono: tempi molto più lunghi di risposta (i sistemi magnetici e
ottici richiedono un movimento meccanico, i sistemi elettronici - come la memoria principale - non hanno
movimenti meccanici); maggiore esposizione ai guasti meccanici (i sistemi con parti mobili sono più esposti
di quelli a stato solido). Funzioni  consentono di immagazzinare in modo permanente dati e programmi
non in uso, consentono di ricaricare, in qualsiasi momento, dati e programmi dalla memoria centrale,
comprendono due elementi distinti: il dispositivo, il supporto di memorizzazione.

Supporti di memorizzazione  sono i componenti fisici su cui si immagazzinano i dati. Si dividono in più
macrocategorie: supporti magnetici, supporti ottici (supporti magneto-ottici), supporti a stato solido. I
dispositivi di memorizzazione  Hanno la funzione di leggere e scriverei dati sul supporto. La lettura è il
processo di copiatura dei dati dal supporto di memorizzazione alla memoria centrale dell’elaboratore, la
scrittura è il processo di copiatura dei dati dalla memoria centrale dell’elaboratore al supporto di
memorizzazione. La testina di lettura/scrittura svolge tali compiti. Un dispositivo di memorizzazione è il
lettore di CD-ROM, il supporto di memorizzazione è il CD-ROM.

Sistemi magnetici  La memoria magnetica  sfrutta il fenomeno della polarità: due magneti si attraggono
o respingono a seconda che i poli siano di segno opposto o uguale. Funzionamento: in sede di scrittura la
testina di lettura/scrittura emette degli impulsi elettrici che invertono la polarità delle piccole particelle
magnetiche presenti nella superficie del supporto. La polarità delle particelle rappresenta i dati espressi in
forma binaria: 0 e 1; in sede di lettura: le particelle magnetizzate inducono nella testina una corrente
elettrica (sequenza binaria). Dischi magnetici  detti dischi magnetici o hard disk drive (HDD). Sono le
memorie di massa più utilizzate, negli anni le loro dimensioni si sono rimpicciolite e la loro capienza è
aumentata. Funzionamento: un HDD classico è costituito da una scatola sigillata contenente uno o più piatti
(di vetro-ceramica o di alluminio) rivestiti da un sottile strato di materiale magnetico.

Le tracce  in ogni piatto la lettura/registrazione dei dati avviene per mezzo di una coppia solidale di
testine di lettura/scrittura (una per ogni superficie) che agiscono sul piatto grazie all’azione meccanica di un
braccio mobile su cui sono ancorate. I dati sono registrati nelle tracce: dei cerchi concentrici ubicati sulle
superfici di ogni piatto del disco fisso. Cilindri e settori  l’insieme delle tracce presenti sulle superfici dei
vari dischi e, allineate l’una sull’altra, costituiscono il cilindro. L’insieme delle porzioni, di tutte le tracce di
una superficie di un piatto, delimitate da due raggi posti a distanza definita, è detto settore. Nei settori i
dati sono registrati come una stringa continua di bit.

Memorizzazione  a capacità normale  ogni traccia contiene lo stesso numero di settori, ogni settore
contiene lo stesso numero di bit. Ad alta capacità  Le tracce vicino al bordo esterno contengono molti più
settori di quelle vicino al centro. Si utilizza la registrazione dei bit a zona. Le tracce adiacenti sono
raggruppate in zone, ogni traccia della zona ha uguale numero di settori. Numero dei settori per traccia di
una zona esterna maggiore del numero dei settori per traccia di una zona interna.
Schema funzionamento Hard Disk Drive (HDD).

La scrittura contemporanea  poiché le testine sono tra di loro solidali è possibile scrivere o leggere
contemporaneamente su tutte le tracce che costituiscono un cilindro. Se un HD ha 1 piatto, un cilindro avrà
2 tracce; se un HD ha 2 piatti, un cilindro avrà 4 tracce; se un HD ha 8 piatti, un cilindro avrà 16 tracce.
L’insieme di porzioni di tracce contigue è detto cluster. Sistema a dischi  la sua capacità dipende da tre
fattori: il numero dei piatti utilizzati, il numero di superfici utilizzate in ogni piatto, la densità con cui sono
disposti settori e tracce. Le prestazioni vengono valutate utilizzando vari parametri: tempo di
posizionamento (tempo necessario a spostare la testina - di lettura/scrittura - da una traccia all’altra);
latenza/ ritardo di rotazione (tempo medio affinché i dati arrivino sotto la testina, quando questa è stata
posizionata sulla traccia prescelta; è la metà del tempo necessario al disco per effettuare una rotazione
completa); tempo di accesso (somma del tempo di posizionamento e del ritardo di accesso); velocità di
trasferimento (velocità con cui i dati possono essere trasferiti dal disco o al disco. Nella registrazione a zone
varia in base alla porzione di disco usata, cioè la quantità di dati letti è maggiore nelle tracce di una zona
interna). Crash della testina  per garantire la massima velocità di rotazione le testine non toccano la
superficie del disco ma «fluttuano» sopra di essa a distanza ravvicinatissima. Una singola particella di
polvere sarebbe sufficiente a distruggere la testina e la superficie del disco. Per proteggere i sistemi a dischi
rigidi, questi sono contenuti in unità sigillate dalla fabbrica. In un circuito elettronico i tempi di ritardo si
misurano al più in unità di nanosecondi (miliardesimi di secondo), in un sistema a dischi, che prevede dei
movimenti fisici, i tempi si misurano al più in millisecondi(millesimi di secondo).

Struttura di un floppy disk.

Floppy disk  i primi floppy “flessibili” avevano un diametro da 8 pollici e una capacità da 100kB, gli ultimi
in uso dagli anni 80 avevano un diametro da 3,5 pollici e una capacità da 1,44 MB. Ormai estinti perché
poco capienti.

Sistemi a nastro  in tali sistemi le informazioni sono registrate in un sottile nastro magnetico avvolto in
una bobina. La scrittura delle informazioni è sequenziale: svantaggi: tempi di ricerca molto lunghi, tempi di
avvolgimento/riavvolgimento molto lunghi; vantaggi: basso costo, elevata capacità di memorizzazione.
Testine magneto resistenti  Cambiano resistenza in presenza di un campo magnetico, perano a una
distanza dalla superficie dei piatti particolarmente ridotta, consentono una maggiore densità di
registrazione, aumentando la capacità dei dischi.

SSD (SolidState Disk)  utilizzano la memoria solida per la memorizzazione dei dati (es: memoria flash).
Vantaggi: assenza di rumorosità, bassa probabilità di guasti, consumi ridotti, tempo di accesso ridotto,
maggiore resistenza alle vibrazioni. Fisicamente un HDD SSD non è un disco magnetico (equivalenza
funzionale).

Sistemi ottici  La memoria ottica  in sede di scrittura la registrazione avviene tramite un raggio laser
che crea sottili scanalature sulla superficie del disco; in sede di lettura: un sottile raggio laser colpisce la
superficie del disco in rotazione che riflette una certa quantità di luce - maggiore o minore a seconda che la
zona colpita sia una scanalatura o un rilievo; un rivelatore fotoelettrico misura i diversi gradi di rifrazione
della luce, i circuiti elettrici convertono le irregolarità rilevate in forma binaria. Superficie di CD-ROM e
DVD-ROM  le scanalature sono realizzate per pressofusione, l’alternanza di zone chiare (rilievi) e scure
(scanalature) rappresentano la sequenza binaria. La tecnologia di memorizzazione  i dati sono
memorizzati in una singola traccia che gira a spirale dal centro verso l’esterno. La traccia è divisa in settori:
della capacità di 2 kB di dati, dotati di proprie marcature di identificazione. I dati sono memorizzati a una
densità lineare uniforme sull’intera traccia a spirale. In una spira esterna sono archiviati più dati. Effetti
delle scelte tecnologiche  i sistemi di memorizzazione su supporti del tipo CD e DVD funzionano al meglio
quando trattano stringhe di dati lunghe e continue. La tecnica a spirale non è idonea per l’accesso casuale a
dati di piccole dimensioni.

Laser e dischi ottici  il laser(Light Amplification by Stimulated Emission of Radiation) viene utilizzato per
effettuare la lettura e la scrittura dei dati nei dischi ottici. Il laser è una forma di radiazione elettromagnetica
simile alle onde radio e alle microonde. Attualmente si utilizzano i raggi infrarossi e (da qualche anno)
anche i laser blu  ha una lunghezza d’onda molto più corta rispetto a quella degli infrarossi, possono
registrare in una data area una quantità di dati 4 volte maggiore, infatti il raggio del laser blu è ¼ di quello
degli infrarossi, ed usato nella tecnologia Blu-Ray. Categorie di dischi ottici  dischi di sola lettura, dischi
che possono essere registrati una sola volta, dischi che possono essere riscritti più volte.

CD  possono archiviare fino a 800 MB di dati, e vengono valutati in base a tempo di accesso, velocità di
trasferimento dei dati. Hanno varie velocità di rotazione espresse in multipli di quella dei CD musicali (prima
generazione). Una V.d.R. maggiore determina: un minor tempo di accesso, una maggiore velocità di
trasferimento dei dati. Si dividono in: CD-ROM, possono essere solo letti, CD-R(registrabili), possono essere
scritti una sola volta, CD-RW(riscrivibili), possono essere registrati e cancellati più volte. Il processo di
creazione di CD e DVD  richiede l’utilizzo di appositi dispositivi detti masterizzatori. Il processo di scrittura
e/o riscrittura è differente da quello di pressofusione dei CD-ROM e dei DVD-ROM. Registrazione e
riscrittura  nella registrazione di un supporto, un raggio laser crea, nello strato di materiale dello stesso,
un rilievo a cui è associabile il valore binario 1. Nella riscrittura, il laser modifica il materiale del supporto da
uno strato cristallino a uno amorfo.

DVD (Digital Versatile Disk)  possono memorizzare varie quantità di dati a seconda del tipo: 1 superficie,
1 strato, 4,7 GB; 1 superficie, 2 strati; 9,4 GB; 2 superfici, 2 strati, 17 GB. Vi sono DVD sia riscrivibili che
registrabili, che purtroppo usano tecnologie tra loro incompatibili: DVD-R /RW, DVD+R/RW, DVD-RAM. DVD
più densi dei CD.

Blu-Ray  utilizza il laser blu, riesce a contenere fino a 200 GB di dati, ovvero quasi 40 volte di più rispetto
a un DVD Single Layer-Single Side (4,7 GB). Utilizza il termine Blu al posto di Blue per motivi di registrazione
del marchio. La Playstation 3 è stato il primo dispositivo a implementarlo.
Unità flash  funzionamento memoria flash  i bit vengono memorizzati inviando direttamente dei
segnali elettrici al dispositivo di memorizzazione. Nel dispositivo di memorizzazione gli elettroni sono
intrappolati in piccole celle di biossido di silicio. Le celle possono trattenere gli elettroni per molti anni
anche in assenza di alimentazione esterna. Modalità di accesso  accesso ai dati memorizzati: possibile
anche indirizzando ogni singolo byte in piccole unità di bit, come nella RAM; cancellazione dei dati possibile
solo in grandi blocchi. Alcune criticità  ogni cancellazione danneggia progressivamente le celle di silicio.
Le memorie flash non sono adatte per usi che prevedono frequente modifica dei dati salvati. Esistono dei
sistemi di distribuzione dell’usura per aumentare il tempo di vita dei SSD. Quindi la memoria flash: utilizza
chip simili a quelli utilizzati per la memoria centrale (RAM) ma in grado di registrare i dati in modo
permanente, i dispositivi che la utilizzano non hanno parti mobili e sono quindi più veloci di dischi e nastri
letti da dispositivi elettromeccanici, sono comunemente implementare nelle chiavette USB e nelle schede di
memoria SD (e derivate)

IB07
Comunicazione uomo – macchina  affinché gli esseri umani possano interagire con gli elaboratori è
necessario operare una traduzione tra i differenti linguaggi utilizzati da entrambi. Gli elaboratori utilizzano
un codice semplice e disambiguo (il linguaggio binario), gli esseri umani utilizzano un codice complesso e
ambiguo. Può avvenire con successo se e solo se avviene una conversione delle informazioni scambiate con
l’elaboratore ed in tale processo si utilizzano le tabelle dei codici.

Rappresentazione del testo  Il carattere  è un’unità minima di informazione, corrisponde a un grafema,


o a un simbolo, della forma scritta di una lingua naturale. Esempi di carattere sono: lettere, numeri, segni di
interpunzione, caratteri di controllo (es: carriage return, linefeed). Le informazioni testuali sono
rappresentate tramite un codice che assegna a ogni carattere un pattern univoco di bit. Esistono vari codici
di questo tipo e non tutti i dispositivi li sanno interpretare. Per risolvere i problemi di standardizzazione
l’ANSI ha adottato il codice ASCII.

ASCII (American Standard Code for Information Interchange)  è un codice per la codifica dei caratteri. Lo
standard è stato pubblicato da ANSI nel 1968 ed il sistema originario US-ASCII codificava i caratteri a 7 bit
ed è ora uno standard ISO (ISO/IEC 646). Nei PC si usa la versione extended ASCII che utilizza 8 bit per la
codifica. ASCII esteso  utilizza l’ottavo bit di ogni byte per rappresentare altri 128 caratteri aggiuntivi. Ciò
ha prodotto notevoli problemi di compatibilità dovuti anche all’utilizzo di estensioni proprietarie. ISO ha
rilasciato uno standard (ISO 8859) contenente un’estensione a 8 bit del set ASCII; ISO 8859-1 (Latin1):
caratteri lingue Europa Occidentale; ISO 8859-2: caratteri linguaggi Europa Orientale; ISO 8859-5: caratteri
cirillici. La codifica Latin1 è la nostra. Criticità  anche nella versione estesa è troppo ridotto per ospitare gli
alfabeti di alcune lingue (come ad esempio quelle asiatiche). Poiché un documento può utilizzare un solo
standard, nello stesso documento non sono supportate lingue appartenenti a gruppi linguistici differenti.
Per ovviare a tali criticità nasce UNICODE
UNICODE  assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera
indipendente dalla lingua, dalla piattaforma informatica, dal programma utilizzato. È compilato e
aggiornato dall’Unicode Consortium che opera per garantire l’interoperabilità nel trattamento informatico
di testi in lingue diverse. Unicode+ UTF-8  se il set di caratteri Unicode è combinato con lo standard
Unicode Transformation Format 8-bit(UTF-8): i caratteri ASCII originali sono rappresentati con 8 bit, i
caratteri di altre lingue (come cinese, giapponese e ebraico) sono rappresentati con 16 bit, sono disponibili
pattern a 24 e 32 bit per rappresentare altri simboli insoliti e per future espansioni. Differenza tra file di
testo  un file di testo è un file composto da una lunga sequenza di simboli codificati in ASCII o Unicode.
Esistono file di testo semplici - manipolati da editor di testo (come Blocco Note), che contengono solo una
codifica carattere per carattere - esistono file di testo più elaborati - manipolati dai word processor (come
Microsoft Word), contengono oltre alla codifica carattere per carattere, molti codici proprietari
rappresentanti la formattazione.

Rappresentazione dei valori numerici  Alcune problematiche  se i dati da registrare sono solo numerici,
rappresentarli come caratteri non è efficiente (utilizzando un byte per simbolo, la rappresentazione di un
numero in ASCII richiede sempre un byte).In tal caso utilizzeremo la notazione binaria: ASCII:1 byte  10
numeri | 2 byte  100 numeri; Binario: 1 byte  256 numeri | 2 byte  65536 numeri. Notazione binaria
 nella notazione binaria i numeri sono rappresentati utilizzando solo le cifre: 0, 1; nella notazione
decimale i numeri sono rappresentati utilizzando le cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Tecniche di
memorizzazione numerica  I numeri interi sono memorizzati utilizzando il sistema della notazione in
complemento a due (consente di rappresentare sia i numeri negativi che quelli positivi). I numeriche
presentano una parte frazionaria sono memorizzati utilizzando la notazione in virgola mobile.

Rappresentazione delle immagini  l’immagine può essere descritta come una collezione di punti. Ogni
punto è detto pixel (picture element). Una collezione di pixel codificati viene denominata bitmap (mappa di
bit). Stampanti e monitor operano con il concetto di pixel. Codifica di un pixel  per rappresentare un pixel
serve un numero di bit variabile con la quantità di informazione presente: immagine in b/n (fax)  1 bit;
immagine a toni di grigio (255 toni)  1 byte; immagine a colori in true color (circa 16 milioni di colori)  3
byte. Codifica immagine a colori  ci sono due differenti approcci per codificare ciascun pixel: RGB - ogni
pixel è rappresentato come combinazione di 3 colori (rosso, verde, blu), per rappresentare ogni colore si
utilizza un byte - luminosità + colore - la luminosità (o luminanza) è la quantità di luce bianca nel pixel, la
crominanza blu/rossa è, rispettivamente, la differenza tra la luminanza e la quantità di luce blu/rossa.
Problematiche bitmap  L’immagine non è ingrandibile se non aumentando la dimensione dei singoli pixel
che la compongono. Il risultato ottenuto è un’immagine sgranata. La rappresentazione vettoriale 
consiste nel descrivere l’immagine come insieme di strutture geometriche codificabili utilizzando tecniche
di geometria analitica. Il dispositivo che visualizzerà l’immagine potrà scegliere come rappresentare le
strutture geometriche - non sarà quindi richiesta la riproduzione di un pattern di pixel particolare. I font 
Font bitmap  particolare tipo di font che prevede la memorizzazione dei caratteri come matrice di punti.
Utilizzano le mappe di bit, occupano una grossa porzione di memoria, sono usati nelle stampanti. Font
scalabili  sono memorizzati come una serie di formule che descrivono la struttura dei caratteri, sono
ridimensionabili, occupano poco spazio in memoria. In sede di stampa sono convertiti in mappa di bit
(rasterizzazione).

Rappresentazione dei suoni  Segnale analogico  molto sensibile alle interferenze, può assumere infiniti
stati, presenta «di fatto» una minore risoluzione. Segnale digitale  poco sensibile alle interferenze, può
assumere due soli stati: 0 e 1, presenta «di fatto» una maggiore risoluzione. Digitale vs analogico:
interferenze  I segnali digitali sono più resistenti alle interferenze di quelli analogici. È più semplice
riconoscere tra due soli stati anche in base al «principio di prossimità». Segnale continuo  è una
grandezza fisica variabile nel tempo in modo continuo. Non è funzione di una variabile discreta, il valore
della grandezza può essere misurato in qualsiasi istante e può essere studiato sia nel dominio del tempo
che in quello della frequenza. Segnale discreto  è una successione di valori di una grandezza in
corrispondenza di una serie di valori discreti nel tempo. È una funzione con valori forniti in corrispondenza
a una serie di tempi scelti nel dominio dei numeri interi. Ciascun valore della successione è chiamato
campionamento. Il campionamento non è in funzione di una variabile continua, ma è ottenuto
campionando un valore continuo. La risoluzione di un segnale è, a parità di durata, la quantità di
informazione trasportata da un segnale continuo e maggiore rispetto a quella trasportata da un segnale
discreto. Segnale digitale  un segnale digitale è un segnale discreto che può assumere soltanto valori
appartenenti a un insieme discreto. È ottenuto campionando un segnale analogico (continuo), ed ha una
determinata frequenza di campionamento (durata dell’intervallo temporale uniforme in corrispondenza del
quale si misurano i valori della serie).

Codifica informazioni audio  per codificare si procede: al campionamento dell’ampiezza dell’onda sonora
a intervalli regolari, alla registrazione delle serie di valori numerici ottenuti. Es: conversazione telefonica
(8000 campioni al secondo, si effettua una codifica ogni otto millesimi di secondo); CD audio (44100
campioni al secondo, i dati ottenuti sono rappresentati con 16 o 32 bit (stereo), ed ogni secondo di musica
richiede più di un milione di bit). MIDI (Musical Instrument Digital Interface)  è un sistema di codifica più
economico. Non prevede la codifica del suono, prevede la codifica delle istruzioni necessarie per produrre
la musica su di un sintetizzatore, la qualità dell’esecuzione del brano dipende dal sintetizzatore utilizzato
per la riproduzione, ed il numero di bit necessario per la codifica è ridotto.

IB08
Sistema binario  Notazione decimale  nel sistema in base 10 ogni posizione è associata a una quantità

Il valore dell’espressione è ottenibile in questo modo: moltiplicando il valore di ogni cifra per la quantità
associata alla sua posizione, poi sommando tra loro tutti i prodotti  𝟒𝟕𝟓= (4 ∗ 100) + (7 ∗10) + (5 ∗1)
= ¿) + (7∗101) + ¿).

Notazione binaria  in tale notazione: la posizione di ogni cifra è associata a una quantità, ed ogni
quantità è il doppio di quella associata alla posizione alla sua destra.

Il valore dell’espressione si ottiene in modo analogo a quello previsto dalla notazione decimale. In sede di
moltiplicazione del valore di ogni cifra per la quantità associata alla sua posizione si avrà sempre: 0, se il
valore della cifra è 0 (zero), la quantità associata alla posizione, se il valore della cifra è 1 (uno).
Algoritmo di decodifica da decimale a binario  Passo 1: dividere il valore per due e memorizzare il resto;
Passo 2: continuare a dividere l’ultimo quoziente per due e memorizzare il resto; Passo 3: ripetere il passo
2 finché il quoziente ottenuto è pari a zero. Passo 4: se il quoziente ottenuto è zero, allora la
rappresentazione binaria del valore originale è data dai resti elencati da sinistra a destra, in ordine inverso a
quello di memorizzazione.

La somma binaria  Si sommano le cifre di ogni colonna da destra a sinistra, si scrive la somma meno
significativa sotto colonna, se esiste si riportala cifra più significativa della colonna, alla colonna successiva.

Addizione binaria  0 + 0 = 1; 0 + 1 = 1; 1 + 0 = 1; 1 + 1 = 10. Virgola binaria  è utilizzata per gestire i


valori frazionari nella notazione binaria. In 11, 011  11 è la parte intera del numero; la virgola è la virgola
binaria, 011 è la parte frazionaria del numero.
Le frazioni binarie  la parte intera del numero binario è interpretata in modo analogo a quanto avviene
nel sistema decimale. La parte frazionaria è interpretata come gli altri bit, ma in questo caso si assegnano,
alle posizioni delle cifre che la compongono, delle quantità frazionarie.
Le frazioni binarie estendono le regole già viste, ovvero: ad ogni posizione è assegnata una quantità di
dimensione doppia rispetto a quella alla sua destra, la procedura di decodifica di una rappresentazione
binaria con virgola binaria è analoga a quella senza virgola.

Differenza tra tecnologie analogica e digitale  nel sistema digitale un valore è: codificato in una serie di
cifre,e memorizzato utilizzando vari dispositivi, ognuno dei quali rappresenta una delle cifre. Nel sistema
analogico un valore è: memorizzato in un singolo dispositivo, che può rappresentare qualsiasi valore in un
intervallo continuo.
Affidabilità e sensibilità all’errore  Il sistema digitale è meno sensibile agli errori del sistema analogico.
Ogni dispositivo rappresenta un valore in un intervallo discreto, anziché continuo. Il sistema digitale
prevede la presenza di errori di troncamento e malgrado ciò è più preciso del sistema analogico.
L’affidabilità della tecnologia digitale ha fatto si che venisse progressivamente adottata anche in
applicazioni che precedentemente utilizzavano la tecnologia analogica.
Memorizzazione dei numeri interi  la rappresentazione dei numeri interi nei sistemi di calcolo può
essere realizzata con due sistemi: la notazione in complemento a due, la notazione in eccesso. Entrambi si
basano sul sistema binario, entrambi presentano aspetti positivi e negativi, e la loro adozione influenza
l’utilizzo del computer.
La notazione in complemento a due  è il sistema più diffuso per rappresentare gli interi all’interno dei
computer. Utilizza un numero fisso di bit per rappresentare ogni valore del sistema (ad oggi si utilizzano
spesso 32 bit), e consente di rappresentare un ampio intervallo numerico.

Il bit del segno  l bit all’estrema sinistra di un pattern indica il segno del valore rappresentato. I pattern
con i bit del segno 1 rappresentano i valori negativi, i pattern con i bit del segno 0 rappresentano i valori
positivi. Il legame tra i pattern  i pattern che rappresentano valori positivi e negativi della stessa
grandezza sono legati tra di loro. Se letti da destra a sinistra sono identici fino al primo 1 compreso, poi
sono il complemento l’uno dell’altro. Nell’operazione di complemento ogni 0 diviene 1, mentre ogni 1
diviene 0. Passare dal valore positivo a quello negativo  se il pattern ha bit del segno 0  va letto il
valore come se il pattern fosse una rappresentazione binaria naturale; se il pattern ha bit del segno 1 
bisogna trovare la grandezza del numero negativo in questo modo: si copia il pattern originale da destra a
sinistra fino a trovare un 1, si complementano i bit restanti mentre li si copia, si decodifica il pattern con le
usuali tecniche binarie.

Somma in complemento a due  in essa ogni pattern di bit (addendi e risultato) ha la stessa lunghezza.
Operativamente: si applica lo stesso algoritmo usato per la somma binaria, si tronca l’eventuale bit extra
generato, alla sinistra del risultato, a seguito del riporto finale. Con lo stesso algoritmo (e quindi la stessa
circuiteria) si può sommare qualsiasi numero con segno (purché il risultato sia all’interno dei valori
rappresentabili). Esistono le stesse modalità per addizione e sottrazione

Overflow  si ottiene quando il valore che deve essere rappresentato è esterno all’intervallo dei valori
rappresentabili. In un sistema in complemento a due esiste un preciso limite alla dimensione dei valori che
possono essere rappresentati

Notazione in eccesso  la notazione rappresentata è chiamata notazione in eccesso otto (vedere foto su
“esempio..” a sinistra). In ciascun caso la notazione binaria supera quella in eccesso di un valore pari a 8 - il
peso del valore (23) associato al bit più significativo del pattern che rappresenta lo zero. La memorizzazione
dei numeri frazionari  la memorizzazione dei valori che hanno parte frazionaria richiede di memorizzare:
il pattern degli 0 e degli 1 che rappresentano il valore binario, la posizione della virgola binaria all’interno
del numero. Si ricorre alla notazione scientifica o in virgola mobile (floating-point notation). Notazione in
virgola mobile  in questa rappresentazione il pattern viene diviso in tre parti: bit del segno  è il bit di
ordine alto (0 segno positivo, 1 segno negativo); esponente  esprime in «notazione in eccesso» la
posizione della virgola binaria; mantissa  esprime il pattern che rappresenta una frazione binaria. I
componenti sono:
Primo esempio: si consideri il pattern 01101011da cui estraiamo: 0, come bit del segno; 110, come
esponente; 1011come mantissa. Si estragga per prima cosa la mantissa e la si scriva posizionando la virgola
sul lato sinistro  0,1011, poi si estragga l’esponente e lo si interpreti come un intero memorizzato in
eccesso tre.

Facendo riferimento alla tabella l’esponente 110 corrisponde a un 2 positivo. Quindi si sposti la virgola
3
binaria a destra di due bit  10,11, che è la rappresentazione binaria di 2 × . Il valore del segno è 0 quindi
4
3
il numero è non negativo. Quindi il byte 01101011 rappresenta𝟐 x
4
Secondo esempio  si consideri il pattern 00111100 da cui estraiamo: 0, come bit del segno, 011, come
esponente, 1100come mantissa. Si estragga per prima cosa la mantissa e la si scriva posizionando la virgola
sul lato sinistro  0,1100. Poi si estragga l’esponente e lo si interpreti come un intero memorizzato in
eccesso tre
Facendo riferimento alla tabella eccesso tre (foto sopra) l’esponente 011 corrisponde a un valore -1. Quindi
3
si sposti la virgola binaria a sinistra di un bit  0,01100, che è la rappresentazione binaria di . Il valore del
8
3
segno è 0 quindi il numero è non negativo. Quindi il byte 00111100rappresenta
8
Errori di troncamento  gli errori di troncamento o di arrotondamento si verificano quando la mantissa
non è sufficientemente grande per contenere tutto il pattern che si vuole memorizzare e quindi una parte
del suo valore viene perso. Esempio: nell’ipotesi di lavorare con un pattern di un byte, si cerchi di
5 5
memorizzare il valore 2 × in virgola mobile. In binario il pattern corrispondete a 2 x è 10,101. Essendo
8 8
troppo lungo (5 bit invece di 4) quando lo copieremo nella mantissa perderemo l’ultimo bit a destra,
1
corrispondente al valore . Per ovviare ai problemi di troncamento è possibile utilizzare un campo
8
mantissa più lungo. Malgrado ciò alcuni valori (caratterizzati da espansioni illimitate) non possono essere
espressi con precisione, indipendentemente dal numero di cifre scelto per rappresentarli. Nella notazione
binaria il numero di valori con espansione illimitata sono maggiori rispetto alla notazione decimale.
1
Esempio: ad esempio il valore ha un’espansione illimitata quando è espresso in binario. Il calcolo di un
10
decimo di una quantità di denaro determinerebbe una perdita di precisione, quindi una perdita di capitale.
Accortezze nella somma in virgola mobile  nella somma in virgola mobile l’ordine con cui si addizionano
gli addendi è significativo. Infatti se un numero molto piccolo è sommato a uno molto grande il primo viene
quasi sicuramente troncato. Si cerca prima di tutto di sommare tra di loro gli addendi con il valore più
piccolo sperando che si accumulino fino a formare un valore significativo, poi si addizionano i valori più
piccoli a quelli più grandi.

IB09
Compressione dei dati  è una tecnica che consente di ridurre le dimensioni dei dati pur mantenendo le
informazioni ivi contenute. È utile in sede di memorizzazione e/o trasmissione degli stessi dati. Ne esistono
due categorie: lossless (senza perdita)  nel processo non avviene nessuna perdita di informazioni; lossy
(con perdita)  nel processo può avvenire la perdita di una parte di informazioni (solitamente la meno
significativa). Le tecniche con perdita hanno un fattore di compressione maggiore e sono preferibili ove
possibile. Le varie codifiche sono: codifica run-lenght (di tipo lossless), codifica dipendente dalla
frequenza, codifica relativa o differenziale (di tipo lossless e lossy), codifica basata sul dizionario (di tipo
lossless e lossy), codifica adattiva o dinamica basata sul dizionario. Codifica run-lenght  prevede la
sostituzione delle sequenze con un codice che indica:il valore ripetuto, quante volte il valore si ripresenta
nella sequenza. È una tecnica lossless. Esempio: il pattern è composto dalla cifra 1 ripetuta 200 volte, poi
dalla cifra 0 ripetuta 40 volte, poi dalla cifra 1 ripetuta 25 volte. Con queste poche e semplici informazioni si
può evitare di scrivere materialmente tutti i 265 bit. Codifica dipendente dalla frequenza  utilizza una
lunghezza del pattern di bit, scelto per rappresentare un elemento, che è inversamente proporzionale alla
sua frequenza di utilizzo. Utilizza un codice a lunghezza variabile, dove gli elementi sono rappresentati con
pattern di lunghezze diverse. Esempio: in un testo si può risparmiare spazio codificando con pattern di bit
brevi le lettere che hanno frequenza caratteristica maggiore. Codifica relativa  invece di registrare i
blocchi si occupa di registrare le differenze che intercorrono tra blocchi consecutivi. Quindi ogni blocco
viene codificato in base al rapporto che lo lega al precedente. È utile nel caso di fotogrammi in movimento.
Può essere implementata: con perdita (codifica approssimata delle differenze), senza perdita (codifica
precisa delle differenze). Codifica basata sul dizionario  si definisce dizionario un insieme di blocchi sui
quali viene costruito il messaggio da comprimere. Codifica il messaggio come una sequenza di riferimenti al
dizionario. Può operare sia senza perdita che con perdita. Esempio: una parola viene espressa come un
singolo riferimento al dizionario e non come una sequenza di singoli caratteri codificati in UTF-8. Codifica
adattiva o dinamica basata sul dizionario  è una codifica adattiva in cui il dizionario può cambiare nel
corso del processo di codifica. Un esempio in tal senso è dato dalla codifica LZW (o di Lempel-Ziv-Welsh).
Codifica LZW  si parte da un dizionario contenente gli elementi base del messaggio. I blocchi più grandi
rilevati nel messaggio vengono aggiunti al dizionario, in modo da poter codificare come riferimento singole
occorrenze future di tali blocchi. Il risultato è una codifica che sfrutta un grande database univoco creato
apposta per un certo messaggio. In sede di decodifica serve solo conoscere il piccolo dizionario iniziale.
Esempio di codifica: i codifichi il messaggio: xyx xyx xyx xyx. Si inizia con un dizionario a tre voci: la prima è
la x, la seconda è la y, la terza è lo spazio. Si codificano prima le voci xyx, come 121, si codifica quindi lo
spazio, ottenendo 1213. L’inserimento dello spazio indica che la stringa di caratteri precedenti forma una
parola. Si aggiunge il pattern xyx al dizionario come quarta voce (4), si procede nella codifica, ottenendo
12343434. Esempio di decodifica: si decodifichi il messaggio 121343434. È possibile eseguire l’attività
utilizzando esclusivamente il dizionario originale di 3 voci. Si decodifica la stringa 1213 come xyx + spazio,
la presenza di uno spazio rileva l’esistenza di una parola memorizzabile come quarta voce: xyx, si continua a
decodificare utilizzando tali elementi, si ottiene la stringa originale: xyx xyx xyx xyx.
Compressione delle immagini  GIF (Graphic Interchange Format)  è un sistema di codifica basato su
dizionario (tavolozza). Si serve della perdita di informazione, se l’immagine originale utilizza più colori di
quelli presenti nella tavolozza. Uno dei colori disponibili può essere impostato come livello di trasparenza.
Riduce a 256 il numero di colori assegnabili a un singolo pixel. Si raccolgono in un dizionario 256 codifiche
relative a particolari combinazioni di rosso-verde-blu; in tal modo è possibile utilizzare un singolo byte
invece di tre byte. Consente di riprodurre solo i colori della tavolozza. Il fattore di compressione è
estendibile utilizzando le tecniche LZW per trasformare lo schema con dizionario in uno di tipo adattivo. In
tal caso il dizionario finale è dato: dalla tavolozza originale, dall’insieme di pattern di pixel. Utilizzo 
ottimo per semplici animazioni su schermo (trasparenza e semplicità), non adatto per applicazioni
fotografiche (consente di utilizzare solo 256 colori). JPEG (Joint PhotographicExpertsGroup)  è uno
standard ISO. È idoneo per la rappresentazione fotografica a colori, comprende diversi metodi di
compressione: senza perdita (basso livello di compressione), con perdita (anche detta «modalità
sequenziale JPEG con perdita» o «standard JPEG di base»). Lo standard JPEG di base comprime con un
fattore fino a 30 volte, senza una perdita di qualità percettibile. Lo standard utilizza tecniche che sfruttano i
limiti dell’occhio umano. L’occhio umano è più sensibile ai cambiamenti nella luminosità, rispetto a quelli
nel colore. Operativamente: si parte da un’immagine codificata utilizzando luminanza e crominanza, si
calcola una media dei valori di crominanza su quadratini 2x2 pixel (tale azione riduce la dimensione delle
informazioni di crominanza, pur mantenendo quelle sulla luminosità. Aumenta la compressione, ma
l’occhio umano non può percepire la perdita di qualità - perdita non visibile), si divide l’immagine in blocchi
di 8x8 pixel e si comprimono le informazioni ivi contenute come se fossero una singola unità
(trasformazione discreta del coseno; Il blocco di 8x8 pixel è sostituito da un blocco: contenente come i pixel
del blocco originale si rapportano tra di loro - es: il valore medio - non contenente i valori dei pixel del
blocco originale), si applicano altre codifiche (run-lenght, relativa e a lunghezza variabile) per aumentare
ancora di più il fattore di compressione. TIFF (Tagged Image Format File)  consente di memorizzare le
immagini insieme ad alcuni metadati (come: data, ora e impostazioni della fotocamera). Solitamente
memorizza le componenti rosse, verdi e blu di ogni pixel, senza compressione. Esiste comunque la
possibilità di utilizzare alcune tecniche di compressione: Run-lenght, per i fax in b/n, tecniche similari a
quelle delle GIF, per immagini a colori.
Compressione audio e video  MPEG (Motion Picture ExpertsGroup)  si tratta di una gamma di standard
per le diverse applicazioni. Sfruttano il fatto che il video è composto da una sequenza di immagini (i
fotogrammi). Solo alcuni fotogrammi sono codificati per intero (fotogrammi-I). Le immagini comprese tra i
fotogrammi I sono rappresentate con tecniche di codifica relative; ovvero vengono memorizzate le sole
variazioni tra un’immagine e la precedente. I fotogrammi I vengono compressi con tecniche analoghe a
quelle in uso nel formato JPEG. MP3 (MPEG Layer 3)  è un sistema per la compressione audio. Sfrutta i
limiti dell’orecchio umano eliminando i dettagli che esso non è in grado di percepire. Può essere utilizzato
per raggiungere ampi fattori di conversione conservando una quantità percepibile analoga a quella dei CD.
Caratteristiche: mascheramento temporale (per un breve periodo di tempo l’orecchio non riesce a
percepire un suono più lieve dopo un suono molto forte), mascheramento di frequenza (un suono a una
determinata frequenza tende a mascherare suoni più deboli con frequenze simili). Le tecniche di
compressione sono largamente utilizzate per risparmiare l’utilizzo della memoria di massa, e trasmettere le
informazioni velocemente in modo da garantire una loro rappresentazione puntuale.

IB10
Errore di comunicazione  si ha un errore di comunicazione quando nel trasferimento delle informazioni
da un componente a un altro, il pattern di bit ricevuto risulta differente da quello trasmesso. Le cause che
possono comportare un errore di comunicazione sono molteplici (a esempio): particelle di polvere o grasso
sulle superfici, malfunzionamento di un circuito elettronico, radiazioni elettromagnetiche. Le tecniche di
correzione sono delle metodologie di codifica dei patternc he permettono di rilevare e di correggere
automaticamente gli errori.
Il bit di parità  è un bit supplementare che viene aggiunto a un pattern per far si che l’intero pattern abbia
un numero di cifre 1 pari o dispari, a seconda dei casi. Solitamente si aggiunge come bit di ordine alto. È un
semplice metodo per rilevare gli errori. Sfrutta il principio che se tutti i pattern di bit hanno un numero pari
di cifre 1 e ne viene rilevato uno con un numero dispari di cifre 1, è occorso un errore.
Sistemi di parità  Tipologie  Parità dispari: se il sistema è progettato in modo che ogni pattern di bit
contenga un numero dispari di cifre 1. Parità pari: se il sistema è progettato in modo che ogni pattern di bit
contenga un numero pari di cifre 1.
Criticità bit di parità  Questo sistema è in grado di rilevare correttamente un solo errore. Se il pattern
finale presenta due errori rispetto al pattern originario il sistema di parità non sarà in grado di rilevare
nessun errore. L’utilizzo del bit di parità non è in grado di rilevare un numero pari di errori in un pattern.
Non da informazioni in merito al reale bit errato. Nel caso di un numero di errori dispari e maggiore di 1, il
bit di parità: consente di rilevare la presenza di un solo errore, non da informazioni in merito al reale
numero di errori presenti, non da informazioni in merito a quali siano i bit errati.
Byte di controllo  in presenza di pattern di bit lunghi viene utilizzato il cosiddetto byte di controllo, ovvero
una sequenza di bit di parità. Ogni bit di un byte di controllo è un bit di parità associato ad alcuni bit sparsi
nel pattern. Ad esempio: un bit di parità associato a ogni bit posto a distanza 8 l’un dall’altro a partire dal
secondo bit. Tale tecnica incrementa la possibilità di rilevare una sequenza di errori concentrata in un’area
del pattern originale. Mette una stessa area del pattern originale sotto il controllo di più bit di parità.
Schemi analoghi a quelli del bit di controllo sono: CRC (Cyclic Redundancy Codes), somme di controllo.
Codici di correzione degli errori  hanno lo scopo di garantire la correzione automatica dell’errore che è
stato rilevato dal bit di parità. Il processo non è intuitivo; infatti è possibile correggere gli errori presenti in
un messaggio senza conoscerne il contenuto. Distanza di Hamming  appresenta la distanza tra due
pattern ovvero il numero di bit in cui i due pattern differiscono.
Separazione tra pattern  In questo codice due pattern sono sempre separati da una distanza di Hamming
pari ad almeno 3. Se un singolo bit è stato modificato l’errore è rilevabile poiché il risultato non è un
pattern corretto. Il pattern originale è deducibile.

Decodifica del messaggio  il pattern modificato sarà a una distanza Hamming: di 1 dal pattern originale; di
almeno 2 da tutti gli altri pattern validi. La decodifica del messaggio richiede: confronto di ogni pattern
ricevuto con quello del codice fino a trovarne uno con distanza di Hamming pari a 1 dal pattern ricevuto,
estrazione del simbolo corretto per la decodifica. Risultati raggiungibili  con una distanza di Hamming pari
ad almeno 3: si riescono a rilevare due errori per pattern, si riesce a correggere automaticamente un errore
per pattern. Con una distanza di Hamming pari ad almeno 5: si riescono a rilevare quattro errori per
pattern, si riesce a correggere automaticamente due errori per pattern. La progettazione dei codici  la
progettazione di codici relativi a distanze di Hamming lunghe non è facile. Tale attività appartiene a un’area
della matematica chiamata «Teoria della codifica algebrica». Le tecniche di correzione degli errori sono
molto utilizzate per garantire l’affidabilità dei dispositivi.

IB11
CPU  è la circuiteria che in un computer esegue operazioni sui dati. È un acronimo per Central Processing
Unit (unità centrale di elaborazione). È confezionata in una piccola scheda i cui connettori sono inseriti in
uno zoccolo (socket) montato sulla scheda madre (motherboard)

Architettura di una CPU  è composta di tre parti: l’unità aritmetico/logica (ALU) che racchiude i circuiti
che eseguono l’elaborazione dei dati; l’unità di controllo (CU) che racchiude i circuiti necessari al
coordinamento delle attività svolte; l’unità dei registri che contiene delle celle di memorizzazione dei dati (i
registri).
I registri  sono utilizzati per memorizzare temporaneamente le informazioni all’interno della CPU. Si
dividono in registri generici e registri speciali. Registri generici e memoria principale  sono usati per
memorizzare temporaneamente i dati elaborati dalla CPU. Conservano i dati in ingresso alla circuiteria
dell’ALU ed offrono uno spazio di memorizzazione dei risultati ottenuti. In sede di esecuzione di operazioni
sui dati registrati nella memoria principale, la CU deve: trasferirli nei registri generici, informare la ALU di
tale nuova collocazione, attivare la circuiteria appropriata, dire alla circuiteria quale sarà il registro preposto
alla ricezione dei risultati.
Interazione CPU/RAM  CPU e memoria principale sono collegate con il bus. La CPU: estrae o legge i dati
dalla memoria principale specificando: l’indirizzo della cella di memoria interessata (da cui leggere), un
segnale di scrittura (negli appositi registri); scrive i dati nella memoria principale specificando: l’indirizzo
della cella di destinazione (in cui scrivere), i dati da memorizzare, un segnale di registrazione nella RAM. Es:
somma di due valori archiviati in memoria; passo 1: prendi dalla memoria uno dei valori da sommare e
ponilo in un registro; passo 2: prendi dalla memoria l’altro valore da sommare e ponilo in un altro; passo 3:
attiva la circuiteria di addizione con i registri usati nei Passi 1 e 2 come input e un altro registro per il
risultato; passo 4: trasferisci in memoria il risultato; passo 5: stop.

Memoria cache  è una memoria ad alta velocità localizzata all’interno della CPU. Viene utilizzata per
mantenere una piccola porzione della memoria principale che è necessaria in un dato momento. Velocizza
l’esecuzione del ciclo macchina del computer (molti trasferimenti dati sono eseguiti tra i registri e la
memoria cache e non tra i registri e la memoria principale).
Riconfigurazione della CU  nei primi computer i passi che ogni dispositivo doveva completare erano
rigidamente incorporati nell’unità di controllo. Successivamente si progettò la CU in modo da poterla
riconfigurare utilizzando un pannello di commutazione. Oggi la CU è riconfigurata utilizzando un
programma. Programma memorizzato  un programma può essere codificato e archiviato nella memoria
principale, come avviene per i dati. Se la CU può svolgere le seguenti azioni: estrarre il programma dalla
memoria, decodificare il contenuto del programma, eseguire il contenuto del programma. Il programma
può essere modificato variando il contenuto della memoria del computer.
Linguaggio macchina  le CPU sono progettate per riconoscere le istruzioni codificate come pattern di bit.
Un’espressione in linguaggio macchina è detta istruzione macchina. Insieme di istruzioni accettate dalla
CPU + Sistema di codifica  Linguaggio macchina. Set di istruzioni delle CPU  ogni elaboratore è
programmato per svolgere vari compiti utilizzando una serie di semplici istruzioni (insieme di istruzioni del
microprocessore). Più l’insieme di istruzioni è grande, più il microprocessore può svolgere varie funzioni.
Esistono differenti architetture, ma due sono le più diffuse.
CISC E RISC: architetture a confronto  CISC (Complex Instruction Set Chips) utilizza un insieme di
istruzioni particolarmente complesso. Le istruzioni sono più di 300. RISC (Reduced Instruction Set Chips)
utilizza un insieme di istruzioni ridotto. Le istruzioni sono meno di 200. CISC – RISC: differenze 
l’architettura interna dei microprocessori RISC: consente l’esecuzione di più istruzioni in un unico ciclo
elaborativo, contiene molti meno elementi di quella CISC. È più economica e semplice da progettare
rispetto a quella CISC. L’architettura interna dei microprocessori CISC consente di svolgere più operazioni
rispetto a quelle che sono consentite dall’architettura RISC. A volte l’architettura RISC è più veloce poiché il
set ridotto di istruzioni che utilizza è sufficiente a svolgere circa l’80% delle operazioni. Attualmente i
processori CISC hanno quasi raggiunto la potenza dei microprocessori RISC. Negli ultimi anni il costo del
processo di produzione dei processori CISC è diminuito. L’architettura CISC ha la supremazia nel settore dei
computer desktop. L’architettura RISC nella nuova concezione di ARM(Advanced RISC Machine) è la più
diffusa negli altri prodotti elettronici di consumo (ontroller per giochi, televisori digitali, cellulari e
smartphone, sistemi di navigazione). RISC ARM consuma meno energia di CISC. Ogni istruzione macchina è
classificabile in uno dei seguenti gruppi: trasferimento dei dati, operazioni aritmetico/logiche, controllo.
Istruzioni di trasferimento dei dati  si occupano della trascrizione dei dati da una posizione all’altra. LOAD
 è la richiesta di riempimento di un registro generico con i contenuti di una cella di memoria. STORE  è
la richiesta di trasferire i contenuti di un registro a una cella di memoria. In tale gruppo consideriamo anche
le istruzioni di I/O relative ai comandi usati per comunicare con gli altri dispositivi.
Istruzioni aritmetico logiche  sono quelle che comunicano alla CU la richiesta di eseguire un’attività
all’interno della ALU. La ALU può eseguire vari tipi di operazioni: aritmetiche, logiche(come a titolo
esemplificativo: AND, OR, XOR), spostamento del contenuto dei registri a destra o a sinistra. SHIFT(sposta)
 scarta i bit che «cadono fuori» dall’estremità del registro; ROTATE(ruota)  utilizza i bit che «cadono
fuori» dall’estremità per riempire i vuoti lasciati dall’altra parte. Operazione SHIFT a sinistra  operazione
di SHIFT a sinistra di una posizione. Equivale a una moltiplicazione per la base (2). Nota: Attenzione alla
dimensione del registro.

Operazione SHIFT a destra  operazione di SHIFT a destra di una posizione. Equivale a una divisione per la
base (2). Nota: Attenzione alla dimensione del registro.
Le istruzioni di controllo  regolano l’esecuzione del programma, non regolano l’elaborazione dei dati. Un
esempio in tal senso è dato dall’istruzione JUMP. Istruzione JUMP  è usata per imporre alla CPU
l’esecuzione di un’istruzione diversa da quella successiva nella lista. Ne esistono due tipi: salto
incondizionato se il «cambio di scena» avviene in ogni caso, salto condizionato se il «cambio di scena»
avviene solo al soddisfacimento di una data condizione logica.
Una semplice macchina di TEST  16 registri numerici, ciascuno della capacità di 1 byte e identificato da un
pattern univoco di 4 bit. Quindi da 0000 a 1111oppure da 0 a F. 256 celle di memoria, ciascuna della
capacità di 1 byte e identificata da un indirizzo univoco di 8 bit. Quindi da 00000000 a 11111111 oppure da
00 a FF.

Es: divisione di 2 numeri archiviati in memoria. Passo 1: carica (LOAD) in un registro un valore dalla
memoria; passo 2: carica (LOAD) in un altro registro un altro valore dalla memoria; passo 3: se questo
secondo valore è zero, salta (JUMP) al passo 6; passo 4: dividi i contenuti del primo registro per il secondo
registro e lasciai risultati in un terzo registro; passo 5: archivia (STORE) i risultati del terzo registro in
memoria; passo 6: esegui l’istruzione STOP.
Codifica delle istruzioni macchina  ogni istruzione macchina codificata è formata da due parti: codice
operativo  indica quale operazione elementare è richiesta; campo operando  fornisce informazioni di
dettaglio sull’operazione specificata dal codice operativo.

Codifichiamo le istruzioni nel nostro esempio  187E  Carica nel registro 8 il pattern di bit trovato nella
cella di memoria il cui indirizzo è 7E; 143C  Carica nel registro 4 il pattern di bit trovato nella cella
dimemoria il cui indirizzo è 3C; 5084  Somma i contenuti dei registri 8 e 4 come se fossero
unarappresentazione in complemento a due e lascia il risultato nel registro 0; 307B  Trasferiscii contenuti
del registro 0 nella cella di memoria il cui indirizzo è 7B; C000 Fine.

L’esecuzione dei programmi  Un computer esegue un programma caricato nella sua memoria copiando
le istruzioni nella CPU. Nella CPU ogni istruzione è poi decodificata ed eseguita. L’ordine di prelevamento
delle istruzioni corrisponde a quello in cui sono state memorizzate, a meno dell’utilizzo di istruzioni JUMP.
I registri speciali della CPU  il corretto svolgimento del processo di esecuzione richiede l’utilizzo di alcuni
dei registri speciali della CPU. Il contatore di programma (program counter) contiene l’indirizzo della
prossima istruzione da eseguire ed indica al computer in quale punto del programma si trova al momento;
Il registro delle istruzioni (instruction register) è usato come contenitore delle istruzioni da eseguire.
Il ciclo macchina  è un processo a tre fasi definito da un algoritmo a ripetizione ciclica che indica come la
CPU deve svolgere il suo compito. Reperimento(fetch); decodifica (decode); esecuzione (execute).
Terminata l’esecuzione di ogni istruzione la CPU inizia un nuovo ciclo.
La fase di reperimento  la CPU legge il contenuto del contatore di programma. La CPU richiede alla
memoria principale di fornirgli l’istruzione memorizzata all’indirizzo indicato dal contatore di programma.
La CPU pone l’istruzione, ricevuta dalla memoria, nel suo registro delle istruzioni. La CPU incrementa il
contatore di programma di un numero pari alla lunghezza delle istruzioni in modo che contenga l’indirizzo
dell’istruzione successiva.
La fase di decodifica  la CPU decodifica l’istruzione, scomponendo il campo operando nei suoi
componenti sulla base del codice operativo.
La fase di esecuzione  la CU esegue l’istruzione attivando la circuiteria adeguata a svolgere il compito
richiesto.
Il clock  è l’orologio incorporato nel microprocessore. Determina la velocità di ogni operazione svolta dal
computer. La sua velocità si misura in (MHz) milioni di cicli al secondo, oppure in (GHz) miliardi di cicli al
secondo poiché non tutti i microprocessori utilizzano lo stesso numero di cicli per elaborare le istruzioni. l
clock è un indicatore della velocità di una CPU solo all’interno della stessa famiglia.
Benchmark  sono programmi eseguibili su differenti tipi di elaboratori e utilizzati per effettuare raffronti
reali sui sistemi ma il metodo non funziona bene perché risente dell’ottimizzazione del microprocessore
verso l’ambito del calcolo di numeri interi oppure verso quello delle operazioni in virgola mobile, ed i
risultati possono essere «drogati» considerando opportunamente l’area che si vuole evidenziare.
Programmi e dati  nella memoria del computer possono essere archiviati sia i programmi che i dati
codificati in forma binaria. Il computer non è in grado di distinguere da solo quali sono i dati e quali i
programmi. Utilizzando il contatore di programma la CPU conosce l’indirizzo di memoria a cui fare
riferimento per conoscere: lo specifico programma da eseguire all’attivazione della macchina, quali sono le
istruzioni del programma da eseguire in un dato momento.

IB12
Sistema operativo  il sistema operativo è un software che controlla le operazioni complessive di un
computer. Fornendo e garantendo: i mezzi attraverso cui un utente può memorizzare e recuperare i file.,
l’interfaccia per richiedere l’esecuzione dei programmi, e l’ambiente necessario per eseguire i programmi.
Le tipologie di sistemi operativi  esistono varie tipologie (commerciali e non) di sistemi operativi. A titolo
esemplificativo: Windows, Linux, Mac OS, Unix. Le differenze tra i sistemi determinano variazioni: negli
strumenti di lavoro disponibili, nella filosofia di distribuzione e di manutenzione. In ogni caso tutti i sistemi
operativi più diffusi affrontano e risolvono gli stessi tipi di problemi.
C’era una volta  negli anni 40’ e 50’ gli elaboratori erano di dimensioni enorme e occupavano intere
stanze. L’esecuzione dei programmi richiedeva: il montaggio dei nastri, l’inserimento delle schede perforate
nel lettore, l’impostazione dei dispositivi di commutazione. L’utente era il responsabile dell’esecuzione dei
suoi programmi. L’esecuzione di un programma (il job) era gestito come un’attività separata. Per poter
eseguire le elaborazioni all’utente veniva concesso per un certo periodo di tempo l’utilizzo esclusivo del
calcolatore. L’attività era divisa in: lunghi periodi di caricamento del programma, brevi periodi di
esecuzione del job. In tale ambiente le principali funzioni dei sistemi operativi erano quelle di: semplificare
il caricamento dei programmi, velocizzare il passaggioda un job all’altro. Il primo passo fu quello di
separaregli utentidall’ubicazione fisica delle macchine. Nasce la figura dell’operatore che segue il
funzionamento della macchina, funge da tramite tra l’utente e la stessa macchina.
L’operatore  riceveva dall’utente che voleva far eseguire un programma i seguenti elementi. Il
programma, i dati necessari. Le istruzioni speciali sui requisiti del programma. Caricava tali informazioni
nella memoria di massa del calcolatore e ne avviava l’esecuzione. Infine restituiva all’utente i risultati
ottenuti
Elaborazione batch  riceveva dall’utente che voleva far eseguire un programma i seguenti elementi: il
programma, i dati necessari, le istruzioni speciali sui requisiti del programma. Caricava tali informazioni
nella memoria di massa del calcolatore e ne avviava l’esecuzione. Infine restituiva all’utente i risultati
ottenuti.
La coda dei job  I job presenti nella memoria di massa attendono l’esecuzione in una coda di job. La coda
è una struttura dati. In una coda gli oggetti sono ordinati secondo il metodo FIFO(first-in, first-out). Gli
oggetti sono rimossi dalla coda nell’ordine di arrivo.

FIFO e priorità dei job  nella realtà il modello FIFO non è strettamente seguito dalla maggior parte delle
code di job. I sistemi operativi tengono in considerazione anche le priorità dei job. Un job in coda può
essere superato da un altro inserito successivamente, purché quest’ultimo abbia priorità più alta.

Il problema dell’interazione  l’utilizzo dell’operatore come interfaccia tra calcolatore e utente ha un


grande svantaggio. Poiché toglie all’utente la possibilità di interagire con i propri programmi. Tale
situazione non sempre è accettabile: OK per situazioni in cui ogni dato e decisione è scelto
aprioristicamente (es: gestione paghe), KO se l’interazione è inevitabile (es: word-processor).
L’elaborazione interattiva  nasce come risposta al problema dell’interazione. Consente al sistema
operativo di garantire l’esecuzione di programmi che richiedono un dialogo continuo con l’utente. Utilizza
terminali remoti o stazioni di lavoro. Richiede che la velocità delle azioni del computer siano adeguate ai
tempi dell’utente.
L’elaborazione real-time  un computer che esegue operazioni in tempo reale, le esegue secondo precise
scadenze dell’ambiente esterno reale.

Problematiche dei sistemi multi utente  quando più utenti richiedono di utilizzare l’elaborazione in tempo
reale di un calcolatore si possono verificare dei problemi infatti quando due utenti richiedono
contemporaneamente l’accesso interattivo, l’esecuzione real-time può essere bloccata se il sistema
continua a eseguire un solo job alla volta.

Il time-sharing  è una tecnica che viene adottata dai sistemi operativi per fornire contemporaneamente i
servizi a più utenti. Prevede la suddivisione del tempo in intervalli (quanti), l’esecuzione di ciascun job per
un solo quanto. Al termine di ogni quanto il job corrente viene messo in «stand-by» e si passa
all’esecuzione di un altro job, fino allo scadere del quanto successivo.

La multiprogrammazione  le tecniche di multiprogrammazione sono utilizzate sia nei sistemi monoutente


che in quelli multiutente: Time-sharing, fa riferimento all’utilizzo di un singolo computer da parte di più
utenti; Multitasking, fa riferimento a un singolo utente che esegue simultaneamente più task (o compiti).
La rapida alternanza dei job crea l’illusione della simultaneità.
L’amministratore di sistema  ha sostituito la funzione dell’operatore. Si occupa della gestione del sistema
senza occuparsi di gestire fisicamente l’elaborazione. Ovvero si occupa di: aggiornare l’hardware e il
software, gestire gli account, gestire lo spazio nella memoria di massa, risolvere i problemi.
L’evoluzione dei S.O.  da: semplici programmi in grado di recuperare dati ed eseguire programmi,
un’istruzione alla volta; a: complessi sistemi di in grado di: coordinare il time-sharing, gestire il contenuto
delle memorie di massa, rispondere (anche direttamente) alle richieste degli utenti.
I processori paralleli  sono processori che operano indipendentemente l’uno dall’altro. Condividono alla
pari le risorse del sistema. La loro attività è coordinata dal sistema operativo.

Utilizzo di più CPU  i moderni S.O. consentono di lavorare con più di un processore. Possono sia
assegnare operazioni diverse a processori distinti, sia suddividere il tempo di ciascun processore.
Bilanciamento, distribuzione dinamica dei task tra i vari processori, in modo da garantire il massimo
efficientamento delle risorse; Scalabilità, divisione dei task in un numero di sotto-task, secondo il numero di
processori a disposizione.

Sistemi operativi e reti  alcuni sistemi software si occupano di coordinare le attività delle reti. Il campo del
networking è un’estensione di quello dei sistemi operativi. L’obiettivo è quello di realizzare la gestione delle
risorse, per molti utenti, su molte macchine e non più su di un solo computer.
I sistemi embedded  sono sistemi operativi che si occupano di gestire dispositivi dedicati a compiti
specifici. Es: elettrodomestici, apparecchi medicali, smartphone, centraline auto. Richiedono normalmente
le seguenti caratteristiche: basso consumo energetico, capacità di operare in modo continuativo senza
sorveglianza umana, funzionamento real-time.

IB13
Classificazione del software  esistono molti schemi di classificazione del software. La terminologia
adottata è spesso contraddittoria (’argomento è dinamico, manca un’autorità centrale). La tassonomia
proposta va intesa solo come un metodo orientativo in un ambito complesso. Software applicativo e
software di sistema: è possibile dividere il software in due macro categorie: software applicativo, che
consiste nei programmi per l’esecuzione di compiti particolari (a titolo esemplificativo: basi di dati, fogli
elettronici, sistemi di contabilità, word processor, giochi, ecc.); software di sistema, che si occupa di
svolgere compiti comuni ai sistemi di elaborazione in generale (di fatto fornisce l’ambiente in cui risiede il
software applicativo). Il software di sistema si può dividere in due categorie: il sistema operativo ed il
software di utilità, ovvero dei programmi che eseguono attività fondamentali per la gestione dei computer,
pur non essendo inclusi nel sistema operativo (si tratta di software che aumenta le funzionalità del sistema
operativo).
La distinzione tra software applicativo e software di utilità è sfumata. Spesso dipende dal fatto che il
pacchetto in questione sia o meno parte integrante dell’infrastruttura software. La distinzione tra software
di utilità e sistema operativo è altrettanto sfumata. Per esempio la questione dei browser e dei riproduttori
multimediali oggetto di cause legali presso l’antitrust.
L’interprete dei comandi (shell)  «È la componente fondamentale di un sistema operativo che permette
all’utente il più alto livello di interazione con lo stesso». Consente all’utente di impartire comandi e
richiedere l’avvio di altri programmi al sistema operativo. È una delle componenti principali del sistema
operativo, così come lo è il kernel. Il nome shell significa «guscio» e vuole indicare che tale componente del
sistema è la parte visibile del sistema stesso. L’interfaccia della shell può essere di vario tipo: grafica (GUI), a
riga di comando (CLI). Un sistema operativo può utilizzare più di una shell.
Le interfacce di sistema  un sistema operativo comunica con l’utente attraverso una parte dello stesso
sistema che prende il nome di interfaccia utente. Esistono varie tipologie di interfacce utente: CLI
(Command Line Interface), utilizzano messaggi di testo veicolati da tastiera e monitor; GUI (Graphical User
Interface), utilizzano una rappresentazione grafica, sotto forma di icone, degli oggetti da manipolare, come
file e programmi. La CLI  l’interfaccia a riga di comando (CLI) è anche detta console, o semplicemente
riga di comando, e (seppur impropriamente) prompt dei comandi. È un tipo di interfaccia utente che si
caratterizza per l’interazione testuale tra utente ed elaboratore. «L’utente impartisce comandi testuali in
input mediante tastiera alfanumerica e riceve risposte testuali in output dall’elaboratore mediante display o
stampante alfanumerici». L’approccio della CLI è storica e deriva dalle modalità di interazione dei terminali
testuali, non in grado di compiere alcuna elaborazione, con l’elaboratore centrale (mainframe) a cui erano
connessi. Operativamente la «CLI si ottiene per mezzo di un programma che permette all’utente di
interagire digitando opportuni comandi su un emulatore di terminale testuale». Esempio: la shell, o
interprete dei comandi di un S.O. La GUI  «È un tipo di interfaccia utente che consente l’interazione
uomo-macchina in modo visuale utilizzando rappresentazioni grafiche (es. widget)». Più in generale si usa la
terminologia «interfaccia grafica» per indicare l’interfaccia di un qualunque software (sia applicativo che di
sistema): software di sistema, si intendono gli ambienti desktop; software applicativo, si intende quello
strato software che realizza e gestisce le tipiche finestre ospitate nell’ambiente desktop. Consente
all’utente di impartire comandi tramite vari dispositivi di input, come: mouse, touchscreen, consente
all’utente di interagire con degli oggetti. A titolo esemplificativo: interazione con le icone, mediante
trascinamento e clic del mouse. È semplicemente una struttura di intermediazione tra l’utente e il sistema
operativo.
Il gestore delle finestre  è un componente fondamentale dell’interfaccia grafica (GUI) di un computer che
si occupa di: allocare parti dello schermo (le finestre); tenere traccia di quale sia l’applicazione che è
associata a ciascuna di tali finestre. Viene anche chiamato window manager. È responsabile dello stile di
una GUI, in quanto «gestisce l’aspetto e la posizione di una finestra nell’ambiente desktop». Funzionamento
del window manager  quando un’applicazione vuole visualizzare un output a schermo avvisa il window
manager. Il window manager indirizza l’output nella finestra assegnata all’applicazione. Il window manager
calcola la posizione del puntatore sullo schermo. Il window manager comunica all’applicazione
appropriata il clic del mouse. Il Kernel  è la parte più interna di un sistema operativo. Contiene i
componenti software che eseguono le funzioni di base del computer: il file manager, i driver di periferica, il
memory manager, lo scheduler, il dispatcher  Questo è un esempio di kernel monolitico.

Il file manager  ha il compito di coordinare l’uso delle funzionalità relative alle memorie di massa.
Gestisce: l’archiviazione e il reperimento dei files archiviati nella memoria di massa. Le informazioni
relative alla collocazione di ogni file, gli utenti che possono accedere ai files, le aree della memoria di
massa disponibili per aggiunte ai files esistenti, oppure per nuovi files. L’organizzazione dei file 
solitamente il file manager raggruppa i file in directory (o cartelle). Ogni directory può contenere delle
sotto directory(o sottocartelle), secondo un’organizzazione gerarchica. Per indicare un elemento all’interno
della catena delle directory si utilizza il path (o percorso). Il Path  «indica la posizione specifica di un
elemento (file o cartella) all’interno di un archivio dati, con un certo file system strutturato ad albero».
Operativamente un percorso (path) è una stringa di caratteri che fornisce l’elenco ordinato dei vari nodi del
file system che devono essere visitati per poter raggiungere l’elemento considerato.

Percorsi relativi e percorsi assoluti  Il path specifica la collocazione di un file all’interno della struttura
gerarchica del file system. I file sono identificati tramite: nomi relativi a una particolare directory attiva;
nomi assoluti che individuano il cammino a partire dalla radice (root) del file system fino a raggiungere il
file individuato. Percorso assoluto  è un percorso che specifica la posizione di un elemento a partire dalla
radice del file system. Non dipende dalla cartella di lavoro corrente. Percorso relativo  è un percorso che
descrive la posizione di un elemento a partire da un’altra posizione dell’albero del file system. Tale
posizione è quella della directory di lavoro corrente, ovvero quella in cui si trova il documento o il
programma che utilizza il percorso relativo. Attenzione: il percorso relativo è definibile solo all’interno dello
stesso albero del file system. Operativamente si costruisce la stringa che costituisce il percorso,
considerando sottointesa quella porzione di percorso che va dalla radice del file system alla directory
corrente. La sintassi per indicare cartelle «speciali» è: ..(due punti successivi), per riferirsi alla cartella
padre di una data cartella; .(il punto singolo), per riferirsi alla cartella stessa. Vantaggi: la lunghezza della
stringa del percorso è inferiore se l’elemento (a cui ci si riferisce) viene spostato nel file system il percorso
relativo rimane inalterato. Svantaggi: affinché il percorso relativo non sia interrotto nel caso in cui
l’elemento (a cui ci si riferisce) sia spostato, anche la directory di lavoro dovrà essere parimenti spostata.
Il pathname in Windows  il nome completo di un file è indicato con la notazione:
«percorso»\«nome_del_file». «percorso»  il supporto di memorizzazione e le directory da attraversare
lungo l’albero per raggiungere la collocazione del file; •\  l separatore tra le directory; «nome_del_file»
 il nome attribuito al file (può contenere fino a un massimo di 255 caratteri, spazi compresi). Nel riferire
un file occorre considerare sia il percorso che il supporto di memorizzazione. Ogni unità disco è individuata
da una lettera dell’alfabeto inglese seguito dal simbolo «:». A: floppy disk; C: disco rigido; D: Cd-rom; E:, F:
ecc.: altre unità spesso rimovibili.
Il pathname in Linux  il nome completo di un file è indicato con la
notazione: /«percorso» /«nome_del_file»; •/  la root directory; «percorso»  le directory da
attraversare lungo l’albero per raggiungere la collocazione del file; •/  il separatore tra le directory;
«nome_del_file»  il nome attribuito al file.

Alcuni esempi  Windows  C:\Informatica\Modulo18\mod18.pdf. ndica il file mod18.pdfcollocato nella


directory Modulo18,collocata nella directory Informatica, collocata nel disco C. Linux 
/utente/Informatica/Modulo18/mod.18.pdf. Indica il file mod18.pdfcollocato nella directory Modulo18,
collocata nella directory Informatica, collocata nella directory utente, collocata nella root directory /.
Funzionamento del file manager  ogni unità software che vuole accedere a un file invia la richiesta al file
manager (fase di apertura del file). Il file manager fa i controlli del caso. Se la richiesta è approvata, il file
manager fornisce le informazioni necessarie a trovare ed elaborare il file. La gestione dei file  Il sistema
operativo si occupa di gestire i file contenuti nel disco fisso. I file sono individuati con: NOME del file,
CARTELLA dove il file è archiviato, UNITÀ DI MEMORIA dove si trova il file. Il nome del file  ad ogni file è
assegnato un nome che lo identifica in modo univoco (nella cartella). Il nome è composto da due parti
separate da un punto: nome, estensione. Nei moderni sistemi i nomi possono essere lunghi e descrittivi (≠
8+3 dello stile MS-DOS). Il tipo del file  può essere identificato in vari modi a seconda del sistema
operativo in uso: Magic Number (Linux)  un valore numerico o un testo costante utilizzato per
identificare un formato di file o un protocollo; Estensione(Windows) la porzione del nome del file
collocata a destra dopo il punto.
I driver di periferica  sono unità software che comunicano con i controller delle periferiche per eseguire
delle operazioni sui dispositivi collegati al computer. Ogni driver è progettato per una specifica periferica.
Ogni driver traduce le richieste generiche nella più opportuna sequenza di passi richiesta dal dispositivo a
lui assegnato. Conseguenze dell’uso dei driver  il progetto delle unità software può essere reso
indipendente dalle caratteristiche specifiche dei dispositivi; il sistema operativo è generico ed è
modificabile in funzione di particolari periferiche, semplicemente installando gli appositi driver.
Il memory manager  ha il compito di coordinare l’impiego della memoria principale del computer. Negli
ambienti multitasking o multiutente il suo funzionamento è complesso, poiché deve gestire l’esecuzione
simultanea di più applicazioni.
Multitasking e gestione della memoria  in ambienti multitasking nella memoria principale si trovano
contemporaneamente più: programmi, blocchi di dati. Ognuna di queste entità risiede in un’area di RAM
assegnatagli dal gestore della memoria. Il gestore della memoria (memory manager) tiene traccia anche
delle aree non più occupate.
La paginazione  se lo spazio richiesto dalla memoria reale supera quello realmente disponibile il memory
manager può avvalersi di un’area della memoria di massa (memoria virtuale) come se fosse un’estensione
fittizia e supplementare della memoria principale. Il memory manager divide lo spazio in unità di alcuni
kilobyte chiamate pagine, quindi sposta in continuazione avanti e indietro le pagine tra la memoria di
massa e quella principale, in modo che in ogni momento le pagine necessarie siano sempre disponibili nella
memoria principale. Tale processo prende il nome di paginazione.
Funzionamento della memoria virtuale  «Nella CPU il programma lavora come se avesse a disposizione
uno spazio di memoria pari a quella indirizzabile con i bit dei registri indirizzo […]; ma in realtà, se la
memoria RAM è insufficiente, le zone di memoria attualmente in uso (suddivise in pagine di dimensione
prefissata) sono allocate nella RAM mentre le pagine inattive sono salvate in un file gestito dal sistema
operativo sul disco rigido».
Lo scheduler (o pianificatore)  stabilisce quali attività considerare per l’esecuzione. Il dispatcher (o
smistatore)  controlla l’assegnazione degli intervalli di tempo alle attività da considerare per l’esecuzione.

IB14
Differenze tra programma e processo  programma e processo sono due concetti ben distinti. Il
programma è un insieme statico di istruzioni. Il processo è un’attività dinamica le cui proprietà mutano con
il passare del tempo. Definiamo processo, quindi, le attività di esecuzione di un programma sotto il
controllo del sistema operativo. Ad ogni processo è associato lo stato corrente dell’attività che è detto stato
del processo. Lo stato del processo  è un’istantanea del computer in un dato momento. Include i
seguenti elementi: il valore del contatore di programma (o la posizione corrente nel programma che viene
eseguito), i valori degli altri registri della CPU, il valore delle celle di memoria assegnate al programma.
Durante l’esecuzione di un programma (ovvero in momenti diversi del processo) si osserveranno diversi
stati del processo. Il coordinamento dei processi  spetta al sistema operativo, che deve garantire: la non
interferenza dei processi indipendenti, la possibilità di scambiare le informazioni tra i processi che ne hanno
bisogno; la disponibilità delle risorse necessarie a ogni processo. Le attività di coordinamento dei processi
sono svolte dallo scheduler (pianificatore) e dal dispatcher (smistatore) del kernel.
Lo scheduler  tiene traccia dei processi nel sistema. Si occupa dell’aggiunta dei nuovi processi e della
rimozione di quelli terminati. Conserva nella memoria principale la tabella dei processi, un blocco
d’informazioni utilizzato per la gestione di tali attività.
La tabella dei processi  la creazione di un nuovo processo coincide con l’aggiunta di un nuovo elemento
alla tabella. Tale elemento contiene: l’area di memoria assegnata; la priorità assegnata; il suo stato (come a
esempio: «pronto», «in attesa»). Alcuni stati di un processo  pronto, se il processo è in uno stato in cui si
può perseguire l’esecuzione; in attesa, se l’esecuzione del processo è temporaneamente rimandata a
quando si verificherà un evento esterno (a titolo esemplificativo: completamento di un’operazione sulla
memoria di massa, arrivo di un messaggio da un altro processo, pressione di un tasto sulla tastiera).
Il dispatcher  è il componente del kernel che coordina l’esecuzione dei processi pianificati. Opera in
questo modo: suddivide il tempo della CPU in brevi segmenti, ciascuno di questi chiamato timeslice o
quanto; commuta l’assegnazione della CPU tra i processi. Il passaggio da un processo all’altro viene
chiamato commutazione di processo oppure commutazione (o cambio) di contesto, o infine contextn
switch.
La commutazione di un processo  quando un processo inizia il suo quanto di tempo, il dispatcher attiva
un temporizzatore per misurare il quanto successivo. Alla fine del quanto il temporizzatore genera un
segnale d’interruzione (interrupt). Quando riceve il segnale di interrupt, la CPU: completa il ciclo macchina
(fetch, decode, execute); salva la sua posizione nel processo corrente, avvia l’esecuzione di un programma
denominato gestore degli interrupt (interrupt handler) << Nota: Il gestore degli interrupt fa parte del
dispatcher e descrive come questo deve rispondere al segnale di interrupt quindi l’effetto del segnale
d’interrupt è l’interruzione del processo e il trasferimento del controllo al dispatcher.>>, il dispatcher
esegue le seguenti attività: sceglie dalla tabella il processo con la priorità più alta tra quelli pronti, riavvia il
temporizzatore, consente al processo selezionato di iniziare il suo quanto di tempo.
Considerazioni sul context switch  il contesto di un processo si compone di molteplici informazioni. Lo
svolgimento della commutazione di processo richiede del tempo (da qualche centinaio di nano secondi a
qualche microsecondo).Durante la sua l’esecuzione l’elaboratore non è utilizzato da nessun processo
utente. Tale tempo «di inutilizzo» è un sovraccarico (overhead) per il sistema e ne influenza le prestazioni.
Gli interrupt  forniscono uno strumento fondamentale per coordinare le azioni di un computer rispetto al
suo ambiente. Ad esempio: premere un tasto può generare un segnale di interrupt che può far si che la CPU
interrompa la sua attività e si concentri sulla causa dell’interrupt. Ai diversi segnali di interrupt sono
assegnate delle priorità, in modo da dare maggiore attenzione a quelli più importanti.
Lo stato dei processi  un processo in esecuzione è soggetto a cambiamenti di stato. Ogni processo può
trovarsi in uno tra i seguenti stati; nuovo(new), il processo viene creato; esecuzione(running), un’unità di
elaborazione (CPU) esegue le istruzioni del relativo programma; attesa(waiting), il processo attende che si
verifichi qualche evento (a titolo esemplificativo: termine di un’operazione di I/O); pronto(ready), il
processo attende di essere assegnato a un’unità di elaborazione (CPU) (a titolo esemplificativo: attesa nella
coda dei processi); terminato(terminated), il processo ha terminato l’esecuzione.

Le code dei processi  in un determinato istante un processore esegue una sola operazione in modalità
monotasking o multitasking. Si creano le «code di processi» (processqueues), ogni risorsa del computer
gestisce una coda di processi, e la coda della CPU viene chiamata coda dei pronti (ready queue).
Modalità di selezione  Round Robin  la ready queue (coda dei pronti) è vista come una coda circolare.
Il processore (CPU) è assegnato: a rotazione; ai vari processi in coda; al massimo per il time slice (quanto di
tempo)

Modalità di selezione  per priorità  viene selezionato il processo con priorità più alta, la priorità può
essere statica o dinamica, ed i processi più brevi hanno maggiore priorità (tempo della CPU).

IB15
Il bootstrap  il sistema operativo viene avviato per mezzo di una procedura eseguita a ogni accensione
del computer, che prende il nome di bootstrap (o boot). Con questa procedura il sistema operativo viene
trasferito dalla memoria di massa (ove risiede) alla memoria principale (che è vuota se il computer è
spento). E’ necessario perché ad ogni attivazione della CPU il contatore di programma inizia con le istruzioni
contenute in un indirizzo predeterminato la CPU si aspetta di trovare la prima istruzione da eseguire a
questo indirizzo. Poiché la memoria principale è realizzata con tecnologie volatili, i dati immagazzinati
vengono persi a ogni spegnimento del computer. Occorre quindi trovare un meccanismo che consenta di
caricare il sistema operativo e passargli il controllo.
L’avvio (boot) del computer  una parte della memoria principale del computer viene costruita con
tecnologie non volatili. La CPU si aspetta di trovare la prima istruzione proprio in questa parte della
memoria principale. Questa memoria è nota come ROM (Read Only Memory). Nella ROM del computer è
memorizzato il boot loader, un programma eseguito per primo all’accensione della macchina. Le istruzioni
del boot loader ordinano alla CPU di trasferire il sistema operativo: da un’area predeterminata nella
memoria di massa all’area volatile della memoria principale. Quando il sistema operativo è nella memoria
principale, il boot loader ordina alla CPU l’esecuzione di un’istruzione di salto all’area della memoria in cui si
trova il sistema. Infine il sistema operativo subentra e assume il controllo delle attività del computer.
Il BIOS (Basic Input-Output System)  è l’intermediario tra l’hardware del computer e il sistema operativo.
Senza il BIOS, il sistema operativo non ha nessuna possibilità di comunicare e prendere controllo
dell’hardware. È situato in un chip sulla scheda madre, contiene una serie di istruzioni indispensabili.
Configurazione del BIOS  il BIOS è un firmware dalle funzionalità limitate. Offre molti parametri di
configurazione se anche un singolo parametro non è correttamente impostato le prestazioni e il
funzionamento del computer saranno ridotte. In caso di instabilità del sistema è consigliabile resettarlo alle
impostazioni di fabbrica. Le funzioni del BIOS  sono essenzialmente tre: eseguire il controllo
dell’hardware all’accensione (POST: Power On Self Test), eseguire alcune funzioni basilari per il controllo
dell’hardware, caricare il sistema operativo. Memorizzazioni del BIOS  il BIOS è contenuto in una piccola
memoria ROM collocata nella scheda madre. A volte può essere anche riprogrammabile e le sue
impostazioni sono memorizzate nel CMOS.
CMOS  è un piccolo chip di memoria RAM in cui sono memorizzate le impostazioni del BIOS. Il CMOS è un
semiconduttore che assorbe poca energia. A computer spento è alimentata da una piccola batteria che
serve a mantenere il contenuto della memoria
Differenze tra BIOS e CMOS  il BIOS e il CMOS sono due entità differenti. «Il BIOS è il firmware contenuto
nell’omonimo circuito integrato», «Il CMOS è un chip di memoria che contiene i parametri di configurazione
processati dal BIOS durante la sua esecuzione, in un dato momento del POST nel boot».
I principali parametri di configurazione  tra i parametri di configurazione del BIOS abbiamo: data, ora,
password accesso al BIOS (sia amministratore, sia d’avvio) durante il POST, configurazione hardware del
sistema (a titolo esemplificativo: scheda madre, CPU, scheda video, memoria RAM, dischi rigidi, lettori
ottici, periferiche di input (mouse, tastiera, touchpad), scheda di rete, valori di default e altri dispositivi
connessi alla scheda madre).

IB16
Reti informatiche (o network)  è un insieme più o meno grande di computer e dispositivi collegati tra loro
allo scopo di condividere risorse e informazioni. (2 computer collegati tra di loro sono una rete minima;
Internet è una rete di reti).
Componenti fondamentali  il cablaggio e le schede di rete sono i componenti indispensabili per
l’implementazione di una rete di elaboratori.
Classificazione  le reti possono essere classificate in base a: estensione fisica (LAN, MAN, WAN), metodo
di amministrazione (peer-to-peer, client-server). Altri elementi di classificazioni sono: sistema operativo di
rete (Windows, Unix, Netware), protocolli di rete (TCP-IP, IPX/SPX, AppleTalk), topologia (bus, anello,
stella), architettura (Ethernet, TokenRing, FDDI). Classificazione per estensione  in base all’estensione
fisica una rete si definisce: LAN(Local Area Network) – Rete locale, confinata a una zona geografica limitata
(stanza, piano, edificio, campus); WAN (Wide Area Network) – Rete geografica, composta di LAN
interconnesse. Si estende su un’area geografica ampia utilizzando collegamenti come linee telefoniche o
satelliti per connettere computer in diverse città, nazioni o continenti; MAN (MetropolitanArea Network) –
Rete metropolitana, di dimensioni intermedie tra una LAN e una WAN, delimitata dai confini di una città o
di un’area metropolitana. Server e client  un server è un’entità (computer o applicazione) che rende
disponibili le proprie risorse (dati, software o periferiche) alle altre entità (computers o applicazioni) della
rete. Un client è un’entità (computer o applicazione) che accede alle risorse di un server. Classificazione per
amministrazione  la classificazione per metodo di amministrazione definisce una rete sulla base: di chi
condivide le risorse e del modo con cui le risorse vengono condivise. Rete client/server è caratterizzata da
amministrazione centralizzata; rete peer-to-peer (o gruppo di lavoro) - “pari a pari” è caratterizzata da
amministrazione decentralizzata ed ogni nodo agisce sia da server che da client.
Modello ISO OSI  il modello Open System Interconnection (OSI) definisce i compiti generici che vengono
eseguiti per la comunicazione in rete. Ogni strato (o livello, o layer) definisce le attività di rete; ogni strato
comunica sia con il livello soprastante che con il livello sottostante. Lo scopo del modello OSI?  Il modello
OSI è un punto di riferimento comune per discutere la comunicazione di rete, che viene utilizzata per
descrivere le funzionalità dei dispositivi e dei protocolli. Lo strato 7 fornisce ai programmi i servizi necessari
per l’accesso alla rete. Gli strati 1 e 2 definiscono il mezzo fisico della rete e le relativa attività connesse.
I benefici degli standard di rete  gli standard di rete consentono l’interoperabilità tra dispositivi e sistemi
di vendor differenti. Riducono i costi (esempio: il protocollo TCP/IP consente l’interazione tra sistemi di
vendor differenti; esempio: il protocollo SMTP consente la comunicazione tra differenti sistemi di posta
elettronica).
I componenti di rete  sono PC/Workstation (client), Server, Cablaggio, Switch, Router, Firewall. Tipologie
di cablaggio  il cablaggio fa riferimento al livello fisico del modello ISO/OSI. Tra i tipi di cablaggio più
diffusi vi sono: doppini intrecciati (Twisted-pair); fibra ottica(Fiber optic); cavi coassiali(oramai in disuso);
“connessioni senza fili” (Wireless) (Improprio).

Lo Hub  è un ripetitore multi porta usato nelle LAN; non tiene traccia della posizione dei computer. È un
ripetitore multi porta che permette di collegare tra loro numerosi dispositivi all’interno di una LAN, Alla
ricezione di un segnale su di una porta lo inoltra su tutte le sue porte, dunque verso tutti i nodi connessi.
Muove i pacchetti tra i vari nodi, non offre alcuna protezione dal packet sniffing.

Lo switch (o commutatore)  Opera al livello di collegamento dati del modello OSI. Muove i pacchetti tra i
vari nodi in base alla loro posizione e raccia i nodi in base all’indirizzo MAC. Il packet sniffing su di una rete
commutata richiede il port mirroring. Alcuni switch operano anche ai livelli 3 e 4 del modello OSI.
Riepilogo delle differenze tra hube switch  Hub: è un ripetitore multi porta che inoltra i dati in arrivo da
una sua porta su tutte le altre sue porte. Ilsegnale in arrivo da un nodo è inviato a tutti i nodi della rete.
Switch: è un commutatore che inoltra selettivamente i pacchetti ricevuti da una porta verso una specifica
porta di uscita. Il traffico è gestito attraverso gli indirizzi MAC.
Il router  muove i pacchetti tra le reti, tiene traccia delle reti e non dei nodi, collega differenti locazioni
fisiche, viene anche chiamato gateway. È un «instradatore» di traffico in grado di interconnettere più LAN
ed inoltrare il traffico ad una qualunque destinazione (interna o esterna alla LAN) basandosi sugli indirizzi
IP. Elabora e mantiene una tabella con i percorsi più veloci per il recapito e con percorsi secondari, da
utilizzare in caso di eccessivo traffico o di blocchi.
Firewall  È un router che utilizza delle regole. Controlla la comunicazione in ingresso(inbound) e in uscita
(outbound).Protegge gli host ubicati dietro il firewall.
Caratteristiche di una LAN  è in una singola posizione fisica, ha una connettività di rete veloce ed il livello
di controllo è minimo. La LAN è confinata in una singola posizione fisica, che può essere un edificio o un
campus. Gli switch costruiscono automaticamente una tabella interna di routing dei singoli computer e
solitamente non hanno regole per controllare le comunicazioni di rete. Tutti gli host connessi alla LAN sono
considerati attendibili.

Caratteristiche di una WAN  connette differenti locazioni fisiche, ha una velocità di connessione più lenta
di quella di una LAN, la sua connettività è più costosa della connettività LAN e solitamente utilizza la
connettività fornita da un’altra società.
Connessioni WAN  le connessioni possono essere: dial-up: la connessione viene stabilita effettuando una
chiamata e ha la durata temporanea di una sessione di trasferimento dati (esempio: modem); permanenti:
la connessione è sempre attiva (es. xDSL); dedicate (punto-punto): connessioni che collegano un punto
specifico a un altro (esempio: due sedi di una stessa azienda). Sono “dedicate” in quanto a uso esclusivo di
chi acquista il servizio e di conseguenza molto costose.
Rete perimetrale o DMZ  isola le risorse della LAN ed aumenta la sicurezza. L’accesso remoto  fornisce
accesso alle risorse della LAN da fuori la LAN. Può essere di tipo VPN o dial-up.
Le reti a commutazione di circuito  in una rete a commutazione di circuito viene preventivamente
riservato un circuito tra i due nodi che devono comunicare tra di loro. È come se venisse fisicamente steso
un cavo di una linea dedicata tra i due nodi. Questa tecnologia è usata nelle reti telefoniche

Le reti a commutazione di pacchetto  i dati non sono spediti direttamente da un punto all’altro, ma
inviati attraverso una serie di nodi chiamati instradatori. I nodi che devono comunicare tra di loro non
hanno a disposizione una linea dedicata. I dati in uscita sono suddivisi in piccole porzioni (pacchetti) e
quindi trasmessi in rete. I dati attraversano la rete, di router in router, e quindi vengono riassemblati una
volta giunti a destinazione. Ogni pacchetto può seguire un percorso diverso. In tal modo si ottimizzano le
risorse evitando che una linea rimanga impegnata e inattiva per la maggior parte del tempo, come avviene
nelle reti a commutazione di circuito.

Topologia di rete  determina il modo in cui i dispositivi e gli elaboratori possono essere collegati tra di
loro. Non fa riferimento alla disposizione dei componenti fisici, fa riferimento alla modalità di trasmissione
dei dati. Le principali architetture sono a: anello, bus, stella.
I componenti fondamentali  una rete è composta da alcuni elementi fondamentali: nodo, un qualsiasi
dispositivo hardware in grado di comunicare con gli altri dispositivi della rete, pannello di connessione
(hubo concentratore), semplifica la connessione fisica dei nodi e istrada i segnali inviati da un nodo all’altro,
dorsale, cavo ad alta capacità a cui sono collegati più concentratori.
Architettura ad anello  i nodi della rete sono connessi in serie da un cavo continuo (canale) che, dal punto
di vista logico, realizza un cerchio chiuso. I nodi sono (fisicamente) collegati attraverso un pannello di
connessione in cui risiede l’anello. Ogni nodo ha un contatto (logico) diretto solo con il precedente e il
successivo. La comunicazione avviene a senso unico. I computer sono connessi tramite un unico cavo
circolare privo di terminatori. I segnali sono inviati in senso orario lungo il circuito chiuso passando
attraverso ciascun nodo che funge da ripetitore e ritrasmette il segnale potenziato al nodo successivo. Il
segnale passa così di nodo in nodo mediante ritrasmissione fintanto che non giunge a quello di destinazione
Architettura a stella  in una topologia a stella ogni computer è collegato con un cavo dedicato a un
dispositivo centrale o concentratore. Il concentratore può essere un hub o uno switch. Tutte le
comunicazioni passano per il nodo centrale. Il nodo centrale gestisce tutte le comunicazioni. Richiede
un’elevata quantità di cavi. In caso di interruzione di uno dei cavi di connessione tra un nodo e il
concentratore, solo quel nodo verrà isolato dalla rete. In caso di mancato funzionamento del
concentratore, saranno interrotte tutte le attività di rete

Architettura a bus  ad ogni estremità del cavo viene applicato un terminatore che assorbe i segnali
rendendolo disponibile per l’invio da parte degli altri nodi. È il metodo più semplice di connettere in rete
dei computer. Tutti i nodi sono collegati in serie lungo la stessa linea di trasmissione. Un singolo cavo
(chiamato dorsale o segmento) connette in modo lineare tutti i nodi. I dati sono inviati a tutti i nodi come
segnali elettronici ma vengono accettati solo dal nodo il cui indirizzo è contenuto nel segnale di origine. La
trasmissione simultanea da parte di due nodi genera una collisione e la perdita del messaggio trasmesso.
Poiché un solo nodo alla volta può inviare dati, maggiore è il numero di nodi connessi alla rete, maggiore
sarà il numero di nodi in attesa di trasmettere dati, con conseguente decadimento delle prestazioni
dell’intera rete. La topologia è passiva: i nodi ascoltano i dati trasmessi sulla rete, ma non intervengono nel
loro spostamento da un nodo al successivo. I segnali trasmessi da un nodo viaggiano da un capo all’altro del
cavo, rimbalzando e tornando indietro. Il rimbalzo dei segnali impedisce agli altri nodi di avviare nuove
trasmissioni, fintanto che i primi segnali non siano stati rimossi. Vulnerabilità  la semplice rottura o il
banale scollegamento di un cavo fa si che il bus sia privo di terminatore. In tal caso i segnali rimbalzano
avanti e indietro nel bus interrompendo l’attività su tutta la rete. L’identificazione del guasto richiede
l’ispezione fisica di tutto il cablaggio di rete.
L’architettura di rete  il metodo d’accesso  determina lo schema in base al quale si stabilisce quando un
nodo può trasmettere in modo da evitare la sovrapposizione dei segnali. Infatti, la sovrapposizione dei
segnali determina delle interferenze. I metodi più diffusi sono Ethernet e Token ring. È determinato dalla
scheda di interfaccia di rete. Ethernet  Utilizza la modalità di accesso CSMA/CD (Carrier Sense Multiple
Access with Collision Detection). Ogni nodo esamina lo stato della rete e se la trova libera prova a
trasmettere. In caso di tentativo di trasmissione simultanea, è rilevata la collisione e ogni nodo coinvolto
rimane in attesa per un tempo casuale prima di riprovare a trasmettere. Chi effettua la trasmissione per
primo acquisisce il controllo della rete. Vi sono varie implementazioni di Ethernet: legate al tipo di
supporto(cavo coassiale, doppini intrecciati, fibra ottica); legate alla velocità di trasmissione(10 Mbps, 100
Mbps, 1 Gbps, 10 Gbps); alla distanza massima percorribile(da 25 metri a 60 Km). Token ring  i nodi non
si contendono il controllo della rete. I nodi ottengono il permesso di trasmettere quando vengono in
possesso di un gettone elettronico (il token) che circola nella rete sotto forma di segnale. La topologia in
uso è quella ad anello. I vantaggi sono: il nodo mittente ha sempre la conferma che i dati sono stati ricevuti.
Ogni volta che una trasmissione viene portata a termine il nodo successivo ha sempre l’accesso garantito.
IB17
Stack TCP/IP

Funzionamento di TCP/IP  i dati che il livello Trasporto riceve dal livello Applicazione vengono
frammentati in pacchetti al fine di ottimizzarne il trattamento. TCP aggiunge a ogni pacchetto una serie di
informazioni che lo caratterizzano in maniera inequivocabile. (Esempio: il numero d’ordine nella sequenza
di cui il pacchetto fa parte; esempio: i codici di controllo (checksum) che verificano se la trasmissione è
avvenuta correttamente. Il pacchetto viene quindi passato al livello Rete dove IP si fa carico di instradare i
pacchetti nella maniera più opportuna verso l’host di destinazione. I principali protocolli del livello
applicazione  HTTP/HTTPS; FTP, RDP; SMB; SMTP; POP3; IMAP. I protocolli del livello di trasporto  TCP:
orientato alla connessione (connection oriented): E’ affidabile (reliable) ed invia i“segmenti”; UDP: senza
connessione (connectionless). E’ inaffidabile (unreliable) ed invia i “datagrammi”. Funzionamento di TCP 
«TCP è un protocollo orientato alla connessione, ovvero prima di poter trasmettere dati deve stabilire la
comunicazione, negoziando una connessione tra mittente e destinatario, che rimane attiva anche in assenza
di scambio di dati e viene esplicitamente chiusa quando non più necessaria». «Possiede le funzionalità per
creare, mantenere e chiudere una connessione». «TCP è un protocollo affidabile: garantisce la consegna
dei segmenti a destinazione attraverso il meccanismo degli acknowledgements». «TCP garantisce che i dati
trasmessi, se giungono a destinazione, lo facciano in ordine e una volta sola (atmostonce)». Fornisce ai
livelli superiori (applicativo) un servizio equivalente a una connessione fisica diretta trasportante un flusso
di byte (meccanismi di acknowledgment e di ritrasmissione su timeout). TCP fornisce molti servizi del livello
di trasporto: multiplazione delle connessioni (meccanismo dei «port»), verifica degli errori di trasmissioni
(checksum), controllo di flusso tra terminali in comunicazione - ottimizzazione dell’utilizzo dei buffer di
ricezione/invio sui due end devices; controllo della congestione sulla connessione (meccanismo della
«finestra scorrevole») - diminuzione del numero dei segmenti inviati in caso di congestione della rete.

Funzionamento di UDP  «UDP è un protocollo di tipo connectionless, inoltre non gestisce il riordinamento
dei pacchetti né la ritrasmissione di quelli persi, ed è perciò generalmente considerato di minore
affidabilità». «È molto rapido (non c’è latenza per riordino e ritrasmissione) ed efficiente per le applicazioni
"leggere" o time-sensitive» (esempio di utilizzo: trasmissioni VOIP e trasmissioni di audio-video in real-
time). UDP fornisce esclusivamente i servizi basilari del livello di trasporto: multiplazione delle connessioni
(meccanismo dei «port»), verifica degli errori di trasmissioni (checksum). «UDP è un protocollo stateless,
ovvero non tiene nota dello stato della connessione dunque ha, rispetto al TCP, meno informazioni da
memorizzare» (possibilità di supportare più client attivi).

Narrow waist Incapsulamento TCP/IP

Incapsulamento 2

Principio “end to end”  «afferma che, se si hanno due applicazioni che comunicano tramite una rete, tutte
le funzioni e le operazioni specifiche richieste da tali applicazioni, come il controllo di errori, devono essere
realizzate ed eseguite in modo completo nei nodi terminali (o end point) e non nei nodi intermedi (o
intermediate node) della rete». Una sua conseguenza è un nuovo modello di rete «stupida» con terminali
«intelligenti». È alla base del modello «net neutrality» (neutralità della rete), con il quale ci si riferisce a
una rete che non discrimina in base al contenuto
Net neutrality  si ritiene neutrale «una rete a banda larga che sia priva di restrizioni arbitrarie sui
dispositivi connessi e sul modo in cui essi operano, cioè dal punto di vista della fruizione dei vari servizi e
contenuti di rete da parte dell’utente finale».Delinea un modello di rete che richiede il trattamento paritario
dei pacchetti IP che la attraversano. «Una rete neutrale non dà priorità differenziate ai diversi pacchetti,
mentre una rete "non neutrale" sì». «In base al principio di neutralità, gli internet provider non possono di
proposito bloccare, rallentare o fare pagare differentemente l’accesso ai dati».
Indirizzi IP  gli indirizzi sono costituiti da 4 numeri separati da un punto e debbono essere univoci. Ogni
numero può assumere valori da 0 a 255. La prima parte rappresenta la parte rete dell’indirizzo mentre la
seconda parte rappresenta l’indirizzo del computer nella rete. (93.204.8.30 web.unicam.it)
Il numero massimo di nodi per classe è pari a 2n−1 . Altre due classi (D ed E) sono usate per le trasmissioni
Multicast e per fini speciali.

Il gateway di default  viene utilizzato per instradare i pacchetti verso altre reti. Viene utilizzato quando la
tabella di routing interna del nodo (host) non ha informazioni sulla sottorete (subnet) di destinazione.
Spesso il protocollo DHCP è utilizzato per fornire automaticamente al client l’indirizzo IP relativo al gateway
predefinito.
DHCP

Automatic private IP addressing (APIPA)  viene utilizzato quando non è contattabile un server DHCP.
Assegna indirizzi IP appartenenti alla rete 169.254.0.0/16. Non è idoneo per un uso aziendale, non va
utilizzato in presenza di: connettività Internet, subnet multiple, server DNS.
DNS  viene utilizzato per: risolvere i nomi hostin indirizzi IP; risolvere gli indirizzi IP in nomi host;
individuare i server di posta durante la consegna delle e-mail.
Il socket  nell’ambito delle reti informatiche «è il punto in cui il codice applicativo di un processo accede
al canale di comunicazione per mezzo di una porta, ottenendo una comunicazione tra processi che lavorano
su due macchine fisicamente separate». Si tratta di «un’astrazione software progettata per utilizzare delle
API standard e condivise per la trasmissione e la ricezione di dati attraverso una rete». Tipologie di socket 
in base alla modalità di comunicazione adottata i socketsi suddividono in tre categorie: Datagram Socket se
la connessione si basa su UDP; se non c’è connessione tra client e server, ma il client sceglie di comunicare
col server quando desidera, se l’invio dei dati consiste nel trasferimento di piccoli datagrammi; se non è
garantito né il corretto ordine d’arrivo dei datagrammi, né la correttezza dell’informazione. In base alla
modalità di comunicazione adottata i socket si suddividono in tre categorie: Stream Socket se la
connessione si basa su TCP, se la comunicazione tra client e server avviene dopo l’instaurazione di una
connessione tra i due nodi, se l’invio dei dati consiste nel trasferimento di segmenti, se è garantito sia il
corretto ordine d’arrivo dei segmenti, sia la correttezza dell’informazione. Raw Socket si tratta di una
particolare tipologia ed utilizzato per lo sviluppo di particolari protocolli.

Socket su IP  può essere di due tipologie: listen, rappresenta la possibilità di stabilire delle nuove
connessioni, è identificato dalla tripletta: protocollo di trasporto (TCP/UDP), indirizzo IP del nodo, numero
di porta (1-65535); established, rappresenta una specifica connessione attiva, è identificato da cinque
elementi: protocollo di trasporto (TCP/UPD), indirizzo IP sorgente, indirizzo IP destinazione, numero di
porta sorgente (1-65535), numero di porta destinazione (1-65535).
Lo spazio degli indirizzi IP  notazione decimale e notazione binaria.

Le classi di indirizzi IPv4 Suddivisione dello spazio IP in classi

Gli indirizzi IPv4 riservati  alcuni intervalli (range) di indirizzi IPv4 sono riservati e non istradabili: 10.0.0.0-
10.255.255.255 –per la classe A; 172.16.0.0-172.31.255.255 –per la classe B; 192.168.0.0-192.168.255.255
–per la classe C.
Determinare se un IP è locale o remoto  si effettua un’operazione logica di AND tra gli indirizzi IP e le loro
maschere di sottorete. 1 AND 1 = 1, qualsiasi altra combinazione = 0. Se il risultato degli indirizzi coincide,
allora la destinazione è locale.

La comunicazione IP in una rete singola  determina se la rete è locale o remota, risolve l’IP di
destinazione in indirizzo MAC, indirizza il pacchetto e consegna il pacchetto alla destinazione.
La comunicazione IP tra le reti  determina se la rete è locale o remota, risolve l’indirizzo IP del default
gateway in indirizzo MAC, indirizza e consegna il pacchetto al default gateway. Il default gateway: risolve
l’IP di destinazione in indirizzo MAC, indirizza e consegna il pacchetto alla destinazione.

Un esempio da Wikipedia  traduzione degli indirizzi IP e della subnet mask in notazione binaria.
Configurazione IP di «Computer A» (sorgente; indirizzo IP: 192.168.32.97, subnet mask: 255.255.255.224.
Configurazione IP di «Computer B» (destinatario); indirizzo IP: 192.168.32.130. Prima di procedere è
necessario trasformare tutto (indirizzi IP e subnet mask) in notazione binaria.

Il risultato dei calcoli effettuati pocanzi indicano che i due nodi: computer A –indirizzo di rete:
192.168.32.96; computer B –indirizzo di rete: 192.168.32.128. Appartengono a sottoreti differenti.
Il DNS (Domain Name System)  è posto a fondamento del sistema dei nomi Internet; consente di
accedere alle risorse utilizzando dei nomi alfanumerici; lo spazio dei nomi di dominio è gestito dalla
InterNIC; è stato progettato per sostenere la crescita del numero degli host in Internet.
La query DNS  una query è una richiesta di risoluzione dei nomi rivolta a un server DNS. Le query sono
ricorsive o iterative. Le query possono essere avviate dai client e dai server DNS. I server DNS possono
essere autorevoli o non autorevoli per uno spazio di nomi. Un server DNS autorevole per lo spazio dei
nomi: restituirà l’indirizzo IP richiesto e estituirà un «No» autorevole e definitivo. Un server DNS non
autorevole per lo spazio dei nomi: controlla la sua cache, utilizza i forwarders, utilizza i root hints: Questi
ultimi due utilizzeranno delle tecniche per recuperare l’informazione che non possiedono.
Le query ricorsive Le query iteative

La posta elettronica  l’indirizzo di posta elettronica. L’indirizzo di posta elettronica è composto da due
parti: il nome dell’utente, che identifica la singola casella di posta presente all’interno di un server, il nome
del dominio, che identifica «il server» ove è ospitata la singola casella di posta elettronica. Le due parti
sono divise dal simbolo @.
Nome dell’utente Nome del dominio
francesco.ciclosi@unimc.it
I protocolli  il servizio di posta elettronica si basa sull’utilizzo dei seguenti protocolli di rete: SMTP (Simple
Mail Transfer Protocol), è il protocollo standard per la trasmissione via Internet di e-mail; POP3 (Post
Office Protocol), è un protocollo standard per l’accesso autenticato a un account di posta elettronica su di
un server; IMAP (Internet Message Access Protocol) è un protocollo standard per l’accesso autenticato a
un account di posta elettronica su di un server.
La posta elettronica  quando è inviato, un messaggio attraversa una serie di server intermedi fino a
raggiungere il server di posta del destinatario ove viene memorizzato. Quando il destinatario si collega al
suo server di posta il messaggio viene scaricato sul computer. Per utilizzare la posta elettronica è necessario
un programma di gestione che può: essere installato localmente sul computer dell’utente; essere fruibile in
rete sotto forma di applicazione web.
Simple Mail Transfer Protocol (SMTP)  è il protocollo standard per la trasmissione via Internet di e-mail. È
un protocollo testuale, nel quale vengono specificati uno o più destinatari di un messaggio, verificata la cui
esistenza il messaggio viene trasferito. Il protocollo di livello trasporto utilizzato è il TCP. Il client apre una
sessione TCP verso il server sulla porta 25 oppure sulla 587, o anche sulla 465. Le nuove versioni di SMTP
supportano SSL. Il server SMTP è associato a un dato nome di dominio (DNS) grazie al Resource Record di
tipo MX (Mail eXchange). SMTP è un protocollo testuale basato sulla codifica ASCII. Non è permesso
trasmettere direttamente: testo composto con un diverso set di caratteri; file binari. Lo standard MIME
permette di estendere il formato dei messaggi mantenendo la compatibilità col software esistente.
Post Office Protocol (POP)  nella versione 3 è un protocollo di livello applicativo di tipo client-server che
ha il compito di permettere: l’accesso autenticato di un client a un account di posta elettronica presente su
di un server, lo scaricamento delle e-mail dello stesso account. Il protocollo di livello trasporto utilizzato è il
TCP. Il server POP (nella versione 3) rimane in attesa sulla porta 110 per una connessione TCP da parte di un
client. Non è prevista alcun tipo di cifratura, quindi anche le password utilizzate per l’autenticazione fra
server e client passano in chiaro. L’estensione APOP «risolve» il problema adottando la codifica crittografica
MD5. Se si utilizza una connessione sicura tramite SSL allora la porta è la TCP 995. Il protocollo consente la
lettura dei messaggi di posta elettronica previo scaricamento sul computer locale. È comunque possibile
lasciare sul server una copia dei messaggi scaricati in locale. Lavora in modo differente rispetto a IMAP che
salva i messaggi in una cache locale
Internet Message Access Protocol (IMAP)  è un protocollo di livello applicativo per la ricezione delle
email. L’attuale versione è la 4 (revisione 1). Viene ideato nel 1986 come alternativa più moderna al
diffusissimo POP. Consente la realizzazione dell’ubiquitous email, ovvero la possibilità di accedere ovunque
e da qualunque dispositivo alla propria casella email. Il protocollo di livello trasporto utilizzato è il TCP. Il
server IMAP(nella versione 4) rimane in attesa sulla porta 143 per una connessione TCP da parte di un
client. Se si utilizza una connessione sicura tramite SSL allora la porta è la TCP 993. Utilizza complesse
procedure di sincronizzazione dei messaggi. IMAP4 dispone delle seguenti esclusive funzionalità: accesso
alla posta sia online che off-line (il client IMAP rimane sempre connesso al server e risponde alle richieste
fatte dall'utente, ottimizzando i tempi in caso di messaggi di grandi dimensioni; il client IMAP non scarica i
messaggi ma li lascia sul server, salvo memorizzarli temporaneamente in una cache locale); più utenti
possono utilizzare la stessa casella di posta (IMAP4 permette connessioni simultanee alla stessa mailbox e
fornisce dei meccanismi di controllo dei cambiamenti apportati dai singoli utenti); supporto all’accesso a
singole parti MIME di un messaggio (permette di scaricare una singola parte MIME per avere un’anteprima
del messaggio o per scaricare una mail senza i file allegati), supporto per attributi dei messaggi tenuti dal
server attraverso l’uso di specifici attributi lato server, ogni client può tenere traccia di ogni messaggio (per
esempio per sapere se è già stato letto o se ha avuto una risposta); accesso a molteplici caselle di posta sul
server (alcuni utenti, possono creare, modificare o cancellare mailbox); possibilità di fare ricerche sul
server (è possibile effettuare delle ricerche nei messaggi senza bisogno di scaricarli); supporto di un
meccanismo per la definizione di estensioni (un server può comunicare agli utenti se supporta delle
funzionalità extra ovvero le estensioni del protocollo).
File ASCII e file binari  i file si dividono in due grandi categorie: file ASCII (file di testo) che sono privi di
formattazione, contengono un numero limitato di caratteri e contengono solo testo o file binari che
possono contenere qualsiasi tipo di dati - codificato in codice binario - che sono file che non contengono
solo semplice testo e che solitamente la formattazione utilizzata è molto complessa.

La codifica di un file allegato  per inviare senza problemi in Internet un file binario allegato a un
messaggio di posta elettronica è necessario codificarlo preventivamente. La codifica converte un file binario
in un file ASCII. La decodifica effettua l’operazione inversa convertendo un file ASCII in binario. Esistono più
metodi di codifica. I metodi di codifica più diffusi sono: codifica UU (Unix-to-Unix), protocollo MIME (Multi
purpose Internet Mail Extension), utilizza la codifica denominata «Base64».
File Transfer Protocol (FTP)  è un protocollo per la trasmissione dei dati tra host che si basa sul livello di
trasporto TCP e che utilizza un’architettura di tipo client-server. Il protocollo usa connessioni TCP distinte
per: trasferire i dati, controllare i trasferimenti. Richiede l’autenticazione del client tramite nome utente e
password, anche se il server può essere configurato per accettare le connessioni anonime. FTP trasmette in
chiaro ogni comunicazione (incluse le credenziali di autenticazione) e non dispone di meccanismi di
autenticazione del server presso il client. FTPS è una variante di FTP finalizzata a rendere più sicuro il
protocollo mediante l’adozione di un sottostrato SSL/TLS. SFTP fa riferimento a un altro protocollo di
trasferimento file: SSH File Transfer Protocol. Il funzionamento di FTP  utilizza due connessioni separate
per gestire comandi e dati. Un server FTP rimane in ascolto sulla porta TCP numero 21 a cui si connette il
client. La connessione da parte del client determina l’inizializzazione del canale comandi attraverso il quale
client e server si scambiano comandi e risposte.
Lo scambio effettivo di dati richiede l’apertura del canale dati, che può essere di due tipi: canale dati di tipo
attivo, canale dati di tipo passivo (preferibile). Il canale comandi è persistente (rimane aperto per l’intera
sessione) mentre il canale dati è non persistente(si crea e si chiude un nuovo canale dati per ogni singolo
file trasferito nella sessione utente). FTP «passive mode»  in questo caso il socket IP di tipo listening è
creato dal server. Il client dovrà semplicemente connettervisi per stabilire la connessione del canale dati.
Non ci sono problemi a livello di configurazione del firewall, poiché si tratta di abilitare del traffico in uscita.
Web  è composto da una serie di pagine di ipertesto depositate su differenti nodi (computer) collegati tra
di loro tramite (la rete di reti) Internet. Si tratta di un insieme di pagine: collegate tra di loro (linked)
indipendente dalla loro collocazione fisica, accessibili da qualsiasi nodo (computer) della rete. URL  ogni
singola pagina nel web è raggiungibile semplicemente specificandone il proprio nome simbolico, ovvero
l’URL (Uniform Resource Locator). Per poter funzionare correttamente il web richiede la compresenza di
varie componenti: gli attori coinvolti, le tecnologie adottate, un paradigma funzionale per lo scambio delle
informazioni. Attori coinvolti  Client (browser); Web server; DBMS (i database); Internet (è la rete su cui
viaggiano i dati). Le tecnologie in uso  i protocolli di comunicazione HTTP e HTTPS; il concetto di
ipertesto; i linguaggi HTML, XML; i linguaggi di scripting. Il paradigma funzionale  il web utilizza un
paradigma di tipo client-server per garantire lo scambio delle informazioni. client è il programma
applicativo che richiede l’accesso alla risorsa; server è il programma applicativo che fornisce la risorsa
richiesta; rete è il canale di comunicazione tra client e server. Funzionamento del web  l’utente fa click su
un URL all’interno del browser in uso e questi invia al server web di competenza una richiesta per la pagina
indicata dall’URL; il server individua la pagina richiesta e risponde con un messaggio contenente la
tipologia della risorsa e i contenuti della pagina; il browser utilizza le informazioni sul tipo della risorsa per
visualizzarne i contenuti all’utente.

Struttura di un URL  ogni pagina web viene identificata con: il nome FQDN dello hostche la ospita, il nome
del file all’interno dello host, il percorso per raggiungere il file, il protocollo utilizzato per il trasferimento.

Tipologia del contenuto di un sito web  il contenuto di un sito web può essere di due tipi: statico (è
sempre lo stesso e non cambia con la richiesta ricevuta; è lo stesso per tutti gli utenti che lo vedono -
esempio: pagine HTML, documenti di testo); dinamico (è generato dal server nel momento in cui è
richiesto, può variare per ogni utente - esempio: pagine ASP, PHP, ASP.NET).
Web application e web services  Web application  consente la realizzazione di sistemi informatici
distribuiti in rete; l’elaborazione dei dati avviene su uno o più server di rete; l’accesso avviene dai client con
moduli di interfaccia utente basati sui comuni browser web. Web services  sono applicazioni che possono
scambiare dati e processi con altre applicazioni; sono basati sulle tecnologie standard; sono accessibili
tramite protocolli web.
Il contenuto in streaming  è consegnato alla velocità richiesta per la riproduzione. Lo streaming evita i
picchi di utilizzo ed è più efficiente delle usuali tecniche di consegna. Questa tipologia di contenuti sono
solitamente consegnati utilizzando UDP (e non TCP). Esempi: stazioni radio online, visione di video online.

ActiveX e (applet) Java  sono dei piccoli componenti software incorporati nelle pagine web o in altre
applicazioni. In ActiveX di Microsoft si chiamano controlli, in Java della Sunsi chiamano applet. Risiedono in
un server e tramite browser possono essere scaricati ed eseguiti dagli elaboratori connessi. Al termine
dell’operazione, il controllo è chiuso e rimosso dall’elaboratore locale.
HyperTexttransfer protocol (HTTP)  definisce le regole che governano il trasferimento delle pagine web
dal sistema (server) che le ospita al sistema (client) che le richiede. È un protocollo di livello applicativo che
utilizza il protocollo di trasporto TCP. È orientato agli oggetti, generico e stateless. Stateless: il server non
mantiene nessuna informazione in merito alle richieste transitate. La pagina Web  è composta da una
serie di oggetti, più precisamente: consiste in un file HTML di base che include degli oggetti riferibili
tramite URL. A titolo esemplificativo tali oggetti possono essere: file HTML, immagini JPEG, file video MP4,
file audio MP3, applet JAVA. È un programma eseguito dal sistema client e in grado di: richiedere pagine
HTML (tramite http), formattare tali pagine come indicato dal codice HTML. Il funzionamento di HTTP  il
client stabilisce una connessione TCP con il server sulla porta 80 (quella predefinita); il server accetta tale
connessione da parte del client; il server HTTP (web server) e il client HTTP (browser) si scambiano una
serie di messaggi HTTP; la connessione TCP viene chiusa. Le connessioni HTTP  possono essere di due tipi:
persistenti (è possibile spedire più oggetti utilizzando la stessa connessione TCP creata tra client e server);
non persistenti (si spedisce al più un oggetto utilizzando la stessa connessione. In questo caso per ogni
richiesta/risposta va creata una nuova connessione. In genere il trasferimento di una pagina web complessa
richiede l’apertura di molte connessioni). Il funzionamento di HTTP Secure  funziona come il protocollo
HTTP, ma provvede alla trasmissione dei messaggi di richiesta e di risposta utilizzando SSL (Secure Socke
tLayer) o TLS (Transpor tLayer Security). Viene automaticamente utilizzato per ogni URL che inizia con
https. La richiesta e la risposta sono trasmessi tra server e client utilizzando meccanismi crittografici. Alcune
caratteristiche di HTTPS  il client HTTP (browser) identifica il server HTTP (web server) con il quale sta
comunicando mediante un certificato. Supporta differenti algoritmi crittografici per la cifratura. Realizza la
cosiddetta «cifratura di canale», non realizza la cifratura end-to-end.

IB18
Algoritmo  è l’insieme dei passi che specificano come eseguire un dato compito. Gli algoritmi non
riguardano solo attività tecniche, ma sono alla base di qualsiasi attività comune (a titolo esemplificativo:
alcuni ricercatori ipotizzano che qualsiasi attività della mente umana sia in realtà il risultato dell’esecuzione
di algoritmi. Gli studi sulla IA si occupano anche di ciò). «Un algoritmo è un insieme ordinato di
passieseguibilie non ambigui che giunge certamente a destinazione».

Primo requisito: insieme ordinato di passi  deve esistere una struttura ben definita dell’ordine di
esecuzione dei passi di un algoritmo. Non è richiesto che la sequenza di esecuzione dei passi sia lineare.
Esempio 1: Algoritmi paralleli composti da più sequenze di passi affidate, per l’esecuzione, a differenti
processori. Esempio 2: Circuiti flip-flop che eseguono, in ogni porta logica, singoli passi dell’algoritmo,
secondo una relazione di causa ed effetto. Secondo requisito: passi eseguibili  deve consistere di passi
effettivamente eseguibili (ovvero, di passi effettivi). Esempio: «Si elenchino tutti i numeri interi positivi».
Non è un algoritmo; l’esecuzione di tale istruzione non è possibile perché i numeri interi positivi sono
infiniti. Terzo requisito: non ambigui  l’esecuzione di ogni passo dell’algoritmo richiede la mera
esecuzione delle istruzioni ivi contenute (non servono capacità creative). «Durante l’esecuzione di un
algoritmo le informazioni presenti nello stato del processo devono essere sufficienti a stabilire
univocamente e completare le azioni da svolgere». Quarto requisito: giungere certamente a terminazione
 l’algoritmo deve avere termine. Il processo da questi disegnato deve concludersi restituendo un risultato
e non ripetersi all’infinito.
Un utilizzo improprio del termine algoritmo  talvolta si utilizza il termine algoritmo in modo improprio
per riferirsi a sequenze di passi che potrebbero non giungere a terminazione (esempio 1: algoritmo della
divisione, in alcuni casi (come 1/3) non termina; esempio 2: monitoraggio dei segni vitali di un paziente
ospedalizzato la sequenza dei passi è ripetuta indefinitamente.
Gli algoritmi e la loro rappresentazione  esiste una differenza tra l’algoritmo e la sua rappresentazione.
L’algoritmo è l’entità astratta o concettuale, la rappresentazione dell’algoritmo è la rappresentazione
fisica. Un algoritmo è astratto e distinto dalla sua rappresentazione. Esempio: la storia è un entità astratta
che esiste in natura, il libro è la rappresentazione fisica della storia.
Il problema dell’ambiguità  la distinzione tra algoritmo e rappresentazione dell’algoritmo può
determinare ambiguità nella comunicazione dell’algoritmo a terzi. Con quale livello di dettaglio l’algoritmo
sarà descritto? Esempio: «converti il numero decimale dato, nel suo equivalente in esadecimale». Per alcuni
(gli specialisti) quest’istruzione sarà chiara, per altri (i profani) risulterà ambigua e poco dettagliata.
L’ambiguità è nella rappresentazione dell’algoritmo e non nell’algoritmo stesso.
Differenze tra programma e processo  programma è la rappresentazione di un algoritmo, processo è
l’attività di esecuzione dell’algoritmo. Programma è una rappresentazione formale di un algoritmo che è
stata progettata per essere eseguita da un computer, processo è l’attività di esecuzione di un programma,
ovvero dell’algoritmo rappresentato dal programma, ovvero dell’algoritmo. Programma, processo,
algoritmo: sono dei concetti distinti ma legati tra di loro.
Pseudocodice  lo pseudocodice è una notazione utilizzabile per esprimere informalmente le idee durante
il processo di sviluppo di un algoritmo. Si realizza rilassando le regole (struttura semantico-sintattica) del
linguaggio formale di programmazione con cui l’algoritmo sarà espresso.
Struttura if/if else Struttura while

Funzioni  è possibile esprimere delle porzioni di codice di un programma all’interno di funzioni(o


sottoprogramma, subroutine, procedura o metodo). Una porzione descrive delle attività che sono
utilizzabili come strumenti astratti da altre applicazioni. Esempio di funzione:

Individuazione degli algoritmi  lo sviluppo di un programma consiste in due macro attività: individuare
l’algoritmo necessario per risolvere il problema; rappresentarel’algoritmosotto forma di programma.
Individuare un algoritmo per risolvere un problema non è semplice (equivale a identificare un metodo
risolutivo). La risoluzione dei problemi  non è possibile ridurre il processo di risoluzione dei problemi a
un algoritmo. È stato dimostrato che alcuni problemi non hanno soluzioni algoritmiche. La capacità di
risoluzione dei problemi è: più una competenza artistica da sviluppare e meno una scienza precisa da
apprendere.
La tecnica risolutoria  il matematico G. Polya ha evidenziato la natura artistica della risoluzione dei
problemi con le sue tecniche. Nell’ambito dello sviluppo dei programmi queste hanno 4 fasi: capire il
problema; farsi un’idea di come una funzione algoritmica potrebbe risolvere il problema; formulare
l’algoritmo e rappresentarlo come un programma; valutare l’accuratezza del programma e la possibilità
che diventi uno strumento per risolvere altri problemi. Le fasi non vanno necessariamente eseguite in
sequenza. È difficile possedere una conoscenza completa del problema, prima di avere trovato una
soluzione che fughi ogni incertezza.
Un problema di esempio ed analisi delle possibilità del problema

Differenti approcci risolutivi  nel tentativo di individuare la soluzione di un problema è possibile utilizzare
differenti approcci, come: provare ad affrontare il problema al contrario; identificare un problema simile
già risolto o più semplice da risolvere, quindi provare ad applicare la soluzione al problema corrente
(difficoltà nell’individuazione di un algoritmo generico utilizzabile per risolvere ogni istanza del problema);
applicare il raffinamento a più passi. Il raffinamento a più passi  prevede la scomposizione di un
problema complesso in più sottoproblemi. Si procede operando progressivamente su sottoproblemi via via
più semplici da risolvere. La soluzione finale viene ridotta alla risoluzione di sottoproblemi.

Metodologie fondamentali  top-down, si procede dal generale allo specifico (esempio: scomposizione di
un problema mediante la metodologia di raffinamento per passi). Bottom-up, si procede dallo specifico al
generale (esempio: costruzione di un grande sistema software combinando componenti precostituiti). In
sintesi  «La scoperta di nuovi algoritmi resta un’arte, più che una scienza. […] Istruire un potenziale
risolutore di problemi ad applicare alla lettera certi approcci vuol dire annullare proprio le competenze
tecniche creative che dovrebbero invece essere educate».
Le strutture iterative  sono strutture di controllo in cui una serie di istruzioni viene ripetuta in modo
ciclico. Alcuni esempi: ricerca sequenziale, ordinamento per inserimento.
L’algoritmo di ricerca sequenziale  si occupa di verificare se è presente un valore in un elenco (lista). La
ricerca ha successo se il valore si trova nella lista; altrimenti fallisce. Si ipotizza che l’elenco sia ordinato
secondo una certa regola di organizzazione delle voci. Ricerca sequenziale: come funziona  si esamina la
lista dall’inizio confrontando ogni voce con quella d’interesse. La ricerca termina con successo se il nome
viene trovato. Le condizioni di fallimento sono le seguenti: se si arriva alla fine dell’elenco senza trovare la
voce, la ricerca fallisce; poiché l’elenco è ordinato, se si raggiunge una voce successiva a quella d’interesse
senza averla trovata, allora di sicuro non la si troverà più → la ricerca fallisce.
I cicli  un ciclo è una struttura iterativa utilizzata per ripetere un’istruzione o una sequenza di istruzioni.
La serie di istruzioni viene detta corpo del ciclo. Il corpo del ciclo viene eseguito in modo ripetitivo secondo
quanto specificato da una condizione logica di controllo.
Esempio di struttura ciclica: l’esecuzione della struttura segue il pattern ciclico, fino a quando la condizione
logica di controllo non è più vera. N.B.: La condizione di controllo di un ciclo è la parte più esposta agli errori

Le attività di un ciclo  l’esecuzione di un ciclo prevede 3 attività: inizializzazione, che stabilisce uno stato
iniziale, poi modificato nella condizione di terminazione; test, confronta lo stato corrente con la condizione
di terminazione, e il ciclo termina se questi sono uguali; modifica, modifica lo stato corrente in modo da
spostarlo verso la condizione di terminazione. La fase di inizio fissa una situazione iniziale, e concorre ad
assicurare che alla fine la condizione di terminazione si verifichi; la fase di modifica cambia lo stato
corrente finché la condizione di terminazione non diventa vera; inoltre concorre ad assicurare che alla fine
si verifichi la condizione di terminazione; l’attività di test deve determinare la terminazione del ciclo,
allorquando la condizione di controllo (condizione di terminazione del ciclo) indica che è necessario farlo.
La condizione di terminazione  un ciclo deve essere progettato in modo che le fasi d’inizializzazione e di
modifica portino alla condizione di terminazione appropriata.

Struttura del ciclo while  il controllo della condizione di terminazione avviene prima dell’esecuzione del
corpo del ciclo. Se la condizione di terminazione è già soddisfatta la prima volta che viene esaminata, allora
il ciclo non è mai eseguito.
Struttura del ciclo repeat  il corpo del ciclo viene eseguito prima di effettuare il controllo della condizione
di terminazione. Il corpo del ciclo è sempre eseguito almeno una volta.
Riassumendo  Ciclo con pre-test (struttura while)  in cui il controllo della condizione di terminazione
viene eseguito prima dell’esecuzione del corpo del ciclo. Ciclo con post-test (struttura repeat)  n cui il
controllo della condizione di terminazione è effettuato dopo l’esecuzione del corpo del ciclo.

IB19
I linguaggi di prima generazione  sono i cosiddetti linguaggi macchina, ovvero dei sistemi di codifica in
cifre numeriche. I programmi così scritti sono composti da sequenze di istruzioni codificate sotto forma di
cifre numeriche. La scrittura di siffatti programmi risulta laboriosa e facilmente soggetta a errori (bug).
Oltre i linguaggi di prima generazione  negli anni ‘40 i ricercatori hanno semplificato il processo di
programmazione, sviluppando nuovi sistemi notazionali in cui: le istruzioni possono essere sviluppate in
forma mnemonica, anziché numerica; le locazioni di memoria possono essere referenziate con nomi
descrittivi (variabili del programma o identificatori). Tale forma mnemonica rappresenta, in modo più
intellegibile di quella della forma numerica, il significato della routine. Esempio  per leggere il contenuto
da due celle di memoria, addizionarlo e restituire la somma finale è esprimibile:
Gli assembler  sono programmi sviluppati per tradurre i programmi scritti in forma mnemonica, nella
forma numerica compatibile con la macchina. Consentono ai programmatori di scrivere un programma in
forma mnemonica (più semplice), e solo successivamente di convertirlo in linguaggio macchina per mezzo
di un assembler (assemblatore)
I linguaggi di seconda generazione  sono i sistemi di codici mnemonici per rappresentare i programmi
(linguaggi assembly). Assumono questo titolo a causa del loro rivoluzionario approccio alla
programmazione
Debolezze dei linguaggi assembly  le primitive dei linguaggi assembly erano essenzialmente le stesse dei
linguaggi macchina corrispondenti. La differenza risiedeva solo nella sintassi utilizzata nella loro
rappresentazione. Un programma scritto in un linguaggio assembly dipende intrinsecamente dalla
macchina (le istruzioni sono espresse in termini di attributi di un particolare computer); un programma
assembly non è facilmente trasportabile da un computer all’altro (va riscritto per adeguarsi alla
conformazione dei registri e al set di istruzioni in uso nel nuovo computer); inducono i programmatori a
ragionare secondoi piccoli passi incrementali del linguaggio macchina.
I linguaggi di terza generazione  utilizzano primitive di livello più alto e indipendenti dalla macchina. Di
livello più alto, perché esprimono istruzioni in incrementi più grandi; indipendenti dalla macchina, perché
non si basano sulle caratteristiche di una macchina specifica. L’approccio dei linguaggi di 3°generazione 
individuare un insieme di primitive di alto livello a supporto dello sviluppo del software. Ogni primitiva è
progettata per poter essere implementata con una sequenza di primitive di basso livello (che sono
disponibili nei linguaggi macchina). Assegna a Somma il valore Primo_Numero+ Secondo_Numero. Esprime
un esempio di attività di alto livello senza fare riferimento alle modalità con cui un computer dovrebbe
eseguirla.
I traduttori  un programma traduttore ha il compito di tradurre in linguaggio macchina dei programmi
scritti utilizzando le primitive di alto livello disponibili nel repertorio di riferimento. Vengono anche chiamati
compilatori perché, per simulare l’attività che è richiesta da una singola primitiva di alto livello, si occupano
di compilare alcune istruzioni macchina in brevi sequenze.
Gli interpreti  a differenza dei traduttori, gli interpreti: eseguonole istruzioni non appena vengono
tradotte; non memorizzano la versione tradotta per un uso successivo. Un interprete esegue
effettivamente un programma, partendo dalla sua forma di alto livello. Un interprete non produce una
copia in linguaggio macchina di un programma.
Considerazioni sulla 3°generazione  con lo sviluppo dei linguaggi di terza generazione viene raggiunto
l’obiettivo dell’indipendenza dalla macchina. Le istruzioni sono indipendenti dalla macchina fisica e
compilabili su qualsiasi sistema. Teoricamente un programma scritto in un linguaggio di terza generazione
è utilizzabile su qualsiasi computer, semplicemente applicando il compilatore più appropriato. In realtà, la
portabilità richiede quasi sempre qualche modifica.
I paradigmi di programmazione  esistono differenti approcci al processo di programmazione (paradigmi
di programmazione). Imperativo, dichiarativo, funzionale, orientato agli oggetti. Il paradigma imperativo (o
procedurale)  è l’approccio tradizionale al processo di programmazione. Concepisce la programmazione
come una sequenza di comandi, che a seguito della loro esecuzione da parte della macchina, elaborano i
dati per determinare il risultato desiderato. Il programmatore dovrà: trovare un algoritmo risolutore di un
dato problema; esprimere tale algoritmo come sequenza di comandi. Il paradigma dichiarativo  si occupa
di descrivere un problema. Tale sistema di programmazione applica un algoritmo prestabilito per la
risoluzione di problemi, che è di uso generale. Scoprire l’algoritmo generale per risolvere una vasta classe di
problemi non è banale. Il programmatore dovrà: sviluppare una dichiarazione precisa del problema. Il
paradigma funzionale  concepisce il programma come un’entità che accetta input e produce output. Tali
entità prendono il nome di funzioni. Prevede la costruzione del programma mediante connessione di unità
di programma predefinite più piccole (funzioni predefinite) affinché si ottenga la relazione input-output
desiderata, in cui l’output di ogni unità è usato come input dell’unità successiva. Il processo di
programmazione consiste nella costruzione di funzioni che sono dei complessi nidificati di funzioni più
semplici. Un programma funzionale è costituito da un’unica istruzione in cui senza bisogno di
immagazzinare dei dati in variabili, il risultato di ogni elaborazione è passato immediatamente a quella
successiva. Il paradigma orientato agli oggetti  considera un sistema software come una collezione di
unità (gli oggetti) che possono: eseguire azioni di immediato interesse per sé; inviare richieste di azione
agli altri oggetti. Gli oggetti collaborano interagendo per svolgere le elaborazioni richieste.
Esemplificazione di approccio OOP  esempio: l’interfaccia grafica utente. Le iconedello schermo sono
implementate come oggetti, ogni oggetto comprende delle funzioni(i metodi) che descrivono il modo in cui
l’oggetto risponde ai diversi eventi. (esempio: relazione con il clic del mouse e trascinamento sullo
schermo). La forma del sistema completo assume la forma di un insieme di oggetti in grado di rispondere a
determinati eventi
Caratteristiche degli oggetti  un oggetto può essere composto di dati associati a una collezione, e di
metodi per l’esecuzione di attività (esempio: lista di nomi e inserimento di nuovi nomi nella lista). Si tratta
di caratteristiche descritte da istruzioni nel programma scritto. La descrizione delle proprietà dell’oggetto è
denominata classe.
La classe  gli oggetti sono «costruiti» applicando la classe che possiede le caratteristiche richieste. Un
oggetto basato su una determinata classe si definisce istanza della classe. Gli oggetti sono entità distinte,
ma con le stesse caratteristiche della classe a partire dalla quale sono stati costruiti (la classe è il modello di
partenza).
Considerazioni finali su OOP  il paradigma orientato agli oggetti fornisce un ambiente utile allo sviluppo
del software, che si basa sull’utilizzo di componenti riutilizzabili. Esistono librerie di classi predefinite che
fungono da base per i nuovi sistemi software. Le funzioni all’interno di un oggetto, sono di fatto delle
piccole unità di programma imperative.

IB20
Le funzioni  «Una funzione è la corrispondenza tra un insieme di possibili valori di input e un insieme di
valori di output, tale che a ciascun possibile valore di input viene assegnato un valore di output unico»
(senso matematico).

Calcolo delle funzioni  il calcolo della funzione è il processo di determinazione del valore di output che la
funzione assegna ad un dato input. Grazie alla capacità di calcolo delle funzioni si è in grado di risolvere i
problemi. Compito fondamentale dell’informatica è trovare le tecniche alla base dei problemi da risolvere
La computazione  esistono funzioni così complesse per le quali non esiste un processo ben definito
(passo per passo) che consenta di determinare i risultati in base ai valori di input. Esistono delle funzioni il
cui calcolo va al di là di ogni sistema algoritmico. Funzioni computabili e non computabili  le funzioni
computabili sono quelle in cui è possibile determinare algoritmicamente i valori di output a partire dai
valori di input. Le funzioni non computabili sono quelle in cui non è possibile determinare
algoritmicamente i valori di output a partire dai valori di input. Funzioni computabili  le macchine
possono eseguire solo quei compiti che sono descritti dagli algoritmi. Lo studio delle funzioni computabili
equivale allo studio dei limiti della capacità delle macchine. Identificare quali problemi richiedono il calcolo
di una funzione non computabile per la loro risoluzione equivale a identificare quali sono i limiti della
capacità delle macchine nella risoluzione dei problemi.
La macchina di Turing (MdT)  è un dispositivo di calcolo progettato per cercare di comprendere le
capacità e i limiti delle macchine. È stata presentata dal matematico inglese Alan M. Turing nel 1936. È
ancora utilizzata per l’analisi della potenza dei processi algoritmici. Alan Mathison Turing  è un logico e
matematico inglese. Nato a Londra nel 1912, morto nel 1954 per avvelenamento da cianuro di potassio. È
uno dei padri fondatori dell’informatica moderna. Nel 1936 pubblicò un saggio rivoluzionario sul
funzionamento di una macchina teorica. La ricerca di Touring  Touring voleva: formalizzarela nozione di
algoritmo, individuare i limiti nell’applicazione dei metodi algoritmici per la soluzione di problemi logici
matematici. Turing progetta una macchina teorica in grado di simulare il comportamento di un uomo
intento a eseguire un calcolo aritmetico (macchina di Touring). Definizione di MdT  «Una macchina di
Turing(o più brevemente MdT) è una macchina ideale che manipola i dati contenuti su un nastro di
lunghezza potenzialmente infinita, secondo un insieme prefissato di regole ben definite». «È un modello
astratto che definisce una macchina in grado di eseguire algoritmi e dotata di un nastro potenzialmente
infinito su cui può leggere e/o scrivere dei simboli». La MdT in breve  la Macchina di Turing è composta
da: un’unità di controllo; un nastro; una testina di lettura/scrittura. L’unità di controllo determina quale
simbolo sarà letto o scritto dalla testina sul nastro; il nastro si estende indefinitamente a ogni estremità ed
è diviso in celle in grado di ospitare un solo simbolo; il simbolo appartiene a un insieme finito di simboli
(alfabeto). La Macchina deve trovarsi in ogni istante in uno stato appartenente a un insieme finito di stati. Il
calcolo inizia nello stato iniziale e termina quando la Macchina giunge allo stato finale. Il calcolo della MdT
 costituito da una sequenza di passi eseguiti dall’unità di controllo. La Macchina di Touring (in dettaglio)
 costituita da: un nastro di lunghezza potenzialmente infinita, suddiviso in sezioni o celle; un’unità di
lettura e scrittura; una memoria interna, che può assumere un insieme finito di stati; un insieme di simboli
distinti (alfabeto della macchina).

Algoritmi e MdT  «Implementare un algoritmo in questo contesto significa effettuare una delle quattro
operazioni elementari: spostarsi di una casella a destra, spostarsi di una casella a sinistra, scrivere un
simbolo preso da un insieme di simboli a sua disposizione su una casella, cancellare un simbolo già scritto
sulla casella che sta osservando, oppure fermarsi». Cosa può fare la macchina di Touring  far scorrere il
nastro avanti e indietro; leggere, scrivere o cancellare i simboli (uno alla volta) nelle celle del nastro. La
macchina funziona eseguendo una successione di passi discreti, determinato da un insieme finito di
regole. Le regole della MdT  una regola indica alla MdTcome comportarsi in corrispondenza di condizioni
in ingresso. In sintesi
MdT e programmazione  con le regole opportune una MdT può eseguire calcoli di qualsiasi natura e
complessità. Si può costruire una MdT universale in grado di imitare qualsiasi MdT. Codificando regole di
trasmissione e dati di una MdT con l’alfabeto della MdT universale  programma. Calcolabilità  una MdT
può risolvere qualsiasi problema purché questo: possa essere risolto in modo algoritmico e sia espresso in
forma simbolica. Differenti approcci al problema della calcolabilità forniscono tutti dei risultati equivalenti
a quelli ottenibili tramite una MdT. Calcolabilità  una MdTpuò risolvere qualsiasi problema purché
questo: possa essere risolto in modo algoritmico; sia espresso in forma simbolica. Differenti approcci al
problema della calcolabilità forniscono tutt idei risultati equivalenti a quelli ottenibili tramite una MdT.
Tesi di Churc-Turing  l’insieme dei problemi effettivamente risolvibili con qualsivoglia metodo meccanico
coincide con quello dei problemi risolvibili dalla Macchina di Turing. Un problema non T-Calcolabile non è
Calcolabile.
La macchina a registri a programma memorizzato  viene elaborata nel 1945 dal matematico John Von
Neumann. Non è un modello concettuale come quello di Touring. È usata nella progettazione dell’EDVAC, il
primo computer digitale della storia. Componenti della macchina a registri  un’unità di elaborazione
centrale (CPU); una memoria divisa in celle dotate di indirizzi (registri); un nastro, diviso in celle, di
ingresso (input); un nastro, diviso in celle, di uscita (output).

Composizione della CPU  un’unità logico-aritmetica (ALU) che si occupa dell’esecuzione delle istruzioni
primitive; un accumulatore (un registro) per memorizzare i dati durante le operazioni di calcolo; un’unità di
controllo che governa l’esecuzione sequenziale delle operazioni e coordina le componenti della macchina;
un contatore delle istruzioni che segnala la successiva istruzione da eseguire.
L’architettura base di un computer  la struttura della macchina di Von Neumann corrisponde alla
struttura fisica di un computer.
Macchina di V.N.e operazioni logiche  dati e istruzioni primitive sono codificati con i simboli della
notazione binaria (linguaggio macchina). Le operazioni binarie sui numeri equivalgono alle operazioni
logiche del calcolo proposizionale (algebra di Boole). Le operazioni possono essere semplicemente
implementate a livello fisico attraverso i transistor (circuiti elettrici bistabili)

IB21
Modelli di database  esistono vari tipi di modelli per le basi di dati, tra i quali i più noti sono: gerarchico,
reticolare, relazionale.
Modello gerarchico - è adatto a rappresentare situazioni dove è possibile fornire all’insieme dei dati una
struttura con entità che stanno in alto ed entità che stanno in basso, secondo uno schema ad albero. In
esso i nodi rappresentano le entità e gli archi rappresentano le associazioni. Presenta dei limiti: la rigidità
della struttura di dati creata, la possibile ridondanza dei dati.

Modello reticolare  le entità rappresentano i nodi e le associazioni rappresentano gli archi di uno schema
a grafo orientato. È un’estensione del modello gerarchico. Consente anche associazioni tra entità che
stanno in basso, e non solo dall’alto verso il basso. Si differenzia dal modello gerarchico perché un record
figlio può avere un numero qualsiasi di padri. Ciò consente di evitate situazioni di ripetizione di dati uguali

Modello relazionale  si basa sui concetti di relazione e di tabella. Risponde al requisito di indipendenza
dei dati distinguendo tra: livello fisico (come i dati sono fisicamente memorizzati nel calcolatore); livello
logico (relativo all’organizzazione dei dati e al modo in cui vi si accede). Gli utenti e i programmatori fanno
riferimento al solo livello logico. Le strutture fisiche di memorizzazione dei dati sono di esclusiva pertinenza
del DBMS, che si occupa anche dell’esposizione del livello logico.
Modello relazionale: considerazioni  nasce nel 1970 e si basa su alcuni concetti fondamentali,
tipicamente matematici. Rappresenta il database come un insieme di tabelle. Si adatta in modo naturale
alla classificazione e alla strutturazione dei dati. Assegna grande importanza all’uso rigoroso del linguaggio
matematico, con due obiettivi importanti: utilizzare un linguaggio conosciuto a livello universale (quello
matematico), eliminare i problemi di ambiguità nella terminologia e nella simbologia. Modello relazionale
definizione  Dati n insiemi A1, A2, A3, …, An, si dice relazione un sottoinsieme dell’insieme di tutte le n-
uple a1, a2, a3, …, an che si possono costruire prendendo nell’ordine un elemento a1 dal primo insieme A1,
un elemento a2 dal secondo insieme A2, e così via. Il numero n si chiama grado della relazione; gli insiemi
Ai si chiamano domini della relazione; il numero delle n-uple(indicate anche con il termine tuple) si chiama
cardinalità della relazione. La relazione viene rappresentata mediante una tabella, con tante colonne
quante sono i domini (grado della relazione); tante righe quante sono le n-uple (cardinalità della relazione).
La relazione rappresenta un’entità: ogni n-upla rappresenta un’istanza dell’entità, le colonne
rappresentano gli attributi dell’entità, il dominio è l’insieme dei valori che possono essere assunti da un
attributo. La chiave della relazione è un attributo o una combinazione di attributi che identificano
univocamente le n-uple all’interno della relazione, ovvero ogni riga della tabella possiede valori diversi per
l’attributo (o gli attributi) chiave.

Le operazioni relazionali  selezione (select)  genera una nuova relazione costituita solo dalle n-
upledella relazione di partenza che soddisfano una determinata condizione. Le righe con i valori degli
attributi corrispondenti alla condizione prefissata. La relazione ottenuta possiede tutte le colonne della
relazione di partenza, (stesso grado) ma ne ha cardinalità minore o uguale.

Le operazioni relazionali  proiezione (project)  genera una nuova relazione estraendo dalla tabella
iniziale due o più colonne corrispondenti agli attributi prefissati. La relazione risultante ha: grado minore o
uguale al grado della relazione di partenza; cardinalità di norma uguale a quella di partenza. A livello
insiemistico saranno scartate eventuali n-uple identiche.
Le operazioni relazionali  congiunzione (join)  combina due relazioni aventi uno o più attributi in
comune, generando una nuova relazione che contiene le righe della prima e della seconda tabella. Questo
tipo di congiunzione viene detta join naturale (natural join).

Tipi di join  Equi-join: la relazione viene realizzata facendo corrispondere valori uguali per attributi
comuni nelle due tabelle. Left join: elenca comunque tutte le righe della prima tabella congiungendo tra le
righe della seconda solo quelle per le quali si trovano valori corrispondenti per l’attributo comune. Right
join: elenca comunque tutte le righe della seconda tabella congiungendo tra le righe della prima solo quelle
per le quali si trovano valori corrispondenti per l’attributo comune. Self Join: combina le righe di una tabella
con le righe della stessa tabella quando sono presenti valori corrispondenti per attributi, cioè due attributi
con lo stesso dominio.

Le operazioni relazionali  L’unione (1): in casi particolari consente di ottenere una nuova tabella, che
contiene le righe della prima e della seconda tabella con riduzione a una di quelle ripetute. L’intersezione
(2)  in casi particolari genera, a partire da due tabelle omogenee, una nuova tabella che contiene soltanto
le righe comuni. La differenza (3)  in casi particolari genera una nuova tabella che contiene soltanto le
righe della prima tabella che non sono contenute nella seconda tabella.

1 2 3
Ciclo di vita dei database  è composto dalle seguenti fasi sequenziali: progettazione (si definiscono
l’organizzazione dei dati, le applicazioni che utilizzeranno il dbe l’architettura del sistema); creazione del
database (si creano le tabelle che costituiranno il db); introduzione dei dati (si popolano le tabelle);
manutenzione dei dati (si ricercano nel db difetti tipici, quali record vuoti, duplicati, ecc…); ricerca delle
informazioni (si ricercano informazioni mediante query SQL). Structured Query Language (SQL)  è un
linguaggio di programmazione per database relazionali. Consente di operare sui dati mediante:
interrogazione; modifica; cancellazione. Utilizza le query: strumenti di programmazione. Consente di
amministrare il sistema di database. SQL: uno e trino  il linguaggio SQL è diviso in tre sezioni: Data
Definition Language (raggruppa le operazioni attraverso le quali è possibile creare, modificare e cancellare i
database), Data Manipulation Language (raggruppa le operazioni attraverso le quali è possibile inserire,
leggere e cancellare i dati); Data Control Language (raggruppa le operazioni attraverso le quali è possibile
amministrare gli utenti e i permessi). Gli operatori SQL  il linguaggio SQL utilizza una serie di operatori:
operatori di confronto (come ad esempio l’operatore EXISTS); operatori aritmetici; operatori condizionali
(quale l’operatore WHERE); operatori logici. Esempi:

IB22
Licenza di utilizzo del software  è il contratto che può accompagnare un prodotto software ed è imposta
da chi ne detiene il copyright. Indica le modalità con cui un utente può usare il prodotto (garantisce dei
diritti, impone degli obblighi). Per essere valida va attribuita da chi è in possesso dei diritti d’autore.
Shareware e freeware  alcune piccole software house e alcuni piccoli sviluppatori preferiscono non usare
i normali canali di distribuzione del software proprietario. Incoraggiano la diffusione dei loro programmi
consentendone: il libero download da Internet; la libera copia e distribuzione. Tali applicazioni sono
shareware o freeware. Shareware  il programma può essere liberamente scaricato da Internet, utilizzato
e ridistribuito per un tempo determinato (in genere 30 giorni). Al termine del periodo di valutazione: è
richiesto il pagamento di una somma oppure la rimozione del software (che cessa di funzionare), a chi si
registra sono normalmente garantiti sia gli aggiornamenti del software che la documentazione. La versione
di prova ha in genere alcune limitazioni. Freeware  viene così indicato un software che è distribuito in
modo gratuito. Il software utilizza una licenza che ne consente la distribuzione gratuita. Il programma può
essere liberamente scaricato da Internet, utilizzato e distribuito senza limitazioni. Il software può includere
o meno il codice sorgente. Freeware: alcune precisazioni  l detentore del copyright può inserire
esplicitamente delle clausole nel contratto di licenza che impediscano qualsiasi forma di pagamento per la
distribuzione. Chi detiene il copyright è l’unico a poter decidere le forme e le modalità di distribuzione del
software
GNU – General Public License  la licenza GPL intende garantire lo scambio e la condivisione di software
libero. La licenza GPL assicura che il software resti libero per tutti gli utenti. La versione attuale della GNU
GPL è la 3
Software Libero  l’espressione «Software Libero» si riferisce alla libertà dell’utente di eseguire, copiare,
distribuire, studiare, cambiare e migliorare il software. Il Software Libero è una questione di libertà, non
di prezzo. Libertà di parola (SI); birra gratis (NO).
Le quattro libertà essenziali  libertà 1: libertà di eseguire il programma come si desidera, per qualsiasi
scopo; libertà 2: libertà di studiare come funziona il programma e adattarlo alle proprie necessità. L’accesso
al codice sorgente ne è un prerequisito; libertà 3: libertà di ridistribuire copie in modo da aiutare il
prossimo; libertà 4: libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in
modo tale che tutta la comunità ne tragga beneficio. L’accesso al codice sorgente ne è un prerequisito, e se
gli utenti di un software godono di queste 4 libertà allora quel software è libero.
La GPL  garantisce che a ogni persona sia consentito: avere la libertà di utilizzare e distribuire copie di
software libero; ricevere il codice sorgente; cambiare e migliorare il codice sorgente secondo le proprie
necessità; redistribuire gratuitamente il software; ricevere un corrispettivo economico per i servizi e i
prodotti realizzati utilizzando il software libero. La GPL protegge i diritti degli autori e degli utenti
imponendo alcune restrizioni: che vietano a ognuno di negare i diritti d’autore; che vietano a ognuno di
chiedere all’utente di soprassedere dai propri diritti; che determinano la responsabilità legale di coloro che
distribuiscono o modificano le copie. Protegge i vari diritti: mantiene il Copyright dell’autore sul software;
definisce la licenza che garantisce all’utente di: copiare il software; distribuire il software; modificare il
software.
Altre licenze GNU  GNU Lesser General Public License (LGPL) - utilizzata solo da alcune librerie di GNU;
GNU Affero General Public License (AGPL) - basata sulla GNU GPL, ma aggiunge una clausola che permette
agli utenti di ricevere il codice sorgente di un programma utilizzato attraverso una rete; GNU Free
Documentation License (FDL) -è una forma di copyleft pensata per manuali, libri di testo o altri documenti.
Le licenze Creative commons  share, reuse and remix –legally. Non servono a tutelare il diritto d’autore
(copyright); offrono degli strumenti gratuiti per contrassegnare il lavoro creativo degli autori. Tale
contrassegno è di facile «portabilità». Creative commons e copyright  esistono tre forme di copyright: all
rights reserved (copyright) ©; some rights reserved CC; public domain (copyleft) PD (NO IN ITALIA).
Tipologie di licenze CC  Attribution Non-commercial No Derivatives (by-nc-nd); Attribution Non-
commercial Share Alike (by-nc-sa); Attribution Non-commercial (by-nc); Attribution No Derivatives (by-nd);
Attribution Share Alike (by-sa); Attribution (by).

Attribuzione (CC BY)  questa licenza permette a terzi di distribuire, modificare, ottimizzare e utilizzare
l’opera come base, anche commercialmente, fino a che sia garantito il credito per la creazione originale. È
la più accomodante delle licenze offerte. È raccomandata per la diffusione e l’uso massimo di materiali
coperti da licenza.
Attribuzione -Condividi allo stesso modo (CC BY-SA)  questa licenza permette a terzi di modificare,
ottimizzare e utilizzare l’opera come base, anche commercialmente, fino a che sia garantito il credito per la
creazione originale. Le nuove creazioni devono essere autorizzate con i medesimi termini. È spesso
comparata con le licenze usate dai software open source e gratuite «copyleft». Tutte le opere basate su
quella originale erediteranno la stessa licenza. Quindi tutte le opere derivate permetteranno anche un uso
commerciale.
Attribuzione -Non opere derivate (CC BY-ND)  questa licenza permette la ridistribuzione, commerciale e
non, fintanto che viene trasmessa intera e invariata, dando credito all’autore dell’opera. Non è possibile
generare opere derivate dall’opera originaria.
Attribuzione -Non commerciale (CC BY-NC)  questa licenza permette a terzi di modificare, ottimizzare e
utilizzare l’opera come base per altre non commerciali. Le loro nuove opere dovranno accreditare l’autore
dell’opera originaria e essere non commerciali. Ma possono essere licenziate con termini differenti rispetto
a quelli dell’opera originaria
Attribuzione -Non commerciale -Condividi allo stesso modo (CC BY-NC-SA)  questa licenza permette a
terzi di modificare, redistribuire, ottimizzare e utilizzare l’opera come base non commerciale, fino a che sia
garantito il credito per la creazione originale. Le nuove creazioni dovranno essere licenziate mediante i
medesimi termini dell’opera originaria
Attribuzione -Non commerciale -Non opere derivate (CC BY-NC-ND)  questa licenza è la più restrittiva
delle sei licenze principali. Consente solo di scaricare le opere e condividerle con altri fino a che sia
garantito il credito per la creazione originale. Non è possibile modificare l’opera originaria né sfruttarla
commercialmente.
CC0  CC0 consente ai creatori e ai proprietari di contenuti o database protetti da copyright di rinunciare
agli interessi sulle loro opere e, quindi, renderle di dominio pubblico, in modo che altri possano modificare,
migliorare e riutilizzare le opere liberamente per qualsiasi scopo e senza alcuna restrizione legata alle
norme in materia di diritto. È incompatibile con la normativa italiana in quanto spoglia l’autore del diritto
morale.

IB23
Open Data  con dati aperti, o Open Data, si fa riferimento ad alcune tipologie di dati liberamente
accessibili a tutti, senza restrizioni di copyright, brevetti o altre forme di controllo che ne limitino la
riproduzione.
I dati  sono un’elementare porzione di informazione caratterizzata da: essere una descrizione diretta di
fatti, o a loro chiaramente collegabile; appartenere a un sistema di conoscenze o informazione più ampia;
acquisire maggiore valore se contestualizzato e correlato con informazioni aggiuntive; essere riproducibile
senza ambiguità, noti in dettaglio i metodi utilizzati per la sua generazione; essere archiviata in formati
digitali; essere in grado di generare nuova conoscenza, mediante sua elaborazione con applicazioni
software. Non tutti i dati possono pervenire allo status di informazione ma solo quelli che, elaborati,
organizzati, strutturati e contestualizzati, diventano effettivamente utilizzabili.
I 10 comandamenti dei dati aperti  1 – Disponibili a tutti (Non proprietary): dati devono essere utilizzabili
attraverso programmi, applicazioni e interfacce non proprietarie. I dati devono essere pubblicati e riusabili
in formati non proprietari; 2 – Con licenza aperta (License-free): ai dati pubblicati in rete in versione
«open» non possono sottendere copyright o diritti intellettuali, ne brevetti che possano limitarne l’accesso
o l’utilizzo o il riuso da parte degli utenti; 3 – Riutilizzabili (Reusability): gli utenti devono poter riutilizzare e
integrare i dati, fino a creare nuove risorse, applicazioni e nuovi servizi; 4 – Ricercabili (Searchability): deve
essere possibile ricercare con facilità e immediatezza dati e informazioni di proprio interesse, mediante
strumenti di ricerca ad hoc, come database, cataloghi e motori di ricerca; 5 - Permanenti (Permanent): le
caratteristiche devono permanere per il ciclo del dato; 6 – Completi (Complete): i dati devono
comprendere tutte le risorse che consentono di esportarli, utilizzarli online e offline, integrarli e aggregarli
con altre risorse e diffonderli in rete; 7 - Significativi (Primary): i dati devono essere sufficientemente
granulari, in modo da poter essere aggregati ad altri dati e/o risorse disponibili in rete; 8 - Tempestivi
(Timely): i dati sono resi disponibili tempestivamente così che ne sia preservato il valore; 9 - Accessibili
(Accessible): i dati sono fruibili e utilizzabili attraverso i protocolli Internet, senza alcuna sottoscrizione di
contratto, pagamento, registrazione o richiesta ufficiale; 10 - Leggibili dai programmi (Machine
processable): i dati devono essere leggibili da computer per garantir agli utenti la piena libertà di accesso,
utilizzo e integrazione (machine-readable); 11 - Imparziali (Non-discriminatory): la modalità di licenza
adottata per rilasciare i dati non ne deve limitare il loro utilizzo in un determinato settore d’attività, né
discriminare persone o gruppi.
Dati Aperti  si parla di dati aperti a proposito di dati liberamente accessibili in rete, senza restrizioni di
copyright, brevetti o altre forme di privativa che ne limitino la riproduzione o il riuso. Quando i dati
pubblicati in formato aperto sono prodotti da enti governativi e sono riutilizzabili da chiunque anche per
scopi commerciali, costituiscono gli Open Government Data. Il business open data passa per la licenza che
garantisce il riuso più libero e la distribuzione più ampia.
5 Stelle Data  im Berners-Lee prefigura un web pensato in funzione di dati condivisi per rendere
accessibili i dati riformulando il modo in cui li usiamo.
Il diagramma a 5 stelle:

Criticità di HTML  non è dotato di strumenti atti ad esprimere la semantica, ovvero il significato
attribuibile al tipo di relazione che lega tra di loro due differenti informazioni. Non consente
l’estrapolazione e la contestualizzazione delle informazioni contenute nelle pagine web, da parte di
software in grado di processarle automaticamente
Web semantico  l’evoluzione del web prevede il passaggio da rete di documenti a rete di dati dove i
documenti sono arricchiti di contenuto informativo e diventano dati processabili direttamente o
indirettamente anche con strumenti automatici.
Amministrazione Barack Obama  l’amministrazione Obama ha messo a disposizione on-line tutti i dati
pubblici in suo possesso, attraverso il principio dei «dati aperti. L’Open government directive prevede che
ogni amministrazione del governo pubblichi entro 45 giorni, tutti i suoi dati pubblici su Internet.
Semplicemente aggiungendo “/open” all’URL
In Italia  decreto Legge 18 ottobre 2012, n. 179  introduce il principio «open by default», effetto della
conversione in legge dell’Art. 9. A partire dal 18 marzo 2013 dati e documenti pubblicati online dalle
amministrazioni titolari - senza una esplicita licenza d’uso che ne definisca le possibilità e i limiti di riutilizzo
– sono da intendersi come dati aperti, quindi dati che possono essere liberamente acquisiti da chiunque e
riutilizzabili anche per fini commerciali. Il Decreto «trasparenza»  il decreto legislativo n. 33 del
14/3/2013, recante «Riordino della disciplina riguardante gli obblighi di pubblicità, trasparenza e diffusione
di informazioni da parte delle pubbliche amministrazioni.». Emanato a norma dell’art. 1, comma 35, della
legge n. 190/2012. Si compone di 53 articoli. Il Decreto «trasparenza» -punti salienti: art. 3 – Pubblicità e
diritto alla conoscibilità (diritto all’uso ed al riuso – gratuito - dei dati pubblici), art. 5 - Nuova trasparenza –
Diritto di accesso civico, art. 7 –Dati aperti e riutilizzo (i documenti a pubblicazione obbligatoria sono
soggetti a riutilizzo senza alcun ulteriore obbligo se non la citazione della fonte e il rispetto dell’integrità);
artt. 13/42 -Obblighi di pubblicazione; CAD-art. 52, co. 2: i dati e i documenti che le amministrazioni titolari
pubblicano, con qualsiasi modalità, senza espressa adozione di una licenza [...] si intendono rilasciati come
dati di tipo aperto ai sensi all’articolo 68, comma 3, del presente Codice. L’eventuale adozione di una
licenza [...] è motivata ai sensi delle linee guida nazionali di cui al comma 7. Siti: dati-gov.it;
soldipubblici.gov.it; italia sicura; open expo.
Open Data Charter  Nasce nel 2013 su iniziativa del forum G8. È una carta condivisa con la finalità di:
portare al centro del dibattito internazionale il tema dei dati aperti; far convergere i Governi degli otto paesi
firmatari sull'adozione di principi comuni a sostegno delle politiche di apertura dei dati. Nell’agosto 2015 si
è concluso il suo aggiornamento a seguito di una consultazione online. Normativa di riferimento (europea)
 direttiva 2003/98/CE del Parlamento europeo e del Consiglio, del 17 novembre 2003 (il riutilizzo
dell'informazione del settore pubblico); Direttiva 2013/37/UE del Parlamento europeo e del Consiglio, del
26 giugno 2013 (è la nuova direttiva Europea sull’informazione del settore pubblico che favorisce il riutilizzo
dei dati delle pubbliche amministrazioni obbligandole a rendere disponibili i dati in loro possesso per il
riutilizzo anche per scopi commerciali). La normativa di riferimento italiana  Codice dell'Amministrazione
Digitale –Articolo 68 Comma 3 (fornisce la definizione normativa di riferimento per formato di dato aperto
e per dato aperto elencandone le caratteristiche principali); decreto Legislativo 24 gennaio 2006, n. 36
(attuazione della direttiva 2003/98/CE relativa al riutilizzo di documenti nel settore pubblico); Decreto
legislativo 14 marzo 2013, n. 33 (all’articolo 7 “dati aperti e riutilizzo” dispone che i documenti, le
informazioni e i dati oggetto di pubblicazione obbligatoria per il decreto legislativo 33/2013, resi disponibili
anche a seguito dell’accesso civico, siano pubblicati in formato di tipo aperto senza altre restrizioni se non
l’obbligo di citare la fonte e di rispettarne l’integrità).
I principi dell’Open Government  trasparenza (responsabilizza il popolo e i suoi rappresentanti
diffondendo ogni dato sull’attività amministrativa); partecipazione (migliora la qualità del processo
decisionale realizzando l’intelligenza collettiva di Gaiana memoria); collaborazione (garantisce il
monitoraggio dell’intero procedimento).
Modelli di copyright per le PSI  Dominio Pubblico (o Copyright free model)  l’informazione è
completamente libera e chiunque può accedervi senza restrizioni (USA 1976 -Copyright Act.); Copyright
ampio  la maggior parte dell’informazione dello Stato è soggetta a copyright (paesi del Commonwealth,
come l’Australia, il Canada, la Gran Bretagna, Cipro e Malta); Modello misto, ovvero: è effettuata in modo
esplicito una distinzione tra le informazioni del settore pubblico che sono libere da copyright e quelle che
non lo sono (paesi europei come l’Italia, la Francia, la Germania, la Spagna, la Svezia, la Finlandia e
l’Olanda).
Attenzione alle Public Sector Information  esistono casi in cui le PSI non possono essere disponibili in
modalità completamente aperta. Si vuole dunque garantire: la protezione di sicurezza nazionale e privacy;
la tutela di diritti di proprietà intellettuale; la tutela del valore aggiunto connesso con la vendita dei dati a
soggetti privati per fini di lucro. Attenzione  la distribuzione dei dati pubblici nel pubblico dominio non ne
garantisce la sostanziale (e non formale) apertura; non limitarsi alla mera pubblicazione delle informazioni,
bensì provvedere alla loro diffusione con modalità di licensing che ne prevedano la libera distribuzione
finalizzata anche all’aggregazione ed al riuso.
Funzioni dell’Open Government  garantisce convergenza tra e-Government ed e-Democracy; non è
sostitutivo delle classiche forme integrative di tipo partitico; definisce una nuova idea di politica capace di
affincareed integrare quella classica. Criticità  possibile nascita di una sub-società civile oligarchica capace
di sfruttare il digital-divide; potenziale rischio legato all’ambivalenza tra visibilità e garantismo e tra
controllo e giustizialismo. Attenzione alla «tirannia della trasparenza».
PSI: non pubblicazione ma diffusione  l’utilizzo reale dei dati contenuti nelle PSI richiede competenze e
capacità tecniche. Piuttosto che pubblicare i dati è preferibile diffonderli con licensing aperto per favorirne
l’aggregazione ed il riuso. Si crea nuovo valore aggiunto per il cittadino. culturaitalia.it ha predisposto un
modulo per riversare ad Europeana, tutti i dati in RDF secondo l’Europeana Data Model. Ha recentemente
rilasciato i dataset dell’anagrafica delle biblioteche italiane in formato Linked Data ICCU (Istituto Centrale
per il Catalogo Unico).
Portale storico della Camera dei Deputati  applicazione basata sui dati RDF esposti dalla Camera a
dicembre 2011 e riguardanti tutte le legislature del Regno e delle Repubblica precedenti quella corrente.
Offre la possibilità di navigare dati e documenti prodotti durante l’attività parlamentare attraverso faccette,
timeline e filtri.
ReLoad (Repository for Linked Open Archival Data)  perimenta le metodologie del semantic web e le
tecnologie LOD per favorire la condivisione di informazioni archivistiche provenienti da una molteplicità di
fonti. È un punto di raccolta e accesso a risorse archivistiche distribuite, pubblicate in formato LOD.
Verificare le possibilità di creare una “rete di dati archivistici collegati”.
Thesaurus Luce  è un vocabolario creato per descrivere il patrimonio storico dell’Istituto Luce. Conta di
più di 66.000 concetti organizzati gerarchicamente è convertiti nel formato standard SKOS (Simple
Knowledge Organization System). Consente di proiettare il contenuto multimediale dell‘Istituto Luce nel
«web of data», attraverso mirate operazioni di allineamento semantico.
Casellario Politico Centrale  152.589 fascicoli personali con documentazione prevalentemente compresa
tra il 1894 e il 1945. I fascicoli contengono note informative, relazioni, verbali di interrogatori,
provvedimenti di polizia, indicazioni di iscrizione nella Rubrica di frontiera o nel Bollettino delle ricerche e
spesso una scheda biografica.
Base Dati del MiBAC  DBUnicoesportazione Eventi e Comunicati; siti italiani iscritti nella Lista UNESCO;
ICCU Anagrafe delle biblioteche italiane, ArtPast-Progetto MiBAC; Internet Culturale; progetto MICHAEL;
Polo Museale Fiorentino.

IB24
Il ruolo di AGID negli open data  l’articolo 52 del CAD assegna all’Agenzia per l’Italia Digitale il compito di
coordinare e promuovere le politiche nazionali di open data.
Un nuovo documento di riferimento per le PA  il 14 dicembre 2016 l’Agenzia per l’Italia Digitale ha
pubblicato le Linee Guida Nazionali per la Valorizzazione del Patrimonio Informativo Pubblico 2016. Si
tratta di un documento di riferimento per le PA che pubblicano i propri dati secondo il paradigma dei dati
aperti. La logica del documento  l’azione di valorizzazione del patrimonio informativo prodotto dalla
pubblica amministrazione italiana si esplicita in due direzioni: la promozione della cultura della trasparenza
e dell’accountability attraverso i dati aperti; la valorizzazione delle pratiche di riuso dei dati governativi
aperti affinché diventino infrastruttura immateriale su cui chiunque possa sviluppare servizi innovativi.
Le nuove Linee Guida 2016  hanno lo scopo di agevolare la pubblicazione dei dati di tipo aperto da parte
delle pubbliche amministrazioni. A livello metodologico si avvalgono di una vera e propria checklist. Sono
state semplificate rispetto alla precedente versione del 2014. I destinatari delle nuove linee guida  il
documento ha una duplice valenza tecnico-organizzativa e si rivolge a: figure professionali delle
amministrazioni in possesso di competenze tecnico-informatiche (direttori dei sistemi informativi,
responsabili siti Web, funzionari e consulenti tecnici); figure professionali individuabili in quelle aree più
amministrative preposte all’organizzazione dei dati (responsabili di basi di dati specifiche, responsabili
amministrativi, esperti di dominio). Gli aspetti fondamentali delle linee guida  in questo documento
l’attenzione è posta su due aspetti fondamentali: la piena coerenza con la direttiva PSI 2.0 e con la
normativa nazionale di recepimento; l’introduzione del profilo nazionale di metadati DCATAP_ IT per la
documentazione dei dati della PA. Altri aspetti delle linee guida  altri aspetti trattati in questo documento
sono: l’identificazione di un primo insieme di caratteristiche di qualità dei datie relative misure; la
definizione di un’architettura dell’informazione del settore pubblico; la raccomandazione di una licenza di
riferimento per tutti i dati della pubblica amministrazione che sia aperta e internazionalmente riconosciuta;
una generale semplificazione rispetto alla precedente versione. La struttura delle linee guida 2016  il
documento approfondisce: da un lato un modello e un’architettura di riferimento per l’informazione del
settore pubblico; dall’altro lato gli aspetti organizzativi necessari a individuare ruoli e figure professionali
delle pubbliche amministrazioni coinvolte nella gestione dei dati aperti. Operativamente parlando, il
documento fornisce supporto alle PA relativamente ai seguenti aspetti: scelta della licenza per i dati di tipo
aperto; analisi di eventuali aspetti di costo dei dati, elementi comuni per la pubblicazione dei dati nei
portali. Il documento è articolato in sezioni, tra cui: normativa di riferimento, modello per i dati aperti e i
metadati, aspetti organizzativi e di qualità per i dati, architettura dell’informazione del settore pubblico,
pubblicazione e dati.gov.it. Ogni sezione rappresenta un passo di un’ipotetica checklist da seguire per
attuare il processo di valorizzazione del patrimonio informativo pubblico. Le sezioni delle linee guida 
Normativa di Riferimento (presenta il quadro normativo); Dati della Pubblica Amministrazione (introduce
le definizioni sui dati pubblici); Modello per i dati aperti e i metadati (descrive i modelli di riferimento per i
dati di tipo aperto e per i metadati riportando, in quest’ultimo caso, il profilo di metadatazione DCAT-
AP_IT); Aspetti organizzativi e di qualità per i dati (propone un modello operativo per la produzione e
gestione dei dati pubblici individuando ruoli, responsabilità e azioni da intraprendere, dimensioni di qualità
dei dati e relativa metodologia per il loro monitoraggio); Architettura dell’informazione del settore
pubblico (individua l’architettura generale fornendo un’indicazione sugli standard di base e formati aperti
per dati e documenti); Aspetti legali e di costo (raccomanda alcune licenze per i dati di tipo aperto e
analizza aspetti legati ai costi e alla tariffazione per i dati del settore pubblico); Pubblicazione e dati.gov.it
(descrive i passi per la pubblicazione e discute del rinnovato ruolo del portale nazionale dei dati,
dati.gov.it). Dove reperire le linee guida  il documento è liberamente scaricabile dal sito
http://www.dati.gov.it/content/linee-guida-open-data-2016. La licenza di rilascio è la Creative Commons-
Attribuzione 4.0 Internazionale (CC BY 4.0). Il formato di rilascio è duplice : PDF e ODT.
L’interoperabilità semantica  uno dei compiti di AGID, è quello di favorire l’interoperabilità semantica di
dati e servizi, per rendere omogenei in tutta la Pubblica Amministrazione (PA) i processi di accesso e
scambio delle informazioni tra le PA stesse e tra le PA e i cittadini e le imprese. Tali processi di scambio
devono essere coerenti con il relativo framework europeo.
DCAT-AP_IT v1.0  è il profilo nazionale dei metadati utili per descrivere i dati delle pubbliche
amministrazioni. Il profilo è conforme alla specifica di DCAT-AP definita nell’ambito del programma ISAdella
Commissione Europea. La documentazione della versione 1.0 (comprensiva delle proposte di modifica) è
disponibile al sito http://www.dati.gov.it/content/dcat-ap_it_v10.
Come e dove si può consultare l’ontologia  è anche possibile accedere a una versione visualizzabile e
«navigabile» dell’ontologia attraverso l’applicazione WebVOWL dalla pagina di riferimento
http://www.dati.gov.it/webvowl attraverso il servizio open-source LODE (Live OWL Documentation
Environment) sia nella versione in italiano che nella versione inglese.

SI01
Virus informativo  generalmente con il termine virus intendiamo nient’altro che un semplice programma,
sviluppato in un determinato linguaggio di programmazione, caratterizzato dalla capacità di riprodursi
facendo copie di se stesso. Come ogni programma, un virus non è in grado di comparire in modo
spontaneo sul computer di un utente, ma necessita di essere eseguito.
I virus  esistono due macro tipologie di virus: quelli cosiddetti ITW (in the wild), ovvero in libera
circolazione nell’intera rete telematica mondiale; quelli da laboratorio (zoo virus), che esistono
esclusivamente all’interno di laboratori di ricerca, e in reti isolate e sorvegliate. Come qualsiasi altro codice,
anche i virus sono soggetti a errori di programmazione che possono inficiarne il corretto funzionamento.
I componenti di un virus  generalmente i virus sono costituiti da due componenti principali e da tre
componenti opzionali: routine di ricerca (principale); routine d’infezione (principale); routine di
attivazione (opzionale); payload (opzionale); routine antirilevamento(opzionale). Routine  una
funzione(detta anche routine[…]) in informatica e nell’ambito della programmazione, è un particolare
costrutto sintattico di un determinato linguaggio di programmazione che permette di raggruppare,
all’interno di un programma, una sequenza di istruzioni in un unico blocco, espletando così una specifica (e
in generale più complessa) operazione, azione(o elaborazione) sui dati del programma stesso in modo tale
che, a partire da determinati input, restituisca determinati output. La routine di ricerca  si occupa della
lettura delle memorie di massa alla ricerca di un determinato obbiettivo (esempio: il settore di avvio
(bootsector) di un floppy o di una chiavetta USB; esempio: i files creati con un certo applicativo. A questa
routine è, inoltre, demandata l’identificazione dei file precedentemente infettati, al fine di prevenire una
contaminazione recidiva dello stesso target da parte del virus. La routine d’infezione  entra in azione al
termine della routine di ricerca. Ha l’obbiettivo d’iniziare il processo d’infezione del target
precedentemente identificato. La discrezione di tale processo è vitale per la diffusione del virus stesso. La
sopravvivenza del virus è strettamente legata alla sua capacità di saper rimanere occultato il più a lungo
possibile. La routine di attivazione  ha il compito d’indicare al virus il momento più idoneo per l’avvio
dell’attacco vero e proprio. Eventi di attivazione tipici possono essere costituiti da date o accadimenti
significativi (esempio: il livello di occupazione di una data memoria di massa). Il payload  viene attivato
dalla routine d’attivazione e consiste nelle tipiche azioni eseguite dal virus: cancellazione di file;
formattazione di una memoria di massa (es: HDD); disattivazione di tasti sulla tastiera; visualizzazione di
messaggi a video; altre azioni malevole. La routine antirilevamento  ha il compito d’impedire o di rendere
più difficoltosa la rilevazione del virus. Il suo funzionamento può essere: molto semplice (esempio: modifica
dell’orario e della data del file infetto; esempio: modifica della dimensione del file infetto); estremamente
complesso. Quelle più sofisticate si caricano nella memoria principale (RAM) e tentano d’ingannare i
software antivirus che si occupano dell’esame della memoria di massa.
Virus: metodologie per la trasmissione  i virus hanno bisogno di esser caricati ed eseguiti. Non potendo
contare sulla collaborazione volontaria degli utenti, sono dotati di metodologie di auto-caricamento
operanti all’insaputa dell’utente. Si classificano in tre categorie in base al sistema di propagazione: virus di
file, virus di boot, macrovirus. I virus di boot  agiscono sul settore di avvio (bootsector) di una memoria di
massa. Un virus di boot ha la caratteristica di prendere il controllo ogni qual volta si procede all’avvio del
computer da una memoria di massa infetta (esempio: un floppy disk, un hard disk, una chiavetta USB). I
virus di file  i virus di file agiscono solo sui files di programma, provvedendo a trasmettersi a ogni
esecuzione del programma infetto (esempio di file di programma: winword.exe (Microsoft Word),
notepad.exe (il Blocco Note di Windows). Di questa categoria fa parte anche un ulteriore specie
denominata virus multipartito, che è in grado d’infettare sia il settore di avvio che i files. I macrovirus 
macrovirus possono infettare esclusivamente quei files creati con particolari applicativi che utilizzano un
linguaggio di programmazione per la creazione di Macro (ovvero componenti software in grado di
automatizzare alcune procedure) interne ai documenti (esempi di applicativi particolarmente diffusi che
utilizzano macro sono sia Microsoft Word, sia Microsoft Excel). La loro diffusione avviene all’apertura di un
file infetto.
Tipologie d’infezioni  i virus possono trasmettere la loro infezione in differenti modi: infezione diretta
(viene infettato uno o più files ad ogni esecuzione dell’applicazione infetta; se non si apre un documento
infettato o non si carica un programma infettato il virus non può propagarsi); infezione rapida (viene
infettato qualsiasi file aperto da un programma infetto); infezione lenta (il virus cerca di mascherare la sua
presenza limitando l’infezione dei files a quelli appena creati o modificati dal programma); infezione
irregolare (il virus presenta un comportamento prudente come nel caso precedente ma limita
ulteriormente la sua aggressività, procedendo pertanto all’infezione casuale e occasionale dei files);
infezione residente in memoria (Memory Resident) (il virus si auto-carica nella memoria principale (RAM)
e li resta nascosto, in attesa di entrare in funzione ogni qual voltasi esegue un programma o si inserisce un
dispositivo rimovibile scrivibile - esempio: floppy disk o chiavetta USB; è l’unica tipologia d’infezione
possibile per i virus di boot).
Malware  si definisce malware un qualsiasi software creato allo scopo di causare danni: a un computer,
oppure ai dati degli utenti del computer, oppure a un sistema informatico su cui viene eseguito. Il termine
deriva dalla contrazione delle parole inglesi maliciouse software e ha dunque il significato letterale di
«programma malvagio». In italiano è chiamato anche codice maligno. Un malware è caratterizzato
dall’intento doloso del suo creatore. Non rientrano nella definizione data i programmi contenenti
(involontariamente) semplici bug. Il malware non è un sinonimo di virus, dato che quest’ultimo si configura
esclusivamente come una sua sottocategoria.
Le categorie di malware  in letteratura si distinguono varie categorie di malware. Va precisato che alcuni
programmi sono composti da più parti che rientrano a tutti gli effetti in più di una categoria.
Categorie di malware: elencazione  Virus. sono parti di codice che si diffondono copiandosi all’interno di
altri programmi (o di sezioni delle memorie di massa) in modo da essere eseguiti ogni volta che il file infetto
viene aperto. Si trasmettono da un computer a un altro tramite lo spostamento di file infetti a opera degli
utenti. Worm  non hanno bisogno di infettare altri file per diffondersi. Modificano il sistema operativo
della macchina ospite in modo da essere eseguiti automaticamente e tentare di replicarsi sfruttando per lo
più Internet. Beneficiano dell’utilizzo di tecniche di ingegneria sociale. Sfruttano dei difetti (bug) di alcuni
programmi per diffondersi automaticamente. Trojanhorse  sono software che sebbene abbiano delle
funzionalità «lecite» per indurre l’utente a utilizzarli, contengono anche delle istruzioni dannose che
vengono eseguite all’insaputa dell’utilizzatore. Non possiedono funzioni di auto-replicazione. Per
diffondersi devono essere consapevolmente inviati alla vittima, della quale richiedono la collaborazione.
Backdoor  consentono un accesso non documentato al sistema su cui sono in esecuzione. Si diffondono
spesso in abbinamento a un trojano a un worm. Se l’accesso che garantiscono al sistema non è autorizzato,
allora il loro uso è malevolo. A volte costituiscono una forma di accesso (lecita) di emergenza a un sistema.
Spyware  vengono usati, prima per raccogliere informazioni dal sistema su cui sono installati, poi per
trasmetterle a un destinatario interessato. Dialer  si occupano di gestire la connessione a Internet
tramite la normale linea telefonica (ora in disuso con l’ADSL). Se usati in modo illecito modificano il numero
telefonico chiamato dalla connessione predefinita con uno a tariffazione speciale. Hijacker  si
appropriano di applicazioni usate per la navigazione in rete (soprattutto browser) causando l’apertura
automatica di pagine web indesiderate. «Il termine hijacking indica una tecnica di attacco informatico che
consiste nel modificare opportunamente dei pacchetti dei protocolli TCP/IP al fine di dirottare i collegamenti
ai propri siti web e prenderne il controllo». Scareware  è una classe di software dannosi o comunque di
limitata utilità la cui installazione viene suggerita agli utenti attraverso tecniche di marketing scorretto o
mediante i metodi tipici dell’ingegneria sociale. A volte spingono a installare altro malware. Oggi sono più
comunemente riuniti nelle classi note come Rogueware o FraudTool. Rootkit  solitamente sono composti
da un driver e (a volte) da copie modificate di programmi normalmente presenti nel sistema. Non sono
dannosi in sé. Hanno la funzione di nascondere (all’utente e agli antivirus) la presenza di particolari file o
impostazioni del sistema. Vengono utilizzati per mascherare spywaree trojan. L’utility rkhunter
(RootkitHunter) utilizza l’algoritmo di hash SHA-1 per verificare l’integrità dei file di sistema. È un toolin
grado di rilevare la presenza di rootkit, backdoor e altri exploit locali. Rabbit  sono programmi che
esauriscono le risorse del computer creando copie di sé stessi (in memoria, sia di sistema che di massa) a
grande velocità. Adware  sono programmi che presentano all’utente messaggi pubblicitari durante l’uso.
Possono rallentare il sistema e compromettere la privacy dell’utente comunicando le sue abitudini di
navigazione a un server remoto. Malvertising (maliciousadvertising)  sono degli attacchi che originano
dalle pubblicità delle pagine web. Rogue antispyware  è un malware che si finge un programma per la
sicurezza del PC, spingendo gli utenti ad acquistare una licenza del programma. Keylogger  sono dei
programmi in grado di registrare tutto ciò che un utente digita attraverso una tastiera (e non solo). Servono
a trafugare i dati e le password dell’utente. Tali programmi non causano rallentamento al computer,
passando così totalmente inosservati. A volte sono installati sul computer da trojan o worm. Esistono anche
i Keylogger Hardware. Bomba logica  è un tipo di malware che fa sentire i suoi effetti al verificarsi di
determinate condizioni (o stati del computer) predeterminate dall’attaccante. Zip Bomb (bomba a
decompressione) è un attacco di tipo negazione del servizio (Denialof Service -DoS). Si tratta di un archivio
compresso malevolo, studiato per mandare in crash o rendere inutile il programma o il sistema che lo
legge. Ransomware  è un tipo di software maligno progettato per bloccare l’accesso a un sistema
fintanto che non viene versata una somma di denaro in riscatto. Ransomware a criptazione  particolare
variante di ransomware che cripta tutti i dati presenti in una memoria di massa con una chiave di cifratura
complessa. Per ottenerla e poter decrittare la memoria di massa l’utente dovrà pagare un riscatto al
criminale cibernetico. Solitamente il riscatto è richiesto in una criptovaluta, quale il Bitcoin
Antivirus (e antimalware)  «Applicazione informatica che svolge una funzione di blocco, controllo ed
eventualmente rimozione di altre applicazioni progettate per attaccare e danneggiare in vario modo il
software di base e applicativo di un computer». «L’antivirus contiene funzionalità che ne permettono
l’aggiornamento frequente via Internet, per garantire una tempestiva protezione anche dai più recenti
attacchi». Gli antivirus  servono a difendersi dalle azioni compiute dai virus (anche prevenendo tali
azioni). Adempiono alle seguenti funzioni: bloccano l’esecuzione dei virus, impedendo l’infezione del
computer (azione preventiva); rilevano la presenza di eventuali virus che abbiano già infettato il computer
(azione reattiva); eliminano gli eventuali virus presenti (azione reattiva). Sono costituiti da differenti
moduli software che operano congiuntamente: dispositivi di monitoraggio, scanner, dispositivi per il
controllo dell’integrità dei file.
Dispositivo di monitoraggio dei virus  è un modulo software (behavior blocker)che si insedia nella
memoria principale del computer e provvede a monitorare le attività di elaborazione del sistema alla
ricerca di eventuali comportamenti sospetti. Si basa sulla capacità di riconoscere le attività tipiche di un
virus. Tale approccio funziona contro tutti i tipi di virus, sia quelli noti che quelli ancora sconosciuti. Può
generare molti «falsi positivi».
Gli scanner  sono moduli software che si basano sulla capacità di individuare un determinato virus sulla
base di un preciso set di istruzioni (definizioni o firme) che lo caratterizza. Sono molto precisi e accurati
nelle rilevazioni. Si rivelano completamente inutili nel caso in cui le definizioni antivirus non siano
adeguatamente aggiornate. Possono riconoscere solo i virus per i quali esistono delle specifiche firme.
Controllo dell’integrità dei file  basano il loro funzionamento sull’esame di ogni file presente nella
memoria di massa del sistema, per il quale viene calcolato matematicamente un valore (checksum) che lo
identifica univocamente. Successivamente il modulo si limita a ricalcolare nuovamente il checksum del file
stesso e a confrontarlo con quello memorizzato la prima volta. La rilevazione di discrepanze tra i due valori
ne indica l’avvenuta modifica. Può identificare anche le tipologie di virus ancora sconosciute, in quanto
ricerca le modifiche apportate ai file esistenti. Presenta due inconvenienti: può essere aggirato-alcuni virus
cercano di eliminare il file contenente le checksum generate al fine di rendere nullo il meccanismo di
controllo preposto; comunica spesso falsi allarmi (falsi positivi) -se non adeguatamente istruito. «Gli
antivirus si sono evoluti diventando veri e propri “programmi di sicurezza”, che non si possono più definire
solo antivirus, ma che sarebbe più corretto chiamare antimalware».
Gli aggiornamenti dei programmi  di norma includono: funzionalità delle versioni precedenti riviste e
corrette; nuove funzionalità per indicare gli stadi di sviluppo del programma si utilizzano i numeri di
versione; parte intera in presenza di modifiche sostanziali; parte decimale in presenza di modifiche
marginali e/o correzione di alcuni errori.

Windows update  è un servizio di aggiornamento online per i software della Microsoft in ambiente
Windows. Offre (tra l’altro) aggiornamenti di sicurezza per componenti del sistema e service packs. Offre
aggiornamenti gratuiti per i componenti software della Microsoft (non solo del SO Windows). Offre
aggiornamenti di driver e versioni beta.
Il backup dei dati  consiste nella copia di riserva di tutti (o dei principali) dati presenti nel sistema. Il costo
del sistema è superfluo rispetto al valore costituito dai dati (knowhow) che contiene. Affinché sia efficace(e
deve esserlo) va pianificato ed eseguito secondo precisi canoni. Perché fare il backup  per proteggersi dal
rischio di accadimento di incidenti distruttivi: accidentali o volontari; naturali o umani. È importante che i
set di backup non siano archiviati: negli stessi locali di custodia dei dati originali; nello stesso edificio di
custodia dei dati originali; in ambienti che presentano lo stesso rischio associato agli ambienti di custodia
dei dati originali. È fondamentale che «sopravviva» sempre e comunque almeno uno tra: i dati originali,
almeno una copia di sicurezza degli stessi. Supporti di backup ad accesso casuale  consentono un facile e
veloce reperimento dei file ivi contenuti. Ne esistono di vari tipi (con dignità d’uso differenti): floppy disk,
chiavette USB, dischi rigidi rimovibili, dischi magneto-ottici riscrivibili, CD e DVD (registrabili o riscrivibili),
SAN e NAS. Supporti di backup ad accesso sequenziale  richiedono il caricamento sequenziale del
supporto per richiamare il file desiderato. È la tecnologia utilizzata nei nastri. Il processo di retrive è
velocizzato dall’utilizzo di appositi indici. Esistono varie tipologie di nastro. La pianificazione del backup 
affinché sia effettivamente efficace, un backup va pianificato attentamente, scegliendo una strategia di
backup. Le principali strategie sono le seguenti: Backup completo, Backup incrementale, Backup
differenziale, Backup incrementale inverso, Backup misto. Analogamente vanno definite il piano di
esecuzione (frequenza e orario) e la retention (per quanto tempo si conservano i set salvati). Tutte questi
elementi costituiscono la policy di backup. Le tipologie di backup  Backup completo prevede il
salvataggio completo di tutti i file e cartelle sottoposte a policy di backup, indipendentemente dal fatto che
siano o meno intervenuti dei cambiamenti dall’ultimo salvataggio eseguito con successo. Backup
differenziale prevede il salvataggio dei soli elementi che hanno subito modifica dall’ultimo salvataggio
completo (backup completo) eseguito con successo. Backup incrementale prevede il salvataggio dei soli
elementi modificati dall’ultimo salvataggio (backup completo e/o incrementale) eseguito con successo.
Backup incrementale inverso opera come un backup incrementale per un certo periodo, salvo poi
consolidare i set (a intervalli predefiniti) in una coppia del tipo completo-differenziale. Backup misto opera
combinando differenti tipologie. Una possibile strategia (sconsigliata):

Il flag ARCHIVIO  ijob di backup utilizzano uno speciale attributo di file e cartelle, detto di archivio. Ad
ogni modifica di un file il flag viene settato.

Backup e ripristino  non basta pianificare i backup, ma vanno previste anche le prove di ripristino. I
supporti hanno un tempo di vita ben definito e vanno sostituiti con cadenza programmata. I supporti vanno
archiviati in luogo sicuro. I supporti vanno protetti anche fisicamente.
La separazione dei privilegi  solitamente è bene che chi ha il privilegio di eseguire il backup non abbia
anche il privilegio di effettuare il ripristino (restore). È richiesta la separazione dei due ruoli.
Alcune considerazioni  la scelta del supporto e la definizione delle policy devono tenere conto anche di
ulteriori elementi. Tra i principali troviamo: i costi, le tempistiche di esecuzione/ripristino, lo spazio di
archiviazione disponibile, la remotizzazione, il numero dei supporti richiesti.

SI02
Biometria  è l’insieme delle tecniche automatiche per l’identificazione degli individui basata sulle loro
caratteristiche fisiche e comportamentali.
Una nuova modalità di identificazione  la biometria ci mette a disposizione una nuova modalità
automatica di identificazione delle persone.

L’identificazione personale  è l’operazione che associa un’identità a un individuo. Può essere distinta in
due categorie con funzione e complessità diverse: autenticazione ovvero verifica dell’identità;
identificazione ovvero riconoscimento. L’autenticazione  l’operazione di verifica dell’identità
(Autenticazione) equivale a dare risposta alla domanda: «Sono davvero chi affermo di essere?». Si tratta di
un metodo one-to-one(1:1). Consente di confermare o negare l’identità dichiarata dall’utente.
L’identificazione  l’operazione di riconoscimento dell’identità (Identificazione) equivale a dare risposta
alla domanda: «Chi sono io?». Si tratta di un metodo one-to-many (1:N). Un problema di identificazione può
essere: chiuso se si ricerca all’interno di un insieme di identità note; aperto altrimenti.
La tecnica positiva e quella Negativa  l’autenticazione/identificazione può essere: POSITIVA se si cerca di
stabilire con accuratezza se l’utente è chi dice di essere e può evitare che più persone utilizzino una singola
identità; NEGATIVA se si cerca di stabilire con accuratezza se l’utente non è chi dice di essere e può evitare
che una persona utilizzi identità multiple.
I metodi biometrici di identificazione  vengono utilizzate le caratteristiche fisiche e/o comportamentali
dell’individuo per identificarlo. Tratti fisici (iride, impronta, volto, geometria della mano, ecc); tratti
comportamentali (firma, voce, camminata, ecc). Metodi biometrici: punti di forza  non è possibile
dimenticarli o cederli ad altri; sono più difficili da falsificare; possono garantire un’accuratezza maggiore di
quella garantita con i metodi tradizionali; possono realizzare l’identificazione negativa; quasi azzerano
l’esposizione ai reclami e al ripudio. Metodi biometrici: problematiche  rispondono con un livello di
«matching» e non con una decisione binaria (si o no); non possono essere cambiati a piacimento; molte
persone non accettano l’utilizzo dei sistemi biometrici (invasione della privacy); non tutte le persone
posseggono tutti i tratti; hanno un costo più elevato; gestione degli aspetti legali (es: GDPR). Le 7 proprietà
del tratto biometrico  Universalità: ogni persona deve possedere il tratto o la caratteristica; Unicità: due
persone non devono avere lo stesso tratto uguale; Permanenza: la caratteristica deve essere invariante nel
tempo; Misurabilità: il tratto deve poter essere esaminato quantitativamente; Performabilità: l’accuratezza
dell’identificazione deve essere adeguata e garantibile senza particolari condizioni operative; Accettabilità:
indica la percentuale di persone che potrebbero accettare l’utilizzo del tratto biometrico; Circonvenzione:
indica il grado di difficoltà nell’ingannare il sistema con tecniche fraudolente. Scelta dei tratti per
l’identificazione  on tutti i tratti possono essere utilizzati sia in Autenticazione che in Identificazione. Solo
l’impronta e l’iride sono usati per l’identificazione 1:N, dove N è molto grande. Mano, volto, voce e firma
sono usati solo per: autenticazione 1:1; identificazione 1:N, con N nell’ordine delle decine. Variazione del
tratto  il tratto biometrico può variare nell’arco di una vita oppure giorno dopo giorno. La progettazione
di un sistema biometrico deve considerare la varianza propria del tratto scelto. Le principali cause di
variabilità sono (alcuni esempi): volto (occhiali, capelli, barba, espressioni); firma: variazioni, disuso,
abbellimenti; voce: raffreddore, raucedine. I campioni indipendenti  sono il numero di campioni differenti
dello stesso tratto che possiamo registrare per ogni persona. Maggiore è il numero dei campioni
indipendenti utilizzati in un sistema biometrico, maggiore sarà la sua accuratezza.
Diffusione dei tratti biometrici  i tratti maggiormente utilizzati nei sistemi biometrici sono: impronta 44%;
volto 19%; geometria della mano 9%; iride 7%; voce 4%; firma 2%. Il riconoscimento dell’impronta digitale
 avviene secondo tre approcci: basato su correlazioni (il confronto avviene pixel a pixel); basato sulle
caratteristiche dei «ridge» (il confronto avviene «ridge a ridge»); basato sulle minuzie (il confronto avviene
«minuzia a minuzia»). Alcune criticità dell’impronta digitale: è difficile progettare dei sistemi che riescano
a: funzionare anche con piccoli «overlap», funzionare anche con diverse condizioni della pelle; funzionare
anche con diversi sensori, aumentare la qualità dei campioni utilizzati. Il volto  è uno dei tratti biometrici
meno intrusivi. Trova tantissime applicazioni pratiche. È il metodo che normalmente le persone utilizzano
per riconoscersi tra di loro. Il riconoscimento del volto, trasformazione: è uno dei due approcci disponibili
per il riconoscimento. Si crea una «base di immagini» che permette di ricostruire un nuovo volto come una
somma delle immagini contenute nella base. Il riconoscimento del volto, attributi: è uno dei due approcci
disponibili per il riconoscimento. Si localizza il volto in un’immagine e si misurano delle caratteristiche
specifiche (ad esempio: lunghezza del naso e della bocca, la distanza fra gli occhi, ecc). Alcune criticità del
volto: è difficile progettare dei sistemi che riescano a gestire in modo efficace: espressioni del volto;
variazioni della posa; variazioni degli sfondi delle scena; variazioni delle luci della scena; invecchiamento del
volto. La geometria della mano  è un tratto biometrico poco invasivo e quindi generalmente ben
accettato dagli utenti. Offre un discreto livello di accuratezza. Può lavorare su tre viste: palmare, laterale,
dorsale. L’iride  è il tratto biometrico più accurato. È generalmente percepito come invasivo dagli utenti.
Presenta numerose caratteristiche stabili nel tempo e esistenti già dall’ottavo mese di vita. Modalità di
riconoscimento dell’iride: il riconoscimento prevede i seguenti step: identificazione della pupilla;
identificazione dell’iride; rimozione di ciglia e riflessi; linearizzazione dell’iride; creazione dell’IRIS CODE. La
firma  è un metodo molto diffuso e semplice. Presenta una bassa accuratezza. Il costo del sensore è
moderato. Può utilizzare la firma statica e quella dinamica. La voce  è un tratto biometrico ben accettato
dagli utenti. L’accuratezza è bassa. Il costo è moderato. I campioni richiedono grandi dimensioni. La
resistenza alle frodi è bassa.
La soft biometrics  tilizza alcuni tratti biometrici che non posseggono tutte le sette caratteristiche
necessarie. Sono usualmente usati in aggiunta ai tratti biometrici classici: genere; colore (della pelle, dei
capelli, degli occhi); peso; altezza; ecc.
Aspetti di privatezza  l’anello debole  anche utilizzando le tecnologie biometriche rimane l’anello
debole della catena di identificazione: la fonte. Un documento biometrico nasce da altri documenti
tradizionali. Non vi sarà mai una prova biometrica iniziale come primo anello della catena. Questo è l’anello
debole
Acquisizione: Riconoscimento: autenticazione (con CIE)

C’è un problema  moltissimi studi dimostrano che dal template in molti casi è possibile ricostruire una
copia molto simile del sample che lo ha generato. Lo smarrimento di un documento d’identità potrebbe
determinare la compromissione del tratto biometrico.
Le variazioni del tratto e la privacy  usare un tratto biometrico che presenta un’alta variabilità nel tempo
crea molti falsi negativi (il sistema dice che io non sono io). Dall’altra parte protegge l’utente dall’effetto
«schedatura permanente». In generale è corretto adattare l’invasività del tratto al reale grado di sicurezza
richiesto (esempio: centrale nucleare: IRIDE; esempio: filiale bancaria: GEOMETRIA DELLA MANO; esempio:
rilevamento delle presenze nella PA: ?.

SI03
Il controllo degli accessi  gli obiettivi fondamentali  attraverso il controllo degli accessi si vogliono
raggiungere i seguenti obiettivi: controllare l’accesso alle risorse; identificare chi accede alle risorse,
autorizzare le operazioni che possono essere effettuate in base a chi ha effettuato l’accesso, monitorare le
modalità di accesso e le attività svolte.
Resistenze sociali e culturali  isistemi protetti sono più costosi da realizzare e complessi da utilizzare. Gli
utenti devono essere introdotti alla «cultura» di protezione del sistema e delle proprie responsabilità. Le
credenziali di accesso per essere affidabili richiedono procedure non banali e/o informazioni complesse
(«Ma tanto non è mai successo niente …»).
Autenticazione  consente la regolamentazione dell’accesso a una determinata risorsa. È solitamente
articolata in maniera da verificare chi cerca di accedere a tale risorsa. Da un punto di vista tecnologico le
forme scelte non dovrebbero permettere di risalire alle modalità con cui viene negoziata l’autenticazione
ed alle informazioni che vengono trattate. È propedeutica per stabilire la tipologia di operazioni che
possono essere effettuate sulla risorsa (autorizzazione).
Tecniche di autenticazione  le tecniche utilizzate si dividono in quattro categorie: dimostrazione di
conoscenza - qualcosa che si sa. (Personal Identification Numbers (PIN), password); dimostrazione di
possesso- qualcosa che si ha. (chiavi fisiche, tessere di identificazione, dispositivi ottici, badge);
dimostrazione di avere determinate caratteristiche fisiche - qualcosa che si è. (autenticazione biometrica
con tratti quali: impronta, iride, mano); dimostrazione di avere determinate caratteristiche
comportamentali - qualcosa che si fa. (autenticazione biometrica con tratti quali: voce, firma). Sempre più
spesso anche nelle reti e nei sistemi distribuiti si adottano tecnologie di autenticazione a più fattori. Nei
sistemi di pagamento l’autenticazione a più fattori è diffusa da tempo. L’adozione di forme di
autenticazione biometrica non può prescindere dal rispetto della normativa vigente e dal parere preventivo
del Garante per la protezione dei dati personali
I meccanismi di sicurezza  ci sono diversi meccanismi di sicurezza specifici applicabili ai sistemi di
autenticazione: la crittografia (per la confidenzialità dei dati); la firma digitale, le firme elettroniche e i sigilli
elettronici (per il non ripudio dei messaggi); il controllo degli accessi; l’integrità dei dati; lo scambio dei dati
di autenticazione; il controllo dell’instradamento dei dati (routing). La generazione di traffico spurio per
impedire attacchi di replica basati sull’analisi dello stesso (traffic padding). La notifica della ricezione dei
dati da parte del destinatario. A tali meccanismi di sicurezza si affiancano comunque i meccanismi legati agli
aspetti globali della gestione della sicurezza del sistema.
Robustezza di una password  consideriamo i seguenti elementi: P = probabilità di riuscire a scoprire una
password; L = tempo di vita della password; R = frequenza dei tentativi; S = dimensione della chiave.

La normativa nazionale e europea  normativa in materia di protezione dei dati personali: 1 - il


Regolamento generale sulla protezione dei dati (Regolamento UE 679/2016); 2 - il Codice in materia di
protezione dei dati personali (D.lgs. 30 giugno 2003, n. 196 e s.m.i.). Normativa in materia di servizi
fiduciari e mezzi di identificazione elettronica: il Regolamento eIDAS (Regolamento UE 910/2014).
Normativa in materia di protezione delle reti e dei sistemi informativi: 1 - la Direttiva NIS «misure per un
livello comune elevato di sicurezza delle reti e dei sistemi informativi nell’Unione» (Direttiva UE
1148/2016); 2 - il decreto di attuazione della Direttiva NIS (D.lgs. 18 maggio 2018, n. 65); 3 - la direttiva
recante indirizzi per la protezione cibernetica e la sicurezza informatica nazionali (d.P.C.M. 17 febbraio
2017).
Requisiti di sicurezza  il previgente allegato B al D.lgs. 196/2003 «Disciplinare tecnico in materia di
misure minime di sicurezza» determinava i requisiti da rispettare in materia di complessità della password:
lunghezza di almeno 8 caratteri (o il limite massimo consentito dal sistema qualora inferiore a 8 caratteri);
modifica obbligatoria almeno ogni 6 mesi. Ora sono richieste «misure tecniche e organizzative adeguate
per garantire un livello di sicurezza adeguato al rischio» [GDPR, art. 32(1)].
Password «deboli» e password «complesse»  è quasi impossibile stabilire se una password è
sufficientemente complessa. Molto più semplice è rendersi conto della debolezza di una password. Alcuni
esempi di password deboli: corrispondenti a dati direttamente o indirettamente riconducibili al titolare:
nome, cognome, nomi dei figli, data di nascita, ecc; corrispondenti a parole di uso comune nel dizionario.
Password «deboli»  secondo criteri sufficientemente condivisi una password è sicuramente debole se: è
usata per ogni tipo di accesso; è lunga meno di 8 caratteri; contiene informazioni direttamente o
indirettamente riconducibili al titolare delle credenziali (esempio: il nome utente, il proprio nome, il nome
dell’azienda, il nome del partner, la propria data di nascita); contiene una parola completa (o sue varianti)
Esempio: cane, gatto, casa, zuzzerellone, zuzzerellone23. Password «complesse»  secondo i medesimi
criteri una password è complessa se: è lunga almeno 8 caratteri (meglio almeno 14); non contiene
informazioni direttamente o indirettamente riconducibili al titolare delle credenziali; non contiene una
parola completa (o sue varianti); è significativamente differente dalle precedenti password; contiene
caratteri che appartengano ai seguenti 4 gruppi: lettere maiuscole, lettere minuscole, numeri, caratteri
speciali (~ ! @ # $ % ^ …). Esempio: J*p2leO4>F. Anche la password costruita con i criteri più complessi
perde la sua efficacia se non custodita con la dovuta riservatezza. Una soluzione: il password manager.
Un punto di attenzione  la sottrazione di una password assume un grado di pericolosità proporzionale al
ruolo svolto dal soggetto titolare; ai privilegi attribuito al soggetto titolare. Il furto delle credenziali può
prescindere l’aspetto tecnologico ed essere realizzata già con espedienti di Social Engineering. L’identità
individuata in fase di autenticazione determina quali operazioni possono essere eseguite su una risorsa e se
l’utilizzo di una risorsa debba essere inibito. Questo controllo viene eseguito attraverso le Access Control
List (ACL).
Assegnazione per gruppi omogenei  per organizzare in maniera razionale l’assegnazione delle operazioni
consentite sulle risorse mediante le ACL, i vari utenti possono essere collocati in raggruppamenti omogenei,
la cui afferenza può essere determinata da diversi fattori (organizzativi, funzionali, geografici). Le
informazioni utilizzate nelle fasi di autenticazione/autorizzazione e relative agli utenti e ai gruppi sono
memorizzate in appositi repository

SI04
L’autenticazione federata  AAI: descrizione dello scenario  Un utente in possesso di identità digitale
rilasciata da UniversityBdesidera accedere a una risorsa e-learning denominata Medical Training, la quale è
ospitata su di un sito web alla URI www.resource.ex. L’utente dovrà prima autenticarsi presso la propria
organizzazione (University B). Poiché la risorsa a cui si vuole accedere non ha alcuna informazione in merito
all’organizzazione che ha rilasciato la sua identità digitale, il browser web lo reindirizzerà al servizio
Discovery (altresì detto WAYF, ovvero “Where Are You From”). L’accesso mediante identità digitale
federata  l’accesso a una risorsa utilizzando un’identità federata si compone di due fasi: fase di
autenticazione da parte dell’organizzazione di appartenenza dell’utente; fase di autorizzazione da parte
del fornitore di servizi che gestisce la risorsa a cui si vuole accedere. Nella fase di autorizzazione il fornitore
di servizi potrà scegliere se concedere o negare l’accesso all’utente (nel far ciò utilizzerà le informazioni che
l’organizzazione di appartenenza gli ha inoltrato9.
Autenticazione federata: il flusso logico

AAI: passi operativi  passo 1: il servizio Discovery propone all’utente un elenco di organizzazioni, dal
quale questi selezionerà quella di appartenenza (University B). Passo 2: l’utente viene reindirizzato alla
risorsa. Passo 3: la risorsa invia, tramite il browser Web dell’utente, una richiesta di autenticazione
all’organizzazione selezionata (ciò vuol dire che il browser web dell’utente viene reindirizzato alla pagina di
accesso dell’organizzazione di appartenenza dell’utente - alla URL www.uni-b.ex). Passo 4: l’utente immette
le proprie credenziali nella pagina di accesso dell’organizzazione di appartenenza , venendo reindirizzato
alla risorsa su a cui inizialmente desiderava accedere (www.resource.ex).
Un esempio: il sistema di Identità federata di Unimc  accesso a una risorsa offerta da un SP; la schermata
di login dell’IdP; l’immissione delle credenziali; condizioni di utilizzo e politica sulla privacy; scelta degli
attributi da rilasciare al SP; la schermata del servizio dopo l’accesso.

SI05
Search Engine Optimization (SEO)  L’ottimizzazione per i motori di ricerca  con il termine
ottimizzazione per i motori di ricerca si intendono, nel linguaggio di Internet, tutte quelle attività volte a
migliorarela visibilità di un sito web sui motori di ricerca al fine di incrementare(o mantenere) il
posizionamento nelle pagine di risposta alle interrogazioni degli utenti del web. Scopo dell’attività SEO 
incrementare la visibilità di un dato sitoweb all’interno dei motori di ricerca determinando l’aumentodel
volume di traffico qualificato (utenti specificamente interessati) che il sito riceve tramitei motori di ricerca
(traffico organico). Tali attività comprendono attività di tipo: on page, ottimizzazioni svolte direttamente sul
sito web; off page, attività svolte al di fuori del sito web. Alcune attività SEO  le attività SEO sono attività
di ottimizzazione: della struttura del sito e delle URL (URL optimization); dell’accessibilità delle informazioni
da parte degli spider (robot and sitemap optimization); del codice sorgente (code and error optimization);
dei link (link optimization); delle immagini; dei contenuti della pagina web. Il risultato di un interessante
studio effettuato dall’Oxford Internet Institute in merito a quali siano i website più visitati nel mondo. I 5 SE
più utilizzati al mondo sono: Google – 92,49 % - Bing – 2,46 % - Yahoo – 1,79 % - Baidu – 1,08 % - Yandex Ru
– 0,52 % - altri – 1,60 %. I 5 SE più utilizzati in Europa: Google – 93,63 % - Bing – 2,47 % - Yandex Ru – 1,77 %
- Yahoo – 0,93 % - DuckDuckGo – 0,41 % - altri – 0,78%. I 5 SE più utilizzati in Italia sono: Google – 96,32 % -
Bing – 2,17 % - Yahoo – 0,93 % - DuckDuckGo – 0,23 % - Ecosia – 0,16 % - altri – 0,18 %.
I motori di ricerca  un motore di ricerca (search engine) è un sistema automatico che, su richiesta,
analizzaun insieme di dati e restituisce un indice dei contenuti disponibili, classificandoli in modo
automatico in base a formule. Tali formule (di tipo statistico-matematico) sono in grado di indicare il grado
di rilevanza dell’insieme di dati considerato, data una determinata chiave di ricerca. I principali motori di
ricerca  esistono numerosi motori di ricerca attivi sul web. Google (il più utilizzato su scala mondiale; con
un indice che supera gli 8 miliardi di pagine); Yahoo; Baidu(cinese); Live e Bing (Microsoft); Yandex (russo).
Le fasi di funzionamento dei motori di ricerca  l’attività svolta da un motore di ricerca si articola
principalmente in tre fasi: analisi del campo d’azione (vengono utilizzati appositi crawler - o spider, o
robots); catalogazione del materiale ottenuto; risposta alle richieste dell’utente. SERP  i risultati della
ricerca effettuata sono visualizzati nella Search Engine Result Page (SERP). Tali risultati derivano da un
calcolo matematico effettuato automaticamente attraverso un algoritmo.
Gli strumenti di Google per i webmasters  Google, mette a disposizione dei webmasters una serie di
strumenti che aiutano le strategie SEO e aiutano nell’analisi dei propri siti web: Google Analytics; Google
Trend; Google Webmaster Tools; Google Adsense.
Deep web e dark web  «Il web sommerso (o in inglese deepweb, «web profondo») è l’insieme delle
risorse informative del World Wide Web (www) non indicizzate dai normali motori di ricerca». «Il dark web
è un sottoinsieme del deepweb, solitamente irraggiungibile attraverso una normale connessione Internet
senza far uso di software particolari perché giacente su reti sovrapposte ad Internet chiamate
genericamente darknet. […] L’accesso a queste reti avviene tramite software particolari che fanno da ponte
tra Internet e la darknet».
Gli algoritmi di posizionamento  i motori di ricerca si avvalgono di specifici algoritmi in base ai quali
provvedono a catalogare i contenuti del surface web e a determinarne il relativo posizionamento all’interno
della SERP. Google utilizza vari parametri per effettuare tale attività, di cui il principale è l’algoritmo
PageRank.
Le penalizzazioni  la maggior parte dei motori di ricerca (come Google) assegna ai siti web che utilizzano
pratiche di posizionamento ritenute scorrette, delle «penalizzazioni» finalizzate ad abbassarne il
posizionamento nella SERP. Tale situazione determina una diminuzione del traffico web diretto verso il sito
incriminato. Le penalizzazioni in Google  alcune delle pratiche considerate scorrette sono: contenuti
duplicati; Keywords stuffing; Hidden keywords. Le penalizzazioni possono essere: manuali se determinate
da un operatore del Search Engine; automatiche se effettuate autonomamente dagli strumenti del S.E.
Lo spider (crawler, o robot)  è un agente software usato dai motori di ricerca per analizzare, ricercare ed
elaborare i contenuti dei siti web e delle sue pagine. Lo spider raggiunge il sito attraverso una URL e quindi
ne analizza tutti i contenuti muovendosi attraverso i links(collegamenti). Esso ricerca quei fattori utilizzati
dai vari algoritmi per valutare un sito web e definirne il posizionamento.
Consigli per l’indicizzazione  è utile assicurarsi che lo spider riesca ad analizzare completamente quella
parte di sito web che si vuole esporre nel surface web. A livello operativo si raccomanda di: garantire la
navigabilità del sito da ogni pagina (da ogni pagina web deve essere possibile raggiungere tutte le altre);
garantire la navigabilità del sito dalla Home Page (dalla Home Page deve essere possibile raggiungere tutte
le altre).
Controllo dell’operato degli spiders  ogni pagina raggiunta dagli spiders viene di norma indicizzata
(ovvero scannerizzata e inserita nel database del S.E.). Possiamo controllare il contenuto degli spiders
fornendogli alcune istruzioni su cosa analizzare e cosa non analizzare. Tali istruzioni sono contenute nel file
robots.txt. Attenzione: gli spiders possono ignorare le istruzioni contenute nel file robots.txt. Esempio di
file robots.txt  di seguito è riportato il contenuto di un file robots.txt. Si noti come l’istruzione Disallow
indichi agli spiders di non indicizzare la risorsa. Tale file può esporre contenuti riservati e sensibili.
Spiders e search engine
Il Backlink  anche detto link entrante o collegamento entrante (in inglese backlink, abbreviato in BL), è
un collegamento ipertestuale che punta a una determinata pagina web. Viene indicato anche con i nomi di:
ncominglink; inboundlink; inlink; inwardlink.
La link popularity  si intende il numero di siti Internet che si collegano a una pagina web. È una misura
dell’affidabilità dei contenuti di un sito web e ne influisce la visibilità online. I motori di ricerca premiano
tale affidabilità mediante un incremento posizionale nella SERP. È comunque solo uno dei tanti parametri
considerati dai S.E. per decidere la posizione di una pagina.
Backlink e link popularity  i backlink svolgono un ruolo di primaria importanza nel calcolo della popolarità
di una pagina web (link popularity o LP) e sono sfruttati dai motori di ricerca all’interno degli algoritmi che
generano la SERP. I link vengono valutati per la loro qualità e pertinenza. È importante avere un profilo di
backlink di qualità. È possibile ottenere i backlink da vari tipi di domini. Un profilo di backlink di qualità  il
backlink devono essere attinenti: l’anchor text, ovvero il testo che punta alla pagina di destinazione non
deve essere troppo focalizzato su parole chiave di conversione, ma usare il nome del sito (anchor text
brand). I backlink devono prevenire da siti attendibili: più il PageRank (PR) è alto, più l’impatto del backlink
avrà effetto sul link di riferimento.
Il PageRank  è un algoritmo usato da Google per assegnare un punteggio a una pagina web. Il PageRank
influenza i risultati di ricerca e quindi il posizionamento delle pagine web, pur essendo solo uno dei tanti
fattori che incidono sul posizionamento. L’aumento del PageRank è dato da vari fattori, come il numero di
Backlink, purché provengano da siti: con un PageRank alto; che trattino argomenti analoghi o correlati.
Il web spam  è una tecnica scorretta utilizzata per incrementare artificialmente il PageRank assegnato a
un sito web. Utilizza principalmente due vie: link e parole chiave nascoste, che vengono comunque
indicizzate dai motori di ricerca; creazione di numerose pagine che puntano a un’unica pagina designata in
precedenza, in modo da incrementare la rilevanza di suddetta pagina ai fini della classificazione da parte
del motore di ricerca.
Il TrustRank  èuna tecnica di analisi dei link di un sito per distinguere le pagine «utili» ai fini della
navigazione dallo spam. Opera attraverso un processo a più fasi: l’algoritmo seleziona un gruppo di pagine
delle quali non è chiaro lo “spam status”, chiamate seed; un operatore umano esamina le pagine e
comunica all’algoritmo quali possono essere definite spam (badpages) e quali no (goodpages); l’algoritmo
identifica le altre pagine sulla base della precedente classificazione umana. TrustRank: alcuni fattori di
influenza  anzianità di un dominio; molti link in entrata (autorevoli e non da spam); pochi link in uscita;
aggiornamento del sito; link (in entrata e in uscita) sono riferiti a siti web che trattano argomenti coerenti.
L’ottimizzazione SEO «on page»  Il tag<Title>  indica il titolo della pagina e si inserisce nei tag
<head></head>; <html><head>; <title>Titolo della pagina</title>; </head></html>. Dovrebbe
comprendere il titolo della pagina e una breve descrizione della stessa, avendo cura di inserirvi le parole
chiave più importanti che ne rispecchiano il contenuto. I tag che evidenziano parti del testo  nei tag<h1>
... <h6> vanno inseriti i titoli e i sottotitoli, quindi devono contenere delle parole che sintetizzano il
contenuto del testo. I tag<b>e <strong>marcano in grassetto il testo, quindi dovrebbero essere utilizzati per
marcare le parole chiave della pagina (keywords). I tag<em>e <i>marcano in corsivo il testo e dovrebbero
contenere parole chiave.
I Metatag  non producono effetti visibili all’utente ma sono utilizzati esclusivamente per definire alcuni
metadati. Vanno inseriti tra i tag<head></head>. I principali sono: Meta Description; Meta Classification;
Meta Keywords; Meta Robots. Significato dei Metatag  Meta Description: fornisce una descrizione della
pagina (<meta name="description" content="Testo che descrive il contenuto della pagina">). Meta
Keywords: fornisce una lista di parole chiavi caratterizzanti la pagina (<meta name="keywords"
content="parola1, parola2, parola3">). Meta Classification: specifica l’argomento della pagina (<meta
name="classification" content="Argomento della pagina">). Meta Robots: indica agli spiders come
comportarsi (<meta name="robots" content="index, nofollow">). Altri Metatag  altri Metatag sono
utilizzati per fornire indicazioni in merito a svariati elementi della pagina, come: l’autore; lo strumento di
sviluppo; la versione ISO; la lingua. Alcuni esempi: <meta http-equiv="content-type" content="text/html;
charset=iso-8859-1">; <meta http-equiv="content-language" content="it">.
Ottimizzazione delle immagini  è possibile ottimizzare l’indicizzazione delle immagini ricorrendo
all’utilizzo di due attributi del tag img: alt viene usato per descrivere l’immagine in modo testuale, ovvero è
un testo alternativo (alternate text) (<imgsrc="penna.jpeg" alt=«Viene mostrata una penna">); title con
l’attributo title che nasce e viene usato per fornire informazioni aggiuntive all’elemento html
(<imgsrc="penna.jpeg" title="Questa è una penna">).
Il file robots.txt  è utilizzato per indicare agli spiders quali pagine non devono essere indicizzate. Tale file
va inserito nella root del sito web. Le regole e le istruzioni ivi contenute sono una sorta di «linee guida» che
i motori di ricerca potrebbero anche non rispettare. Alcune istruzioni sono inseribili direttamente in ogni
singola pagina attraverso il meta tag robots.
Un esempio di file robots.txt  User-agent:* indica il motore di ricerca a cui riferire l’istruzione (in questo
caso ogni motore di ricerca). Le restanti regole Disallow indicano se disabilitare l’indicizzazione di specifici
tipi di file (css, javascript) o di particolari pagine (admin.php) o di particolari percorsi (/admin)

Il file sitemap.xml  è un file in formato XML che contiene una lista di URL del sito web raggruppati in una
sorta di mappa. Indica allo spider qual è la struttura del sito web. Nel caso di Google, va trasmessa al
motore di ricerca attraverso gli Strumenti per i Webmaster di Google. Include varie informazioni, come:
URL, data di ultima modifica, frequenza di modifica, priorità.
Alcune considerazioni di sicurezza  è buona norma evitare che il file robots.txt sia visualizzabile come se
fosse un normale documento web. Potrebbe rivelare alcune informazioni sensibili, quali delle pagine
nascoste o delle pagine di login per accessi amministrativi.
Analisi del contenuto di sitemap.xml

L’ottimizzazione SEO «off page»  Il link Building  è una strategia finalizzata a garantire l’aumento dei
link in entrata(backlink). Gli algoritmi attualmente utilizzati dai principali motori di ricerca premiano la
qualitàdei link, piuttosto che la loro mera quantità. È importante avere molti link da: siti che siano attinenti
con gli argomenti trattati; siti che siano considerati autorevoli (alto pagerank); servizi di directory ritenuti
autorevoli.
Il Bounce Rate (o frequenza di rimbalzo)  è un termine utilizzato nell’analisi di traffico sui siti web. Un
bounce avviene quando l’utente abbandona il sito entro pochi secondi, dopo aver preso visione di una sola
pagina web. Un basso tasso di abbandono è indice di buona organizzazione dei contenuti e di un aspetto
grafico accattivante. Alcuni fattori d’incremento del Bounce Rate  contenuti non attinenti con le parole
chiave cercate; caricamento lento della pagina; eccessivo utilizzo di materiale pubblicitario; pagina non più
esistente ma ancora indicizzata nei motori di ricerca (consigliato l’utilizzo di tecniche di URL rewritinge URL
redirecting).

SI06
Segretezza delle informazioni e spionaggio  Scambio delle informazioni in segretezza  la diffusione e il
reperimento di notizie, richiede che vengano considerati i seguenti quattro elementi: contesto; agenti;
azioni; canale. Il contesto  coincide con il contesto in cui si intende agire. Richiede la delimitazione di
un’area di interesse su cui concentrarsi, eventualmente modificabile nel tempo. Qualora ci si rendesse
conto che le informazioni ricercate sono situate o gestite in differenti contesti, allora si potrà modificare
l’area di interesse originaria. Gli agenti  coincide con gli agentiche hanno la capacità di operarenel
contesto prescelto. Possono essere: persone fisiche; enti di altra natura (esempio: programmi informatici).
Le azioni  con il termine azioni ci si riferisce all’insieme di tattiche e procedure di cui si dispone, tali da
poter influenzareil contesto Possono essere attivate: dagli agenti (azioni di sabotaggio o diffusione di
notizie false); dal quartier generale (divulgazione di decisioni politiche finalizzate a spingere l’Altro a
modificare il suo comportamento). Non includono le azioni che dipendono unicamente dal contesto.
Possono essere inconsapevoli (determinate da una propria azione della quale non sono stati
preventivamente previsti gli effetti). Il canale  il canale è il collegamento che unisce gli agenti al quartier
generale, rendendo possibile la comunicazione. Si tratta di un mezzo che può essere molto labile (esempio:
agenti dormienti). Caratterizza un agente in quanto tale (se non fosse in grado di comunicare con
l’istituzione con cui collabora, l’agente sarebbe un individuo/ente qualunque). Senza il canale, l’agente non
potrebbe, né ricevere ordini, né inviare risultati.
La crittografia  «è la scienza che studia il modo di codificare un dato messaggio così che possa essere
fruito solo da persone autorizzate a farlo». Uno dei suoi scopi è quello di assolvere al compito di rendere (in
buona misura) sicuro un canale di comunicazione. Le finalità crittografiche  1: esigenza di protezione
delle informazioni destinate a essere custodite in un archivio (Serve un metodo crittografico il più robusto
possibile - ovvero, che necessita di un tempo di decodifica estremamente lungo – e si presume che
l’attaccante abbia a disposizione anni per agire); 2: esigenza di protezione delle comunicazioni, garantendo
collegamenti salvaguardati (è sufficiente un metodo crittografico più debole; il riferimento è al tempo
«relativo» che un attaccante impiegherà a decodificare il messaggio in rapporto all’operazione in corso di
svolgimento).
Introduzione alla crittografia e ai suoi requisiti di sicurezza  Cosa garantire  tre proprietà:
confidenzialità, solo Alice e Bob devono comprendere il contenuto dei messaggi; integrità, Alice e Bob
devono essere certi che i messaggi non siano stati modificati da terzi; autenticazione, Alice e Bob devono
poter essere sicuri che il loro interlocutore sia effettivamente colui che dice di essere. Ma anche la
proprietà del: non ripudio, Alice e Bob non possono negare di aver spedito un messaggio all’altro
interlocutore.

I possibili rischi  minaccia alla confidenzialità: intercettazione, minaccia all’integrità: modifica dei
messaggi in transito; minaccia all’autenticazione: invio di messaggi arbitrarie reply attack. Minaccia alla
confidenzialità  l’attaccante può intercettare il messaggio ascoltando il canale. Due possibili azioni:
leggere il messaggio (attacco passivo); leggere, cancellare e non inoltrare il messaggio (attacco attivo)

Minaccia all’integrità  l’attaccante può modificare i messaggi in transito. Occorre trovare un metodo per
consentire a Bob di riconoscere la differenza tra un messaggio legittimo e uno contraffatto
Minaccia all’autenticazione  l’attaccante può spedire dei messaggi arbitrari fingendosi un altro (1).
L’attaccante può riutilizzare vecchi messaggi intercettati e salvati (reply attack; 2).

Una soluzione al problema  utilizzare la crittografia: per risolvere tali problemi di sicurezza; per ottenere
il rispetto delle relative proprietà di sicurezza. Creare dei protocolli di sicurezza, ovvero dei precisi schemi
di eventi che fanno utilizzo della crittografia (SSL/TLS, FTPS, SSH, HTTP-S, PGP, …).
La crittografia  fornisce uno strumento per mantenere segrete tutte quelle informazioni che non si
vogliono divulgare pubblicamente, ovvero consente di limitare l’accesso alle informazioni solo a chi è
autorizzato. La crittologia è la crittografia più la crittoanalisi. Il crittosistema è:

Alcune definizioni Cifratura (o Crittazione): l’operazione tramite la quale si nascondono le informazioni.


Cifrario: l’algoritmo tramite il quale si effettua la cifratura. Plaintext (o Testo in Chiaro): l’informazione o il
messaggio da cifrare. Chiave del cifrario: il mezzo fondamentale sfruttato dalla crittazione per convertire il
testo chiaro in testo cifrato. Ciphertext(o Crittogramma): il testo cifrato. Decrittazione: il procedimento di
conversione da testo cifrato a testo chiaro; anch’essa sfrutta la chiave del cifrario. Crittosistema: l’ambito
nel quale sono effettuate le operazioni di crittazione e di decrittazione. Crittoanalisi: la pratica del rivelare
ciò che la crittografia tenta di nascondere. Crittologia: termine che include sia la crittografia che la
crittoanalisi.
Gli utilizzatori storici  i militari; i corpi diplomatici; i diaristi; gli amanti. La crittografia applicata a scopi
bellici rappresenta da molti secoli un’arma determinante nelle mani di coloro che sanno come usarla.
Limitazioni storiche all’utilizzo  necessità di utilizzare molti addetti; inadeguatezza dei mezzi di calcolo;
condizioni di lavoro scomode (avete mai provato a lavorare nel bel mezzo di una battaglia?).
Problemi collaterali dei cifrari classici  la crittografia può rivelarsi un’arma a doppio taglio se un addetto
alla codifica cade nelle mani del nemico. In tal caso bisogna: modificare immediatamente il metodo
crittografico; riaddestrare un gran numero di persone.
Tipologie di cifrario  cifrari classici; cifrari a chiave privata; cifrari a chiave pubblica; cifrari quantistici.
Cifrari classici  si indicano tutti i cifrari in uso prima dell’avvento della crittografia moderna. Fondano la
propria sicurezza sulla segretezza del metodo di cifratura. L’esistenza o meno di una parola chiave è
marginale. Cifrari a chiave privata  in essi si sceglie una password usata sia per codificare che per
decodificare un messaggio. Sono detti anche cifrari simmetrici (alcuni esempi: Des, 3Des, Aes). Un requisito
è che il metodo crittografico scelto sia «sicuro», ovvero non abbia debolezze intrinseche note. Il cifrario
sicuro  un cifrario è definito sicuro se: l’attacco bruteforce (ovvero tentare tutte le parole chiave possibili)
è l’unico metodo di attacco conosciuto; se non esistono metodi alternativi al bruteforce in grado di
assicurare dei vantaggi sensibili. Cifrari a chiave pubblica  in questi cifrari si utilizzano due password, una
per cifrare e l’altra per decifrare un messaggio. Sono anche detti cifrari asimmetrici. Si basano su metodi
matematici particolari, ovvero funzioni veloci da calcolare in un senso, ma assai lente nell’altro (esempio:
due numeri primi molto grandi (chiave privata) e il loro prodotto (chiave pubblica). Il calcolo del prodotto
aumenta polinomialmente rispetto alla lunghezza dei fattori; il calcolo dei fattori primi che hanno
determinato il prodotto aumenta invece esponenzialmente. Cifrari quantistici  si basano sul principio di
Heisemberg (1927) della meccanica quantistica, secondo cui l’atto stesso di osservare uno stato quantistico
lo modifica in maniera irrimediabile. Sono stati sviluppati dei canali di comunicazione tali che le
informazioni ivi scambiate si alterano in modo rilevabile se intercettate da un individuo non autorizzato.

La crittografia classica  Una scienza antica  criptare è una parola che viene dal greco cryptos (nascosto).
Si hanno tracce di applicazioni crittografiche risalenti persino agli antichi Egizi. Uno dei più antichi cifrari che
si conoscono è il «Cesareo», utilizzato dagli imperatori romani. Il “Cesareo”  Giulio Cesare sostituiva ogni
lettera con quella che la segue tre posti più in là nell’alfabeto codificando «CESARE» come «FHVDUH».
Cesare Augusto scriveva i suoi messaggi sostituendo ogni lettera con quella successiva cosi che «CESARE»
diventava «DFTBSF». Questi semplici metodi fanno parte della categoria dei cifrari di sostituzione.
La sostituzione monoalfabetica  un miglioramento successivo consiste nello stabilire una corrispondenza
arbitraria fra i simboli del testo chiaro (come le 26 lettere dell’alfabeto) e i simboli del testo cifrato. Questo
sistema generale è noto come sostituzione monoalfabetica, in cui la chiave è la stringa di 26 lettere
corrispondente all’alfabeto completo.

Un finto senso di sicurezza  tale cifrario potrebbe sembrare sicuro perché, anche se il critto analista,
scoprisse che è stato adottato il metodo di sostituzione lettera per lettera, sarebbe lo stesso difficile per lui
trovare la chiave giusta fra tutte quelle possibili; ben 26!=4*(1026), ovvero = 1*2*3*4*5*6*7*8….*26. In
realtà è facile attaccare il cifrario. Basta conoscere le proprietà statistiche del linguaggio con cui il testo
chiaro è stato scritto; identificare le lettere, i digrammi, i trigrammi più ricorrenti in quel particolare
linguaggio; sostituire, quindi, tali lettere a quelle più ricorrenti nel testo cifrato. Statisticamente le lettere
non sono uguali. Frequenze relative delle lettere in italiano:

Cifrari a chiave privata  Principio di Kerchoff  La segretezza del messaggio è data dalla segretezza della
chiave e dalla robustezza dell’algoritmo. No Security by Obscurity.
Cifratura e decifratura  E = Funzione di codifica; D = funzione di decodifica; m = messaggio; k = chiave; c =
testo cifrato.
Caratteristiche di un buon algoritmo  Ek ( m ) semplice da calcolare, dati m e k; D k ( c ) semplice da
calcolare, dati c e k, ma considerando: Ek ( m )=c dato c ma non k è difficile calcolare m

Chiave usa e getta  per cifrare con buona garanzia di sicurezza si può adoperare il metodo della «chiave
di una sola volta». L’operazione consiste nel: generare una chiave che è composta da soli bit, più lunga
dell’intero messaggio; trasformare quest’ultimo in un’altra stringa di bit; fare un’operazione di «XOR» tra le
due stringhe di bit per ottenere il testo cifrato. Chiave usa e getta: criticità  questo metodo ha però delle
ovvie difficoltà rappresentate dall’uso di una chiave troppo lunga per essere gestita, e dall’aumentare di
tale fattore in modo direttamente proporzionale all’aumento della lunghezza del testo chiaro.
Crittografia Simmetrica o Asimmetrica?  esistono due tipi di crittosistemi che si basano su key o codici
fondamentalmente diversi tra loro: a secret-key (chiave segreta); a public-key(chiave pubblica).
La crittografia simmetrica  la stessa chiave è usata sia per codificare che per decodificare. La segretezza
della chiave garantisce la segretezza e l’integrità del messaggio. La chiave deve rimanere segreta.
Crittografia simmetrica: pro e contro  vantaggi: le chiavi sono corte; l’algoritmo è molto veloce.
Svantaggi: è utilizzabile previa distribuzione della chiave segreta a ogni utente che vuole comunicare;
occorrono più chiavi per comunicare con più utenti (n utenti  n(n-1)/2 chiavi, senza utilizzare il KDC). E se
la chiave è persa o rivelata?  la crittografia simmetrica si basa sulla capacità del mittente e del
destinatario di mantenere segreta la chiave di cifratura. La chiave è unica; per risolvere tali problemi negli
anni ’70 è stata introdotta la crittografia asimmetrica.

La crittografia asimmetrica  per codificare e per decodificare si utilizzano chiavi diverse. Ogni utente ha
una coppia di chiavi: chiave privata → è segreta e non va diffusa; chiave pubblica → va diffusa a tutti.
Crittografia asimmetrica: pro e contro  vantaggi: possibilità di usare la chiave privata per crittare utile
per integrità e autenticazione. Svantaggi: le chiavi sono solitamente lunghe; l’algoritmo è molto lento.
Viene solitamente utilizzata per stabilire una chiave di sessione (di tipo simmetrico).

Il calcolo dello hash  Le funzioni hash sono funzioni che trasformano: un dato input di lunghezza
arbitraria in un output di lunghezza costante predeterminata.
Caratteristiche delle funzioni hash  One way: dato x è facile determinare h(x). Dato y è difficile trovare
un x tale che y = h(x) (Preimage resistance). Dato x è difficile trovare un x’ tale che h(x) = h(x’) (Second
preimage resistance). Collision resistant: è difficile trovare due valori x e x’ distinti tali che h(x) = h(x’).
Effetto valanga: basta una piccola modifica al valore di x per produrre grandi cambiamenti in h(x).
Riassumend  esistono due tipi di funzioni hash: keyed (con chiave); non-keyed (senza chiave). Le funzioni
hashnon-keyed non garantiscono autenticazione ma solo integrità. Per avere garanzia di autenticazione e
integrità dobbiamo necessariamente utilizzare le funzioni hash keyed(che non tratteremo).

Introduzione alla firma digitale  Public K e Private K:

La firma digitale  è uno schema basato sulla crittografia asimmetrica: Alice pubblica una chiave (chiave
pubblica) che è utilizzabile da chiunque per verificare la sua firma. Solo Alice può inviare i messaggi firmati
(con la sua chiave privata). Chiunque può verificare la firma di Alice (con la chiave pubblica di Alice) .
Questo schema garantisce esclusivamente autenticazione e integrità.
Creazione della firma  si calcola il digest del testo in chiaro; si codifica il digest con la chiave privata del
mittente; si abbinano il testo in chiaro e la firma digitale.
Verifica della firma  si separa il testo in chiaro dalla firma; si decodifica la firma con la chiave pubblica del
mittente; si calcola il digest del testo in chiaro; si verifica se i due digest ottenuti sono coincidenti: se SI il
testo è integro; se NO il testo è stato alterato.

Proprietà delle funzioni di firma 

Cifrari quantistici  Il cifrario Vernam  ne esiste un’implementazione perfetta, seppur impraticabile. È


stato matematicamente dimostrato che non esistono altri metodi di attacco al di fuori del bruteforce.
Prevede lo scambio di una chiave tra emettitore e ricevente del messaggio, caratterizzata da essere: lunga
quanto il messaggio stesso; casuale (random); segreta; utilizzabile una sola volta.
Funzionamento di un cifrario quantistico  Alice invia a Bob una chiave di lunghezza doppia rispetto alle
necessità; Bob invia (in chiaro e su di un canale non sicuro) ad Alice la prima metà della chiave che ha
appena ricevuto. A questo punto si verificano due casi a seconda che la metà della chiave inviata da Bob ad
Alice coincida o meno con quella che Alice aveva originariamente trasmesso
Caso 1: la metà chiave coincide  si ha la certezza dell’assenza di spie in ascolto. Si può utilizzare l’altra
metà della chiave per codificare il messaggio con il cifrario perfetto e poi inviarlo sul canale non sicuro.
Caso 2: la metà chiave non coincide  si ha la certezza che qualcuno (la spia) ha ascoltato la
comunicazione, modificando la parola chiave per il solo fatto di averla osservata. Si ripete il processo
definendo una nuova chiave.
Cifrario quantistico: considerazioni  non è possibile utilizzare il cifrario quantistico per scambiare
direttamente il messaggio invece delle chiavi. Infatti, in caso di intercettazione, l’informazione sarebbe
modificata ma solo in misura determinata. Sopravvivrebbe una porzione del messaggio riservato, e quindi ci
sarebbe il rischio di rivelare alla spia parte del contenuto

SI07
Le firme e i sigilli  Riferimenti normativi  Regolamento eIDAS: regolamento (UE) n. 910/2014 del
Parlamento europeo e del Consiglio del 23 luglio 2014 in materia di identificazione elettronica e servizi
fiduciari per le transazioni elettroniche nel mercato interno e che abroga la direttiva 1999/93/CE. Codice
dell’Amministrazione Digitale: Decreto legislativo 7 marzo 2005, n. 82 «Codice dell’amministrazione
digitale», così come modificato dal Decreto legislativo 13 dicembre 2017, n. 217.
Le firme  differenti tipologie di firme  firma elettronica; firma elettronica avanzata; firma qualificata;
firma digitale.
Firma elettronica  «Dati in forma elettronica, acclusi oppure connessi tramite associazione logica ad altri
dati elettronici e utilizzati dal firmatario per firmare»[Reg. eIDAS, art. 3(10)] (esempio: scrivere il proprio
nome e cognome in un documento di MS Word;«dati per la creazione di una firma elettronica», i dati unici
utilizzati dal firmatario per creare una firma elettronica[Reg. eIDAS, art. 3(13)]; «firmatario»,una persona
fisica che crea la firma elettronica[Reg. eIDAS, art. 3(9)]. Effetti giuridici della firma elettronica  «A una
firma elettronica non possono essere negati gli effetti giuridici e l’ammissibilità come prova in procedimenti
giudiziali per il solo motivo della sua forma elettronica o perché non soddisfa i requisiti per firme
elettroniche qualificate»[Reg. eIDAS, art. 25(1)]. Sancisce la non discriminazione dei documenti informatici
rispetto a quelli cartacei. Definizione di firma elettronica: riflessioni  è una definizione generica che: non
specifica i requisiti tecnici dei dispositivi da utilizzare; non prevede misure particolari per garantire la
connessione univoca tra il firmatario e i mezzi che questi usa per generare la firma. Consente la libera
implementazione di soluzioni tecnologiche e procedurali differenti, con differenti livelli di affidabilità e
sicurezza. Differente efficacia probatoria dei documenti.
Firma elettronica avanzata  è una firma elettronica che soddisfa i seguenti requisiti: è connessa
unicamente al firmatario; è idonea a identificare il firmatario; è creata mediante dati per la creazione di una
firma elettronica che il firmatario può, con un elevato livello di sicurezza, utilizzare sotto il proprio esclusivo
controllo; è collegata ai dati sottoscritti in modo da consentire l’identificazione di ogni successiva modifica
di tali dati. FEA Vs FE  «L’elemento che differenzia in modo sostanziale una firma elettronica avanzata da
una firma elettronica è la capacità della FEA di rilevare le eventuali modifiche apportate al documento dopo
la sottoscrizione, che rassicura il firmatario riguardo all’integrità e immodificabilità delle dichiarazioni ivi
prodotte». «Una piattaforma FEA, […] oltre a consentire l’uso dei mezzi di identificazione più sicuri […],
deve essa stessa garantire nel tempo l’integrità e l’immodificabilità del documento firmato digitalmente,
indipendentemente dal sistema nel quale esso viene memorizzato e gestito». Ulteriori requisiti dal DPCM
22/2/2013  le Regole tecniche italiane (in merito alla generazione, apposizione e verifica delle firme
elettroniche avanzate) introducono alcuni requisiti addizionali: il controllo esclusivo del firmatario del
sistema di generazione della firma, ivi inclusi i dati biometrici eventualmente utilizzati per la generazione
della firma medesima; la possibilità per il firmatario di ottenere evidenza di quanto sottoscritto;
l’individuazione del soggetto che utilizza la FEA nei rapporti intrattenuti con soggetti terzi per motivi
istituzionali, societari o commerciali; l’assenza di qualunque elemento nell’oggetto della sottoscrizione
atto a modificarne gli atti, fatti o dati nello stesso rappresentati. La firma grafometrica  è un esempio di
firma elettronica avanzata. Viene generata con un processo in cui si collega inscindibilmente un
documento informatico ai parametri comportamentali che corrispondono alla firma autografa che il
firmatario traccia su di un tablet avvalendosi di un apposito software. FEA: considerazioni  la libertà
concessa ai produttori di soluzioni di firma elettronica avanzata richiedono alcune accortezze per consentire
ex post il rispetto dei requisiti di legge e l’attribuzione dell’autenticità ai documenti sottoscritti. È necessario
archiviare e conservare: documenti informatici in cui sono apposte o associate le firme; l’insieme dei
metadati descriventi le tecnologie e le procedure utilizzate per la generazione della FEA.
Firma elettronica qualificata  È «una firma elettronica avanzata creata da un dispositivo per la creazione
di una firma elettronica qualificata e basata su un certificato qualificato per firme elettroniche»[Reg. eIDAS,
art. 3(12)]; «certificato qualificato di firma elettronica», un attestato elettronico che collega i dati di
convalida di una firma elettronica a una persona fisica e conferma almeno il nome o lo pseudonimo di tale
persona, che è rilasciato da un prestatore di servizi fiduciari qualificato ed è conforme ai requisiti di cui
all’allegato I [Reg. eIDAS, art. 3, paragrafi 14 e 15]; «dispositivo per la creazione di una firma elettronica
qualificata», un software o hardware configurato utilizzato per creare una firma elettronica, che soddisfa i
requisiti di cui all’allegato II [Reg. eIDAS, art. 3, paragrafi 22 e 23]. Requisiti per i certificati qualificati  al
loro interno devono essere contenuti i seguenti dati: 1) un’indicazione […] del fatto che il certificato è stato
rilasciato quale certificato qualificato di firma elettronica; 2) un insieme di dati che rappresenta in modo
univoco il prestatore di servizi fiduciari qualificato che rilascia i certificati qualificati e include almeno lo
Stato membro in cui tale prestatore è stabilito, nonché il nome e, se del caso, il numero di registrazione
quali figurano nei documenti ufficiali (se trattasi di una persona giuridica), oppure il nome della persona
(nel caso di una persona fisica); 3) almeno il nome del firmatario, o uno pseudonimo; 4) i dati di convalida
della firma elettronica che corrispondono ai dati per la creazione di una firma elettronica; 5) l’indicazione
dell’inizio e della fine del periodo di validità del certificato; 6) il codice di identità del certificato che deve
essere unico per il prestatore di servizi fiduciari qualificato; 7) la firma elettronica avanzata o il sigillo
elettronico avanzato del prestatore di servizi fiduciari qualificato che rilascia il certificato, nonché il luogo in
cui questo è disponibile gratuitamente; 8) l’ubicazione dei servizi a cui ci si può rivolgere per informarsi
sulla validità del certificato qualificato; 9) qualora i dati per la creazione di una firma elettronica connessi ai
dati di convalida della firma elettronica siano ubicati in un dispositivo per la creazione di una firma
elettronica qualificata, un’indicazione appropriata di questo fatto; 10) il codice fiscale; 11) le qualifiche
specifiche del titolare di firma elettronica (l’appartenenza a ordini o collegi professionali, la qualifica di
pubblico ufficiale, l’iscrizione ad albi, il possesso di abilitazioni professionali o poteri di rappresentanza); 12)
i limiti d’uso del certificato, ivi inclusi quelli derivanti dalla titolarità delle qualifiche e dei poteri di
rappresentanza di cui al punto precedente; 13) i limiti del valore degli atti unilaterali e dei contratti per i
quali il certificato può essere usato, ove applicabili. Nota i requisiti di cui ai punti da 10 a 13 derivano dalla
normativa italiana e non dal Regolamento eIDAS.
Requisiti dei dispositivi usati per la FEQ  devono garantire, mediante mezzi tecnici e procedurali
appropriati, almeno quanto segue: 1) assicurare la riservatezza dei dati per la creazione di una firma
elettronica, nonché che questi compaiano in pratica una sola volta; 2) assicurare che i dati per la creazione
di una firma elettronica non possano (con un grado ragionevole di sicurezza) essere derivati e la firma
elettronica sia attendibilmente protetta da contraffazioni compiute con l’impiego di tecnologie attualmente
disponibili; 3) assicurare che i dati per la creazione di una firma elettronica possano essere attendibilmente
protetti dal firmatario legittimo contro l’uso da parte di terzi; 4) che i dati da firmare non siano alterati; 5)
che sia impedita la presentazione di tali dati al firmatario prima della firma.

Firma digitale  «Un particolare tipo di firma qualificata basata su un sistema di chiavi crittografiche, una
pubblica e una privata, correlate tra loro, che consente al titolare di firma elettronica tramite la chiave
privata e a un soggetto terzo tramite la chiave pubblica, rispettivamente, di rendere manifesta e di
verificare la provenienza e l’integrità di un documento informatico o di un insieme di documenti
informatici». Varianti di firma digitale  Firma digitale generata con il dispositivo rilasciato al titolare;
Firma digitale remota (prevede l’installazione del certificato elettronico qualificato del firmatario, in un
sistema HSM - Hadware Security Module - attivato presso un certificatore accreditato). Considerazioni sulla
firma digitale  è l’unica tipologia di firma elettronica qualificata esistente nella Repubblica italiana.
Utilizza un algoritmo crittografico a chiavi asimmetriche che viene applicato all’impronta del file contenente
la rappresentazione digitale del documento. Tale rappresentazione è generata con la funzione di hashSHA-
256, conformemente allo standard ISO 10118-3:2004.
Gli effetti giuridici delle firme

Sigillo elettronico  «Dati in forma elettronica, acclusi oppure connessi tramite associazione logica ad altri
dati in forma elettronica per garantire l’origine e l’integrità di questi ultimi»[Reg. eIDAS, art. 3(25)]; «dati
per la creazione di un sigillo elettronico», i dati unici utilizzati dal creatore del sigillo elettronico per creare
un sigillo elettronico[Reg. eIDAS, art. 3(28)]; «creatore di un sigillo», una persona giuridica che crea un
sigillo elettronico [Reg. eIDAS, art. 3(24)].
Sigillo elettronico avanzato  èun sigillo elettronico che soddisfa i seguenti requisiti: è connesso
unicamente al creatore del sigillo; è idoneo a identificare il creatore del sigillo; è creato mediante dati per la
creazione di un sigillo elettronico che il creatore del sigillo elettronico può, con un elevato livello di
sicurezza, usare sotto il proprio controllo per creare sigilli elettronici; è collegato ai dati cui si riferisce in
modo da consentire l’identificazione di ogni successiva modifica di detti dati.
Sigillo elettronico qualificato  è «un sigillo elettronico avanzato creato da un dispositivo per la creazione
di un sigillo elettronico qualificato e basato su un certificato qualificato per sigilli elettronici»[Reg. eIDAS,
art. 3(27)]; ««certificato qualificato di sigillo elettronico», un attestato elettronico che collega i dati di
convalida di un sigillo elettronico a una persona giuridica e conferma il nome di tale persona, che è
rilasciato da un prestatore di servizi fiduciari qualificato ed è conforme ai requisiti di cui all’allegato III [Reg.
eIDAS, art. 3, paragrafi 29 e 30]; «dispositivo per la creazione di un sigillo elettronico qualificato», un
software o hardware configurato utilizzato per creare un sigillo elettronico, che soddisfa mutatis mutandis i
requisiti di cui all’allegato II [Reg. eIDAS, art. 3, paragrafi 31 e 32].
Considerazioni sui sigilli elettronici  Asseriscono solo a persone giuridiche (le firme elettroniche
asseriscono solo a persone fisiche). Servono a garantire l’origine e l’integrità dei dati. Per quanto concerne i
requisiti per la creazione di un sigillo elettronico qualificato, nonché per la loro convalida e conservazione, si
applica mutatis mutandis quanto previsto per le firme elettroniche qualificate.
Gli effetti giuridici dei sigilli:

SI08
La marcatura temporale  Riferimenti normativi  Regolamento eIDAS: regolamento (UE) n. 910/2014
del Parlamento europeo e del Consiglio del 23 luglio 2014 in materia di identificazione elettronica e servizi
fiduciari per le transazioni elettroniche nel mercato interno e che abroga la direttiva 1999/93/CE. Codice
dell’Amministrazione Digitale: decreto legislativo 7 marzo 2005, n. 82 «Codice dell’amministrazione
digitale», così come modificato dal Decreto legislativo 13 dicembre 2017, n. 217.
Validazione temporale elettronica  «Dati in forma elettronica che collegano altri dati in forma elettronica
a una particolare ora e data, così da provare che questi ultimi esistevano in quel momento» [Regolamento
(UE) 910/2014, art. 3(33)]. L’obiettivo è quello di dimostrare l’esistenza di tali dati a una determinata data e
ora.
Effetti giuridici della validazione temporale  «Alla validazione temporale elettronica non possono essere
negati gli effetti giuridici e l’ammissibilità come prova in procedimenti giudiziali per il solo motivo della
sua forma elettronicao perché non soddisfa i requisiti della validazione temporanea elettronica
qualificata»[Regolamento (UE) 910/2014, art. 41(1)].
Validazione temporale elettronica qualificata  è una validazione temporale elettronica che soddisfa i
seguenti requisiti: collega la data e l’ora ai dati in modo da escludere ragionevolmente la possibilità di
modifiche non rilevabili dei dati; si basa su una fonte accurata di misurazione del tempo collegata al tempo
universale coordinato [UTC]; ed è apposta mediante una firma elettronica avanzata o sigillata con un sigillo
elettronico avanzato del prestatore di servizi fiduciari qualificato o mediante un metodo equivalente.
VTE qualificata: effetti giuridici  «Una validazione temporale elettronica qualificata gode della
presunzione di accuratezza della data e dell’orache indica e di integrità dei datiai quali tale data e ora sono
associate»[Regolamento (UE) 910/2014, art. 41(2)].
La marca temporale  «marca temporale: il riferimento temporale che consente la validazione temporale
e che dimostra l’esistenza di un’evidenza informatica in un tempo certo»[DPCM 22 febbraio 2013, art. 1, c.
1, lettera i)]; «riferimento temporale: evidenza informatica, contenente la data e l’ora, che viene associata
ad uno o più documenti informatici». Caratteristiche della marca temporale  le regole tecniche di cui al
DPCM 22/2/2013 prevedono che la marca sia generata con un sistema in grado di: garantire un tempo di
risposta, misurato come differenza tra il momento della ricezione della richiesta e l’ora riportata nella
marca temporale, non superiore al minuto primo; garantire che il riferimento temporale assegnato ad una
marca temporale coincida con il momento della sua generazione, con una differenza non superiore ad un
minuto secondo rispetto alla scala di tempo UTC (Tempo Universale Coordinato); soddisfare i requisiti di
sicurezza e robustezza, a livello internazionale riconosciuti come di maggior livello; utilizzare una struttura
dati che includa specifiche informazioni(cfr. slide seguente) e che sia sottoscritta elettronicamente. Marca
temporale: informazioni contenute  sono almeno le seguenti: a) identificativo dell’emittente; b) numero
di serie della marca temporale;c) algoritmo di sottoscrizione della marca temporale; d) certificato relativo
alla chiave utilizzata per la verifica della marca temporale; e) riferimento temporale della generazione della
marca temporale; f) identificativo della funzione di hashutilizzata per generare l’impronta dell’evidenza
informatica sottoposta a validazione temporale; g) valore dell’impronta dell’evidenza informatica e
(eventualmente) codice identificativo dell’oggetto a cui appartiene.
Processo di generazione della MT  1) Applicazione della funzione hashal documento informatico a cui si
vuole associare la marca temporale e conseguente generazione della sua impronta di 256 bit; 2)
Trasmissione dell’impronta al sistema di validazione temporale elettronica di un prestatore di servizi
fiduciari qualificato; 3) Generazione e firma della marca temporale, con successiva sua trasmissione al
soggetto che l’ha richiesta; 4) Associazione della marca temporale al documento informatico a cui è riferita.
Validità di una marca temporale  le marche temporale sono conservate in un apposito archivio digitale
non modificabile. Il periodo di conservazione è non inferiore a venti anni. In caso di accordo tra
presentatore di servizi fiduciari qualificato e utente, tale periodo può essere esteso. La validità di una
marca temporale permane per l’intera durata del periodo di conservazione stabilito o concordato
La validazione temporale elettronica  la normativa italiana ammette i seguenti metodi per la validazione
temporale elettronica dei documenti informatici, che sono opponibili a terzi: 1) generazioni e apposizione di
una marca temporale; 2) utilizzo dei riferimenti temporali opponibili a terzi di cui al DPCM 22 febbraio
2013, articolo 41, comma 4.
I riferimenti temporali opponibili a terzi  sono opponibili a terzi i seguenti riferimenti: il riferimento
temporale contenuto nella segnatura di protocollo; il riferimento temporale ottenuto attraverso la
procedura di conservazione dei documenti […] ad opera di un pubblico ufficiale o di una pubblica
amministrazione; il riferimento temporale ottenuto attraverso l’utilizzo di posta elettronica certificata; il
riferimento temporale ottenuto attraverso l’utilizzo della marcatura postale elettronica.

SI09
La posta elettronica certificata (PEC)  Riferimenti normativi  Regolamento eIDAS: regolamento (UE) n.
910/2014 del Parlamento europeo e del Consiglio del 23 luglio 2014 in materia di identificazione elettronica
e servizi fiduciari per le transazioni elettroniche nel mercato interno e che abroga la direttiva 1999/93/CE.
Codice dell’Amministrazione Digitale: decreto legislativo 7 marzo 2005, n. 82 «Codice dell’amministrazione
digitale», così come modificato dal Decreto legislativo 13 dicembre 2017, n. 217.
Il servizio elettronico di recapito certificato  «Un servizio che consente la trasmissione di dati fra terzi per
via elettronica e fornisce prove relative al trattamento dei dati trasmessi, fra cui prove dell’avvenuto invio e
dell’avvenuta ricezione dei dati, e protegge i dati trasmessi dal rischio di perdita, furto, danni o di modifiche
non autorizzate»
Servizio elettronico di recapito certificato qualificato  è un servizio elettronico di recapito certificato che
soddisfa i seguenti requisiti: è fornito da uno o più prestatori di servizi fiduciari qualificati; garantisce con un
elevato livello di sicurezza l’identificazione del mittente; garantisce l’identificazione del destinatario prima
della trasmissione dei dati; l’invio e la ricezione dei dati sono garantiti da una firma elettronica avanzata o
da un sigillo elettronico avanzato di un prestatore di servizi fiduciari qualificato in modo da escludere la
possibilità di modifiche non rilevabili dei dati; qualsiasi modifica ai dati necessari al fine di inviarli o riceverli
è chiaramente indicata al mittente ed al destinatario dei dati stessi; la data e l’ora di invio e di ricezione e
qualsiasi modifica dei dati sono indicate da una validazione temporale elettronica qualificata.
Effetti giuridici di un S.E.R.C.  «Ai dati inviati e ricevuti mediante un servizio elettronico di recapito
certificato non sono negati gli effetti giuridici e l’ammissibilità come prova in procedimenti giudiziali per il
solo motivo della loro forma elettronica o perché non soddisfano i requisiti del servizio elettronico di
recapito certificato qualificato»
Effetti giuridici di un S.E.R.C.Q.  «I dati inviati e ricevuti mediante servizio elettronico di recapito
certificato qualificato godono della presunzione di integrità dei dati, dell’invio di tali dati da parte del
mittente identificato, della loro ricezione da parte del destinatario identificato e di accuratezza della data e
dell’ora dell’invio e della ricezione indicate dal servizio elettronico di recapito certificato qualificato».
Posta elettronica certificata (PEC)  è il servizio elettronico di recapito certificato attivato in Italia. È un
sistema di comunicazione in grado di attestare: l’invio e l’avvenuta consegna di un messaggio di posta
elettronica; fornire ricevute opponibili a terzi. Tale servizio è erogabile solo da gestori autorizzati dall’AgID,
previa verifica del possesso di specifici requisiti. Una prima criticità  il servizio PEC non assicura il
riconoscimento certo del mittente, ovvero di chi effettua fisicamente la spedizione del messaggio, ma solo
del titolare della casella PEC utilizzata. Giuridicamente si ha la certezza della provenienza, dell’integrità e
della riservatezza della trasmissione telematica, ma non dell’identità di chi ha materialmente scritto il
messaggio.

Consegna con esito positivo: descrizione  1a –l’utente invia una e-mail al Punto di accesso (PdA); 1b –il
PdA restituisce al mittente una Ricevuta di Accettazione (RdA); 2a –il PdA crea una Busta di Trasporto (BdT)
e la inoltra al Punto di Ricezione (PdR) del Gestore destinatario; 2b –il PdR verifica la BdTe crea una
Ricevuta di Presa in Carico (RdPiC) che viene inoltrata al PdR del Gestore mittente; 2c –il PdR verifica la
validità della RdPiC e la inoltra al PdC; 2d –il PdC salva la RdPiC nello store delle ricevute del Gestore; 3 –il
PdR inoltra la BdT al Punto di Consegna (PdC); 4a –il PdC verifica il contenuto della BdT e la salva nello store
(mailbox del destinatario); 4b –il PdC crea una Ricevuta di Avvenuta Consegna (RdAC) e la inoltra al PdR del
Gestore mittente; 4c –il PdR verifica la validità della RdAC e la inoltra al PdC; 4d –il PdC salva la RdAC nella
mailbox del mittente; 5 –l’utente destinatario ha a disposizione la e-mail inviata.
Consegna avente errore di consegna

Consegna con errore di consegna: descrizione  1a –l’utente invia una e-mail al Punto di accesso (PdA); 1b
–il PdA restituisce al mittente una Ricevuta di Accettazione (RdA); 2a –il PdA crea una Busta di Trasporto
(BdT) e la inoltra al Punto di Ricezione (PdR) del Gestore destinatario; 2b –il PdR verifica la BdTe crea una
Ricevuta di Presa in Carico (RdPiC) che viene inoltrata al PdR del Gestore mittente; 2c –il PdR verifica la
validità della RdPiC e la inoltra al PdC; 2d –il PdC salva la RdPiC nello store delle ricevute del Gestore; 3 –il
PdR inoltra la BdT al Punto di Consegna (PdC); 4a –il PdC verifica il contenuto della BdT ma non riesce a
salvarla nello store (es. mailbox del destinatario piena); 4b –il PdC crea un Avviso di Mancata Consegna
(AMC) e la inoltra al PdR del Gestore mittente; 4c –il PdR verifica la validità dello AMC e lo inoltra al PdC; 4d
–il PdC salva lo AMC nella mailbox del mittente.
Le ricevute di avvenuta consegna  ne esistono tre distinte tipologie: completa: contiene sia i dati che
attestano l’avvenuta consegna del messaggio, sia una copia completa del messaggio recapitato; breve:
contiene il messaggio originale, ma senza gli allegati che sono sostituiti dalle loro impronte digitali (ovvero,
il loro hash); sintetica: contiene esclusivamente i dati di attestazione di avvenuta consegna.
Cosa è possibile attestare  ogni distinta tipologia di ricevuta di avvenuta consegna attesta o meno alcuni
elementi: completa, attesta sia il recapito del messaggio, che il contenuto effettivamente consegnato;
breve, attesta il recapito del messaggio (consentendo il risparmio di spazio in memoria) includendo solo lo
hash del messaggio consegnato. Consente la verifica della corrispondenza tra messaggio e ricevuta, ma solo
se entrambi sono conservati e presentati; sintetica: non consente di risalire al contenuto del messaggio a
cui si riferisce.
Differenti effetti giuridici  la scelta del tipo di ricevuta di avvenuta consegna vincola la possibilità di
utilizzo della PEC per la notifica di atti giuridicamente rilevanti.
Note giuridiche  il CAD: riconosce alla trasmissione dei documenti con il servizio PEC, o altro servizio
elettronico di recapito certificato qualificato, il valore delle notificazioni per mezzo della posta, e considera
opponibili a terzi la data e l’ora contenute nelle ricevute di accettazione e di avvenuta consegna di un
documento informatico.
PEC come domicilio digitale  le disposizioni in materia di PEC fanno riferimento all’indirizzo elettronico
dichiarato dal destinatario (ovvero eletto a suo domicilio digitale). È un passaggio giuridico per certificare
l’impegno del destinatario a controllare sistematicamente la sua casella PEC. Infatti, la ricevuta di avvenuta
consegna: attesta che il messaggio è stato depositato nella casella PEC del destinatario; non attesta che il
messaggio è stato letto.
Gli elenchi di fiducia  il CAD prevede la disponibilità di due elenchi online di indirizzi di PEC dichiarati:
indice PA: l’indice dei domicili digitali della pubblica amministrazione e dei gestori di servizi pubblici
[https://www.indicepa.gov.it/documentale/index.php]; INI-PEC: l’indice dei domicili digitali costituiti presso
il registro delle imprese e gli ordini o collegi professionali.

SI10
La protezione dei dati:

Rivelazione delle informazioni  esistono molti tipi di rivelazione delle informazioni. Rivelazione
dell’identità: a partire da un dato rilasciato è possibile identificare un rispondente. Rivelazione degli
attributi: a partire dai dati rilasciati vengono rivelate delle informazioni sensibili relative un rispondente.
Rivelazione induttiva: a partire dai dati rilasciati è possibile determinare il valore di alcune caratteristiche di
un rispondente senza che vi siano record che vi facciano esplicito riferimento
Rivelazione degli attributi  avviene quando a partire dai dati rilasciati sono rivelate (indirettamente o per
mala gestione) delle informazioni sensibili relative ai rispondenti. Le informazioni confidenziali possono
essere: rivelate in modo esatto; stimate.
Microdati e classificazione degli attributi  Identificatori: attributi che identificano in modo univoco il
rispondente dei microdati (ad esempio il codice fiscale). Semi-identificatori: attributi che, in combinazione,
possono essere collegati con informazioni esterne per re-identificare (o ridurre l’incertezza sull’identità)
tutti o alcuni dei rispondenti a cui l’informazione si riferisce (es: data di nascita, CAP e sesso). Confidenziali:
attributi che contengono informazioni «sensibili» (a esempio: informazioni sanitarie, informazioni sui
sussidi). Non confidenziali: attributi che i rispondenti non considerano «sensibili» e il cui rilascio non causa
divulgazione dell’informazione. Il meccanismo di re-identificazione:
Alcuni fattori di rischio  quello che è un semi identificatore cambia da persona a persona. Normalmente il
lavoro non lo è ma esiste un solo Pontefice (e ora anche un solo Pontefice Emerito). Bisogna fare attenzione
alle caratteristiche peculiari di un individuo che ne possono determinare l’identificazione
Le tecniche di protezione dei dati  sono divisibili in tre grandi classi, ciascuna orientata al soddisfacimento
di determinate e differenti finalità: anonimizzazione; pseudonimizzazione; cifratura. Sono tutte tecniche di
trattamento dei dati personali. Differenza tra le tecniche di protezione  anonimizzazione: è finalizzata a
ridurre la probabilità che un individuo (rispondente) sia identificabile; pseudonimizzazione: è finalizzata a
far si che l’informazione identificante non sia più attribuibile a un determinato individuo, senza l’utilizzo di
informazioni aggiuntive; cifratura: particolare tecnica di pseudonimizzazione in cui l’elemento identificabile
viene separato dai dati a seguito di trasformazione del testo in chiaro in un codice inintelligibile (testo
cifrato).
Considerazioni giuridiche  «L’anonimizzazione costituisce un trattamento successivo dei dati personali».
Non è possibile trattare i dati per anonimizzarli o pseudonimizzarli, per finalità non compatibili con quelle
per cui gli stessi dati sono stati raccolti. In tali casi sono richieste altre basi giuridiche che giustifichino il
trattamento successivo. I dati personali devono essere: preventivamente raccolti in un formato di
rappresentazione dei dati identificabile; successivamente trattati in conformità alla normativa. La corte di
giustizia europea evidenzia la necessità di conservare comunque anche i dati in forma identificabile per
consentire l’esercizio di altri diritti degli interessati (cfr. causa C-553/07). La rimozione di ogni elemento
sufficiente a identificare un rispondente deve essere irreversibile e permanente (logicamente equivalente
alla cancellazione). Il fine è quello di rendere impossibile il trattamento dei dati personali. La normativa
indica il risultato da raggiungere, senza dettagliare come operare
Considerazioni tecniche  rimuovere o cifrare gli identificatori espliciti dei rispondenti non è sempre una
misura sufficiente. La pseudonimizzazione non è un metodo di anonimizzazione, in quanto si limita a
ridurre la correlatività di un insieme di dati dall’identità originaria di una persona interessata. Collegando i
dati, presenti in una tabella di microdatide-identificata, con altre sorgenti dati contenenti l’informazione
identificante, è possibile re-identificare i rispondenti. Tale corrispondenza può essere: esatta (il rispondente
dei dati è individuato in modo univoco); ambigua (il rispondente dei dati è individuato in modo impreciso
all’interno di un gruppo limitato di individui). La re-identificazione di un rispondente determina di fatto il
rilascio di altre informazioni che originariamente non si pensava di rilasciare. Una possibile soluzione è
quella di anonimizzare i dati utilizzando k-anonymity (che si avvale di tecniche di generalizzazione e di
soppressione).
Criteri di robustezza delle tecniche di protezione
k-anonymity  viene utilizzata nell’ambito del rilascio di microdatiin forma de-identificata. È usata per
proteggere l’identità dei rispondenti. Non si occupa della protezione degli attributi. Finalità di k-anonymity
 k-anonymity ha lo scopo di garantire un certo grado di incertezza nelle inferenze fatte sui dati. Viene
introdotto un grado di incertezza tale che sarà sempre possibile associare un rispondente con almeno un
gruppo di k persone. Il k rappresenta la dimensione del cluster di rispondenti all’interno del quale è
possibile confondersi. La condizione di k-anonymity  «Ogni rilascio di dati deve essere tale che ogni
combinazione di quasi-identificatori possa essere associata indistintamente ad almeno k rispondenti».
Valgono le seguenti tre ipotesi: 1- la tabella privata ha un solo quasi-identificatore composto da tutti gli
attributi che possono essere disponibili all’esterno; 2 - la tabella privata contiene al massimo una tuplaper
ogni rispondente; 3 - il quasi-identificatore è stato correttamente definito e individuato.
Alcune considerazioni  non è possibile associare al QI un qualsiasi attributo aggiuntivo per ridurre la
cardinalità del cluster k. Infatti già vi appartiene ogni attributo disponibile all’esterno. Scegliendo come QI
un sottoinsieme di quello originario non è possibile compromettere k-anonymity (dato che un ha almeno k
occorrenze per ogni sequenza di valori, un suo sottoinsieme comparirà con un numero di occorrenze -
rispondenti a cui si riferisce - almeno uguale).
Le tecniche usate da k-anonymity  sono 2 tecniche di anonimizzazione non perturbative:
generalizzazione: in cui si sostituisce il valore di un attributo con uno più generale (o meno specifico).
Rilascia un valore dell’attributo vero, seppur meno preciso; soppressione: in cui si rimuove l’informazione
sensibile per proteggerla. Consente di ridurre il numero di generalizzazioni necessarie, per preservare la
significatività dell’informazione. Obiettivo: proteggere l’identità dei rispondenti, ma rilasciare al contempo
il maggior numero possibile di dati
La generalizzazione in k-anonymity  tale tecnica si appoggia su di una gerarchia di generalizzazione di
domini. Un dominio è un insieme di valori associabili a un attributo. Per ogni dominio si può definire una
gerarchia  la gerarchia di domini è una gerarchia di insiemi di valori  si può definire una gerarchia di
generalizzazione per ogni attributo che appartiene al QI. Fornisce risultati meno precisi nella tabella
anonimizzata.
Esempi di generalizzazioni:
Risultati ottenibili  riferendo un valore di un generico attributo a un dominio generale e non specifico, più
tuple avranno lo stesso valore. Si possono costruire vari cluster fino a ottenerne uno con dimensione k. La
generalizzazione può essere effettuata seguendo vari percorsi (strategie di generalizzazione).
La soppressione di tuple in k-anonymity  fornisce risultati meno completi nella tabella anonimizzata;
consente di eliminare un numero massimo di tuple determinato da un valore di soglia; è utile per limitare il
numero di passi di generalizzazione, specie in presenza di valori outlier.
Le tecniche per k-anonymity-1

Lo scopo è ottenere una soluzione minima che consenta di soddisfare il requisito di k-anonymity,
massimizzando l’informazione disponibile (che va mantenuta). Gli algoritmi esatti che calcolano una
soluzione minima hanno un tempo di computazione esponenziale rispetto al numero degli attributi del
quasi-identificatore (QI)
k-anonimity rivisitato  «Un avversario che conosce i dati pubblici di un individuo non può collegare
quell’individuo a meno di krecord nella tabella anonimizzata». Generalizzando a livello di cella si riduce al
minimo la quantità di informazioni perse nel processo di anonimizzazione. Operando a livello di cella il
requisito è meno stringente. Operando a livello di attributo: nella tabella generalizzata ogni ennupla che
appartiene al QI deve avere almeno koccorrenze. Operando a livello di cella: nella tabella generalizzata
ogni ennupla che appartiene al QI si collega ad almeno ktuple. Ma non è detto che ci siano k occorrenze
Esempio di k-anonymity:

Nel caso di k-anonymity rivisitato non basta considerare la tabella anonimizzata per vedere se è k-
anonima, ma occorre anche considerare la tabella privata (che solitamente non è disponibile).
k-anonymity pro e contro  k-anonymity non garantisce la protezione di tutti gli aspetti informativi. k-
anonymity: protegge l’identità dei rispondenti, non protegge le proprietà sensibili associate ai rispondenti.
È possibile imputare una certa informazione a un rispondente, anche se questo può confondersi con altri
rispondenti.
Possibili soluzioni  occorre utilizzare un altro approccio che consideri: l’omogeneità dei valori degli
attributi sensibili (più tuple di una tabella k-anonima con un certo valore nel quasi-identificatore,
condividono lo stesso valore in almeno un attributo sensibile); la pregressa conoscenza dell’osservatore
(utilizzo di informazioni esterne a quelle presenti nella tabella dei microdatiper effettuare collegamenti
finalizzati a inferire le informazioni sensibili).
Differenti tipi di rilascio  positivi: «se l’avversario può identificare correttamente il valore di un attributo
sensibile con alta probabilità»; negativi: «se l’avversario può eliminare correttamente alcuni valori possibili
dell’attributo sensibile (con alta probabilità)».
Un esempio di esposizione  i blocchi nella tabella 4 anonima espongono la proprietà sensibile.

Il «principio non istruttivo»  «La tabella pubblicata dovrebbe fornire all’avversario poche informazioni
aggiuntive altre a quelle già precedentemente conosciute», ovvero «Non ci dovrebbe essere una grande
differenza tra le convinzioni pregresse e quelle posteriori».
Il principio di e-diversity  definiamo q*-blocco, un insieme di tuple con lo stesso valore per gli attributi
che costituiscono il quasi-identificatore, nella tabella anonimizzata. Un blocco q*-blocco è e-diverso se
contiene almeno e valori «ben rappresentati» per l’attributo sensibile S. Una tabella è e-diversa se ogni q*-
blocco è l-diverso
Conseguenze di e-diversity  e misura il grado della diversità dei valori dell’attributo sensibile in un blocco
della tabella anonimizzata; e-diversity impone che i vari cluster di dimensione k siano predisposti
inserendovi informazioni sensibili differenti. Un q-blocco è e-diverso se dopo la rimozione di un valore
sensibile rimane e-diverso. Ci sono e-1 possibilità da dover eliminare prima di esporre l’informazione
sensibile. Ovvero la tabella anonimizzata può resistere a e-1 inferenze dovute alla conoscenza esterna.
Criticità di e-diversity  e-diversity presenta diverse carenze. e-diversity è esposta: all’attacco di
somiglianza; all’attacco di asimmetria
L’attacco di asimmetria  si verifica quando la distribuzione in un q-blocco è diversa dalla distribuzione
nella popolazione originale.
È evidente che il 66% dei rispondenti ha il cancro. Se si ipotizza che il 25% della popolazione globale soffre
comunemente di cancro, è possibile inferire che i rispondenti del q-blocco hanno una maggiore possibilità
di contrarre il cancro
L’attacco di somiglianza  si verifica quando un q-blocco ha per l’attributo sensibile valore diversi, ma che
sono semanticamente simili

È possibile inferire che ogni rispondente che compare nella tabella sia affetto da una malattia psichica.
t-closeness  «richiede che la distribuzione di un attributo sensibile in ogni classe di equivalenza sia vicina
alla distribuzione dell’attributo nella tabella complessiva». t è l’indicatore della vicinanza tra i valori delle
due distribuzioni considerate. Considerazioni su t-closeness  si vuole garantire che la differenza tra la
distribuzione del mondo reale e quella dei valori del q-blocco non sia troppo marcata. Diversamente,
aumenterà l’intervallo di confidenza con cui è possibile asserire il possesso di un’informazione sensibile. Il
q-blocco va costruito senza superare il valore di soglia t.
t-closeness in termini formali «Una classe di equivalenza ha t-closeness se la distanza tra la distribuzione
di un attributo sensibile in quella classe e la distribuzione dell’attributo nell’intera tabella non è superiore
alla soglia t».«Una tabella ha t-closeness se tutte le classi di equivalenza hanno t-closeness».

Potrebbero piacerti anche