Notizie

Business insights and articles written by our team of world-class professionals

Crittografia

Tutti hanno sentito parlare di crittografia. Film, serie TV, telegiornali sono spesso infarciti con questa parola. Ma cosa è? Come Funziona? Questo vuole essere il primo di una serie di articoli che ci introducono e ci guidano in questo mondo.Noi crediamo molto nello sviluppare cultura in ambito tecnologico in modo che i nostri clienti, ma anche le persone che non lo sono, non debbano essere sopraffatti dalle innovazioni tecnologiche e dalle trasformazioni che queste comportano sia nel mondo del lavoro che nella vita di tutti i giorni. Cosa significa La parola crittografia deriva dal greco Kryptós (nascosto) e graphía (scrittura) ed è un metodo, nato nell’antichità, per rendere inintellegibile la scrittura a chi non è a conoscenze del metodo stesso. Forse il metodo più antico, oggi conosciuto, di usare la crittografia su un testo è quello della scitala lacedemone.Prima di tutto si prendevano due bastoni e li si rendevano uguali. Uno veniva invito al destinatario con cui si volevano scambiare messaggi cifrati. Per scrivere un messaggio si avvolgeva sul bastone, a spirale, una striscia di cuoio o di papiro e si scriveva sul lato del bastone. Svolgendo la striscia questa sembrava piena di lettere a caso. A questo punto con un messaggero si inviava la striscia al destinatario che, avvolgendola sul bastone precedentemente ricevuto poteva leggerne il testo in modo comprensibile. Con la tecnologia di oggi il criterio di fondo è lo stesso. Chi trasmette e chi riceve devono avere delle chiavi, come il bastone della scitale, e conoscere con quale algoritmo utilizzarle, come nella scitala la tecnica di arrotolare la striscia attorno al bastone. Che tipi di metodi esistono? I metodi più conosciuti sono quello a chiavi simmetriche e quello a chiavi asimmetriche. A chiavi simmetriche Chi trasmettere dei dati utilizza un algoritmo (il modo di avvolgere la striscia di prima) ed una chiave (il bastone della scitala) per renderli non comprensibili. Chi riceve il messaggio deve avere una chiave identica (come nella scitala il bastone) ed applicando un algoritmo con quella chiava potrà leggere i dati ricevuti.Questo tipo di crittografia ha il vantaggio di permettere l’utilizzo di algoritmi che richiedono poche risorse elaborative. Però ha lo svantaggio che si devono scambiare in precedenza le chiavi e lo scambio deve avvenire in modo sicuro.Ossia i due interlocutori devono incontrarsi precedentemente per scambiarsi le chiavi, oppure inviarle per email con i rischi che queste possano essere rubate. Un esempio Questo tipo di crittografia è utilizzato nel cifrario di Vernam dove: la chiave per cifrare è lunga quanto il testo da cifrare il testo cifrato si ottiene applicando l’operazione di somma modulo due tra il testo in chiaro  e la chiave il testo decifrato si ottiene applicando l’operazione di somma modulo due tra il testo cifrato  e la chiave Ma questo metodo è realmente sicuro solo se: La chiave è generata in modo veramente casuale La chiave venga utilizzata una sola volta La chiave sia veramente segreta! Quest’ultima condizione evidenzia la delicatezza, in questi casi,  della distribuzione delle chiavi. A chiavi asimmetriche (o a chiave pubblica) In questi sistemi il concetto di fondo è che la chiave usata per cifrare e quella per decifrare siano differenti. Come se avessimo una chiave costituita da una coppia di chiavi: la prima è la chiave privata che è disponibile solo ad una persona; la seconda è una chiave pubblica disponibile a tutti. L’algoritmo utilizzato permette di cifrare i documenti con la chiave pubblica e decifrarli con la chiave privata. Il vantaggio evidente è che le chiavi pubbliche possono essere scambiate liberamente anche in chiaro nella rete. I due interlocutori non devono incontrarsi precedentemente, ma possono scambiarsi le chiavi pubbliche liberamente sulla rete nel momento in cui vogliono comunicare. Lo svantaggio è dato dagli algoritmi che si devono utilizzare, perchè devono basarsi sulla difficoltà di calcolo per rendere difficile la decifratura senza la chiave privata. Se l’algoritmo utilizzato fosse semplice con poche combinazioni, chiunque senza chiave andando per ripetuti tentativi potrebbe riuscire a decifrarlo. Il “valore” della crittografia asimmetrica Per avere una crittografia sicura si devono utilizzare degli algoritmi che, in mancanza della chiave privata, impieghino tante risorse per decifrare il messaggio. Le risorse sono una coperta a due lati, da una parte c’è il tempo che ci si impiega. Ovviamente se io devo impiegare 1000 anni per poter decifrare un messaggio, l’operazione di scassinamento non mi serve.Per impiegare meno tempo devo tirare la coperta dall’altro lato, utilizzare computer con capacità di calcolo molto elevate che riescano a compiere l’operazione in un tempio più breve. Ecco che si può stabilire una regola per far si che la crittografia sia affidabile: le risorse necessarie a decifrare il messaggio, in mancanza della chiave privata, devono valere molto di più del valore del messaggio stesso. Facciamo un paio di esempi: io voglio mandare una mail cifrata con gli auguri di compleanno a mia nipote. Se spendendo 1 euro si potesse affittare un computer in grado di decifrare quella mail in 5 minuti, la lettura di quella email sarebbe alla portata di tutti. Ma se si dovesse affittare un computer per 5 minuti che costasse 10.000 euro allora già sarebbe un’impresa che potrebbe interessare un minor numero di persone. Ora diciamo che in realtà per decifrare quella mail tra me e mia nipote si debbano spendere 1 milione di euro. Ecco che il meccanismo di cifratura è affidabile perchè nessuno spenderà tale cifra per sapere cosa mi dico con mia nipote. Ma se con 1 milione di euro si potesse intercettare l’invio dei codici delle testate nucleari di una nazione, pensate che qualcuno sarebbe disposto a spenderlo? Ci sono novità in questo campo? Ovviamente si. Basandosi su modelli matematici la crittografia è oggetto di studio (e novità) con l’introduzione dell Fisica quantistica. Nuovi metodi e nuovi calcolatori potrebbero far avanzare enormememnte questo campo. In sintesi La crittografia si basa su delle chiavi e sugli algoritmi che le utilizzano per cifrare i dati Lo scambio delle chiavi può essere più o meno sicuro La crittografia è affidabile quando per decifrarla

