Cryptografische Agility Voor Nederlandse Overheidsdata

💼 Management Samenvatting

Cryptografische agility is het vermogen om versleutelingsstandaarden snel en gecontroleerd te vernieuwen zodra regelgeving, dreigingen of technologie daarom vragen. Voor de Nederlandse overheid is dat een strategische noodzaak: data moet continu beschermd blijven, ongeacht of een algoritme wordt verzwakt door nieuwe aanvalstechnieken of de komst van quantumcomputers.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
200u (tech: 120u)
Van toepassing op:
Microsoft 365
Azure
Windows Server
PKI-omgevingen

Nederlandse ministeries, uitvoeringsorganisaties en decentrale overheden beheren registers met persoonsgegevens, staatsgeheimen en vitale ketenprocessen. Veel van deze workloads leunen op verouderde certificaten, TLS-configuraties of statische sleutels in appliances die nauwelijks worden bijgewerkt. Zodra een algoritme als onveilig wordt aangemerkt, moet de organisatie aantonen dat ze de impact kent, een migratieplan heeft en tijdelijk compenserende maatregelen treft. Zonder cryptografische agility loopt u achter de feiten aan, raakt de compliance met AVG, BIO en Wbni op losse schroeven en wordt het nagenoeg onmogelijk om vertrouwen te behouden bij toezichthouders, rechtbanken en ketenpartners. Bovendien verlangen NIS2 en het Rijksbrede programma digitale weerbaarheid dat organisaties kunnen laten zien hoe zij quantumrisico’s beheersen.

PowerShell Modules Vereist
Primary API: Azure Key Vault, Microsoft Graph, Windows Certificate Services, Microsoft 365 Purview
Connection: Connect-AzAccount, Connect-MgGraph, Enter-PSSession
Required Modules: Az.Accounts, Az.KeyVault, Microsoft.Graph, PKI

Implementatie

Dit artikel geeft praktische handvatten om cryptografische agility te organiseren binnen Microsoft 365, Azure en hybride infrastructuren. We behandelen vier thema’s: bestuurlijke verankering en mandaat, inventarisatie en roadmap, technische uitvoering met automatisering en monitoring, én compliance en audittrail. Elk thema is uitgewerkt met concrete voorbeelden uit Nederlandse overheidsdomeinen, inclusief koppelingen naar voorzieningen zoals DPC, Logius, Rijks-PKI en regionale shared service centra. Het bijbehorende PowerShell-script ondersteunt lokale audits: het script leest configuraties (of voorbeelddata in DebugMode), voert een volwassenheidsmeting uit, genereert aanbevelingen en kan een export produceren voor auditors of CISO-rapportages. Zo ontstaat een herhaalbare aanpak waarmee u algoritmes kunt vervangen voordat ze een acuut risico vormen.

Bestuurlijke verankering en mandaat voor cryptografische vernieuwing

Cryptografische agility begint bij bestuurders die begrijpen dat versleuteling geen eenmalig project is maar een continu proces. Directies van ministeries, uitvoeringsorganisaties en gemeenten moeten een formeel mandaat afgeven waarin is vastgelegd wie verantwoordelijk is voor sleutelbeheer, welke minimale algoritmestandaarden gelden per risicoklasse en hoe uitzonderingen worden beoordeeld. Dit mandaat hoort onderdeel te zijn van het informatiebeveiligingsbeleid, het privacybeleid en de strategische IT-roadmap. Het legt vast dat cryptografie als kritieke infrastructuur wordt behandeld, inclusief budgetten voor lifecycle-management en crisisrespons wanneer een algoritme versneld moet worden uitgefaseerd.

Governance vergt nauwe samenwerking tussen CISO, CTO, architectuurboard en juridische functie. Maak een cryptografieraad die minimaal elk kwartaal bijeenkomt, de internationale ontwikkelingen volgt (bijvoorbeeld ETSI, ENISA, NCSC en PQC-standaarden) en besluit of nieuwe richtlijnen direct impact hebben op lopende projecten. Documenteer de risicocategorieën: welke datasets zijn gekwalificeerd als staatsgeheim, welke vallen onder bijzondere persoonsgegevens of vitale processen, en welke kunnen tijdelijk met legacy-algoritmen werken mits er compensaties zijn. Deze categorisering maakt het mogelijk om prioriteiten te stellen en voorkomt paniek wanneer een nieuwe kwetsbaarheid zich aandient.

Betrek ook leveranciers en shared-servicepartners. Veel Nederlandse overheidsorganisaties maken gebruik van gezamenlijke hosting of SaaS-oplossingen die binnen rijksraamwerken vallen. Borg in contracten en DAP’s dat leveranciers cryptografische roadmaps delen, dat certificaatvernieuwing tijdig plaatsvindt en dat er een gezamenlijke escalatieprocedure is wanneer een algoritme versneld moet worden uitgefaseerd. Veranker dit in SLA’s met concrete KPI’s, zoals maximale doorlooptijd voor sleutelrotatie, aantoonbare ondersteuning van TLS 1.3 en verplicht gebruik van FIPS 140-2 Level 2 modules of hoger voor hardware security modules (HSM’s).

Tot slot is communicatie richting bestuur en volksvertegenwoordiging cruciaal. Leg in jaarverslagen en bestuursrapportages uit welke cryptografische ontwikkelingen spelen, welke maatregelen zijn genomen en welke risico’s resteren. Gebruik scenario’s om duidelijk te maken wat er gebeurt wanneer een certificaatketen ongeldig wordt of wanneer kwantumaanvallen sneller realiteit worden. Zo creëert u draagvlak voor investeringen in tooling, opleidingen en extra capaciteit bij sleutelbeheerders.

Inventarisatie, risicobeoordeling en migratieroadmap

Een organisatie kan pas wendbaar zijn als zij exact weet waar cryptografie wordt toegepast. Start met een centrale inventarisatie van certificaten, TLS-eindpunten, sleutelkluizen, applicaties met hardcoded algoritmen en cryptografische functies in softwareontwikkelstraten. Gebruik geautomatiseerde scans (bijvoorbeeld Microsoft Defender External Attack Surface Management, Qualys of open-source tools) en combineer de resultaten met CMDB-gegevens. Maak onderscheid tussen publieke interfaces, interne API’s, OT-verbindingen en gegevensuitwisselingen via standaardvoorzieningen zoals Digikoppeling of Diginetwerk. Documenteer per component welke algoritmen actief zijn, welke expiratiedata gelden en wie eigenaar is.

Koppel vervolgens een risicobeoordeling aan de inventaris. Geef ieder item een impactscore op basis van gegevensklasse, afhankelijkheden en wettelijke eisen. Voeg een exposure-score toe op basis van toegankelijkheid en de snelheid waarmee het algoritme veroudert. Gebruik deze scores om prioriteiten te bepalen: systemen met hoge impact én hoge exposure migreren als eerste, systemen met lage impact maar hoge exposure krijgen tijdelijke compensaties, terwijl laag-risico-onderdelen in latere golven kunnen meelopen. Veranker dit in de enterprise architecture zodat projecten automatisch weten welk cryptografisch profiel ze moeten hanteren.

Ontwikkel een meerjarenroadmap die minimaal drie sporen bevat. Het eerste spoor richt zich op directe maatregelen zoals uitschakelen van verouderde protocollen (TLS 1.0/1.1), doorvoeren van langere sleutelsterktes en automatiseren van certificaatvernieuwing via ACME of Azure Key Vault Managed HSM. Het tweede spoor bereidt post-quantumcryptografie (PQC) voor door hybride algoritmen te testen, ketenpartners te betrekken en sandboxomgevingen op te zetten. Het derde spoor richt zich op softwareontwikkeling: zorg dat ontwikkelteams libraries gebruiken die cryptografisch neutraal zijn, bijvoorbeeld via Azure Confidential Ledger, .NET’s `CryptographyNextGeneration` of gebruik van API-abstraction-layers zodat algoritmen eenvoudig gewisseld kunnen worden.

