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/