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


Appunti informatica di base, Appunti di Elementi di Informatica

Appunti completi lezioni con slides

Tipologia: Appunti

2024/2025

Caricato il 19/01/2026

valentina-zani-5
valentina-zani-5 🇮🇹

5

(1)

3 documenti

1 / 29

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
INFORMATICA DI BASE
Storia dell'informatica
L'informatica nasce tra il 1800 e il 1900 per amore del progresso e non per comunicare
come si pensa oggi. L’uso dell’informatica per comunicare è arrivato dopo. Alan Turing,
Pascal e diversi altri scienziati e non, hanno partecipato alla nascita dell'informatica.
Noi parliamo di informatica usando effettivamente il termine "informatica" ma il resto del
mondo la definisce:
● computer science = la teoria
● information technology = la messa in pratica della teoria
Evoluzione
La nascita dell’informatica risale al XX secolo a.C. con l’abaco, primo strumento di calcolo
meccanico manuale. Nasce il concetto di “macchina”.
Nel II secolo a.C. viene inventata la macchina di Anticitera che permetteva di calcolare e
mostrare i movimenti astronomici con fasi lunari e cicli dei pianeti.
Nel 1641, Blaise Pascal inventa una macchina per svolgere addizioni e nello stesso
periodo, Leibniz studia il sistema binario per eseguire i calcoli.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d

Anteprima parziale del testo

Scarica Appunti informatica di base e più Appunti in PDF di Elementi di Informatica solo su Docsity!

INFORMATICA DI BASE

Storia dell'informatica

L'informatica nasce tra il 1800 e il 1900 per amore del progresso e non per comunicare come si pensa oggi. L’uso dell’informatica per comunicare è arrivato dopo. Alan Turing, Pascal e diversi altri scienziati e non, hanno partecipato alla nascita dell'informatica.

Noi parliamo di informatica usando effettivamente il termine " informatica " ma il resto del mondo la definisce:

● computer science = la teoria

● information technology = la messa in pratica della teoria

Evoluzione

La nascita dell’informatica risale al XX secolo a.C. con l’ abaco , primo strumento di calcolo meccanico manuale. Nasce il concetto di “macchina”.

Nel II secolo a.C. viene inventata la macchina di Anticitera che permetteva di calcolare e mostrare i movimenti astronomici con fasi lunari e cicli dei pianeti.

Nel 1641 , Blaise Pascal inventa una macchina per svolgere addizioni e nello stesso periodo, Leibniz studia il sistema binario per eseguire i calcoli.

Inizio 1800: viene inventata la prima magna a vapore per i calcoli. 1848 : La matematica Ada scrive il primo programma della storia. 1939 : Atanasoff-Berry Computer sviluppa il primo prototipo di computer elettronico digitale. 1941 : Zuse sviluppa il primo computer programmabile e il primo computer commerciale 1945 : Von Neumann descrive l’architettura Von Neumann. 1945 : Nasce il primo vero computer della storia. 1957 : Nascono molti linguaggi di programmazione 1971 : Nasce il primo virus informatico Creeper e di conseguenza il primo antivirus Reaper. 1975: Bill Gates e Paul Allen fondano Microsoft. 1976: Steve Jobs e Wozniak fondano Apple 1989: Nasce l’idea del World Wide Web (WWW) 1991: Pubblicato il primo sito internet Fine 900 e inizio 2000: nascono nuovi siti e motori di ricerca Google, Amazon, Paypal. Successivamente nascono i social media (Facebook, Twitter) Adesso: nascita e sviluppo dell’intelligenza artificiale.

CODIFICA DELL’INFORMAZIONE

Un’informazione è una notizia, dato o elemento che ci permette di avere conoscenza di fatti e situazioni. Un’informazione è l’insieme di dati con cui un’idea prende forma.

Data un’informazione, si ha bisogno di un modo unico di rappresentarla

  • immagini -insieme di colori -scala di grigi
  • suoni -insieme di note

Sistema binario Il sistema binario è un sistema di numerazione che usa solo due simboli chiamati bit per rappresentare i numeri (0 e 1) ed è la base del sistema di numerazione usato in informatica.

Vantaggi del sistema binario

  • usa solo due simboli quindi è molto semplice da capire e usare
  • ideale per elaborazione e memorizzazione di informazioni di dispositivi elettronici
  • facilmente comprimibile e criptabile

