Insegnamento DATA SECURITY AND BLOCKCHAIN

Nome del corso di laurea Ingegneria informatica e robotica
Codice insegnamento A003193
Curriculum Comune a tutti i curricula
Docente responsabile Luca Grilli
Docenti
  • Luca Grilli
Ore
  • 48 Ore - Luca Grilli
CFU 6
Regolamento Coorte 2022
Erogato Erogato nel 2023/24
Erogato altro regolamento
Attività Caratterizzante
Ambito Ingegneria informatica
Settore ING-INF/05
Anno 2
Periodo Primo Semestre
Tipo insegnamento Opzionale (Optional)
Tipo attività Attività formativa monodisciplinare
Lingua insegnamento ITALIANO
Contenuti Concetti di base e terminologia. Crittografia applicata alla sicurezza dei dati. Tecniche di anonimizzazione dei dati. Concetti generali su blockchain e smart contract. La blockchain Ethereum e il linguaggio Solidity.
Testi di riferimento Il corso affronta molte tematiche di recentissima introduzione riguardanti tecnologie in continua evoluzione, che non sono raccolte in un singolo libro di testo. Per questo, gran parte dei contenuti sono illustrati nelle dispense a cura del docente.

Si segnalano tuttavia alcuni testi di riferimento, tutorial e documentazione on-line per approfondimenti sui vari argomenti trattati.

Testi consigliati

Michael Goodrich, Roberto Tamassia. Introduction to Computer Security (2nd Edition). Pearson Education, 2021.

Jonathan Katz, Yehuda Lindell. Introduction to Modern Cryptography (3rd Edition). Chapman & Hall/CRC, 2021.

William Stallings. Crittografia (1a edizione). Pearson Italia, 2022.

Charlie Kaufman, Radia Perlman, Mike Speciner, Ray Perlner. Network Security: Private Communication in a Public World (3rd Edition). Addison-Wesley Professional, 2022.

A. Narayanan, J. Bonneau, E. Felten, A. Miller, S. Goldfeder. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction. Princeton University Press, 2016.

Andreas M. Antonopoulos, Gavin Wood. Mastering Ethereum: Building Smart Contracts and Dapps. O'Reilly Media, Inc., 2018.

Testi online gratuti

