criptolibretto/book.md

393 lines
14 KiB
Markdown
Raw Normal View History

2018-04-19 12:56:20 +02:00
---
title: "Cripto libretto"
author: Unit hacklab - unit@paranoici.org
2019-01-13 05:08:15 +01:00
date: 12 Gennaio 2019
2018-04-19 12:56:20 +02:00
---
# Per una corretta igiene digitale
2019-01-13 05:08:15 +01:00
# Usiamo software libero e a sorgente aperta
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
https://gnu.org/philosophy/free-sw.it.html
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
# Una buona password
2018-04-19 12:56:20 +02:00
Non usare la stessa password per diversi servizi
Usa una passphrase, ossia una frase di accesso compresa di spazi, facile da ricordare, ma
difficile da indovinare persino per un computer, ad esempio questa contiene sia maiuscole
2019-01-13 05:08:15 +01:00
che numeri, è molto lunga, ma è difficile da dimenticare
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Nel Mezzo Del Cammin Di Nostra Vita 19
2018-04-19 14:02:48 +02:00
2019-01-13 05:08:15 +01:00
# Il password manager
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Le password da ricordare sono troppe, KeePassX è un software per la gestione di password
che offre un luogo sicuro dove scriverle, ma non dimenticare la password principale
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
https://keepassx.org
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
# Accecare la telecamera del portatile
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Attaccare un pezzo di scotch nero da elettricista sulla telecamera del portatile. Il fatto
che non si accenda la lucina non significa che sia spenta
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
# Navigazione consapevole
2018-04-19 12:56:20 +02:00
Usiamo Firefox
2019-01-13 05:08:15 +01:00
La gestione dei containers e dei profili ci permettono di creare ambienti isolati
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Multi-account-containers è un componente aggiuntivo (add-on) per creare schede contenitore
(tab) e compartimentare le preferenze del sito, le sessioni registrate e i dati di
tracciamento. Un sito non avrà dunque accesso ai dati (cookies) delle altre tab aperte.
Questo permette di separare facilmente il lavoro dalla navigazione personale.
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
I Profili sono delle diverse sessioni del browser, per compartimentare anche gli add-on,
si possono aprire scrivendo nella finestra di navigazione:
2018-04-19 12:56:20 +02:00
2018-04-19 14:02:48 +02:00
about:profiles
2018-04-19 12:56:20 +02:00
Add-ons:
2019-01-13 05:08:15 +01:00
* multi-account containers
2018-04-19 14:30:56 +02:00
* https-everywhere: preferisce https a http
* ghostly: blocca i tracker della nostra navigazione
* no script: blocca gli script
* ublock origin: blocca la pubblicità
2019-01-13 05:08:15 +01:00
# Navigazione anonima
2018-04-19 12:56:20 +02:00
Tor, **T**he **O**nion **R**outer è un protocollo per l'anonimizzazione del traffico web.
2019-01-13 05:08:15 +01:00
Scaricare, installare e usare il programma Tor browser bundle per navigare in rete
anonimamente
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
https://torproject.org
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Attenzione. Non presumere che il tutto funzioni per magia. Studia, prova, chiedi
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
# Navigazione paranoica
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Tails è un sistema operativo smemorato, si avvia da penna Usb e una volta spento non
2018-04-19 12:56:20 +02:00
ricorda nulla di quello che è successo. In altre parole usa Tor per navigare in internet
anonimamente e permette di usare un computer in prestito senza doverci installare
2019-01-13 05:08:15 +01:00
nulla. Utile in viaggio in zone pericolose
2018-04-19 12:56:20 +02:00
https://tails.boum.org
2019-01-13 05:08:15 +01:00
# Usare un sistema operativo libero
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Usiamo GNU/Linux, disponibile in diverse distribuzioni. Queste tre distribuzioni sono
elencate per facilità d'uso
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
* Linux Mint: https://linuxmint.com
* Bunsenlabs: https://www.bunsenlabs.org
* Debian: https://www.debian.org
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
## Scaricare e installare una distribuzione GNU/Linux
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Ad esempio Debian. Dal sito individuare e scaricare l'immagine. Mentre scriviamo la
più recente è la 9.6. Per un comune computer moderno usare amd64. Verificare la
checksum e masterizzare l'immagine su di un Cd, Dvd o su una penna Usb da almeno 1GB
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Inserire la penna Usb e scoprire dove è stata montata
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
ls -l /dev/disk/by-id/*usb*
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Nell'esempio che segue la penna è in /dev/sdb, copiarvi Debian:
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
*il contenuto della penna sarà cancellato*
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
dd if=debian-9.6.0-amd64-netinst.iso of=/dev/sdb bs=4M; sync
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Riavviare il Pc dalla penna Usb tenendo premuto F12
*Se il Pc non avvia automaticamente dalla penna, entrare nel Bios e scegliere Usb come
dispositivo d'avvio. A seconda del modello tenere premuto all'avvio uno di questi tasti:
ESC, DEL, F1, F2, F8, F10. Una volta nel Bios, editiamo l'ordine di avvio mettendo per
prima la penna Usb*
Nella procedura di installazione si verrà guidati a scegliere la lingua da usare, la zona
geografica, il nome del Pc, la rete e la creazione dell'utilizzatore. Durante la
partizione guidata formattare l'intero disco senza complicazioni. In conclusione
installare Grub bootloader nel Master Boot Record
*Il disco del Pc verrà formattato e cancellato, non ci saranno altri sistemi operativi
oltre a GNU/Linux Debian. È possibile effettuare al momento dell'installazione scelte
diverse per casi particolari*
*È possibile durante l'installazione crittografare l'intero disco e in questo caso si
dovrà mettere una passhprase ad ogni avvio, in aggiunta a quella di login. Consigliabile
per un portatile, in caso venga smarrito non ci si dovrà preoccupare della perdita dei
dati. Ricordare che senza la passphase non è possibile accedere al disco*
### Migrare la posta di Thunderbird da quel sistema a GNU/Linux
Prima di cominciare fare un backup zippando la cartella di Thunderbird
Poi compattare le cartelle di Thunderbird
Thunderbird: Menu > File > Compact Folders
Infine copiare il profilo da un pc all'altro, che si trova, a seconda, in
Linux: /home/tu/.thunderbird/[profile name]
MacOSX: /Users/tu/Library/Thunderbird/Profiles/[profile name]/
WindowsXP: C:\Documents and Settings\tu\Application Data\Thunderbird\Profiles
Windows7: C:\Users\tu\AppData\Roaming\Thunderbird\Profiles\[profile name]
In caso di problema, far partire thunderbird con profile manager e sistemare:
thunderbird -profilemanager
Se il problema persiste:
Chiudere e riaprire
Controllare i permessi
Verificare il path in ./thunderbird/profiles.ini
nel mac era: Path=Profiles/76gighirz.default
su debian è: Path=76gighirz.default
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Cancellare questi files che comunque si rigenerano da soli
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
compreg.dat
extensions.cache
extensions.ini
extensions.rdf
pluginreg.dat
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
# VeraCrypt, il lucchetto alla penna Usb
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
VeraCrypt è un software che permette di proteggere con una passphrase una penna Usb. Utile
per trasportare dei documenti in viaggio senza preoccuparsi di perderla.
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
*Durante la configurazione la penna verrà formattata e sarà sempre necessario usare
VeraCrypt per montarla e accedere al contenuto*
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
https://veracrypt.fr
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
# GnuPG, la crittografia pesante a doppia chiave
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Gnu Privacy Guard [gnupg.org] è la versione libera del software di crittografia
asimmetrica Pgp, Pretty Good Privacy
Si usa per cifrare, cioè per nascondere il contenuto di un messaggio. E per firmare, cioè
per autenticare un messaggio. Dunque anche per decifrare e per verificare una firma
Il suo scopo è permettere una comunicazione sicura tra persone che non si sono incontrate
di persona e frustrare chi intercetta i messaggi ma non ha la chiave per decifrarli
## Installazione
Si può usare da terminale o con la grafica, in entrambi i casi si vorrà integrarne l'uso
con l'email, dunque *gpg+mutt* o *gpg+enigmail+thunderbird*
Installare GnuPG, il client di posta grafica e il suo plugin (che può gestire Gpg fin
dalla creazione delle chiavi)
apt-get install gnupg thunderbird enigmail
## Configurazione e creazione delle chiavi
2018-04-19 12:56:20 +02:00
gpg --gen-key
2019-01-13 05:08:15 +01:00
oppure
Aprire thunderbird > enigmail
Creare la coppia di chiavi, indicando una email, assegnando una passphrase e specificando
una scadenza. Otterremo una chiave pubblica (pubkey) e una chiave privata (privkey). La
pubkey viene conservata privatamente, la pubkey viene divulgata liberamente
## Uso
* Si usa la propria privkey per firmare un documento o una email
* Si usa la pubkey di qualcun* per verificare la sua firma al messaggio
* Si divulga la propria pubkey perché il nostro corrispondente possa scriverci segretamente
* Si ottiene la pubkey del nostro corrispondente per scrivergli segretamente
* Si usa la propria privkey per decifrare un messaggio a noi indirizzato
* Si usa la pubkey di qualcun* per cifrare un messaggio ad ess* destinato
Solitamente si invia un messaggio segreto sia cifrandolo che firmandolo ed è ragionevole
aspettarsi di ricevere dei messaggi segreti firmati, ma quando non si vuole nascondere
il contenuto ma solo avere la certezza di stare dialogando con la persona giusta, si firma
solo.
*La crittografia a doppia chiave è semplice, ma non è facile. Usarla nel quotidiano
permette di sperimentare e capire attraverso la pratica. Trovare un corrispondente*
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Una guida con infografiche: https://emailselfdefense.fsf.org/it
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
## Verifica
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Ogni coppia di chiavi ha una fingerprint che la identifica univocamente. È buona pratica,
prima di inserire la chiave nella nostra rete di fiducia, chiedere al vostro
corrispondente di leggervi al telefono la sua fingerprint verificando che corrisponda con
quella della pubkey che vi siete scambiat*. E viceversa. Il Gpg è una rete sociale
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
## Fingerprint, revoca e backup
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Ottenere la fingerprint di una chiave
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
gpg --fingerprint [email o Key-ID]
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
È consigliabile creare subito un certificato di revoca delle chiavi
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
gpg -o ~/.gnupg/RevocaCertificato.asc --gen-revoke [fingerprint]
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Fare un backup della cartella nascosta .gnupg da conservare altrove con molta cura
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
tar -zcpf ~/backup-gnupg.tar.gz ~/.gnupg
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
*È possibile usare una penna Usb cifrata con VeraCrypt per contenere il backup di gpg e
altri dati importanti come le mailbox*
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
# Verificare l'integrità di un software scaricato
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Alcuni software sono distribuiti accompagnati dal risultato della somma di controllo
(checksum) oppure da una firma digitale a lato (.sig) e la sua fingerprint
2018-04-19 14:02:48 +02:00
2019-01-13 05:08:15 +01:00
Verificare che la stringa alfanumerica univoca (hash) che risulta applicando l'algoritmo
sha256 coincida con quella pubblicata
2018-04-19 14:02:48 +02:00
2019-01-13 05:08:15 +01:00
openssl sha256 debian-9.6.0-amd64-netinst.iso
c51d84019c3637ae9d12aa6658ea8c613860c776bd84c6a71eaaf765a0dd60fe
2018-04-19 12:56:20 +02:00
2019-01-13 05:08:15 +01:00
Verificare una firma
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
gpg --import VeraCrypt_PGP_public_key.asc
key 821ACD02680D16DE: public key "VeraCrypt Team" imported
(è stato troncato ciò che non interessa all'esempio)
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
gpg --fingerprint VeraCrypt
5069 A233 D55A 0EEB 174A 5FC3 821A CD02 680D 16DE
(coincide con la fingerprint pubblicata sul sito?)
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
gpg --verify veracrypt-1.23-setup.tar.bz2.sig
Good signature from "VeraCrypt Team"
(Bene. Il warning indica solo che la chiave non è stata da noi firmata)
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
*Non è necessario firmare una chiave per usarla. Firmarla serve a ricordare (e nel caso si
usi il web of trust, a dichiararlo al mondo) che ci si fida di quella chiave. È giusto
farlo dopo averla verificata con una telefonata. p.s. non chiamare al telefono Debian,
tantomeno all'ora di cena*
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
# Collegarsi a un pc usando ssh con scambio di chiavi
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
Nella crittografia asimmetrica quando si usa una passphrase per sbloccare una chiave, la
decrittazione avviene in locale, perciò la passphrase non viaggia per internet. Questa
viene chiamata cifratura *end to end* ed è più sicura
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
Creare la coppia di chiavi per collegarsi al pc
2018-04-22 08:08:14 +02:00
2019-01-13 05:08:15 +01:00
ssh-keygen -b 8192 -t rsa -f chiave
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Caricare sul pc la chiave pubblica e rinominarla in ~/.ssh/authorized_keys con i
giusti permessi
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
cat chiave.pub | ssh tu@pc "mkdir -p ~/.ssh && \
chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Avviare ssh-agent e usare la chiave privata
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
eval `ssh-agent` ; ssh-add chiave
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Collegarsi al pc
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
*"tu" è il nome utilizzatore e "pc" è il nome o l'indirizzo IP della macchina remota*
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
ssh tu@pc
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Dopo verifica sarà possibile disabilitare sul pc l'accesso ssh via password
specificando *PasswordAuthentication no* in */etc/ssh/sshd_config*
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
# Self hosting con Nextcloud
Per avere una copia di riserva dei propri dati, sincronizzare una rubrica e un calendario
con un dispositivo mobile e condividere documenti non è obbligatorio usare i servizi
commerciali, i quali non sono gratuiti, ma costano in libertà. Quando i nostri dati
vengono sparpagliati e utilizzati come risorse per creare profitto, subiamo un danno
all'integrità del nostro *mio* digitale. Self hosting significa gestire autonomamente uno
spazio digitale. Si può fare in gruppo e collettivizzare le risorse e i costi. È meno
facile che usare i servizi commerciali.. ma no, è il paragone che non regge. La guida per
fare un orto verticale non deve giustificarsi dicendo che è meno facile che andare al
supermercato
Installare e configurare Nextcloud (con mariadb, apache2, php7, ufw e fail2ban) su una VPS
o un Pc, con già Debian 9
apt-get install curl
curl -sSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh | bash
Conservare le password e seguire le info di post installazione
https://github.com/nextcloud/nextcloudpi/wiki
Se si ha un (sub)dominio a disposizione si può ottenere da LetsEncrypt un certificato SSL
ncp-config
Configurare nextcloud: creare utenti e attivare calendario, rubrica e quel che serve
# Comunicazione sicura dal telefonino
Premessa: consideriamo che gli smartphone sono insicuri per definizione
* **Signal.org** è una app per comunicare privatamente
* **Conversations.im** è una app per comunicare privatamente con protocollo federato
* **lineageos.org** è un sistema operativo per telefonini basato su Android
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Il progetto **Privacy matters on my phone** affronta il discorso privacy per livelli
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
https://unit.abbiamoundominio.org/pmomp.html
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
# Backup incrementale sicuro e remoto con duplicity
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Usando duplicity, ssh e gpg si può crittografare un backup e conservarlo in modo sicuro su
un pc remoto. Attenzione a conservare a parte una copia della chiave gpg che serve
per il recupero
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
apt-get install duplicity
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
In questo esempio avviene un backup della Home, con scambio chiavi ssh, definendo la
chiave gpg da usare per la cifratura, con esclusione della cartella *Downloads*, sul
pc chiamato *pc*, nella directory *backup* dell'utilizzatore con lo stesso nome, in
questo esempio chiamato *tu*
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Nei giorni successivi usare stesso comando per eseguire un backup incrementale
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
duplicity --use-agent --encrypt-sign-key [Key-ID] --exclude ~/Downloads \
$HOME/ sftp://tu@pc//home/tu/backup
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Verificare il backup
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
duplicity verify -v9 sftp://tu@pc//home/tu/backup /home/tu
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Recuperare il backup nella cartella *recupero*
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
mkdir recupero
duplicity sftp://tu@pc//home/tu/backup /home/tu/recupero
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
Esiste un front-end grafico di duplicity, chiamato Deja Dup
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
apt-get install duplicity deja-dup
2018-05-25 16:36:54 +02:00
2019-01-13 05:08:15 +01:00
# Risorse
2018-04-19 12:56:20 +02:00
2018-04-19 14:02:48 +02:00
Liberati dai programmi globali di sorveglianza
2018-04-19 12:56:20 +02:00
https://prism-break.org/it
Autistici/Inventati offre ad attivisti, gruppi e collettivi piattaforme per una
comunicazione più libera e strumenti digitali per l'autodifesa della privacy, come per
2018-04-19 14:02:48 +02:00
esempio email, blog, mailing list, instant messaging e altro.
2018-04-19 12:56:20 +02:00
https://www.autistici.org
2019-01-13 05:08:15 +01:00
# Consigli
2018-04-22 08:08:14 +02:00
Il computer non ha un cervello, usa il tuo.
2018-04-19 12:56:20 +02:00
2018-04-22 08:08:14 +02:00
Non fidarti troppo di chi ti dà consigli.