[Bug] README claims every EU identity number is checksum-validated; four are not #574
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#574
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?
Found in the pre-publication claim audit.
The claim —
README.md:26: the scanner detects "identification numbers (the Dutch BSN plus national ID numbers across the EU, each validated by its own checksum)".What the code says, in its own comments:
lib/services/privacy/privacy_checksums_eu.dart:586— "Bewust zonder checksum. De mod-11-controle is in 2007 losgelaten" (isValidDkCprvalidates only day and month):478— "National Insurance Number: geen checksum, wél een strak formaat" (isValidUkNino):327— "Er is geen checksum, en die verzinnen we niet" (isValidMtIdCard)lib/services/privacy/privacy_eu_rules.dart:109—li.peid, "geen checksum, géén datum, géén prefix"All four are live rules (
privacy_eu_rules.dart:261dk.cpr,:176uk.nino,:121mt.id).Second, smaller error:
docs/PRIVACY.md:290says "Two of those rules deliberately have no checksum" and names only Malta and Liechtenstein. Denmark and the UK NINO are missing — whiledocs/design/OCIWACHT.md:1334already namesdk.cpranduk.ninocorrectly.Why this must be fixed before publication: this is the flagship privacy feature, and the refutation is one
grep -n checksumaway — in comments the author wrote specifically to be honest. A critic who finds the code more truthful than the README will discount every other privacy claim in the document. It also over-promises exactly where a false negative matters: a Danish CPR or a UK NINO is caught by format plus a context word, not by arithmetic.Proposal: adjust the claim; the code is right and must not change (inventing a checksum for CPR would reject genuine numbers, as
privacy_checksums_eu.dart:586-590explains). README: "…national ID numbers across the EU, validated by a checksum where one exists and otherwise by format plus a required context word, which keeps them below certain." PRIVACY.md: change "Two" to "Four" and add Denmark and the UK NINO.Opgelost in `
b043d5f` (PR #652).README en
docs/PRIVACY.mdzeggen nu dat een checksum wordt gebruikt wáár die bestaat, en anders formaat plus een verplicht contextwoord — wat de bevinding onder "zeker" houdt. PRIVACY.md telt er vier in plaats van twee, met Denemarken en de Britse NINO erbij.De code is niet aangeraakt en dat was ook het punt:
dk.cprenuk.ninostaan opPrivacyConfidence.likelymet verplichte contextwoorden (nagetrokken inprivacy_eu_rules.dart:176en:261). Een checksum verzinnen zou echte nummers afwijzen.