Criptografía: Métodos, Algoritmos y Sistemas Numéricos en Informática

Criptografía: Conceptos y Métodos

La criptografía es un conjunto de técnicas que permiten el enmascaramiento de mensajes, de tal forma que solo el destinatario de una comunicación pueda interpretarlo. Existen dos métodos principales para encriptar mensajes:

Criptografía Simétrica

Los métodos criptográficos tradicionales operan a partir de una palabra o frase clave, que sirve para codificar y descodificar información. El algoritmo (las operaciones) que sirve para descifrar el mensaje puede ser o no secreto; lo importante es que la clave sea secreta. Esta clave debe ser conocida por los dos extremos de la comunicación, por lo que el punto débil de este método es justamente el proceso de difusión de la clave.

Criptografía Simétrica: Sustitución (I)

Es el método más antiguo de encriptación, con miles de años de antigüedad. Consiste en sustituir cada letra de un mensaje por otra distinta según una regla. Ejemplo: Elegimos un número y cambiamos cada letra por la que le sigue en el alfabeto en la posición de la primera, sumando dicho número.

Criptografía Simétrica: Sustitución (II)

Otro método consiste en utilizar una palabra clave para crear un alfabeto cifrado, que usaremos para sustituir las letras del abecedario normal. El alfabeto cifrado se obtiene así: se utiliza una palabra como clave, por ejemplo, CIPHER. Se comienza el alfabeto codificado por las letras de dicha clave y se continúa con el orden normal, sin utilizar las que ya se han utilizado. El alfabeto codificado nos quedaría así:

  • Abecedario normal: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  • Abecedario cifrado: C I P H E R S T U V W X Y Z A B D F G J K L M N O

Criptografía Simétrica: Sustitución (III)

Sustitución mediante polialfabeto: Se crean dos o más alfabetos cifrados y para cada letra se utiliza uno distinto, siguiendo alguna regla determinada. Ejemplo: cifrado Vigenère. Tiene 26 alfabetos, uno por cada letra del abecedario. Después se usa una palabra clave corta. Ejemplo: HOLA. Se coloca la palabra clave sobre la frase que se quiere cifrar, repitiéndola hasta que la frase queda totalmente cubierta. Cada letra de la palabra clave superpuesta nos indica qué alfabeto debemos usar para cifrar.

Criptografía por Transposición

Consiste en cambiar el orden de una frase siguiendo alguna regla. Ejemplos:

  • Escritura inversa
  • Transposición columnar simple: Se escribe la frase en un rectángulo de un número n de filas con m letras cada una. Después se transcribe utilizando las columnas. Ej.: Codificar la frase “ESTOY EN MI CASA” → “EONCASYMATEIS”

Ataques de Descodificación

Los métodos de encriptación básicos son fáciles de descodificar utilizando métodos como:

  • Ataque de texto cifrado conocido: cuando se conoce alguna pequeña parte del texto a descodificar.
  • Ataque de fuerza bruta: consiste en probar todas las claves posibles.

Criptografía Asimétrica

La Criptografía de Clave Pública asigna a cada extremo de la comunicación un par de llaves:

  • Llave pública: que cualquiera puede solicitar y conocer.
  • Llave privada: cuya seguridad es fundamental para el éxito de la codificación.

Las llaves son una secuencia bastante larga de caracteres y números, generadas por un procedimiento matemático.

Para enviar un mensaje seguro a una persona, se codifica con la clave pública del destinatario. El sistema garantiza que el mensaje resultante sólo puede ser descodificado con la clave privada del destinatario (confidencialidad).

Como se tiene la seguridad de la identidad del destinatario gracias a su clave pública, nos aseguramos de que el mensaje va al sitio correcto (autentificación).

  • Clave privada: será custodiada por su propietario y no se dará a conocer a ningún otro.
  • Clave pública: será conocida por todos los usuarios.

Esta pareja de claves es complementaria: lo que cifra una SÓLO lo puede descifrar la otra y viceversa.

Algoritmos para Criptografía Asimétrica: RSA, DSA, El Gamal, Criptografía de curva elíptica, entre otros.

Criptografía Asimétrica: RSA

