În acest curs vom explora conceptele fundamentale ale criptografiei moderne și gestionării identității și accesului, utilizate pentru protejarea informațiilor și autentificarea securizată.
Criptografia este utilizată pentru protecția informațiilor împotriva accesului neautorizat.
- Criptografie simetrică: Aceeași cheie este folosită pentru criptare și decriptare (ex: AES).
- Criptografie asimetrică: Se folosesc chei diferite pentru criptare și decriptare (ex: RSA, ECC).
- Exemple de algoritmi criptografici:
- AES (Advanced Encryption Standard): Cel mai utilizat algoritm pentru criptare simetrică.
- RSA (Rivest-Shamir-Adleman): Algoritm asimetric utilizat pentru semnături digitale.
- ECC (Elliptic Curve Cryptography): Oferă securitate ridicată cu chei mai mici.
Algoritmii de hashing sunt folosiți pentru a proteja integritatea datelor.
- SHA-256: Algoritm securizat utilizat pentru stocarea parolelor și blockchain.
- MD5: Considerat nesigur pentru criptografie din cauza coliziunilor.
- Bcrypt: Utilizat pentru hashing-ul parolelor, include un salt pentru a preveni atacurile brute-force.
- HMAC (Hash-based Message Authentication Code): Verifică integritatea mesajelor.
Certificatele digitale sunt utilizate pentru a asigura comunicațiile securizate pe internet.
- SSL/TLS: Asigură criptarea traficului între client și server.
- PKI (Public Key Infrastructure): Sistem de gestionare a certificatelor digitale.
- Autorități de certificare (CA): Organizații care emit certificate digitale valide.
- Verificarea unui certificat digital:
openssl x509 -in certificat.crt -text -noout
IAM permite controlul accesului la resurse digitale.
- Single Sign-On (SSO): Permite autentificarea unică pe mai multe aplicații.
- Multi-Factor Authentication (MFA): Adaugă un nivel suplimentar de securitate (ex: SMS, token, biometric).
- OAuth 2.0 și OpenID Connect: Protocoale pentru autentificare securizată.
- JSON Web Tokens (JWT): Format securizat pentru transmiterea informațiilor de autentificare.
from Crypto.Cipher import AES
import os
key = os.urandom(16)
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(b'Mesaj secret')
print(ciphertext)
import hashlib
mesaj = b'Text important'
hash_object = hashlib.sha256(mesaj)
print(hash_object.hexdigest())
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365