Pourquoi j’utilise Gopass tous les jours ou my DayToDay dev tools.

Stephane Journiac
ekino-france
8 min readJun 4, 2024

--

(read english version below)

De nos jours, il est vital d’utiliser un outil de gestion de mot de passe et il existe pléthore d’applications gratuites ou payantes.

Au-delà du fait de vouloir confier ses secrets à un intervenant tier, il existe des alternatives gratuites et Open Source qui permettent de gérer soi même ses mots de passe. Je vais vous présenter une des solutions que j’utilise depuis quelques années.

Partie 1 : Qu’est-ce que Gopass et comment fonctionne-t-il ?

Gopass est un gestionnaire de mots de passe open-source qui permet de stocker vos mots de passe de manière sécurisée en utilisant un cryptage fort.

Gopass utilise le système de cryptage standard du gestionnaire de mots de passe open source “pass”, sur lequel il est basé. Pass utilise la cryptographie asymétrique pour chiffrer les mots de passe stockés. Il utilise la bibliothèque de cryptographie OpenPGP (Pretty Good Privacy) pour gérer les clés de chiffrement et les opérations de cryptographie.

Echange entre 2 utilisateurs d’un document chiffré

Lorsque vous utilisez Gopass, vos mots de passe sont chiffrés à l’aide de votre clé GPG (GNU Privacy Guard) publique. Cette clé publique est associée à une clé privée qui vous appartient et est protégée par un mot de passe. Lorsque vous avez besoin d’accéder à vos mots de passe, Gopass déchiffre les informations en utilisant votre clé privée.

Il est important de noter que la sécurité de vos mots de passe dépend de la protection de votre clé privée GPG. Assurez-vous de choisir un mot de passe fort et de prendre les mesures nécessaires pour protéger votre clé privée, par exemple en la stockant dans un emplacement sécurisé sur votre système ou en ayant un backup sur une clé usb que vous gardez bien au chaud dans un endroit secret.

Partie 2 : Installation

Gopass a besoin de gpg et git pour fonctionner.

Via homebrew :

> brew install gnupg2 git gopass

Ensuite il faut générer une paire de clés GPG (GNU Privacy Guard) :

> gpg --full-generate-key

Répondez aux questions afin de finaliser la création de votre clé.

gpg (GnuPG) 2.4.0; Copyright © 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Sélectionnez le type de clef désiré :
(1) RSA and RSA
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(9) ECC (sign and encrypt) *default*
(10) ECC (signature seule)
(14) Existing key from card
Quel est votre choix ?

On peut enfin lancer la command “gopass” dans son CLI et suivre les indications pour configurer son premier store.

Pour plus de détails sur les options d’installation -> Gopass setup

Partie 3 : Les fonctionnalités de gopass que j’adore.

Stockage centralisé

Gopass vous permet de stocker tous vos mots de passe de manière centralisée, ce qui facilite la gestion et l’organisation de vos informations d’identification. On peut aussi décider de configurer un repo git distant ce qui permet de retrouver ses mots de passe sur toutes vos machine Windows, macOS et Linux de façon transparente.

Exemple :

Création d’un nouveau store et envoi vers un référentiel Git vide

> gopass --yes setup --remote github.com/example/pass.git --alias example --create --name “John Doe” --email “john.doe@example.com”

Pour chaque membre de l’équipe, création du store et clone du référentiel git distant.

> gopass --yes setup --remote github.com/example/pass.git --alias example --name “Jane Doe” --email “jane.doe@example.com”

Génération de mots de passe forts

Gopass dispose d’un générateur de mots de passe intégré qui vous permet de créer des mots de passe forts et aléatoires pour renforcer la sécurité de vos comptes en ligne.

Exemple pour le site “golang.org” et l’utilisateur “gopher” :

> gopass generate golang.org/gopher

Plusieurs types de génération sont possibles (cryptic, memorable, xkcd or external) cryptic par défaut.

> gopass pwgen --xkcd --one-per-line
jackknife powdery flavorful strained
deepness unhealthy amino syrup
camera fedora gem movable
had bulb ducking smokiness
discharge deforest sudoku overcast
perplexed primal skyward unkind
tainted creatable radiantly footpad
boogieman catalog duo gas
sandal collapse cabbage policy
activity roundup bankbook entrench

On peut aussi laisser gopass vérifier les mots de passes contenus dans un store :

> gopass audit
Detected weak secret for ‘golang.org/gopher’: Password is too short

Partage sécurisé des mots de passe

Gopass vous permet de partager des mots de passe de manière sécurisée avec d’autres membres de votre équipe ou de votre organisation, facilitant ainsi la collaboration sur les projets.

La clé gpg public de l’utilisateur est utilisée afin de chiffrer à nouveau la totalité du store cible.

Exemple :

> gpg --import user-public.gpg
> gopass recipients add --store=foo GPGxID
gopass sync --store=foo

De la même manière on peut révoquer un utilisateur

gopass recipients remove

Intégration avec les outils de ligne de commande

Gopass s’intègre parfaitement avec les outils de ligne de commande couramment utilisés, ce qui vous permet d’automatiser des tâches liées aux mots de passe et d’améliorer votre flux de travail.

