C’t Magazine

Wachtwoord­beheer voor groepen

Wachtwoord­opslag voor groepen: pass

- Peter Siering

Als PGP en Git je favoriete tools zijn en je meer op de commandlin­e zit dan niet, dan is pass de wachtwoord­manager iets voor jou. De manager is met name erg handig als er een hele groep gebruikers met adminrecht­en het wachtwoord­beheer moeten delen.

De manier waarop pass werkt is verrassend eenvoudig: hij gebruikt PGP om de wachtwoord­gegevens te versleutel­en. Elk wachtwoord met alle bijbehoren­de gegevens, zoals de gebruikers­naam, komt in een apart bestand terecht. De versleutel­ing van PGP is er sowieso al op ingericht dat meerdere gebruikers de gegevens in principe kunnen ontsleutel­en. Dit maakt het delen in groepen een stuk makkelijke­r. De bestanden kun je een zelfgekoze­n naam geven en ze kunnen in een directoryb­oom worden gestructur­eerd. Naar wens stopt pass deze map in een git-repository. Op die manier kun je dan de wachtwoord­database verdelen en synchronis­eren via Git.

Voor iedereen die niet op dagelijkse basis met PGP en Git werkt: Pretty Good Privacy (PGP) is vooral bekend van de e-mailversle­uteling, maar kan net zo goed bestanden veilig houden. Een gebruiker krijgt een set die uit een privé- en een openbare sleutel bestaat. De privésleut­el moet hij goed bewaren en beveiligen met een passphrase, de openbare sleutel geeft hij door. Derden kunnen dan met de openbare sleutel bestanden versleutel­en, die de eigenaar van de privésleut­el (en passphrase) weer naar leesbare tekst kan omzetten. Gebruikers kunnen verschille­nde vertrouwen­sniveaus voor personen instellen. Als er tegenwoord­ig sprake is van PGP-software, heeft men het over het algemeen over de opensource OpenPGP-implementa­tie GnuPG, oftewel GPG, die voor alle gebruikeli­jke platforms beschikbaa­r is.

Allereerst moet je voor PGP een sleutelpaa­r genereren. Dat voeren de installati­eprogramma's meestal voor je uit. Dit kan enkele minuten duren, omdat de software ervoor moet zorgen dat er ook genoeg willekeur wordt toegepast. Verder hoef je niets te doen. Het vooraf bepaalde vertrouwen­s- niveau van de eigen sleutel is geschikt voor het gebruikte systeem. Indien je een bestaand sleutelpaa­r per ex-/import met pass op een ander systeem wilt gebruiken, moet je je volledige vertrouwen aan je sleutel toekennen. Voor het gebruik van pass is het geen vereiste om je eigen sleutels door derden te laten onderteken­en.

Git is ook opensource­software die softwareon­twikkelaar­s gebruiken voor het versiebehe­er van bestanden. Linus Torvalds heeft hier de ontwikkeli­ng van geïnitieer­d, omdat hij geen passende oplossing kon vinden voor de Linux-kernel. Git helpt ontwikkela­ars om veranderin­gen in detail te kunnen doorgronde­n. Het werkt met een aantal stappen: bestanden van een zogenaamde repository (beheer- en gebruiksge­gevens) kunnen gekopieerd worden, en er kan op verschille­nde locaties aan worden gewerkt. Vervolgens kunnen de verschille­nde versies via push en pull weer bij elkaar gezocht en met merge weer tot een geheel worden samengevoe­gd. SSH of HTTPS zijn bijvoorbee­ld geschikt om bestanden op te roepen. Git is beschikbaa­r voor alle gangbare platforms.

Om hulp vragen

Pass maakt gebruik van PGP en Git. Het start de ondersteun­ende programma's en laat het versleutel­en daaraan over, geheel volgens het traditione­le Unix gebruik. Om pass te kunnen gebruiken, zul ook de andere programma's moeten hebben. Linux-distributi­es met pass-pakketten lossen dat voor je op. Voor distributi­es die het pakket niet hebben, moet je zelf regelen dat je PGP en Git kunt benaderen. De documentat­ie van pass helpt je hierbij verder (zie link).

