30 apr 2013

Inserire la password

"pippobaudo" era quella di un mio vicino di scrivania molti anni fa. Dieci caratteri: niente male; forse un po' vulnerabile ad attacchi dictionary-based, anche se la debolezza maggiore credo fosse il fatto che la declamava ad alta voce ogni mattina quando faceva login.
Oggi, "pippobaudo" non sarebbe una password accettabile su Fineco, ma per la ragione sbagliata: è troppo lunga. Fineco richiede che le password siano lunghe al massimo 8 caratteri.
Ieri Ars Technica ha pubblicato un post che segnala come la cattiva abitudine di imporre limiti alla robustezza delle password sia molto diffusa. Chi richiede una lunghezza massima, chi non accetta determinati caratteri, chi non accetta le parolacce, eccetera.
E' vero che il problema principale delle password non è la loro resistenza agli attacchi brute-force ma piuttosto la tendenza delle persone a comunicarle al primo che passa, e che servizi "delicati" come ad esempio l'home banking dovrebbero piuttosto attrezzarsi per il passaggio all'autenticazione a due fattori (che non è la panacea di tutti i mali ma è un passo in avanti). Non si capisce però perché imporre dei limiti a chi vuole utilizzare password più robuste.
Una possibile ragione, che emerge dall'articolo e nonostante mi faccia venire i brividi a pensarci mi pare la più probabile, è che le password siano immagazzinate in chiaro e non sotto forma di hash per risparmiare spazio su disco e tempo di accesso. La cosa è delirante ma non mi sorprenderebbe se fosse realmente così.
Un esempio, per cercare di chiarire:
La Banca A conserva la mia password in chiaro nel loro database. La mia password è "pippobaudo": 10 bytes occupati su disco. Quando io accedo al sito, inserisco la password, il sistema cerca la mia username e confronta la password presente nel database con quella che ho immesso e se sono uguali mi fa entrare: molto celere.
La Banca B, invece, conserva la mia password (che è sempre "pippobaudo") sotto forma di hash digest. Una funzione di hash è una funzione one-way che, dato un input qualunque, restituisce un valore di lunghezza fissa. "One-way" vuol dire che dato il valore di output, è praticamente impossibile risalire all'input. Ad esempio, la funzione di hash MD5 (da tempo ormai superata da altre che forniscono maggiore robustezza) fornisce un output di 16 bytes, solitamente rappresentato sotto forma di 32 cifre esadecimali, come ad esempio "3719bec537b6f764cdc2e34f7f21056b". Trentadue caratteri ASCII scritti su disco: il 320% in più rispetto alla Banca A. Quando io accedo al sito, inserisco la password, il sistema ne calcola l'hash e lo confronta con quello conservato nel database associato alla mia username, e se sono uguali mi lascia accedere: più calcoli richiesti, più dati trasferiti, moltiplicati per migliaia di accessi al giorno.
Se la Banca A introducesse un limite massimo di lunghezza, ad esempio a 8 caratteri, avrebbe bisogno, per conservare ad esempio le sole password di 100.000 clienti, circa 800KB di spazio al massimo; per Banca B, invece, lo spazio necessario per gli stessi dati sarebbe di circa 3,2MB; introdurre un limite alla lunghezza delle password non farebbe diminuire tale numero, visto che l'hash produce un output di lunghezza fissa.

Apparentemente, le differenze in richieste di storage e CPU potrebbero deporre a favore della conservazione in chiaro delle password, ma in realtà non è così: spazio disco e CPU sono ormai risorse estremamente economiche, e approvvigionarsi opportunamente non è certo un problema finanziario; in secondo luogo, e più importante, in caso un intruso riuscisse ad accedere al database della banca, egli avrebbe a disposizione immediatamente tutte le password in chiaro, mentre se queste fossero conservate  sotto forma di hash digest sarebbero inutilizzabili.

19 apr 2013

Come liberare spazio sull'iPad