Leg beslissingen vast in een cryptografisch register dat onderdeel vormt van het verwerkingsregister. Dit register beschrijft per proces welke algoritmen zijn toegestaan, waar sleutels worden beheerd, welke lifecycle geldt en welke fallback bestaat wanneer een provider uitvalt. Koppel dit register aan CAB-procedures en change calendars, zodat sleutelrotaties en algoritmewijzigingen niet per ongeluk tijdens verkiezingsperiodes of belastingcampagnes plaatsvinden. Zo blijft de roadmap realistisch én afgestemd op de bestuurlijke kalender.

Technische uitvoering, automatisering en tooling

Technische uitvoering vraagt om een combinatie van moderne cloudfunctionaliteit en beheer van bestaande infrastructuur. Azure Key Vault en Managed HSM bieden lifecyclebeheer, soft delete, recovery en logging die aansluiten op rijksrichtlijnen. Gebruik policies om minimale sleutelsterktes af te dwingen en koppel Key Vault aan Azure Policy zodat afwijkingen automatisch worden gesignaleerd. Voor on-premises PKI’s is het essentieel om Certificate Templates te moderniseren, sleutels in HSM’s onder te brengen en beleidsregels te implementeren die SHA-1 of RSA 1024 blokkeren. Integreer deze maatregelen met Microsoft 365 Purview om encryptieprofielen en gevoeligheidslabels consistent te houden.

Automatisering is de sleutel tot schaalbaarheid. Gebruik Infrastructure as Code (Bicep, Terraform) om cryptografische resources te declareren en pipelines om certificaten en sleutels gecontroleerd uit te rollen. Maak gebruik van GitOps-conventies: wijzigingen in policies of key-rotaties worden pas toegepast na peer review en automatische tests. Combineer dit met secrets management via Azure Key Vault References of Managed Identities, zodat code nooit statische sleutels bevat. Voor Windows Server en netwerksystemen biedt Desired State Configuration (DSC) of Group Policy de mogelijkheid om beveiligingsproviders, cipher suites en protocolversies centraal te forceren.

Gebruik PowerShell-script cryptographic-agility.ps1 (functie Invoke-CryptoAgilityAssessment) – Het script voert lokale controles uit op sleutelsterktes, certificaatvervaldata en ondersteuning voor post-quantum pilots. In DebugMode gebruikt het voorbeelddata om een rapport te genereren zonder verbinding te maken met productieomgevingen..

Vergeet niet dat cryptografische agility ook de ontwikkelstraat omvat. Ontwikkelteams moeten werken met up-to-date SDK’s, threat models waarin cryptografie expliciet wordt beoordeeld en automatische tests die valideren of applicaties fallback-algoritmen ondersteunen. Neem cryptografische requirements op in Definition of Done, laat security-champions code reviews uitvoeren op gebruik van legacy libraries en koppel pipelines aan statische analyse-tools die verouderde APIs detecteren. Zo voorkomt u dat nieuwe software afhankelijk wordt van algoritmen die straks moeten worden uitgefaseerd.

Monitoring, rapportage en aantoonbaarheid richting toezichthouders

Cryptografische agility staat of valt met continue monitoring. Verzamel telemetrie uit Azure Monitor, Microsoft Sentinel, Defender for Cloud en on-premises PKI-logs om afwijkingen in sleutelgebruik, certificaatverloop en protocolversies vast te leggen. Richt dashboards in die laten zien hoeveel certificaten binnen 30 dagen verlopen, welke endpoints nog TLS 1.2 forceren en welke workloads deelnemen aan PQC-pilots. Zorg dat deze dashboards worden gedeeld met CISO, CTO en proceseigenaren zodat beslissingen op actuele data zijn gebaseerd.

