VC4NM73-EQ#6-DSA

9

Click here to load reader

Transcript of VC4NM73-EQ#6-DSA

Page 1: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

INTRODUCCIÓN

En esta ocasión trataremos el tema del algoritmo DSA el cual nos ayuda para crear firmas digitales,

estas firmas son las que nos ayudan a poder identificar quien envía la información, además se debe

de tener en cuenta que este algoritmo no es para encriptar mensajes, solo es para poder identificar a

las personas.

ÍNDICE

¿QUÉ ES DSA?

POCO DE HISTORIA

¿QUÉ SON LAS FIRMAS DIGITALES?

Funcionamiento

CREACIÓN DEL PAR CLAVE PÚBLICA-CLAVE PRIVADA

GENERACIÓN DE LA FIRMA DIGITAL

PROBLEMAS PRINCIPALES

DESVENTAJAS

APLICACIÓN DSA

SEGURIDAD EN JAVA CON DSA

IMPLEMENTACIÓN DEL DSA

SEGURIDAD DEL DSA

CAPITULADO

¿QUÉ ES DSA?

Algoritmo estándar estadounidense de firma digital para aplicaciones gubernamentales

diseñado por el National Institute for Standards and Technology (NIST). Es una variante con

apéndice del esquema de firma digital de El Gamal.

Como su nombre indica, es un algoritmo que sirve para firmar, no para cifrar información dado que no es reversible. Se basa en la dificultad de calcular logaritmos discretos en campos finitos métodos de Schnorr y ElGamal.

Page 2: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

DSA primero selecciona un algoritmo de resumen (generalmente uno de la familia SHA) y una longitud de clave (inicialmente un múltiplo de 64 entre 512 y 1024, pero actualmente 1024, 2048 o 3072).

POCO DE HISTORIA

El algoritmo de firmas digitales (DSA) fue implementado por la agencia federal de estándares de los Estados Unidos. Este fue propuesto por el Instituto nacional de estándares y tecnología( NIST) en agosto del 1991 como parte del estándar de firmas digitales (DSS) , el cual fue adoptado en 1993. El estándar DSS surge como una necesidad en las agencias federales, ya que requerían de un método de seguridad que les permitiera transmitir información no clasificada. Por lo que estas agencias no contaban con un método de seguridad que protegiera sus comunicaciones. Generalmente el estándar es implementado por el sector privado y por las empresas e instituciones que se dedican al comercio electrónico.

Este algoritmo se le atribuye al Dr.David W. Kravitz un empleado de agencia nacional de seguridad quien archivo la patente en julio del 1991. Esta patente fue expropiada y dada a los Estados Unidos de América. Luego hecha pública y libre de regalías para su uso e implementación. ¿QUÉ SON LAS FIRMAS DIGITALES?

Las firmas digitales son un método para asegurar autenticidad de cualquier documento electrónico (e-mail, hoja de cálculo, archivos de texto, etc.) Estas firmas necesitan utilizar algunos tipos de encriptación para asegurar la Autenticación. Estos dos procesos funcionan mano a mano para garantizar una firma digital. Existen varias formas de autenticar una persona o información en un equipo.

Page 3: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

FUNCIONAMIENTO

Formas de autenticar una persona o información en un sistema

★ Password: uso de usuario y clave

★ Checksum: un checksum inválido sugiere que la información esta comprometida

★ CRC (Cyclic Redundancy Check): asegura la integridad de la fuente recibida.

★ Public Key Encryption : una combinación de una llave pública y una llave privada

★ Digital Certificates: Otorgadas por las autoridades que certifican la integridad de un sitio

Una firma digital está representada por un hilo de dígitos binarios. En una firma digital se

contienen una serie de parámetros que autentican la integridad de la fuente firmada. Este

algoritmo tiene la habilidad de generar y verificar una firma.

En la generación de la firma utiliza una llave privada. Y la verificación se utiliza una llave

pública. Estas llaves no son iguales y cada usuario posee un par de llaves.

El funcionamiento del DSA está ligado a SHA-1 el cual es un algoritmo de Hashing seguro.

Mejor dicho DSA es un algoritmo de llave pública (Public key); esta llave pública es generada

por SHA-1 para verificar la firma. Para esto se recomputa el hash del mensaje usando la

llave publica para descifrar la firma. La llave es una variable de 512 – 1024 bits

CREACIÓN DEL PAR CLAVE PÚBLICA-CLAVE PRIVADA

El algoritmo de generación de claves es el siguiente:

1. Seleccionar un número primo q tal que 2159 < q < 2160.

2. Escoger t tal que 0 ≤ t ≤ 8, y seleccionar un número primo p tal que 2511+64t < p <

2512+64t, y que además q sea divisor de (p - 1).

3. Seleccionar un elemento g Î Z*p y calcular α = g(p-1)/q mod p.

4. Si α = 1 volver al paso 3.