Cioè, non è che ci volesse un genio, eh. Qualche giorno fa il mio iPad 16G s'è lamentato che non c'era più spazio "sul disco" (oh, non ho ancora capito cosa si debba dire in questi tempi moderni in questi casi) e giustamente quindi non mi lasciava installare l'ennesima applicazione inutile.
Cercando consigli con una rapida ricerca su Google ho trovato solo una raffica di banalità o vere e proprie idiozie, culminate a mio parere in un "non c'è motivo di tenere musica sull'iPad, visto che esiste l'Home Sharing della Library di iTunes": sì beh, certo, peccato che, come dice il nome, l'Home sharing funziona a casa, e non quando sono in giro, e così, a occhio, mi sembrava di aver capito che i tablet servivano per usarli fuori casa. Ah ma ovviamente dobbiamo mettere tutto su iCloud e poi fare streaming via Internet... sì certo, come no, con la potente banda larga che abbiamo qua da noi. Mah.
L'iPad fornisce, nel tab "General" (sorry, ho tutto in inglese) delle impostazioni, la possibilità di controllare l'utilizzo dello Storage da parte di ogni applicazione. Tralasciamo il fatto che l'iPad fornisce numeri diversi da quelli visualizzati da iTunes sul Mac e diamo per buoni quelli dell'iPad. Data una rapida occhiata, il problema è risultato chiaro: Musica, 1.1 GB; Foto, 1.0 GB; Books, 1.2 GB; International Herald Tribune: 3.2 GB. Clicchi (...ma come si dice "tap" in italiano moderno??) sull'app incriminata e ti trovi l'unica opzione: "Delete App"; ovviamente nessuna app offre la minima funzione di gestione dei contenuti, quindi ne risulta che "delete" sia l'unica opzione percorribile.
Niente paura, però: perché "Delete App" è in effetti la soluzione del problema. Nel caso dell'IHT, evidentemente l'app si salva in locale tutti i contenuti visualizzati: cancellandola, viene liberato tutto lo spazio. La reinstallo, rifaccio il login, e magia: ora occupa 25 Mega. Se la cosa è quasi comprensibile per un'applicazione del genere, il fatto che l'app di Facebook si comporti nello stesso modo mi pare demenziale: spazio occupato circa 700 MB, che dopo la reinstallazione diventano 70. Ad esempio non si spiega perché Twitter debba occupare 71 MB; ma questi sono dettagli.

12 apr 2013

L'evoluzione della specie

Qualche giorno fa ho trovato al supermercato il Samsung Galaxy Chat in offerta, e siccome era da un po' che sentivo il bisogno di uno smartphone al passo coi tempi, ho deciso di comprarlo. E' il quarto cellulare in totale che compro nella mia vita, cioè, in realtà, dal 2000 ad oggi. Mi chiedo a volte se comprerei uno smartphone se non dovessi usarlo per lavoro: so che chiamate ne farei pochissime, mentre vorrei utilizzare molto Internet ma le tariffe attualmente disponibili mi sembrano ridicole.
Comunque, sono finito sul Galaxy Chat fondamentalmente perché ha la tastiera. Ho provato in passato un cellulare touch e in un paio di mesi non sono riuscito minimamente ad abituarmici: un po' per ragioni  "fisiche", un po' perché con le tastiere touch diventano indispensabili i correttori automatici, e per me i correttori automatici fanno più danni che altro. A me piace scrivere correttamente e senza fare strafalcioni, e i rari errori che faccio li correggo quasi sempre perché prima di mandare un messaggio lo rileggo sempre un paio di volte; non ho quindi bisogno del correttore automatico o dell'algoritmo che predice le parole o dell'auto-completamento, anzi: le correzioni automatiche in lingua italiana sono il più delle volte indesiderate e mi costringono a cancellare e correggere. E siccome le tastiere touch senza correttore automatico sono scomode e lente, non riesco a usarle.
Le finiture del Samsung che ho preso ricordano in maniera imbarazzante il Nokia E72 che sto mandando in pensione. Mi pare d'aver letto un articolo dove la Samsung veniva definita un "fast follower" o qualcosa del genere, un modo elegante per dire che copiano i design altrui. In effetti...
A parte però l'ovvio incremento di prestazioni e di funzioni del sistema operativo, devo dire che l'ergonomia della classe di cellulare che prediligo (vedi foto) non è aumentata col passare del tempo. Del Samsung non mi piace il tasto di spegnimento/lock sul lato destro, posizionato esattamente all'opposto del tasto del volume, cosa che rende difficile premere uno senza premere anche l'altro quando si usa il telefono con una mano sola. Non mi sono mai piaciuti i tasti touch di menù/home/back dei Samsung, ho sempre preferito i tasti "veri" con un bel "clic" come quelli del Nokia o, meglio ancora, del Palm Treo Pro.
Il Nokia E72 non ha il touchscreen e il suo vecchio Symbian è, per dirla in estrema sintesi, un casino. Nel 2010 mi sembrava una buona idea e finché s'è trattato di leggere la mail il suo lavoro l'ha fatto anche benino, ma il peso del tempo ormai si faceva sentire e Symbian è morto da tempo, quindi...
Il Palm Treo Pro con Windows Mobile comprato nel 2008, devo dire, risulta ancora il migliore del terzetto. Touchscreen, stilo, perfetta integrazione con Exchange (ineguagliata in tutti gli altri telefoni che ho provato o visto usare da colleghi), tasti retroilluminati morbidi e ben separati, ben sei tasti funzione e il "pirulino" centrale per i clic e gli spostamenti su/giù/sx/dx. Eliminando il pirulino, ottimizzando lo spazio e aguzzando un po' gli angoli, si sarebbe potuto aumentare la dimensione dello schermo senza dover sacrificare la tastiera. Peccato che dopo un paio d'anni di uso intensivo il touchscreen m'ha abbandonato e la batteria era ridotta allo stremo.
Mi rendo conto di essere in minoranza, ma continuo a sostenere che la tastiera touch è improponibile per un uso professionale e frequente dello smartphone, tanto che i veri "road warrior" si armano di strumenti con schermi ben più ampi, come i tablet o i vari ibridi "phablet" tipo Galaxy Note. Prima o poi, ne sono sicuro, il mercato mi darà ragione: i touchscreen vanno bene per giocare a Ninja Fruit; per lavorare ci vuole la tastiera.


