Powrót do blogaGDPR i zgodność

ANPD LGPD Brazylia: Przewodnik anonimizacji dla...

Brazylijskie CPF (Cadastro de Pessoas Físicas), CNPJ (Cadastro Nacional da Pessoa Jurídica), numery rachunków bankowych mają inne formaty niż...

April 21, 20268 min czytania
Brazil LGPDCPF detectionBrazilian Portuguese PIIANPD complianceSouth America data protection

ANPD LGPD Brazylia: Przewodnik anonimizacji dla zespołów przetwarzających dane w języku португueskim

Brazylijski identyfikatory

CPF (Cadastro de Pessoas Físicas)

  • 11 cyfr: XXX.XXX.XXX-XX
  • Struktura: data urodzenia + numer sekwencyjny + 2 cyfry kontrolne
  • Przykład: 123.456.789-09
  • Kod modulo-11

CNPJ (Cadastro Nacional da Pessoa Jurídica)

  • 14 cyfr: XX.XXX.XXX/0001-XX
  • Używany dla firm
  • Przykład: 12.345.678/0001-90

Problemy z PII narzędziami

Większość narzędzi PII nie zna formatu CPF/CNPJ:

  • Nie rozpoznają separatory (. i -)
  • Nie walidują cyfry kontrolne
  • Mogą wziąć "123.456.789" za zwykły tekst

Implementacja w Presidio

from presidio_analyzer import Pattern, PatternRecognizer

# CPF pattern - 11 digits, XXX.XXX.XXX-XX format
cpf_pattern = Pattern("CPF", r'\d{3}\.\d{3}\.\d{3}-\d{2}')
cpf_recognizer = PatternRecognizer(
    supported_entity="CPF",
    patterns=[cpf_pattern]
)

# CNPJ pattern - 14 digits
cnpj_pattern = Pattern("CNPJ", r'\d{2}\.\d{3}\.\d{3}/0001-\d{2}')
cnpj_recognizer = PatternRecognizer(
    supported_entity="CNPJ",
    patterns=[cnpj_pattern]
)

analyzer = AnalyzerEngine()
analyzer.add_recognizer(cpf_recognizer)
analyzer.add_recognizer(cnpj_recognizer)

Walidacja CPF

CPF ma algorytm kontrolny (modulo-11). Możesz walidować:

def validate_cpf(cpf):
    # Usuń separatory
    cpf = cpf.replace('.', '').replace('-', '')
    
    # Oblicz pierwszą cyfrę kontrolną
    sum1 = sum(int(cpf[i]) * (10 - i) for i in range(9))
    digit1 = 11 - (sum1 % 11)
    digit1 = 0 if digit1 > 9 else digit1
    
    # Oblicz drugą cyfrę kontrolną
    sum2 = sum(int(cpf[i]) * (11 - i) for i in range(9))
    digit2 = 11 - (sum2 % 11)
    digit2 = 0 if digit2 > 9 else digit2
    
    return cpf[-2:] == f"{digit1}{digit2}"

LGPD wymogi anonimizacji

LGPD Art. 13 mówi:

"Dane mogą być przetwarzane bez zgody dla celów statystycznych, naukowych, historycznych i zabytkowych, jeśli dane zostały anonimizowane."

Ale co to znaczy "anonimizowane"? ANPD definiuje:

Prawdziwie anonimizowane: Dane nie mogą być powiązane ani samodzielnie ani z innymi, nawet jeśli połączy się z innymi bazami.

Pseudo-anonimizowane: Dane są zasłonięte, ale mogą być powiązane z ukrytymi kluczami. To NIE jest anonimizowane pod LGPD.

Praktyczny przykład

Oryginalne: João Silva, CPF: 123.456.789-09, email: joao@company.com

LGPD compliant anonimizacja:
- Usunąć imię i nazwisko całkowicie (nie zmieniać na "Person A")
- Usunąć CPF całkowicie (nie zmieniać na [CPF])
- Usunąć email całkowicie
- Zamiast tego: "Osoba 47" (bez laku do faktycznych danych)

Lub:

- Usunąć wszystkie personalne dane
- Zachować tylko: rok urodzenia, płeć, stan (dla statystyk)
- Upewnić się że nie ma sposobu powrotu do oryginalnych danych

Kontrola list

Przed wysłaniem dokumentów do przetwarzania:

  • Wszystkie CPF usunięte?
  • Wszystkie CNPJ usunięte?
  • Wszystkie imiona usunięte?
  • Wszystkie email usunięte?
  • Wszystkie numery telefonów usunięte?
  • Wszystkie adresy usunięte?
  • Czy dane są prawdziwie anonimizowane (nie pseudonymizowane)?

Zaključak

Brazylijskie dane PII mają inne formaty niż europejskie. LGPD ma ścisłą definicję anonimizacji. Narzędzia muszą być dostosowane do formatów CPF/CNPJ i procedury muszą uwzględniać wymogi LGPD.

Gotowy, aby chronić swoje dane?

Rozpocznij anonimizację PII z 285+ typami podmiotów w 48 językach.