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

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

Konference Cloud computing v praxi

Š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 .


reklama

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

Top články z OpenOffice.cz

Příspěvky

Lukáš Zapletal Digitální podpis
zapletal 1. 06. 2006, 09:29:34
Odpovědět  Odkaz 
Je to tedy použitelné pro digitální podpis ve státní správě?
Jirka Vrba Re: Digitální podpis
baf 1. 06. 2006, 17:30:02
Odpovědět  Odkaz 
Já myslím, že ano. Pokud máš kvalifikovaný certifikát, který do tokenu uložíš, a poštovního klienta, který s tokenem umí pracovat. Zkusil jsem variantu, že mám certifikát p12 na tokenu a thunderbird. Thunderbird umí přistupovat na token po doinstalování knihovny a podepisovat pomocí S-MIME umí taky.
Šifrovací token iKey 3000
michael last 11. 11. 2008, 00:29:58
Odpovědět  Odkaz 
Dotaz na token.Je zde popsán program pro linux.Je to podle mě nějaký program pro token.Existuje i něco takového pro windows.?Nějaký program nebo utilita?Děkuji .M ichael Last.
P.s.Doufám že kryptovací algoritmus je dostatečně kvalitní AES, Blowfish aj.Děkuji za odpověd. Michael Last
Jirka Vrba Re:Šifrovací token iKey 3000
baf 11. 11. 2008, 07:22:45
Odpovědět  Odkaz 
aplikace pro windows jsou na instalacnim CD.
Šifrovací token iKey 3000
radeczech 24. 11. 2008, 11:23:57
Odpovědět  Odkaz 
Debian mi iKey 3000 najde a při výpisu opensc-tool --list-readers ho vidím (1 openct Rainbow iKey 3000), ale nedaří se mi inicializovat. Příkazy pkcs15-tool -D a pkcs15-init -E odpoví následující hláškou:
winscard_clnt.c:3232:SCardCheckDaemonAvailability() PCSC Not Running
Card not present.
Nastavení v konfiguračních souborech (openct.conf a opensc.conf) mám stejné, jak uvádí návod.
Pls nějaký nápad?
Re:Šifrovací token iKey 3000
radeczech 24. 11. 2008, 12:22:01
Odpovědět  Odkaz 
Už jsem vyřešil, pomohlo vyjmout token a /etc/init.d/openct restart, protože opensc hledat token v jiném slotu. Navíc jsem ještě přinistalovat pcscd a libccid.
Jinak na Debian Etch jsem při generování certifikátu musel opravit openssl příkaz:
engine dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:opensc-pkcs11.so
Šifrovací token iKey 3000
steve 4. 11. 2010, 18:52:25
Odpovědět  Odkaz 
Je token hardware nebo software?

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



 
 

Václav Vinklát


| blog


Soutěž - reproduktory Trust

Redakční blog

Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Pavel Fric

Pavel Fric, 23. říjen

Nové motivy pro přehrávač Sayonara

Pomozte rozšířit možnost měnit vzhled programu za běhu


Pavel Fric

Pavel Fric, 28. únor

Lollypop


Všechny blogy »