přejít na obsah přejít na navigaci

Linux E X P R E S, Šifrovací token iKey 3000

Šifrovací token iKey 3000

Všude tam, kde je potřeba zabezpečit přístup ke stanicím, do lokální sítě nebo VPN či k aplikacím a službám na serveru, se používají autentizační procesy založené na různých mechanismech. Jedním z těch silnějších je nasazení digitálních certifikátů - princip založený na asymetrické kryptografii (privátní a veřejný klíč), který je použit například i v elektronickém podpisu. Václav Vinklát .


iKey 3000

Existují různé způsoby, kterými si uživatel může ochránit soukromý klíč proti krádeži a zneužití. Mezi ty jednodušší patří správné nastavení práv přístupu k souboru s tímto klíčem a ochrana (zašifrování) heslem, tzv. passphrase. Pro bezpečnější uložení soukromých klíčů a certifikátů a zároveň pohodlný proces autentizace dnes existují malá kapesní zařízení v různých provedeních. Jedním z nich je token do USB portu, který zde představíme.

Šifrovací token Ikey 3000 je předmět, který slouží k identifikaci svého držitele, podobně jako například známější čipové (smart) karty. K počítači se připojuje pomocí USB portu, není tedy potřeba speciální čtečka či další harware.

Instalace

Pro použití USB tokenu v Linuxu je potřeba mít funkční podporu USB hotplug, to už ale není problém většiny současných distribucí. Správnou detekci tokenu můžeme ověřit v seznamu připojených USB zařízení po zasunutí do portu.

# lsusb
Bus 005 Device 003: ID 04b9:1300 Rainbow Technologies, Inc. iKey 3000 Tokendebug = 0;

Dále je potřeba doinstalovat balík OpenCT, který představuje nízkoúrovňovou vrstvu poskytující ovladače pro tokeny a čipové karty. Díky spolupráci s hotplug komunikuje i s USB tokeny a mezi podporovanými nechybí ani iKey 3000. Balíček OpenCT bývá přímo součástí distribucí, většinou i s nachystaným init skriptem, kterým spustíme službu:

# /etc/init.d/openct start

Poté můžeme vyzkoušet utilitu openct-tool a pokusit se identifikovat vložený token:

# openct-tool list
0 Rainbow iKey 3000

Pokud něco není v pořádku, je potřeba zkontrolovat konfigurační soubor /etc/openct.conf, který by měl mít nastavené v našem případě tyto parametry:

hotplug = yes;
ifdhandler = /usr/sbin/ifdhandler;
driver  ikey3k {
ids = {
usb:04b9/1300,
};
};

Dále budeme potřebovat systém rozšířit o vrstvu, která umožní přístup aplikací k uvedenému technickému zařízení pomocí rozhraní PKCS #15. Pro Linux máme k dispozici implementaci nazvanou OpenSC.

Po nainstalování (balíček opensc) je třeba upravit konfigurační soubor
/etc/opensc.conf.
Jeho výchozí obsah bývá dobře okomentovaný a zhruba nastavený v ukázkovém souboru
/usr/share/opensc/opensc.conf.example. Pro začátek by mělo stačit použít nastavení v
následující podobě:
app default {
debug = 0;
profile_dir = /usr/share/opensc;
framework pkcs15 {
use_caching = true;
}
}

Jako první pokus si můžeme otestovat například výpis všech objektů na tokenu pomocí nástroje pkcs15-tool, který slouží pro manipulaci s datovými strukturami na tokenech:

# pkcs15-tool -D

Pokud místo seznamu objektů obdržíme hlášení PKCS#15 initialization failed: Unsupported card, nesmíme brát doslovně informaci, že vlastníme nepodporovaný token. Znamená to, že ještě nebyl inicializován. Naopak pokud obsahuje nějaké objekty po předchozích použitích, je možno je zrušit a token dostat do tohoto neinicializovaného stavu příkazem # pkcs15-init -E.

iKey 3000 a klíče

Inicializace tokenu

Mějme tedy vložený neinicializovaný token. Nejdříve bude potřeba založit v něm potřebné datové struktury a přiřadit ho ke konkrétní osobě, tj. nastavit uživatelův PIN. Ve firemním nasazení je možno nastavit ještě PIN pro správce (Security Officer PIN - SOPIN), bez kterého nelze úspěšně provádět některé operace. Pomineme nyní tuto variantu a inicializujeme token bez SOPIN. K inicializaci a personalizaci slouží program pkcs15-init, provedeme tedy s jeho pomocí počáteční naformátování:

# pkcs15-init -C --no-so-pin

a založíme nový PIN:

# pkcs15-init -P --auth-id 01 --label "Vasek"

PIN může obsahovat číslice a znaky abecedy. Pokud by token používalo více lidí, může být nastaveno více PINů. Správně zadaný PIN umožňuje přístup k objektům, které jsou identifikovány stejným identifikátorem auth-id. Podobně jako např. u SIM karet, patří k PINu ještě PUK kód, který slouží k odblokování, např. po vyčerpání limitu neúspěšných pokusů.

