BIJLAGE 1 BIJ DE REGELING BOORDCOMPUTER TAXI
Beveiligingsprofiel Boordcomputer Taxi (PP-BCT)
Versie 1.8
Datum 6 februari 205
Status Defnitief
Inhoud
Artikel 1
|
Introductie
|
8
|
|
|
|
Artikel 2
|
Afkortingen, acroniemen, definities en referenties
|
8
|
Artikel 2.1
|
PP Referentie
|
8
|
Artikel 2.2
|
Claim voor voldoen aan de Common Criteria
|
9
|
Artikel 2.3
|
Notities
|
9
|
Artikel 2.4
|
Afkortingen en acroniemen
|
9
|
Artikel 2.5
|
Referentienormen
|
9
|
|
|
|
Artikel 3
|
Overzicht van de TOE
|
10
|
Artikel 3.1
|
Beschrijving van de TOE
|
10
|
Artikel 3.2
|
Levenscyclus van de TOE
|
11
|
Artikel 3.3
|
Entiteiten
|
13
|
Artikel 3.3.1
|
Subjecten – middelen
|
13
|
Artikel 3.3.2
|
Subjecten – gebruikers
|
14
|
Artikel 3.3.3
|
Objecten
|
14
|
Artikel 3.4
|
Begrenzingen van de TOE
|
16
|
|
|
|
Artikel 4
|
Beveiligingsprobleem
|
17
|
Artikel 4.1
|
Beveiligingsbeleid
|
17
|
Artikel 4.2
|
Aannames
|
19
|
|
|
|
Artikel 5
|
Beveiligingsdoelstellingen
|
19
|
Artikel 5.1
|
Beveiligingsdoelen voor de TOE
|
19
|
Artikel 5.2
|
Beveiligingsdoelen voor de omgeving
|
20
|
|
|
|
Artikel 6
|
Functionele beveiligingseisen
|
21
|
Artikel 6.1
|
Beveiligingsrollen
|
22
|
Artikel 6.2
|
Identificatie en Authenticatie
|
22
|
Artikel 6.3
|
BCT-toegangsbeleid
|
23
|
Artikel 6.4
|
Handtekeningen
|
25
|
Artikel 6.5
|
Beveiligingsaudit
|
26
|
Artikel 6.6
|
Bescherming van de BCT
|
28
|
|
|
|
Artikel 7
|
Garantieniveau
|
28
|
|
|
|
Artikel 8
|
Rationale
|
29
|
Artikel 8.1
|
Beveiligingsdoelstellingen
|
29
|
Artikel 8.1.1
|
Beveiligingsbeleid
|
29
|
Artikel 8.1.2
|
Aannames
|
30
|
Artikel 8.2
|
Beveiligingsdoelstellingen voor de TOE
|
30
|
Artikel 8.3
|
Afhankelijkheden
|
31
|
Artikel 1 Introductie
Deze bijlage is een beveiligingsprofiel (Protection Profile) voor de voertuigcomponenten
van de boordcomputer in overeenstemming met de Common Criteria versie 3.1. Het beveiligingsprofiel
geeft een beschrijving van het door de boordcomputer te implementeren beleid, de te
realiseren beveiligingsdoelstellingen, en de te behalen beveiligingseisen, alsmede
het vereiste garantieniveau voor de boordcomputer, zoals afgeleid is bij een eerdere
afhankelijkheids- en kwetsbaarheidsanalyse.
Dit beveiligingsprofiel voor de boordcomputer is opgesteld voor de Inspectie Leefomgeving
en Transport van het Ministerie van Infrastructuur en Milieu.
Artikel 2 Afkortingen, acroniemen, definities en referenties
Artikel 2.1 PP Referentie
Dit document is het ‘Beveiligingsprofiel Boordcomputer Taxi’ (PP-BCT) Versie 1.8,
6 februari 2015.
Artikel 2.2 Claim voor voldoen aan de Common Criteria
Dit beveiligingsprofiel voldoet aan Common Criteria versie 3.1 Revisie 4. Hoewel de
‘International English’ versie is gebruikt voor het ontwikkelen van dit beveiligingsprofiel,
is (met toestemming van het certificeringsschema) dit profiel in het Nederlands.
Dit beveiligingsprofiel:
-
○ is CC Deel 2 conform;
-
○ is CC Deel 3 conform;
-
○ is EAL3 conform;
-
○ claimt niet te voldoen aan andere beveiligingsprofielen;
-
○ vereist strikte conformering van andere beveiligingsprofielen (PPs) of beveiligingsspecificaties
(STs) die aan dit beveiligingsprofiel willen voldoen.
Artikel 2.3 Notities
Dit document volgt de naamgeving en notaties voor beveiligingsprofielen volgens de
Common Criteria standaard. Er zijn unieke labels toegewezen aan entiteiten zodat deze
gemakkelijk terug te vinden zijn. De labels beginnen met één van de onderstaande karakters:
A
|
Assumption (aanname)
|
O
|
Object (object)
|
OE
|
Security objective for the Environment (omgevingsdoelstellingen)
|
OT
|
Security objective for the TOE (beveiligingsdoelstelling)
|
P
|
Organisational Security Policy (beleid)
|
S
|
Subject (persoon, middel of een proces)
|
Artikel 2.4 Afkortingen en acroniemen
CA
|
Certificatieautoriteit
|
CC
|
Common Criteria (referentienorm)
|
CEN
|
European Committee for Standardization
|
CWA
|
CENWorkshop Agreements
|
EAL
|
Evaluation Assurance Level (garantieniveau)
|
EH
|
Elektronische handtekening
|
EPROM
|
Erasable Programmable Read Only Memory
|
ETSI
|
European Telecommunications Standards Institute
|
FIPS
|
Federal Information Processing Standards
|
GNSS
|
Global Navigation Satellite System
|
IEC
|
International Electrotechnical Commission
|
IETF
|
Internet Engineering Task Force
|
ISO
|
International Organisation for Standardisation
|
PIN
|
Personal identification number (PIN-code)
|
PP
|
Protection Profile (Beveiligingsprofiel)
|
PKI
|
Public Key Infrastructure (publieke sleutel methodiek)
|
PUB
|
Public
|
ROM
|
Read Only Memory (ROM-geheugen)
|
RFC
|
Request for Comments
|
SFP
|
Security Function Policy
|
SFR
|
Security Functional Requirement (Beveiligingseis)
|
SHA
|
Secure Hash Algorithm
|
ST
|
Security Target (Beveiligingsspecificatie)
|
TOE
|
Target of Evaluation (onderwerp van de evaluatie)
|
TS
|
Technical Standard
|
TSF
|
TOE Security Functionality
|
TSFI
|
TSF Interface
|
Artikel 2.5 Referentienormen
De TOE wordt getoetst conform het normenkader van Common Criteria for Information
Technology Security Evaluation, versie 3.1, revisie 3, July 2009.
De TOE ondersteunt de volgende standaarden wanneer cryptografische bewerkingen dienen
te worden uitgevoerd:
-
○ Het SHA cryptografische algoritme voor hash functies zoals gedefinieerd in de ISO/IEC
10118-3, FIPS PUB 180-2 en ETSI TS 102 176-1 standaarden;
-
○ ETSI TS 101 733 Electronic Signature Formats en de FIPS PUB 186-2 standaarden voor
elektronische handtekeningen;
Artikel 3 Overzicht van de TOE
Artikel 3.1 Beschrijving van de TOE
De TOE is een controleapparaat bedoeld voor installatie in auto’s gebruikt voor taxivervoer.
Het doel is om handhavingprocessen te helpen uitvoeren door de elektronische registratie
van de ritadministratie en de arbeids-, rij- en rusttijden en het op aanvraag ter
beschikking stellen van deze informatie aan bevoegde personen ter controle.
De TOE kent vier werkingsmodi, te weten: operationele modus, controle modus, activering/keuringsmodus
en bedrijfsmodus. De operationele modus kent drie werkingsniveaus: basis, arbeidstijd
en taxivervoer. Wanneer taxivervoer wordt aangeboden of arbeidstijd plaatsheeft, selecteert
de bestuurder handmatig het corresponderende werkingsniveau. In de operationele modus,
werkingsniveau arbeidstijd of taxivervoer, worden gegevens geregistreerd over de uitgevoerde
taxiritten en de arbeids-, rij-, en rusttijden van de bestuurder. De aanvang en het
beëindigen van een rit wordt door een actieve bedieningshandeling van de bestuurder
bij de TOE kenbaar gemaakt. Hierbij dient de beladingtoestand (beladen/onbeladen)
te worden aangegeven.
Daarnaast draagt de TOE in alle modi zorg voor het beschikbaar stellen van de basisgegevens
tijd en afgelegde afstand, en de positie van het voertuig. In het werkingsniveau basis
wordt ook de registratie van gebeurtenissen gevoerd. In de operationele modus is het
werkingsniveau basis een apart werkingsniveau. In de overige modi integreert de TOE
de basis functionaliteit met de overige functionaliteit van de betreffende modus.
De TOE bestaat ten minste uit een verwerkingseenheid, een geheugen, een tijdklok,
een ISO 7816 kaartinterface, een ISO 7810 ID-000 kaartinterface ten behoeve van de
systeemkaart, een positiebepalingssensor of een interface voor de positiebepalingssensor,
een verplaatsingsopnemer, een interface voor de bewegingsopnemer, een gegevensoverbrengingsinterface,
een interface voor de taxameter, een leesvenster en voorzieningen voor de invoer van
gebruikersgegevens.
De TOE kan door middel van additionele verbindingen aan andere inrichtingen worden
gekoppeld, of daarmee geïntegreerd worden.
Toegang tot de TOE wordt verleend door middel van een boordcomputerkaart met PIN-code
en voorzien van een (authenticatie)certificaat. Er worden vier gebruikersrollen voorzien,
te weten bestuurder, toezichthouder, werkplaats en vervoerder. De omschakeling tussen
werkingsmodi gebeurt door het plaatsen van de correcte boordcomputerkaart in de TOE.
Er worden vier verschillende kaarten onderscheiden, te weten: chauffeurskaart, inspectiekaart,
keuringskaart en ondernemerskaart. Boordcomputerkaarten maken geen onderdeel uit van
de TOE.
Bij aanvang van de dienst dient een chauffeurskaart in de TOE te zijn geplaatst. De
bestuurder meldt zich aan met de chauffeurskaart en een persoonlijk identificatie
code (PIN-code). De TOE registreert de persoonlijke arbeids-, rij- en rusttijden van
de bestuurder en slaat deze op in het interne geheugen van de TOE en op de chauffeurskaart.
In voorkomende gevallen heeft een chauffeur geen kaart en dan dient hij zijn burgerservicenummer
in te voeren. Dit burgerservicenummer dient alleen voor identificatie, en wordt door
de TOE verder niet gecontroleerd.
De boordcomputerkaarten voor de bestuurder zijn voorzien van een certificaat voor
het elektronisch identificeren van de persoon en het ondertekenen van geregistreerde
gegevens.
De TOE gebruikt een systeemkaart welke is voorzien van certificaten voor identificatie
van de TOE en het plaatsen van elektronische handtekeningen. Het certificaat ten behoeve
van de TOE wordt in de productiefase in de vorm van de systeemkaart geïmplementeerd
in de TOE. Deze certificaten worden uitgegeven onder verantwoordelijkheid van de Minister
van Infrastructuur en Milieu. Systeemkaarten zijn geen onderdeel van de TOE.
De TOE voert gegevens uit naar een leesvenster en kan gegevens ter beschikking stellen
ten behoeve van een externe printer en externe inrichtingen.
De operationele omgeving van de TOE geïnstalleerd in de auto is weergegeven in onderstaande
figuur.
Figuur 1
De systeemkaart plaatst een elektronische handtekening (EH) per uitgevoerde rit over
alle ritgegevens terstond nadat de bestuurder heeft aangegeven dat de rit teneinde
is.
De chauffeurskaart plaatst een elektronische handtekening bij het einde van de dienst
van de bestuurder over de arbeids-, rij- en rusttijden van de bestuurder gedurende
de dienst. Hiervoor wordt het persoonsgebonden certificaat van de chauffeurkaart gebruikt
waarbij de bestuurder vooraf zijn goedkeuring verleent door het ingeven van de PIN-code
van de chauffeurskaart.
De systeemkaart plaatst een elektronische handtekening over de geregistreerde gegevens
wanneer deze worden opgeslagen en wanneer deze worden uitgevoerd naar een externe
gegevensdrager.
De koppeling van bestuurder aan de geregistreerde gegevens en de waarborging van de
integriteit en authenticiteit van de gegevens wordt in onderstaande figuur geïllustreerd:
Figuur 2
Artikel 3.2 Levenscyclus van de TOE
De typische levenscyclus van een TOE wordt geïllustreerd door onderstaande figuur.
Het verkrijgen van een typegoedkeuring is een verantwoordelijkheid van de fabrikant.
Eventuele reparaties worden uitgevoerd door, of onder verantwoordelijkheid van, de
fabrikant. Installatie van eventuele nieuwere versies van programmatuur mogen door
erkende werkplaatsen met een programmatuurrevisie worden uitgevoerd na een succesvolle
authenticatie met een keuringskaart.
Indien naar het oordeel van de Dienst Wegverkeer bij/na het implementeren van een
bepaalde programmatuurrevisie geen kalibratie van de boordcomputer benodigd is, dan
mag die programmatuurrevisie ook buiten een erkende werkplaats door eenieder op de
boordcomputer geïmplementeerd worden indien deze zich in operationele modus met werkingsniveau
basis bevindt en er geen gebruikerssessie actief is.
Teneinde de blijvend correcte werking van de boordcomputer te kunnen waarborgen, moet
de boordcomputer ten aanzien van het implementeren van programmatuurrevisies de volgende
acties uitvoeren:
-
○ De boordcomputer moet verhinderen dat een programmatuurrevisie die wel gevolgd moet
worden door kalibratie kan worden geïnstalleerd zonder een voorafgaande succesvolle
authenticatie met een keuringskaart.
-
○ De boordcomputer moet van elke aangeboden programmatuurrevisie en daarin opgenomen
programmatuur vaststellen dat deze integer en authentiek is, alvorens deze te installeren.
-
○ De boordcomputer moet van elke aangeboden programmatuurrevisie middels een door de
Dienst Wegverkeer goedgekeurde op versienummers gebaseerde controle vaststellen dat
de programmatuurrevisie geschikt is voor het vervangen van de op de boordcomputer
operationele programmatuur, alvorens de programmatuurrevisie te installeren.
-
○ De boordcomputer moet elke succesvol geïnstalleerde programmatuurrevisie direct na
installatie in zijn geheugen registreren onder vermelding van de na installatie geldende
basisgegevens, gebeurtenisgegevens en systeemgegevens.
Figuur 3
Artikel 3.3 Entiteiten
Voor de TOE zijn de volgende types van entiteiten (subjecten en objecten) relevant:
Artikel 3.3.1 Subjecten – middelen
S.BEWEGINGSOPNEMER
Het instrument, of een deel ervan, gekoppeld aan de TOE dat een signaal in de vorm
van een impuls afgeeft over de beweging van de auto op basis waarvan de TOE de afgelegde
afstand van de auto kan bepalen.
S.POSITIEBEPALINGSSENSOR
Het instrument, of een deel ervan, gekoppeld aan de TOE dat een signaal afgeeft aan
de TOE over de locatie van de auto op basis van verkregen informatie van een satelliet
positiebepalingsysteem.
S.BOORDCOMPUTERKAART
De geheugenkaart met chip voor gebruik in de TOE waarmee de TOE de identiteit van
de kaarthouder kan vaststellen en waarop gegevens kunnen worden opgeslagen.
S.SYSTEEMKAART
De geheugenkaart met chip die de TOE in staat stelt een elektronische handtekening
te plaatsen.
S.PRINTER
Een externe inrichting waaraan gegevens beschikbaar kunnen worden gesteld voor het
afdrukken op papier.
S.TAXAMETER
De geijkte externe inrichting voor het bepalen van de ritprijs op basis van een tarievenstructuur.
S.HANDHAVINGSMIDDELEN
Fysiek aan de TOE gekoppelde hulpmiddelen, waaronder externe gegevensdragers en ook
te beschouwen als externe gegevensdragers, t.b.v. toezichthouders voor het uitlezen
en eventueel verwerken van gegevens.
S.KALIBRATIEMIDDELEN
Fysiek aan de TOE gekoppelde hulpmiddelen, waaronder externe gegevensdragers en ook
te beschouwen als externe gegevensdragers, t.b.v. een erkende werkplaats voor het
uitlezen van gegevens en/of het ijken, kalibreren, activeren en deactiveren van de
TOE.
S.BEDRIJFSMIDDELEN
Fysiek of logisch aan de TOE gekoppelde hulpmiddelen, waaronder externe gegevensdragers
en ook te beschouwen als externe gegevensdragers, t.b.v. de vervoerder voor de overdracht
van gegevens van en naar de bedrijfsadministratie.
S.UPDATEMIDDELEN
Fysiek of logisch aan de TOE gekoppelde hulpmiddelen, waaronder externe gegevensdragers
en ook te beschouwen als externe gegevensdragers, voor de overdracht van programmatuurrevisies
naar de TOE.
Artikel 3.3.2 Subjecten – gebruikers
S.CHAUFFEURSKAART
Een aan de bestuurder afgegeven boordcomputerkaart waarmee de boordcomputer de identiteit
van de desbetreffende bestuurder kan vaststellen, een elektronische handtekening kan
plaatsen, en waarmee de operationele modus van de TOE kan worden geactiveerd.
S.INSPECTIEKAART
Een aan de met het toezicht op de naleving belaste persoon afgegeven boordcomputerkaart
die de desbetreffende persoon identificeert en waarmee de controlemodus van de boordcomputer
kan worden geactiveerd.
S.KEURINGSKAART
Een aan een erkende werkplaats afgegeven boordcomputerkaart die de desbetreffende
werkplaats identificeert en waarmee de activerings- en keuringsmodus van de boordcomputer
kan worden geactiveerd.
S.ONDERNEMERSKAART
Een aan een vervoerder afgegeven boordcomputerkaart die de desbetreffende vervoerder
identificeert en waarmee de bedrijfsmodus van de boordcomputer kan worden geactiveerd.
Artikel 3.3.3 Objecten
O.BASISGEGEVENS
De tijd, afgelegde afstand en gegevens betreffende verplaatsing zoals bijgehouden
door de TOE.
O.ARBEIDSTIJDGEGEVENS
De arbeids-, rij- en rusttijden gegevens van de bestuurder zijnde de rijtijd, pauze
en andere werkzaamheden dan rijden geregistreerd door de TOE.
O.RITGEGEVENS
De gegevens per individuele rit bestaande uit ten minste de begin- en eindlocatie,
de begin- en einddatum en tijd, afgelegde afstand, de ritprijs, de beladingstoestand
en identiteit van de bestuurder geregistreerd door de TOE.
O.BEDRIJFSGEGEVENS
Gegevens over de vervoerder, waaronder autorisaties voor het gedurende een bepaalde
periode onafhankelijk van een kaartsessie uitlezen van de TOE, zoals zijn vastgelegd
op de TOE.
O.KAARTHOUDERGEGEVENS
Gegevens opgeslagen op de boordcomputerkaart ingebracht in de TOE.
O.POSITIEGEGEVENS
Gegevens betreffende de locatie van de auto die door de S.POSITIEBEPALINGSSENSOR aan
de TOE worden aangeleverd.
O.BEWEGINGSGEGEVENS
Gegevens betreffende snelheid en afgelegde afstand die door S.BEWEGINGSOPNEMER of
S.POSITIEBEPALINGSSENSOR aan de TOE worden aangeleverd.
O.GEBEURTENISGEGEVENS
Gegevens geregistreerd door de TOE met betrekking tot routinematige en uitzonderlijke
gebeurtenissen op basis waarvan analyses mogelijk zijn en de verantwoordelijke gebruiker
of proces kan worden bepaald.
O.SYSTEEMGEGEVENS
Specifieke gegevens ter ondersteuning of noodzakelijk voor het functioneren van de
TOE of voor identificatie en instellingen van de TOE functies, bestaande uit O.VASTE_SYSTEEMGEGEVENS,
O.VARIABELE_SYSTEEMGEGEVENS en O.PROGRAMMATUURGEGEVENS.
O.VASTE_SYSTEEMGEGEVENS
Vaste gegevens van de TOE, zoals de naam van diens fabrikant, het serienummer en het
bouwjaar.
O.VARIABELE_SYSTEEMGEGEVENS
Wijzigbare gegevens van de TOE, waaronder het kenteken van de auto en O.INSTELLINGSGEGEVENS.
O.INSTELLINGSGEGEVENS
Die subset van O.VARIABELE_SYSTEEMGEGEVENS die aan kalibratie onderhevig is.
O.PROGRAMMATUUR
De combinatie van TOE uitvoerbare code en gegevens zoals de CA certificaathiërarchie(ën)
nodig voor het verifiëren van de geldigheid en authenticiteit van certificaten van
boordcomputer- en systeemkaarten, alsmede de bij dat geheel behorende O.PROGRAMMATUURGEGEVENS.
O.PROGRAMMATUURGEGEVENS
Versie-identificerende (vaste) gegevens van O.PROGRAMMATUUR, waaronder een versienummer
en een goedkeuringsnummer. De O.PROGRAMMATUURGEGEVENS van de op de TOE operationele
O.PROGRAMMATUUR vormen eveneens een subset van O.SYSTEEMGEGEVENS.
O.PROGRAMMATUURREVISIE
De combinatie van een versie van O.PROGRAMMATUUR die is bedoeld om de op de TOE operationele
O.PROGRAMMATUUR of delen daarvan te vervangen, een O.KALIBRATIEINDICATIE en een O.VERVANGBARE_VERSIES.
O.KALIBRATIEINDICATIE
Een vast attribuut van een O.PROGRAMMATUURREVISIE dat aanduidt of het vervangen van
de op de TOE operationele O.PROGRAMMATUUR met de in de O.PROGRAMMATUURREVISIE opgenomen
O.PROGRAMMATUUR wel (positief) of niet (negatief) gevolgd moet worden door kalibratie
van O.INSTELLINGSGEGEVENS.
O.VERVANGBARE_VERSIES
Een in een O.PROGRAMMATUURREVISIE opgenomen criterium (zoals een lijst of wildcard)
waarmee een versienummer kan worden vergeleken om te bepalen of het met dat criterium
correspondeert.
Ter verduidelijking is in de onderstaande figuur de samenhang van de op de TOE aanwezige
O.SYSTEEMGEGEVENS en de op de TOE operationele O.PROGRAMMATUUR en hun subobjecten
/ attributen grafisch weergegeven.
Figuur 4
Eveneens ter verduidelijking is in de onderstaande figuur de opbouw van een O.PROGRAMMATUURREVISIE
opgenomen.
Figuur 5
Artikel 3.4 Begrenzingen van de TOE
De TOE (Target of Evaluation) is de selectie van hardware en software en bijbehorende
handleidingen die uiteindelijk wordt geëvalueerd. De TOE moet alle functionaliteit
omvatten die nodig is om aan de eisen in dit profiel te voldoen, maar mag daarnaast
ook andere zaken bevatten, zoals een routeplanningsapplicatie.
De minimale omvang van de TOE wordt schematisch weergegeven in onderstaande figuur:
Figuur 6
Alle onderdelen die in deze afbeelding binnen de grijze omheining worden weergegeven
moeten onderdeel zijn van de TOE. Dus bijvoorbeeld de (voertuig) sensor voor bewegingsgegevens
(bewegingsopnemer) en de positiebepalingssensor (GNSS) hoeven geen deel uit te maken
van de TOE maar de aansluiting van deze sensoren weer wel
Andere zaken die in deze figuur zijn weergegeven (zoals de taxameter en de printer),
mogen onderdeel zijn van de TOE, hoewel dit niet altijd praktisch is. Ook extra software
en hardware die niet in deze figuur zijn weergegeven (zoals de bovengenoemde routeplanningsapplicatie)
mogen deel uitmaken van de TOE.
Daarnaast is het toegestaan om extra hardware of software binnen de fysieke behuizing
van de TOE op te nemen, zonder dat deze hardware of software meteen onderdeel worden
van de TOE. Het is echter niet toegestaan om tijdens de evaluatie van de TOE aan te
nemen dat deze extra hardware of software vertrouwd of goedaardig is: de evaluatie
van de TOE dient ondubbelzinnig aan te tonen dat de TOE nog steeds voldoet aan dit
Beschermingsprofiel als deze opgenomen hardware of software niet vertrouwd of goedaardig
is.
Artikel 4 Beveiligingsprobleem
Artikel 4.1 Beveiligingsbeleid
P.VASTLEGGEN
De TOE legt de volgende gegevens vast, afhankelijk van de werkingsmodus en het actieve
werkingsniveau:
-
○ Operationele modus basis: In ingeschakelde toestand registreert de TOE altijd de positie-
en gebeurtenisgegevens. Direct na installatie van een programmatuurrevisie registreert
de TOE de na installatie geldende basisgegevens, gebeurtenisgegevens en systeemgegevens.
Indien een boordcomputerkaart is ingebracht registreert de TOE de identiteit van de
kaarthouder;
-
○ Operationele modus arbeidstijd: Na een handmatige selectie van het werkingsniveau
arbeidstijd, registreert de TOE de positie- en gebeurtenisgegevens en de arbeidstijdgegevens.
Het werkingsniveau arbeidstijd wordt automatisch geselecteerd door het inbrengen van
de chauffeurskaart, en kan zonder chauffeurskaart handmatig geselecteerd worden na
het invoeren van een burgerservicenummer. Indien een boordcomputerkaart is ingebracht
registreert de TOE de identiteit van de kaarthouder, indien identificatie plaatsvindt
met een burgerservicenummer, dan registreert de TOE dit burgerservicenummer;
-
○ Operationele modus taxivervoer: Na een handmatige selectie van het werkingsniveau
taxivervoer, registreert de TOE de positie- en gebeurtenisgegevens, de arbeidstijdgegevens
en de ritgegevens. Indien een boordcomputerkaart is ingebracht registreert de TOE
de identiteit van de kaarthouder, indien identificatie plaatsvindt met een burgerservicenummer,
dan registreert de TOE dit burgerservicenummer;
-
○ Controlemodus: De TOE registreert de positie- en gebeurtenisgegevens en de identiteit
van de kaarthouder;
-
○ Activering/keuringsmodus: De TOE registreert de positie- en gebeurtenisgegevens en
de identiteit van de kaarthouder. Direct na installatie van een programmatuurrevisie
registreert de TOE de na installatie geldende basisgegevens, gebeurtenisgegevens en
systeemgegevens;
-
○ Bedrijfsmodus: De TOE registreert de positie- en gebeurtenisgegevens en de identiteit
van de kaarthouder.
P.BEWAREN_EN_BORGEN
De TOE bewaart de vastgelegde gegevens zodat:
-
○ wijzigingen van de gegevens detecteerbaar zijn;
-
○ de gegevens onweerlegbaar gekoppeld zijn aan de TOE;
-
○ de gegevens onweerlegbaar gekoppeld zijn aan de houder van een boordcomputerkaart.
P.ACTIES
De TOE kan de volgende acties uitvoeren, afhankelijk van de werkingsmodus, het actieve
werkingsniveau en de ingebrachte en geauthenticeerde boordcomputerkaart:
-
○ Selecteren van de juiste werkingsmodus;
-
○ Activering, deactivering en onderzoek van de TOE;
-
○ Instellen van de bedrijfsvergrendeling;
-
○ Detecteren en registreren van storingen1;
-
○ Detecteren en registeren van fouten2;
-
○ Detecteren en registeren van gebeurtenissen;
-
○ Gegevens tonen op een leesvenster;
-
○ Gegevens overbrengen van en naar een externe gegevensdrager;
-
○ Gegevens overbrengen van de chauffeurskaart naar de TOE;
-
○ Gegevens overbrengen naar een externe inrichting;
-
○ Gegevens beschikbaar stellen t.b.v. een printer;
-
○ Geven van waarschuwingssignalen
-
○ Programmatuurrevisies overbrengen van externe updatemiddelen naar de TOE;
-
○ Programmatuur van de TOE updaten met programmatuur uit een programmatuurrevisie.
P.UITVOEREN_GEGEVENS
De TOE kan de geregistreerde gegevens uitvoeren, afhankelijk van de ingebrachte boordcomputerkaart:
-
○ Geen kaart, geen andere authenticatie:
-
○ Geen kaart, authenticatie op basis van burgerservicenummer:
-
○ systeemgegevens naar een leesvenster;
-
○ ritgegevens van de huidige sessie naar een leesvenster;
-
○ arbeids-, rij- en rusttijden van de huidige sessie naar een leesvenster;
-
○ ritgegevens van de huidige sessie naar een uitvoerinterface voor een printer;
-
○ arbeids-, rij- en rusttijden van de huidige sessie naar een uitvoerinterface voor
een printer;
-
○ Chauffeurskaart:
-
○ systeemgegevens naar een leesvenster;
-
○ eigen ritgegevens naar een leesvenster;
-
○ eigen arbeids-, rij- en rusttijden naar een leesvenster;
-
○ eigen arbeids-, rij- en rusttijden naar de chauffeurskaart;
-
○ eigen ritgegevens naar een uitvoerinterface voor een printer;
-
○ eigen arbeids-, rij- en rusttijden naar een uitvoerinterface voor een printer.
-
○ Inspectiekaart: alle gegevens met uitzondering van positiegegevens en beveiligingsgegevens,
-
○ Keuringskaart: alle gegevens met uitzondering van positiegegevens en beveiligingsgegevens,
-
○ Keuringskaart, na actieve handeling gevolgd door Inspectiekaart: de positiegegevens
naar een extern handhavingsmiddel.
-
○ Ondernemerskaart: alle gegevens vastgelegd in de bedrijfsvergrendeling voor de desbetreffende
vervoerder met uitzondering van positiegegevens en beveiligingsgegevens,
-
○ Ondernemerskaart: systeemgegevens
De TOE kan
uitvoeren naar een extern bedrijfsmiddel (op afstand of lokaal) indien
-
○ de TOE voor de betreffende vervoerder vergrendeld is en
-
○ de TOE, als onderdeel van de bedrijfsgegevens, beschikt over een unieke autorisatie
voor deze uitvoer die
-
○ een nog niet verstreken geldigheidsperiode voor deze uitvoer vermeldt.
P.INVOEREN_GEGEVENS
De TOE kan gegevens invoeren, afhankelijk van de ingebrachte boordcomputerkaart:
-
○ Keuringskaart:
-
○ Ondernemerskaart:
De TOE kan, onafhankelijk van het bestaan van een gebruikerssessie:
-
○ Programmatuurrevisies invoeren van een extern updatemiddel;
-
○ Bedrijfsgegevens,
waaronder unieke autorisaties voor gegevensuitvoer zoals vermeld onder P.UITVOEREN_GEGEVENS,
invoeren van een extern bedrijfsmiddel (op afstand of lokaal), indien
-
○ de TOE voor de betreffende vervoerder vergrendeld is en
-
○ de bedrijfsgegevens zijn ondertekend door een ondernemerskaart van die vervoerder.
P.VEILIG_UPDATEN
De TOE kan zijn operationele programmatuur updaten met de programmatuur uit een (van
een extern updatemiddel afkomstige) programmatuurrevisie indien de TOE heeft vastgesteld
dat
-
○ de programmatuurrevisie integer en authentiek is,
-
○ uit het corresponderen van het versienummer van de op de TOE operationele programmatuur
met de door de Dienst Wegverkeer goedgekeurde invulling van O.VERVANGBARE_VERSIES
blijkt dat de programmatuur uit de programmatuurrevisie geschikt is voor het updaten
van de in de TOE operationele programmatuur en
-
○ een van de volgende situaties van toepassing is:
-
○ op de TOE is een werkplaatssessie actief of
-
○ op de TOE is geen gebruikerssessie actief en uit de door de Dienst Wegverkeer goedgekeurde
invulling van O.KALIBRATIEINDICATIE blijkt dat het updaten niet gevolgd hoeft te worden
door kalibratie van de TOE.
P.DEACTIVERING
De TOE kan met behulp van een keuringskaart worden gedeactiveerd. Alle gegevens opgeslagen
op de TOE tijdens de deactivering worden overgebracht naar een extern kalibratiemiddel
met uitzondering van positiegegevens. Positiegegevens kunnen alleen worden overgebracht
naar extern handhavingsmiddel als er tijdens P.DEACTIVERING op de TOE wordt aangemeld
met achtereenvolgens S.KEURINGSKAART en S.INSPECTIEKAART.
Artikel 4.2 Aannames3
A.BEDIENING
Er wordt verondersteld dat de bestuurder van de auto de TOE juist bedient en correct
het werkingsniveau, de beladingtoestand en het moment van aanvang en beëindiging van
een rit selecteert.
A.SENSOREN
Er wordt verondersteld dat de gegevens aangeboden op de sensorinterface(s) correct
zijn.
A.SYSTEEMKAART
Er wordt verondersteld dat de systeemkaart een certificaat bevat welk onweerlegbaar
is gekoppeld met de TOE; alle gegevens die door de TOE worden aangeboden correct ondertekent;
de handtekening terugstuurt naar de TOE.
A.BOORDCOMPUTERKAART
Er wordt verondersteld dat een ingebrachte boordcomputerkaart een certificaat bevat
welk onweerlegbaar is gekoppeld met de boordcomputerkaarthouder; alle gegevens die
door de TOE worden aangeboden correct ondertekent; de handtekening terugstuurt naar
de TOE.
A.BOORDCOMPUTERKAARTHOUDER
Er wordt verondersteld dat boordcomputerkaarthouders hun boordcomputerkaart niet aan
derden uitreiken en hun PIN-code geheim houden.
A.PRINTER
Er wordt verondersteld dat gegevens die worden aangeboden ten behoeve van een aangesloten
printer, correct worden afgedrukt door die printer.
A.VOOR_ACTIVERING
De TOE wordt in inactieve toestand geleverd aan voertuigfabrikanten, installateurs
en/of erkende werkplaatsen. Deze zullen de TOE installeren waarna een erkende werkplaats
de TOE zal kalibreren en vervolgens activeren. Na activering kan de TOE door een erkende
werkplaats middels deactivering weer in inactieve toestand worden teruggebracht. De
cyclus van activering en deactivering door erkende werkplaatsen kan zich gedurende
de levensduur van de TOE meerdere keren herhalen.
Voertuigfabrikanten, installateurs en/of erkende werkplaatsen zullen de integriteit
van de TOE beschermen zolang de TOE zich niet in actieve toestand bevindt.
Artikel 5 Beveiligingsdoelstellingen
Artikel 5.1 Beveiligingsdoelen voor de TOE
OT.AUDIT
De TOE legt beveiligingsrelevante gebeurtenisgegevens vast en toont deze op het beeldscherm.
OT.AUTHENTICATIE_BOORDCOMPUTERKAART
De TOE zal een ingebrachte boordcomputerkaart authenticeren door middel van zowel:
OT.VASTLEGGEN
De TOE legt gegevens vast volgens de regels van P.VASTLEGGEN en zodanig dat de geregistreerde
gegevens een correcte afspiegeling zijn van de waarden aangeboden op de sensorinterface(s).
OT.KOPPELEN_AAN_SYSTEEMKAART
De TOE zal gegevens die geregistreerd dienen te worden aan de systeemkaart aanbieden
ter ondertekening met een elektronische handtekening.
OT.KOPPELEN_AAN_BOORDCOMPUTERKAART
De TOE zal arbeids-, rij- en rusttijden van de bestuurder die geregistreerd dienen
te worden, aan de chauffeurskaart aanbieden ter ondertekening met een elektronische
handtekening.
OT.OPSLAAN
De TOE zal gegevens die geregistreerd dienen te worden opslaan. De gegevens zullen
gezamenlijk worden opgeslagen met de elektronische handtekeningen over deze gegevens.
OT.UITVOEREN_GEGEVENS
De TOE kan geregistreerde gegevens uitvoeren volgens de regels van P.UITVOEREN_GEGEVENS.
Tenzij gegevens worden uitgevoerd naar printer of leesvenster worden de bij de gegevens
opgeslagen elektronische handtekeningen eveneens uitgevoerd.
OT.INVOEREN_GEGEVENS
De TOE kan gegevens invoeren volgens de regels van P.INVOEREN_GEGEVENS.
OT.FYSIEKE_BEVEILIGING
De TOE biedt fysieke weerstand zodanig dat het openmaken van de TOE in een laboratorium
kan worden vastgesteld.
OT.BEWAKING_INTEGRITEIT
De TOE zal de integriteit van de gegevens ten minste bewaken door:
-
○ Het testen van de integriteit van opgeslagen gegevens bij het opstarten van de TOE
(O.SYSTEEMGEGEVENS), op verzoek van een gebruiker of bij het overbrengen van gegevens;
-
○ Het testen van de integriteit van de op de TOE operationele O.PROGRAMMATUUR bij het
opstarten van de TOE of op verzoek van een gebruiker;
-
○ Het testen van de correcte werking van de TOE en de S.SYSTEEMKAART bij het opstarten
van de TOE of op verzoek van een gebruiker.
OT.VEILIG_UPDATEN
De TOE kan zijn operationele programmatuur updaten met de programmatuur uit een (van
een extern updatemiddel afkomstige) programmatuurrevisie indien de TOE heeft vastgesteld
dat
-
○ de programmatuurrevisie integer en authentiek is,
-
○ het versienummer van de op de TOE operationele programmatuur correspondeert met het
criterium in O.VERVANGBARE_VERSIES en
-
○ een van de volgende situaties van toepassing is:
Artikel 5.2 Beveiligingsdoelen voor de omgeving
OE.VOOR_ACTIVERING
De TOE wordt in inactieve toestand geleverd aan voertuigfabrikanten, installateurs
en/of erkende werkplaatsen. Deze zullen de TOE installeren waarna een erkende werkplaats
de TOE zal kalibreren en vervolgens activeren. Na activering kan de TOE door een erkende
werkplaats middels deactivering weer in inactieve toestand worden teruggebracht. De
cyclus van activering en deactivering door erkende werkplaatsen kan zich gedurende
de levensduur van de TOE meerdere keren herhalen.
Voertuigfabrikanten, installateurs en/of erkende werkplaatsen zullen de integriteit
van de TOE beschermen zolang de TOE zich niet in actieve toestand bevindt.
OE.SENSOREN
De omgeving van de TOE dient ervoor zorg te dragen dat de gegevens die worden aangeboden
op de sensorinterface(s) correct zijn. Dit kan bijvoorbeeld door:
OE.PRINTER
De omgeving van de TOE dient ervoor zorg te dragen dat de gegevens die worden aangeboden
door de TOE aan de printer correct worden afgedrukt. Dit kan bijvoorbeeld door:
OE.BEDIENING
De omgeving van de TOE dient ervoor zorg te dragen dat de bestuurder van de auto correct
gebruik maakt van de mogelijkheden om het werkingsniveau, de beladingtoestand, het
begin en einde van een rit en de aanvang en einde van de dienst te selecteren. Dit
kan bijvoorbeeld door:
OE.SYSTEEMKAART
De omgeving van de TOE dient een systeemkaart te bevatten die:
-
○ een certificaat bevat welk onweerlegbaar is gekoppeld met de TOE;
-
○ alle gegevens die door de TOE worden aangeboden correct ondertekent;
-
○ de handtekening terugstuurt naar de TOE.
OE.BOORDCOMPUTERKAART
De omgeving van de TOE dient boordcomputerkaarten te bevatten die:
-
○ een certificaat bevat welk onweerlegbaar is gekoppeld met de boordcomputerkaarthouder;
-
○ alle gegevens die door de TOE worden aangeboden correct ondertekent;
-
○ de handtekening terugstuurt naar de TOE.
OE.BOORDCOMPUTERKAARTHOUDER
Boordcomputerkaarthouders dienen hun boordcomputerkaart niet aan derden uit te reiken
en hun PIN-code geheim te houden. Bestuurders mogen maar één geldige chauffeurskaart
in hun bezit hebben.
OE.DEACTIVERING
De TOE wordt buiten gebruik gesteld (deactivering) door erkende werkplaatsen. De opgeslagen
gegevens worden hierbij verwijderd met uitzondering van O.SYSTEEMGEGEVENS, O.PROGRAMMATUUR
en O.POSITIEGEGEVENS.
OE.VEILIG_UPDATEN
De omgeving van de TOE dient programmatuurrevisies aan te leveren waarvan, voorafgaand
aan het door de fabrikant aan de programmatuurrevisie aanbrengen van enig integriteits-
en authenticiteitskenmerk,
-
○ de door de fabrikant gekozen invulling van O.VERVANGBARE_VERSIES zodanig is dat deze
door de TOE wordt gebruikt om vast te stellen of de programmatuur uit de desbetreffende
programmatuurrevisie geschikt is voor het updaten van de op de TOE operationele programmatuur
en
-
○ de door de fabrikant gekozen invulling van O.KALIBRATIEINDICATIE en O.VERVANGBARE_VERSIES
is goedgekeurd door de Dienst Wegverkeer.
Artikel 6 Functionele beveiligingseisen
De functionele beveiligingseisen zijn verdeeld in een aantal functionele groepen.
Iedere groep bevat één of meer onderling samenhangende eisen. De groepen zijn:
-
○ Beveiligingsrollen: Deze definiëren de verschillende rollen en modi van de TOE, en
hoe deze rollen worden aangenomen.
-
○ Identificatie en Authenticatie: Deze definiëren hoe boordcomputerkaarten en andere
randapparatuur worden geïdentificeerd en waar nodig geauthenticeerd.
-
○ BCT-toegangsbeleid: Hier wordt beschreven wat wordt vastgelegd, en wie daar wat mee
mag doen.
-
○ Handtekeningen: Hier wordt beschreven hoe handtekeningen worden gevraagd aan Systeemkaart
en Boordcomputerkaart
-
○ Beveiligingsaudit: Hier wordt beschreven hoe welke systeemgebeurtenissen worden geregistreerd
en hoe deze zijn beschermd
-
○ Bescherming van de BCT: Hier wordt beschreven hoe de fysieke beveiliging van de BCT
werkt en hoe de integriteit wordt gewaarborgd.
Artikel 6.1 Beveiligingsrollen
FMT_SMR.2 Restricties op gebruikersrollen
FMT_SMR.2.1 De TSF kent de volgende gebruikersrollen:
-
○ BESTUURDER
-
○ TOEZICHTHOUDER
-
○ WERKPLAATS
-
○ VERVOERDER
-
○ ONBEKEND
FMT_SMR.2.2 De TSF kan rollen met gebruikers associëren
FMT_SMR.2.3 De TSF zal de volgende regels afdwingen:
-
○ De rol BESTUURDER wordt aangenomen (en de werkingsmodus wordt Operationele Modus Arbeidstijd)
als S.CHAUFFEURSKAART is ingebracht en geauthenticeerd, of als geen S.BOORDCOMPUTERKAART
is ingebracht en de gebruiker met het burgerservicenummer is geïdentificeerd.
-
○ De rol TOEZICHTHOUDER wordt aangenomen (en de werkingsmodus wordt Controle Modus)
als S.INSPECTIEKAART is ingebracht en geauthenticeerd
-
○ De rol WERKPLAATS wordt aangenomen (en de werkingsmodus wordt Activerings/Keuringsmodus)
als S.KEURINGSKAART is ingebracht en geauthenticeerd
-
○ De rol VERVOERDER wordt aangenomen (en de werkingsmodus wordt Bedrijfsmodus) als S.ONDERNEMERSKAART
is ingebracht en geauthenticeerd
-
○ De rol ONBEKEND wordt aangenomen (en de werkingsmode wordt Operationele Modus Basis)
als:
Artikel 6.2 Identificatie en Authenticatie
FIA_UID.1 Tijd van identificatie (Boordcomputerkaarten)
FIA_UID.1.1 De TSF staat het registreren van de O.POSITIEGEGEVENS, en O.GEBEURTENISGEGEVENS namens
de gebruikersrol ONBEKEND toe, voordat een gebruiker is geïdentificeerd.
FIA_UID.1.2 De TSF eist dat S.CHAUFFEURSKAART, S.INSPECTIEKAART, S.KEURINGSKAART, en S.ONDERNEMERSKAART
succesvol zijn geïdentificeerd op basis van de identiteit weergegeven in het certificaat
op die boordcomputerkaart, alvorens andere handelingen te verrichten namens de desbetreffende
gebruiker.
FIA_UAU.1 Tijd van authenticatie (Boordcomputerkaarten)
FIA_UAU.1.1 De TSF staat het registreren van de O.BASISGEGEVENS, O.ARBEIDSTIJDGEGEVENS, O.RITGEGEVENS,
O.POSITIEGEGEVENS, O.BEWEGINGSGEGEVENS en O.GEBEURTENISGEGEVENS namens de gebruikersrol
ONBEKEND toe, voordat een gebruiker is geauthenticeerd.
FIA_UAU.1.2 De TSF eist dat S.CHAUFFEURSKAART, S.INSPECTIEKAART, S.KEURINGSKAART en S.ONDERNEMERSKAART
succesvol zijn geauthenticeerd op basis van:
-
○ Een minimaal 4 karakter lange PIN (deze authenticatie wordt door S.CHAUFFEURSKAART,
S.INSPECTIEKAART, S.KEURINGSKAART en S.ONDERNEMERSKAART uitgevoerd en het resultaat
wordt door deze aan de TSF gerapporteerd), en
-
○ Verificatie dat het certificaat op de boordcomputerkaart geldig en authentiek is.
FIA_AFL.1 Falen van authenticatie (FIA_AFL)
FIA_AFL.1.1 De TSF detecteert wanneer vijf (5) opeenvolgende niet-succesvolle authenticatiepogingen
plaatsvinden gerelateerd aan het authenticeren van dezelfde S.CHAUFFEURSKAART, S.INSPECTIEKAART,
S.KEURINGSKAART of S.ONDERNEMERSKAART
FIA_AFL.1.2 Als er vijf (5) opeenvolgende niet-succesvolle authenticatiepogingen zijn
gedetecteerd, dan zal de TSF:
-
○ een gebeurtenis genereren;
-
○ de gebruiker waarschuwen;
-
○ aannemen dat de gebruikersrol ONBEKEND is.
FIA_UAU.6 Herauthenticeren
FIA_UAU.6.1 De TSF zal S.CHAUFFEURSKAART, S.INSPECTIEKAART, S.KEURINGSKAART en S.ONDERNEMERSKAART
herauthenticeren onder de volgende condities:
-
○ bij het plaatsen van een elektronische handtekening door een boordcomputerkaart;
-
○ bij het invoeren van de boordcomputerkaart;
-
○ bij het opheffen van een geblokkeerde kaartsessie;
-
○ bij herstel van de stroomvoorziening na een onderbreking
FTA_SSL.2 Blokkeren van een sessie op initiatief van een gebruiker
FTA_SSL.2.1 De TSF zal S.BOORDCOMPUTERKAART toestaan een sessie te blokkeren door het uitnemen
van S.BOORDCOMPUTERKAART zonder dat is aangegeven dat de sessie van de gebruiker is
beëindigd en als de auto zich in de toestand stilstaan bevindt door middel van:
FTA_SSL.2.2 De TSF eist dat de volgende handelingen plaatsvinden alvorens de blokkering op te
heffen:
FTA_SSL.3 Automatisch beëindigen van een sessie
FTA_SSL.3.1 De TSF beëindigt een kaartsessie:
-
○ als een geblokkeerde S.CHAUFFEURSKAART sessie niet binnen 60 minuten wordt hervat;
-
○ meteen als een andere S.BOORDCOMPUTERKAART wordt ingebracht dan waarvoor de TSF is
geblokkeerd, tenzij
-
○ de TSF in de toestand P.DEACTIVERING is geplaatst door een S.KEURINGSKAART waarna
een S.INSPECTIEKAART wordt aangeboden, of;
-
○ in de Operationele Modus Arbeidstijd of Operationele Modus Taxivervoer een S.INSPECTIEKAART
wordt aangeboden;
-
○ als in een sessie van een S.ONDERNEMERSKAART, S.INSPECTIEKAART of S.KEURINGSKAART
gedurende 5 minuten geen handelingen aan de TSF verricht.
FIA_UID.2 Identificatie voor enige actie (Systeemkaart)
FIA_UID.2.1 De TSF identificeert S.SYSTEEMKAART op basis van de identiteit weergegeven in het
machine-gebonden certificaat zoals vastgelegd op de systeemkaart verbonden met de
TOE, alvorens handelingen te verrichten namens S.SYSTEEMKAART.
FIA_UID.2 Identificatie voor enige actie (Overigen)
FIA_UID.2.1 De TSF identificeert S.BEWEGINGSOPNEMER, S.POSITIEBEPALINGSSENSOR, S.PRINTER, S.TAXAMETER,
S.HANDHAVINGSMIDDELEN, S.KALIBRATIEMIDDELEN, S.BEDRIJFSMIDDELEN en S.UPDATEMIDDELEN
op basis van hun aanwezigheid op de daarvoor bestemde interface, alvorens handelingen
te verrichten namens de desbetreffende subjecten.
Artikel 6.3 BCT-toegangsbeleid
FDP_ACC.2 Volledige toegangscontrole
FDP_ACC.2.1 De TSF dwingt het toepassen van het BCT-toegangsbeleid af voor alle subjecten, alle
objecten en alle handelingen4.
FDP_ACC.2.2 De TSF garandeert dat alle verrichtingen tussen een subject gecontroleerd door de
TSF en een object gecontroleerd door de TSF zijn onderworpen aan een toegangscontrole
SFP.
FDP_ACF.1 Toegangscontrole op basis van attributen
FDP_ACF.1.1 De TSF dwingt het toepassen van het BCT-toegangsbeleid af voor objecten voor alle
subjecten en alle objecten.
FDP_ACF.1.2 De TSF dwingt de volgende regels af om te bepalen of een verrichting tussen gecontroleerde
subjecten en gecontroleerde objecten is toegestaan:
-
○ TSF zal:
-
○ Altijd O.BEWEGINGSGEGEVENS inlezen, samenvatten, en samen met de tijd5 en de gegevens betreffende verplaatsing beschikbaar stellen als O. BASISGEGEVENS;
-
○ Altijd O.POSITIEGEGEVENS inlezen en vastleggen;
-
○ O.ARBEIDSTIJDGEGEVENS vastleggen in Operationele Modus Arbeidstijd en Operationele
Modus Taxivervoer;
-
○ O.RITGEGEVENS vastleggen in Operationele Modus Taxivervoer.
-
○ Altijd O.PROGRAMMATUURREVISIEs (kunnen) inlezen van S.UPDATEMIDDELEN en (t.b.v. een
eventuele update) vastleggen;
-
○ Direct na het uitvoeren van een software update met een O.PROGRAMMATUURREVISIE de
na de update geldende O.BASISGEGEVENS, O.GEBEURTENISGEGEVENS en O.SYSTEEMGEGEVENS
vastleggen in Operationele Modus Basis c.q. Activerings- en Keuringsmodus;
-
○ O.BEDRIJFSGEGEVENS van een bepaalde vervoerder (kunnen) inlezen van S.BEDRIJFSMIDDELEN,
indien:
-
○ De volgende gegevens:
-
○ O.SYSTEEMGEGEVENS en
-
○ alle O.BASISGEGEVENS, O.ARBEIDSTIJDENGEGEVENS, O.RITGEGEVENS, O.BEDRIJFSGEGEVENS,
O.KAARTHOUDERGEGEVENS en O.GEBEURTENISGEGEVENS geregistreerd gedurende de periode
dat de TSF voor de desbetreffende vervoerder is vergrendeld of vergrendeld geweest
(bedrijfsvergrendeling)
(kunnen) uitvoeren naar S.BEDRIJFSMIDDELEN, indien:
-
○ de TSF voor de desbetreffende vervoerder is vergrendeld en
-
○ de TSF, als onderdeel van O.BEDRIJFSGEGEVENS, beschikt over een unieke autorisatie
voor deze uitvoer die
-
○ NB: Als gegevens worden vastgelegd dan is dat inclusief de elektronische handtekening6.
-
○ ONBEKEND mag de in de TOE operationele O.PROGRAMMATUUR door de O.PROGRAMMATUUR uit
een (van S.UPDATEMIDDELEN afkomstige) O.PROGRAMMATUURREVISIE vervangen indien:
-
○ de O.PROGRAMMATUURREVISIE integer en authentiek is,
-
○ het versienummer van de in de TOE operationele O.PROGRAMMATUUR correspondeert met
het criterium in O.VERVANGBARE_VERSIES uit de O.PROGRAMMATUURREVISIE en
-
○ de O.KALIBRATIEINDICATIE uit de O.PROGRAMMATUURREVISIE negatief is.
-
○ ONBEKEND mag O.SYSTEEMGEGEVENS tonen op een leesvenster.
-
○ BESTUURDER mag de eigen:
-
○ O.RITGEGEVENS, O.ARBEIDSTIJDENGEGEVENS en O.KAARTHOUDERGEGEVENS tonen op een leesvenster;
-
○ O.ARBEIDSTIJDENGEGEVENS opslaan op de S.CHAUFFEURSKAART;
-
○ O.ARBEIDSTIJDENGEGEVENS van de S.CHAUFFEURSKAART overbrengen naar de TOE;
-
○ O.RITGEGEVENS en O.KAARTHOUDERGEGEVENS uitvoeren naar S.PRINTER.
-
○ BESTUURDER mag O.SYSTEEMGEGEVENS tonen op een leesvenster.
-
○ TOEZICHTHOUDER mag alle O.BASISGEGEVENS, O.ARBEIDSTIJDENGEGEVENS, O.RITGEGEVENS, O.BEDRIJFSGEGEVENS,
O.KAARTHOUDERGEGEVENS, O.GEBEURTENISGEGEVENS en O.SYSTEEMGEGEVENS
-
○ tonen op een leesvenster;
-
○ uitvoeren naar S.PRINTER;
-
○ uitvoeren naar S.HANDHAVINGSMIDDELEN.
-
○ TOEZICHTHOUDER mag, mits de TOE is gedeactiveerd, O.POSITIEGEGEVENS
-
○ WERKPLAATS mag de TOE deactiveren.
-
○ WERKPLAATS mag O.VARIABELE_SYSTEEMGEGEVENS aanpassen
-
○ WERKPLAATS mag de in de TOE operationele O.PROGRAMMATUUR door de O.PROGRAMMATUUR uit
een (van S.UPDATEMIDDELEN afkomstige) O.PROGRAMMATUURREVISIE vervangen indien:
-
○ de O.PROGRAMMATUURREVISIE integer en authentiek is en
-
○ het versienummer van de in de TOE operationele O.PROGRAMMATUUR correspondeert met
het criterium in O.VERVANGBARE_VERSIES uit de O.PROGRAMMATUURREVISIE.
-
○ WERKPLAATS mag alle O.BASISGEGEVENS, O.RITGEGEVENS, O.ARBEIDSTIJDENGEGEVENS, O.BEDRIJFSGEGEVENS,
O.KAARTHOUDERGEGEVENS, O.GEBEURTENISGEGEVENS en O.SYSTEEMGEGEVENS
-
○ tonen op een leesvenster;
-
○ uitvoeren naar S.PRINTER;
-
○ uitvoeren naar S.KALIBRATIEMIDDELEN.
-
○ VERVOERDER mag alle O.BASISGEGEVENS, O.ARBEIDSTIJDENGEGEVENS, O.RITGEGEVENS, O.BEDRIJFSGEGEVENS,
O.KAARTHOUDERGEGEVENS en O.GEBEURTENISGEGEVENS geregistreerd gedurende de periode
dat de TSF voor de desbetreffende vervoerder is vergrendeld of vergrendeld geweest
(bedrijfsvergrendeling)
-
○ tonen op een leesvenster;
-
○ uitvoeren naar S.PRINTER;
-
○ uitvoeren naar S.BEDRIJFSMIDDELEN.
-
○ VERVOERDER mag alle O.SYSTEEMGEGEVENS
-
○ tonen op een leesvenster;
-
○ uitvoeren naar S.PRINTER;
-
○ uitvoeren naar S.BEDRIJFSMIDDELEN.
-
○ VERVOERDER mag O.BEDRIJFSGEGEVENS aanpassen
FDP_ACF.1.3 -7
FDP_ACF.1.4 De TSF zal expliciet toegang van subjecten naar objecten weigeren gebaseerd op de
volgende regel:
FDP_ETC.2 Export van gegevens met attributen
FDP_ETC.2.1 De TSF dwingt het gebruik van het BCT-toegangsbeleid af wanneer O.BASISGEGEVENS,
O.ARBEIDSTIJDENGEGEVENS, O.RITGEGEVENS, O.POSITIEGEGEVENS, O.BEDRIJFSGEGEVENS, O.GEBEURTENISGEGEVENS
en O.SYSTEEMGEGEVENS gegevens worden overgebracht naar externe gegevensdragers of
inrichtingen buiten de TSF.
FDP_ETC.2.2 De TSF exporteert gegevens inclusief de bijbehorende elektronische handtekening over
deze gegevens, behalve als deze naar S.PRINTER of het leesvenster worden geëxporteerd.
FDP_ETC.2.3 De TSF garandeert dat de elektronische handtekening onlosmakelijk is geassocieerd
met de geëxporteerde gegevens.
FDP_ETC.2.4 De TSF dwingt de volgende regels af wanneer gegevens worden geëxporteerd van de TSF:
FDP_ITC.1 Import van gegevens zonder attributen
FDP_ITC.1.1 De TSF dwingt het gebruik van het BCT-toegangsbeleid af wanneer gegevens worden ingelezen
van S.BOORDCOMPUTERKAARTEN, S.BEWEGINGSOPNEMER, S.POSITIEBEPALINGSSENSOR, S.HANDHAVINGSMIDDELEN,
S.KALIBRATIEMIDDELEN, S.BEDRIJFSMIDDELEN, S.UPDATEMIDDELEN of S.TAXAMETER.FDP_ITC.1.2 De TSF negeert attributen wanneer gegevens worden ingelezen door de TSF.
FDP_ITC.1.3 De TSF dwingt de volgende regels af wanneer gegevens worden ingelezen door de TSF:
Artikel 6.4 Handtekeningen
FDP_DAU.2 Data authenticatie met identiteit
FDP_DAU.2.1 De TSF kan een bewijs van de validiteit van gegevens genereren als volgt:
-
○ Een hash van O.RITGEGEVENS wordt ondertekend door de S.SYSTEEMKAART over de volledige
set van desbetreffende O.RITGEGEVENS direct bij het registreren van deze gegevens
per individuele rit;
-
○ Een hash van O.ARBEIDSTIJDGEGEVENS wordt ondertekend door S.CHAUFFEURSKAART direct
bij het registreren van deze gegevens bij het beëindigen van de dienst van de bestuurder
of het afsluiten van de kaartsessie;
-
○ Een hash van O.ARBEIDSTIJDGEGEVENS wordt ondertekend door S.SYSTEEMKAART direct bij
het registreren van deze gegevens indien de S.CHAUFFEURSKAART niet beschikbaar is;
-
○ Een hash van alle gegevens overgebracht naar S.HANDHAVINGSMIDDELEN, S.BEDRIJFSMIDDELEN,
S.KALIBRATIEMIDDELEN wordt ondertekend door de S.SYSTEEMKAART op het moment van de
overdracht;
-
○ Hashes van alle geregistreerde O.BASISGEGEVENS, O.ARBEIDSTIJDENGEGEVENS, O.RITGEGEVENS,
O.POSITIEGEGEVENS, O.BEDRIJFSGEGEVENS en O.GEBEURTENISGEGEVENS worden ondertekend
door S.SYSTEEMKAART.
FDP_DAU.2.2 De TSF levert S.BOORDCOMPUTERKAART een mogelijkheid om het bewijs van de integriteit
en authenticiteit van de gegevens en de identiteit van de gebruiker die de gegevens
heeft ondertekend te verifiëren.
FTP_ITC.1 Vertrouwd kanaal tussen TSFs
FTP_ITC.1.1 De TSF levert een communicatiekanaal tussen de TSF en de S.SYSTEEMKAART. Dit communicatiekanaal
is gescheiden van andere communicatiekanalen, levert zekere identificatie van de eindpunten,
en beschermt de data op het kanaal tegen wijzigen of lekken.
FTP_ITC.1.2 De TSF mag alleen zelf communicatie initiëren over het vertrouwde kanaal.
FTP_ITC.1.3 De TSF zal communicatie initiëren over het vertrouwde kanaal voor het door S.SYSTEEMKAART
laten zetten van handtekeningen en het ontvangen van deze handtekeningen.
FCS_COP.1 Cryptografische operaties
FCS_COP.1.1 De TSF zal hash-operaties uitvoeren volgens zowel het SHA-1 en het SHA-256 cryptografische
algoritme zoals gedefinieerd in de ISO/IEC 10118-3, FIPS PUB 180-2 en ETSI TS 102
176-1 standaarden.
Artikel 6.5 Beveiligingsaudit
FAU_GEN.1 Genereren van gebeurtenisgegevens8
FAU_GEN.1.1 De TSF genereert een gebeurtenis record van de volgende gebeurtenissen:
-
○ het aanzetten van de TOE;
-
– het uitzetten van de TOE;
-
– het optreden van storingen9 in de werking van de TSF;
-
a. een storing in de werking van de registratiefunctie;
-
b. een storing in de werking van de beveiligingsfuncties;
-
c. een storing in de werking van de sensoren;
-
d. een storing in de overbrenging naar een externe interface
-
e. een storing in de werking van de systeemkaart;
-
f. een storing in de werking van de boordcomputerkaarten.
-
– het optreden van fouten10 in de werking van de TSF;
-
a. een integriteitfout in de programmatuur;
-
b. een integriteitfout in de systeemgegevens;
-
c. een integriteitfout in de opgeslagen gebruikersgegevens;
-
d. een integriteitfout bij de gegevensuitvoer naar de chauffeurskaart;
-
e. een fout in de registratiefunctie;
-
f. een fout die de beveiliging van de boordcomputer in gevaar brengt;
-
g. een fout bij de gegevensuitvoer naar externe inrichtingen;
-
h. een fout bij het gebruik van de systeemkaart;
-
i. een fout bij het gebruik van de boordcomputerkaart;
-
j. een fout in de bewegingsensor;
-
k. een fout in de positiebepalingsensor;
-
l. een fout in de koppeling met de taxameter.
-
○ het inbrengen van S.BOORDCOMPUTERKAART;
-
○ het uitnemen van S.BOORDCOMPUTERKAART;
-
– het inbrengen van een ongeldige S.BOORDCOMPUTERKAART;
-
– het inbrengen van een S.CHAUFFEURSKAART waarvan blijkt dat de datum en het tijdstip
van de laatste registratie op S.CHAUFFEURSKAART op een later tijdstip valt dan de
actuele datum en tijdstip volgens de tijdwaarneming van de TSF;
-
– het niet juist afsluiten van de kaartsessie;
-
– het inbrengen van S.CHAUFFEURSKAART waarvan blijkt dat de laatste kaartsessie niet
juist is afgesloten;
-
– het ontstaan van onvoldoende opslagcapaciteit;
-
– het verdwijnen van onvoldoende opslagcapaciteit;
-
– het ontstaan van onvoldoende opslagcapaciteit op de S.CHAUFFEURSKAART;
-
– het verdwijnen van onvoldoende opslagcapaciteit op de S.CHAUFFEURSKAART;
-
– het ontstaan van een onderbreking van ten minste 5 seconden in de stroomvoorziening
van de TOE;
-
– het verdwijnen van een onderbreking van ten minste 5 seconden in de stroomvoorziening
van de TOE;
-
– het begin van een periode waarin de contactgeschakelde voedingsbron is uitgeschakeld
in de toestand rijden;
-
– het einde van een periode waarin de contactgeschakelde voedingsbron is uitgeschakeld
in de toestand rijden;
-
– het vaststellen van een toestand verplaatsen door de verplaatsingsopnemer van de TOE
wanneer er geen O.BEWEGINGSGEGEVENS van de S.BEWEGINGSOPNEMER worden verkregen;
-
– het begin van het niet kunnen verkrijgen van O.POSITIEGEGEVENS gedurende 5 minuten;
-
– het einde van het niet kunnen verkrijgen van O.POSITIEGEGEVENS gedurende 5 minuten;
-
– een afwijking van meer dan twee procent tussen de, met behulp van O.BEWEGINGSGEGEVENS
en de constante van de boordcomputer in de O.SYSTEEMGEGEVENS, berekende afstand en
de werkelijke afstand;
-
– een afwijking van meer dan vijf procent tussen de O.BEWEGINGSGEGEVENS en de O.POSITIEGEGEVENS;
-
– het ontstaan van een onderbreking in de koppeling met S.TAXAMETER;
-
– het verdwijnen van een onderbreking in de koppeling met S.TAXAMETER;
-
○ het overbrengen van gegevens inclusief de naam van de gebruikte interface;
-
– het activeren van de TSF;
-
– het keuren van de TSF;
-
– het deactiveren van de TSF;
-
– het vergrendelen van de TSF;
-
– het inschakelen van een werkingsmodus inclusief naam werkingsmodus;
-
– het uitschakelen van een werkingsmodus inclusief naam werkingsmodus;
-
– het begin van rijden in de operationele modus werkingsniveau taxivervoer zonder S.CHAUFFEURSKAART;
-
– het einde van rijden in de operationele modus werkingsniveau taxivervoer zonder S.CHAUFFEURSKAART;
-
– het detecteren van een niet-succesvolle authenticatiepoging;
-
– het installeren van een programmatuurrevisie;
-
– starten of stoppen van audit- en beveiligingsfuncties;
-
– het uitblijven of weigeren van een elektronische handtekening door S.CHAUFFEURSKAART
of S.SYSTEEMKAART;
-
– het detecteren van een niet-geautoriseerde (poging tot) wijziging van de TSF configuratie,
waaronder het detecteren van een (of meer) van de volgende aan het installeren van
een programmatuurrevisie gerelateerde situaties:
-
a. een integriteit- of authenticiteitfout in de aangeboden O.PROGRAMMATUURREVISIE;
-
b. het versienummer van de in de TOE operationele O.PROGRAMMATUUR correspondeert niet
met het criterium in O.VERVANGBARE_VERSIES uit de aangeboden O.PROGRAMMATUURREVISIE;
-
c. het aanbieden van een O.PROGRAMMATUURREVISIE met een positieve O.KALIBRATIEINDICATIE
terwijl de TOE zich niet in activerings- en keuringsmodus bevindt;
-
– toegang tot het gebeurtenissenlogboek.
FAU_GEN.1.2 De TSF legt per gebeurtenis ten minste de volgende informatie vast zoals die geldt
op het moment van optreden:
-
○ een automatisch gegenereerd oplopend volgnummer;
-
○ type van de gebeurtenis (de gebeurteniscode);
-
○ de datum en het tijdstip als gecoördineerde wereldtijd;
-
○ de kilometerstand;
-
○ de verplaatsingstoestand van de auto (rijden/stilstaan);
-
○ de werkingsmodus en werkingsniveau van de TOE;
-
○ waar relevant, de uitkomst van de gebeurtenis;
-
○ waar relevant, aanvullende relevante informatie, waaronder, bij detectie van een niet
geautoriseerde (poging tot) installeren van een programmatuurrevisie, vermelding van
de specifieke reden waarom dit niet geautoriseerd is;
als een storing of fout is opgetreden tevens:
als een S.BOORDCOMPUTERKAART is ingebracht in de TSF tevens:
als geen S.BOORDCOMPUTERKAART is ingebracht, maar de gebruiker is geïdentificeerd
met een burgerservicenummer:
FAU_SAA.1 Detectie van potentiële inbreuk op beveiliging
FAU_SAA.1.1 De TSF beschouwt de in FAU_GEN.1.1 met een – gemarkeerde gebeurtenissen als beveiligingsrelevant.
FAU_ARP.1 Automatische respons op gebeurtenissen
FAU_ARP.1.1 De TSF geeft een waarschuwingsignaal op het leesvenster wanneer een beveiligingsrelevante
gebeurtenis wordt gedetecteerd.
FAU_STG.1 Bescherming van gebeurtenisgegevens
FAU_STG.1.1 De TSF beschermt de opgeslagen gebeurtenis records in O.GEBEURTENISGEGEVENS tegen
ongeautoriseerd verwijderen.
FAU_STG.1.2 De TSF voorkomt ongeautoriseerde aanpassingen in de opgeslagen gebeurtenis records
in O.GEBEURTENISGEGEVENS.
FAU_STG.4 Voorkomen van verlies van gebeurtenisgegevens
FAU_STG.4.1 De TSF overschrijft de oudste gebeurtenis records met nieuwere wanneer de opslagcapaciteit
voor de O.GEBEURTENISGEGEVENS vol is.
FRU_RSA.2 Maximum en minimum quotas
FRU_RSA.2.1 -11
FRU_RSA.2.2 De TSF garandeert een minimum hoeveelheid opslagcapaciteit voldoende voor 365 dagen
van normaal gebruik tegelijkertijd te gebruiken voor:
-
○ O.BASISGEGEVENS;
-
○ O.RITGEGEVENS;
-
○ O.POSITIEGEGEVENS;
-
○ O.BEDRIJFSGEGEVENS;
-
○ O.GEBEURTENISGEGEVENS;
FPT_STM.1 Tijd
FPT_STM.1.1 De TSF is in staat om betrouwbare tijdsregistraties uit te voeren in de Universal
Time Coordinated met een afwijking van ten hoogste één (1) seconde en een resolutie
van één (1) seconde of nauwkeuriger.
Artikel 6.6 Bescherming van de BCT
FPT_PHP.1 Passieve detectie van fysieke aanvallen
FPT_PHP.1.1 De TSF zal een laboratorium in staat stellen om fysieke aanvallen ondubbelzinnig
te detecteren12.
FPT_PHP.1.2 De TSF zal het mogelijk maken om te bepalen dat fysieke aanvallen op de TSF, de S.SYSTEEMKAART
of de verbinding tussen TSF en de S.SYSTEEMKAART hebben plaatsgevonden.
FPT_TST.1 Testen van de TSF
FPT_TST.1.1 De TSF zal een verzameling zelf-testen doen bij het opstarten om de correcte werking
van de TSF te demonstreren.
FPT_TST.1.2 De TSF zal TOEZICHTHOUDER, WERKPLAATS en VERVOERDER de mogelijkheden bieden om de
integriteit van de TSF data te verifiëren.
FPT_TST.1.3 De TSF zal ONBEKEND, TOEZICHTHOUDER, WERKPLAATS en VERVOERDER de mogelijkheden bieden
om de integriteit van de op de TOE operationele O.PROGRAMMATUUR, waaronder de TSF
uitvoerbare programmatuurcode (executables), te verifiëren.
Artikel 7 Garantieniveau
Voor de typegoedkeuring van de boordcomputer wordt een Common Criteria garantieniveau
vereist van ten minste EAL3. Dit niveau analyseert de geclaimde beveiligingsfuncties
door middel van een analyse van functionele en interface specificatie, (gebruikers)documentatie
en een beschrijving van de architectuur van de boordcomputer. De analyse wordt ondersteund
met onafhankelijk testen, verificatie van de testresultaten van de ontwikkelaar een
beperkt onderzoek naar zwakheden. Daarnaast worden aspecten van de gebruikte ontwerpmiddelen,
configuratiebeheer en leveringsprocedures beschouwd.
In combinatie met een uitgebreid en formeel geëvalueerd beveiligingsprofiel (Protection
Profile), een periodiek onderzoek en actieve handhaving, kan aannemelijk worden gemaakt
dat goedgekeurde boordcomputers voldoende weerstand zullen bieden tegen de onderkende
dreigingen en dat gebrekkig functionerende boordcomputers kunnen worden opgespoord.
Artikel 8 Rationale
Artikel 8.1 Beveiligingsdoelstellingen
Deze sectie bevat een uitleg dat de beveiligingsdoelstellingen het gehele beveiligingsprobleem
adresseren. Dit beveiligingsprobleem bestaat uit drie delen:
-
○ Dreigingen: Dit profiel bevat geen dreigingen, dus er is ook geen uitleg
-
○ Beveiligingsbeleid: Zie sectie 8.1.1
-
○ Aannames: Zie sectie 8.1.2
Artikel 8.1.1 Beveiligingsbeleid
Deze sectie bevat een uitleg dat de beveiligingsdoelstellingen alle delen van het
beveiligingsbeleid implementeren.
P.VASTLEGGEN
Deze wordt direct ondervangen door OT.VASTLEGGEN. Daarnaast vindt indirecte ondersteuning
plaats door OT.FYSIEKE_BEVEILIGING en OT.AUTHENTICATIE_BOORDCOMPUTERKAART.
P.BEWAREN_EN_BORGEN
Het bewaren van de gegevens wordt ondervangen door:
Het detecteren van de wijzigingen in de vastgelegde gegevens wordt ondervangen door:
-
○ Het aanbieden van de gegevens aan de systeemkaart (OT.KOPPELEN_AAN_SYSTEEMKAART) en
het door deze ondertekenen van de gegevens (OE.SYSTEEMKAART);
-
○ Het aanbieden van gegevens aan de boordcomputerkaart (OT.KOPPELEN_AAN_BOORDCOMPUTERKAART)
en het door deze ondertekenen van de gegevens (OE.BOORDCOMPUTERKAART).
Het onweerlegbaar koppelen aan de TOE wordt ondervangen door:
-
○ Het aanbieden van de gegevens aan de systeemkaart (OT.KOPPELEN_AAN_SYSTEEMKAART) en
het door deze ondertekenen van de gegevens (OE.SYSTEEMKAART);
-
○ Dat de systeemkaart een certificaat bevat welk onweerlegbaar is gekoppeld aan de TOE
(OE.SYSTEEMKAART).
Het onweerlegbaar koppelen aan de boordcomputerkaarthouder wordt ondervangen door:
-
○ Het aanbieden van gegevens aan de boordcomputerkaart (OT.KOPPELEN_AAN_BOORDCOMPUTERKAART)
en het door deze ondertekenen van de gegevens (OE.BOORDCOMPUTERKAART);
-
○ Dat de boordcomputerkaart een certificaat bevat welk onweerlegbaar is gekoppeld aan
de boordcomputerkaarthouder (OE.BOORDCOMPUTERKAART);
-
○ Dat de boordcomputerkaarthouder zich authenticeert met een PIN bij het insteken van
de kaart (OT.AUTHENTICATIE_BOORDCOMPUTERKAART);
-
○ Dat de boordcomputerkaarthouder zijn kaart veilig bewaart en zijn PIN geheim houdt.
(OE.BOORDCOMPUTERKAARTHOUDER).
Daarnaast vindt indirecte ondersteuning plaats door OT.FYSIEKE_BEVEILIGING, OT.AUDIT
en OT.BEWAKING_INTEGRITEIT.
P.ACTIES
Deze wordt direct ondervangen door OT.AUDIT, OT.UITVOEREN_GEGEVENS, OT.INVOEREN_GEGEVENS,
OT_VEILIG_UPDATEN, OT.AUTHENTICATIE_BOORDCOMPUTERKAART en OE.BEDIENING. Daarnaast
vindt indirecte ondersteuning plaats door OT.FYSIEKE_BEVEILIGING en OT.BEWAKING_INTEGRITEIT.
P.UITVOEREN_GEGEVENS
Deze wordt direct ondervangen door OT.UITVOEREN_GEGEVENS, OT.AUTHENTICATIE_BOORDCOMPUTERKAART
en OE.BEDIENING. Daarnaast vindt indirecte ondersteuning plaats door OE.PRINTER.
P.INVOEREN_GEGEVENS
Deze wordt direct ondervangen door OT.INVOEREN_GEGEVENS, OT.AUTHENTICATIE_BOORDCOMPUTERKAART
en OE.BEDIENING.
P.VEILIG_UPDATEN
Deze wordt direct ondervangen door OT.VEILIG_UPDATEN, OE.VEILIG_UPDATEN, OT.AUTHENTICATIE_BOORDCOMPUTERKAART
en OE.BEDIENING. Daarnaast vindt indirecte ondersteuning plaats door OT.INVOEREN_GEGEVENS.
P.DEACTIVERING
Deze wordt direct ondervangen door OE.DEACTIVERING (voor deactivering en verwijderen
gegevens), OT.UITVOEREN_GEGEVENS (voor wat betreft het uitvoeren van gegevens) en
OT.AUTHENTICATIE_BOORDCOMPUTERKAART.
Artikel 8.1.2 Aannames
Deze sectie bevat een uitleg dat de beveiligingsdoelstellingen alle aannames implementeren.
A.BEDIENING
Deze wordt direct ondervangen door OE.BEDIENING.
A.SENSOREN
Deze wordt direct ondervangen door OE.SENSOREN.
A.SYSTEEMKAART
Deze wordt direct ondervangen door OE.SYSTEEMKAART.
A.BOORDCOMPUTERKAART
Deze wordt direct ondervangen door OE.BOORDCOMPUTERKAART.
A.BOORDCOMPUTERKAARTHOUDER
Deze wordt direct ondervangen door OE.BOORDCOMPUTERKAARTHOUDER.
A.PRINTER
Deze wordt direct ondervangen door OE.PRINTER.
A.VOOR_ACTIVERING
Deze wordt direct ondervangen door OE.VOOR_ACTIVERING.
Artikel 8.2 Beveiligingsdoelstellingen voor de TOE
OT.AUDIT
Deze wordt gerealiseerd door FAU_GEN.1 die specificeert welke gegevens er van welke
gebeurtenissen worden vastgelegd.
Dit wordt ondersteund door:
-
○ FPT_STM.1 die aangeeft dat er een klok is die nauwkeurig de tijd aangeeft (zodat de
juiste datum en tijd wordt opgeslagen bij de gebeurtenisgegevens)
-
○ FAU_SAA.1 die aangeeft welke van de gebeurtenissen beveiligingsrelevant zijn
-
○ FAU_ARP.1 die aangeeft dat beveiligingsrelevante gegevens ook allemaal worden getoond
op het leesvenster
-
○ FAU_STG.1 die aangeeft dat de gegevens niet zo maar kunnen worden verwijderd of veranderd
-
○ FRU_RSA.2 dat vastlegt dat er genoeg opslagruimte moet zijn voor 365 dagen normaal
gebruik
-
○ FAU_STG.4 dat vastlegt dat oude gegevens worden overschreven als de opslagruimte vol
raakt
OT.AUTHENTICATIE_BOORDCOMPUTERKAART
Deze wordt gerealiseerd door FIA_UID.1 (Boordcomputerkaarten) en FIA_UAU.1 (Boordcomputerkaarten)
welke de I&A regels voor boordcomputerkaarten geven
Dit wordt ondersteund door:
-
○ FIA_AFL.1 die aangeeft wat er gebeurt bij falende authenticatie
-
○ FIA_UAU.6 die aangeeft dat er onder sommige omstandigheden nogmaals moet worden geauthenticeerd
-
○ FTA_SSL.2 die tijdelijke blokkade van een sessie toelaat
-
○ FTA_SSL.3 die aangeeft wanneer een sessie wordt afgebroken
OT.VASTLEGGEN
Deze wordt gerealiseerd door FDP_ACC.2 en FDP_ACF.1 die de regels van P.VASTLEGGEN
implementeren.
Dit wordt ondersteund door:
-
○ FIA_UID.2 (Overigen) die S.BEWEGINGSSENSOR en S.POSITIEBEPALINGSSENSOR identificeren;
-
○ FDP_ITC.1 die vastlegt dat gegevens mogen worden ingelezen van S.BEWEGINGSSENSOR en
S.POSITIEBEPALINGSSENSOR;
-
○ FRU_RSA.2 die vastlegt dat er genoeg opslagruimte moet zijn voor 365 dagen normaal
gebruik;
-
○ FIA_UID.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART identificeert;
-
○ FIA_UAU.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART authenticeert.
OT.KOPPELEN_AAN_SYSTEEMKAART
Deze wordt gerealiseerd door FDP_DAU.2 die het zetten van een handtekening implementeert.
Dit wordt ondersteund door:
-
○ FIA_UID.2 (Systeemkaart) die S.SYSTEEMKAART identificeert.
-
○ FCS_COP.1 die een hash genereert (de hash wordt getekend in plaats van de gegevens)
-
○ FTP_ITC.1 die ervoor zorgdraagt dat de hash niet wordt veranderd voordat deze wordt
getekend
-
○ FDP_ACF.1 die specificeert dat de handtekening ook wordt opgeslagen
OT.KOPPELEN_AAN_BOORDCOMPUTERKAART
Deze wordt gerealiseerd door FDP_DAU.2 die het zetten van een handtekening implementeert.
Dit wordt ondersteund door:
-
○ FIA_UID.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART identificeert.
-
○ FIA_UAU.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART authenticeert.
-
○ FCS_COP.1 die een hash genereert (de hash wordt getekend in plaats van de gegevens)
-
○ FDP_ACF.1 die specificeert dat de handtekening ook wordt opgeslagen
-
○ FMT_SMR.2 die de verschillende rollen specificeert die bij de verschillende boordcomputerkaarten
horen
OT.OPSLAAN
Zie OT.VASTLEGGEN, OT.KOPPELEN_AAN_SYSTEEMKAART en OT.KOPPELEN_AAN_BOORDCOMPUTERKAART.
Daarnaast wordt dit ondersteund door:
OT.UITVOEREN_GEGEVENS
Deze wordt gerealiseerd door FDP_ACC.2 en FDP_ACF.1 die de regels van P.UITVOEREN_GEGEVENS
implementeren. Dit wordt ondersteund door:
-
○ FIA_UID.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART identificeert.
-
○ FIA_UAU.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART authenticeert.
-
○ FMT_SMR.2 die de verschillende rollen definieert;
-
○ FIA_UID.2 (Overigen) die de verschillende soorten randapparatuur identificeert waar
naar toe kan worden uitgevoerd;
-
○ FDP_ETC.2 die ervoor zorg draagt dat de elektronische handtekening mee wordt uitgevoerd.
OT.INVOEREN_GEGEVENS
Deze wordt gerealiseerd door FDP_ACC.2 en FDP_ACF.1 die de regels van P.INVOEREN_GEGEVENS
implementeren. Dit wordt ondersteund door:
-
○ FIA_UID.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART identificeert.
-
○ FIA_UAU.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART authenticeert.
-
○ FMT_SMR.2 die de verschillende rollen definieert;
-
○ FIA_UID.2 (Overigen) die de verschillende soorten randapparatuur identificeert waarvandaan
kan worden ingevoerd;
-
○ FDP_ITC.1 die regels voor het invoeren vastlegt.
OT.FYSIEKE_BEVEILIGING
Deze wordt direct gerealiseerd door FPT_PHP.1.
OT.BEWAKING_INTEGRITEIT
Deze wordt direct gerealiseerd door FPT_TST.1.
OT.VEILIG_UPDATEN
Deze wordt direct gerealiseerd door FDP_ACC.2 en FDP_ACF.1 die de regels van P.VEILIG_UPDATEN
implementeren. Dit wordt ondersteund door:
-
○ FIA_UID.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART identificeert.
-
○ FIA_UAU.1 (Boordcomputerkaarten) die S.BOORDCOMPUTERKAART authenticeert.
-
○ FMT_SMR.2 die de verschillende rollen definieert;
-
○ FIA_UID.2 (Overigen) die de verschillende soorten randapparatuur identificeert waarvandaan
kan worden ingevoerd;
-
○ FDP_ITC.1 die regels voor het invoeren definieert;
-
○ FAU_GEN.1 die gebeurtenissen m.b.t. P.VEILIG_UPDATEN definieert.
Artikel 8.3 Afhankelijkheden
De volgende afhankelijkheden zijn niet vervuld:
-
○ FMT_MSA.3 (van FDP_ACF.1 en FDP_ITC.1): aangezien er geen attributen worden gebruikt,
hoeven de attributen ook niet te worden geïnitialiseerd;
-
○ FDP.ITC.1 of FDP_ITC.2 of FCS_CKM.1 (van FCS.COP.1): aangezien hashing geen sleutels
gebruikt, hoeven de sleutels ook niet te worden geïmporteerd of gegenereerd;
-
○ FCS_CKM.4 (van FCS_COP.1): aangezien hashing geen sleutels gebruikt, hoeven de sleutels
ook niet te worden vernietigd.
BIJLAGE 2 BIJ DE REGELING SPECIFICATIES EN TYPEGOEDKEURING BOORDCOMPUTER TAXI
Gegevensoverbrengingsinterface Boordcomputer Taxi
Versie 2.2
Datum 8 december 2014
Status DEFINITIEF
Inhoud
Artikel 1
|
Definities
|
34
|
|
|
|
Artikel 2
|
Algemeen
|
34
|
Artikel 2.1
|
Doel 6
|
34
|
Artikel 2.2
|
Hardware koppeling 6
|
34
|
Artikel 2.3
|
Snelheidseis gegevenslevering 6
|
34
|
Artikel 2.4
|
Bestandsformaat 7
|
35
|
Artikel 2.5
|
Overbrengingsprotocol 7
|
35
|
Artikel 2.6
|
Totstandkoming gegevenslevering 7
|
35
|
Artikel 2.6.1
|
Periode gegevenslevering 7
|
35
|
Artikel 2.6.2
|
Verwerking gegevenslevering 9
|
37
|
Artikel 2.7
|
Authenticatie en autorisatie 10
|
37
|
Artikel 2.8
|
Integriteit 10
|
38
|
Artikel 2.8.1
|
Integriteit exportbericht 10
|
38
|
Artikel 2.8.2
|
Integriteit geregistreerde gegevens 14
|
41
|
Artikel 2.8.3
|
Processchema’s 15
|
42
|
Artikel 2.9
|
Foutafhandeling 19
|
44
|
Artikel 2.9.1
|
Functionele fouten 19
|
45
|
Artikel 2.9.2
|
Technische fouten 19
|
45
|
Artikel 2.9.3
|
Onvolledige gegevens 19
|
45
|
Artikel 2.10
|
Overige kenmerken 19
|
45
|
|
|
|
Artikel 3
|
Ritadministratie 20
|
45
|
Artikel 3.1
|
Gegevens en functionele en technische berichtstructuur 20
|
45
|
Artikel 3.2
|
Ritadministratie.xsd 22
|
47
|
Artikel 3.3
|
Volgorde gegevens 24
|
49
|
Artikel 3.4
|
Integriteit gegevens 24
|
50
|
Artikel 3.5
|
Overige kenmerken 25
|
50
|
Artikel 3.5.1
|
Naamgeving 25
|
50
|
Artikel 3.5.2
|
Berichtgrootte 25
|
50
|
|
|
|
Artikel 4
|
Arbeids-, rij- en rusttijden 25
|
50
|
Artikel 4.1
|
Gegevens en functionele en technische berichtstructuur 25
|
50
|
Artikel 4.2
|
Arbeidstijden.xsd 27
|
53
|
Artikel 4.3
|
Volgorde gegevens 29
|
56
|
Artikel 4.4
|
Integriteit gegevens 30
|
56
|
Artikel 4.5
|
Overige kenmerken 30
|
57
|
Artikel 4.5.1
|
Naamgeving 30
|
57
|
Artikel 4.5.2
|
Berichtgrootte 31
|
57
|
|
|
|
Artikel 5
|
Coördinaten 31
|
57
|
Artikel 5.1
|
Gegevens en functionele en technische berichtstructuur 31
|
57
|
Artikel 5.2
|
Coordinaten.xsd 32
|
58
|
Artikel 5.3
|
Volgorde gegevens 33
|
60
|
Artikel 5.4
|
Integriteit gegevens 33
|
60
|
Artikel 5.5
|
Overige kenmerken 33
|
60
|
Artikel 5.5.1
|
Naamgeving 33
|
60
|
Artikel 5.5.2
|
Berichtgrootte 33
|
60
|
|
|
|
Artikel 6
|
Gebeurtenis 34
|
60
|
Artikel 6.1
|
Gegevens en functionele en technische berichtstructuur 34
|
60
|
Artikel 6.2
|
Gebeurtenis.xsd 35
|
62
|
Artikel 6.3
|
Volgorde gegevens 37
|
63
|
Artikel 6.4
|
Integriteit gegevens 37
|
64
|
Artikel 6.5
|
Codetabel 37
|
64
|
Artikel 6.6
|
Overige kenmerken 39
|
65
|
Artikel 6.6.1
|
Naamgeving 39
|
65
|
Artikel 6.6.2
|
Berichtgrootte 39
|
65
|
|
|
|
Artikel 7
|
Onderzoek 39
|
66
|
Artikel 7.1
|
Gegevens en functionele en technische berichtstructuur 39
|
66
|
Artikel 7.2
|
Onderzoek.xsd 41
|
68
|
Artikel 7.3
|
Volgorde gegevens 43
|
71
|
Artikel 7.4
|
Integriteit gegevens 43
|
71
|
Artikel 7.5
|
Overige kenmerken 44
|
71
|
Artikel 7.5.1
|
Naamgeving 44
|
71
|
Artikel 7.5.2
|
Berichtgrootte 44
|
72
|
|
|
|
Artikel 8
|
Chauffeurskaartdata 44
|
72
|
Artikel 8.1
|
Gegevens en functionele en technische berichtstructuur 44
|
72
|
Artikel 8.2
|
Chauffeurskaartdata.xsd 45
|
73
|
Artikel 8.3
|
Volgorde gegevens 47
|
74
|
Artikel 8.4
|
Integriteit gegevens 47
|
75
|
Artikel 8.5
|
Overige kenmerken 47
|
75
|
Artikel 8.5.1
|
Naamgeving 47
|
75
|
Artikel 8.5.2
|
Berichtgrootte 47
|
75
|
|
|
|
Artikel 9
|
Toelichting specificaties gegevensleveringen en algemene XSD 48
|
75
|
Artikel 9.1
|
Toelichting bij specificaties van gegevensleveringen 48
|
75
|
Artikel 9.2
|
Algemene XML schema definities in bcttypes.xsd 48
|
77
|
Artikel 1 Definities
In deze bijlage wordt verstaan onder:
- a. XML:
-
eXtensible Markup Language;
- b. USB:
-
Universal Serial Bus;
- c. ritadministratie.xsd:
-
XML schema definitie van het resultaatbericht van de gegevenslevering ritadministratie;
- d. arbeidstijden.xsd:
-
XML schema definitie van het resultaatbericht van de gegevenslevering Arbeids-, rij
en rusttijden;
- e. coordinaten.xsd:
-
XML schema definitie van het resultaatbericht van de gegevenslevering coördinaten;
- f. gebeurtenis.xsd:
-
XML schema definitie van het resultaatbericht van de gegevenslevering gebeurtenis;
- g. onderzoek.xsd:
-
XML schema definitie van het resultaatbericht van de gegevenslevering onderzoek;
- h. chauffeurskaartdata.xsd:
-
XML schema definitie van het resultaatbericht van de gegevenslevering chauffeurskaartdata;
- i. bcttypes.xsd:
-
XML schema definitie van de gegevenstypen die in de XML schema definities genoemd
onder c. t/m h. worden gebruikt.
Artikel 2 Algemeen
Aan dit document wordt gerefereerd als ‘Gegevensoverbrengingsinterface Boordcomputer
Taxi Versie 2.2’. Deze versie dateert van 8 december 2014’.
Artikel 2.1 Doel
In dit artikel worden de gemeenschappelijke kenmerken beschreven die gelden voor de
gegevensleveringen ‘Ritadministratie’, ‘Arbeids-, rij- en rusttijden’, ‘Coördinaten’,
‘Gebeurtenis’, ‘Onderzoek’ en ‘Chauffeurskaartdata’.
Artikel 2.2 Hardware koppeling
De overbrengingsinterface die gebruikt wordt voor de gegevensoverbrenging naar een
externe gegevensdrager is een USB poort. Er geldt:
-
a. de USB poort moet aantoonbaar compliant zijn met de specificaties zoals opgesteld
door het USB Implementers Forum, Inc.;
-
b. de USB poort is een USB type A connector.
De snelheidseis, als beschreven in artikel 2.3, is leidend bij de keuze van USB 1.1
of hoger. Als de snelheidseis van alle gegevensleveringen (‘Ritadministratie’, ‘Arbeids-, rij- en rusttijden’, ‘Coördinaten’, ‘Gebeurtenis’ ‘Onderzoek’
en ‘Chauffeurskaartdata’) beschreven in deze bijlage gehaald kan worden met USB 1.1 (12 Mbit/s) dan is USB
1.1 toegestaan, zo niet dan moet USB 2.0 (480 Mbit/s) of hoger gebruikt worden.
Artikel 2.3 Snelheidseis gegevenslevering
Na opvragen van een gegevenslevering moet het corresponderende XML bericht binnen
de volgende termijnen beschikbaar zijn op het externe gegevensdrager:
Artikel 2.4 Bestandsformaat
Voor externe opslagmedia moet het bestandssysteem FAT32 ondersteund worden.
Artikel 2.5 Overbrengingsprotocol
De boordcomputer fungeert als host en neemt het initiatief voor gegevensoverdracht
naar de externe gegevensdrager.
Artikel 2.6 Totstandkoming gegevenslevering
Om een gegevenslevering tot stand te laten komen, stelt de boordcomputer de houder
van een boordcomputerkaart in staat om:
-
a. zich met de boordcomputerkaart te authenticeren;
-
b. de externe gegevensdrager met de overbrengingsinterface van de boordcomputer te verbinden;
-
c. op de boordcomputer één of meerdere gegevensleveringen te selecteren. Standaard zijn
alle gegevensleveringen waarvoor de gebruiker is geautoriseerd geselecteerd;
-
d. op de boordcomputer een periode in te voeren waarover gegevens opgevraagd moeten worden
voor de betreffende gegevenslevering(en).
-
e. op de boordcomputer de betreffende gegevenslevering(en) over de ingevoerde periode
met één gebruikershandeling starten.
Nadat alle geselecteerde gegevensleveringen succesvol zijn afgerond en de berichten
met de gegevens beschikbaar zijn op de externe gegevensdrager, toont de boordcomputer
een melding dat de gegevens beschikbaar zijn.
Artikel 2.6.1 Periode gegevenslevering
De periode, als bedoeld in artikel 2.6, onderdeel d, bedraagt per levering maximaal
1 jaar, met uitzondering van de gegevenslevering ‘Onderzoek’ die geen maximum periode
kent, en de gegevenslevering ‘Chauffeurskaartdata’ die de periode van de arbeids-,
rij- en rusttijdendata van de chauffeurskaart overneemt.
De standaardwaarde voor ‘Datumtijd begin periode’ is het tijdstip van opvragen minus
29 kalenderdagen, met uitzondering van de gegevenslevering ‘Onderzoek’, waar ‘Datumtijd
begin periode’ standaard leeg is, en de gegevenslevering ‘Chauffeurskaartdata’, waar
de standaarwaarde voor ‘Datumtijd begin periode’ overeenkomt met het oudste record
op de chauffeurskaart. ‘Datumtijd einde periode’ is standaard leeg. Als bij opvragen
van een gegevenslevering ‘Datumtijd begin periode’ leeg is, wordt deze gevuld met
de datum en het tijdstip van de activering. Is ‘Datumtijd einde periode’ leeg, dan
wordt ‘Datumtijd einde periode’ gevuld met de datum en het tijdstip waarop het bericht
wordt samengesteld;
In de gegevenslevering ‘Coördinaten’, ‘Gebeurtenis’ en ‘Onderzoek’ worden alle gegevens
opgenomen die binnen de opgevraagde periode vallen.
In de gegevenslevering ‘Ritadministratie’, ‘Arbeidstijd’ en ‘Chauffeurskaartdata’
worden alle gegevensets opgenomen die de gevraagde periode, inclusief grenzen, overlappen.
In de onderstaande tabel is de selectie voor deze gegevensleveringen verder uitgewerkt.
Alle gegevensets worden opgenomen die voldoen aan één van de onderstaande condities:
Conditie 1
|
Datumtijd begin gegevenset ligt vóór Datumtijd begin periode
en
Datumtijd einde gegevenset is gelijk aan Datumtijd begin periode
|
Conditie 2
|
Datumtijd begin gegevenset ligt vóór Datumtijd begin periode
en
Datumtijd einde gegevenset ligt ná Datumtijd begin periode
en
Datumtijd einde gegevenset ligt vóór Datumtijd einde periode
|
Conditie 3
|
Datumtijd begin gegevenset ligt vóór Datumtijd begin periode
en
Datumtijd einde gegevenset ligt ná Datumtijd einde periode
|
Conditie 4
|
Datumtijd begin gegevenset is gelijk aan Datumtijd begin periode
en
Datumtijd einde gegevenset ligt ná Datumtijd begin periode
en
Datumtijd einde gegevenset ligt vóór Datumtijd einde periode
|
Conditie 5
|
Datumtijd begin gegevenset is gelijk aan Datumtijd begin periode
en
Datumtijd einde gegevenset is gelijk aan Datumtijd einde periode
|
Conditie 6
|
Datumtijd begin gegevenset is gelijk aan Datumtijd begin periode
en
Datumtijd einde gegevenset ligt na Datumtijd einde periode
|
Conditie 7
|
Datumtijd begin gegevenset ligt na Datumtijd begin periode
en
Datumtijd begin gegevenset ligt voor Datumtijd einde periode
en
Datumtijd einde gegevenset ligt na Datumtijd begin periode
en
Datumtijd einde gegevenset ligt voor Datumtijd einde periode
|
Conditie 8
|
Datumtijd begin gegevenset ligt na Datumtijd begin periode
en
Datumtijd begin gegevenset ligt voor Datumtijd einde periode
en
Datumtijd einde gegevenset is gelijk aan Datumtijd einde periode
|
Conditie 9
|
Datumtijd begin gegevenset ligt na Datumtijd begin periode
en
Datumtijd begin gegevenset ligt voor Datumtijd einde periode
en
Datumtijd einde gegevenset ligt na Datumtijd einde periode
|
Conditie 10
|
Datumtijd begin gegevenset is gelijk aan Datumtijd einde periode
en
Datumtijd einde gegevenset ligt na Datumtijd einde periode
|
De tabel kan als volgt gevisualiseerd worden. Alle gegevenssets behalve gegevensset
11 en 12 worden in het bericht opgenomen.
Figuur 1
Artikel 2.6.2 Verwerking gegevenslevering
Aanvragen van een gegevenslevering is een synchrone aanvraag die direct verwerkt moet
worden.
Als de boordcomputer bezig is met de verwerking van een aanvraag voor een gegevenslevering,
dan is het niet mogelijk om dezelfde gegevenslevering of een andere gegevenslevering
aan te vragen zolang de huidige aanvraag niet is afgerond.
Het is wel eenvoudig mogelijk om een aanvraag te onderbreken. Na onderbreken van de
huidige aanvraag is een nieuwe aanvraag van een gegevenslevering direct (< 1 seconde
wachten) mogelijk.
De overige functies van de boordcomputer blijven functioneren als de boordcomputer
bezig is met het verwerken van een aanvraag voor een gegevenslevering ‘Ritadministratie’, ‘Arbeids-, rij- en rusttijden’, ‘Coördinaten’, ‘Gebeurtenis’,
‘Onderzoek’ of ‘Chauffeurskaartdata’.
Overschrijven van een bericht op de externe gegevensdrager met dezelfde naam, is alleen
toegestaan na een bevestiging van de gebruiker.
Artikel 2.7 Authenticatie en autorisatie
Aanvragen van de gegevensleveringen ‘Ritadministratie’, ‘Arbeids-, rij- en rusttijden’, ‘Coördinaten’, ‘Gebeurtenis’,
‘Onderzoek’ en ‘Chauffeurskaartdata’ moet alleen mogelijk zijn voor daartoe geauthenticeerde en geautoriseerde gebruikers.
Artikel 2.8 Integriteit
De door de boordcomputer geregistreerde gegevens worden voorzien van een elektronische
handtekening zodat achteraf de authenticiteit en integriteit van deze gegevens kan
worden vastgesteld. Voor het aanmaken van de elektronische handtekeningen worden de
boordcomputerkaarten gebruikt.
De integriteit van gegevens wordt onderverdeeld in ‘integriteit exportbericht’ en
‘integriteit geregistreerde gegevens’.
Artikel 2.8.1 Integriteit exportbericht
De boordcomputer kent zes gegevensleveringen, te weten ‘Ritadministratie’, ‘Arbeids-, rij- en rusttijden’, ‘Coördinaten’, ‘Gebeurtenis’,
‘Onderzoek’ en ‘Chauffeurskaartdata’. Deze gegevensleveringen worden elk in een exportbericht vanuit de boordcomputer
overgebracht. Dit exportbericht is een XML bericht dat bestaat uit een gegevenslevering-element
zoals gespecificeerd in één van de artikelen 3 t/m 8, gevolgd door een element met
een elektronische handtekening berekend over het gegevenslevering-element en de identificatie
van de sleutel gebruikt voor het berekenen van de elektronische handtekening.
Voor het genereren en de opmaak van de elektronische handtekening wordt gebruik gemaakt
van de W3C Recommendation ‘XML Signature Syntax and Processing Version 1.1’ (XMLDSIG11)
van 11 april 2013. De XMLDSIG11 specificatie (http://www.w3.org/TR/xmldsig-core1/) is een door het World Wide Web Consortium (W3C) ontworpen standaard voor de XML
syntax en het genereren van elektronische handtekeningen.
Het XML exportbericht bestaat uit een <Envelope>-element met daarin een van de gegevenslevering-elementen
<Ritadministratie>, <Arbeidstijden>, <Coordinaten>, <Gebeurtenis>, <Onderzoek> of
<Chauffeurskaartdata>, gevolgd door een <Signature>-element. Het gegevenslevering-element
bevat een resultaatbericht van een gegevenslevering zoals gespecificeerd in één van
de artikelen 3 t/m 8. Het <Signature>-element is opgebouwd conform de XMLDSIG11 specificatie
en bevat achtereenvolgens de elementen
-
a. <SignedInfo> met daarin o.a. verwijzingen naar en de ‘message digests’ van het gegevenslevering-element
respectievelijk het <KeyInfo> element,
-
b. <SignatureValue> met daarin de elektronische handtekening over het <SignedInfo> element
en
-
c. <KeyInfo> met daarin een representatie van het certificaat behorende bij de sleutel
die voor de handtekening werd gebruikt.
Het XML exportbericht kent, afhankelijk van de omsloten gegevenslevering, een van
de volgende structuren:
Het <Signature> element in eender welke van de zes bovenstaande XML exportberichten
heeft altijd de volgende, aan de XMLDSIG11 conformerende, opbouw:
Toelichting:
-
a. de waarden op een gele achtergrond betreffen voorbeelden; deze waarden moeten door de boordcomputer berekend
en/of bepaald worden;
-
b. het gegevenslevering-element uit de omvattende <Envelop> bevat het resultaat bericht
van een gegevenslevering en heeft een Id gelijk aan ‘idGegevenslevering’;
-
c. het <KeyInfo> heeft een Id gelijk aan ‘idKeyInfo’;
-
d. het <SignedInfo> element verwijst met twee <Reference> elementen naar twee te ondertekenen
elementen op basisvan hun Id (zie de tekst op een blauwe achtergrond);
-
e. zowel het gegevenlevering-element als het <KeyInfo>-element worden als volgt getransformeerd:
eerst gecanonicaliseerd en daarna van alle overbodige witruimte ontdaan:
-
1. de witruimte van alle text() nodes worden genormaliseerd met normalize-space(.);
-
2. de (enige) text() node van elk element met Base64 gecodeerde inhoud wordt bovendien
van alle (resterende) spaties ontdaan met translate(..., ‘ ’, ‘’) (zie de tekst op
een groene achtergrond).
-
f. het <DigestValue> element van het eerste <Reference> element moet worden gevuld met
de Base64 codering van de SHA-256 hash van het (volgens e. getransformeerde) gegevenslevering-element;
-
g. het <DigestValue> element van het tweede <Reference> element moet worden gevuld met
de Base64 codering van de SHA-256 hash van het (volgens e. getransformeerde) <KeyInfo>-element;
-
h. het <SignedInfo> element moet, zoals hierboven weergegeven, ontdaan van alle overbodige
witruimte in de envelop worden opgenomen, omdat de XMLDSIG11 standaard niet voorziet
in het toepassen van enige andere transformatie dan canonicaliseren van dit element;
-
i. het <SignatureValue> element moet worden gevuld met de Base64 codering van de RSA-SHA256
(PKCS#1 v1.5) handtekening die berekend is over het (volgens h. opgemaakte en daarna
gecanocaliseerde) <SignedInfo> element. Voor het opbouwen van deze handtekening wordt
verwezen naar sectie 6.4.2 van XMLDSIG11;
-
j. het <X509Certificate> element moet worden gevuld met de Base64 codering van het DER-gecodeerde
certificaat behorende bij de RSA-sleutel waarmee de <SignatureValue> is berekend (in
dit geval het boordcomputercertificaat);
-
k. Alle canonicalisatie moet plaatsvinden conform ‘Exclusive XML Canonicalization Version
1.0, 18 July 2002’ (XML-EXC-C14N) met identifier http://www.w3.org/2001/10/xml-exc-c14n#;
-
l. Alle XSL transformaties moeten plaatsvinden conform ‘XSL Transformations (XSLT) Version
1.0, 16 November 1999’ (XSLT) met identifier http://www.w3.org/TR/1999/REC-xslt-19991116 en de daaraan gerelateerde standaard ‘XML Path Language (XPath) Version 1.0, 16 November
1999’ met identifier http://www.w3.org/TR/1999/REC-xpath-19991116;
-
m. Alle Base64 codering vindt in eerste instantie plaats op basis van de specificatie
in XMLDSIG11;
-
n. Voorafgaand aan hashing en/of ondertekening van een XML node moet die node worden
gecanonicaliseerd volgens XML-EXC-C14N en moet:
-
1. elke text-node worden genormaliseerd volgens de XPath normalize-space functie;
-
2. elke text-node die Base64 gecodeerd is bovendien worden ontdaan van alle resterende
spaties conform de XPath functie translate(string, ‘ ’, ‘’).
De keuze van het algoritme voor de Digest en de Signature is afhankelijk van het certificaat
op de kaart waarmee de handtekening wordt gezet. Als dit in de toekomst anders wordt
dan SHA-256 respectievelijk RSA-SHA256’ zullen de algoritmes voor Digest en Signature
meeveranderen.
Artikel 2.8.2 Integriteit geregistreerde gegevens
Bepaalde gegevenssets, die door de boordcomputer taxi worden geregistreerd, dienen
vanaf het moment van vastleggen de waarborg van integriteit en authenticiteit te bevatten.
In de specificatie van elke soort gegevenslevering in artikel 3 t/m 8 wordt aangegeven
welke gegevensset dit betreft, op welke momenten deze gegevensset met een elektronische
handtekening worden ondertekend en als zodanig moeten worden vastgelegd en met welke
private sleutel die ondertekening moet gebeuren.
Voor een gegevensset die bij vastleggen elektronisch ondertekend wordt, wordt een
tekenbericht gegenereerd. Dit tekenbericht is, op enkele uitzonderingen na, gelijk
aan het (corresponderende) XML exportbericht:
Voor de namespace en de structuur van het betreffende <Data> element wordt verwezen
naar de artikelen 3.4, 4.4, 6.4, 7.4, respectievelijk 8.4.
Ook het <Signature> element van het tekenbericht wijkt op slechts enkele onderdelen
af van die van het XML exportbericht:
-
a. Het eerste <Reference> element heeft een andere URI, namelijk ‘#idData’;
-
b. De inhoud van het <X509Certificate> element representeert, afhankelijk van het gestelde
in de artikelen 3.1, 4.1, 6.1, 7.1, respectievelijk 8.1, ofwel het boordcomputercertificaat
ofwel het chauffeurskaartcertificaat.
Na generatie van het tekenbericht wordt de waarde van het element <SignatureValue>
als <Integriteit> element opgeslagen bij de gegevens waarover de elektronische handtekening
is berekend. Het tekenbericht zelf hoeft niet te worden opgeslagen, zolang de getekende
gegevens in de vorm waarin zij werden getekend kunnen worden gereproduceerd. Dat betekent
dat de boordcomputer, behalve de gegevens die het <Data> element vormen, het certificaat
dat voor ondertekening werd gebruikt, moet vastleggen.
Het genereren en vastleggen van de elektronische handtekening over het <Data> element
vindt plaats bij het vastleggen van de gegevens die het <Data> element vormen.
Bij het samenstellen van een exportbericht worden de gegevens van het <Data> element
onveranderd overgenomen uit de administratie op de boordcomputer. Het <Data> element
wordt opnieuw geproduceerd, en moet exact gelijk zijn aan het <Data> element waarvoor
een elektronische handtekening is berekend bij vastleggen van het gegeven. De geregistreerde
elektronische handtekening moet worden overgenomen in het <Integriteit> element, het
is niet toegestaan om de elektronische handtekening opnieuw te berekenen. Ook moet
per <Integriteit> element het voor de betreffende handtekening gebruikte certificaat
onveranderd worden overgenomen uit de administratie op de boordcomputer.
Artikel 2.8.3 Processchema’s
Een mogelijk proces voor samenstellen van de elementen voor een tekenbericht en het
genereren van de elektronische handtekening over die elementen is weergegeven in figuur
2.
Figuur 2
Van de output van de groen gekleurde deelprocessen kan het tekenbericht (zonder <SignatureValue>)
worden samengesteld. De 256-bytes RSA handtekening zou daarna gebruikt kunnen worden
voor het completeren van het tekenbericht, maar moet in ieder geval worden gearchiveerd
in de boordcomputer.
Figuur 3 geeft een mogelijk proces voor samenstellen van de elementen van een exportbericht
weer. Het exportbericht kan worden geassembleerd met de output van de groen gekleurde
deelprocessen.
Figuur 3
Artikel 2.9 Foutafhandeling
Bij het opvragen van de gegevensleveringen kunnen foutsituaties optreden. Hierbij
kan onderscheid gemaakt worden tussen functionele fouten, technische fouten en niet
volledige gegevens.
Artikel 2.9.1 Functionele fouten
Bij onderstaande foutsituaties moet de boordcomputer de bijbehorende foutmelding tonen:
Foutsituatie
|
Afhandeling
|
Boordcomputer is niet vergrendeld sinds laatste activering.
|
Verwerking gegevenslevering(en) stopt en de boordcomputer toont de melding ‘Boordcomputer
is niet vergrendeld sinds laatste activering’.
|
Er is geen externe gegevensdrager verbonden met de overbrengingsinterface van de boordcomputer
als de gebruiker een gegevenslevering start.
|
Verwerking gegevenslevering(en) stopt en de boordcomputer toont de melding ‘Geen externe
gegevensdrager beschikbaar’.
|
‘Datumtijd begin periode’ bevat geen geldige waarde als de gebruiker een gegevenslevering start. ‘Datumtijd
begin periode’ is verplicht.
|
Verwerking gegevenslevering(en) stopt en de boordcomputer toont de melding ‘Datumtijd
begin periode bevat geen geldige waarde’.
|
‘Datumtijd einde periode’ bevat geen geldige waarde als de gebruiker een gegevenslevering start. ‘Datumtijd
einde periode’ mag leeg zijn.
|
Verwerking gegevenslevering(en) stopt en de boordcomputer toont de melding ‘Datumtijd
einde periode bevat geen geldige waarde’.
|
‘Datumtijd einde periode’ ligt voor ‘Datumtijd begin periode’ als de gebruiker een gegevenslevering start.
|
Verwerking gegevenslevering(en) stopt en de boordcomputer toont de melding ‘Datumtijd
einde periode ligt voor Datumtijd begin periode’.
|
Overige functionele foutsituaties
|
Verwerking gegevenslevering stopt en de boordcomputer toont een foutmelding.
|
Artikel 2.9.2 Technische fouten
Foutsituatie
|
Afhandeling
|
Exporteren van een bericht naar de externe gegevensdrager gaat fout.
|
Verwerking gegevenslevering(en) stopt en de boordcomputer toont de melding ‘Exporteren
van een bericht naar de externe gegevensdrager is niet gelukt’.
|
Overige technische foutsituaties.
|
Verwerking gegevenslevering stopt en de boordcomputer toont een foutmelding.
|
Artikel 2.9.3 Onvolledige gegevens
Het niet volledig zijn van gegevens op de boordcomputer mag geen reden zijn om een
resultaat bericht niet te exporteren.
Artikel 2.10 Overige kenmerken
Kenmerk
|
Invulling
|
Tekenset bericht
|
De Unicode tekensets ‘Basic Latin’, ‘Latin-1 Supplement’ en ‘Latin Extended-A’, alsmede
de controle karakters tab, linefeed en carriage return karakters.
Code points: U+0009, U+000A, U+000D, U+0020 t/m U+007E en U+00A0 t/m U+017F.
|
Codering bericht
|
UTF-8
|
Artikel 3 Ritadministratie
Artikel 3.1 Gegevens en functionele en technische berichtstructuur
Voor het bericht ‘Ritadministratie’ worden de volgende gegevens en functionele en
technische berichtstructuur onderkend:
Entiteit / attribuut
|
XML element
|
Inhoud
|
G
|
C
|
BERICHT
|
Ritadministratie;
Id=”idGegevenslevering”
|
SEQ
|
V
|
1
|
|
Datumtijd samenstellen bericht
|
DatTdSmBr
|
DT
|
V
|
1
|
KORTE IDENTIFICATIE BOORDCOMPUTER
|
KortIdBCT
|
SEQ
|
V
|
1
|
|
Goedkeuringsnummer
|
GdKrgsNr
|
S28 *)
|
V
|
1
|
Programmatuur versienummer
|
ProgVrNr
|
C50
|
V
|
1
|
PERIODE
|
Periode
|
SEQ
|
V
|
1
|
|
Datumtijd begin periode
|
DatTdBegPr
|
DT
|
V
|
1
|
Datumtijd einde periode
|
DatTdEndPr
|
DT
|
V
|
1
|
AUTO
|
Auto
|
SEQ
|
V
|
1
|
|
Kenteken
|
Kntkn
|
S6
|
V
|
1
|
CERTIFICAAT BOORDCOMPUTER
|
CertificaatBCT
|
SEQ
|
V
|
1
|
|
Publieke sleutel boordcomputer
|
PubliekeSleutel; codering=”base64”
|
B *)
|
V
|
1
|
VERVOERDER
|
Vervoerder
|
SEQ
|
V
|
1..*
|
|
KvK-nummer
|
KvKnr
|
S12 *)
|
V
|
1
|
P-nummer
|
Pnr
|
S8 *)
|
V
|
1
|
ONDERNEMERSKAART
|
Ondernemerskaart
|
SEQ
|
V
|
1..*
|
|
Ondernemerskaart volgnummer
|
OkVgNr
|
S5 *)
|
V
|
1
|
RIT
|
Rit
|
SEQ
|
C
|
0..*
|
|
DATA
|
Data; Id=”idData”
|
SEQ
|
V
|
1
|
|
Rit volgnummer
|
RtVgNr
|
I(1..∞)
|
V
|
1
|
Mutatiecode
|
MtCd
|
{‘I’, ‘D’, ‘M’}
|
V
|
1
|
Datumtijd registratie
|
DatTdReg
|
DT
|
V
|
1
|
Type rit
|
Type
|
{‘B’, ‘O’}
|
V
|
1
|
Coördinaat beginpunt rit
|
LocBeg
|
SEQ
|
V
|
1
|
|
Breedtegraad
|
Lat
|
D2.6(-90..+90)
|
V
|
1
|
Lengtegraad
|
Lon
|
D3.6(-180..+180)
|
V
|
1
|
Datumtijd begin rit
|
DatTdBeg
|
DT
|
V
|
1
|
Km stand begin rit
|
KmStdBeg
|
I8(0..MAX)
|
V
|
1
|
Coördinaat eindpunt rit
|
LocEnd
|
SEQ
|
C
|
0..1
|
|
Breedtegraad
|
Lat
|
D2.6(-90..+90)
|
V
|
1
|
Lengtegraad
|
Lon
|
D3.6(-180..+180)
|
V
|
1
|
Datumtijd einde rit
|
DatTdEnd
|
DT
|
C
|
0..1
|
Km stand einde rit
|
KmStdEnd
|
I8(0..MAX)
|
C
|
0..1
|
Ritprijs
|
Prijs
|
I(0..∞)
|
C
|
0..1
|
BESTUURDER
|
Bestuurder
|
SEQ
|
V
|
1
|
|
Chauffeursidentificatienummer
|
ChIdNr
|
S9 *)
|
V
|
1
|
Chauffeurskaart volgnummer
|
CkVgNr
|
S5 *)
|
V
|
1
|
INTEGRITEIT
|
Integriteit
|
SEQ
|
C
|
0..1
|
|
Elektronische handtekening boordcomputer
|
ElHdBc; codering=”base64”
|
B
|
K
|
1
|
Elektronische handtekening fout
|
ElHdFout
|
S
|
Datumtijd handtekening
|
DatTdHd
|
DT
|
V
|
1
|
Voor de legenda van het bovenstaande overzicht wordt verwezen naar artikel 10.
Toelichting:
-
a. De PERIODE is het tijdvak waarover de gebruiker de ritadministratie heeft opgevraagd.
-
b. RIT wordt per BESTUURDER uniek geïdentificeerd door een volgnummer.
-
c. Er zijn 2 mogelijke waarden voor ‘Type rit’: ‘B’ voor een beladen rit en ‘O’ voor
een onbeladen rit.
-
d. De DATA van een RIT moet ondertekend worden met de elektronische handtekening van
de boordcomputer om de integriteit van de ritgegevens achteraf te kunnen bepalen.
Daartoe bevat INTEGRITEIT het attribuut ‘Elektronische handtekening boordcomputer’.
Indien bij het genereren van de handtekening een gebeurtenis met foutcode S005 of
F008 optreedt, wordt, in plaats van de handtekening, deze foutcode geregistreerd in
het attribuut ‘Elektronische handtekening fout’.
-
e. De Ritprijs is in eurocenten.
-
f. Een kilometerstand wordt opgenomen als een geheel getal, afgerond of afgekapt op een
hele kilometer.
-
g. Voor een RIT wordt de bestuurder opgenomen in het bericht.
-
h. Alleen als de chauffeurskaart niet beschikbaar is tijdens registratie van een RIT
moet ‘Chauffeurskaart volgnummer’ van de BESTUURDER volledig gevuld worden met nullen.
-
i. De attributen ‘Coördinaat eindpunt rit’, ‘Datumtijd einde rit’, ‘Km stand einde rit’,
‘Ritprijs’ en de entiteit INTEGRITEIT zijn verplicht tenzij de RIT nog niet is beëindigd.
-
j. De mutatiecode van een RIT is ‘I’ als het volgnummer van de RIT voor de eerste keer
wordt geregistreerd. De I staat voor Insert.
-
k. Annuleren van de laatste handmatig ingevoerde ‘Aanvang rit’ is mogelijk. Het te annuleren
record bevat alleen gegevens van het begin van de rit (‘Rit volgnummer’, ‘Mutatiecode’,
‘Datumtijd registratie’, ‘Type rit’, ‘Coördinaat beginpunt rit’, ‘Datumtijd begin
rit’ en ‘Km stand begin rit’). Annuleren moet op de volgende manier worden aangegeven:
-
1. De gegevens van het te annuleren record worden ongewijzigd ondertekend met de elektronische
handtekening van de boordcomputer.
-
2. Een nieuwe record wordt geregistreerd met de volgende gegevens: het volgnummer is
gelijk aan het volgnummer van het te annuleren record uit k.1, mutatiecode is ‘D’,
‘Datumtijd registratie’ is het tijdstip van registreren van dit nieuwe record, en
de waarden van de overige attributen zijn gelijk aan de waarden van de overeenkomstige
attributen van het te annuleren record. Ook dit record moet ondertekend worden met
de elektronische handtekening van de boordcomputer.
-
l. Annuleren van de laatste handmatig ingevoerde ‘Einde rit’ is mogelijk. Het te annuleren
record bevat zowel gegevens van het begin van de rit (‘Volgnummer’, ‘Mutatiecode’,
‘Datumtijd registratie’, ‘Type rit’, ‘Coördinaat beginpunt rit’, ‘Datumtijd begin
rit’ en ‘Km stand begin rit’) als einde van de rit (‘Coördinaat einde rit’, ‘Datumtijd
einde rit’, ‘Km stand einde rit’, ‘Ritprijs’). Annuleren moet op de volgende manier
worden aangegeven:
-
1. De gegevens van het te annuleren record worden ongewijzigd ondertekend met de elektronische
handtekening van de boordcomputer als dit nog niet is gebeurd.
-
2. Een nieuwe record wordt geregistreerd met de volgende gegevens: het volgnummer is
gelijk aan het volgnummer van het te annuleren record uit l.1, mutatiecode is ‘D’,
‘Datumtijd registratie’ is het tijdstip van registreren van dit nieuwe record, en
de waarden van de overige attributen zijn gelijk aan de waarden van de overeenkomstige
attributen van het te annuleren record. Ook dit record moet ondertekend worden met
de elektronische handtekening van de boordcomputer.
-
3. Een volgend nieuw record wordt geregistreerd met de volgende gegevens: het volgnummer
is gelijk aan het volgnummer van het te annuleren record uit l.1, mutatiecode is ‘M’,
‘Datumtijd registratie’ is het tijdstip van registreren van dit nieuwe record, de
waarden van de attributen ‘Type rit’, ‘Coördinaat begin rit’, ‘Datumtijd begin rit’
en ‘Km stand begin rit’ zijn gelijk aan de waarden van de overeenkomstige attributen
van het te annuleren record, en de attributen ‘Coördinaat einde rit’, ‘Datumtijd einde
rit’, ‘Km stand einde rit’ en ‘Ritprijs’ zijn initieel leeg om gevuld te worden bij
het opnieuw uitvoeren van de handmatige actie ‘Einde rit’.
-
m. het attribuut ‘Publieke sleutel boordcomputer’ dient te worden gevuld met het gehele
X509 certificaat van de boordcomputer.
Artikel 3.2 Ritadministratie.xsd
De onderstaande Ritadministratie.xsd wordt gebruikt.
Voor de definitie van bcttypes.xsd wordt verwezen naar artikel 9.
Artikel 3.3 Volgorde gegevens
De geselecteerde ritten moeten gegroepeerd per vervoerder, en daarbinnen per ondernemerskaart,
in oplopende volgorde van volgnummer worden opgenomen in de ritadministratie.
Artikel 3.4 Integriteit gegevens
Alle ritten worden ondertekend worden met een elektronische handtekening op basis
van de private sleutel van de systeemkaart.
De ritadministratie bevat een element <Rit> en <Rit> bevat de elementen <Data> en
<Integriteit>. Het <Data> element bevat de volgende ritgegevens:
Het <Integriteit> element bevat de elektronische handtekening van het bijbehorende
Data element.
Bij het samenstellen van de ritadministratie moeten de gegevens van het <Data> element
onveranderd worden overgenomen uit de ritadministratie op de boordcomputer. Het berekenen
van de ‘Elektronische handtekening boordcomputer’ van het <Data> element van een <Rit>
wordt gedaan bij het beëindigen van de rit. De vastgelegde ‘Elektronische handtekening
boordcomputer’ wordt per <Rit> onveranderd overgenomen in het onderliggende <Integriteit>
element.
Artikel 3.5 Overige kenmerken
Artikel 3.5.1 Naamgeving
De naamgeving van de gegevenslevering ‘Ritadministratie’ is als volgt:
Hierbij worden de cursief gedrukte gegevens gevuld met de corresponderende registratiewaarde.
De volgende formaten worden hierbij gebruikt:
Gegeven
|
Formaat
|
Kenteken
|
Zoals opgenomen in de gegevenslevering zelf
|
DatumtijdSamenstellenBericht
|
CCYYMMDDHHMMSS
|
DatumtijdBeginPeriode
|
CCYYMMDDHHMM
|
DatumtijdEindePeriode
|
CCYYMMDDHHMM
|
Artikel 3.5.2 Berichtgrootte
Bij 100 ritten is het bericht ‘ritadministratie’ maximaal 100 Kbyte groot.
Artikel 4 Arbeids-, rij- en rusttijden
Artikel 4.1 Gegevens en functionele en technische berichtstructuur
Voor het bericht ‘Arbeids-, rij- en rusttijden’ worden de volgende gegevens en functionele
en technische berichtstructuur onderkend:
Entiteit / attribuut
|
XML element
|
Inhoud
|
G
|
C
|
BERICHT
|
Arbeidstijden;
Id=”idGegevenslevering”
|
SEQ
|
V
|
1
|
|
Datumtijd samenstellen bericht
|
DatTdSmBr
|
DT
|
V
|
1
|
KORTE IDENTIFICATIE BOORDCOMPUTER
|
KortIdBCT
|
SEQ
|
V
|
1
|
|
Goedkeuringsnummer
|
GdKrgsNr
|
S28 *)
|
V
|
1
|
|
Programmatuur versienummer
|
ProgVrNr
|
C50
|
V
|
1
|
|
PERIODE
|
Periode
|
SEQ
|
V
|
1
|
|
Datumtijd begin periode
|
DatTdBegPr
|
DT
|
V
|
1
|
Datumtijd einde periode
|
DatTdEndPr
|
DT
|
V
|
1
|
|
AUTO
|
Auto
|
SEQ
|
V
|
1
|
|
Kenteken
|
Kntkn
|
S6
|
V
|
1
|
|
VERVOERDER
|
Vervoerder
|
SEQ
|
V
|
1..*
|
|
KvK-nummer
|
KvKnr
|
S12 *)
|
V
|
1
|
P-nummer
|
Pnr
|
S8 *)
|
V
|
1
|
|
|
ONDERNEMERSKAART
|
Ondernemerskaart
|
SEQ
|
C
|
0..*
|
|
Ondernemerskaart volgnummer
|
OkVgNr
|
S5 *)
|
V
|
1
|
BESTUURDER
|
Bestuurder
|
SEQ
|
C
|
0..*
|
|
Chauffeursidentificatienummer
|
ChIdNr
|
S9 *)
|
V
|
1
|
Chauffeurskaart volgnummer
|
CkVgNr
|
S5 *)
|
V
|
1
|
|
|
|
|
CERTIFICAAT
|
Certificaat
|
CHOICE
|
V
|
1
|
|
CERTIFICAAT CHAUFFEUR
|
CertificaatChauffeur
|
SEQ
|
K
|
1
|
|
Publieke sleutel chauffeur
|
PubliekeSleutel; codering=”base64”
|
B *)
|
V
|
1
|
CERTIFICAAT BOORDCOMPUTER
|
CertificaatBCT
|
SEQ
|
K
|
1
|
|
Publieke sleutel boordcomputer
|
PubliekeSleutel; codering=”base64”
|
B *)
|
V
|
1
|
|
|
|
|
ARBEIDSTIJD
|
Arbeidstijd
|
SEQ
|
C
|
0..*
|
|
|
DATA
|
Data; Id=”idData”
|
SEQ
|
V
|
1
|
|
|
Arbeidstijd volgnummer
|
ArVgNr
|
I(1..∞)
|
V
|
|
Datumtijd registratie
|
DatTdReg
|
DT
|
V
|
|
Datumtijd begin arbeidstijd
|
DatTdBeg
|
DT
|
V
|
|
Datumtijd einde arbeidstijd
|
DatTdEnd
|
DT
|
V
|
|
|
|
|
|
|
|
onbenoemde keuze uit een van de volgende 3 attributen
|
CHOICE
|
C
|
0..*
|
|
RIJTIJD
|
Rijtijd
|
SEQ
|
C
|
0..1
|
|
Rijtijd volgnummer
|
RtVgNr
|
I(1..∞)
|
V
|
1
|
Datumtijd registratie
|
DatTdReg
|
DT
|
V
|
1
|
Datumtijd begin rijtijd
|
DatTdBeg
|
DT
|
V
|
1
|
Datumtijd einde rijtijd
|
DatTdEnd
|
DT
|
V
|
1
|
|
|
|
|
|
|
|
PAUZE
|
Pauze
|
SEQ
|
C
|
0..1
|
|
Pauze volgnummer
|
PzVgNr
|
I(1..∞)
|
V
|
1
|
Mutatiecode
|
MtCd
|
{‘I’, ‘D’}
|
V
|
1
|
Datumtijd registratie
|
DatTdReg
|
DT
|
V
|
1
|
Datumtijd begin pauze
|
DatTdBeg
|
DT
|
V
|
1
|
Datumtijd einde pauze
|
DatTdEnd
|
DT
|
V
|
1
|
|
|
|
|
|
|
|
ANDERE WERKZAAMHEDEN
|
AdrWrkzmhdn
|
SEQ
|
C
|
0..1
|
|
Andere werkzaamheden volgnummer
|
AwVgNr
|
I(1..∞)
|
V
|
1
|
Mutatiecode
|
MtCd
|
{‘I’, ‘D’}
|
V
|
1
|
Datumtijd registratie
|
DatTdReg
|
DT
|
V
|
1
|
Datumtijd begin andere werkzaamhd.
|
DatTdBeg
|
DT
|
V
|
1
|
Datumtijd einde andere werkzaamhd.
|
DatTdEnd
|
DT
|
V
|
1
|
|
|
|
|
|
INTEGRITEIT
|
Integriteit
|
SEQ
|
V
|
1
|
|
Elektronische handtekening chauffeur
|
ElHdCh; codering=”base64”
|
B
|
K
|
1
|
Elektronische handtekening boordcomputer
|
ElHdBc; codering=”base64”
|
B
|
Elektronische handtekening fout
|
ElHdFout
|
S
|
Datumtijd handtekening
|
DatTdHd
|
DT
|
V
|
1
|
Voor de legenda van het bovenstaande overzicht wordt verwezen naar artikel 10.
Toelichting:
-
a. De PERIODE is het tijdvak waarover de gebruiker de ritadministratie heeft opgevraagd.
-
b. ARBEIDSTIJD wordt per BESTUURDER uniek geïdentificeerd door een volgnummer.
-
c. RIJTIJD wordt per BESTUURDER uniek geïdentificeerd door een volgnummer.
-
d. PAUZE wordt per BESTUURDER uniek geïdentificeerd door een volgnummer.
-
e. ANDERE WERKZAAMHEDEN wordt per BESTUURDER uniek geïdentificeerd door een volgnummer.
-
f. De DATA van ARBEIDSTIJD, inclusief bijbehorende voorkomens van RIJTIJD, PAUZE en ANDERE
WERKZAAMHEDEN, moet ondertekend worden met een elektronische handtekening om de integriteit
van de gegevens achteraf te kunnen bepalen. Indien de chauffeurskaart aanwezig is
wordt getekend met de elektronische handtekening van de chauffeur, indien de chauffeurskaart
niet aanwezig is wordt getekend met de elektronische handtekening van de boordcomputer.
Indien bij het genereren van de handtekening een gebeurtenis met foutcode S005, S006,
F008 of F009 optreedt, wordt, in plaats van de handtekening, deze foutcode geregistreerd
in het attribuut ‘Elektronische handtekening fout’.
-
g. De mutatiecode van een PAUZE of ANDERE WERKZAAMHEDEN is ‘I’ als het volgnummer van
de PAUZE of ANDERE WERKZAAMHEDEN voor de eerste keer wordt geregistreerd. De I staat
voor Insert.
-
h. Annuleren van de laatste handmatige actie is mogelijk. Voor PAUZE en ANDERE WERKZAAMHEDEN
moet dit op volgende manier worden aangegeven:
-
1. De bestaande PAUZE of ANDERE WERKZAAMHEDEN wordt niet gewijzigd.
-
2. Een nieuwe PAUZE of ANDERE WERKZAAMHEDEN wordt geregistreerd met het volgnummer van
de PAUZE of ANDERE WERKZAAMHEDEN die geannuleerd moet worden.
-
3. Datumtijd registratie van de nieuwe PAUZE of ANDERE WERKZAAMHEDEN is het tijdstip
van registratie van de nieuwe PAUZE of ANDERE WERKZAAMHEDEN.
-
4. Mutatiecode van de nieuwe PAUZE of ANDERE WERKZAAMHEDEN is ‘D’ om aan te geven dat
de PAUZE of ANDERE WERKZAAMHEDEN met dit specifieke volgnummer geannuleerd moet worden.
-
i. Ook in de taxivervoermodus zonder chauffeurskaart moeten ARBEIDSTIJD, RIJTIJD, PAUZE
en ANDERE WERKZAAMHEDEN worden vastgelegd. Alle voorkomens van ARBEIDSTIJD, RIJTIJD,
PAUZE en ANDERE WERKZAAMHEDEN die zijn vastgelegd zonder chauffeurskaart worden per
VERVOERDER uitgeleverd voor een BESTUURDER met het handmatig ingegeven Chauffeursidentificatienummer
en het Chauffeurskaart volgnummer gevuld met nullen.
-
j. Een bericht bevat per BESTUURDER de optionele attributen ‘Publieke sleutel chauffeur’
en ‘Publieke sleutel boordcomputer’ waarvan precies 1 attribuut verplicht gevuld moet
worden. Als de BESTUURDER bekend is moet het attribuut ‘Publieke sleutel chauffeur’
gevuld worden met het gehele X509 handtekeningcertificaat van de chauffeur, als de
bestuurder onbekend is moet het attribuut ‘Publieke sleutel boordcomputer’ gevuld
worden met het gehele X509 certificaat van de boordcomputer.
-
k. Een bericht bevat per ARBEIDSTIJD de optionele attributen ‘Elektronische handtekening
chauffeur’ en ‘Elektronische handtekening boordcomputer’ waarvan precies 1 attribuut
verplicht gevuld moet worden. Als de bijbehorende BESTUURDER bekend is moet het attribuut
‘Elektronische handtekening chauffeur’ gevuld worden, als de bestuurder onbekend is
moet het attribuut ‘Elektronische handtekening boordcomputer’ gevuld worden.
Artikel 4.2 Arbeidstijden.xsd
De onderstaande Arbeidstijden.xsd wordt gebruikt.
Artikel 4.3 Volgorde gegevens
De geselecteerde arbeidstijden moeten gegroepeerd per vervoerder, en daarbinnen per
ondernemerskaart, en daarbinnen per bestuurder in oplopende volgorde van volgnummer
worden opgenomen. Binnen een arbeidstijd moeten de rijtijd, pauze en andere werkzaamheden
elk in oplopende volgorde van volgnummer worden opgenomen.
Artikel 4.4 Integriteit gegevens
Alle arbeidstijden worden ondertekend met een elektronische handtekening. Voor het
plaatsen van de elektronische handtekening wordt gebruik gemaakt van de private sleutel
van de chauffeurskaart indien deze aanwezig is, en van de private sleutel van de systeemkaart
indien de chauffeurskaart niet aanwezig is.
De ‘Arbeids-, rij- en rusttijden’ bevat een element <Arbeidstijd> en <Arbeidstijd>
bevat de elementen <Data> en <Integriteit>. Het <Data> element bevat de volgende arbeidstijd
gegevens:
-
a. ArVgNr
-
b. DatTdReg
-
c. DatTdBeg
-
d. DatTdEnd
-
e. Rijtijd
-
f. RtVgNr
-
g. DatTdReg
-
h. DatTdBeg
-
i. DatTdEnd
-
j. Pauze
-
k. PzVgNr
-
l. MtCd
-
m. DatTdReg
-
n. DatTdBeg
-
o. DatTdEnd
-
p. AdrWrkzmhdn
-
q. AwVgNr
-
r. MtCd
-
s. DatTdReg
-
t. DatTdBeg
-
u. DatTdEnd
Het <Integriteit> element bevat de elektronische handtekening chauffeur of elektronische
handtekening boordcomputer van het bijbehorende <Data> element.
Bij het samenstellen van bericht ‘Arbeids-, rij- en rusttijden’ moeten de gegevens
van het <Data> element onveranderd worden overgenomen uit de boordcomputer. Het berekenen
van de ‘Elektronische handtekening chauffeur’ of ‘Elektronische handtekening boordcomputer’
van het <Data> element moet gebeuren bij het beëindigen van een arbeidstijd. De vastgelegde
‘Elektronische handtekening chauffeur’ of ‘Elektronische handtekening boordcomputer’
moeten per arbeidstijd onveranderd worden overgenomen in het onderliggende <Integriteit>
element.
Artikel 4.5 Overige kenmerken
Artikel 4.5.1 Naamgeving
De naamgeving van de gegevenslevering ‘Arbeidstijd’ is als volgt:
Hierbij worden de cursief gedrukte gegevens gevuld met de corresponderende registratiewaarde.
De volgende formaten worden hierbij gebruikt:
Gegeven
|
Formaat
|
Kenteken
|
Zoals opgenomen in de gegevenslevering zelf
|
DatumtijdSamenstellenBericht
|
CCYYMMDDHHMMSS
|
DatumtijdBeginPeriode
|
CCYYMMDDHHMM
|
DatumtijdEindePeriode
|
CCYYMMDDHHMM
|
Artikel 4.5.2 Berichtgrootte
Bij 100 arbeidstijden is het bericht ‘arbeidstijd’ maximaal 120 Kbyte groot.
Artikel 5 Coördinaten
Artikel 5.1 Gegevens en functionele en technische berichtstructuur
Voor het bericht ‘Coördinaten’ worden de volgende gegevens en functionele en technische
berichtstructuur onderkend:
Entiteit / attribuut
|
XML element
|
Inhoud
|
G
|
C
|
BERICHT
|
Arbeidstijden;
Id=”idGegevenslevering”
|
SEQ
|
V
|
1
|
|
Datumtijd samenstellen bericht
|
DatTdSmBr
|
DT
|
V
|
1
|
|
KORTE IDENTIFICATIE BOORDCOMPUTER
|
KortIdBCT
|
SEQ
|
V
|
1
|
|
|
Goedkeuringsnummer
|
GdKrgsNr
|
S28 *)
|
V
|
1
|
|
|
Programmatuur versienummer
|
ProgVrNr
|
C50
|
V
|
1
|
|
PERIODE
|
Periode
|
SEQ
|
V
|
1
|
|
|
Datumtijd begin periode
|
DatTdBegPr
|
DT
|
V
|
1
|
|
|
Datumtijd einde periode
|
DatTdEndPr
|
DT
|
V
|
1
|
|
AUTO
|
Auto
|
SEQ
|
V
|
1..2
|
|
|
Kenteken
|
Kntkn
|
S6
|
V
|
1
|
|
|
VERVOERDER
|
Vervoerder
|
SEQ
|
V
|
1..*
|
|
|
|
KvK-nummer
|
KvKnr
|
S12 *)
|
V
|
1
|
|
|
|
P-nummer
|
Pnr
|
S8 *)
|
V
|
1
|
|
|
|
ONDERNEMERSKAART
|
Ondernemerskaart
|
SEQ
|
V
|
1..*
|
|
|
|
|
Ondernemerskaart volgnummer
|
OkVgNr
|
S5 *)
|
V
|
1
|
|
|
|
|
COORDINAAT
|
COORD
|
SEQ
|
C
|
0..*
|
|
|
|
|
|
Coördinaat volgnummer
|
VgNr
|
I(1..∞)
|
V
|
1
|
|
|
|
|
|
Datumtijd registratie
|
Dt
|
DT
|
V
|
1
|
|
|
|
|
|
Breedtegraad
|
Lat
|
D2.6(-90..+90)
|
V
|
1
|
|
|
|
|
|
Lengtegraad
|
Lon
|
D3.6(-180..+180)
|
V
|
1
|
|
|
|
|
|
Werkingsmodus
|
Md
|
{‘O’, ‘C’, ‘B’, ‘K’}
|
V
|
1
|
|
|
|
|
|
Werkingsniveau
|
Nv
|
{‘T’, ‘A’, ‘B’}
|
C
|
0..1
|
Voor de legenda van het bovenstaande overzicht wordt verwezen naar artikel 10.
Toelichting:
-
a. De PERIODE is het tijdvak waarover de gebruiker de coördinaten heeft opgevraagd.
-
b. COORDINAAT wordt per VERVOERDER uniek geïdentificeerd door een volgnummer.
-
c. In werkingsmodus ‘Operationele modus’ is het attribuut ‘Werkingsniveau’ verplicht.
-
d. Alle coördinaten met een datumtijd registratie die ligt voor het tijdstip van de laatste
activering van de boordcomputer worden gegroepeerd bij dezelfde AUTO – VERVOERDER
– ONDERNEMERSKAART combinatie waarbij ‘Kenteken’, ‘KvK-nummer’, ‘P-nummer’ en ‘Ondernemerskaart
volgnummer’ worden gevuld met de lege string (‘’).
-
e. Alle coördinaten die zijn geregistreerd na het tijdstip van de laatste activering
worden geleverd met het kenteken van de auto, het KvK-nummer en P-nummer van de vervoerder
en het volgnummer van de ondernemerskaart waarvoor de coördinaten zijn geregistreerd.
-
f. Alleen de werkingsmodus ‘Operationele Modus’ kent meerdere werkingsniveaus. Bij de
overige modi wordt werkingsniveau ‘Basis’ aangehouden.
Artikel 5.2 Coordinaten.xsd
De onderstaande Coordinaten.xsd wordt gebruikt.
Artikel 5.3 Volgorde gegevens
De geselecteerde coördinaten moeten gegroepeerd per kenteken, en daarbinnen per vervoerder,
en daarbinnen per ondernemerskaart, in oplopende volgorde van volgnummer, in het bericht
worden opgenomen.
Artikel 5.4 Integriteit gegevens
Het bericht ‘Coördinaten’ wordt ondertekend met een elektronische handtekening van
de boordcomputer. De afzonderlijke coördinaten worden niet ondertekend.
Artikel 5.5 Overige kenmerken
Artikel 5.5.1 Naamgeving
De naamgeving van de gegevenslevering ‘Coördinaten’ is als volgt:
Hierbij worden de cursief gedrukte gegevens gevuld met de corresponderende registratiewaarde.
De volgende formaten worden hierbij gebruikt:
Gegeven
|
Formaat
|
Kenteken
|
Het kenteken van de auto waarin de boordcomputer als laatste is geactiveerd.
|
DatumtijdSamenstellenBericht
|
CCYYMMDDHHMMSS
|
DatumtijdBeginPeriode
|
CCYYMMDDHHMM
|
DatumtijdEindePeriode
|
CCYYMMDDHHMM
|
Artikel 5.5.2 Berichtgrootte
Een bericht ‘Coördinaten’ bevat maximum 1.440 coördinaten per dag, wanneer de auto
continu rijdt en 1 coördinaat per minuut wordt vastgelegd. Voor de periode van een
dag geeft dat een bericht van maximaal 236 Kbyte. Per jaar is het bericht ‘Coördinaten’
maximaal 84 Mbyte groot.
Artikel 6 Gebeurtenis
Artikel 6.1 Gegevens en functionele en technische berichtstructuur
Voor het bericht ‘Gebeurtenis’ worden de volgende gegevens en functionele en technische
berichtstructuur onderkend:
Entiteit / attribuut
|
XML element
|
Inhoud
|
G
|
C
|
BERICHT
|
Gebeurtenis;
Id=”idGegevenslevering”
|
SEQ
|
V
|
1
|
|
Datumtijd samenstellen bericht
|
DatTdSmBr
|
DT
|
V
|
1
|
|
KORTE IDENTIFICATIE BOORDCOMPUTER
|
KortIdBCT
|
SEQ
|
V
|
1
|
|
|
Goedkeuringsnummer
|
GdKrgsNr
|
S28 *)
|
V
|
1
|
|
|
Programmatuur versienummer
|
ProgVrNr
|
C50
|
V
|
1
|
|
PERIODE
|
Periode
|
SEQ
|
V
|
1
|
|
|
Datumtijd begin periode
|
DatTdBegPr
|
DT
|
V
|
1
|
|
|
Datumtijd einde periode
|
DatTdEndPr
|
DT
|
V
|
1
|
|
AUTO
|
Auto
|
SEQ
|
V
|
1
|
|
|
Kenteken
|
Kntkn
|
S6
|
V
|
1
|
|
CERTIFICAAT BOORDCOMPUTER
|
CertificaatBCT
|
SEQ
|
K
|
1
|
|
|
Publieke sleutel boordcomputer
|
PubliekeSleutel; codering=”base64”
|
B *)
|
V
|
1
|
|
VERVOERDER
|
Vervoerder
|
SEQ
|
V
|
1..*
|
|
|
KvK-nummer
|
KvKnr
|
S12 *)
|
V
|
1
|
|
|
P-nummer
|
Pnr
|
S8 *)
|
V
|
1
|
|
|
ONDERNEMERSKAART
|
Ondernemerskaart
|
SEQ
|
V
|
1..*
|
|
|
|
Ondernemerskaart volgnummer
|
OkVgNr
|
S5 *)
|
V
|
1
|
|
|
|
GEBEURTENIS
|
Gbrtns
|
SEQ
|
C
|
0..*
|
|
|
|
|
DATA
|
Data
|
SEQ
|
V
|
1
|
|
Gebeurtenis volgnummer
|
GbVgNr
|
I(1..∞)
|
V
|
1
|
Code
|
Code
|
S4
|
V
|
1
|
Datumtijd registratie
|
DatTdReg
|
DT
|
V
|
1
|
Km stand
|
KmStd
|
I8(0..MAX)
|
V
|
1
|
Status rijden auto
|
StRdnAt
|
{‘R’, ‘S’}
|
V
|
1
|
Werkingsmodus
|
WrkngsMds
|
{‘O’, ‘C’, ‘B’, ‘K’}
|
V
|
1
|
Werkingsniveau
|
WrkngsNv
|
{‘T’, ‘A’, ‘B’}
|
V
|
1
|
Aanvullende relevante informatie
|
AanvInfo
|
S100
|
O
|
0..1
|
|
|
|
|
|
BESTUURDER
|
Bestuurder
|
SEQ
|
C
|
0..1
|
|
Chauffeursidentificatienummer
|
ChIdNr
|
S9 *)
|
V
|
1
|
Chauffeurskaart volgnummer
|
CkVgNr
|
S5 *)
|
V
|
1
|
|
|
|
|
INTEGRITEIT
|
Integriteit
|
SEQ
|
V
|
1
|
|
Elektronische handtekening boordcomputer
|
ElHdBc; codering=”base64”
|
B
|
K
|
1
|
Elektronische handtekening fout
|
ElHdFout
|
S
|
Datumtijd handtekening
|
DatTdHd
|
DT
|
V
|
1
|
Voor de legenda van het bovenstaande overzicht wordt verwezen naar artikel 10.
Toelichting:
-
a. de PERIODE is het tijdvak waarover de gebruiker de gebeurtenissen heeft opgevraagd.
-
b. GEBEURTENIS wordt per VERVOERDER uniek geïdentificeerd door een volgnummer.
-
c. BESTUURDER is verplicht als tijdens het optreden van de gebeurtenis de werkingsmodus
‘Operationele Modus’ actief is in het werkingsniveau ‘Arbeidstijd’ of ‘Taxivervoer’.
-
d. Alleen de werkingsmodus ‘Operationele Modus’ kent meerdere werkingsniveaus. Bij de
overige modi wordt werkingsniveau ‘Basis’ aangehouden.
-
e. De DATA van een GEBEURTENIS moet ondertekend worden met de elektronische handtekening
van de boordcomputer om de integriteit van de gegevens achteraf te kunnen bepalen.
Daartoe bevat INTEGRITEIT het attribuut ‘Elektronische handtekening boordcomputer’.
Indien bij het genereren van de handtekening een gebeurtenis met foutcode S005 of
F008 optreedt, wordt, in plaats van de handtekening, deze foutcode geregistreerd in
het attribuut ‘Elektronische handtekening fout’.
-
f. Het attribuut ‘Status rijden auto’ wordt ingevuld op basis van gegevens van de verplaatsingsopnemer.
-
g. Een kilometerstand wordt opgenomen als een geheel getal, afgerond of afgekapt op een
hele kilometer.
-
h. Door het vullen van het attribuut ‘Aanvullende relevante informatie’ kan waar relevant
aanvullende informatie worden toegevoegd voor een bepaalde code.
-
i. Indien er geen bestuurder actief is tijdens registratie van een gebeurtenis moet BESTUURDER
niet worden opgenomen in de registratie.
-
j. Alleen als er een bestuurder actief, maar de chauffeurskaart niet beschikbaar is tijdens
registratie van een GEBEURTENIS moet ‘Chauffeurskaart volgnummer’ van de BESTUURDER
gevuld worden met nullen.
-
k. Het attribuut ‘Publieke sleutel boordcomputer’ dient te worden gevuld met het gehele
X509 certificaat van de boordcomputer.
Artikel 6.2 Gebeurtenis.xsd
De onderstaande Gebeurtenis.xsd wordt gebruikt.
Artikel 6.3 Volgorde gegevens
De geselecteerde gebeurtenissen moeten gegroepeerd per vervoerder, en daarbinnen per
ondernemerskaart, in oplopende volgorde van volgnummer, in het bericht worden opgenomen.
Artikel 6.4 Integriteit gegevens
Alle gebeurtenissen worden ondertekend op basis van de private sleutel van de boordcomputer.
Het bericht Gebeurtenis bevat een element <Gebeurtenis> en het element <Gebeurtenis>
bevat de elementen <Data> en <Integriteit>. Het <Data> element bevat de volgende gegevens:
-
a. GbVgNr
-
b. Code
-
c. DatTdReg
-
d. KmStd
-
e. StRdnAt
-
f. WrkngsMds
-
g. WrkngsNv
-
h. AanvInfo
-
i. Bestuurder.ChIdNr
-
j. Bestuurder.CkVgNr
Het <Integriteit> element bevat de elektronische handtekening boordcomputer van het
bijbehorende <Data> element.
Bij het samenstellen van het bericht ‘Gebeurtenis’ moeten de gegevens van het <Data>
element onveranderd worden overgenomen uit de administratie op de boordcomputer. Het
berekenen van de ‘Elektronische handtekening boordcomputer’ van het Data element van
een Rit moet gebeuren bij het optreden van de gebeurtenis. De vastgelegde ‘Elektronische
handtekening boordcomputer’ moet per gebeurtenis onveranderd worden overgenomen in
het onderliggende <Integriteit> element.
Artikel 6.5 Codetabel
In de onderstaande tabel staat de in het bericht op te nemen code per gebeurtenis
vermeld.
Code
|
Omschrijving
|
S001
|
een storing in de werking van de registratiefuntie
|
S002
|
een storing in de werking van de beveiligingsfuncties
|
S003
|
een storing in de werking van de sensoren
|
S004
|
een storing in de overbrenging van gegevens naar een externe interface zoals beschreven
in deze bijlage
|
S005
|
een storing in de werking van de systeemkaart
|
S006
|
een storing in de werking van de boordcomputerkaart
|
S007 t/m S999
|
gereserveerd voor overheidsdoeleinden
|
F001
|
een integriteitsfout in de uitvoercode
|
F002
|
een integriteistfout in de systeemgegevens
|
F003
|
een integriteitfout in de opgeslagen gebruikersgegevens
|
F004
|
een integriteitfout bij de gegevensuitvoer naar de chauffeurskaart
|
F005
|
een fout in de registratiefunctie
|
F006
|
een fout die de beveiliging van de boordcomputer in gevaar brengen
|
F007
|
een fout bij de gegevensuitvoer naar externe inrichtingen
|
F008
|
een fout bij het gebruik van de systeemkaart
|
F009
|
een fout bij het gebruik van de boordcomputerkaart
|
F010
|
een fout in de bewegingsensor
|
F011
|
een fout in de positiebepalingsensor
|
F012
|
een fout in de koppeling met de taxameter
|
F013 t/m F999
|
gereserveerd voor overheidsdoeleinden
|
M001
|
het aanzetten van de boordcomputer
|
M002
|
het uitzetten van de boordcomputer
|
M003
|
het inbrengen van een boordcomputerkaart
|
M004
|
het uitnemen van een boordcomputerkaart
|
M005
|
het inbrengen van een ongeldige boordcomputerkaart
|
M006
|
het inbrengen van een chauffeurskaart waarvan blijkt dat de datum en het tijdstip
van de laatste registratie op de chauffeurskaart, op een later tijdstip valt dan de
actuele datum en het tijdstip van de boordcomputer
|
M007
|
het niet op een juiste wijze afsluiten van een kaartsessie
|
M008
|
het inbrengen van een chauffeurskaart waarvan blijkt dat de laatste kaartsessie niet
juist is afgesloten
|
M009
|
het ontstaan van onvoldoende opslagcapaciteit op het geheugen van de boordcomputer
|
M010
|
het verdwijnen van onvoldoende opslagcapaciteit op het geheugen van de boordcomputer
|
M011
|
het ontstaan van onvoldoende opslagcapaciteit op de chauffeurskaart
|
M012
|
het verdwijnen van onvoldoende opslagcapaciteit op de chauffeurskaart
|
M013
|
het ontstaan van een onderbreking van ten minste 5 seconden in de stroomvoorziening
van de boordcomputer
|
M014
|
het verdwijnen van een onderbreking van ten minste 5 seconden in de stroomvoorziening
van de boordcomputer
|
M015
|
het begin van een periode waarin de contactgeschakelde voedingsbron is uitgeschakeld
in de toestand rijden
|
M016
|
het einde van een periode waarin de contactgeschakelde voedingsbron is uitgeschakeld
in de toestand rijden
|
M017
|
het optreden van een toestand verplaatsen zonder dat er sprake is van een toestand
rijden
|
M019
|
het begin van het niet kunnen verkrijgen van positiegegevens gedurende 5 minuten
|
M020
|
het einde van het niet kunnen verkrijgen van positiegegevens gedurende 5 minuten
|
M021
|
een afwijking van meer dan twee procent tussen de, met behulp van bewegingsgegevens
van de bewegingsopnemer en de constante van de boordcomputer, berekende afstand en
de werkelijke afstand
|
M022
|
een afwijking van meer dan vijf procent tussen de berekende afstand op basis van gegevens
van de bewegingsopnemer en positiebepalingsensor
|
M023
|
het overbrengen van gegevens inclusief de naam van de externe interface
|
M024
|
gebeurtenissen die kunnen duiden op het in gevaar brengen van de beveiliging van de
boordcomputer
|
M025
|
het activeren van de boordcomputer
|
M026
|
het keuren van de boordcomputer
|
M027
|
het deactiveren van de boordcomputer
|
M028
|
het inschakelen van een bedrijfsvergrendeling van de boordcomputer
|
M029
|
inschakelen van een werkingsmodus inclusief naam werkingsmodus
|
M030
|
het uitschakelen van een werkingsmodus inclusief naam werkingsmodus
|
M031
|
het begin van rijden in de operationele modus werkingsniveau taxivervoer zonder chauffeurskaart
|
M032
|
het einde van rijden in de operationele modus werkingsniveau taxivervoer zonder chauffeurskaart
|
M033
|
het detecteren van een niet-succesvolle authenticatiepoging
|
M034
|
installeren van een programmatuurrevisie
|
M035
|
starten van audit- en beveiligingsfuncties
|
M036
|
stoppen van audit- en beveiligingsfuncties
|
M037
|
het uitblijven of weigeren van een elektronische handtekening
|
M038
|
niet-geautoriseerde wijziging in de configuratie van de boordcomputer
|
M039
|
toegang tot het gebeurtenissenlogboek
|
M040 t/m M999
|
gereserveerd voor overheidsdoeleinden
|
Een fabrikant is vrij om voor eigen doeleinden codes aan de bovenstaande reeks toe
te voegen. Elke code moet bestaan uit een hoofdletter gevolgd door drie cijfers.
Artikel 6.6 Overige kenmerken
Artikel 6.6.1 Naamgeving
De naamgeving van de gegevenslevering ‘Gebeurtenis’ is als volgt:
Hierbij worden de cursief gedrukte gegevens gevuld met de corresponderende registratiewaarde.
De volgende formaten worden hierbij gebruikt:
Gegeven
|
Formaat
|
Kenteken
|
Zoals opgenomen in de gegevenslevering zelf
|
DatumtijdSamenstellenBericht
|
CCYYMMDDHHMMSS
|
DatumtijdBeginPeriode
|
CCYYMMDDHHMM
|
DatumtijdEindePeriode
|
CCYYMMDDHHMM
|
Artikel 6.6.2 Berichtgrootte
Bij 100 gebeurtenissen is het bericht ‘Gebeurtenis’ maximaal 100 Kbyte groot.
Artikel 7 Onderzoek
Artikel 7.1 Gegevens en functionele en technische berichtstructuur
Voor het bericht ‘Onderzoek’ worden de volgende gegevens en functionele en technische
berichtstructuur onderkend:
Entiteit / attribuut
|
XML element
|
Inhoud
|
G
|
C
|
BERICHT
|
Onderzoek;
Id=”idGegevenslevering”
|
SEQ
|
V
|
1
|
|
Datumtijd samenstellen bericht
|
DatTdSmBr
|
DT
|
V
|
1
|
|
KORTE IDENTIFICATIE BOORDCOMPUTER
|
KortIdBCT
|
SEQ
|
V
|
1
|
|
|
Goedkeuringsnummer
|
GdKrgsNr
|
S28 *)
|
V
|
1
|
|
|
Programmatuur versienummer
|
ProgVrNr
|
C50
|
V
|
1
|
|
PERIODE
|
Periode
|
SEQ
|
V
|
1
|
|
|
Datumtijd begin periode
|
DatTdBegPr
|
DT
|
V
|
1
|
|
|
Datumtijd einde periode
|
DatTdEndPr
|
DT
|
V
|
1
|
|
AUTO
|
Auto
|
SEQ
|
V
|
1
|
|
|
Kenteken
|
Kntkn
|
S6
|
V
|
1
|
|
CERTIFICAAT BOORDCOMPUTER
|
CertificaatBCT
|
SEQ
|
K
|
1
|
|
|
Publieke sleutel boordcomputer
|
PubliekeSleutel; codering=”base64”
|
B *)
|
V
|
1
|
|
IDENTIFICATIE BOORDCOMPUTER
|
IdentificatieBCT
|
SEQ
|
V
|
1
|
|
|
Naam fabrikant
|
NmFb
|
S *)
|
V
|
1
|
|
|
Serienummer
|
SrNr
|
C50 *)
|
V
|
1
|
|
|
Versienummer
|
VrNr
|
C50
|
V
|
1
|
|
|
Bouwjaar
|
BwJr
|
I(1..∞)
|
V
|
1
|
|
|
Goedkeuringsnummer
|
GdKrgsNr
|
S28 *)
|
V
|
1
|
|
|
PROGRAMMATUUR
|
Programmatuur
|
SEQ
|
V
|
1..*
|
|
|
|
Versienummer
|
VrNr
|
C50
|
V
|
1
|
|
|
|
Datumtijd installatie
|
DatTdIns
|
DT
|
V
|
1
|
|
|
ACTIVERINGSONDERZOEK
|
ActiveringsOnderzoek
|
SEQ
|
V
|
1
|
|
|
|
DATA
|
Data
|
SEQ
|
V
|
1
|
|
|
|
|
Volgnummer
|
VgNr
|
I(1..∞)
|
V
|
1
|
|
|
|
|
Km stand
|
KmStd
|
I8(1..MAX)
|
V
|
1
|
|
|
|
|
Datumtijd onderzoek
|
DatTdOndrzk
|
DT
|
V
|
1
|
|
|
|
|
Constante boordcomputer
|
CnstBCT
|
I(0..∞)
|
V
|
1
|
|
|
|
|
Effectieve omtrek wielband
|
EffOmtrkWlbd
|
I(0..∞)
|
V
|
1
|
|
|
|
|
Bandenmaat
|
BdMt
|
S(min 1 karakter, maar geen spaties)
|
V
|
1
|
|
|
|
|
Koppeling taxameter
|
KpTxMtr
|
{‘Aanwezig’, ‘Afwezig’}
|
V
|
1
|
|
|
|
|
Resultaat
|
Rslt
|
{‘Positief’, ‘Negatief’}
|
V
|
1
|
|
|
|
|
Opmerking
|
Opm
|
S100
|
V
|
1
|
|
|
|
|
WERKPLAATS
|
Werkplaats
|
SEQ
|
V
|
1
|
|
|
|
|
|
Erkenningsnummer
|
ErkNr
|
S20 *)
|
V
|
1
|
|
|
|
|
|
Keuringskaart volgnummer
|
KkVgNr
|
S5 *)
|
V
|
1
|
|
|
|
INTEGRITEIT
|
Integriteit
|
SEQ
|
V
|
1
|
|
|
|
|
Elektronische handtekening boordcomputer
|
ElHdBc; codering=”base64”
|
B
|
K
|
1
|
|
|
|
|
Elektronische handtekening fout
|
ElHdFout
|
S
|
|
|
|
|
Datumtijd handtekening
|
DatTdHd
|
DT
|
V
|
1
|
|
|
PERIODIEK ONDERZOEK
|
PeriodiekOnderzoek
|
SEQ
|
C
|
0..*
|
|
|
|
DATA
|
Data
|
SEQ
|
V
|
1
|
|
|
|
|
Volgnummer
|
VgNr
|
I(1..∞)
|
V
|
1
|
|
|
|
|
Km stand
|
KmStd
|
I8(1..MAX)
|
V
|
1
|
|
|
|
|
Datumtijd onderzoek
|
DatTdOndrzk
|
DT
|
V
|
1
|
|
|
|
|
Constante boordcomputer
|
CnstBCT
|
I(0..∞)
|
V
|
1
|
|
|
|
|
Effectieve omtrek wielband
|
EffOmtrkWlbd
|
I(0..∞)
|
V
|
1
|
|
|
|
|
Bandenmaat
|
BdMt
|
S(min 1 karakter, maar geen spaties)
|
V
|
1
|
|
|
|
|
Koppeling taxameter
|
KpTxMtr
|
{‘Aanwezig’, ‘Afwezig’}
|
V
|
1
|
|
|
|
|
Resultaat
|
Rslt
|
{‘Positief’, ‘Negatief’}
|
V
|
1
|
|
|
|
|
Opmerking
|
Opm
|
S100
|
V
|
1
|
|
|
|
|
WERKPLAATS
|
Werkplaats
|
SEQ
|
V
|
1
|
|
|
|
|
|
Erkenningsnummer
|
ErkNr
|
S20 *)
|
V
|
1
|
|
|
|
|
|
Keuringskaart volgnummer
|
KkVgNr
|
S5 *)
|
V
|
1
|
|
|
|
INTEGRITEIT
|
Integriteit
|
SEQ
|
V
|
1
|
|
|
|
|
Elektronische handtekening boordcomputer
|
ElHdBc; codering=”base64”
|
B
|
K
|
1
|
|
|
|
|
Elektronische handtekening fout
|
ElHdFout
|
S
|
|
|
|
|
Datumtijd handtekening
|
DatTdHd
|
DT
|
V
|
1
|
Voor de legenda van het bovenstaande overzicht wordt verwezen naar artikel 10.
Toelichting:
-
a. De PERIODE is het tijdvak waarover de gebruiker de gebeurtenissen heeft opgevraagd.
-
b. ACTIVERINGSONDERZOEK wordt uniek geïdentificeerd door een volgnummer.
-
c. PERIODIEK ONDERZOEK wordt uniek geïdentificeerd door een volgnummer.
-
d. Constante boordcomputer is in impulsen per kilometer.
-
e. Effectieve omtrek wielband is in millimeters.
-
f. Bandenmaat is in inches.
-
g. De DATA van een ACTIVERINGSONDERZOEK c.q. een PERIODIEK ONDERZOEK moet ondertekend
worden met de elektronische handtekening van de boordcomputer om de integriteit van
de gegevens achteraf te kunnen bepalen. Daartoe bevat INTEGRITEIT het attribuut ‘Elektronische
handtekening boordcomputer’. Indien bij het genereren van de handtekening een gebeurtenis
met foutcode S005 of F008 optreedt, wordt, in plaats van de handtekening, deze foutcode
geregistreerd in het attribuut ‘Elektronische handtekening fout’.
-
h. Een kilometerstand wordt opgenomen als een geheel getal, afgerond of afgekapt op een
hele kilometer.
-
i. Het attribuut ‘Publieke sleutel boordcomputer’ dient te worden gevuld met het gehele
X509 certificaat van de boordcomputer.
Artikel 7.2 Onderzoek.xsd
De onderstaande Onderzoek.xsd dient te worden gebruikt.
Artikel 7.3 Volgorde gegevens
Als eerste wordt het geselecteerde activeringsonderzoek in het bericht opgenomen.
Daarna worden de geselecteerde periodieke onderzoeken in oplopende volgorde van volgnummer
in het bericht opgenomen.
Artikel 7.4 Integriteit gegevens
Het activeringsonderzoek en de periodieke onderzoeken worden ondertekend op basis
van de private sleutel van de boordcomputer.
Het bericht ‘Onderzoek’ bevat het element <ActiveringsOnderzoek> en nul of meer <PeriodiekOnderzoek>
elementen. Elke instantie van een van beide elementen bevat de elementen <Data> en
<Integriteit>. Het <Data> element bevat elk van deze gevallen dezelfde gegevens:
-
a. VgNr
-
b. KmStd
-
c. DatTdOndrzk
-
d. CnstBCT
-
e. EffOmtrkWlbd
-
f. BdMt
-
g. KpTxMtr
-
h. Rslt
-
i. Opm
-
j. Werkplaats.ErkNr
-
k. Werkplaats.KkVgNr
Het <Integriteit> element bevat de elektronische handtekening van het bijbehorende
<Data> element.
Bij het samenstellen van het bericht ‘Onderzoek’ moeten de gegevens van het <Data>
element onveranderd worden overgenomen uit de registratie op de boordcomputer. Het
berekenen van de elektronische handtekening van het <Data> element van een ‘Onderzoek’
wordt gedaan bij het afronden van een onderzoek. De vastgelegde elektronische handtekening
wordt per onderzoek overgenomen in het onderliggende <Integriteit> element.
Artikel 7.5 Overige kenmerken
Artikel 7.5.1 Naamgeving
De naamgeving van de gegevenslevering ‘Onderzoek’ is als volgt:
Hierbij worden de cursief gedrukte gegevens gevuld met de corresponderende registratiewaarde.
De volgende formaten worden hierbij gebruikt:
Gegeven
|
Formaat
|
Kenteken
|
Zoals opgenomen in de gegevenslevering zelf
|
DatumtijdSamenstellenBericht
|
CCYYMMDDHHMMSS
|
DatumtijdBeginPeriode
|
CCYYMMDDHHMM
|
DatumtijdEindePeriode
|
CCYYMMDDHHMM
|
Artikel 7.5.2 Berichtgrootte
Bij 10 onderzoeken is het bericht ‘onderzoek’ maximaal 10 Kbyte groot.
Artikel 8 Chauffeurskaartdata
Artikel 8.1 Gegevens en functionele en technische berichtstructuur
Voor het bericht ‘Chauffeurskaartdata’ worden de volgende gegevens en functionele
en technische berichtstructuur onderkend:
Entiteit / attribuut
|
XML element
|
Inhoud
|
G
|
C
|
BERICHT
|
Chauffeurskaartdata;
Id=”idGegevenslevering”
|
SEQ
|
V
|
1
|
|
Datumtijd samenstellen bericht
|
DatTdSmBr
|
DT
|
V
|
1
|
|
KORTE IDENTIFICATIE BOORDCOMPUTER
|
KortIdBCT
|
SEQ
|
V
|
1
|
|
|
Goedkeuringsnummer
|
GdKrgsNr
|
S28 *)
|
V
|
1
|
|
|
Programmatuur versienummer
|
ProgVrNr
|
C50
|
V
|
1
|
|
PERIODE
|
Periode
|
SEQ
|
V
|
1
|
|
|
Datumtijd begin periode
|
DatTdBegPr
|
DT
|
V
|
1
|
|
|
Datumtijd einde periode
|
DatTdEndPr
|
DT
|
V
|
1
|
|
BESTUURDER
|
Bestuurder
|
SEQ
|
V
|
1
|
|
|
Chauffeursidentificatienummer
|
ChIdNr
|
S9 *)
|
V
|
1
|
|
|
Chauffeurskaart volgnummer
|
CkVgNr
|
S5 *)
|
V
|
1
|
|
|
CERTIFICAAT
|
Certificaat
|
SEQ
|
V
|
1
|
|
|
|
CERTIFICAAT CHAUFFEUR
|
CertificaatChauffeur
|
SEQ
|
V
|
1
|
|
|
|
|
Publieke sleutel chauffeur
|
PubliekeSleutel; codering=”base64”
|
B *)
|
V
|
1
|
|
CHAUFFEURSKAARTDATA
|
ChKrtData
|
SEQ
|
C
|
0..1
|
|
|
DATA
|
Data; Id=”idData”
|
SEQ
|
V
|
1
|
|
|
|
Chauffeursactiviteiten
|
ChauffeursActiviteiten; codering=”base64”
|
B *)
|
V
|
1
|
|
|
|
Boordcomputercertificaten
|
BCTCertificaten; codering=”base64”
|
B *)
|
V
|
1
|
|
|
INTEGRITEIT
|
Integriteit
|
SEQ
|
V
|
1
|
|
|
|
Elektronische handtekening chauffeur
|
ElHdCh; codering=”base64”
|
B
|
K
|
1
|
|
|
|
Elektronische handtekening fout
|
ElHdFout
|
S
|
|
|
|
Datumtijd handtekening
|
DatTdHd
|
DT
|
V
|
1
|
Voor de legenda van het bovenstaande overzicht wordt verwezen naar artikel 10.
Toelichting:
-
a. De PERIODE bestrijkt het eerste tot en met het laatste record op de chauffeurskaart.
De ‘Datumtijd begin periode’ en ‘Datumtijd einde periode’ in de gegevenslevering worden
overgenomen uit ‘Chauffeursactiviteiten’ in de CHAUFFEURSKAARTDATA.
-
b. ‘Chauffeursactiviteiten’ bevat de Base64 gecodeerde weergave van de binaire inhoud
van het bestand ‘EF.Driver_Activity_Data’, overgenomen van de chauffeurskaart.
-
c. ‘Boordcomputercertificaten’ bevat de Base64 gecodeerde weergave van de binaire inhoud
van het bestand ‘EF.BCT_Certificates’, overgenomen van de chauffeurskaart.
-
d. De DATA van CHAUFFEURSKAARTDATA moet ondertekend worden met de elektronische handtekening
van de chauffeur om de integriteit van de gegevens achteraf te kunnen bepalen. Daartoe
bevat INTEGRITEIT het attribuut ‘Elektronische handtekening chauffeur’. Indien bij
het genereren van de handtekening een gebeurtenis met foutcode S006 of F009 optreedt,
wordt, in plaats van de handtekening, deze foutcode geregistreerd in het attribuut
‘Elektronische handtekening fout’.
-
e. Het attribuut ‘Publieke sleutel chauffeur’ dient te worden gevuld met het gehele X509
handtekeningcertificaat van de chauffeur.
Artikel 8.2 Chauffeurskaartdata.xsd
De onderstaande Chauffeurskaartdata.xsd wordt gebruikt.
Artikel 8.3 Volgorde gegevens
De chauffeurskaartdata wordt overgenomen zoals deze wordt aangetroffen op de chauffeurskaart.
Artikel 8.4 Integriteit gegevens
Chauffeurskaartdata wordt ondertekend met een elektronische handtekening. Voor het
plaatsen van de elektronische handtekening wordt gebruik gemaakt van de private sleutel
behorende bij het handtekeningcertificaat van de chauffeurskaart.
Het bericht ‘Chauffeurskaartdata’ bevat een element <ChKrtData> en <ChKrtData> bevat
de elementen <Data> en <Integriteit>. Het <Data> element bevat de base64 representaties
van de binaire inhoud van de chip-bestanden ‘EF.Driver_Activity_Data’ en ‘EF.BCT_Certificates’,
zoals overgenomen uit de chauffeurskaart, in de volgende respectievelijke elementen:
Het <Integriteit> element bevat de elektronische handtekening chauffeur van het bijbehorende
<Data> element.
Bij het samenstellen van bericht ‘Chauffeurskaartdata’ moeten de gegevens van het
<Data> element zoals hierboven gespecificeerd worden overgenomen uit de chauffeurskaart.
Het berekenen van de ‘Elektronische handtekening chauffeur’ moet gebeuren zodra deze
data van de chauffeurskaart is overgenomen. De vastgelegde ‘Elektronische handtekening
chauffeur’ moet onveranderd worden overgenomen in het onderliggende <Integriteit>
element.
Artikel 8.5 Overige kenmerken
Artikel 8.5.1 Naamgeving
De naamgeving van de gegevenslevering ‘Chauffeurskaartdata’ is als volgt:
Hierbij worden de cursief gedrukte gegevens gevuld met de corresponderende registratiewaarde.
De volgende formaten worden hierbij gebruikt:
Gegeven
|
Formaat
|
Chauffeursidentificatienummer
|
Zoals opgenomen in de gegevenslevering zelf
|
Chauffeurskaartvolgnummer
|
Zoals opgenomen in de gegevenslevering zelf
|
DatumtijdSamenstellenBericht
|
CCYYMMDDHHMMSS
|
DatumtijdBeginPeriode
|
CCYYMMDDHHMM
|
DatumtijdEindePeriode
|
CCYYMMDDHHMM
|
Artikel 8.5.2 Berichtgrootte
Het bericht ‘Chauffeurskaartdata’ is maximaal 200 Kbyte groot.
Artikel 9 Toelichting specificaties gegevensleveringen en algemene XSD
Artikel 9.1 Toelichting bij specificaties van gegevensleveringen
De toelichting bij elk van de functioneel/technische specificaties van een gegevenslevering
uit artikelen 3 t/m 8 bestaat uit de navolgende legenda:
Kolomkop / waarde
|
Betekenis
|
Entiteit / attribuut:
|
Functionele beschrijving van het gegeven. De visuele groepering van entiteiten en
attributen representeert de hiërarchische structuur van het bericht.
|
XML element:
|
De technische berichtstructuur is XML. In deze kolom wordt de naam van het XML element
waarin het betreffende gegeven wordt opgeslagen vermeld. Indien het betreffende element
een XML attribuut kent, dan is diens naam en waarde bij de elementnaam opgenomen (bijv.
codering=”base64”).
|
Inhoud:
|
Datatype, lengte en vorm van de inhoud van het XML element:
|
|
*)
|
Waarde zoals overgenomen uit de betreffende boordcomputerkaart.
|
{lijst}
|
Eén van de waarden in de lijst.
|
B
|
Binaire data gecodeerd als Base64.
|
C#
|
Een reeks van maximaal # karakters beginnend en eindigend met een letter of cijfer
met daartussenin optioneel een of meer letters, cijfers, punten (‘.’) en/of liggende
streepjes (‘-’).
|
CHOICE
|
Wordt gebruikt wanneer de inhoud van een entiteit naar keuze of conditie één van twee
of meer onderliggende entiteiten/attributen moet bevatten. Gebruik wordt nader toegelicht.
|
D#.#
|
Een reëel getal met de vermelde precisie (de # links van de punt representeert het
maximale aantal cijfers van het gehele deel en de # rechts van de punt representeert
het maximale aantal decimalen).
|
D#.#(bereik)
|
Een reëel getal met de vermelde precisie (zie D#.#) en binnen het vermelde bereik
inclusief de vermelde eindwaarden.
|
DT
|
Tijdstip gecodeerd als een datum en een tijd in UTC.
|
I
|
Een geheel getal in het bereik -oneindig tot +oneindig.
|
I#
|
Een geheel getal van maximaal # cijfers.
|
I#(bereik)
|
Een geheel getal van maximaal # cijfers binnen het vermelde bereik inclusief de vermelde
eindwaarden. Het symbool MAX staat hierbij voor het getal bestaande uit even zo veel
9’s als # aangeeft.
|
I(bereik)
|
Een geheel getal binnen het vermelde bereik inclusief de vermelde eindwaarden. Het
symbool ‘∞’ staat hierbij voor oneindig.
|
S
|
Een onbepaald lange reeks van willekeurige karakters.
|
S#
|
Een reeks van maximaal # willekeurige karakters.
|
SEQ
|
Een geordende groep van onderliggende elementen.
|
|
|
G:
|
Gebruik van het gegeven:
|
|
C
|
Conditioneel. Gebruik wordt nader toegelicht.
|
|
K
|
Keuze. Wordt gebruikt wanneer er naar keuze of conditie één van twee of meer elementen
moet worden gebruikt. Gebruik wordt nader toegelicht.
|
|
O
|
Optioneel. Gebruik naar keuze.
|
|
V
|
Verplicht.
|
C:
|
Cardinaliteit: specificeert hoe veel keer het element wordt herhaald. Hierbij staat
∞ voor een onbeperkt aantal keren.
|
Artikel 9.2 Algemene XML schema definities in bcttypes.xsd
De berichtstructuren uit artikelen 3 t/m 8 maken allen gebruik van een algemene XSD:
bcttypes.xsd. Dit is een XML schema definitie zonder default namespace en zonder targetNamespace.
Daardoor neemt het de default namespace en targetNamespace van elke XML schema definitie
die bcttypes.xsd ’include’ aan. Dit effect heet: ‘chameleon include’.
De inhoud van bcttypes.xsd is als volgt:
BIJLAGE 4
OPENBAAR
Technische specificaties gebruik boordcomputer- en systeemkaarten Boordcomputer Taxi
Versie 1.7
Datum 25 april 2012
Status DEFINITIEF
Colofon
Projectnaam
|
Boordcomputer Taxi
|
Documenttitel
|
Technische specificaties gebruik boordcomputer- en systeemkaarten
|
Classificatie
|
OPENBAAR
|
Versienummer
|
1.7
|
Status
|
DEFINITIEF
|
Datum
|
25 april 2012
|
|
|
Contactpersoon
|
Inspectie Leefomgeving en Transport
|
|
Project Boordcomputer Taxi
|
|
Nieuwe Uitleg 1 | 2514 BP Den Haag
|
|
Postbus 90653 | 2509 LR Den Haag
|
|
|
Bijlage(n)
|
Geen
|
|
|
Auteur(s)
|
Peter G.J. Breur
|
|
Piet E. Pieters
|
Wijzigingshistorie
Versie
|
Datum
|
Omschrijving
|
1.2
|
4 mei 2010
|
Eerste versie voor publicatie
|
1.3c2
|
14 okt 2010
|
Wijzigingen naar aanleiding van door Morpho en Collis uitgevoerde tests met gepersonaliseerde
exemplaren van de geselecteerde contactchip:
|
|
1)
|
Kaart blijkt geen ondersteuning te bieden voor het selecteren van de DF.CIA op basis
van een File Identifier (voorheen 5015h). Selectie van de DF.CIA kan uitsluitend op
basis van de Application Identifier plaatsvinden. De APDU’s van de desbetreffende
SELECT FILE commando’s zijn aangepast in § 8.9 t/m § 8.21.
|
|
2)
|
De APDU’s voor het lezen en schrijven van EF’s waren door offsets in P1P2 te plaatsen,
impliciet gebaseerd op de EVEN variant van READ BINARY, respectievelijk UPDATE BINARY.
Deze variant biedt echter geen ondersteuning voor offsets groter dan 32767. Vooral
voor het lezen en schrijven van EF.Driver_Activity_Data is dit relevant. In § 8.9
t/m § 8.21 zijn de desbetreffende “P1P2” vermeldingen dan ook veranderd in het meer
generieke woord “offset”. Met aanvullende teksten in hoofdstuk 9 wordt de lezer op
het bestaan van een ODD variant, die hogere offsets ondersteunt, gewezen.
|
|
3)
|
De opslagcapaciteit van de kaart blijkt kleiner dan verwacht. Daarom is er gekozen
voor het kunnen opslaan van maximaal 3 (in plaats van 4) Systeemkaartcertificaten
in EF.BCT_Certificates. Wijzigingen in § 6.1 en § 8.18 t/m § 8.21
|
|
4)
|
De kaart blijkt onvoldoende capaciteit te hebben voor het opslaan van een EF.Driver_Activity_Data
van 64KB (65536 bytes). Tijdens personalisatie zal echter per kaart een zo groot mogelijke
ruimte voor deze EF worden gereserveerd. Per kaart is die grootte dus verschillend.
Hoe hiermee om te gaan, is nu vermeld in § 7.1 en § 9.5. Daarnaast is de vermelding
van 64K in hoofdstuk 5, alinea 1 aangepast.
|
|
5)
|
In hoofdstuk 10 Referenties [8] t/m [12] bijgewerkt.
|
1.3c3
|
15 okt 2010
|
Een boordcomputer dient een bestuurder (tijdig) te waarschuwen dat de momenteel op
de chauffeurskaart opgeslagen arbeids-, rij- en rusttijden moeten worden geëxporteerd.
Voorheen bood de chauffeurskaart de boordcomputer hiertoe geen informatie. Dergelijke
informatie is nu toegevoegd:
|
|
1)
|
Aan hoofdstuk 6 is bovenstaande rationale toegevoegd.
|
|
2)
|
Aan EF.BCT_Certificates in § 6.1 is een gegevensstructuur toegevoegd die vermeldt
wanneer en naar welke boordcomputer welke dailyrecords zijn geëxporteerd.
|
|
3)
|
Aan § 7.3 “Afsluiten van een kaartsessie” zijn extra processtappen toegevoegd.
|
|
4)
|
Aan hoofdstuk 8 zijn nieuwe paragrafen (§ 8.22 t/m § 8.23) met de extra benodigde
functies toegevoegd
|
1.3c4
|
28 okt 2010
|
Meer wijzigingen naar aanleiding van door Morpho en Collis uitgevoerde tests:
|
|
1)
|
De Kaartstructuur documenten bevatten kleine fouten en zijn bijgewerkt van versie
1.5 naar 1.6. In hoofdstuk 10 zijn de betreffende Referenties ([8] t/m [12]) geactualiseerd.
|
|
2)
|
In § 8.5, 8.6 en 8.7 werd gesproken over een “PSO Hash commando met ‘6C’h in Lc om
SHA256 aan te duiden”. Omdat dat niet correct is, zijn er tekstverbeteringen in deze
paragrafen aangebracht. Ook § 8.8 is met deze aanvullingen in lijn gebracht.
|
1.3c5
|
5 nov 2010
|
Wijzigingen naar aanleiding van interne review IVW:
|
|
1)
|
Eerste alinea van de Inleiding geactualiseerd.
|
|
2)
|
In § 2.5 een grammaticale verbetering aangebracht.
|
|
3)
|
In § 5.1 de noodzaak van een correct gevuld DriverCardNumber verklaard.
|
|
4)
|
In § 5.1.2 expliciet vermeld dat het tijdformaat van een 24-uurs klok uitgaat.
|
|
5)
|
In § 5.2 de referentie naar hoofdstuk 7 hersteld.
|
|
6)
|
In § 5.2.7 een grammaticale verbetering aangebracht.
|
|
7)
|
In § 6.1 de zin onder Figuur 10 verbeterd.
|
|
8)
|
In § 7.1, puntje 1 een referentie opgenomen.
|
|
9)
|
In § 7.1, punt 4, 2e aandachtsstreepje grammaticale verbeteringen aangebracht.
|
|
10)
|
In § 7.3 de eerste twee alinea’s duidelijker verwoord.
|
|
11)
|
In hoofdstuk 10 de omschrijving van referentie [14] gecorrigeerd.
|
|
12)
|
In scenario A.6 ontbrekende teksten toegevoegd.
|
1.3c6
|
11 nov 2010
|
Wijzigingen naar aanleiding van document review door Collis:
|
|
1)
|
In § 8.7, puntje 4 de tekst “van minimaal 1 en maximaal 64 bytes” ingevoegd.
|
|
2)
|
In § 9.4 het voorbeeld aangepast aan hetgeen in tabel 29 in referentie [7] staat:
Bij een Read Binary Odd kan voor P1P2 alleen een SFI meegegeven worden en geen file
id
|
1.4
|
6 dec 2010
|
Doorvoeren naamswijziging ministerie
|
1.5
|
29 jun 2011
|
Wijzigingen met betrekking tot het refereren aan private sleutelobjecten:
|
|
1)
|
In § 8.5 twee keer de tekst “06” veranderd in “86” en voetnoot aangepast
|
|
2)
|
In § 8.6 twee keer de tekst “05” veranderd in “85” en voetnoot aangepast
|
|
3)
|
In § 8.7 twee keer de tekst “05” veranderd in “85” en voetnoot aangepast
|
|
4)
|
In § 8.8 twee keer de tekst “05” veranderd in “85” en voetnoot aangepast
|
1.6
|
12 dec 2011
|
Aanpassing §4.6 Authenticatiescenario Systeemkaart-Boordcomputer
|
1.7
|
25 apr 2012
|
Wijzigingen naar aanleiding van uitgevoerde tests:
|
|
1)
|
In § 8.5 stap toegevoegd voor selectie hash template en algoritme
|
|
2)
|
In § 8.6 stap toegevoegd voor selectie hash template en algoritme
|
|
3)
|
In § 8.7 stap toegevoegd voor selectie hash template en algoritme
|
|
4)
|
Bijlage B toegevoegd met uitgewerkte voorbeelden van een aantal functies
|
Inhoud
1
|
Inleiding
|
84
|
1.1
|
Bereik van dit document
|
85
|
2
|
Opbouw boordcomputer- en systeemkaarten
|
85
|
2.1
|
ISO/IEC 7816-15 structuur
|
85
|
2.2
|
Certificaten
|
85
|
2.3
|
Asymmetrische sleutels
|
85
|
2.4
|
PIN/PUK
|
85
|
2.5
|
Gegevens
|
85
|
|
2.5.1
|
Systeemkaart
|
85
|
|
2.5.2
|
Chauffeurskaart
|
86
|
|
2.5.3
|
Relatie gegevens boordcomputer – chauffeurskaart
|
86
|
2.6
|
Toegangscondities
|
86
|
3
|
Koppelen Systeemkaart
|
86
|
3.1
|
Communicatiebeveiliging tussen boordcomputerunits en systeemkaarten
|
86
|
|
3.1.1
|
Boordcomputerproductie
|
87
|
|
3.1.2
|
Systeemkaartvervanging
|
88
|
4
|
Beveiligde gegevensoverdracht
|
89
|
4.1
|
Structuur van commando’s en antwoorden bij beveiligde gegevensoverdracht
|
90
|
4.2
|
Fouten bij de beveiligde gegevensoverdracht
|
90
|
4.3
|
Sessiesleutels
|
91
|
4.4
|
Zendsequentieteller (SSC)
|
91
|
4.5
|
Algoritmes
|
91
|
4.6
|
Authenticatiescenario Systeemkaart-Boordcomputer
|
91
|
5
|
Gegevens op chauffeurskaart (EF.Driver_Activity_Data)
|
91
|
5.1
|
Opbouw van EF.Driver_Activity_Data
|
91
|
|
5.1.1
|
DailyRecord
|
92
|
|
5.1.2
|
SessionRecord
|
93
|
|
5.1.3
|
ActivityRecord
|
94
|
|
5.1.4
|
Overzicht
|
95
|
5.2
|
Schrijven naar EF.Driver_Activity_Data
|
96
|
|
5.2.1
|
Toevoegen van de eerste activiteit binnen een SessionRecord
|
96
|
|
5.2.2
|
Toevoegen “Login” activiteit
|
96
|
|
5.2.3
|
Toevoegen “Start pauze” activiteit
|
97
|
|
5.2.4
|
Toevoegen “Start werk” activiteit
|
97
|
|
5.2.5
|
Toevoegen “Afsluiting” activiteit
|
97
|
|
5.2.6
|
Toevoegen “Nieuwe eindtijd” (=handmatige Afsluiting) activiteit
|
98
|
|
5.2.7
|
Toevoegen “Dagovergang (handmatig/automatisch)” activiteit
|
98
|
5.3
|
Algemene opmerkingen bij lezen en schrijven naar EF.Driver_Activity_Data
|
99
|
5.4
|
Digitale handtekening
|
99
|
6
|
Gegevens op chauffeurskaart (EF.BCT_Certificates)
|
100
|
6.1
|
Opbouw van EF.BCT_Certificates
|
101
|
7
|
Kaartsessie
|
102
|
7.1
|
Begin van een kaartsessie
|
103
|
7.2
|
Tijdens een kaartsessie
|
104
|
7.3
|
Afsluiten van een kaartsessie
|
105
|
7.4
|
Niet afgesloten kaartsessie
|
105
|
7.5
|
Dagoverschrijdende kaartsessie
|
105
|
8
|
Functies
|
106
|
8.1
|
PIN wijzigen
|
106
|
8.2
|
SM keyset wijzigen
|
106
|
8.3
|
PIN deblokkeren
|
107
|
8.4
|
PIN deblokkeren en wijzigen
|
107
|
8.5
|
Elektronische handtekening zetten met een chauffeurs- of inspectiekaart
|
107
|
8.6
|
Elektronische handtekening zetten met een systeemkaart
|
108
|
8.7
|
Authenticiteit handtekening zetten met een boordcomputerkaart
|
108
|
8.8
|
Authenticeren boordcomputerkaart aan boordcomputer
|
109
|
8.9
|
Schrijf nieuw ActivityRecord
|
110
|
8.10
|
Schrijf nieuw SessionRecord
|
112
|
8.11
|
Schrijf nieuw DailyRecord
|
112
|
8.12
|
Selecteer laatste (nieuwste) DailyRecord
|
113
|
8.13
|
Selecteer oudste (eerste) DailyRecord
|
113
|
8.14
|
Selecteer vorige DailyRecord
|
113
|
8.15
|
Selecteer volgende DailyRecord
|
114
|
8.16
|
Lees huidige / geselecteerde DailyRecord
|
115
|
8.17
|
Controleer EF.Driver_Activity_Data structuur
|
115
|
8.18
|
Controleren op opgeslagen boordcomputercertificaat
|
116
|
8.19
|
Volgorde bijwerken van opgeslagen boordcomputercertificaten
|
117
|
8.20
|
Geef opgeslagen boordcomputercertificaat
|
117
|
8.21
|
Sla boordcomputercertificaat op
|
117
|
8.22
|
Geef meest recente DownloadLog
|
118
|
8.23
|
Sla DownloadLog op
|
118
|
9
|
Commando’s
|
118
|
9.1
|
Selecteren van EF’s
|
119
|
9.2
|
Uitlezen van een nog niet geselecteerde EF vanaf een offset < 256
|
119
|
9.3
|
Uitlezen van de huidige EF vanaf een offset kleiner 32768
|
120
|
9.4
|
In de huidige DF Uitlezen van een EF vanaf een offset groter dan 32767
|
120
|
9.5
|
Opvragen van de FCP’s o.a. voor de grootte van EF.Driver_Activity_Data
|
120
|
10
|
Referenties
|
121
|
11
|
Begrippen en afkortingen
|
121
|
Bijlage A
|
Scenario’s kaartsessies
|
122
|
A.1
|
Scenario 1: Normale kaartsessie
|
122
|
A.2
|
Scenario 2: Sessie afgesloten met pauze, nieuwe sessie met einde pauze
|
122
|
A.3
|
Scenario 3: Sessie afgesloten met pauze, nieuwe sessie met einde pauze en andere werkzaamheden
|
123
|
A.4
|
Scenario 4: Sessie afgesloten, volgende dag toevoegen van andere werkzaamheden aan
de vorige dag
|
124
|
A.5
|
Scenario 5: Sessie afgesloten, pauze vervangen door andere werkzaamheden
|
124
|
A.6
|
Scenario 6: Sessie niet afgesloten, vervolg zelfde werkzaamheden
|
125
|
A.7
|
Scenario 7: Sessie niet afgesloten, andere activiteiten ertussendoor
|
126
|
A.8
|
Scenario 8: Sessie niet afgesloten, later automatisch beëindigd
|
127
|
A.9
|
Scenario 9: Sessie niet afgesloten, kaart tussendoor in ander voertuig
|
127
|
Bijlage B
|
Referentie data
|
129
|
B.1
|
Het opzetten van Secure Messaging
|
129
|
B.2
|
Het sturen van commando’s met Secure Messaging
|
131
|
B.3
|
Het zetten van een handtekening met een boordcomputerkaart
|
132
|
B.3.1
|
SignDataLegally
|
132
|
B.3.2
|
SignDataForAuthenticity
|
134
|
B.4
|
Het zetten van een handtekening met een systeemkaart
|
136
|
1 Inleiding
Met de inwerkingtreding van de ‘Ministeriele Regeling specificaties en typegoedkeuring
boordcomputer taxi’ zijn de specificaties van de ‘Boordcomputer Taxi’ (BCT) van kracht
geworden. Met deze regelgeving wordt elke taxi in Nederland voorzien van een boordcomputer,
die zowel de arbeids-, rij- en rusttijden van de taxichauffeur als de rittenstaat
behorend bij de taxi vastlegt.
Om de authenticiteit en integriteit van de vastgelegde data te waarborgen, voorziet
de boordcomputer deze data van elektronische handtekeningen. Daartoe wordt een zogeheten
‘Public Key Infrastructure’ worden opgezet. De boordcomputer wordt voorzien van een
certificaat en een sleutelpaar (publieke- en private sleutels), zodat hij in staat
is data elektronisch te ondertekenen en de authenticiteit van aangeboden gebruikerskaarten
vast te stellen. Het certificaat en het sleutelpaar van de boordcomputer worden hiertoe
opgeslagen op een chipkaart, de zogeheten systeemkaart, die in een speciaal kaartslot
van de boordcomputer wordt geplaatst.
Alle gebruikers van de boordcomputer worden voorzien van gebruikerskaarten, de zogeheten
boordcomputerkaarten. Deze kaarten bevatten evenals de systeemkaart certificaten en
sleutelparen. Toegang tot de boordcomputer is alleen mogelijk na authenticatie van
een boordcomputerkaart door (de logica van) de boordcomputer.
Binnen de groep gebruikers van de boordcomputer zijn vier rollen te onderscheiden,
namelijk die van bestuurder, vervoerder, werkplaats en toezichthouder. Elk van deze
rollen is gebonden aan een apart type boordcomputerkaart. Elke rol heeft zijn eigen
autorisatieniveau, bijvoorbeeld waar het gaat om toegang tot de op de boordcomputer
vastgelegde data.
Binnen BCT zijn dus vijf verschillende chipkaarten te onderscheiden:
-
• Een apparaatgebonden systeemkaart behorend bij een boordcomputer;
-
• Een persoonsgebonden chauffeurskaart behorend bij een bestuurder;
-
• Een organisatiegebonden ondernemerskaart behorend bij een vervoerder;
-
• Een organisatiegebonden keuringskaart behorend bij een werkplaats;
-
• Een persoonsgebonden inspectiekaart behorend bij een toezichthouder.
1.1 Bereik van dit document
Dit document bevat technische specificaties en richtlijnen voor het gebruik van de
hierboven genoemde chipkaarten. Dit document is primair bedoeld voor fabrikanten van
boordcomputers. De hoofdstukken 2 en 5 t/m 8, alsmede bijlage A, zijn echter ook interessant
voor ontwikkelaars van toepassingen bedoeld om chauffeurskaarten uit te lezen.
2 Opbouw boordcomputer- en systeemkaarten
2.1 ISO/IEC 7816-15 structuur
De boordcomputer- en systeemkaarten zijn uitgevoerd als ISO/IEC 7816-15 kaarten. De
algemene opbouw van ISO/IEC 7816-15 kaarten staat beschreven in Referentie [3]. De
opbouw per kaart wordt in de specificatie documenten van de afzonderlijke kaarten
beschreven (Referenties [8] t/m [12]).
2.2 Certificaten
De op de boordcomputer- en systeemkaarten gebruikte certificaten zijn X.509 certificaten
uitgegeven conform PKIoverheid. Er worden verschillende X.509 certificaten gebruikt,
zoals voor authenticatie, handtekening en vertrouwelijkheid. Zie verder Referentie
[13] in hoofdstuk 10.
2.3 Asymmetrische sleutels
Asymmetrische sleutels worden gebruikt voor authenticatie, vertrouwelijkheid en handtekening.
De publieke sleutels zijn opgeslagen in de X.509 certificaten (zie § 2.2) en de private
sleutels intern in de kaarten.
De asymmetrische sleutels die in de kaarten gebruikt worden zijn RSA sleutels met
een lengte van 2048 bits.
2.4 PIN/PUK
De eigenschappen van de PIN en PUK (PIN Unblock Key) per kaart worden in de specificatie
documenten van de afzonderlijke kaarten beschreven (Referenties [8] t/m [12] in hoofdstuk
10).
De PIN wordt algemeen gebruikt voor de authenticatie van de kaarthouder en bij persoonsgebonden
boordcomputerkaarten voor het zetten van elektronische handtekeningen. De PUK kan
gebruikt worden om de PIN te deblokkeren.
2.5 Gegevens
Op alle kaarten zijn gegevens zoals voorgeschreven in ISO/IEC 7816-15 opgeslagen.
Er zijn echter twee typen kaarten waarop ook andere gegevens toegevoegd kunnen worden:
de systeemkaart en de chauffeurskaart.
2.5.1 Systeemkaart
Op de systeemkaart kan eenmalig het serienummer van de boordcomputer opgeslagen worden.
Dit staat beschreven in hoofdstuk 3. Verder worden er (tijdens de gebruiksfase) op
de systeemkaart geen gegevens opgeslagen.
2.5.2 Chauffeurskaart
Op de chauffeurskaart worden de arbeids-, rij- en rusttijden van de chauffeur, alsmede
de systeemkaartcertificaten van de laatst gebruikte boordcomputers opgeslagen. Dit
wordt beschreven in hoofdstuk 5.
2.5.3 Relatie gegevens boordcomputer – chauffeurskaart
Voor de boordcomputer is het niet vastgelegd hoe de gegevens opgeslagen moeten worden.
Wel is vastgelegd welke gegevens er opgeslagen moeten worden en hoe en in welk formaat
ze beschikbaar moeten zijn voor gegevenslevering.
Vanwege beperkingen voor wat betreft het formaat en de mogelijkheden voor controle
en uitlezen van de gegevens, is voor de chauffeurskaart wel exact vastgelegd hoe de
gegevens opgeslagen moeten worden. Dit staat beschreven in hoofdstuk 5.
2.6 Toegangscondities
Specifieke toegangscondities worden gegeven in de specificatiedocumenten van de afzonderlijke
boordcomputerkaarten.
Algemeen geldt voor de toegangscondities:
-
• Lezen PIN, PUK en RSA sleutels: niet toegestaan.
-
• Lezen gegevens: geen beperking.
-
• Schrijven van de RSA sleutels: niet toegestaan.
-
• Gebruik van de RSA sleutels voor authenticiteit en elektronische handtekeningen: alleen
mogelijk na een succesvolle verificatie van de PIN. Bij systeemkaarten wordt Secure
Messaging in plaats van een PIN gebruikt.
-
• Gebruik van de PIN (alleen op boordcomputerkaarten): geen beperkingen.
-
• Deblokkeren van de PIN (alleen op boordcomputerkaarten): alleen mogelijk na een succesvolle
verificatie van de PUK.
-
• Wijzigen van de PIN (alleen op boordcomputerkaarten): alleen mogelijk na een succesvolle
verificatie van de (huidige) PIN of, als aanvulling op deblokkeren, na succesvolle
verificatie van de PUK.
-
• Gebruik van de PUK (alleen op boordcomputerkaarten): geen beperkingen.
-
• Schrijven: bij systeemkaarten alleen mogelijk in Secure Messaging en bij chauffeurskaarten
alleen mogelijk na een succesvolle verificatie van de PIN.
3 Koppelen Systeemkaart
De systeemkaart moet initieel aan de boordcomputer gekoppeld worden om de boordcomputer
te laten functioneren. Onderstaande paragrafen geven een nadere specificatie van boordcomputerproductie,
respectievelijk systeemkaartvervanging.
3.1 Communicatiebeveiliging tussen boordcomputerunits en systeemkaarten
Een boordcomputer wordt gevormd door de combinatie van een boordcomputerunit en een
systeemkaart. De boordcomputerunit wordt hierbij beschouwd als de gebruiker/houder
van de systeemkaart. Net zoals een boordcomputerkaart uitsluitend door zijn rechtmatige
houder mag worden gebruikt (voor het plaatsen van elektronische handtekeningen), mag
ook een systeemkaart uitsluitend door zijn rechtmatige “houder” worden gebruikt. Om
dit rechtmatige gebruik te waarborgen wordt elke systeemkaart voorzien van een geheime
sleutel die in de boordcomputerunit dient te worden voorgeprogrammeerd.
Het communicatiekanaal (voor het plaatsen van elektronische handtekeningen) tussen
een boordcomputerunit en zijn gekoppelde systeemkaart moet beveiligd zijn om de integriteit,
authenticiteit en vertrouwelijkheid van de uitgewisselde gegevens te beschermen. Omdat
de koppeling tussen een boordcomputerunit en “zijn” systeemkaart een-op-een is, is
er voor het opzetten van een veilig communicatiekanaal geen noodzaak voor asymmetrische
cryptografie, maar kan met symmetrische cryptografie worden volstaan. De symmetrische
sleutel(set) die voor deze communicatiebeveiliging wordt gebruikt is per boordcomputer
uniek; elke systeemkaart wordt voorzien van een symmetrische communicatiesleutel(set)
die in de bijbehorende boordcomputerunit dient te worden voorgeprogrammeerd.
Er bestaan vijf soorten combinaties van boordcomputerunits en systeemkaarten:
-
1. Niet-gekoppelde boordcomputerunit – niet-gekoppelde eerste systeemkaart;
-
2. Boordcomputerunit gekoppeld aan eerste systeemkaart (= boordcomputer);
-
3. Boordcomputerunit – ontkoppelde/onklaar gemaakte systeemkaart;
-
4. Boordcomputer – niet-gekoppelde vervangende systeemkaart;
-
5. Boordcomputerunit gekoppeld aan vervangende systeemkaart (= boordcomputer);
Combinatie 1 is van toepassing in de fabriek waar de boordcomputerunit wordt geproduceerd.
Combinatie 2 wordt gemaakt bij de boordcomputerfabrikant voorafgaand aan de distributie
van de resulterende boordcomputer. Combinaties 1 en 2 vallen daarmee onder de noemer
“boordcomputerproductie”.
Combinaties 3, 4 en 5 betreffen het “in het veld” (buiten de fabriek) op een boordcomputer
vervangen van de huidige gekoppelde systeemkaart door een andere systeemkaart. Deze
combinaties vallen onder de noemer “systeemkaartvervanging”.
Onderstaande subparagrafen geven een nadere specificatie van boordcomputerproductie,
respectievelijk systeemkaartvervanging.
3.1.1 Boordcomputerproductie
Elke boordcomputerfabrikant die een typegoedkeuring heeft verkregen kan, per typegoedkeuringsnummer,
bij de Kaartuitgever een verzoek voor een transportkey indienen. De Kaartuitgever
zal, na verificatie van het typegoedkeuringsnummer, via de Personalisator een transportkey
voor het typegoedkeuringsnummer genereren. Deze transportkey zal op een pinmailer
aan de fabrikant worden verzonden.
Wanneer de fabrikant boordcomputers van het desbetreffende type wil gaan produceren,
zal de fabrikant op basis van het typegoedkeuringsnummer een of meer batches van systeemkaarten
bestellen bij de Kaartuitgever. De Kaartuitgever / Personalisator gebruikt de eerder
vastgelegde transportkey (zie voorgaande alinea) om de te produceren systeemkaarten
mee te beschermen. De door de fabrikant geproduceerde boordcomputerunits dienen door
de fabrikant te worden voorgeprogrammeerd met diezelfde transportkey.
Met het bovenstaande scenario kan elke nieuw geproduceerde boordcomputerunit (van
een specifiek type) communiceren met elke gepersonaliseerde eerste systeemkaart (voor
datzelfde boordcomputertype).
Nadat de operator bij de fabrikant een boordcomputerunit van een nieuwe systeemkaart
(uit de bij de fabrikant aanwezige voorraad) heeft voorzien, dient die operator de
“koppelfunctie” van de boordcomputerunit te gebruiken. Die koppelfunctie dient de
typespecifieke transportkey te vervangen met een door de boordcomputerunit gegenereerde
“true random” waarde. Deze sleutelvervanging dient uiteraard zowel in de boordcomputerunit
als in de systeemkaart te gebeuren. Hierna kan de betreffende boordcomputerunit uitsluitend
nog met de betreffende systeemkaart werken.
De onderstaande tabel geeft een overzicht van de toegangscondities en de inhoud van
de verschillende security objecten van systeemkaart en boordcomputerunit zowel voor
als na het koppelproces.
Tabel 1. Toegangscondities/inhoud van objecten bij eerste systeemkaarten
Security / Data Object
|
Access Condition
|
Geproduceerd
|
Gekoppeld
|
Read
|
Write
|
Use
|
Reset
|
STK1.RSA.Private
|
never
|
never
|
SM
|
n.a.
|
rsakey1
|
rsakey1
|
STK1.DO.NextKey
|
SM
|
SM
|
n.a.
|
n.a.
|
transportkey2
|
transportkey2
|
STK1.DO.BC.Serial
|
Always
|
SM
|
n.a.
|
n.a.
|
Leeg
|
Serienr. BCT
|
STK1.SMkeyset
|
never
|
SM
|
always
|
n.a.
|
transportkey1
|
uniquekey1
|
BCT.Secret
|
BCT custom access conditions
|
transportkey1
|
uniquekey1
|
NB. De constructie en/of logica van de boordcomputer dient het object BCT.SECRET op adequate
wijze te beschermen tegen ontvreemding (dit geheim mag uitsluitend toegankelijk zijn
voor de boordcomputerlogica en uitsluitend voor de in dit document beschreven doelen
worden toegepast.
De Personalisator levert een systeemkaart op met de volgende waarden:
-
• Een per kaart unieke en nergens onthouden waarde in het RSA private key object;
-
• Een per typegoedkeuringsnummer unieke en bij de Personalisator en fabrikant bekende,
bewaarde en geheimgehouden waarde “transportkey1” in het object SMkeyset;
-
• Een per kaart unieke en bij de Personalisator bewaarde waarde “transportkey2” in het
dataobject NextKey;
-
• Een lege string in het dataobject BC.Serial.
Omdat de waarde “transportkey1” geheimgehouden is, is een gepersonaliseerde niet-gekoppelde
kaart tijdens distributie onbruikbaar voor:
-
• Het gebruik van de RSA private key
(nodig voor het zetten van elektronische handtekeningen);
-
• Het uitlezen van het object NextKey
(nodig voor het koppelen aan een vervangende systeemkaart);
-
• Het beschrijven van het object BC.Serial
(nodig als onderdeel van het koppelproces).
Omdat de waarde “transportkey1” wel bij de fabrikant bekend is, is die waarde voorgeprogrammeerd
in het “Secret” object van elke nieuw geproduceerde boordcomputerunit. Hiermee kan
een boordcomputerunit het koppelproces doorlopen:
-
1. Lees de waarde “transportkey1” uit de variabele Secret;
-
2. Genereer een nieuwe unieke (random) waarde “uniquekey1”;
-
3. Gebruik “transportkey1” als een 3DES sleutelset om via een MUTUAL AUTHENTICATE een
veilig kanaal (MAC_ENC Secure Messaging kanaal) op te zetten met de systeemkaart (zie
§ 4.6);
-
4. Gebruik een PUT DATA om de SMkeyset te wijzigen in “uniquekey1”, gebruikmakend van
het SM kanaal;
-
5. Gebruik het SM kanaal om het dataobject BC.SERIAL te beschrijven met het serienummer
van de boordcomputer.
Het dataobject BC.SERIAL is 64 bytes groot. In de eerste byte dient de lengte van
het serienummer in bytes te worden opgeslagen als een (unsigned) byte. Het serienummer,
weergegeven als een (8-bits) ASCII string, wordt vanaf de tweede byte opgeslagen.
De maximale lengte van een serienummer is hiermee 63 karakters (bytes);
-
6. Overschrijf de variabele Secret met “uniquekey1” en vernietig daarbij de kennis van
“transportkey1”;
-
7. Sluit de kaartsessie.
NB. Het initiëren van het koppelproces kan, naar keuze van de fabrikant, een (beschermde)
menugestuurde optie zijn of automatisch gebeuren als gevolg van het herkennen van
een nog niet gekoppelde systeemkaart in het systeemkaartslot.
De systeemkaart is nu een-op-een gekoppeld aan de boordcomputerunit die met zijn kennis
van “uniquekey1” een MAC_ENC SM kanaal kan opzetten en daarmee het volgende kan doen:
-
• Zetten van elektronische handtekeningen;
-
• Uitlezen van NextKey voor het koppelen van een vervangende systeemkaart;
-
• Opnieuw doorlopen van het koppelproces om de waarde “uniquekey1” te wijzigen in een
nieuwe waarde.
Ondersteuning van de laatstgenoemde mogelijkheid is niet voorgeschreven, maar kan
als extra veiligheidsmaatregel periodiek worden gedaan.
3.1.2 Systeemkaartvervanging
Dit beveiligingsconcept voorziet, teneinde reguliere certificaatvervanging te ondersteunen,
in de mogelijkheid om de systeemkaart van een boordcomputer te vervangen door een
andere.
Om dit “in het veld” door een werkplaats te kunnen laten doen is het concept voor
vervanging dusdanig dat er geen kennis van enig geheim vereist is bij degene die de
vervanging uitvoert. Hiertoe is met de Personalisator afgesproken:
-
1. dat elke eerste systeemkaart een dataobject NextKey bevat met daarin een unieke waarde
“transportkey2”,
-
2. dat de Personalisator die waarde voor elke systeemkaart in escrow houdt en
-
3. dat de Personalisator het SMkeyset object van de desbetreffende vervangende systeemkaart
vult met die onthouden waarde.
Uiteraard zal het NextKey dataobject van de vervangende systeemkaart ook weer worden
gevuld met een nieuwe unieke waarde (“transportkey3”), zodat een volgende vervanging
ook weer kan worden uitgevoerd.
Zoals in de vorige paragraaf is uitgelegd, worden nieuw geproduceerde boordcomputerunits
in de fabriek voorgeprogrammeerd met de (typespecifieke) “transportkey1”. In die veilige
omgeving kan elke willekeurige nieuwe boordcomputerunit (van een bepaald type) dan
ook gekoppeld worden aan elke willekeurige gepersonaliseerde “eerste systeemkaart”
(voor datzelfde boordcomputertype).
Bij het vervangen van een systeemkaart wordt de oude systeemkaart gebruikt om de boordcomputerunit
te voorzien van de transportkey die nodig is voor de koppeling aan de vervangende
systeemkaart. Hierbij blijft die transportkey onzichtbaar voor degene die de vervanging
uitvoert. Omdat bovendien geldt dat de transportkey van elke vervangende systeemkaart
uniek is voor die kaart, is bovendien gewaarborgd dat een vervangende systeemkaart
uitsluitend in één (1) specifieke boordcomputer zal kunnen werken.
NB. Bij het bestellen van een vervangende systeemkaart wordt aan de Personalisator aangeduid
om welke “voorloper” het gaat. Hiervoor wordt het systeemkaartnummer gebruikt dat
als volgt is opgebouwd: “S” + boordcomputernummer (hetzelfde als dat van de voorloper)
+ kaartvolgnummer (1 hoger dan dat van de voorloper).
De onderstaande tabel geeft een overzicht van de toegangscondities en de inhoud van
de verschillende security objecten van systeemkaart 1 en 2 en van de boordcomputerunit
zowel voor als na het koppelproces.
Tabel 2. Toegangscondities/inhoud van objecten bij systeemkaartvervanging
Security / Data Object
|
Access Condition
|
Gekoppeld 1
|
Ontkoppeld 1 / Geprod. 2
|
Gekoppeld 2
|
Read
|
Write
|
Use
|
Reset
|
STK1.RSA.Private
|
never
|
never
|
SM
|
n.a.
|
rsakey1
|
rsakey1
|
n.a.
|
STK1.DO.NextKey
|
SM
|
SM
|
n.a.
|
n.a.
|
transportkey2
|
random
|
n.a.
|
STK1.DO.BC.Serial
|
Always
|
SM
|
n.a.
|
n.a.
|
Serienr. BCT
|
Leeg
|
|
STK1.SMkeyset
|
never
|
SM
|
always
|
n.a.
|
uniquekey1
|
random/blocked
|
n.a.
|
BCT.Secret
|
BCT custom access conditions
|
uniquekey1
|
transportkey2
|
uniquekey2
|
STK2.RSA.Private
|
never
|
never
|
SM
|
n.a.
|
n.a.
|
rsakey2
|
rsakey2
|
STK2.DO.NextKey
|
SM
|
SM
|
n.a.
|
n.a.
|
n.a.
|
transportkey3
|
transportkey3
|
STK2.DO.BC.Serial
|
Always
|
SM
|
n.a.
|
n.a.
|
n.a.
|
Leeg
|
Serienr. BCT
|
STK2.SMkeyset
|
never
|
SM
|
always
|
n.a.
|
n.a.
|
transportkey2
|
uniquekey2
|
Het koppelen van de boordcomputerunit aan de vervangende systeemkaart volgt dezelfde
stappen als bij het koppelen aan de eerste (of voorgaande) systeemkaart zoals beschreven
in § 3.1.1. Het verschil zit hem in de volgende voorbereidende stappen:
-
1. Initieer de vervanging door het aanroepen van de desbetreffende functie op de boordcomputer;
-
2. Lees de waarde “uniquekey1” uit de variabele Secret;
-
3. Gebruik (indien er nog geen MAC_ENC Secure Messaging kanaal bestaat) “uniquekey1”
als een 3DES sleutelset om via een MUTUAL AUTHENTICATE een veilig kanaal (MAC_ENC
Secure Messaging kanaal) op te zetten met de huidige systeemkaart;
-
4. Lees, gebruikmakend van het SM kanaal, de waarde “transportkey2” uit het dataobject
NextKey;
-
5. Maak, gebruikmakend van het SM kanaal, de huidige systeemkaart onklaar:
-
6. Overschrijf het NextKey data object met een random waarde;
-
7. Overschrijf het SMkeyset object met een random waarde;
-
8. Overschrijf het BC.Serial object met een random of een lege waarde;
-
9. Overschrijf de variabele Secret met “transportkey2” en vernietig daarbij de kennis
die de boordcomputerunit van de huidige systeemkaart had;
-
10. Sluit de kaartsessie;
-
11. Vervang systeemkaart 1 fysiek voor systeemkaart 2.
-
12. Hierna dezelfde 7 stappen als bij 1e koppelproces.
13.
NB. Stap 1 kan, naar keuze van de fabrikant, geïnitieerd worden door een (beschermde)
menugestuurde optie of automatisch starten wanneer het systeemkaartslot geopend wordt
(maar voorafgaand aan het verbreken van de elektrische verbinding tussen boordcomputereenheid
en systeemkaart). Hierbij geniet de laatste methode de voorkeur omdat dit een effectieve
bescherming tegen misbruik van de systeemkaart biedt.
4 Beveiligde gegevensoverdracht
Overeenkomstig het gestelde in Referentie [14] hoeft de gegevensoverdracht tussen
boordcomputer en boordcomputerkaart niet te worden beveiligd. Volgens diezelfde referenties
dient de gegevensoverdracht tussen boordcomputerlogica en systeemkaart wel beveiligd
te zijn.
Deze beveiligde gegevensoverdracht wordt bereikt door het versleutelen van de gegevens
en het toevoegen van een cryptografische controlesom (MAC) aan de binnen het commando
of het antwoord gezonden gegevensobjecten (MAC-ENC mode).
De MAC van binnen een commando gezonden gegevens moet de commando-kop en alle gezonden
gegevensobjecten integreren (=> CLA = '0C', en alle gegevensobjecten moeten worden
ingekapseld met tags waarin b1 = 1).
De MAC moet door de ontvanger geverifieerd worden.
De bytes van de statusinformatie van het antwoord moeten altijd door een MAC worden
beveiligd, met uitzondering van de gevallen beschreven in paragraaf 4.2.
4.1 Structuur van commando’s en antwoorden bij beveiligde gegevensoverdracht
In de onderstaande figuren zijn schematisch een beveiligd commando en een beveiligd
antwoord weergegeven. Voor een verdere beschrijving hiervan wordt verwezen naar Referentie
[7], section 7.1.9 en section 7.1.10.
Figuur 1: Beveiligd commando
Figuur 2: Beveiligd antwoord
4.2 Fouten bij de beveiligde gegevensoverdracht
Wanneer de systeemkaart tijdens het verwerken van een commando een Secure Messaging-fout
ontdekt, dan moeten de statuswoorden zonder Secure Messaging teruggezonden worden.
Overeenkomstig ISO/IEC 7816-4 moeten de onderstaande statuswoorden gebruikt worden
om Secure Messaging-fouten aan te geven:
'69 82' Veiligheids toestand voldoet niet,
'69 85' Sessiesleutels zijn niet beschikbaar,
'69 87' Verwachte Secure Messaging-gegevensobjecten ontbreken,
'69 88' Secure Messaging-gegevensobjecten onjuist.
Wanneer de systeemkaart statuswoorden zonder Secure Messaging gegevensobjecten of
met een foutieve Secure Messaging gegevensobjecten terugzendt, moet de sessie door
de boordcomputerlogica afgebroken worden.
In het geval van een Secure Messaging-fout vervallen de sessiesleutels en SSC.
4.3 Sessiesleutels
Voor beveiligde gegevensoverdracht tussen de boordcomputerlogica en de systeemkaart
worden twee 16 bytes lange sessiesleutels gebruikt. De methode om deze sessiesleutels
SKENC en SKMAC te genereren wordt beschreven in Referentie [7], section 7.1.4.
4.4 Zendsequentieteller (SSC)
Tijdens de authenticatie procedure wordt er door zowel de systeemkaart als door de
boordcomputerlogica een 8 bytes random gegenereerd, RND.BCT resp. RND.ICC.
De vier minst significante bytes (LSB) van beiden worden gebruikt om de initiële waarde
voor de SSC te bepalen: SSC = RND.ICC (4 LSB) || RND.BCT (4 LSB).
De SSC wordt iedere keer voordat een MAC berekend wordt met 1 verhoogd, dus voor de
eerste MAC-berekening wordt de waarde SSC + 1 gebruikt.
4.5 Algoritmes
Het algoritme dat gebruikt wordt voor het berekenen van cryptogrammen wordt beschreven
in Referentie [7], section 7.1.9 en section 7.1.10.
Het algoritme dat gebruikt wordt voor het berekenen van cryptografische controlesommen
(MACs) wordt beschreven in Referentie [7], section 7.1.12.
De MAC is 8 bytes lang.
Iedere keer voordat er een MAC berekend wordt, wordt de zendsequentieteller (SSC)
met 1 verhoogd.
4.6 Authenticatiescenario Systeemkaart-Boordcomputer
Het authenticatiescenario tussen systeemkaart en boordcomputer wordt uitgevoerd zoals
beschreven is in Referentie [7], section 5.2.2.
Hierbij moet gelet worden op de volgende punten:
-
1. Er wordt gebruik gemaakt van symmetrische sleutels (zie hoofdstuk 3). De initiële
sleutels worden afgeleid van “transportkey1”:
-
• KS.KMAC bestaat uit de eerste 16 bytes van “transportkey1”,
-
• KS.KENC bestaat uit de laatste 16 bytes van “transportkey1”.
-
2. Na het uitlezen van EF.SN.ICC worden de laatste 8 bytes hiervan gebruikt voor SN.ICC.
-
3. Bij het berekenen van de MAC moet gebruik gemaakt worden van padding, zoals beschreven
is in Referentie [7], section 10.1.
Na een succesvolle uitvoering van de Mutual Authenticate kunnen de sessiesleutels
en de SSC berekend worden, zoals beschreven is in Referentie [7], section 7.1.4 en
7.1.5.
Er is dan een secure messaging kanaal tussen de systeemkaart en de boordcomputer (MAC-ENC
mode) en alle volgende commando’s en antwoorden moeten beveiligde gegevensoverdracht
gebruiken.
5 Gegevens op chauffeurskaart (EF.Driver_Activity_Data)
Op de chauffeurskaart worden de arbeids- rij- en rusttijden van een chauffeur opgeslagen
in de bestandsstructuur EF.Driver_Activity_Data. De grootte van die bestandsstructuur
wordt door de Personalisator op elke chauffeurskaart gemaximeerd (zie ook § 7.1, §
9.5 en Referentie [9] in hoofdstuk 10).
5.1 Opbouw van EF.Driver_Activity_Data
Figuur 3: EF.Driver_Activity_Data
Naam
|
Grootte (bytes)
|
PointerOldestDayRecord
|
2
|
PointerLastDayRecord
|
2
|
DriverCardNumber
|
16
|
DailyRecords
|
variabel
|
EF.Driver_Activity_Data is opgebouwd uit de volgende elementen:
-
• PointerOldestDayRecord: specificeert het begin van de geheugenplaats (aantal bytes vanaf het begin van EF.Driver_Activity_Data)
van de oudste volledige dagregistratie in DailyRecords.
De initiële waarde (na personalisatie) is ‘00 00’H (0) wat betekent dat er nog geen
DailyRecords bestaan.
Na toevoeging van het eerste DailyRecord moet de waarde ‘00 14’H (20) zijn.
De maximale waarde wordt door de lengte van EF.Driver_Activity_Data bepaald.
Gegevenssoort: INTEGER (unsigned)
-
• PointerLastDayRecord: specificeert het begin van de geheugenplaats (aantal bytes vanaf het begin van EF.Driver_Activity_Data)
van de meest recente dagregistratie in DailyRecords.
De initiële waarde (na personalisatie) is ‘00 00’H (0) wat betekent dat er nog geen
DailyRecords bestaan.
Na toevoeging van het eerste DailyRecord moet de waarde ‘00 14’H (20) zijn.
De maximale waarde wordt door de lengte van EF.Driver_Activity_Data bepaald.
Gegevenssoort: INTEGER (unsigned)
-
• DriverCardNumber: betreft een kopie van het chauffeurskaartnummer zoals dat ook aanwezig is in het
subjectSerialNumber-veld van het (“read-only”) authenticiteitcertificaat van de chauffeurskaart.
Na personalisatie zal dit element gevuld zijn met het chauffeurskaartnummer. Handhavingsapplicaties
downloaden in principe uitsluitend EF_Driver_Activity_Data van een chauffeurskaart.
Om die applicaties te informeren over het chauffeurskaartnummer, dient een boord¬computer
de correcte invulling van dit veld telkens na een succesvolle login te verifiëren
en zo nodig te herstellen (zie ook § 7.1).
Gegevenssoort: PrintableString (16 bytes)
-
• DailyRecords: de records waarin de gegevens van de activiteiten van de chauffeur opgeslagen worden
(zie Figuur 4). Voor iedere dag dat de kaart gebruikt wordt, wordt een DailyRecord
aangemaakt. De gegevens van minimaal de laatste 31 kalenderdagen worden op de kaart
bewaard.
5.1.1 DailyRecord
Een DailyRecord bevat alle gegevens van de activiteiten van de chauffeur op een bepaalde
dag. Na personaliseren bestaat er nog geen enkel DailyRecord.
Figuur 4: DailyRecord
Naam
|
Grootte (bytes)
|
DayRecordLength
|
2
|
PointerLastSessionRecord
|
2
|
PreviousDayRecordLength
|
2
|
DayRecordDate
|
4
|
SessionRecords
|
variabel
|
Een DailyRecord bestaat uit de volgende elementen:
-
• DayRecordLength: de lengte van het huidige DailyRecord.
De initiële waarde bij een nieuw DailyRecord (dat nog geen enkel SessionRecord omvat)
is ‘00 0A’H (10); de lengte van de kop van dit DailyRecord (zonder de SessionRecords).
Gegevenssoort: INTEGER (unsigned)
-
• PointerLastSessionRecord: specificeert het begin van de geheugenplaats (aantal bytes vanaf het begin van EF.Driver_Activity_Data)
van de meest recente sessie in dit DailyRecord.
De initiële waarde bij een nieuw DailyRecord (dat nog geen enkel SessionRecord bevat)
is ‘00 00’H (0).
Nadat aan dit DailyRecord het eerste SessionRecord is toegevoegd, moet de waarde 10
hoger zijn dan het startadres van dit DailyRecord; bij het eerste SessionRecord van
het eerstgeboekte DailyRecord zal dit 20 + 10 = 30 (’00 1E'H) zijn.
Uitgezonderd de waarde 0, zal de waarde van PointerLastSessionRecord nooit kleiner
zijn dan 30 (’00 1E’H).
Gegevenssoort: INTEGER (unsigned)
-
• DayPreviousRecordLength: de lengte van het vorige DailyRecord. Is er geen vorige DailyRecord omdat deze de
oudste is, dan is de waarde ‘00 00’H (0).
Uitgezonderd de waarde 0, zal de waarde van DayPreviousRecordLength nooit kleiner
zijn dan 10 (’00 0A’H).
Gegevenssoort: INTEGER (unsigned)
-
• DayRecordDate: de datum waarvoor dit DailyRecord is. Dit is in het formaat JJJJMMDD.
Gegevenssoort: BCD
-
• SessionRecords: een of meerdere SessionRecords (zie Figuur 5) voor deze dag.
5.1.2 SessionRecord
Een SessionRecord bevat de gegevens van de activiteiten van de chauffeur voor een
kaartsessie. Indien er meerdere kaartsessies op een dag zijn, zijn er voor die dag
ook meerdere SessionRecords. Na personaliseren bestaat er nog geen enkel SessionRecord.
Figuur 5: SessionRecord
Naam
|
|
Grootte (bytes)
|
PointerLastActivityRecord
|
2
|
299
|
PointerLastPWActivityRecord
|
2
|
SignatureDateTime
|
|
|
SignatureDate
|
8 nibbles
|
|
SignatureTime
|
6 nibbles
|
SessionSignature
|
256
|
SessionCreationDateTime
|
|
|
SessionCreationDate
|
8 nibbles
|
|
SessionCreationTime
|
6 nibbles
|
SystemCardNumber
|
|
|
Boordcomputernr
|
9 nibbles
|
|
Kaartvolgnummer
|
5 nibbles
|
Kenteken
|
6
|
CompanyCardNumber
|
|
|
KvKnummer
|
12 nibbles
|
|
Kaartvolgnummer
|
5 nibbles
|
Pnummer
|
7 nibbles
|
ActivityRecords
|
variabel
|
variabel
|
De lengte van een SessionRecord kop (zonder de ActivityRecords) is 299 bytes.
Een SessionRecord bestaat uit de volgende elementen:
-
• PointerLastActivityRecord: specificeert het begin van de geheugenplaats (aantal bytes vanaf het begin van EF.Driver_Activity_Data)
van de het laatste ActivityRecord in deze SessionRecords.
De initiële waarde bij een nieuw SessionRecord (nog zonder ActivityRecords) is ‘00
00’H (0).
Uitgezonderd de waarde 0, zal de waarde van PointerLastActivityRecord nooit kleiner
zijn dan 20+10+299 = 329 (’01 49’H).
Gegevenssoort: INTEGER (unsigned)
-
• PointerLastPWActivityRecord: specificeert het begin van de geheugenplaats (aantal bytes vanaf het begin van EF.Driver_Activity_Data)
van het laatste ActivityRecord met een activiteit “Start pauze” of “Start werk”.
De initiële waarde bij een nieuw SessionRecord (nog zonder ActivityRecords) is ‘00
00’H (0).
Zo lang er nog geen “Start pauze” of “Start werk” ActivityRecord in dit SessionRecord
aanwezig is, blijft de waarde gelijk aan 0.
Uitgezonderd de waarde 0, zal de waarde van PointerLastPWActivityRecord nooit kleiner
zijn dan 20+10+299 = 329 (’01 49’H).
Gegevenssoort: INTEGER (unsigned)
-
• SignatureDateTime: het tijdstip direct voorafgaand aan het berekenen van de SessionSignature. Voor verdere
informatie over de handtekening zetten, zie 5.4.
Dit veld bestaat uit twee delen:
-
– SignatureDate:
formaat JJJJMMDD,
initiële waarde bij een nieuw SessionRecord: ‘00000000’H,
gegevenssoort BCD.
-
– SignatureTime:
formaat hhmmss (24-uurs klok)
initiële waarde bij een nieuw SessionRecord: ‘000000’H,
gegevenssoort BCD.
-
• SessionSignature: de door de boordcomputer gezette handtekening over de gegevens zoals gespecificeerd
in § 5.4.
De initiële waarde bij een nieuw SessionRecord is “ongedefinieerd”.
Gegevenssoort: OCTET_STRING(SIZE(256))
-
• SessionCreationDateTime: het tijdstip waarop dit SessionRecord werd gecreëerd.
Dit veld bestaat uit twee delen:
-
– SignatureDate:
formaat JJJJMMDD,
initiële waarde bij een nieuw SessionRecord: de datum waarop dit SessionRecord werd
gecreëerd,
gegevenssoort BCD.
-
– SignatureTime:
formaat hhmmss
initiële waarde bij een nieuw SessionRecord: het tijdstip waarop dit SessionRecord
werd gecreëerd,
gegevenssoort BCD.
-
• SystemCardNumber: bestaat uit 2 delen:
-
– Boordcomputernr: het nummer van de systeemkaart zoals op het moment van creëren van dit SessionRecord
bekend in de boordcomputer (9 digits BCD)
-
– Kaartvolgnummer: het volgnummer van de systeemkaart zoals op het moment van creëren van dit SessionRecord
bekend in de boordcomputer (5 digits BCD)
-
• Kenteken: het kenteken van het voertuig zoals op het moment van creëren van dit SessionRecord
bekend in de boordcomputer (6 bytes ASCII)
-
• CompanyCardNumber: bestaat uit 2 delen:
-
– KvKnummer: Kamer van Koophandel nummer van de ondernemer zoals op het moment van creëren van
dit SessionRecord bekend in de boordcomputer (12 digits BCD)
-
– Kaartvolgnummer: volgnummer van de ondernemerskaart zoals op het moment van creëren van dit SessionRecord
bekend in de boordcomputer (5 digits BCD)
-
• Pnummer: personenvervoernummer van de ondernemer zoals op het moment van creëren van dit SessionRecord
bekend in de boordcomputer (7 digits BCD)
-
• ActivityRecords: een of meerdere ActivityRecords (zie Figuur 6).
5.1.3 ActivityRecord
Er wordt een aantal types ActivityRecords onderscheiden aan de hand van de activiteit.
Figuur 6: ActivityRecord
Activiteit
Type
|
Kop
|
Gegevens
|
Opmerking
|
activiteit
|
handm.
|
rijden
|
tijdstip
|
Veld 1
|
Veld 2
|
Login
|
‘00001’B
|
‘0’B
|
‘0’/’1’B
|
hh:mm:ss
|
geen
|
geen
|
Het tijdstip waarop de BCT het inloggen constateerde.
|
‘1’B
|
Een login kan geen handmatig ingesteld tijdstip hebben. Deze combinatie komt dus niet
voor.
|
(Start) pauze
|
‘00010’B
|
‘0’B
|
‘0’/’1’B
|
hh:mm:ss
|
geen
|
geen
|
Het tijdstip waarop de BCT de start van de pauze constateerde. Recordvorm indien dit
record niet het laatste ActivityRecord van de sessie is.
|
aantal secondes pauze
|
Het tijdstip waarop de BCT de start van de pauze constateerde. Recordvorm indien dit
record het laatste ActivityRecord van de sessie is.
|
‘1’B
|
geen
|
Het handmatig opgegeven tijdstip dat de pauze aanving. Recordvorm indien dit record
niet het laatste ActivityRecord van de sessie is.
|
aantal secondes pauze
|
Het handmatig opgegeven tijdstip dat de pauze aanving. Recordvorm indien dit record
het laatste ActivityRecord van de sessie is.
|
(Start) werk
|
‘00011’B
|
‘0’B
|
‘0’/’1’B
|
hh:mm:ss
|
aantal secondes rijden
|
geen
|
Het tijdstip waarop de BCT de start van werk constateerde. Recordvorm indien dit record
niet het laatste ActivityRecord van de sessie is.
|
aantal secondes werk
|
Het tijdstip waarop de BCT de start van werk constateerde. Recordvorm indien dit record
het laatste ActivityRecord van de sessie is.
|
‘1’B
|
geen
|
Het handmatig opgegeven tijdstip dat werk aanving. Recordvorm indien dit record niet
het laatste ActivityRecord van de sessie is.
|
aantal secondes werk
|
Het handmatig opgegeven tijdstip dat werk aanving. Recordvorm indien dit record het
laatste ActivityRecord van de sessie is.
|
Afsluiting
|
‘00100’B
|
‘0’B
|
‘0’/’1’B
|
hh:mm:ss
|
geen
|
geen
|
reguliere Afsluiting: Het tijdstip waarop de BCT het afsluiten en aftekenen van de
sessie constateerde.
|
Nieuwe eindtijd
|
‘1’B
|
handmatige Afsluting / Nieuwe eindtijd: Het handmatig opgegeven tijdstip dat een sessie
(“werkdag”) stopte.
|
Dagovergang
|
‘00101’B
|
‘0’B
|
‘0’/’1’B
|
23:59:59
|
geen
|
geen
|
Middernacht automatisch: Een dagovergang geconstateerd tijdens normale modus.
|
‘1’B
|
Middernacht handmatig: Een dagovergang geconstateerd tijdens handmatige invoer.
|
Een ActivityRecord heeft een kop van 24 bits (3 bytes) groot die de volgende elementen
bevat:
-
• activiteit: geeft het type activiteit aan (5 bits).
-
• handmatig: geeft aan of het tijdstip van de activiteit handmatig of automatisch is geboekt (1
bit).
-
• rijden: geeft aan of de activiteit tijdens het rijden of stilstaan is geboekt (1 bit).
-
• tijdstip: geeft het starttijdstip van de activiteit aan in het formaat hhmmss. Dit formaat
is als volgt opgebouwd:
-
– hh: 5 bits
-
– mm: 6 bits
-
– ss: 6 bits
Noot 1: Bij de activiteit “Start werk” wordt een Rijtijdveld aan de kop toegevoegd. Dit
werkt als volgt:
-
• gedurende het werk wordt volautomatisch bijgehouden hoeveel secondes er gereden worden
(3 bytes INTEGER (unsigned)). Wanneer (na een periode van rijden gedurende werktijd)
het aantal secondes gewijzigd is, wordt hetzelfde record opnieuw geschreven, waarbij
de kop gelijk blijft en het aantal secondes aangepast. Dit bijwerken van rijtijd moet
ook plaatsvinden indien de laatste keer bijwerken (meer dan) vijf minuten geleden
was. Er wordt dus geen nieuw record aangemaakt.
Noot 2: Bij zowel de activiteit “Start werk” als “Start pauze” wordt een Tijdsduurveld aan
de kop toegevoegd. Dit werkt als volgt:
-
• gedurende het werk / de pauze wordt volautomatisch bijgehouden hoeveel secondes er
verstreken zijn sinds de activiteit startte (3 bytes INTEGER (unsigned)). Telkens
wanneer de auto stopt en telkens vijf minuten na de vorige vastlegging van de tijdsduur
worden de laatste 3 bytes van hetzelfde record opnieuw geschreven, waarbij de voorgaande
bytes gelijk blijven en het aantal secondes aangepast. Er wordt dus geen nieuw record
aangemaakt.
-
• Het eerstvolgende toe te voegen ActivityRecord overschrijft deze laatste 3 bytes (de
daadwerkelijke tijdsduur van de dan voorafgaande “Start werk” / “Start pauze” activiteit
wordt met de starttijd van de nieuwe activiteit definitief vastgelegd).
Noot 3: Bij iedere toevoeging van een ActivityRecord bestaat de mogelijkheid dat er een
nieuw DailyRecord en/of nieuw SessionRecord aangemaakt moet worden. Zie hiervoor ook
§ 7.5 en § 0.
5.1.4 Overzicht
De gegevens worden per dag vastgelegd en moeten minimaal 31 kalenderdagen beschikbaar
blijven op de kaart. Voor iedere dag dat er gegevens op de chauffeurskaart vastgelegd
moeten worden, wordt er een DailyRecord aangemaakt.
Naast de arbeids- rij- en rusttijden zelf moet ook vastgelegd worden voor welke ondernemer
en in welk voertuig deze tijden gemaakt zijn en welke boordcomputer er gebruikt is.
Dit wordt per sessie vastgelegd in het SessionRecord.
In Figuur 7 staat een overzicht van EF.Driver_Activity_Data en hoe de verschillende
records hier onder vallen.
Figuur 7: Overzicht EF.Driver_Activity_Data
5.2 Schrijven naar EF.Driver_Activity_Data
Activiteiten van de chauffeur worden opgeslagen in ActivityRecords. In Figuur 6 worden
de verschillende typen van ActivityRecords genoemd. Het verloop van een sessie staat
in hoofdstuk 7 beschreven. Het exacte verloop van het toevoegen van een ActivityRecord
staat in § 0.
5.2.1 Toevoegen van de eerste activiteit binnen een SessionRecord
Elk van de navolgende subparagrafen (5.2.2 t/m 5.2.7) gaat er van uit dat de toe te
voegen activiteit niet de eerste activiteit binnen het betreffende SessionRecord is. Indien dat echter wél het geval
is, moeten de instructies voor het overschrijven van de PointerLastActivityRecord
en de DayRecordLength velden telkens worden vervangen door de volgende:
-
1. In het SessionRecord dient PointerLastActivityRecord gezet te worden op PointerLastSessionRecord
+ 299;
-
2. In het huidige DailyRecord dient de DayRecordLength verhoogd te worden met de (ongecorrigeerde)
lengte van het toe te voegen ActivityRecord:
-
– Voor een “Start werk”, verhogen met 9;
-
– Voor een “Start pauze”, verhogen met 6;
-
– Voor elke andere activiteit, verhogen met 3.
5.2.2 Toevoegen “Login” activiteit
De “Login” activiteit geeft de werkelijke tijd aan dat de chauffeurskaart in de boordcomputer
ingebracht is en de authenticatie plaatsgevonden heeft. Dit is het login-tijdstip.
Dit staat beschreven in 7.1.
Bij een “Login” wordt er een nieuw ActivityRecord aangemaakt.
PointerLastSessionRecord geeft het begin van het huidige SessionRecord aan.
In dit SessionRecord wordt
-
1. PointerLastActivityRecord verhoogd met de lengte van de laatste ActivityRecord (verminderd
met 3 indien het huidige ActivityRecord een “Start werk” of “Start pauze” betreft).
-
2. het ActivityRecord “Login” toegevoegd op de plaats die aangegeven wordt door de verhoogde
PointerLastActivityRecord. Dit record bestaat uit 3 bytes (alleen een kop). De handmatig
bit staat altijd op ‘0’B.
-
3. SessionSignature = de tussentijdse handtekening (zie 5.4).
In het huidige DailyRecord wordt
-
1. DayRecordLength = oude waarde DayRecordLength + 3 (verminderd met 3 indien het (inmiddels)
vorige ActivityRecord een “Start werk” of “Start pauze” betreft).
-
2. Direct na het toevoegen van de “Login” activiteit wordt een (automatisch) geklokte
“Start werk” activiteit toegevoegd.
5.2.3 Toevoegen “Start pauze” activiteit
Bij een “Start pauze” wordt er een nieuw ActivityRecord aangemaakt.
PointerLastSessionRecord geeft het begin van het huidige SessionRecord aan.
In dit SessionRecord wordt
-
1. PointerLastActivityRecord verhoogd met de lengte van de laatste ActivityRecord (verminderd
met 3 indien het huidige ActivityRecord een “Start werk” of “Start pauze” betreft).
-
2. PointerLastPWActivityRecord wordt gelijkgesteld aan de zojuist verhoogde PointerLastActivityRecord.
-
3. het ActivityRecord “Start pauze” toegevoegd op de plaats die aangegeven wordt door
de verhoogde PointerLastActivityRecord. Dit record bestaat uit 6 bytes (een kop +
een tijdsduurteller), waarbij de tijdsduurteller initieel wordt gevuld met ‘00 00
00’H en daarna periodiek wordt bijgewerkt volgens Noot 2 in § 5.1.3.
-
4. SessionSignature = de tussentijdse handtekening (zie 5.4).
In het huidige DailyRecord wordt
5.2.4 Toevoegen “Start werk” activiteit
Bij een “Start werk” wordt er een nieuw ActivityRecord aangemaakt.
“Start werk” wijkt af van de andere activiteiten. Hierin wordt bijgehouden hoeveel
secondes het voertuig gereden heeft gedurende deze activiteit. Zolang de chauffeur
nog aan het werk is en het voertuig afwisselend rijdt en stilstaat, wordt iedere keer
zodra het voertuig stopt het aantal secondes dat er gereden is bijgewerkt. Er wordt
dus niet iedere keer een nieuw ActivityRecord aangemaakt.
PointerLastSessionRecord geeft het begin van het huidige SessionRecord aan.
In dit SessionRecord wordt
-
1. PointerLastActivityRecord verhoogd met de lengte van de laatste ActivityRecord (verminderd
met 3 indien het huidige ActivityRecord een “Start werk” of “Start pauze” betreft).
-
2. PointerLastPWActivityRecord wordt gelijkgesteld aan de zojuist verhoogde PointerLastActivityRecord.
-
3. het ActivityRecord “Start werk” toegevoegd op de plaats die aangegeven wordt door
de verhoogde PointerLastActivityRecord.
Dit record bestaat uit een kop van 3 bytes gevolgd door 2 x 3 bytes data.
De data geeft het aantal secondes aan dat er met het voertuig gereden is en het aantal
secondes dat deze activiteit in totaal duurde. Bij het begin van “Start werk” zijn
beiden ‘00 00 00’H. Deze waardes worden conform Noten 1 en 2 in § 5.1.3 tussentijds
bijgewerkt tot er een andere activiteit plaats vindt.
-
4. SessionSignature = de tussentijdse handtekening (zie 5.4).
In het huidige DailyRecord wordt
5.2.5 Toevoegen “Afsluiting” activiteit
Bij een normale afsluiting door de chauffeur, “Afsluiting”, wordt er een nieuw ActivityRecord
aangemaakt.
PointerLastSessionRecord geeft het begin van het huidige SessionRecord aan.
In dit SessionRecord wordt
-
1. PointerLastActivityRecord verhoogd met de lengte van de laatste ActivityRecord (verminderd
met 3 indien het huidige ActivityRecord een “Start werk” of “Start pauze” betreft).
-
2. het ActivityRecord “Afsluiting” toegevoegd op de plaats die aangegeven wordt door
de verhoogde PointerLastActivityRecord. Dit record bestaat uit 3 bytes (alleen een
kop).
-
3. SessionSignature = de definitieve handtekening (zie 5.4).
In het huidige DailyRecord wordt
5.2.6 Toevoegen “Nieuwe eindtijd” (=handmatige Afsluiting) activiteit
Wanneer er bij een sessie nog activiteiten toegevoegd worden, kan het voorkomen dat
de eindtijd aangepast moet worden. Dit wordt gedaan met een “Nieuwe eindtijd” activiteit.
Hierbij wordt er een nieuwe ActivityRecord aangemaakt.
PointerLastSessionRecord geeft het begin van het huidige SessionRecord aan.
In dit SessionRecord wordt
-
1. PointerLastActivityRecord verhoogd met de lengte van de laatste ActivityRecord (verminderd
met 3 indien het huidige ActivityRecord een “Start werk” of “Start pauze” betreft).
-
2. het ActivityRecord “Nieuwe eindtijd” toegevoegd op de plaats die aangegeven wordt
door de verhoogde PointerLastActivityRecord. De handmatig-bit staat hier altijd op
‘1’B. Dit record bestaat uit 3 bytes (alleen een kop).
-
3. SessionSignature = de definitieve handtekening (zie 5.4).
In het huidige DailyRecord wordt
5.2.7 Toevoegen “Dagovergang (handmatig/automatisch)” activiteit
Wanneer er een sessie actief is, de laatstgeboekte activiteit een “Start werk” of
“Start pauze” is en:
-
• (situatie 1) het betreft een automatische activiteit en de BCT-klok geeft 0:00:00u
aan OF;
-
• (situatie 2) er wordt een handmatige activiteit toegevoegd met een tijdstip op of
na 0:00:00u van de dag volgend op het huidige DailyRecord,
dan moet:
-
• de rijtijdteller worden bijgewerkt indien de laatstgeboekte activiteit een “Start
werk” betreft,
-
• de huidige sessie gestopt worden door toevoeging van een “Dagovergang” activiteit
met:
-
○ het tijdstip 23:59:59u
-
○ het handmatig bit op ‘0’B indien het situatie 1 betreft OF
-
○ het handmatig bit op ‘1’B indien het situatie 2 betreft,
-
• de huidige sessie worden “afgetekend” door de boordcomputer
-
• EN een nieuw DailyRecord voor de volgende kalenderdag worden aangemaakt met een nieuw
SessionRecord en een eerste ActivityRecord met
-
○ hetzelfde ActivityType als de laatstgeboekte activiteit EN
-
○ het tijdstip op 00:00:00u
-
○ het handmatig bit op ‘0’B indien het situatie 1 betreft OF
-
○ het handmatig bit op ‘1’B indien het situatie 2 betreft
Het toevoegen van het nieuwe DailyRecord met een nieuw SessionRecord en een eerste
“Start pauze” of “Start werk” activiteit wordt beschreven in respectievelijk § 8.11,
§ 8.10, § 5.2.1 en § 5.2.3 / 5.2.4. Hier wordt uitsluitend toevoeging van de “Dagovergang”
aan het huidige SessionRecord beschreven.
PointerLastSessionRecord geeft het begin van het huidige SessionRecord aan.
In dit SessionRecord wordt
-
1. PointerLastActivityRecord verhoogd met de lengte van het laatste ActivityRecord verminderd
met 3 omdat het huidige ActivityRecord een “Start werk” of “Start pauze” betreft.
-
2. het ActivityRecord “Dagovergang” toegevoegd op de plaats die aangegeven wordt door
de verhoogde PointerLastActivityRecord. De handmatig-bit en het tijdstip worden gevuld
zoals hierboven beschreven. Dit record bestaat uit 3 bytes (alleen een kop).
-
3. SessionSignature = de definitieve handtekening (zie 5.4).
In het huidige DailyRecord blijft DayRecordLength gelijk, omdat het (inmiddels) vorige
ActivityRecord een “Start werk” of “Start pauze” betreft.
NB. Indien de invoeging van de dagovergang en de nieuwe kalenderdag het gevolg is van
het toevoegen van een handmatige activiteit, dan kán het zo zijn dat er meer dan één
kalenderdag tussen de huidige activiteit en de toe te voegen activiteit bestaat. Indien
dat zo blijkt te zijn dan dienen de instructies in deze paragraaf te worden herhaald
voor iedere betreffende (kalender)dagovergang.
5.3 Algemene opmerkingen bij lezen en schrijven naar EF.Driver_Activity_Data
Bij lees- en schrijfacties (Read Binary en Update Binary) dient met de volgende punten
rekening te worden gehouden:
-
1. EF.Driver_Activity_Data kan records bevatten vanaf positie ‘00 14’H tot aan het eind
(Length_EF.Driver_Activity_Data). De eerste 20 bytes van EF.Driver_Activity_Data worden
in beslag genomen worden door twee 16-bits pointers en een 16-bytes veld voor het
chauffeurskaartnummer.
-
2. Wanneer er voor een toevoeging niet meer voldoende ruimte aan het eind van EF.Driver_Activity_Data
is, wordt eerst de resterende ruimte benut en daarna gaat het toevoegen verder vanaf
het begin van de EF.Driver_Activity_Data. Dit is dan vanaf positie ‘00 14’H.
-
3. De lengte van een te lezen of te schrijven record kan nooit langer zijn dan Length_EF.Driver_Activity_Data
– 20 (‘14’H).
-
4. De offset bij een Read Binary of Update Binary (Pointer_1) moet kleiner zijn dan Length_EF.Driver_Activity_Data.
Indien dit niet het geval is, moet de offset vervangen worden door de Pointer_1 –
Length_EF.Driver_Activity_Data + 20 (‘14’H).
-
5. Indien bij een Read Binary de offset (Pointer_1) + het verwachte aantal bytes in de
response (Length_1) groter is dan Length_EF.Driver_Activity_Data, dan moet de Read
Binary in tweeën gesplitst worden: 1 Read Binary tot aan het eind van EF.Driver_Activity_Data
en 1 Read Binary vanaf positie ‘00 14’H tot aan Pointer_1 + Length_1 – Length_EF.Driver_Activity_Data
+ 20 (‘14’H).
-
6. Indien bij een Update Binary de offset (Pointer_1) + het aantal weg te schrijven bytes
(Length_1) groter is dan Length_EF.Driver_Activity_Data, dan moet de Update Binary
in tweeën gesplitst worden: 1 Update Binary tot aan het eind van EF.Driver_Activity_Data
en 1 Update Binary vanaf positie ‘00 14’H tot aan Pointer_1 + Length_1 – Length_EF.Driver_Activity_Data
+ 20 (‘14’H).
-
7. Bij een Update Binary bestaat de mogelijkheid dat de oudste dagregistratie overschreven
wordt. Dit is het geval wanneer data voorbij PointerOldestDayRecord geschreven zou
worden. Hier moet dus bij iedere schrijfactie op getest worden.
Om te voorkomen dat voorbij PointerOldestDayRecord geschreven wordt, moet het oudste
DailyRecord weggehaald worden.
Dit wordt op de volgende manier gedaan:
-
1. PointerOldestDayRecord wijst naar het oudste DailyRecord. In dit DailyRecord staat
de lengte van dit record (DayRecordLength). Uit deze pointer en lengte kan de positie
van het volgende DailyRecord bepaald worden.
-
2. In dit volgende DailyRecord wordt de PreviousDayRecordLength op ‘00 00’H gezet.
-
3. PointerOldestDayRecord wordt op de positie van dit volgende DailyRecord gezet.
-
4. Wanneer er nog niet genoeg ruimte is voor de toevoeging, moeten de bovenstaande punten
herhaald worden.
5.4 Digitale handtekening
Om de integriteit van gegevens te waarborgen, worden digitale handtekeningen gebruikt.
Er worden twee soorten digitale handtekeningen onderscheiden:
-
1. De handtekening die door de chauffeurskaart over de gegevens van de kaartsessie gezet
wordt in de boordcomputer.
-
2. De handtekening die door de boordcomputer gezet wordt over de kaartsessie gegevens
op de chauffeurskaart.
In dit document gaat het om de tweede soort, waarbij de handtekeningen op de chauffeurskaart
worden opgeslagen. De handtekeningen die op de boordcomputer opgeslagen worden, worden
hier verder buiten beschouwing gelaten.
De digitale handtekening wordt berekend over het DriverCardNumber, de DayRecordDate
en een deel van het SessionRecord (zie 5.1.2) en wordt opgeslagen in het veld SessionSignature
in het betreffende SessionRecord. Daarbij worden de mogelijke vorige SignatureDateTime
en handtekening in dit SessionRecord overschreven. Het te ondertekenen DriverCardNumber
is een 16-karakter PrintableString zoals die aansluitend op het inloggen van de chauffeur
door de boordcomputer uit de eerste 16 bytes van het subject.serialNumber van het
authenticiteitcertificaat van de chauffeurskaart is gelezen. De kopie van het DriverCardNumber die is opgeslagen in bytes ‘00 04’H t/m ‘00 13’H van EF.Driver_Activity_Data
mag NIET worden gebruikt bij de berekening van de handtekening.
Om het verlies van gegevens zoveel mogelijk te voorkomen wanneer de chauffeurskaart
voortijdig uitgenomen wordt, wordt er na iedere toevoeging van een ActivityRecord (zie 5.1.3) een digitale handtekening berekend en opgeslagen.
Bij de berekening van de handtekening wordt van het laatst toegevoegde ActivityRecord
alleen de kop van 3 bytes meegenomen. De reden hiervoor is gelegen in de activiteiten
“Start werk” en “Start pauze”. De 6 respectievelijk 3 gegevensbytes die bij deze activiteitsoorten
horen worden te vaak bijgewerkt (voor het telkens herberekenen van handtekeningen)
en de laatste 3 gegevensbytes worden sowieso overschreven door de vervolgactiviteit.
De rijtijdteller van een “Start werk” activiteit wordt hiermee pas meegenomen in de
handtekening nadat een vervolgactiviteit wordt gestart.
Om een handtekening te kunnen berekenen, moet eerst de SignatureDateTime worden bijgewerkt
met de huidige datum en tijd volgens BCT-klok, dan moet een hashcode berekend worden.
Deze hashcode wordt dan gebruikt als input voor het berekenen van de handtekening.
De gegevens voor het berekenen van de hashcode moeten in de hieronder genoemde volgorde
staan:
1. DriverCardNumber
|
16 bytes ASCII
|
2. DayRecordDate
|
4 bytes BCD
|
3. SessionCreationDateTime
|
4 + 3 bytes BCD
|
4. SystemCardNumber
|
4½ + 2½ bytes BCD
|
5. Kenteken
|
6 bytes ASCII
|
6. CompanyCardNumber
|
6 + 2½ bytes BCD
|
7. Pnummer
|
3½ bytes BCD
|
8. ActivityRecords*)
|
variable
|
9. PointerLastActivityRecord
|
2 bytes INTEGER
|
10. PointerLastPWActivityRecord
|
2 bytes INTEGER
|
11. SignatureDateTime
|
4 + 3 bytes BCD
|
*) Van het laatste ActivityRecord wordt alleen de kop (3 bytes) meegenomen.
De berekening van de handtekening wordt volledig door de boordcomputer uitgevoerd
en gebeurt als volgt:
-
• Over de gegevens, als hierboven vermeld, wordt met behulp van de private sleutel voor
authenticiteit van de boordcomputer een handtekening gegenereerd volgens PKCS#1 v1.5
met SHA-256.
-
• De handtekening wordt opgeslagen in het SessionSignature veld van het huidige SessionRecord.
NB. Telkens bij het berekenen van de SHA-256 hash dient de boordcomputerlogica het eerste
en grootste deel van de berekening (de hash over de data vanaf het DriverCardNumber
t/m de ActivityRecords) uit te voeren, waarna het laatste deel van de hashberekening
(over de PointerLastActivitityRecord t/m de SignatureDateTime) door de systeemkaart
dient te worden berekend. Ook de PKCS#1 v1.5 handtekening dient door de systeemkaart
te worden berekend.
NB2. Met behulp van het certificaat behorende bij de private sleutel voor authenticiteit
van de boordcomputer (het boordcomputercertificaat) kan gecontroleerd worden of de
gegevens in een SessionRecord authentiek zijn. Behalve het boordcomputercertificaat
en het SessionRecord zelf, zijn voor zo’n validatie het DriverCardNumber en de DayRecordDate
benodigd. Die twee gegevens staan elders in EF.Driver_Activity_Data opgeslagen. Welk
boordcomputercertificaat voor een bepaalde SessionRecord-validatie moet worden gebruikt,
kan worden achterhaald door het SystemCardNumber in de SessionRecord-kop uit te lezen.
NB3. Indien bij het valideren van de SessionRecord-data de betreffende EF.BCT_Certificates
aanwezig is en het betreffende boordcomputercertificaat is daarin ook (nog) aanwezig,
kan de validatie direct worden uitgevoerd. Indien het betreffende boordcomputercertificaat
niet (meer) in EF.BCT_Certificates is opgeslagen of indien EF.BCT_Certificates niet
voorhanden is, dan kan het betreffende boordcomputercertificaat via de Kaartuitgever
worden verkregen.
6 Gegevens op chauffeurskaart (EF.BCT_Certificates)
De certificaten van de boordcomputer die gebruikt zijn bij het berekenen van de handtekeningen
op de chauffeurskaart worden opgeslagen in EF.BCT_Certificates. Hierin is plaats voor
de systeemkaartcertificaten van de 3 verschillende boordcomputers waarin de chauffeurskaart
het laatst is gebruikt.
Een boordcomputer dient een bestuurder (tijdig) te waarschuwen dat de momenteel op
de chauffeurskaart opgeslagen arbeids-, rij- en rusttijden moeten worden geëxporteerd
(ook wel “gedownload”). Aan EF.BCT_Certificates is daarom een extra gegevensstructuur
toegevoegd die vermeldt wanneer en naar welke boordcomputer welke dailyrecords zijn
geëxporteerd.
6.1 Opbouw van EF.BCT_Certificates
Figuur 8: EF.BCT_Certificates
Naam
|
Grootte (bytes)
|
Rank
|
3
|
Index
|
3 x 7
|
Certificates
|
3 x 2100
|
IndexOldestDL
|
1
|
DownloadLogs
|
8 x 33
|
FILLER
|
11
|
Totaal
|
6600
|
EF.BCT_Certificates is opgebouwd uit de volgende elementen:
-
• Rank: Hierin wordt aangegeven in welke volgorde (van meest naar minst recent) de navolgende
certificaten zijn gebruikt. Iedere byte correspondeert met een van de certificaten
in Certificates (byte 1 <-> certificaat 1 en dergelijke). De (initiële) waarde 0 geeft
aan dat er geen certificaat op die plaats staat en de waarde 1 – 3 hoe recent het
bijbehorende certificaat is (waarbij de waarde 1 het meest recent is).
Gegevenssoort: INTEGER (unsigned)
-
• Index: Een index bestaat uit een systeemkaartnummer (het boordcomputernummer (BCD-9) gevolgd
door het kaartvolgnummer (BCD-5)), voor ieder opgeslagen certificaat (3x). Iedere
index correspondeert met een van de certificaten in Certificates (index 1 <-> certificaat
1 en verder).
De initiële waarde voor iedere index is ‘00 00 00 00 00 00 00’.
Gegevenssoort: BCD
-
• Certificates: Hierin worden de 3 meest recente certificaten van boordcomputers opgeslagen. In Rank
is te vinden hoe recent een bepaald certificaat is en in Index staat het bijbehorende
boordcomputernummer en kaartvolgnummer. Initieel zijn de certificaten gevuld met nullen
(‘00’).
Indien een certificaat korter is dan 2100 bytes, wordt de resterende ruimte opgevuld
met ‘00’-bytes.
Gegevenssoort: OCTET STRING
NB. Een certificaat is een ASN.1 DER gecodeerde TLV-gegevensstructuur die voor BCT certificaten
begint met een 8-bits Tag (30h), een byte dat aangeeft dat er 2 lengte bytes volgen
(82h) en een 16-bits Length en gevolgd wordt door een Value van zoveel bytes als aangegeven
door Length.
-
• IndexOldestDL: Hierin wordt aangegeven welke van de navolgende (8) DownloadLog items het oudste
is en dus als eerste overschreven zal worden. Initieel zal dit veld gevuld worden
met de waarde 0 (‘00’H) en de maximale waarde zal 7 (‘07’H) zijn (0 wijst naar DownloadLog_1
en 7 wijst naar DownloadLog_8). Na het overschrijven van DownloadLog_8 zal IndexOldestDL
gereset moeten worden naar 0.
De initiele vulling zal volledig uit nullen (‘00’H) bestaan.
Gegevenssoort: OCTET STRING
-
• DownloadLogs: Hierin wordt informatie bijgehouden van de 8 meest recente keren dat de bestuurder
de inhoud van EF.Driver_Activity_Data naar een boord¬computer heeft gedownload. Elk
van deze log items (DownloadLog_1 t/m DownloadLog_8) bestaat uit 33 bytes.
Gegevenssoort: INTEGER (unsigned)
In Figuur 9 wordt een overzicht van EF.BCT_Certificates gegeven met de initiële waardes.
Figuur 9: Initiële waardes EF.BCT_Certificates
Positie
|
Gegevens
|
Bytes
|
Benaming
|
00 00
|
00
|
1
|
Rank_1
|
Rank
|
00 01
|
00
|
1
|
Rank_2
|
00 02
|
00
|
1
|
Rank_3
|
00 03
|
00 – 00
|
7
|
Index_1
|
Index
|
00 0A
|
00 – 00
|
7
|
Index_2
|
00 11
|
00 – 00
|
7
|
Index_3
|
00 18
|
00 – 00
|
2100
|
Certificate_1
|
Certificates
|
08 4C
|
00 – 00
|
2100
|
Certificate_2
|
10 80
|
00 – 00
|
2100
|
Certificate_3
|
18 B4
|
00
|
1
|
IndexOldestDL
|
IndexOldestDL
|
18 B5
|
00 – 00
|
33
|
DownloadLog_1
|
DownloadLogs
|
18 D6
|
00 – 00
|
33
|
DownloadLog_2
|
18 F7
|
00 – 00
|
33
|
DownloadLog_3
|
19 18
|
00 – 00
|
33
|
DownloadLog_4
|
19 39
|
00 – 00
|
33
|
DownloadLog_5
|
19 5A
|
00 – 00
|
33
|
DownloadLog_6
|
19 7B
|
00 – 00
|
33
|
DownloadLog_7
|
19 9C
|
00 – 00
|
33
|
DownloadLog_8
|
19 BD
|
00 – 00
|
11
|
FILLER
|
FILLER
|
19 C8
|
end of file (6600 bytes totaal)
|
Noot: Positie en gegevens zijn in hexadecimale notatie weergegeven
Noot: CertLength = 2100 (‘08 34’H)
|
De opbouw van een DownloadLog_X gegevensstructuur is opgenomen in de onderstaande
figuur.
Naam
|
Grootte
|
DownloadLog_X
|
|
|
|
33 bytes
|
|
CarAndCompany
|
|
|
25 bytes
|
|
|
SystemCardNumber
|
|
7 bytes
|
|
|
|
Boordcomputernr
|
9 nibbles
|
|
|
|
|
Kaartvolgnummer
|
5 nibbles
|
|
|
|
|
Kenteken
|
|
6 bytes
|
|
|
|
CompanyCardNumber
|
|
17 nibbles
|
|
|
|
KvKnummer
|
12 nibbles
|
|
|
|
|
Kaartvolgnummer
|
5 nibbles
|
|
|
|
|
Pnummer
|
|
7 nibbles
|
|
|
|
DownloadPeriod
|
|
|
8 bytes
|
|
|
OldestDate
|
|
8 nibbles
|
|
|
|
DownloadDate
|
|
8 nibbles
|
|
|
7 Kaartsessie
Een kaartsessie is de periode tussen het ingeven van de chauffeurskaart en het wegschrijven
van de afsluitende gegevens op de chauffeurskaart door de boordcomputer. In Figuur
10 is het overzicht van een kaartsessie weergegeven.
De wijzigingen in de arbeids- rij- en rusttijden worden tijdens een kaartsessie op
de chauffeurskaart opgeslagen in ActivityRecords (zie Figuur 6 en paragrafen 5.2 en
0). Hieronder wordt aangegeven welke informatie op welk ogenblik opgeslagen wordt.
Voor voorbeelden van kaartsessies wordt verwezen naar Bijlage A.
Figuur 10: Overzicht kaartsessie
7.1 Begin van een kaartsessie
Het begin van een kaartsessie gaat als volgt:
-
1. De chauffeurskaart wordt in de boordcomputer ingebracht en er vindt een authenticatie
van de chauffeurskaart plaats. Zie hiervoor § 0. Dit ogenblik bepaalt het login-tijdstip
wat in stap 5 als activiteitrecord wordt toegevoegd.
-
2. Direct na het inloggen moet worden geverifieerd of in posities ‘00 04’H t/m ‘00 13’H
van de EF.Driver_Activity_Data het chauffeurskaartnummer nog steeds overeenstemt met
het chauffeurskaartnummer zoals dat in (de eerste 16 bytes van) het subject.serialNumber
van het authenticiteitcertificaat is opgeslagen. Indien het niet meer overeenstemt,
dienen de genoemde byteposities in EF.Driver_Activity_Data te worden bijgewerkt en
dient de gebruiker te worden gewaarschuwd.
Ook dient in deze stap de daadwerkelijke grootte van EF.Driver_Activity_Data te worden
vastgesteld. Zie hiervoor § 9.5.
-
3. Er wordt dan gecontroleerd of het certificaat van deze boordcomputer al op deze chauffeurskaart
staat en zo niet, dan wordt dit toegevoegd (zie 6 Gegevens op chauffeurskaart (EF.BCT_Certificates)).
In beide gevallen wordt dit certificaat als meest recente gemarkeerd. Eventueel andere,
reeds bestaande certificaatentries worden gemarkeerd als minder recente. Indien er
geen ruimte meer is vervalt de oudste entry.
-
4. Er wordt gecontroleerd of er op de boordcomputer nog een geblokkeerde sessie voor
deze kaart is (zie 7.4):
-
– Is er geen geblokkeerde sessie voor deze kaart op de boordcomputer of is de kaart
inmiddels in een andere boordcomputer gebruikt, dan wordt gecontroleerd of op de kaart
de vorige sessie correct afgesloten was.
Hiervoor moet de laatste activiteit in het huidige SessionRecord “Afsluiting”, “Nieuwe
eindtijd” of “Dagovergang” zijn. Is dit niet het geval, dan wordt de gebruiker er
op geattendeerd dat deze vorige sessie niet correct was afgesloten.
-
– Is de laatste activiteit in het laatste SessionRecord een “Afsluiting”, “Dagovergang”
of “Nieuwe eindtijd” en wijst de PointerLastPWActivityRecord van dat SessionRecord
naar een “Start pauze” activiteit, dan is er iets bijzonders aan de hand. Een arbeidsperiode
lijkt dan te eindigen met een pauze. In dit geval dient de boordcomputer de bestuurder
er extra op te attenderen dat er mogelijk een handmatige aanvulling / correctie benodigd
is die met stap 5 kan worden gedaan.
-
– Is er nog een geblokkeerde sessie voor deze kaart op de boordcomputer en is de kaart
tussentijds niet in een andere boordcomputer gebruikt, dan vervalt de blokkering en
wordt de sessie vervolgd.
-
5. Zijn er, tussen de laatst op de kaart geboekte “Start werk” of “Start pauze” activiteit
en het onthouden login-tijdstip, nog activiteiten toe te voegen, dan kan dat nu gebeuren
(zie vooral ook het tweede aandachtsstreepje van de vorige stap).
Bepaal hiertoe de start-datumtijd en de eventuele eind-datumtijd van die laatstgeboekte
“Start pauze” of “Start werk” activiteit, waarbij de eindtijd hetzij kan worden gelezen
uit de afsluitingsactiviteit die volgt op de “Start werk” / “Start pauze”, hetzij
kan worden berekend m.b.v. de tijdsduurteller van de “Start werk” / “Start pauze”
zelf.
In dat geval,
-
– Presenteer de laatstgeboekte “Start werk” / “Start pauze” inclusief diens uitgelezen
start- en eind-datumtijd.
-
– Dan kan er een “Start werk” of een “Start pauze” activiteit toegevoegd worden.
De standaard (start)datumtijd hiervoor is de eind-datumtijd van de laatste “Start
werk” of “Start pauze” activiteit; dit kan de gebruiker veranderen in een waarde tussen
minimaal de start-datumtijd van die laatste “Start werk” of “Start pauze” activiteit
en maximaal het login-tijdstip. De “handmatig”-bit wordt op ‘1’B gezet.
Een start die eerder is dan het einde van de vorige “Start werk” of “Start pauze”
activiteit, zal die eerdere activiteit geheel of gedeeltelijk veranderen.
Een start die gelijk is dan het einde van de vorige “Start werk” of “Start pauze”
activiteit, zal direct op die eerdere activiteit aansluiten.
Een start die later is dan het einde van de vorige “Start werk” of “Start pauze” activiteit,
zal een rustperiode inlassen.
Gebruik voor het toevoegen van deze handmatige activiteit de logica beschreven in
§ 0 en geef daarbij door of een kaartsessie al dan niet gecontinueerd mocht worden.
-
– Ook kan er voor gekozen worden om handmatig een “Nieuwe eindtijd” op te geven.
Ook daarvan kan de datumtijd ingesteld worden tussen minimaal de start-datumtijd van
de laatste activiteit en maximaal het login-tijdstip.
De “handmatig”-bit wordt op ‘1’B gezet.
Een nieuw einde dat gelijk is aan de start van de vorige “Start werk” of “Start pauze”
activiteit, zal die eerdere activiteit effectief verwijderen.
Een nieuw einde tussen de start en het (momenteel geldende) einde van de vorige “Start
werk” of “Start pauze” activiteit, zal die eerdere activiteit effectief inkorten.
Een nieuw einde later dan het (momenteel geldende) einde van de vorige activiteit,
zal die eerdere activiteit effectief verlengen.
Gebruik voor het toevoegen van deze handmatige activiteit de logica beschreven in
§ 0 en geef daarbij door of een kaartsessie al dan niet gecontinueerd mocht worden.
-
– Toevoegen kan meerdere keren uitgevoerd worden. De laatst (handmatig) toegevoegde
activiteit geldt dan telkens als de “vorige”.
-
– De mogelijkheid bestaat dat dit toevoegen over meerdere dagen gaat. In dat geval zal
de logica beschreven in § 0 de eventuele aanmaak van nieuwe DailyRecords en/of SessionRecords
verzorgen.
-
– Hoeft er niets meer toegevoegd te worden, dan kan met de volgende stap worden verder
gegaan.
-
6. Vervolgens wordt het login-tijdstip middels een “Login” activiteit toegevoegd (zie
5.2.1), waarna direct een “Start werk” (zie 5.2.4) zal worden toegevoegd. Beide ActivityRecords
zullen de handmatig bit op ‘0’B hebben staan.
ook nu zullen de toevoegingen gedaan worden conform de logica beschreven in § 0
Vanaf dit punt begint de reguliere vastlegging van activiteiten.
7.2 Tijdens een kaartsessie
Tijdens een kaartsessie zijn er twee activiteiten mogelijk: “Start pauze” en “Start
werk”. Voor het toevoegen van deze activiteiten, zie 5.2.1 respectievelijk 5.2.4.
“Start werk” moet regelmatig bijgewerkt worden met het aantal secondes dat er met
het voertuig gereden is (zie Noot 1 in § 5.1.3). “Start werk” en “Start pauze” moeten
regelmatig bijgewerkt worden met het aantal secondes dat de betreffende activiteit
duurt (zie Noot 2 in § 5.1.3).
7.3 Afsluiten van een kaartsessie
Bij het beeindigen van een kaartsessie dient de chauffeur de kaartsessie af te sluiten,
voordat hij de chauffeur zijn kaart uit de boordcomputer neemt. Zou hij de sessie
niet afsluiten wordt deze geblokkeerd.
Bij het afsluiten van een kaartsessie wordt een “Afsluiting” activiteit toegevoegd,
zie 5.2.5.
Direct nadat de “Afsluiting” activiteit is toegevoegd en nog voordat de chauffeur
zijn kaart uitneemt, dient de boordcomputer:
-
1. in EF.BCT_Certificates het DownloadLog controleren en vast te stellen of de laatste
download van EF.Driver_Activity_Data naar een boordcomputer al dan niet te lang geleden
is of lijkt. Indien dat zo blijkt te zijn, dan dient de boordcomputer de bestuurder
hierop te attenderen;
-
2. de chauffeur de gelegenheid te bieden om de volledige inhoud van EF.Driver_Activity_Data
naar het geheugen van de boordcomputer te downloaden. Indien de chauffeur hierop ingaat,
dan dient de boordcomputer:
-
a. Aan de chauffeur een waarschuwing te tonen dat de kaart (nog) niet mag worden uitgenomen;
-
b. De volledige inhoud van EF.Driver_Activity_Data te downloaden naar het geheugen van
de boordcomputer;
-
c. In EF.BCT_Certificates het DownloadLog bij te werken;
-
d. Aan de chauffeur te melden dat de kaart nu mag worden uitgenomen.
7.4 Niet afgesloten kaartsessie
Het is mogelijk dat de chauffeur zijn kaart uit de boordcomputer haalt zonder dat
hij de kaartsessie afgesloten heeft. In dat geval is er dus geen ActivityRecord aangemaakt
voor het afsluiten van de kaartsessie. De boordcomputer constateert dat de kaart is
uitgenomen zonder dat de sessie is afgesloten en blokkeert deze kaartsessie.
De op de boordcomputer geblokkeerde kaartsessie wordt beëindigd door:
-
• binnen 60 minuten dezelfde chauffeurskaart weer in te brengen in de boordcomputer.
Zijn er in de tussentijd activiteiten op de boordcomputer geregistreerd geweest, dan
worden die allereerst op de chauffeurskaart bijgewerkt.
-
• binnen 60 minuten dezelfde chauffeurskaart weer in te brengen en er blijkt dat de
kaart in de tussentijd in een andere boordcomputer heeft gezeten. Eventuele tussentijdse
activiteiten die op deze boordcomputer waren geregistreerd worden niet meer op de
kaart geplaatst.
-
• een andere boordcomputerkaart in te brengen, uitgezonderd een inspectiekaart.
-
• een time-out van 60 minuten.
De eerstvolgende keer dat een chauffeurskaart met een niet afgesloten kaartsessie
weer in een boordcomputer wordt ingebracht, krijgt de chauffeur een melding dat de
kaartsessie niet goed afgesloten was. De uitzondering hierop is het eerste punt hierboven,
waarbij de kaartsessie voortgezet wordt.
In alle gevallen wordt na het inloggen de chauffeur de mogelijkheid geboden voor het
handmatig toevoegen van activiteiten die hebben plaatsgevonden tussen de laatstgeboekte
“Start werk” of “Start pauze” activiteit en het login-tijdstip. Pas nadat dergelijke
handmatige boekingen op de kaart zijn bijgeschreven, wordt het Login-tijdstip vastgelegd
door het toevoegen van een “Login” ActivityRecord die aangeeft wanneer de kaart weer
in de boordcomputer ingebracht is (zie 5.2.1). Direct aansluitend wordt (met hetzelfde
tijdstempel) een “Start werk” activiteit toegevoegd.
7.5 Dagoverschrijdende kaartsessie
Het is mogelijk dat een kaartsessie actief is om 12 uur ’s nachts. Ook kan dat het
geval blijken te zijn tijdens het handmatig invoegen van activiteiten (de laatst geboekte
activiteit blijkt “Start werk” of “Start pauze” te zijn en de toe te voegen activiteit
blijkt te moeten starten in de kalenderdag na die van zijn voorganger). Omdat de activiteiten
per dag opgeslagen worden, moet de kaartsessie hier gesplitst worden.
Hiervoor wordt
-
1. Indien de huidige activiteit een (automatische) “Start werk” is, het aantal secondes
rijden bijgewerkt.
-
2. Een interne kopie gemaakt van de huidige activiteit (“Start werk” of “Start pauze”).
In die kopie wordt het tijdstipveld op 00:00:00 gezet en de handmatig bit dient te
reflecteren of deze dagovergang tijdens het handmatig bijwerken van de administratie
dan wel tijdens de normale operatie van de boordcomputer werd geconstateerd.
-
3. Een “Dagovergang” activiteit toegevoegd aan het huidige SessionRecord om 23:59:59
(zie 5.2.7). Het handmatig bit dient ook hierbij te reflecteren of deze dagovergang
tijdens het handmatig bijwerken van de administratie dan wel tijdens de normale operatie
van de boordcomputer werd geconstateerd.
-
4. De interne kopie van de voort te zetten activiteit toegevoegd op de eerstvolgende
kalenderdag. Omdat dit de eerste activiteit in die volgende kalenderdag betreft, worden
er eerst een nieuw DailyRecord en SessionRecord aangemaakt.
-
5. Indien de splitsing het gevolg van een handmatige toevoeging was:
-
a. wordt eerst gecontroleerd of die toevoeging wellicht nóg een of meer kalenderdagen
vooruit betreft en indien dat zo is, worden de bovenstaande stappen herhaald,
-
b. wordt pas daarna de opgegeven activiteit toegevoegd.
8 Functies
De commando-antwoord paren (zie hoofdstuk 9) vormen het laagste niveau van communicatie
met de boordcomputerkaarten.
Met behulp van één of meerdere commando’s kunnen functies benoemd worden die een logische
actie vertegenwoordigen, zoals het wijzigen of deblokkeren van een pincode.
Bij deze functies moeten ook de punten uit 5.3 (Algemene opmerkingen bij lezen en
schrijven) in acht worden genomen.
8.1 PIN wijzigen
Naam
Gebruik
|
ChangePIN
Boordcomputerkaarten
|
Input gegevens
|
Oude PIN || Nieuwe PIN
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van Change Reference Data, afhankelijk van de implementatie
|
Voor het wijzigen van een PIN moet de oude PIN bekend zijn, anders is dit niet mogelijk.
Voor de oude en nieuwe PIN wordt het PIN formaat 2 gebruikt. Dit is 8 bytes lang en
is als volgt opgebouwd:
C
|
N
|
P
|
P
|
P
|
P
|
P/F
|
P/F
|
P/F
|
P/F
|
P/F
|
P/F
|
P/F
|
P/F
|
F
|
F
|
Waarin:
Naam
|
Waarde
|
C
|
Controle veld
|
4 bits binair getal ‘0010’B
|
N
|
PIN lengte
|
4 bits binair getal tussen ‘0100’B en ‘1100’B
|
P
|
PIN cijfer
|
4 bits binair getal tussen ‘0000’B en ‘1001’B
|
P/F
|
PIN cijfer / Vulteken
|
Afhankelijk van PIN lengte
|
F
|
Vulteken
|
4 bits binair getal ‘1111’B
|
De PIN is dus maximaal 12 cijfers lang.
Het gebruikte commando is Change Reference Data, waarbij de PIN reference de waarde
‘01’H heeft en oude PIN || nieuwe PIN als data meegegeven wordt.
8.2 SM keyset wijzigen
Naam
|
ChangeSMKeySet
|
Gebruik
|
Systeemkaart
|
Input gegevens
|
Nieuwe Key Set
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van Put Data (SDO), afhankelijk van de implementatie
|
Op de systeemkaart mag deze functie alleen uitgevoerd worden onder beveiligde gegevensoverdracht
(zie Hoofdstuk 4).
Voor het wijzigen van een SM key set moet er een Secure Messaging kanaal bestaan en
daarmee moet de oude SM key set bekend zijn, anders is dit niet mogelijk.
Het gebruikte commando is Put Data, waarbij de nieuwe (symmetrische) key set als data
meegegeven wordt. Het volledige data veld heeft de vorm
‘70 2A BF 8A 03 26 A2 24 90 10’ || Kmac || ‘91 10’ || Kenc
waarbij Kmac en Kenc de 16 bytes sleutels zijn voor de MAC resp. de ENC.
8.3 PIN deblokkeren
Naam
|
DeblockPIN
|
Gebruik
|
Boordcomputerkaarten
|
Input gegevens
|
Geen
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van Reset Retry Counter, afhankelijk van de implementatie
|
Hierbij wordt de bestaande PIN gedeblokkeerd.
Het gebruikte commando is Reset Retry Counter, waarbij P1 de waarde ‘03’H heeft en
P2 (de PIN reference) de waarde ‘01’H heeft.
Voorafgaand aan dit commando moet een succesvol Verify commando uitgevoerd worden
met P1 = ‘00’H en P2 = ‘02’H (de PUK reference). Voor de PUK wordt PIN formaat 2 gebruikt
(zie onder 8.1).
8.4 PIN deblokkeren en wijzigen
Naam
|
DeblockAndChangePIN
|
Gebruik
|
Boordcomputerkaarten
|
Input gegevens
|
Nieuwe PIN
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van Reset Retry Counter, afhankelijk van de implementatie
|
Hierbij wordt de bestaande PIN gedeblokkeerd en gewijzigd in de Nieuwe PIN.
Het gebruikte commando is Reset Retry Counter, waarbij P1 de waarde ‘02’H heeft en
P2 (de PIN reference) de waarde ‘01’H heeft.
Voorafgaand aan dit commando moet een succesvol Verify commando uitgevoerd worden
met P1 = ‘00’H en P2 = ‘02’H (de PUK reference). Voor de PUK wordt PIN formaat 2 gebruikt
(zie onder 8.1).
8.5 Elektronische handtekening zetten met een chauffeurs- of inspectiekaart
Naam
|
SignDataLegally
|
Gebruik
|
Chauffeurskaart, Inspectiekaart
|
Input gegevens
|
Gegevens waarover handtekening berekend moet worden
|
Resultaat
|
Handtekening || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Deze functie wordt gebruikt voor het door een natuurlijke persoon zetten van een rechtsgeldige
elektronische handtekening met de sleutel-certificaatcombinatie PKI.CH.DS die uitsluitend
op chauffeurs- en inspectiekaarten bestaat.
Voor deze functie moet een aantal stappen doorlopen worden:
-
1. Selectie hash template en algoritme: alvorens de digitale handtekening berekend kan
worden, moet het hash template geselecteerd worden en het te gebruiken algoritme.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde ‘41’H
en P2 de waarde ‘AA’H. De data bij dit commando is ‘80 01 40’H (‘40’H om de algoritme
identifier voor SHA-256 aan te geven).
-
2. Selectie private key en algoritme: de private key van de BCT Handtekening moet geselecteerd
worden met het te gebruiken algoritme.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde ‘41’H
en P2 de waarde ‘B6’H. De data bij dit commando is ‘80 01 42 84 01 86’H (‘42’H om
“PKCS#1 v1.5 – SHA-256” aan te duiden en ‘86’H om het Security Data Object (SDO) van
PKI.CH.DS aan te duiden).
-
3. PIN valideren: de private key van de BCT Handtekening mag pas gebruikt worden nadat
de PIN gevalideerd is. Dit is nodig voor iedere keer dat deze key gebruikt wordt.
Dit wordt gedaan met het commando Verify, waarbij P2 (de PIN reference) de waarde
‘01’H heeft. Voor de PIN wordt PIN formaat 2 gebruikt (zie onder 8.1).
-
4. Berekenen van de intermediate hash (SHA256) over de input gegevens door de boordcomputerlogica.
Hierbij wordt het laatste gegevensblok niet gehashed, maar wordt de intermediate hash
en het aantal gehashte bits onthouden voor de volgende stap.
NB. Wanneer het totaal aan input gegevens uit maximaal 64 bytes bestaat, wordt er geen
intermediate hash berekend en worden alle inputgegevens in de volgende stap gebruikt.
-
5. Berekenen van de uiteindelijke hash (SHA256) door de boordcomputerkaart. Hiervoor
wordt het commando PSO Hash gebruikt. Hierbij worden de “intermediate hash value”,
het aantal gehashte bits en het laatste (of enige) blok inputdata van minimaal 1 en
maximaal 64 bytes opgenomen in het Dataveld van het commando. Bij een succesvol uitgevoerde
PSO HASH zal de uiteindelijke hash waarde in het geheugen van de boordcomputerkaart
(chip) achterblijven ten behoeve van de volgende en laatste stap.
-
6. Handtekening berekenen: hierbij wordt met de gekozen private key de handtekening berekend
over de in het chipgeheugen aanwezige hashwaarde en geeft de kaart die handtekening
terug aan de boordcomputerlogica.
Dit wordt gedaan met het commando PSO Compute Digital Signature. Le, het verwachte
aantal bytes in de response, moet daarbij op ‘00’H staan.
Zie ook PSO Hash en PSO Compute Digital Signature in Referentie [7].
Voor de vermelde SDO ID wordt verwezen naar de kaartstructuur documenten in Referenties
[9] en [12]. Omdat dit SDO een lokaal object is, moet de in de kaartstructuur documenten
gespecificeerde keyReference niet letterlijk worden overgenomen, maar met bit8 hoog
(dus ‘86’H in plaats van ‘06’H).
8.6 Elektronische handtekening zetten met een systeemkaart
Naam
|
SignDataSystem
|
Gebruik
|
Systeemkaart
|
Input gegevens
|
Gegevens waarover handtekening berekend moet worden
|
Resultaat
|
Handtekening || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Deze functie wordt gebruikt voor het door een boordcomputer zetten van een elektronische
handtekening met de sleutel-certificaatcombinatie PKI.CH.AUT van de systeemkaart.
Op de systeemkaart mag deze functie alleen uitgevoerd worden onder beveiligde gegevensoverdracht
(zie Hoofdstuk 4), gebruikmakend van de sleutelset SM.ICC.
Voor deze functie moet een aantal stappen doorlopen worden:
-
1. Selectie hash template en algoritme: alvorens de digitale handtekening berekend kan
worden, moet het hash template geselecteerd worden en het te gebruiken algoritme.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde ‘41’H
en P2 de waarde ‘AA’H. De data bij dit commando is ‘80 01 40’H (‘40’H om de algoritme
identifier voor SHA-256 aan te geven).
-
2. Selectie private key en algoritme: de private key van de BCT Authenticiteit moet geselecteerd
worden met het te gebruiken algoritme.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde ‘41’H
en P2 de waarde ‘B6’H. De data bij dit commando is ‘80 01 42 84 01 85’H (‘42’H om
“PKCS#1 v1.5 – SHA-256” aan te duiden en ‘85’H om het Security Data Object (SDO) van
PKI.CH.AUT aan te duiden).
-
3. Berekenen van de intermediate hash (SHA256) over de input gegevens door de boordcomputerlogica.
Hierbij wordt het laatste gegevensblok niet gehashed, maar wordt de intermediate hash
en het aantal gehashte bits onthouden voor de volgende stap.
NB. Wanneer het totaal aan input gegevens uit maximaal 64 bytes bestaat, wordt er geen
intermediate hash berekend en worden alle inputgegevens in de volgende stap gebruikt.
-
4. Berekenen van de uiteindelijke hash (SHA256) door de systeemkaart. Hiervoor wordt
het commando PSO Hash gebruikt. Hierbij worden de “intermediate hash value”, het aantal
gehashte bits en het laatste (of enige) blok inputdata van minimaal 1 en maximaal
64 bytes opgenomen in het Dataveld van het commando. Bij een succesvol uitgevoerde
PSO HASH zal de uiteindelijke hash waarde in het geheugen van de systeemkaart (chip)
achterblijven ten behoeve van de volgende en laatste stap.
-
5. Handtekening berekenen: hierbij wordt met de gekozen private key de handtekening berekend
over de in het chipgeheugen aanwezige hashwaarde en geeft de kaart die handtekening
terug aan de boordcomputerlogica.
Dit wordt gedaan met het commando PSO Compute Digital Signature. Le, het verwachte
aantal bytes in de response, moet daarbij op ‘00’H staan.
Zie ook PSO Hash en PSO Compute Digital Signature in Referentie [7]).
Voor de vermelde SDO ID wordt verwezen naar het kaartstructuur documenten in Referentie
[8]. Omdat dit SDO een lokaal object is, moet de in het kaartstructuur document gespecificeerde
keyReference niet letterlijk worden overgenomen, maar met bit8 hoog (dus ‘85’H in
plaats van ‘05’H).
Noot: Zie ook 5.4 (Digitale handtekening).
8.7 Authenticiteit handtekening zetten met een boordcomputerkaart
Naam
|
SignDataForAuthenticity
|
Gebruik
|
Chauffeurskaart, Ondernemerskaart, Keuringskaart, Inspectiekaart
|
Input gegevens
|
Gegevens waarover handtekening berekend moet worden
|
Resultaat
|
Handtekening || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Deze functie wordt gebruikt voor het door een boordcomputerkaarthouder zetten van
een elektronische handtekening met de sleutel-certificaatcombinatie PKI.CH.AUT die
op elke boordcomputerkaart bestaat.
NB. Gebruik van deze functie is niet voorzien binnen de regelgeving van Boordcomputer
Taxi, maar voor de volledigheid is deze paragraaf toch opgenomen.
Voor deze functie moet een aantal stappen doorlopen worden:
-
1. Selectie hash template en algoritme: alvorens de digitale handtekening berekend kan
worden, moet het hash template geselecteerd worden en het te gebruiken algoritme.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde ‘41’H
en P2 de waarde ‘AA’H. De data bij dit commando is ‘80 01 40’H (‘40’H om de algoritme
identifier voor SHA-256 aan te geven).
-
2. Selectie private key en algoritme: de private key van de BCT Authenticiteit moet geselecteerd
worden met het te gebruiken algoritme.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde ‘41’H
en P2 de waarde ‘B6’H. De data bij dit commando is ‘80 01 42 84 01 85’H (‘42’H om
“PKCS#1 v1.5 – SHA-256” aan te duiden en ‘85’H om het Security Data Object (SDO) van
PKI.CH.AUT aan te duiden).
-
3. PIN valideren: de private key van de BCT Authenticiteit mag pas gebruikt worden nadat
de PIN gevalideerd is. Een eenmaal uitgevoerde PIN validatie mag – zo lang de kaart
in de boordcomputer aanwezig blijft – worden “herbruikt” bij elke volgende keer dat
deze key gebruikt wordt.
Dit wordt gedaan met het commando Verify, waarbij P2 (de PIN reference) de waarde
‘01’H heeft. Voor de PIN wordt PIN formaat 2 gebruikt (zie onder 8.1).
-
4. Berekenen van de intermediate hash (SHA256) over de input gegevens door de boordcomputerlogica.
Hierbij wordt het laatste gegevensblok niet gehashed, maar wordt de intermediate hash
en het aantal gehashte bits onthouden voor de volgende stap.
NB. Wanneer het totaal aan input gegevens uit maximaal 64 bytes bestaat, wordt er geen
intermediate hash berekend en worden alle inputgegevens in de volgende stap gebruikt.
-
5. Berekenen van de uiteindelijke hash (SHA256) door de boordcomputerkaart. Hiervoor
wordt het commando PSO Hash gebruikt. Hierbij worden de “intermediate hash value”,
het aantal gehashte bits en het laatste (of enige) blok inputdata van minimaal 1 en
maximaal 64 bytes opgenomen in het Dataveld van het commando. Bij een succesvol uitgevoerde
PSO HASH zal de uiteindelijke hash waarde in het geheugen van de boordcomputerkaart
(chip) achterblijven ten behoeve van de volgende en laatste stap.
-
6. Handtekening berekenen: hierbij wordt met de gekozen private key de handtekening berekend
over de in het chipgeheugen aanwezige hashwaarde en geeft de kaart die handtekening
terug aan de boordcomputerlogica.
Dit wordt gedaan met het commando PSO Compute Digital Signature. Le, het verwachte
aantal bytes in de response, moet daarbij op ‘00’H staan.
Zie ook PSO Hash en PSO Compute Digital Signature in Referentie [7].
Voor de vermelde SDO ID wordt verwezen naar de kaartstructuur documenten in Referenties
[9] t/m [12]. Omdat dit SDO een lokaal object is, moet de in de kaartstructuur documenten
gespecificeerde keyReference niet letterlijk worden overgenomen, maar met bit8 hoog
(dus ‘85’H in plaats van ‘05’H).
8.8 Authenticeren boordcomputerkaart aan boordcomputer
Naam
|
AuthenticateCardToBCT
|
Gebruik
|
Boordcomputerkaarten
|
Input gegevens
|
Random waarde (16 bytes)
|
Resultaat
|
Handtekening || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Om te controleren of een boordcomputerkaart authentiek is, wordt er een Client/Server
authenticatie uitgevoerd (zie Referentie [7]). Hierbij wordt een boordcomputer challenge
ondertekend met behulp van de sleutel-certificaatcombinatie PKI.CH.AUT van de een
boordcomputerkaart. Deze functie is analoog aan SignDataForAuthenticity, maar wordt
hier uitsluitend voor authenticatiedoeleinden gebruikt.
Voor deze functie moeten een aantal stappen doorlopen worden:
-
1. Selectie private key en algoritme: alvorens de digitale handtekening berekend kan
worden, moet de private key van de BCT Authenticiteit geselecteerd worden en het te
gebruiken algoritme.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde ‘41’H
en P2 de waarde ‘A4’H. De data bij dit commando is ‘80 01 02 84 01 85’H (‘02’H om
“C/S RSA with DSI according to PKCS#1, parameter Digestinfo” aan te duiden en ‘85’H
om het Security Data Object (SDO) van PKI.CH.AUT aan te duiden).
-
2. PIN valideren: de private key van de BCT Authenticiteit mag pas gebruikt worden nadat
de PIN gevalideerd is. Dit is nodig voor de eerste keer dat deze key gebruikt wordt,
maar een eenmaal uitgevoerde PIN validatie mag – zo lang de kaart in de boordcomputer
aanwezig blijft – worden “herbruikt” bij elke volgende keer dat deze key gebruikt
wordt.
Dit wordt gedaan met het commando Verify waarbij P2 (de PIN reference) de waarde ‘01’H
heeft. Voor de PIN wordt PIN formaat 2 gebruikt (zie onder 8.1).
-
3. De boordcomputer stuurt een Internal Authenticate commando naar de boordcomputerkaart.
P1 P2 = ‘00 00’ en de data = 16 bytes random.
-
4. Het antwoord hiervan wordt teruggestuurd naar de boordcomputer en deze controleert
met behulp van de publieke key en een padvalidatie van het authenticiteitcertificaat
of de boordcomputerkaart authentiek is.
-
5. Ook de geldigheid van het authenticiteitcertificaat dient te worden gecontroleerd
middels minimaal een padvalidatie en een controle van de attributen validity.notBefore
en validity.notAfter.
-
6. Met behulp van het eerste karakter van het kaartnummer, zoals dat in het subject.serialNumber
of in de subject.title van het authenticiteitcertificaat is opgeslagen, kan de boordcomputer
het kaarttype en daarmee de gebruikerssoort (bestuurder, vervoerder, werkplaats, dan
wel toezichthouder) herkennen.
NB. De boordcomputerkaarten ondersteunen Windows/Kerberos smartcard logon. Ook deze
wijze van authenticeren is toegestaan, mits ook hier de geldigheid van het authenticiteitcertificaat
middels een padvalidatie wordt gevalideerd.
Voor de vermelde SDO ID wordt verwezen naar de kaartstructuur documenten in Referenties
[9] t/m [12]. Omdat dit SDO een lokaal object is, moet de in de kaartstructuur documenten
gespecificeerde keyReference niet letterlijk worden overgenomen, maar met bit8 hoog
(dus ‘85’H in plaats van ‘05’H).
8.9 Schrijf nieuw ActivityRecord
Naam
|
WriteNewActivityRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
ActivityRecord, ActivityDate
|
Resultaat
|
90h 00h OK
xxh xxh Foutcode van een van de gebruikte commando’s, afhankelijk van smartcard implementatie
|
Deze functie wordt gebruikt om een ActivityRecord toe te voegen in EF.Driver_Activity_Data.
De functie moet gevoed worden met de volgende argumenten met betrekking tot het toe
te voegen ActivityRecord:
-
1. ActivityDate de datum (JJJJMMDD) waarop de activiteit startte c.q. gebeurtenis plaatsvond;
-
2. ActivityTime het tijdstip (hhmmss) waarop de activiteit startte c.q. gebeurtenis plaatsvond;
-
3. ActivityType: het type activiteit / gebeurtenis;
-
4. ManualBit: de handmatig-bit die weergeeft of het tijdstempel (datum en tijd) handmatig dan
wel automatisch werd bepaald.
Deze functie moet, voorafgaand aan het daadwerkelijk toevoegen van het ActivityRecord,
aan de hand van meegestuurde argumenten, het laatst in EF.Driver_Activity_Data geboekte
ActivityRecord en de status van de boordcomputer bepalen of voor het ActivityRecord
al dan niet een nieuw DailyRecord en/of SessionRecord moet worden aangemaakt en op
welke geheugenpositie het nieuwe ActivityRecord moet worden toegevoegd. Stapsgewijs
is de daarvoor te volgen logica als volgt:
-
1. Selecteer EF.Driver_Activity_Data met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 01’H.
-
2. Lees de PointerLastDayRecord met het commando Read Binary, waarbij de offset 2 is en het verwachte aantal bytes
in de response 2.
Indien PointerLastDayRecord gelijk aan ‘00 00’H is, dan bestaat er (nog) geen enkel DailyRecord:
Indien PointerLastDayRecord niet gelijk aan ‘00 00’H is:
-
a. Lees de DayRecordLength met het commando Read Binary, waarbij de offset PointerLastDayRecord is en het verwachte aantal bytes in de response 2.
-
b. Lees de DayRecordDate met het commando Read Binary, waarbij de offset PointerLastDayRecord + 6 is en het verwachte aantal bytes in de response 4.
Indien DayRecordDate groter is dan ActivityDate,
dan betreft dit een foutsituatie en stopt verdere verwerking.
Indien DayRecordDate kleiner is dan ActivityDate,
dan ontbreekt de gewenste DailyRecord
(hou hier ook rekening met Dagovergangen zoals beschreven in § 5.2.7 en § 7.5):
Indien DayRecordDate gelijk is aan ActivityDate:
-
a. Lees de PointerLastSessionRecord met het commando Read Binary, waarbij de offset PointerLastDayRecord + 2 is en het verwachte aantal bytes in de response 2.
Indien de PointerLastSessionRecord gelijk aan ‘00 00’H is,
dan bevat het DailyRecord (nog) geen enkel SessionRecord:
Indien de PointerLastSessionRecord niet gelijk aan ‘00 00’H is:
-
i. Lees de PointerLastActivityRecord met het commando Read_Binary, waarbij de offset PointerLastSessionRecord is en het verwachte aantal bytes in de response 2.
Indien de PointerLastActivityRecord gelijk aan ‘00 00’H is,
dan wordt nu het eerste ActivityRecord aan het SessionRecord toegevoegd: zet de NewActivityPointer dus op PointerLastSessionRecord + Length(SessionRecordHeader).
Indien de PointerLastActivityRecord niet gelijk aan ‘00 00’H is,
dan bestaat er een eerder ActivityRecord:
-
a. Lees de LastActivityRecordHeader met het commando Read_Binary, waarbij de offset PointerLastActivityRecord is en het verwachte aantal bytes in de response 3.
-
b. Bepaal uit de eerste 5 bits van de LastActivityRecordHeader de LastActivityType.
Indien de LastActivityType gelijk is aan “Afsluiting” of “Nieuwe eindtijd”,
dan moet er een nieuwe sessie worden geboekt:
Indien de LastActivityType gelijk is aan “Login”, “Start werk” of “Start pauze”, maar de boordcomputer heeft
geen kaartsessie meer actief of geblokkeerd,
dan moet er ook een nieuwe sessie worden geboekt:
Indien de LastActivityType gelijk is aan “Start werk”,
Werk dan diens Rijtijdteller voor de laatste maal bij: voer een Update Binary commando
uit, waarbij de offset PointerLastActivityRecord + 3 is en de data de door de boordcomputer bijgehouden rijtijdteller; reset die laatste
ook direct naar nul (0).
Zet NewActivityPointer = PointerLastActivityRecord + 6
Indien de LastActivityType NIET gelijk is aan “Start werk”,
Zet NewActivityPointer = PointerLastActivityRecord + 3
NB1. NewActivityPointer, LastActivityRecordHeader en NewActivityLength maken géén onderdeel
van de structuur uit, maar zijn tijdelijke waardes in het geheugen van de boordcomputer.
NB2. Indien het LastActivityRecord een “(Start) werk” of “(Start) pauze” betreft worden
met het bovenstaande algoritme de laatste 3 bytes (waarin de tijdsduur van de activiteit
tijdelijk werd bijgehouden) overschreven door het nieuw toe te voegen ActivityRecord.
Voeg nu het nieuwe ActivityRecord toe in het in het huidige SessionRecord:
-
1. Bepaal eerst aan de hand van de ActivityType de lengte van het nieuwe ActivityRecord:
-
a. Indien “(Start) werk”, dan NewActivityLength = 9;
-
b. Indien “(Start) pauze”, dan NewActivityLength = 6;
-
c. Indien anders, dan NewActivityLength = 3;
-
2. Bepaal dan aan de hand van NewActivityPointer + NewActivityLength of er nog voldoende vrije ruimte resteert in EF.Driver_Activity_Data en ruim zo nodig
een of meer van de oudste DailyRecords op (zie ook 5.3).
-
3. Voer een Update Binary commando uit, waarbij de offset PointerLastSessionRecord is en de data NewActivityPointer (hiermee wordt PointerLastActivityRecord bijgewerkt).
-
4. Voer een Update Binary commando uit, waarbij de offset NewActivityPointer is en de data bestaat uit 3 bytes:
-
a. 5 bits ActivityType: het als argument gegeven type activiteit / gebeurtenis;
-
b. 1 bit ManualBit: de als argument gegeven handmatig-bit;
-
c. 1 bit RijdenBit: de bit die aangeeft of de auto NU rijdt (‘1’B) of stilstaat (‘0’B);
-
d. 17 bits ActivityTime: het als argument gegeven (start)tijdstip.
-
5. Indien de nieuwe activiteit een “(Start) werk” of “(Start) pauze” betreft:
-
a. Voer een Update Binary commando uit, waarbij de offset PointerLastSessionRecord + 2 is en de data NewActivityPointer (hiermee wordt PointerLastPWActivityRecord bijgewerkt);
-
b. Voer een Update Binary commando uit, waarbij de offset NewActivityPointer + 3 is en de data bestaat uit 3 bytes gelijk aan ‘00 00 00’H;
-
c. Reset op de boordcomputer de tijdsduurteller naar nul (0) seconden;
-
d. Indien de nieuwe activiteit een “(Start) werk” betreft:
-
i. Voer een Update Binary commando uit, waarbij de offset NewActivityPointer + 6 is en de data bestaat uit 3 bytes gelijk aan ‘00 00 00’H;
-
ii. Reset op de boordcomputer de rijtijdteller naar nul (0) seconden.
-
6. Voer een Update Binary commando uit met offset is PointerLastDayRecord en als data DayRecordLength + NewActivityLength (hiermee wordt DayRecordLength bijgewerkt).
Voer tot slot nog de procedure uit voor het door de boordcomputer ondertekenen van
het aangepaste SessionRecord, zoals beschreven in § 5.4.
8.10 Schrijf nieuw SessionRecord
Naam
|
WriteNewSessionRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
StartSessionData
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Deze functie wordt gebruikt om een nieuw leeg SessionRecord aan het huidige DailyRecord
toe te voegen. Deze functie wordt altijd aangeroepen vanuit de functie voor het toevoegen
van een ActivityRecord (zie 0)
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.Driver_Activity_Data met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 01’H.
-
2. Lees de PointerLastDayRecord met het commando Read Binary, waarbij de offset 2 is
en het verwachte aantal bytes in de response 2. Dit levert de pointer voor het meest
recente DailyRecord (Pointer_1).
-
3. Lees in deze DailyRecord de DayRecordLength met Read Binary, de offset is Pointer_1
en het verwachte aantal bytes in de response is 2. Dit levert de lengte van dit DailyRecord
(Length_1). Daarmee wordt de pointer waar het SessionRecord weggeschreven kan worden:
Pointer_2 = Pointer_1 + Length_1.
-
4. Maak een nieuw SessionRecord (alleen de kop) aan met
-
– PointerLastActivityRecord = ‘00 00’H (0).
-
– PointerLastPWActivityRecord = ‘00 00’H (0).
-
– SignatureDateTime = ‘00000000 000000’H
-
– SessionSignature = 256 willekeurige bytes.
-
– SessionCreationDateTime = de huidige datum en tijd volgens de BCT klok in BCD en geformatteerd
als ‘JJJJMMDDhhmmss’H
-
– SystemCardNumber, Kenteken, CompanyCardNumber en Pnummer zoals die in de boordcomputer
bekend zijn.
Voer een Update Binary commando uit, waarbij de offset Pointer_2 is en de data de
weg te schrijven SessionRecord kop.
-
5. Verhoog DayRecordLength door een Update Binary commando met offset is Pointer_1 en
als data Length_1 + 299.
-
6. Wijzig de PointerLastSessionRecord door een Update Binary commando, waarbij de offset
Pointer_1 + 2 is en de data Pointer_2.
Noot: Zie 5.3, aangezien de mogelijkheid bestaat dat de te schrijven data niet aan het
eind van EF.Driver_Activity_Data past.
8.11 Schrijf nieuw DailyRecord
Naam
|
WriteNewDailyRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Datum (BCD)
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Deze functie wordt gebruikt om een nieuw leeg DailyRecord toe te voegen. Dit wordt
gedaan voor de eerste registratie van een dag. Dit nieuwe DailyRecord bevat nog geen
SessionRecords.
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.Driver_Activity_Data met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 01’H.
-
2. Lees de PointerLastDayRecord met het commando Read Binary, waarbij de offset 2 is
en het verwachte aantal bytes in de response 2. Dit levert de pointer voor de meest
recente DailyRecord (Pointer_1).
-
3. Lees in deze DailyRecord de DayRecordLength met Read Binary, offset is Pointer_1 en
het verwachte aantal bytes in de response is 2. Dit levert de lengte van het DailyRecord
(Length_1).
Daarmee is de pointer bekend waar de nieuwe DailyRecord weggeschreven kan worden:
Pointer_2 = Pointer_1 + Length_1.
-
4. Maak een nieuwe DailyRecord kop aan met
-
– DayRecordLength = ‘00 0A’H (10)
-
– PointerLastSessionRecord = ‘00 00’H (0)
-
– PreviousDayRecordLength = Length_1
-
– DayRecordDate = datum in BCD formaat.
en voer een Update Binary commando uit, waarbij de offset Pointer_2 is en de data
de weg te schrijven DailyRecord kop.
-
5. Verzet de PointerLastDayRecord naar het nieuwe DailyRecord met een Update Binary,
waarbij de offset 2 is en de data Pointer_2 is.
Noot: Zie 5.3, aangezien de mogelijkheid bestaat dat de te schrijven data niet aan het
eind van EF.Driver_Activity_Data past.
8.12 Selecteer laatste (nieuwste) DailyRecord
Naam
|
SelectLastDailyRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Geen
|
Resultaat
|
DailyRecordPointer || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Indien EF.Driver_Activity_Data nog niet geselecteerd is, selecteer EF.Driver_Activity_Data
met het commando Select met P1P2 = ‘04 0C’H en data = ‘E8 28 BD 08 0F A0 00 00 01
67 45 53 49 47 4E’H, gevolgd door het commando Select met P1P2 = ‘02 0C’H en data
= ‘44 01’H.
-
2. Lees de PointerLastDayRecord met het commando Read Binary, waarbij de offset 2 is
en het verwachte aantal bytes in de response 2. Dit levert de pointer voor de meest
recente DailyRecord (DailyRecordPointer).
8.13 Selecteer oudste (eerste) DailyRecord
Naam
|
SelectOldestDailyRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Geen
|
Resultaat
|
DailyRecordPointer || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Indien EF.Driver_Activity_Data nog niet geselecteerd is, selecteer EF.Driver_Activity_Data
met het commando Select met P1P2 = ‘04 0C’H en data = ‘E8 28 BD 08 0F A0 00 00 01
67 45 53 49 47 4E’H, gevolgd door het commando Select met P1P2 = ‘02 0C’H en data
= ‘44 01’H.
-
2. Lees de PointerOldestDayRecord met het commando Read Binary, waarbij de offset 0 is
en het verwachte aantal bytes in de response 2. Dit levert de pointer voor de oudst
bekende DailyRecord (DailyRecordPointer).
8.14 Selecteer vorige DailyRecord
Naam
|
SelectPreviousDailyRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
CurrentDailyRecordPointer (bereik ‘00 14’H t/m (Length_EF.Driver_Activitiy_Data –
1))
PointerOldestDayRecord
|
Resultaat
|
DailyRecordPointer || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Indien EF.Driver_Activity_Data nog niet geselecteerd is, selecteer EF.Driver_Activity_Data
met het commando Select met P1P2 = ‘04 0C’H en data = ‘E8 28 BD 08 0F A0 00 00 01
67 45 53 49 47 4E’H, gevolgd door het commando Select met P1P2 = ‘02 0C’H en data
= ‘44 01’H.
-
2. Indien PointerOldestDayRecord niet was meegegeven als inputgegeven, lees dan PointerOldestDayRecord
met het commando Read Binary met offset = 0 en het verwachte aantal bytes in de respons
2.
-
3. Als CurrentDailyRecordPointer gelijk is aan PointerOldestDayRecord, dan is de geselecteerde
DailyRecord de eerste (oudste) en is er geen vorige DailyRecord aanwezig. Breek dan
deze functie af.
-
4. Zet Pointer_1 = CurrentDailyRecordPointer + 4 om de pointer naar PreviousDayRecordLength
te verkrijgen.
-
5. Als Pointer_1 >= Length_EF.Driver_Activity_Data herbereken dan de positie met de formule:
Pointer_1 = (Pointer_1 modulo Length_EF.Driver_Activity_Data) + ‘00 14’H (20)
-
6. Als nu Pointer_1 precies gelijk is aan (Length_EF.Driver_Activity_Data – 1), dan staat
de MSB van PreviousDayRecordLength in de laatste byte van EF.Driver_Activity_Data
en de LSB op positie ‘00 14’H (20). Voer dan twee keer het commando Read Binary uit
met het verwachte aantal bytes in de response gelijk aan 1; één keer met offset =
(Length_EF.Driver_Activity_Data – 1) voor Length_1_MSB en één keer met offset = 20
(‘00 14’H) voor Length_1_LSB. Bereken dan PreviousDayRecordLength = 256 x Length_1_MSB
+ Length_1_LSB.
-
7. Als ‘00 14’H <= Pointer_1 < (Length_EF.Driver_Activity_Data – 1) is, dan kan PreviousDayRecordLength
in één keer worden uitgelezen met het commando Read Binary met offset = Pointer_1
en het verwachte aantal bytes in de response 2.
-
8. Als PreviousDayRecordLength gelijk is aan ‘00 00’H, dan is er geen vorig DailyRecord
en dan moet de functie hier worden afgebroken.
-
9. Bereken nu voorlopig Pointer_2 = CurrentDailyRecordPointer – PreviousDayRecordLength.
-
10. Indien Pointer_2 kleiner is dan ‘00 14’H (20), voer dan nog de volgende correctie
uit:
Pointer_2 = Length_EF.Driver_Activity_Data – (20 – Pointer_2).
-
11. Geef nu de gevraagde DailyRecordPointer = Pointer_2 terug.
8.15 Selecteer volgende DailyRecord
Naam
|
SelectNextDailyRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
CurrentDailyRecordPointer (bereik ‘00 14’H t/m (Length_EF.Driver_Activitiy_Data –
1))
PointerLastDayRecord
|
Resultaat
|
DailyRecordPointer || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Indien EF.Driver_Activity_Data nog niet geselecteerd is, selecteer EF.Driver_Activity_Data
met het commando Select met P1P2 = ‘04 0C’H en data = ‘E8 28 BD 08 0F A0 00 00 01
67 45 53 49 47 4E’H, gevolgd door het commando Select met P1P2 = ‘02 0C’H en data
= ‘44 01’H.
-
2. Indien PointerLastDayRecord niet was meegegeven als inputgegeven, lees dan PointerLastDayRecord
met het commando Read Binary met offset = 2 en het verwachte aantal bytes in de respons
2.
-
3. Als CurrentDailyRecordPointer gelijk is aan PointerLastDayRecord, dan is de geselecteerde
DailyRecord de laatste (meest recente) en is er geen volgende DailyRecord aanwezig.
Breek dan deze functie af.
-
4. Zet Pointer_1 = CurrentDailyRecordPointer om de pointer naar DayRecordLength te verkrijgen.
-
5. Als Pointer_1 precies gelijk is aan (Length_EF.Driver_Activity_Data – 1), dan staat
de MSB van DayRecordLength in de laatste byte van EF.Driver_Activity_Data en de LSB
op positie ‘00 14’H (20). Voer dan twee keer het commando Read Binary uit met het
verwachte aantal bytes in de response gelijk aan 1; één keer met offset = (Length_EF.Driver_Activity_Data
– 1) voor Length_1_MSB en één keer met offset = 20 (‘00 14’H) voor Length_1_LSB. Bereken
dan DayRecordLength = 256 x Length_1_MSB + Length_1_LSB.
-
6. Als ‘00 14’H <= Pointer_1 < (Length_EF.Driver_Activity_Data – 1) is, dan kan DayRecordLength
in één keer worden uitgelezen met het commando Read Binary met offset = Pointer_1
en het verwachte aantal bytes in de response 2.
-
7. Bereken nu voorlopig Pointer_2 = CurrentDailyRecordPointer + DayRecordLength.
-
8. Als Pointer_2 >= Length_EF.Driver_Activity_Data herbereken dan de positie met de formule:
Pointer_2 = (Pointer_2 modulo Length_EF.Driver_Activity_Data) + ‘00 14’H (20)
-
9. Geef nu de gevraagde DailyRecordPointer = Pointer_2 terug.
8.16 Lees huidige / geselecteerde DailyRecord
Naam
|
ReadSelectedDailyRecord
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
CurrentDailyRecordPointer (bereik ‘00 14’H t/m (Length_EF.Driver_Activitiy_Data –
1))
|
Resultaat
|
Data || ‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van de implementatie
|
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Indien EF.Driver_Activity_Data nog niet geselecteerd is, selecteer EF.Driver_Activity_Data
met het commando Select met P1P2 = ‘04 0C’H en data = ‘E8 28 BD 08 0F A0 00 00 01
67 45 53 49 47 4E’H, gevolgd door het commando Select met P1P2 = ‘02 0C’H en data
= ‘44 01’H.
-
2. Zet Pointer_1 = CurrentDailyRecordPointer om de pointer naar DayRecordLength te verkrijgen.
-
3. Als Pointer_1 precies gelijk is aan (Length_EF.Driver_Activity_Data – 1), dan staat
de MSB van DayRecordLength in de laatste byte van EF.Driver_Activity_Data en de LSB
op positie ‘00 14’H (20). Voer dan twee keer het commando Read Binary uit met het
verwachte aantal bytes in de response gelijk aan 1; één keer met offset = (Length_EF.Driver_Activity_Data
– 1) voor Length_1_MSB en één keer met offset = 20 (‘00 14’H) voor Length_1_LSB. Bereken
dan DayRecordLength = 256 x Length_1_MSB + Length_1_LSB.
-
4. Als ‘00 14’H <= Pointer_1 < (Length_EF.Driver_Activity_Data – 1) is, dan kan DayRecordLength
in één keer worden uitgelezen met het commando Read Binary met offset = Pointer_1
en het verwachte aantal bytes in de response 2.
-
5. Onthou de DayRecordLength nu voorlopig als Length_1.
-
6. Voer Read Binary commando’s uit tot Length_1 bytes gelezen zijn. Per Read Binary kan
een maximaal aantal bytes gelezen worden. Dit maximum is van een aantal factoren afhankelijk
(zie referentie [7]) en wordt hier max_read genoemd. De eerste Read Binary heeft als
offset Pointer_1 en het verwachte aantal bytes ‘00’H (in het geval dat Length_1 <
max_read, dan wordt het verwachte aantal bytes Length_1). Voor iedere volgende Read
Binary wordt de offset met max_read verhoogd. Het verwachte aantal bytes in de response
is ‘00’H, behalve bij de laatste Read Binary, daar is het Length_1 modulo max_read.
NB. Voorafgaand aan elke Read Binary moet worden gecontroleerd of de te lezen bytes
verder zouden doorlopen dan EF.Driver_Activity_Data groot is. In zo’n geval dient
de betreffende Read Binary in twee slagen te worden uitgevoerd:
-
a. De eerste keer met een ongewijzigde offset en een aangepast verwacht aantal_bytes
(aantal_bytes_a), zijnde (Length_EF.DriverActivity_Data – offset_a);
-
b. De tweede keer met een gecorrigeerde offset gelijk aan 20 (‘00 14’H) en het restant
van het verwachte aantal_bytes, zijnde aantal_bytes_b = aantal_bytes – aantal_bytes_a.
-
c. Hierna kan vanaf offset (‘00 14’H + aantal_bytes_b) worden vervolgd met de eerstvolgende
reguliere Read Binary.
8.17 Controleer EF.Driver_Activity_Data structuur
Naam
|
CheckEFDriverActivityStructure
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Geen
|
Resultaat
|
00 OK
01 Invalid Pointer Value
02 Wrong Length
03 Length Not Matching
04 Record Not Closed
05 Invalid PW Pointer
06 DayRecordLength Wrong
07 DriverCardNumber was overwritten
|
Hiervoor moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.Driver_Activity_Data met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 01’H.
-
2. Lees PointerOldestDayRecord en PointerLastDayRecord.
-
3. Controleer:
20 (‘00 14’H) <= PointerOldestDayRecord < Length_EF.Driver_Activity_Data of
PointerOldestDayRecord == 0.
Wanneer dit niet het geval is, geef dan “Invalid Pointer Value” terug.
-
4. Controleer:
20 (‘00 14’H) <= PointerLastDayRecord < Length_EF.Driver_Activity_Data of
PointerLastDayRecord == 0.
Wanneer dit niet het geval is, geef dan “Invalid Pointer Value” terug.
-
5. Controleer of DriverCardNumber gelijk is aan de eerste 20 bytes (karakters) van het
subject.SerialNumber van het authenticiteitcertificaat.
Wanneer dit niet het geval is, geef dan “DriverCardNumber was overwritten” terug (en
herstel de fout).
-
6. Controleer de DailyRecord structuur (voorwaarts):
-
a. Ga met de PointerOldestDayRecord naar de oudste DailyRecord.
-
b. Controleer of PreviousDayRecordLength = ‘00 00’H.
Wanneer dit niet het geval is, geef dan “Wrong Length” terug.
-
c. Bepaal mbv de DayRecordLength de positie van het volgende DailyRecord.
-
d. Controleer of de PreviousDayRecordLength in dit record gelijk is aan de DayRecordLength
van het vorige record.
Wanneer dit niet het geval is, geef dan “Length Not Matching” terug.
-
e. Herhaal de vorige 2 punten totdat
-
– het beginpunt van een record gelijk is aan PointerLastDayRecord, of
-
– de referenties DayRecordLength/PreviousDayRecordLength niet meer kloppen. Beschouw
dan het DailyRecord waar dit nog wel correct was als laatste record. Pas in dit geval
ook de PointerLastDayRecord aan.
-
7. Controleer de DailyRecord structuur (terugwaarts):
-
a. Ga met de PointerLastDayRecord naar de laatste DailyRecord.
-
b. Bepaal mbv de PreviousDayRecordLength de positie van het vorige DailyRecord.
-
c. Controleer of de DayRecordLength in dit record gelijk is aan de PreviousDayRecordLength
van het volgende record.
Wanneer dit niet het geval is, geef dan “Length Not Matching” terug.
-
d. Herhaal de vorige 2 punten totdat
-
– het beginpunt van een record gelijk is aan PointerOldestDayRecord, of
-
– de referenties DayRecordLength/PreviousDayRecordLength niet meer kloppen.
In het eerste geval moet de PreviousDayRecordLength = ‘00 00’H. Wanneer dit niet het
geval is, geef dan “Wrong Length” terug.
Beschouw in het tweede geval het DailyRecord waar dit nog wel correct was als oudste
record. Pas in dat geval ook PointerOldestDayRecord en PreviousDayRecordLength aan.
-
8. Controleer de laatste DailyRecord:
-
a. Ga met de PointerLastDayRecord naar de laatste DailyRecord.
-
b. Ga naar het eerste SessionRecord in het DailyRecord (PointerLastDayRecord + 10).
-
c. Controleer of dit SessionRecord het laatste is door de beginpositie hiervan te vergelijken
met de PointerLastSessionRecord.
-
d. Is dit niet het laatste SessionRecord, controleer dan met PointerLastActivityRecord
of de laatste activiteit een “Afsluiting” of een “Dagovergang” is. Is dit niet het
geval, geef dan ”Record Not Closed” terug.
Ga met behulp van PointerLastActivityRecord + de lengte van de laatste activiteit
naar het volgende SessionRecord en herhaal het vorige punt.
-
e. Controleer in het laatste SessionRecord of de PointerLastPWActivityRecord verwijst
naar een “Start pauze” of “Start werk” activiteit.
Is dit niet het geval, geef dan een “Invalid PW Pointer” terug.
-
f. Controleer of de lengte van alle SessionRecords in dit DailyRecord samen gelijk is
aan de DayRecordLength – 10.
Is dit niet het geval, geef dan “DayRecordLength Wrong” terug.
-
9. Bij alle controles en leesacties moet rekening gehouden worden met de lengte van EF.Driver_Activity_Data.
8.18 Controleren op opgeslagen boordcomputercertificaat
Naam
|
IsCertificatePresent
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Systeemkaartnummer
|
Resultaat
|
Recent||‘90 00’H Certificaat aanwezig met ranking Recent (‘01’H-‘03’H)
‘6A 82’H Certificaat niet aanwezig op chauffeurskaart
|
In deze functie wordt gecontroleerd of het certificaat behorende bij het systeemkaartnummer
al opgeslagen is in EF.BCT_Certificates.
Voor deze functie moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.BCT_Certificates met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 02’H.
-
2. Lees Index_1 t/m Index_3 met het commando Read Binary met offset = 3 (‘00 03’H) en
het aantal verwachte bytes in de response 21 (‘15’H), en controleer of Index_x overeenkomt
met het systeemkaartnummer.
Zo ja, lees dan de bijbehorende Rank_x met het commando Read Binary met offset = de
offset voor Rank_x en het aantal verwachte bytes in de response 1 en geef het resultaat
|| ‘90 00’H terug.
Komt het systeemkaartnummer niet voor, geef dan de foutcode dat het certificaat niet
gevonden is.
8.19 Volgorde bijwerken van opgeslagen boordcomputercertificaten
Naam
|
UpdateRanking
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Systeemkaartnummer
|
Resultaat
|
‘90 00’H OK
‘6A 82’H Certificaat niet aanwezig op chauffeurskaart
|
Indien het certificaat behorende bij het systeemkaartnummer aanwezig is in EF.BCT_Certificates,
wordt deze als meest recente in de Rank gezet.
Voor deze functie moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.BCT_Certificates met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 02’H.
-
2. Lees Index_1 t/m Index_3 met het commando Read Binary met offset = 3 (‘00 03’H) en
het aantal verwachte bytes in de response 21 (‘15’H) en controleer of één hiervan
overeenkomt met het systeemkaartnummer.
Zo niet, geef dan de foutcode terug dat het bijbehorende certificaat niet aanwezig
is.
Zo ja, lees dan de bijbehorende Rank_Highest
8.20 Geef opgeslagen boordcomputercertificaat
Naam
|
GetCertificate
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Systeemkaartnummer
|
Resultaat
|
Certificate||‘90 00’H OK
‘6A 82’H Certificaat niet aanwezig op chauffeurskaart
|
Indien het certificaat behorende bij het systeemkaartnummer aanwezig is in EF.BCT_Certificates,
wordt dit als resultaat terug gegeven.
Voor deze functie moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.BCT_Certificates met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 02’H.
-
2. Lees Index_1 t/m Index_3 met het commando Read Binary met offset = 3 (‘00 03’H) en
het aantal verwachte bytes in de response 21 (‘15’H) en controleer of één hiervan
overeenkomt met het systeemkaartnummer.
Zo niet, geef dan de foutcode terug dat het bijbehorende certificaat niet aanwezig
is.
Zo ja, ga dan door met stap 3.
-
3. Voer Read Binary commando’s uit tot Length_1 (de certificaatlengte) bytes gelezen
zijn. Per Read Binary kan een maximaal aantal bytes gelezen worden. Dit maximum is
van een aantal factoren afhankelijk (zie referentie [7]) en wordt hier max_read genoemd.
De eerste Read Binary heeft als offset de offset voor Certificate_x en het verwachte
aantal bytes ‘00’H (in het geval dat Length_1 < max_read, dan wordt het verwachte
aantal bytes Length_1). Voor iedere volgende Read Binary wordt de offset met max_read
verhoogd. Het verwachte aantal bytes in de response is ‘00’H, behalve bij de laatste
Read Binary, daar is het Length_1 modulo max_read.
-
4. geef het resultaat || ‘90 00’H terug.
8.21 Sla boordcomputercertificaat op
Naam
|
StoreCertificate
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
Systeemkaartnummer, certificaat
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van smartcard implementatie
|
Het systeemkaartnummer wordt met het bijbehorende certificaat als meest recente opgeslagen
in EF.BCT_Certificates. Hierbij wordt de plaats van het minst recente certificaat
overschreven.
Voor deze functie moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.BCT_Certificates met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 02’H.
-
2. Lees Rank_1 t/m Rank_3 met het commando Read Binary met offset = 0 en het aantal verwachte
bytes in de response 3, en zoek de eerste waarde ‘00’ of ‘03’. Dit is Rank_target.
-
3. Sla het systeemkaartnummer op in Index_target met het commando Update Binary met offset
= de offset voor Index_target en het systeemkaartnummer als data.
-
4. Sla het certificaat op in Certificate_target met een reeks Update Binary commando’s
met de offset van het eerste commando gelijkgezet aan de offset voor Certificate_target
en telkens de volgende max_write bytes van het certificaat als data. Indien het certificaat
korter is dan de gereserveerde lengte voor het certificaat, vul bij het laatste Update
Binary commando de rest dan aan met nullen (‘00’).
NB. de hoogte van max_write is van een aantal factoren afhankelijk (zie referentie
[7]).
-
5. Voor Rank_1 t/m Rank_3, met uitzondering van Rank_target: als de inhoud van Rank_x
> 0, verhoog de inhoud dan met 1. Maak Rank_target = ‘01’.
-
6. Geef ‘90 00’H terug.
8.22 Geef meest recente DownloadLog
Naam
|
GetLastDownloadLog
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
geen
|
Resultaat
|
DownloadLog || ‘90 00’H OK
‘6A 82’H DownloadLog niet aanwezig op chauffeurskaart
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van smartcard implementatie
|
Voor deze functie moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.BCT_Certificates met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 02’H.
-
2. Lees IndexOldestDL met het commando Read Binary met offset = ‘18 B4’H en het aantal
verwachte bytes in de response 1
-
3. Indien de gelezen waarde ‘00’H is, zet dan de IndexNewestDL (variabele in het geheugen)
op 7, anders wordt de IndexNewestDL gelijkgesteld aan IndexOldestDL – 1.
-
4. Bereken nu de offset van de (meest recente) DownloadLog_X behorende bij IndexNewestDL
als volgt: offset_x = ‘18 B5’H + 33 x IndexNewestDL.
-
5. Lees de aangeduide DownloadLog_X met het commando Read Binary met offset = offset_x
en het verwachte aantal bytes in de respons 33.
-
6. Indien de respons uit 33 nullen (‘00’H) bestaat, geef dan de foutcode terug dat er
geen DownloadLog records aanwezig zijn, retourneer anders de gelezen respons || ‘90
00’H.
8.23 Sla DownloadLog op
Naam
|
StoreDownloadLog
|
Gebruik
|
Chauffeurskaart
|
Input gegevens
|
DownloadLog
|
Resultaat
|
‘90 00’H OK
‘xx xx’H Foutcode van een van de gebruikte commando’s, afhankelijk van smartcard implementatie
|
Het in de Input opgegeven DownloadLog wordt als het meest recente opgeslagen in DownloadLogs
van EF.BCT_Certificates. Hierbij wordt de plaats van het minst recente DownloadLog
overschreven.
Voor deze functie moeten de volgende stappen doorlopen worden:
-
1. Selecteer EF.BCT_Certificates met het commando Select met P1P2 = ‘04 0C’H en data
= ‘E8 28 BD 08 0F A0 00 00 01 67 45 53 49 47 4E’H, gevolgd door het commando Select
met P1P2 = ‘02 0C’H en data = ‘44 02’H.
-
2. Lees IndexOldestDL met het commando Read Binary met offset = ‘18 B4’H en het aantal
verwachte bytes in de response 1
-
3. Sla het gegeven DownloadLog op in DownloadLogs met het commando Update Binary met
offset = ‘18 B5’H + 33 x IndexOldestDL. en het DownloadLog als data.
-
4. Indien de gelezen IndexOldestDL ‘07’H is, zet dan index_new = ‘00’H, zet anders index_new
op IndexOldestDL + 1.
-
5. Sla de bijgewerkte index op met het commando Update Binary met offset = ‘18 B4’H en
index_new (1 byte) als data.
-
6. Geef ‘90 00’H terug.
9 Commando’s
De communicatie met de boordcomputerkaarten gebeurt door middel van commando-antwoord
paren. Het commando wordt naar de boordcomputerkaart toegestuurd en daarop komt een
antwoord terug.
Een commando bestaat uit:
-
• een Class byte (CLA),
-
• een Instruction byte (INS),
-
• een Parameter 1 byte (P1),
-
• een Parameter 2 byte (P2),
-
• een Lengte gegevens byte (Lc) in het geval er gegevens zijn,
-
• gegevens (Data), optioneel
-
• een verwachte lengte antwoord byte (Le), optioneel.
Een antwoord bestaat uit:
Dit hoofdstuk geeft enkele tips voor het gebruik van de commando’s voor het selecteren,
uitlezen en beschrijven van transparante elementaire files (transparent EF’s). Voor
de exacte opbouw van de commando-antwoord paren wordt echter verwezen naar Referentie
[7].
De paragrafen hieronder vermelden bepaalde file identifiers en short EF identifiers.
Voor een volledig overzicht van de beschikbare short EF identifiers (SFIDs) wordt
verwezen naar Referenties [8] t/m [12].
9.1 Selecteren van EF’s
Voordat een EF kan worden uitgelezen of beschreven, dient deze geselecteerd te worden.
Voordat een EF geselecteerd kan worden, dient eerst de Dedicated File (DF) waar deze
EF onderdeel van uitmaakt te worden geselecteerd. Conform Referenties [8] t/m [12]
bevat elke BCT kaart de volgende twee DF’s:
-
1. De Master File (MF)
te selecteren met INS P1 P2 Lc Data = ‘A0 00 0C 02 3F00’H
-
2. De Application DF (DF.CIA)
te selecteren met INS P1 P2 Lc Data = ‘A4 04 0C 0F E828BD080FA000000167455349474E’H
De verwachte respons op elk van de bovenstaande commando’s is SW1-SW2 = ’90 00’H.
Nadat de betreffende DF is geselecteerd, kan elke daarin opgenomen EF op een van de
volgende wijzen worden geselecteerd:
-
1. Met een expliciete SELECT op basis van de 2-bytes file identifier (FID):
INS P1 P2 Lc Data = ‘A4 02 0C 02 (FID)
-
2. Met een expliciete SELECT inclusief opvragen van de file control parameters:
INS P1 P2 Lc Data Le = ‘A4 02 04 02 (FID) 00
-
3. Met een impliciete SELECT als onderdeel van het data handling commando:
-
a. Voor offsets < 256:
INS = INS met bit1 = 0 (EVEN instruction)
P1 = bit8 t/m bit6 = 100b || bit5 t/m bit1 = short EF id
P2 = offset [0...255]
Lc Data Le = afhankelijk van de instructie
-
b. Voor 0 <= offsets < ∞:
INS = INS met bit1 = 1 (ODD instruction)
P1P2 = bit16 t/m bit6 = 0...0b || bit5 t/m bit1 = short EF id
of
P1P2 = file identifier
Lc = de lengte van Data
Data = minimaal een “offset data object” met tag = 54h
Le = afhankelijk van de instructie
9.2 Uitlezen van een nog niet geselecteerde EF vanaf een offset < 256
Als voorbeeld van efficiënt coderen volgt hier de kleinste commandoreeks waarmee de
4e t/m 7e byte (willekeurig voorbeeld) van EF.BCT_Certificates kunnen worden uitgelezen:
INS
|
P1
|
P2
|
Lc
|
Data
|
Le
|
Betekenis
|
A4
|
04
|
0C
|
0F
|
E828BD080F
A000000167
455349474E
|
|
Selecteer de DF.CIA obv de AID
|
B0
|
94
|
03
|
|
|
04
|
Impliciete SELECT van SFID = 14h, gevolgd door uitlezen van 4 bytes vanaf offset 3
|
9.3 Uitlezen van de huidige EF vanaf een offset kleiner 32768
Als voorbeeld van efficiënt coderen volgt hier het kleinste commando waarmee de 4000e t/m 4050e byte (willekeurig voorbeeld) van de momenteel geselecteerde EF kunnen worden uitgelezen:
INS
|
P1
|
P2
|
Lc
|
Data
|
Le
|
Betekenis
|
B0
|
1F
|
3F
|
|
|
33
|
Lees 51 (33h) bytes vanaf offset 7999 (1F3Fh) uit de momenteel geselecteerde EF.
|
9.4 In de huidige DF Uitlezen van een EF vanaf een offset groter dan 32767
Als voorbeeld van efficiënt coderen volgt hier de kleinste commandoreeks waarmee de
40000e t/m 40001e byte en dan de 40002e t/m 40003e byte (willekeurig voorbeeld) van de nog niet eerder geselecteerde EF.Driver_Activity_Data
kunnen worden uitgelezen (uitgangspunt is dat de DF.CIA wel al geselecteerd is):
INS
|
P1
|
P2
|
Lc
|
Data
|
Le
|
Betekenis
|
B1
|
00
|
13
|
04
|
54 02 9C3F
|
02
|
Selecteer de EF met short file identifier (SFI) 13h en lees 2 (02h) bytes vanaf offset
39999 (9C3Fh) uit die EF.
|
B1
|
00
|
00
|
04
|
54 02 9C41
|
02
|
Lees de volgende 2 bytes uit diezelfde EF.
|
9.5 Opvragen van de FCP’s o.a. voor de grootte van EF.Driver_Activity_Data
Omdat EF.Driver_Activity_Data per chauffeurskaart een eigen grootte heeft, is het
noodzakelijk om minimaal één keer per kaartsessie te achterhalen wat die grootte exact
is. Hiervoor biedt de chip (conform referentie [7]) en diens personalisatie de mogelijkheid
om van EF’s de file control parameters (FCP) op te vragen. Er van uitgaande dat de
DF.CAI reeds is geselecteerd, is het betreffende commando voor de EF.Driver_Activity_Data
als volgt:
INS
|
P1
|
P2
|
Lc
|
Data
|
Le
|
Betekenis
|
A4
|
02
|
04
|
02
|
4401
|
00
|
A4 = SELECT
02 = selecteer een EF
04 = vraag ook om FCP
02 = lengte van Data
4401 = EF file identifier
00 = retourneer alle beschikbare bytes
|
De chips zijn zodanig geprogrammeerd dat dit resulteert in de volgende respons (voorbeeld):
62 1B 80 02 xx xx 82 01 01 83 02 44 01 88 01 98 A1 08 8C 02 01 00 9C 02 01 00 8A 01
05 90 00
De betekenis van deze respons is hieronder uitgewerkt:
Bytes
|
Betekenis
|
62 1B
|
Hier volgen 27 (1Bh) bytes met FCP informatie
|
|
80 02 xx xx
|
De lengte van de file is gecodeerd in 2 bytes en bedraagt xxxx
|
|
82 01 01
|
Het file descriptor byte is 01h; het betreft een transparante EF
|
|
83 02 44 01
|
De file identifier van deze file is 4401h
|
|
88 01 98
|
De short file identifier van deze file is 13h
(deze is gecodeerd in b8 t/m b4 van het derde byte, omdat b3 t/m b1 0 zijn):
10011000
|
|
A1 08
|
Hier volgen 8 bytes met proprietary security attributen (dit zijn voorbeelden. Voor
daadwerkelijke invulling zie Referentie [7])
|
|
8C 02 01 00
|
2 bytes met proprietary security attributen voor contactchip
|
|
9C 02 01 00
|
2 bytes met proprietary security attributen voor contactloze chip
|
|
8A 01 05
|
Het life cycle status byte van deze EF is 05h (operational state – activated)
|
90 00
|
SW1-SW2 geeft “Normal processing” aan
|
Voor een compleet overzicht van FCP wordt verwezen naar § 3.3.4.1 van Referentie [7].
10 Referenties
De onderstaande referenties worden in dit document gebruikt:
-
[1] [1] ISO/IEC 7816-4 Identification cards – Integrated circuit cards – Part 4: Organization,
security and commands for interchange. Edition: 2005.
-
[2] ISO/IEC 7816-8 Identification cards – Integrated circuit cards – Part 8: Commands
for security operations. Edition: 2004.
-
[3] ISO/IEC 7816-15 Identification cards – Integrated circuit cards with contacts – Part
15: Cryptographic information application (2004-01-15).
-
[4] ISO/IEC 9797-1 Information technology – Security techniques – Message Authentication
Codes (MACs) – Part 1: Mechanisms using a block cipher.
-
[5] [9] ISO/IEC 9797-2 Information technology – Security techniques – Message Authentication
Codes (MACs) – Part 2: Mechanisms using a dedicated hash-function.
-
[6] [11] CWA 14890-1 Application Interface for smart cards used as Secure Signature Creation
Devices – Part 1: Basic requirements. March 2004.
-
[7] [13] European card for e-services and national e-ID applications (IAS ECC) – Technical
Specifications – Revision 1.0.1 – February 2009.
-
[8] BCT Kaartstructuur Systeemkaart v1.6. Inspectie Verkeer en Waterstaat.
-
[9] BCT Kaartstructuur Chauffeurskaart v1.6. Inspectie Verkeer en Waterstaat.
-
[10] BCT Kaartstructuur Ondernemerskaart v1.6. Inspectie Verkeer en Waterstaat.
-
[11] BCT Kaartstructuur Keuringskaart v1.6. Inspectie Verkeer en Waterstaat.
-
[12] BCT Kaartstructuur Inspectiekaart v1.6. Inspectie Verkeer en Waterstaat.
-
[13] BCT Certificaatprofielen en CRL model BCT kaarten v1.2. Inspectie Verkeer en Waterstaat.
-
[14] Regeling specificaties en typegoedkeuring boordcomputer taxi. Inspectie Verkeer en
Waterstaat.
-
[15] Certificaatprofielen BCT Kaart CA's v1.0. Inspectie Verkeer en Waterstaat.
-
[16] Generieke certificaatprofielen MinVenW PKIoverheid CSP v1.1, Ministerie van Verkeer
en Waterstaat
11 Begrippen en afkortingen
De onderstaande begrippen en afkortingen worden in dit document gebruikt:
ATR
|
Antwoord op terugstellen
|
BCT
|
BoordComputer Taxi
|
CBC
|
Cipher Block Chaining
|
CC
|
Cryptografische controlesom
|
CG
|
Cryptogram
|
CH
|
Commando-kop
|
CLA
|
Klasse byte in CH
|
D()
|
Decodering met DES
|
DES
|
Data encryptie standaard
|
DO
|
Gegevensobject
|
E()
|
Codering met DES
|
Hash
|
Hashing
|
INS
|
Instructie byte in CH
|
IVW
|
Inspectie Verkeer en Waterstaat
|
Lc
|
Lengte van de data in een commando
|
Le
|
Lengte van het verwachte antwoord in een commando
|
MAC
|
Message Authentication Code
|
PB
|
Padding bytes
|
PI
|
Padding indicatorbyte (voor gebruik bij cryptogram voor vertrouwelijkheid DO)
|
PIN
|
Persoonlijk identificatie nummer
|
PKCS
|
Public Key Cryptography Standards
|
PUK
|
PIN unblock key
|
PV
|
Ongecodeerde waarde
|
P1
|
Parameter 1 byte in CH
|
P2
|
Parameter 2 byte in CH
|
RSA
|
Asymmetrisch encryptiealgoritme
|
SSC
|
Zendsequentieteller
|
SM
|
Beveiligde overbrenging
|
SW
|
Status woord (2 bytes) in een antwoord
|
TLV
|
Label – lengte – waarde
|
XOR
|
Exclusieve disjunctie
|
‘xx'B
|
Bit waarde
|
‘xx'H
|
Hexadecimale waarde
|
3DES
|
Drievoudig DES algoritme
|
||
|
Verbindingsoperator
|
Bijlage A Scenario’s kaartsessies
Hieronder volgt een aantal scenario’s die het wegschrijven van gegevens op de chauffeurskaart
tijdens een kaartsessie toelichten.
A.1 Scenario 1: Normale kaartsessie
-
• De kaartsessie wordt begonnen met het inbrengen van de chauffeurskaart in de boordcomputer.
-
• Er zijn geen wijzigingen of aanvullingen sinds de vorige kaartsessie.
-
• Diverse activiteiten vinden plaats en worden op de chauffeurskaart opgeslagen.
-
• De kaartsessie wordt normaal afgesloten waarna de chauffeurskaart uit de boordcomputer
genomen kan worden.
Activiteit
|
Tijdstip
|
Handm.
|
Login
|
8:00:00
|
‘0’B
|
Start werk
|
8:00:00
|
‘0’B
|
Start pauze
|
10:30:00
|
‘0’B
|
Start werk
|
11:00:00
|
‘0’B
|
Afsluiting
|
13:15:00
|
‘0’B
|
A.2 Scenario 2: Sessie afgesloten met pauze, nieuwe sessie met einde pauze
-
• Bij een bestaande kaartsessie wordt op de boordcomputer ingegeven dat de pauze begint.
Hierna wordt de kaartsessie afgesloten en de chauffeurskaart uit de boordcomputer
genomen.
-
• Na het opnieuw inbrengen van de chauffeurskaart constateert de boordcomputer dat de
vorige sessie na een “Start pauze” werd afgesloten. Omdat een arbeidsperiode hiermee
lijkt te eindigen met een pauze, wordt de chauffeur hier extra op geattendeerd. Sowieso
vraagt de boordcomputer of er nog activiteiten moeten worden toegevoegd sinds de laatste
activiteit. De chauffeur besluit zijn bezigheden (pauze genieten) tussen die laatste
afsluiting en het huidige inlogmoment handmatig te boeken, om te voorkomen dat hij
de periode tussen afsluiten en inloggen niet kan verantwoorden.
-
• Omdat bij het inbrengen van de chauffeurskaart standaard een “Start werk” toegevoegd
wordt, hoeft de chauffeur, na de handmatige toevoeging, het hervatten van werk niet
expliciet aan te geven.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
...
|
|
|
n
|
Start pauze
|
13:14:30
|
‘0’B
|
n
|
Afsluiting
|
13:15:00
|
‘0’B
|
n
|
|
|
|
|
Start pauze
|
13:15:00
|
‘1’B
|
n+1
|
Login
|
13:45:00
|
‘0’B
|
n+1
|
Start werk
|
13:45:00
|
‘0’B
|
n+1
|
...
|
|
|
n+1
|
A.3 Scenario 3: Sessie afgesloten met pauze, nieuwe sessie met einde pauze en andere
werkzaamheden
-
• Bij een bestaande kaartsessie wordt op de boordcomputer ingegeven dat de pauze begint.
Hierna wordt de kaartsessie afgesloten en de chauffeurskaart uit de boordcomputer
genomen.
-
• Na het opnieuw inbrengen van de chauffeurskaart constateert de boordcomputer dat de
vorige sessie na een “Start pauze” werd afgesloten. Omdat een arbeidsperiode hiermee
lijkt te eindigen met een pauze, wordt de chauffeur hier extra op geattendeerd. Sowieso
vraagt de boordcomputer of er nog activiteiten moeten worden toegevoegd sinds de laatste
activiteit. De chauffeur besluit zijn bezigheden (pauze genieten) na die laatste afsluiting
handmatig te boeken.
-
• De werkzaamheden waren in werkelijkheid echter eerder gestart dan het moment van inloggen,
daarom wordt voorafgaand aan het inlogmoment ook nog handmatig een “Start werk” toegevoegd.
De pauze stopt hiermee dus eerder dan het inlogmoment.
-
• De boordcomputer boekt zelf ook nog een “Start werk” na de inlogboeking.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
...
|
|
|
n
|
Start pauze
|
13:14:30
|
‘0’B
|
n
|
Afsluiting
|
13:15:00
|
‘0’B
|
n
|
|
|
|
|
Start pauze
|
13:15:00
|
‘1’B
|
n+1
|
Start werk
|
13:30:00
|
‘1’B
|
n+1
|
Login
|
13:45:00
|
‘0’B
|
n+1
|
Start werk
|
13:45:00
|
‘0’B
|
n+1
|
...
|
|
|
n+1
|
A.4 Scenario 4: Sessie afgesloten, volgende dag toevoegen van andere werkzaamheden
aan de vorige dag
-
• Na de laatste activiteit wordt de kaartsessie afgesloten en de chauffeurskaart uit
de boordcomputer genomen.
-
• Bij het inbrengen van de chauffeurskaart in de boordcomputer de volgende dag, wordt
gevraagd of er nog activiteiten sinds het einde van de vorige kaartsessie zijn geweest.
Dat is het geval, want er zijn de vorige dag, na het verlaten van de auto, nog andere
werkzaamheden verricht. Dit wordt eerst toegevoegd.
-
• Daarna kunnen de activiteiten voor de nieuwe dag beginnen.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
...
|
|
|
n
|
Start werk
|
13:00:00
|
‘0’B
|
n
|
Afsluiting
|
15:15:00
|
‘0’B
|
n
|
|
|
|
|
Start werk
|
15:15:00
|
‘1’B
|
n+1
|
Nieuwe eindtijd
|
16:15:00
|
‘1’B
|
n+1
|
|
|
|
|
Hier wordt ook een nieuw DailyRecord met een eerste SessionRecord ingevoegd
|
|
|
|
|
Login
|
9:00:00
|
‘0’B
|
n+2
|
Start werk
|
9:01:00
|
‘0’B
|
n+2
|
...
|
|
|
n+2
|
A.5 Scenario 5: Sessie afgesloten, pauze vervangen door andere werkzaamheden
-
• Bij een bestaande kaartsessie wordt op de boordcomputer ingegeven dat de pauze begint.
Hierna wordt de kaartsessie afgesloten en de chauffeurskaart uit de boordcomputer
genomen.
-
• Later blijkt dat de pauze niet doorgegaan is en dat in plaats daarvan andere werkzaamheden
verricht zijn tot het huidige tijdstip.
-
• Bij het inbrengen van de chauffeurskaart in de boordcomputer moet dit gecorrigeerd
worden. De boordcomputer zal de bestuurder attenderen op het feit dat de laatstgeboekte
en afgesloten activiteit een pauze was. Na het bevestigen van de vraag of er nog handmatig
activiteiten moeten worden toegevoegd, kan de chauffeur een “Start werk” laten ingaan
op hetzelfde moment dat de “Start pauze” begon. De pauze wordt hiermee in feite overschreven
door andere werkzaamheden.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
...
|
|
|
n
|
Start pauze
|
16:40:00
|
‘0’B
|
n
|
Afsluiting
|
16:41:00
|
‘0’B
|
n
|
|
|
|
|
Start werk
|
16:40:00
|
‘1’B
|
n+1
|
Login
|
17:10:00
|
‘0’B
|
n+1
|
Start werk
|
17:11:00
|
‘0’B
|
n+1
|
...
|
|
|
n+1
|
A.6 Scenario 6: Sessie niet afgesloten, vervolg zelfde werkzaamheden
-
• Bij een bestaande kaartsessie wordt op de boordcomputer ingegeven dat de pauze begint.
De chauffeur neemt de kaart uit zonder dat de kaartsessie is afgesloten. Hierop blokkeert
de boordcomputer deze kaartsessie.
-
• Enige tijd later (binnen de 60 minuten) wordt de chauffeurskaart weer in de boordcomputer
ingebracht. Omdat het dezelfde kaart is als waarvan de kaartsessie geblokkeerd is,
zal de boordcomputer deze blokkering opheffen.
-
• Omdat de kaart wel even verwijderd is geweest, zal de boordcomputer de chauffeur vragen
of er sinds de “Start pauze” nog (andere) activiteiten zijn geweest. Aangezien dit
niet het geval was, maakt de chauffeur geen gebruik van de mogelijkheid tot het handmatig
toevoegen van activiteiten.
-
• De boordcomputer boekt nu de login automatisch gevolgd door een “Start werk” (na inloggen
moet een boordcomputer namelijk altijd in werkniveau terechtkomen). Gezien het echter
nog pauze is, zal de chauffeur direct ingeven dat het (nog steeds/weer) pauze is.
Vanaf nu is het echter pauze met de kaart in de boordcomputer.
-
• De chauffeur beëindigt de pauze op het ogenblik dat hij weer gaat werken.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
Opmerking
|
...
|
|
|
n
|
|
Start pauze
|
15:00:00
|
‘0’B
|
n
|
|
(kaart uitnemen)
|
|
|
n
|
Sessie geblokkeerd op BCT
|
|
|
|
n
|
Sessie geblokkeerd op BCT
|
(kaart inbrengen)
|
|
|
n
|
Geen handm. toevoegingen
|
Login
|
15:30:00
|
‘0’B
|
n
|
Ingevoegd door BCT
|
Start werk
|
15:30:00
|
‘0’B
|
n
|
Ingevoegd door BCT
|
Start pauze
|
15:30:30
|
‘0’B
|
n
|
(terug)gezet door bestuurder
|
Start werk
|
15:40:00
|
‘0’B
|
n
|
Aangegeven door bestuurder
|
...
|
|
|
n
|
|
A.7 Scenario 7: Sessie niet afgesloten, andere activiteiten ertussendoor
-
• Bij een bestaande kaartsessie wordt op de boordcomputer ingegeven dat de pauze begint.
De chauffeur neemt zijn kaart uit de boordcomputer zonder af te sluiten. Hierop blokkeert
de boordcomputer de kaartsessie.
-
• Daarna wordt er met het voertuig gereden, zonder een chauffeurskaart (in zijn pauze
is dit toegestaan).
-
• Binnen 60 minuten na het uitnemen wordt de chauffeurskaart weer in de boordcomputer
gebracht, dus de kaartsessie is nog geblokkeerd. Het is dezelfde kaart die ingebracht
wordt als die waarvan de kaartsessie geblokkeerd is en dus wordt de blokkering opgeheven.
-
• De chauffeur begint weer met werken.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
...
|
|
|
n
|
Start pauze
|
16:00:00
|
‘0’B
|
n
|
(kaart uitnemen)
|
|
|
n
|
|
|
|
n
|
(rijden zonder chauffeurskaart)
|
|
|
n
|
|
|
|
n
|
(kaart inbrengen)
|
|
|
n
|
Login
|
16:25:00
|
‘0’B
|
n
|
Start werk
|
16:25:00
|
‘0’B
|
n
|
...
|
|
|
n
|
A.8 Scenario 8: Sessie niet afgesloten, later automatisch beëindigd
-
• Bij een bestaande kaartsessie wordt op de boordcomputer ingegeven dat de pauze begint.
De chauffeur neemt zijn kaart uit de boordcomputer zonder af te sluiten. Hierop blokkeert
de boordcomputer de kaartsessie.
-
• Aangezien er na 60 minuten nog niets gebeurd is, wordt op de boordcomputer de geblokkeerde
kaartsessie automatisch afgesloten.
-
• Als de chauffeur daarna zijn kaart weer in de boordcomputer brengt, wordt gesignaleerd
dat de sessie op de kaart niet goed afgesloten was.
-
• Verder wordt gevraagd of er nog activiteiten sinds het einde van de vorige kaartsessie
zijn geweest. Dat is zo, want de pauze was eigenlijk binnen de 60 minuten afgelopen
waarna andere werkzaamheden zijn begonnen.
-
• Omdat op de boordcomputer de sessie al beëindigd was, wordt een nieuwe kaartsessie
begonnen.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
...
|
|
|
n
|
Start pauze
|
16:00:00
|
‘0’B
|
n
|
(kaart uitnemen om 16:00:02)
|
|
|
|
(sessie time-out om 17:00:02)
|
|
|
|
(kaart inbrengen om 17:25:00)
|
|
|
|
(nieuw sessierecord)
|
|
|
|
Start werk
|
16:30:00
|
‘1’B
|
n+1
|
Login
|
17:25:00
|
‘0’B
|
n+1
|
Start werk
|
17:26:00
|
‘0’B
|
n+1
|
...
|
|
|
|
A.9 Scenario 9: Sessie niet afgesloten, kaart tussendoor in ander voertuig
-
• Boordcomputer A: de laatstgeboekte activiteit is “Start werk” en de chauffeur neemt
zijn kaart uit de boordcomputer zonder af te sluiten. Hierop blokkeert de boordcomputer
de kaartsessie (n). Er vinden voorlopig geen andere activiteiten plaats.
-
• Boordcomputer B: de chauffeurskaart wordt binnen de 60 minuten na het uitnemen uit
boordcomputer A ingebracht in B:
-
• Er wordt geconstateerd dat de vorige sessie (op A) niet goed afgesloten is.
-
• Er wordt een nieuwe kaartsessie (n+1) gestart.
-
• Er wordt gevraagd of er nog andere werkzaamheden of pauze moeten worden toegevoegd
of aangepast. Hierbij geeft de chauffeur aan dat hij 10 minuten voor het inloggen
met pauze ging, waarmee de periode tussen uitnemen van de kaart en de start van die
pauze kan worden beschouwd als een voortzetting van het werk (buiten de auto). Hierna
worden geen andere handmatige activiteiten opgevoerd, waardoor de boordcomputer het
inloggen zal boeken en in werkniveau zal gaan staan.
-
• Nieuwe activiteiten worden opgeslagen op de kaart.
-
• De kaartsessie wordt afgesloten binnen de 60 minuten na het uitnemen uit boordcomputer
A.
-
• Hierna werkt de chauffeur een kwartiertje buiten de auto.
-
• Boordcomputer A: de chauffeurskaart wordt ingebracht na het kwartiertje werk, maar
nog steeds binnen 60 minuten na het uitnemen uit boordcomputer A. Op boordcomputer
A is de kaartsessie dus nog steeds geblokkeerd:
-
• Het is dezelfde kaart die ingebracht wordt als die waarvan de kaartsessie geblokkeerd
is en dus wordt de blokkering opgeheven.
-
• Aangezien bij het uitlezen van de kaart gezien wordt dat er in de tussentijd een kaartsessie
op een andere boordcomputer is geweest, kan de gedeblokkeerde sessie niet worden voortgezet,
maar zal op boordcomputer A een nieuwe sessie (n+2) starten.
-
• De boordcomputer biedt de chauffeur de mogelijkheid om de laatste activiteit van de
vorige sessie (n+1) te vervangen, te wijzigen of aan te vullen. Hiervan maakt de chauffeur
gebruik door een handmatige “Start werk” op te voeren die start op het tijdstip dat
die vorige sessie (n+1) werd afgesloten. Het “kwartiertje werk” is hiermee verantwoord.
-
• Dan boekt boordcomputer A het nieuwste login tijdstip en gaat over tot niveau werken.
-
• De nieuwe kaartsessie (n+2) verloopt verder normaal.
Activiteit
|
Tijdstip
|
Handm.
|
SessionRecord
|
...
|
|
|
n
|
Start werk
|
16:00:00
|
‘0’B
|
n
|
(kaart uitnemen uit A om 17:00)
|
|
|
n
|
|
|
|
|
(kaart inbrengen in B om 17:25)
|
|
|
|
(nieuw sessierecord)
|
|
|
|
|
|
|
|
Start pauze (10 min pauze gehad)
|
17:15:00
|
‘1’B
|
n+1
|
Login
|
17:25:00
|
‘0’B
|
n+1
|
Start werk
|
17:25:00
|
‘0’B
|
n+1
|
Afsluiting
|
17:40:00
|
‘0’B
|
n+1
|
|
|
|
|
(kaart inbrengen in A om 17:55)
|
|
|
|
(nieuw sessierecord)
|
|
|
|
|
|
|
|
Start werk (opvullen van 15 min)
|
17:40:00
|
‘1’B
|
n+2
|
Login
|
17:55:00
|
‘0’B
|
n+2
|
Start werk
|
17:55:00
|
‘0’B
|
n+2
|
...
|
|
|
n+2
|
Bijlage B Referentie data
Hieronder volgt een aantal voorbeelden van functies met de uitgewerkte hexadecimale
codes. Dit geeft een beter inzicht in het toepassen van deze functies in de Boordcomputer
Taxi.
B.1 Het opzetten van Secure Messaging
Voor het opzetten van Secure Messaging, zoals beschreven staat in 4.6, worden de volgende
stappen uitgevoerd:
-
1. Lees de inhoud van EF.SN.ICC door middel van een read binary met SFI '1C'h en een
offset '00'h.
De laatste 8 bytes van de response data wordt gebruikt als SN.ICC.
-
2. Selecteer het te gebruiken algoritme voor de mutual authenticate en de symmetrische
sleutel referentie.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde 'C1'h
en P2 de waarde 'A4'h. De data bij dit commando is '80 01 8C 83 01 03'h ('8C'h om
“symmetric mutual authentication algorithm with SHA-256” aan te duiden en '03'h om
het Security Data Object (SDO) van PKI.KS.SM.ICC aan te duiden).
-
3. Vraag om een random waarde door middel van Get Challenge.
De response data is de RND.ICC.
-
4. Genereer een random waarde van 8 bytes voor RND.IFD, een random waarde van 32 bytes
voor K.IFD en bepaal een serienummer SN.IFD van 8 bytes.
-
5. Stel het bericht S samen:
S = RND.IFD || SN.IFD || RND.ICC || SN.ICC || K.IFD.
-
6. Bereken de encrypted waarde van S met CBC Triple DES encryptie, ICV '00'h en de encryptie
sleutel ENC.KEY (laatste 16 bytes van transportkey1):
ENC = CBCTDes('00', S, ENC.KEY).
-
7. Bereken de Retail MAC over de encrypted waarde van S met ICV '00'h en de MAC sleutel
MAC.KEY (eerste 16 bytes van transportkey1):
MAC = RMac('00', ENC || '80', MAC.KEY).
NB. Gebruik altijd padding met '80 ...' achter de data.
-
8. Voer een Mutual Authenticate commando uit met als data ENC || MAC.
-
9. Wanneer de status van de response '90 00'h is, is er ook response data beschikbaar.
-
a. Haal de encrypted data ENC_R en de MAC uit deze data.
-
b. Bereken de Retail MAC over ENC_R met ICV '00'h en de MAC sleutel MAC.KEY:
MAC_R = RMac('00', ENC_R || '80', MAC.KEY).
Ook hier moet weer de padding met '80 ...' gebruikt worden.
-
c. Bereken de decrypted waarde van ENC_R met Inverse CBC Triple DES encryptie, ICV '00'h
en de encryptie sleutel ENC.KEY:
DEC_S = InvCBCTDes('00', ENC_R, ENC.KEY).
-
10. Wanneer de berekende MAC_R gelijk is aan de MAC uit de response data van de Mutual
Authenticate, dan is DEC_S gelijk aan
RND.ICC || SN.ICC || RND.IFD || SN.IFD || K.ICC.
-
11. Hieruit kunnen de volgende waardes berekend worden:
-
• K_ICC_IFD = K.IFD xor K.ICC
-
• SK_ENC = 1e 16 bytes van SHA256(K_ICC_IFD || '00 00 00 01')
-
• SK_MAC = 1e 16 bytes van SHA256(K_ICC_IFD || '00 00 00 02')
-
• SSC = laatste 4 bytes RND.ICC || laatste 4 bytes RND.IFD
B.2 Het sturen van commando’s met Secure Messaging
Na het opzetten van de secure messaging verbinding, moeten alle volgende commando's
met secure messaging uitgevoerd worden. Dit staat beschreven in 4.1 t/m 4.5.
Hierbij worden de SK_ENC, SK_MAC en SSC gebruikt die na het opzetten van de secure
messaging verbinding te berekenen zijn (zie hierboven).
Om te komen van een normaal commando tot een commando onder secure messaging, moeten
de volgende stappen doorlopen worden:
-
1. Verhoog de SSC met 1.
-
2. De Cla byte 'xx' wordt 'xC' (Cla').
-
3. Als het commando data bevat (Lc > 0), dan moet deze data encrypt worden. Bereken de
encrypted waarde van de data met CBC Triple DES encryptie, ICV '00'h en de encryptie
sleutel SK_ENC:
ENC = CBCTDes('00', data || '80', SK_ENC).
Ook hier moet weer de padding met '80 ...' gebruikt worden.
-
4. De SecuredData waarover een Retail MAC berekend moet worden is afhankelijk van Lc
en Le:
-
• Lc > 0, Le > 0
SSC || Cla || Ins || P1 || P2 || '80' || '87' || Length(ENC)+1 || '01' || ENC || '97'
|| Length(Le) || Le || '80'
-
• Lc > 0, Le = 0
SSC || Cla || Ins || P1 || P2 || '80' || '87' || Length(ENC)+1 || '01' || ENC || '80'
-
• Lc = 0, Le > 0
SSC || Cla || Ins || P1 || P2 || '80' || '97' || Length(Le) || Le || '80'
-
• Lc = 0, Le = 0
SSC || Cla || Ins || P1 || P2 || '80'
Let op dat er padding met '80 ...' gebruikt moet worden na P2 en, indien Lc > 0 of
Le > 0, aan het eind van de data.
De te gebruiken ICV is '00'h en de te gebruiken sleutel is SK_MAC.
-
5. Het te versturen commando ziet er dan als volgt uit:
Cla' || Ins || P1 || P2 || Length(SecuredData) + 10 || SecuredData || '8E 08'|| MAC
|| '00'
-
6. Het formaat van de response onder secure messaging is afhankelijk van het terug krijgen
van data:
-
• data terug (even Ins)
'87' || Length(EncryptedData) + 1 || '01'|| EncryptedData || '99 02' || SW || '8E
08' || MAC || SW
-
• data terug (oneven Ins)
'85' || Length(EncryptedData) || EncryptedData || '99 02' || SW || '8E 08' || MAC
|| SW
-
• geen data terug
'99 02' || SW || '8E 08' || MAC || SW
-
7. Verhoog de SSC met 1.
-
8. Bereken een Retail MAC over de volgende data, afhankelijk van het formaat van de response:
-
• data terug (even Ins)
SSC || '87' || Length(EncryptedData) + 1 || '01'|| EncryptedData || '99 02' || SW
|| '80'
-
• data terug (oneven Ins)
SSC || '85' || Length(EncryptedData) || EncryptedData || '99 02' || SW || '80'
-
• geen data terug
SSC || '99 02' || SW || '80'
In alle gevallen wordt er op het eind padding met '80' gebruikt.
De te gebruiken ICV is '00'h en de te gebruiken sleutel is SK_MAC.
-
9. Vergelijk de berekende Retail MAC met de MAC uit de response. Deze moeten gelijk aan
elkaar zijn.
-
10. Zijn de ontvangen en berekende MAC gelijk aan elkaar, dan kan de EncryptedData, indien
aanwezig, decrypted worden.
Bereken de decrypted waarde van EncryptedData met Inverse CBC Triple DES encryptie,
ICV '00'h en de encryptie sleutel SK_ENC:
DecryptedData = InvCBCTDes('00', EncryptedData, SK_ENC).
Zie de tabel hieronder voor een voorbeeld van een commando, het commando met secure
messaging en het antwoord met secure messaging.
B.3 Het zetten van een handtekening met een boordcomputerkaart
B.3.1 SignDataLegally
Voor het zetten van een elektronische handtekening met een boordcomputerkaart, zoals
beschreven staat in 8.5, worden de volgende stappen uitgevoerd:
-
1. Allereerst moet het hash template met het te gebruiken algoritme geselecteerd worden.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde '41'h
en P2 de waarde 'AA'h. De data bij dit commando is '80 01 40'h ('40'h om de algoritme
identifier voor SHA-256 aan te geven).
-
2. Selecteer het te gebruiken algoritme en de private sleutel van de BCT Handtekening.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde '41'h
en P2 de waarde 'B6'h. De data bij dit commando is '80 01 42 84 01 86'h ('42'h om
“PKCS#1 v1.5 – SHA-256” aan te duiden en '86'h om het Security Data Object (SDO) van
PKI.CH.DS aan te duiden).
-
3. De private sleutel van de BCT Handtekening mag pas gebruikt worden nadat de PIN gevalideerd
is. Dit is nodig voor iedere keer dat deze sleutel gebruikt wordt. Dit wordt gedaan
met het commando Verify, waarbij P2 (de PIN reference) de waarde '01'h heeft. Voor
de PIN wordt PIN formaat 2 gebruikt.
-
4. Wanneer de input gegevens uit meer dan 64 bytes bestaan, moet er een intermediate
hash met SHA-256 berekend worden door de boordcomputerlogica. Hierbij wordt het laatste
gegevensblok niet gehashed, maar wordt de intermediate hash en het aantal gehashte
bits onthouden voor de volgende stap.
Wanneer het totaal aan input gegevens uit maximaal 64 bytes bestaat, wordt er geen
intermediate hash berekend en worden alle inputgegevens in de volgende stap gebruikt.
-
5. Het berekenen van de uiteindelijke hash met SHA-256 wordt door de boordcomputerkaart
gedaan. Hiervoor wordt het commando PSO Hash gebruikt. Hierbij worden de “intermediate
hash value”, het aantal gehashte bits en het laatste (of enige) blok inputdata van
minimaal 1 en maximaal 64 bytes opgenomen in het Dataveld van het commando. Bij een
succesvol uitgevoerde PSO HASH zal de uiteindelijke hash waarde in het chipgeheugen
van de boordcomputerkaart achterblijven ten behoeve van de volgende en laatste stap.
-
6. Met de gekozen private sleutel wordt de handtekening berekend over de in het chipgeheugen
aanwezige hashwaarde.
Dit wordt gedaan met het commando PSO Compute Digital Signature. Le, het verwachte
aantal bytes in de response, moet daarbij op '00'h staan.
-
7. Een elektronische handtekening kan gecontroleerd worden op de volgende manier:
-
a. Selecteer het certificaat EF.C.PKI.CH.DS op de boordcomputerkaart.
-
b. Lees het certificaat met behulp van (meerdere) Read Binary.
-
c. Haal de Public Exponent en de Modulus uit het certificaat.
-
d. Voer een RSA decryptie uit van de response data van Compute Digital Signature met
de Public Exponent en de Modulus.
-
e. De decrypted data moet overeenkomen met:
’00 01 FF .. FF 00’ || SHA_256_Digest || SHA256(input data),
waarbij SHA_256_Digest = '30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20'h.
B.3.2 SignDataForAuthenticity
Voor het zetten van een elektronische handtekening met de sleutel-certificaatcombinatie
PKI.CH.AUT van een boordcomputerkaart, zoals beschreven staat in 8.7, worden de volgende
stappen uitgevoerd:
-
1. Allereerst moet het hash template met het te gebruiken algoritme geselecteerd worden.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde '41'h
en P2 de waarde 'AA'h. De data bij dit commando is '80 01 40'h ('40'h om de algoritme
identifier voor SHA-256 aan te geven).
-
2. Selecteer het te gebruiken algoritme en de private sleutel van de BCT Authenticiteit.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde '41'h
en P2 de waarde 'B6'h. De data bij dit commando is '80 01 42 84 01 85'h ('42'h om
“PKCS#1 v1.5 – SHA-256” aan te duiden en '85'h om het Security Data Object (SDO) van
PKI.CH.AUT aan te duiden).
-
3. De private sleutel van de BCT Authenticiteit mag pas gebruikt worden nadat de PIN
gevalideerd is. Een eenmaal uitgevoerde PIN validatie mag – zo lang de kaart in de
boordcomputer aanwezig blijft – worden “herbruikt” bij elke volgende keer dat deze
sleutel gebruikt word. Dit wordt gedaan met het commando Verify, waarbij P2 (de PIN
reference) de waarde '01'h heeft. Voor de PIN wordt PIN formaat 2 gebruikt.
-
4. Wanneer de input gegevens uit meer dan 64 bytes bestaan, moet er een intermediate
hash met SHA-256 berekend worden door de boordcomputerlogica. Hierbij wordt het laatste
gegevensblok niet gehashed, maar wordt de intermediate hash en het aantal gehashte
bits onthouden voor de volgende stap.
Wanneer het totaal aan input gegevens uit maximaal 64 bytes bestaat, wordt er geen
intermediate hash berekend en worden alle inputgegevens in de volgende stap gebruikt.
-
5. Het berekenen van de uiteindelijke hash met SHA-256 wordt door de boordcomputerkaart
gedaan. Hiervoor wordt het commando PSO Hash gebruikt. Hierbij worden de “intermediate
hash value”, het aantal gehashte bits en het laatste (of enige) blok inputdata van
minimaal 1 en maximaal 64 bytes opgenomen in het Dataveld van het commando. Bij een
succesvol uitgevoerde PSO HASH zal de uiteindelijke hash waarde in het chipgeheugen
van de boordcomputerkaart achterblijven ten behoeve van de volgende en laatste stap.
-
6. Met de gekozen private sleutel wordt de handtekening berekend over de in het chipgeheugen
aanwezige hashwaarde.
Dit wordt gedaan met het commando PSO Compute Digital Signature. Le, het verwachte
aantal bytes in de response, moet daarbij op '00'h staan.
-
7. Een elektronische handtekening kan gecontroleerd worden op de volgende manier:
-
a. Selecteer het certificaat EF.C.PKI.CH.AUT op de boordcomputerkaart.
-
b. Lees het certificaat met behulp van (meerdere) Read Binary.
-
c. Haal de Public Exponent en de Modulus uit het certificaat.
-
d. Voer een RSA decryptie uit van de response data van Compute Digital Signature met
de Public Exponent en de Modulus.
-
e. De decrypted data moet overeenkomen met:
’00 01 FF .. FF 00’ || SHA_256_Digest || SHA256(input data),
waarbij SHA_256_Digest = '30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20'h.
B.4 Het zetten van een handtekening met een systeemkaart
NB. Deze functie moet uitgevoerd worden onder secure messaging, zoals beschreven is in
B.2. Voor het overzicht worden onderstaande commando’s en responses echter zonder
deze secure messaging weergegeven.
Voor het zetten van een elektronische handtekening met een systeemkaart, zoals beschreven
staat in 8.6, worden de volgende stappen uitgevoerd:
-
1. Allereerst moet het hash template met het te gebruiken algoritme geselecteerd worden.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde '41'h
en P2 de waarde 'AA'h. De data bij dit commando is '80 01 40'h ('40'h om de algoritme
identifier voor SHA-256 aan te geven).
-
2. Selecteer het te gebruiken algoritme en de private sleutel van de BCT Authenticiteit.
Dit wordt gedaan met het commando Manage Security Environment, met P1 de waarde '41'h
en P2 de waarde 'B6'h. De data bij dit commando is '80 01 42 84 01 85'h ('42'h om
“PKCS#1 v1.5 – SHA-256” aan te duiden en '85'h om het Security Data Object (SDO) van
PKI.CH.AUT aan te duiden).
-
3. Wanneer de input gegevens uit meer dan 64 bytes bestaan, moet er een intermediate
hash met SHA-256 berekend worden door de boordcomputerlogica. Hierbij wordt het laatste
gegevensblok niet gehashed, maar wordt de intermediate hash en het aantal gehashte
bits onthouden voor de volgende stap.
Wanneer het totaal aan input gegevens uit maximaal 64 bytes bestaat, wordt er geen
intermediate hash berekend en worden alle inputgegevens in de volgende stap gebruikt.
-
4. Het berekenen van de uiteindelijke hash met SHA-256 wordt door de systeemkaart gedaan.
Hiervoor wordt het commando PSO Hash gebruikt. Hierbij worden de “intermediate hash
value”, het aantal gehashte bits en het laatste (of enige) blok inputdata van minimaal
1 en maximaal 64 bytes opgenomen in het Dataveld van het commando. Bij een succesvol
uitgevoerde PSO HASH zal de uiteindelijke hash waarde in het chipgeheugen van de systeemkaart
achterblijven ten behoeve van de volgende en laatste stap.
-
5. Met de gekozen private sleutel wordt de handtekening berekend over de in het chipgeheugen
aanwezige hashwaarde.
Dit wordt gedaan met het commando PSO Compute Digital Signature. Le, het verwachte
aantal bytes in de response, moet daarbij op '00'h staan.
-
6. Een elektronische handtekening kan gecontroleerd worden op de volgende manier:
-
a. Selecteer het certificaat EF.C.PKI.CH.AUT op de systeemkaart.
-
b. Lees het certificaat met behulp van (meerdere) Read Binary.
-
c. Haal de Public Exponent en de Modulus uit het certificaat.
-
d. Voer een RSA decryptie uit van de response data van Compute Digital Signature met
de Public Exponent en de Modulus.
-
e. De decrypted data moet overeenkomen met:
’00 01 FF .. FF 00’ || SHA_256_Digest || SHA256(input data),
waarbij SHA_256_Digest = '30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20'h.
TOELICHTING
Algemeen
Deze regeling strekt tot wijziging van de Regeling specificaties en typegoedkeuring
boordcomputer taxi en de Regeling erkenning werkplaatsen boordcomputer taxi.
De eerstgenoemde regeling bood potentiële fabrikanten het regelgevend kader voor de
tijdige ontwikkeling van een boordcomputer taxi (BCT), voordat vanaf 1 oktober 2011
de BCT geleidelijk zou worden ingevoerd.
De onderhavige regeling behelst wijziging van die regeling naar aanleiding van drie
ontwikkelingen die zich sindsdien hebben voorgedaan.
De voornaamste daarvan is dat de taxibranche heeft verzocht om updates van BCT-software
ook buiten de erkende werkplaats toe te staan. Dit voorkomt dat taxivoertuigen voor
elke update naar een werkplaats moeten gaan, hetgeen de taxi ondernemerstijd en geld
kost en logistiek lastig is.
Het voorschrift BCT-softwareupdates uitsluitend in een erkende werkplaats te laten
uitvoeren was bedoeld als waarborg voor het behoud van het vereiste beveiligingsniveau
van een BCT. Aanvankelijk was voorzien dat slechts incidenteel updates nodig zouden
zijn, omdat de in de regeling gespecificeerde functionaliteit van een BCT niet dynamisch
van aard is. Hiermee zou een update slechts benodigd zijn ingeval een BCT niet of
niet meer aan de vereisten zou voldoen. Fabrikanten hebben er evenwel voor gekozen
om BCT’s ook te voorzien van niet verplichte functionaliteit die in sommige gevallen
zeer dynamisch van aard is. Bovendien vertoonden de BCT’s aanvankelijk nog veel kinderziektes.
Dit heeft geresulteerd in een hogere updatefrequentie dan voorzien.
Om hieraan tegemoet te komen is met de Inspectie Leefomgeving en Transport (ILT),
de Dienst wegverkeer (RDW), de fabrikanten en hun testhuizen een gewijzigd proces
voor certificeren, typegoedkeuren, updaten, registreren en inspecteren van BCT software
ontwikkeld. Dit proces heeft een aanzienlijke vermindering van administratieve lasten
tot gevolg zonder dat afbreuk wordt gedaan aan het vereiste en controleerbare beveiligingsniveau
van de BCT.
De wijzigingen die hierop betrekking hebben voorzien er in dat updates die een kalibratie
van de BCT tot gevolg hebben in de erkende werkplaats moeten blijven plaatsvinden,
maar dat alle andere updates ook buiten de werkplaats, volautomatisch op afstand,
veilig kunnen plaatsvinden. Deze wijzigingen hebben vooral gevolgen voor de bijlagen
1 en 2 bij de Regeling specificaties en typegoedkeuring boordcomputer taxi. Deze gevolgen
zijn zodanig ingrijpend dat er voor gekozen is deze bijlagen opnieuw vast te stellen.
Voorts hebben fabrikanten in de ontwikkelfase vragen gesteld naar aanleiding van geconstateerde
onduidelijkheden en vermeende fouten. Deze vragen zijn met de antwoorden opgenomen
in een lijst van veelgestelde vragen, die periodiek is aangevuld en gepubliceerd op
de website van ILT.
Naar aanleiding van de antwoorden is de Regeling specificaties en typegoedkeuring
boordcomputer taxi op een tweetal punten verduidelijkt.
Tot slot heeft het ministerie in de afgelopen periode de diverse betrokken partijen
geconsulteerd om eventuele additionele wensen kenbaar te maken en daaraan gerelateerde
wijzigingsverzoeken in te dienen. Deze consultatie heeft geleid tot het identificeren
van een aantal omissies, in de praktijk ervaren pijnpunten en mogelijke optimalisaties.
Dit heeft geleid tot aanpassingen op de volgende gebieden:
-
– zodanige verruiming van de specificaties dat er, ook bij niet eerder voorziene praktijksituaties,
aan de registratie-eisen kan worden voldaan. Het gaat hier bijvoorbeeld om het leeglopen
van accu’s doordat vergeten is om de BCT uit te schakelen terwijl de taxi niet gebruikt
wordt;
-
– op een meer voor de hand liggende wijze ordenen van door de BCT weer te geven informatie;
-
– vereenvoudigen van de wijze waarop de authenticiteit van de gegevenslevering vanuit
de chauffeurskaart gedurende een inspectie kan worden gecontroleerd, en
-
– wegnemen van onduidelijkheid en/of ruimte voor eigen interpretatie bij:
-
○ de opbouw van uit boordcomputer- en systeemkaarten overgenomen gegevens,
-
○ de opbouw van gegevensleveringen uit de boordcomputer,
-
○ de opbouw van de elektronisch te ondertekenen delen van die gegevensleveringen en
geregistreerde gegevens,
-
○ het voldoen aan het Besluit elektronische handtekeningen en het Programma van Eisen
voor certificaten (PKI) voor de overheid en
-
○ de door de boordcomputer te ondersteunen functies.
Van de gelegenheid is gebruik gemaakt om ook de Regeling erkenning werkplaatsen op
enkele punten aan te passen naar aanleiding van geconstateerde omissies en onduidelijkheden.
Handhaafbaarheid en uitvoerbaarheid
De regeling is door ILT en RDW getoetst op handhaafbaarheid en uitvoerbaarheid.
ILT acht de regeling uitvoerbaar en handhaafbaar, mits de RDW toezicht houdt op naleving
van de plicht tot melding van software-updates en uniformiteit van exportbestanden.
De RDW heeft in het kader van de toets enkele tekstuele wijzigingen voorgesteld, welke
zijn overgenomen.
De RDW acht de Extensible Markup Language schema definitie van resultaatberichten
van levering van BCT-gegevens, zoals opgenomen in bijlage 2 bij de regeling, te weinig
flexibel. Deze is echter gehandhaafd, omdat meer flexibel maken teveel ruimte zou
geven voor interpretatie, terwijl een van de doelstellingen van de onderhavige regeling,
zoals hierboven reeds opgemerkt, juist is om onduidelijkheden weg te nemen.
Bedrijfseffecten en administratieve lasten
Deze zijn te onderscheiden in effecten/lasten voor enerzijds de taxiondernemers, anderzijds
voor fabrikanten van BCT’s.
-
– Om de bestaande BCT-systemen te laten voldoen aan deze regeling dient de software
te worden aangepast. De door de fabrikanten hiertoe te ontwikkelen software dient
geïnstalleerd te worden op alle BCT’s. De kosten hiervoor per BCT ca. € 20 arbeidsloon
voor de installatie.
-
– De kosten komen daarmee uitgaande van 30.000 taxi’s in totaal op € 600.000. Deze kosten
zijn eenmalig. Nog niet duidelijk is in hoeverre deze kosten op de taxiondernemers
worden verhaald. Bij één van de fabrikanten valt dit onder het servicecontract.
De kosten van softwareontwikkeling verschillen per fabrikant; dit is afhankelijk van
het type BCT. De wijzigingen voor het ene type BCT zijn eenvoudiger te programmeren
dan voor het andere type. Daarnaast kan de ene fabrikant de software in eigen huis
laten ontwikkelen en moet de andere fabrikant dat buiten de deur laten doen. De fabrikanten
rekenen hiervoor met bedragen tussen € 30.000,- en € 320.000,-. Er zijn drie fabrikanten
actief. Deze kosten komen ten laste van de fabrikant voor zover deze aan zijn afnemers
een serviceabonnement heeft aangeboden.
De kosten voor certificering van de software-update worden door de fabrikanten geraamd
op € 5000 tot € 25.000 per fabrikant. Deze ruime marge wordt veroorzaakt doordat de
kosten voor het grootste deel worden bepaald door de beoordeling van de update door
testhuizen, de wijzigingen die na afwijzing nog moeten worden aangebracht en het aantal
keren dat de software nog opnieuw moet worden voorgelegd aan een testhuis.
Afhankelijk van de vraag of een software update de meetapparatuur voor de taxiritten
beïnvloedt, moet een software-update uitgevoerd worden in een erkende werkplaats.
Dat zal alleen in uitzonderlijke gevallen zo zijn. De kosten voor ‘reguliere’ software-updates
blijven beperkt tot de kosten van de software update zelf.
Per taxi betekent dit een besparing van € 50 – € 75 per update, dus over het totaal
aan BCT’s een besparing van € 1.500.000 tot € 2.250.000.
Fabrikanten verwachten twee tot drie updates per jaar beschikbaar te hebben. De totale
besparing komt dan uit op minimaal € 4.500.000 op jaarbasis.
Notificatie
De regeling is op 17 december 2014, onder nummer 2014/0631/NL, ingevolge richtlijn
98/34/EG ter notificatie voorgelegd. Hierop zijn geen reacties ontvangen.
Artikelsgewijs
Artikel I (Regeling specificaties en typegoedkeuring boordcomputer taxi)
Onderdeel A
In artikel 1 is een aantal begrippen gedefinieerd die betrekking hebben op eisen waaraan
de BCT moet voldoen om veilig updaten op afstand mogelijk te maken. De begrippen worden
vooral in de bijlagen 1 en 2 gehanteerd.
Onderdeel B
De wijziging van artikel 2, vierde lid, is noodzakelijk omdat de regeling thans vier
bijlagen kent.
Onderdeel C
In artikel 7 is sprake van twee metingen van posities. Een afwijking van 3 procent
tussen deze twee metingen resulteert in de praktijk in te veel foutmeldingen, terwijl
een afwijking van 5 procent acceptabel is.
Onderdeel D
Artikel 9, zevende lid is gewijzigd om beter aan te sluiten op het Programma van Eisen
van PKI voor de overheid, waaraan certificatiedienstverleners gehouden zijn voor het
uitgeven van certificaten voor het zetten van elektronische handtekeningen conform
het Besluit elektronische handtekeningen.
Onderdeel E (artikel 13)
Verandering van de bedrijfsvergrendeling vindt plaats indien de BCT in handen van
een andere vervoerder overgaat. Met de bedrijfsvergrendeling zijn de in de BCT opgeslagen
gegevens herleidbaar naar de vervoerder waarvoor deze opgeslagen zijn.
Onderdeel F
De aan artikel 14 toegevoegde bepaling strekt ertoe te voorkomen dat de boordcomputer
in werking blijft indien na beëindiging van de werkzaamheden abusievelijk is verzuimd
deze uit te schakelen.
Onderdelen G en H
Met de artikelen 17 en 18 is een aantal eisen aan de BCT toegevoegd of nader gespecificeerd
om interpretatieruimte te verminderen. Dit heeft een andere rangschikking tot gevolg,
hetgeen herredigeren van deze artikelen noodzakelijk maakt.
Onderdeel I (artikel 20)
De aanpassing van de BCT aan de in deze regeling neergelegde eisen vergt een zodanige
geheugencapaciteit van de hardware, dat naar verwachting van sommige fabrikanten het
risico bestaat dat deze zou moeten worden vervangen. Het tijdsbeslag en de kosten,
die hieraan verbonden zouden zijn, kunnen worden voorkomen door op de thans gebruikte
hardware de geheugencapaciteit voor het opslaan van gegevens te beperken tot een half
jaar.
De correcte registratie van bct-gegevens ondervindt hier geen schade van. Immers,
op grond van artikel 19, eerste lid, onderscheidenlijk 18, vijfde lid, van de Regeling
gebruik boordcomputer en boordcomputerkaarten dient de vervoerder de bct-gegevens
elke drie maanden en ingeval van een waarschuwing van het ontstaan van onvoldoende
geheugencapaciteit naar zijn vestiging over te brengen.
Onderdelen J tot en met L
De wijzigingen in de artikelen 21 tot en met 23 zijn niet inhoudelijk van aard. Zij
strekken slechts tot verduidelijking.
Onderdelen M en N
De artikelen 27 en 28 corrigeren een erratum.
Onderdeel O
Handmatige bevestiging door de chauffeur dat hij foutmeldingen heeft opgemerkt, leidt
in geval van telkens herhaalde meldingen tot teveel ongemak voor de deelname aan het
verkeer. De wijziging van artikel 29 beoogt de zichtbaarheid van foutmeldingen daarom
enigszins in te perken.
Onderdeel P
In artikel 30 zijn enige verduidelijkingen aangebracht. De wijziging van dit artikel
is niet inhoudelijk.
Onderdelen Q en S
In de artikelen 31 en 35 wordt thans bepaald in welke gevallen wijzigingen in de programmatuur
van de boordcomputer op afstand geüpload mogen worden, en welke wijzigingen uitsluitend
in een erkende werkplaats mogen plaatsvinden. De verwijzing naar artikel 13, onder
b, van de Regeling erkenning werkplaatsen boordcomputer taxi heeft betrekking op kalibratie.
Onderdeel R
In het toegevoegde artikel 31a is een bepaling opgenomen waarin tot nu toe nog niet
werd voorzien. Deblokkering en/of wijziging van de pincode dient door de fabrikant
mogelijk gemaakt te worden. Het staat de fabrikant vrij om die mogelijkheid aan de
houder van de boordcomputerkaart als service aan te bieden, dan wel erin te voorzien
dat de houder van de boordcomputerkaart zelfstandig de pincode kan deblokkeren en/of
wijzigen.
Artikel II (Regeling erkenning werkplaatsen boordcomputer taxi)
In artikel 6 is nu tot uiting gebracht dat de eisen voor een erkenning ook gelden
voor een mobiele activeringseenheid.
Artikel III
Van het systeem van vaste verandermomenten wordt afgeweken voor zover het de datum
van publicatie betreft.
Met betrokken brancheorganisaties is de afspraak gemaakt de onderhavige regeling zo
spoedig mogelijk na afloop van de zgn. standstil periode, die op grond van richtlijn
98/34/EG is voorgeschreven, in werking te laten treden. Deze loopt op 17 maart 2015
af indien door lidstaten geen opmerkingen zijn gemaakt.
De afspraken met brancheorganisaties betreffen het mogelijk maken van updates van
BCT-software buiten de erkende werkplaats. Zoals hierboven aangegeven voorziet de
onderhavige regeling echter ook in optimalisatie van technische eisen. Het spreekt
voor zich dat er een overgangsperiode nodig is om te waarborgen dat alle bestaande
BCT’s, circa 30.000 in aantal, aan deze (aanvullende) technische eisen kunnen voldoen.
Fabrikanten schatten in dat zij zes tot negen maanden nodig hebben voor de ontwikkeling
van de software, die nodig is om te voldoen aan de technische eisen zoals in de onderhavige
regeling vastgelegd. Voor de procedure die moet leiden tot certificering wordt een
periode van drie maanden ingeschat; dezelfde termijn geldt voor het ‘uitrollen’ van
de software over alle bestaande BCT’s. De optelsom van deze termijnen leidt tot het
opnemen van de datum van 1 juli 2016 als datum waarop iedereen moet voldoen aan de
gewijzigde eisen.
De Staatssecretaris van Infrastructuur en Milieu,
W.J. Mansveld