A molti la scienza informatica potrà sembrare una cosa triste, nata tra scantinati dove si sono rifugiati nerd allergici alla luce solare ed al vivere sociale.
Scommetto che molti di voi, se dovessero esprimere l’informatica con un colore, sceglierebbero il grigio.
[spoiler]
Personalmente non sono d’accordo, io sceglierei il #8d8d8d;
[/spoiler]
Ora vedremo come, con esempi concreti, anche questo mondo può diventare più colorato ma soprattutto più interessante per la vita di tutti i giorni.
Così anche voi, quando leggerete cose tipo “Salami slicing” comincerete a ridere di quell’ umorismo tipico di noi informatici.
Sulla cattiva strada
Supponiamo così di essere un cattivo informatico. Ma non cattivo nel senso di incapace (tipo quelli che fanno i cicli for infiniti), bensì nel senso etico del termine.
Avete presente i nerd cattivoni dei film Hollywoodiani? Quelli che entrano nei server della CIA inserendo come password telnet il nome della battona preferita da David Petraeus?
[spoiler]
D’altra parte chi non ha un’ amante dal nome di battesimo 7!8£ed%9f6&0as)78ch3 ?
[/spoiler]
Bene, noi siamo una di queste cattive persone, comunemente chiamate “hackers” e lontane anni luce dall’ideale romantico che Stallman ha provato a dare a questo termine.
Così un giorno come tanti siamo nel nostro ufficio dove sviluppiamo applicazioni web. Frustrati dall’ ennesimo cliente che ci tartassa con domande degne del regno animale, ci licenziamo e ci mettiamo in proprio.
Stappiamo una birra e cominciamo a rimuginare un piano diabolico.
Sviluppiamo un bellissimo portalino per il phishing (ok, ho detto “informatica per tutti” quindi eccovi il link se non sapete cosa sia ) dove tanti utenti Windows inseriscono i loro dati del conto corrente senza farsi tante domande. Quelli Apple invece no ma solo perchè il design che abbiamo dato al portale non è sufficientemente cool.
Non ci facciamo prendere dallo sconforto e sviluppiamo “il miglior portale phishing di sempre™” e anche gli utenti della mela sono a posto.
Quelli linux li lasciamo perdere tanto non ci cascherebbero.
Ottimo, dopo qualche mese di spam selvaggio abbiamo un discreto database di [del]utonti[/del] persone con i rispettivi numeri di CC.
Non ci resta che affondare il colpo quindi ma come procediamo ora? Come ottimizziamo il guadagno derivante dai futuri prelievi illeciti che ci apprestiamo a compiere?
Informatico goloso!
La risposta che viene spontanea è quella di prelevare l’intera somma di ogni conto corrente di ogni utonto nella nostra lista.
Bene, ora siamo virtualmente ricchi!
In attesa quindi che il conto si popoli di soldi reali ci diamo alla pazza gioia, compriamo un pc con 4 schede video in parallelo e facciamo una partita a Diablo III. Regolarmente acquistato eh!
Ma prima che il nostro barbaro arrivi al livello 3 ci poniamo una domanda:
Quanto tempo abbiamo per scappare in Messico?
Perchè quelli sono utonti ma fino ad un certo punto e mi sa che se ne sono accorti di essere con le pezze al culo.
E se ho lasciato qualche traccia? Magari quel software per il phishing che ho sviluppato tra una birra e l’altra non è proprio proprio irrintracciabile…
La nostra golosità quindi ci ha fregato e dobbiamo vivere in clandestinità nei peggiori bar di Caracas, ammesso e concesso che la nostra banca non si sia insospettita dei 3 fantastiliardi che sono piovuti nel nostro conto.
Questo approccio dettato dalla golosità in informatica ha un nome: Algoritmo Greedy. Questi sono una moltitudine di procedure che, citando questo documento dell’Università di Roma, hanno una cosa in comune:
Cosa vuol dire? Semplicemente che, sognando quel letto a forma di landspeeder che desideriamo fin da bambini, ci siamo fatti prendere dalla fretta senza ragionare.
Abbiamo scelto come priorità l’arricchimento istantaneo e proceduto per raggiungere l’ottimo in base a tale necessità, senza considerare altro.
Detto in linguaggio tecnico abbiamo fatto un lavoro “Ad Minchiam”.
Gli algoritmi greedy praticamente fanno un po’ schifo. Come potrete verificare eventualmente nel link a fondo articolo possono addirittura non fornire un risultato che potenzialmente, invece, c’è.
E questo è male.
Salami Slicing
Il protagonista della nostra storia, che chiameremo vista la sua ingordigia Giuliano (ogni riferimento a fatti o persone è puramente casuale), è così finito in gattabuia.
Lì dentro ha incontrato uno dei famosi utonti che, avendolo riconosciuto, passa il tempo a sodomizzarlo tra una ora di libertà e l’altra.
Quando non gli duole il deretano Giuliano pensa ai suoi errori e un giorno, gustando un salame fattogli dono da un parente, ha un’illuminazione.
La soluzione era semplicissima, bastava tagliare una fetta alla volta!
Per ottimizzare il processo dei prelievi illegali era infatti sufficiente muoversi in questo modo:
Ad ogni conto corrente di ogni utonto nel database, Giuliano doveva prelevare una cifra trascurabile reiterata nel tempo.
I vantaggi sarebbero stati molteplici:
- Molti utonti non si sarebbero accorti della cifra e, se anche avessero visto la movimentazione, non si sarebbero insospettiti.
- Altri se ne sarebbero accorti ma avrebbero lasciato correre il tutto perchè il gioco non vale la candela e avrebbero detto “Mah si, saranno quei ladri della banca con le loro imposte”.
- Altri ancora avrebbero scoperto l’arcano ma vista la cifra della quale parliamo le ripercussioni non sarebbero state terribili.
- Giuliano avrebbe potuto capire, alzando di volta in volta la cifra prelevata (e quindi aumentando la fetta di salame, tornando alla metafora), quale potesse essere la soglia entro la quale muoversi in modo tale da massimizzare il rapporto rischio/guadagno.
- Sul conto del buon Giuliano non sarebbero piovuti fantastiliardi ma solo migliaia di euro reiterati nel tempo, movimentazioni di capitale decisamente meno sospette.
In onore alla propria voracità, Giuliano battezza questo processo Salami Slicing e ne fa dono alla comunità hacker.
Questo algoritmo è ancora oggi il metodo più usato per questo tipo di operazioni illecite.
Il costo di un algoritmo
Ora che abbiamo visto la fine che ha fatto Giuliano abbiamo capito una cosa: un algoritmo ha un costo. Nel nostro caso il costo è dato dai rischi che si portano appresso le nostre azioni. Abbiamo visto che il salami slicing è ottimo proprio per questo motivo: minimizza i rischi.
Tornando all’informatica, questo costo si misura in risorse occupate. Un buon algoritmo deve infatti restituire il risultato desiderato minimizzando le risorse impiegate.
In base alla loro complessità, quindi alla quantità di queste risorse, possiamo catalogare gli algoritmi in diverse categorie chiamate classi di complessità.
Conclusioni
Perchè vi sto raccontando tutto questo? Innanzitutto perchè l’informatica è bella perchè cerca l’ottimizzazione di un processo, qualsiasi esso sia.
Notiamo inoltre che gli algoritmi informatici non sono prettamente relazionati ad un computer. Il “salami slicing” non è una procedura di programmazione informatica, bensì un ottimizzazione logica di un processo da applicare nella vita [del]fraudolenta[/del] reale.
Ma questa, forse, è solo deformazione professionale.
Questo algoritmo in particolare è comunque interessante e trova numerose applicazioni nel mondo reale: In finanza, per esempio, esiste una variante del salami slicing che punta all’accantonamento di grosse somme di denaro giocando sui decimali dei tassi di cambio.
Sono una capra sull’argomento quindi lascio gli approfondimenti a chi di dovere via commento.
Al di là di tutto, se vedete un prelievo sospetto di pochi euro sul vostro conto, è meglio che chiediate a chi di dovere:
perchè forse state facendo la figura del salame!
Note e fonti
Mi sono trovato un po’ in difficoltà a scrivere di informatica nonostante sia il mio argomento preferito. Vorrei quindi i vostri consigli riguardo al grado di difficoltà di questo articolo. Avrei potuto scriverlo in maniera più semplice o più complessa ma mi mancano i parametri di riferimento.
Consideratelo un “numero 0”: se vi è piaciuto potrei farne una rubrica a cadenza random….la costanza non è mai stata tra le mie virtù. Se lo reputate inutile ditemelo e torno a parlare di altro!
Riguardo alle fonti le trovate sparse qua e là per l’articolo. Ne aggiungo giusto un paio:
- Complessità degli algoritmi
- Algortimi greedy spiegati come si deve