Hlavní navigace

Pass: správce hesel inspirovaný čistou unixovou filosofií

Petr Krčmář

Správců hesel existují mraky, máme mobilní, cloudové, desktopové, integrované do prohlížečů a bůh ví ještě jaké. Ale co takhle čistě unixový? Pass dělá jednu věc pořádně a šifrování nechává na GnuPG.

Doba čtení: 5 minut

Pass je správce hesel. Jeden z mnoha, řekli byste. Na rozdíl od těch ostatních ale nechce být cool, cloudový a propojený s vašimi chytrými hodinkami. Naopak jde o ryze praktický nástroj napsaný podle tradiční unixové filozofie: dělej věci jednoduché a prosté. Pass přesně takový je a pokud používáte unixové operační systémy pro jejich přímočarost, určitě vám přiroste k srdci.

Jde vlastně o velmi jednoduchou utilitu, která používá existující nástroje. Její funkce závisí na třech dalších balíčcích: GnuPG, Pwgen a Tree. Volitelně je možné také používat Git a Xclip, to aby byla vaše práce pohodlnější, ale nutné to není.

Pass ukládá jednotlivá hesla (nebo obecněji jakékoliv citlivé údaje) do jednoduché adresářové struktury, kterou můžete spravovat pomocí běžných nástrojů (klidně použijte MC). V libovolně větvené struktuře jsou pak uloženy samotné soubory s hesly. Každé má svůj vlastní soubor šifrovaný pomocí GPG klíče. Utilita pak nabízí jednoduché nástroje ke správě těchto položek ve vaší „databázi“. A to je vlastně vše.

Začít je snadné

Instalace je obvykle velmi snadná, Pass je součástí repozitářů běžných distribucí, stačí tedy nainstalovat stejnojmenný balík. Druhou možností je stažení z Gitu, kompilovat nic nemusíte, protože Pass je napsán v Bashi. Běží proto prakticky všude, kde fungují výše zmíněné utility, na kterých utilita staví.

V mém případě tedy stačilo napsat

# apt install pass

Protože Pass používá k šifrování GnuPG, budete pro jeho použití potřebovat pár klíčů. Pokud nic podobného nemáte, nemusíte zoufat, opět stačí spustit jediný příkaz. Pro rychlejší generování klíčů doporučuji také nainstalovat balíček haveged, který do vašeho systému přidá výrazně více entropie a vy nebudete muset čekat tak dlouho na nasbírání vstupů do jaderného generátoru náhodných čísel.

# gpg --gen-key

Nyní už stačí jen vytvořit nové úložiště hesel. Utilitě při tom sdělíme, které klíče chceme ke správě použít. Můžeme přitom zvolit i více veřejných klíčů, pokud budeme úložiště používat s dalšími uživateli. V tom případě se budou ukládané informace šifrovat vícekrát pomocí všech veřejných klíčů, aby k nim měli uživatelé přístup.

# pass init "Krcmar"

A je hotovo, můžeme začít pracovat se svými hesly. Pokud používáme GPG Agenta, drží se dešifrovaný privátní klíč v paměti a my ho nemusíme pokaždé odemykat, když s ním chceme pracovat. Pak je práce s klíčenkou velmi jednoduchá.

Spravujeme hesla

Přímo při ukládání nové položky můžeme zvolit kromě jejího názvu také budoucí cestu k ní. Vytváříme tak rovnou adresářovou strukturu.

# pass insert root.cz/krcmar
mkdir: created directory '/home/petr/.password-store/root.cz'
Enter password for root.cz/krcmar:
Retype password for root.cz/krcmar:

Ve výchozím stavu se nás Pass zeptá na heslo, které chce pro kontrolu zopakovat. Po jeho zadání je rovnou uložena nová položka. Pokud bychom chtěli zapsat víceřádkovou poznámku, stačí přidat parametr -m  (jako multiline) a pak můžeme směle zapisovat. Editaci pak ukončíme pomocí EOF, neboli Ctrl+D.

# pass insert lupa.cz/redakce -m
mkdir: created directory '/home/petr/.password-store/lupa.cz'
Enter contents of lupa.cz/redakce and press Ctrl+D when finished:

