Cele trei principii fundamentale (CIA)
| Principiu | Descriere | Încălcare | |---|---|---| | Confidențialitate | Datele sunt accesibile doar celor autorizați | Scurgere de date, spargere parole | | Integritate | Datele nu sunt modificate neautorizat | Atac Man-in-the-Middle, modificare fișiere | | Disponibilitate | Sistemul e funcțional când e nevoie | Atac DDoS, ransomware |
La acestea se adaugă:
- Autenticitate — știm cine a creat datele
- Non-repudiere — autorul nu poate nega că a creat datele
- Autorizare — fiecare utilizare are doar permisiunile necesare (principiul minimului privilegiu)
Funcții hash criptografice
Un hash criptografic e o funcție care transformă date de orice dimensiune într-un rezumat de dimensiune fixă (de obicei 256 sau 512 biți).
Proprietăți esențiale
- Unidirecțională — din hash nu poți recupera datele originale
- Rezistentă la coliziuni — e computațional imposibil să găsești două intrări cu același hash
- Avalanșă — o modificare de 1 bit în intrare schimbă ~50% din biții hash-ului
Algoritmi
| Algoritm | Dimensiune hash | Status | |---|---|---| | MD5 | 128 biți | Nesigur — coliziuni găsite în 2004 | | SHA-1 | 160 biți | Nesigur — coliziuni practice în 2017 | | SHA-256 | 256 biți | Sigur (folosit în Bitcoin, TLS) | | SHA-3 | 256/512 biți | Sigur (standardul cel mai recent) | | BLAKE3 | 256 biți | Sigur, foarte rapid |
Aplicații
- Stocarea parolelor: Se hash-uiește parola (cu salt!) și se stochează doar hash-ul
- Verificarea integrității: Hash-uiești un fișier la download și compari cu hash-ul oficial
- Blockchain: Lanțul de blocuri e legat prin hash-uri
- Git: Fiecare commit e identificat prin hash-ul său SHA-1
Semnături digitale
O semnătură digitală demonstrează că un document a fost creat de o anumită persoană și nu a fost modificat.
Cum funcționează
- Expeditorul hash-uiește documentul: h = H(doc)
- Expeditorul criptează hash-ul cu cheia sa privată: s = E(h, K_privat)
- Expeditorul trimite documentul + semnătura (doc, s)
- Destinatarul decriptează semnătura cu cheia publică a expeditorului: h = D(s, K_public)
- Destinatarul hash-uiește documentul și compară cu h
Proprietăți
- Autenticitate: Doar deținătorul cheii private poate crea semnătura
- Integritate: Orice modificare a documentului invalidează semnătura
- Non-repudiere: Expeditorul nu poate nega că a semnat
PKI — Infrastructura cu cheie publică
PKI rezolvă problema: „cum știu că această cheie publică chiar aparține cui spune că aparține?"
Autoritatea de Certificare (CA): O terță parte de încredere care emite certificate digitale. Un certificat digital leagă o cheie publică de o identitate (nume, domeniu, organizație).
Lanțul de încredere:
CA Rădăcină (self-signed)
├── CA Intermediară 1
│ ├── example.com (certificat)
│ └── google.com (certificat)
└── CA Intermediară 2
└── ...
Browserul tău are încredere în CA Rădăcină. Pe baza asta, are încredere în toate certificatele semnate de CA-urile din lanț.
Principiul lui Kerckhoffs
Un sistem criptografic trebuie să fie sigur chiar dacă totul despre el — cu excepția cheii — e cunoscut public.
Cu alte cuvinte: securitatea prin obscuritate nu e securitate. Algoritmii trebuie să fie publici și analizați de comunitate. Cheia e singurul secret.
Atacuri comune
| Atac | Ținta | Contramăsura | |---|---|---| | Man-in-the-Middle | Confidențialitate | TLS, certificate | | DDoS | Disponibilitate | Load balancing, rate limiting | | SQL Injection | Integritate | Prepared statements | | Cross-Site Scripting (XSS) | Confidențialitate | Input sanitization | | Phishing | Autenticitate | Multi-factor authentication | | Rainbow table | Confidențialitate (parole) | Salt + hash lent (bcrypt, argon2) |
Vezi și
- Criptografia RSA
- Entropia informațională
- Protocoale TCP/IP
- DNS, HTTP și rutare
- P vs NP