Dále si k této nové identitě vygenerujeme dvojici RSA klíčů. Použijeme opět jednu z funkcí programu pkcs15-init, která tentokrát aktivuje vnitřní generátor klíčů v tokenu.

# pkcs15-init -G rsa/1024 --auth-id 01 --label "Vasek"

Při generování a práci s objekty je dobré pro přehled průběžně sledovat změny ve výpisu objektů na tokenu: # pkcs15-tool -D .

Pokud máme klíče, můžeme vygenerovat SSL certifikát ve formátu PEM pomocí OpenSSL, který umí komunikovat a šifrovat tokenem pomocí knihovny opensc-pkcs11.so:

# openssl
OpenSSL> engine dynamic -pre \\
SO_PATH:/usr/lib/opensc/engine_pkcs11.so   \\
-pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD \\
-pre MODULE_PATH:/usr/lib/pkcs11/opensc-pkcs11.so
OpenSSL> req -engine pkcs11 -new -key id_45 -keyform engine -out cert.pem -text
-x509

Nakonec certifikát, uložený v souboru cert.pem, vložíme do tokenu:

pkcs15-init -X cert.pem --auth-id 01 --id 45

Z uvedeného postupu je patrné, že privátní klíč se vůbec nedostal mimo token, výrobce dokonce tvrdí, že ani není možnost ho přečíst, a tedy ani zálohovat. Zřejmě proto také existuje i možnost importovat privátní klíč vygenerovaný jiným (vnějším) generátorem, protože existují aplikace, ve kterých by případná fyzická ztráta nebo porucha tokenu představovala i ztrátu dat (např. šifrované soubory).

Použití

V Linuxu existuje velká řada aplikací, které umějí používat bezpečnostní hardware pomocí rozhraní a knihoven OpenSC. V první řadě mezi ně patří autentizační vrstva PAM a tedy i programy, které ji používají. Dále jmenujme OpenSSL, OpenSSH a OpenVPN pro bezpečnou komunikaci, prohlížeč Mozilla pro provoz bezpečných www aplikací, GnuPG pro podepisování zpráv, a další.

Jako poměrně jednoduchý příklad použijeme PAM modul pro OpenSC a ukážeme funkčnost tokenu na přihlašovacím mechanismu do systému. Modul pam_opensc.so by se měl do adresáře /lib/security nainstalovat jako součást opensc. Pokud ne, bývá zvlášť v samostatném balíčku nebo jako volitelný parametr při instalaci.

Token může posloužit nejen implementátorům bezpečnostních řešení ve větších projektech, ale i individuálním uživatelům. Správným nasazením se dají sjednotit různé autentizační procesy a nahradit několikeré zadávání různých hesel.

Zasáhneme tedy do souboru /etc/pam.d/system-auth a nahradíme dosavadní modul provádějící autentizaci heslem za modul pro token. V případě ponechání původního modulu by po selhání autentizace tokenem podle pořadí řádků následovala možnost dalšího mechanismu.

auth               sufficient pam_opensc.so
#auth   sufficient  pam_unix.so likeauth nullok

Nakonec v domovském adresáři každého uživatele, který bude přistupovat ke stanici, vytvoříme adresář .eid a vložíme certifikát, ke kterému se bude muset prokazovat privátním klíčem v tokenu.

mkdir /home/vasek/.eid
pkcs15-tool -r 45 -o -/home/vasek/.eid/authorized_certificates
chown vasek /home/vasek/.eid -R

Přepnutím do nepřihlášené konzole můžeme ihned vyzkoušet, zda se nám podařilo správné nastavení. Jako superuživatel si certifikát obdobně umístíme i do /root/.eid, abychom se mohli přihlásit i tam. Přihlašovací proces by měl vyžadovat jméno a místo klasického hesla PIN.

login: vasek
Using card reader Rainbow iKey 3000
Enter PIN131 [Vasek]:
linux#

Pokud není vložen token, přihlašování skončí neúspěšně. Obdobně se nyní začne chovat i přihlášení do grafického prostředí (XDM), příkaz su a spuštění programu pod jiným uživatelem.

Zařízení produkuje americká společnost SafeNet Inc., která se dlouhodobě specializuje na bezpečnost v informačních technologiích. Mezi jeho zajímavé vlastnosti patří:

  • podpora v Linuxu (PKSC#15 API);
  • hardwarová podpora RSA (1024bit), MD5;
  • vnitřní hardwarový RSA generátor párů klíčů - privátní klíč nikdy neopouští token;
  • možnost ukládat do tokenu jakékoliv jiné klíče generované pomocí softwaru;
  • k dispozici volných 20 kB na EEPROM pro ukládání certifikátů a klíčů;
  • bezpečný obal - k elektronice se nelze dostat bez viditelného poškození;
  • Bezpečnostní evropská certifikace ITSEC E4 High, OPSEC NG;
  • data na tokenu jsou chráněna PINem, který se zadává po připojení k počítači.

Nahoru

Odkazy

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz