Pass, the standard Unix password manager

Gepost in Security, Open Source, 2 jaar geleden Leestijd: 4 minuten
image

Je hebt twee soorten mensen: mensen die voor al hun accounts hetzelfde wachtwoord gebruiken, en mensen die een password manager gebruiken. Dat is misschien wat kort door de bocht, maar feit is dat het nauwelijks te doen is om voor alle logins die je hebt een veilig en afwijkend wachtwoord te onthouden. Een password manager is handig omdat je dan eigenlijk nog maar 1 wachtwoord hoeft te onthouden.

Inmiddels zijn er vele verschillende password managers. De meeste, zoals bijvoorbeeld 1Password of Lastpass, zijn een online dienst waar alle wachtwoorden versleuteld in "the cloud" worden opgeslagen. Dat betekent dat je er dan overal waar je internet hebt bij kan, maar het betekent ook dat je uiterst gevoelige data bij een derde partij staat, die je dan maar op hun mooie blauwe ogen moet vertrouwen dat zij hun security en implementatie goed op orde hebben.

Als je daar zorgen om maakt, of gewoon te cheap bent om te betalen voor een dienst, kun je ook een offline password manager gebruiken, zoals Keepass. Hier staan alle wachtwoorden in een encrypted kluis die lokaal op je eigen device staat. Je weet dan zeker dat niemand behalve jij erbij kan. Dat is op zich veiliger maar heeft weer als nadeel dat je dan zelf nog wat moet verzinnen om die kluis op al je devices te synchroniseren. Dat kan met bijvoorbeeld Dropbox wel, of als je het in eigen hand wil houden: Nextcloud, een self hosted oplossing.

Dat werkt meestal prima, maar je gaat vroeg of laat tegen conflicten oplopen. Niet alle devices hebben altijd een internetverbinding, dus die kunnen niet altijd meteen synchroniseren. Als er dan op verschillende devices iets in de kluis is veranderd, kun je opeens met twee conflicterende kluizen zitten, die niet makkelijk weer samen te voegen zijn. Dan moet je dus 1 van de 2 verwijderen, waardoor je data kan verliezen.

Ik heb lange tijd op deze manier Keepass gebruikt maar toen ik voor de zoveelste keer tegen een conflict aanliep, ging ik op zoek naar iets anders. Ik voreg me af of er echt geen volledig self hosted en open source oplossing die je makkelijk op al je devices kan gebruiken, zonder de kans op conflicten zoals deze?

Ja, die bleek er te zijn: pass, "the Standard Unix Password Manager". In de kern eigenlijk niet meer dan een paar scripts om gnupg en git heen. Elk wachtwoord staat in een apart encrypted bestand. En al die bestanden staan in een git repository. Git werkt volledig gedecentraliseerd, en is bij uitstek gemaakt om data te synchroniseren tussen veel devices, met uitstekende "conflict management".

Meteen maar een minpunt: de installatie is niet heel simpel. Je hebt naast de pass applicatie zelf, ook een gpg keypair nodig waarmee je de data versleutelt en ontsleutelt. Deze setup valt buiten de scope van deze post, ik verwijs hiervoor graag naar deze HowTo, de officiele website en de man page

Wel wat praktijkvoorbeelden. Stel, je wil een nieuw wachtwoord aanmaken voor example.org. Met de command line interface is dat eenvoudig:

Dit wachtwoord staat nu encrypted in het bestand sites/example.org en je kan het weer decrypten dmv pass sites/example.org. Maar het staat nu alleen nog maar op het device waar je het commando runt, in dit geval mijn thinkpad. As je de changes pusht, kun je ze eenvoudig ook op andere devices binnenhalen.

Op een andere device waar je ook de repo hebt staan doe je dan simpelweg een pass git pull.

Uiteraard kun je ook alle bestaande git tools direct op de repo zelf gebruiken, die standaard in ~/.password-store staat

Op zich zou je je hele password repository in een private repo in github kunnen zetten. Maar we proberen nu juist om alle derde partijen ertussen uit te houden. Omdat de bestandsnamen zelf niet encrypted worden, geef je daarmee wel wat meta data prijs, meer dan met bijv Keepass. Daarom heb ik ervoor gekozen om echt alles in eigen hand te houden, en de repo op een goed beveiligde eigen vps te hosten, die ik via ssh benader.

Er is niet alleen een command line client voor pass. Er zijn ook apps voor Android en iOS, en er zijn plugins voor Firefox en Chrome. Daarnaast bestaan er diverse plugins, zoals een handige OTP plugin voor generatie van time based one time passwords, en zijn er import tools voor oa LastPass en Keepass.

Zoals je inmiddels waarschijnlijk al door hebt: pass vraagt flink wat kennis en handigheid van de gebruiker, en dat is ook meteen het grote nadeel. De configuratie en opzet is beduidend minder eenvoudig en intuitief dan de commerciele oplossingen. Je moet met best lastige tools als gnupg, git en ssh om kunnen gaan. Daarnaast heb je ook een eigen server nodig om je kluis op te hosten, en daarvan moet je zelf uiteraard ook de configuratie en security doen. Dat maakt het eigenlijk ongeschikt voor de gemiddelde gebruiker.

Maar voor de handige (en wellicht ietwat paranoide) nerd die hierdoor niet afgeschrokken wordt, kan pass een uitstekende oplossing zijn.

Gerelateerde posts

image
Slimme generics in PHP

Type hinting in PHP8 is krachtig maar heeft ook beperkingen. In dit artikel bespreek ik hoe je met Generics die beperkingen voor een groot deel kan wegnemen.

Lees meer →

image
Een complete Mastodon API client bouwen

Mastodon heeft een behoorlijk uitgebreide API, maar geen openapi spec. Het was best een uitdaging om een complete client hiervoor te maken.

Lees meer →

image
Sublime Text als volwaardige PHP IDE

Sublime Text lijkt misschien op eerste gezicht meer een text editor dan een IDE, maar schijn bedriegt. Lees hier waarom ik Sublime Text prefereer boven andere editors of IDEs, en hoe je er het meeste uit kan halen met behulp van de juiste plugins.

Lees meer →

image
PHP: Frankenstein arrays

PHP is inmiddels best een mooie taal geworden, maar kent nog wel wat nare erfenissen uit het verleden. Zoals de verraderlijke Frankenstein abominatie ook wel bekend als de "array".

Lees meer →