You are on page 1of 32

UNIVERSIDAD MAYOR DE SAN SIMÓN  

FACULTAD DE CIENCIAS Y TECNOLOGÍA 

CRIPTOGRAFÍA

Integrantes: 
Arriola Senka Rudy Cristian
Flores Sanchez Claudia
Claros Perez Freddy Jhonatan

Materia: 
​Redes Avanzadas de Computadoras

Docente: 
Msc. Lic. Montecinos Choque Marco Antonio

Carrera: 
Ingeniería de Sistemas

 
 
 
Cbba – Bolivia 
Índice
Introducción 3

Antecedentes 4

¿Qué es la criptografía? 5

Tipos de criptografía 6

Usos de la criptografía 8

Matemáticas en la Criptografía 9

Algoritmos Criptográficos 11
Criptografía simétrica: DES, AES y RC4 11
DES (Data Encryption Standard) 11
AES (Advanced Encryption Standard) 13
RC4 (Rivest Cipher 4) 16
Criptografía asimétrica: RSA, ElGamal y Hellman 20
RSA (Rivest, Shamir y Adleman) 20
Diffie-Hellman 22
ElGamal 24
Hashing: MD5, SHA-1 y DSA 26
MD5 (Message-Digest Algorithm 5) 26
SHA-1 (Secure Hash Algorithm) 28
DSA (Digital Signature Algorithm) 30
Conclusiones 31

Bibliografía 32
CRIPTOGRAFÍA

Introducción
La criptografía proviene del griego (​kryptos = recubierto, oculto), (​grafein = escribir), y el sufijo
-ia (usada para crear sustantivos abstractos). el mensaje cifrado, en si, esta a la vista, se
puede leer, pero su significado está oculto. para entenderlo es necesario poseer la clave y el
algoritmo de descifración.

La criptografía es una rama de las Matemáticas que hace uso de métodos y técnicas con el
objeto principal de cifrar y/o proteger un mensaje o archivo por medio de un algoritmo,
usando una o más claves, sin ellas será realmente difícil obtener el archivo original.

Aportando una visión más específica, la criptografía es la creación de técnicas para el cifrado
de datos. Teniendo como objetivo conseguir la confidencialidad de los mensajes. Si la
criptografía es la creación de mecanismos para cifrar datos, el criptoanálisis son los métodos
para “romper” estos mecanismos y obtener la información. Una vez que nuestros datos han
pasado un proceso criptográfico decimos que la información se encuentra cifrada.

En nuestros tiempos, la protección de la información cada vez se vuelve una necesidad


indispensable. Debido al gran crecimiento y auge de los sistemas informáticos, una gran
parte de nuestra vida diaria se rige y ocupa información que se guarda en una computadora.

La aparición de la informática y el uso masivo de las comunicaciones digitales, han producido


un número creciente de problemas de seguridad. Las transacciones que se realizan a través
de la red pueden ser interceptadas, y por tanto, la seguridad de esta información debe
garantizarse. Este desafío ha generalizado los objetivos de la criptografía para ser la parte de
la criptología que se encarga del estudio de los algoritmos, protocolos (se les llama
protocolos criptográficos), y sistemas que se utilizan para proteger la información y dotar de
seguridad a las comunicaciones y a las entidades que se comunican.

Aunque el uso de comunicaciones seguras ha sido siempre una prioridad militar, la


privacidad es requerida en otros sectores. Las empresas necesitan mantener unas
comunicaciones seguras para proteger su información.

Aparte de las empresas, se hace necesario otorgar al ciudadano de privacidad y seguridad,


con el nacimiento de internet y la progresiva oferta de servicios telemáticos como acceso al
banco, citas médicas y un sinfín de posibilidades se tiene que ofrecer confidencialidad y
seguridad a estos servicios. Es necesaria la criptografía para otorgar privacidad,
confidencialidad y seguridad a nuestras transacciones telemáticas.
Antecedentes

Los primeros sistemas de cifrado estuvieron ligados a campañas militares dada la necesidad
de evitar que el enemigo obtuviese los movimientos de las tropas al interceptar mensajes.

El primer sistema criptográfico del que se tiene constancia es


la Escítala. Este sistema data del siglo V (a.c) y era usado en
Esparta.

El sistema consistía en dos varas del mismo grosor, una en


poder del emisor y la otra del receptor. Cuando el emisor
quería enviar un mensaje, este, enrollaba una cinta en su
vara y escribía el mensaje. Lo que hacía que al desenrollar la
cinta el mensaje era ilegible.

Al recibir el mensaje, el receptor enrollaba la cinta en su vara, y de este modo podía leer el
mensaje.

Cifrado César.- Su nombre viene de


la supuesta utilización por parte de
Julio de César de este sistema.

El cifrado de César es un cifrado de


sustitución monoalfabética. Este
sistema consiste en desplazar el
alfabeto una cantidad determinada de
posiciones y alinearlo con el alfabeto
sin desplazar. De esta forma se
obtiene una relación entre las letras.

Cifrado Vigenere.- ​En el ​siglo XV es inventado un sistema de sustitución polialfabética por


Leon Battista Alberti. Este sistema es conocido como cifrado Vigenere, al haber sido atribuido
por error a Blaise de Vigenere. Con este sistema cada letra tiene una correspondencia única,
haciendo más difícil el descifrado.

Cifrado Vigenere
Enigma.- ​En el siglo XX, a consecuencia de las dos guerras
mundiales, la criptografía sufre un gran avance. En el año
1920 comenzó a usarse la máquina enigma. Su fama se
debe a su uso por parte del ejército Alemán. Enigma hacía
uso de partes mecánicas y eléctricas, era un mecanismo de
cifrado rotatorio.

La facilidad para cifrar, descifrar mensajes y la supuesta


seguridad de este cifrado convierten a la máquina enigma en
una pieza clave de la segunda guerra mundial. Los esfuerzos
por romper Enigma impulsaron la criptografía y el
criptoanálisis de una forma inimaginable.

Durante la segunda guerra mundial los aliados finalmente consiguen descifrar Enigma,
aunque este hecho se mantiene oculto hasta finales de los años 60.

¿Qué es la criptografía?

Es la ciencia que estudia los métodos y procedimientos para modificar los datos, con objeto
de alcanzar las características de seguridad. Las principales características que un sistema
de seguridad quiere obtener son:

- Confidencialidad. Consiste en garantizar que sólo las personas autorizadas tienen


acceso a la información.
- Integridad. Consiste en garantizar que el documento original no ha sido modificado. El
documento puede ser tanto público como confidencial.
- Autenticación. Permite garantizar la identidad del autor de la información.

Componentes.-​​ Los componentes básicos de la criptografía son:

- Mensaje en claro: ​el mensaje original que puede entenderse.


- Clave:​​ la llave necesaria para cifrar y descifrar el mensaje.
- Algoritmo:​​ es el método que se usará para descifrar el mensaje.
- Cifrar: ​cambiar los caracteres del mensaje original a símbolos utilizando la clave y el
algoritmo.
- Mensaje cifrado: el mensaje que contiene los símbolos y la información, pero este no
puede leerse de esta forma.
- Descifrar: usar el algoritmo y la clave para convertir el mensaje cifrado a su forma
original.

Tipos de criptografía

Consta de 3 tipos diferentes: Simétricas, asimétricas e Híbridas y también consideramos a las


funciones Hash como un tipo de criptografía pues es usado mucho recientemente
Criptografía simétrica: ​La criptografía simétrica solo utiliza una clave para cifrar y descifrar
el mensaje, que tiene que conocer el emisor y el receptor previamente y este es el punto
débil del sistema, la comunicación de las claves entre ambos sujetos, ya que resulta más
fácil interceptar una clave que se ha transmitido sin seguridad (diciendo en alto, mandandola
por correo electrónico u ordinario o haciendo una llamada telefónica).

Funcionamiento de la criptografía simétrica

Teóricamente debería de ser más fácil conocer la clave interceptando la que probándola una
por una por fuerza bruta, teniendo en cuenta que la seguridad de un mensaje cifrado debe
recaer sobre la clave y nunca sobre el algoritmo (por lo que sería una tarea eterna reventar la
clave).

Criptografía asimétrica.-​​ ​La criptografía asimétrica se basa en el uso de dos claves:

- Clave pública: Que se podrá difundir sin ningún problema a todas las personas que
necesiten mandarte algo cifrado.
- Clave privada:​​ Que no debe de ser revelada nunca.

Sabiendo lo anterior, si queremos que tres compañeros de trabajo nos manden un archivo
cifrado debemos de mandarle nuestra clave pública (que está vinculada a la privada) y nos
podrán mandar de forma confidencial ese archivo que solo nosotros podremos descifrar con
la clave privada.

Funcionamiento de la criptografía asimétrica


Puede parecer a simple vista un sistema un poco cojo ya que podríamos pensar que
sabiendo la clave pública podríamos deducir la privada, pero este tipo de sistemas
criptográficos usa algoritmos bastante complejos que generan a partir de la frase de paso (la
contraseña) la clave privada y pública que pueden tener perfectamente un tamaño de 2048
bits (probablemente imposible de reventar).

Solo cifra una persona (con la clave pública) y la otra se limita a mirar el contenido, por lo que
la forma correcta de tener una comunicación bidireccional sería realizando este mismo
proceso con dos pares de claves, o una por cada comunicador.

Otro propósito de este sistema es también el de poder firmar documentos, certificando que el
emisor es quien dice ser, firmado con la clave privada y verificando la identidad con la
pública.

Diferencias entre criptografía simétrica y asimétrica.- Para empezar, la criptografía


simétrica es más insegura ya que el hecho de pasar la clave es una gran vulnerabilidad, pero
se puede cifrar y descifrar en menor tiempo del que tarda la criptografía asimétrica, que es el
principal inconveniente y es la razón por la que existe la criptografía híbrida.

Criptografía híbrida.- ​Este sistema es la unión de las ventajas de los dos anteriores,
debemos de partir que el problema de ambos sistemas criptográficos es que el simétrico es
inseguro y el asimétrico es lento.

El proceso para usar un sistema criptográfico híbrido es el siguiente (para enviar un archivo):

- Generar una clave pública y otra privada (en el receptor).


- Cifrar un archivo de forma síncrona.
- El receptor nos envía su clave pública.
- Ciframos la clave que hemos usado para encriptar el archivo con la clave pública del
receptor.
- Enviamos el archivo cifrado (sincronamente) y la clave del archivo cifrada
(asíncronamente y solo puede ver el receptor).

Criptografía hash

¿Que es un hash?

Es el resultado de una serie de operaciones establecidas matemáticas, que se le aplican a


los datos y que son irreversibles. Generalmente están compuestos por valores numéricos de
cualquier base que llegan a obtener la misma longitud, en el mismo algoritmo. Y se intenta de
que sólo puedan generarse hashes únicos.
En algunas descargas suelen aparecen una cadena de caracteres largos, bueno eso es el
hash para poder comprobar que es verdaderamente el archivo que se quiere descargar, y no
uno modificado con algún troyano dentro.

Algo muy importante que aclarar el hash de un archivo, se le llama la “firma digital” ya que es
única para cada archivo.

Usos de la criptografía

La criptografía cuenta con 3 usos: Cifrar, autenticar y firmar.

Cifrar.- Como ya hemos dicho, siempre hay cierta información que no queremos que sea
conocida más que por las personas que nosotros queramos. En esto nos ayuda el cifrado.
Cifrando un mensaje hacemos que este no pueda ser leído por terceras personas
consiguiendo así la tan deseada privacidad.

Autenticación.- Otra de las necesidades que surgen con la aparición de internet es la


necesidad de demostrar que somos nosotros y que el emisor es quien dice ser. Un método
de autenticación puede ser el propio cifrado. Si ciframos un mensaje con una clave solo
conocida por nosotros, demostrando que somos quien decimos ser, el receptor podrá
constatar nuestra identidad descifrandolo. Esto se puede conseguir mediante clave simétrica
(el receptor tiene que estar en posesión de la clave empleada) o usando clave asimétrica en
su modo de autenticación.

Firmar: Dados los trámites que podemos realizar hoy en día a través de internet se hace
necesaria la aparición de la firma digital. Igual que firmamos un documento, la firma digital
nos ofrece la posibilidad de asociar una identidad a un mensaje.

Para la firma digital se utiliza clave asimétrica (dos claves una privada y otra pública). Lo que
se cifra con la clave privada (que solo nosotros conocemos) sólo se puede descifrar con la
pública. De esta forma al cifrar con nuestra clave privada demostramos que somos nosotros.
La firma digital tiene un problema. ¿Cómo sabe el receptor que la clave corresponde
realmente con la persona o entidad que dice poseerla? De este modo surgen las entidades
de certificación. Organismos de confianza que actúan como notarios.

Otro sistema existente la red de confianza. En esta red los usuarios certifican si los demás
son quien dicen ser. De este modo podría decirse que cada usuario se constituye como
entidad certificadora.

Matemáticas en la Criptografía

A la mitad de la década de los 70s, se dio a conocer al mundo, uno de los descubrimientos
más importantes en la criptografía moderna, la invención de la criptografía de clave pública.

Por una parte fue notable la solución del problema de la distribución de claves, y por el otro
fue interesante que haya sido con problemas matemáticos que hasta esos momentos
parecían no atraer la atención, como el problema de la factorización entera, y el problema del
logaritmo discreto.

A partir de esos años han sido muchas las aportaciones que las matemáticas han tenido a la
criptografía de clave pública, y en contra de las predicciones de los "matemático-fóbicos",
con la designación del nuevo estándar de la criptografía simétrica AES, ahora también la
criptografía simétrica es área de trabajo del álgebra, algunas de las aportaciones más
importantes de las matemáticas en la criptografía son:

Números Primos.- Desde el inicio de la criptografía fueron usados los números enteros, más
particularmente se ha trabajado con elementos de ℤp, se podría decir que el cifrado de
mensajes se reducía a encontrar una buena permutación en ℤp y esto prevaleció casi en
gran parte de la historia de la criptografía. No fue sino hasta el comienzo de la criptografía
moderna a la par del invento de la computadora y los algoritmos, cuando nuevas formas de
cifrar información fueron surgiendo. En esos tiempos los números primos no son de mucha
trascendencia, simplemente se usaba que en ℤp debería de ser primo para que todos los
elementos tuvieran inverso multiplicativo, pero tienen diversas aplicaciones, entre las cuales
están: la generación de claves RSA, la generación del dominio de parámetros para firma
digital DSA, del esquema de intercambio de claves DH y las versiones elípticas EDSA, y
EDH.

