An051_NL - Sociale Zekerheid

advertisement
BIJLAGE 4
:
Digitale handtekening
Ten opzichte van de vorige versie van deze bijlage zijn de voornaamste wijzigingen de volgende :

Wat de handtekening PKCS#7 betreft, aanvaardt de sociale zekerheid twee opties : handtekening met
authenticatedAttributes en handtekening zonder authenticatedAttributes.

Er werd een paragraaf toegevoegd over de verificatie van de handtekening.
1. De digitale handtekening in het algemeen
1. 1 Principes
De digitale handtekening bestaat erin om, via bepaalde algoritmische bewerkingen, een origineel bericht
om te zetten in een nieuw bericht (het getekende bericht) waaraan identificatiegegevens (idealiter deze van
de verzender) verbonden zijn. Op deze manier kan de bestemmeling van het bericht, via gepaste
algoritmische verwerkingen van het bericht dat hij ontvangt, enerzijds het originele bericht en anderzijds de
identificatiegegevens terugvinden. Dit mechanisme wordt hieronder meer in detail toegelicht, in de
paragraaf "Handtekeningstechnieken". De vraag of de uitgehaalde identificatiegegevens wel degelijk die
van de verzender zijn, zal verder in dit document behandeld worden (paragraaf 2.3), wanneer de
certificaten ingeleid zullen worden.
Merk op dat de problematiek van het crypteren van het bericht (om de vertrouwelijkheid ervan te
verzekeren) onafhankelijk is van de problematiek van de digitale handtekening, zelfs al leunen zij
technisch gezien sterk bij elkaar aan (in die zin dat de digitale handtekening een beroep doet op
crypteringstechnieken). Het originele bericht wordt immers "ongecodeerd" verstuurd naar de
bestemmeling.
1.2 Handtekeningstechnieken
De digitale handtekening steunt op het gebruik van hashing-algoritmen (MD2, MD5, SHA-1)
gecombineerd met asymmetrische crypteringsalgoritmen (RSA). Om een bericht te tekenen, berekent de
verzender eerst de "digest" van het originele bericht met behulp van een hashing-algoritme. Vervolgens
crypteert hij deze digest, via asymmetrische cryptering, door gebruik te maken van zijn persoonlijke
sleutel. Ten slotte voegt hij aan dit laatste resultaat zijn identificatiegegevens toe, vervat in een certificaat.
Hij verzendt het geheel (ongecodeerd bericht, gecrypteerde digest en certificaat) naar de bestemmeling.
De bestemmeling van het bericht kan deze techniek omgekeerd toepassen om de geldigheid van de
handtekening te controleren : hij haalt het certificaat uit om de identiteit van de veronderstelde verzender
en zijn publieke sleutel te bepalen. Om de digest te decrypteren, gebruikt hij deze publieke sleutel met
hetzelfde asymmetrische crypteringsalgoritme als de verzender en ten slotte berekent hij zelf de digest
van het ontvangen bericht en vergelijkt deze met de digest uit de handtekening : de overeenstemming
tussen de waarden van de twee digests garandeert de echtheid van het bericht.
1.3 Standaarden
Om een bepaalde flexibiliteit van de producten van de digitale handtekening toe te laten, zijn een aantal
standaarden uitgebracht onder toezicht van de RSA Laboratories, afdeling R&D van RSA Digital Security,
Inc. De benaming van deze standaarden is PKCS : Public-Key Cryptography Standards. Deze teksten
refereren voortdurend naar de ITU-aanbevelingen (International Telecommunication Union) van de serie
500 (X.500, X.501 en X.509), betreffende de repertoria (Directories), en maken gebruik van de notitie
gedefinieerd in X.208 en X.209 (ASN.1 : Abstract Syntax Notation 1). Normen die equivalent zijn aan die
van de ITU werden eveneens uitgebracht door de ISO (International Organization for Standardization) of
gezamenlijk door de ISO en de IEC (International Electrotechnical Commission) onder de referenties ISO
8824 en ISO 8825 (ASN.1) en ISO/IEC 9594 (serie X.500). Merk op dat vroeger gerefereerd werd naar de
aanbevelingen X.200 en X.500 van de ITU als normen van het CCITT (Consultative Committee for
International Telegraph and Telephone) waarvan de activiteiten overgenomen werden door de ITU.
De tekst van de PKCS is beschikbaar op de website van RSA Data Security: http://www.rsa.com/
15/04/2004
1
Bijlage 4 - DIMONA-aangifte
Merk op dat er andere gehelen van algoritmen en specificaties bestaan : we kunnen bijvoorbeeld DSA
(acroniem van Digital Signature Standard) en PGP (acroniem van Pretty Good Privacy) citeren.
De PKCS-standaarden bepalen hoofdzakelijk twee aspecten van de digitale handtekening : de te
gebruiken algoritmen en de syntaxis van het getekende bericht. Deze laatste maakt het voorwerp uit van
de specificatie PKCS #7 (Cryptographic Message Syntax Standard). Recenter is een andere standaard
verschenen voor de syntaxis van de digitale handtekening, namelijk de handtekening XML, gedefinieerd
door het W3C (http://www.w3c.org). Deze standaard wordt momenteel niet gebruikt in het kader van
DIMONA/DMFA/ASR.
1.4 Syntactische aspecten
Een geheel van gegevens moet aan het originele bericht toegevoegd worden om de standaard digitale
handtekening te vormen, voornamelijk :
 de gecrypteerde digest;
 de identificator van het gebruikte digest-algoritme;
 het certificaat van de verzender;
 plus een aantal optionele gegevens (lijst van de herroepen
certificaten, andere erkende gegevens, etc.).
Noteer dat eenzelfde bericht door verschillende ondertekenaars mag getekend worden. De
bovenvermelde gegevens zullen dan herhaald worden voor elk van de ondertekenaars.
Om deze gegevens op ondubbelzinnige wijze te kunnen doorsturen, definieert de specificatie PKCS#7
versie 1.5 een uiterst nauwkeurige syntaxis, gebaseerd op de gestandaardiseerde syntaxis ASN.1.
2. De digitale handtekening van de sociale aangiften (DIMONA, DMFA, ASR)
2.1 Basisvragen
Als het gaat over de transfer van getekende bestanden, dan stellen er zich drie soorten vragen :
1. welk type digitale handtekening mag men gebruiken ?
2. hoe wordt de identiteit van de ondertekenaar van een bericht gegarandeerd ?
3. hoe moeten de bestanden (bericht en handtekening) georganiseerd worden ?
2.2 Types van handtekening
Twee types van digitale handtekening worden erkend :
1.
de zogenaamde "ISABEL-handtekening", die gebruikt moet worden wanneer via het ISABELnetwerk gewerkt wordt; niet alleen de verzender moet zijn digitale ISABEL-handtekening
gebruiken, ook de berichten verstuurd door de sociale zekerheid naar de verzender zullen een
ISABEL-handtekening bevatten.
2. de zogenaamde "standaardhandtekening", gebruikt in de andere gevallen.
2.3 Certificaten
In alle gevallen doen de handtekeningen een beroep op een certificaat, dat de identiteit van de
berichttekenaar garandeert; deze certificaten kunnen verkregen worden bij een certificatiedienstverlener
(ook "Certification Authority" genoemd, of "CA" in het kort). Als men gebruik maakt van de ISABELhandtekening, moet de CA noodzakelijkerwijs ISABEL zijn. Noteer dat ISABEL ook certificaten levert voor
de zogenaamde "standaardhandtekening". Er bestaan trouwens talrijke leveranciers van certificaten voor
de standaardhandtekening. Om aanvaard te worden door de sociale zekerheid, moet een certificaat in
feite aan twee randvoorwaarden beantwoorden :
15/04/2004
2
Bijlage 4 - DIMONA-aangifte
 de oorsprong van het certificaat : het Informatiesysteem van de sociale zekerheid is in staat om de
certificaten te valideren die geleverd worden door de certificatieautoriteiten vermeld in de op het
portaal van de sociale zekerheid gepubliceerde lijst (zie hieronder). De certificaten die door andere
certificatieautoriteiten geleverd worden kunnen, op verzoek van een gebruiker, alleen aanvaard
worden voorzover de nodige aanpassingen voor de validatie van deze certificaten aangebracht
werden aan het Informatiesysteem.
 het type van certificaat : alleen de certificaten uitgereikt aan natuurlijke personen, die zich tijdens het
certificatieproces fysisch hebben aangeboden, kunnen aanvaard worden.
De certificatiedienstverleners vermeld in de lijst hieronder werden gekozen omdat zij een bepaald
kwaliteitsniveau van de geleverde certificaten garanderen in termen van betrouwbaarheid van de
gebruikte infrastructuur om de certificaten te beheren, van controle van de identiteit van de houder van
een certificaat, of van beveiliging van de gebruikte crypteringssleutels.
De lijst van de aanvaarde certificaten ziet er op 15 maart 2004 als volgt uit:
CA
TYPES CERTIFICATEN
Belgacom ETrust*/ Certipost
Qualified Certificate
GlobalSign
PersonalSign Class 3 Pro**en PersonalSign Qualified
Isabel
Classe 3
*De activiteiten van Belgacom SA als certificatiedienstverlener werden overgenomen door Certipost SA
sinds 19 december 2003.
**De certificaten PersonalSign Class 3 Pro uitgebracht vooraleer de certificaten PersonalSign Qualified
beschikbaar zijn, worden aanvaard tot aan hun vervaldag.
2.4 Bestanden en organisatieschema
Deze paragraaf preciseert welke specificaties men moet naleven als de standaardhandtekening gebruikt wordt.
2.4.1 Algemeen schema
In dit geval wordt door de sociale zekerheid slechts één organisatieschema van de bestanden aanvaard
voor de aangiften DIMONA, DMFA of ASR.
Het betreft een schema van twee bestanden, één met het gestructureerde bericht (DIMONA, DMFA of
ASR) zonder encryptie of versleuteling, en één met de digitale handtekening. Wat de handtekening
betreft, is de gebruikte versie van de standaard PKCS#7 de versie 1.5 die dateert van 1 november 1993.
Het gestructureerd bericht is geëncodeerd ASCII en wordt als zodanig doorgestuurd in een bestand
waarvan de naam beantwoordt aan de specificaties beschreven in de documentatie die beschikbaar is op
het portaal van de sociale zekerheid.
In het geval van DIMONA zal de bestandsnaam bijvoorbeeld zijn : DIMD.123456.20030801.00001.021.N.R
Voor een ongecodeerd DMFA-bestand zal de bestandsnaam de volgende structuur hebben :
FI.DMFA.123456.20030801.00001.R.1.1
en voor de ASR-berichten zullen de bestandsnamen de volgende structuur hebben :
FI.XXXX.123456.20030801.00001.R
waarbij XXXX de volgende waarden aanneemt :
WECH wanneer het gaat over een ASR werkloosheid;
AOAT wanneer het gaat over een ASR arbeidsongeval;
BZMP wanneer het gaat over een ASR beroepsziekten;
ZIMA wanneer het gaat over een ASR ZIV.
Voor details kunt u terecht in de documentatie die beschikbaar is op het portaal van de sociale zekerheid.
Wat de digitale handtekening van het bericht betreft, wordt de procedure voor de berekening van de
handtekening later gedetailleerd, in de paragraaf 2.4.3. Het belangrijkste is dat de elementen waaruit de
handtekening bestaat, opgenomen zijn in een structuur PKCS #7 ContentInfo, die moet behoren tot het
type SignedData. Het veld SignedData wordt verderop beschreven, in de paragraaf 2.4.2.
15/04/2004
3
Bijlage 4 - DIMONA-aangifte
Dit ContentInfo is geëncodeerd base-64 en wordt doorgestuurd naar de sociale zekerheid in een bestand
waarvan de naam dezelfde structuur heeft als het bijbehorende gegevensbestand, behalve dat het laatste
karakter van het prefix een S moet zijn.

Voor een DIMONA-aangifte heeft het bestand met de handtekening bijvoorbeeld de volgende naam :
DIMS.123456.20030801.00001.021.N.R;
Het geheel van de twee bestanden DIMD en DIMS, samen met een GODIMD.*-bestand, vormt een
DIMONA-zending.

Voor een DMFA-aangifte heeft het bestand met de handtekening de volgende naam :
FS.DMFA.123456.20030801.00001.R.1.1
Het geheel van de twee bestanden FI en FS, samen met een GO.*-bestand, vormt een DMFAzending.

Gelijkaardige regels worden toegepast voor de ASR-aangiften. Voor details kunt u terecht in de
documentatie die beschikbaar is op het portaal van de sociale zekerheid.
2.4.2 Structuur van de handtekening
De structuur van het veld SignedData wordt hieronder beschreven.
Version
Moet waarde 1 hebben (stemt overeen met versie 1.5 van
PKCS #7)
De toegelaten algoritmen zijn SHA-1, MD2 of MD5.
Moet een data bevatten die verplicht blanco moet zijn
(aanwezig, maar lengte nul).
Verplicht blanco.
Moet (ten minste) een (erkend) certificaat bevatten, uitgereikt
door een erkende certificatieautoriteit.
Niet verplicht.
Minimum één ondertekenaar.
Moet waarde 1 hebben (stemt overeen met versie 1.5 van
PKCS #7)
Identificator van de afzender van het certificaat en
serienummer van dit certificaat
De toegelaten algoritmen zijn SHA-1, MD2 of MD5.
Niet verplicht. Als dit veld aanwezig is, moet het ten minste
bevatten
 een toevoegsel (PKCS #9) van het type contentType,
dat noodzakelijk het type data bevat,
DigestAlgorithms
ContentInfo
ContentInfo.content
Certificates
Crls
SignerInfos
SignerInfo.version
IssuerAndSerialNumber
SignerInfo.digestAlgorithm
SignerInfo.authenticatedAttributes
 een toevoegsel (PKCS #9) van het type
messageDigest, dat de digest van het gestructureerde
bericht bevat. Zie "Berekening van de waarde van de
handtekening".
Het kan ook bevatten
 een toevoegsel (PKCS #9) van het type emailAddress
met het elektronisch adres van de verzender,
 een toevoegsel (PKCS #9) van het type signingTime,
met vermelding van de datum en het uur waarop de
handtekening geplaatst werd.
Het toegelaten algoritme is rsaEncryption (bepaald in PKCS
#1).
Niet verplicht.
Waarde van de handtekening
SignerInfo.digestEncryptionAlgorithm
SignerInfo.unauthenticatedAttributes
EncryptedDigest
15/04/2004
4
Bijlage 4 - DIMONA-aangifte
Merk op dat de sociale zekerheid niet meer eist dat het veld authenticatedAttributes aanwezig is. De twee
opties worden aanvaard voor de handtekening van de sociale aangiften : met of zonder authenticated
Attributes. Als dit veld aanwezig is, moet de inhoud ervan uiteraard conform zijn aan de hierboven
beschreven specificaties.
We onderstrepen dat de handtekening van de berichten verstuurd door de sociale zekerheid naar een
aangever geen authenticatedAttributes bevat (zie paragraaf 3 : verificatie van de handtekening).
Verder aanvaardt de sociale zekerheid dat het veld Certificates niet alleen het certificaat van de
ondertekenaar bevat maar de hele reeks van certificaten tot aan het root-certificaat van de CA die het
certificaat van de ondertekenaar heeft afgeleverd, maar dit is niet verplicht.
2.4.3 Berekening van de waarde van de handtekening
De specificatie PKCS#7 preciseert dat de berekening van de waarde van de handtekening verschillend is
naargelang het veld authenticatedAttributes aanwezig is of niet.
Als het veld authenticatedAttributes niet aanwezig is, dan wordt de waarde van de handtekening als volgt
bekomen. Het ongecodeerde bericht (gecodeerd in ASCII) wordt onderworpen aan één van de toegelaten
hashing-algoritmen en er wordt een "digest-bericht" aangemaakt. Daarna stelt men een DigestInfo samen,
die een sequentie is samengesteld uit de identificator van het algoritme dat gebruikt werd voor deze
hashing en uit deze 'message digest'. Ten slotte wordt de BER-codering van deze DigestInfo
onderworpen aan het RSA-coderingsalgoritme.
Als het veld authenticatedAttributes aanwezig is, dan bevat dit noodzakelijkerwijs de digest (bekomen
door middel van één van de toegelaten hashing-algoritmen) van het ongecodeerde bericht (bericht
gecodeerd in ASCII). Daarna wordt de DER-codering van het veld authenticatedAttributes onderworpen
aan hetzelfde hashing-algoritme om een 'message digest' aan te maken. De berekening van de waarde
van de handtekening gaat dan voort zoals in het geval waarbij het veld authenticatedAttributes niet
aanwezig is (samenstelling van een DigestInfo en onderwerping van de BER-codering van deze
DigestInfo aan het RSA-coderingsalgoritme).
In beide gevallen is het belangrijk dat het ongecodeerde bericht onderworpen aan de hashing gecodeerd
is in ASCII (en bijvoorbeeld niet in UNICODE).
3. De verificatie van de digitale handtekening van een bericht verstuurd door de sociale zekerheid
De grote lijnen van een procedure om een digitale handtekening te verifiëren, werden reeds geschetst in
paragraaf 1.2.
Hieronder wordt dieper ingegaan op de procedure voor de verificatie van de digitale handtekening van
een bericht verstuurd door de sociale zekerheid (schema met twee bestanden), in het geval van een
"standaardhandtekening" (er wordt hier niet ingegaan op een "ISABEL-handtekening").
Aangezien de Contentinfo verstuurd in het bestand met de handtekening base-64 gecodeerd is, moet
eerst een decodering uitgevoerd worden. Vervolgens moet uit de SignedData-structuur het certificaat van
de ondertekenaar gehaald worden. Het wordt aanbevolen de geldigheid van dit certificaat te controleren,
voornamelijk :
A1 :
verificatie van de vervaldatum van het certificaat;
A2 :
verificatie van de integriteit van het certificaat, d.w.z. verificatie van de handtekening van het
certificaat gebruikt door de ondertekenaar (wat impliceert dat men moet beschikken over de CAcertificaten van de certificatieautoriteit die het certificaat van de ondertekenaar heeft afgeleverd);
A3 :
verificatie van de niet-herroeping van het certificaat;
Als elk van deze stappen een positief resultaat oplevert, kan overgegaan worden naar de volgende
stappen. Anders wordt de handtekening geweigerd.
Vervolgens wordt overgegaan tot de verificatie van de handtekening zelf. Noteer eerst dat in verband met
de SignedData-structuur beschreven in 2.4.2 twee punten gepreciseerd kunnen worden in het geval van
een door de sociale zekerheid getekend bericht : het algoritme gebruikt voor de hashing van het
ongecodeerde bericht is MD5, en het veld authenticatedAttributes is niet aanwezig. De stappen van de
verificatie zijn de volgende :
15/04/2004
5
Bijlage 4 - DIMONA-aangifte
B1:
RSA-decodering van het veld "waarde van de handtekening", aan de hand van de publieke sleutel
vervat in het certificaat van de ondertekenaar;
B2:
hashing MD5 van het ongecodeerde bericht, samenstelling van een sequentie ASN.1 bestaande
uit de identificator van het gebruikte hashing-algoritme (MD5) en het resultaat van de digestbewerking, en BER-codering van deze sequentie;
B3:
vergelijking van de resultaten bekomen in B1 en B2; als deze resultaten identiek zijn, wordt de
handtekening aanvaard; anders wordt zij geweigerd.
15/04/2004
6
Bijlage 4 - DIMONA-aangifte
Download