Smart card SSH autentikacija

Smart card je mali elektronički sklop s datotečnim sustavom i podrškom za različite kriptografske funkcije. Glavna namjena im je sigurna pohrana privatnog ključa.

 

Ako koristite Linux, gotovo sigurno koristite i SSH za udaljeni pristup nekom računalu, uređaju ili servisu. Za SSH autentikaciju mogu se koristiti kombinacija korisničkog imena i lozinke ili par ključeva, tzv. privatni i javni. Preporuča se autorizacija korištenjem javnog ključa jer je sigurnija. Još veću razinu sigurnosti možemo postići generiranjem i čuvanjem privatnog ključa na kriptografskom uređaju (smart card).

Lozinku je moguće presresti korištenjem keyloggera, a podložna je i brute-force napadu. Kod ključeva nema ovakvih problema. Javni ključ slobodno dijelite okolo. Privatni ključ čuva se u datoteci, dodatno ga je moguće zaštititi lozinkom, a kod autentikacije se nikad ne prenosi na udaljeno računalo. Ovaj članak detaljnije opisuje logiku i način korištenja ključeva, dok ovdje možete pročitati više o njihovom korištenju u SSH kontekstu. U ostatku članka pretpostavlja se da samostalno možete konfigurirati SSH za autentikaciju javnim ključem.

Smart card je mali elektronički sklop s datotečnim sustavom i podrškom za različite kriptografske funkcije. Količina podataka koja se na njima može pohraniti, podrška za različite standarde i opseg funkcija razlikuje se među pojedinim uređajima. Glavna namjena im je sigurna pohrana privatnog ključa. Naime, ključevi se mogu generirati izravno na kartici te se privatnom ključu može postaviti atribut koji ne dozvoljava kopiranje izvan kartice. Kad aplikacije pristupaju privatnom ključu, čine to kroz sučelje te mu nikad ne pristupaju izravno.

Pristup privatnom ključu dodatno je zaštićen PIN-om. Nakon nekoliko (obično 3 ili 5) neuspješnih unosa PIN-a kartica će se zaključati i onemogućiti daljnji pristup privatnom ključu. Otključava se unosom PUK-a tj. koda za otključavanje. Smart card se koristi u većim sustavima i to uglavnom za pohranu digitalnih certifikata za autentikaciju i elektronički potpis, primjerice za e-bankarstvo i državne e-usluge. Uređaj koji možete koristiti na Linux distribucijama novijeg datuma je Feitian ePass2003. Trenutno je dostupan u web shopu proizvođača po cijeni od 70 USD za komplet od 5 komada. Na predstojećoj DORS/CLUC konferenciji, tvrtka Ultima će podijelit 12 uređaja, tako da se svakako unaprijed javite ako želite pribaviti primjerak za testiranje.

 

Feitian ePass2003

Feitian ePass2003. Izvor: http://www.ftsafe.com/product/epass/epass2003

 

 

Driver za ePass2003 sadržan je u paketu OpenSC. Osim njega ćete trebati i PC/SC daemon  za komunikaciju s čitačem/karticom. Daljnje upute za instalaciju odnose se na Linux Mint 17.x, s tim da bi razlike na ostalim distribucijama trebale biti minimalne – drukčiji nazivi paketa i lokacije instaliranih datoteka. Naše iskustvo s ePass2003 uređajem počelo je s ovim blog postom te ovom prilikom zahvaljujemo njegovom autoru!

Instalacija potrebnih paketa:

$ sudo apt-get update
$ sudo apt-get install opensc pcscd

 

Provjera sadržava li instalirani opensc paket ePass2003 driver (aplikacija mora ispisati jednu liniju):

$ opensc-tool –list-drivers | grep epass2003
epass2003        epass2003

 

Ispis priključenih smart card čitača:

$ opensc-tool –list-readers
# Detected readers (pcsc)
Nr.  Card  Features  Name
0    Yes             Feitian ePass2003 00 00

 

Ako aplikacija ne prepoznaje priključeni uređaj, pcscd daemon vjerojatno nije pokrenut. Kod rada s kriptografskim uređajem pcscd mora uvijek biti pokrenut.

Brisanje trenutnog sadržaja na uređaju:

$ pkcs15-init –erase-card
Using reader with a card: Feitian ePass2003 00 00

 

Kreiranje datotečnog sustava prema PKCS#15 standardu:

$ pkcs15-init –create-pkcs15 –profile pkcs15+onepin –label “Ime Prezime”
Using reader with a card: Feitian ePass2003 00 00
New User PIN.
Please enter User PIN:
Please type again to verify:
Unblock Code for New User PIN (Optional – press return for no PIN).
Please enter User unblocking PIN (PUK):
Please type again to verify:

 

Napomene: PIN i PUK mogu sadržavati do 16 alfanumeričkih znakova. Obavezno upisati PUK iako je opcionalan – u protivnom se operacija neće uspješno izvršiti. Pod “Ime Prezime” upišite svoje ime i prezime, tako da kasnije možete prepoznati čiji je uređaj ukoliko imate više istih.

 

Generiranje para ključeva duljine 2048 bita:

$ pkcs15-init –auth-id 1 –generate-key rsa/2048 –key-usage sign,decrypt –label “ime_prezime_ssh01”
Using reader with a card: Feitian ePass2003 00 00
User PIN [User PIN] required.
Please enter User PIN [User PIN]:

 

Pod label upišite nešto smisleno prema čemu ćete kasnije prepoznati za što se ključevi koriste. Opcija –auth-id 1 odnosi se na prethodno kreirani PIN objekt.

