feat: kijk de RFC 3161 nonce-echo na bij importeren (#563) #567
No reviewers
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!567
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/tijdstempel-nonce"
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?
Het verzoek droeg al een nonce en de TSA is verplicht hem terug te kaatsen — maar OciDeck bewaarde hem niet, dus bij het importeren viel er niets te vergelijken. Een ouder token voor dezelfde hash, opnieuw ingediend, was niet te onderscheiden van een vers token.
Het formaat
Eén additieve sleutel
timestamp_noncein.seal.json, bewust zonder versiebump. Een oudere build leest per sleutel en negeert hem; verhogen zou die build de hele sidecar laten weigeren, en dan raakt het zegel zoek om een veld dat hij niet nodig heeft. Er staat een test op die dat vastlegt (inclusief het lezen zoals een oudere build het zou doen).De nonce wordt gewist zodra het token binnen is: hij hoort bij het vérzoek, dus daarna staat er niets meer uit.
De grens die blijft
Staat er geen verzoek uit — een tijdstempel die met een deck is meegekomen, of van vóór deze build — dan is er niets te vergelijken en blijft de imprint het enige oordeel. Streng doen op een nonce die nooit verstuurd is, zou een geldig token weigeren. Dat is een aparte testregel.
CMS- en ketenverificatie blijven ongebouwd, met dezelfde reden als altijd: X.509-padvalidatie tegen een meegeleverde ankerlijst die per definitie veroudert, in een app die geen netwerk op gaat.
Toetsbaar gemaakt
Het oordeel zat in een widget-methode en was daardoor alleen via de bestandskiezer bereikbaar. Het staat nu als
judgeTimeStampImportin de dienst, met drie uitkomsten in plaats van een boolean — "dit is niet dit document" is iets anders dan "dit is een ouder antwoord", en de gebruiker krijgt ook twee verschillende meldingen. Vijf tests, en twee ervan zijn rood gezien tegen het oude gedrag.Onderweg
Drie commentaarblokken zeiden dat dit níét gebeurde (kop van
rfc3161_timestamp.dart,buildTimeStampRequest,timeStampEchoesNonce), plus SECURITY_DESIGN §9. Allemaal bijgewerkt — een comment dat het tegendeel beweert van de code is erger dan geen comment.De klasseratchet viel om op DeckNotifier. Twee helpers die geen enkel veld van die klasse raken staan nu buiten de klasse; netto 1307 → 1305, vastgezet.
Eén nieuwe l10n-string, in alle 31 talen.
make checkgroen.Closes #563