De app kijkt naar zijn eigen voordeur, en meet minder dan het plan beloofde

Open punt 5 van Webinterface, goedgekeurd en gebouwd. De agent verbindt met de
eigen TLS-poort, maakt de handdruk af en vergelijkt het getoonde certificaat
byte voor byte met het gekozen bestand.

Die vergelijking blijkt waardevoller dan de handdruk. Ze vangt een
certificaatwissel die nginx nooit heeft toegepast, en dat is precies het geval
waar een controle op vertrouwen blind voor is. Er wordt daarom bewust niet tegen
de certificaatwinkel van het besturingssysteem geverifieerd: een zelfondertekend
certificaat uploaden is een ondersteunde bron en die opstelling zou dan als kapot
gemeld worden.

Twee dingen liepen anders dan het plan zei en staan nu rechtgezet in PLAN 4a2,
OPEN punt 5 en de changelog. De belofte "luisteren, certificaat en doorverbinding
in een keer" klopt voor twee van de drie: na de handdruk wordt er niets
verstuurd. Een echt verzoek zou de sessie bytes geven, en sessies met bytes
worden nooit uit het activiteitenlog gefilterd, want die kunnen een storing zijn.

En dat filteren was de tweede verrassing. Elke meting is voor nginx een gewone
sessie en levert dus een logregel op; zonder rem ging het log over onszelf in
plaats van over wallets. Er zit nu een rem van vijf minuten op, er wordt niet
gemeten vlak na een herlading omdat het vorige certificaat er dan nog staat, en
de eigen regels worden weggelaten op grond van het moment.

Tests: 22 nieuw, met de nadruk op de niet-gelukkige paden en op de rem, want dat
is wat het log bruikbaar houdt. Alle vier de beslissende regels mutatie-getest.
De changelog kreeg ook de ontbrekende 0.0.15 erbij.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Harmen
2026-08-27 15:24:24 +02:00
co-authored by Claude Opus 5
parent fc7ec7fc6c
commit c8d9765cb3
10 changed files with 668 additions and 20 deletions
+54
View File
@@ -8,6 +8,60 @@ Wat er nog moet gebeuren staat **niet** hier maar in de plannen; zie [CONTINUE_H
Een lijst met geplande features op twee plekken loopt uit elkaar, en dan is geen van beide meer te
vertrouwen.
## [0.0.16] - 2026-08-27
### Added
- **De zelfcontrole: de agent verbindt met de eigen TLS-poort.** Tot nu toe keek de app of de
Electrum-server antwoordde, maar niet of hij zélf antwoordde, en dat laatste is zijn enige taak. De agent
zet nu een TLS-verbinding op naar poort 50022 van de nginx-container ernaast, maakt de handdruk af en
vergelijkt het getoonde certificaat **byte voor byte** met het gekozen bestand.
Die vergelijking is het punt, en niet de handdruk. Een certificaatwissel die nginx nooit heeft toegepast
ziet er van buiten goed uit en loopt pas bij de wallet stuk op naamverificatie; dat is precies het geval
waar een controle op vertrouwen blind voor is. Er wordt daarom bewust **niet** tegen de certificaatwinkel
van het besturingssysteem geverifieerd: een zelfondertekend certificaat uploaden is een ondersteunde
bron, en die opstelling zou dan als kapot gemeld worden.
De uitkomst staat in `status.json` onder `tls.self_check`, met vier toestanden: `off` (geen certificaat
gekozen, dus geen poort), `ok`, `wrong-certificate` en `failed`. Bij een **wijziging** komt er een regel
in het activiteitenlog; elke ronde dezelfde regel zou ruis zijn.
**Wat het niet bewijst, en dat is minder dan het plan beloofde.** Er wordt na de handdruk niets
verstuurd, dus de doorverbinding naar de Electrum-server zit er niet in; die wordt apart bevraagd. En de
verbinding loopt van container naar container, dus de poortmapping naar de host en de doorstuurregel in
de router blijven ongetest.
### Changed
- **De controle draait niet elke ronde, en zijn eigen sessies worden uit het activiteitenlog gefilterd.**
Elke verbinding met poort 50022 is voor nginx een gewone sessie en levert dus een logregel op. Zonder rem
zou het log elke minuut over onszelf gaan in plaats van over wallets. Er wordt daarom hoogstens elke vijf
minuten gemeten, en de agent onthoudt wanneer hij zelf verbond om de bijbehorende regel weg te laten.
Twee eigenschappen van die filter horen erbij: hij laat **alleen** regels weg waarin niets is doorgegeven,
want een sessie met verkeer kan een storing zijn en die verbergen is erger; en hij kan een échte scan
missen die toevallig in hetzelfde venster van twee seconden eindigde.
- **Vlak na een certificaatwissel wordt er juist niet gemeten.** nginx herlaadt binnen tien seconden, dus
een meting op dat moment ziet nog het vorige certificaat en zou dat als storing melden. De meting schuift
één ronde op, en dan is het meteen de interessantste die er is.
## [0.0.15] - 2026-08-25
Deze regel is op 27-08-2026 alsnog toegevoegd; bij de verhuizing is de changelog overgeslagen.
### Changed
- **De app store is verhuisd naar `UmbrelApps`**, en `website`, `repo`, `support`, `submission` en `icon`
wijzen daarheen. De app zelf is ongewijzigd: het app-id hangt aan het store-id `whatsnext` en niet aan de
URL. Aanleiding was Evolu Relay, want umbrelOS leest per store één repo en een tweede app maakte een naam
naar deze ene app onhoudbaar.
Wat hierbij geleerd is en verder gaat dan deze release: **een geïnstalleerde app overleeft een wisseling
van store-URL niet.** umbrelOS tóónde de update wel en voerde hem niet uit, zonder foutmelding.
Deïnstalleren plus opnieuw installeren loste het op, en de prijs daarvan is de certificaatkeuze.
## [0.0.14] - 2026-08-20
### Added