Jurnalul de transparență al platformei
De ce Cronica
Ca să te poți încrede în „vezi cine ți-a cerut datele”, o urmă schimbată trebuie să se vadă. Cronica e construită să fie o dovadă, nu doar o listă.
Un jurnal de audit, doar-adăugare
Fiecare eveniment răspunde la aceleași întrebări: cine a accesat, în numele cui, ce operațiune a folosit, pentru ce proces și scop, cu ce temei, când și cu ce rezultat, inclusiv refuzurile și erorile.
Evenimentele nu pot fi actualizate sau șterse prin API: jurnalul doar crește. Identificatorii personali nu se păstrează în clar: se folosesc identificatori opaci și amprente criptografice, iar conținutul răspunsurilor nu se stochează.
Înlănțuire de hash-uri: orice umblătură se vede
Fiecare eveniment poartă amprenta criptografică a celui dinainte. Dacă cineva modifică un eveniment sau scoate unul din mijlocul lanțului, amprentele de după el nu se mai potrivesc, iar divergența devine detectabilă la recalculare.
Ca lanțul să poată fi publicat, câmpurile care ar identifica o persoană nu se șterg din el: se înlocuiesc cu amprente calculate împreună cu o valoare aleatoare, proprie fiecărui eveniment. Ștergerea ar schimba conținutul, deci amprenta nu s-ar mai potrivi și ai putea verifica doar ce nu contează. Așa, oricine poate recalcula lanțul pe forma publicată, fără să poată reface valorile din spatele amprentelor: valoarea aleatoare nu se publică.
Separată de logarea tehnică
Logurile tehnice (erori de program, metrici, verificări de funcționare) servesc operarea sistemelor și se adresează personalului tehnic. Cronica are alt obiect: e evidența accesului la date, exprimată în termenii procesului administrativ, nu ai infrastructurii. Cele două nu se amestecă.
Verificare publică, fail-closed
Integritatea unei secvențe se poate verifica fără autentificare și fără acces la conținutul evenimentelor, prin GET /audit/verify/{partiție}; răspunsul spune ce interval a fost verificat. Verificarea recalculează lanțul, nu îl declară valid. Iar dacă un eveniment de audit nu poate fi consemnat, interogarea corespunzătoare nu se execută.
Verificarea nu are nevoie de acordul nostru și nu folosește codul nostru. Evenimentele în forma publicată și capătul de lanț se citesc fără cont, prin GET /audit/export/{partiție} și GET /audit/checkpoint, iar programul separat de verificare lucrează pe exportul acela: își calculează singur forma canonică, cu o bibliotecă independentă de platformă, și nu împrumută nicio linie din codul ei.
Ce nu susține încă: lanțul dovedește că nimeni nu a umblat pe bucăți, nu că noi înșine nu am rescris tot jurnalul. Pasul care lipsește e un capăt de lanț publicat în afara platformei, unde noi să nu îl putem schimba.
Ce vezi tu, ca cetățean
Te autentifici și vezi interogările despre tine: cine ți-a cerut datele, când, cu ce temei legal, cu ce rezultat, inclusiv cererile refuzate. Corelarea se face printr-o amprentă criptografică, un cod derivat din identificatorul tău din care acesta nu poate fi recalculat; identificatorul în clar nu se stochează. Nu-ți expunem CNP-ul și nu arătăm identitatea funcționarului.
Locul Cronicii în platformă
Evenimentele provin din Puntea (accesul controlat între instituții) și din intrarea unică a platformei, in.deobste.ro.