lunedì 19 dicembre 2016

Hanno rubato la mia password (de novo...)

Siamo a quattro:


Sono uno del circa miliardo di utenti coinvolti nel furto di credenziali:
https://www.theguardian.com/technology/2016/dec/14/yahoo-hack-security-of-one-billion-accounts-breached

Le tre volte precedenti sono descritte nel post precedente a questo; quel post contiene anche qualche riflessione sulle password...

venerdì 21 ottobre 2016

Hanno rubato la mia password (e tre...)

(...almeno che io sappia)

Anche io sono uno dei 43.000.000 (quarantatre milioni) di utenti le cui credenziali Weebly sono state trafugate.

https://techcrunch.com/2016/10/20/weebly-hacked-43-million-credentials-stolen/

E' la terza volta che mi succede (LinkedIn, Dropbox). Non accade solo a me (vedi questo post).

Ciò spiega perché usare la stessa password per più siti è una follia. Se io usassi la stessa password su tutti i siti, allora l'attaccante che è riuscito a trafugare la mia password su uno di quei siti riuscirebbe ad impersonarmi in ogni altro sito. Da notare che le password trafugate sono quasi sempre messe in vendita a pochissimo prezzo, quindi sono note a potenzialmente chiunque.

Ciò spiega anche perché è necessario usare password lunghe e che non consistono di parole (vedi anche più sotto). Non perché gli attaccanti provano a inserire la password in un form esposto su web (e quindi riescono a provare circa 10 password al minuto). Il motivo è più complicato.

Le password trafugate in questi eventi non sono utilizzabili immediatamente perché sono "crittate" (non è proprio così, è solo per rendere l'idea). Possono essere utilizzate dall'attaccante solo se riesce a "decrittarle" . A tale scopo l'attaccante usa degli elenchi giganteschi contenenti tutte le possibili password: le "critta" una dopo l'altra fino a quando non ne trova una che, in forma "crittata", coincide con una di quelle che ha trafugato---bingo. L'attaccante riesce a provare milioni e milioni di password ogni secondo, perché opera su un file in suo possesso. Se uno ha usato una password di pochi caratteri, o con parole comuni, o con varianti prevedibili di parole comuni (ad esempio con lettera 'o' sostituita dalla cifra 0, o con appesa qualche cifra all'inizio o alla fine) è inevitabile che la password sia individuata.

Come scegliere una password in grado di resistere ad attacchi come questo? Non esiste una risposta univoca, anche perché dipende dallo sforzo che l'utente può e vuole impiegare nel mantenere le proprie password. Seguono suggerimenti.

L'approccio di gran lunga migliore è l'uso di un programma password manager (io uso Lastpass).

Se uno non può o non vuole usare un password manager, oppure deve scegliere password da usare anche senza password manager:

  1. Più lunga di 8 caratteri.
  2. Facile da ricordare (quindi niente caratteri speciali o cifre in posizioni strane).
  3. Presumibilmente non indovinabile da una persona che ci conosce (quindi niente figli, compagni, date di nascita, scuole, squadre di calcio e altro).
  4. Non legata a concetti legati al luogo di lavoro o ad immagini gradevoli (vari studi hanno mostrato che sono password scelte frequentemente, quindi gli attaccanti provano parole di questo genere più spesso).

Scegliere due o tre sostantivi del tutto scorrelati tra loro ed incollati insieme è spesso una ottima scelta. Ad esempio "polentapistone" oppure "corallocontrattoago".

Ultimo suggerimento: le password non devono essere modificate di frequente (a meno che uno non sia un amministratore di sistema; in quel caso la password deve essere modificata periodicamente). Il motivo è che se uno deve cambiare la propria password, inevitabilmente tende a convergere verso password facili da indovinare e/o password già usate in altri siti.

venerdì 14 ottobre 2016

Come si formula una domanda

Molto spesso gli studenti che devono fare una domanda generano una quantità elevatissima di parole che cercano di trasportare 4 concetti molto diversi tra loro:

  1. Domanda mirata a chiarire il dubbio
  2. Motivo per il quale è sorto il dubbio (ad esempio, slide ambigua o esperienza personale)
  3. Descrizione di uno scenario di esempio per chiarire la domanda
  4. Informazioni sullo scenario di esempio che sono del tutto inutili per la domanda

L'effetto più frequente è che chi riceve la domanda non capisce o deve fare un grande sforzo per capire. Un effetto accessorio molto frequente è che chi formula la domanda non genera una "grande impressione" in chi la riceve.

