Cum funcționează semnătura electronică avansată pe DigiOHS
Explicație pas cu pas, fără jargon tehnic. Ce este, cum se face, cum o verifici și de ce contează — pentru salariați, manageri și inspectori ITM/ISU.
Sigiliu criptografic invizibil, lipit peste fiecare PDF
Semnătura olografă (cea desenată cu degetul pe telefon) este doar o poză. Oricine ar putea modifica PDF-ul în Photoshop și nimeni n-ar ști. Semnătura electronică avansată (AES) este un sigiliu criptografic încorporat în întregul fișier PDF. Dacă cineva schimbă un singur byte — fie și un spațiu — sigiliul se sparge automat. Adobe Reader îți arată imediat un X roșu: „Document a fost modificat după semnare".
Diferența: imaginea olografă demonstrează cine a semnat. Sigiliul AES demonstrează că documentul nu a fost atins după aceea. Avem nevoie de amândouă — și avem.
Imagine olografă vs. semnătură avansată (AES)
- Demonstrează cine a desenat semnătura.
- NU detectează modificările ulterioare ale PDF-ului.
- Poate fi copiată ușor și lipită peste alt document.
- Greu de demonstrat juridic fără probe externe (jurnale, server-time).
- Demonstrează cine a semnat (nume, telefon confirmat OTP, firmă, CUI).
- Detectează orice modificare a PDF-ului — chiar și un byte.
- Sigiliul nu poate fi copiat — depinde de hash-ul SHA-256 al întregului fișier.
- Valoare juridică egală cu semnătura olografă — eIDAS art. 25(2).
Ce cere legea pentru o semnătură electronică avansată — și cum o facem noi
Regulamentul UE 910/2014 (eIDAS) art. 26 impune patru condiții pentru ca o semnătură să fie „avansată". Mai jos sunt cele patru, în paralel cu implementarea noastră reală — fără pretenții despre ce nu avem.
| Condiția eIDAS art. 26 | Cum o îndeplinim concret la DigiOHS |
|---|---|
| (a) Legată unic de semnatar | Generăm un certificat X.509 per salariat, per sesiune de semnare, cu CN=numele complet, serialNumber=numărul de telefon validat OTP, O=firma, OU=CUI. Cheia privată RSA-2048 trăiește doar în memoria serverului pentru această semnătură și se aruncă imediat după. |
| (b) Permite identificarea semnatarului | Datele de identificare sunt în certificat (nume, telefon validat, CUI, email) și încorporate în PDF (vizibile în Adobe Reader). Suplimentar, jurnal hash-chain SHA-256 cu IP, GeoIP, fingerprint browser și timestamp la momentul semnării. |
| (c) Control exclusiv asupra mijloacelor de semnare | OTP de 6 cifre trimis prin SMS pe telefonul personal al salariatului (cel din CIM, validat la onboarding). Cod independent de canalul de notificare (NU WhatsApp), valabil 5 minute, o singură utilizare, hash bcrypt în DB. Doar salariatul cu acel telefon poate confirma → control exclusiv. |
| (d) Detectabilitate a oricărei modificări ulterioare | PAdES B-LTA cu hash SHA-256 al întregului PDF. Orice byte modificat după semnare → Adobe Reader afișează X roșu și mesajul „Document has been altered or corrupted since the signature was applied". Lanțul de certificate (Root + Intermediate) și CRL-urile sunt încorporate în dicționarul DSS al PDF-ului → validare offline 5+ ani. |
- Marcă temporală RFC 3161 calificată de la BalTstamp QTSP (autoritate de timestamp calificată, listată EU) — atașată la fiecare semnătură ca probă terță parte că documentul a existat și nu s-a modificat la momentul respectiv. Fallback la DFN/DigiCert (non-calificate) pentru timestamp-uri non-critice (ex. descărcări PDF).
- Confirmare livrare SMS (DLR webhook Infobip) — dovadă că OTP-ul a ajuns efectiv pe telefon (status „delivered" + timestamp).
- Jurnal audit hash-chain SHA-256 — fiecare eveniment (deschidere link, semnare, descărcare) e legat criptografic de precedentul, nu poate fi modificat retroactiv fără să se spargă lanțul.
- Hash material instruire — SHA-256 al materialului prezentat efectiv salariatului la momentul semnării, dovadă că a văzut exact ce s-a documentat în fișă.
- Validare juridică: Legea 214/2024 art. 4 alin. (3) + confirmări oficiale ITM (nr. 8409/2026) + IGSU (nr. 79526/2026) — fișele semnate AES „produc aceleași efecte juridice ca fișele de instructaj întocmite în format letric".
Cum funcționează la noi, pas cu pas
Tot procesul durează aproximativ 200 milisecunde și se întâmplă automat în spatele scenei, după ce salariatul confirmă semnătura prin codul OTP primit pe telefon.
- 11Avem propria „fabrică de certificate"Avem propria „fabrică de certificate" (Certificate Authority)
Pe serverele noastre am construit o ierarhie de certificate digitale, exact cum folosesc băncile. E ca un sistem de ștampile oficiale, în mai multe niveluri, una mai puternică decât cealaltă:
Root CA DigiOHS — „regele"RSA 4096 biți, valabilă 20 ani. Cheia privată e generată local prin scriptul de bootstrap și stocată CRIPTATĂ (AES-256-GCM) în baza de date, cu cheia de cifrare protejată ca fișier cu permisiuni restricționate (acces doar pentru utilizatorul aplicației). Nu o emite operativ — semnează doar Intermediate CA.Intermediate CA DigiOHS SigningRSA 2048 biți, valabilă 5 ani, semnată de Root. Cheia privată e tot criptată AES-256-GCM și folosită doar la cerere pentru emiterea certificatelor individuale ale salariaților, sub umbrela de încredere a Root.De ce două niveluri? Dacă serverul este vreodată compromis, doar Intermediate cade. Root rămâne neatinsă în seifuri și putem emite o nouă Intermediate fără să afectăm încrederea construită până atunci. Așa fac DigiCert, Let's Encrypt, sistemele bancare — standardul mondial.
- 22Salariatul primește un certificat doar al luiSalariatul primește un certificat propriu, valabil 48 ore
Când Popescu Ion completează codul OTP primit pe telefon (deci confirmăm criptografic că el are acel telefon), se întâmplă automat în mai puțin de o secundă:
- ▸Generăm o pereche de chei RSA 2048 doar pentru el, doar pentru această semnătură.
- ▸Construim un certificat X.509 personalizat cu datele lui:
CN = Popescu Ion (numele lui complet) serialNumber = 0725999000 (telefonul confirmat OTP) O = SC Moneta Cons SRL (firma) OU = CUI RO12345678 (CUI-ul firmei) E = ion.popescu@firma.ro (emailul) C = RO (țara)
- ▸Semnăm certificatul cu Intermediate CA → moștenește încrederea de la Root.
- ▸Certificatul trăiește 48 ore. Cheia privată NU se salvează nicăieri — se folosește o singură dată pentru semnare și apoi se aruncă din memoria serverului.
Asta este diferența esențială: certificatul nu este pe numele DigiOHS, ci pe numele salariatului real. Asta îl face strict conform eIDAS art. 26(a) — „legată unic de semnatar".
- 33PDF-ul primește un sigiliu PAdESPDF-ul primește un sigiliu PAdES — formatul oficial al UE
Fișa de instruire generată trece printr-un proces criptografic:
- a.Calculăm un hash SHA-256 peste tot conținutul PDF-ului. Hash-ul este o „amprentă" digitală unică — orice modificare a PDF-ului produce un hash complet diferit.
- b.Criptăm hash-ul cu cheia privată a salariatului → asta este „semnătura".
- c.Atașăm în PDF: semnătura + certificatul salariatului + Intermediate CA + Root CA — adică tot lanțul de încredere.
- d.Rezultatul: un singur fișier PDF auto-conținut, care poate fi verificat oriunde, oricând, fără internet.
Format folosit: PAdES Baseline B-LTA (Long Term) — formatul oficial al UE pentru semnături PDF cu validare offline pe termen lung, conform standardului ETSI EN 319 142-1. Concret: semnăm B-B, apoi adăugăm marca temporală RFC 3161 (B-T), apoi adăugăm dicționarul DSS cu certificatele + CRL-urile încorporate (B-LT) → validare offline 5+ ani fără dependență de servere. Dacă TSA sau CRL-ul sunt indisponibile la semnare, fluxul scade automat la B-T sau B-B (best-effort, nu blocăm semnătura). - 44Verificarea — setup unic, apoi automatăVerificarea — setup unic (~30s), apoi automată în Adobe
În Adobe Acrobat Reader (gratuit), inspectorul vede în panoul Signatures (iconul pana albastră, stânga):
- Cine a semnat — numele complet, telefonul, firma, CUI-ul.
- Când s-a semnat — cu marca temporală RFC 3161 (precizie de secundă, certificată de o autoritate de timestamp).
- „Document has not been modified since it was signed" — confirmare criptografică că fișa este intactă.
- Lanțul complet: certificat utilizator → DigiOHS Signing CA → DigiOHS Root CA.
Setup unic — important de transparență: primul control implică adăugarea certificatului DigiOHS Root CA în lista de încredere a Adobe (~30 s, o singură dată pe calculator). După acest pas, bifa verde apare automat pe toate fișele DigiOHS, fără internet și fără configurări suplimentare. Instrucțiuni: /certificat-digiohs.
Motivul: Root CA DigiOHS nu e (încă) listată în Adobe AATL sau EU Trusted List — aceste liste cer audit WebTrust + statut QTSP (proces de 6-12 luni + €50-100k+). Fără setup-ul de mai sus, Adobe afișează triunghiul galben „The signer is unknown — chain of trust not verified" — semnătura e validă criptografic, dar Adobe nu cunoaște emitentul.Certificatul salariatului trăiește 48 ore — și de ce e ok. Acesta este un certificat „de unică folosință" emis doar pentru sesiunea de semnare. Validitatea pe termen lung e ancorată în marca temporală RFC 3161 emisă de BalTstamp QTSP (timestamp calificat, listat EU): timestamp-ul dovedește că semnătura a fost aplicată în interval valid, chiar dacă certificatul expiră ulterior. Plus DSS-ul PAdES B-LTA încorporează lanțul + CRL-urile în PDF → validare offline 5+ ani.
Cele 4 criterii eIDAS art. 26 — îndeplinite
Regulamentul UE 910/2014 (eIDAS) art. 26 definește exact ce trebuie să îndeplinească o semnătură pentru a fi „avansată". Iată cum bifăm fiecare criteriu:
Telefonul confirmat prin OTP intră în certificat ca atribut serialNumber X.520 (OID 2.5.4.5) — identificator personal unic conform RFC 5280.
Numele complet, telefonul, firma, CUI-ul, emailul — toate sunt înscrise în certificatul personal al semnatarului.
Certificatul se emite doar după ce salariatul introduce codul OTP primit prin SMS pe telefonul lui personal — confirmând că el și nu altcineva inițiază semnătura.
Hash-ul SHA-256 al întregului PDF este încorporat în semnătura PKCS#7 detașată. Orice modificare invalidează imediat semnătura.
Ce documente sunt semnate cu AES
Fiecare PDF generat de DigiOHS trece automat prin procesul de semnare AES înainte de a fi trimis utilizatorului. Fără excepție.
Ce înseamnă „Validity unknown" în Adobe Reader
Dacă inspectorul deschide PDF-ul fără să fi importat în prealabil DigiOHS Root CA, Adobe Reader îi afișează „Validity unknown" (galben) în loc de bifa verde. Asta NU înseamnă că semnătura este invalidă. Înseamnă doar că Adobe nu cunoaște din fabrică ștampila DigiOHS — exact ca la un site cu certificat HTTPS dintr-o țară mică, unde browser-ul funcționează, dar nu cunoaște autoritatea respectivă.
Importul Root CA se face o singură dată, durează 30 de secunde, și după aceea toate fișele DigiOHS apar cu bifa verde completă. Important juridic: conform eIDAS art. 26, validitatea AES nu depinde de ce este instalat în Adobe-ul inspectorului. Criteriile (a)-(d) sunt îndeplinite la momentul semnării.
Trei beneficii concrete
Nu mai trebuie să demonstrezi nimic suplimentar. PDF-ul demonstrează singur că nu a fost modificat după semnare. Mai puternic decât o ștampilă pe hârtie — pentru că ștampila pe hârtie poate fi falsificată, semnătura criptografică, nu.
Conform eIDAS art. 25(2), AES are valoare juridică egală cu semnătura olografă în întreaga UE. Fișele tale digitale au aceeași greutate ca cele pe hârtie cu pix și ștampilă.
Majoritatea platformelor SSM oferă doar imaginea desenată cu degetul. DigiOHS oferă AES adevărată — același nivel cerut de IGSU prin pdv 1537/27.05.2025 și folosit de SSM.ro.
Cadrul juridic
Ai întrebări despre semnătura electronică?
Suntem deschiși să-ți răspundem la orice întrebare juridică sau tehnică despre cum funcționează AES pe DigiOHS.
