Abychom mohli pou₧φvat zaruΦen² elektronick² podpis, musφme mφt pot°ebn² certifikßt (popsali jsme jej v minulΘm dφlu naÜeho serißlu). Znamenß to spojit se nejprve s certifikaΦnφ autoritou (poskytovatelem certifikaΦnφch slu₧eb) a o certifikßt za₧ßdat. Jak ₧ßdost o certifikßt v nejpou₧φvan∞jÜφm formßtu podle normy PKCS#10 vlastn∞ vypadß, si vysv∞tlφme nynφ.
P°i vytvß°enφ ₧ßdosti o certifikßt pou₧φvßme v₧dy n∞jak² program, jeho₧ pomocφ zadßvßme p°φsluÜnΘ ·daje, kterΘ se majφ objevit v certifikßtu, a zßrove≥ hned m∙₧eme vygenerovat sv∙j pßr klφΦ∙ (tajn² û podepisovacφ a ve°ejn² û ov∞°ovacφ). Äßdost o certifikßt za nßs program p°ipravφ sßm; p°edtφm nßs ovÜem vyzve, abychom sv²m û t°eba prßv∞ "novopeΦen²m" û podepisovacφm klφΦem ₧ßdost podepsali. V²sledkem naÜeho ·silφ a Φinnosti zmφn∞nΘho programu pak je (nßmi podepsan²) soubor dat reprezentujφcφ ₧ßdost o certifikßt.
N∞kterΘ certifikaΦnφ autority (CA), kterΘ u₧ u nßs zahßjily Φinnost, nabφzejφ vydßnφ testovacφch certifikßt∙ zdarma, co₧ ocenφme p°i zkouÜenφ vlastnostφ naÜφ budoucφ "podepsanΘ" komunikace. Na obrßzku 1 vidφte p°φklad u₧ivatelskΘho rozhranφ pro zφskßnφ takovΘho certifikßtu. Po odeslßnφ vypln∞nΘho formulß°e (prohlφ₧eΦ, v tomto p°φpad∞ MSIE, po stisku p°φsluÜnΘho tlaΦφtka sßm odeÜle ₧ßdost o certifikßt v on-line re₧imu) nßm certifikaΦnφ autorita vydß testovacφ certifikßt. TΘm∞° okam₧it∞ po odeslßnφ ₧ßdosti obdr₧φme e-mail s pokyny, jak certifikßt nainstalovat (viz obr. 2); po n∞kolika klepnutφch myÜφ je pak celß zßle₧itost ukonΦena. SnadnΘ, ₧e? U "ostr²ch" certifikßt∙ to ovÜem u₧ tak jednoduchΘ nebude û jak celß procedura vydßnφ certifikßtu vypadß, hodn∞ zßle₧φ na certifikaΦnφ autorit∞ a jejφ certifikaΦnφ politice.
Standard PKCS#10, verze 1.7
V dalÜφm textu se seznßmφme s velmi "Φerstvou" (p°ijatou pom∞rn∞ nedßvno û 26. 5. 2000) verzφ standardu PKCS#10 pro tvorbu ₧ßdosti o certifikßt. Jednß se o verzi 1.7, kterß nahradila sedm let platnou verzi 1.0. Ne₧ p°ejdeme k jejφmu obsahu, °ekneme si, v Φem byly nutnΘ zm∞ny. Jde zejmΘna o zm∞ny v odkazu na novΘ normy ITU-T a X.680 û X.690, kterΘ aktualizujφ definici jazyka ASN.1 a jeho k≤dovacφ pravidla (o ASN.1 jsme psali v Chipu 11/00, viz infotipy). Z normy byly dßle odstran∞ny veÜkerΘ odkazy na PKCS#6, kterß u₧ nenφ podporovßna û PKCS#6 toti₧ zavßd∞la vlastnφ cestu pro tzv. rozÜφ°enφ (extensions) v certifikßtech, ta vÜak byla vytlaΦena normou X.509 v.3, jak jsme o nφ psali v prosinci (Chip 12/00, viz infotipy).
Pevnß pravidla, prom∞nn² obsah
Standard popisuje syntaxi ₧ßdosti o certifikßt. Äßdost v₧dy obsahuje jmΘno subjektu, jeho ve°ejn² klφΦ (s identifikßtorem algoritmu, pro n∞j₧ byl vytvo°en) a voliteln∞ mno₧inu atribut∙. Za t∞mito ·daji nßsleduje (zaruΦen²) elektronick² podpis, jφm₧ ₧adatel o certifikßt tyto ·daje stvrzuje. Podpis p°itom vytvß°φ sv²m privßtnφm klφΦem, kter² pat°φ k ve°ejnΘmu klφΦi uvedenΘmu v ₧ßdosti. CertifikaΦnφ autorita, kterß ₧ßdost p°evezme, tak mß jistotu, ₧e ₧adatel m∞l k ve°ejnΘmu klφΦi, o jeho₧ certifikaci ₧ßdß, k dispozici i jeho privßtnφ dopln∞k, nebo¥ platnost podpisu m∙₧e ov∞°it uveden²m ve°ejn²m klφΦem.
CertifikaΦnφ autorita pak ze ₧ßdosti vybere p°φsluÜnß data (zejmΘna jmΘno subjektu a jeho ve°ejn² klφΦ), doplnφ svΘ jmΘno, sΘriovΘ Φφslo a dalÜφ polo₧ky (blφ₧e viz minul² dφl), celΘ to podepφÜe a p°evede na certifikßt podle normy X.509. Obsah ₧ßdosti o certifikßt je vid∞t v rßmeΦku 1. Zavedenφ polo₧ky atribut∙ v ₧ßdosti mß dvojφ smysl. Sem je toti₧ mo₧nΘ p°idat novΘ informace o ₧adateli, kterΘ se mohou objevit v polo₧ce extensions v certifikßtu, a takΘ informace, je₧ ₧adateli pozd∞ji umo₧nφ tento certifikßt odvolat (revokovat). ╪ada pou₧φvan²ch standardnφch rozÜφ°enφ je definovßna v norm∞ PKCS#9.
values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})}
Obsah ₧ßdosti
Jak vidφme v rßmeΦku 1, ₧ßdost se sklßdß z vlastnφ "informaΦnφ Φßsti" (certificationRequestInfo), dßle z identifikßtoru podpisovΘho algoritmu (signatureAlgorithm) a z vlastnφho podpisu (signature). Polo₧ka certificationRequestInfo obsahuje jednoznaΦnΘ jmΘno subjektu (distinguished name), jeho ve°ejn² klφΦ a voliteln∞ mno₧inu atribut∙, kterΘ obsahujφ dopl≥ujφcφ informace k subjektu (dr₧iteli). VÜechny tyto polo₧ky se vytvß°ejφ p°i vypl≥ovßnφ ₧ßdosti nebo jsou v tΘto dob∞ k dispozici. PopφÜeme si je jednotliv∞:
û Version je Φφslo verze (pro nßmi popisovan² standard by to m∞la b²t 0).
û Subject je jednoznaΦnΘ jmΘno ₧adatele o certifikßt. P°ipome≥me, ₧e to nenφ jen jmΘno a p°φjmenφ, ale celß mno₧ina jmen (bli₧Üφ popis datovΘ struktury Name viz normu X.501 a minul² dφl serißlu). P°φklad je vid∞t ve v²pisu ₧ßdosti o certifikßt v rßmeΦku 2 (polo₧ka subject se zde sklßdß ze Φty° jmen û C, O, CN, T).
û SubjectPublicKeyInfo obsahuje informaci o ve°ejnΘm klφΦi, kter² je certifikovßn. V rßmeΦku 1 vidφme, ₧e obsahuje jak identifikßtor algoritmu (AlgorithmIdentifier), tak vlastnφ hodnotu certifikovanΘho klφΦe. V identifikßtoru algoritmu (jemu₧ jsme se takΘ podrobn∞ v∞novali v minulΘm dφlu) jsou uvedeny i parametry algoritmu. Nap°φklad v rßmeΦku 2 se jednß o algoritmus RSA s 1024bitov²m modulem, parametry jsou modul algoritmu RSA a ve°ejn² exponent. Pokud nenφ algoritmus uveden, p°ednastavenß hodnota (default) je md5WithRSAEncryption (tj. RSA ve spojenφ s haÜovacφ funkcφ MD5).
û- Attributes jsou v²Üe zmi≥ovanΘ atributy. V rßmeΦku 2 nejsou vypln∞ny (zßznam a0:00 znamenß prßzdnΘ pole), nebo¥ u testovacφho certifikßtu nebyly ₧ßdnΘ atributy po₧adovßny. Atributy jsou, stejn∞ jako identifikßtor algoritmu, definovßny velmi flexibiln∞.
Jednφm z atribut∙ je tzv. challengePassword attribute, kter² specifikuje heslo, jφm₧ m∙₧e ₧adatel ₧ßdat revokaci certifikßtu (nap°φklad p°i ztrßt∞ nebo kompromitaci svΘho privßtnφho klφΦe). Data, kterß jsou v tΘto polo₧ce uvedena, pochopiteln∞ nejsou otev°enou hodnotou hesla, kterΘ CA vy₧aduje na u₧ivateli p°i odvolßvßnφ certifikßtu û certifikßt je toti₧ ve°ejn∞ dostupn² a heslo by si pak kdokoliv mohl p°eΦφst. Na druhΘ stran∞ se zde nekladou ₧ßdnΘ omezujφcφ podmφnky a specifikace obsahu tohoto atributu je pln∞ v rukou certifikaΦnφ autority. Tomu odpovφdß i obecnß syntaxe tohoto atributu
challengePassword ATTRIBUTE ::= {
WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword}
EQUALITY MATCHING RULE caseExactMatch
SINGLE VALUE TRUE
ID pkcs-9-at-challengePassword
},
p°iΦem₧ typ DirectoryString je definovßn v norm∞ X.520.
Po₧aduje se p°itom pouze to, aby ka₧dß aplikace zpracovßvajφcφ tato data byla schopna rozeznat a zpracovat vÜechny °et∞zcovΘ typy pou₧itΘ v typu DirectoryString, a v n∞m aby se pou₧φvaly pokud mo₧no pouze typy PrintableString.
DalÜφm p°φkladem atribut∙ jsou informace, kterΘ se nakonec objevφ jako rozÜφ°enφ vydanΘho certifikßtu (viz extensions certifikßtu X.509 v. 3). Jednß se o atribut extensionRequest, kter² je definovßn v PKCS#9, a to tak, ₧e p°ebφrß definici z X.509 v. 3. Dφky tomu je mno₧ina atribut∙ otev°ena dalÜφm definicφm, kterΘ se mohou vyskytnout v budoucnu.
<2> V²pis obsahu ₧ßdosti o certifikßt
Data:
Version: 0 (0x0)
Subject:
C=CZ,
O=DECROS spol. s r.o. - ICO14499894 - DIC077-14499894,
Jakmile CA ov∞°φ sprßvnost podpisu ₧ßdosti o certifikßt a dalÜφ ·daje, vydß certifikßt a vhodn²m zp∙sobem ho takΘ zve°ejnφ. Obsah certifikßtu jsme popsali v minulΘm dφlu, ale standard PKCS#10 se u₧ nezab²vß tφm, v jakΘm formßtu jej certifikaΦnφ autorita vydßvß. V∞tÜinou se nabφzejφ t°i formßty exportu: jeden podle PKCS#7, druh² ve formßtu DER podle X.509 a t°etφm je t²₧ formßt, na n∞j₧ je navφc aplikovßno p°ek≤dovßnφ do Üestibitov²ch znak∙ (tzv. k≤dovßnφ base64).
Pokud je certifikßt vydßn podle PKCS#7, objevφ se jako soubor s koncovkou p7b (PKCS#7 binary); jde pak o datov² typ signedData, v n∞m₧ lze krom∞ vlastnφho u₧ivatelova certifikßtu p°edßvat i mno₧stvφ certifikßt∙ dalÜφch. M∙₧e to b²t nap°φklad celß certifikaΦnφ cesta, vedoucφ od u₧ivatele p°es °adu nad°φzen²ch autorit a₧ ke ko°enovΘ certifikaΦnφ autorit∞, nebo r∙znΘ k°φ₧ovΘ certifikßty a takΘ tzv. CRL (Certificate-Revocation List), co₧ je seznam zneplatn∞n²ch (revokovan²ch) certifikßt∙.
Poznamenejme jeÜt∞, ₧e novß verze ₧ßdosti o certifikßt u₧ nenφ kompatibilnφ se ₧ßdostφ ve formßtu pro PEM (Privacy-Enhanced Mail, viz RFC 1424).
Zßv∞r
Prßv∞ jsme se seznßmili se standardem PKCS#10 verze 1.7, kter² definuje syntaxi a sΘmantiku jednoho z nejpou₧φvan∞jÜφch formßt∙ ₧ßdosti o certifikßt. Tato ₧ßdost obsahuje krom∞ standardnφch ·daj∙ i atributy p°enßÜenΘ jako rozÜφ°enφ do nßsledn∞ vydanΘho certifikßtu podle normy X.509 verze 3. Tyto atributy umo₧≥ujφ flexibilnφ pou₧itφ normy PKCS#10.
Vlastimil Klφma, v.klima@decros.cz
infotipy
O ASN.1:
Jak popsat data, Chip 12/00, str. 62 û 65.
Formßt certifikßt∙ podle normy X.509 v.3:
Kdopak se to podepsal?, Chip 1/01, str. 130 û 133.