Ga naar hoofdinhoud

Cryptografie

Het Vorderingenoverzicht Rijk maakt gebruik van cryptografie om de communicatie tussen burgers en overheidsorganisaties te beveiligen.

Cryptografische functies

De gebruikte encryptiefunctionaliteit is onder te verdelen in

Sleutelmateriaal

Actoren maken hun eigen sleutelmateriaal (RSA public/private keypairs) aan.

ActorSleutelmateriaalSLeuteltypeWordt aangemaakt...
Burgerapp-private-key2048 bits RSA...door de app bij opstarten
Bronorganisatiesource-org-private-key2048 bits RSA...door de bronorganisatie via beheeromgeving
App managerapp-manager-private-key2048 bits RSA...handmatig door de app manager
StelselbeheerderT.B.D.T.B.D.T.B.D.

Een keypair kan handmatig aangemaakt worden met openssl, bijvoorbeeld:

openssl genrsa -out rsa.key 2048

Toepassing van cryptografiefuncties in het protocol

Het opzetten van een verbinding tussen een burger en een organisatie

  • Burger: ENCRYPT challenge-request (=app-public-key) with org-public-key
  • Organisatie (bronorganisatie of app manager) DECRYPT challenge-request with org-private-key
  • Organisatie (bronorganisatie of app manager): SIGN challenge USING org-private-key
  • Burger: VERIFY challenge USING org-public-key
  • Burger: SIGN challenge-response USING app-private-key
  • Organisatie (bronorganisatie of app manager): VERIFY challenge-response USING app-public-key

Het activeren (certificeren) van een digitale handtekening

  • [Nadat een verbinding is opgezet]
  • App manager: CREATE JWT app_manager_jwt_certificate USING app-manager-privkey
  • App manager: ENCRYPT certificate (=app_manager_jwt_certificate + certificate-signature) USING app-public-key
  • Burger: DECRYPT encrypted-certificate USING app-private-key
  • Burger: VERIFY JWT app_manager_jwt_certificate USING app-manager-public-key

JWT (app_manager_jwt_certificate)

Claim NameClaim Description
app_public_keyPublic key van de burger
app_manager_oinOrganisatie-identificatienummer van de app manager
app_manager_public_keyPublic key van de app manager
given_name1Given name(s) or first name(s)
family_name1Surname(s) or last name(s)
bsnBurgerservicenummer
iat1Issued At
nbf1Not Before
exp1Expiration Time

Het ondertekenen van een verzoek om schuldinformatie (using certificate)

  • [Nadat een verbinding is opgezet]
  • Burger: SIGN request-document USING app-private-key
  • Burger ENCRYPT envelope (= request-document + document-signature + legalized-certificate) USING source-org-public-key
  • Bronorganisatie: DECRYPT encrypted-envelope USING source-org-private-key
  • Bronorganisatie: VERIFY JWT app_manager_jwt_certificate USING app-manager-public-key
  • Bronorganisatie: VERIFY document signature USING app-public-key
  • Bronorganisatie: CHECK app-public-key used with signature equals app-public-key used in certificate
  • Bronorganisatie: CHECK app-public-key signature equals app-public-key used in current session

Het ophalen van schuldinformatie

  • [Nadat een verbinding is opgezet]
  • Bronorganisatie: ENCRYPT financial-claims-information-document USING app-public-key
  • Burger: DECRYPT encrypted-financial-claims-information-document USING app-private-key

TODO: Ondertekening van het stelsel

  • Noot: op dit moment is het stelsel nog niet ondertekend, maar het is wel voorzien dat de stelselbeheerder de stelselinformatie na elke wijziging, ondertekent, zodat partijen die zich op de stelselinformatie beroepen zeker weten dat deze informatie door de stelselbeheerder geaccordeerd is.
    • Stelselbeheerder: SIGN stelselregistratie USING scheme-manager-private-key
    • Burger, bronorganisatie: VERIFY stelselinformatie USING scheme-manager-private-key

Mogelijke verbeterpunten (opgepakt op basis van prioriteit)

  • Het gebruik van elliptic curve (Curve25519, libsodium, etc.) of post-quantum cryptography schemes in plaats van RSA
  • Het gebruik van x509 certificaatstandaarden voor het activeren (certificeren) van digitale handtekeningen in plaats van signed JSON

Overige cryptografie

Op sommige lagere niveaus van het systeem wordt ook cryptografie toegepast, maar deze wordt hier op dit moment niet expliciet behandeld omdat het gebruik van deze cryptografie wijdverspreid is en niet specifiek is voor het Vorderingenoverzicht Rijk. Het gaat dan om cryptografie die wordt toegepast in onder meer:

  • Het opzetten van HTTPS-verbindingen met organisaties
  • Toegangsbeheer tot het apparaat van de gebruiker (burger)
  • Het versleuteld opslaan van gegevens op het apparaat van de gebruiker (burger)

Footnotes

  1. Deze claim naam is overgenomen van IANA 2 3 4 5