Zróbmy to razem – repozytorium haseł dostępne na każdym komputerze.

Wyobraźmy sobie taką sytuację:

W ramach rozrywki rejestrujemy się na grze giełdowej, by spróbować swoich sił w obrocie papierami wartościowymi. Do logowania używamy tego samego hasła, co do naszego emaila. Jednak mimo początkowych chęci, WIG20 niechęci nas, pojawiają się inne zajęcia, a serwis opuszczamy na stałe. Po około roku okazuje się, że ze względu na słabe zabezpieczenia, dane z serwerów gry giełdowej zostają wykradzione.

Hakerzy momentalnie sprawdzają adres, jakiego użyłeś przy rejestracji, logują się na niego za pomocą hasła jakie wprowadziłeś. Za pomocą tego maila przejmują kontrolę nad twoim facebookiem, twitterem i pozostałymi serwisami społecznościowymi. Odzyskanie całego internetowego dorobku zajmie ci dłuższy czas, a wszystkiemu mógłbyś zaradzić w prosty sposób – używając do każdego serwisu innego hasła. Oczywiście zastosowałem tu pewne przerysowanie, ale jestem pewien, że nie raz skorzystałeś z tego samego na dwóch stronach. Skąd mogę wiedzieć? Nie jestem inny!

Ale jak to, przecież to wymaga kosmicznej pamięci, korzystam z wielu wirtualnych usług, nie dam rady wymyślić oddzielnego hasła do każdego z nich!

Nie musisz tego robić, bo w tym zadaniu wyręczy cię program pass, szerzej opisany tutaj. Z jego pomocą wygenerujesz losowe, silne hasło a całe repozytorium z hasłami będzie zaszyfrowane z wykorzystaniem GnuPG, więc nawet gdy pliki z hasłami wpadną w niepowołane ręce to nie stanie ci się żadna krzywda. Aby móc korzystać z bazy loginów na każdym urządzeniu, wykorzystamy program syncthing (odrobinę o nim tutaj). Proces instalacji opisany w poradniku przeprowadziłem w systemie OS X El Capitan oraz Androidzie 6.0.1, ale załączam instrukcje pomagające w przeniesieniu go na inne platformy.

Poradnik to 20 kroków, ~1000 słów i dużo zrzutów ekranów. Czas pracy to około 20 minut.

1.) Zaczynamy od instalacji oprogramowania wszystkich komponentów na komputerze. Na OS X’ie korzystam z Homebrew, ty powinieneś skorzystać z odpowiedniego menadżera pakietów.

brew install syncthing pass gpg2

# jeżeli dawno nic nie instalowałeś warto odpalić jeszcze brew update

2.) Włączamy syncthing poprzez odpowiedni program rozruchowy (często systemd, w moim wypadku launchctl przez homebrew’ową nakładkę).

sudo brew services start syncthing

# sudo sprawia, że syncthing włączy się przy każdym restarcie komputera

3.) W przeglądarce odpalamy interfejs syncthing, schowany pod adresem http://localhost:8384.

Screen Shot 2016-08-14 at 22.47.24.png

4.) Tworzymy nowy folder.

Screen Shot 2016-08-14 at 22.48.02.png

5.) W folder label wpisujemy nazwę taką, jaką chcemy by wyświetlał nam program w swoim kokpicie, w folder ID możemy zostawić losowy ciąg znaków (jest to identyfikator służący do rozpoznania folderu podczas synchronizacji dwóch urządzeń). Jeżeli chodzi o ścieżkę – w poradniku korzystamy z ~/.password-store, tam znajduje się nasze nasze repozytorium.Screen Shot 2016-08-14 at 22.48.35.png

6.) Nie posiadamy jeszcze żadnych urządzeń, dlatego po prostu zatwierdzamy. Nowopowstały folder pojawi się na liście.

Screen Shot 2016-08-14 at 22.52.13.png

7.) Musimy teraz zainstalować Syncthing na naszym telefonie. Jest ono dostępne w sklepie F-Droid, Google Play lub w ramach oddzielnego APK. Do tego potrzebujemy ewentualnie Barcode Scanner (to najprostszy sposób kopiowania ID komputera).

Screenshot_20160815-172016

 

8.) Otwieramy aplikację i przeprowadzamy wstępną konfigurację. Następnie otwieramy zakładkę Urządzeń i klikamy plusa w prawym górnym rogu.

Screenshot_20160815-172045.png

9.) Musimy teraz otworzyć w interfejsie na komputerze podgląd naszego ID. W telefonie natomiast klikamy małą ikonkę kodu kreskowego. Otworzy nam się Barcode Scanner, który musimy nakierować na nasz identyfikator. Po kilku sekundach powrócimy do aplikacji, a długi numer identyfikacyjny będzie już na swoim miejscu. Wpisujemy jeszcze nazwę (taką jaką sobie wybierzemy), restartujemy Syncthing i jesteśmy niemal gotowi.

