Ecco perché non mi fido della crittografia di Whatsapp.

Whatsapp non mi è mai stato molto simpatico, come si deduce dal mio precedente articolo.
Da qualche tempo aprendo una chat con il suddetto sistema, appare un messaggio che riporta:
“I messaggi che invii in questa chat e le chiamate sono ora protetti con la crittografia end-to-end.”
Ma cosa significa questo?
Significa che le comunicazioni con la persona in questione, da quel momento in poi sono rese incomprensibili agli altri tramite uno strumento chiamato “crittografia in chiave pubblica”
Come funziona fisicamente tutto ciò?
Vediamo di spiegarlo con un facile esempio.
Io sono Tizio e voglio mandare a Caio un messaggio, senza che nessun Sempronio riesca a capire che cosa vi sta scritto.
CrittografiaAllora Caio, genera con uno speciale strumento matematico, due numeri, la sua chiave pubblica e la sua chiave privata. Tali numeri sono in strette correlazione, ma ognuno dei due non è ottenibile dall’altro se non impiegando molto tempo (si parla di 20 anni con un normale computer). Caio mi invia la sua chiave pubblica, io decodifico il messaggio con una procedura che usa come parametro quel numero e lo invio a Caio. Soltanto Caio, che conosce la chiave privata corrispondente a quella che mi ha mandato riuscirà a trasformare il messaggio inviato in quello che era in origine. Sembra magia.
La stessa operazione si fa con numeri generati dalla mia parte, per ricevere messaggi inviati da Caio. Sempronio non può fare nulla per decodificare i messaggi, dato che le uniche cose a cui potrebbe accedere (nell’ipotesi che stesse intercettando le comunicazioni) sarebbe il messaggio codificato e la chiave pubblica, che serve solamente per codificare il messaggio, non per decodificarlo.

Questo sistema fu adottato in principio da Telegram, e fu, a parere mio il motivo del suo successo, in quanto, la maggior parte delle persone che conosco, usa Whatsapp, e tutte le persone che conosco, che hanno qualche nozione di sicurezza informatica, usano Telegram.

Ma veniamo al dunque. Perchè la crittografia di Whatsapp non mi piace?
Sostanzialmente, per due motivi, il primo è un articolo che ho letto e il secondo è un anomalia che ho notato personalmente.
L’articolo, che si può leggere qui dice letteralmente “La crittografia end-to-end di Whatsapp, è finta come il culo di Kim Kardashian.
Se non conosci la Kim in questione, ti basta sapere che il suo culo è più falso delle banconote da 12€.
Comunque, sempre per chi non è forte con l’inglese, l’articolo spiega che l’algoritmo che decide quali numeri usare come chiavi pubblica e privata, è comunque stato creato da Whatsapp e niente impedisce che whatsapp lo abbia scritto in modo che questi numeri siano un insieme ristretto e che quindi le chiavi siano facilmente rintracciabili dalla stessa whatsapp.
L’anomalia da me riscontrata riguarda invece l’interfaccia web per l’uso di whatsapp.
Entrambi i sistemi, Telegram e Whatsapp , funzionano sia attraverso uno smartphone, che attraverso un interfaccia web fruibile da PC. In particolare l’interfaccia web di whatsapp funziona solo se lo smartphone è collegato a internet (Maledetto Whatsapp)
Se l’utente crea una chat crittografata con Telegram, dal telefono, questa chat non è accessibile attraverso l’interfaccia web. Giustamente la chiave privata usata per decodificare una chat è memorizzata nel telefono, da li non deve uscire, e quindi la chat non è leggibile da PC, che non dispone della chiave.
Questo non avviene con Whatsapp, Le chat sono utilizzabili indistintamente da PC e telefono, senza alcun problema di sorta.
Come è possibile?
Perché ciò sia possibile, il PC deve necessariamente avere a disposizione la chiave privata di chi sta scrivendo.
Se la chiave privata è arrivata fino al PC, vuol dire che è stata inviata ad un qualche sistema esterno che l’ha poi messa a disposizione del PC. Ovvio che questo sistema esterno è Whatsapp, quindi ovvio che Whatsapp avendo a disposizione la chiave può leggere tutti i vostri messaggi…