Svantaggi del sistema binario

  • richiede un maggior numero di cifre per rappresentare un numero del sistema decimale il che rende complessa la rappresentazione dei numeri stessi
  • può essere più suscettibile a errori di trasmissione
  • occupa molto spazio

(Quando nel valore binario ci sono gli 0, quelli non si calcolano e si tolgono prima di sommare i 2 alla potenza.)

Esistono varie rappresentazioni per rappresentare tutti numeri:

  • segno e modulo
  • complemento a 1
  • complemento a 2
  • offset/eccesso-k

SEGNO E MODULO Questa codifica prevede di riservare il bit più significativo di un numero binario per indicare il segno. Se il bit è 0 allora il numero è positivo ma se il bit è 1 allora il numero è negativo. I restanti bit rappresentano il valore assoluto del numero. Per esempio se prendiamo il valore 1001 e ci anteponiamo lo 0 allora il numero sarà 9 (01001) ma se ci anteponiamo 1 allora il numero sarà -9 (11001).

OFFSET/ECCESSO-K

Questa codifica prevede di aggiungere un valore costante (valore bias) al valore assoluto prima di convertirlo in binario. In questo modo il valore bias assicura che tutti i numeri saranno positivi. Ad esempio la codifica in eccesso di 3 del numero 7. Il valore di bias è 3 perciò dobbiamo fare 3+7 e si ottiene 10. Convertiamo 10 in binario ed esce 1010. Quindi si aggiunge l’eccesso al valore e si converte il risultato in binario.

vantaggi dell’offset/eccesso-k: -esiste un’unica notazione per lo zero -mantiene l’ordine abituale dei numeri (negativi sono minori dei positivi) -non ci si cura del segno

svantaggi dell’offset: -notazione non facile da capire -richiede di trasformare i numeri secondo una tabella -il bit più significativo ha valore contrario rispetto alle altre notazioni.

RAPPRESENTAZIONE NUMERI NON INTERI (decimali)

Esistono due tipologie di notazione: a virgola fissa e quella a virgola mobile.

virgola fissa Con questo metodo, dato il numero di bit disponibili per la rappresentazione, si decide quanti rappresentano la parte intera e quanti la parte decimale. A questo punto, tutto funziona come per i numeri binari in un solo modulo. Le potenze di due della parte decimale continueranno a decrescere a partire dall'esponente -1.

virgola mobile La rappresentazione in virgola mobile è un modo per rappresentare numeri reali in binario basato sulla notazione scientifica, in cui un numero è scritto come prodotto di una mantissa e una potenza di 2, il tutto moltiplicato per un segno (+/-).

Il segno è rappresentato da un singolo bit (il primo), che indica se il numero è positivo o negativo. L'esponente è rappresentato da un certo numero di bit e indica la posizione della virgola rispetto alla mantissa. In particolare, l'esponente rappresenta il valore dell'esponente decimale in base 10 ed è solitamente in notazione offset/eccesso-k. La rappresentazione in virgola mobile ha una precisione limitata.

Passi di trasformazione da numero decimale a numero in virgola mobile:

  1. Impostazione del segno
  2. Trasformazione in virgola fissa
  3. Passaggio alla forma normale
  4. Rappresentazione esponente in codifica eccesso
  5. Rappresentazione mantissa

Overflow = situazione in cui il risultato supera il valore massimo che può essere rappresentato. Underflow = situazione in cui il risultato di un’operazione è troppo piccolo per essere rappresentato.

Dimensioni ed unità di misura

  • Bit (b): rappresenta un singolo valore binario di 0 o 1.
  • Byte (B): il byte è composto da 8 bit.
  • Kilobyte (KB): il kilobyte è composto da 1024 byte. Viene spesso utilizzato per indicare la dimensione dei file di testo e delle immagini di piccole dimensioni.
  • Megabyte (MB): il megabyte è composto da 1024 kilobyte. Viene spesso utilizzato per indicare la dimensione dei file audio e delle immagini più dettagliate.

SEGNALI E DIGITALIZZAZIONE

Il mondo che ci circonda può essere descritto da grandezze fisiche come la temperatura, la velocità, posizione, immagine e il suono. Per rappresentare queste grandezze si usano due tipi di segnali: analogici e digitali.

Dobbiamo passare da un valore che cambia continuamente in ampiezza o nel tempo, ad un valore fisso.

La quantizzazione è il processo di approssimazione di un segnale analogico ad un segnale digitale discreto. La quantizzazione consiste nell’assegnare un valore discreto al valore continuo. Il campionamento è il processo di cattura del segnale analogico a intervalli regolari di tempo, noto anche come frequenza di campionamento. Questa frequenza determina la qualità della rappresentazione digitale del segnale analogico ed è espressa in Hertz (Hz).