E' molto, molto, molto importante acquisire la capacità di distinguere questi concetti e di rifletterne la separazione in ciò che si dice o si scrive. Non è importante solo per il corso di reti, è importante sempre. In qualsiasi attività professionale. E' parte essenziale della capacità di esprimersi in modo comprensibile, una capacità fondamentale nella vita reale (vedi anche "Scrivere e presentare" in coda a questa pagina).

Non si deve cioè scrivere N paragrafi contenenti un'ammucchiata di parole in cui questi 4 concetti siano completamente mescolati tra loro. Occorre separarli chiaramente. Non necessariamente con paragrafi diversi o con separazioni sintattiche, ma almeno con una separazione logica che sia evidente al lettore o ascoltatore.

Ovviamente farlo quando si parla è molto più difficile che farlo quando si scrive. Inoltre, una capacità di questo genere non è quasi mai innata. Per la stragrande maggioranza delle persone è necessario uno sforzo costante nel tentativo di migliorarsi. Inoltre, prima di arrivare al massimo delle proprie capacità occorrono degli anni. Il punto di partenza però è rendersi conto di quanto ciò sia importante. Senza questa condizione necessaria uno scrive o parla di getto senza preoccuparsi minimamente di aiutare gli altri a capire.

Corollario di quanto ho scritto sopra è che quando si scrive qualcosa di moderatamente complesso---domanda specifica, documento, tesi di laurea, descrizione di una attività---ciò che si scrive deve essere letto, riletto, modificato, riletto, modificato, talvolta ristrutturato pesantemente, etc. Non si può scrivere di getto, dare un'occhiata all'ortografia, cambiare un paio di parole e via. O meglio, si può, ma l'effetto è che si genera del testo difficilmente comprensibile.

Importante: Non ho scritto questo riferendomi a nessun caso specifico che mi sia accaduto di recente. Mi riferisco alle infinite domande che mi sono state fatte a lezione o per email nel corso degli anni e alle infinite tesi che ho letto. Pensavo da tempo di scrivere qualcosa del genere, solo stamattina ne ho avuto il tempo e la voglia.

mercoledì 31 agosto 2016

Hanno rubato la mia password (ancora...)

Questa volta da Dropbox.

Sono uno dei 68 milioni e passa di utenti coinvolti in un breach avvenuto nel 2012 e reso noto solo in questi giorni (dettagli qui e qui).

Maggiori dettagli su queste faccende in un mio post di qualche mese fa, quando mi era stato notificato il furto delle mie credenziali LinkedIn.

venerdì 24 giugno 2016

Siamo in finale!

Non mi riferisco agli europei di calcio. Mi riferisco agli "AWARDS for Human-Competitive Results produced by Genetic and Evolutionary Computation".