Whatsapp VS Telegram. Ecco perché Telegram è meglio.

whatsapp-vs-telegram-loghiQuanti conoscono Whatsapp?
Tutti!!!
Quanti conoscono Telegram?
Pochi…
Telegram è un servizio di messaggistica istantanea analogo a Whatsapp, di realizzazione relativamente recente che offre molte feature interessanti, non offerte dall’altro.
La maggior parte delle persone è spinta ad utilizzare whatsapp dal fatto che oramai quasi tutto il mondo lo usa, cosi per poter comunicare con il maggior numero possibile di persone bisogna utilizzarlo.
Io sono convinto che Telegram sia migliore, sotto molti punti di vista e scrivo questo articolo per invogliare il lettore a provare questa App.
Ma vediamo ognuna delle grandi qualità che contraddistinguono questa servizio.

Prezzo
Whatsapp è a pagamento. Telegram no.
Ma Attenzione, il discorso per quello che riguarda il pagamento è molto ampio. Il costo irrisorio che l’utente deve pagare annualmente per utilizzare l’app non permette assolutamente al gestore di mantenere il servizio. Il gestore ottiene denaro grazie alle informazioni derivabili dai messaggi scambiati dagli utenti (per lo più indagini statistiche di mercato)
Però, Come descriverò nella prossima sezione, Telegram permette di fare si che soltanto il destinatario possa leggere i nostri messaggi.

Privacy
Tutto quello che viene trasmesso attraverso whatsapp, e dico TUTTO, viene analizzato in maniera automatica per poterne ottenere più informazioni possibili (Bibite bevute, opinioni politiche, cibo preferito…)
Invece, utilizzando Telegram, possiamo comunicare utilizzando la “chat segreta”. Questa appare come una normale chat, come quelle di whatsapp, ma più in profondità il funzionamento è diverso. Ogni volta che l’utente invia un messaggio, una foto o qualsiasi altra cosa, questa viene crittografata con il metodo della “cifratura in chiave pubblica”. Ovvero, il messaggio è leggibile soltanto al destinatario. I gestori di Telegram, sono talmente sicuri di questo, che sono disposti a pagare 300.000$ a chiunque riesca a trovare il modo di leggere i messaggi non destinati a lui.
Un altra cosa che riguarda la privacy, interessante da un altro punto di vista, è la possibilità di chattare attraverso un nickname.
Dopo aver scaricato l’app, mi devo registrare, dando il mio numero di telefono, come si fa con whatsapp. Successivamente utilizzando le opzioni dell’app posso registrarmi con un nickname (a patto che non sia già utilizzato da un altro) e utilizzare questo nick per farmi contattare su telegram da persone, senza metterle a conoscenza del mio numero di telefono.
Il mio nick ad esempio è @garenki.

Invio di file
Whatsapp permette di inviare oltre ai messaggi, le foto , i video , file audio , e registrazioni fatte al momento. Telegram permette di inviare QUALSIASI tipo di file, e questi, al contrario di quanto avviene con whatsapp, non subiscono nessuna modifica (Compressioni che riducono la dimensione dei file, ma ne riducono la qualità)
Inoltre Telegrame permette di inviare file di di dimensione molto ampia. si parla di 1GB. Questo permetterebbe ad esempio di inviare Il file ISO di una distribuzione Linux ad un amico, tramite telefono.

Gruppi
Whatsapp consente di creare gruppi  da 100 persone , Telegram consente di avere 200 persone all’interno di un gruppo.

Canali
Questa è un metodo di comunicazione che in whatsapp non esiste. I canali consentono di attuare la trasmissione in broadcasting dei messaggi a tutti gli iscritti al canale. Per esempio, io posso creare il canale “Informatica e affini” , le persone che lo desiderano possono iscriversi al canale, e riceveranno tutti quello che scrivo.
Il canale si differenzi dal gruppo, in quanto non c’è limite al numero di iscritti ad un canale, questi si possono iscrivere da soli, e non possono scrivere sul canale.