Factorización.- Paralelamente a la búsqueda de primos, y como es conocido del sistema de


clave pública RSA que basa su seguridad en la imposibilidad de factorizar un número de
cierta longitud producto de dos números primos. El problema de la factorización es
fundamental en la criptografía, y en los últimos años es quizá el problema más estudiado. En
la actualidad se tienen diferentes métodos de factorización de números enteros de diferentes
formas, y existe una estrategia estándar para poder factorizar un número entero, sin embargo
se considera aún "imposible" de hacerlo en ciertas condiciones.
Operaciones en el anillo ℤ n.- también se ha usado ampliamente el anillo ℤ n , por ejemplo
al operar con el sistema RSA. También se han usado funciones y resultados relacionados
como la función phi de Euler, la función Lamda de Carmichael, el teorema Chino del residuo
etc.

Problema del Logaritmo Discreto PLD.- este problema está definido en general sobre un
grupo cíclico, en la práctica se toma un elemento de algún grupo abeliano y el PLD se define
en el subgrupo cíclico generado por ese elemento.

Dado un generador a y un elemento b en el subgrupo generado por a, entonces el resolver el


PLD, es encontrar un número entero x, tal que b=ax.

Este problema fue propuesto, a partir de ahí nace de la criptografía de clave pública. Desde
su descubrimiento una de las ramas de investigación más intensas, esto implica en gran
parte poder diseñar sistemas criptográficos de clave pública seguros.

Campos finitos generales.- es conocido que todo campo finito tiene la forma GF(qn), donde
q=pm. El grupo multiplicativo donde se define el PLD es en GF*(qn). Si p=2, se tiene la
característica adicional de ser muy bien vistos en desarrollo de hardware, por lo que son
usados ampliamente para implementar esquemas criptográficos. Últimamente los campos
finitos de característica 3, son también considerados en aplicaciones eficientes de firmas
cortas dentro de la criptografía bilineal.

Campos numéricos algebraicos​​: otra forma de definir el PLD es considerando campos


numéricos reales, es decir campos donde los elementos tienen la forma a+db, donde a, b
son números reales y d es una raíz no real adecuada. En estos campos se pueden definir
ciertos conjuntos llamados "ideales", y es en el conjunto de ideales donde se define el PLD.
Este tipo de criptografía es usada en Europa de manera comercial.

Ecuaciones Multivariables​​: aunque a través de la historia de la criptografía el problema de


resolver un sistema de ecuaciones con muchas variables había estado presente. Ha sido
hasta los últimos años que ha ganado gran popularidad este nuevo tipo de criptografía. Es
reconocida por varios estándares en la actualidad lo que la convierte como una de las
mejores opciones en ciertas aplicaciones. Su gracia recae en tener claves de longitud
equivalente a la criptografía simétrica y en que su complejidad de ataque es totalmente
exponencial. Algo también notable de este tipo de criptografía es que existe un algoritmo
llamado XL para resolver cierto tipo de sistemas de ecuaciones y que ha sido propuesto para
atacar al sistema simétrico AES.
Algoritmos Criptográficos

En ​computación y ​criptografía un algoritmo criptográfico es un ​algoritmo que modifica los


datos de un documento con el objetivo de alcanzar algunas características de seguridad
como ​autenticación​, ​integridad​ y ​confidencialidad​.

Para encriptar, el algoritmo combina matemáticamente la información a proteger con una


llave provista. El resultado de este cálculo son los datos encriptados. Para desencriptar, el
algoritmo hace un cálculo combinando los datos encriptados con una llave provista, siendo el
resultado de esta combinación los datos desencriptados (exactamente igual a como estaban
antes de ser encriptados si se usó la misma llave). Si la llave o los datos son modificados el
algoritmo produce un resultado diferente.

El objetivo de un algoritmo criptográfico es hacer tan difícil como sea posible desencriptar los
datos sin utilizar la llave. Si se usa un algoritmo de encriptación realmente bueno, entonces
no hay ninguna técnica significativamente mejor que intentar metódicamente con cada llave
posible. Incluso para una llave de sólo 40 bits, esto significa 240 (poco más de 1 trillón) de
llaves posibles.

Clasificación.-​​ Los algoritmos criptográficos se pueden clasificar en tres grupos:

1. Criptografía simétrica o de clave secreta.


2. Criptografía asimétrica o de clave pública.
3. Hash o de resumen.

Criptografía simétrica: DES, AES y RC4

DES (Data Encryption Standard)

El algoritmo DES (Data Encryption Standard) es un algoritmo de cifrado desarrollado por la


NSA a petición del gobierno de EEUU bajo la presión de las empresas por la necesidad de
un método para proteger sus comunicaciones. DES fue escogido como un estándar FIPS
(Federal Information Processing Standard) en el año 1976 y su uso se extendió por todo el
mundo.

Hoy en día DES es considerado inseguro dada su clave de 56 bits, insuficiente frente al
poder computacional actual. En su variante Triple DES el algoritmo se cree seguro.

DES es un algoritmo de cifrado por bloques. Se toma un bloque de una longitud fija de bits y
lo transforma mediante una serie de operaciones básicas en otro bloque cifrado de la misma
longitud. En el caso de DES el tamaño del bloque es de 64 bits. La clave también tiene 64
bits pero 8 de estos bits se emplean para comprobar la paridad, haciendo que la longitud
efectiva de la clave sea de 56 bits.
Estructura básica

DES se compone de 16 fases o rondas idénticas. Al comienzo y al


final se realiza una permutación. Estas permutaciones no son
significativas a nivel criptográfico, pues se incluyeron para facilitar la
carga y descarga de los bloques en el hardware de los años 70. Antes
de cada ronda el bloque se divide en dos mitades de 32 bits y se
procesan alternativamente. Este proceso es conocido como esquema
Feistel.

La estructura de Feistel asegura que el cifrado y el descifrado sean


procesos muy similares la única diferencia es que las subclaves se
aplican en orden inverso cuando desciframos. El resto del algoritmo
es idéntico. Esto simplifica enormemente la implementación, en
especial sobre hardware, al no haber necesidad de algoritmos
distintos para el cifrado y el descifrado.

El símbolo rojo "⊕" representa la operación ​OR exclusivo (XOR). La


función-F mezcla la mitad del bloque con parte de la clave. La salida
de la función-F se combina entonces con la otra mitad del bloque, y
los bloques son intercambiados antes de la siguiente ronda. Tras la
última ronda, las mitades no se intercambian; ésta es una
característica de la estructura de Feistel que hace que el cifrado y el
descifrado sean procesos parecidos.

Función F-Feistel:

La función-F, representada en la Figura 2, opera sobre medio bloque (32 bits) cada vez y
consta de cuatro pasos:

1. ​Expansión: se toma la mitad del bloque de 64 bits (32


bits) que son expandidos a 48 bits mediante la permutación
de expansión, denominada E en el diagrama, duplicando
algunos de los bits.

2. ​Mezcla: el resultado se combina con una subclave


utilizando una operación XOR. Dieciséis subclaves (una
para cada ronda) se derivan de la clave inicial mediante la
generación de subclaves.

3. Sustitución: tras la mezcla, el bloque es dividido en ocho


trozos de 6 bits que se pasan a las cajas de sustitución. Cada una de las ocho S-cajas
reemplaza sus seis bits de entrada con cuatro bits de salida, de acuerdo con una
transformación no lineal, especificada por una tabla. Las S-cajas constituyen el núcleo de la
seguridad de DES, sin ellas, el cifrado sería lineal y fácil de romper.

4. Permutación: finalmente, los 32 bits salientes de las S-cajas se reordenan de acuerdo a


una permutación fija.

Generación de claves:

De los 64 bits iniciales se toman 56 con la Elección


Permutada 1 (PC-1). Estos 56 bits son divididos en dos
mitades de 28 bits que serán tratadas de forma
independiente. En rondas sucesivas se desplazan los bits
de ambas mitades 1 o 2 bits a la derecha. Tras el
desplazamiento se toman 48 bits (24+24) mediante la
Elección Permutada 2 (PC-2). Al realizar un
desplazamiento en cada ronda cada subclave estará
empleando un conjunto diferente de bits.

La generación de claves para descifrado es similar, la


única variación es que se deben generar en orden inverso.

AES (Advanced Encryption Standard)

El algoritmo AES (Advanced Encryption Standard) es el algoritmo más popular empleado en


criptografía simétrica.

AES opera sobre una matriz de 4x4 bytes. Mediante un algoritmo se reordenan los distintos
bytes de la matriz. El cifrado es de clave simétrica, por lo que la misma clave aplicada en el
cifrado se aplica para el descifrado.

Basado en El algoritmo Rijndael, Al contrario que su predecesor DES, Rijndael es una red de
sustitución-permutación, no una red de Feistel. AES es rápido tanto en software como en
hardware, es relativamente fácil de implementar, y requiere poca memoria.

El algoritmo de AES.- ​funciona mediante una serie de bucles que se repiten. 10 ciclos para
claves de 128 bits, 12 para 192 y 14 para 256. Supongamos que tenemos 2 matrices: matriz
“a”, y matriz “k”.
En la matriz “a” tenemos nuestra información y en la matriz “k” tenemos una subclave
generada a partir de la principal.

Para el cifrado y descifrado, AES usa una función de ronda compuesta de cuatro
transformaciones diferentes orientadas a los bytes, estas son:

1) ​SubBytes:​ ​Tomando como referencia una tabla especificada cada byte es sustituido por
otro en función de la tabla.

2) ​ShiftRows​:​ Cada byte de cada fila es desplazada n-1 huecos a la izquierda (siendo n el
número de fila).
3) ​MixColumns​: ​Los 4 bytes de una columna se combinan entre sí para obtener 4 bytes
diferentes. Este proceso se logra multiplicando la columna por una matriz dada.

donde c(x) es la multiplicación de los bytes de la matriz “a” por otra matriz dada “c”, esta
puede ser por ejemplo:
2311
1231
1123
3112

4) ​AddRoundKey:​ En el paso AddRoundKey, cada byte del state se combina con un byte de
la subclave (en este ejemplo la matriz “k”) usando la operación XOR (un algoritmo de cifrado
basado en disyunción exclusiva).
El algoritmo de cifrado es el siguiente:

Cuando el algoritmo termina con el último cambio de AddRounKey, ya tendremos el mensaje


codificado.

L​as transformaciones de cifrado pueden ser invertidas y luego implementadas en orden


reverso para producir un descifrador del algoritmo AES. En efecto, las funciones que allí se
utilizan son: ​InvSubBytes​, ​InvShiftRows​, ​InvMixColumns e ​InvRoundKey,​ las cuales realizan
operaciones muy similares a las del proceso de cifrado, pero con elementos diferentes y
mediante rondas en sentido contrario.

RC4 (Rivest Cipher 4)

En criptografía RC4 es el cifrado de flujo software más utilizado y se utiliza en los protocolos
populares como Secure Sockets Layer y conocido por ser el mismo esquema de cifrado
usado por ​WEP (​ ​Wired Equivalent Privacy​) . Mientras que destaca por su sencillez y rapidez
en el software, RC4 tiene debilidades que argumentan en contra de su uso en los nuevos
sistemas, hoy en día el sistema criptográfico está totalmente roto.

Fue diseñado por Ronald Rivest de la ​RSA Security en el año 1987; su nombre completo es
Rivest Cipher 4, teniendo el acrónimo RC un significado alternativo al de Ron's Code utilizado
para los algoritmos de cifrado RC2, RC5 y RC6.

RC4 es un esquema de cifrado de flujo (no basado en bloques) simétrico.

Es un esquema de cifrado extremadamente simple y puede implementarse en software de


forma muy eficiente. Esto lo ha convertido en uno de los esquemas de cifrado más utilizados
del mundo. Sin embargo, ​RC4​ hace tiempo que no es considerado un algoritmo seguro.
Menos conocido es que ​RC4 es usado aún en aproximadamente la mitad de transmisiones
TLS que ocurren en el mundo actualmente, desde para consultar tu correo hasta para
establecer transferencias bancarias.

Flujo de cifrado

como se menciona anteriormente RC4 usa cifrado de flujo, pero primero deberíamos saber a
que se refiere con esto.

Un cifrado de flujo, tal como es el ​RC4,​ utiliza muestras de datos más pequeñas que un
cifrado de bloque. Habitualmente el tamaño de estas muestras coincide con el tamaño
mínimo de una unidad de datos que se va a transmitir.

En el ​RC4 se utiliza un tamaño de 1 byte (unidad mínima de información que se puede


transmitir por un protocolo de red de alto nivel o guardar en un fichero), pero estos cifrados
pueden utilizar cualquier tamaño, incluido 1 bit.

En un cifrado de flujo, partiendo de una clave secreta compartida por emisor y receptor,
ambos generan un flujo de cifrado pseudoaleatorio (​keystream)​ . Este flujo de cifrado se
mezcla con los datos que se van a transmitir mediante una operación de combinación,
habitualmente ​XOR​.

Si la operación que alimenta el flujo es segura (no es fácil para un atacante determinar el
estado del flujo de cifrado en un momento dado ni puede conocer qué estado alcanzará en
un futuro), el resultado de la operación de combinación también será seguro.

La principal ventaja de los cifrados de flujo frente a los cifrados de bloque es que no
necesitan esperar a que se llene un ​buffer de un número determinado de caracteres para
poder cifrar y transmitir, sino que la unidad mínima de transmisión coincide con la unidad
mínima que se puede cifrar.

Ventajas del uso de RC4

Las principales ventajas y la razón por la que RC4 sigue en vigencia son:

- Es rápido incluso en hardware viejo​​. Cuando alguien decide soportar HTTPS, la


carga que el cifrado supondrá es a menudo un factor importante para la elección de un
esquema de cifrado u otro. El cifrado ​RC4 es lo suficientemente rápido como para
responder a estas preocupaciones.
- Es fácil de implementar​​. La implementación de ​RC4 cabe en una servilleta. Dada su
simplicidad, se puede integrar fácilmente en el software de dispositivos embebidos sin
depender de complejas bibliotecas criptográficas. Es utilizado en muchos sistemas
anticopia DRM (​Digital Rights Management)​ .
- No está roto del todo​​. No se conoce un método para romper un texto arbitrario
cifrado en ​RC4,​ pero cada vez aparecen más ataques, y últimamente se están
intensificando. Dice un viejo dicho de la ​NSA:​ Los ataques siempre van a mejor, nunca
van a peor.
Descripción

RC4 genera una secuencia pseudoaleatoria de bits. Como con cualquier cifrado de flujo,
estos pueden ser utilizados para el cifrado mediante la combinación con el texto plano
usando exclusiva relativa a bits-o; se lleva a cabo el descifrado de la misma manera. Para
generar la cadena de claves, el sistema de cifrado hace uso de un estado interno secreto que
consta de dos partes:

- Una permutación de todas las posibles 256 bytes.


- Dos triples de índice de 8 bits.

La permutación se inicializa con una clave de longitud variable, típicamente entre 40 y 256
bits usando el algoritmo de clave-programación. Una vez que esto se ha completado, se
genera la corriente de bits utilizando el algoritmo de generación de pseudo-aleatoria.

El algoritmo de RC4

El algoritmo de cifrado ​RC4​ se descompone en tres partes:

- Inicialización del vector de estado (​KSA,​ ​key-scheduling algorithm)​ .


- Generación del flujo de cifrado (​PRGA,​ ​pseudo-random generation algorithm)​
- Mezcla del texto con el flujo de cifrado.

Inicialización del vector de estado


RC4 utiliza una permutación de todos los bytes posibles, es decir, un vector ​S de 256
elementos con todos los números del 0 al 255.

Este vector se utilizará como entrada en la siguiente etapa del algoritmo para generar el flujo
de cifrado.

Emisor y receptor comparten una clave secreta. El algoritmo ​RC4 admite claves de hasta 256
bytes de longitud, aunque la máxima seguridad se consigue con tamaños significativamente
menores. Típicamente se utilizan claves de entre 5 y 16 bytes (40 - 128 bits).

El ​RC4 contempla un protocolo para desordenar los 256 elementos del vector a partir de la
clave secreta compartida por emisor y receptor. En este protocolo, se carga el vector ​S con
valores ordenados del 0 al 255 y se itera por cada elemento, intercambiando cada uno por
otro de los elementos del vector determinado por la combinación de uno de los números
(bytes) de la clave y el valor actual del elemento.

En el cálculo de la posición de intercambio para cada iteración se tiene en cuenta el


resultado de la iteración anterior, haciendo el algoritmo más difícil de atacar.

En el cálculo de la posición de intercambio para cada iteración se tiene en cuenta el


resultado de la iteración anterior, haciendo el algoritmo más difícil de atacar.

El resultado es un vector permutación ​S de aspecto aleatorio, pero replicable fácilmente por


cualquiera que tenga la clave secreta (receptor legítimo).
El siguiente pseudocódigo muestra de forma detallada este proceso.

for i from 0 to 255


S[i]:= i
endfor
j:= 0
for i from 0 to 255
j := (j + S[i] + key[i mod keylength]) mod 256
swap values of S[i] and S[j]
endfor

Se parte del vector de estado generado en la etapa anterior y dos variables ​i y ​j se genera el
flujo de cifrado.

En cada iteración del algoritmo se emite un byte del flujo de cifrado y se intercambian dos
elementos del vector. En todo momento el estado del sistema está determinado por el valor
de las variables​ ​i​ ​y​ ​j​ y el vector estado.

Si un atacante llegará a conocer todos estos valores en un momento determinado de la


transmisión, podría descifrar todos los mensajes que se cifraran desde ese momento en
adelante.

El siguiente pseudocódigo detalla el proceso de generación del flujo de cifrado.

i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap values of S[i] and S[j]
K := S[(S[i] + S[j]) mod 256]
output K
endwhile

Mezcla del texto con el flujo de cifrado.

A cada ​K resultado del algoritmo anterior se le hace la operación ​XOR con un byte del texto
plano para obtener el texto cifrado y se envía por el canal.

La operación XOR es un algoritmo basado en el operador binario XOR el cual no es otro que
el operador de disyunción exclusiva la cual posee la siguiente tabla de verdad
Una disyunción exclusiva solamente es verdadera cuando ambas frases tienen valores
diferentes y es falsa si las dos frases son ambas verdaderas o ambas falsas.

Criptografía asimétrica: RSA, ElGamal y Hellman

RSA ​(Rivest, Shamir y Adleman)

RSA es un algoritmo de cifrado asimétrico, o de clave pública, y es uno de los algoritmos


más utilizados en la actualidad. De hecho, la mayor parte de los sitios hoy corren sobre
SSL/TLS, y permiten la autenticación mediante cifrado asimétrico basado en RSA.

RSA sirve para cifrar y descifrar información, y por ello también provee servicios de
autenticidad y de integridad, mediante lo que se conoce como Infraestructura de clave
pública.

Así es que RSA, al ser un cifrado asimétrico, trabaja con dos claves, una pública y una
privada. Todo el contenido de texto plano, o contenido sin cifrar, que sea hecho con la clave
pública, podrá ser descifrado mediante la clave privada, y viceversa, todo contenido cifrado
con la clave privada podrá ser descifrado mediante la clave pública. El nombre RSA proviene
de las iniciales de los tres creadores, Rivest, Shamir y Adleman, allá por 1997.

Su principal ventaja es que facilitan el proceso de distribución e intercambio de claves entre


los participantes de la comunicación segura, que era un problema importante de los
criptosistemas simétricos o de clave privada.

Los algoritmos asimétricos emplean generalmente longitudes de clave mucho mayores que
los simétricos, que usan una única clave secreta. Por ejemplo, mientras que para algoritmos
simétricos se considera segura una clave de 128 bits, para la mayoría de algoritmos
asimétricos (incluido el del RSA), se recomiendan actualmente claves de al menos 1024 bits
de longitud. Además, la complejidad de cálculo que comportan los algoritmos de los
criptosistemas asimétricos los hace considerablemente más lentos que los algoritmos de
cifrado simétricos. Por eso en la práctica los métodos asimétricos se emplean principalmente
para codificar la clave de sesión (simétrica) de cada comunicación o transacción particular.

Algoritmo de RSA.- ​Este algoritmo se basa en escoger 2 números primos grandes elegidos
de forma aleatoria y mantenidos en secreto. La principal ventaja de este algoritmo desde el
punto de vista de seguridad radica en la dificultad a la hora de factorizar números grandes.
RSA es seguro hasta la fecha.

La idea del algoritmo es la siguiente:


Tenemos un mensaje M. Empleando un protocolo reversible conocido como patrón de relleno
convertimos el mensaje M en un número m menor que otro número dado n.
Se genera el mensaje cifrado c:
c = me (mod n)
Se obtiene m descifrando el mensaje cifrado c:
m = cd (mod n)
Generación de claves:
1. Tomamos 2 números primos p y q. Estos tienen que ser aleatorios e impredecibles, estos
números pueden ser perfectamente aleatorios, pero si se conoce, se puede predecir los
valores, y por tanto, resultaría en una baja seguridad.

2. Calculamos:
n = p * q

3. Calculamos φ(n). La función φ de Euler se define como el número de enteros positivos


menores o iguales a n y coprimos con n (dos números son coprimos si no tienen ningún
divisor común distinto 1 o -1). La función tiene las siguientes propiedades:

. φ(1) = 1 .
. φ(p) = p − 1 ​si p es primo.
. φ(pk ) = (p − 1) * p(k − 1) si p es primo y k un número natural.
. φ(m * n) = φ(m) φ(n) ​si m y n son primos​.
De esta forma nos queda que para nuestro :

φ(n) = (p − 1) * (q − 1)
4.-Escogemos un número e menor que φ(n) y que sea coprimo con φ(n).
Este número será dado a conocer como exponente de la clave pública.
5.-Obtenemos un número d mediante aritmética modular tal que d = e^(-1) mod(φ(n)) o lo
que es lo mismo (d*e)-1 tiene que ser divisible por φ(n).

De esta forma tenemos la clave pública formada por (n,e) y la privada formada por
(n,d).

p = 61 1º nº primo privado
q = 53 2º nº primo privado
n = p*q = 3233 producto p×q
e = 17 exponente público
d = 2753 exponente privado

La clave pública (e, n). La clave privada es (d, n). La función de cifrado e:
encrypt (m) = me (mod n) = m17 (mod 3233)
Donde m es el texto sin cifrar. La función de descifrado es:
decrypt (c) = cd (mod n) = m2753 (mod 3233)
Donde c es el texto cifrado. Para cifrar el valor del texto sin cifrar 123, nosotros calculamos:
encrypt (123) = 12317 (mod 3233) = 855
Para descifrar el valor del texto cifrado, nosotros calculamos:
2753
decrypt (855) = 855 (mod 3233) = 123

Diffie-Hellman

El algoritmo de Diffie-Hellman (en honor a sus creadores, Whitfield Diffie y Martin Hellman)
permite acordar una clave secreta entre dos máquinas, a través de un canal inseguro y
enviando únicamente dos mensajes. La clave secreta resultante no puede ser descubierta
por un atacante, aunque éste obtenga los dos mensajes enviados por el protocolo. La
principal aplicación de este protocolo es acordar una clave simétrica con la que
posteriormente cifrar las comunicaciones entre dos máquinas.

Su seguridad radica en la extrema dificultad (conjeturada, no demostrada) de calcular


logaritmos discretos​ en un cuerpo finito.

Usos de Diffie-Hellman.- Para alcanzar el estándar definido como “forward secrecy”


(seguridad avanzada) en los que se generan nuevos juegos de claves para cada sesión, que
serán desechados después, es común utilizar el protocolo DH, debido a su rapidez para
generar claves.

Pero la criptografía ya existía tiempo atrás. Antes de aparecer mecanismos de intercambio


de claves públicas, como Diffie-Hellman, las claves criptográficas debían ser transmitidas en
formato físico, como en la imagen del ejemplo, correspondiente a una lista de la máquina
Enigma (2ª Guerra Mundial).

Funcionamiento.- ​El sistema de intercambio de claves de cifrado Diffie-Hellman se basa en


la idea de que dos interlocutores pueden generar conjuntamente una clave compartida sin
que un intruso que esté escuchando las comunicaciones pueda llegar a obtenerla.

Para ello cada interlocutor elige un número público y un número secreto. Usando una fórmula
matemática, que incluye la exponenciación, cada interlocutor hace una serie de operaciones
con los dos números públicos y el secreto. A continuación los interlocutores se intercambian
los resultados de forma pública.

En teoría revertir esta función es tan difícil como calcular un logaritmo discreto (Un millón de
millones de cuadrillones más costosa que la exponenciación usada para transformar los
números). Por eso se dice que este número es el resultado de aplicar una función
unidireccional al número secreto.
A continuación ambos interlocutores utilizan por separado una fórmula matemática que
combina los dos números transformados con su número secreto y al final los dos llegan al
mismo número resultado que será la clave compartida.

Para dos partes ​Alice y ​Bob,​ que intentan establecer una clave secreta, y un adversario
Mallory​, la versión básica es como sigue:

Se establece un primo p y un generador ​g ε Z *p ​Estos son públicos, conocidos no solo por


las partes ​Alice​ y ​Bob​ sino también por el adversario ​Mallory .​

Alice escoge ​a ε Z p−1 ​al azar, calcula A = g a mod p ​y envía A a Bob

Bob escoge ​b ε Z p−1 ​al azar, calcula B = g b mod p ​y envía B a Alice

Tanto ​A y ​B pueden calcular el valor K = g a−b mod p ​En efecto, lo podemos demostrar
usando las propiedades del grupo:

Para Alice:
a
B a mod p = (g b mod p) mod p = ((g b mod p) (g b mod p)..(g b mod p))mod p = g b.a mod p = g a.b mod p = K

Para Bob:

Ab mod p = (g a mod p)b mod p = ((g a mod p) (g a mod p)..(g a mod p))mod p = g a.b mod p = K

Ejemplo: respecto a Alice y Bob

1. Alice y Bob acuerdan usar el número primo p=23 y la base g=5.

2. Alice elige un número secreto a=6, luego envía a Bob ( g a mod p )

56 mod 23 = 8

3. Bob elige un número secreto b=15, luego envía a Alice ( g b mod p )


515 mod 23 = 19
a
4. Alice calcula (g b mod p) mod p

196 mod 23 = 2
b
5. Bob calcula (g a mod p) mod p

815 mod 23 = 2

ElGamal

El procedimiento de cifrado/descifrado ElGamal, se refiere a un esquema de cifrado basado


en problemas matemáticos de logaritmos discretos. Es un algoritmo de criptografía
asimétrica basado en la idea de Diffie-Hellman y que funciona de una forma parecida a este
algoritmo discreto.

El algoritmo de ElGamal puede ser utilizado tanto para generar firmas digitales como para
cifrar o descifrar.

En las firmas digitales que es muy utilizado, un tercero puede falsificar firmas si encuentra la
clave secreta x del firmante o si encuentra colisiones en la función de Hash . Se considera
que ambos problemas son suficientemente difíciles. El firmante debe tener cuidado y escoger
una clave diferente de forma uniformemente aleatoria para cada firma. Así asegura que clave
o aún información parcial sobre la clave no es deducible. Malas selecciones de claves
pueden representar fugas de información que facilitan el que un atacante deduzca la clave
secreta. En particular, si dos mensajes son enviados con el mismo valor de la clave escogida
entonces es factible deducir el valor de la clave secreta. Hasta el momento el algoritmo
ElGamal de cifrado/descifrado puede ser considerado un algoritmo efectivo. Un adversario
con la habilidad de calcular logaritmos discretos podría ser capaz de romper un cifrado
ElGamal. Sin embargo, en la actualidad, el algoritmo de computación de logaritmos discretos
es subexponencial con una complejidad de λ = 1/3 , la misma que la de factorizar dos
números primos, y por tanto, incapaz de realizar tal tarea en números grandes en un tiempo
razonable.

Generación de clave.- Para generar la clave, Alicia escoge un número primo ​p cualquiera tal
que el logaritmo discreto no es soluble en un tiempo asumible en Z *p (grupo multiplicativo
módulo un primo p). Esto último se traduce en que p − 1 tenga un factor primo grande.

