Wacht­woord­be­heer voor groe­pen

Wacht­woor­d­op­slag voor groe­pen: pass

C’t Magazine - - Vaste rubrieken - Pe­ter Sie­ring

Als PGP en Git je favoriete tools zijn en je meer op de com­mand­line zit dan niet, dan is pass de wacht­woord­ma­na­ger iets voor jou. De ma­na­ger is met na­me erg han­dig als er een he­le groep ge­brui­kers met adm­in­rech­ten het wacht­woord­be­heer moe­ten de­len.

De ma­nier waar­op pass werkt is ver­ras­send een­vou­dig: hij ge­bruikt PGP om de wacht­woord­ge­ge­vens te ver­sleu­te­len. Elk wacht­woord met al­le bij­be­ho­ren­de ge­ge­vens, zo­als de ge­brui­kers­naam, komt in een apart be­stand te­recht. De ver­sleu­te­ling van PGP is er so­wie­so al op in­ge­richt dat meer­de­re ge­brui­kers de ge­ge­vens in prin­ci­pe kun­nen ont­sleu­te­len. Dit maakt het de­len in groe­pen een stuk mak­ke­lij­ker. De be­stan­den kun je een zelf­ge­ko­zen naam ge­ven en ze kun­nen in een di­rec­to­ry­boom wor­den ge­struc­tu­reerd. Naar wens stopt pass de­ze map in een git-re­po­si­to­ry. Op die ma­nier kun je dan de wacht­woord­da­ta­ba­se ver­de­len en syn­chro­ni­se­ren via Git.

Voor ie­der­een die niet op da­ge­lijk­se ba­sis met PGP en Git werkt: Pret­ty Good Pri­va­cy (PGP) is voor­al be­kend van de e-mail­ver­sleu­te­ling, maar kan net zo goed be­stan­den vei­lig hou­den. Een ge­brui­ker krijgt een set die uit een pri­vé- en een open­ba­re sleu­tel be­staat. De pri­vé­sleu­tel moet hij goed be­wa­ren en be­vei­li­gen met een pas­sphra­se, de open­ba­re sleu­tel geeft hij door. Der­den kun­nen dan met de open­ba­re sleu­tel be­stan­den ver­sleu­te­len, die de ei­ge­naar van de pri­vé­sleu­tel (en pas­sphra­se) weer naar lees­ba­re tekst kan om­zet­ten. Ge­brui­kers kun­nen ver­schil­len­de ver­trou­wens­ni­veaus voor per­so­nen in­stel­len. Als er te­gen­woor­dig spra­ke is van PGP-soft­wa­re, heeft men het over het al­ge­meen over de opens­our­ce OpenPGP-im­ple­men­ta­tie GnuPG, of­te­wel GPG, die voor al­le ge­brui­ke­lij­ke plat­forms be­schik­baar is.

Al­ler­eerst moet je voor PGP een sleu­tel­paar ge­ne­re­ren. Dat voe­ren de in­stal­la­tie­pro­gram­ma's meest­al voor je uit. Dit kan en­ke­le mi­nu­ten du­ren, om­dat de soft­wa­re er­voor moet zor­gen dat er ook ge­noeg wil­le­keur wordt toe­ge­past. Ver­der hoef je niets te doen. Het voor­af be­paal­de ver­trou­wens- ni­veau van de ei­gen sleu­tel is ge­schikt voor het ge­bruik­te sys­teem. In­dien je een be­staand sleu­tel­paar per ex-/im­port met pass op een an­der sys­teem wilt ge­brui­ken, moet je je vol­le­di­ge ver­trou­wen aan je sleu­tel toe­ken­nen. Voor het ge­bruik van pass is het geen ver­eis­te om je ei­gen sleu­tels door der­den te la­ten on­der­te­ke­nen.

