73 lines
3.1 KiB
Markdown
73 lines
3.1 KiB
Markdown
# Volgende stappen
|
|
|
|
Wat er staat, en wat er nog moet. Eerlijk overzicht.
|
|
|
|
## Werkt en is gecontroleerd
|
|
|
|
- Domein en regels: eigendom van profielen, overlijdensprocedure, vrijgave van berichten.
|
|
- Versleuteling: AES-256-GCM in drie lagen, wachtwoordhashing, tokens.
|
|
- De handelingen: registreren, inloggen, familie, uitnodigen, claimen, kluis, berichten,
|
|
nalatenschap.
|
|
- Het socketprotocol: framing, server, client, sessies, dispatcher.
|
|
- De website in Blazor: inloggen, registreren, uitnodiging aannemen, overzicht, familie, kluis,
|
|
momenten, nalatenschap.
|
|
- Databaseschema voor MariaDB.
|
|
- De SocketServer als 64-bits Windows-service, met een beheerschermpje voor Install/UnInstall,
|
|
een eigen thread per verbinding en elk verzoek op zijn eigen thread.
|
|
- Inloggen en registreren met een code per e-mail, zonder wachtwoorden.
|
|
- De app-kant: `MijnBesluit.Client` (aanroepen over de socket) en `MijnBesluit.AppUi` (de
|
|
schermen). Zie `docs/Android-app.md`.
|
|
- Zesenvijftig controles in `MijnBesluit.SelfCheck`, alle groen.
|
|
|
|
## Nog te bouwen
|
|
|
|
### 1. De Android-app afmaken
|
|
|
|
De drie projecten staan er: `MijnBesluit.Client`, `MijnBesluit.AppUi` en de schil
|
|
`MijnBesluit.App`. De eerste twee bouwen en zijn getest; de schil is alleen op een toestel te
|
|
beproeven. Hoe je hem draait staat in `docs/Android-app.md`.
|
|
|
|
De serverkant staat: de SocketServer draait op mijnbesluit.nl, poort 5200 is open, en de
|
|
verbinding loopt over TLS 1.3 met het certificaat van het domein. Database en e-mail werken er
|
|
ook overheen.
|
|
|
|
Wat nu nog moet: de app op een echt toestel beproeven (`tools\Apk-maken.ps1 -Debug`), en daarna: opnieuw verbinden als het toestel uit de slaapstand komt, biometrisch ontgrendelen
|
|
voordat de kluis opengaat, en push-meldingen (Firebase) voor een bericht dat bezorgd wordt
|
|
terwijl de app dicht is.
|
|
|
|
### 2. Bijlagen in de schermen
|
|
|
|
`VaultService.StoreFileAsync` werkt, maar er is nog geen scherm om een document, foto of video te
|
|
uploaden en terug te bekijken. Denk aan een maximumgrootte en aan streamen in plaats van het hele
|
|
bestand in het geheugen laden.
|
|
|
|
### 3. Videoberichten
|
|
|
|
`MessageKind.Video` bestaat in het model. Opnemen in de app, versleuteld opslaan als
|
|
`VaultFile`, en tonen bij het lezen van het bericht.
|
|
|
|
### 5. Twee-factor-authenticatie
|
|
|
|
Het veld staat in de database. TOTP is de logische keuze; het geheim hoort versleuteld te worden
|
|
met dezelfde envelope-opzet als de kluis.
|
|
|
|
### 6. Koppeling met de BRP
|
|
|
|
Dit vervangt op termijn de drie meldingen. Alleen de plek waar `DeathConfirmedAt` gevuld wordt
|
|
verandert; de rest van de code niet. Houd de handmatige procedure ernaast: niet elke deelnemer
|
|
komt uit de BRP.
|
|
|
|
### 7. iOS
|
|
|
|
Zodra Android draait, is dat vooral een kwestie van een tweede doelplatform in de MAUI-csproj en
|
|
een Mac om mee te bouwen.
|
|
|
|
### 8. Voordat het live gaat
|
|
|
|
- Een onafhankelijke beveiligingsaudit.
|
|
- Snelheidsbegrenzing per IP-adres op inloggen en registreren.
|
|
- Beproef het terugzetten van een back-up — inclusief het sleutelbestand.
|
|
- Verwerkersovereenkomst en privacyverklaring: dit zijn bijzondere persoonsgegevens.
|
|
- Bedenk wat er gebeurt als MijnBesluit zelf ooit stopt. Mensen vertrouwen je hun
|
|
uitvaartwensen toe; daar hoort een antwoord bij.
|