exemple :

Récupérer un coffre-fort de secrets pour ansible

gopass project_store/secret > .secret

Pour les réfractaires du CLI, il existe des interfaces pour gopass comme gopass-ui ou des plugins navigateur pour Firefox ou Chrome qui reprennent les fonctions de base de création et de remplissage de login. cf la liste complète ici

Open source et communauté active

Gopass est un logiciel open source, ce qui signifie que vous pouvez examiner son code source et le personnaliser selon vos besoins. De plus, il bénéficie d’une communauté active qui contribue à son développement et à son amélioration continue.

Conclusion

J’espère vous avoir donner envie d’essayer gopass et si c’est le cas, ça se passe ici

—== English version == —

Why do I use Gopass every day or my day-to-day development tools?

Nowadays, it is vital to use a password management tool, and there are plenty of free or paid applications available. Beyond the desire to entrust one’s secrets to a third party, there are free and open-source alternatives that allow you to manage your passwords yourself. I will now introduce one of these solutions that I have been using for a few years.

Part 1: What is Gopass and how does it work?

Gopass enables you to securely store your passwords using strong encryption. It is built upon the open-source password manager “pass” and utilizes its standard encryption system. Pass uses asymmetric cryptography to encrypt stored passwords. It relies on the OpenPGP (Pretty Good Privacy) cryptography library to handle encryption keys and cryptographic operations.

exchange an encrypted document securely between two users

When using Gopass, your passwords are encrypted using your public GPG (GNU Privacy Guard) key. This public key is associated with a private key that belongs to you and is protected by a password. When you need to access your passwords, Gopass decrypts the information using your private key.

It is important to note that the security of your passwords depends on protecting your GPG private key. Make sure to choose a strong password and take necessary measures to secure your private key, such as storing it in a secure location on your system or keeping a backup on a USB drive you store safely in a secret place.

Part 2: Installation

Gopass requires gpg and git to function. You can install Gopass via Homebrew

> brew install gnupg2 git gopass

Next, you need to generate a GPG key:

> gpg --full-generate-key

Answer the questions to finalize the creation of your key.

ggpg (GnuPG) 2.4.0; Copyright © 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Sélectionnez le type de clef désiré :
(1) RSA and RSA
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(9) ECC (sign and encrypt) *default*
(10) ECC (signature seule)
(14) Existing key from card
Quel est votre choix ?

Finally, you can launch the “gopass” command in your CLI and follow the prompts to set up your first store. For more details on installation options, please refer to “Gopass setup.”

Part 3: The features of Gopass that I love.

Centralized Storage

Gopass allows you to store all your passwords in a centralized manner, making it easy to manage and organize your credentials. You can also configure a remote Git repository, enabling seamless access to your passwords across all your Windows, macOS, and Linux machines.

Example:

Initializing a new store and pushing it to an empty Git repository.

> gopass --yes setup --remote github.com/example/pass.git --alias example --create --name "John Doe" --email "john.doe@example.com"

For each team member, create a store and clone the remote Git repository.

> gopass --yes setup --remote github.com/example/pass.git --alias example --name "Jane Doe" --email "jane.doe@example.com"

Generating strong passwords

Gopass has a built-in password generator that allows you to create strong and random passwords to enhance the security of your online accounts.

Example for the website “golang.org” and the username “gopher”:

> gopass generate golang.org/gopher

Multiple types of generation are possible (cryptic, memorable, xkcd, or external), with “cryptic” being the default option.

> gopass pwgen --xkcd --one-per-line
jackknife powdery flavorful strained
deepness unhealthy amino syrup
camera fedora gem movable
had bulb ducking smokiness
discharge deforest sudoku overcast
perplexed primal skyward unkind
tainted creatable radiantly footpad
boogieman catalog duo gas
sandal collapse cabbage policy
activity roundup bankbook entrench

You can also let Gopass audit the passwords contained in a store.

> gopass audit
Detected weak secret for 'golang.org/gopher': Password is too short

Secure password sharing

Gopass allows you to securely share passwords with other members of your team or organization, enabling easy collaboration on projects. The recipient’s public GPG key is used to re-encrypt the entire target store.

Example:

> gpg --import user-public.gpg
> gopass recipients add --store=foo GPGxID
> gopass sync --store=foo

Similarly, you can revoke access for a user.

> gopass recipients remove

Integration with command-line tools

Gopass seamlessly integrates with commonly used command-line tools, allowing you to automate password-related tasks and improve your workflow.

Example: Retrieving a secret vault for Ansible.

gopass project_store/secret > .secret

For those resistant to using the CLI, there are interfaces available for Gopass such as gopass-ui or browser plugins for Firefox or Chrome that provide basic functions for creating and filling login credentials. You can find the complete list of interfaces here.

Open source and active community

Gopass is an open-source software, which means you can review its source code and customize it according to your needs. Additionally, it benefits from an active community that contributes to its development and continuous improvement.

Conclusion

I hope I have sparked your interest in trying out Gopass. If you’re ready to get started, you can find it here.

--

--