Git is ook opens­our­ce­soft­wa­re die soft­wa­re­ont­wik­ke­laars ge­brui­ken voor het ver­sie­be­heer van be­stan­den. Li­nus Tor­valds heeft hier de ont­wik­ke­ling van ge­ï­ni­ti­eerd, om­dat hij geen pas­sen­de op­los­sing kon vin­den voor de Li­nux-ker­nel. Git helpt ont­wik­ke­laars om ver­an­de­rin­gen in de­tail te kun­nen door­gron­den. Het werkt met een aan­tal stap­pen: be­stan­den van een zo­ge­naam­de re­po­si­to­ry (be­heer- en ge­bruiks­ge­ge­vens) kun­nen ge­ko­pi­eerd wor­den, en er kan op ver­schil­len­de lo­ca­ties aan wor­den ge­werkt. Ver­vol­gens kun­nen de ver­schil­len­de ver­sies via push en pull weer bij el­kaar ge­zocht en met mer­ge weer tot een ge­heel wor­den sa­men­ge­voegd. SSH of HTT­PS zijn bij­voor­beeld ge­schikt om be­stan­den op te roe­pen. Git is be­schik­baar voor al­le gang­ba­re plat­forms.

Om hulp vra­gen

Pass maakt ge­bruik van PGP en Git. Het start de on­der­steu­nen­de pro­gram­ma's en laat het ver­sleu­te­len daar­aan over, ge­heel vol­gens het tra­di­ti­o­ne­le Unix ge­bruik. Om pass te kun­nen ge­brui­ken, zul ook de an­de­re pro­gram­ma's moe­ten heb­ben. Li­nux-dis­tri­bu­ties met pass-pak­ket­ten los­sen dat voor je op. Voor dis­tri­bu­ties die het pak­ket niet heb­ben, moet je zelf re­ge­len dat je PGP en Git kunt be­na­de­ren. De do­cu­men­ta­tie van pass helpt je hier­bij ver­der (zie link).

Na de in­stal­la­tie op een Unix-ach­tig be­stu­rings­sys­teem ini­ti­a­li­seer je met

pass init joe@example.com

je toe­kom­sti­ge wacht­woor­d­op­slag (Sto­re). Tij­dens dit pro­ces moet je aan pass ver­tel­len wel­ke PGP-sleu­tel het moet ge­brui­ken voor het ver­sleu­te­len van de wacht­woor­den. Je Key-ID of email­adres zijn al ge­noeg. Het is nu al mo­ge­lijk om meer­de­re PGP-sleu­tels van de la­te­re ge­brui­kers op te ge­ven.

Hun open­ba­re sleu­tels moe­ten daar­voor lo­kaal be­schik­baar zijn. Pass maakt ver­vol­gens de map .pass­word-sto­re aan in je ho­me-di­rec­to­ry en slaat de PGP-ID's op in het be­stand .gpg-id.

Al je Git voor de syn­chro­ni­sa­tie wilt ge­brui­ken, moet je dit ver­vol­gens aan pass me­de­de­len:

pass git init

Van­af nu zal pass bij el­ke han­de­ling een git com­mit uit­voe­ren, of, met an­de­re woor­den, het do­cu­men­teert de wij­zi­ging. Met

pass in­sert web/far­ce­boek

maak je nieu­we wacht­woor­den aan. Hier­mee maakt pass in .pass­word-sto­re in je ho­me-di­rec­to­ry de sub­map 'web' aan en plaatst daar­in een be­stand met de naam 'far­ce­boek'. In dit be­stand be­waart het dan het wacht­woord dat met de op­ge­ge­ven PGP-keys ver­sleu­teld is, waar­naar ook di­rect wordt ge­vraagd. De pas­sphra­se van de PGP-sleu­tel komt hier nog niet in het spel. De­ze is pas no­dig bij het ont­sleu­te­len. De be­stan­den die op de­ze ma­nier wor­den aan­ge­maakt mo­gen meer be­vat­ten dan al­leen het wacht­woord. Als je met

pass in­sert -m web/fnl

een nieuw wacht­woord maakt, zorgt de op­tie -m er­voor dat je meer­de­re re­gels in het be­stand kunt op­slaan. Het is ge­brui­ke­lijk om op de eer­ste re­gel het wacht­woord te schrij­ven en de daar­op­vol­gen­de re­gels voor an­de­re in­for­ma­tie te ge­brui­ken, bij­voor­beeld het bij het wacht­woord be­ho­ren­de e-mail­adres of de ge­brui­kers­naam. Op de­ze ma­nier kun­nen ook de antwoorden voor vei­lig­heids­vra­gen sa­men met een wacht­woord wor­den op­ge­sla­gen.

