Terminal pogryzł człowieka: ironclad
Zarządzanie bazą haseł i loginów nie jest czymś ekscytującym w czasach setek graficznych narzędzi przeznaczonych temu celowi. Niemniej miłośnicy minimalizmu brawami przywitają kolejne tekstowe rozwiązanie uwalniające nasze zmęczone komórki od natłoku informacji. Ironclad, bo to o nim mowa, jest nieziemsko prostym w obsłudze i intuicyjnym narzędziem umożliwiającym stworzenie i zarządzanie bazą z hasłami.
Co wyróżnia ironclad na tle innych podobnych projektów (np. pass)? Jest to programik popełniony w języku GO. Stawia też na łopatologiczną prostotę przechowywania naszych haseł – po prostu w pojedynczym pliku. Jeżeli ktoś uśmiechnął się właśnie z przekąsem to śpieszę nadmienić, że jest to plik szyfrowany. I to nie byle jak. Dane są przechowywane pod ochroną 256-bit AES w trybie CBC. Tekst podzielony na bloki z dopełnieniem nieistotnymi danymi. Na potrzeby odblokowania tak zabezpieczonej bazy używany jest protokół HMAC-SHA-256. A na koniec klucze szyfrujące są generowane za pomocą 10,000 iteracji klucza PBKDF2 z haszem SHA-256. Jeżeli komuś powyższe nic nie mówi, to krótką mówiąc: nasze dane są bezpieczne. Tak stworzony plik nie odróżnia się niczym od losowe ciągu znaków, nie posiada elementów kluczowych i innych możliwych do namierzenia powtórzeń, tagów, itp.
No dobrze, ale co nam daje powyższe? Ogromną uniwersalność, gdyż ironclad nie dość, że jest multiplatformowy, to baza z naszymi hasłami może wędrować po różnych lokalizacjach. W dobrym tego słowa znaczeniu i w ramach dostępności lokalizacji poprzez terminal. Oczywiście wymaga to nieco zachodu, bo należy pamiętać aby wskazać miejsce gdzie chcemy zapisać naszą bazę (ironclad init ~/.tajne/mojabazahasel) a/lub przy przenosinach wpisać odpowiednią ścieżkę do pliku konfiguracyjnego ~/.config/ironclad/goconfig.toml.
A jak się obsługuje hasła za pomocą ironclad? Nic skomplikowanego:
$ ./ironclad Usage: ironclad [FLAGS] [COMMAND] Ironclad is a command line password manager. Flags: --help Print the application's help text and exit. --version Print the application's version number and exit. Commands: add Add a new entry to a database. config Set or print a configuration option. decrypt Decrypt a file. delete Delete entries from a database. dump Dump a database's internal JSON data store. edit Edit an existing database entry. encrypt Encrypt a file. export Export entries from a database. gen Generate a random password. import Import entries into a database. init Initialize a new password database. list List database entries. pass Copy a password to the clipboard. purge Purge deleted entries from a database. tags List database tags. user Copy a username to the clipboard. Command Help: help <command> Print the specified command's help text and exit.
Niestety, program nie trafił jeszcze do żadnego repozytorium (ani PPA). Pozostaje nam zatem albo samodzielna kompilacja, albo pobranie gotowych binarek ze strony projektu. Po rozpakowaniu i umieszczeniu w odpowiednim miejscu możemy przystąpić do testów. A jeżeli komuś całość przypadnie do gustu, to może nawet wmontować ironclad na stałe do systemu.