Leggi

Una nuova frontiera della programmazione

Penso che l’ambito della programmazione e dello sviluppo applicativo si stia trasformando con le stesse modalità con cui la progettazione dell’infrastruttura si è modificata. Parliamo ti tempi che, nel nostro campo, corrispondono ad ere glaciali; gli anni 70-90 per l’infrastruttura, mentre per lo sviluppo applicativo vedo un ciclo iniziato timidamente i primi di questo secolo e che ha avuto un’accelerazione improvvisa negli ultimi 5-8 anni.  Due tendenze opposte Le aziende che si occupano di IT si sono sempre confrontate con due spinte contrapposte: da una parte l’esigenzatra del clienti di avere sempre di più sistemi chiavi-in-mano che siano integrati con la loro realtà; dall’altra l’esigenza di concentrarsi su quelle attività in cui l’azienda si esprime al meglio. Ad esempio un’azienda che vuole, per i suoi uffici, una LAN completa si rivolgerà sceglierà una ditta in grado di fornirgli gli switch, i cavi, le canaline, i pannelli patch ed eventuali armadi rack, le prese per le scrivanie ecc. ecc. L’azienda fornitrice dovrà operare su una serie di livelli con persone che hanno competenze diverse: elettricisti, informatici e forse anche muratori. Se paragoniamo questi livelli al modello OSI potremmo dire che questa azienda lavorerà sui livelli 1-3. Se poi il cliente mette anche requisiti di sicurezza sul tavolo, facilmente l’azienda fornitrice dovrà occuparsi di prodotti e relative configurazioni spingendosi anche sui livelli 4 e 6 con le rispettive competenze.   Sono competenze che si posizionano, per conoscenze e costi, a livelli proporzionali con quelli del modello OSI. Ossia un elettricista, un informatico in grado di configurare degli switch o uno in grado di configurare un firewoll avranno costi (e profitti) differenti.  Con il tempo è stato più difficile avere direttamente in azienda tutte quelle figure necessarie per fornire la soluzione richiesta dal cliente. Quindi le aziende IT (di infrastruttura) hanno intrapreso il percorso che le portava a focalizzarsi sui livelli di offerta a maggior valore (livelli alti dell’OSI) integrando da esterni quelle attività necessarie per i livelli più bassi. Chi ha lavorato nelle aziende, dagli anni 70 ad oggi, ha vissuto direttamente queste trasformazioni. Io colloco fino alla metà degli anni ’90 questa tendenza che separava nettamente gli aspetti infrastrutturali da quelli applicativi. Per chi si occupava di infrastruttura il livello applicativo era un mistero a parte, e per gli applicativi quello che si doveva realizzare, per far usare il loro codice agli utenti, era quasi un rito segreto di cui non si capivano i gesti.  Perché lo sviluppo applicativo è diventato precipitoso? Sono convinto che l’esigenza di far incontrare questi due mondi, farli lavorare ad una rapidità maggiore rispetto alle loro abitudini, sia nata in un periodo ben preciso e a seguito di una novità specifica. Parlo dell’avvento e diffusione dei cellulari nella seconda metà degli anni ’90. Attenzione, parlo dei primi cellulari non degli smartphone come li intendiamo oggi. In questo nuovo mercato le aziende di telecomunicazione hanno sempre avuto l’esigenza di effettuare delle campagne di marketing per superare la concorrenza. Quindi fin dagli inizi ci sono state un susseguirsi di offerte del tipo 500 mintui e 5000 SMS inclusi a soli xx€/mese. Ma cosa significava realizzare queste campagne? In pratica si dovevano attuare le modifiche applicative e distribuirle in contemporanea su sistemi del tutto differenti. Nel momento che si compra una SIM ci sono dei sistemi dedicati che la attivano in modo che questa possa essere riconosciuta dalle varie antenne e possa essettuare le telefonate. I dati delle telefonate si passano ad altri sistemi che devono imputarle ai vari clienti. Questi dati poi passano ai sistemi di fatturazione che li trasformano in euro da fatturare. Pensate ad una persona del marketing che si sveglia una mattina dei primi di Novembre e dice “per Natale facciamo un’offerta in modo che tutte le SIM di una famiglia abbiamo SMS e Telefonate illimitate tra di loro”. Bene e ora? Meno di due mesi per cambiare tante cose e metterle in produzione! Penso che questa sia stata la spinta per trovare differenti modalità di sviluppo applicativo. Come programmare in modo differente? La progettazione applicativa è stata rivista e rivoluzionata continuamente nel nuovo secolo. Nuove metodologie per produrre risultati in poco tempo, nuovi paradigmi per sviluppare applicazioni sui dispositivi mobili e qulasisi cosa potesse far risparmiare tempo. Si perché nel fare una nuova applicazione il tempo dedicato effettivamente alle sue funzionalià viene conteso tra lo scrivere codice necessario al database, all’interfaccia grafica e alle funzionalitò richieste. Ma è interessante vedere che inizialmente, per quanto di nuovo si è cercato di mettere in campo, la realizzazione di applicazioni viene fatta scrivendo con un editor righe e righe di codice in vari linguaggi, facendo cioè quello che in ingelse vine chiamato il coding. È nel 2014 che per la prima volta Forrester conia il termine Low-code per identificare quelle piattaforma di sviluppo che si focalizzano sulla semplicità di programmare. Sono piattaforme che permettono non solo ai programmatori ma anche agli utenti di sviluppare applicazioni senza avere la necessità di conoscere linguaggi e tecniche di codifica.  Forrester le definisce in questo modo: “Low-code platforms enable rapid delivery of business applications with a minimum of hand-coding and minimal upfront investment in setup, training, and deployment” E anche Gartner ne da una definizione simile:  “Low-code development both describe platforms that abstract away from code and offer an integrated set of tools to accelerate app delivery”  e prevede che entro il  2024, le aziende utilizzeranno queste piattaforme per più del 65% del loro sviluppo applicativo. Low-code e No-code Quasi subito ha preso piede una suddivisione tra le piattaforme Low-code, che necessitano comunque una  parte di codifica tradizionale e le piattaforme No-code, che si pongono l’obiettivo di non dover fare alcun tipo di codifica. È iniziata una diffusione impressionante di piattaforme di cui non tutti, nemmeno chi sviluppa applicazioni per mestiere, ne ha conoscenza. Una diffusione paragonabile ad un incendio di un bosco d’estate in una giornata ventosissima. Una rappresentazione interessante di questa diffusione è visibile nella pagina di NoCodeJournal dove è riportato un inventario di tutte (almeno quelle che sono riusciti a censire) queste

Leggi

ready to take your business to the next level?

Get in touch today and receive a complimentary consultation.