Introducció
La criptografia asimètrica, també coneguda com a criptografia de clau pública, és un tipus de criptografia que utilitza un parell de claus: una clau pública i una clau privada. Aquest mètode permet una comunicació segura sense la necessitat de compartir prèviament una clau secreta.
Conceptes Clau
- Clau Pública: Utilitzada per xifrar dades. Aquesta clau és accessible a qualsevol persona.
- Clau Privada: Utilitzada per desxifrar dades. Aquesta clau és mantinguda en secret pel propietari.
- Xifratge: El procés de convertir dades en un format inintel·ligible utilitzant la clau pública.
- Desxifratge: El procés de convertir les dades xifrades de nou en el seu format original utilitzant la clau privada.
Funcionament
La criptografia asimètrica es basa en problemes matemàtics que són fàcils de calcular en una direcció però difícils de revertir sense informació addicional (la clau privada). A continuació es mostra un exemple bàsic de com funciona aquest tipus de criptografia:
-
Generació de Claus:
- Es genera un parell de claus: una clau pública i una clau privada.
- La clau pública es distribueix a qualsevol persona que vulgui enviar un missatge segur.
- La clau privada es manté en secret pel destinatari.
-
Xifratge:
- L'emissor utilitza la clau pública del destinatari per xifrar el missatge.
- El missatge xifrat es pot enviar de manera segura a través d'un canal insegur.
-
Desxifratge:
- El destinatari utilitza la seva clau privada per desxifrar el missatge.
- Només el destinatari amb la clau privada pot desxifrar el missatge i llegir el contingut original.
Exemple Pràctic
Suposem que Alice vol enviar un missatge segur a Bob. Bob genera un parell de claus (clau pública i clau privada) i comparteix la seva clau pública amb Alice.
from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP from Crypto.Random import get_random_bytes # Generació de claus per a Bob key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() # Alice xifra el missatge amb la clau pública de Bob message = b'Hola Bob, aquest és un missatge segur.' cipher_rsa = PKCS1_OAEP.new(RSA.import_key(public_key)) ciphertext = cipher_rsa.encrypt(message) # Bob desxifra el missatge amb la seva clau privada cipher_rsa = PKCS1_OAEP.new(RSA.import_key(private_key)) plaintext = cipher_rsa.decrypt(ciphertext) print(plaintext.decode('utf-8'))
Explicació del Codi
-
Generació de Claus:
RSA.generate(2048)
: Genera un parell de claus RSA de 2048 bits.key.export_key()
: Exporta la clau privada.key.publickey().export_key()
: Exporta la clau pública.
-
Xifratge:
PKCS1_OAEP.new(RSA.import_key(public_key))
: Crea un objecte de xifratge amb la clau pública.cipher_rsa.encrypt(message)
: Xifra el missatge utilitzant la clau pública.
-
Desxifratge:
PKCS1_OAEP.new(RSA.import_key(private_key))
: Crea un objecte de desxifratge amb la clau privada.cipher_rsa.decrypt(ciphertext)
: Desxifra el missatge utilitzant la clau privada.
Avantatges i Desavantatges
Avantatges
- Seguretat: No cal compartir la clau privada, reduint el risc de compromís.
- Autenticació: Permet verificar la identitat de l'emissor mitjançant signatures digitals.
Desavantatges
- Rendiment: Els algoritmes asimètrics són més lents que els simètrics.
- Complexitat: La gestió de claus és més complexa.
Exercicis Pràctics
Exercici 1: Generació de Claus
Genera un parell de claus RSA de 2048 bits i mostra la clau pública i privada.
Exercici 2: Xifratge i Desxifratge
Utilitza les claus generades en l'exercici anterior per xifrar i desxifrar un missatge.
Exercici 3: Signatura Digital
Implementa una signatura digital utilitzant RSA per verificar la integritat i autenticitat d'un missatge.
Solucions
Solució Exercici 1
from Crypto.PublicKey import RSA # Generació de claus key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() print("Clau Privada:", private_key.decode('utf-8')) print("Clau Pública:", public_key.decode('utf-8'))
Solució Exercici 2
from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP # Claus generades prèviament private_key = key.export_key() public_key = key.publickey().export_key() # Xifratge message = b'Hola, aquest és un missatge segur.' cipher_rsa = PKCS1_OAEP.new(RSA.import_key(public_key)) ciphertext = cipher_rsa.encrypt(message) # Desxifratge cipher_rsa = PKCS1_OAEP.new(RSA.import_key(private_key)) plaintext = cipher_rsa.decrypt(ciphertext) print(plaintext.decode('utf-8'))
Solució Exercici 3
from Crypto.PublicKey import RSA from Crypto.Signature import pkcs1_15 from Crypto.Hash import SHA256 # Generació de claus key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() # Missatge a signar message = b'Hola, aquest és un missatge signat.' h = SHA256.new(message) # Signatura signature = pkcs1_15.new(RSA.import_key(private_key)).sign(h) # Verificació de la signatura try: pkcs1_15.new(RSA.import_key(public_key)).verify(h, signature) print("La signatura és vàlida.") except (ValueError, TypeError): print("La signatura no és vàlida.")
Conclusió
La criptografia asimètrica és una eina poderosa per a la seguretat de la informació, permetent xifrar dades i verificar la identitat dels emissors sense la necessitat de compartir claus secretes. Tot i que és més lenta i complexa que la criptografia simètrica, els seus avantatges en termes de seguretat i autenticació la fan indispensable en moltes aplicacions modernes.
Fonaments de Seguretat Informàtica
Mòdul 1: Introducció a la Seguretat Informàtica
- Conceptes Bàsics de Seguretat Informàtica
- Tipus d'Amenaces i Vulnerabilitats
- Principis de la Seguretat Informàtica
Mòdul 2: Ciberseguretat
- Definició i Abast de la Ciberseguretat
- Tipus d'Atacs Cibernètics
- Mesures de Protecció en Ciberseguretat
- Casos d'Estudi d'Incidents de Ciberseguretat
Mòdul 3: Criptografia
- Introducció a la Criptografia
- Criptografia Simètrica
- Criptografia Asimètrica
- Protocols Criptogràfics
- Aplicacions de la Criptografia
Mòdul 4: Gestió de Riscos i Mesures de Protecció
- Avaluació de Riscos
- Polítiques de Seguretat
- Controls de Seguretat
- Pla de Resposta a Incidents
- Recuperació davant Desastres
Mòdul 5: Eines i Tècniques de Seguretat
- Eines d'Anàlisi de Vulnerabilitats
- Tècniques de Monitoratge i Detecció
- Proves de Penetració
- Seguretat en Xarxes
- Seguretat en Aplicacions
Mòdul 6: Bones Pràctiques i Normatives
- Bones Pràctiques en Seguretat Informàtica
- Normatives i Estàndards de Seguretat
- Compliment i Auditoria
- Formació i Sensibilització