De eer­ste re­gel kun je van­uit een com­mand­line naar het klem­bord ko­pi­ë­ren:

pass -c web/fnl

waar de­ze stan­daard 45 se­con­den be­waard blijft. Zon­der de op­tie -c wordt het wacht­woord met­een op de com­mand­line ge­toond. Via pass kun je ook de Git-ver­sie­ge­schie­de­nis op­roe­pen:

pass git log

In­dien (pass) zon­der pa­ra­me­ters wordt uit­ge­voerd, laat de wacht­woord­ma­na­ger zien wat er in het ge­heu­gen zit. Met het vol­gen­de com­man­do wis je de ge­ge­vens uit het voor­gaan­de voor­beeld (in de ver­sie­ge­schie­de­nis blij­ven de­ze ge­woon zicht­baar):

pass rm web/far­ce­boek web/fnl

Meer hoef je voor lo­kaal ge­bruik niet te we­ten. Han­dig om te ge­brui­ken is het com­man­do ge­ne­ra­te, dat met be­hulp van de unix­tool pw­gen random wacht­woor­den ge­ne­reert. De ver­de­re com­man­do's vol­gen het ge­brui­ke­lij­ke stra­mien van de unix-shells: her­noe­men met mv, in een lijst weer­ge­ven met ls, door­zoe­ken met grep, zoe­ken met find en ko­pi­ë­ren met cp. Met de in­stal­la­tie van pass wordt over het al­ge­meen het bash au­to-aan­vul­len in de wacht­woor­d­op­slag ge­ac­ti­veerd, zo­dat je de di­rec­to­ry­pa­den niet he­le­maal hoeft te ty­pen, maar met de tab-toets kunt la­ten aan­vul­len.

Git ac­ti­ve­ren

Om een lo­ka­le wacht­woor­d­op­slag, waar­van via Git de ver­sies wor­den be­heerd, met an­de­ren te de­len, moet je het be­stand er­gens op­slaan waar ie­der­een toe­gang tot heeft. Richt bij­voor­beeld met git init --ba­re een le­ge re­po­si­to­ry in, ko­pi­eer de ge­ge­vens daar­heen de­fi­ni­eer het res­po­si­to­ry als de oor­spron­ke­lij­ke lo­ca­tie, bij­voor­beeld met:

pass git re­mo­te add ori­gin

htt­ps://git.example.com/my­pass pass git push --set-up­stream

ori­gin mas­ter

Dit kun je dan el­ders van­daan ha­len:

git clo­ne htt­ps://git.examples.com/

my­pass ~/.pass­word-sto­re

Om te zor­gen dat meer­de­re ge­brui­kers een ge­za­men­lij­ke wacht­woor­d­op­slag kun­nen ge­brui­ken, is het slim om de vol­gen­de stap­pen te ne­men (we heb­ben hier de ge­brui­ker jol­la als voor­beeld ge­no­men). Maak eerst in de di­rec­to­ry­tree de map '.keys' aan, ex­por­teer daar­heen de open­ba­re sleu­tels van al­le ge­brui­kers en voeg .keys toe aan de Gitre­po­si­to­ry:

mk­dir ~/.pass­word-sto­re/.keys gpg --ar­mor --out­put ~/.pass­word- sto­re/.keys/jol­la-pu­blic.txt

--ex­port jol­la@example.com pass git add .keys pass git com­mit -m "Nieu­we sleu­tel"

Bij het im­por­te­ren van zo'n wacht­woor­d­op­slag via git clo­ne naar een an­de­re pc, kun je via