Screen Shot 2016-08-15 at 21.37.28.png

10.) Wracamy jeszcze na chwilę do komputera, czekamy na powiadomienie o nowym urządzeniu i dodajemy telefon do naszych urządzeń (uwaga, jeżeli długo się nie pojawia, musimy skopiować ID z telefonu do komputera). Możemy teraz ustawić synchronizację folderu z repozytorium haseł!

11.) W telefonie zaraz pojawi się powiadomienie o folderze, jakim chce podzielić się nasz komputer. Konfigurujemy go, w ścieżce podając wygodny dla nas folder znajdujący się w pamięci wewnętrznej.

Screenshot_20160815-172213

Screenshot_20160815-172218

 

12.) I… już! Nasze hasła będą synchronizowane pomiędzy komputerem a telefonem. Ale to dopiero połowa naszych zmagań, bo potrzebujemy jeszcze klucza GPG oraz programów na telefonie. Tym zajmiemy się już teraz – instalujemy OpenKeychain oraz PasswordStore. Aplikacje są dostępne, tak samo jak Syncthing, w F-Droid oraz Google Play.

Screenshot_20160815-172307

13.) Wracamy do komputera, musimy teraz utworzyć klucz oraz zainicjować repozytorium pass.

gpg --gen-key # zaczynamy od klucza

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1

Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)

# warto się zastanowić - nie wygasający klucz 
uniemożliwia jego zmianę gdy wyślemy go na serwer zaufania, 
ale nie przysporzy problemów gdy upłynie rok czy dwa lata

Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; 
the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Franek Madej
Email address: alergeek@rulez.me
Comment: tutaj_ksywka
You selected this USER-ID:
"Franek Madej (tutaj_ksywka) <alergeek@rulez.me>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

# tutaj miejsce na wpisanie hasła - i bam! mamy własny klucz GPG.

14.) Teraz inicjujemy nasze pass repo za pomocą świeżego identyfikatora GnuPG, od razu dodając pierwsze hasło dla sprawdzenia programu.

> pass init alergeek@rulez.me -p .alergeek-password-store 
# używam podścieżki, bo posiadam już repozytorium z innym kluczem,
# jeżeli masz tylko jedno repozytorium omijasz parametr -p

> pass generate .alergeek-password-store/hello/world 10 -c
# ponownie podścieżka .alergeek-password-store, to również omijasz ;)
# parametr -c kopiuje od razu hasło do schowka, więcej opcji pod man pass!
[master a637b05] 
 Add generated password for .alergeek-password-store/hello/world.
 1 file changed, 1 insertion(+)
 create mode 100644 .alergeek-password-store/hello/world.gpg
 Copied .alergeek-password-store/hello/world to clipboard. 
 Will clear in 45 seconds.
# $xCmqJ3&8y - świeżo wygenerowane hasło

15.) Repozytorium jest już gotowe, mamy swój klucz, a foldery synchronizują się między telefonem a komputerem. Potrzebujemy jeszcze tego samego klucza na obu urządzeniach, dlatego korzystamy z możliwości eksportu w gpg.

gpg --export-secret-keys alergeek@rulez.me > secret.key

# zapisujemy nasz klucz do pliku

16.) Musimy teraz przetransportować ten plik do telefonu – pozostawiam tutaj każdemu wolną rękę, bo sposobów jest wiele. 🙂

17.) Włączamy OpenKeychain, i klikamy wybieramy opcję importu z pliku, następnie nawigujemy do wcześniej wyeksportowanego klucza.

Screenshot_20160815-175315

Screenshot_20160815-175723

18.) Po imporcie przechodzimy do zainstalowanej wcześniej aplikacji Password Store.

19.) Na ekranie głównym otwieramy ustawienia (prawy górny róg ekranu startowego) i edytujemy następujące opcje.

  • Zaznaczamy “external repository” i wskazujemy ścieżkę naszego folderu z Syncthing.
  • Wybieramy aplikację odpowiedzialną za PGP, czyli OpenKeychain.
  • Wybieramy nasz klucz i ID.

Screenshot_20160815-172754

20.) Gdy zamkniemy okno ustawień, ukaże nam się repozytorium haseł, z tym dodanym wcześniej na komputerze. Voilà!

Screenshot_20160815-211611

To całość dzisiejszego poradnika – jeżeli ci się udało, pochwal się w komentarzu, jeżeli nie, napisz, a spróbuję pomóc. Jestem również otwarty na sugestie odnośnie następnego materiału. Do zobaczenia!

Advertisements

4 thoughts on “Zróbmy to razem – repozytorium haseł dostępne na każdym komputerze.

  1. Świetny post, sam robiłem coś takiego używając OpenKeychain & PocketGit poprzez prywatne repo. Dobrze wiedzieć o Syncthing i Password Store! Keep it up!

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s