home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 March / Chip_2001-03_cd1.bin / obsahy / Chip_txt / TXT / 134-136.TXT < prev    next >
Text File  |  2001-02-03  |  11KB  |  106 lines

  1. PKCS#10
  2. Äßdßme o certifikßt
  3. 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φ. 
  4.  
  5. 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. 
  6. 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. 
  7.  
  8. Standard PKCS#10, verze 1.7
  9. 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). 
  10.  
  11. Pevnß pravidla, prom∞nn² obsah
  12. 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. 
  13. 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.
  14. <1> Syntaxe ₧ßdosti o certifikßt
  15.  
  16. CertificationRequest ::= SEQUENCE {
  17. certificationRequestInfo      CertificationRequestInfo,
  18. signatureAlgorithm            AlgorithmIdentifier{{ SignatureAlgorithms }},
  19. signature                     BIT STRING}
  20.  
  21. CertificationRequestInfo ::= SEQUENCE {
  22. version            INTEGER { v1(0) } (v1,...),
  23. subject            Name,
  24. subjectPKInfo     SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
  25. attributes         [0] Attributes{{ CRIAttributes }}}
  26.  
  27. AlgorithmIdentifier {ALGORITHM:IOSet } ::= SEQUENCE {
  28. algorithm       ALGORITHM.&id({IOSet}),
  29. parameters      ALGORITHM.&Type({IOSet}{@algorithm}) OPTIONAL}
  30.  
  31. SubjectPublicKeyInfo { ALGORITHM : IOSet} ::= SEQUENCE {
  32. algorithm        AlgorithmIdentifier {{IOSet}},
  33. subjectPublicKey    BIT STRING}
  34.  
  35. PKInfoAlgorithms ALGORITHM ::= { ...-- libovoln² definovan² algoritmus --}
  36.  
  37. Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }}
  38.  
  39. CRIAttributes  ATTRIBUTE  ::= {... -- libovolnΘ definovanΘ atributy --}
  40.  
  41. Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {
  42. type       ATTRIBUTE.&id({IOSet}),
  43. values     SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})}
  44.  
  45. Obsah ₧ßdosti
  46. 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∞: 
  47. û Version je Φφslo verze (pro nßmi popisovan² standard by to m∞la b²t 0).
  48. û 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).
  49. û 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).
  50. û- 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∞. 
  51. 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
  52. challengePassword ATTRIBUTE ::= {
  53. WITH SYNTAX DirectoryString {pkcs-9-ub-challengePassword}
  54. EQUALITY MATCHING RULE caseExactMatch
  55. SINGLE VALUE TRUE
  56. ID pkcs-9-at-challengePassword
  57. }, 
  58. p°iΦem₧ typ DirectoryString je definovßn v norm∞ X.520. 
  59. 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.
  60. 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.
  61. <2> V²pis obsahu ₧ßdosti o certifikßt
  62.  
  63. Data: 
  64.    Version: 0 (0x0)
  65.    Subject:
  66.         C=CZ, 
  67.         O=DECROS spol. s r.o. - ICO14499894 - DIC077-14499894,
  68.         CN=RNDr. Vlastimil Klima/Email=v.klima@decros.cz, 
  69.         T=kryptolog
  70.    Subject Public Key Info:
  71.         Public Key Algorithm: rsaEncryption
  72.         RSA Public Key: (1024 bit)
  73.               Modulus (1024 bit):
  74.                     00:95:62:af:17:8a:28:41:90:
  75. .........zkrßceno.......
  76.                     bc:cc:78:16:0a:2a:2f:38:37
  77.               Exponent: 65537 (0x10001)
  78.     Attributes:
  79.             a0:00
  80. Signature Algorithm: md5WithRSAEncryption
  81. 6d:3b:cc:34:37:11:4d:fe:d5:1c:b0:e9:4e:fb:08:2e:3f:26: 
  82. .........zkrßceno.......
  83. b9:c5:df:78:89:c4:ae:6b:26:3c:21:1b:c6:1d:0e:94:af:85
  84.  
  85. Vydßnφ certifikßtu
  86. 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). 
  87. 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∙. 
  88. 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). 
  89.  
  90. Zßv∞r
  91. 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.
  92.  
  93. Vlastimil Klφma, v.klima@decros.cz
  94. infotipy
  95. O ASN.1: 
  96. Jak popsat data, Chip 12/00, str. 62 û 65.
  97. Formßt certifikßt∙ podle normy X.509 v.3:
  98. Kdopak se to podepsal?, Chip 1/01, str. 130 û 133.
  99. Standard PKCS#10:
  100. www.rsasecurity.com/rsalabs/pkcs/pkcs-10/index.html
  101.  
  102. (UvedenΘ Φlßnky naleznete takΘ na www.decros.cz/Security_Division/Crypto_Research/archiv.htm) 
  103.     Chyba! Neznßm² argument p°epφnaΦe./1
  104.  
  105.  
  106.