By · Last updated 2026-05-18

Tornar al BlogGDPR i Compliment

ÚOOÚ Txèquia: Rodné číslo (DNI) validació tècnica per...

El rodné číslo txec és un número de 10 dígits amb suma de verificació de mòdul 11. GDPR requereix que les organitzacions validen l'anonimització.

May 18, 20267 min llegit
Czech ÚOOÚrodné číslo detectionCzech GDPR compliancemanufacturing data protectionCentral Europe

Rodné číslo: Estructura tècnica

El rodné číslo (DNI txec) és un número de identificació única assignat a cada persona nascuda o registrada a la República Txeca. És similar al SSN nord-americà però amb validació tècnica integrada.

Format: 10 dígits, sovint escrits com RRMMDDXXXX o RRMMDDsXXX on:

  • RRMMDD: Data de naixement (any, mes, dia) en format YY-MM-DD
  • sXXX: Seqüenciador aleatori de 3 dígits (s = signe per a sexe/ciutadania)

Validació de suma de verificació mòdul 11: El desè dígit és un dígit de verificació calculat usant algoritme de suma de verificació de mòdul 11:

  1. Pesa els primers 9 dígits amb seqüència de pes: 8, 7, 6, 5, 4, 3, 2, 1, 0
  2. Suma ponderada = (dígit[0] × 8) + (dígit[1] × 7) + ... + (dígit[8] × 0)
  3. Resta suma de 11: remainder = 11 - (suma mod 11)
  4. Si remainder = 10, el dígit de verificació = 0; si remainder = 11, el dígit de verificació = 1; sinó, remainder = dígit de verificació

Exemple:

  • Número: 8553280123
  • Pesa: (8×8) + (5×7) + (5×6) + (3×5) + (2×4) + (8×3) + (0×2) + (1×1) + (2×0) = 64+35+30+15+8+24+0+1+0 = 177
  • Remainder = 11 - (177 mod 11) = 11 - 1 = 10 → dígit de verificació = 0
  • Validació: últim dígit és 3, calcul don dígit = 0 → Número inválid

Auditoria de conformitat GDPR: Com verificar anonimització

Com que el rodné číslo té suma de verificació estructurada, les organitzacions que anonimitzen números txecs han de verificar que:

  1. Els números originals estan efectivament redactats o anonimitzats

    • Cercar qualsevol número de 10 dígits en els documents anonimitzats
    • Si es troben números de 10 dígits, validar que complissin la suma de verificació de mòdul 11 (si complixen, podrien ser rodné číslo reals)
  2. Els números anonimitzats no complissin la suma de verificació

    • Alguns sistemes d'anonimització reemplacen números amb altres números aleatoris
    • Si els números aleatoris casualmente validen com a suma de verificació de mòdul 11, podrien ser confosos amb números reals
    • Verificar que la taxa de validació de suma de verificació en números anonimitzats és < 1/11 (expected value for random numbers)
  3. Els números encriptats romandran indistingibles de números aleatoris

    • Si els números estan encriptats (AES-256), la sortida serà una cadena hex de 32 caràcters, no un número de 10 dígits
    • Això és millor que reemplaçament amb números aleatoris, ja que és impossible confondre encriptació amb data real

Validació tècnica per a auditoria GDPR

Script per a verificació de suma de verificació de rodné číslo (Python):

import re

def validate_rodne_cislo(number_str):
    """Validar suma de verificació de rodné číslo mòdul 11"""
    if not re.match(r'^\d{10}$', number_str):
        return False
    
    digits = [int(d) for d in number_str[:9]]
    weights = [8, 7, 6, 5, 4, 3, 2, 1, 0]
    
    weighted_sum = sum(d * w for d, w in zip(digits, weights))
    remainder = 11 - (weighted_sum % 11)
    
    if remainder == 10:
        check_digit = 0
    elif remainder == 11:
        check_digit = 1
    else:
        check_digit = remainder
    
    return int(number_str[9]) == check_digit

# Auditoria: cercar números validables en documents anonimitzats
import os

def audit_anonymization(directory):
    found_valid = []
    found_total = 0
    
    for filename in os.listdir(directory):
        with open(os.path.join(directory, filename), 'r') as f:
            text = f.read()
        
        # Cercar qualsevol seqüència de 10 dígits
        for match in re.finditer(r'\b\d{10}\b', text):
            number = match.group()
            found_total += 1
            if validate_rodne_cislo(number):
                found_valid.append((filename, number))
    
    print(f"Total 10-digit sequences: {found_total}")
    print(f"Valid rodné číslo (potential leaks): {len(found_valid)}")
    for filename, number in found_valid:
        print(f"  Found in {filename}: {number}")
    
    return len(found_valid) == 0  # auditoria passa si NO es troben números reals

# Córrer auditoria
audit_anonymization('/path/to/anonymized/documents')

Expected output per a documents correctament anonimitzats:

  • Total 10-digit sequences: X (qualsevol nombre)
  • Valid rodné číslo: 0 (cap fuga de números reals)
  • Auditoria: PASSA

Implicacions de conformitat ÚOOÚ

Ofice for Personal Data Protection (ÚOOÚ) de Txèquia aplica GDPR i pot exigir:

  1. Documentació de procediments de anonimització
  2. Validació de que els números txecs han estat irreversiblement anonimitzats
  3. Testing periodic de documents anonimitzats per a fuites potencials

Organitzacions que procesan números rodné číslo han de mantenir:

  • Procediments documentats de anonimització
  • Registres d'auditoria de documents processats
  • Evidència que validació de suma de verificació s'ha realitzat després de anonimització

Fonts:

Preparat per protegir les vostres dades?

Comenceu a anonimitzar PII amb més de 285 tipus d'entitats en 48 idiomes.

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.