home Tempo di lettura massimo 6 min


L'evoluzione di Keybase, smartphone e chat a portata di click

Circa due mesi fa abbiamo parlato di Keybase e abbiamo visto come sia possibile verificare la propria identità e quella dei nostri amici online e di come memorizzare e scambiare documenti cifrati in totale comodità attraverso questo servizio. Keybase è un progetto giovane ed in continuo sviluppo, basti pensare che fino a pochi mesi fa non esistevano nè KBFS, nè l'applicazione per pc, ma il suo team di programmatori sembra non arrestarsi mai. Dall'ultima volta che ne abbiamo parlato infatti è stata rilasciata l'applicazione mobile, disponibile gratuitamente sia per Android che per iOS, che, proprio come per la versione Desktop, permette di comunicare in modo cifrato e sicuro con qualsiasi altro membro della community. [ Immagine presa dal Play Store in quanto, per questioni di sicurezza, all'interno dell'applicazione non è possibile effettuare screenshot ] A differenza di quest'ultima però, da mobile non è ancora possibile navigare tra i propri documenti, ma è disponibile un servizio di messaggistica completo. Oltre alla crittografia end-to-end infatti sarà possibile raggiungere una determinata persona attraverso lo username di uno qualsiasi dei suoi profili social collegati, senza dover inserire nè email nè numero di telefono. Inoltre, per una maggior sicurezza, essendo lo smartphone uno strumento più soggetto a furti rispetto ad un pc, la passphrase verrà richiesta ad ogni apertura dell'applicazione. L'altra grande novità arriva sotto forma di estensione per Chrome e permette di effettuare chat private e cifrate con gli utenti Keybase direttamente dai loro profili social. Infatti, una volta installata, su ogni profilo Facebook, Twitter, Reddit, Hacker News e tutti quelli supportati dalla piattaforma, sarà disponibile un tasto blu che permettereà di iniziare una chat con quella persona. Nel caso quest'ultima non fosse iscritta a Keybase, sarà comunque possibile inviarle messaggi cifrati, facendo notare al destinatario che sarà necessario iscriversi al portale per poterli leggere. Sulla documentazione ufficiale è disponibile inoltre una piccola sezione F.A.Q. che ne descrive in breve il funzionamento, puntualizzando che Keybase non è in grado di leggere i messaggi inviati poichè cifrati end-to-end (il che assicura che i messaggi inviati possano essere letti solo da te e dalla persona con cui stai comunicando) e descrivendone la sicurezza trattandosi semplicemente di un'estensione che delega la cifratura e l'invio del messaggio all'app installata sul pc. 

[TaskerTime] Gestione automatica della geolocalizzazione