Open source
Questa, dal punto di vista di un informatico è la cosa più bella. Tutto il codice che serve per fare funzionare l’applicazione si può consultare liberamente. Questo permette a chiunque lo comprende, di capire che cosa fa l’applicazione in ogni momento, e quindi capire se i messaggi vengono effettivamente crittografati  oppure no.
Al contrario il codice sorgente dell’applicazione whatsapp è segreto. Per questo non è cosi facile sapere che cosa fa veramente l’applicazione con il nostro telefono.

Bot
Un Bot è un’entità che è in grado di sostituire (in alcuni casi) gli esseri umani. I bot di telegram sono programmi che rispondono in maniera autonoma alle richieste degli utenti, permettendo di interagire con altri utenti sconosciuti, ricevere informazioni, giocare…
Ogni utente, che ne è capace, può costruire il proprio bot, e la comunità ha già dato origine a svariati bot, tra cui quello per giocare a Briscola bugiarda(briscola chiamata) @briscolabot , servizi per imparare l’inglese, il bot di Wolfram alpha, e l’incredibile SPACOBOT !! Bot pazzoide creato da italiani, che è al terzo posto, fra i bot più usati nel mondo!!

Ma allora Telegram è nettamente meglio di Whatsapp!! Ha solo cose in più…
Eh no, in realtà esiste una cosa che ha Whatsapp e che non haTelegram, le chiamate Voip.
Con Whatsapp è possibile effettuare chiamate ad altri utenti senza spendere un centesimo di telefono (Come con Skype)
Con Telegram per fare una cosa che assomiglia ad una telefonata, bisogna usare l’invio di registrazi0ni, che rendono il risultato finale una comunicazione tipo walkie talkie.

In conclusione, io uso Telegram, e spero di avervi convinto a fare lo stesso.
Potete scaricare la app, solo per provarla, è gratis.
Contribuite a fare conoscere questa cosa a tutti!!

Il quesito dei 5 pirati

Guybrush_Threepwood_45c101e534242Recentemente ho letto un quesito molto interessante. Per poter arrivare alla soluzione, chi lo affronta deve riuscire ad immedesimarsi in ognuna delle persone che rientrano nella narrazione. Io l’ho trovato interessante, in quanto non è di facile risoluzione, ma l’immedesimarmi nei personaggi mi ha portato a non consultare la soluzione prima di essere arrivato ad una soluzione certa.

Non mi rimane che proporlo anche a te che stai leggendo e soprattutto augurarti buon divertimento nel risolverlo.

Ci sono 5 pirati che hanno appena rubato un totale di 100 dobloni. Ciascuno di loro è avido di denaro e  molto intelligente, ma al contempo tiene alla propria pelle. I 5 pirati devono decidere in che modo spartire i dobloni appena rubati, e utilizzano una strana politica. A turno,  cominciando dal pirata più giovane e proseguendo per età,  ognuno di loro propone una spartizione del bottino.  Se almeno la metà dei pirati è d’accordo con questa spartizione,  i dobloni vengono spartiti in quel modo. Altrimenti il pirata che ha fatto la proposta viene ucciso e si passa il turno a quello che viene dopo di lui in ordine di età.

Che cosa dovrebbe proporre il pirata più giovane per massimizzare il proprio guadagno?

user_137_01_1215897525_605549

Il Nao e la pallina verde.

Chi conosce il NAO?
Il nao è un robot umanoide con 25 gradi di libertà e con 2 videocamere. (I device di cui dispone sono molti di più, ma al nostro scopo sono stati utilizzati sono i motori e le videcamere).

È Stato utilizzato de me e dal mio collega Andrea Vannini per passare l’esame di Robotica. Il nostro intento è stato quello di permettere alla macchina di individuare la posizione della palla nello spazio circostante, fare avvicinare il robot alla palla con il piede sinistro e farlo calciare.

Il Robot è dotato anche di un sistema capace di calcolare in modo dinamico la proiezione del suo baricentro sulla superficie che gli fa da supporto. Lo stesso sistema permette di compensare il controllo diretto dei giunti con altri movimenti non controllati direttamente dall’utente che gli permettono di mantenere l’equilibrio sulla sua base d’appoggio.
Ossia , se il robot è in piedi con questo sistema attivato e gli impartisco il comando muovere la gamba destra verso l’esterno, il sistema autonomamente fa muovere il braccio sinistro per mantenerlo in equilibrio.

