Чому податкові ідентифікатори ЄС є критичною PII
Податкові ідентифікатори є особливо чутливими PII з кількох причин:
- Вони є унікальними ідентифікаторами протягом усього життя — незмінні, прив'язані до конкретної особи
- Вони дозволяють переплутати записи — зловмисник з Steuer-ID може вдаватися за іншу особу перед податковими органами
- Вони часто пов'язані з фінансовими даними — розкриття може призвести до фінансового шахрайства
- Це спеціальні дані в деяких юрисдикціях — 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 AVG | BSN — тільки для визначених цілей |
| Всі ЄС | GDPR ст. 87 | Держави-члени можуть встановлювати додаткові вимоги |
Висновок
EU-податкові ідентифікатори є критичною PII, що вимагає технічно точного виявлення та юридично коректної обробки. Для організацій, що обробляють дані резидентів кількох країн ЄС — інвестиція у покриття всіх national tax IDs є обов'язковою.
Джерела: