anonym.legal
Назад до блогуGDPR та відповідність

Виявлення EU-податкових ідентифікаторів за GDPR...

Податкові ідентифікатори ЄС — Steuer-ID (Німеччина), NIF (Іспанія), Codice Fiscale (Італія) та інші — є чутливими PII за GDPR.

April 20, 20267 хв читання
EU national identifiersSteueridentifikationsnummerCodice FiscaleNIFmultinational GDPRtax ID detection

Чому податкові ідентифікатори ЄС є критичною PII

Податкові ідентифікатори є особливо чутливими PII з кількох причин:

  1. Вони є унікальними ідентифікаторами протягом усього життя — незмінні, прив'язані до конкретної особи
  2. Вони дозволяють переплутати записи — зловмисник з Steuer-ID може вдаватися за іншу особу перед податковими органами
  3. Вони часто пов'язані з фінансовими даними — розкриття може призвести до фінансового шахрайства
  4. Це спеціальні дані в деяких юрисдикціях — Databeskyttelsesloven (Данія) і LOPDGDD (Іспанія) встановлюють суворі правила

Каталог EU-податкових ідентифікаторів

Steuer-Identifikationsnummer (TIN) — Німеччина

Формат: 11 цифр, перша — не нуль і не 0

Алгоритм: перевірка через складний рекурсивний алгоритм.

Regex (базовий): [1-9][0-9]{10}

Контекстні слова: Steuer-ID, Steueridentifikationsnummer, TIN, IdNr, Identifikationsnummer

NIF (Número de Identificación Fiscal) — Іспанія

Формат: 8 цифр + контрольна буква

Regex: [0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKE]

Валідація: число % 23 → індекс у рядку "TRWAGMYFPDXBNJZSQVHLCKE"

Контекстні слова: NIF, número de identificación fiscal, DNI

Codice Fiscale — Італія

Формат: 16 символів буквено-цифровий

Regex: [A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]

Контекстні слова: Codice Fiscale, C.F., CF, codice fiscale

NIP (Numer Identyfikacji Podatkowej) — Польща

Формат: 10 цифр

Regex: [0-9]{10} з алгоритмічною валідацією

Алгоритм: ваги [6, 5, 7, 2, 3, 4, 5, 6, 7] × перші 9 цифр; mod 11 = 10-та цифра

BSN (Burgerservicenummer) — Нідерланди

Формат: 8-9 цифр

Regex: [0-9]{8,9}

Алгоритм: ваги [9, 8, 7, 6, 5, 4, 3, 2, -1]; sum mod 11 = 0

Personnummer / Samordningsnummer — Швеція

Формат: YYYYMMDD-XXXX або YYYYMMDD+XXXX

Regex: [0-9]{6}[-+][0-9]{4}

Алгоритм: Luhn

Henkilötunnus — Фінляндія

Формат: DDMMYY[+-A]XXXC (C — контрольна)

Regex: [0-3][0-9][0-1][0-9][0-9]{2}[-+A][0-9]{3}[0-9A-FHJ-NPR-Y]

Numéro Fiscal de Référence — Франція

Формат: 13 цифр (SPI — numéro fiscal)

Regex: [0-9]{13}

Контекстні слова: numéro fiscal, SPI, impôts

NINO (National Insurance Number) — Велика Британія

Формат: AA123456A

Regex: [A-CEGHJ-PR-TW-Z]{2}[0-9]{6}[A-D]

Технічна реалізація в Presidio

from presidio_analyzer import PatternRecognizer, Pattern, AnalyzerEngine

def build_eu_tax_registry():
    recognizers = []
    
    # Steuer-ID (Германія)
    steuer_patterns = [Pattern('steuer_id', r'[1-9][0-9]{10}', 0.6)]
    recognizers.append(PatternRecognizer(
        supported_entity='DE_STEUER_ID',
        patterns=steuer_patterns,
        context=['Steuer-ID', 'Steueridentifikationsnummer', 'IdNr'],
        supported_language='de'
    ))
    
    # Codice Fiscale (Iталія)
    cf_patterns = [Pattern('codice_fiscale',
                           r'[A-Z]{6}[0-9]{2}[A-Z][0-9]{2}[A-Z][0-9]{3}[A-Z]', 0.7)]
    recognizers.append(PatternRecognizer(
        supported_entity='IT_CODICE_FISCALE',
        patterns=cf_patterns,
        context=['codice fiscale', 'C.F.', 'CF'],
        supported_language='it'
    ))
    
    return recognizers

Особливі GDPR-вимоги для податкових ідентифікаторів

КраїнаПравова підставаОсобливі вимоги
ДаніяDatabeskyttelsesloven ст. 11Тільки для визначених цілей
ІспаніяLOPDGDDДодаткова правова підстава
НідерландиUitvoeringswet AVGBSN — тільки для визначених цілей
Всі ЄСGDPR ст. 87Держави-члени можуть встановлювати додаткові вимоги

Висновок

EU-податкові ідентифікатори є критичною PII, що вимагає технічно точного виявлення та юридично коректної обробки. Для організацій, що обробляють дані резидентів кількох країн ЄС — інвестиція у покриття всіх national tax IDs є обов'язковою.

Джерела:

Готові захистити свої дані?

Почніть анонімізувати PII з 285+ типами сутностей на 48 мовах.