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ó.

April 21, 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.