Heslo je karafiat.
Krome toho je mozne si delat i dalsi poznamky.
Sefredaktorem je David Slizek.
Poznamku ukoncime pomoci Ctrl+D.

Už jsme si uložili dvě položky, pokud si chceme nechat vypsat obsah úložiště v přehledném stromovém zobrazení, stačí zavolat utilitu bez parametrů.

# pass
Password Store
├── lupa.cz
│   └── redakce
└── root.cz
    └── krcmar

Pokud chceme některé z hesel zobrazit, stačí k němu předat cestu bez dalšího parametru.

# pass root.cz/krcmar
tulipan

Pokud potřebujete heslo změnit, použijte parametr edit. Obsah souboru se otevře v editoru, který je nastaven v proměnné prostředí EDITOR. Pokud máte nainstalované třeba MC, můžete použít třeba pohodlný MCedit nebo svůj oblíbený editor. Když není nastaveno nic, zavolá Pass základní editor Vi.

Další možnosti

Pass umí hesla také generovat, což je velmi rozumná možnost, pokud si nepotřebujete pro každý web vymýšlet vlastní složitá hesla. Stačí zvolit, jak dlouhé má nové heslo být.

# pass generate vitalia.cz/lenka 15
mkdir: created directory '/home/petr/.password-store/vitalia.cz'
The generated password for vitalia.cz/lenka is:
P-b30XTG8wEFuKs

Pokud budete utilitu používat v desktopovém prostředí, bude se vám hodit integrovaná podpora programu Xclip. Ten umí z řádky přenést informaci do schránky, vy ji pak už jen zkopírujete třeba do prohlížeče nebo jiné aplikace. Samozřejmě budete potřebovat zmíněný balíček doinstalovat. Pak už stačí jen přidat parametr  -c.

# pass -c vitalia.cz/lenka

Heslo je zkopírováno do schránky a vydrží tam 45 sekund. Vy jej během této doby můžete použít, pak je z bezpečnostních důvodů do schránky vrácen původní obsah. Mimochodem parametr -c můžete použít i při volání generate, pak je heslo vygenerováno, uloženo a rovnou vloženo do schránky. To se hodí, pokud někde vytváříte nový účet – rovnou heslo vložíte do formuláře.

Součástí projektu jsou i soubory pro completion v shellech Bash, Zsh a Fish. Pomocí tabulátoru je pak možné jednoduše doplňovat parametry utility Pass i cestu k jednotlivým souborům s hesly.

Synchronizace pomocí Gitu

Adresář ~/.password-store můžete samozřejmě mezi svými počítači přesouvat libovolným způsobem, můžete použít rsync nebo třeba hodit adresář do Dropboxu. Obsah souborů je velmi silně šifrován, takže pokud vám neunikne privátní klíč ke GnuPG, vyzrazení obsahu nehrozí.

Pass ovšem sám disponuje možností synchronizace pomocí Gitu. Pokud to povolíte, bude Pass sám dělat commit při každé manipulaci s úložištěm. Pokud máte někde spuštěný vlastní gitovský repositář, můžete si tak pohodlně přenášet strukturu mezi zařízeními.

# pass git init
Initialized empty Git repository in /home/petr/.password-store/.git/
# pass git remote add origin example.com:pass-store

Další klienti

Pass je velmi jednoduchý, není problém ho znovu implementovat na různých platformách. Proto vznikla celá řada dalších klientů, od desktopových přes integrace do různých aplikací až po mobilní. Pass tak můžete mít třeba na Androidu (Play, F-Droid), iOS nebo si jej můžete integrovat do prohlížeče – Firefox či Chrome.

Desktopové prostředí QtPass

V případě prohlížečů budete potřebovat nainstalovat dvě poloviny rozšíření: samotný modul do prohlížeče a poté ještě utilitu schopnou přistupovat k datům na vašem disku. Obě poloviny pak spolu budou komunikovat a přímo v prohlížeči se dostanete k uloženým heslům.

Odkazy

Našli jste v článku chybu?