PS: il testo indentato sta meglio?

11 apr 2013

classico

"Wusterl", Pizzeria dell'Angolo, Vittuone.


Social networking, you're doing it wrong

Intanto bisognerebbe fare chiarezza: "social network", per come la vedo io, significa un luogo Internet dove è possibile il confronto e la discussione, a vari livelli, tra chi pubblica contenuti e chi li legge. I mezzi tecnologici oggi a disposizione permettono livelli di interazione quasi equivalenti (e in certi aspetti, persino superiori) alle conversazioni faccia a faccia, e per questa ragione mi sembra un peccato che, quando si parla di social network, il 90% delle persone pensano al solo Facebook.
Facebook è un mondo molto limitato per quanto riguarda le interazioni personali; io pubblico la mia foto e tu la commenti: questo è pressapoco il top dell'interazione fornita dal sito (oltre alla chat, che fanno un po' mondo a parte). Il meccanismo dei "like" e dei commenti (limiti di dimensione, mancanza di threading) non permette discussioni articolate, e l'effetto che ne deriva è quello ridurre tutti i post, fondamentalmente, a una di queste due categorie: le "pubblicità" (dove l'elemento "social" praticamente scompare: ad es. io vi annuncio che domani suono con la mia band al bar pincopallino, e non necessito commenti a proposito) e gli "annunci" (ad es. i post che declamano grandi verità esistenziali o piccoli avvenimenti quotidiani, o che riportano notizie, e che richiedono al massimo una basilare affermazione di accordo -il "like" o un commento che sostiene la tesi e rincara la dose- o disaccordo -un commento solitamente acido che afferma semplicemente che la tesi iniziale è falsa). In ogni caso, non è possibile una discussione approfondita nel merito, perché questa richiederebbe un grande sforzo da parte di chi scrive nel mantenere la conversazione 1) leggibile e 2) civile, sforzo che la piattaforma non facilita e che  anche nel migliore dei casi può essere vanificato molto facilmente. Il tutto funziona in questo modo ad ogni livello: io posto la foto del piatto di spaghetti che sto per mangiare e ci scrivo sotto "che buono!", un paio di amici ci scrivono sotto "gnam gnam!", poi arriva uno che scrive "non capite niente gli spaghetti fanno schifo sono meglio gli gnocchi", poi arriva un altro che dice "ma che ci frega di quello che stai mangiando, ma non hai niente di meglio da fare?" e da lì in poi è bagarre. Più gli argomenti sono seri e impegnativi, poi, maggiore è la probabilità che la "conversazione" degeneri rapidamente: politica, scienza, religione, tifo sportivo, eccetera.
Twitter, poi, nonostante lo si continui a menzionare tra i "social network", è ovviamente anche peggio. Sono stati costruiti dei meccanismi di "risposta", "conversazione", "argomento", o "messaggio diretto", ma fondamentalmente rimane un meccanismo a senso unico, dove uno fa un annuncio e tutti gli altri leggono, o al massimo aggiungono i loro pochi byte al topic in questione.
Da un punto di vista "social", quindi, sono molto meglio i forum web o le mailing list: le conversazioni possono essere ordinate, i thread separati, i troll esclusi, e per postare contenuti multimediali non c'è che l'imbarazzo della scelta.

