Professional Documents
Culture Documents
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.
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.
Al recibir el mensaje, el receptor enrollaba la cinta en su vara, y de este modo podía leer el
mensaje.
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.
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:
Tipos de criptografía
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).
- 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.
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.
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):
Criptografía hash
¿Que es un hash?
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
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.
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.
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.
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.
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.
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
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:
Generación de claves:
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:
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.
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 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.
Las principales ventajas y la razón por la que RC4 sigue en vigencia son:
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:
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
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.
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.
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
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.
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.
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.
2. Calculamos:
n = p * q
. φ(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.
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:
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
56 mod 23 = 8
196 mod 23 = 2
b
5. Bob calcula (g a mod p) mod p
815 mod 23 = 2
ElGamal
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)
C b (m, b) = (y 1 , y 2 )
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:
Ejemplo:
Alicia elige dos valores: p= 17, g= 3, a= 6
6
Alicia calcula: K = g a (mod p) = 3 (mod 17) = 15
Para descifrar Alicia usa la clave privada (a= 6) y el pequeño teorema de Fermat
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
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.
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.
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
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.
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
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
Calcular:
r = (g k mod p)
s = (k −1 * (SHA(M ) + x * r)) mod q
Conclusiones
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.
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/
-