Introducció
La criptografia simètrica és una tècnica de xifratge on el mateix clau s'utilitza tant per xifrar com per desxifrar la informació. Aquesta tècnica és coneguda per la seva velocitat i eficiència en el processament de dades, però també presenta desafiaments en la gestió segura de les claus.
Objectius d'aquest tema:
- Entendre els conceptes bàsics de la criptografia simètrica.
- Conèixer els algoritmes més comuns utilitzats en la criptografia simètrica.
- Aprendre a implementar un algoritme de criptografia simètrica.
- Identificar els avantatges i desavantatges de la criptografia simètrica.
Conceptes Bàsics
Definició
La criptografia simètrica, també coneguda com a criptografia de clau secreta, utilitza una única clau per a les operacions de xifratge i desxifratge. Aquesta clau ha de ser compartida entre les parts que desitgen comunicar-se de manera segura.
Funcionament
- Xifratge: El missatge original (text pla) es transforma en un missatge xifrat (text xifrat) utilitzant una clau secreta.
- Desxifratge: El text xifrat es transforma de nou en text pla utilitzant la mateixa clau secreta.
Exemple Visual
Text Pla | Clau Secreta | Text Xifrat |
---|---|---|
"Hola, món!" | "123456" | "XyZ123" |
Algoritmes Comuns
DES (Data Encryption Standard)
- Descripció: DES és un algoritme de xifratge simètric que utilitza una clau de 56 bits.
- Avantatges: Va ser àmpliament utilitzat i és senzill d'implementar.
- Desavantatges: Actualment es considera insegur degut a la seva curta longitud de clau.
AES (Advanced Encryption Standard)
- Descripció: AES és un algoritme de xifratge simètric que pot utilitzar claus de 128, 192 o 256 bits.
- Avantatges: És molt segur i eficient, i és l'estàndard actual per a la criptografia simètrica.
- Desavantatges: Pot ser més complex d'implementar que DES.
Blowfish
- Descripció: Blowfish és un algoritme de xifratge simètric que utilitza claus variables de fins a 448 bits.
- Avantatges: És ràpid i flexible.
- Desavantatges: Pot ser vulnerable a certs tipus d'atacs si no es configura correctament.
Implementació Pràctica
Exemple en Python amb AES
from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad from Crypto.Random import get_random_bytes # Generar una clau secreta de 16 bytes (128 bits) key = get_random_bytes(16) # Crear un objecte de xifratge AES en mode CBC cipher = AES.new(key, AES.MODE_CBC) # Text pla a xifrar text_pla = b"Hola, món!" # Xifrar el text pla text_xifrat = cipher.encrypt(pad(text_pla, AES.block_size)) # Desxifrar el text xifrat cipher_dec = AES.new(key, AES.MODE_CBC, cipher.iv) text_desxifrat = unpad(cipher_dec.decrypt(text_xifrat), AES.block_size) print(f"Text Pla: {text_pla}") print(f"Text Xifrat: {text_xifrat}") print(f"Text Desxifrat: {text_desxifrat}")
Explicació del Codi
- Generació de la clau: Utilitzem
get_random_bytes
per generar una clau de 16 bytes. - Creació de l'objecte de xifratge: Utilitzem
AES.new
per crear un objecte de xifratge en mode CBC. - Xifratge del text pla: Utilitzem
pad
per ajustar el text pla a la mida del bloc i després el xifrem. - Desxifratge del text xifrat: Creem un nou objecte de xifratge per desxifrar i utilitzem
unpad
per obtenir el text pla original.
Avantatges i Desavantatges
Avantatges
- Velocitat: Els algoritmes de criptografia simètrica són generalment més ràpids que els asimètrics.
- Eficiència: Requereixen menys recursos computacionals.
Desavantatges
- Gestió de Claus: La distribució segura de la clau secreta és un gran desafiament.
- Escalabilitat: En un entorn amb molts usuaris, la gestió de claus es complica exponencialment.
Exercicis Pràctics
Exercici 1: Implementació de DES en Python
Implementa un algoritme de xifratge i desxifratge utilitzant DES en Python. Utilitza la biblioteca pycryptodome
.
Exercici 2: Comparació de Rendiment
Compara el temps de xifratge i desxifratge entre DES i AES per a un text pla de 1 MB.
Solucions
Exercici 1: Implementació de DES en Python
from Crypto.Cipher import DES from Crypto.Util.Padding import pad, unpad from Crypto.Random import get_random_bytes # Generar una clau secreta de 8 bytes (64 bits) key = get_random_bytes(8) # Crear un objecte de xifratge DES en mode CBC cipher = DES.new(key, DES.MODE_CBC) # Text pla a xifrar text_pla = b"Hola, món!" # Xifrar el text pla text_xifrat = cipher.encrypt(pad(text_pla, DES.block_size)) # Desxifrar el text xifrat cipher_dec = DES.new(key, DES.MODE_CBC, cipher.iv) text_desxifrat = unpad(cipher_dec.decrypt(text_xifrat), DES.block_size) print(f"Text Pla: {text_pla}") print(f"Text Xifrat: {text_xifrat}") print(f"Text Desxifrat: {text_desxifrat}")
Exercici 2: Comparació de Rendiment
import time from Crypto.Cipher import DES, AES from Crypto.Util.Padding import pad, unpad from Crypto.Random import get_random_bytes # Generar text pla de 1 MB text_pla = b"A" * (1024 * 1024) # DES key_des = get_random_bytes(8) cipher_des = DES.new(key_des, DES.MODE_CBC) start_time = time.time() text_xifrat_des = cipher_des.encrypt(pad(text_pla, DES.block_size)) cipher_dec_des = DES.new(key_des, DES.MODE_CBC, cipher_des.iv) text_desxifrat_des = unpad(cipher_dec_des.decrypt(text_xifrat_des), DES.block_size) des_time = time.time() - start_time # AES key_aes = get_random_bytes(16) cipher_aes = AES.new(key_aes, AES.MODE_CBC) start_time = time.time() text_xifrat_aes = cipher_aes.encrypt(pad(text_pla, AES.block_size)) cipher_dec_aes = AES.new(key_aes, AES.MODE_CBC, cipher_aes.iv) text_desxifrat_aes = unpad(cipher_dec_aes.decrypt(text_xifrat_aes), AES.block_size) aes_time = time.time() - start_time print(f"Temps DES: {des_time} segons") print(f"Temps AES: {aes_time} segons")
Conclusió
En aquest tema, hem explorat la criptografia simètrica, els seus conceptes bàsics, els algoritmes més comuns, i hem vist exemples pràctics d'implementació. També hem identificat els avantatges i desavantatges d'aquesta tècnica. Amb aquesta base, estem preparats per aprofundir en la criptografia asimètrica en el següent tema.
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ó