La ragione del lab

supercazzola prematurata Dec 11, 2019

Avrete notato, con una certa intermittenza, che vi trovate il faccione di ZARDOZ quando cercate di accedere. Il motivo e' che sto giocando (nel tempo libero, come quando scrivo) a scrivermi un WAF che possa imparare dall'esperienza. Il motivo non e' professionale in senso stretto: innanzitutto non sono un programmatore full stack, quindi non vendo codice.

In secondo luogo, quello che mi interessa e' di creare qualcosa che semplifichi. Altrimenti avrei semplicemente installato Snort+Pulledpork subito dopo la terminazione https, che non e' un WAF ma ha diverse regole simpatiche. Oppure ModSecurity, o qualsiasi altro software analogo per fare da WAF.

La verita' e' che mi interessa capire quanto sia possibile ridurre di dimensione i software. E questo per una ragione.

Sicuramente possiamo installare il piu' sofisticato waf del pianeta, comprarlo che so da Juniper, e coprire anche l'eventualita' nella quale un governo attacchi le nostre lucine di Natale IoT. Governi malvagi che detestano il Natale, o vogliono fare un DDOS di renne.

Ma il problema vero ' un altro. Che sulle lucine quella roba non gira, e un mostriciattolo che consuma 2KWh e mezzo in casa non lo potete avere. E anche in negozio. E non davanti ai vostri IoT.

Ma non e' solo il mondo IoT (che finalmente sta partendo, anche se la componente software fa cacare) che mostra l'urgenza di semplificare il software. Il problema e' che l'era dei giganteschi data center sta per finire.

Il primo problema e' energetico: Google e Facebook possono dire quel che vogliono, ma i loro data center consumano TROPPO. Non troppo per il mondo attuale, ma troppo per il mondo a venire. Lo so che Facebook sta facendo linciare Greta&co e fomenta il complottismo sul cambiamento climatico , e lo so che google sta tollerando le peggio cose su Youtube:

Ma alla fine, il conto lo stiamo gia' vedendo arrivare, e tra pochi anni succedera' questo:

Mi riferisco al momento in cui i costi economici della cosa diventeranno visibili nella vita del cittadino.

Certo, mi direte che tra 5 anni tutti andremo con l'energia biologica riciclata rinnovabile con gli elettroni circolari, ma nel frattempo il problema e' che questa conversione avra' degli strascichi. Insomma, i data center consumano davvero troppo, e spendere quasi due KWh per muovere 1GBi per il mondo non ha molto senso.

Del resto, se gli architetti di AWS stanno implementando massicciamente dei data center basati su ARM64 non e' perche' i server ingrasseranno ancora in potenza consumata.

Tra una cosa e l'altra, quindi, prima o poi il problema nel mercato IT non sara' piu' (per fare un esempio) quello di conoscere Kafka, ma di farsi bastare NATS.

"Farsi bastare" ovviamente significa perdere qualcuna delle buzzword preziose caratteristiche di Kafka, che i programmatori cool usano cosi' bene perche' non se le saprebbero programmare loro per farci cose fantastiche e risolvere problemi che nessuno ha, come l'indispensabile Tinder per i cani.

Al contrario, la prossima tendenza sara' quella alla semplificazione. Per diversi motivi:

  1. E' sempre piu' urgente ridurre la superficie di attacco dei sistemi. E la maniera piu' semplice per aderire a requisiti di sicurezza sempre piu' stringenti e' quello di ridurre lo scope del progetto.
  2. Il consumo energetico nel mondo IoT sara' sempre piu' cruciale. Sempre piu' spesso i programmatori si sentiranno dire "questa roba deve girare su un dildo WIFI"  e non "su un server".
  3. In generale, la cuccagna dei data centers che consumano quantita' sataniche di energia per funzionare, e il doppio solo per raffreddarsi, non durera' a lungo. E non esiste una legge di Moore dell'efficienza energetica, per quanto in molti si stiano sforzando di farla esistere.

Ora, dicevo, che "farsi bastare" diventera' la prossima arte dei programmatori e dei sistemisti. E un WAF per le vostre prese IoT non potra' certo essere uno scatolone da 6U di Juniper. Dovra' girare, se va bene, sul vostro router di casa, se non su qualcosa come un raspberry.

Con memoria limitata e tutto quanto.

