Introducció

La criptografia és una branca de la matemàtica i la informàtica que s'encarrega de protegir la informació mitjançant tècniques de xifrat i desxifrat. Aquest procés permet que només les persones autoritzades puguin accedir a la informació confidencial. En aquest tema, explorarem els conceptes bàsics de la criptografia, els tipus de criptografia i els algorismes més utilitzats.

Objectius d'Aprenentatge

Al final d'aquest tema, hauràs de ser capaç de:

  1. Comprendre els conceptes bàsics de la criptografia.
  2. Diferenciar entre criptografia simètrica i asimètrica.
  3. Conèixer els algorismes de xifrat més comuns.
  4. Aplicar tècniques bàsiques de xifrat i desxifrat.

Conceptes Bàsics de Criptografia

  1. Xifrat i Desxifrat

  • Xifrat: Procés de convertir informació llegible (text pla) en un format incomprensible (text xifrat) utilitzant un algorisme de xifrat i una clau.
  • Desxifrat: Procés invers al xifrat, on el text xifrat es converteix de nou en text pla utilitzant un algorisme de desxifrat i una clau.

  1. Clau

  • Clau: Una peça d'informació que determina el resultat del procés de xifrat i desxifrat. Les claus poden ser simètriques o asimètriques.

  1. Algorisme de Xifrat

  • Algorisme de Xifrat: Una seqüència de passos matemàtics utilitzats per xifrar i desxifrar la informació.

Tipus de Criptografia

  1. Criptografia Simètrica

  • Definició: Utilitza la mateixa clau per al xifrat i el desxifrat.
  • Avantatges: Ràpida i eficient per a grans quantitats de dades.
  • Desavantatges: La distribució segura de la clau és un repte.
  • Exemples: DES, AES, RC4.

  1. Criptografia Asimètrica

  • Definició: Utilitza un parell de claus: una clau pública per al xifrat i una clau privada per al desxifrat.
  • Avantatges: Millor per a la distribució segura de claus.
  • Desavantatges: Més lenta que la criptografia simètrica.
  • Exemples: RSA, ECC, DSA.

Algorismes de Xifrat Comuns

  1. DES (Data Encryption Standard)

  • Tipus: Simètric
  • Clau: 56 bits
  • Seguretat: Considerat insegur per a moltes aplicacions modernes.

  1. AES (Advanced Encryption Standard)

  • Tipus: Simètric
  • Clau: 128, 192 o 256 bits
  • Seguretat: Molt segur i àmpliament utilitzat.

  1. RSA (Rivest-Shamir-Adleman)

  • Tipus: Asimètric
  • Clau: Variable (normalment 2048 bits o més)
  • Seguretat: Molt segur per a la distribució de claus.

Exemples Pràctics

Exemple 1: Xifrat Simètric amb AES

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

# Generar una clau de 16 bytes (128 bits)
key = get_random_bytes(16)

# Crear un objecte de xifrat AES
cipher = AES.new(key, AES.MODE_EAX)

# Text pla a xifrar
data = b'Informació confidencial'

# Xifrar el text pla
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data)

print(f'Text xifrat: {ciphertext}')

Exemple 2: Xifrat Asimètric amb RSA

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

# Generar un parell de claus RSA
key = RSA.generate(2048)
public_key = key.publickey()

# Crear un objecte de xifrat RSA amb la clau pública
cipher_rsa = PKCS1_OAEP.new(public_key)

# Text pla a xifrar
data = b'Informació confidencial'

# Xifrar el text pla
ciphertext = cipher_rsa.encrypt(data)

print(f'Text xifrat: {ciphertext}')

Exercicis Pràctics

Exercici 1: Xifrat i Desxifrat amb AES

  1. Genera una clau AES de 128 bits.
  2. Xifra el text pla "Curs de Ciberseguretat" utilitzant AES.
  3. Desxifra el text xifrat per obtenir el text pla original.

Solució

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

# Generar una clau de 16 bytes (128 bits)
key = get_random_bytes(16)

# Crear un objecte de xifrat AES
cipher = AES.new(key, AES.MODE_EAX)

# Text pla a xifrar
data = b'Curs de Ciberseguretat'

# Xifrar el text pla
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data)

# Desxifrar el text xifrat
cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
plaintext = cipher.decrypt(ciphertext)

print(f'Text pla original: {plaintext.decode()}')

Exercici 2: Xifrat i Desxifrat amb RSA

  1. Genera un parell de claus RSA.
  2. Xifra el text pla "Curs de Ciberseguretat" utilitzant la clau pública.
  3. Desxifra el text xifrat utilitzant la clau privada per obtenir el text pla original.

Solució

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

# Generar un parell de claus RSA
key = RSA.generate(2048)
public_key = key.publickey()

# Crear un objecte de xifrat RSA amb la clau pública
cipher_rsa = PKCS1_OAEP.new(public_key)

# Text pla a xifrar
data = b'Curs de Ciberseguretat'

# Xifrar el text pla
ciphertext = cipher_rsa.encrypt(data)

# Desxifrar el text xifrat
cipher_rsa = PKCS1_OAEP.new(key)
plaintext = cipher_rsa.decrypt(ciphertext)

print(f'Text pla original: {plaintext.decode()}')

Resum

En aquest tema, hem explorat els conceptes bàsics de la criptografia, incloent-hi el xifrat i desxifrat, les claus i els algorismes de xifrat. Hem diferenciat entre criptografia simètrica i asimètrica, i hem vist exemples pràctics d'algorismes de xifrat com AES i RSA. A més, hem proporcionat exercicis pràctics per reforçar els conceptes apresos. Ara estàs preparat per aprofundir en altres aspectes de la seguretat de la informació.

© Copyright 2024. Tots els drets reservats