Wat een praktijk hier beschermt

Elke bewering op deze pagina noemt wat ze waar maakt. Waar een bescherming iets kost, staat die kost ernaast.

De ene praktijk ziet de andere niet

De databank dwingt het af, niet de code
Elke tabel met gegevens van een praktijk heeft beveiliging op rijniveau aan en afgedwongen, en de toepassing verbindt met een rol die niets bezit en er niet omheen kan. Een query die haar praktijk vergat, geeft niets terug in plaats van alles.
Een rij kan niet naar de rij van een andere praktijk wijzen
Verwijzingen gaan over het paar (praktijk, rij) en niet over de rij alleen. Een gewone verwijzing zou één praktijk naar de gegevens van een andere laten wijzen, want die controles draaien met de rechten van de eigenaar en kijken door de scheiding heen.

Binnenkomen

Wachtwoorden worden als Argon2id bewaard
64 MiB, drie passages, vier banen, met de parameters naast elke afdruk bewaard: een oud wachtwoord blijft geldig nadat de instellingen verhoogd zijn, en wordt bij het volgende gebruik opnieuw berekend.
Een fout wachtwoord en een onbekend adres antwoorden hetzelfde
Beide kosten evenveel werk, want een onbekend adres wordt vergeleken met een echte afdruk van een waarde die niemand kent. Sneller antwoorden op één ervan zou iemand laten ontdekken wie hier een account heeft.
Een platformbeheerder kan niet bestaan zonder tweede factor
De databank weigert er een op te slaan, en weigert nadien de factor te verwijderen. Het in de toepassing afdwingen zou betekenen dat het bij elke deur opnieuw moet.
Een gestolen sessie valt op zodra ze gebruikt wordt
Sessies veranderen naarmate ze gebruikt worden. Een sessie tonen die al veranderd is, geldt als diefstal: de hele familie wordt ingetrokken, iedereen wordt afgemeld, en het komt in het logboek.

Het verslag van wat er gebeurd is

Geschreven samen met wat het vastlegt, en nooit gewijzigd
Elke regel wordt in dezelfde transactie geschreven als de handeling, zodat een geboekte afspraak en de regel die zegt wie ze boekte niet uit elkaar kunnen lopen. Een trigger weigert elke latere wijziging.
Precies één correctie is toegestaan
Vergeten wie iemand was, wanneer een account gewist wordt. Dat staat met naam in de trigger in plaats van door hem te versoepelen: elke andere wijziging blijft onmogelijk.
Het platformlogboek lezen wordt zelf vastgelegd
Geen beheerder kan kijken zonder het spoor achter te laten dat hij gekeken heeft.

Vertrekken

Een kopie van uw gegevens, in formaten die elders openen
Uw account, uw praktijken en uw afspraken als een kalenderbestand dat elke agenda leest. Een dossier dat een patiënt vraagt, komt van diens eigen pagina, in de browser, want de verslagen zijn verzegeld en deze server zou alleen versleutelde tekst kunnen doorgeven.
Verwijderen betekent dat de rijen weg zijn
Een test vraagt de databank welke kolommen een persoon noemen en ondervraagt ze daarna elk over het gewiste account. Een tabel toevoegen die het wissen niet kent, laat die test met naam falen.
Een praktijk die alleen van u is, kan niet verwijderd worden zolang ze gegevens bevat. Ze moet eerst overgedragen of leeggemaakt worden.

Wat wij kunnen lezen, en wat niet

Wij kunnen niet lezen wat er in een sessie gebeurde
Het verslag wordt in uw browser verzegeld met de sleutel van uw praktijk voordat het verstuurd wordt. Elke collega die u binnengelaten hebt, kan het lezen — daarvoor is het de sleutel van de praktijk en niet die van u — en deze server houdt versleutelde tekst en een ingepakte sleutel waarvan hij geen helft heeft.
Een vergeten wachtwoord is een echt verlies. De herstelsleutel die bij het opzetten van de praktijk getoond werd, is de weg terug, en er is geen andere: wij kunnen niet herstellen wat wij niet kunnen lezen.
Niemand kan uw persoonlijke notities lezen
De andere helft van een sessie is verzegeld met uw eigen sleutel, niet die van de praktijk. Geen collega, geen beheerder van de praktijk, geen platformbeheerder, en deze server evenmin.
Verliest u uw wachtwoord, dan gaan uw notities mee. De herstelsleutel van de praktijk opent de verslagen van de praktijk, niet de notities van één persoon.

Wat nog niet gebouwd is

Een wissing bereikt de levende databank en niet de back-up van vannacht, wat de eerlijke grens is van verwijderen in een systeem dat back-ups houdt — een sleutel vernietigen maakt een oude kopie onleesbaar, en die richting gaat het uit. Een verwijderde notitie is verwijderd en niet doorgehaald, en of een klinisch dossier dat mag toelaten, beslissen we liever dan het te ontdekken.