Zegel wordt niet automatisch bij openen geverifieerd (tamper-evidence is on-demand only) #1355
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1355
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bevinding
DocumentIntegrity.verify()(lib/services/document_integrity.dart) bestaaten is goed ontworpen — het vergelijkt
Deck.fileHashmetDeck.sealHashenonderscheidt
intact,changed,notSealed,notVerifiable, enredactedDerivative. Het is de tamper-evidence-belofte van OciDeck.Maar het wordt alleen on-demand aangeroepen: vanuit de statusbalk, de
provenance-actions, het audit-dossier en de MIAUW-compliance-check. Niet in
FileService.openDeckDetailed.Gevolg: een verzegeld deck dat na het verzegelen is bewerkt opent zonder
waarschuwing. De gebruiker moet zelf op het zegel-icoon klikken om te
ontdekken dat de inhoud niet meer klopt. Voor een tool waar het zegel de
integriteitsbelofte is, is "automatisch checken bij openen" de verwachte
defensieve laag.
Waarom dit ertoe doet
document_integrity.dartzegt in zijn eigen commentaar:Dat is de belofte. Maar "visible" betekent hier "zichtbaar als je weet dat je
moet kijken". Een ontvanger die een verzegeld deck opent en meteen begint
lezen, ziet niets — het zegel staat er, de inhoud is veranderd, en niemand
vertelt het hem.
Risico
Dit crasht niets en lekt geen data. Het verzwakt stilzwijgend de
integriteitsbelofte — precies wat
document_integrity.dartin zijn eigencommentaar zegt te willen voorkomen. Voor een presentatietool die gebruikt
wordt voor politiebriefings, audit-rapporten en MIAUW-disposities is
"stilletjes een veranderd zegel niet opmerken" een echte faalmodus.
Oplossingsrichting
In
openDeckDetailed, ná het hydraten van sidecars (waarbij het zegel-sidecarde
sealHashzet),DocumentIntegrity.verify()aanroepen en het resultaattoevoegen aan
DeckOpenResult— bv. eenIntegrityStatus? integrity-veld.De UI toont dan bij het openen een waarschuwing als de status
changedis,op dezelfde plek waar nu
warnings(grafiekdata) enskippedSidecarsverschijnen.
Belangrijk: dit is read-only checken, niet weigeren. Een veranderd deck
mag nog steeds openen — de gebruiker moet kunnen zien wat er staat — maar hij
moet weten dat het zegel niet meer klopt vóór hij erop vertrouwt.
Inschatting: ~15-20 regels in
openDeckDetailed+DeckOpenResult, plus UIvoor de melding, plus een test die een verzegeld deck bewerkt en opent.
Herkomst
Gevonden tijdens security research naar defense-in-depth voor OciDeck. Het
zegelmechanisme zelf is cryptografisch solide; de zwakte is dat het niet
automatisch wordt ingezet op het moment dat het ertoe doet — bij het openen
van een bestand van buiten.