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.
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.
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
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:
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.
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.
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
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.
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