In dit document worden de meest gebruikelijke bestandsindelingen en -coderingen voor de openbare sleutelinfrastructuur (PKI) beschreven.
Cisco raadt kennis van de volgende onderwerpen aan:
Dit document is niet beperkt tot specifieke software- en hardware-versies.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u de potentiële impact van elke opdracht begrijpen.
Raadpleeg Cisco Technical Tips Convention voor informatie over documentconventies.
Abstract Syntax notatie 1 (ASN.1) is een formele taal voor de definitie van gegevenstypen en -waarden, en hoe deze gegevenstypen en -waarden in verschillende gegevensstructuren worden gebruikt en gecombineerd. Het doel van de standaard is de abstracte syntaxis van informatie te definiëren zonder te beperken hoe de informatie voor transmissie wordt gecodeerd.
Hier is een voorbeeld uit de X.509 RFC:
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
Validity ::= SEQUENCE {
notBefore Time,
notAfter Time }
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
Raadpleeg deze documenten van de standaardinstellingen van de International Telecommunication Union (ITU-T):
Zoeken op ITU-T-aanbevelingen - Zoeken naar X.509 in Rec. of standaard met Taal ingesteld op ASN.1.
De ITU-T heeft een standaardmanier gedefinieerd om gegevensstructuren te coderen die in ASN.1 zijn beschreven in binaire gegevens. X.690 definieert Basis-coderingsregels (BER) en de twee subgroepen daarvan, Canonical Encoding Rules (CER) en gescheiden coderingsregels (DER). Alle drie zijn gebaseerd op gegevensvelden van het type-lengte die in een hiërarchische structuur zijn ingepakt en die zijn opgebouwd uit SEQUENCEs, SETs en KEUZEs, met deze verschillen:
Voorbeeld: In DER wordt de 20-bits waarde 1010 1011 100 1101 1110 gecodeerd als:
0x03
(bitstring)0x04
(bytes)0x04 ABCDE0
0x030404ABCDE0
Het leidend 04
betekent dat de laatste 4 bits (gelijk aan het cijfer 0
) van de gecodeerde waarde moet worden weggegooid omdat de gecodeerde waarde niet op een bytegrens eindigt.
Raadpleeg deze documenten op de website van de TU-T-standaard:
Raadpleeg de volgende documenten op de Wikipedia-site:
Cisco IOS, Adaptieve security applicatie (ASA), en andere apparaten tonen de inhoud van DER als een hex stortplaats met de show in werking stellen-configuratie opdracht. Dit is de output:
crypto pki certificate chain root
certificate ca 01
30820213 3082017C A0030201 02020101 300D0609 2A864886 F70D0101 04050030
1D310C30 0A060355 040B1303 54414331 0D300B06 03550403 1304726F 6F74301E
170D3039 30373235 31313436 33325A17 0D313230 37323431 31343633 325A301D
...
Dit soort hex-afvalhoop kan op verschillende manieren worden omgezet naar DER. U kunt bijvoorbeeld de ruimtetekens verwijderen en het naar het xxd-programma buigen:
$ cat ca.hex | tr -d ' ' | xxd -r -p -c 32 | openssl x509 -inform der -text -noout
Een andere makkelijke manier is om dit Perl script te gebruiken:
#!/usr/bin/perl
foreach (<>) {
s/[^a-fA-F0-9]//g;
print join("", pack("H*", $_));
}
$ perl hex2der.pl < hex-file.txt > der-file.der
Bovendien, een compacte manier om bepaalde dumps te converteren, die vroeger handmatig naar een bestand met extension hex werden gekopieerd, van een bash opdrachtregel zoals hieronder wordt getoond:
for hex in *.hex; do
b="${hex%.hex}"
hex2der.pl < "$hex" > "$b".der
openssl x509 -inform der -in "$b".der > "$b".pem
openssl x509 -in "$b".pem -text -noout > "$b".txt
done
Elk bestand resulteert in:
Base64 encodering representeert de binaire gegevens met slechts 64 printbare tekens (A-Za-z0-9+/
) vergelijkbaar met uencode. In de conversie van binair naar Base64 wordt elk 6-bits blok van de oorspronkelijke gegevens gecodeerd in een 8-bits printbaar ASCII-teken met een vertaaltabel. Daarom is de grootte van de data na codering met 33 procent toegenomen (data times 8 gedeeld door 6 bits, is gelijk aan 1.333).
Een 24-bits buffer wordt gebruikt voor het vertalen van drie (3) groepen van acht (8) bits in vier (4) groepen van zes (6) bits. Daarom kan één (1) of twee (2) bytes van padding nodig zijn aan het eind van de invoergegevensstroom. Het opvullen is aangegeven aan het eind van de Base64-gecodeerde gegevens, door één gelijk (=)
teken voor elke groep van acht (8) opvulbits die tijdens het coderen aan de ingang zijn toegevoegd.
Raadpleeg dit voorbeeld op Wikipedia.
Raadpleeg de meest recente informatie in RFC 4648: De Base16, Base32, en Base64 Data-encodings.
Privacy Enhanced Mail (PEM) is een volledige IETF-PKI-standaard (Internet Engineering Task Force) om beveiligde berichten uit te wisselen. Het wordt niet langer op grote schaal als dusdanig gebruikt, maar de insluitingssyntaxis is is wijdverspreid om met Base64-gecodeerde PKI-gegevens te kunnen opmaken en uitwisselen.
PEM RFC 1421, paragraaf 4.4: Het mechanisme van de insluiting definieert PEM-berichten als gedefinieerd door Encapsulation Boundaries (EB’s), die gebaseerd zijn op RFC 934, met dit formaat:
-----BEGIN PRIVACY-ENHANCED MESSAGE-----
Header: value
Header: value
...
Base64-encoded data
...
-----END PRIVACY-ENHANCED MESSAGE-----
In de huidige praktijk, wanneer PEM-geformatteerde gegevens worden verspreid, wordt dit grensformaat gebruikt:
-----BEGIN type-----
...
-----END type-----
het type kan worden gebruikt met andere sleutels of certificaten, zoals:
RSA-PRIVÉ-TOETS
VERSLEUTELDE PRIVATE SLEUTEL
CERTIFICAAT
CERTIFICAATVERZOEK
X509 CRL-modulator
Opmerking: Hoewel de RFC's dit niet verplicht maken, is het aantal leidende en handelingsdashes (-
) in de ECB's aanzienlijk en dient dit altijd vijf te zijn (5). Anders kunnen bepaalde toepassingen, zoals OpenSSL, op de ingang klikken. Aan de andere kant hebben andere toepassingen, zoals Cisco IOS, helemaal geen EBs nodig.
Raadpleeg deze meest recente RFC’s voor meer informatie:
X.509 is een subset van X.500, wat een uitgebreide ITU-specificatie is van Open Systems Interconnect. Het gaat specifiek om certificaten en openbare sleutels en is door de IETF als Internet-norm aangepast. X.509 biedt een structuur en syntaxis, uitgedrukt in de RFC met ASN.1-notatie, om certificaatinformatie en certificaatherroeping-lijsten op te slaan.
In een X.509 PKI geeft een CA een certificaat uit dat een openbare sleutel bindt, bijvoorbeeld: een Rivest-Shamir-Adleman (RSA) of Digital Signature Algorithm (DSA)-toets naar een bepaalde onderscheidde Naam (DN) of naar een alternatieve naam zoals een e-mailadres of volledig gekwalificeerd domeinnaam (FQDN). De DN volgt de structuur in de X.500 standaarden. Hierna volgt een voorbeeld:
CN=common name,OU=organisatorische eenheid,O=organisatie,L=locatie,C=land
Vanwege de ASN.1-definitie kunnen X.509-gegevens in DER worden gecodeerd zodat ze in binaire vorm kunnen worden uitgewisseld en naar keuze worden geconverteerd naar Base64/PEM voor op tekst gebaseerde communicatiemiddelen, zoals kopieerpasta op een terminal.
De Public Key Cryptography Standards (PKCS) zijn specificaties van RSA Labs die gedeeltelijk tot industrienormen zijn geëvolueerd. De meest ondervraagden behandelen deze onderwerpen; niet alle hebben echter betrekking op gegevensformaten .
PKCS#1 (RFC 3347) - bestrijkt de implementatieaspecten van cryptografie op basis van RSA (crypto-primitieven, encryptie/signatuurschema's, syntaxis van ASN.1).
PKCS#5 (RFC 2898) - heeft betrekking op een op wachtwoord gebaseerde sleutelafleiding.
PKCS#7 (RFC 2315) en S/MIME RFC 3852 - definieert een berichtsyntaxis om getekende en versleutelde gegevens en verwante certificaten te verzenden. Vaak gebruikt eenvoudig als houder voor X.509-certificaten.
PKCS#8- definieert een berichtsyntaxis om duidelijk tekst of versleutelde RSA-toetsenborden te transporteren.
PKCS#9 (RFC 2985) - definieert extra doelklassen en identiteitskenmerken.
PKCS#10 (RFC 2986) - definieert een berichtsyntaxis voor certificaatsignaleringsaanvragen (CSR’s). Een CSR wordt door een entiteit naar een CA verzonden en bevat de informatie die door de CA moet worden ondertekend, zoals openbare sleutelinformatie, identiteit en extra eigenschappen.
PKCS#12 - definieert een container voor verpakkingsgerelateerde PKI-gegevens (doorgaans entiteiten + entiteiten cert + wortel- en intermediaire CA-certificaten) in één bestand. Het is een ontwikkeling van Microsoft's Mobile Information Exchange (PFX)-formaat.
Raadpleeg deze middelen: