Mikilvæg gagnasnið

Kynntu þér helstu dulritunar- og vottorðasnið, þar á meðal X.509, PKCS 7, PKCS 10, PKCS 12, ASN.1 og PEM.

Mikilvæg gagnasnið

X.509

X.509 er hinn eini sanni staðall fyrir stafræn vottorð. Áður fyrr voru til keppinautar á borð við OpenPGP, en þeir eru mun sjaldnar notaðir nú á dögum. En bíddu við ... X.509 er í rauninni ekki rétti staðallinn. X.509 er í reynd ITU-T staðall, en þær skilgreiningar sem raunverulega skipta máli eru hluti af RFC 5280, það er að segja staðli frá IETF en ekki ITU-T. Þessi RFC skilgreinir „PKI-sniðið fyrir internetið“ á grunni X.509, og það er eina sniðið sem raunverulega skiptir máli í framkvæmd.

Stafrænt vottorð byggir á ósamhverfri dulritun og þá einkum stafrænum undirskriftum. Algengasta notkun stafrænna vottorða í dag er auðkenning þjóna. Allir hafa notað þau nú þegar, líklega án þess að vita að um X.509-vottorð væri að ræða: í hvert sinn sem þú ferð inn á HTTPS vefsvæði myndar vafrinn TLS-tengingu við vefþjóninn. Vefþjónninn notar X.509-vottorð til að sanna hver hann er. Þegar fólk fer til dæmis inn á vefsvæði bankans síns til að millifæra af reikningnum sínum vill það vera visst um að það sé raunverulega bankinn sem það á í samskiptum við. Árásaraðilar gætu reynt að þykjast vera vefsvæði bankans, lesa lykilorð og auðkennisnúmer notandans og millifæra svo peningana á reikning sem þeir stjórna. HTTPS hjálpar til við að koma í veg fyrir þetta, því árásaraðilarnir hafa ekki X.509-vottorð vefþjóns bankans. Þegar vafrinn segir þér að þú sért á tilteknu léni um HTTPS-tengingu tryggir vottorðið að þú sért raunverulega tengdur vefþjóni einhvers sem á það lén.

Hvernig fer vottorðið að þessu? Í vottorðinu eru tiltekin lýsigögn, dreifilykill úr dulritunarlyklapari og undirskrift vottunarstöðvar. Förum yfir þessa þrjá þætti:

Innihald X.509-vottorðs

Lýsigögn

Lýsigögn X.509-vottorðsins segja meðal annars til um hvenær það er í gildi, til hvers nota skal vottorðið og hverjum það var gefið út. Í TLS-vottorði þjóns er þar einkum að finna lén vefþjónsins. Vafrinn ber lénið sem hann reyndi að opna saman við lénið í vottorðinu. Passi þau ekki saman heldur vafrinn ekki áfram heldur birtir viðvörun. Sé vottorðið útrunnið birtir hann líka viðvörun.

Undarlegt nokk birtu vafrar oft enga viðvörun þótt þú færir inn á HTTP-svæði án TLS, þótt það sé enn óöruggara. Færirðu inn á vefþjón með ógilt X.509-vottorð gat allt eins verið um ranga uppsetningu að ræða og þú hefðir í reynd verið varinn fyrir árásaraðilum sem njósna um tenginguna þína, á meðan HTTP-tenging veitir enga vörn.

Nokkuð hefur þó þokast í þessu máli, til dæmis með Certificate Pinning. En það er efni fyrir lengra komna, svo lítum á hina tvo þættina sem eru í X.509-vottorði.

Dreifilykill

Í vottorðinu er dreifihluti ósamhverfs lyklapars. Dulritunin gerir vefþjóninum, eða almennt handhafa vottorðsins þegar um aðra notkun er að ræða, kleift að sanna að hann hafi einnig einkahluta lyklaparsins undir höndum án þess að ljóstra honum upp við biðlarann sem tengist eða nokkurn annan. Þannig getur biðlarinn verið viss um að vefþjónninn sé raunverulegur eigandi vottorðsins en ekki bara einhver sem afritaði það. Það er reyndar tiltölulega auðvelt að afrita vottorðið sjálft, enda sendir vefþjónninn afrit af því til allra sem reyna að tengjast honum. Það er erfitt eða ómögulegt að stela einkalyklinum, því hann fer aldrei af vefþjóninum. Til eru ýmsar aðferðir til að gera enn erfiðara að stela einkalyklinum, svo sem HSM og TPM.