Perciò nella rappresentazione analogica, l’informazione è rappresentata in forma continua e ha dei vantaggi e degli svantaggi.

Invece nella rappresentazione digitale, l’informazione viene rappresentata come una serie di numeri discreti. Il segnale viene campionato e quantizzato, ovvero viene misurato a intervalli regolari di tempo e la misura viene approssimata ad un valore numerico. tutto ciò ha dei vantaggi e degli svantaggi.

LA COMPRESSIONE

è la tecnica che permette la riduzione dei bit necessari a rappresentare un’informazione digitale ed è utile per la trasmissione ed archiviazione dei dati. Un aspetto fondamentale della compressione è ridurre le dimensioni dei file digitali senza perdere alcuna informazione importante. Quindi ridurre lo spazio di archiviazione mantenendo la qualità del contenuto originale. Esistono due tipologie di compressione:

  • lossless
  • lossy

La compressione viene usata in molti ambiti:

1. comunicazione : è fondamentale per la trasmissione di informazioni perché vengono ridotti i tempo e il consumo 2. multimedia : riduce dimensioni di immagini, video e audio 3. archiviazione : permette di ridurre la dimensione dei file e di salvare più dati nello stesso spazio

Lossless è una tecnica di compressione che non comporta la perdita di dati durante la fase di compressione/decompressione. Cerca di ridurre le dimensioni dei file rimuovendo i dati che

si ripetono senza modificare la qualità finale dell'informazione originale. La tecnica lossless individua i pattern ripetitivi per sostituirli con codici più brevi. In questo modo i dati finali saranno esattamente gli stessi dei dati iniziali.

Vantaggi: -nessuna perdita di dati -algoritmi “intuitivi”

Svantaggi: -meno efficiente della tecnica lossy perché non può rimuovere nessun tipo di informazione, ma solo organizzarla in maniera più efficiente -maggiore complessità computazionale: la tecnica lossless richiede più tempo

Lossy è una tecnica di compressione dati che prevede l’eliminazione di dati che non risultano significativi al risultato finale. In altre parole, comporta la perdita di una parte dell'informazione originale durante la fase di compressione/decompressione perché identifica le parti che possono essere perse (cercando di non perdere molte informazioni). Ciò riduce significativamente la dimensione dei dati e quindi anche il temp di trasmissione ed occupazione di spazio.

Vantaggi: -maggiore efficienza: può raggiungere una compressione maggiore rispetto alla lossless -adatto per alcuni tipi di dati: per esempio immagini e video

Svantaggi: -perdita permanente di informazioni -non reversibile -non adatto a dati critici

Alcuni esempi di compressione

  1. run-length encoding (lossless)
  2. dictionary/substitution encoding (lossless)
  3. deflate/inflate (lossless)
  4. discrete cosine transform (lossy)

Run-length encoding (RLE)

Il Run-length encoding (RLE) è una tecnica di compressione lossless che riduce la quantità di dati rappresentando le ripetizioni di simboli in una sequenza di dati, RLE analizza la sequenza e sostituisce le ripetizioni con una coppia di numeri (simbolo + numero di volte che è stato ripetuto). È particolarmente efficace su dati con lunghe sequenze ripetute. È semplice, veloce e poco costoso in termini computazionali, ma inefficace su dati non ripetitivi.

Esempio: AAA BB CCCCC → 3A 2B 5C.

La crittografia è una parte essenziale del mondo che ci circonda e la troviamo in diversi campi: protezione dei dati sensibili, garanzia dell'integrità dei dati, firma digitale ed identificazione/autenticazione.

La crittografia nasce molto tempo fa per proteggere informazioni soprattutto di carattere militare, informazioni che al giorno d’oggi risultano molto semplici da “rompere”. La “ rottura ” di un algoritmo significa decifrare un messaggio cifrato senza conoscere però la chiave di cifratura utilizzata.

La crittografia antica La “ scitala ” è la tecnica di crittografia utilizzata dagli Spartani nel V secolo a.C. per proteggere le comunicazioni militari. Era un bastone cilindrico sul quale veniva avvolta una pergamena contenente il messaggio in modo trasversale e solo chi aveva un bastone simile poteva decifrare il messaggio scritto. Questa tecnica di crittografia era però molto semplice da rompere. Un altro esempio di crittografia è il “ cifrario di Cesare ”, un metodo di crittografia usato da Giulio Cesare per proteggere le comunicazioni militari. Si trattava di un cifrario a sostituzione monoalfabetica nel quale ogni lettera dell’alfabeto viene sostituita con un’altra lettera a distanza fissa detta “passo”.

