Back to Index

Administracija servera uz ličnu kartu

Tokom prethodnih godinu dana, radio sam na kreiranju PKCS#11 modula otvorenog koda za srpske lične karte. Motivacija za kreiranje modula bila je pre svega omogućavanje Linux i macOS korisnicima da se uloguju na državne portale poput eUprave ili ePoreza. Međutim, kako je PKCS#11 standard veoma rasprostranjen, neki načini upotrebe otvorili su se o kojima i nisam razmišljao kada sam počeo da radim na modulu. Pre svega, to je potpisivanje (PDF, XML,…) dokumenata, za koje se ispostavilo da radi bez bilo kakvih problema.

Pre neki dan mi je pala na pamet još jedna upotreba: korišćenje SSH-a uz ključeve sa lične karte. Lična karta je zgodna za upotrebu, jer (u teoriji) privatni ključ nikad neće biti izložen, a sama lična je uvek pored korisnika.

Demo time

Naredni redovi važe za Unix sisteme. Na Windows-u treba koristiti modul koji se instalira uz MUP-ov Čelik jer srb-id-pkcs11 za sada ne podržava Windows. Sve ostalo je isto.

Preuzmite srb-id-pkcs11, i povežite ličnu kartu sa računarom.

Prvo je potrebno pročitati javni ključ sa tokena (tj. sa lične karte). To se može lako uraditi sa ssh-keygen komandom (nakon -D treba staviti putanju do preuzetog modula):

ssh-keygen -D ./libsrb-id-pkcs11.so -e

Ispisaće se jedan ili dva javna RSA ključa. Ključevi počinju sa ssh-rsa, a nakon same vrednost ključa sledi opis (/C=RS/serialNumber=...) koji se može pri kopiranju promeniti u nešto jednostavnije.

Jedan od ključeva (bilo koji) je potrebno postaviti na server na koji želimo da se ulogujemo: ključ treba dopisati u ~/.ssh/authorized_keys na serveru. Neke platforme, poput DigitalOcean-a i cPanel-a, imaju web interfejs kroz koji se može dodati ključ.

Nakon toga, možemo koristi ličnu kartu za ulazak na server

ssh -I ./libsrb-id-pkcs11.so root@example.com

Pri svakom logovanju, korisnik će biti upitan za PIN lične karte (dobija se u koverti prilikom preuzimanja lične karte, a može se i promeniti korišćenjem (Baš)Čelika).

Naravno, pametnije je smestiti libsrb-id-pkcs11.so na neku određenu lokaciju i ne treba koristiti root, kako sam ja prikazao u primeru. U lokalnoj SSH konfiguraciji može se podesiti kad i koji ključevi se učitavaju sa modula (tako da ne mora da se kuca -I ./libsrb-id-pkcs11.so pri pokretanju ssh-a). U konfiguraciju je dobro postaviti i IdentitiesOnly yes.

Inače, postupak je isti i za ostale tokene koji podržavaju PKCS#11 (npr. YubiKey).

Da li je ovo bezbedno

Onako.

SSH, RSA, PKCS#11, pametne kartice, su tehnologije koje su u teoriji bezbedne. Ipak postoji par razloga zašto ovo nije na “enterprise” nivou:

Svejedno, upotreba je zanimljiva i može poslužiti za pristupačan ulazak u svet asimetrične kriptografije i hardverskih tokena. Npr, studenti koji dobiju SSH pristup fakultetskom serveru (kao nekad na MATF-u, nadam se da još to omogućavaju) mogu da probaju ovaj metod.

O ličnim kartama i kriptografiji

Ostaje gorak ukus, zašto država nije bila otvorenija sve ove godine o tehnologijama koje se koriste na ličnim kartama. Zajednica bi pre 10 godina napravila modul otvorenog koda, rešila sama sve moguće probleme, i našla bezbroj upotreba. Ovako smo se godinama mučili sa Njindows-om i Čelikom.