Non essendo riusciti, io e il mio collega, a fare funzionare nel modo corretto questo sistema abbiamo pensato di far calciare il Nao attraverso un semplice passo. In questo modo ci siamo concentrati più su l’aspetto riguardante l’intelligenza del nostro robot.

Un grosso collo di bottiglia con il quale abbiamo dovuto fare i conti è il fatto che il robot attraverso la connessione wifi riesce ad inviare al massimo 2 immagini al secondo ad una risoluzione di 640 x 480 pixel.
Tenendo conto del fatto che queste immagini dovevano poi essere elaborate dalla nostra applicazione per individuare se la pallina fosse presente nella scena, c’era a disposizione un dato ogni 0.8 secondi all’incirca per poter prendere una decisione.

Il risultato finale del nostro lavoro è che per effettuare il task il robot effettua questi passi:

-Si alza in piedi
-Cerca la pallina nello spazio circostante ruotando la testa e ruotando l’intero tramite l’uso delle gambe.
-Raggiunge la palla camminando
-Si allinea con la palla per calciarla
-Arretra e fa diversi passi avanti per calciarla.

Ma veniamo alle questioni più tecniche:  L’algoritmo.
Le seguenti elaborazioni avvengono tutte tramite l’utilizzo delle librerie OpenCV,  abbastanza conosciute nel mondo della computer vision.
Per consentire al robot di riconoscere la palla in qualsiasi condizione di luce,  e conoscendo noi a priori la precisa colorazione della palla, abbiamo fatto in modo di trasformare la normale immagine inviata dalla telecamera del robot (descritta tramite le cordinate dello spazio RGB) in un altra immagine descritta tramite lo spazio HSV. In questo modo è stato possibile imporre dei vincoli per delineare i pixel della palla senza imporre alcun vincolo sulla quantità di luce riflessa da essa. In questo modo il robot riconosce i pixel appartenenti alla palla in qualsiasi condizione di luce bianca.

foto1246

Il risultato di questo è un immagine “sogliata” ovvero un immagine nella quale i pixel che sicuramente non appartengono alla palla sono disegnati in nero mentre gli altri sono bianchi.
foto1248

A questo punto il problema diventa fare decidere al calcolatore se un gruppo di pixel bianchi di questa foto, costituiscono oppure no i pixel di una sfera.  Una sfera proiettata su di un piano corrisponde ad un cerchio. Quindi il problema si trasforma nel decidere se un gruppo di pixel bianchi presenti nella foto approssima sufficientemente bene un cerchio.

La cosa più ovvia per fare questo sarebbe utilizzare la “trasformata circolare di Houg” che segue (la falsa riga :D) della Trasformata di Hough. Tuttavia, la versione della trasformata fornita con le librerie OpenCV non funziona bene come si potrebbe pensare, o perlomeno non come desidereremmo che funzionasse per il nostro task.
Per questo motivo, ho personalmente riscritto una mia versione di questo algoritmo,che guarda caso è perfettamente funzionante!!!

Il problema però sta nel fatto che la mia versione è molto, molto lenta…
Da questo ne deduco che la versione fornita da OpenCV è un giusto compromesso tra affidabilità e velocità adottato dagli sviluppatori .

Per poter fare prendere decisioni al robot usando il mio codice , era necessario porre dei vincoli nella ricerca dei cerchi. Per questo abbiamo utilizzato questo stratagemma.

Tramite degli opportuni operatori ( Sobel) calcoliamo per ogni pixel facente parte del contorno dell’ipotetico cerchio, a direzione con massimo gradiente. (in parole povere la direzione attreaverso la quale si raggiunge un pixel bianco partendo da uno nero, percorrendo la minor distanza possibile). In un cerchio perfetto tutte queste direzioni convergono nel centro preciso del cerchio.

foto1249

foto1251

