Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Sicurezza Informatica: Crittografia, Firma Digitale e Certificati, Appunti di Elementi di Informatica

Appunti presi a lezione.

Tipologia: Appunti

2015/2016
In offerta
30 Punti
Discount

Offerta a tempo limitato


Caricato il 08/06/2016

ChiaraTognini95
ChiaraTognini95 🇮🇹

4.2

(34)

20 documenti

1 / 31

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1. Denizione di “digitale” e “analogico”; conversione da digitale ad analogico
(digitalizzazione e dematerializzazione); campionamento, quantizzazione.
Il termine “digitale” viene dall'inglese digital (aggettivo di digit = cifra), dunque è sinonimo di
“numerico”. Esso fa riferimento alla tecnologia binaria usata dal microprocessore, in cui i due
unici stati possibili di segnale vengono rappresentati rispettivamente con le cifre 0 e 1 (bit). Se
ad una sequenza o congurazione di bit assegniamo un valore posizionale possiamo
interpretarla come rappresentazione di un numero (es. sistema di numerazione decimale). I
dati digitali sono quindi rappresentabili come sequenze o blocchi di simboli binari 0/1; come
tali, quindi come bit, vengono elaborati dal microprocessore, memorizzati (in ciascuna cella di
memoria troviamo appunto un bit) e trasmessi ad altre apparecchiature digitali. Considerando
il bit come unità di misura minima (atomica) dell’informazione digitale, ne ricaviamo i multipli
più utilizzati, come byte (23 bit), word (24 o 25 bit) ecc. Ancora più utilizzati sono i multipli del
byte (KiloB, MegaB, GigaB, TeraB ecc.). L’elaborazione e la trasmissione dei segnali possono
avvenire sia in forma numerica che analogica il termine analogico si usa in
contrapposizione a “digitale. La rappresentazione analogica è quella che è stata utilizzata no
all’arrivo dell’elettronica digitale: con essa le variazioni di una grandezza sica continua
vengono rappresentate o trasmesse attraverso variazioni di altre grandezze, con un rapporto di
analogia (es. al crescere dell’una cresce l’altra, al diminuire dell’una diminuisce l’altra). Alcuni
esempi sono: 1. l'orologio tradizionale, in cui l’incremento del periodo temporale viene
rappresentato proporzionalmente dall’incremento dell’angolo descritto dalla lancetta (mentre
l’orologio digitale presenta solo cifre); 2. il termometro tradizionale, in cui l’incremento della
temperatura viene rappresentato proporzionalmente dall’incremento della lunghezza della
colonnina di mercurio (mentre il termometro digitale mostra solo cifre). 3. la tecnologia di
riproduzione sonora basata su dischi di vinile o su nastri magnetici (audiocassette); 4. la
tecnologia di trasmissione radiofonica, con le varie tipologie di modulazione (ampiezza,
frequenza ecc); 5. la tecnologia di trasmissione televisiva tradizionale, gradualmente sostituita
dal digitale.
Quanto alla digitalizzazione, in senso tecnico il termine indica la procedura di trasformazione-
conversione di una rappresentazione analogica nel formato digitale. Poiché il passaggio
dall’analogico al digitale signica il passaggio dalla rappresentazione continua di una certa
grandezza alla rappresentazione numerica dei valori che quella grandezza assume nel tempo,
ovviamente la misurazione dei relativi valori non potrà essere continua: essa infatti avverrà a
intervalli di tempo deniti, ma ravvicinati quanto necessario per rappresentare fedelmente
l’andamento della grandezza misurata (campionamento) questa tecnica per approssimare
una grandezza continua non è nata con il digitale. Quando guardiamo un lm, l’impressione del
movimento è determinata dalla successione di un certo numero di “campioni” di immagini
statiche, i fotogrammi; lo stesso avviene con lo schermo televisivo o con il monitor del
computer, dove pure l’illusione del movimento viene generata attraverso la successione di
schermate sse (più o meno dalle 50 alle 100 volte al secondo). Comunque il campionamento
digitale implica anche la trasformazione della grandezza in misura della stessa, quindi in
numeri, immediatamente memorizzabili e comunicabili con le tecnologie informatiche
quantizzazione. Ad esempio, utilizzando un programma di registrazione sonora, si nota la
stretta correlazione tra la frequenza di campionamento impostata e la qualità sonora della
registrazione ottenuta. Naturalmente l’impostazione di frequenze di campionamento elevate
implica la registrazione-memorizzazione di un numero molto maggiore di dati per secondo:
perciò, a parità di durata della registrazione, il peso in byte del le ottenuto risulterà
nettamente aumentato. Invece nel linguaggio giuridico-amministrativo il termine
digitalizzazione viene per lo più utilizzato in senso meno specico, per indicare l’attività di
trasformazione della prassi burocratica conseguita attraverso l’introduzione delle tecnologie
informatiche. Indica anche il risultato di questa attività di trasformazione, una delle cui
principali componenti viene anche denita impropriamente come dematerializzazione =
eliminazione del supporto cartaceo, sostituito da un molto meno ingombrante supporto
informatico grazie alla digitalizzazione.
2. Il segno: signicante e signicato; asse sintagmatico e paradigmatico; il fonema e gli
allofoni; il grafema e gli allogra; il glifo
I vari linguaggi utilizzano i fonemi e i grafemi come mattoncini per costruire delle aggregazioni
complesse dette parole. Le parole del linguaggio sono segni, ossia entità linguistiche che
portano con dei signicati (cioè costruzioni astratte della mente che necessitano di un
supporto concreto per essere comunicate). Per questo si dice che il segno è un'entità bifronte
= in esso coesiste un aspetto destinato ad essere percepito dai nostri sensi (signicante) e
un aspetto frutto di astrazione logica ( signicato). In altre parole il signicante è la forma
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
Discount

In offerta

Anteprima parziale del testo

Scarica Sicurezza Informatica: Crittografia, Firma Digitale e Certificati e più Appunti in PDF di Elementi di Informatica solo su Docsity!

  1. Definizione di “digitale” e “analogico”; conversione da digitale ad analogico (digitalizzazione e dematerializzazione); campionamento, quantizzazione. Il termine “ digitale ” viene dall'inglese digital (aggettivo di digit = cifra), dunque è sinonimo di “numerico”. Esso fa riferimento alla tecnologia binaria usata dal microprocessore, in cui i due unici stati possibili di segnale vengono rappresentati rispettivamente con le cifre 0 e 1 (bit). Se ad una sequenza o configurazione di bit assegniamo un valore posizionale possiamo interpretarla come rappresentazione di un numero (es. sistema di numerazione decimale). I dati digitali sono quindi rappresentabili come sequenze o blocchi di simboli binari 0/1; come tali, quindi come bit, vengono elaborati dal microprocessore, memorizzati (in ciascuna cella di memoria troviamo appunto un bit) e trasmessi ad altre apparecchiature digitali. Considerando il bit come unità di misura minima (atomica) dell’informazione digitale, ne ricaviamo i multipli più utilizzati, come byte (23 bit), word (24 o 25 bit) ecc. Ancora più utilizzati sono i multipli del byte (KiloB, MegaB, GigaB, TeraB ecc.). L’elaborazione e la trasmissione dei segnali possono avvenire sia in forma numerica che analogica → il termine “ analogico ” si usa in contrapposizione a “digitale. La rappresentazione analogica è quella che è stata utilizzata fino all’arrivo dell’elettronica digitale: con essa le variazioni di una grandezza fisica continua vengono rappresentate o trasmesse attraverso variazioni di altre grandezze , con un rapporto di analogia (es. al crescere dell’una cresce l’altra, al diminuire dell’una diminuisce l’altra). Alcuni esempi sono: 1. l'orologio tradizionale, in cui l’incremento del periodo temporale viene rappresentato proporzionalmente dall’incremento dell’angolo descritto dalla lancetta (mentre l’orologio digitale presenta solo cifre); 2. il termometro tradizionale, in cui l’incremento della temperatura viene rappresentato proporzionalmente dall’incremento della lunghezza della colonnina di mercurio (mentre il termometro digitale mostra solo cifre). 3. la tecnologia di riproduzione sonora basata su dischi di vinile o su nastri magnetici (audiocassette); 4. la tecnologia di trasmissione radiofonica, con le varie tipologie di modulazione (ampiezza, frequenza ecc); 5. la tecnologia di trasmissione televisiva tradizionale, gradualmente sostituita dal digitale. Quanto alla digitalizzazione , in senso tecnico il termine indica la procedura di trasformazione- conversione di una rappresentazione analogica nel formato digitale. Poiché il passaggio dall’analogico al digitale significa il passaggio dalla rappresentazione continua di una certa grandezza alla rappresentazione numerica dei valori che quella grandezza assume nel tempo, ovviamente la misurazione dei relativi valori non potrà essere continua: essa infatti avverrà a intervalli di tempo definiti, ma ravvicinati quanto necessario per rappresentare fedelmente l’andamento della grandezza misurata ( campionamento ) → questa tecnica per approssimare una grandezza continua non è nata con il digitale. Quando guardiamo un film, l’impressione del movimento è determinata dalla successione di un certo numero di “campioni” di immagini statiche, i fotogrammi; lo stesso avviene con lo schermo televisivo o con il monitor del computer, dove pure l’illusione del movimento viene generata attraverso la successione di schermate fisse (più o meno dalle 50 alle 100 volte al secondo). Comunque il campionamento digitale implica anche la trasformazione della grandezza in misura della stessa, quindi in numeri, immediatamente memorizzabili e comunicabili con le tecnologie informatiche → quantizzazione. Ad esempio, utilizzando un programma di registrazione sonora, si nota la stretta correlazione tra la frequenza di campionamento impostata e la qualità sonora della registrazione ottenuta. Naturalmente l’impostazione di frequenze di campionamento elevate implica la registrazione-memorizzazione di un numero molto maggiore di dati per secondo: perciò, a parità di durata della registrazione, il peso in byte del file ottenuto risulterà nettamente aumentato. Invece nel linguaggio giuridico-amministrativo il termine digitalizzazione viene per lo più utilizzato in senso meno specifico, per indicare l’attività di trasformazione della prassi burocratica conseguita attraverso l’introduzione delle tecnologie informatiche. Indica anche il risultato di questa attività di trasformazione, una delle cui principali componenti viene anche definita impropriamente come “ dematerializzazione ” = eliminazione del supporto cartaceo, sostituito da un molto meno ingombrante supporto informatico grazie alla digitalizzazione.
  2. Il segno: significante e significato; asse sintagmatico e paradigmatico; il fonema e gli allofoni; il grafema e gli allografi; il glifo I vari linguaggi utilizzano i fonemi e i grafemi come mattoncini per costruire delle aggregazioni complesse dette parole. Le parole del linguaggio sono segni , ossia entità linguistiche che portano con sé dei significati (cioè costruzioni astratte della mente che necessitano di un supporto concreto per essere comunicate). Per questo si dice che il segno è un'entità bifronte = in esso coesiste un aspetto destinato ad essere percepito dai nostri sensi ( significante ) e un aspetto frutto di astrazione logica ( significato ). In altre parole il significante è la forma