RSA (Rivest, Shamir y Adleman) es un sistema criptográfico de clave pública desarrollado en 1977 en el MIT. Los mensajes enviados se representan numéricamente. El funcionamiento se basa en el producto, conocido, de dos números primos grandes elegidos aleatoriamente y mantenidos en secreto. Estos números primos son del orden de 10200, y este valor aumenta constantemente.

  • En RSA cada usuario posee dos claves de cifrado: una pública y otra privada.
  • El emisor busca la clave pública del receptor al momento de enviarle un mensaje, y cifra este con esa clave.
  • Una vez que el mensaje cifrado llega al receptor, este se ocupa de descifrarlo usando su clave privada.

Firmar y Validar con RSA

El algoritmo RSA también sirve para firmar un documento, de modo que el destinatario pueda confirmar (validar) si el mensaje procede de la persona correcta. En este caso, se hace la operación contraria que al encriptar:

  • El emisor firma el mensaje con su clave privada.
  • El receptor valida el mensaje con la clave pública del emisor.

Encriptar y Firmar con RSA

Consiste en combinar ambos sistemas: El emisor (Ana) encripta el mensaje con la clave pública B del receptor (Bernardo) y envía también una firma, que es un mensaje corto, encriptado con su propia clave privada A. Entonces, el receptor desencripta el mensaje mediante su propia clave privada B, y valida la firma con la clave pública A.

Sistemas de Numeración

Sistema Decimal

El sistema decimal es el utilizado actualmente a nivel internacional. Posee 10 caracteres distintos: 0 1 2 3 4 5 6 7 8 9

En este sistema de numeración es importante la posición de cada cifra. La primera cifra por la derecha representa su propio valor, la segunda su valor multiplicado por 10, la tercera su valor multiplicado por 100, la cuarta su valor multiplicado por 1000, etc. 4567 = 4·1000 + 5·100 + 6·10 + 7. Si observamos, los valores por los que se multiplican las cifras son potencias de 10: 4567 = 4·103 + 5·102 + 6·101 + 7·100

Sistema Binario

El sistema binario, o sistema en base 2, es el utilizado por los ordenadores modernos. Solo tiene dos caracteres distintos: 0 y 1. Al igual que el sistema decimal, la posición de la cifra es importante. La primera cifra representa su valor real, la segunda su valor multiplicado por 2, la tercera su valor multiplicado por 4, la cuarta su valor multiplicado por 8, etc. 1001 → 1·8 + 0·4 + 0·2 + 1 = 9. Es decir, el número 1001 binario equivale a 9 en sistema decimal. Los valores multiplicadores son potencias de 2: 1001 → 1·23 + 0·22 + 0·21 + 1·20

Sistema Hexadecimal

El sistema hexadecimal o sistema en base 16, utiliza los siguientes caracteres: 0 1 2 3 4 5 6 7 8 9 A B C D E F. Donde las letras tienen los siguientes valores: A = 10; B = 11; C = 12; D = 13; E = 14; F = 15. El sistema hexadecimal es muy usado en programación, especialmente cuando se trabaja a nivel de bytes. La ventaja que tiene es que es muy fácil pasar de binario a hexadecimal y viceversa. Los valores hexadecimales que puede contener un byte van del 00 hasta el FF (255).

El Código ASCII

Un archivo almacenado en un ordenador se compone de una serie de números agrupados en bytes. Para poder almacenar un archivo de texto, a cada número se le asigna un carácter desde el valor 0 hasta el 255.

El primer código que se diseñó con este fin fue el código ASCII (American Standard Code for Information Interchange).

El código ASCII se compone de 256 caracteres, desde el 0 al 255 (00 a FF en hexadecimal):

  • 33 caracteres de control (del 0 hasta el 31 y el 127).
  • 95 caracteres básicos: alfabeto en mayúsculas y minúsculas, cifras numéricas y signos de puntuación.
  • Otros 128 caracteres especiales (ASCII Extendido): letras de idiomas distintos al inglés, con acentos, signos diacríticos y algunas figuras.

Hoy en día, esos 256 caracteres se han quedado cortos, puesto que un archivo de texto puede contener caracteres de cualquier idioma moderno. Para ello se creó UNICODE. El código de cada carácter ocupa 2 o 3 bytes y su valor va desde 4E00 hasta 2FA1F (más de 100.000 caracteres).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.