Paul C. van Oorschot. Computer Security and the Internet: Tools and Jewels from Malware to Bitcoin (2nd Edition). Springer, 2021.
[https://people.scs.carleton.ca/~paulv/toolsjewels.html]

A. J. Menezes, P. C. van Oorschot and S. A. Vanstone. Handbook of Applied Cryptography (5th printing). CRC Press, 2001.
[https://cacr.uwaterloo.ca/hac/]

Tutorial e documentazione on-line

Developer Guides - Bitcoin [https://developer.bitcoin.org/]
Ethereum Development Documentation [https://ethereum.org/en/developers/docs/]
Ethereum Development Tutorials [https://ethereum.org/en/developers/tutorials/]
Ethereum Whitepaper [https://ethereum.org/en/whitepaper/]
Solidity [https://docs.soliditylang.org/]
Obiettivi formativi L'obiettivo principale di questo insegnamento è quello di fornire agli studenti la conoscenza degli algoritmi crittografici fondamentali e delle metodologie e tecnologie per la protezione dei dati, con particolare attenzione alla blockchain.

Di seguito sono elencate le principali conoscenze che gli studenti acquisiranno:
• principali primitive crittografiche a chiave segreta e a chiave pubblica;
• metodi per la protezione dei dati in fase di comunicazione e di memorizzazione;
• metodi per la condivisione fidata dei dati;
• attacchi inferenziali e metodi per la protezione dell'anonimato;
• panoramica delle tecnologie blockchain e DLT (programmabili) e delle loro applicazioni;
• panoramica della blockchain Bitcoin;
• panoramica della blockchain Ethereum;
• nozioni di base del linguaggio Solidity;
• nozioni di base sugli smart contract di Ethereum;
• strumenti e framework per sviluppare e testare applicazioni decentralizzate (dapp) su Ethereum.

Di seguito sono elencate le principali abilità che gli studenti acquisiranno:
• capacità di riconoscere e classificare vulnerabilità e attacchi ai sistemi di gestione dati e ai sistemi software in generale;
• capacità di progettare sistemi informatici, sistemi di gestione dei dati e protocolli di comunicazione che garantiscano uno specifico livello di sicurezza, compresa la protezione dell'anonimato;
• capacità di sviluppare e testare applicazioni decentralizzate (dapp) per Ethereum.
Prerequisiti Per una piena comprensione degli argomenti trattati nel corso è utile (ma non strettamente necessario) conoscere gli algoritmi e le strutture di dati fondamentali, i concetti di base delle reti informatiche, compresi i principali protocolli Internet, le tecnologie Web, i servizi Web RESTful, le chiamate di procedura remota (RPC), JavaScript e Node.js.
Metodi didattici Il corso prevede due principali tipologie di lezioni:

• Lezioni frontali (80% del tempo totale): consisteranno nell'illustrazione di specifiche tematiche, mediante la proiezione di slide, riguardanti la protezione dei dati e la blockchain.

• Esercitazioni guidate al calcolatore (20% del tempo totale): saranno incentrate sullo sviluppo e sul test di semplici applicazioni decentralizzate (dapps) per la blockchain Ethereum, utilizzando il linguaggio Solidity.
Altre informazioni Nessuna.
Modalità di verifica dell'apprendimento [Obiettivi della valutazione]. Valutare (i) la conoscenza dei concetti teorici impartiti dal docente; (ii) la capacità di analizzare la sicurezza di specifiche soluzioni per la protezione dei dati; e (iii) la capacità di sviluppare protocolli e sistemi, incluse applicazioni decentralizzate per blockchain, che offrano un determinato livello di sicurezza e soddisfino determinati vincoli di progettazione.

L'esame consiste in una prova orale e in un lavoro di progetto (project work) come descritto di seguito.

Prova orale
• Durata: 30 minuti.
• Punteggio: 20/30.
• Composizione: 2 questi teorici e 1 esercizio pratico.

Progetto
• Obiettivo: sviluppo di un semplice sistema per la protezione dei dati, compresa un'applicazione decentralizzata (dapp) per blockchain.
• Consegna: software e tesina (documento di progetto).
• Numero di partecipanti: 1 (progetto individuale) o 2 (progetto di gruppo).
• Punteggio: 10/30.
Programma esteso [Concetti e terminologia di base in ambito data security]
Triade CIA: confidenzialità, integrità, disponibilità.
Triade AAA: garanzia (fiducia), autenticità, anonimato.
Vulnerabilità, minacce e attacchi.
Violazione dei dati, fuga di dati, perdita di dati, furto di dati.

[Crittografia applicata per la protezione dei dati]
Crittografia a chiave segreta.
Funzioni crittografiche di hash ed accumulatori crittografici.
Crittografia a chiave pubblica.
Firma digitale.
Cifratura ibrida.
Firma cieca.
Concetti fondamentali di crittografia delle curve ellittiche e di crittografia omomorfa.

[Controllo di accesso ai dati]
Modello AAA: autenticazione, autorizzazione, rendicontazione (accounting).
Autenticazione di sistemi e di persone.
Protocolli di autenticazione crittografici.
Segretezza in avanti (perfect forward secrecy).
Modelli per il controllo degli accessi: matrice di controllo, liste di controllo, liste di capacità, controllo degli accessi basato sui ruoli.

[Attacchi all'anonimato e tecniche di anonimizzazione dei dati]
Re-identificazione (o de-anonimizzazione) e attacchi di inferenza.
Tecniche di anonimizzazione di base: soppressione di attributi e record, offuscamento di caratteri, pseudonimizzazione, generalizzazione, mescolamento, aggregazione, perturbazione.
Tecniche di anonimizzazione avanzate: k-anonimato, l-diversità, anatomizzazione.

[Nozioni di base sulla blockchain]
Componenti della blockchain: transazioni, blocchi, meccanismi di consenso decentralizzati.
Tipi di blockchain: pubblica, permissionless, permissioned.
La blockchain Bitcoin.
Concetti generali sulle blockchain programmabili e sugli smart contract.
Applicazioni della blockchain.

[La blockchain Ethereum e il linguaggio Solidity]
Account di Ethereum.
Gas e commissioni.
Tipi di transazioni in Ethereum.
Ethereum come sistema a transizione di stati.
Meccanismi di consenso in Ethereum.
Esempi di smart contract in Solidity.
Standard di sviluppo di Ethereum.
Strumenti e framework per lo sviluppo e test di applicazioni decentralizzate (dapp) per Ethereum.
Condividi su