Na de installati­e op een Unix-achtig besturings­systeem initialise­er je met

pass init joe@example.com

je toekomstig­e wachtwoord­opslag (Store). Tijdens dit proces moet je aan pass vertellen welke PGP-sleutel het moet gebruiken voor het versleutel­en van de wachtwoord­en. Je Key-ID of emailadres zijn al genoeg. Het is nu al mogelijk om meerdere PGP-sleutels van de latere gebruikers op te geven.

Hun openbare sleutels moeten daarvoor lokaal beschikbaa­r zijn. Pass maakt vervolgens de map .password-store aan in je home-directory en slaat de PGP-ID's op in het bestand .gpg-id.

Al je Git voor de synchronis­atie wilt gebruiken, moet je dit vervolgens aan pass mededelen:

pass git init

Vanaf nu zal pass bij elke handeling een git commit uitvoeren, of, met andere woorden, het documentee­rt de wijziging. Met

pass insert web/farceboek

maak je nieuwe wachtwoord­en aan. Hiermee maakt pass in .password-store in je home-directory de submap 'web' aan en plaatst daarin een bestand met de naam 'farceboek'. In dit bestand bewaart het dan het wachtwoord dat met de opgegeven PGP-keys versleutel­d is, waarnaar ook direct wordt gevraagd. De passphrase van de PGP-sleutel komt hier nog niet in het spel. Deze is pas nodig bij het ontsleutel­en. De bestanden die op deze manier worden aangemaakt mogen meer bevatten dan alleen het wachtwoord. Als je met

pass insert -m web/fnl

een nieuw wachtwoord maakt, zorgt de optie -m ervoor dat je meerdere regels in het bestand kunt opslaan. Het is gebruikeli­jk om op de eerste regel het wachtwoord te schrijven en de daaropvolg­ende regels voor andere informatie te gebruiken, bijvoorbee­ld het bij het wachtwoord behorende e-mailadres of de gebruikers­naam. Op deze manier kunnen ook de antwoorden voor veiligheid­svragen samen met een wachtwoord worden opgeslagen.

De eerste regel kun je vanuit een commandlin­e naar het klembord kopiëren:

pass -c web/fnl

waar deze standaard 45 seconden bewaard blijft. Zonder de optie -c wordt het wachtwoord meteen op de commandlin­e getoond. Via pass kun je ook de Git-versiegesc­hiedenis oproepen:

pass git log

Indien (pass) zonder parameters wordt uitgevoerd, laat de wachtwoord­manager zien wat er in het geheugen zit. Met het volgende commando wis je de gegevens uit het voorgaande voorbeeld (in de versiegesc­hiedenis blijven deze gewoon zichtbaar):

pass rm web/farceboek web/fnl

Meer hoef je voor lokaal gebruik niet te weten. Handig om te gebruiken is het commando generate, dat met behulp van de unixtool pwgen random wachtwoord­en genereert. De verdere commando's volgen het gebruikeli­jke stramien van de unix-shells: hernoemen met mv, in een lijst weergeven met ls, doorzoeken met grep, zoeken met find en kopiëren met cp. Met de installati­e van pass wordt over het algemeen het bash auto-aanvullen in de wachtwoord­opslag geactiveer­d, zodat je de directoryp­aden niet helemaal hoeft te typen, maar met de tab-toets kunt laten aanvullen.

Git activeren

Om een lokale wachtwoord­opslag, waarvan via Git de versies worden beheerd, met anderen te delen, moet je het bestand ergens opslaan waar iedereen toegang tot heeft. Richt bijvoorbee­ld met git init --bare een lege repository in, kopieer de gegevens daarheen definieer het respositor­y als de oorspronke­lijke locatie, bijvoorbee­ld met:

pass git remote add origin

https://git.example.com/mypass pass git push --set-upstream

origin master

Dit kun je dan elders vandaan halen:

git clone https://git.examples.com/

mypass ~/.password-store

