În acordul Brokerului X scria simplu: „Colectăm CNP-ul pentru identificare." Atât. Fără unde se stochează, cine îl vede, cât timp se ține. CNP-ul nu e un câmp obișnuit. Are propria lui lege.
În România, CNP-ul este reglementat suplimentar prin Legea 190/2018, art. 4. Asta înseamnă că dacă-l colectezi, ai obligații în plus față de GDPR-ul de bază.
De ce e CNP-ul tratat altfel?
Pentru că este un identificator unic și permanent. Spre deosebire de un email (poți schimba), de un telefon (poți schimba), de un nume (te poți căsători), CNP-ul te urmărește toată viața. Dacă-l pierzi într-o bresă, nu-l poți „reseta".
Plus, CNP-ul deblochează acces la multe alte sisteme: ANAF, CAS, ANRE, registre publice. Un atacator cu CNP + nume + data nașterii poate face uzurpare de identitate.
De aceea legea spune: dacă lucrezi cu CNP, trebuie să dovedești că:
- Ai un motiv legal clar să-l colectezi (nu doar „pentru identificare")
- Aplici măsuri tehnice și organizatorice adecvate (Art. 32 GDPR + Art. 4 Legea 190)
- Ții o evidență a accesului
- Limitezi durata de păstrare
Ce măsuri tehnice cere legea concret
Pentru CNP, măsurile minime acceptate de ANSPDCP includ:
- Criptare la repaus (database column encryption, AES-256)
- Acces strict pe rol (nu toată lumea din echipă vede CNP-ul)
- Audit log (cine a accesat CNP-ul, când, de ce)
- Pseudonimizare unde se poate (în rapoarte, logs, analytics — afișezi
CNP: ****nu valoarea reală) - Politică de retenție clară (ștergere automată la X zile/luni după ce nu mai e necesar)
În acordul Brokerului X, niciuna din astea nu apărea. „Colectăm CNP" — punct. La un audit ANSPDCP, asta înseamnă deficiență gravă, sancționabilă la 20.000-50.000 EUR.
Capcana cu „atâta timp cât este necesar"
Brokerul X scria: „Datele se păstrează atâta timp cât este necesar pentru îndeplinirea scopurilor."
Frază tipică. Și complet inutilă juridic.
Pentru că nu spune CÂT e „atâta timp". 1 an? 10 ani? Veșnicie?
GDPR cere termen concret (Art. 5(1)(e) — principle of storage limitation):
- ✅ „CNP-ul este șters automat la 5 ani de la închiderea contului, conform obligațiilor fiscale ANAF."
- ❌ „Atâta timp cât este necesar."
Diferența pare semantică. La audit, e diferența între conform și amendă.
Cum verifici dacă ești expus
4 întrebări pentru CTO-ul tău (sau pentru tine, dacă tu ești CTO):
- Unde se stochează CNP-ul în DB? (Coloană plain text? Encrypted? Hash?)
- Cine din echipă îl vede în mod normal? (Toată lumea cu acces la DB? Doar ops? Audit pe acces?)
- Există un audit log pentru accesul la CNP? (Cine, când, ce a făcut)
- Există un job care șterge CNP-urile vechi? (După N zile inactiv → ștergere/pseudonimizare)
Dacă răspunsul la oricare e „nu știu" sau „nu" → ești în zona Brokerului X.
Ce faci concret — pe pași
Pas 1 — Inventariere (30 min)
Notează unde apare CNP în sistemul tău:
- Tabele DB
- Loguri (auth, payments, error logs)
- Email-uri trimise (facturi, confirmări)
- PDF-uri generate (contracte, oferte)
- Backup-uri
Pas 2 — Criptare (1-2 ore de dev)
În MySQL/PostgreSQL: criptează coloana cnp cu AES-256. Cheia stă în variabilă de mediu, nu în cod. Decriptare doar la nevoie reală (afișare în interfață admin, generare factură).
-- Exemplu MySQL (pseudo)
ALTER TABLE clients
MODIFY COLUMN cnp VARBINARY(255);
-- + AES_ENCRYPT/AES_DECRYPT în queries
Pas 3 — RBAC pe acces (1 oră)
Doar rolurile finance, legal, admin au voie să vadă CNP-ul decriptat. Restul echipei vede **** în UI. Nu trebuie un sistem complicat — un check simplu în view-ul tău e suficient.
Pas 4 — Audit log (1-2 ore)
Tabel cnp_access_log cu: user_id, client_id, timestamp, action (view/export/print), reason. Insert la fiecare decriptare. Păstrezi 2 ani.
Pas 5 — Job de retenție (30 min)
Cron săptămânal: pentru clienții inactivi > N zile (N depinde de tine — pentru contracte financiare e tipic 5 ani după închidere), pseudonimizează CNP-ul (înlocuiește cu [anonimizat-2026-05-11]). Păstrezi factura, dar CNP-ul dispare.
Pas 6 — Document 1 pagină
Scrii un document intern: „Măsuri tehnice pentru protecția CNP". Lipești cele 5 măsuri de mai sus. Semnezi. Ții la dosar. La inspecție, îl arăți primul.
Total: 4-6 ore de muncă reală. Mai puțin decât o singură amendă.
Ce am văzut la Brokerul X
- ✅ Colecta CNP (necesar pentru intermediere de credit)
- ❌ Nu menționa în acord cum îl protejează
- ❌ Nu menționa cât timp îl ține
- ❌ Nu menționa cine îl vede intern
- ❌ Nu menționa că respectă Legea 190/2018
Asta înseamnă, la audit, o sancțiune separată față de problemele de consimțământ. Fiindcă CNP-ul are propria lui lege.
Lucrezi cu CNP în startup-ul tău?
Scannerul MYDESKS verifică în 5 minute dacă politica ta atinge cele 6 cerințe minime ale Legii 190/2018. Sau citește episodul final — testul de 1 minut.
** Acest articol face parte din Ghidul complet de audit readiness GDPR pentru IMM-uri din România — pillar-ul care acoperă toate cele 6 zone verificate la un audit, cu cifre de cost și 3 niveluri de pregătire. **
Navigare seria: ← Episodul 3 · Episodul 4 (ești aici) · Episodul 5 →