La crittografia è una materia tanto difficile quanto utile ed importante, specialmente per proteggere tutte le informazioni che generiamo nel digitale.
La difficoltà della crittografia è conseguenza principalmente del fatto che richiede conoscenze molto verticali su vari campi dello scibile umano. Se vogliamo lavorare nella crittografia teorica, è necessario studiare tanta e dico tanta matematica. Se invece vogliamo lavorare nella crittografia applicata, allora dobbiamo studiare sia la matematica, che la programmazione e dobbiamo imparare svariate sfumature dell’ingegneria del software.
Mi affascina non poco la figura di colui che implementa codice crittografico, proprio perché sta nel mezzo di tanti mondi, ciascuno con le proprie complessità e caratteristiche. È una delle cose più difficili da fare.
Come imparare queste cose?
Le risorse, in questo caso, non sono tante. Eppure ci sono. Cryptopals è una risorsa storica in questo contesto. È un insieme di challenges sviluppate da persone che lavorano nell’analisi di implementazioni crittografiche che ha proprio lo scopo di insegnare come implementare i più famosi ed importanti attacchi crittografici. L’aspetto fondamentale di queste challenges è proprio l’enfasi sull’implementazione, che pochi corsi anche all’università mettono. Un conto è capire un’idea. Un conto è trasformarla in codice, codice scritto dalle proprie mani.
Ovviamente anche qui tutto è in inglese. Sul canale avevo iniziato a portare i walkthrough di qualche challenges, ma richiede veramente un sacco di tempo. Io personalmente ho risolto i primi due sets, e vorrei fare anche le altre. Devo giusto investire il giusto tempo e la giusta attenzione.
Non è roba semplice questa, ma non bisogna neanche essere particolarmente dotati per risolvere le challenges. Bisogna solo studiare tanto, divertirsi e porre tanta attenzione.
Anche per me la crittografia è sempre stata una delle branche dell’informatica più interessanti, più che altro per il forte legame con la matematica a cui accennavi tu. E concordo pienamente con la tua analisi.
Purtroppo credo che lo scoglio più grande nell’avvicinarsi alla crittografia non sia tanto la quantità di matematica da affrontare in generale, ma anche il fatto che molti degli strumenti matematici utilizzati nella crittografia vengono a malapena sfiorati durante i vari anni di studi. Parlo di argomenti come aritmetica modulare, teoria analitica dei numeri e molti di quei “subset” della matematica che sfuggono alla classica analisi delle funzioni, che spesso diventa il centro dell’attenzione durante l’università.
Per questo, come dicevi tu, diventa una materia molto molto verticale: ad un certo punto si è quasi costretti a studiare concetti molto complessi in totale autonomia e pochi purtroppo vedono questo come un valido campo in cui specializzarsi. E tutto questo solo dal punto di vista teorico, senza accennare alla programmazione.
Comunque darò sicuramente un’occhiata al sito: ho già visto le challenges e sembrano molto interessanti. Grazie mille per il suggerimento!
Si effettivamente molte conoscenze richieste per imparare bene la crittografia non vengono insegnate bene neanche all’università.
L’anno scorso ad esempio io l’ho passato provando a fare un PhD proprio in crittografia applicata all’università di roma Tor Vergata, e le cose non sono andate proprio bene. Il problema principale con cui mi sono scontrato è che non c’erano le competenze adeguate per effettuare ricerca significativa in questo ambito.
Volevo lavorare in particolare nell’analisi delle implementazioni crittografiche tipo OpenSSL, per andare a trovare vulnerabilità nel codice. È un ambiente molto specifico che mi affascina, però non sono riuscito ad ottenere molto.
Io ovviamente stavo imparando queste cose, quindi sicuramente ero il meno “bravo”, ma anche i supervisor e le altre persone con cui lavoravano, non avevano il tipo di pubblicazioni che avrei voluto ottenere io, e quindi fondamentalmente dopo un anno di studio ho capito che io da solo non avevo le competenze necessarie, e l’ambiente in cui mi trovavo non me le avrebbe fornite e quindi sono passato in industria a fare il pentester.
E questo anche se il professore con cui ho iniziato il PhD effettivamente insegnava un corso di magistrale interessante sulla Computer Network Security in cui si parlava molto di crittografia applicata. A lui piaceva la materia ed era bravo ad insegnarla. Il problema è che se poi vuoi fare ricerca significativa, se vuoi trovare nuove vulnerabilità in librerie crittografiche devi anche avere delle conoscenze estremamente verticali su questi ambiti, altrimenti non si riesce ad essere veramente competitivi con quei gruppi di ricerca che invece fanno queste cose da anni.
Per non parlare invece del mio corso di laurea originale (informatica pura sempre a Tor Vergata), in cui alcuni corsi di “sicurezza e crittografia” erano veramente ridicoli da tutti i punti di vista. Per fortuna accanto c’era ingeneria informatica da cui sono riuscito a seguire dei corsi fatti molto bene (tra cui Computer Network Security).
Ci sono un paio di posti in cui queste cose si studiano bene anche in italia, tipo ad esempio a Trento c’è Massimiliano Sala. Una volta ho ascoltato un suo talk in cui spiegava come era riuscito a recuperare la chiave di un ransomware, ed era interessante. Ma oltre queste poche eccellenze, il resto è veramente super basic e poco utile a fare cose fighe.
Eh si, purtroppo ci credo sia così. Io sono nuovo allo studio dell’informatica a livello universitario (sempre fatto da autodidatta e quest’anno inizio con l’università), ma anche da quel poco che ho visto sembra che il tema della crittografia sia marginale a dir poco.
Studio a Verona, più che altro perchè non ho modo di spostarmi più di tanto, e già guardando ai corsi ho visto che c’è un solo esame di sicurezza informatica (da 6 crediti, per interderci…). C’era anche un esame di crittografia pura tra quelli a scelta, ma proprio da quest’anno non è più disponibile: credo abbia avuto un successone tra gli studenti, a questo punto.
Che poi porta appunto a questo genere di problemi, secondo me: se nessuno studia alla base nessuno poi si specializza e anche chi viene dopo, e vorrebbe specializzarsi a sua volta, non trova nessuno veramente competente che lo guidi.
Un vero peccato. Riempiamo di crittografia Informatica Teorica , a questo punto!
Dato che stai iniziando l’università ti consiglio di concentrarti sui corsi fondamentali, tra cui:
Matematica Discreta e Analisi (specialmente discreta ma analisi da un ottimo approccio di pensiero matematico)
Algoritmi e Strutture Dati (questo è un must)
Architetture dei calcolatori
Sistemi Operativi
Network
Programmazione C
Questi anche nelle università italiane si trovano spiegati bene. Poi comunque dovrei mettere delle risorse da qualche parte in cui riferire a materiale buono per ciascuna di queste materie.
Per il resto, per il prossimo anno sul canale vorrei portare più crittografia (da settembre in poi) sia a livello teorico che pratico.
Detto questo, lascio qui qualche risorsa utile come punto di riferimento:
Questi a stampo accademico firmati Dan Boneh, ricercatore molto famoso in ambito di applied cryptography
Infine, nell’anno in cui ho fatto il PhD ho tenuto un po’ di lezioni, qui il relativo materiale. Ho parlato principalmente di generatori di numeri pseudo-casuali e come rompere quelli non crittografici, un po’ di RSA, certificati nel TLS e l’attacco padding oracle su AES-CBC. Lo stile che ho cercato di catturare per queste lezioni è stato proprio quello che ho sempre desiderato avere da studente: tanti dettagli tecnici e computazionali e tanti esempi pratici con codice.
Ho già iniziato a dare una lettura alla maggior parte degli argomenti che hai elencato, non tanto per “buttarmi” dritto nello studio, quanto per capire quali siano i settori che mi ispirano/stimolano di più diciamo.
Capisco la fondamentale importanza di tutti naturalmente (anche perchè…bisognerà pure passarli sti esami!), anche se di recente ho preso il classico “Sistemi operativi” della Pearson e un po’ mi spaventa: con 3 o 4 copie ci tiri su una casa con quello.
Per il resto del materiale grazie mille ancora: mi salvo tutto e darò sicuramente un’occhiata a tutto quanto!