Communicatiebeveiliging (NEN 7512)
Versie 1.0.0 - maart 2026
Dit document beschrijft de maatregelen voor veilige elektronische communicatie binnen Remedice, conform NEN 7512 (Vertrouwde elektronische communicatie in de zorg).
1. Transport Layer Security
| Aspect | Specificatie |
|---|---|
| Protocol | TLS 1.2 en hoger (ALB-policy ondersteunt TLS 1.2 en 1.3) |
| Certificaten | Beheerd via AWS Certificate Manager |
| HSTS | Strict-Transport-Security header actief |
| Cipher suites | Sterke suites (AES-256-GCM, ECDHE key exchange) |
Alle communicatie tussen client (frontend-applicatie) en server (backend-API) vindt plaats over HTTPS. Onversleutelde HTTP-verbindingen worden niet geaccepteerd.
2. API-beveiliging
2.1 Authenticatie
- Alle API-endpoints vereisen een geldig JWT-token (behalve publieke endpoints zoals login en registratie)
- JWT-tokens worden ondertekend met een geheim dat per omgeving is geconfigureerd
- Token-verificatie bij elk request via Django REST Framework Simple JWT
2.2 CORS (Cross-Origin Resource Sharing)
- Productie: alleen expliciete origins toegestaan (via
CORS_ALLOWED_ORIGINS) - Ontwikkeling: configureerbaar, standaard restrictief
- Credentials worden alleen meegestuurd naar toegestane origins
2.3 CSRF (Cross-Site Request Forgery)
- Django
CsrfViewMiddlewareis actief - CSRF-tokens vereist voor state-changing requests (POST, PUT, DELETE)
2.4 Inputvalidatie
- Server-side validatie via Django REST Framework Serializers
- Geparametriseerde database-queries via Django ORM (geen raw SQL)
- Content-type validation op uploads (PDF, tekst)
3. Data-uitwisseling met apotheekinformatiesystemen
3.1 Import
Remedice ontvangt medicatiegegevens via:
- Tekst-upload: Gebruiker kopieert tekst uit AIS (Medimo) en plakt in Remedice
- PDF-upload: Gebruiker uploadt PDF-export uit AIS (Pharmacom, Sanday) of HIS (Promedico)
Er is geen directe koppeling (HL7, FHIR, of andere integratie) met apotheekinformatiesystemen. Alle data-invoer is handmatig geinitieerd door de gebruiker. Deze handmatige import is geen elektronische gegevensuitwisseling tussen beveiligingsdomeinen in de zin van NEN 7512; de norm wordt pas volledig van toepassing zodra een systeemkoppeling live gaat (zie hoofdstuk 8).
3.2 Beveiliging bij upload
- Uploads worden verwerkt in het geheugen en niet persistent opgeslagen als ruwe bestanden
- Parsers valideren het formaat en de structuur van de invoer (fingerprint-validatie)
- Geparste gegevens worden versleuteld opgeslagen in de database
4. Server-Sent Events (SSE)
Atlas Chat gebruikt Server-Sent Events voor streaming van AI-antwoorden:
- Verbinding via HTTPS (TLS)
- Authenticatie via JWT-token in de request
- Token-limiet per 24 uur per tenant
5. Pushnotificaties
| Kanaal | Protocol | Beveiliging |
|---|---|---|
| Mobiel (iOS/Android) | Expo Push Service | Device-specifieke push-tokens, HTTPS |
| Web (browser) | Web Push (VAPID) | VAPID-sleutelpaar, HTTPS, browser-specifieke tokens |
Pushnotificaties bevatten minimale informatie (notificatietekst). Gevoelige gegevens worden niet in pushberichten opgenomen.
6. Communicatie met subverwerkers
| Subverwerker | Protocol | Authenticatie |
|---|---|---|
| AWS (S3, KMS, CloudWatch, Bedrock, Transcribe) | HTTPS (AWS SDK) | IAM credentials, STS tokens |
| Google Cloud (Cloud Text-to-Speech, Chirp 3 HD) | HTTPS (Google Cloud SDK) | Service account credentials |
| Stripe | HTTPS (Stripe SDK) | Secret key |
| Sentry | HTTPS (Sentry SDK) | DSN-token |
Alle API-sleutels worden opgeslagen als omgevingsvariabelen en niet in broncode.
7. Interne communicatie (backend)
| Component | Protocol |
|---|---|
| Applicatie <-> Database (PostgreSQL) | TCP met TLS, afgedwongen (rds.force_ssl=1, sslmode=require) |
| Applicatie <-> Cache (Redis) | TCP met transit-encryptie ingeschakeld (transit_encryption_enabled), intern netwerk, niet publiek bereikbaar |
| Applicatie <-> Celery Worker | Redis als broker (intern netwerk) |
In de productieomgeving communiceren alle services binnen een beveiligd netwerk (Docker network / VPC). Geen van deze services is rechtstreeks bereikbaar via het publieke internet.
8. Koppelvlakkenbeleid (NEN 7512-readiness)
Remedice wisselt op dit moment geen persoonlijke gezondheidsinformatie uit met externe zorgsystemen via systeemkoppelingen. Dit hoofdstuk legt vast aan welke eisen elke toekomstige koppeling (AIS/HIS-API, LSP/AORTA, FHIR-endpoints, e-recept) moet voldoen voordat deze live gaat, conform NEN 7512:2022.
8.1 Risicoclassificatie per uitwisseling
Voor elke nieuwe uitwisseling wordt voor livegang een risicoclassificatie vastgelegd:
- Classificeer de uitwisseling op de gevolgen van schending van vertrouwelijkheid, integriteit en beschikbaarheid, volgens de risicoklassen van NEN 7512.
- Uitwisseling van identificeerbare gezondheidsgegevens valt in de hoogste risicoklassen en vereist maatregelen op alle drie de aspecten.
- De classificatie en de gekozen maatregelen worden vastgelegd in de risicoanalyse (zie Risicoanalyse) en per koppeling gedocumenteerd.
8.2 Vertrouwensniveaus voor authenticatie
- Personen: voor toegang tot uitgewisselde gezondheidsgegevens geldt betrouwbaarheidsniveau hoog (eIDAS "hoog"). In de Nederlandse zorg betekent dit in de praktijk een UZI-middel of een door VZVZ erkend alternatief (zoals ZORG-ID met UZI-identiteit). De bestaande optionele ZORG-ID-koppeling levert hiervoor de UZI-identiteitsbinding.
- Systemen: wederzijdse systeemauthenticatie met PKIoverheid-servercertificaten (UZI-servercertificaat waar het zorgdomein dat vereist), mutual TLS in de meest recente door het NCSC als "goed" beoordeelde versie, en sterke encryptie (minimaal AES-256 of gelijkwaardig).
8.3 Wederzijdse afspraken
Met elke uitwisselpartner worden voor livegang schriftelijke afspraken gemaakt over:
- de risicoclassificatie van de uitwisseling en de vereiste vertrouwensniveaus per aspect;
- encryptiemethoden, certificaat- en sleutelbeheer (uitgifte, intrekking, rotatie);
- logging van uitwisselingsgebeurtenissen aan beide zijden (NEN 7513, tabel 3), inclusief bewaartermijnen, zodat de logging over domeinen heen navolgbaar blijft;
- beschikbaarheid, incidentmelding en beeindiging van de koppeling.
8.4 Aanvullende voorwaarden per koppeltype
- LSP/AORTA: aansluiting volgt de aansluitvoorwaarden van VZVZ, inclusief een goed beheerd zorgsysteem (GBZ)-toets en UZI-middelen.
- Wegiz-aangewezen uitwisselingen: zodra een AMvB een NEN-norm voor een specifieke gegevensuitwisseling verplicht stelt (bijvoorbeeld NEN 7503 voor het voorschrijven en ter hand stellen van medicatie), wordt conformiteit met die norm onderdeel van de koppelingseisen.
- Onafhankelijke beoordeling: Begz artikel 3 lid 4 vereist ten minste vijfjaarlijkse onafhankelijke beoordeling van de naleving van de NEN 7510-reeks en NEN 7512; een nieuwe koppeling wordt in de eerstvolgende beoordeling meegenomen.