gpg --im­port ~/.pass­word-sto­re/.keys/*

in een keer de open­ba­re sleu­tel van de PGP­con­fi­gu­ra­tie be­kend­ma­ken. Na het toe­voe­gen of ver­wij­de­ren van open­ba­re sleu­tels, bij­voor­beeld om­dat een ge­brui­ker het be­drijf heeft ver­la­ten, moet de ge­he­le wacht­woor­d­op­slag op­nieuw ver­sleu­teld wor­den. Dit doe je met

pass init joe@example.com

jol­la@example.com

Dit werkt al­leen wan­neer je de op­ge­ge­ven ge­brui­kers ook al ver­trouwt. In­dien no­dig, on­der­te­ken je hun sleu­tel:

gpg --lsign-key jol­la@example.com

On­ze be­heer­ders heb­ben nog een tip ge­ge­ven: als je niet al­le wacht­woor­den met je col­le­ga's wilt de­len, kun­nen ali­as­sen een uit­komst bie­den om een twee­de be­stand met pri­véwacht­woor­den te ge­brui­ken. Dit doe je door in het be­stand .bashrc de ali­as lpass aan te ma­ken:

ali­as lpass="PASSWORD_STORE_DIR=~/ ..pass­word-sto­re-lo­cal

PASSWORD_STORE_GIT=~/ ..pass­word-sto­re-lo­cal pass" _l­pass(){

PASSWORD_STORE_DIR=~/ ..pass­word-sto­re-lo­cal/ _pass

} com­ple­te -o fi­le­na­mes -o no­s­pa­ce

-F _l­pass lpass

Voor pri­véwacht­woor­den ge­bruik je dan lpass, voor de werk­ge­re­la­teer­de wacht­woor­den ge­bruik je pass. Bei­de vul­len met de tab-toets de na­men aan.

Grens be­pa­len

Ach­ter pass schui­len en­ke­le hon­der­den re­gels bash-script. Dat vormt het raam­werk, maar vol­doet niet aan al­le wen­sen, zo­als het wer­ken met meer­de­re wacht­woord­be­stan­den en de han­de­lin­gen die no­dig zijn voor het op­nieuw ver­sleu­te­len wan­neer je PGP­sleu­tels toe­voegt. Naast de uit­brei­din­gen van pass, im­por­teer­tools voor ge­ge­vens uit an­de­re wacht­woord­ma­na­gers en di­ver­se clients door de com­mu­ni­ty, ont­staan daar­door ook af­ge­lei­de op­los­sin­gen die pass als ba­sis ge­brui­ken.

De in Go ge­schre­ven door­ont­wik­ke­ling go­pass lijkt veel­be­lo­vend (niet te ver­war­ren met een ooit ge­star­te, maar in­mid­dels ge­stag­neer­de ver­sie met een Win­dows-GUI). De tool kan di­rect binaire da­ta ver­wer­ken, zo­als pri­vé­sleu­tels, be­oor­deelt de kwa­li­teit van wacht­woor­den, ver­een­vou­digt de syn­chro­ni­sa­tie en het sleu­tel­be­heer, en kan om­gaan met af­ge­scherm­de sto­res die met ver­schil­len­de GPG-ID's wor­den ver­sleu­teld. Go­pass draait ook on­der Win­dows, hoe­wel de ont­wik­ke­laars nog waar­schu­wen de tool niet voor prak­tijk­doel­ein­den te ge­brui­ken.

Win­dows wordt als eni­ge plat­form een beet­je sno­bis­tisch be­han­deld. Er zijn apps voor iOS en An­droid, er is een Ap­ple-script waar­mee je op macOS-com­pu­ters passwacht­woor­den mak­ke­lijk kunt be­na­de­ren. Of de apps net zo over­tui­gend vei­lig aan­voe­len als pass, moe­ten ge­brui­kers voor zich­zelf uit­ma­ken. Wat de app be­treft die voor Qt be­schik­baar is, is dat nog op­pas­sen ge­bla­zen: de­ze app toont na het in­voe­ren van de PGP­pas­sphra­se al­le wacht­woor­den. Ze zijn dan ook di­rect be­schik­baar in het werk­ge­heu­gen,

(ddu)c wat we ei­gen­lijk erg slor­dig vin­den.

Een voor­beeld­ses­sie met pass: al bin­nen en­ke­le stap­pen na de set-up kun je de eer­ste ge­ge­vens in­voe­ren.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.