5. Seleccionar un número entero aleatorio a, tal que 1 ≤ a ≤ q - 1

6. Calcular y = αa mod p.

7. La clave pública es (p, q, α, y). La clave privada es a.

GENERACIÓN DE LA FIRMA DIGITAL

Page 4: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

1. Generar su clave privada

La clave privada x deberá ser un número aleatorio de 160 bits el cual no es del todo "aleatorio" ya que

debe cumplir con ciertas características según el estándar de DSS.

2. Generar su clave pública

Para generar la clave pública necesita:

Obtener los números p y q, donde:

-p será divisible por 64 y de longitud 512 bits

-q será de longitud 160 bits y deberá de cumplir que p-1=q*z (z es un número natural entero)

-Calcular g utilizando la fórmula:

donde: 1<h<p-1

-Calcular la clave con la fórmula: y=g* mod p

3.- Número k correspondiente a la firma.

Número k correspondiente a la firma. Éste número 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 específicas

del estándar donde:

0<k<q

4. Generar la Firma de su documento

Calcular:

Page 5: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

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.

Esquema que resume el funcionamiento del algoritmo:

Imagen obtenida de http://es.calameo.com/read/000578884c567a67a7b98.

PROBLEMAS PRINCIPALES

El DSA (Digital Signature Algorithm o Algoritmo Estándar de Firmado) es el algoritmo de

firmado digital incluido en el DSS (Digital Signature Standard o Estándar de Firmas Digitales)

del NIST Norteamericano. La elección de este algoritmo como estándar de firmado generó

multitud de críticas: se pierde flexibilidad respecto al RSA (que además, ya era un estándar),

la verificación de firmas es lenta, el proceso de elección fue poco claro y la versión original

empleaba claves que lo hacían poco seguro.

El algoritmo es más rápido para generar la firma que para validarla, al revés de lo que

sucede con el RSA. Emplea claves de 1024 bits (originalmente eran 512 bits, pero se

aumentó por falta de seguridad).

No se conocen ataques eficientes contra este algoritmo, sólo existen problemas con un

conjunto de números primos, pero son fácilmente evitables si se siguen los sistemas

adecuados de generación de claves

Diferencias de tiempos entre RSA Y DSA

Algoritm Generación de llaves * Firmado * 100 Verificación*100(ms.

Page 6: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

o 1(ms.) (ms.) )

RSA 512 544.61 915 160

RSA 1024 1120.46 4188 263

DSA 512 6.62 634 988

DSA 1024 17.87 1775 3397

DESVENTAJAS

● Emplea una clave demasiado corta, lo cual hace que con el avance actual de los ordenadores,

los ataques por la fuerza bruta se puedan llevar a cabo.

● Se requiere más tiempo de cómputo que el RSA.

APLICACIÓN 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 una cadena de Bits. 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

SEGURIDAD EN JAVA CON DSA

El API de seguridad está incluido en Java API en la forma del paquete java.security. Este

paquete provee dos API, uno para los usuarios de los algoritmos de seguridad y otro para

implementadores o proveedores de estos algoritmos.

En los últimos 50 años los matemáticos y los científicos de la computación han desarrollado

algoritmos que aseguran la integridad de los datos y que permiten hacer firmas digitales. El

paquete java.security contiene implementaciones para muchos de estos algoritmos.

Page 7: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

El API para usuarios está diseñado para que los distintos algoritmos criptográficos sean

utilizados en una aplicación, sin tener que preocuparnos por la manera en la que éstos han

sido implementados. Lo único que se necesita saber es el nombre del algoritmo. Una

compañía o algún programador puede añadir sus propias implementaciones de los

algoritmos usando la interfaz Provider.

En general el API de seguridad incluye interfaces para hacer manejo de identidades, para

utilizar firmas digitales y para encriptamiento de datos.

En caso de la certificación y la autentificación son usadas para proteger el acceso a los

recursos, asegurándose de que sólo aquellos autorizados pueden hacer uso de ellos.

También son usadas para que tengamos la certeza de que algún mensaje que recibimos

viene de quien esperamos. A cada entidad (persona, servidor, agente) se le otorga algún tipo

de certificación sobre de su identidad o sobre su membresía a algún grupo en particular.

Cada entidad tiene que proporcionar este certificado para autentificar su identidad y poder

hacer uso de los recursos. Cuando un mensaje es autenticado debemos saber que el

mensaje proviene de quien esperamos y que el mensaje no ha sido alterado.

La manera en la que se firma un mensaje es utilizando la criptografía de llave pública. El

paquete de seguridad de Java tiene incluido al algoritmo DSA (Digital Signature Algorithm)

que se basa en el uso de esta criptografía. Otro algoritmo conocido es RSA (inventado por

Rivest, Shamir y Adleman), para utilizar este algoritmo en Java es necesario comprarlo.

Para que DSA funcione es necesario realizar tres pasos:

● Generar un par de llaves