Anche il cifrario però può essere rotto molto facilmente con il brute force attack , una tecnica di attacco informazioni usata per violare un sistema di crittografia provando ogni combinazione possibile fino a trovare quella giusta per decifrare il messaggio e richiede molto tempo e risorse computazionali.

Un altro esempio di algoritmo è il cifrario di Vigenère, un algoritmo di crittografia simmetrica a sostituzione polialfabetica inventato da Giovanni Battista Bellaso e ripubblicato da Blaise de Vigenère. Il cifrario usa una password per cifrare il testo in chiaro; la chiave viene ripetuta per tutta la lunghezza del testo in chiaro e viene usata per cifrare ogni carattere in modo diverso a seconda della posizione nella chiave. Questo cifrario è sicuramente più forte di quello di Cesare ma si può rompere con la crittoanalisi : la disciplina che studia i metodi e le tecniche per analizzare e rompere i sistemi crittografici per ottenere le informazioni senza conoscere la chiave di cifratura. La crittoanalisi inoltre si occupa di individuare le vulnerabilità nei sistemi di crittografia, scrivere le chiavi di cifratura, decifrare i messaggi criptati e violare la sicurezza dei dati. Ci sono due tecniche per violare questo cifrario: l’attacco di Kasiski e l’analisi di frequenza. L’ attacco di Kasiski è il metodo che consiste nel cercare sequenze di lettere che si ripetono nel testo cifrato, se una sequenza si ripetono, è probabile che sia stata cifrata con la stessa parte della chiave. La distanza tra le varie ripetizioni può indicare quando è lunga la chiave (perché essa si ripete ciclicamente) e così, trovata la lunghezza della chiave, è più semplice scoprire le lettere e quindi decifrare il messaggio.

Un’ altra tecnica per violare il cifrario di Vigenère è l’ analisi di frequenza. L’attaccante cerca di capire quanto è lunga la chiave dividendo il testo cifrato in gruppi di lettere. Si calcola l’ indice di coincidenza (IC) per ogni gruppo, ovvero si analizza ogni gruppo separatamente e studiano le lettere più frequenti in ogni gruppo; quando si è trovata la giusta lunghezza della chiave , poi si può cercare la chiave stessa e decifrare il messaggio.

La crittografia moderna La crittografia moderna si è sviluppata grazie agli sviluppi matematici e tecnologici della prima metà del XX secolo. Le tecniche principali presenti anche oggi si dividono in due categorie:

  1. crittografia simmetrica
  2. crittografia asimmetrica

Definizioni

chiave di cifratura ” = è la sequenza di bit o caratteri utilizzata per cifrare e decifrare i messaggi e può essere di due tipi: simmetrica o asimmetrica. Le chiavi di crittografia devono essere abbastanza lunghe e complesse da garantire la sicurezza dei messaggi cifrati; maggiore è la lunghezza della chiave, maggiore è la sicurezza del sistema di crittografia.

plaintext ” = il testo o i dati originali non ancora cifrati o crittografati, è il messaggio originale che si desidera proteggere o trasmettere in sicurezza. Può essere costituito da un testo, dati binari, file multimediali o qualsiasi altra informazione.

ciphertext ” = il risultato della trasformazione di un plaintext attraverso un processo crittografico, che lo rende illeggibile senza la conoscenza della chiave crittografica. La funzione che utilizziamo per la trasformazione da plaintext a ciphertext deve essere invertibile sennò non si riuscirebbe più a trasformare un testo cifrato in un testo in chiaro.

encryption ” = il processo di trasformazione del plaintext in ciphertext con l’uso di un algoritmo matematico e una chiave crittografica. Questo processo viene applicato per tentare di proteggere i dati durante la loro trasmissione o memorizzazione impedendo a chi non è autorizzato di comprendere o accedere al contenuto.

decryption ” = il processo di conversione da ciphertext a plaintext con una chiave crittografica e un algoritmo di decifratura. è l’operazione inversa della encryption. Questo processo è applicabile solo se l’algoritmo di encryption è noto e invertibile e se si è in possesso della chiave di decryption.