In pochissime parole, ogni anno viene organizzata una competizione internazionale riservata a chi ha ottenuto risultati scientifici "human-competitive" utilizzando tecniche di calcolo genetiche o evolutive (per avere un'idea di quali siano queste tecniche, vedi penultimo paragrafo qui).

Abbiamo superato la prima selezione (22 partecipanti) e ci siamo qualificati per la finale: 8 partecipanti, 22 Luglio 2016, Denver. Maggiori dettagli in un post sul sito del Machine Learning Lab.

PS: E' la seconda volta che arriviamo in finale. La prima volta fu due anni fa. Il blog post in cui avevo messo l'annuncio iniziava esattamente come questo post ma invece di riferirsi agli europei si riferiva ai mondiali...


venerdì 17 giugno 2016

Ancora sulla autenticazione via cellulare...

...ad integrazione di quanto ho scritto ieri sull'uso dei cellulari come strumento aggiuntivo di autenticazione, si sta diffondendo un altro modo per ottenere il codice inviato via SMS. E' basato su "social engineering" (ingannare l'utente; niente di tecnicamente sofisticato). Mi spiace non averci pensato io, è davvero banale.

L'attaccante deve avere ottenuto la password dell'utente da attaccare. Ciò non è immediato ma neanche difficile: il motivo per il quale si inviano i codici via SMS è proprio perché ottenere la password non è difficile.

A questo punto l'attaccante procede come segue:

  • Esegue il login con username e password dell'utente.
  • Subito prima di eseguire una operazione che richiede l'inserimento di un codice inviato dal servizio via SMS, l'attaccante:
    • invia un messaggio all'utente, in una qualche forma: Twitter, email, whatsapp, SMS...;
    • nel messaggio dichiara di essere il servizio e scrive: "Caro utente, abbiamo rilevato attività sospette sul tuo account provenienti dall'indirizzo 136.91.65.75 (localizzato a Novosibirsk). Se non hai utilizzato il tuo account da quella locazione, allora rispondi a questo messaggio con il codice numerico che ti invieremo tra pochi minuti. Altrimenti puoi continuare ad operare tranquillamente";
  • esegue l'operazione nel servizio (il che provoca l'invio di un SMS dal servizio all'utente);
  • aspetta di ricevere la risposta dell'utente, contenente il codice;
  • inserisce il codice nel servizio.

Voilà.

http://uk.businessinsider.com/hackers-are-spoofing-text-messages-to-steal-two-factor-authentication-codes-2016-6


giovedì 16 giugno 2016

Come entrare (fraudolentemente) in Facebook con il solo numero telefonico

I cellulari sono usati sempre più spesso come strumento per aumentare la sicurezza dei sistemi informatici.

Si usano comunemente per la cosiddetta two-factor authentication: l'utente inserisce una password, il sistema invia un SMS ad un numero telefonico associato alla password, l'utente trova nell'SMS un codice, valido solo per alcuni minuti, da inserire nel servizio come ulteriore conferma della propria identità ("something you know" = password più "something you have" = cellulare con un certo numero telefonico).

Tecniche di questo genere sono usate in molti servizi di carattere finanziario (ad esempio Postepay) o di carattere legale (verbalizzazione on-line degli esami nel nostro ateneo).

Come accade invariabilmente ogni volta che si sviluppa una nuova tecnologia, molti tendono a considerare quella tecnologia come sinonimo di sicurezza assoluta (basta leggere un pò di pubblicità o di documenti tecnici che risalgono ai primi anni di SSL e HTTPS per capire cosa intendo). Come accade invariabilmente ogni volta, non è vero. La nuova tecnologia ha solo alzato l'asticella che devono superare gli attaccanti: non l'ha portata ad una altezza insormontabile.

Per inciso, il fatto stesso che sia stata sviluppata la tecnologia N dimostra che la tecnologia N-1, anch'essa in passato considerata sinonimo di sicurezza assoluta, non era tale: se lo fosse stata allora nessuno avrebbe speso ingenti risorse per sviluppare e diffondere la tecnologia N...ma non divaghiamo.

I modi per aggirare gli one-time code su cellulare sono molteplici.

Uno consiste nell'installare un malware su PC e su smartphone che interagiscono automaticamente e di nascosto all'utente: il primo malware esegue l'operazione, il secondo malware intercetta l'SMS, estrae il codice, lo invia al malware sul PC e cancella l'SMS (accaduto già 4 anni fa, 30.000 utenti tra Germania, Italia, Spagna, Olanda per 36 milioni di euro su 30 banche diverse: http://www.corriere.it/tecnologia/12_dicembre_06/hacker-maxi-furto-da-conti-online-banche-europee_0e8cd008-3f82-11e2-823e-1add3ba819e8.shtml).

Un altro consiste nell'installare un malware sul PC che mostra all'utente una cosa ed in realtà ne fa un'altra (quindi quando l'utente crede di realizzare un certo bonifico, in realtà ne sta eseguendo un'altro: http://securityaffairs.co/wordpress/17538/cyber-crime/man-browser-attacks-scare-banking.html).

Nel corso degli ultimi mesi è stata dimostrata la fattibilità di attacchi molto più radicali e molto più dirompenti. Molto banalmente, sono state scoperte vulnerabilità in un certo protocollo di nome SS7 che viene utilizzato in tutte le reti telefoniche(sinceramente non ricordo se si tratti di vulnerabilità di protocollo o vulnerabilità software nelle implementazioni del protocollo; credo si tratti del primo caso). Grazie a queste vulnerabilità un attaccante può fare tante belle cose. Ad esempio, farsi inviare tutti gli SMS diretti verso il numero X. Le implicazioni e le possibili applicazioin sono facilmente immaginabili.

L'articolo indicato di seguito mostra un'applicazione banalissima. Se uno si dimentica la propria password Facebook, basta inserire il proprio numero telefonico in un form Facebook (numero che ovviamente deve essere già stato associato con quell'account) e Facebook invia un one-time code via SMS per effettuare il login. Sfruttando le vulnerabilità del protocollo telefonico, il cui nome è SS7, si intercetta l'SMS ed il gioco è fatto: basta conoscere il numero telefonico di una persona per prendere controllo dell'account Facebook di quella persona. L'articolo contiene un video di soli due minuti di cui consiglio la visione: non è nulla di particolare ma rende l'idea

http://www.forbes.com/sites/thomasbrewster/2016/06/15/hackers-steal-facebook-account-ss7/#555a83068fa7

Le implicazioni e possibili applicazioni sono, come dicevo, facilmente immaginabili.

mercoledì 1 giugno 2016

Incentivo "una tantum"

A mio parere la legge ed i decreti citati in questa pagina sono sbagliati ed ingiusti, per molti motivi che non approfondisco per mancanza di tempo e di voglia.

Idem per il modo con il quale la legge ed i decreti sono stati applicati nella nostra Università.

Idem per il fatto che ancora non sappiamo come la nostra Università intenderà applicare la legge ed i decreti in futuro (nessuno conosce i criteri che saranno utilizzati per valutare il lavoro che stiamo facendo oggi).

Tutto ciò premesso, ammetto di essere contento per la valutazione del mio lavoro:

  • triennio precedente al 2011: 11 su 80 partecipanti e 134 aventi diritto;
  • triennio precedente al 2013: 1 su 78 partecipanti e 134 aventi diritto.



martedì 24 maggio 2016

Hanno rubato la mia password

...su LinkedIn (qualcuno pensava già alla mia password per verbalizzare gli esami...invece no; più precisamente, se mi sono state trafugate le credenziali di ateneo io non lo so).

Non dovrebbe essere successo nulla di particolarmente grave, ma mi pare importante condividere questo evento per sottolineare che:
  1. Queste cose possono accadere a chiunque.
  2. Il furto della intera tabella delle credenziali (username e password) sui server è un evento relativamente frequente e può coinvolgere anche grandi organizzazioni. Ne avevo già parlato in un post recente.
  3. Io posso tentare di custodire le mie credenziali nel modo migliore possibile; ma se le mie credenziali le conosce anche il server, allora l'attaccante può rubarle dal server. 
Per quanto riguarda il punto 3, tentare di rubare le credenziali dal server è molto più conveniente per l'attaccante: se ha successo un attacco verso di me, l'attaccante ottiene UNA credenziale; se ha successo un attacco verso il server, l'attaccante ottiene MILIONI di credenziali.

In sintesi, è accaduto questo:

  1. Nel 2012 si è verificata una intrusione in LinkedIn: quasi 6.5 milioni di credenziali sono state trafugate.
  2. All'epoca ricevetti un email di allerta da LinkedIn, in cui mi avvisavano che "We recently became aware that some LinkedIn passwords were compromised and posted on a hacker website. We immediately launched an investigation and we have reason to believe that your password was included in the post". Ovviamente mi suggerirono di cambiare la password immediatamente.
  3. Da qualche giorno sono state messe in vendita queste credenziali sui siti underground; a un prezzo mooooolto ridotto: 4 bitcoin (circa 2000$) per vari milioni di credenziali. Molti siti di sicurezza ne stanno discutendo. Una discussione particolarmente autorevole è questa.
  4. Stamattina ho ricevuto dal sito haveibeenpowned (proprio il sito di cui parlavo in coda al post recente) un email in cui mi si avvisava che "You're one of 164,611,595 people pwned in the LinkedIn data breach". Nulla di sorprendente, mi ha confermato quanto LinkedIn sospettava fosse accaduto.

Probabilmente la copia delle mie credenziali che sta circolando adesso è quella precedente al cambio di password che ho eseguito nel 2012...ma ho cambiato la password nuovamente.


mercoledì 18 maggio 2016

SSL / HTTPS: (esempio di) cosa non garantisce

Nella lezione di "reti di calcolatori" di ieri mi sono reso conto che devo insistere maggiormente per sottolineare un aspetto di SSL (quindi di HTTPS) che a me pareva banale ma che evidentemente banale non è.

SSL fornisce garanzie di sicurezza (autenticazione, integrità, riservatezza) tra le due estremità della connessione TCP. Fornisce cioè garanzie relative allo spostamento di dati tra un punto ed un altro.

SSL non fornisce nessunissima garanzia di sicurezza "nei calcolatori" alle due estremità della connessione.

Esempio semplicissimo: un attaccante può modificare un documento statico sul server; oppure può modificare i programmi sul server che generano i documenti dinamici. SSL continua a fornire le proprie garanzie: i dati sono autentici, riservati ed integri da una estremità all'altra della connessione. Ma i dati che viaggiano nella connessione non sono quelli che il server "avrebbe voluto inviare".

Da un altro punto di vista, il dato sul server prima viaggia dalla sua "origine ideale associata al vero subject" fino alla estremità della connessione; poi viene inserito nella connessione. La prima parte del viaggio non ha garanzie di autenticazione e integrità; la seconda ha garanzie di autenticazione, integrità e riservatezza. SSL opera sulla seconda parte del viaggio, non sulla prima.

Attaccare la prima parte del viaggio può essere facile o difficile per l'attaccante, la cosa fondamentale è che SSL non ha nulla a che vedere con questo problema. Nulla. Non lo rende più difficile per l'attaccante. Non fornisce al client nessun elemento per accorgersi della intrusione.

Il ragionamento si applica in modo identico al lato client. Il dato effettua un viaggio in due parti: tra browser ed estremità client della connessione; tra estremità client della connessione ed estremità server. SSL non fornisce nessuna garanzia sulla prima parte del viaggio.

Gli attacchi alla prima parte del viaggio sul lato client si chiamano "Man-In-The-Browser (MITB)". Il nome evidenzia che l'attaccante si trova virtualmente all'interno del browser ed ha accesso a tutte le comunicazioni tra client e server (e per analogia con gli attacchi "Man--In-The-Middle (MITM)" in cui l'attaccante si trova nella internetwork).

Gli attacchi MITB sono terribili perché l'utente vede le pagine inviate dal server, vede il lucchetto che descrive il certificato inviato dal server...ma il browser non fa quello che deve fare; fa quello che decide l'attaccante. SSL è del tutto inutile: fornisce garanzie tra le due estremità della connessione, ma l'attaccante opera esternamente alla connessione.


martedì 17 maggio 2016

A cosa serve l'esame di stato

Sto valutando l'opportunità di sostenere l'esame di stato, ma cercando su internet e sui vari forum non trovo particolari vantaggi come ingegnere informatico (se non 0,5 punti in graduatoria nei concorsi pubblici...ed un po' di prestigio personale).

Prima di scartare questa idea però volevo chiederle un'opinione in merito, poiché credo che la sua esperienza l'abbia aiutata a rispondere al "a che cosa serve l'esame di stato per un ingegnere informatico"?

La mia esperienza purtroppo non mi ha aiutato a rispondere. La risposta è "in tutta sincerità non lo so".

"Non lo so" non significa "a nulla". Significa "non lo so". Per estensione implica "a me non è mai servito e non conosco nessuno di cui possa affermare che gli sia servito".

Devo comunque aggiungere che è vero anche il contrario: non conosco nessuno di cui possa affermare che sia stato danneggiato dall'avere sostenuto l'esame di stato (a parte il danno indiretto associato al tempo ed al costo).



mercoledì 11 maggio 2016

HTTPS e crittografia a chiave pubblica: cosa può andare male

Le cose che possono andare male sono tantissime (vedi anche
https://bartoli-alberto.blogspot.it/2015/10/vulnerabilita-di-implementazione.html).

Al fine di capire meglio a cosa serve e, soprattutto, a cosa non serve la crittografia a chiave pubblica, è utile ricordare le ipotesi alla base delle sue applicazioni pratiche (in particolare, HTTPS e firma digitale). Queste ipotesi, in parole povere, sono:

  1. Subject diversi hanno chiavi diverse.
  2. Le chiavi private sono davvero private.
  3. Le certification authorities emettono certificati con associazioni vere.

Qui sotto riporto un elenco, non commentato, di casi reali in cui queste ipotesi non sono verificate. In tutti questi casi le garanzie fornite da HTTPS e dalla firma digitale, non ci sono.

Slide che mostrano altri casi reali, meno recenti di quelli elencati qui sotto, sono reperibili a questo link: https://drive.google.com/open?id=0B-uEgJBKxWJLbzNjWG5Wb09nRTg . La prima slide indica un articolo divulgativo che ho scritto vari anni fa su questo argomento ma che è ancora attuale: il link all'articolo è cambiato, adesso è questo: https://docs.google.com/document/d/14hCBeHPcIrDXb0lYw_1by1K2cvHIg8JgGauq6RaRZfk/edit#










lunedì 2 maggio 2016

Internet Day: slide (e altro)

A questo link sono visibili le slide del mio intervento su "Crimini informatici e Cyber(in)security" allo Internet Day di venerdi 29/5.

Pochi mesi fa avevo fatto un intervento sulla sola Cyber(in)security al "road show" dei "servizi segreti" presso il polo universitario di Gorizia (slide al link indicato).

A proposito dei 30 anni di Internet (documentario e uno dei numerosi articoli), penso di avere detto a poche persone di avere avuto l'onore di essere stato studente di Luciano Lenzini (il "protagonista" del documentario, in quanto persona che più di ogni altra ha contribuito a portare Internet in Italia) proprio pochi anni dopo l'accensione del primo nodo italiano al CNUCE di Pisa (yes, ho una certa età).

Mi sono laureato nel 1989. Il docente di uno dei corsi dell'ultimo anno organizzò dei seminari sulle reti di calcolatori. Ci disse che i seminari sarebbero stati tenuti "dalla persona che di reti ne sa più di tutti", cioè Luciano Lenzini. Era il 1988 o il 1989, quindi due o tre anni dopo il collegamento dell'Italia a Internet.

Devo dire che all'epoca nessuno di noi studenti si entusiasmò in modo particolare. Nessuno di noi percepiva realmente l'importanza delle reti di calcolatori. A cosa poteva mai servire la possibilità di inviare un file o un messaggio attraverso una rete? Bisogna rendersi conto che all'epoca i calcolatori erano pochi ed esistevano solo nelle università. A chi mai avrei dovuto, io studente, inviare un file o un email?

La primissima applicazione delle reti per me fu da tesista, pochi mesi dopo i seminari di Lenzini.

Ogni tesista si portava dietro una scatoletta di floppy disk in cui salvare i sorgenti del programma che stava sviluppando come tesi, o del documento tesi negli ultimi giorni del lavoro. La mattina infilava un floppy nel lettore, lo copiava nel computer, ripeteva per tutti i floppy necessari (uno non era quasi mai sufficiente) ed iniziava a lavorare. La sera faceva il lavoro inverso. Non c'era infatti garanzia che il giorno successivo uno avrebbe avuto a disposizione lo stesso PC del giorno prima. Inoltre, la probabilità di un evento catastrofico (hard disk illeggibile o cose del genere) era tutt'altro che trascurabile.

Ogni tanto c'era la necessità di cambiare PC durante la giornata. Alcuni avevano poca RAM e non permettevano di eseguire certi programmi. Molti non avevano interfaccia grafica per cui scrivendo un documento non si vedevano i titoli e non si potevano fare i disegni. Solo uno era collegato alla stampante. Limitazioni oggi inimmaginabili. Ogni spostamento richiedeva il lungo e noioso travaso attraverso i floppy.

Le reti presenti in alcuni laboratori dell'università permettevano di fare cose per noi quasi fantascientifiche. Ad esempio, spostarsi di PC senza fare il travaso dei file. Se serviva un file, lo si poteva prelevare. Ci si metteva un bel pò, occorreva ricordarsi i comandi (interfacce grafiche? e chi le aveva mai viste?), talvolta non funzionava...ma si poteva fare senza passare dai floppy.

Spostare i file da un PC all'altro della stessa stanza, al massimo di stanze adiacenti. Una innovazione per quei tempi davvero notevole.



mercoledì 13 aprile 2016

Perché studiare Analisi Matematica???

Un mio caro amico mi ha scritto:

...sono con mia figlia che studia Analisi 1...A cosa serve, al giorno d'oggi, studiare Analisi (a parte sfoltire i ranghi degli aspiranti ingegneri)?

Riporto la mia risposta di seguito, forse può "motivare" qualche altro studente.

...

Per un ingegnere la matematica è fondamentale perché è un linguaggio; ed è il linguaggio essenziale per trattare gli argomenti che dovrà affrontare come ingegnere;

non sono importanti i contenuti specifici; è importante, anzi fondamentale, che riesca a capirli, ricostruirli etc.

ad esempio, chi deve usare l'inglese, lo usa perché in un modo o nell'altro lo conosce; nessuno di noi ha usato esattamente le frasi o i dialoghi o le regole che ha incontrato negli esercizi di inglese o di tedesco; nella matematica è lo stesso; non sono importanti i limiti, le serie, i teoremi di cauchy o che so io; ma se uno non è in grado di capire quel linguaggio allora non sarà in grado di capire davvero quasi nulla dei vari settori dell'ingegneria.

ci sono settori dell'ingegneria in cui la matematica è più o meno importante; e a seconda dei settori, ci sono alcuni argomenti della matematica che sono più o meno importanti; ad esempio, per le cose di cui mi occupo io nella ricerca, l'algebra e la statistica sono fondamentali; l'analisi è inutile; ma, ripeto, la cosa fondamentale per le persone della sua età è imparare il linguaggio matematico.

altre due considerazioni che mi sembrano importanti:

1) la matematica è importante anche perché insegna a ragionare in modo astratto; gli studenti, e non solo loro, considerano "astratto" sinonimo di "inutile"; in realtà significa "contiene solo le cose essenziali e non contiene nessun elemento inutile che danneggerebbe la comprensione del problema";

ad esempio, l'operazione della divisione tra due numeri è sempre la stessa, sia che si tratti di spartire una pizza tra amici, una bustarella tra politici, calcolare l'autonomia di un serbatoio etc etc; staremmo freschi se in tutti questi casi dovessimo studiare il problema da zero e trovare una nuova soluzione;

2) qualche anno fa i nostri docenti di analisi hanno smesso, per motivi di tempo, di fare le dimostrazioni di tantissimi teoremi (poi hanno ricominciato per motivi che ti risparmio); io insegno Internet al terzo anno, roba che non c'entra nulla con l'analisi; ho però visto chiaramente un enorme peggioramento della comprensione di tantissimi studenti su alcuni argomenti, fondamentali per l'internet banking, ecommerce, autenticazione su facebook, etc etc etc;

esempio:
A) Alberto e Filippo condividono una chiave crittografica che conoscono solo loro;
B) Alberto e Filippo sono in grado di comunicare in modo "sicuro"

Se A è vera allora si può dimostrare (sto semplificando, ma fa lo stesso) che è vera anche B; questo significa che per risolvere il problema B mi basta risolvere il problema A;

come si fa a dimostrare, in pratica, che A è vera? non si può. è una ipotesi. una ipotesi non si può dimostrare. si fa finta che sia vera e poi si deducono le conseguenze. se non è vera allora le conseguenze dell'ipotesi (cioè B) possono essere vere o essere false.

questo fatto banalissimo sconvolgeva gli studenti. se uno ha studiato tante dimostrazioni questa cosa invece la capisce subito.

giovedì 24 marzo 2016

Burocrazia

Mail che ho inviato poco fa in risposta ad una offerta di incarico da parte di un ente pubblico.

Salve,

non so se qualcuno leggerà questo mail.

Mi avete chiesto di svolgere una attività che richiede competenza scientifica elevata.

Per tale attività mi offrite un compenso "simbolico" (che io definirei "offensivo", ma questa è un'altra faccenda).

Non mi permettete di visionare nulla senza prima fare il download di 3 file, stamparli, firmarli, scannerizzarli e poi inviarli indietro.

Mi pare davvero triste, per non usare altri aggettivi. Certamente avrete i vostri buoni motivi, ma il nostro paese non può andare avanti in questo modo. Siamo nel 2016.

Cordiali saluti,

mercoledì 23 marzo 2016

Un'altra bella notizia (ed un altro ringraziamento)

Dopo la bella notizia (e ringraziamento) di pochissimi giorni fa, sono in condizioni di dare un'altra bella notizia (e fare un altro ringraziamento).

Un altro lavoro che descrive le prestazioni del nostro strumento per la "costruzione automatica di espressioni regolari" (accettato su una rivista molto prestigiosa) è stato infatti accettato per la pubblicazione su di un'altra rivista molto prestigiosa: IEEE Intelligent Systems.

In questo nuovo lavoro dimostriamo che il nostro sistema è in grado di competere con gli operatori umani. Risultato molto importante perché la scrittura di una espressione regolare è un compito molto complicato, che richiede competenza, abilità e creatività.

Abbiamo selezionato 10 problemi complicati sulla costruzione di espressioni regolari. Abbiamo chiesto di risolverli a 1700 utenti suddivisi in tre categorie: Principiante, Intermedio ed Esperto (si, proprio così tanti; per la precisione millesettecentosessantaquattro). Abbiamo quantificato l'accuratezza di ogni soluzione e misurato il tempo impiegato da ogni utente. Poi abbiamo sottoposto gli stessi problemi al nostro sistema ed i risultati sono stati bellissimi:
  • On average, our tool delivered solutions with accuracy almost always greater than or equal to the one obtained by each category of users.
  • On average, the time required by our tool was almost always smaller than the time required by human operators.
  • We believe these results are remarkable and highly significant. Indeed, we are not aware of any similar tool exhibiting such human-competitive performance indexes.
Anche in questo caso devo ringraziare i miei collaboratori, Eric Medvet, Andrea De Lorenzo e Fabiano Tarlao. La loro idea di realizzare un esperimento su larga scala raccogliendo volontari su Reddit è stata infatti fondamentale. Io ero scettico come al solito ("ma chi vuoi che abbia tempo da perdere per mettersi a scrivere espressioni regolari...") ma mi sbagliavo...millesettecento persone e passa...incredibile. Anche il mio contributo è stato fondamentale comunque...non scrivo i dettagli ma lo è stato...


lunedì 21 marzo 2016

Una bella notizia (ed un ringraziamento)

Segnalo dal sito del Machine Learning Lab una notizia che non solo mi rende orgoglioso da un punto di vista personale ma che rende merito al lavoro dei miei collaboratori Eric Medvet, Andrea De Lorenzo e Fabiano Tarlao. Desidero ringraziarli pubblicamente per la loro competenza, passione ed entusiasmo: aspetti che per me sono stati importantissimi anche a livello personale.

Un nostro lavoro sulla "costruzione automatica di espressioni regolari" è stato accettato per la pubblicazione su di una rivista molto prestigiosa: "TKDE remains a very competitive venue for publishing the best research results. Among the 552 articles submitted in the first 10 month of 2015, 17 were invited for minor revision (3%) and an additional 117 (21%) were invited for major revision". Needless to say, the remaining 418 submissions were rejected. Our paper was one of those 17 which were asked only a minor revision.

Una espressione regolare è, in parole poverissime, una stringa che descrive in modo molto conciso un insieme di stringhe che hanno lo stesso pattern sintattico. Ad esempio, questa  è una espressione regolare che descrive gli indirizzi email:

^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$

Questa invece è una espressione regolare che descrive date nella forma "XX/XX/YYYY where XX can be 1 or 2 digits long and YYYY is always 4 digits long":

^\d{1,2}\/\d{1,2}\/\d{4}$

Le espressioni regolari sono utilizzate in moltissime applicazioni pratiche della programmazione. Per avere un'idea di quanto siano diffuse ed importanti, basti considerare che nel forum Stack Overflow le domande su questo tema sono tra le più frequenti: più di 140.000 (alla data di oggi).

Scrivere un'espressione regolare è molto complicato, come si può intuire. Nel corso degli anni ci sono stati molti tentativi per la costruzione automatica di espressioni regolari sulla base solo di esempi del comportamento desiderato. Nella pratica, questi tentativi riuscivano a funzionare in modo più o meno accettabile solo in casi estremamente semplici.

Noi siamo riusciti a realizzare un sistema in grado di:
  1. Costruire espressioni che hanno accuratezza paragonabile a quella di umani esperti;
  2. In un tempo paragonabile a quello richiesto da umani esperti;
  3. Su problemi di complessità realistica.
Un prototipo del sistema è accessibile online. L'utente inserisce un testo, annota le porzioni da estrarre ed il sistema costruisce automaticamente l'espressione regolare che estrae solo le porzioni annotate. L'utente non ha neanche necessità di conoscere la sintassi o il funzionamento delle espressioni regolari.

Il lavoro è il risultato di molto tempo, competenza e passione. Da più di due anni questa è stata l'attività di ricerca preponderante mia, di Eric, Andrea e Fabiano. Agli albori di questa attività hanno partecipato anche Enrico Sorio, Marco Mauri e Giorgio Davanzo. Quest'ultimo, in particolare, ha avuto il merito di suggerire l'idea iniziale (sulla quale, come mi accade spesso, ero molto scettico...).

Grazie a tutti.

mercoledì 9 marzo 2016

Quante password sono state rubate di recente?

Nella lezione di Reti del 9 Marzo abbiamo evidenziato che uno dei grossi problemi delle password consiste nel fatto che si tratta di un "segreto non tanto segreto".

Un client C dimostra la propria identità al server dimostrando che conosce un certo segreto (la password). Segreto che conosce solo C.

Il problema è che il segreto lo deve conoscere anche il server. Il server deve cioè avere una tabella con tutte le coppie username-password dei propri utenti, cioè di tutti i C.

Questo significa che se qualcuno riesce a rubare la tabella allora quel qualcuno conosce tutti i segreti e quindi riesce ad impersonare tutti gli utenti. Anche se ogni utente custodisce la propria password perfettamente. Anche se ogni utente sceglie la propria password in modo praticamente impossibile da indovinare. Gli utenti soffrono quindi un danno non per colpa loro.

Questi eventi non sono affatto rari.

http://sijmen.ruwhof.net/weblog/608-personal-data-of-dutch-telecom-providers-extremely-poorly-protected-how-i-could-access-12-million-records

http://blog.erratasec.com/2012/06/confirmed-linkedin-6mil-password-dump.html

https://nakedsecurity.sophos.com/2012/02/22/youporn-password-download/

https://nakedsecurity.sophos.com/2012/02/11/dutch-isp-kpn-hacked-credentials-and-personal-information-leaked/

http://www.theguardian.com/technology/2013/nov/07/adobe-password-leak-can-check

http://www.security-faqs.com/avast-de-hacked-and-defaced-20000-user-accounts-leaked.html

etc etc

Recentemente è sorto un sito web molto interessante. Molti hacker fanno circolare liberamente gli username e password che sono riusciti ad ottenere. Questo sito raccoglie molte di queste "divulgazioni" e permette di verificare se il proprio username è contenuto in queste raccolte. Permette anche di lasciare il proprio indirizzo email in modo da essere avvisati. Ovviamente il sito raccoglie solo username, non password.

Il sito è interessante sia per il servizio sia per i numeri coinvolti. Poco fa erano 92 siti con quasi 300 milioni di username.

https://haveibeenpwned.com/