Android dispone di tre modalità di Geolocalizzazione, a Basso Consumo, che utilizza solo la rete internet, solo GPS e ad Alta Precisione che utilizza entrambe le tecnologie. Ovviamente "maggior precisione" implica un maggior consumo di batteria, di conseguenza tendiamo a disattivare totalmente la Geolocalizzazione quando non ne abbiamo bisogno (Android tra l'altro, dalla versione 6.0 ha introdotto un comodissimo tile nel pannello notifiche per far questo). Così facendo però perdiamo qualsiasi informazione legata alla nostra posizione, come può essere il meteo, le notifiche di Google riguardanti il traffico, a volte addirittura il conteggio dei passi e dei tragitti che facciamo. La soluzione potrebbe essere quindi quella di impostarne la modalità manualmente di volta in volta, ad esempio attivando la modalità ad alta precisione quando utilizziamo Google Maps e impostando quella a basso consumo altrimenti. Soluzione però che ci costa qualche tap in più e risulta decisamente scomoda. E se vi dicessi che tutto questo è facilmente automatizzabile con Tasker? Ebbene sì, il tutorial di oggi parlerà proprio di come automatizzare la precisione del sistema di Geolocalizzazione di Android in modo da impostarne un comportamento personalizzato per-app. Per quasi un anno ho utilizzato il plugin per Tasker Secure Settings che permette di modificare determinate impostazioni di sistema grazie ai permessi di root. Solo ultimamente ho approfondito un altro plugin, AutoTools che, tra le altre cose, permette di modificare queste impostazioni senza root, previo un piccolo comando via ADB per fornirne i permessi sufficienti. Innanzitutto avremo bisogno quindi sia di Tasker che del plugin AutoTools. Una volta installato quest'ultimo dovremo fornirgli i permessi via ADB. Per fare questo dovremo prima abilitare questa interfaccia, acronimo di Android Debug Bridge, che permette di collegarsial dispositivo Android da PC via riga di comando, seguendo questi passaggi: abilitare il Menù Sviluppatore toccando ripetutamente la voce Numero Build (Build Number) nella pagina Impostazioni -> Informazioni Dispositivo abilitare il Debug USB dal Menù Sviluppatore appena sbloccato raggiungibile dalle Impostazioni installare ADB sul proprio PC A questo punto sarà sufficiente collegare il dispositivo al PC e digitare il comando adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS dalla shell. [ Maggiori informazioni sono disponibili alla pagina ufficiale dedicata ai permessi di AutoTools ] Passiamo ora al task vero e proprio che di per se è molto semplice. L'obiettivo è quello di collegare un'azione che modifica la precisione del GPS ad un evento di tipo Applicazione come è possibile vedere nell'immagine seguente. Per quanto riguarda l'utilizzo di plugin in Tasker il procedimento è tale e quale l'inserimento di un'azione "standard", la cui configurazione sarà delegata al plugin. Nel nostro caso avremo bisogno di un'attività di tipo AutoTools Secure Settings in cui imposteremo la Geolocalizzazione ad alta precisione come task in ingresso per il nostro evento e a basso consumo in uscita. Nell'esempio riportato avrete notato anche la presenza di azioni aggiuntive non trattate fin'ora. Si tratta di un'opzione che trovo molto comoda e che permette di modificare il timeout del display impostandolo a mezz'ora all'apertura delle applicazioni impostate e ripristinandolo a un minuto all'uscita da queste, in modo da non dover continuamente preoccuparmi di toccare lo schermo per mantenerlo attivo.

Git, GPG e la firma dei Commit

Qualsiasi hosting per repository Git, che sia GitHub, GitLab, Bitbucket o altro, richiede l'inserimento di una password o la presenza di una chiave - se si usa SSH - al momento del push di qualsiasi modifica effettuata. Ma allora perchè dovrei addirittura firmare i miei commit con una chiave PGP? Di fatto, una persona con sufficienti privilegi è in grado di modificare qualsiasi commit o, addirittura, compromettere il nostro account ed effettuare modifiche a nostro nome. In questi casi la certezza assoluta - a meno che non sia il nostro PC ad essere compromesso [1] - si ha solo attraverso la firma dei commit effettuati. Se pensate che tutto ciò sia un po' da paranoici probabilmente avete ragione, ma vi consiglio di dare una lettura a questa Git Horror Story scritta da Mike Gerwitz. Detto questo vediamo ora come firmare i nostri commit di Git utilizzando gpg (o gpg2), presenti nei repository ufficiali di Debian e Ubuntu. Per chi non avesse mai utilizzato uno di questi due tool sarà necessario prima di tutto generare una nuova coppia di chiavi attraverso il comando gpg2 --gen-key. Il programma chiederà dunque di inserire il vostro nome reale, l'email a cui associare le nuove chiavi e una passphrase che verrà richiesta al momento dell'utilizzo della chiave. È importante assicurarsi che l'indirizzo email inserito sia lo stesso con cui siete iscritti al servizio online - ad esempio GitHub - in caso contrario i vostri commit non verranno considerati verificati sulla piattaforma. Una volta generate dovreste ottenere una schermata simile a quella qui sopra. Utilizziamo quindi l'ID della coppia appena generata (gli ultimi 8 caratteri), nel nostro caso ECD810FF, per esportare la chiave pubblica attraverso il comando gpg2 --armor --export ECD810FF e copiamo tutto il blocco di testo risultante, comprese le righe contententi -----BEGIN PGP PUBLIC KEY BLOCK----- e -----END PGP PUBLIC KEY BLOCK-----. Restano soltanto due passaggi per ultimare il procedimento, il caricamento della chiave sul nostro profilo GitHub e la configurazione locale di Git. Per quanto riguarda il primo passo basterà accedere a GitHub e inserire una nuova chiave GPG in Settings > SSH and GPG keys. Passiamo ora alla configurazione di Git. Ci serviremo dell'ID della chiave per specificare a Git quale utilizzare per firmare i commit attraverso il comando git config --global user.signingkey ECD810FF. Per firmare il commit sarà quindi sufficiente aggiungere il parametro -S a git commit, ad esempio git commit -S -m "Woah! A signed commit!". N.B. Nel caso in cui dovessimo ricevere un errore del tipo  gpg: saltato "ECD810FF": la chiave segreta non è disponibilegpg: signing failed: la chiave segreta non è disponibileerror: gpg non è riuscito a firmare i datifatal: scrittura dell'oggetto di commit non riuscita Sarà necessario specificare il programma per la gestione delle chiavi attraverso il comando git config --global gpg.program "gpg2" (sostituendo gpg2 con il tool utilizzato). Allo stesso modo per firmare tag e release sarà sufficiente utilizzare il comando git tag -s nometag. Chiaramente è possibile verificare le firme attraverso il parametro -v per i tag e --show-signature per i commit. git log --show-signature ci mostrerà quindi la history del repository mettendo in risalto i commit firmati. È inoltre possibile effettuare merge "controllati" attraverso il parametro --verify-signatures, vale a dire che il comando git merge --verify-signatures verrà eseguito solo se tutte le modifiche risulteranno firmate.  Infine possiamo rendere totalmente automatica la procedura per la firma di commit e tag , in modo da poterci dimenticare di aggiungere i parametri -S e -s nei comandi. Per far questo basterà aggiungere un'ulteriore configurazione a Git attraverso il comando git config --global commit.gpgsign true. [Screenshot e comandi per la guida sono stati effettuati su una repository di test raggiungibile qui] [1] In questo caso non avete altra scelta che piallare il PC e stare più attenti la prossima volta.

[TaskerTime] Modalità Silenziosa Ad Hoc

In uno degli ultimi articoli abbiamo parlato di come possiamo disabilitare la modalità silenziosa durante le chiamate. Oggi vedremo come attivare la modalità silenziosa quando lo schermo dello smartphone è acceso e disattivarla quando è spento. In questo modo il telefono eviterà di vibrare o suonare mentre lo stiamo usando.  Come prima cosa,  aggiungiamo l'evento Display Off e, come nuova attività, Do Not Disturb - Tutti, la quale consentirà al telefono di suonare. Allo stesso modo, l'opzione Display On in modalità Do Not Disturb - Alarms, non permetterà al telefono di emettere alcun suono quando lo schermo è acceso. Questa configurazione presenta però una criticità: alla ricezione di una chiamata consegue l'accensione dello schermo, la quale, attivando la modalità silenziosa, comporta, in caso di non utilizzo del telefono, la possibile perdita della chiamata stessa. Per questo motivo sarà necessario aggiungere un'ulteriore condizione che non attiverà la modalità silenziosa alla ricezione di una chiamata. Come prima cosa, inizializziamo una variabile (che ho chiamato Call) dal menù Vars a 0. Aggiungiamo quindi lo stato Chiama - In Entrata, impostando la variabile %Call a 1 e attivando la modalità Do Not Disturb - Priorità. Inseriamo come Attività in Uscita Imposta %Call a 0 e Do Not Disturb - Alarms. Per finire, modifichiamo l'evento Display On, inserendo come condizione l'attivazione della modalità Do Not Disturb - Alarms solo se la variabile %Call è diversa da 1.  

Ubuntu, il miglior modo per passare a Linux

Chi ha già dimestichezza con il mondo Linux oppure ha già una buona conoscenza di questo mondo darà per scontato alcuni dei prossimi passi che sono però necessari a chi invece non conosce affatto Linux e il suo meraviglioso mondo. Iniziamo spiegando cos'è Linux. In molti lo definiscono erroneamente un sistema operativo o una famiglia di sistemi operativi, così non è. Linux è un componente del sistema operativo, il kernel ovvero il nucleo del sistema operativo, che ha il completo controllo del sistema. Questa è una definizione molto semplificata delle funzioni di un kernel, che per essere spiegate appieno bisognerebbe dedicarci almeno un articolo a se stante.  Questo kernel è l'elemento base costituente tutte le distribuzioni Linux. La domanda che potrebbe sorgere succesivamente potrebbe essere: "cos'è una distribuzione?". In ambito informatico per distribuzione software si intende un certo numero di programmi che vengono distribuiti in un singolo insieme che nel nostro caso è un sistema operativo.  Per ricapitolare, Linux è un kernel utilizzato da numerosi sistemi operativi, tra cui quello che esamineremo oggi, Ubuntu. Questa distribuzione sviluppata da Canonical è tra le più utilizzate al mondo, anche se mancano dati certi. I fattori che hanno portato al successo il prodotto di Canonical sono molteplici ma ne vorrei identificare due che a mio parere gli hanno permesso di guadagnarsi una larga fetta di pubblico. Il primo è la facilità di utilizzo, specie alcuni anni fa avere un tool grafico per l'installazione non era cosa comune, cosa che avvicinava gli utenti meno "skillati". Inoltre l'interfaccia grafica, basata inizialmente su GNOME e successivamente sul progetto proprietario Unity è chiara ed intuitiva, permettendo di gestire praticamente tutto con un click del mouse, quasi dimenticandosi del terminale. Non a caso il motto di Ubuntu è “Ubuntu: Linux per esseri umani”. Il secondo motivo è l'enorme supporto della community che è il fattore determinante che la distingue rispetto ad altre distribuzioni. Se avete un problema di qualsiasi natura potrete entrare nel forum di Ubuntu trovando praticamente sempre qualcuno disposto a darvi una mano.  Ulteriore motivo che ha permesso una grande espansione di Ubuntu è l’essere una derivata di Debian. Ma cos’è Debian? Debian è una delle distribuzioni più “anziane” in circolazione, nata nel 1993, è composta esclusivamente da software open source. Nel 2004, Mark Shuttleworth ed il suo team di programmatori diedero il via al progetto Ubuntu forkando Debian. Da quella prima versione sono passati parecchi anni e Canonical ha sviluppato il suo sistema operativo rispettando sempre questi canoni, la libertà del software e la facilità d’uso. L’ultima versione di Ubuntu è la 17.04 nome in codice Zesty Zapus. Una particolarità che caratterizza il sistema è la gestione delle nuove versioni e dei relativi nomi. Viene rilasciata una nuova versione ogni sei mesi, tipicamente ad Aprile ed Ottobre. Il numero riportato nel nome della versione indica l’anno e il mese di rilascio (04 per la versione rilasciata in aprile e 10 per quella rilasciata in ottobre) che viene accompagnato da un nome in codice composto da due parole che iniziano con la stessa lettera dell’alfabeto. Quindi una volta installata la vostra Zesty Zapus avrete un sistema già pronto per essere usato, quanto meno nelle sue funzioni base. Saranno presenti vari programmi preinstallati come il browser Firefox, la suite per l'ufficio Libre Office, il ripruoduttore multimediale VLC e altri numerosi software. Questo permetterà all'utente di essere operativo da subito potendo in seguito completare e personalizzare l'installazione installando tutto ciò di cui a bisogno tramite il software center o quando avrete più dimestichezza attraverso il terminale. Inutile dire che il primo approccio per chi proviene da Windows e magari non ha dimestichezza con il PC potrebbe essere complicato, vi posso però assicurare che è solo questione di tempo entro una settimana (o anche meno dipende da persona a persona) inizierete ad ambientarvi e se sarete curiosi scoprirete un mondo davvero affascinante. In chiusura è giusto citare le distribuzioni derivate da Ubuntu, ovvero quelle distribuzioni che sono nate tramite lo stesso procedimento utilizzato da Ubuntu. Questi sistemi sono sviluppati da team indipendenti che apportano alcune modifiche al codice dando vita a distribuzioni a se stanti con le loro particolarità. In futuro faremo un focus sulle derivate di Ubuntu. "Microsoft ha la fetta più grossa del mercato dei nuovi PC desktop. Questo è un bug, e Ubuntu è concepito per risolverlo." - Mark Shuttleworth

[TaskerTime] Forzare la connessione ad una determinata rete WiFi

Con questo articolo diamo il via a Tasker Time, una nuova rubrica completamente dedicata a Tasker, con l'obiettivo di condividere i task più utili che daranno una marcia in più al vostro dispositivo o che vi faranno rimpiangere di aver comprato un iPhone! Scherzi a parte, pubblicheremo delle guide al fine di mostrare le potenzialità di quest'app tuttofare sfruttandola al meglio per automatizzare quelle piccole azioni quotidiane che siamo costretti a fare come accendere e spegnere WiFi e Geolocalizzazione, regolare il volume di musica e notifiche e molto altro. Può capitare di avere la necessità che il nostro dispositivo rimanga connesso ad una determinata rete WiFi anche in condizioni che lo rendono difficoltoso. Un esempio potrebbe essere una particolare stanza della nostra casa dove la rete domestica viene ritenuta troppo debole da Android che quindi decide di usare la rete dati, piuttosto che la presenza di più WiFi note e il bisogno di essere collegati ad una di queste in particolare e non alle altre. Un po' come accade a casa mia, dove ho due reti WiFi, una proveniente da un modem vecchissimo che supporta un solo dispositivo connesso e poi quella generata da un router secondario collegato a cascata con il primo. Chiaramente sul mio dispositivo ho registrato entrambe le reti, ma preferisco sempre utilizzare la seconda perchè più veloce e meno limitante (si perchè il telefono si connette comunque alla prima anche se già "occupata", ma non naviga). La soluzione, che fa uso di Tasker e di un suo plugin, AutoTools, si compone di tre parti: Ricerca di una determinata rete nei dintorni Collegamento a quella rete Forzare la connessione alla rete voluta anche se già connessi ad un'altra L'obiettivo finale si può tradurre come "Se non sono connesso alla rete X, che però è presente nei dintorni, connettimi alla rete X". Cominciamo con la ricerca delle rete desiderata. Avremo bisogno quindi di un Profilo di tipo Stato che andremo a impostare seguendo Rete > WIFI Vicini > SSID desiderato. A questo stato colleghiamo la variabile %Casa impostata 1, che azzereremo con un Task all'uscita. Per quanto riguarda la parte del "se non sono connesso allora connettimi" avremo bisogno di un altro Stato relativo sempre alle attività di Rete, impostato questa volta a "Non collegato alla rete X". Per farlo è sufficiente impostare prima Rete  > WIFI Collegato > SSID desiderato e spuntare l'opzione Inverti. Come risposta a questo stato, grazie ad AutoTools imposteremo la connessione alla nostra rete wireless. Infine, per collegare i due Stati appena creati, sarà necessario aggiungere al secondo una condizione in cui controlleremo che la variabile %Casa sia impostata a 1. Di seguito potete trovare un video in cui sono riportati tutti i passaggi appena descritti.