One time pad Il one time pad è un metodo di crittografia estremamente efficace che prevede l’uso di una chiave della stessa lunghezza del plaintext per codificare l’informazione. La chiave deve essere utilizzata solo una volta ed è dimostrato che questo metodo è inattaccabile.

-efficienza = richiede meno risorse rispetto alla crittografia asimmetrica e ciò significa che può essere usata in dispositivi con risorse limitate come telefoni, computer portatili, smart watch, sensori ambientali, … -sicurezza = è molto sicura se la chiave viene gestita correttamente e mantenuta segreta -implementazione semplice e più intuitiva rispetto alla crittografia asimmetrica

Gli svantaggi della cifratura simmetrica -scambio di chiavi = se la chiave viene intercettata da un attaccante, può essere usata per decifrare i dati -gestione delle chiavi = se ci sono molte parti coinvolte nella crittografia, la gestione delle chiavi può diventare un problema complesso -difficoltà nell'aggiornamento della chiave = se la chiave deve essere aggiornata è necessario scambiare la nuova chiave in modo sicuro -non adatta per la crittografia a lungo termine = se la chiave viene compromessa, tutti i dati cifrati con quella chiave sono vulnerabili

Alcuni esempi di algoritmi di crittografia simmetrica includono: ● data encryption standard (DES) ● advanced encryption standard (AES) ● ChaCha 20

Data Encryption Standard (DES) è un algoritmo di cifratura simmetrica a blocchi utilizzato per proteggere i dati. è stato sviluppato negli anni 70 dal National Institute of Standards and Technology (NIST); opera su blocchi di dati di 64 bit (effettivi sono 56) e usa una serie di trasposizioni e sostituzioni per cifrare i dati.

Le fasi di questo algoritmo sono:

1. inizializzazione = l'algoritmo prende in input un blocco di dati da cifrare e la chiave di cifratura di 64 bit. In questa fase la chiave viene ridotta a 56 bit con un processo di permutazione e vengono create 16 sottochiavi 2. suddivisione del blocco di dati = il blocco di dati di 64 bit viene suddiviso a metà (ciascuna con 32 bit) 3. iterazione = il blocco di dati viene sottoposto ad una serie di 16 iterazioni, in cui ogni metà del blocco iniziale viene combinata con una sottochiave diversa. 4. fusione = alla fine delle 16 iterazioni, le due metà vengono fuse e il risultato finale viene restituito come output dell'algoritmo

La decodifica di DES funziona eseguendo il processo di cifratura al contrario utilizzando sempre la stessa chiave di partenza. DES può funzionare sia cifrando ogni blocco in maniera isolata, sia cifrando i blocchi concatenandoli tra loro.

La crittografia asimmetrica Questa crittografia è nota anche come “crittografia a chiave pubblica e privata” ed è un metodo che utilizza una coppia di chiavi: una pubblica, che viene pubblicamente condivisa e una privata, che viene mantenuta segreta dall’utente. La chiave pubblica viene usata per cifrare i dati, mentre quella privata viene usata per decifrare i dati. La crittografia a chiave pubblica è utile per risolvere il problema dello scambio di chiavi (presente nella crittografia simmetrica) perché la chiave pubblica può essere rivelata liberamente permettendo a chiunque di cifrare i dati; ma solo il proprietario della chiave privata corrispondente può decifrare i dati, garantendo così la sicurezza di essi.

Le fasi della crittografia asimmetrica:

1. generazione delle chiavi = l’utente genera una coppia di chiavi, una pubblica e una privata. Se il destinatario deve comunicare con il mittente, dovrà generare a sua volta altre due chiavi. 2. crittografia dei dati = il mittente una la chiave pubblica per cifrare il messaggio prima di inviarlo e solo il destinatario con la chiave segreta corrispondente potrà decifrarlo. 3. decifratura dei dati = il destinatario utilizza la propria chiave per decifrare il messaggio ricevuto dal mittente. Nessun’altra persona, incluso il mittente, potrà decifrare il messaggio perché solo la chiave segreta del destinatario può farlo.

I vantaggi della crittografia asimmetrica -scambio sicuro delle chiavi = non è necessario uno scambio di chiavi segrete perché ogni utente ha una coppia di chiavi unica. Questo semplifica molto la distribuzione delle chiavi e ne aumenta la sicurezza. -firma digitale = questa crittografia consente la firma digitale che garantisce l'autenticità e l’integrità dei dati.