Además Alicia elige dos números aleatorios ​g ​(el generador del grupo cíclico Z *p ) y a ​(que
actuará como clave privada) tal que a ε {0, ... , p − 1}
Alicia calcula el valor de K = g a (mod p) . la clave pública será ( g , p, K )​, mientras que el
valor de ​a ​lo mantendrá en secreto. Despejando a de la ecuación K = g a (mod p)
obtenemos la relación siguiente entre los componentes de la clave pública y la clave privada
log g K (mod p) = a ​con lo que el criptosistema es seguro siempre que sea difícil hallar el
logaritmo discreto.

Cifrado.- ​Supongamos que Bruce tiene un texto claro que quiere enviar cifrado a Alicia. Lo
primero por hacer es convertir este texto en un entero m entre 1 y p − 1(m ε Z p ) . Esto no es
parte del cifrado, sino que es una manera de codificar estándar, conocida por todos. Luego
Bruce escoge arbitrariamente un número​ b​​ ε {2, .., p − 1} para finalmente calcular.

y 1 = g b (mod p)
y 2 = K b m (mod p)

El mensaje cifrado final corresponde a la tupla

C b (m, b) = (y 1 , y 2 )

Descifrado.-​​ Para Descifrar se tiene que realizar el siguiente cálculo:


−a
y 1−a y 2 (mod p) = (g b ) K b m (mod p) = g −ab (g a )b m (mod p) = (g a )−b (g a )b m (mod p) = m (mod p)

Por tanto para descifrar se tiene que realizar el siguiente cálculo:

y 1−a y 2 (mod p)

donde y 1−a representa el inverso de y a1 mod p lo que indica que para calcular el descifrado, es
necesario conocer ​a, ​que es clave privada de Alicia.
p−1−a
Por el pequeño teorema de fermat se demuestra que​ y 1−a = y 1 y lo podemos aplicar.

xp−1 (mod p) = 1 con p primo y x>0 coprimo con p. elevando ​a la la expresión que
p−1a
obtenemos que x (mod p) = 1a = 1 por tanto:

x(p−1)a (mod p) = xap−a (mod p) = xa . xp−1−a (mod p) = 1


p−1−a
Despejando x (mod p) = x−a (mod p)

Ejemplo:
Alicia elige dos valores: p= 17, g= 3, a= 6
6
Alicia calcula: K = g a (mod p) = 3 (mod 17) = 15

por tanto la clave pública (g,p,K) sera (3,17,15)

Bruce tiene el texto claro​ m = 9 (que estaría entre 1 y p-1)

Bruce escoge un b = 5 ​aleatorio entre 2 y p-1

y 1 = g b (mod p) = 35 (mod 17) = 5

y 2 = K b m (mod p) = 155 * 9 (mod 17) = 1

Lo cual el texto cifrado es C b (m, b) = (y 1 = 5, y 2 = 1)

Para descifrar Alicia usa la clave privada (a= 6) y el pequeño teorema de Fermat

m = y 1p−1−a y 2 (mod p) = y 117−1−6 y 2 (mod 17) = 9

Hashing: MD5, SHA-1 y DSA

MD5 (​​Message-Digest Algorithm 5​​)

El MD5 es un algoritmo de codificación de 128 bits que genera un hash hexadecimal de 32


caracteres, independientemente de la longitud de la palabra de entrada. Este algoritmo no es
reversible, siendo normalmente imposible encontrar la palabra original a partir de un MD5.

Algoritmo de md5
1.Adición de bits.-​​El mensaje será extendido hasta que su longitud en bits sea congruente
con 448, módulo 512. Esto es, si se le resta 448 a la longitud del mensaje tras este paso, se
obtiene un múltiplo de 512. Esta extensión se realiza siempre, incluso si la longitud del
mensaje es ya congruente con 448, módulo 512.

La extensión se realiza como sigue: un solo bit "1" se añade al mensaje, y después se
añaden bits "0" hasta que la longitud en bits del mensaje extendido se haga congruente con
448, módulo 512. En todos los mensajes se añade al menos un bit y como máximo 512.

2.Longitud del mensaje.- Un entero de 64 bits que representa la longitud 'b' del mensaje
(longitud antes de añadir los bits) se concatena al resultado del paso anterior. En el supuesto
no deseado de que 'b' sea mayor que 2^64, entonces sólo los 64 bits de menor peso de 'b' se
usarán.

En este punto el mensaje resultante (después de rellenar con los bits y con 'b') se tiene una
longitud que es un múltiplo exacto de 512 bits. A su vez, la longitud del mensaje es múltiplo
de 16 palabras (32 bits por palabra). Con M[0 ... N-1] denotaremos las palabras del mensaje
resultante, donde N es múltiplo de 16.

3.Inicializar el buffer MD.- Un búfer de cuatro palabras (A, B, C, D) se usa para calcular el
resumen del mensaje. Aquí cada una de las letras A, B, C, D representa un registro de 32
bits. Estos registros se inicializan con los siguientes valores hexadecimales, los bytes de
menor peso primero:

- palabra A: 01 23 45 67
- palabra B: 89 ab cd ef
- palabra C: fe dc ba 98
- palabra D: 76 54 32 10

Procesado del mensaje en bloques de 16 palabras.- Primero definimos cuatro funciones


auxiliares que toman como entrada tres palabras de 32 bits y su salida es una palabra de 32
bits.

Los operadores ⊕, ⋀, ⋁, ¬ son las funciones XOR, AND, OR y NOT respectivamente.

En cada posición de cada bit F actúa como un condicional: si X, entonces Z sino Y. La


función F podría haber sido definida usando + en lugar de v ya que XY y not(x) Z nunca
tendrán unos ('1') en la misma posición de bit. Es interesante resaltar que si los bits de X, Y y
Z son independientes y no sesgados, cada uno de los bits de F(X,Y,Z) será independiente y
no sesgado.

Las funciones G, H e I son similares a la función F, ya que actúan "bit a bit en paralelo" para
producir sus salidas de los bits de X, Y y Z, en la medida que si cada bit correspondiente de
X, Y y Z son independientes y no sesgados, entonces cada bit de G(X,Y,Z), H(X,Y,Z) e
I(X,Y,Z) serán independientes y no sesgados. Nótese que la función H es la comparación bit
a bit "xor" o función "paridad" de sus entradas.

SHA-1 (Secure Hash Algorithm)

En 1994 nació de manos del NIST como ampliación al SHA tradicional. Este algoritmo, pese
a ser bastante más lento que MD5, es mucho más seguro, pues genera cadenas de salida de
160 bits (a partir de entradas de hasta 2 ^ 64 bits) que son mucho más resistentes a
colisiones simples y fuertes.

En general, SHA1 se considera el mejor algoritmo de la familia de Algoritmos HASH o de


resumen y es el que se aplica en la mayoría de las aplicaciones de firma electrónica. Por lo
tanto es muy habitual aplicar SHA1 seguido de RSA para realizar una firma electrónica de un
documento, o bien el algoritmo DSA específico para firma electrónica que también utiliza
SHA1 internamente.

Ejemplo de hashes SHA-1​​: Estos son ejemplos de SHA-1 digiere. ASCII codificación se
utiliza para todos los mensajes.

SHA1 (” El rápido zorro marrón salta sobre el perro perezoso “) = 2fd4e1c6 7a2d28fc
ed849ee1 bb76e739 1b93eb12
La codificación hash vacía para SHA-1 corresponde a:

SHA1(“”) = da39a3ee5e6b4b0d3255bfef95601890afd80709

- Es imposible encontrar un mensaje que se corresponde con un determinado mensaje.


- Es imposible encontrar dos diferentes mensajes que producen el mismo mensaje.
- Si un mensaje se cambia incluso de un solo carácter, el resultado será un mensaje
totalmente diferente.

El procesamiento:​​ consta de cinco pasos los cuales se explican a continuación:

1.-​​Se incorporan bits de relleno al mensaje de entrada de tal modo que cumpla:
El relleno consiste en un uno seguido de los ceros que sean necesarios. Aunque el mensaje
ya tenga la longitud deseada, se debe efectuar el relleno, por lo que el número de bits de
dicho relleno está en el rango de 1 a 512 bits.
2.-​​A la salida del paso 1, se le añade un bloque de 64 bits que representa la longitud del
mensaje original antes de ser rellenado.
3.-​​Se inicializa la memoria temporal MD, la cual consta de 160 bits y su finalidad es
almacenar los resultados intermedios y finales de la función de dispersión. La MD consta de
5 registros (A,B,C,D,E) de 32 bits cada uno, los valores con los que se inicializan son los
siguientes (valores hexadecimales):
A=67452301
B=EFCDAB89
C=98BADCFE
D=10325476
E= C3D2E1F0
4.-​​.Se procesa el mensaje por bloques de 512 bits, cada uno pasa por un módulo que consta
de 4 rondas de procesamiento de 20 pasos cada una. Las rondas tienen una estructura
similar, con la excepción de que cada una ocupa una función lógica primitiva diferente (f1, f2,
f3 y f4).
5.- ​Una vez que se procesan los L bloques de 512 bits, el resumen del mensaje son los 160
bits de salida del último bloque.

SHA-1 tiene estas propiedades y, por tanto, a que se refiere como seguro. Está diseñado
para trabajar con el Algoritmo de Firma Digital (DSA). SHA-1 es una forma de función de
hash.

Funciones en un solo sentido se caracterizan por dos propiedades. La primera es que son de
sentido único. Esto significa que usted puede tomar un mensaje y calcular un valor de hash,
pero no se puede tomar un valor hash y recrear el mensaje original. También es libre de
colisión y, por tanto, no hay dos mensajes hash con el mismo valor.

Aplicaciones de SHA--1.- ​SHA-1 puede ser usado en una variedad de aplicaciones:

1. Aplicaciones de seguridad que requieren autenticación


2. E-mail
3. Transferencia electrónica de fondos
4. Distribución de software
5. Almacenamiento de datos

SHA-1 ha sido examinado muy de cerca por la comunidad criptográfica pública, y no se ha


encontrado ningún ataque efectivo. No obstante, en el año 2004, un número de ataques
significativos fueron divulgados sobre funciones criptográficas de hash con una estructura
similar a SHA-1; lo que ha planteado dudas sobre la seguridad a largo plazo de SHA-1.
DSA (​​Digital Signature Algorithm​​)

DSA (algoritmo de firma digital), es un algoritmo de cifrado que utiliza tanto una llave pública
como una privada, se puede autenticar un mensaje dad una clave pública y la firma del
mensaje. También podemos generar pares de claves pública, privada y generar firmas de
datos usando la clave privada generada.

DSA es un estándar del gobierno Federal de los Estados Unidos de América o FIPS para
firmas digitales, este algoritmo como su nombre nos indica sirve para firmar y no para cifrar la
información, pero esto hace que se requiera mucho más tiempo de cómputo que algoritmos
más simples como RSA, pero aun así este sigue siendo bastante rápido.

DSA es bastante fácil de implementar, y además es bastante rápido, sin embargo al tener
una clave demasiado corta lo hace vulnerable a los ataques por fuerza bruta.

Algoritmo de DSA.- ​La clave privada x deberá ser un número aleatoria de 160 bits el cual no
es del todo “aleatorio” que debe cumplir con ciertas características según estándares de DSS

Generar la clave pública


Para esto se necesita obtener los números p y q, donde:
- P será divisible por 64 y de longitud 512 bits
- Q será divisible de longitud 160 bits y deberá de cumplir que p – 1 = q * z (z en un
número natural entero)
- Calcular g utilizando la fórmula:
p−1
g = h( q ) mod p ​ donde:​ 1 < h < p − 1
- Calcular la clave con la fórmula:​ y = g x mod p

Número k correspondiente a la firma

El número k será el que corresponda a la firma, este número debe ser único para cada firma
y será un parámetro más para poder comprobarla, además que también debe cumplir con las
características especificadas del estándar donde: 0 < k < q

Generar la firma de su documento

Calcular:
r = (g k mod p)
s = (k −1 * (SHA(M ) + x * r)) mod q

Donde SHA(M), es el resultado de aplicarle la función hash SHA-1 al documento, el cual no


importando la longitud que tenga el SHA resultante tendrá siempre la misma longitud
Aplicaciones de DSA.- Este estándar especifica los algoritmos para aplicaciones que
requieren una firma digital, en lugar de una firma manuscrita. Una firma digital se representa
en un equipo como cadena de bits y se calcula utilizando un conjunto de normas y
parámetros que permiten que la identidad del firmante y la integridad de los datos para ser
verificados.

Conclusiones

Debido a las cambiantes condiciones y nuevas plataformas de computación disponibles, es


vital el desarrollo de documentos y directrices que orienten a los usuarios en el uso adecuado
de las tecnologías para aprovechar mejor sus ventajas.

El auge de la interconexión entre redes abre nuevos horizontes para la navegación por
Internet y con ello, surgen nuevas amenazas para los sistemas computarizados, como son la
pérdida de confidencialidad y autenticidad de los documentos electrónicos.

La Criptografía es una disciplina/tecnología orientada a la solución de los problemas


relacionados con la autenticidad y la confidencialidad, y provee las herramientas idóneas
para ello.

Los usuarios son quienes deben elegir la conveniencia de una u otra herramienta para la
protección de sus documentos electrónicos.

Bibliografía
- http://www3.uah.es/libretics/concurso2014/files2014/Trabajos/Criptografia%20y%20Me
todos%20de%20Cifrado.pdf?fbclid=IwAR0vfRXo1zTnoWcehl_fJt4sYVw_LcXAst2R2g
OX9y0oeD4pBFEnJnzTBgo
- https://prezi.com/s1rxv-cnjy2m/dsa-digital-signature-algorithm/
- http://www.dit.upm.es/~pepe/401/index.html#!3917
- https://juncotic.com/rsa-como-funciona-este-algoritmo/
- https://www.genbeta.com/desarrollo/tipos-de-criptografia-simetrica-asimetrica-e-hibrida
- https://javiercampos.es/blog/2011/07/22/el-algoritmo-de-diffie-hellman/
- http://www.mejor-antivirus.es/terminologia-informatica/que-es-diffie-hellman.html
- https://es.wikipedia.org/wiki/Diffie-Hellman
- http://dmpp111290.blogspot.com/p/cifrado-elgamal.html
- https://www.ecured.cu/ElGamal
- https://statusexcessu.wordpress.com/2013/04/18/sha-1/
- https://latam.kaspersky.com/blog/que-es-un-hash-y-como-funciona/2806/
-

You might also like