Il problema è che in molti si sono gettati sul "social" inteso "alla facebook", causando grande frustrazione negli utenti come me che vedono nei social network la possibilità di avere interazioni con persone o entità (mass media, grandi aziende) che altrimenti sarebbero irraggiungibili. Per quale ragione il giornale X permette di aggiungere commenti ai suoi articoli se nessuno nella redazione li legge e risponde alle eventuali domande od osservazioni? Ovviamente, comportandosi in questa maniera, le possibili conversazioni e interazioni si trasformano immediatamente nelle sequenze di grugniti ed esclamazioni virtuali descritte sopra. La domanda è retorica: sappiamo bene che le componenti "social" non interessano per la loro possibilità di fornire interazione col pubblico, ma sono viste semplicemente come un mezzo per incrementare le visite al sito in questione (più la gente condivide il link su facebook, più l'articolo sarà letto) e incrementare di conseguenza gli introiti pubblicitari, che sono l'unica cosa che conta per il 99% dei siti web di informazione.
Un esempio: sabato scorso ho scritto un breve messaggio sul wall di una rivista segnalando un'imprecisione in una didascalia, e guarda caso ho anche scritto un commento a un articolo chiedendo chiarimenti su un passo dello stesso. Non avendo ricevuto alcun feedback, ed essendomi ricordato che in passato la reazione era stata la stessa, domenica ho mandato un messaggio direttamente all'account facebook in questione, mostrandomi un po' scocciato. Il metodo solitamente funziona, e si ottiene risposta con velocità proporzionale al livello di irritazione comunicato nel messaggio: l'arte sta nel farsi vedere incazzati quel po' che basta a scatenare una risposta senza scadere negli insulti che garantiscono sì risposta immediata, risposta però che contiene solo altri insulti e chiude la discussione. Siccome sono stato mediamente educato, al mio messaggio di domenica ho ricevuto risposta giovedì. Mi hanno risposto al messaggio, sono andati a ripescare il mio post e hanno aggiunto due righe di commento (il classico "sì hai ragione la prossima volta staremo più attenti"); gli ho quindi risposto immediatamente che già che ci siamo perché non mi rispondete anche all'altra richiesta? ovviamente, nessuna risposta. Ecco: non si fa così. Rispondendomi così avete semplicemente confermato il mio argomento iniziale: non siete "social" per niente. Avete un posto nuovo dove far pubblicità ai vostri articoli, tutto qui. Per carità, eh: niente di male. Non è mica obbligatorio essere "social". Il fatto è, però, che uno come me quando vede un account facebook o twitter si fa delle idee e si crea delle aspettative. In Italia, queste aspettative sono sempre deluse.

Ora, il brutto è che tanta gente va in rete con lo stesso atteggiamento. Io credo che i social network siano un grande strumento per condividere cose, fatti, opinioni. "Condividere" non vuole però dire che "io ti dico questa cosa e tu ne prendi atto", ma significa che io ti comunico una cosa utile, o piacevole, o triste, o interessante, o strana, e tu ne ricavi conoscenza ed emozioni, ti arricchisci e hai la possibilità di arricchire anche me aggiungendo la tua esperienza a proposito. Con questo non voglio dire che non si debba postare la foto del piatto di spaghetti su facebook, come qualcuno tra i più acidi sostiene; voglio dire che i contenuti vanno condivisi con la predisposizione al confronto e al dialogo, non con l'atteggiamento di chi fa pubblicità al detersivo che lava più bianco o di chi si affaccia al balcone a declamare la verità rivelata.
Quindi, siccome col suo meccanismo dei commenti facebook un po' di interazione la sollecita, ho fatto un po' di pulizia, rimuovendo un po' di contatti. Gente che non conosco di persona e che non posta nulla di interessante; gente che si fà solo pubblicità; gente che conosco di persona ma che non è capace di sostenere un confronto civile; mass media, aziende ed altri che non interagiscono e che sono troppo invadenti o poco interessanti per essere sopportabili. Come dicevo, la cosa che mi incuriosisce e infastidisce un po' è il fenomeno delle persone che vogliono diventarti "amici" su facebook senza nemmeno avere idea delle tue opinioni riguardo a nulla. Solo perché siamo collegati da un flebile legame (ad es. ci piace lo stesso cantante XY), non è detto che dobbiamo condividere altro: se vuoi condividere qualcosa con degli sconosciuti, devi essere pronto ad accettare che qualcuno di questi la pensi in maniera opposta alla tua. Mentre invece ciò che accade è che io posto la mia tesi A, tu controbatti con la tesi B opposto di A, io ti dico che non capisci un tubo, tu mi dici che non capisco un tubo io, ci prendiamo a cornate e nessuno ci ha guadagnato nulla. Personalmente, se questa è la possibilità di interazione disponibile, preferisco non parlare con nessuno.