In een eerdere post noemde ik al een voorbeeld van de bedreigingen die de huidige digitale technologie kan vormen voor onze gecentraliseerde medische gegevens, als er sprake is van een fatale combinatie van digitale onkunde en misplaatst vertrouwen. Het zou zelfs opzettelijkveroorzaakt kunnen worden door agenda-gedreven wangedrag. Het opslaan van persoonlijke en gevoelige gegevens op een public blockchain die smart contracts ondersteunt, zoals Ethereum of Solana, is een manier om de opslag te decentraliseren. Het cryptografische karakter van de blockchain kan dan de broodnodige privacy en veiligheid bieden.
Bij public blockchains zijn alle gegevens echter standaard openbaar. Daarnaast moet je rekening houden met transactiekosten (gas fees), complexe code en netwerkcongestie. Bovendien kan het specialistische karakter van de blockchain en het ontbreken van enig vangnet bij fouten weerstand oproepen bij een doorsnee ontwikkelteam binnen een medisch of overheidsinstituut.
Fabric – Inleiding
Als je boven beschreven ‘hobbels’ in relatie tot een publieke blockchain beschouwt, komt de private blockchain Hyperledger Fabric (of kortweg: Fabric) naar voren als een zeer interessant alternatief. Het is open-source en wordt gehost door de Linux Foundation. Het is ontworpen voor het bouwen van gedistribueerde ledger-oplossingen voor zakelijke omgevingen waar de deelnemers bekend en vertrouwd zijn (zoals bedrijven, overheden of consortiums). Dus niet voor een anoniem publiek zoals bij de public blockchains. Fabric richt zich puur op bedrijfslogica, heeft géén eigen cryptocurrency en géén transactiekosten (gas fees). Het is dus niet de trustless en permissionless omgeving van de public blockchain, maar ik denk dat het zeer geschikt kan zijn voor het gebruik met medische data. Het sluit zeker aan bij het samenwerkingsgerichte, maar tegelijkertijd gereguleerde karakter van de gezondheidszorg.
Fabric stelt je in staat om slechts een deel van de ledger te gebruiken door channels te creëren. Deze channels maken het mogelijk om privé-subnetwerken te creëren. Neem bijvoorbeeld een channel dat alleen maar bestaat uit: diagnostisch laboratorium A, ziekenhuis A, ziekenhuis B en verzekeraar A. Dit betekent dat alleen ziekenhuis A, ziekenhuis B en verzekeraar A toegang hebben tot de laboratoriumresultaten van een patiënt. Als eigenaar van je gezondheidsgegevens wordt je op de hoogte gehouden van eventuele wijzigingen in de world state op de Fabric ledger. Dit is de totale transactie-hash van een block op de ledger. Wordt er ook maar iets veranderd aan jouw gegevens op de ledger, dan zal de hash ook veranderen. Binnen een channel kun je het delen van gegevens nog verder verfijnen, bijvoorbeeld door de toegang te beperken tot alleen specifieke organisaties.
In Fabric gebruik je Smart Contracts (verpakt in Chaincode ten behoeve van deployment) om business rules en regelgeving rechtstreeks in de chaincode op de ledger af te dwingen. Elke update wordt onveranderlijk vastgelegd op de ledger, wat een volledig herkomst-trail voor de gegevens garandeert, inclusief audits, patient access logs en datalek-triggers. Zo kan elke wijziging of verwijdering van ‘ongewenste’ gegevens, én wie dit heeft uitgevoerd, direct worden opgepikt als een verandering in de world-state.
Data opslag
Wanneer je gebruikmaakt van een openbare blockchain ledger, zoals Solana, heb je een externe, gecentraliseerde opslag van de laboratoriumgegevens nodig (bijvoorbeeld in het gestandaardiseerde healthcare-formaat HL7 v2.5), omdat een blockchain niet is ontworpen voor het opslaan van grote hoeveelheden (meta)data. Daarnaast dien je rekening te houden met kosten: rental fees, transaction fees en network fees. In principe zijn HL7-tekstbestanden niet zo groot, gemiddeld 5-20 KB voor laboratoriumresultaten, maar ze kunnen groter worden wanneer er embedded Base64-gecodeerde gegevens in voorkomen. Desondanks is het raadzaam om alleen een cryptografische hash van het bestand als referentie op de blockchain op te slaan en het fysieke bestand zelf met de data elders off-chain (veilig) te bewaren.
In Fabric dienen de databestanden ook off-chain te worden opgeslagen, omdat grote transacties de processen voor endorsement (goedkeuring), ordering (ordening) en commitment (vastlegging) op het netwerk vertragen. Bovendien slaat elke peer de volledige ledgerhistorie op, wat leidt tot aanzienlijk hogere opslagkosten. Fabric gaat echter wel anders met data om dan Solana. Waar Solana binaire data in accounts opslaat, kan Fabric data in elk formaat verwerken en opslaan in zijn state-database CouchDB. Dit is een key-value database die JSON-query’s ondersteunt en gesynchroniseerd is op alle peers. Deze opzet met een state-database maakt het eenvoudig om ook externe databases te kunnen query-en. Zo kun je bijvoorbeeld vanuit een app complexe high-performance query’s uitvoeren op de lokale CouchDB-database van een peer (dus NIET op de blockchain) met joins (via views) naar externe data. Die externe data kunnen dan de diagnostische databestanden zijn, bijvoorbeeld op een cloudservice als Amazon Web Services.
Beveiliging en identities
De Public Key Infrastructure (PKI) van Fabric zorgt ervoor dat de verschillende ‘actoren’ in het Fabric blockchain-netwerk, waaronder peers, orderers, client-applicaties en administrators, gebruikmaken van SSL/TLS-versleutelde communicatie. Ieder van hen authenticeert zichzelf als een verifieerbare identity met een X.509 digitaal certificaat. Fabric biedt een reeks oplossingen voor het beheren van de digitale identities in het blockchain-netwerk. Het kan zelf root CA-certificaten aanmaken, waarmee vervolgens intermediate certificates kunnen worden gesigned. Deze kunnen uiteraard alleen binnen het netwerk worden uitgegeven. Daarnaast is er de flexibiliteit om je eigen Certificate Authority (CA) te gebruiken, in plaats van die van Fabric.
Naast de PKI, bestaat er binnen Fabric de Membership Service Provider (MSP). Dit is het mechanisme dat reguleert welke identities door de rest van het netwerk kunnen worden vertrouwd en herkend. Kort gezegd: wie mag wat doen op organisatie-, node-, en channelniveau, vastgelegd in een set van rollen en machtigingen.
De toekomst van Hyperledger Fabric
Hyperledger Fabric is een volwassen systeem en klaar voor gebruik, en de technologie ervan heeft de toekomst. Maar worden dit soort private gedistribueerde systemen momenteel wel voldoende gebruikt? Niet genoeg, zoals ik in verschillende kritische blogs heb gelezen. Het ligt niet aan de technologie zelf, maar het ontbreekt aan eenzelfde mate van hype die er wel is in het ecosysteem van de public blockchains. Het blijft daarom lastig om een groep betrouwbare deelnemers samen te stellen die het risico willen nemen om te investeren in een private blockchain. Bovendien missen veel bedrijven en instellingen nog steeds de essentiële competenties met betrekking tot blockchaintechnologie in het algemeen.
Zoals je ziet, er zijn briljante technische initiatieven om de ernstige privacyproblemen in de gezondheidszorg, maar ook bij telecombedrijven en overheidsinstanties, te kunnen indammen. Maar wanneer zullen ze worden opgepakt en door wie? Zijn private blockchains hun tijd nog steeds vooruit? … Waarschijnlijk wel.
Voor details over de architectuur, werking en het op je lokale machine (als Docker-containers) installeren van Hyperledger Fabric, verwijs ik graag naar hun uitstekende documentatie via de bovengenoemde link.
Maar het allerbelangrijkste: veel plezier met het experimenteren met Fabric!

Plaats een reactie