Detto tutto questo, calcolando il punto nel quale passano il maggior numero di queste linee, troviamo un punto che sarà probabilmente il centro di un cerchio.
Questo test però, origina un gran numero di falsi positivi. Ma per risolvere questo problema possiamo usare la mia versione della trasformata circolare di Hough riducendo lo spazio di ricerca con vincoli derivati dai valori appena trovati con il metodo dei gradienti.

foto1252

Il risultato è molto buono.

L’indovinello più difficile del mondo

Ci sono tre persone, Falsone, Sincero, e Frolloccone. Falsone dice sempre il falso, Sincero dice sempre la verità e Frolloccone risponde scegliendo in maniera casuale. Non si conosce la rispettiva identita di ognuno di questi. A questi è possibile porre un totale di 3 domande a cui ognuno di essi può dare una fra due risposte: alfa e beta. Questi corrispondono a si e a no, ma non è possibile sapere a quale dei due rispettivamente.

È possibile distribuire le domande in maniera arbitraria tra i tre e lo scopo del gioco è arrivare a capire qual’è la precisa identità di ogni persona.

Quali domande bisogna porre e a chi bisogna porle?

 

Nuova versione di Filtro

Mi sono reso conto che il programma da me scritto e pubblicato in questo articolo pur essendo utile a riposare la nostra vista, non permette la facile interazione con le finestre.
Per questo motivo ho modificato la vecchia versione con una migliore.
Con il nuovo FILTRO scaricabile da qui è possibile riposare la vista mentre si lavora.
I valori di colore e di trasparenza si regolano come nella versione precedente (come precedentemente descritto qui)
Le novità sono le seguenti:
-Il programma si apre autonomamente a pieno schermo , togliendo un po di impegno all’utente.
-Il riquadro semitrasparente rimane sempre la prima finestra in vista, e diventa trasparente appena il puntatore viene mosso sopra di esso. Quando è completamente trasparente è possibile operare con le finestre sottostanti come se il riquadro non esistesse. Dopo circa 3 secondi che il mouse non viene mosso il riquadro torna ad essere visualizzato. Questo permette di leggere in maniera riposante un documento, scorrendo senza fatica la visuale sulle diverse pagine.

Filtro lettura

Ho gia descritto in questo vecchio articolo il modo per permetterci di stancare meno la nostra vista mentre lavoriamo al PC.
Tuttavia mi sono imbattuto nel problema che esistono documenti il cui colore di sfondo non viene modificato dal colore di sistema di Windows. Per esempio un documento in formato PDF con lo sfondo bianco , rimarrà sempre con lo sfondo bianco, che a mio avviso risulta molto stancante.
Trovandomi a dover leggere molti documenti Pdf di quel genere per svariate ore, ho fatto fronte a questo problema creando un programma che appare come un vetro semitrasparente su tutto lo schermo.
Il programma si può scaricare qui
Per usarlo è sufficiente avviarlo e allargarlo a tutto lo schermo.
È Possibile modificare il colore e il livello di trasparenza con la tastiera in questo modo:
-Per modificare il livello di trasparenza si usano i tasti SU e GIU della tastiera. SU per diminuire la trasparenza e GIU per aumentarla.
-Per modificare il colore bisogna operare separatamente su ogni singolo colore primario: Tenendo premuto il tasto R (red) è possibile alzare e abbassare il livello di rosso con i tasti SINISTRA e DESTRA della tastiera. Stressa cosa per gli altri colori tenendo premuto G (green , Verde) e il tasto B (blue , blu)
Ogni volta che viene effettuata una modifica i valori dei colori e dell’opacità (alpha) vengono descritti dal testo in alto a sinistra della finestra.
Provate a modificare questi valori in modo da riuscire a leggere il testo che sta sotto senza stancare gli occhi.
Spero che Il programma possa essere utile anche a voi.
————————————————-
Adesso ho sviluppato una nuova versione leggi qua

Da pdf a jpg.