Rapportage richting toezichthouders moet sluiten op de AVG, BIO en NIS2. Leg daarom vast hoe sleutelbeheerprocessen aansluiten op het verwerkingsregister, hoe incidenten rond cryptografie worden gemeld binnen de bestaande CSIRT-structuur en hoe ketenpartners worden geïnformeerd wanneer een certificaat wordt ingetrokken. Documenteer tevens hoe cryptografische maatregelen bijdragen aan de eisen van de Wet open overheid: welke documenten worden gepubliceerd, welke technische details blijven vertrouwelijk en hoe wordt gecontroleerd dat openbaar gemaakte informatie geen sleutelmaterialen bevat.

Auditability vereist dat elke wijziging traceerbaar is. Gebruik Microsoft Purview Audit en Sentinel Workbooks om wijzigingen in Key Vault policies, certificate enrollment en TLS-configuraties vast te leggen. Koppel deze gegevens aan change management zodat auditors kunnen zien wie een wijziging heeft goedgekeurd, welk risico is geadresseerd en welk testbewijs aanwezig is. Bewaar logbestanden minimaal zeven jaar, conform archiefwetgeving, en archiveer cryptografische beslisdocumenten in een records managementsysteem met juiste classificatie.

Tot slot moeten organisaties oefenen met scenario’s. Voer minimaal jaarlijks een oefening uit waarin een algoritme versneld wordt uitgefaseerd. Gebruik het PowerShell-script om voorbeelddata te genereren, test de besluitvorming van de cryptografieraad en beoordeel of communicatie naar bestuur, ketenpartners en burgers tijdig en correct verloopt. Documenteer lessons learned en werk de roadmap en procedures direct bij. Zo blijft cryptografische agility geen papieren tijger maar een aantoonbaar volwassen capability.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# .SYNOPSIS Voert een volwaardige cryptografische-agility-audit uit voor Microsoft 365, Azure en hybride workloads. .DESCRIPTION Dit script ondersteunt het artikel content/security/cryptographic-agility.json binnen het project "Nederlandse Baseline voor Veilige Cloud". Het controleert lokale of uitgelezen configuraties op algoritmestandaarden, sleutelrotatie, certificaatbeheer en voorbereidingen op post-quantumcryptografie. In DebugMode gebruikt het script voorbeelddata zodat organisaties veilig kunnen oefenen zonder verbinding te maken met productieomgevingen. Resultaten worden opgeslagen in een JSON-rapport dat gebruikt kan worden voor CISO-rapportages, audits of scenario-oefeningen. .NOTES Filename: cryptographic-agility.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-11-27 Last Modified: 2025-11-27 Version: 1.0 Related JSON: content/security/cryptographic-agility.json .LINK https://github.com/microsoft/m365-tenant-best-practise .EXAMPLE .\cryptographic-agility.ps1 -Assessment -DebugMode Voert een offline beoordeling uit met voorbeelddata en toont het volwassenheidsniveau. .EXAMPLE .\cryptographic-agility.ps1 -RemediationPlan -WhatIf Toont welke stappen nodig zijn om non-compliance op te lossen zonder wijzigingen door te voeren. #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Assessment, [Parameter(Mandatory = $false)] [switch]$RemediationPlan, [Parameter(Mandatory = $false)] [switch]$WhatIf, [Parameter(Mandatory = $false)] [switch]$DebugMode, [Parameter(Mandatory = $false)] [string]$OutputPath = ".\artifacts\cryptographic-agility-report.json" ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' function Write-ScriptBanner { Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Cryptographic Agility Assessment" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan } function Test-CryptoModules { [CmdletBinding()] param() $required = @('Az.Accounts','Az.KeyVault','Microsoft.Graph','PKI') foreach ($module in $required) { if (-not (Get-Module -ListAvailable -Name $module)) { Write-Warning "Module $module is niet gevonden op dit systeem. Installeer of laad deze module handmatig voordat u productieconfiguraties uitleest." } } } function Get-CryptoSampleData { [CmdletBinding()] param() return [PSCustomObject]@{ CertificatesExpiring30Days = 17 LegacyTlsEndpoints = 4 KeyRotationAverageDays = 210 ManagedHsmCoveragePercent = 62 PqcPilotCoveragePercent = 15 QuantumScenarioLastTest = (Get-Date).AddDays(-280) UnsupportedAlgorithms = @('RSA1024','SHA1') CriticalSystemsWithoutPlan = @('Basisregistratie-app','Regionale meldkamer API') DocumentationGaps = @('Geen CAB-besluit voor TLS 1.3 rollout','Oude sleutelbeheerprocedure voor OT') } } function Get-CryptoTelemetry { [CmdletBinding()] param() if ($DebugMode) { Write-Verbose "DebugMode ingeschakeld: er wordt uitsluitend met voorbeelddata gewerkt." return Get-CryptoSampleData } Write-Verbose "Lees eigen telemetrie uit en map de resultaten op het object dat Get-CryptoSampleData retourneert." throw "Productiedata is niet geïmplementeerd in dit script. Gebruik DebugMode of breid het script uit met tenant-specifieke queries." } function Test-CryptoAgilityState { [CmdletBinding()] param() $data = Get-CryptoTelemetry $issues = @() if ($data.CertificatesExpiring30Days -gt 0) { $issues += "$($data.CertificatesExpiring30Days) certificaten verlopen binnen 30 dagen." } if ($data.LegacyTlsEndpoints -gt 0) { $issues += "$($data.LegacyTlsEndpoints) eindpunten forceren nog TLS 1.0/1.1." } if ($data.KeyRotationAverageDays -gt 180) { $issues += "Gemiddelde sleutelrotatie is $($data.KeyRotationAverageDays) dagen en overschrijdt de grens van 180 dagen." } if ($data.ManagedHsmCoveragePercent -lt 80) { $issues += "Slechts $($data.ManagedHsmCoveragePercent)% van de kritieke sleutels draait in een Managed HSM." } if ($data.PqcPilotCoveragePercent -lt 25) { $issues += "Post-quantum pilots dekken slechts $($data.PqcPilotCoveragePercent)% van de prioritaire processen." } if ((Get-Date) - $data.QuantumScenarioLastTest -gt [TimeSpan]::FromDays(180)) { $issues += "Laatste crisisoefening voor cryptografische transitie is langer dan 6 maanden geleden." } if ($data.UnsupportedAlgorithms.Count -gt 0) { $issues += "Niet-toegestane algoritmen aangetroffen: $($data.UnsupportedAlgorithms -join ', ')." } if ($data.CriticalSystemsWithoutPlan.Count -gt 0) { $issues += "Geen transitieplan voor: $($data.CriticalSystemsWithoutPlan -join ', ')." } if ($data.DocumentationGaps.Count -gt 0) { $issues += "Documentatie tekortkomingen: $($data.DocumentationGaps -join '; ')." } $score = 100 foreach ($issue in $issues) { $score -= 8 } if ($score -lt 0) { $score = 0 } [PSCustomObject]@{ ScriptName = 'cryptographic-agility.ps1' Timestamp = Get-Date Score = $score Issues = $issues Certificates = $data.CertificatesExpiring30Days LegacyTls = $data.LegacyTlsEndpoints KeyRotation = $data.KeyRotationAverageDays ManagedHsm = $data.ManagedHsmCoveragePercent PqcPilot = $data.PqcPilotCoveragePercent LastScenario = $data.QuantumScenarioLastTest IsCompliant = ($issues.Count -eq 0) Recommendations = if ($issues.Count -eq 0) { @("Cryptografische agility voldoet aan de norm. Documenteer deze status in het register en plan de volgende review binnen 90 dagen.") } else { $issues } } } function Invoke-CryptoAgilityAssessment { [CmdletBinding()] param() $result = Test-CryptoAgilityState Write-Host "Algemene score : $($result.Score)/100" -ForegroundColor White Write-Host "Certificaten <30 dagen : $($result.Certificates)" -ForegroundColor White Write-Host "Legacy TLS eindpunten : $($result.LegacyTls)" -ForegroundColor White Write-Host "Gem. sleutelrotatie (dagen) : $($result.KeyRotation)" -ForegroundColor White Write-Host "Managed HSM dekking (%) : $($result.ManagedHsm)" -ForegroundColor White Write-Host "PQC pilot dekking (%) : $($result.PqcPilot)" -ForegroundColor White if ($result.IsCompliant) { Write-Host "`n✅ Cryptografische controls voldoen aan de afgesproken normen." -ForegroundColor Green } else { Write-Host "`n❌ Afwijkingen gevonden:" -ForegroundColor Yellow $result.Recommendations | ForEach-Object { Write-Host " - $_" -ForegroundColor Yellow } } return $result } function Invoke-CryptoAgilityRemediation { [CmdletBinding()] param() $result = Test-CryptoAgilityState $actions = @() if ($result.Certificates -gt 0) { $actions += "Versnel certificaatvernieuwing via ACME of Azure Key Vault en bevestig CAB-goedkeuring." } if ($result.LegacyTls -gt 0) { $actions += "Zet TLS 1.2/1.3 af dwingend aan via policy en documenteer uitzonderingen." } if ($result.KeyRotation -gt 180) { $actions += "Automatiseer sleutelrotatie naar maximaal 90 dagen met Key Vault rotation policy." } if ($result.ManagedHsm -lt 80) { $actions += "Migreer service accounts en applicaties naar Managed HSM of een FIPS 140-2 gecertificeerde HSM." } if ($result.PqcPilot -lt 25) { $actions += "Breid post-quantum pilots uit naar minimaal 25% van de prioritaire processen." } if ($result.Issues -match "crisis") { $actions += "Plan een crisisoefening waarin een algoritme versneld wordt uitgefaseerd en werk procedures bij." } if ($result.Issues -match "algoritmen") { $actions += "Verwijder verouderde algoritmen (bijv. RSA1024, SHA1) uit policies en templatedefinities." } if ($result.Issues -match "transitieplan") { $actions += "Stel per kritiek systeem een transitieplan op inclusief owner, timeline en fallback." } if ($result.Issues -match "Documentatie") { $actions += "Actualiseer het cryptografische register en voeg CAB-besluiten en procedures toe." } if ($actions.Count -eq 0) { Write-Host "Geen remediatie nodig." -ForegroundColor Green return $result } Write-Host "`nRemediatie-advies:" -ForegroundColor Cyan foreach ($action in $actions) { if ($WhatIf) { Write-Host "WhatIf: $action" -ForegroundColor Yellow } else { Write-Host $action -ForegroundColor Gray } } return $result } function Save-CryptoReport { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [pscustomobject]$Data ) $directory = Split-Path -Parent $OutputPath if (-not (Test-Path $directory)) { New-Item -ItemType Directory -Path $directory -Force | Out-Null } $Data | ConvertTo-Json -Depth 4 | Out-File -FilePath $OutputPath -Encoding UTF8 Write-Host "`nRapport opgeslagen naar $OutputPath" -ForegroundColor Green } Write-ScriptBanner Test-CryptoModules try { $result = if ($Assessment) { Invoke-CryptoAgilityAssessment } elseif ($RemediationPlan) { Invoke-CryptoAgilityRemediation } else { Test-CryptoAgilityState } Save-CryptoReport -Data $result return $result } catch { Write-Error "Fout tijdens cryptografische agility-evaluatie: $_" exit 1 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder cryptografische agility blijven verouderde certificaten actief, worden post-quantumrisico’s genegeerd en kan de organisatie niet aantonen dat zij passende maatregelen neemt onder AVG, BIO en NIS2.

Management Samenvatting

Richt bestuurlijke governance, inventarisatie, automatisering en monitoring in zodat cryptografische algoritmen snel kunnen worden vervangen. Gebruik het script voor lokale assessments en koppel resultaten aan CISO-rapportages en audits.