Ora, prendiamo per esempio la questione dei bayesiani. In giro si trovano molte librerie, che vanno da quelle scientifiche vere e proprie che vi offrono una vasta scelta di bayesiani con ogni genere di ottimizzazione, e librerie semplici che trovate su github. Il problema del futuro, per chi non potra' spendere energia per processori "grassi", sara' quello di farsi bastare roba semplice.

Per esempio, ho testato qualche giorno fa una versione di ZARDOZ che usava le classi come un bayesiano , ma anziche' calcolare le probabilita' calcolava l'entropia della richiesta in ingresso rispetto alle classi considerate come dizionario. E' ovviamente una soluzione imperfetta, ma come efficacia era paragonabile a diversi bayesiani semplici che si trovano in giro.

Del resto esistono diversi modi di calcolare l'entropia dell'informazione, a seconda che sia specifica, totale, assoluta , eccetera. Ma il problema di "farsi bastare" le cose e' che bisogna adattare la versione meno costosa in termini computazionali.

Questo esercizio consiste nel trovare una soluzione che magari non sara' generale, non sara' il framework definitivo che fa ogni cosa, non sara' la soluzione accademicamente piu' corretta, non offrira' le specifiche di buzzwordita' stupendosa che sono necessaria al programmatore moderno, ma che deve funzionare con poco , su un hardware modestISSIMO, e specificatamente in pochi use-case diversi.

Il problema non e' di usare qualche specifica tecnologia o linguaggio: il problema e' un problema di mindset.

Se fate gli architetti di sistema, e chiedete ai programmatori di quante risorse hardware ci sia bisogno per Hello World, oggi vi rispondono che senza un cluster di server con meno di 256GB di Ram, 4 CPU e un TB di hard disk non puo' farla girare. Perche' soltanto per il cluster Kafka che serve a mandare Hello World ad un Cluster Kafka che poi la gira ad un Elastic Search come Sink,che poi lo gira ad Hadoop  ,  il tutto installato in un cluster Kubernetes, in alta affidabilta' (va da se'), di scrivere "Hello World" sulla console ve lo sognate proprio. Anche perche' abbiamo tolto dal conto un ormai indispensabile API Gateway e la catena di CI/CD, per non parlare di tutta la parte di DevOps.


(in realta' semplicemente non hanno idea di quel che dicono , e si limitano a moltiplicare per cinquanta la potenza del loro laptop. Il loro PM, poi, per sicurezza moltiplichera' per due, che non vuole fare brutte figure. Per paura di tagli del budget il loro superiore suggerira' di stare comodi, in modo che se anche non ottengono tutto , ci riescono lo stesso. E vi arrivano sulla scrivania richieste di hardware mostruose. Se non ci credete, chiedete loro come abbiano calcolato quei numeri, ma tenete il popcorn a portata di mano. ).

Il punto e' proprio questo, e cioe' che mi sto allenando un pochino ad usare approcci semplificati.

Quindi si, cerchero' di scrivere un WAF in poche righe, e quindi si, a volte vi troverete il faccione di Zardoz.

E se lavorate nel settore, vi consiglio di allenarvi a fare lo stesso, perche' la cuccagna sta per finire in molti settori, dispositivi piccoli e poco potenti diventeranno la stragrande maggioranza del budget, il backend potentissimo diventera' un lusso non sempre disponibile, e quindi vi troverete la richiesta di "far funzionare tutto con poco hardware, avendo come unica strategia il fatto che gli use case sono in numero limitato".

E quindi, dovrete abituarvi a "farvi bastare l'hardware".

Abilita' che e' stata persa nel tempo: considerate che solo negli ultimi anni 80 per far accendere un LED bastavano una batteria di voltaggio adeguato e un led. Oggi avete bisogno di un raspberry 4 la cui potenza  noi avremmo chiamato "Mainframe" e di un Arduino che ai nostri tempi era un controller per automazione industriale , e pure grosso.

E siccome la maggior parte del software girera' in prodotti come "lampadine wifi", vi consiglio di imparare a farvi bastare poco codice, anche se non perfetto, e magari giocarci per capire cosa si adatti meglio allo specifico use case.

Perche' in futuro, su una lampadina non ci potete far girare Snort+Pulledpork, ma vi chiederanno lo stesso che sia abbastanza sicura contro le intrusioni.

Tutto qui.

Uriel Fanelli

Non sono io che so tutto. Sei tu che non sai un cazzo di niente. E per non ridurti cosi' , sarebbe bastato fare piu' attenzione a scuola.