usata per richiamare l'immagine che nella nostra mente è associata ad un certo significato. Il collegamento tra significante e significato non è determinabile a priori ma è convenzionale , ossia definito arbitrariamente da ogni linguaggio → es. la parola italiana “cane” ha come significato il riferimento all'animale domestico; lo stesso vale però anche nelle altre lingue con le parole DOG, CHIEN, PERRO ecc. Può capire anche che un significante omografo abbia diversi significati in lingue diverse, es. “sale” in italiano e inglese. Visto che lo scopo del linguaggio è quello di veicolare i significati, sarà possibile trasmettere gli stessi contenuti a parlanti lingue diverse, semplicemente cambiando i significanti (es. traduzione). Vi sono però dei casi in cui una parola viene considerata proprio per il significante, per l'aspetto visibile di essa (anziché per il significato che veicola) → per indicare ciò, si suole per consuetudine mettere la parola tra virgolette (es. “cane” è una parola bisillaba). Gli enigmisti spesso giocano sul non mettere le virgolette nelle parole crociate: es. la chiusura dei conti (“ti”). Infine, quando ci focalizziamo solo sul significante specifico, non si potrà ricorrere alla traduzione → una frase come “cane in inglese si dice dog” non può essere tradotta in un'altra lingua. Si definisce asse sintagmatico il concatenamento degli elementi comunicativi (es. parole) considerati nel loro rapporto di contiguità (l'uno dopo l'altro); l' asse paradigmatico è l'insieme delle parole o dei segni con i quali, per associazione, si può sostituire ciascun elemento dell'asse sintagmatico. In altra parole l'asse sintagmatico è quello sul quale gli elementi linguistici si dispongono linearmente; quello paradigmatico è il "magazzino" dal quale si attingono gli elementi da sistemare sull'asse sintagmatico. Ad esempio, nella frase “il cane insegue il gatto” ogni parola è disposta sintagmaticamente lungo l'asse orizzontale, ma posso attingere paradigmaticamente dalla classe dei nomi per sostituire a "gatto" o a "cane" altre parole e ottenere la nuova frase “il bambino insegue la farfalla”. Un testo scritto è rappresentabile come un raggruppamento ‘strutturato’ di simboli (caratteri) estratti da un insieme predeterminato (alfabeto); questo significa che ci troviamo di fronte ad una sequenza di caratteri analizzabile sia a livello del percorso spazio-temporale, sia nella scelta di ciascun carattere. Seguendo i suggerimenti della linguistica strutturale chiamiamo il primo percorso, orizzontale, “asse sintagmatico”; il secondo percorso, verticale, “asse paradigmatico”. Ogni linguaggio è costruito sulla base di un numero ridotto di componenti, detti fonemi , che si combinano tra loro variamente per costruire le parole (sistema fonematico). Un fonema è una unità linguistica dotata di valore distintivo, ossia che può produrre variazioni di significato se scambiata con un'altra unità: ad esempio, la differenza di significato tra l'italiano tetto e detto è il risultato dello scambio tra il fonema /t/ e il fonema /d/. Quindi i fonemi rappresentano le unità minime di seconda articolazione , ossia le unità linguistiche più piccole e senza significato proprio, ma che combinate possono produrre unità aventi significato ( unità di prima articolazione ). Per individuare i vari fonemi di una certa lingua si usa il criterio della ricerca di coppie minime, ossia di due parole che si differenziano per un solo fonema (come nell'esempio tetto-detto). Per esempio, in italiano /p/ e /b/ sono due fonemi perché è presente la coppia minima 'pelle' – 'belle' → tali coppie evidenziano l'effetto differenziante dei fonemi sul piano del significato. La disciplina che individua e studia i fonemi si chiama fonologia. I fonemi sono unità astratte (classi), ma si realizzano concretamente come allofoni = insieme di tutte le possibili realizzazioni di un fonema sul piano acustico. Mentre l'oralità si svolge nel tempo, la scrittura si svolge nello spazio (delimitato dal supporto utilizzato per scrivere); nello spazio la scrittura individua una progressione lineare in cui poter trasferire il prima e il dopo temporale del parlato (linea solitamente orizzontale da sinistra a destra). La tecnica del testo scritto consiste nell'associare ad ogni fonema del linguaggio parlato un simbolo grafico, detto grafema , che possa venire distinto dagli altri simboli appartenenti all'insieme specifico per ogni linguaggio (sistema grafematico). Teoricamente la scrittura dovrebbe conservare il contenuto del linguaggio orale, quindi ad ogni fonema dovrebbe corrispondere un solo grafema. Questo avviene però soltanto nelle lingue meno antiche, come il turco o il finlandese; invece nelle lingue come italiano, tedesco, francese ecc. spesso troviamo una discrasia profonda tra fonemi e grafemi → es. più grafemi per rappresentare un unico fonema (in francese: [eau] corrisponde al fonema /o/). Questo è spesso dovuto al passare del tempo, che ha portato a modifiche nella pronuncia (mentre la scrittura è rimasta ferma). Anche il grafema è un'entità astratta, ossia una classe contenente tutte le sue potenziali realizzazioni: queste ultime sono dette allografi. Vanno sempre tenuti distinti i vari sistemi grafematici, poiché uno stesso simbolo può essere usato da lingue diverse per rappresentare fonemi diversi. Infine un glifo è una rappresentazione astratta di un grafema, di più grafemi o di parte di un grafema, senza porre attenzione alle caratteristiche stilistiche; mentre il grafema è un'unità di testo, il glifo è un'unità grafica.

accentate a lettere modificate (lettere con barrette, cediglie, segni), lettere speciali usate solo in una lingua, segni di punteggiatura particolari (il punto interrogativo ed il punto esclamativo capovolti usati nello spagnolo), simboli di valuta ecc., del tutto assenti nell'ortografia inglese. Per questo motivo esistono diverse estensioni della tabella ASCII. La tabella ASCII estesa utilizzata in Italia è quella dell'Europa occidentale (ANSI), creata per le lingue germaniche e neolatine. Oltre alla codifica ASCII esistono numerose altre codifiche che permettono di codificare i caratteri all’interno di un testo di qualsiasi computer; purtroppo, tra le centinaia di codifiche disponibili, non ne esiste una con tutti i caratteri necessari adatti ad una specifica lingua. Inoltre può anche accadere che due codifiche utilizzino lo stesso numero per rappresentare caratteri differenti o che vengano utilizzati numeri diversi per rappresentare uno stesso carattere. Per risolvere questi problemi, è stata creata la codifica Unicode = essa è un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzati. Tale codifica utilizza 2 byte (ovvero 16 bit) per rappresentare un determinato carattere all’interno di un testo di un qualsiasi computer. Quindi, mediante la codifica Unicode, è possibile rappresentare ben 216 = 65.536 valori, che vanno da 0 a 65.535. Attualmente lo standard Unicode non rappresenta ancora tutti i caratteri in uso nel mondo. Essendo ancora in evoluzione, si prefigge di coprire tutti i caratteri rappresentabili, garantendo la compatibilità e la non sovrapposizione con le codifiche dei caratteri già definiti. Il tipo di codice più utilizzato è l' UTF-8 : esso è una codifica di caratteri Unicode in sequenze di lunghezza variabile di byte. UTF-8 usa gruppi di byte per rappresentare i caratteri Unicode; in particolare usa da 1 a 4 byte per rappresentare un carattere Unicode. Per esempio un solo byte basta per rappresentare i 128 caratteri della codifica ASCII. Infine BabelMap è un'applicazione per Windows che permette di consultare l'intero repertorio di caratteri Unicode (composto da oltre 113. caratteri) e di cercare un particolare carattere per nome o per codice.

  1. (^) La rappresentazione binaria (256 simboli) e la codifica base 64: i più importanti utilizzi L'elemento base della rappresentazione binaria è il bit: con un bit possiamo rappresentare un'informazione che può assumere due valori, 0 o 1. Esempio: stato di una lampadina (0 = spento, 1 = acceso). Per rappresentare più valori è necessario usare sequenze di bit: in generale n bit rappresentano 2 n^ diversi valori. Ovviamente la codifica binaria è una convenzione, ossia è il modo in cui associamo una informazione alla sua rappresentazione binaria. Mentre 4 bit formano un nibble, 8 bit formano un byte → quest'ultimo è utilizzato per esempio dalla codifica ASCII, che in tal modo consente di rappresentare 256 simboli (2 8 ). La codifica Base64 è differente dalla rappresentazione numerica in base 64, che utilizza il solito schema di notazione posizionale con 64 cifre anziché 10; la codifica Base64 è stata introdotta per risolvere il problema dei messaggi postali, che inizialmente prevedevano solo l'uso della codifica ASCII standard (quindi solo con 7 bit significativi per ogni byte) = i server di posta potevano non tener conto dell'ottavo bit del messaggio. Questo taglio dell'ottavo bit impediva di utilizzare i caratteri del codice ASCII esteso, quindi anche le lettere accentate, e di trasmettere allegati che non fossero di puro testo. Invece la codifica Base64 accetta in ingresso qualsiasi valore di byte (da 0 a 255) e lo trasforma in uscita in una sequenza di byte di valore inferiore a 128, quindi di fatto in byte a 7 bit significativi. Questa tecnica permette di trasmettere qualsiasi allegato, che verrà ritrasformato nell'originale automaticamente da parte del client di posta. La codifica base64 viene spesso usata anche per digitare sulla tastiera, per rappresentare sullo schermo o per stampare brevi sequenze di byte che potrebbero presentare problemi nella rappresentazione a caratteri. Ovviamente con la codifica base64 il numero di byte in uscita diventa superiore rispetto all'ingresso di un fattore 4/3. La codifica base64 riceve 3 byte per volta e li concatena ottenendo 24 bit; dopodiché divide questi ultimi in 4 sestetti. Ogni sestetto può contenere un valore da 0 a 63, cioè 64 valori (2 6 ). A questo punto una tabella fa corrispondere ogni numero nella gamma con un elemento di una lista che comprende le lettere maiuscole, le minuscoli, le cifre decimali e i simboli “+” e “/” (per un totale di 64 caratteri stampabili).
  2. I font come mediatori tra i bit e i pixel nella rappresentazione informatica Il font (o tipo di carattere) è un insieme di caratteri tipografici caratterizzati e accomunati da un certo stile grafico. Un font solitamente contiene un vario numero di glifi quali lettere, numeri e punteggiatura. I tipi di carattere possono contenere anche ideogrammi e simboli come caratteri matematici, note musicali, segni geografici, icone, disegni ecc. Per i font definiti con tecniche vettoriali è possibile utilizzare alcune

tecniche che permettono di sostituire i pixel neri percepiti come profili seghettati con altri pixel con gradazioni intermedie, per ottenere una soluzione migliore. Il numero di pixel in un'immagine determina la quantità di dettagli che possono essere rappresentati; i pixel possono essere sia quadrati che rettangolari. La grafica vettoriale è una tecnica utilizzata per descrivere un'immagine.

  1. la rappresentazione (rappresentante e rappresentato) e la copia: il problema dell'originale elettronico Quando ci accingiamo a copiare un testo, possono presentarsi diversi casi. Se trascriviamo delle parole utilizzando la nostra grafia consueta (idiografia), significa che abbia individuato ogni grafema presente nel testo da copiare ed abbiamo trascritto su un foglio un suo allografo (ossia un altro membro della stessa classe grafemica), con la forma/glifo caratteristica della nostra scrittura. Però può succedere anche che prestiamo maggiore attenzione alla forma (o glifo) dei caratteri da riprodurre, cercando di copiarli il più fedelmente possibile: in questo caso emerge un diverso aspetto del copiare, perché i nostri automatismi di scrittura vengono abbandonati → infatti ci concentriamo sull'aspetto particolare del significante, che attira l'attenzione sulla propria conformazione (effetto estetico). Un ulteriore caso è quello in cui copiamo qualcosa che non è assimilabile ad un testo (es. un insieme di simboli o disegni): in tale ipotesi prevale la necessità di produrre una copia fedele di quanto mostrato. Alcuni glifi hanno un aspetto famigliare e un proprio significato (simboli), quindi sarà più facile copiarli; invece la rappresentazione di quelli meno comprensibili sarà più difficoltosa. Emergono dunque due aspetti dell'operazione di copiare: uno che aspira ad una riproduzione il più possibile fedele dell’originale, quindi dell'aspetto del significante (copia del falsario, o copia-fotocopia); l’altro, realizzabile solo in presenza di una struttura grafematica, che sfrutta il fatto che ogni elemento di una classe può essere utilizzato per rappresentare la classe stessa → quest'ultima operazione è quanto facciamo nel trascrivere un testo in un linguaggio a noi già conosciuto. Infatti, quando copiamo un testo, attraverso l'allografo testuale individuiamo la classe grafemica cui appartiene; dopodiché nello scrivere produciamo un altro allografo della stessa classe, del tutto equipollente anche nel caso che l’aspetto grafico (glifo) risulti notevolmente differente. Il problema è di capire quanto gli allografi possano discostarsi pur continuando ad essere riconoscibili come tali → questo è il problema delle scritture illeggibili, ma soprattutto dei programmi OCR (Optical Character Recognition) = problema di come insegnare ai computer a leggere testi scritti acquisiti tramite scanner. Infatti i programmi OCR sono molto complessi e poco affidabili, poiché spesso il testo risulta errato o incomprensibile, a meno che non operino su allografi predefiniti e ristretti (Wikisource). In conclusione quindi ogni grafema viene rappresentato dagli allografi , con la funzione di rappresentazione che serve appunto a presentare sensibilmente un elemento della classe rimandando nel contempo ad un oggetto astratto quale la classe stessa. Ogni allografo perciò può essere preso come esempio e come rappresentante della classe cui appartiene.
  2. la rappresentazione su canali non visuali: la codifica Braille e la codifica Morse Una identica rappresentazione testuale sullo schermo può derivare da sequenze di bit differenti: file che rappresentano lo stesso identico testo hanno pesi (lunghezza in byte) diversi, in relazione ai metadati contenuti, alle diverse istruzioni per la rappresentazione visuale dei caratteri e al tipo di codifica (ASCII, UNICODE). Quindi, data una rappresentazione testuale su schermo, non è possibile ricavare direttamente la sottostante sequenza di bit (quindi il file) che la genera. Questo appunto perché il passaggio verso la rappresentazione dei caratteri sullo schermo è condizionato da due snodi fondamentali:
  • la tabella di codifica, per cui ad un elemento di un dato insieme numerico viene assegnata la rappresentazione di un determinato grafema
  • il font utilizzato, che fa corrispondere ad ogni grafema una delle pressoché infinite possibilità di glifo (rappresentazione grafico-visuale) → l'effetto di questo snodo è evidente sostituendo ad un font comune basato su grafemi un altro font basato su iconemi (es. Wingdings): in tal caso infatti si ottiene una rappresentazione che nasconde il rappresentato, o quantomeno utilizza in maniera inconsueta l'associazione con il rappresentante. Il codice Braille è un codice tattile, binario, a punti in rilievo SI/NO su una matrice rettangolare 2x3, per un totale di 6 bit (possono essere usate anche matrici 2x4, cioè 8 bit). Le combinazioni di punti SI/NO realizzabili sono quindi 2 6 , ossia 64. Ovviamente con questo numero non possiamo gestire tutti i caratteri che servirebbero, però arriviamo comunque ad una codifica nazionale soddisfacente. Il codice Morse invece è un codice tendenzialmente acustico, anche se viene comunque trascritto graficamente con linee e punti.

simbolo caratteristico individuante la persona, da sigillo. I ghirigori e gli svolazzi delle sigle vengono quindi associati ad una persona e sostituiscono il nome e cognome della firma. Ora, a completamento dell’argomento, possiamo analizzare anche alcuni casi di utilizzo della firma per finalità che non sono di sottoscrizione: 1. ‘firma per presa visione' = firma che attesta di aver letto un determinato testo, senza che ciò implichi un'adesione a quanto scritto o la condivisione della paternità dei contenuti 2. firma che si appone, in aggiunta a svariate altre, sotto una dichiarazione, un appello ecc., dichiarando con questo atto di condividere le idee espresse nel testo; 3. ‘firma di presenza’; 4. firma-timbro di controllo, che viene apposta dai commissari d’esame o di concorso sui fogli distribuiti ai candidati, per ufficializzare il supporto ed evitare sostituzioni; 5. firma con funzione di sigillo, in sostituzione o aggiunta alla ceralacca, che viene apposta normalmente alla giuntura di due fogli o dei lembi di una busta per attestare l’integrità del documento e l’assenza di tentativi di effrazione; 6. firma ‘specimen’, modello e termine di paragone rispetto a cui confrontare le altre firme; 7. firma ‘reliquia’, l’autografo, conservato come oggetto mistico che riconduce al personaggio che vi ha lasciato una traccia di sé.

  1. il bit come unità elementare di informazione; operazioni binarie e codifica binaria Il bit è l'unità di misura elementare dell'informazione, che viene rappresentata alternativamente con le cifre 0 e 1 , in quanto corrisponde a una scelta tra due alternative egualmente possibili. Il mondo binario è l'ambiente esclusivo di lavoro del computer; un mondo binario è un insieme di oggetti in cui tutto è conosciuto, riconosciuto, classificato e memorizzato mediante esclusiva assegnazione ad una di due classi di oggetti. Le coppie di etichette usate per distinguere le due classi possono essere SI/NO, VERO/FALSO, 0/1, BIANCO/ NERO, ALTO/BASSO ecc. Noi utilizziamo le etichette 0 e 1. Questo ambiente binario viene detto anche digitale o numerico, anche se in realtà potrebbe esistere pure un digitale ternario, quaternario ecc.; l'informatica attuale però lavora esclusivamente sul binario, come dice la parola BIT = BInary digiT. Dall’elettronica mutuiamo anche il termine analogico, utilizzato per indicare ciò che NON è digitale. Passando all'idraulica, si può fare un esempio: un rubinetto controlla il flusso dell’acqua grazie ad un rapporto di analogia tra l’aumento di un angolo in un dato verso (rotazione della manopola) e l’aumento del flusso di acqua. Il controllo è continuo e progressivo, non ci sono salti nell'azione di apertura e chiusura: questo può essere definito un rubinetto “analogico”. Immaginiamo invece un rubinetto digitale, ossia nel quale vi sono due sole possibilità: APERTO/ CHIUSO. Tale rubinetto potrebbe avere una manopola identica a quella dell'analogico, ma il funzionamento sarebbe differente: metà del percorso è ininfluente, dopodiché il flusso passa improvvisamente dal NIENTE al TUTTO e continua nel nuovo stato per l'altra metà del percorso. Un rubinetto simile, ma elettronico, sta alla base del funzionamento del computer. Innanzitutto consideriamo un rubinetto digitale che, anziché controllare il flusso dell'acqua, controlla un flusso di elettroni: esso è detto interruttore. Ovviamente anche quest'ultimo ha solo due stati, aperto e chiuso. Generalmente gli interruttori vengono collegati tra loro (negli attuali microprocessori vi sono centinaia di milioni di interruttori elettronici collegati); immaginiamo di collegarne due. Essi possono venire collegati in due modi diversi, in serie o in parallelo; in totale quindi abbiamo 4 stati possibili di combinazioni di ingresso = 0/0, 0/1, 1/0, 1/1.
  2. gli operatori logici binari; collegamenti in serie e in parallelo Si parla di collegamento in serie quando l'uscita di un interruttore è collegata all'ingresso dell'altro; in questo caso l'ingresso del primo interruttore costituirà l'ingresso iniziale del sistema, mentre l'uscita del secondo sarà l'uscita finale del sistema. Vi sono quattro possibili casi: 1° chiuso – 2° chiuso → l’acqua non passa = CHIUSO 1° aperto – 2° chiuso → l’acqua non passa = CHIUSO 1° chiuso – 2° aperto → l’acqua non passa = CHIUSO 1° aperto – 2° aperto → l’acqua passa = APERTO A questo punto dobbiamo cambiare le etichette e usare 0 (CHIUSO) e 1 (APERTO); inoltre useremo il simbolo per indicare il connettore seriale (ossia il collegamento in serie): 0 ∩ 0 = 0 1 ∩ 0 = 0 0 ∩ 1 = 0 1 ∩ 1 = 1 In questi risultati si può riconoscere il comportamento della moltiplicazione aritmetica; infatti al simbolo ∩ si può sostituire il comune segno della moltiplicazione. Tra l'altro il simbolo ∩ viene detto moltiplicatore logico , o operatore AND , per i suoi utilizzi nella logica binaria.

Si parla invece di collegamento in parallelo quando gli ingressi dei dispositivi sono collegati assieme, e così pure le uscite. Dunque ogni elemento darà il suo contributo all'uscita finale, ma nessuno potrà bloccare da solo il flusso d'uscita finale (come invece era nel seriale). Quindi avremo: 1° chiuso – 2° chiuso → l’acqua non passa = CHIUSO 1° aperto – 2° chiuso → l’acqua passa = APERTO 1° chiuso – 2° aperto → l’acqua passa = APERTO 1° aperto – 2° aperto → l’acqua passa = APERTO In questo caso è evidente la somiglianza, seppur non completa, con l'operazione di addizione aritmetica. Infatti soltanto nell'ultima operazione non tornano i conti, poiché 1+1 dovrebbe dare 2; tuttavia nel sistema binario abbiamo a disposizione solo 0 e 1, quindi il 2 non è rappresentabile. Questa operazione in logica è detta operatore OR. Comunque la non- rappresentabilità del numero 2 è collegata al problema del riporto aritmetico: se vogliamo rappresentare altri numeri oltre a 0 e 1 avremo bisogno di un sistema di notazione più articolato, con ulteriori convenzioni.

  1. quantità di informazione e riduzione dell'incertezza, entropia e ridondanza Un testo scritto è rappresentabile come un raggruppamento ‘strutturato’ di simboli ( caratteri ) estratti da un insieme predeterminato ( alfabeto ); dunque ci troviamo di fronte ad una sequenza di caratteri analizzabile sia a livello del percorso spazio-temporale (prima-dopo, tempo nel parlato che diventa spazio nello scritto) sia nella scelta di ciascun carattere. Come visto, il primo percorso orizzontale è detto “asse sintagmatico”, il secondo percorso verticale è detto “asse paradigmatico”. In ogni lingua naturale ogni punto del percorso lungo l'asse sintagmatico può porre vincoli più o meno stringenti alle selezioni successive sull’asse paradigmatico. Es. in italiano il fatto di avere una “q” in una data posizione vincola rigidamente la selezione del carattere successivo, che non può essere altro che una “u”. Allo stesso modo “sp” vincola la scelta del carattere successivo ad una delle 5 vocali o alle consonanti “l” e “r”. Quindi quasi mai la scelta di un carattere avviene realmente tra le 26 (o 21) possibilità ammesse teoricamente dall’insieme dei caratteri, perché sussistono nelle lingue molte regole e vincoli che riducono, talvolta fino ad annullarla, la possibilità di scelta sull’asse paradigmatico. Questa caratteristica del linguaggio può agevolare moltissimo il lavoro di crittanalisi, riducendo drasticamente le combinazioni possibili rispetto a quelle matematicamente determinate. Perciò uno dei compiti della crittografia è quello di costruire cifrari tramite cui compensare i vincoli del linguaggio che introducono regolarità o periodicità (minore casualità) nella sequenza dei simboli. Infatti i cifrari evoluti producono un crittogramma che si differenzia poco da una sequenza di simboli randomizzata ( random , casuale), cioè prodotta emettendo ogni carattere con scelta casuale, senza memoria delle scelte precedenti. Una simile sequenza potrebbe essere generata estraendo da un'urna un carattere alla volta tra i 26 possibili, e rimettendolo nell’urna prima dell’estrazione successiva. Un altro aspetto delle lingue naturali è che ogni lettera dell’alfabeto ha una sua frequenza caratteristica, facilmente riconoscibile su testi estesi. L’analisi delle frequenze è quindi uno dei primi tentativi che fa il crittanalista per cercare di ricavare qualche indizio dal crittogramma; essa però è uno strumento efficace solo se la distribuzione naturale non è stata mascherata da appositi algoritmi. Inoltre, se i campioni sono di dimensioni ridotte, le percentuali possono risultare distorte e lontane dalle medie ufficiali, calcolate su corpora testuali sostanziosi. Anche l’utilizzo in un testo di linguaggi tecnici può contribuire a fornire frequenze che non si sovrappongono a quelle ufficiali. L’unità di misura dell’informazione è il BIT, definito come il logaritmo in base due della consistenza ( numerosità, cardinalità ) dell’insieme di eventi equiprobabili da cui proviene l’evento informativo. Così il lancio di una moneta, il cui esito è di una certezza su due equiprobabilità ( testa/croce ), fornirà una incertezza iniziale ed una successiva informazione di log2 2 = 1 bit. Nella teoria dell’informazione l' entropia , misurata in bit , è la quantità di informazione portata da un messaggio, quindi di conseguenza anche la quantità di incertezza (disinformazione) connessa all’insieme di tutti i potenziali messaggi equiprobabili prima dell'emissione del messaggio stesso. L’alfabeto che utilizziamo quotidianamente possiede 26 lettere, quindi l’entropia di ciascuna lettera dovrebbe essere log2 26 =4,7 (cioè 5 bit); questo perché l’incertezza su una lettera implica, al massimo, il provare tutte le 26 possibilità. In realtà però l’entropia di un testo scritto con il nostro alfabeto sta di solito tra 1 e 1,5 bit per lettera. L’entropia è quindi una misura dell’incertezza, del disordine, del caos, mentre la certezza equivale ad entropia zero. I vari linguaggi umani, attraverso le molte regole che pongono vincoli alla successione dei fonemi e degli altri componenti linguistici sull’asse sintagmatico,

102 = 100 (il peso delle centinaia) 103 = 1000 (il peso delle migliaia) 104 = 10.000 (il peso delle decine di migliaia) ecc. Inoltre le varie posizioni pesate ospitano dei simboli, detti cifre, che rappresentano il risultato della moltiplicazione del loro valore naturale (da 0 a 9) per il peso assegnato alla posizione occupata; le cifre vengono anche chiamate coefficienti polinomiali. Ad esempio il numero centoventisette , scritto in notazione decimale 127, è il risultato dei seguenti conteggi : (7x100)

  • (2x101) + (1x102). Le nostre routine mentali svolgono questi calcoli senza apparente sforzo; però quando si supera la decina di cifre, diventa arduo individuare la grandezza del numero (perciò ci si aiuta con il punto separatore dei gruppi di tre cifre). La corrispondente notazione polinomiale sarebbe x2+2x+7, per x=10. La notazione posizionale dunque, a differenza di quella romana, utilizza sia addizioni che moltiplicazioni: è la somma di prodotti di coefficienti per il peso della posizione occupata. Questo però implica che, se una posizione intermedia non dovesse essere occupata, ci deve comunque essere un segnaposto per mantenere la posizione (altrimenti non sarebbe possibile calcolare la corretta successione dei pesi). E’ questa la funzione dello zero : esso, moltiplicato per il peso della relativa posizione, ne annulla il valore → esso quindi non contribuisce alla somma finale, ma mantiene la corretta successione dei pesi. Infine non va confusa la 'cifra' con il 'numero', cioè il rappresentante con il rappresentato. La notazione posizionale viene utilizzata anche con base non decimale: in informatica si usano comunemente le notazioni binaria (in base 2), ottale (in base 8) ed esadecimale (in base 16). Teoricamente si potrebbe utilizzare qualunque numero come base; in realtà però, scelta una base, occorrono altrettanti simboli che fungano da cifre. Mentre per le notazioni con base inferiore a 10 essi sono già disponibili, la cosa si complica per le basi superiori. Perciò per convenzione si adottano come cifre prima le lettere maiuscole dell’alfabeto, nel numero strettamente necessario, e poi quelle minuscole. Così la notazione esadecimale utilizza le cifre da 0 a 9, poi rappresenta il 10 con A, l’11 con B, il 12 con C, il 13 con D, il 14 con E, il 15 con F. Utilizzando sia le cifre da 0 a 9 sia le lettere maiuscole si raggiunge al massimo la base 36 ; aggiungendo anche le minuscole si può arrivare alla base 62 (10+26+26). Mentre noi siamo abituati alla notazione decimale, in informatica è frequente che i numeri siano espressi in base binaria o esadecimale. Infatti la notazione che ci permette di conoscere senza ambiguità la situazione interna del microprocessore è quella BINARIA (in cui ai due possibili stati elettrici di un componente elettronico viene fatto corrispondere un simbolo 0 oppure un simbolo 1). Lavorando in base 2 i pesi delle varie posizioni, a partire da sinistra, saranno le successive potenze del due; a fronte di questa semplicità di notazione, v'è la difficoltà umana di memorizzare sequenze più lunghe di 7/8 cifre. Comunque importante è la rappresentazione binaria all'interno di un byte (o ottetto = sequenza di 8 bit), che è l'unità minima di rappresentazione; in particolare si usa suddividere il byte in due parti di 4 bit, dette nibble. Il binario, ossia la rappresentazione numerica in base 2, consiste quindi in una rappresentazione biunivoca della situazione dei componenti elettronici digitali del computer (es. microprocessore); tuttavia per gli esseri umani è difficile seguire le lunghe concatenazioni di 0 e 1. D'altro canto, anche utilizzare il decimale comporta delle difficoltà: infatti ogni volta che, a partire da un numero decimale, volessimo ricostruire la situazione binaria, dovremmo usare la calcolatrice oppure fare numerose operazioni aritmetiche (es. dato il decimale 10, dovremmo calcolare le potenze di due contenute nel numero). Dati questi problemi, occorre una rappresentazione più comoda da utilizzare: visto che il nibble conta da 0 a 15 (16 numeri), sicuramente la rappresentazione migliore è quella esadecimale → essa infatti fa corrispondere UNA sola cifra alle QUATTRO del nibble. Però, avendo bisogno di sedici simboli ed essendo le cifre solo dieci (0-9), per convenzione si utilizzano anche le prime sei lettere dell’alfabeto (A-F). A questo punto, dato che il nibble rappresenta la metà di un byte, ovviamente per rappresentare un byte in esadecimale occorreranno DUE cifre. Infatti tutti i possibili numeri rappresentabili con un BYTE (da 0 a 255, dato che 256 = 28) saranno scritti in esadecimale tra 00 e FF. In realtà esiste anche una base in cui, per rappresentare un byte, basta una cifra sola: essa è la base 256, ma per fruirne bisognerebbe imparare 256 simboli.
  1. i collegamenti di comunicazione con l'esterno: interfaccia input-output, principali periferiche Vi sono delle periferiche che permettono di dare ordini e fornire dati al computer. Negli anni ' e '50 l'immissione dei dati avveniva in modo diretto, con interruttori o schede/nastri perforati; si è poi arrivati alla tastiera. Essa ha origine nella macchina per scrivere; la disposizione delle

lettere sulla tastiera (layout) può variare in funzione delle necessità grafiche delle varie lingue, anche se in origine si tenne conto solo della lingua inglese/americana. Infatti inizialmente sia il layout di tastiera sia il codice ASCII consideravano solo le 26 lettere dell'alfabeto internazionale, oltre alle cifre decimali, ai segni di punteggiatura e a pochi altri simboli; per questo sono state fatte delle estensioni. Le tastiere attuali dispongono più o meno di un centinaio di tasti, insufficienti per una rappresentazione di tutti i caratteri disponibili in una codifica a 256 possibilità (offerte dai codici ASCII estesi). Perciò vi sono delle possibilità di input per l’inserimento di caratteri non presenti sulla tastiera: la più comune è il ricorso alla mappa caratteri ( charmap ), che mostra sullo schermo le varie possibilità disponibili; la seconda è più rapida, ma implica la conoscenza del codice ANSI corrispondente al carattere cercato (occorre premere ALT e il codice del carattere, preceduto da 0: es. ALT+0126). Nella tastiera i singoli tasti agiscono come interruttori, attivando un contatto elettrico ad ogni pressione. Il risultato di tale contatto non arriva direttamente al processore: viene fatta una prima elaborazione dei dati da parte di un circuito integrato di tastiera. Importante è che il processore di tastiera invia alla CPU dei dati (scan code) che NON si riferiscono al carattere inciso sul tasto, ma indicano solo la posizione del tasto sulla tastiera, a partire dall’alto e proseguendo da sinistra a destra. Questo ordinamento è ancora valido, ma si riferisce alla tastiera originaria (non a quella estesa). Bisogna specificare che il microprocessore non elabora dei caratteri, ma elabora dei byte: questi sono s riconducibili a dei caratteri in base ad una tabella di codifica, ma per il microprocessore non hanno un significato diverso dagli altri byte. Durante tutta l’elaborazione ed anche in sede di memorizzazione ci sono soltanto dei byte; solo quando serve una visualizzazione all’occhio umano i byte si tramutano in una rappresentazione visuale di caratteri → a tal fine occorre un monitor o una stampante. Anche l'uscita ( output ), nei primi computer, avveniva tramite schede o nastri perforati; dopodiché si è passati alle telescriventi, e oggi ai monitor. Affinché si arrivi alla visualizzazione di un carattere, partendo da un codice fornito dal microprocessore alla scheda video, occorrono due condizioni: 1. la tabella di codifica dei caratteri dev'essere la stessa utilizzata in input; 2. devono essere presenti le istruzioni per disegnare il carattere richiesto, sia relative al grafema (lettera alfabetica da riprodurre) sia alle informazioni accessorie (grandezza, stili ecc). Queste istruzioni sono presenti in file detti font , che indicano come rappresentare i vari caratteri; i fonti hanno nomi che spesso richiamano quelli dei caratteri utilizzati nelle tipografie. L'aspetto del carattere è detto glifo: es. una “a” in font Arial e una in font Tahoma differiscono per il glifo. I font disponibili sono decine di migliaia; se usiamo font poco noti, può accadere che chi riceve il testo non possa riprodurli fedelmente → in tal caso il word processor utilizza font simili, oppure dichiara di non riuscire a visualizzare il file. La scheda grafica possiede inoltre dei font di default: essi vengono utilizzati quando, non essendo ancora caricato il sistema operativo, non si può attingere ai font disponibili; vediamo questi font in caso di problemi all’avviamento del pc, quando appaiono dei messaggi in caratteri simili a quelli delle macchine da scrivere (bianco su schermo nero). Può infine avvenire che un carattere non sia visualizzato non perché manca il font corrispondente, ma perché manca la definizione di quello specifico carattere; questo avviene nel caso dei primi 32 caratteri della codifica ASCII (caratteri non stampabili) oppure nei font UNICODE che, riguardando decine di migliaia di caratteri, avrebbero dimensioni enormi se dovessero contenere tutte le descrizioni (perciò contengono soltanto i caratteri delle lingue di maggiore utilizzo).

  1. La memorizzazione dei dati (temporanea, permanente): gli strumenti analogici e digitali Qualunque dispositivo di memorizzazione informatica è organizzato in una serie finita di celle (che possono essere basate su diversi principi tecnici), ciascuna delle quali è individuata da un indirizzo di memoria univoco e contiene un numero prestabilito di informazioni. I dispositivi di memoria vanno distinti tra memorie temporanee e memorie di massa. Quanto alle memorie temporanee , esse servono a contenere i dati e le istruzioni processati in ogni singolo istante da un computer. Sono caratterizzati da alte velocità di accesso ai dati, ma sono volatili = i dati immagazzinati vengono perduti allo spegnimento della macchina. Il tipico dispositivo di memorizzazione temporanea in un computer è costituito dalle schede RAM (“random access memory”, ossia “memoria ad accesso casuale”, così chiamate perché i dati vengono di volta in volta immagazzinati in celle il cui indirizzo è indipendente da quello delle celle alle quali si è avuto accesso in precedenza) → si tratta di una serie di circuiti integrati su cui il processore legge e trascrive di volta in volta i dati relativi ad ogni processo eseguito. Le memorie di massa invece servono ad immagazzinare a lungo termine grandi quantità di dati per consultazioni successive. Sono di capacità maggiore e NON sono volatili; esse hanno però in genere un accesso più lento ai dati rispetto alle memorie temporanee. Esistono dispositivi di

presenza di un server permette ad un certo numero di client di condividerne le risorse, lasciando che sia il server a gestire gli accessi alle risorse stesse. Un computer collegato ad un server utilizza inoltre uno o più protocolli di rete. Le reti locali aziendali (LAN), la rete Internet, i sistemi informatici e i sistemi operativi sono organizzati nella forma di client-server per la fruizione dei rispettivi servizi. Il software client in genere è di limitata complessità, limitandosi ad operare come interfaccia verso il server. In generale nel campo informatico il termine client indica una componente che accede ai servizi o alle risorse di un'altra componente (ossia appunto il server). In questo contesto si può quindi parlare di client riferendosi all'hardware o al software. Un computer collegato tramite rete locale o rete geografica ad un server, al quale si richiede un servizio utilizzando uno o più protocolli di rete, è un esempio di client hardware. Un programma di posta elettronica è un esempio di client software. Il software server, oltre alla gestione logica del sistema, deve attivare tutte le tecniche di gestione degli accessi, allocazione e rilascio delle risorse, condivisione e sicurezza ei dati o delle risorse. Ad esempio un server di posta elettronica è paragonabile ad un ufficio postale. Gli utilizzatori per accedere via client alla loro cassetta di posta elettronica devono essere stati autorizzati (così come un utente deve possedere la chiave della cassetta sita presso un ufficio postale dalla quale vuole prelevare la corrispondenza). Nel web il software client è il web browser , il quale comunica con un web server attraverso il protocollo HTTP. Un web server è quindi un'applicazione software che, in esecuzione su un server, gestisce le richieste di un client (che è tipicamente un web browser) per il trasferimento di pagine web. Molti browser permettono di navigare in Internet e amministrare i file di un server remoto.

  1. L'interazione tra esseri umani e calcolatori come problema di comunicazione: le interfacce L’interazione tra uomo e macchina può intendersi come un processo che consente la comunicazione e il controllo delle applicazioni informatiche da parte degli utenti. Questa disciplina quindi studia i metodi per la progettazione e lo sviluppo di sistemi interattivi usabili e affidabili, che facilitino le attività umane; essa si è sviluppata velocemente negli ultimi anni, a causa dell'importanza sempre maggiore dei dispositivi informatici in ogni attività umana. Infatti, il massiccio uso di applicazioni informatiche richiede una progettazione che tenga conto dei possibili contesti di uso e degli obiettivi degli utenti. Per esempio, il successo del Web è dovuto alla facilità con cui permette di comunicare informazioni al mondo intero. L'interazione uomo-computer quindi non è altro che un rapporto fra un essere umano e i programmi che servono a portare a termine un compito: calcolo, elaborazione testi, grafica e disegno, creazione musicale, posta elettronica e così via. Il programma che serve a facilitare la comunicazione e che fornisce i comandi è detto interfaccia , proprio perché si colloca fra l’applicazione e l’utente, il quale può essere un qualunque individuo senza competenze informatiche specifiche = l'interfaccia è dunque ciò che si frappone tra la macchina e l'individuo, consentendo l'interazione tra i due. L’evoluzione dell’informatica degli ultimi venti anni ha comportato un aumento della quantità di programmi disponibili, unito a un incremento di dispositivi di calcolo e comunicazione con interfacce progettate tenendo conto dei vincoli fisici, di peso, di robustezza e di usabilità rispetto a un’ampia classe di potenziali utenti. L’uso del colore, la scelta della grafica e delle icone, la gestione delle finestre, l’analogia fra le funzioni disponibili tra diverse piattaforme di calcolo, sono tutte questioni affrontate dai progettisti per assicurare un’elevata facilità d’uso al maggior numero possibile di utenti. Vista l’estensione del calcolatore a un numero sempre maggiore di utenti non specialisti, è necessario infatti facilitare il più possibile, attraverso l’impiego di adeguate interfacce, la prima fase di acquisizione cognitiva di una nuova applicazione.
  2. La casualità e i giochi d'azzardo; il computer come generatore di sequenze random e pseudorandom; il sito www.random.org Innanzitutto il nome “azzardo” deriva dall'arabo, e designa il dado, ossia la sorte e la casualità: appunto per questo in informatica si parla di casuale o random. Comunque si tratta di quei giochi che, se non truccati, sono costruiti per offrire un'uscita che sia esclusivamente in funzione del caso = tutte le possibili uscite hanno la stessa possibilità di uscire, senza che l'uscita precedente condizioni o vincoli quella successiva (giochi senza memoria). Visto che tutti i numeri hanno le stesse possibilità di uscire, prima o poi verranno estratti tutti; ovviamente il problema riguarda proprio questo “prima o poi”. La tendenza a fare calcoli statistici o previsioni matematiche nel lotto è legata al fatto che l'uomo è memoria, mentre la macchina del lotto non lo può essere: ogni estrazione è completamente indipendente da ogni altra.

Lavorando con una funzione computerizzata che fornisce valori casuali, ci si può chiedere come è possibile che un computer (il quale esegue solo ordini predeterminati, in quanto macchina deterministica) funzioni in modo casuale, producendo uscite randomizzate. Però, se è pur vero che il computer non può produrre da sé valori casuali (senza essere collegato ad una fonte), tuttavia esso riesce ad imitare uscite randomizzate in modo sufficiente per utilizzi non sofisticati, attraverso algoritmi di emulazione → numeri pseudorandom. Quanto al sito random.org, esso offre dei veri numeri random su internet (quindi NON solo pseudorandom); per questo può essere utilizzato per estrazioni.

  1. La ridondanza informativa e la compressione lossy e lossless dei file Come già visto la ridondanza consiste nelle possibilità informative non utilizzate del tutto in un messaggio o utilizzate per ripetere un’informazione già data: sostanzialmente uno ‘spreco’ di bit nell’ottica dell’ingegneria dell'informazione. In realtà sussistono diverse ragioni che giustificano determinate scelte che appaiono, nella teoria dell'informazione, come sprechi e ridondanze (es. ragioni di linguaggio). Comunque la ridondanza informativa è una delle risorse fondamentali che consentono la compressione dei dati, cioè una loro riduzione di consistenza utile nelle fasi di trasmissione e di memorizzazione. Così come nel trasporto di oggetti lo spazio lasciato libero in un contenitore è sprecato, ma potrebbe essere utilizzato caricando altri oggetti, in informatica le 256 potenzialità informative del byte non sempre sono utilizzate appieno: di qui la possibilità di ridefinire la sequenza dei byte in modo da non lasciare spazi vuoti. Es. il codice ASCII standard utilizza solo 7 degli 8 bit del byte, disponendo solo di 128 caratteri: ecco che il bit rimasto inutilizzato potrebbe sommarsi ad altri sei bit di altri sei byte e così trasportare un carattere ulteriore. Le tecniche di compressione sono molteplici, e spesso costruite su misura in relazione al tipo di dati da comprimere. A questo proposito distinguiamo tra 1. tecniche lossless (senza perdita di dati), in cui i dati vengono compressi e poi, una volta decompressi, risultano identici ai dati di origine; 2. tecniche lossy (con perdita di dati), che producono un deterioramento più o meno sensibile del contenuto informativo. Le tecniche lossless sono indispensabili nel caso di contenuti testuali, ed in genere dove non è ammissibile una variazione nella sequenza informativa. Le tecniche lossy sono invece utilizzate laddove esista una sovrabbondanza di informazione (ridondanza) in relazione alle capacità percettive umane: es. se in un brano musicale vengono riportate registrazioni con frequenze inudibili, o se in una fotografia vengono utilizzate informazioni su sfumature di colori che l’occhio percepisce, l’eliminazione di questi dati non influisce sulla validità dell’informazione trasmessa, ma può ridurre di molto la dimensione del file. È importante considerare che, in assenza di ridondanza, non sarà possibile la compressione dei dati: es. nei file random, proprio perché non ci sono sequenze ripetitive prevedibili, nessuna tecnica compressiva può funzionare.
  2. La stenografia classica e digitale La stenografia, come la crittografia, ha lo scopo di selezionare il destinatario di un messaggio potenzialmente pubblico, quindi accessibile a tutti. Però, mentre la selezione del destinatario del messaggio crittografico avviene tramite l'utilizzo di chiavi, nel messaggio stenografico si sfrutta la componente psicologica dell'abitudine, degli automatismi mentali che spesso ci portano a non vedere ciò che è sotto i nostri occhi ma in una posizione inusuale. Il messaggio stenografico si nasconde in un altro messaggio, in modi vari: ad esempio può sfruttare il principio della acronimia per costruire un altro messaggio su quello portante. Es. il messaggio “ci invieranno alcuni oggetti” nasconde il messaggio acronimico “ciao” (che è visibile solo se si sa cosa cercare). Il messaggio stenografico può utilizzare anche le tecniche digitali: ad esempio può inserirsi tra i bit di una rappresentazione fotografica (modificando le sfumature dei pixel senza essere però visibile) o tra i bit di un file musicale (modificando impercettibilmente la digitalizzazione dei suoni). Il vantaggio del messaggio stenografico rispetto al crittogramma sta nel fatto che il messaggio crittografico è evidente nella sua incomprensibilità, quindi può destare sospetti e sollecitare operazioni di crittanalisi. Comunque lo stesso messaggio può essere prima crittato e poi nascosto con tecniche stenografiche, per una maggiore sicurezza.
  3. L'editor esadecimale e Edxor come strumenti di laboratorio: caratteristiche e esempi L'editor esadecimale consente di analizzare la sequenza di bit/byte che compone ogni file, ed eventualmente di modificarla, effettuando una rappresentazione digitale fedele dell'oggetto memorizzato. Offre di solito due viste in finestre affiancate, due rappresentazioni diverse della stessa sequenza di byte:
  1. la prima rappresenta ogni byte in esadecimale (DUE cifre hex per byte)

canali di comunicazione perfettamente sicuri). Affinché la decifrazione sia possibile occorre che le funzioni utilizzate per cifrare siano univocamente reversibili , ossia che ad ogni carattere del crittogramma corrisponda un solo carattere del testo in chiaro. Viceversa il fatto che ad un carattere del testo in chiaro possano corrispondere diversi simboli del crittogramma può, entro certi limiti, contribuire a rendere più difficile il lavoro dei crittanalisti. Es. se in un cifrario i caratteri B e C fossero mappati ugualmente sul simbolo 365, una successiva decifrazione non potrebbe ricostruire con certezza il testo originale qualora ci siano coppie tipo ‘cara/bara’, ‘botte/cotte’ ecc. Se invece il carattere B fosse mappato sui simboli 234, 867 e 731, il fatto di aver scoperto la corrispondenza 234=B non consentirebbe di dare per scontata la decifrazione di B nell’intero crittogramma. Inoltre ci sono alcune coppie di operatori aritmetici ( funzione e funzione inversa ) utilizzabili negli algoritmi crittografici, perché ogni ‘partner’ della coppia annulla gli effetti dell’altro, ripristinando così la situazione iniziale. Un problema essenziale per la crittografia è quello della lunghezza della chiave in rapporto al messaggio da cifrare: infatti, poiché i caratteri della chiave dovranno interagire con l’intero messaggio tramite appositi algoritmi, se il messaggio è più lungo della chiave occorrerà fare in modo che la chiave venga “allungata”. Questo un tempo veniva ottenuto attraverso la ripetizione ciclica della chiave fino a ricoprire l’intero messaggio: però la ciclicità causava una serie di regolarità facilmente individuabili dalla crittanalisi. L’algoritmo più elementare è quello di Cesare: esso si basa sostanzialmente sull’utilizzo di una chiave unica, uguale per tutti i caratteri del PT, consistente nell’informazione numerica di quanti posti occorre saltare nell’ordinamento alfabetico per giungere al carattere di uscita (SOSTITUZIONE MONOALFABETICA). Un cifrario meno semplice si ha con la SOSTITUZIONE POLIALFABETICA, in cui l’accoppiamento di ciascun carattere del PT con il corrispondente carattere della chiave determina la scelta del carattere in uscita, attraverso una tabella quadrata ( tabella di Tritemio o di Vigenère ). Però di fatto il cifrario polialfabetico si può considerare come composto da più cifrari monoalfabetici, per cui si rilevano facilmente coincidenze e indizi che conducono alla decifrazione del crittogramma.

  1. La macchina elettromeccanica Enigma: struttura e funzionamento Enigma è una macchina inventata all'inizio del '900 da un tedesco, usata per cifrare e decifrare messaggi elettromeccanici. Essa fu ampiamente utilizzata dal servizio delle forze armate tedesche durante il periodo nazista; la facilità d'uso e la presunta indecifrabilità furono le maggiori ragioni del suo ampio utilizzo. Enigma assomigliava ad una macchina da scrivere; i suoi messaggi cifrati venivano trasmessi per poi essere decodificati a destinazione da una seconda macchina Enigma → quando un operatore utilizzava la macchina, doveva semplicemente digitare il messaggio sulla tastiera: a quel punto i meccanismi interni trasformavano il testo in un altro apparentemente incomprensibile. La macchina era composta da tre elementi fondamentali: una tastiera, un quadro stecker (o plugboard) e tre “rotori” (dischi). Ognuno di questi componenti riportava le 26 lettere dell'alfabeto. Quando un operatore premeva un tasto, inviava un impulso elettrico al meccanismo della macchina; l'impulso passava attraverso il quadro delle spine (stecker) e veniva inviato al primo dei 3 rotori → tramite questi rotori l'operatore codificava Enigma; c'è da dire che all'apice della guerra i codici venivano cambiati moltissime volte nell'arco della giornata. C'erano delle piccole finestrelle che mostravano le lettere sui rotori, indicate secondo il loro ordine numerico nell'alfabeto. Ogni volta che l'operatore premeva un tasto, il rotore a destra si muoveva in avanti di una lettera: si trattava per questo di una cifra polialfabetica. In seguito l'impulso passava da destra a sinistra attraverso ciascuno dei tre rotori, poi veniva ripreso da un riflettore da sinistra a destra. Nel percorso di ritorno l'impulso rientrava nel quadro stecker; alla fine si accendeva una spia luminosa sui tasti, con le lettere trasposte. La lettera che si accendeva dipendeva dalla codifica iniziale della macchina, che consentiva 150 milioni di milioni di possibilità. Il messaggio in codice veniva poi trasmesso in codice Morse per essere decodificato dalla macchina Enigma ricevente, regolata con lo stesso codice giornaliero. Il pressoché infinito numero di chiavi e la frequenza con cui queste venivano cambiate convinsero i tedeschi che Enigma fosse sicura; in realtà non era così.
  2. Il cifrario perfetto (Vernam, OTP) nelle versioni classica e digitale; perché l'OTP viene definito matematicamente indecifrabile Sappiamo che la lunghezza della chiave è determinante per la robustezza di un cifrario → da qui deriva l'idea di Gilbert Vernam , che pensò di costruire una chiave di lunghezza uguale al messaggio in modo da poter effettuare lo XOR tra ogni carattere del plaintext e quello corrispondente della chiave (al tempo di Vernam non si parlava di computer, ma di nastri perforati: l'operazione XOR avveniva quindi meccanicamente).

Il metodo di Vernam può costituire un cifrario perfetto ed indecifrabile, a patto che vengano rispettate delle condizioni imprescindibili (che purtroppo lo rendono di scarsissima praticabilità):

  • i caratteri della chiave devono essere assolutamente random (non pseudorandom, quindi l’input del computer deve essere alimentato da un generatore fisico di eventi casuali);
  • la chiave (verme) dev'essere utilizzata solo una volta, ed immediatamente distrutta
  • la lunghezza della chiave deve coprire interamente la lunghezza del messaggio in chiaro. Questo cifrario viene spesso chiamato OTP ( One Time Pad ), con riferimento al fatto che la chiave veniva predisposta in anticipo su fogli che andavano usati solo una volta, poi subito distrutti. L'OTP è considerato indecifrabile innanzitutto perché è matematicamente dimostrato che lo XOR tra un testo ordinato ed un verme perfettamente casuale genera un’uscita altrettanto casuale (non si perde entropia), per cui gli strumenti crittanalitici non trovano appigli da utilizzare; inoltre e soprattutto, anche volendo provare un’infinità di combinazioni della chiave, non si arriverebbe mai ad individuare il vero testo di partenza, in quanto si troverebbero una quantità di messaggi dotati di senso ma che non hanno niente a che fare con il messaggio originale (di fatto tutti i messaggi possibili con lo stesso numero di caratteri). L'OTP è quasi inutilizzabile per diverse ragioni: 1. è complicato ed oneroso produrre dei vermi veramente casuali; 2. non è facile far pervenire ai destinatari, con la certezza di non essere intercettati, i supporti contenenti le chiavi; 3. dovendo i vermi pervenire in anticipo rispetto al crittogramma, non è semplice la loro custodia in luogo inaccessibile e la garanzia di integrità nel frattempo; 4. le difficoltà si moltiplicano se, invece che ad un solo destinatario, i vermi devono essere spediti a molti (es. messaggi in tempo di guerra).
  1. Il problema dell'integrità dei dati trasmessi; le funzioni di controllo; parità; checksum; CRC; codici di controllo e correzione degli errori La trasmissione a distanza di dati in forma digitale richiede sempre un controllo di integrità , finalizzato ad assicurare che la sequenza di bit arrivata al destinatario sia corrispondente a quella inviata. Tale controllo si realizza in genere trasmettendo, insieme ai dati, anche alcuni metadati (ridondanza) che possano avvisare di eventuali errori e permetterne la correzione. In situazioni molto semplici può essere usato anche un controllo di parità , utilizzando un singolo bit che indica se nel byte la somma degli altri bit dà come risultato un numero pari o dispari → questo controllo si limita a segnalare un errore, senza permetterne la correzione; quest'ultima può avvenire solo ripetendo la spedizione, affidandosi a routine di correzione di livello superiore o anche ignorando l’errore. Inoltre viene rilevato sicuramente solo l’errore singolo, mentre il doppio può dare mutua compensazione e quindi non essere rilevato. Un'altra tecnica di controllo è quella di allegare ad un file la somma pura e semplice dei codici (ASCII o altri) dei suoi caratteri ( checksum , o somma di controllo ): il ricevente ricalcola la somma e, se essa coincide con il numero inviato dal trasmittente, potrebbe concludere che la trasmissione è avvenuta senza errori. Tuttavia avremmo ben poche garanzie di non manomissione: ad esempio qualcuno potrebbe impunemente sostituire una parola con i suoi anagrammi ( gatto e gotta sarebbero indistinguibili); inoltre AC = BB , e così via. Una soluzione di poco migliorativa potrebbe essere quella di sommare non il solo codice del carattere, ma il risultato della moltiplicazione dello stesso con la sua posizione ordinale nel corpo del testo. Si parla in questo caso di posizioni pesate (ogni posizione assume un valore, un peso differente). In realtà la determinazione dei codici di controllo si basa su regole molto più complesse ed efficienti, e che talvolta non solo segnalano l’errore ma ne permettono anche la correzione. Un codice di controllo notissimo è il sedicesimo carattere del codice fiscale; un altro importante è il cosiddetto check del codice matricola UNIPV (la seconda parte). Altri codici di controllo comuni sono il codice ISBN, che caratterizza ogni libro, e il codice EAN. Spesso si scelgono come valori di peso dei numeri primi (1,3,5,7,13), per agevolare la correzione di eventuali errori. Infatti, poiché i numeri primi non sono ulteriormente fattorizzabili, essi restano come indizi della posizione in cui si può essere verificato l'errore ed aiutano nella ricostruzione. Esempio: prendiamo il codice matricola 335804/12. Se qualcuno lo legge male, confondendo lo 0 con un 6, potrebbe digitarlo sbagliato. Il computer rileverebbe il check errato e proporrebbe quello corretto, cioè 54. Però sappiamo che il check giusto è 12, e vogliamo trovare quale cifra è errata nel codice. La differenza nei check è 54-12=42=7x6. La fattorizzazione rivela che l’errore è nella posizione col peso 7, la penultima, ed è dovuta a 6 unità in più. Le tecniche di correzione degli errori sono molto applicate in informatica e si servono di codifiche complesse e raffinate. Es. laddove il supporto sia a lettura ottica (CD, DVD ecc.) sono

Un utilizzo tipico delle funzioni di hash consiste nell’associare al download di un file l’impronta relativa (spesso MD5), in modo da permettere all’arrivo il controllo dell’integrità del file stesso, a garanzia dell’assenza di errori di trasmissione o di interventi dolosi del MITM. Per ulteriore sicurezza può anche essere opportuno riportare l’impronta di tre differenti funzioni di hash (MD5, SHA-1, SHA-256).

  1. Codici a barre monodimensionali e bidimensionali; codice EAN; codice ISBN; codice UNIPV Il codice EAN (European Article Number) è formato da 13 cifre, di cui l'ultima è la cifra di controllo. Si tratta di un codice pesato, in cui le posizioni dispari hanno peso 1, quelle pari hanno peso 3. La condizione di correttezza del controllo è che la somma pesata di tutte le 13 cifre dia un risultato divisibile per 10: a questo fine alla somma delle 12 cifre viene aggiunta una cifra di controllo idonea ad effettuare il complemento a 10. Il codice ISBN (International Standard Book Number) si applica ai libri in tutto il mondo: è formato da 10 cifre, di cui l’ultima è alfanumerica e rappresenta il codice di controllo. Le prime due cifre indicano la nazione della Casa editrice (88 = ITALIA); seguono il numero assegnato alla Casa editrice e il numero assegnato al libro. È un codice pesato: alle successive posizioni da sinistra a destra viene assegnato un peso (coefficiente) decrescente da 10 a 1. Le posizioni pesate vengono sommate dalla prima alla nona: all’ultima posizione ( cifra di controllo ) viene assegnata una cifra tale che la somma di tutte e dieci le posizioni dia come risultato ZERO in modulo 11. Facciamo un esempio con il codice ISBN di un testo: 88-464-4178–8. La somma pesata delle prime nove posizioni è: 810 + 89 + 48 +67 +46 + 45 + 14 + 73 + 8* = 311. Il resto della divisione di 311 per 11 (311 mod 11) è 3. Quindi per ottenere 11 ci mancano otto unità: 8 costituisce appunto la cifra di controllo. 311 + 8 = 319: la somma finale è divisibile per 11, c.v.d., e quindi il resto è ZERO. Il nostro codice non ha errori! A partire dal gennaio 2007 anche la codifica libraria si avvale del codice EAN, poiché esso riguarda i prodotti di consumo finale tra cui sono compresi anche i libri. Perciò i codici ISBN già assegnati vengono convertiti in EAN premettendo al vecchio ISBN il prefisso 978; naturalmente verrà ricalcolato il codice di controllo. Esempio: lo stesso libro avrà il codice vecchio ISBN = 0130669431, nuovo EAN = 9780130669438 Infine il codice matricola UNIPV è un codice composto da un numero di 6 cifre e un checksum, che può variare tra 0 e 99. Si tratta di un codice pesato, con qualche variante:
  • il peso della prima posizione è il numero rappresentato meno 1;
  • il peso delle posizioni successive è di 1, 3, 5, 7, 13;
  • la somma dei valori viene successivamente valutata modulo 100: il numero risultante è il check Ad esempio il codice matricola 288079 verrà così valutato: (2-1) + (81) + (83) + (05) + (77) + (9*13) = 1+8+24+0+49+117 = 199 mod 100 = 99.
  1. Il codice fiscale individuale: il decreto istitutivo, la struttura, il calcolo della lettera di controllo. L'omocodia. Il codice fiscale individuale, istituito dal D.M. 23 dicembre 1976, è una rappresentazione di 16 caratteri alfanumerici; il sedicesimo funge da carattere di controllo. Dalla decodifica dei 15 caratteri si possono ricavare con certezza la data di nascita, il sesso e il comune di nascita del titolare. Non è invece possibile ricavare nome e cognome del titolare, perché tali dati sono rappresentati soltanto da 3 lettere. Il codice di controllo è determinato attraverso una procedura con alcune peculiarità → innanzitutto il peso è connesso con la posizione in modo limitato, perché viene fatta distinzione solo tra posizioni pari e dispari (come l’EAN). Nelle posizioni PARI le lettere alfabetiche assumono un peso corrispondente alla loro collocazione nell’ordine alfabetico, da A=0 alla Z=25. Nelle posizioni DISPARI le lettere alfabetiche assumono un peso mappato su una permutazione dei valori da 0 a 25, per cui è necessario consultare la tabella del Decreto Ministeriale. Le cifre assumono gli stessi valori corrispondenti alle prime dieci lettere (da A → 0 a J → 9). I valori numerici così assegnati ai quindici caratteri alfanumerici di un codice fiscale vengono tutti sommati. Il risultato viene poi ricalcolato in modulo 26 (con resti da 0 a 25), in modo da poter fare corrispondere ogni possibile resto con una lettera dell’alfabeto internazionale. Infine si determina la lettera corrispondente al resto calcolato, in base alla corrispondenza usuale (A=0, Z=25): essa rappresenterà il codice di controllo. Infine va precisato che il codice fiscale è individuale, per cui occorre trovare delle soluzioni che garantiscano l’impossibilità di una duplicazione di codice: a tal fine esiste un database centrale con la registrazione di tutti i codici assegnati. Questo però non risolve tutti i problemi a monte. Un problema relativo al codice fiscale è il presentarsi frequente di casi di omocodia (art. 6

D.M.): due persone con gli stessi dati anagrafici si ritrovano ad avere un codice fiscale uguale, cosa che non può succedere. In questi casi l'interessato deve rivolgersi all'Agenzia delle Entrate per chiedere la correzione del codice: la procedura consiste nel sostituire uno o più dei 7 numeri del codice con delle lettere corrispondenti.

  1. I codici bancari: i parametri bancari, BBAN, IBAN e codici di controllo Per le operazioni bancarie di accredito/addebito la banca richiede le coordinate bancarie del conto corrente, cioè una serie di codici che lo identificano in modo univoco in ambiente nazionale (BBAN) o internazionale (IBAN). Questi codici identificano l’Istituto di credito (ABI), la filiale presso la quale abbiamo aperto il conto (CAB) e il numero del conto. Innanzitutto il codice ABI (Associazione bancaria italiana) è composto da cinque cifre, conservate in un apposito database, che identificano univocamente ciascun Istituto di credito. Anche il codice CAB (Codice di Avviamento Bancario) è composto da cinque cifre, ed indica una determinata filiale della banca indicata dal codice ABI. Il CONTO è poi una stringa alfanumerica di dodici lettere/ cifre; di solito le cifre significative sono in numero inferiore, e si completa a 12 premettendo i necessari zeri. Il codice BBAN (Basic Bank Account Number), cioè il codice della Coordinata bancaria nazionale, ha struttura variabile nelle varie nazioni europee. In Italia è costruito sulla successione di ABI (5), CAB (5) e CONTO (12), preceduta da una lettera di controllo, il codice CIN: in tutto si hanno 23 cifre/lettere. Il calcolo del CIN segue le stesse regole già viste per il codice fiscale. Per controllare quali agenzie bancarie corrispondano ad una certa coppia ABI/ CAB occorrerebbe poter accedere al database mantenuto dall'ABI. Comunque all'interno dell'UE il BBAN non basta più per indicare in modo univoco un conto, poiché manca l'indicazione della nazione. Per questo è stato previsto un codice standardizzato per tutte le nazioni della Comunità europea, detto IBAN (International Bank Account Number). L'IBAN è costruito sul BBAN nazionale, con l'aggiunta delle due lettere che standardizzano la sigla di una nazione (es. IT) e di altri due cifre di controllo. L'IBAN sarà quindi costituito da 27 simboli alfanumerici. Il codice di controllo inserito nell'IBAN viene calcolato secondo i seguenti passaggi:
  • si costruisce un IBAN fasullo, con 00 al posto del vero codice di controllo
  • si spostano alla fine della stringa alfanumerica i primi 4 simboli, eliminando tutti gli eventuali caratteri non alfanumerici
  • si convertono le lettere rimanenti in numeri: alla A viene dato il numero 10, e così via fino a Z=
  • si prende il numero ottenuto e si calcola la congruenza modulo 97
  • si sottrae il risultato da 98; se il risultato è inferiore a 10 si premette uno zero, per avere due cifre
  1. l'aritmetica modulare: moduli, classi di congruenza, operazioni in modulo, divisori dello zero L'aritmetica modulare è detta anche aritmetica dell'orologio, perché il collocare gli elementi dell’insieme modulo circolarmente su un anello (come le ore o i minuti di un orologio) suggerisce un’efficace analogia con il comportamento aritmetico del modulo stesso. E’ chiamata anche aritmetica dei resti perché, essendo escluso per definizione dall’insieme modulo n ogni numero = o > n, con tali numeri si possono però individuare delle classi di equivalenza, dette congruenze , risultanti dal resto della divisione per il modulo ( ad es. 30 è congruo con 3 modulo 9 ). Possiamo anche pensare alla congruenza come ad una funzione che mappa l’infinito sul finito, attraverso una serie di classi infinite ( classi di congruenza ). Sono possibili nel modulo le consuete operazioni aritmetiche sugli interi, tenendo sempre presente che i risultati molto spesso saranno diversi da quelli cui siamo abituati, e che di ogni risultato eventualmente maggiore del modulo n si considera solo il resto della divisione per n. 7 + 7 = 5 ( mod 9 ) 6 * 8 = 0 (mod 12) 3 3 = 3 (mod 12) Alcune semplici operazioni di aritmetica modulare vengono calcolate anche nell’esperienza quotidiana e nel parlare comune, con l’aritmetica dell’orologio: es. se alle undici dico “ tra quattro ore saranno le tre” , ho compiuto un’addizione modulo 12.
  2. L'esponenziazione modulare e le tabelline applicative: esercizi
  3. Il problema degli inversi nell'aritmetica modulare Per il nostro sistema crittografico servono delle funzioni inverse. All'interno di un modulo n, un numero x è detto inverso moltiplicativo di un numero y se xy = 1 (mod n). Es. all'interno di un