Ispis svih objekata pohranjenih na kartici:

$ pkcs15-tool –dump
Using reader with a card: Feitian ePass2003 00 00
PKCS#15 Card [Darko Topolko]:
Version        : 0
Serial number  : 20940C8880028010
Manufacturer ID: EnterSafe
Last update    : 20160509120429Z
Flags          : EID compliant

PIN [User PIN]
Object Flags   : [0x3], private, modifiable
ID             : 01
Flags          : [0x32], local, initialized, needs-padding
Length         : min_len:4, max_len:16, stored_len:16
Pad char       : 0x00
Reference      : 1 (0x01)
Type           : ascii-numeric
Path           : 3f005015

Private RSA Key [darko_topolko_ssh02]
Object Flags   : [0x3], private, modifiable
Usage          : [0x2E], decrypt, sign, signRecover, unwrap
Access Flags   : [0x1D], sensitive, alwaysSensitive, neverExtract, local
ModLength      : 2048
Key ref        : 0 (0x0)
Native         : yes
Path           : 3f0050152900
Auth ID        : 01
ID             : d6eb88c861bdb24f6e196beaf2dc70312a165df2
GUID           : {1d025f0f-fe44-16fb-5cfd-cbae53eb5b73}

Public RSA Key [darko_topolko_ssh02]
Object Flags   : [0x2], modifiable
Usage          : [0xD1], encrypt, wrap, verify, verifyRecover
Access Flags   : [0x0]
ModLength      : 2048
Key ref        : 0 (0x0)
Native         : no
Path           : 3f0050153000
ID             : d6eb88c861bdb24f6e196beaf2dc70312a165df2
DirectValue    : <absent>

 

Ispis javnih ključeva:

$ pkcs15-tool –list-public-keys
Using reader with a card: Feitian ePass2003 00 00
Public RSA Key [darko_topolko_ssh02]
Object Flags   : [0x2], modifiable
Usage          : [0xD1], encrypt, wrap, verify, verifyRecover
Access Flags   : [0x0]
ModLength      : 2048
Key ref        : 0 (0x0)
Native         : no
Path           : 3f0050153000
ID             : d6eb88c861bdb24f6e196beaf2dc70312a165df2
DirectValue    : <absent>

 

Ekstrakcija javnog ključa u obliku koji se može koristiti u datoteci authorized_keys. Upisati ID javnog ključa prikazanog pomoću pkcs15-tool –dump ili pkcs15-tool –list-public-keys:

$ pkcs15-tool –read-ssh-key d6eb88c861bdb24f6e196beaf2dc70312a165df2
Using reader with a card: Feitian ePass2003 00 00
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdpfgIEPWsb07vNgCic7umKRSDn3rbq2wER+SSW5 iIkH3fbZeCNfyXUmQeZgMqZNCLQ8qLzxQIy9PzKOq2ch6hm5E1eYgBpO0/qEFwYuLU0wtjB2ENy3jF4 LHsMKGnEt5Cw2mQupBysu0Iw982EMVCfLIZek6DbUVSCMG2Em5N5aVwTMc5MfIJ3Za1y5ScOClPN0 UZlmfkh9Fm6a5+W2Q8TcZ2YjXVAR4W8jBI5whfzRJazZ9YFaLGHh8usBmVzz4QuW0uYnF5dO7ps4gdi MBuuWusTSLwSQ9uv/0K0RlYJG3mFpuLVS5wBgZOHH1L7Sw2r8jj8EGcig/zEJ68/5Rx

 

SSH ključ dodati u ~/.ssh/authorized_keys na udaljenom računalu. Prijavite se sa SSH:

$ ssh -I opensc-pkcs11.so user@host

 

Kako bi izbjegli upisivanje -I opensc-pkcs11.so svaki put, dodati liniju:

PKCS11Provider opensc-pkcs11.so

… u datoteku ~/.ssh/config (lokalno). Na ovaj će način SSH svaki put kod prijave provjeriti postoji li ključ na kriptografskom uređaju.

 

I to je to!

Dodatni bonus ovako postavljenog sustava jest činjenica da se s istim privatnim ključem možete prijavljivati s više različitih računala, bez da ga morate kopirati na više mjesta. S kriptografskim uređajem možete i puno više. SSH autentikacija jedna je od jednostavnijih primjena.

Prethodno su spomenuti digitalni certifikati. ePass2003 može koristiti XCA za sigurnu pohranu ključeva. XCA je desktop aplikacija za kreiranje i upravljanje X.509 certifikatima. Pomoću nje možete formirati svoj PKI. Certifikate generirane kroz XCA i pohranjene na ePass2003 na Linuxu možete koristiti kao klijentske certifikate za autentikaciju s OpenVPN aplikacijom te s Mozilla Firefox i Google Chrome preglednicima.

 

 

Autor: Darko Topolko

Click to rate this post!
[Total: 0 Average: 0]
VN:F [1.9.22_1171]
Stari sustav ocjenjivanja
Rating: 4.2/5 (6 votes cast)
Smart card SSH autentikacija, 4.2 out of 5 based on 6 ratings

You may also like...

1 Response

  1. linuxkorisnik napisao:

    Pošto je ovo prvi članak o kriptografiji na ovom portalu nadovezat ću se da je jedan od najboljih sustava za kriptografiju ejbca open source, sa svojim mogućnostima može parirati komercijalnim programima, nažalost od naših banaka, državnih institucija itd. nije prepoznat i uvijek biraju MS rješenje i firme koje nude MS rješenje.