Formát je tedy následující:
|
|
From:
To: Date: |
Záhlaví podle RFC822 |
Prázdný řádek ukončující záhlaví zprávy podle RFC822 (mailu). | |
Z hlediska PEM bezvýznamný text
(vhodný pro příjemce nepodporující PEM) -----BEGIN PRIVACY-ENHANCED MESSAGE-----
Prázdná řádka oddělující PEM-hlavičky od textu zprávy Text přenášené zprávy.
Z hlediska PEM bezvýznamný text |
PEM-zpráva, která je uzavřena mezi "závorky"
-----BEGIN PRIVACY-ENHANCED MESSAGE----- a -----END PRIVACY-ENHANCED MESSAGE----- |
Jako první PEM hlavičky jsou hlavičky Proc-Type a Content-Domain.
Hlavička Proc-Type má dva parametry:
Strukturu zprávy pochopíme na následujících dvou případech převzatých z RFC1421.
Pro šifrování textu zprávy je použita symetrick šifra DES v módu CBC. Hlavička Originator-Certificate obsahuje certifikát odesilatele a hlavička Issuer-Certificate obsahuje certifikát certifikační autority, která odesilateli certifikát vydala.
Zatím jsme pomlčeli o formátu, ve kterém jsou certifikáty uváděny. Certifikát je kódován v DER formátu, a celý je pak ještě kódován Base64. Formátu certifikátu se budeme věnovat v samostatném textu. Obdobný formát má i v hlavičce Recipient-ID-Asymetric název certifikační autority, která vydala certifikát příjemce (adresáta).
Důležité je si také uvědomit, že záleží na pořadí hlaviček. Nejprve se uvádí hlavičky týkající se odesilatele, pak teprve hlavičky týkající se příjemce. Např. hlavička MIC-Info (el.podpis) se rovněž týká odesilatele, protože elektronický podpis využívá soukromý klíč odesilatele.
Hlavička Key-Info je dokonce uvedena dvakrát a pokaždé se vztahuje k certifikátu uvedemém v předchozí hlavičce. U příjemce (hlavička Recipient-ID-Asymetric) je pouze odkaz na jeho certifikát pomocí názvu certifikační autority a sériového čísla certifikátu.
-----BEGIN PRIVACY-ENHANCED MESSAGE-----
Proc-Type: 4,ENCRYPTED
Content-Domain: RFC822
DEK-Info: DES-CBC,BFF968AA74691AC1
Originator-Certificate:
MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNV
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUx
CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEU MBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+
yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3F LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIq
iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==
Key-Info: RSA,
I3rRIGXUGWAF8js5wCzRTkdhO34PTHdRZY9Tuvm03M+NM7fx6qc5udixps2Lng0+
wGrtiUm/ovtKdinz6ZQ/aQ==
Issuer-Certificate:
MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNV
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL BgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQsw
CQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN BgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
XwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XW cqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQAB
MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOx dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+x
EREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
MIC-Info: RSA-MD5,RSA,
UdFJR8u/TIGhfH65ieewe2lOW4tooa3vZCvVNGBZirf/7nrgzWDABz8w9NsXSexv
AjRFbHoNPzBuxwmOAFeA0HJszL4yBvhG
Recipient-ID-Asymmetric:
MFExCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5j
LjEPMA0GA1UECxMGQmV0YSAxMQ8wDQYDVQQLEwZOT1RBUlk=,66
Key-Info: RSA,
O6BS1ww9CTyHPtS3bMLD+L0hejdvX6Qv1HK2ds2sQPEaXhX8EhvVphHYTjwekdWv
7x0Z3Jx2vTAhOYHMcqqCjA==
qeWlj/YJ2Uf5ng9yznPbtD0mYloSwIuV9FRYx+gzY+8iXd/NQrXHfi6/MhPfPF3d
jIqCJAxvld2xgqQimUzoS1a4r7kQQ5c/Iua4LqKeq3ciFzEv/MbZhA==
-----END PRIVACY-ENHANCED MESSAGE-----
Následuje příklad zprávy MIC-only, tj. zprávy pouze elektronicky podepsané (nešifrované) a kódované Base64. V tomto případě není nutný certifikát příjemce. Zpráva může být odeslána libovolnému příjemci.
-----BEGIN PRIVACY-ENHANCED MESSAGE-----
Proc-Type: 4,MIC-ONLY
Content-Domain: RFC822
Originator-Certificate:
MIIBlTCCAScCAWUwDQYJKoZIhvcNAQECBQAwUTELMAkGA1UEBhMCVVMxIDAeBgNV
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDzAN BgNVBAsTBk5PVEFSWTAeFw05MTA5MDQxODM4MTdaFw05MzA5MDMxODM4MTZaMEUx
CzAJBgNVBAYTAlVTMSAwHgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEU MBIGA1UEAxMLVGVzdCBVc2VyIDEwWTAKBgRVCAEBAgICAANLADBIAkEAwHZHl7i+
yJcqDtjJCowzTdBJrdAiLAnSC+CnnjOJELyuQiBgkGrgIh3j8/x0fM+YrsyF1u3F LZPVtzlndhYFJQIDAQABMA0GCSqGSIb3DQEBAgUAA1kACKr0PqphJYw1j+YPtcIq
iWlFPuN5jJ79Khfg7ASFxskYkEMjRNZV/HZDZQEhtVaU7Jxfzs2wfX5byMp2X3U/
5XUXGx7qusDgHQGs7Jk9W8CW1fuSWUgN4w==
Issuer-Certificate:
MIIB3DCCAUgCAQowDQYJKoZIhvcNAQECBQAwTzELMAkGA1UEBhMCVVMxIDAeBgNV
BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMQ8wDQYDVQQLEwZCZXRhIDExDTAL BgNVBAsTBFRMQ0EwHhcNOTEwOTAxMDgwMDAwWhcNOTIwOTAxMDc1OTU5WjBRMQsw
CQYDVQQGEwJVUzEgMB4GA1UEChMXUlNBIERhdGEgU2VjdXJpdHksIEluYy4xDzAN BgNVBAsTBkJldGEgMTEPMA0GA1UECxMGTk9UQVJZMHAwCgYEVQgBAQICArwDYgAw
XwJYCsnp6lQCxYykNlODwutF/jMJ3kL+3PjYyHOwk+/9rLg6X65B/LD4bJHtO5XW cqAz/7R7XhjYCm0PcqbdzoACZtIlETrKrcJiDYoP+DkZ8k1gCk7hQHpbIwIDAQAB
MA0GCSqGSIb3DQEBAgUAA38AAICPv4f9Gx/tY4+p+4DB7MV+tKZnvBoy8zgoMGOx dD2jMZ/3HsyWKWgSF0eH/AJB3qr9zosG47pyMnTf3aSy2nBO7CMxpUWRBcXUpE+x
EREZd9++32ofGBIXaialnOgVUn0OzSYgugiQ077nJLDUj0hQehCizEs5wUJ35a5h
MIC-Info: RSA-MD5,RSA,
jV2OfH+nnXHU8bnL8kPAad/mSQlTDZlbVuxvZAOVRZ5q5+Ejl5bQvqNeqOUNQjr6
EtE7K2QDeVMCyXsdJlA8fA==
LSBBIG1lc3NhZ2UgZm9yIHVzZSBpbiB0ZXN0aW5nLg0KLSBGb2xsb3dpbmcgaXMg
YSBibGFuayBsaW5lOg0KDQpUaGlzIGlzIHRoZSBlbmQuDQo=
-----END PRIVACY-ENHANCED MESSAGE-----
Cvičení: V dalším okně Vašeho prohlížeče
si zobrazte konvertor. Pokud
používáte MS Windows, tak pomocí menu Edit/Copy a Edit/Paste (Úpravy/kopíruj
a Úpravy/vlož) vložte obsah minulé hlavičky Issuer-Certificate do vstupního
pole konvertoru a proveďte konverzi PEM -> ASN.1 & DER. Získáte tak
strukturu certifikatu v ASN.1.
(Pokud používáte X-Windows, tak přenos dat mezi okny se provádí pomocí
prostřeního tlačítka myši).
PEM používá certifikáty podle normy X.509. Tehdejší specifikace byla podle normy CCITT X.509 myslím z roku 1988. Dnes se v praxi diskutuje o normě ITU X.509 v3, která umožňuje certifikát rozšířit o další volitelné položky např. specifikující, že se jedná o certifikát certifikační autority, uživatelský certifikát atp. Princip se však nezměnil.
Jako příklad certifikátu jsem použil první uživatelský certifikát certifikační
autority CA-PVT1:
Version: 0 (0x0) | Verze formátu certifikátu |
Serial Number: 3 (0x3) | Seriové číslo certifikátu. Toto číslo identifikuje certifikát v rámci certifikační autority. |
Signature Algorithm: md5withRSAEncryption | Algoritmus použitý k el.podpisu certifikátu. |
Issuer: C=CZ, O=PVT a.s., CN=CA-PVT1/Email=ca-oper@p70x03.brn.pvt.cz | Název certifikační autority podle X.500
(C=stát, O=firma, CN=rozlišující jméno) |
Validity
Not Before: Jun 6 10:12:24 1997 GMT Not After : Jun 20 10:12:24 1997 GMT |
Platnost (od/do) |
Subject: C=CZ, O=PVT, CN=Radek Valasek/Email=valasek@brn.pvt.cz, T=420-5-41558434 | Název (specifikace) vlastníka certifikátu.
(T=telefon) |
Subject Public Key Info:
Public Key Algorithm: rsaEncryption Modulus: 00:e4:2e:e3:db:37:4d:f9:a3:87:41:40:98:23:0b: b7:34:de:ad:f9:a1:4e:07:68:28:d9:d5:ce:69:c9: ae:05:d4:69:73:1c:ca:89:23:26:89:a6:de:c7:d1: 3c:8b:0b:4f:37:f9:6f:ad:f3:63:1f:12:41:45:db: b4:07:7f:55:61 Exponent: 65537 (0x10001) |
Veřejný klíč majitele certifikátu. (Jedná se o veřejný klíč algoritmu RSA, který se skládá z modulu a exponentu.) |
Signature Algorithm: md5withRSAEncryption
86:1c:dc:df:af:39:3b:b3:62:57:c9:60:e8:c2:81:f0:d4:1e: b0:ef:be:53:1d:36:3d:f2:fa:23:39:b9:b8:6f:2d:33:99:de:
00:df:28:d0:9f:b7:98:fa:25:58:2c:78:84:f6:5f:96:90:40: 80:03:7c:f4:30:93:0c:9a:3d:a4:c9:ae:e2:ba:1c:80:51:ad:
ba:18:49:c8:f3:32:29:27:f1:9f:cb:3f:3a:b3:0a:27:d7:80: 99:2e:78:25:82:c6:c0:4b:38:47:f7:cb:33:18:f2:50:c4:f1:
69:e6:5b:20:b9:51:6c:88:1c:a5:b7:ea:9e:03:20:67:43:df:
9d:8a |
El.podpis certifikátu |
Toto byl certifikát v textovém tvaru. Levý sloupec předchozí tabulky (certifiát) se kóduje do DER formátu. Jelikož je DER-formát binární, tak se nakonec ještě certifikát kóduje do Base64. Vysledek je pak na první pohled těžko čitelný:
MIIB9jCCAV8CAQMwDQYJKoZIhvcNAQEEBQAwXDELMAkGA1UEBhMCQ1oxETAPBgNV
BAoTCFBWVCBhLnMuMRAwDgYDVQQDEwdDQS1QVlQxMSgwJgYJKoZIhvcNAQkBFhlj YS1vcGVyQHA3MHgwMy5icm4ucHZ0LmN6MB4XDTk3MDYwNjEwMTIyNFoXDTk3MDYy
MDEwMTIyNFowbzELMAkGA1UEBhMCQ1oxDDAKBgNVBAoTA1BWVDEWMBQGA1UEAxMN UmFkZWsgVmFsYXNlazEhMB8GCSqGSIb3DQEJARYSdmFsYXNla0Bicm4ucHZ0LmN6
MRcwFQYDVQQMEw40MjAtNS00MTU1ODQzNDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC QQDkLuPbN035o4dBQJgjC7c03q35oU4HaCjZ1c5pya4F1GlzHMqJIyaJpt7H0TyL
C083+W+t82MfEkFF27QHf1VhAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAhhzc3685 O7NiV8lg6MKB8NQesO++Ux02PfL6Izm5uG8tM5neAN8o0J+3mPolWCx4hPZflpBA
gAN89DCTDJo9pMmu4rocgFGtuhhJyPMyKSfxn8s/OrMKJ9eAmS54JYLGwEs4R/fL
MxjyUMTxaeZbILlRbIgcpbfqngMgZ0PfnYo=
Cvičení: V dalším okně Vašeho prohlížeče
si zobrazte konvertor. Pokud
používáte MS Windows, tak pomocí menu Edit/Copy a Edit/Paste (Úpravy/kopíruj
a Úpravy/vlož) vložte obsah předchozího odstavce do vstupního pole konvertoru
a proveďte konverzi PEM -> ASN.1 & DER. Získáte tak strukturu certifikátu
v ASN.1.
(Pokud používáte X-Windows, tak přenos dat mezi okny se provádí pomocí
prostřeního tlačítka myši).
Komunikace uživatele s certifikační autoritou je věcí politiky certifikační
autority. O vydání certifikátu se může žádát např. předáním žádosti na
disketě. PEM [RFC1424] nabízí jako svou variantu formát žádosti posílané
elektronickou poštou. Formát této zprávy objasníme na příkladu:
To: ca-oper@p70x03.brn.pvt.cz
From: odesilatel@firma.cz -----BEGIN PRIVACY-ENHANCED MESSAGE-----
text
|
Takový certifikát obsahuje:
Version: 0 |
Serial Number: 0 |
Signature Algorithm: algoritmus, kterým žadatel podepsal svůj certifikát |
Issuer: totéž co obsahuje Subject |
Validity platnost certifikátu
(CA může určit jinak - jedná se přece o žádost)
Not Before: platnost od Not After : platnost do |
Subject: Specifikace (název) žadatele podle X.500 |
Subject Public Key Info: Veřejný klíč žadatele |
Elektronický podpis vytvořený soukromým klíčem žadatele. |
Certifikační autorita ověří elektronický podpis na žádosti o certifikát
a též elektronický podpis textu zprávy z hlavičky MIC-Info (text může být
libovolný ale neprázný). Jsou-li oba podpisy správné pak se teprve certifikační
autorita začne zabývat certifikátem, tj. ověří si totožnost žadatele např.
podle občanského průkazu a posléze certifikát podepíše a odešle zpět žadateli
již certifikační autoritou podepsaný certifikát. Příklad:
From: ca-oper@p70x03.brn.pvt.cz
To: odesilatel@firma.cz -----BEGIN PRIVACY-ENHANCED MESSAGE-----
text
|
Certifikační autorita přijme žádost o zneplatnění certifikátu, prověří totožnost žadatele a certifikát uveřejní v CRL. CRL je seznam zneplatněných certifikátů, který vydává certifikační autorita.
CRL obsahuje pro každý zneplatněný certifikát:
Schématicky je obsah CRL znázorněn v následující tabulce:
Signature Algorithm: algoritmus, kterým je CRL podepsáno |
Issuer: Specifikace (název) CA podle X.500 |
Last update: Datum a čas vydání předchozího CRL |
Next update: Datum předpokládaného příštího vydání CRL |
Revokované certifikáty
. . . |
Elektronický podpis CRL. |
Certifikačí autorita může podle normy PEM zprávou typu CRL rozesílat
CRL:
To: vsichni
From: ca-oper@p70x03.brn.pvt.cz -----BEGIN PRIVACY-ENHANCED MESSAGE-----
|
Vnoření certifikačních autorit není omezeno. Zpráva tak může obsahovat i delší řetězec certifikátů.
Certifikační autorita nejvyšší úrovně (root CA) používá certifikát, který si podepsala sama (self signed). Pomocí tohoto certifikátu se verifikuje certifikát nižší CA atd. Nakonec se až může verifikovat certifikát uživatele. Např. v PEM certifikát adresáta. Certifikáty root CA se často distribuují přímo se software.
Často takový certifikát bývá uzavřen do "závorek":
-----BEGIN CERTIFICATE-----
Base64(DER(certifikát))
-----END CERTIFICATE-----
Příklad:
-----BEGIN CERTIFICATE-----
MIIB9jCCAV8CAQMwDQYJKoZIhvcNAQEEBQAwXDELMAkGA1UEBhMCQ1oxETAPBgNV BAoTCFBWVCBhLnMuMRAwDgYDVQQDEwdDQS1QVlQxMSgwJgYJKoZIhvcNAQkBFhlj YS1vcGVyQHA3MHgwMy5icm4ucHZ0LmN6MB4XDTk3MDYwNjEwMTIyNFoXDTk3MDYy MDEwMTIyNFowbzELMAkGA1UEBhMCQ1oxDDAKBgNVBAoTA1BWVDEWMBQGA1UEAxMN UmFkZWsgVmFsYXNlazEhMB8GCSqGSIb3DQEJARYSdmFsYXNla0Bicm4ucHZ0LmN6 MRcwFQYDVQQMEw40MjAtNS00MTU1ODQzNDBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC QQDkLuPbN035o4dBQJgjC7c03q35oU4HaCjZ1c5pya4F1GlzHMqJIyaJpt7H0TyL C083+W+t82MfEkFF27QHf1VhAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAhhzc3685 O7NiV8lg6MKB8NQesO++Ux02PfL6Izm5uG8tM5neAN8o0J+3mPolWCx4hPZflpBA gAN89DCTDJo9pMmu4rocgFGtuhhJyPMyKSfxn8s/OrMKJ9eAmS54JYLGwEs4R/fL MxjyUMTxaeZbILlRbIgcpbfqngMgZ0PfnYo= -----END CERTIFICATE----- |
A žádost o certifikát bývá uzavřena do "závorek":
----BEGIN NEW CERTIFICATE REQUEST---
Base64(DER(zadost))
----END NEW CERTIFICATE REQUEST----
Používání těchto závorek však nebývá povinné.