● Firmar el mensaje

● Verificar la firma

Para generar un par de llaves se utiliza un objeto del tipo KeyPairGenerator. Con la clase

Signature se genera una firma digital y se verifica la identidad de un agente remoto que esté

mandando datos; esta clase utiliza pares de llaves pública y privada para generar y verificar

las firmas.

IMPLEMENTACIÓN DEL DSA

Page 8: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

La implementación software de DSA sobre una SPARC II permite firmar 512 bits en 0’20

segundos, y verificar la firma en 0’35 segundos. Las implementaciones reales del DSA se

pueden acelerar realizando algunos cálculos previos. Puesto que el valor r no depende del

mensaje, se puede crear una cadena de valores aleatorios k, y después recalcular el valor de

r para cada uno de ellos, y los valores k − 1. Después, cuando se tenga un mensaje

determinado, basta con calcular el valor de s para un r y k − 1 determinado.

SEGURIDAD DEL DSA

El algoritmo DSA no es lo suficientemente seguro si sólo se utilizan 512 bits; si lo es, sin

embargo, cuando se utilizan 1024 bits (todo esto según la opinión de la NSA). Se conocen

los siguientes problemas:

• Problemas con k. Dado que se necesita un nuevo valor de k para cada firma, se debe

utilizar un generador aleatorio, que puede repetir valores de k. Si un oyente detecta dos

mensajes firmados con el mismo valor de k, puede recuperar la clave privada x.

• Problemas con el módulo común. En muchas implementaciones reales del DSA se

comparte un módulo común (p y q) entre todos los usuarios. Esto puede facilitar las tareas de

análisis

CONCLUSIONES

Este algoritmo es uno de los utilizados para poder realizar las firmas digitales, este algoritmo, tal vez

es uno de los más importantes, ya que, como sabemos en un futuro ya absolutamente todo será

digital, además de que esta firma nos ayuda para poder tener seriedad en los documentos y a su vez

una seguridad para poder saber quien es quien envía los mensajes, esto es que se le da una

identidad a la persona y se asegura la integridad de los mensajes.

La firma digital hoy en día es esencial para verificar la identidad del emisor o la entidad que envía un

mensaje a través de internet. Dichas firmas son protegidas por medio de algoritmos criptográficos tal

como lo es el DSA. Son representadas como caracteres o dígitos binarios lo cual permite que sean

confiables y seguros. La característica que hace seguro a este algoritmo es la utilización de llaves.

Page 9: VC4NM73-EQ#6-DSA

INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS

INTEGRANTES: Apolinar Crisóstomo Jessica

Camacho Flores Sarahí Montserrat Hernández González Ivonne Valeria Coordinador de equipo Lozada Pérez Yareli Guadalupe

TEMAS: ALGORITMO DSA FECHA DE EXPOSICIÓN: 20 DE NOVIEMBRE DE 2013

Actualmente este algoritmo es utilizado para generar firmas digitales al utilizar el correo electrónico,

realizando transferencias bancarias, en el envío de mensajes, al adquirir distribuciones de software,

en almacenamiento de datos y generalmente en cualquier aplicación que requiera asegurar la

integridad y originalidad de los datos.

En la actualidad, la protección de los datos se ha vuelto indispensable, debido al gran

crecimiento de los sistemas informáticos y para ello hay técnicas que nos ayudan a proteger

los datos sensibles, como es el DSA que es un algoritmo siméticro que nos permite utilizar

llaves públicas y privadas para mantener los datos íntegros y seguros, también nos ayuda a

la generación de firmas digitales, para poder autentificar a personas o documentos legales.

Otra característica más es que nos ayuda a incrementar nuestra seguridad.

Hoy en día se ha vuelto fundamental adoptar medidas de seguridad para proteger nuestros

datos y para ello se hace uso de varias técnicas y una de ellas es la firma digital, la cual sirve

para identificar que el remitente o usuario es quien dice ser, para realizar la firma digital se

hace uso de los algoritmos de firma digital como lo son el DSA que es un algoritmo que se ha

establecido como estándar, cabe aclarar que cada opción de algoritmo tiene sus

vulnerabilidades y además estos tienen que ir mejorando ya que con el surgimiento de

nuevos avances tecnológicos van surgiendo máquinas que pueden facilitar el descubrimiento

del funcionamiento de estos algoritmos.

BIBLIOGRAFÍA

http://es.scribd.com/doc/98896469/DSA-PTT-20056312

http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/5-criptografia-

asimetrica-o-de-clave-publica/56-firmas-digitales/562-dsa-digital-signature-algorithm

http://guimi.net/monograficos/G-Redes_de_comunicaciones/G-RCnode60.html

http://www.mcc.unam.mx/~cursos/Algoritmos/javaDC99-1/resumen5.html

http://cala.unex.es/cala/epistemowikia/index.php?title=Criptografia#Algoritmo_DSA