Cercando sulla rete per motivi di studio ho trovato un interessante programma che permette di ottenere le immagini in formato JPG di ogni singola pagina di un documento PDF.
Il file è scaricabile da qui
Il programma è liberamente utilizzabile da tutti.
Funziona da riga di comando attraverso il prompt di ms-dos.
Ma esiste un modo più semplice veloce e intuitivo per utilizzarlo. Basta fare Drag & drop con l’interfaccia del nostro sistema operativo Windows. Per ottenere le immagini di ogni pagine del documento PDF dobbiamo cliccare sul file PDF e trasportarlo sull’icona dell’eseguibile del nostro programma appena menzionato.
Automaticamente il programma creerà una cartella nella stessa cartella dove è presente l’eseguibile chiamata “PDF_to_JPG_files” contenente tutte le immagini.
Per il corretto funzionamento è necessario accertarsi che non sia già presente una cartella con lo stesso nome. In quel caso il programma termina l’esecuzione restituendo un messaggio di errore.

Il registro delle opposizioni

Il registro delle opposizioni è un archivio, istituito di recente per tutelare tutte le persone che non vogliono essere disturbate con chiamate commerciali e promozionali al telefono di casa.
Ogni persona che si è inscritta per essere inserita in questo registro, diventa automaticamente non contattabile telefonicamente delle aziende che fanno promozioni.
Dopo l’istituzione di questo registro vi è l’obbligo da parte delle aziende che fanno promozione telefonica di consultare il registro prima di ogni chiamata, per verificare se il numero vi è presente oppure no.
Iscriversi al registro è semplicissimo, basta visitare il sito http://www.registrodelleopposizioni.it/ cliccare su “Area abbonato”, selezionare la modalità di iscrizione via Web, e cliccando sull’apposito link raggiungere la pagina dove dovranno essere inseriti tutti i dati personali per l’iscrizione.
Una volta effettuata l’iscrizione occorre aspettare un po di tempo per ricevere un’e-mail all’indirizzo specificato che comunica la presa in carico dell’ iscrizione.
In questo messaggio è riportato un codice che serve (utilizzandolo sul sito) di consultare lo stato effettivo della nostra iscrizione al registro.
Appena effettuata la procedura di registrazione la richiesta rimarrà pendente per un breve periodo di tempo. Successivamente quando la linea telefonica sarà ufficialmente inserita nel registro nessun operatore commerciale potrà chiamare quel numero.
Ho letto articoli in cui si parla di un minimo di 6000 euro di risarcimento per le chiamate a numeri iscritti al registro.

SRT Subtitle Fixer

Quante volte succede di avere a disposizione un film con la banda audio in lingua straniera e trovare i sottotitoli in lingua italiana che però sono un po’ sfasati con il video?
Questo succede quando la persona che ha costruito i sottotitoli ha fatto il suo lavoro utilizzando un altra versione del nostro stesso film, che magari non ha la presentazione iniziale o che ha una presentazione diversa.
I file dei sottotitoli più utilizzati hanno come estensione “srt”  e si sincronizzano con il video utilizzando come punto di riferimento l’inizio di questo.
Visto questo problema ho deciso di creare SRT Subtitle Fixer. Un programma che permette di anticipare o posticipare a scelta i sottotitoli in formato srt. Il programma è semplicissimo da usare e si può scaricare qui.
E sufficiente aprire il programma, cliccare sul tasto “Apri file” e  scegliere il file .srt da modificare. La finesta a questo punto mostra il nome del file aperto e la quantità di righe che lo costituisce.
Nella parte sottostante vi sono 2 caselle di testo:
-Nella prima bisogna scrivere il valore numerico dei millisecondi di ritardo che vogliamo dare ai sottotitoli. Per esempio , se volessi ritardare i  sottotitoli di un secondo e mezzo scriverei “1500”,  se volessi anticiparli di 2 secondi  scriverei “-2000″(Valore negativo).
-Nella seconda casella va scritto il nome del file che verrà creato nella stessa cartella di quello aperto e che conterrà i sottotitoli modificati.
Una volta inseriti questi parametri, basta premere il tasto “Scrivi file” e ci troveremo il nuovo file con i sottotitoli modificati  nella stessa cartella in cui risiede il file aperto.
Provatelo e se riscontrate dei problemi o malfunzionamenti non esitate a farmelo sapere attraverso questo blog.