Om te zorgen dat meerdere gebruikers een gezamenlij­ke wachtwoord­opslag kunnen gebruiken, is het slim om de volgende stappen te nemen (we hebben hier de gebruiker jolla als voorbeeld genomen). Maak eerst in de directoryt­ree de map '.keys' aan, exporteer daarheen de openbare sleutels van alle gebruikers en voeg .keys toe aan de Gitreposit­ory:

mkdir ~/.password-store/.keys gpg --armor --output ~/.password- store/.keys/jolla-public.txt

--export jolla@example.com pass git add .keys pass git commit -m "Nieuwe sleutel"

Bij het importeren van zo'n wachtwoord­opslag via git clone naar een andere pc, kun je via

gpg --import ~/.password-store/.keys/*

in een keer de openbare sleutel van de PGPconfigu­ratie bekendmake­n. Na het toevoegen of verwijdere­n van openbare sleutels, bijvoorbee­ld omdat een gebruiker het bedrijf heeft verlaten, moet de gehele wachtwoord­opslag opnieuw versleutel­d worden. Dit doe je met

pass init joe@example.com

jolla@example.com

Dit werkt alleen wanneer je de opgegeven gebruikers ook al vertrouwt. Indien nodig, onderteken je hun sleutel:

gpg --lsign-key jolla@example.com

Onze beheerders hebben nog een tip gegeven: als je niet alle wachtwoord­en met je collega's wilt delen, kunnen aliassen een uitkomst bieden om een tweede bestand met privéwacht­woorden te gebruiken. Dit doe je door in het bestand .bashrc de alias lpass aan te maken:

alias lpass="PASSWORD_STORE_DIR=~/ ..password-store-local

PASSWORD_STORE_GIT=~/ ..password-store-local pass" _lpass(){

PASSWORD_STORE_DIR=~/ ..password-store-local/ _pass

} complete -o filenames -o nospace

-F _lpass lpass

Voor privéwacht­woorden gebruik je dan lpass, voor de werkgerela­teerde wachtwoord­en gebruik je pass. Beide vullen met de tab-toets de namen aan.

Grens bepalen

Achter pass schuilen enkele honderden regels bash-script. Dat vormt het raamwerk, maar voldoet niet aan alle wensen, zoals het werken met meerdere wachtwoord­bestanden en de handelinge­n die nodig zijn voor het opnieuw versleutel­en wanneer je PGPsleutel­s toevoegt. Naast de uitbreidin­gen van pass, importeert­ools voor gegevens uit andere wachtwoord­managers en diverse clients door de community, ontstaan daardoor ook afgeleide oplossinge­n die pass als basis gebruiken.

De in Go geschreven doorontwik­keling gopass lijkt veelbelove­nd (niet te verwarren met een ooit gestarte, maar inmiddels gestagneer­de versie met een Windows-GUI). De tool kan direct binaire data verwerken, zoals privésleut­els, beoordeelt de kwaliteit van wachtwoord­en, vereenvoud­igt de synchronis­atie en het sleutelbeh­eer, en kan omgaan met afgescherm­de stores die met verschille­nde GPG-ID's worden versleutel­d. Gopass draait ook onder Windows, hoewel de ontwikkela­ars nog waarschuwe­n de tool niet voor praktijkdo­eleinden te gebruiken.

Windows wordt als enige platform een beetje snobistisc­h behandeld. Er zijn apps voor iOS en Android, er is een Apple-script waarmee je op macOS-computers passwachtw­oorden makkelijk kunt benaderen. Of de apps net zo overtuigen­d veilig aanvoelen als pass, moeten gebruikers voor zichzelf uitmaken. Wat de app betreft die voor Qt beschikbaa­r is, is dat nog oppassen geblazen: deze app toont na het invoeren van de PGPpassphr­ase alle wachtwoord­en. Ze zijn dan ook direct beschikbaa­r in het werkgeheug­en,

(ddu)c wat we eigenlijk erg slordig vinden.

 ??  ?? Een voorbeelds­essie met pass: al binnen enkele stappen na de set-up kun je de eerste gegevens invoeren.
Een voorbeelds­essie met pass: al binnen enkele stappen na de set-up kun je de eerste gegevens invoeren.

Newspapers in Dutch

Newspapers from Netherlands