+++
title = "Gestisci le tue password con password-store."
author = "Danilo M."
type = "tech"
date = "2021-05-27T15:08:05+00:00"
excerpt = "Vi farò vedere come gestire in sicurezza tutte le vostre password con password-store"
image = "/uppies/2021/05/vault-door1.jpg"
categories = [ "CyberSecurity", "Blogging", "DIY"]
tags = ["password-store", "gnupg", "android", "password", "git", "management", "bash"]

+++
Ciao a tutti,

di recente ho deciso di non utilizzare più il gestore di password offerto dalla maggior parte dei browser moderni, ma di provare a gestire tutte le mie password utilizzando un software open source, in modo da avere un maggiore controllo sulle stesse.

Ho deciso di scrivere questo articolo dopo aver letto [un post sul blog di AlienBob](https://alien.slackbook.org/blog/sync-and-share-your-chromium-and-more-browser-data-among-all-your-computers/), in cui si parla di KeepassXC, e dato che lo sto utilizzando, volevo fornire un'alternativa valida ad alcuni aspetti negativi che ho riscontrato durante il suo utilizzo.

Il primo approccio che ho provato, come dicevo, è stato quello di utilizzare [KeepassXC](https://keepassxc.org/), citando il loro sito web:

> **KeePassXC – Gestore di password multipiattaforma**
>
> Non dimenticare mai più una password. Archivia in modo sicuro le password utilizzando una crittografia standard del settore, digita rapidamente le password nelle applicazioni desktop e utilizza la nostra estensione per browser per accedere ai siti web.
>
> — [KeepassXC website](https://keepassxc.org/)

In pratica, ho installato keepassXC sul mio Slackware64-current, ho esportato tutte le mie password dal mio browser principale, le ho salvate come file CSV e le ho importate in keepassXC. Ora devo ricordare solo una password per accedere al mio database e posso installare l'estensione per browser per Chromium (o Firefox) per avere tutte le mie password facilmente accessibili. Ottimo!!

Per condividere le mie password tra i miei dispositivi, ho semplicemente creato un repository Git privato sul mio server e ho sincronizzato il database delle password con esso. Successivamente, ho installato [KeePassDroid](https://github.com/bpellin/keepassdroid), che è un'implementazione Android di keepassXC.

Dato che keepassdroid non si sincronizza automaticamente da un server remoto, ho dovuto utilizzare Git sul mio telefono per effettuare l'upload/download verso il mio server remoto, in modo da mantenere aggiornato il database delle password, e anche se non è un grosso problema, non ero del tutto soddisfatto del mio flusso di lavoro per le password, quindi, pur continuando a utilizzare questo approccio, stavo cercando alternative.

<!--more-->

## Scopriamo password-store

Mi sono imbattuto in [password-store](https://www.passwordstore.org), che si dichiara essere il gestore di password standard per Unix.

Il suo funzionamento è semplice, ma a mio parere anche brillante: ogni password è conservata in modo sicuro in un file di testo crittografato con GPG all'interno di una struttura di directory nota. Il file stesso, così come la directory che lo contiene, può avere la convenzione di denominazione che si desidera, e tutto può essere manipolato con gli strumenti Unix standard (cp, mv, rm, ecc.). La regola del {{< acronym title="Keep It Simple, Stupid" >}}KISS{{< /acronym >}}, non è vero?!

Ecco come si presenta, una visualizzazione ad albero standard dalla shell:

```bash
.password-store/
[...]
├── facebook/
│   └── facebook-username
├── twitter/
│   └── twitter-username
├── www.instagram.com/
│   └── instagram-username
[...]
```

In questo esempio, "facebook" è una directory che contiene un file di testo crittografato con GPG denominato "facebook-username". In quel file è scritta la mia password per quell'utente su Facebook. Abbastanza semplice.

Il punto di forza del programma "pass" è che include anche sottocomandi Git, quindi puoi usarlo per sincronizzare il tuo database di password con un server remoto. Ecco come funziona:

La prima cosa da fare è creare un repository remoto sul tuo server Git. Ci sono un milione di modi per farlo e dipende dal tuo provider Git. Se vuoi ospitare un server Git, ho una guida su questo sito, [dagli un'occhiata](../git-setup-own-server/).

Dopo aver creato il repository remoto, devi clonarlo in `~/.password-store`, la directory predefinita in cui "pass" memorizzerà tutte le tue credenziali, e per farlo dovrai digitare:

```bash
git clone myserver.com:git-repository ~/.password-store
```

Supponendo che tu abbia già una coppia di chiavi GPG per johndoe@youremailaddress.com, dovrai inizializzare il repository delle password in questo modo:

```bash
pass init johndoe@youremailaddress.com
```

Ora "pass" utilizzerà la coppia di chiavi GPG per quell'indirizzo email quando crittograferà e decrittograferà le tue password. Dato che riconosce anche quando la directory è una copia locale di un repository Git, dopo aver inizializzato con il comando precedente, ha creato un commit pronto per essere inviato, quindi tutto ciò che devi fare è:

```bash
cd ~/.password-store && git push
# or you can use pass internal git capabilities with:
pass git push
```

e il tuo database di password sarà sincronizzato.

Da quel momento puoi semplicemente invocare "pass" per visualizzare tutte le tue password, puoi cercare nel tuo database, aggiungere o rimuovere password, modificarle, ecc. Per maggiori informazioni, puoi consultare il manuale, dove troverai anche esempi avanzati su come utilizzare Git con "pass".

Sul mio telefono Android, ho installato la versione mobile di [Password Store](https://play.google.com/store/apps/details?id=dev.msfjarvis.aps), ho configurato la mia chiave SSH in modo da poter effettuare l'upload/download dal mio server Git e ora ho tutte le mie password sincronizzate anche sul mio dispositivo mobile.

## Sul telefono

Il processo per installare "password-store" sul telefono è un po' complicato, ma non è particolarmente difficile. Le due app di cui abbiamo bisogno sono:

  * [Password-store](https://play.google.com/store/apps/details?id=dev.msfjarvis.aps)
  * [OpenKeyChain](https://play.google.com/store/apps/details?id=org.sufficientlysecure.keychain)

Dopo aver installato entrambe le app, dobbiamo andare sul nostro computer ed esportare le nostre chiavi GPG pubbliche e private in modo da poterle importare in OpenKeyChain. Per farlo, dobbiamo andare nel terminale e digitare:

```bash
gpg --export-secret-keys --armor johndoe@youremailaddress.com > private.asc
gpg --export --armor johndoe@youremailaddress.com > public.asc
```

ora abbiamo sia la nostra chiave privata che quella pubblica memorizzate in un file, che possiamo trasferire sul telefono e importare in OpenKeyChain. Ho prima importato la chiave privata e poi quella pubblica, e durante l'importazione di quest'ultima, OpenKeyChain ha confermato che la chiave è stata aggiornata, quindi entrambe sono essenzialmente sulla stessa coppia di chiavi.

Un'importante nota riguardante Git: a seconda di come è configurato il tuo repository Git, potrebbe essere necessario importare la tua chiave SSH in "password-store" sul tuo telefono in modo da poter accedere al repository. Questo è molto semplice, in quanto l'app ti chiederà la configurazione di Git la prima volta che la apri.

Una volta configurato l'accesso a Git, ti chiederà di consentire a OpenKeyChain di gestire la tua coppia di chiavi GPG ogni volta che utilizzi "password-store", e questo è tutto! Ora hai le tue password archiviate in modo sicuro tramite GnuPG e sincronizzate tra i tuoi dispositivi con Git.

## Nota aggiuntiva

"password-store" è un programma a riga di comando a cui puoi accedere tramite il suo comando `pass`, ma esistono anche interfacce grafiche per accedervi.

Una di queste è [qtpass](https://qtpass.org/), che dovresti trovare nella maggior parte delle distribuzioni. Su Slackware, l'ho trovata su [SBo](https://slackbuilds.org/repository/14.2/desktop/qtpass/?search=qtpass) e l'ho compilata senza problemi. Funziona molto bene, ti consente di manipolare il tuo repository di password da un'interfaccia grafica, esegue operazioni di upload/download su Git e semplifica la creazione di password complesse quando ne hai bisogno. Un consiglio: se installi questa configurazione su Raspbian, ricorda di installare uno dei programmi "pinentry" per poter inserire la tua chiave quando non sei nel terminale.

Spero che questo articolo ti sia utile. Ricorda di lasciarmi un [messaggio][1] se hai bisogno di aiuto e sarò felice di aiutarti al meglio delle mie capacità.

Saluti!!

[1]: ../../is/here/