Undirskrift vottunarstöðvar

Lýsigögnin gera biðlaranum kleift að athuga hvort vottorðið henti þessari tilteknu notkun. Dreifilykillinn sýnir að gagnaðilinn sé raunverulegur eigandi vottorðsins. En árásaraðili gæti einfaldlega búið til nýtt lyklapar og nýtt vottorð sem uppfyllir líka þessi tvö skilyrði. Hvernig ætti biðlari að vita að vottorðið sé traustsins vert?

Í vottorðinu er dulritunarundirskrift frá öðru lyklapari sem tilheyrir vottorði vottunarstöðvar (CA). Hægt er að athuga CA-vottorðið á sama hátt og það er líka undirritað af vottorði. Biðlarinn getur rakið þessa „traustkeðju“ frá svokölluðu laufvottorði upp að vottorði Root CA, sem hann þekkir á því að það er sjálfundirritað, það er að segja undirskrift vottorðsins kemur frá þess eigin lyklapari. Yfirleitt er þetta aðeins eitt eða tvö skref, svo aðeins eitt eða tvö CA-vottorð koma við sögu.

Vottunarstöðvar verða að athuga vandlega að lýsigögnin séu rétt þegar þær gefa út vottorð. Viljirðu til dæmis fá TLS-vottorð fyrir þjón á þínu eigin léni verðurðu að sanna fyrir vottunarstöðinni að þú sért raunverulegur eigandi þess. Eftir því hversu ítarleg sú athugun er færðu grunnvottorð eða Extended Validation (EV) vottorð.

Hverjum vafra og hverju stýrikerfi fylgir listi yfir fyrirfram skilgreind treyst Root CA. Notendur og stjórnendur geta bætt við fleiri treystum Root CA. Sumum Root CA er aðeins treyst í tilteknum tilgangi en önnur njóta almennara trausts. Biðlarinn athugar hvort traustkeðjan endi í treystu Root CA. Geri hún það, og séu öll vottorð í traustkeðjunni enn í gildi og lýsigögnin segi að þau séu notuð í samræmi við tilgang sinn, þá er laufvottorð vefþjónsins treyst og tengingin kemst á.

Gildistími X.509-vottorða

X.509-vottorð snúast öll um traust sem þarf að byggja upp. Eins og útskýrt var er eitt skilyrði trausts að vottorð verði að keðjast upp að treystu Root CA. Annað er að það sé innan gildistíma síns. Það þýðir yfirleitt að það sé ekki útrunnið, en vottorð gæti líka verið ógengið í gildi, venjulega vegna tæknilegra mistaka. En það er eitt skilyrði enn: vottunarstöðin sem gaf vottorðið út má ekki hafa afturkallað það. Það efni á sér sitt eigið líf og því er um það sérstök grein.

PKCS#7

PKCS#7 er svissneski vasahnífurinn meðal dulritunargagnasniða og getur innihaldið nánast hvað sem er: dulkóðuð skilaboð, undirrituð skilaboð, undirrituð og dulkóðuð skilaboð, vottorð og einkalykla

Þetta er um leið helsti ókostur sniðsins. Fái forrit eða notandi PKCS#7 í hendur liggur ekki í augum uppi hvað eigi að gera við það. Hér eru nokkur mikilvæg notkunartilvik:

  • S/MIME skilaboð eru í grunninn tölvupóstur með PKCS#7 meginmáli eða viðhengjum.
  • SCEP-beiðnir og SCEP-svör eru hvort tveggja í reynd undirrituð PKCS#7 skilaboð.
  • EST-svör eru CMS-skilaboð.

Kóðun

Algengar skráarendingar eru .p7b (DER-kóðað), .p7s (undirrituð skilaboð eða undirskrift skilaboða) og .p7m (undirrituð og/eða dulkóðuð skilaboð). PEM-kóðun með merkinu „PKCS7“ er líka skilgreind en sjaldan notuð.

Verkfæri

Í Windows geturðu opnað PKCS#7 skilaboð með því að tvísmella og Crypto-shell viðbæturnar birta þér þau. Yfirleitt geturðu þó aðeins dregið vottorð og einkalykla þeirra út úr þeim en ekki innihald skilaboðanna.

Þú getur umbreytt þessum skrám yfir á önnur snið með verkfærum á borð við OpenSSL.

