Analýza prostriedkov na implementáciu Certifikačnej Autority Požiadavky 1. Funkčné moduly - tato požiadavka definuje, že systém Certifikačnej Autority (ďalej iba CA) musí implementovať moduly, ktoré jej zabezpečia dostatočnú použiteľnosť a funkčnosť v našom projekte. Identifikovali sme nasledovne potrebne funkčné moduly/časti: - implementuje hlavne schémy PKI - verejne rozhranie, ktoré umožní interakciu používateľov zo systémom CA - rozhranie, ktoré umožní manažovanie CA - generovanie self-signed CA certifikátov a CRL - generovanie certifikačných požiadaviek s bežne prístupným webovým prehliadačmi - poskytovanie klientských certifikátov/CRL - on-line validácia certifikátov - uloženie certifikátov v LDAP 2. Verejná dostupnosť - tato požiadavka vyplýva z toho že, pre tento projekt nie je potrebne vynaložiť finančné prostriedky na niektorú z komerčných CA a preto sa musíme orientovať na volne dostupne CA. Toto neznamená, že verejne CA sú menej kvalitne ako komerčné, často je to aj opak. Kvalitu ktorú verejná CA musí poskytovať je na rovnakej úrovni ako aj komerčná a je definovaná ako v tomto dokumente (čiastočne) tak aj v príslušných štandardoch (upne). 3. Podpora lokalizácie - jednou z požiadaviek na CA ktorá sa bude implementovať v tomto projekte je možnosť lokalizácie do slovenského jazyka. Pri vyhľadávaní vhodnej CA sme identifikovali tri produkty: 1. OpenCA 2. PyCA 3. XCA OpenCA OpenCA Project je snaha vytvoriť robustný, široko použiteľný a verejne dostupný CA systém implementujúci najpoužívateľnejšie protokoly s plnohodnotnou kryptografickou podporou. OpenCA je založený na mnohých verejne dostupných (ďalej Open Source) projektoch. Medzi podporujúci softvér patri OpenLDAP, OpenSSL, Apache Project, Apache mod_ssl. Vývoj projektu je rozdelený do dvoch hlavných úloh: študovanie a zlepšovanie bezpečnostných schém garantujúcich najlepší model použiteľný v CA a vo vývoji softvéru na jednoduché postavenie a manažovanie CA. PKI je jedna zo najširšie akceptovaných potrieb budúcnosti. Problém sa objavuje v tom že, čoraz viacej aplikácií môže byt zabezpečených s použitím veci ako sú certifikáty a kľúče, ale je naozaj ťažko postaviť tieto infraštruktúry, ktoré sú okrem toho aj často finančne náročné. Toto bol bod začiatku projektu OpenCA. Cieľ OpenCA je vytvorenie open source dôveryhodného systému, ktorý podporuje širokú verejnosť s dobrým, nie drahým a budúcnosti istým riešeniam pre ich základnú infraštruktúru. OpenCA sa začal v roku 1999. Základná myšlienka pozostávala z troch hlavných častí - Perlovské webové rozhranie, OpenSSL na podporu šifrovania a databáza. Tento jednoduchý koncept sa zachoval aj v dnešnej podobe projektu. Skoro všetky operácie sa môžu vykonať cez webové rozhranie. Jediný rozdiel je v tom že, existuje šesť prednastavených webových rozhraní a ich kombináciou môžeme skutočne vytvoriť rozhranie aké len chceme. Podpora šifrovania je stále cez OpenSSL. V databáze sa uchovávajú všetky užívateľské objekty ako sú žiadosti na podpísanie certifikátu (CSR - certificate signing request), žiadosti o zrušenie certifikátu (CRR - Certificate Rrevocation Request) a zoznam zrušených certifikátov (CRL - Certificate Rrevocation List). V dnešnom štádiu vývoja, tento projekt poskytuje nasledovne funkcie: " Verejne rozhranie " LDAP rozhranie " RA rozhranie " CA rozhranie " SCEP " OCSP " IP filtre pre rozhrania " Prihlásenie do systému na základe hesla " Prihlásenie do systému na základe certifikátu (vrátené smartcards) " Prístupové pravá na základe úloh " Rôzne typy certifikátov " Zrušenie certifikátu na základe osobného identifikátora " Zrušenie certifikátu na základe digitálneho podpisu " Vydávanie zoznamu zrušených certifikátov " Upozornenie o vypršaniu certifikátu " Podpora pre skoro každý webový prehliadač OpenCA je navrhnute ako distribuovane rozhranie ktoré umožňuje maximálnu flexibilitu ako pre veľké organizácie tak aj pre malé. OpenCA nie je v celosti monoliticky systém. Používa niekoľko softvérových produktov od rôznych výrobcov z open source komunity. Používa nasledovne produkty: " Apache " Mod_ssl " OpenSSL " OpenLDAP " Perl Hardvérové požiadavky OpenCA bol testovaný na niekoľko softvérových architektúr ale nie na tak veľa hardvérových. Zoznam testovaných hardvérových architektúr je zverejnený na ich webovéj stránke. Autori pripomínajú, že OpenCA je možne použiť na hociktorom systéme ktorý podporuje Apache, mod_ssl, OpenSSL a Perl. Z tohoto vyplýva obmedzenie že OpenCA nemôžeme použiť na systémoch založených na operačnom systéme Windows. Ak používame Unix/Linux systém, možne je sprovozniť OpenCA. Vo všeobecnosti je možne spustiť OpenCA na týchto systémoch: " i386 s Linux, FreeBSD, OpenBSD a NetBSD " UltraSparc s Solaris 8 a Linux " PowerPC s AIX V tomto čase sme mali možnosť obdŕžať "livecd" tejto aplikácie a čiastočne otestovať jej funkčnosť. Pri testovaní sme narazili na niekoľko problémov ktorý zapríčinili to že sme neboli schopný vytvoriť certifikát CA a tým pádom ani vyskúšať ostatne funkcie ktoré tato aplikácie poskytuje. Pri testovaní sme zaznamenali užívateľské rozhranie ktoré je veľmi intuitívne a poskytuje všetky možnosti manažovanie CA, vydávania a podpisovania certifikátov, generovanie a exportovanie zoznamov zrušených certifikátov, generovanie žiadosti o vydanie alebo podpísanie certifikátu a ďalšie funkcie ktoré je možné nájsť v dokumentácii na internetovej lokácii tejto aplikácie (www.openca.org). V tomto čase je tato aplikácia hlavným kandidátom na použite v našom projekte. PyCA Abstrakt Používanie šifrovacích technik sľubuje bezpečné využívanie Internetových služieb tikajúcich sa autentifikácie klientov a serverov a autorizovaného prístupu ku dátam. Za posledne dva roky sa zistilo že X.509 certifikáty, SSL a S/MIME sú významné a široko podporovane šifrovacie štandardy na zabezpečenie rôznych Internetových služieb ako napríklad WWW, Mail a ďalšie. Tieto štandardy vyžadujú postavenie a sprovoznenie X.509 PKI. Aj keď existuje veľa dostupnej dokumentácie aj príkladov s použitím volne dostupného softvéru pre vybudovanie primitívnej PKI s vlastnou CA, zdá s že tato úloha nie je tak jednoduchá pre väčšinu ľudí. Existuje veľa diskusii na rôznych mailingoch ohľadom toho ako generovať self-signed (podpísaný sami sebou) CA certifikát, ako generovať požiadavku na certifikát pomocou známych webových prehliadačoch a ako poskytnúť klientský certifikáty alebo zoznamu zrušených certifikátov na prebratie (download). Navyše ak nejaká spoločnosť chce byt trochu serioznejsia ohľadom certifikátov musí sa starať o kritické otázky bezpečnosti CA. Tento nastroj (pyCA) sa snaží uľahčiť ľuďom postaviť a sprovoznit vlastnú CA ktorá splna požiadavky na dostatočne bezpečný proces certifikácie. Programový balík pyCA sa tiež snaží znížiť potrebu administratívnych úloh a frustráciu užívateľov, poskytovaním pohodlného webového rozhrania užívateľom kontaktujúcim certifikačnú autoritu. Funkcie V aktuálnom štádiu vývoja tohto programového balíka sú implementovane nasledovne funkcie: " Generovanie CA hierarchie certifikátov a CRLs " Generovanie požiadaviek na certifikát s široko dostupnými webovými prehliadačmi " Nastroj na vyhľadávanie klientskych certifikátov uložených v OpenSSL databáze " Stiahnutie klientskych certifikátov/ CRLs s príslušnými MIME typmi " On-line validácia certifikátov " Uloženie všetkých certifikátov v LDAP " Skripty umožňujúce vykonanie procesu certifikácie v izolovanom prostredí (nie sieťovom) s pomocou privátneho kľúča (kľúčov) CA. " Jednoduchá konfigurácia na základe OpenSSL konfiguračného súbora Prehľad systémových architektúr umožňujúcich sprovoznenie pyCA Treba napomenúť že pyCA implementuje CA - nie dôveryhodný systém. To znamená že, žiadny privátny kľuč užívateľov nie je v žiadnom momente zachovaný od strane pyCA. Užívatelia sami sa musia starať o zálohovanie ich privátnych kľúčov a certifikátov. Nasledovne systémy sú časťou PKI: Klientsky systém Toto je systém cez ktorý užívateľ pristupuje službám PKI bežne cez mailoveho klienta alebo webové rozhranie. Užívateľ vytvorí dvojicu kľúčov sám a sám sa o nich aj stará. Verejný systém servera Verejný systém servera (serverov) obsahuje (ukladá) iba verejne certifikačné dáta ako vydane klientske/serverovske certifikáty, CRL a na nim bežia služby ako mail, WWW a/alebo LDAP. Tieto služby umožňujú užívateľom prístup k certifikačným dátam. Žiadny privátny kľuč nie je uložený na systémoch. Úlohou zodpovednej osoby (administrátora) je aby zabezpečil systém bežnými prostriedkami (firewally atd.). Služby ktoré poskytuje systém by tiež mali byt zabezpečené napríklad SSL protokolom aby integrita systému bola zaistená. Privátny CA systém Privátny kľuč CA by mal byt uložený na izolovanom systéme (nie sieťovom) ktorý je iba prístupný osobám zodpovedným za vydávanie certifikátov (napríklad notebook uložený na vhodnom mieste by bol dobre riešenie). Transport údajov medzi týmto systémom a verejným systémom sa vykonáva za pomoci vymeniteľného uložiska dát. V prípade že je v SSL podpora pre šifrovacie média je odporúčané aby sa privátny kľuč nachádzal na takomto médiu (média ako napríklad smartcards). Požiadavky Na spustenie tohoto programového balíka potrebujeme: " Systém s operačným systémom Unix resp. Linux " OpenSSL 0.9.4 alebo novšie Na spustenie CGI-BIN programov potrebujeme " Webovy server s podporou CGI-BIN ako napríklad Apache. Lepšie by bolo použiť webovy server s podporou SSL ako napríklad ApacheSSL alebo Apache mod_ssl " Jeden z nasledujúcich webových prehliadačov - Netscape Navigator, Mozilla alebo Opera ktorý požuvajú tág na asymetrické generovanie kľúčov - Microsoft Internet Explorer 4 alebo novší (ver. 3 nie je podporovaná) Na používanie LDAP na uloženie certifikátov " LDAP server (napríklad OpenLDAP) konfigurovany na uloženie certifikačných atribútov " Python-LDAP ktorý potrebuje OpenLDAP na jeho vybudovanie V tomto čase aplikácia nebola otestovaná tak že nemožno detailnejšie hovoriť o jej výhodách resp. nevýhodách viazaných konkrétne pre náš projekt. Z informácií ktoré sme obdŕžali z dokumentácie ktorú poskytuje autor tejto aplikácie sme usúdili že tato aplikácia je vhodným kandidátom pre náš projekt keďže implementuje hlavne požiadavky uvedené v našom projekte. XCA Tato aplikácia je grafické užívateľské rozhranie pre OpenSSL, RSA verejne kľúče, certifikáty, podpisovanie certifikátov a zrušenie certifikátov. Kľúče sú zašifrované v databáze. XCA podporuje okrem štandardných PEM a DER formátov, importovanie a exportovanie PKCS#12 formátov a importovanie PKCS#7 formátov žiadosti o podpísanie certifikátu. Certifikáty môžu byt vytvorene samopodpisovaním, podpisovaním zo druhej strane (iné CA) alebo podpisovaním PKCS#10 žiadosti. Platnosť certifikátov a X509.v3 extenzii môže byt upravená aby vyhovovala požiadavkám. Implementovaná je stromová štruktúra ktorá zobrazuje vzťahy medzi certifikátmi. Aplikácia sa stará aby sa nevytvorili duplicitne certifikáty overením sériových čísiel pri importovaní alebo vytváraní certifikátov. Certifikačné šablóny môžu byt použité na uľahčenie procesu vytvárania a podpísania certifikátov a žiadosti. Vydane certifikáty môžu byt zrušené a zoznam zrušených certifikátov môže byt vygenerovaný a exportovaný. Externe zoznamy zrušených certifikátov môžu byt importovane a preskúmané. Funkcie Databáza " Používa sa jeden databázový súbor pre uchovanie všetkých objektov: kľúčov, žiadosti a certifikátov. " transakcie, obnova a databázové extenzie sú použité na zachovanie konzistentnosti db. Kľúče " importovanie a exportovanie PEM, DER, PKCS#8 privátnych a verejných RSA kľúčov " generovanie kľúčov variabilnej dĺžky. " Kľúče sú v db zašifrované 3-DES algoritmom. PKCS#10 Žiadosti " Importovanie a exportovanie žiadosti. " Generovanie žiadosti. X509 Certifikáty " Generovanie certifikátov samopodpisaných a podpísaných druhou osobou. " Stromové zobrazenie certifikátov. " Všetky X509 extenzie sú implementovane. " Sériové čísla certifikátov sú automaticky inkrementuju. " Prednastavenie sériového čísla certifikátu " Exportovanie CRL pre CA certifikáty " Generovanie žiadosti z certifikátu. " Importovanie DER, PEM and PKCS#12 formátov. " Podpisovanie a šifrovanie súborov v PEM PKCS#7 formáte " Možnosť zvoliť si algoritmus na podpisovanie Šablóny " Generovanie prednastavených CA certifikátov, šablóny klientskych a serverovských certifikátov " Certifikáty a žiadosti môžu používať šablóny Zoznam zrušených certifikátov " Importovanie, exportovanie a detailne zobrazenie týchto zoznamov Existuje okrem verzie pre Unix-Linux aj verzia pre Windows operačné systémy. Výhodou tejto aplikácie je že pri použití na izolovanom systéme predstavuje veľmi bezpečné riešenie na implementáciu CA. Prenos dát medzi takto izolovanom systéme a verejným serverom by sa uskutočňoval pomocou prenosného uložiska dát. Nevýhodou tohto systému je že neumožňuje interakciu užívateľa zo systémom čo znamená že by sa muselo implementovať ďalšie rozhranie ktoré by umožnilo užívateľom vytvárať žiadosti o certifikát alebo podpísanie certifikátu, poskytnúť zoznam zrušených certifikátov ako aj žiadosť o zrušenie certifikátu. Okrem toho nevýhoda tohto systému je že ukladá privátne kľúče do databázového súboru čo znamená že pri kompromitácii takéhoto systému sú kompromitovane aj privátne kľúče CA. Lepšie riešenie by bolo keby systém používal privátny kľuč napríklad z pamäťovej karty (smarcard). Ďalšia nevýhoda je nemožnosť lokalizácie aplikácie do slovenského jazyka. Zoznam použitých skratiek CRL Certificate Revocation Lis - Zoznam zrušených certifikátov CRR Certificate Revocation Request - Žiadosť o zrušenie certifikátu CSR Certificate Signing Request - Žiadosť o podpísanie certifikátu LDAP Lightweight Directory Access Protocol - skupina protokolov na pristupovanie k informačným adresárom (ktoré obsahujú napríklad e-mail adresy a verejne kľúče) PKCS Public Key Cryptography Standards - šifrovacie štandardy verejného kľúča, ktoré boli vytvorene organizáciou RSA Security a sú široko používané v PKI PKCS#10 Definuje ASN.1 štruktúru žiadosti o podpísanie certifikátu RA Registration Authority - autorita zodpovedná na registrovanie a manažovanie žiadosti o vydanie certifikátu SCEP Simple Certificate Enrollment Protocol - je protokol vytvorený spoločnosťou Cisco a používa sa na riadenie komunikácie medzi PKI a sieťovými komponentmi ako router, switch a ďalšími VPN komponentmi. SPKAC Signed Public Key And Challenge - je štandard na žiadosť o podpísanie certifikátov ktorý používa Netscape. DER Distinguished Encoding Rules - je binárny ASN.1 štandard na kódovanie dát. PEM Privacy-Enhanced Mail - je base64 kódovaná verzia DER formátovaných dát s pridanou hlavičkou a pätou na prenášanie pomocou emailu.