Diffie-Hellman Questo protocollo è un algoritmo a chiave pubblica che permette lo scambio scuro di una chiave segreta tra due parti in una rete non sicura e si basa sulla difficoltà computazionale del problema del logaritmo discreto. Questo protocollo consente lo scambio di una chiave segreta su una rete pubblica senza dover inviare la chiave stessa e questo rende più difficile la decifrazione dei messaggi. Questo protocollo è vulnerabile ad attacchi di tipo “man in the middle” in cui un attaccante intercetta e modifica la comunicazione tra le due parti per ottenere la chiave segreta.

Le fasi

1. scelta dei parametri = le due parti devono scegliere due parametri pubblici, un numero primo P e un generatore G. Questi due parametri possono essere condivisi pubblicamente sulla rete. 2. generazione delle chiavi pubbliche = le due parti generano ciascuno una chiave pubblica che viene poi inviata all’altra parte. 3. scambio delle chiavi pubbliche = le due parti scambiano le chiavi tra di loro. 4. calcolo della chiave segreta = le due parti usano le due chiavi pubbliche per calcolare la chiave segreta; il calcolo produce lo stesso risultato per entrambi. 5. utilizzo della chiave segreta = la chiave viene utilizzata da entrambe le parti per cifrare e decifrare i messaggi scambiati tra loro.

Generazione pseudo-casuale di numeri Questo è un problema fondamentale per la crittografia perché un algoritmo di crittografia richiede numeri casuali, che i computer non sono effettivamente in grado di generare. Essi infatti utilizzano algoritmi matematici per generare numeri pseudo-casuali (che sembrano casuali) che in realtà sono deterministici e prevedibili. L’obiettivo è quello di creare una sequenza di numeri che sembrano casuali ma che possono essere riprodotti da chi conosce l’algoritmo utilizzato ad una determinata chiave, che, se viene scoperta da un attaccante, può essere usata per decifrare i messaggi. Per garantire la sicurezza crittografica i numeri devono avere determinate proprietà come la casualità , l’uniformità e l’indipendenza.

L’ algoritmo LCG (linear congruential generator) è un metodo per generare numeri pseudo-casuali, che si basa su una semplice equazione matematica che dato un valore di partenza chiamato seme (o seed), genera una serie di numeri che sembrano casuali.

La funzione che genera i numeri è:

Hash crittografico è una funzione che converte un messaggio di lunghezza variabile in una stringa di lunghezza fissa. Questa stringa prende il nome di hash ed è univoca per ogni messaggio e viene usata per garantire l’integrità del messaggio. Se il messaggio viene modificato in qualsiasi modo, anche solo di un bit, l’hash cambierà completamente. In questo modo è possibile verificare l’integrità del messaggio confrontando l’hash calcolato dal destinatario con quello inviato dal mittente. se i due corrispondono, il messaggio può essere considerato integro. L’algoritmo di hash crittografico deve avere certe caratteristiche per garantire la sicurezza e l’affidabilità del processo di hashing: ● resistenza alla collisione = deve essere resistente alla possibilità che due input diversi producano lo stesso hash. Non è possibile quindi trovare due input diversi che generino lo stesso hash con una percentuale accettabile. ● resistenza alla pre-immagine = deve essere resistente alla possibilità di trovare un input che generi un hash specifico; non è quindi possibile determinare l’input originale a partire dal l’hash generato. Un hash si dice per questo “one way” ● sicurezza computazionale = deve essere resistente alle collisioni e alla preimmagine; anche con l’uso di risorse informatiche potenti sarebbe molto difficile rompere l’algoritmo in un tempo ragionevole. ● randomness = deve generare hash che sembrano casuali e imprevedibili anche se l’input è noto. ● lunghezza dell’hash = deve generare hash di lunghezza sufficiente per garantire la sicurezza e predire gli attacchi di forza bruta

Evoluzione della crittografia La crittografia sta diventando sempre più importante per la protezione dei dati nei vari campi tra cui la sicurezza informatica, la privacy dei dati personali, il commercio elettronico e il cloud computing. Tuttavia la crittografia dovrà affrontare delle difficoltà, come per esempio l’avvento dei computer quantistici, che potrebbe mettere a rischio la sicurezza della crittografia asimmetrica attuale, dato che computer del genere sono in grado di risolvere problemi matematici complessi in modo molto veloce.

Big Data La gestione di grandi quantità di dati (come quelli generati da reti social, da cloud computing o dalla telemedicina) richiede algoritmi di crittografia in grado di sentire grandi quantità di dati in modo efficiente e sicuro. La richiesta di maggior sicurezza si scontra con la richiesta di algoritmi e tecniche più veloci.