PKCS#10

Vottorðsbeiðni (CSR) eins og hún er skilgreind í PKCS#10 er skrá sem lýsir því vottorði sem þú vilt fá frá vottunarstöð (CA). Hún er svipuð að byggingu og X.509-vottorð en í hana vantar undirskrift vottunarstöðvar. Þess í stað er í henni undirskrift þess sem biður um vottorðið. Þetta er engu að síður annað snið, svo hún er ekki það sama og sjálfundirritað vottorð.

Hún getur verið á tvíundarformi með DER-kóðun eða PEM-kóðuð með merkinu „CERTIFICATE REQUEST“.

PKCS#12

PKCS#12 er einnig þekkt sem PFX, einkum í Windows-umhverfi. Algengar skráarendingar eru því .pfx og .p12. Sniðið geymir X.509-vottorð og nánast alltaf tilheyrandi einkalykla, þótt það sé tæknilega séð ekki skilyrði.

Gögn í PKCS#12 skrá eru yfirleitt dulkóðuð með lykilorðum. Oft er aðeins einkalykillinn dulkóðaður, svo þú gætir dregið vottorðin út án þess að þekkja lykilorðin ef forritið þitt leyfir það (flest gera það ekki). PKCS#12 er algengasta leiðin í Windows-umhverfi til að geyma vottorð og einkalykil þess í skrá. Í Linux-umhverfi eru PEM-kóðaðar PKCS#8 skrár algengari.

Þar sem staðallinn býður upp á marga möguleika á því hvernig geyma má vottorð og einkalykla í hreiðruðum „safebags“ fylgja PKCS#12 skrám ýmis samhæfnisvandamál, til dæmis:

  • Windows er alræmt fyrir að tengja einkalykla í PKCS#12 við öll vottorð sem dregin eru út úr skránni, ekki bara það vottorð sem lykillinn á við. Innihaldi PKCS#12 skráin vottorðakeðju gæti Windows birt að kerfið hafi einkalykilinn fyrir CA-vottorðið.
  • Í macOS geturðu ekki flutt inn PKCS#12 skrár ef dulritunaralgrímin eru of ný.
  • Stundum þarf að dulkóða vottorðin í PKCS#12 skrá til þess að forritin sem taka við þeim geti dregið þau út. En sum styðja aðeins mjög gömul og veikburða algrím, sem er yfirleitt ekki vandamál þar sem upplýsingarnar eru hvort eð er opinberar. OpenSSL 3.x styður hins vegar ekki þessi gömlu og veiku algrím og neitar að opna PKCS#12 skrána.

ASN.1 og PEM

Abstract Syntax Notation One (ASN.1) er mál sem notað er til að lýsa gagnastrúktúrum. Til eru nokkrar fyrirfram skilgreindar grunngagnagerðir, svo sem heiltölur eða runur, og höfundur samskiptareglu eða skráarsniðs getur síðan skilgreint eigin gagnagerðir út frá þeim.

DER-kóðun

ITU-T staðallinn X.680 skilgreinir ólíkar kóðanir fyrir gögn sem tilgreind eru með ASN.1. Fyrir X.509-tengd gögn er DER mikilvægasta kóðunin, því það er aðeins ein leið til að kóða hverja gagnagerð. Þess vegna gefur tæting á tvíundarframsetningu gagnagerðarinnar í DER alltaf sama gildið, sem skiptir til dæmis máli þegar ASN.1-kóðuð gögn eru undirrituð.

PEM-kóðun

Fyrir margar, en ekki allar, X.509-tengdar skráargerðir geturðu annaðhvort geymt skrána á tvíundarformi með DER-kóðun eða bætt PEM-kóðun ofan á DER-kóðunina. PEM notar eingöngu ASCII-stafi og því er auðvelt að afrita og líma slíkar skrár um klippiborðið eða, fyrir nokkrum áratugum þegar það skipti enn máli, senda þær í tölvupósti.

Verkfæri

Sértu með ASN.1-kóðaða skrá og veist annaðhvort ekki af hvaða gerð hún er eða hefur ekkert forrit sem ræður við þá tilteknu gerð geturðu engu að síður afkóðað hráan ASN.1-strúktúrinn og séð hvað í honum stendur. Í Windows getur innbyggða verkfærið certutil gert þetta með skipuninni certutil -decode.