Firma Digital de Documentos - Universidad de Buenos Aires

Anuncio
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Firma Digital de Documentos
Realizado por
Lisandro Dorfman [71299] [[email protected]]
Ariel Pablo Topasso [72064] [[email protected]]
Primer Cuatrimestre de 1998
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Índice General
Índice Temático
Índice General _________________________________________________________ 2
Índice Temático _____________________________________________________________ 2
Índice de Figuras y Tablas ____________________________________________________ 4
Prefacio_______________________________________________________________ 5
Introducción Teórica_______________________________________________________________
Implementación de un Esquema de Firma Digital ________________________________________
Implementaciones de la Firma Digital por medio de Biometric Tokens _______________________
Visión Legal en el Mundo: __________________________________________________________
5
5
5
5
Introducción teórica_____________________________________________________ 6
Firma de documentos utilizando criptosistemas simétricos y una autoridad certificante _ 7
Firma de documentos utilizando criptosistemas de clave pública ____________________ 8
Generalidades – Inconvenientes Esenciales ______________________________________ 9
Formalización ______________________________________________________________ 9
RSA___________________________________________________________________________ 10
MD5 __________________________________________________________________________ 11
El problema del almacenamiento de las claves privadas ___________________________ 13
DES___________________________________________________________________________
IDEA__________________________________________________________________________
Modos de funcionamiento de un algoritmo de cifrado por bloques __________________________
ECB ________________________________________________________________________
CBC ________________________________________________________________________
CFB_________________________________________________________________________
OFB_________________________________________________________________________
14
15
17
17
18
18
19
Implementación de un Esquema de Firma Digital____________________________ 20
Generalidades _____________________________________________________________ 20
Diagramas de Flujo _________________________________________________________ 21
Programa Principal _____________________________________________________________
Secuencia de Firmado___________________________________________________________
Generación de Claves para RSA___________________________________________________
Almacenamiento en disco de la Clave Pública ________________________________________
Aplicación de la Función de Hash _________________________________________________
Cifrado del resultado del Hash – Adjuntar firma al Mensaje _____________________________
Proceso de Verificación de Firma__________________________________________________
21
21
21
22
22
22
23
Código Fuente Implementado ________________________________________________ 24
Declaraciones principales e inicialización _____________________________________________ 24
MD5 __________________________________________________________________________ 25
RSA___________________________________________________________________________ 30
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 2 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Funciones Accesorias _____________________________________________________________ 32
Implementaciones de la Firma Digital por medio de Biometric Tokens ___________ 37
"Biometric Token": Identidad Biométrica ______________________________________ 37
Sistemas de Biomediciones Físico/Anatómicas: __________________________________ 39
Escaneo de Iris:__________________________________________________________________
Análisis de los patrones de iris ____________________________________________________
Perfil Tecnológico del Reconocimiento del Iris _______________________________________
Reconocimiento facial por termografía _______________________________________________
Características de la tecnología____________________________________________________
Reconocimiento facial por morfografía _______________________________________________
Proceso de reconocimiento _______________________________________________________
Proceso de identificación ________________________________________________________
Palma/mano ____________________________________________________________________
Imagen de huellas digitales_________________________________________________________
Proceso de reconocimiento _______________________________________________________
39
40
40
42
42
43
43
43
44
44
44
Sistemas de Biomediciones Físicas/Conducta ____________________________________ 45
Reconocimiento de voz____________________________________________________________ 45
Cualidades de la Verificación Vocal________________________________________________ 45
Identificación de firma ____________________________________________________________ 46
Visión Legal en el Mundo _______________________________________________ 47
Análisis etimológico de la palabra "firmar"_____________________________________ 47
Definición de términos concernientes al vocabulario de Firma Digital estrictamente desde
el punto de vista legislativo ___________________________________________________ 48
Anexo I ________________________________________________________________________ 48
Anexo II _______________________________________________________________________ 50
Planteo de la situación legislativa mundial actual referente a la Firma Digital ________ 51
Posibles soluciones a implementar ___________________________________________________ 52
Síntesis de la normativa aplicada a la firma digital de documentación, focalizándose la
misma en el decreto 427/98 de la República Argentina y el proyecto de Ley de Firma
Digital de Alemania _________________________________________________________ 53
Decreto Nro. 427 ________________________________________________________________
Anexo I: Infraestructura de Firma Digital para el Sector Público Nacional ____________________
Organismo Licenciante __________________________________________________________
Organismo Auditante ___________________________________________________________
Autoridad Certificante Licenciada _________________________________________________
Suscriptor De Certificado De Clave Pública__________________________________________
Certificados de Clave Pública_____________________________________________________
Condiciones de Validez del Certificado de Clave Pública _______________________________
Borrador del proyecto de ley de Firma Digital Alemana:__________________________________
Reglamentación _______________________________________________________________
54
55
55
56
56
58
58
59
59
60
Bibliografía___________________________________________________________ 63
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 3 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Índice de Figuras y Tablas
Tabla 1 – Factorización utilizando el algoritmo “Special Number Field Sieve”____________________
Fig. 1 - MD5 ________________________________________________________________________
Fig. 2 - DES ________________________________________________________________________
Fig. 3 - IDEA _______________________________________________________________________
Fig. 4 - CBC con tamaño de bloque = tamaño unidad de datos ________________________________
Fig. 5 - CFB con tamaño de bloque = tamaño unidad de datos_________________________________
Fig. 6 - OFB con tamaño de bloque = tamaño unidad de datos ________________________________
Fig. 7 - Partes constitutivas del Ojo ______________________________________________________
Fig. 8 - Patrón de Iris tomado a 50 cm ___________________________________________________
Fig. 9 - Iris y su codificación ___________________________________________________________
Fig. 10 - Sistema de reconocimiento por altavoz ____________________________________________
Tabla 2 – Certificado de Clave Pública ___________________________________________________
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
11
12
15
17
18
19
19
39
39
40
45
58
Página 4 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Prefacio
El tema que se desarrolla es el de Firma Digital o Firma Electrónica. La investigación
respecto de este tema abarca una larga serie de ítems que se dividen en 4 subtemas para
facilitar su mejor análisis y entendimiento:
i.
ii.
iii.
iv.
Introducción teórica
Implementación de un Esquema de Firma Digital
Implementaciones de la Firma Digital por medio de Biometric Tokens
Visión legal en el mundo
A continuación se describe brevemente cada uno de estos subtemas, para orientar al lector
respecto del enfoque adoptado en el tema bajo análisis.
Introducción Teórica
Se definen los términos usados mas comúnmente en la temática de Firma Digital, se
analizan brevemente los protocolos clásicos, y en detalle aquellos de aplicación práctica. Son
descriptos los algoritmos necesarios para su implementación. Se analizan los problemas
fundamentales encontrados al pasar de la teoría a la práctica.
Implementación de un Esquema de Firma Digital
Sobre la base teórica previamente descripta, se procede a la implementación de un
esquema sencillo de firma digital, para lo cual se utiliza el lenguaje Visual Basic. Son
implementados en particular, los algoritmos MD5 (función de hash) y RSA (criptosistema de
clave pública). Se realiza un programa de demostración que guía al usuario paso a paso a través
de las distintas etapas involucradas en el esquema de firma implementado.
Implementaciones de la Firma Digital por medio de Biometric Tokens
Se definen los “Biometric Tokens” y sus características principales; se relacionan con el
tema bajo estudio, la Firma Digital, y se describen aplicaciones de hardware que se
complementan para la autenticación e identificación de una persona (escaneo de retina,
reconocimiento facial, huellas dactilares, etc.)
Visión Legal en el Mundo:
Se realiza un análisis etimológico de la palabra "firmar”, se definen términos
concernientes al vocabulario de Firma Digital estrictamente desde el punto de vista legislativo; se
plantea la situación legislativa mundial actual referente a la Firma Digital (situación actual,
posibles soluciones a implementar); se analiza la normativa aplicada a la firma digital de
documentación, focalizándose el mismo en el proyecto de ley de Firma Digital de Alemania y el
decreto Nro. 427/98 de la República Argentina
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 5 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Introducción teórica
Se describen sucintamente las motivaciones, características principales, y algoritmos
utilizados actualmente en el área de la criptografía orientada a la obtención de firmas digitales;
seguimos los lineamientos generales de [Schneier, 1996].
De un análisis superficial del uso de la firma (clásica) en nuestra organización social y
jurídica actual, destacamos rápidamente los siguientes aspectos esenciales (e ideales) que la
caracterizan, a saber,
•
•
•
•
•
La firma tiene carácter de auténtica: convence a quien recibe un documento firmado
de que el firmante ha deliberadamente (esto es, con intención) firmado el
documento.
La firma no es falsificable: es prueba de que sólo el firmante, y no otra persona, ha
firmado el documento.
La firma no es reusable: es parte del documento; no es susceptible de ser trasladada
a otro documento.
El documento firmado es inalterable; una vez firmado, el documento no puede ser
alterado.
La firma no puede ser repudiada: la persona firmante no puede declamar el no haber
efectuado la firma.
En la realidad, es claro que ninguna de las características mencionadas anteriormente
se cumple estrictamente; de cualquier modo, el objetivo para quien diseña esquemas de firmado
digital será siempre lograr una solución cuyas características se aproximen tanto como sea
posible a aquellas del objeto ideal.
Ahora bien, al intentar un primer acercamiento al problema de la posible implementación de
estos esquemas en un medio informático, notamos que,
•
•
Es muy sencillo en general copiar archivos utilizando una computadora.
Es muy sencillo en general modificar documentos utilizando una computadora,
agregando, quitando, o editando secciones del mismo.
Esto quita sentido al uso de la solución trivial: adosar una imagen de la firma manuscrita
al documento en cuestión.
Vamos a proponer dos esquemas de firmado digital de documentos, basados en un caso
en técnicas que utilizan criptografía simétrica, y en el otro, en criptografía de clave pública.
Recordamos brevemente que,
Criptografía Simétrica: es aquella en la cuál es necesario establecer un única clave, secreta,
convenida entre los dos usuarios del canal de comunicación. Por cada par de usuarios es
necesaria una clave diferente; el “valor” de la clave se torna tan alto como el de la información
que se encripta, ya que de ser descubierta la clave, lo será también toda la información
intercambiada.
Criptografía de clave pública: se caracteriza por requerir, en forma independiente para cada
usuario (podrán ser dos o más, esto es indistinto), dos claves: una clave secreta, y una clave
privada. Se presupone que es computacionalmente imposible obtener (léase calcular), a partir de
la clave pública, a la clave secreta. Conceptualmente, cualquier persona que posea la clave
pública podrá encriptar mensajes utilizando este esquema, pero únicamente los podrá
desencriptar aquella persona que posea la clave privada correspondiente.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 6 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Firma de documentos utilizando criptosistemas simétricos y una autoridad
certificante
Identificaremos, tal como es la práctica usual en la bibliografía, a dos usuarios, Alice:
usuario que posee un documento y desea firmarlo digitalmente, y Bob: usuario que recibirá el
documento firmado (y por lo tanto deseará “tener la seguridad” de que el texto ha sido generado
por Alice); necesitaremos también a una tercera persona, que denominaremos Trent: representa
a la autoridad certificante (a veces llamada trusted arbitrator); Trent puede, por hipótesis,
comunicarse con Alice y con Bob; comparte una clave secreta KA con Alice, y KB con Bob; estas
claves (a utilizar en el criptosistema simétrico) son establecidas previamente al inicio del
protocolo que a continuación será descripto.
⇒ Alice encripta su mensaje para Bob utilizando KA y lo envía a Trent
⇒ Trent desencripta el mensaje utilizando KA
⇒ Trent crea un nuevo mensaje, del cuál formarán parte el mensaje original (en
dos versiones: desencriptado, y encriptado con KA), y una certificación de que el
mensaje ha sido enviado por Alice; luego encriptará al nuevo mensaje utilizando
la clave KB
⇒ Trent enviará el nuevo mensaje a Bob
⇒ Bob desencriptará el mensaje recibido utilizando KB; él podrá leer el mensaje
original de Alice y la confirmación de Trent afirmando que el mensaje fue
originado por Alice
Es posible ahora analizar al protocolo en función de las características ideales buscadas
en un esquema de firma digital. Observamos lo siguiente,
•
•
•
•
•
La firma es auténtica: esto se basa en la confianza que depositamos en Trent, la
autoridad certificante; es claro que si surgen problemas con dicha autoridad, todo el
esquema de firma será puesto en duda. Trent asegura a Bob que el mensaje fue
originado por Alice; en tanto Bob confíe en Trent, y la clave secreta KB sea conocida
únicamente por Trent y por Bob, es posible aceptar este hecho.
La firma no es falsificable: sólo Alice y Trent conocen KA; luego si alguien hubiese
intentado engañar a Trent haciéndose pasar por Alice, hubiese sido detectado en el
paso 2 del protocolo; luego Trent no hubiese emitido su certificado.
La firma no es reusable: si Bob hubiese tratado de tomar el certificado que le entregó
Trent, para adjuntarlo a otro mensaje (falso, supuestamente enviado por Alice hacia
Bob, pero en realidad creado por Bob), Trent (o cualquier otra autoridad certificante)
podría pedir a Bob el mensaje y también el mensaje “original” encriptado por Alice
con KA; luego inmediatamente detectaría el intento de Bob, ya que Bob por hipótesis
no conoce la clave KA, y por lo tanto no puede abrir y modificar el mensaje original
de Alice; sólo Trent puede hacer esto último (aunque supuestamente nunca lo hará).
El documento firmado no podrá ser alterado; ya que si lo fuese, Trent podría probar
que el documento fue alterado, utilizando un mecanismo similar al descripto en el
punto anterior.
Alice no puede repudiar al documento enviado: Trent ha certificado que el
documento fue enviado por Alice, y por hipótesis, los usuarios depositan su
confianza en Trent.
El inconveniente principal del protocolo analizado es el siguiente: cada intercambio de
mensajes requiere la intervención de Trent, la autoridad certificante; esto implica un costo muy
grande en términos de procesamiento y utilización de la red; por otro lado, la seguridad de todo
el esquema de firma dependerá de Trent; él deberá ser completamente seguro e infalible, ya que
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 7 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
poseerá una base de datos con las claves secretas (KA, KB, etc.) de todos los usuarios del
sistema. Esto hace que, si bien el sistema funciona en teoría, en la práctica sea de aplicación
restringida.
Firma de documentos utilizando criptosistemas de clave pública
La idea fundamental aquí es tomar partido de la naturaleza de los criptosistemas de
clave pública para crear un esquema de firma digital. Por hipótesis, todos los usuarios tienen
acceso a las claves públicas; luego para firmar un documento, bastaría en principio con
encriptarlo con la clave privada correspondiente al usuario que lo creó, y distribuirlo: el resto de
los usuarios podrá desencriptarlo, ya que todos poseen la clave pública requerida, pero no
podrán modificarlo, ya que si bien se tiene acceso al texto plano (es decir, sin encriptar), no es
posible, una vez hecha alguna modificación, generar nuevamente el “documento firmado”, ya
que no se cuenta con la clave privada necesaria para llevar esto a cabo. Es claro que podemos
considerar a este esquema como “seguro” en tanto el algoritmo de clave pública subyacente al
mismo lo sea.
El protocolo básico es muy sencillo,
⇒ Alice encripta el documento con su clave privada, “firmando” de ésta forma al
documento.
⇒ Alice envía el documento “firmado” a Bob.
⇒ Bob desencripta el documento con la clave pública de Alice, verificando de ésta
forma la firma.
La ventaja evidente de este protocolo respecto de aquel discutido en la sección anterior,
radica en que no requiere de una autoridad certificante a través de la cual deban circular todos
los mensajes intercambiados entre los usuarios.
A continuación, análogamente a lo hecho antes, se analiza el protocolo en función de las
características ideales buscadas en un esquema de firma digital;
•
•
•
•
•
La firma es auténtica: cuando Bob verifica el mensaje utilizando la clave pública de
Alice, el tiene la “certeza” de que ha sido Alice quien ha producido la firma.
La firma no es falsificable: sólo Alice conoce su clave privada.
La firma no es reusable: la firma es una función del documento y no puede ser
transferida a ningún otro documento.
El documento firmado es inalterable: si sucede cualquier tipo de alteración, el
documento ya no podrá ser verificado utilizando la clave pública de Alice.
La firma no puede ser repudiada: Bob no necesita a Alice para verificar
fehacientemente que la firma pertenece a Alice.
Desde ya, el protocolo mencionado no es infalible: carece aún de un componente
esencial: la noción de la temporalidad; es decir, la asignación de un dado tiempo de vida a la
firma, a contar desde la fecha de emisión; la necesidad es visible claramente si mencionamos
una posible aplicación: la firma digital de cheques: en caso de no poseer una fecha de emisión,
sería trivial la copia digital del documento más la firma (en conjunto), para utilizarlos
nuevamente.
Lamentablemente, los criptosistemas de clave pública utilizados actualmente exigen una
gran capacidad de cálculo, lo cuál torna su uso ineficiente para la firma de documentos de gran
extensión. La solución es simple y elegante; radica en la aplicación de una función de hash,
también conocida como de digesto, que posee la propiedad de, dado un documento de extensión
arbitraria, producir una cadena de bits, de longitud fija (por ejemplo 128 ó 160 bits), que lo
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 8 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
caracterice; particularmente, las funciones de hash empleadas en criptografía tienen las
siguientes propiedades adicionales [Stinson, 1995]
• strongly collision free, es decir, es computacionalmente no factible el poder encontrar
dos mensajes x ≠ x’ tales que hash(x) = hash(x’).
• one way, es decir, dado un resultado obtenido de la función de hash, z, es
computacionalmente no factible el poder encontrar un mensaje x tal que hash(x)=z.
La idea es, dado un documento a firmar, aplicar la función de hash para obtener una
cadena de bits de longitud fija que lo caracterice de manera “casi” unívoca, y luego aplicar el
criptosistema de clave pública a dicha cadena de bits. Por último, la firma estará constituida por
el resultado de la aplicación del criptosistema; se ha logrado así, además, separar a la firma
digital del documento en sí.
Generalidades – Inconvenientes Esenciales
Ambos esquemas revistos adolecen de un inconveniente: nada impide a Alice (usuario
que firma el documento) argumentar que su clave privada ha sido robada y es por lo tanto de
“conocimiento público”; más aún, es posible que Alice misma haga pública su clave con el objeto
de invalidar documentos previamente firmados. Hasta cierto punto, esto puede evitarse utilizando
en el protocolo de firma el concepto temporal mencionado anteriormente, pero siempre existirá
un “gap” temporal gracias al cual Alice podría probar (jurídicamente) que no firmó un documento
cuando en realidad sí lo hizo. Esta es la causa de que se estén investigando (y en algunos casos
utilizando) dispositivos electrónicos a prueba de abusos (tamper-resistant) para el
almacenamiento de claves privadas, de modo que ni aún el dueño de la misma (Alice) conozca
su contenido. En una sección posterior del presente trabajo se describen medios no
convencionales de firma que permiten obtener la clave privada (o su equivalente, según sea el
algoritmo) a partir de características personales, como las huellas dactilares, la retina ocular, etc.
Otro problema citado profusamente en la bibliografía es el concerniente a la
distribución de claves públicas; la forma trivial consiste en organizar una base de datos de
acceso público con las claves, pero aquí surge un inconveniente: qué sucede si una tercera
persona (llamémosla Mallory) tiene la posibilidad de modificar la clave pública de alguno de los
usuarios, sustituyéndola por la propia? Tendrá la posibilidad de firmar arbitrariamente
documentos simulando ser Alice, ya que Bob, al realizar la verificación de la firma del
documento, será provisto (por la base de datos de acceso público) con la clave pública de
Mallory (que había sustituido a la clave pública original de Alice). Una posible solución a este
inconveniente, utilizada en la práctica, está dada por el uso de una autoridad certificante
(también conocido como KDC, key distribution center), que será la encargada de distribuir las
claves públicas de los usuarios del sistema, pero entregando, junto con cada clave pública, un
certificado de validez de la misma, que consiste simplemente en su propia firma del “documento
clave pública” que está entregando; se presupone que todos los usuarios poseen la clave pública
del KDC, de modo que podrán a su vez verificar la autenticidad de la clave pública que éste les
envía. Desde ya, es posible que Mallory modifique la clave pública del KDC que posee por
ejemplo Alice, si bien esto le sería más dificultoso que atacar a la base de datos pública. En la
práctica, por ejemplo, encontramos que el programa Microsoft Internet Explorer 4.02, que
soporta criptografía de clave pública, tiene incluido, en su código interno, la clave pública
(denominada root key) del KDC constituido por la firma estadounidense Verisign, Inc.
Formalización
Formalmente, siguiendo a [Stinson, 1995], podemos decir que un esquema de firma
digital es un 5-upla (P,A,K,S,V), en donde se satisfacen las siguientes condiciones:
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 9 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
•
•
•
•
P es el conjunto finito de todos los posibles mensajes
A es el conjunto finito de todas las posibles firmas
K, el espacio de claves, es un conjunto finito con todas las posibles claves
para cada k ∈ K, hay un algoritmo de firmado sigK ∈ S, y un algoritmo de verificación
correspondiente, verk ∈ V. Cada uno de los sigk:P → A y verk:PxA → {verdadero,
falso}, son funciones tales que la siguiente ecuación se satisface para cada mensaje
x ∈ P y para cada firma y ∈ A:
verdadero sii y = sig (x )
ver (x, y ) = 
 falso sii y ≠ sig (x )
Según este esquema, es claro que la función ver() deberá ser hecha pública, y la función
sig() privada. También deberá ser computacionalmente no factible la falsificación de la firma;
esto es, que dado un mensaje x, no le sea posible a una persona que no posea la función sig()
realizar la firma (aunque dicha persona posea la función ver()). De aquí inferimos que los
esquemas clásicos criptografía de clave pública se “prestan” en forma natural para aplicaciones
de firma digital.
RSA
Un caso frecuentemente utilizado en la práctica, y también implementado en el presente
trabajo, es la construcción del esquema de firma digital sobre el algoritmo de clave pública RSA
(por Rivest-Shamir-Adleman, sus creadores), donde
Sea n=pq, donde p y q son primos. Sea P=A=Zn, y definimos
K={(n,p,q,a,b): n=pq, p, q primos, ab≡1 mod(φ(n))}
Los valores n y b constituirán la clave pública, y los valores p, q, a a la clave secreta.
Para K definimos:
sigK(x)=xa mod n
verK(x)= verdadero si y sólo si x≡yb mod n.
La variable x representa al resultado obtenido de la función de hash aplicada al
documento a firmar; un caso típico es el algoritmo MD5, también implementado en el presente
trabajo; posteriormente será descripto con mayor detalle; otro caso típico es el algoritmo SHA
(Secure Hash Algorithm) que forma parte del esquema de firma DSA (Digital Signature
Algorithm), propuesto por la Agencia Nacional de Seguridad estadounidense como un standard
para firmado digital.
Este algoritmo (RSA) basa su seguridad en la dificultad de realizar la factorización
(descomposición en factores primos) de un número de gran tamaño (a mayor cantidad de
dígitos, mayor seguridad); esto es así ya que es posible ver que si una tercera persona logra
factorizar al número n (que es parte de la clave pública), podrá fácilmente obtener el valor a, ya
que posee al valor b (que también es parte de la clave pública). Luego esta tercera persona
podrá firmar documentos del mismo modo en que lo puede hacer el dueño de la clave secreta.
Si bien no ha sido demostrado matemáticamente en forma rigurosa, se piensa
(conjetura) hoy día que no existe un algoritmo que permita descomponer un número cualquiera
en sus factores primos en un tiempo que varíe menos que exponencialmente con la cantidad de
dígitos del mismo. Decimos que los algoritmos actuales de factorización insumen un tiempo de
cómputo que varía exponencialmente con la cantidad de dígitos d, o según la notación usual son
del tipo O(ed). Luego será necesario trabajar con una longitud de n tal que no sea posible, en un
período de tiempo razonable, con el poder de cálculo actual y el previsto en un futuro cercano,
poder factorizarlo. El algoritmo más rápido conocido actualmente para realizar factorizaciones se
denomina Special Number Field Sieve, y es un derivado (muy, muy lejano) del sencillo y
conocido algoritmo de la Criba de Eratóstenes. Los requerimientos de potencia de cálculo suelen
medirse en una unidad conocida como mips-año; un mips-año es la potencia de cálculo de una
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 10 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
computadora capaz de realizar 1 mips (millón de instrucciones por segundo), trabajando durante
un año. Como referencia, se considera que un microprocesador Pentium de 100MHz es capaz
de realizar, en promedio, 50 mips. La tabla siguiente, actualizada al año 1997, puede servir de
guía al seleccionar el largo de una clave:
Cantidad de bits en el Número
512
768
1024
1280
1536
2048
mips-año requeridos para la factorización
<200
100000
3 107
3 109
2 1011
4 1014
Tabla 1 – Factorización utilizando el algoritmo “ Spec ial N umber Field Sieve”
Un hecho interesante es que, en el año 1994, se logró factorizar por primera vez un
número de 129 dígitos, trabajo para el cual se utilizó el tiempo libre de cientos de computadoras
enlazadas por Internet, durante alrededor de un año; estimaciones sugieren que el poder de
cálculo utilizado fue de sólo el 0.03 por ciento del total que constituyen todas las computadoras
que forman parte de la red de redes Internet (en ese mismo año).
Surge asimismo la necesidad de generar al número n a partir de dos factores primos,
que deberán ser como vimos, de gran longitud. Esencialmente por el mismo motivo por el cual
no es posible descomponer un número muy grande en sus factores primos, tampoco es sencillo
asegurar que un dado número sea o no primo. Es por ello que este problema se ataca con una
estrategia probabilística: se genera un número al azar, y éste se aplica como entrada a un
algoritmo que responde (en el caso del tipo Montecarlo) “no” si el número definitivamente no es
primo, y, para la respuesta “sí”, existe una dada probabilidad de que el número en cuestión sea
realmente primo. Una propiedad interesante de este tipo de algoritmos es que, por medio de
sucesivas aplicaciones del mismo, es posible disminuir la probabilidad de error (la probabilidad
de considerar como primo a un número que en realidad no lo es) tanto como se quiera; desde
ya, a menor probabilidad de error deseada, mayor tiempo de cálculo. Notamos que el problema
de la generación de números primos aleatorios no es menor, si consideramos que se trata de
números de más de 100 dígitos. El problema de la longitud de las claves se retoma en una
sección posterior, al tratar el tema de su almacenamiento.
Observamos finalmente que existen esquemas de firma digital, notablemente el ya
mencionado DSA, que basan su seguridad en otro problema matemático, por ejemplo, en la
dificultad del cálculo de logaritmos discretos sobre campos numéricos finitos; el
criptosistema de clave pública más conocido que aprovecha este hecho se denomina ElGamal
(nombre de su autor), y sobre éste último ha sido construido DSA. Sin embargo, se cree en
general que el problema de la factorización es más intratable que el de la obtención de
logaritmos; si bien en ninguno de los dos casos pueden realizarce afirmaciones rigurosas.
MD5
MD5 procesa el texto de entrada (documento a firmar) en bloques de 512 bits,
subdivididos en 16 subbloques de 32 bits. La salida del algoritmo está dada por cuatro
subbloques de 32 bits, lo que en suma nos da un resultado de 128 bits.
En primer lugar, dado el mensaje, éste es completado (de una manera particular) de
modo que la longitud resultante (en bits) sea múltiplo de 512. Esto se lleva a cabo agregando, al
final del mensaje, una secuencia de bits dada por:
Sea d = 447 – (|mensajeOriginal| mod 512)
Sea l la representación binaria de |mensajeOriginal| mod 64, |l|=64
nuevoMensaje=mensajeOriginal||1||0d||l
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 11 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
dónde la notación |x| se lee “cardinalidad ó longitud de la cadena de bits x”, y el símbolo || implica
concatenación de cadenas; en definitiva, garantizamos que la longitud del mensaje
nuevoMensaje será siempre múltiplo de 512.
Luego se inicializan cuatro variables de 32 bits:
A=0x01234567
B=0x89abcdef
C=0xfedcba98
D=0x76543210
Se describe ahora al loop principal del algoritmo, que se aplicará a cada uno de los
bloques de 512 bits. Las cuatro variables son copiadas en otras cuatro, llamadas
respectivamente a, b, c y d. El loop principal consta de cuatro rounds, muy similares entre sí.
Cada uno de ellos consta de 16 operaciones; éstas consisten en funciones no lineales sobre tres
de las cuatro variables a, b, c y d; el resultado de éstas se adiciona a la cuarta variable;
asimismo se adiciona una constante y el valor del subbloque de texto sobre el que se esté
computando; luego se realiza un desplazamiento hacia la derecha de una cantidad variable de
bits. El resultado de la sumatoria y desplazamiento mencionados será el nuevo valor de la cuarta
variable.
Las funciones no lineales utilizadas están dadas por:
f(x,y,z) = (x And y) Or ((Not x) And z)
g(x,y,z) = (x And z) Or (y And (Not z))
h(x,y,z) = x Xor y Xor z
i(x,y,z) = y Xor (x Or (Not z))
Estas funciones tienen la propiedad matemática de que, si los bits correspondientes de
x, y, y z son independientes y estadísticamente insesgados, entonces cada bit del resultado
tendrá también estas propiedades.
Sea MJ el j-ésimo subbloque del mensaje (0 <= J <= 15), y RotateLeft(x,s) represente un
desplazamiento circular hacia la izquierda de s bits; entonces las cuatro operaciones (una para
cada round) serán
FF(a,b,c,d,Mj,s,ti) = b + RotateLeft( (a + f(b, c, d) + Mj + ti) , s)
GG(a,b,c,d,Mj,s,ti) = b + RotateLeft( (a + g(b, c, d) + Mj + ti) , s)
HH(a,b,c,d,Mj,s,ti) = b + RotateLeft( (a + h(b, c, d) + Mj + ti) , s)
II(a,b,c,d,Mj,s,ti) = b + RotateLeft( (a + i(b, c, d) + Mj + ti) , s).
Fig. 1 - MD5
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 12 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
A modo de ejemplo, transcribimos el código correspondiente al primer round:
Call FF(a, b, c, d, m(0), 7, 3614090360)
Call FF(d, a, b, c, m(1), 12, 3905402710)
Call FF(c, d, a, b, m(2), 17, 606105819)
Call FF(b, c, d, a, m(3), 22, 3250441966)
Call FF(a, b, c, d, m(4), 7, 4118548399)
Call FF(d, a, b, c, m(5), 12, 1200080426)
Call FF(c, d, a, b, m(6), 17, 2821735955)
Call FF(b, c, d, A, m(7), 22, 4249261313)
Call FF(a, b, c, d, m(8), 7, 1770035416)
Call FF(d, a, b, c, m(9), 12, 2336552879)
Call FF(c, d, a, b, m(10), 17, 4294925233)
Call FF(b, c, d, a, m(11), 22, 2304563134)
Call FF(a, b, c, d, m(12), 7, 1804603682)
Call FF(d, a, b, c, m(13), 12, 4254626195)
Call FF(c, d, a, b, m(14), 17, 2792965006)
Call FF(b, c, d, a, m(15), 22, 1236535329)
'*1*
'*2*
'*3*
'*4*
'*5*
'*6*
'*7*
'*8*
'*9*
' * 10 *
' * 11 *
' * 12 *
' * 13 *
' * 14 *
‘ * 15 *
' * 16 *
El código completo correspondiente a la implementación del algoritmo MD5 se encuentra
en la sección Implementación de un Esquema de Firma Digital.
Mencionamos asimismo que existe otro algoritmo muy utilizado en la práctica,
denominado Secure Hash Algorithm (SHA) desarrollado por la National Security Agency (NSA)
estadounidense en base a un antecesor del algoritmo antes descripto (MD4); posee propiedades
similares, siendo su fundamental diferencia respecto a MD5, el que produce como resultado una
cadena de 160 bits, en lugar de 128. Es el algoritmo utilizado por las agencias federales
estadounidenses.
El problema del almacenamiento de las claves privadas
Como mencionamos anteriormente, en al práctica los esquemas de firma digital son
implementados sobre criptosistemas de clave pública; estudiamos también el hecho de que
éstos requieren dos claves, la clave pública y la clave privada. Ahora bien, en general, las claves
que utilizan éstos algoritmos son números enteros con ciertas propiedades (por ejemplo,
cumplen la condición de primalidad en un dado campo finito). Típicamente, para que el
criptosistema de clave pública sea considerado computacionalmente seguro (es decir, que el
algoritmo no pueda ser quebrado con los recursos disponibles en este momento y en un futuro
previsible) se requiere que las claves tengan una longitud, que usualmente se mide en dígitos
binarios, del orden de 700 a 1024 bits, si bien actualmente existen implementaciones que
permiten claves de hasta 4096 bits; para tener una noción más concreta de lo que esto significa,
notamos que aproximadamente, la cantidad de dígitos decimales contenidos en un número de b
dígitos binarios es de
d=
b
log 2 (10 )
,
entonces, para b=700, tendremos 211 dígitos, y para b=4096, 1234 dígitos. Es claro que no será
razonable exigir al usuario la capacidad de recordar la clave; ésta deberá estar almacenada de
alguna manera. Tenemos básicamente tres opciones: la opción trivial es almacenar la clave en
un archivo de del sistema en el que se opera el esquema de firma digital; claramente actuando
de esta manera la seguridad de nuestro sistema estará limitada por cuán difícil le sea a una
persona distinta del usuario el acceso al sistema: si terceras personas tienen acceso a la clave
privada del usuario, carece de sentido en general la utilización del esquema de firma digital.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 13 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Descartada la primera opción, distinguimos las restantes: almacenar la clave en un archivo del
sistema, utilizando un criptosistema convencional de clave simétrica (léase cifrado por
bloques), ó almacenar la clave fuera del sistema. Respecto de ésta última opción, es la elegida
cuando se requieren muy altos niveles de seguridad; en general la clave es almacenada en
smart cards, tarjetas electrónicas construidas de modo tal que
•
•
No es posible desarmarlas en modo alguno para obtener la clave almacenada
(tamper resistant, como mencionamos anteriormente)
Implementan protocolos de autentificación, e incluso el criptosistema de clave
pública completo, en su interior: de ésta manera hacen innecesario que la clave
sea entregada al sistema; es decir, la clave privada del usuario en ningún
momento es comunicada al exterior de la tarjeta.
Sin embargo, esta opción requiere, para un usuario de computadoras personales típicas,
la adición de hardware adicional que permita el uso de las tarjetas. En muchos casos, el nivel de
seguridad requerido no es tan elevado como para requerir el uso de las mismas, y se opta por
almacenar la clave privada dentro del mismo sistema, utilizando para ello un algoritmo de cifrado
por bloques convencional, de modo de encriptar el archivo que contendrá la clave. Repetimos
que éste hecho disminuye el nivel de seguridad del esquema de firma, ya que para quebrarlo
bastará quebrar al archivo encriptado que contiene la clave privada; aún así en muchos casos el
nivel logrado es aceptable; por otra parte siempre será posible almacenar el archivo en cuestión
en disquete, de modo que la seguridad del esquema estará dada ahora, además de por aquella
del criptosistema de clave simétrica, por nuestra capacidad de almacenar el dispositivo
(disquete) en forma segura.
En la práctica, nos encontramos con que se suelen utilizar básicamente dos algoritmos:
DES (o alguna de sus variantes, por ejemplo triple-DES; DES: Data Encryption Standard), e
IDEA (International Data Encryption Algorithm). Si bien internamente están basados en principios
diferentes, ambos tienen la característica de ser algoritmos de cifrado por bloques: dado un
bloque de texto de entrada de cierta longitud, y una clave de cierta longitud, ambos producen el
cifrado correspondiente, de igual longitud a la del texto de entrada.
DES
Las características fundamentales de DES son las siguientes: se trata de un algoritmo de
cifrado por bloques, cada uno de 64 bits de longitud; es un algoritmo simétrico, en el sentido de
que el mismo algoritmo, con la misma clave, es utilizado tanto para la encriptar como para
desencriptar. El largo de la clave es 56 bits (usualmente se expresa a la clave como un número
de 64 bits, pero 8 de éstos han sido pensados para chequeo de paridad, y no son utilizados a lo
largo del algoritmo). Esencialmente, el algoritmo realiza secuencias de permutaciones y
sustituciones sobre el texto a encriptar combinado con la clave; consta de 16 rounds en los
cuales estas operaciones son realizadas. El algoritmo utiliza solo aritmética convencional (cf.
aritmética modular) y operaciones lógicas, sobre enteros de 64 y 32 bits; esto permite eficientes
implementaciones en hardware.
DES trabaja de la siguiente manera: dado un bloque de 64 bits del texto a encriptar, en
primer lugar realiza una permutación inicial sobre el mismo; luego el bloque es partido en dos
mitades, la izquierda y la derecha, de 32 bits cada una. Luego se suceden 16 rounds de
operaciones idénticas, llamadas Función f, en las que los datos son combinados con la clave.
Por último, al terminar el último round, las mitades izquierda y derecha son reunidas, y se realiza
una permutación final.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 14 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Fig. 2 - DES
En cada round, los bits de la clave son desplazados, y luego 48 bits de ésta son
seleccionados. Los 32 bits de la mitad derecha son convertidos, por medio de una permutación
expansiva, en 48; luego éstos son combinados con una versión desplazada de la clave
correspondiente al round en análisis (de 48 bits) utilizando una XOR, y el resultado de esto es
enviado a través de 8 cajas S (simples tablas de permutación), produciendo 32 nuevos bits, y
permutado nuevamente. Las cuatro operaciones mencionadas constituyen lo que denominamos
Función f. La salida de esta función es combinada con la correspondiente a la mitad izquierda
por medio de otra XOR; el resultado de estas operaciones pasará a ser la nueva mitad derecha;
la antigua mitad derecha pasa a ser la nueva mitad izquierda. Todo esto se repetirá 16 veces,
constituyendo a los 16 rounds de DES.
IDEA
Este es un algoritmo de cifrado por bloques, de 64 bits de longitud; la clave que utiliza
es de 128 bits; el mismo algoritmo se utiliza tanto para encriptar como para desencriptar, sin
embargo, la clave es tratada en forma distinta para el cifrado y el descifrado. Los distintos pasos
del algoritmo han sido justificados matemáticamente por sus autores (Xuejia Lai y James
Massey); se basa en el principio de “mezcla de operaciones de distintos grupos algebraicos”.
Tres son los grupos algebraicos mezclados, dados por las operaciones
•
•
•
XOR
16
Suma en módulo 2
16
Multiplicación en módulo 2 +1
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 15 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Estas últimas operaciones (que son las únicas que el algoritmo necesita, es decir, no se
requieren permutaciones) operan sobre subbloques de 16 bits.
Dado un bloque de 64 bits del texto a encriptar, éste es dividido en cuatro subbloques
de 16 bits cada uno: X1, X2, X3, y X4. Éstos últimos serán la entrada al primer round del algoritmo;
en total, se utilizan 8 rounds. En cada round, sobre los cuatro subbloques se aplican XOR,
sumas y multiplicaciones, entre sí y en combinación con seis subclaves de 16 bits cada una.
Entre round y round, el segundo y tercer subbloque son intercambiados. Finalmente, los cuatro
subbloques son combinados con cuatro subclaves en lo que constituye la transformación final.
En cada round, se produce la siguiente secuencia de eventos
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
Multiplicación de X1 con la primer subclave
Suma de X2 con la segunda subclave
Suma de X3 con la tercer subclave
Multiplicación de X4 con la cuarta subclave
XOR de los resultados de 1) y 3)
XOR de los resultados de 2) y 4)
Multiplicación del resultado de 5) con la quinta subclave
Suma de los resultados de 6) y 7)
Multiplicación del resultado de 8) con la sexta subclave
suma de los resultados de 7) y 9)
XOR de los resultados de 1) y 9)
XOR de los resultados de 3) y 9)
XOR de los resultados de 2) y 10)
XOR de los resultados de 4) y 10)
El resultado producido en cada round está dado por 11), 12), 13), y 14), Intercambiando
los valores de 12) y 13) obtendremos los valores cuatro valores de entrada necesarios para el
round siguiente.
Luego del octavo round, se realiza la transformación final,
1)
2)
3)
4)
Multiplicación de X1 y la primer subclave (subclave 1 de la transformación final)
Suma de X2 y la segunda subclave
Suma de X3 y la tercer subclave
Multiplicación de X4 y la cuarta subclave
Por último, los cuatro bloques resultantes vuelven a unirse para formar el bloque de 64
bits de salida.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 16 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Fig. 3 - ID EA
En total, el algoritmo requiere 52 subclaves (seis para cada uno de los ocho rounds, y
cuatro más para la transformación final). Éstas son creadas a partir de la clave original de 128
bits; ésta última es partida en 8 bloques de 16 bits, constituyendo las 6 claves del primer round, y
las dos primeras claves del segundo round; luego la clave original es desplazada 25 bits a la
izquierda en forma circular, de donde se obtienen las 8 subclaves siguientes; luego se realiza un
nuevo desplazamiento, etc.
Para desencriptar, se utilizará el mismo algoritmo, pero con una operación adicional
sobre las subclaves; algunas de ellas deberán ser invertidas (ya sea respecto de la suma o de la
multiplicación) previo al inicio del primer round.
Modos de funcionamiento de un algoritmo de cifrado por bloques
ECB
Dado un algoritmo de cifrado por bloques, el modo más sencillo de utilización estará
dado por, a partir del texto a cifrar partido en bloques, encriptar cada bloque independientemente
de los demás, y todos con la misma clave. Este procedimiento se suele denominar modo ECB
(Electronic CodeBook mode).
En este modo, un bloque de texto dado producirá siempre el mismo resultado
(ciphertext). Luego en teoría es posible crear, de antemano, los ciphertexts correspondientes a
todos los posibles bloques de entrada; siendo el tamaño de bloque fijo, por ejemplo de 64 bits,
64
entonces podremos pre-computar el ciphertext correspondiente a cada uno de los 2 bloques de
texto posibles; recordamos que el ciphertext es función también de la clave → deberemos pre64
56
computar los 2 ciphertexts que corresponden a cada una de las 2 claves posibles. Si bien no
hay dificultades teóricas, en la práctica, actualmente, esto no se lleva a cabo.
El inconveniente fundamental con este modo, es que si un criptanalista (persona
dedicada al análisis de sistemas criptográficos) toma posesión del texto original y el ciphertext
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 17 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
correspondiente a varios mensajes, entonces podrá compilar (parcialmente) una lista de textos y
ciphertexts correspondientes, que podrá aplicar al análisis de nuevos mensajes.
La ventaja fundamental es que este modo es susceptible de ser implementado en
paralelo, es decir, con varios procesadores trabajando simultáneamente sobre distintas partes
del mensaje; esto es ideal para aplicaciones que requieran alta velocidad.
CBC
El concepto que este modo (Cipher Block Chaining) introduce es el de feedback. El
ciphertext que surgió como resultado de encriptar al bloque de texto n, es reintroducido en el
sistema al encriptar el bloque n+1; en otras palabras, cada bloque de ciphertext es usado para
modificar el modo en que será encriptado el bloque siguiente.
En concreto, en este modo, cada bloque de texto es aplicado a la entrada de una función
XOR junto con el ciphertext correspondiente al bloque anterior; y el resultado de la XOR será la
entrada al algoritmo de cifrado. La regla de descifrado es análoga.
La ventaja de este modo es que el cifrado de cada bloque depende de todos los bloques
anteriores: esto prácticamente imposibilita al criptanalista la construcción de una tabla con los
bloques de texto y sus ciphertext correspondientes. Es como si, bloque a bloque, se utilizara una
clave diferente para el algoritmo de cifrado.
El gran inconveniente es el siguiente: si por algún motivo se produce un error en alguno
de los bloques cifrados, y por lo tanto el texto recuperado al descifrar no coincide con el original,
entonces todos los bloques subsiguientes serán descifrados erróneamente; es decir, se produce
una propagación de errores. Esto se debe a la naturaleza realimentada de este modo.
Fig. 4 - CBC c on tamaño de bloque = tamaño unidad de datos
CFB
En el modo CFB (Cipher FeedBack Mode), los datos de entrada pueden ser cifrados
utilizando unidades (léase bloques) más pequeñas que el tamaño de bloque del algoritmo de
cifrado subyacente (DES, IDEA, etc.).
Un algoritmo trabajando en modo CFB opera sobre una cola del mismo tamaño que el
del bloque de entrada al mismo. Inicialmente, dicha cola contiene al vector de inicio, IV. Luego la
cola es aplicada como entrada al algoritmo de cifrado; los bits de la unidad de datos a cifrar son
ingresados a una XOR junto con los bits correspondientes del ciphertext producido (contando a
partir de la izquierda); el resultado, que tendrá el mismo tamaño que la unidad de datos, será la
unidad datos cifrada. Este último valor podrá ahora ser transmitido a través del canal inseguro.
Además requerimos que este ciphertext sea reintroducido en la cola (a partir de la derecha),
previo desplazamiento hacia la izquierda de la misma; el sistema queda ahora preparado para
recibir una nueva unidad de datos, y así siguiendo.
De manera análoga al modo CBC, el texto cifrado producido por el modo CFB para un
dado bloque, dependerá del valor de todos los bloques anteriormente cifrados (notar
nuevamente el concepto de feedback).
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 18 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Fig. 5 - CFB c on tamaño de bloque = tamaño unidad de datos
OFB
El Output FeedBack mode es similar al anteriormente descripto, pero aquí el texto a
cifrar no es introducido a la cola de cifrado; ésta está compuesta únicamente por el bloque
cifrado anteriormente (feedback); la consecuencia fundamental de este proceder es que se evita
la propagación de errores: un error en un bit del ciphertext, producirá, luego del descifrado, un
error de un sólo bit en el texto recuperado.
Para aplicaciones que utilicen firma digital, al no haber limitaciones por ancho de banda
del canal de transmisión (recordemos que la firma posee un tamaño reducido y constante,
independiente del tamaño del mensaje a firmar), ni problemas de ruido, y siendo relativamente
pequeños los textos a cifrar (correspondientes a la clave privada del criptosistema de clave
pública), la utilización de cualquiera de los 3 últimos modos mencionados es, en la práctica,
equivalente.
Fig. 6 - OFB c on tamaño de bloque = tamaño unidad de datos
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 19 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Implementación de un Esquema de Firma Digital
Generalidades
El objeto de ésta sección es mostrar cómo, a partir de los distintos elementos tratados en
la introducción teórica, es posible construir un esquema de firma digital que reúna las
características básicas discutidas.
La implementación ha sido realizada en lenguaje Visual Basic – versión 5.0 Enterprise;
está basada en las implementaciones de los distintos algoritmos analizadas en [Schneier, 1996];
si bien éstas han sido realizadas en lenguaje C, han sido adaptadas en su totalidad para el
presente trabajo. En el caso particular del algoritmo DES, se ha utilizado un componente
ActiveX denominado arDES, difundido en Internet (y creado en Junio del presente año) con
carácter de freeware.
Es necesario destacar que en Internet existen implementaciones de prácticamente la
totalidad de los algoritmos necesarios para implementar un esquema de firma digital, incluyendo
códigos fuente, difundidas como freeware. El inconveniente en nuestro caso es que la totalidad
de esas implementaciones han sido realizadas en C; esto es así sencillamente porque los
algoritmos en cuestión requieren un poder de cálculo muy elevado, sólo conseguible en las
máquinas actuales utilizando C. Pero en particular, para aplicaciones de firma digital, el tiempo
de cálculo no es un factor crítico: en general, los documentos son de un tamaño
comparativamente reducido, y los algoritmos criptográficos se aplican sobre cadenas de texto
pequeñas y de longitud fija (por ejemplo los 128 bits de resultado de la función de hash, o los
1024 bits de una clave secreta). En el peor de los casos, sólo será necesaria una
implementación eficiente de la función de hash, para permitir el uso del esquema con
documentos de gran longitud.
Se ha elegido realizar la implementación en Visual Basic, y no en C, porque el objeto de
la misma es demostrar claramente el funcionamiento del esquema, y no el esquema en sí; es por
ello que el énfasis se ha puesto en la presentación, y no en cuán eficiente son los algoritmos
implementados; en estos términos, la mejor opción para la implementación es Visual Basic. Por
otra parte, en términos prácticos, carece de sentido codificar nuevamente un algoritmo sobre el
cual ya han trabajado una cantidad de especialistas en el tema, y que (particularidad de los
algoritmos criptográficos) se encuentran en Internet en forma gratuita. Por otra parte, estimamos
que en muy poco tiempo más, las implementaciones hechas en C serán portadas a
componentes ActiveX, con lo cuál ya no habrá un costo en tiempo de ejecución al no utilizar C.
En términos generales, el mayor inconveniente que ha surgido al utilizar Visual Basic, es
la poca flexibilidad (alto automatismo) que provee para manejar variables numéricas. Por
ejemplo, si en C definimos dos variables enteras (32 bits en un sistema operativo como Windows
98), y las sumamos almacenando el resultado en otra variable entera no signada, sabemos que
32
el resultado siempre será < 2 ; sin embargo, realizar esto mismo en Visual Basic puede generar
un error de overflow si el resultado de la suma excede 232-1; en C este exceso es ignorado,
tomando como resultado sólo los 32 bits menos significativos de la operación. Algo análogo
sucede con la multiplicación; VB generará errores por overflow, mientras que C los ignorará.
Normalmente, el detectar estos errores de overflow es de utilidad, pero en el caso particular de
los algoritmos criptográficos, esto no es así: algoritmos como IDEA se basan en esta
particularidad (mas allá del lenguaje C, ésta es una particularidad de los microprocesadores). Por
este motivo se notará que se ha hecho uso (durante la codificación), en cálculos intermedios (por
ejemplo en la implementación de MD5), de variables de 64 bits que finalmente son convertidas a
módulo 232.
A continuación, los diagramas de flujo correspondientes a los distintos módulos de la
implementación.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 20 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Diagramas de Flujo
Programa Principal
Formulario
Principal
Inicialización
Comenzar
Esquema
de Firma
Acerca
De....
Selección
de comando
Terminar
Programa
Secuencia de Firmado
Comienzo
Esquema de
Firma
Generación de
claves pública y
privada
Publicación de clave
pública, almacenamiento en
disco de clave privada
utilizando DES
Fin proceso
de Firma
Agregado de
Firma a Mensaje
Original
Aplicación de MD5
al Mensaje a
Firmar
Cifrado de clave
del hash con RSA
Generación de Claves para RSA
Comienzo
Proceso de
Generación
Generación de
números primos
aleatorios (p y q)
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Cálculo de n y
φ(n); generación
de d
Update de
Formulario
Paso #1
Cálculo de e
utilizando el Algoritmo
Extendido de
Euclides
Página 21 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Almacenamiento en disco de la Clave Pública
Inicialización
Formulario
Paso #2
Ingreso de
Pass-Phrase
Creación de Objeto
DES – Seteo de clave
– Cifrado de clave
pública
Almacenamiento en
Disco de texto cifrado
Liberar Objeto DES
Finalizar Paso #2
Aplicación de la Función de Hash
Inicialización
Algoritmo
MD5
Inicialización
Formulario
Paso #4
Llevar longitud de
mensaje a múltiplo de
512 bits, según
especifiaciones de MD5
Recuperar de Disco
el texto cifrado
Encriptar resultado
del hash con RSA
Adjuntar firma a
Mensaje Original
Aplicar los cuatro
rounds del algoritmo
a cada bloque de
texto
Ingreso de
Pass-Phrase
Devolver
resultado
Hash
Creación de Objeto
DES – Seteo de clave
– Descifrado de clave
privada
Liberar Objeto DES
Finalizar Paso #4
Comenzar Paso #5
Cifrado del resultado del Hash – Adjuntar firma al Mensaje
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 22 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Proceso de Verificación de Firma
Comienzo
Proceso de
Verificación
Separar Mensaje
de Firma
Mensaje
Firmado?
Descifrar Hash
almacenado en
Firma; Calcular
Hash Mensaje
Sí
No
Advertencia:
Se ha
detectado
alteración
No
Son
Iguales
?
Sí
Información:
Se ha verificado
la integridad del
Mensaje
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 23 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Código Fuente Implementado
Declaraciones principales e inicialización
Option Explicit
'Declaraciones y funciones varias del programa de demostración
'de Firma Digital
Public RSAclavePublica As Long
Public RSAclavePrivada As Long
Public RSAmodulo As Long
Public RSAresultado(1 To 32) As Long
Public MD5Resultado As String
Public DESClave As String
Public cipherTextDES As String
Public Mensaje As String
Public TextoPorDefault As String
Public HeaderFirma As String
Public Sub Main()
'Secuencia de inicialización del programa
ChDir App.Path ' cambiamos de directorio, moviéndonos al directorio de la aplicación.
Randomize
'por la generación de números aleatorios {1234, 4to numero)
HeaderFirma = "[||]" & Chr(13) & Chr(10) & "______________" & Chr(13) & Chr(10) & "FIRMA DIGITAL:"
& Chr(13) & Chr(10) & "|[]|"
TextoPorDefault = "Este es el texto que será firmado digitalmente." & Chr(13) & Chr(10)
frmFirma.Show
End Sub
Public Function GenerarClaveParaDES(passPhrase As String) As String
'Devuelve una cadena de 8 caracteres (64 bits) que son generados
'a partir de la passphrase pasada como parametro utilizando
'la función de hash md5.
Dim resultadoMD5 As String
Dim primeraParte As String, segundaParte As String
Dim claveDES As String
Dim i As Integer, resultXOR As String, valorByte As Byte
'DES requiere una password de 64 bits, a partir de los cuales
'crea su propia password de 56 bits.
' -> primero hasheo la passphrase, tomo la XOR de los primeros
' 64 bits con los segundos, y esa será mi password para DES.
resultadoMD5 = MD5HashString(passPhrase)
'devuelve 128 bits -> 32 caracteres
primeraParte = HexaABinario(Left(resultadoMD5, 16))
segundaParte = HexaABinario(Right(resultadoMD5, 16))
For i = 1 To 64
resultXOR = resultXOR & Trim(Str(Val(Mid(primeraParte, i, 1)) Xor Val(Mid(segundaParte, i, 1))))
Next i
'con la cadena binaria de 64 bits, formo el equivalente ascii (8 caracteres)
'que utilizara el algoritmo DES
For i = 0 To 7
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 24 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
valorByte = CByte(BinarioADecimal(Mid(resultXOR, i * 8 + 1, 8), 8))
claveDES = claveDES & Chr(valorByte)
Next i
GenerarClaveParaDES = claveDES
End Function
Public Sub AvisoCalculo(formulario As Form, calculando As Boolean)
'enciende o apaga el aviso de 'calculando...'
With formulario
If calculando Then
.lblCalculando.Visible = True
Else
.lblCalculando.Visible = False
End If
.lblCalculando.Refresh
End With
End Sub
MD5
Option Explicit
'
'Implementación de la función de Hash MD5
'Según Bruce Schneier, Applied Cryptography, 2nd Ed., Sec. 24.5
'Ariel Pablo Topasso - 1998
'
'Uses: biblioteca de funciones Matemáticas
Public Function MD5HashString(plaintext As String) As String
'Devuelve 128 bits (una cadena con la representación hexadecimal correspondiente)
'con el valor del hash correspondiente a la cadena m.
'La cadena plaintext SERA MODIFICADA por esta funcion.
Dim A_ As Currency, B_ As Currency, C_ As Currency, D_ As Currency
Dim A As Currency, b As Currency, C As Currency, d As Currency
'utilizo el tipo currency (64 bits) y no el long (32) ya que este
'último es signado en VisualBasic y esto genera inconvenientes al trabajar
'en módulo 2^32, que es como esta pensado originariamente este algoritmo.
Dim cantBloques As Long
Dim i As Long, m(0 To 15) As Currency 'm representa un bloque de 512 bits
Dim j As Integer
Inicializar A_, B_, C_, D_
'hago un padding del plaintext, de modo que su longitud siempre sera
'multiplo de 512 bits.
padPlaintextString plaintext
cantBloques = Len(plaintext) / 64 '64 bytes son 512 bits
'loop principal
For i = 1 To cantBloques
For j = 0 To 15 'cargo el bloque en m.
m(j) = StringADecimal(Mid(plaintext, i * 64 - 63 + 4 * j, 4), 32)
Next j
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 25 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
A = A_
b = B_
C = C_
d = D_
Round1 A, b, C, d, m
Round2 A, b, C, d, m
Round3 A, b, C, d, m
Round4 A, b, C, d, m
A_ = Mod32(A_ + A)
B_ = Mod32(B_ + b)
C_ = Mod32(C_ + C)
D_ = Mod32(D_ + d)
Next i
'fin loop principal
'au revoir
MD5HashString = DecimalAHexa(A_, 32, True) & DecimalAHexa(B_, 32, True) & DecimalAHexa(C_, 32,
True) & DecimalAHexa(D_, 32, True)
End Function
Private Sub Inicializar(A_ As Currency, B_ As Currency, C_ As Currency, D_ As Currency)
'Carga los valores iniciales (números mágicos)
'Nota: no puedo cargar los número directamente en hexadecimal (&Hxxx) ya que
'
vBasic toma el bit más significativo como bit de signo.
A_ = 19088743
B_ = 2309737967@
C_ = 4275878552@
D_ = 1985229328@
End Sub
Private Function StringADecimal(cadena As String, largoPalabra As Integer) As Currency
'Devuelve un entero (modulo 2^largoPalabra) que representa a la cadena
'Pre: len(cadena)=largoPalabra/8
Dim tempDec As Currency
Dim cantBytes As Integer, i As Integer
cantBytes = largoPalabra / 8
For i = 1 To cantBytes
tempDec = tempDec + Asc(Mid(cadena, i, 1)) * 2 ^ (cantBytes - i)
Next i
StringADecimal = tempDec
End Function
Private Static Function Mod32(numero As Currency) As Currency
'Devuelve el numero pasado como parametro en módulo 2^32.
'Implemento esto porque la función intrínseca de Vbasic "mod" trabaja
'únicamente con números <= 2^31.
Do While numero >= 4294967296@
numero = numero - 4294967296@
Loop
Do While numero < 0
numero = numero + 4294967296@
Loop
Mod32 = numero
End Function
Private Sub padPlaintextString(plaintext As String)
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 26 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
'Nota: el tamaño de una variable string esta limitado
' por aprox. +2MB, y la funcion len() devuelve un long (32 bits) con la cantidad de bytes.
' -> para variables string, la longitud (en bits) siempre sera múltiplo de 8.
' Basado en Stinson, Cryptography, theory and practice, p258
Dim longitud As Long, d As Long, i As Integer
Dim tempStr As String, longBytes_tempstr As Integer
Dim tempStrAscii As String
longitud = Len(plaintext) * 8 'longitud en bits del mensaje
d = 447 - (longitud Mod 512) 'dá un ("múltiplo de 8" menos 1)
tempStr = "1"
For i = 1 To d
tempStr = tempStr & "0"
Next i
tempStr = tempStr & DecimalABinario(longitud, 64, False)
'la longitud de tempstr es múltiplo de 8; tomo de a 8 bits y paso a ascii
longBytes_tempstr = Len(tempStr) / 8
For i = 1 To longBytes_tempstr
tempStrAscii = tempStrAscii + Chr(BinarioADecimal(Left(tempStr, 8), 8))
tempStr = Mid(tempStr, 9)
Next i
plaintext = plaintext & tempStrAscii
End Sub
Private Function f(x As Currency, y As Currency, z As Currency) As Currency
x = x - 2 ^ 31: y = y - 2 ^ 31: z = z - 2 ^ 31
'Obs: el desplazamiento es necesario porque las funciones bitwise
' de vbasic trabajan con en 32 bits unicamente, y convierten los
' argumentos a long integer signados antes de ejecutarse. [Chequeado OK]
f = (x And y) Or ((Not x) And z)
x = x + 2 ^ 31: y = y + 2 ^ 31: z = z + 2 ^ 31
End Function
Private Function g(x As Currency, y As Currency, z As Currency) As Currency
x = x - 2 ^ 31: y = y - 2 ^ 31: z = z - 2 ^ 31
g = (x And z) Or (y And (Not z))
x = x + 2 ^ 31: y = y + 2 ^ 31: z = z + 2 ^ 31
End Function
Private Function h(x As Currency, y As Currency, z As Currency) As Currency
x = x - 2 ^ 31: y = y - 2 ^ 31: z = z - 2 ^ 31
h = x Xor y Xor z
x = x + 2 ^ 31: y = y + 2 ^ 31: z = z + 2 ^ 31
End Function
Private Function i(x As Currency, y As Currency, z As Currency) As Currency
x = x - 2 ^ 31: y = y - 2 ^ 31: z = z - 2 ^ 31
i = y Xor (x Or (Not z))
x = x + 2 ^ 31: y = y + 2 ^ 31: z = z + 2 ^ 31
End Function
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 27 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Private Sub FF(ByRef A As Currency, b As Currency, C As Currency, d As Currency, Mj As Currency, s As
Byte, ti As Currency)
A = Mod32(b + RotateLeft(Mod32(A + f(b, C, d) + Mj + ti), s))
End Sub
Private Sub GG(ByRef A As Currency, b As Currency, C As Currency, d As Currency, Mj As Currency, s As
Byte, ti As Currency)
A = Mod32(b + RotateLeft(Mod32(A + g(b, C, d) + Mj + ti), s))
End Sub
Private Sub HH(ByRef A As Currency, b As Currency, C As Currency, d As Currency, Mj As Currency, s As
Byte, ti As Currency)
A = Mod32(b + RotateLeft(Mod32(A + h(b, C, d) + Mj + ti), s))
End Sub
Private Sub II(ByRef A As Currency, b As Currency, C As Currency, d As Currency, Mj As Currency, s As
Byte, ti As Currency)
A = Mod32(b + RotateLeft(Mod32(A + i(b, C, d) + Mj + ti), s))
End Sub
Private Sub Round1(A As Currency, b As Currency, C As Currency, d As Currency, m() As Currency)
'M(i) es un array de elementos currency, 0<=i<=15
Call FF(A, b, C, d, m(0), 7, 3614090360#) ' * 1 *
Call FF(d, A, b, C, m(1), 12, 3905402710#) ' * 2 *
Call FF(C, d, A, b, m(2), 17, 606105819)
'*3*
Call FF(b, C, d, A, m(3), 22, 3250441966#) ' * 4 *
Call FF(A, b, C, d, m(4), 7, 4118548399#) ' * 5 *
Call FF(d, A, b, C, m(5), 12, 1200080426) ' * 6 *
Call FF(C, d, A, b, m(6), 17, 2821735955#) ' * 7 *
Call FF(b, C, d, A, m(7), 22, 4249261313#) ' * 8 *
Call FF(A, b, C, d, m(8), 7, 1770035416)
'*9*
Call FF(d, A, b, C, m(9), 12, 2336552879#) ' * 10 *
Call FF(C, d, A, b, m(10), 17, 4294925233#) ' * 11 *
Call FF(b, C, d, A, m(11), 22, 2304563134#) ' * 12 *
Call FF(A, b, C, d, m(12), 7, 1804603682) ' * 13 *
Call FF(d, A, b, C, m(13), 12, 4254626195#) ' * 14 *
Call FF(C, d, A, b, m(14), 17, 2792965006#) ' * 15 *
Call FF(b, C, d, A, m(15), 22, 1236535329) ' * 16 *
End Sub
Private Sub Round2(A As Currency, b As Currency, C As Currency, d As Currency, m() As Currency)
'M(i) es un array, 0<=i<=15
Call GG(A, b, C, d, m(1), 5, 4129170786#) ' * 17 *
Call GG(d, A, b, C, m(6), 9, 3225465664#) ' * 18 *
Call GG(C, d, A, b, m(11), 14, 643717713) ' * 19 *
Call GG(b, C, d, A, m(0), 20, 3921069994#) ' * 20 *
Call GG(A, b, C, d, m(5), 5, 3593408605#) ' * 21 *
Call GG(d, A, b, C, m(10), 9, 38016083)
' * 22 *
Call GG(C, d, A, b, m(15), 14, 3634488961#) ' * 23 *
Call GG(b, C, d, A, m(4), 20, 3889429448#) ' * 24 *
Call GG(A, b, C, d, m(9), 5, 568446438)
' * 25 *
Call GG(d, A, b, C, m(14), 9, 3275163606#) ' * 26 *
Call GG(C, d, A, b, m(3), 14, 4107603335#) ' * 27 *
Call GG(b, C, d, A, m(8), 20, 1163531501) ' * 28 *
Call GG(A, b, C, d, m(13), 5, 2850285829#) ' * 29 *
Call GG(d, A, b, C, m(2), 9, 4243563512#) ' * 30 *
Call GG(C, d, A, b, m(7), 14, 1735328473) ' * 31 *
Call GG(b, C, d, A, m(12), 20, 2368359562#) ' * 32 *
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 28 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
End Sub
Private Sub Round3(A As Currency, b As Currency, C As Currency, d As Currency, m() As Currency)
'M(i) es un array, 0<=i<=15
Call HH(A, b, C, d, m(5), 4, 4294588738#) ' * 33 *
Call HH(d, A, b, C, m(8), 11, 2272392833#) ' * 34 *
Call HH(C, d, A, b, m(11), 16, 1839030562) ' * 35 *
Call HH(b, C, d, A, m(14), 23, 4259657740#) ' * 36 *
Call HH(A, b, C, d, m(1), 4, 2763975236#) ' * 37 *
Call HH(d, A, b, C, m(4), 11, 1272893353) ' * 38 *
Call HH(C, d, A, b, m(7), 16, 4139469664#) ' * 39 *
Call HH(b, C, d, A, m(10), 23, 3200236656#) ' * 40 *
Call HH(A, b, C, d, m(13), 4, 681279174)
' * 41 *
Call HH(d, A, b, C, m(0), 11, 3936430074#) ' * 42 *
Call HH(C, d, A, b, m(3), 16, 3572445317#) ' * 43 *
Call HH(b, C, d, A, m(6), 23, 76029189)
' * 44 *
Call HH(A, b, C, d, m(9), 4, 3654602809#) ' * 45 *
Call HH(d, A, b, C, m(12), 11, 3873151461#) ' * 46 *
Call HH(C, d, A, b, m(15), 16, 530742520) ' * 47 *
Call HH(b, C, d, A, m(2), 23, 3299628645#) ' * 48 *
End Sub
Private Sub Round4(A As Currency, b As Currency, C As Currency, d As Currency, m() As Currency)
'M(i) es un array, 0<=i<=15
Call II(A, b, C, d, (0), 6, 4096336452#)
Call II(d, A, b, C, (7), 10, 1126891415)
Call II(C, d, A, b, (14), 15, 2878612391#)
Call II(b, C, d, A, (5), 21, 4237533241#)
Call II(A, b, C, d, (12), 6, 1700485571)
Call II(d, A, b, C, (3), 10, 2399980690#)
Call II(C, d, A, b, (10), 15, 4293915773#)
Call II(b, C, d, A, (1), 21, 2240044497#)
Call II(A, b, C, d, (8), 6, 1873313359)
Call II(d, A, b, C, (15), 10, 4264355552#)
Call II(C, d, A, b, (6), 15, 2734768916#)
Call II(b, C, d, A, (13), 21, 1309151649)
Call II(A, b, C, d, (4), 6, 4149444226#)
Call II(d, A, b, C, (11), 10, 3174756917#)
Call II(C, d, A, b, (2), 15, 718787259)
Call II(b, C, d, A, (9), 21, 3951481745#)
End Sub
' * 49 *
' * 50 *
' * 51 *
' * 52 *
' * 53 *
' * 54 *
' * 55 *
' * 56 *
' * 57 *
' * 58 *
' * 59 *
' * 60 *
' * 61 *
' * 62 *
' * 63 *
' * 64 *
Private Function RotateLeft(word As Currency, s As Byte) As Currency
'rota los primeros 32 bits la variable word, s bits a la izquierda
'en forma circular.
'Notar: la función Or de Vbasic acepta byte, integer o long, pero no Currency
Dim tempBin As String
tempBin = DecimalABinario(word, 32)
tempBin = Right(tempBin, 32 - s) & Left(tempBin, s)
RotateLeft = BinarioADecimal(tempBin, 32)
End Function
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 29 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
RSA
Option Explicit
'
'Implementación del algoritmo de clave pública RSA
'(este algoritmo está patentado en U.S.A.)
'Según Bruce Schneier, Applied Cryptography, 2nd Ed.
'Ariel Pablo Topasso - 1998
'
Public Sub GenerarClavesRSA(publica As Long, privada As Long, modulo As Long, p As Long, q As Long)
'Genera las claves pública, privada, y el módulo necesarios
'para encriptar/desencriptar utilizando RSA
'Devuelve: la clave publica, la clave privada, el modulo
'
y los numeros primos p y q a partir de los cuales se
'
generaron las anteriores
'(La generación de los números primos aleatorios es por "búsqueda intensiva"
' <> generación probabilística)
' Los números generados tienen una "longitud" de 32 bits
' (nuestro objetivo es demostrar conceptos, no obtener
' implementaciones de uso práctico)
Dim d As Long, fi As Long, e As Long
Dim m As Long, x As Long
Dim n As Long
Dim salir As Boolean
'Randomize (necesario pero hecho en la inicializacion del programa)
salir = False
Do
Do
p = Rnd * 200 \ 1
'buscamos un nro entero primo
Loop While EsPrimo(p) = False
Do
q = Rnd * 200 \ 1
'buscamos otro
Loop While EsPrimo(q) = False
n=p*q\1
fi = (p - 1) * (q - 1) \ 1 'función fi de Euler
d = Rnd * n \ 1
If Not (d = 0 Or n = 0 Or d = 1) Then
e = Euclides(fi, d)
If Not (e = 0 Or e = 1) Then
x = PotenciaModuloRSA(255, e, n) 'Verificamos: encriptamos
'el valor 255 con la clave
'pública e, en módulo n.
'notamos que el numero a encriptar deberá ser en módulo menor que n.
If PotenciaModuloRSA(x, d, n) = 255 And n > 4095 Then
'Desencriptamos con la clave privada d,
'al obtener 255 -> el resultado es correcto.
salir = True
End If
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 30 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
End If
End If
Loop Until salir = True
publica = e
privada = d
modulo = n
'Sólo útil durante el debugging
'If PotenciaModuloRSA(x, d, n) = 255 Then
' MsgBox "Clave Pública: " & e & vbCrLf & "Clave Privada: " & d & vbCrLf & "Módulo: " & n
'End If
End Sub
Private Function Euclides(ByVal A As Long, ByVal b As Long) As Long
'Algoritmo de Euclides
Dim r As Long, p As Long, q As Long
Dim r1 As Long, p1 As Long, q1 As Long
Dim q2 As Long, p2 As Long, r2 As Long
Dim n As Long, C As Long, s As Long, x As Long
r1 = A: r = b
p1 = 0: p = 1
q1 = 2: q = 0
n = -1
Do Until r = 0
r2 = r1: r1 = r
p2 = p1: p1 = p
q2 = q1: q1 = q
n=n+1
r = r2 Mod r1
C = r2 \ r1
p = (C * p1) + p2
q = (C * q1) + q2
Loop
s = (b * p1) - (A * q1)
If s > 0 Then
x = p1
Else
x = (0 - p1) + A
End If
Euclides = x
End Function
Private Function EsPrimo(intNumero As Long) As Boolean
Dim intCant As Integer
If intNumero < 2 Or (intNumero Mod 2) = 0 Then
EsPrimo = False
Exit Function
End If
intCant = 2
EsPrimo = True
Do 'busqueda exhaustiva
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 31 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
If intNumero Mod intCant = 0 Then
EsPrimo = False 'detectamos un multiplo
Exit Function
End If
intCant = intCant + 1
Loop While intCant <= Sqr(intNumero)
End Function
Public Function PotenciaModuloRSA(ByVal x As Long, ByVal p As Long, ByVal m As Long) As Long
'Algoritmo de square and multiply, potenciación en módulo m
Dim y As Long
y=1
Do While p > 0
Do While (p / 2) = (p \ 2) 'mientras p sea par
x = (x * x) Mod m
p=p/2
Loop
y = (x * y) Mod m
p=p-1
Loop
PotenciaModuloRSA = y
End Function
Funciones Accesorias
Public Function SumaBinaria(sumando1 As Long, sumando2 As Long) As Long
'Devuelve un entero long (32 bits) representando el resultado de la suma
'binaria (ignorando el posible bit de carry que resulte de las representaciones
'binarias de sumando1 y sumando2. -> Nunca se producirá error de OverFlow
'Notar que en VBasic los enteros tipo Long son "signados";
Dim tempSum As Currency
'@ == indica "currency data type"
tempSum = CCur(sumando1) + CCur(sumando2)
'4294967296 = 2^32
If tempSum < -2147483648@ Then tempSum = tempSum + 4294967296@
If tempSum > 2147483647 Then tempSum = tempSum - 4294967296@
'otra posibilidad: tempSum=ccur(sumando1+2147483648)+ccur(sumando2+2147483648) mod
4294967296@
'pero no funciona porque la funcion mod acepta como argumentos a numeros tipo long, y aqui podria
haber numeros mas grandes que 2147483648.
SumaBinaria = CLng(tempSum)
End Function
Public Function Ceil(numero As Double) As Long
'Devuelve el entero mayor o igual que el número pasado como parámetro
'Nota: la función de vbasic Fix() es equivalente a floor() de matlab
If numero > Fix(numero) Then
Ceil = Fix(numero) + 1
Else 'el numero es entero
Ceil = Fix(numero)
End If
End Function
Public Function DecimalABinario(ByVal numeroDecimal As Currency, largoPalabra As Long, Optional
sumarOffsetLong As Boolean = False) As String
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 32 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
'Devuelve un string con la representacion binaria del número decimal (supuesto>=0)
' pasado como parámetro, truncada según el valor de largoPalabra, con el bit
' más significativo a la izquierda;
' la longitud de la representación binaria será: largoPalabra bits.
' Obs: en VBasic, el tipo long (32 bits) es signado -> se deberá sumar 2^31 antes de hacer la conversión.
' sumarOffsetLong: si es True, suma 2^31 al numeroDecimal antes de hacer la conversión =>convierte un
número tipo long (signado) a entero no signado
' Notar que el tipo currency es similar a integer pero de 64 bits en lugar de 16.
' y soporta 15 digitos en su parte entera en lugar de los 10 del tipo long.
Dim numeroBin As String
Dim i As Long, cantBitsEnNumeroDec As Double
If sumarOffsetLong = True Then numeroDecimal = numeroDecimal + 2147483648@ 'sumo 2^31
If numeroDecimal > 0 Then
cantBitsEnNumeroDec = Ceil(Log(numeroDecimal) / Log(2))
Else
cantBitsEnNumeroDec = largoPalabra
End If
For i = Max(cantBitsEnNumeroDec, CDbl(largoPalabra)) - 1 To 0 Step -1
If Int(numeroDecimal / (2 ^ i)) = 1 Then
numeroBin = numeroBin & "1"
numeroDecimal = numeroDecimal - (2 ^ i)
Else
numeroBin = numeroBin & "0"
End If
Next i
If cantBitsEnNumeroDec > largoPalabra Then 'trunco
numeroBin = Right(numeroBin, largoPalabra)
End If
DecimalABinario = numeroBin
End Function
Public Function BinarioADecimal(ByVal numeroBinario As String, largoPalabra As Long) As Currency
'Devuelve un entero >=0 con el valor decimal del numero representado en binario
' en el string pasado como parámetro (truncado según el valor de largoPalabra, con el bit
' más significativo a la izquierda);
' la longitud de la representación binaria será: largoPalabra bits.
' Notar que el tipo currency es similar a integer pero de 64 bits en lugar de 16.
' y soporta 15 digitos en su parte entera en lugar de los 10 del tipo long.
Dim numeroDec As Currency
Dim i As Long, cantBitsEnNumeroBin As Long
cantBitsEnNumeroBin = Len(numeroBinario)
'agrega ceros a la izquierda si hacen falta
For i = 1 To largoPalabra - cantBitsEnNumeroBin
numeroBinario = "0" & numeroBinario
Next i
numeroBinario = Right(numeroBinario, largoPalabra) 'trunco
For i = largoPalabra - 1 To 0 Step -1
numeroDec = numeroDec + Val(Mid(numeroBinario, largoPalabra - i, 1)) * 2 ^ i
Next i
BinarioADecimal = numeroDec
End Function
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 33 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Public Function DecimalAHexa(numero As Currency, largoPalabra As Long, Optional sumarOffsetLong As
Boolean = False) As String
'Devuelve la representación hexadecimal del número pasado como parámetro,
'utilizando un string. (Obs: tipo long -> 32 bits)
'largoPalabra: cantidad de bits a utilizar en la representacion hexa, puede
'
o no ser múltiplo de 4, la representacion en hexa sera truncada según el valor de este parámetro
'sumarOffsetLong: le suma a número el valor 2^31 para evitar el problema de que los enteros tipo long en
Vbasic son signados.
'Uses: DecimalABinario()
Dim numeroBin As String, numeroHex As String
Dim tempDec As Byte, tempNibble As String
Dim i As Long, j As Long
'paso a binario (bit mas significativo a la izquierda)
numeroBin = DecimalABinario(numero, largoPalabra, sumarOffsetLong)
For i = 1 To Fix(largoPalabra / 4)
tempNibble = Right(numeroBin, 4)
Do While Len(tempNibble) < 4 'nibble == 1 solo digito hexa (4 bits)
tempNibble = "0" & tempNibble
Loop
tempDec = 0
For j = 1 To 4
tempDec = tempDec + Mid(tempNibble, j, 1) * 2 ^ (4 - j)
Next j
numeroHex = Hex(tempDec) & numeroHex
numeroBin = Mid(numeroBin, 1, Len(numeroBin) - 4)
Next i
'pudieron haber quedado hasta 3 bits de numeroBin sin procesar (los mas significativos)
'-> los proceso:
If Len(numeroBin) > 0 Then
Do While Len(numeroBin) < 4 'nibble == 1 solo digito hexa (4 bits)
numeroBin = "0" & numeroBin
Loop
tempDec = 0
For j = 1 To 4
tempDec = tempDec + Mid(numeroBin, j, 1) * 2 ^ (4 - j)
Next j
numeroHex = Hex(tempDec) & numeroHex
End If
DecimalAHexa = numeroHex
End Function
Public Function HexaABinario(numeroHexa As String, Optional largoPalabra As Integer = -1) As String
'Devuelve la representación binaria del número en hexa (string) pasado como parámetro,
'utilizando un string.
'largoPalabra: cantidad de bits a utilizar en la representacion binaria, puede
'
o no ser múltiplo de 4, la representacion en binario sera truncada
'
según el valor de este parámetro (se devuelven los bits menos significativos)
'
(menos significativos == los de la derecha)
'
por default, devuelve 4*cantidad_de_digitos_binarios bits.
Const BinTbl = "0000000100100011010001010110011110001001101010111100110111101111"
Dim i As Integer, tempStr As String
Dim largoOriginal As Integer
For i = 1 To Len(numeroHexa)
tempStr = tempStr + Mid(BinTbl, Val("&h" & Mid(numeroHexa, i, 1)) * 4 + 1, 4)
Next
If largoPalabra > -1 Then
HexaABinario = Right(tempStr, largoPalabra)
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 34 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
largoOriginal = Len(HexaABinario)
For i = largoOriginal To largoPalabra - 1 'si faltan 0s los agrega
HexaABinario = "0" & HexaABinario
Next i
Else 'por default, devuelve 4*cantidad_de_digitos_binarios bits.
HexaABinario = tempStr
End If
End Function
Public Function Sign(ByRef A As Double, ByRef b As Double) As Double
'Devuelve el parámetro a, pero con su signo cambiado, según lo indique b
'Utilizada por las funciones del libro
'Numerical Recipes in C.
'Obs: no confundir con la función intrínseca de VB sgn(), que devuelve el signo
If b >= 0# Then
Sign = Abs(A)
Else
Sign = -Abs(A)
End If
End Function
Private Sub cmdCertificar_Click()
'Extrae la la firma digital del mensaje, luego la desencripta
'utilizando la clave publica de RSA, recrea el mensaje original
'(sin la firma), calcula el hashOriginal, y por último lo compara
'con el hash obtenido de la firma digital.
Dim errorEnFirma As Boolean
Dim mensajeOriginalConHeader As String
Dim firma As String
Dim posFinMensaje As Long, posComFirma As Long, tmpCaracter As Long
Dim firmaRSA(1 To 32) As Long
Dim strNumero As String, i As Long, posMarca As Long
Dim hashMensajeOriginal As String, hashRegistradoEnFirma As String
'marca de fin de mensaje original: [||]
'marca de comienzo de secuencia de claves: |[]|
'separo firma y mensaje original
errorEnFirma = False
posFinMensaje = InStr(1, txtTextoAFirmar, "[||]")
posComFirma = InStr(1, txtTextoAFirmar, "|[]|") + 3
If posFinMensaje = 0 Or posComFirma = 0 Then errorEnFirma = True
If Not errorEnFirma Then
firma = Right(txtTextoAFirmar, Len(txtTextoAFirmar) - posComFirma)
mensajeOriginalConHeader = Left(txtTextoAFirmar, posComFirma)
posMarca = 1: i = 1
Do While Not errorEnFirma And i <= 32
posMarca = InStr(1, firma, "|")
If posMarca = 0 Then errorEnFirma = True: Exit Do
strNumero = Left(firma, posMarca)
firmaRSA(i) = Val(strNumero)
firma = Mid(firma, posMarca + 1)
i=i+1
Loop
If i <= 32 Then errorEnFirma = True
If Not errorEnFirma Then
'procedemos a calcular el hash del mensaje original
'desencriptar la firma con la clave publica de rsa
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 35 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
'y comparar
hashMensajeOriginal = MD5HashString(mensajeOriginalConHeader)
'desencripto
For i = 1 To 32
If firmaRSA(i) < 0 Or firmaRSA(i) > RSAmodulo Then errorEnFirma = True: Exit For
tmpCaracter = PotenciaModuloRSA(firmaRSA(i), RSAclavePublica, RSAmodulo)
If tmpCaracter < 0 Or tmpCaracter > 255 Then errorEnFirma = True: Exit For
hashRegistradoEnFirma = hashRegistradoEnFirma & Chr(tmpCaracter)
Next i
'comparo
If Trim(hashMensajeOriginal) <> Trim(hashRegistradoEnFirma) Then
errorEnFirma = True 'detectamos un cambio
End If
End If
End If
If errorEnFirma Then
mAdvertencia ("Se ha detectado que el mensaje y/o la firma han sido alterados!")
Else
mMensaje ("El mensaje original no ha sido alterado")
End If
stbStatus.Panels.Item(1).text = "Es posible ahora comprobar el funcionamiento de la certificación de
mensajes modificando al original; reComenzar; o Salir"
End Sub
Private Sub cmdEncriptarConRSA_Click()
frmRSAPaso4.Show vbModal
cmdEncriptarConRSA.Enabled = False
cmdAdjuntarLaFirmaAlMensaje.Enabled = True
cmdAdjuntarLaFirmaAlMensaje.SetFocus
stbStatus.Panels.Item(1).text = "Status: El resultado de la función de Hash ha sido encriptado con RSA"
End Sub
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 36 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Implementaciones de la Firma Digital por medio de
Biometric Tokens
"Biometric Token": Identidad Biométrica
Un "Biometric Token" es un ente de datos
encriptados totalmente transportable que contiene las
características únicas de una firma (conjunto de
características físicas, de comportamiento, que hacen
a una persona única) junto con información que
asegura quien firmó. La firma es guardada como un
conjunto de mediciones, cada una representando una
característica única.
Un biometric token posee las siguientes funciones y datos:
•
Afirma la identidad:
El nombre del signatario, u otra identificación única como número de cuenta, número de
documento, etc.
•
Timestamp:
La fecha y hora en que la firma fue realizada
•
Checksum del Documento:
Une el acto individual de la firma a un único documento para prevenir la reutilización de la firma.
Una de las formas de implementarlo es a través del algoritmo MD5.
Además, el identificador biométrico debe acercarse lo máximo posible a los siguientes atributos:
•
Variabilidad máxima de la cualidad biométrica elegida en la población mundial, ya que
esto determina la unicidad del identificado
•
Inmutabilidad frente al paso del tiempo e intervenciones
•
Eficiencia computacional para la codificación y reconocimiento del patrón de
identificación
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 37 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Una de las ventajas más importantes es que al PIN (“personal
identification number”) es imposible olvidarlo, ya que el mismo forma
parte de la persona a la cual identifica.
Actualmente los sistemas de identificación pueden ser clasificados como:
Sistemas de Biomediciones Físico/Anatómicas:
•
•
•
•
Escaneo de Retina e Iris
Reconocimiento Facial:
a)Termográfico
b)Morfológico
Palma/mano
Imagen de huellas digitales
Sistemas de biomediciones Físico/Conducta:
•
•
Reconocimiento de voz
Identificación de firma
Sistemas de biomediciones Físico/Genéticos:
•
ADN
Luego de esta clasificación se define a cada uno de los sistemas, y se los ilustra por medio
del instrumental que se utiliza para su captura, por el proceso, o por el resultado de los mismos.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 38 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Sistemas de Biomediciones Físico/Anatómicas:
Escaneo de Iris:
La tecnología de reconocimiento del iris identifica a los individuos por medio del análisis
computacional de los patrones encontrados en el iris del ojo humano. Esta tecnología es
totalmente diferente a la de escaneo de retina.
El iris de cada ojo es absolutamente único. En toda la población humana, no hay dos iris
que se parezcan en sus caracteres matemáticos, aún en gemelos (monocigotos), siendo así que,
basados en la cantidad de variaciones independientes de códigos de iris (IrisCodeTM), la
probabilidad de que dos iris produzcan exactamente el mismo IrisCode es aproximadamente 1
en 1078 (la población de la Tierra es de alrededor de 1010).
Fig. 7 - Partes c onstitutivas del Ojo
El iris es el anillo de tejido coloreado que rodea a la
pupila del ojo. Es un órgano interno protegido dentro del
ojo, detrás de la córnea y el humor acuoso, visible
externamente desde una distancia de hasta un metro, ya
que estos medios ópticos son transparentes. El iris está
compuesto de tejido elástico conectivo, cuya
morfogénesis prenatal se completa durante el 8vo. mes
de embarazo. Consiste de ligamentos con forma de peine
adheridos en una intrincada red que revela estriaciones,
procesos ciliares, criptas, anillos, surcos, coronas,
manchas, vascularizaciones y otras características.
Durante el primer año de vida el manto de células
cromatóforas (información del color) generalmente
cambia el color del iris, pero la documentación clínica
indica que los patrones trabeculares permanecen
estables durante toda la vida.
Siendo un órgano interno del ojo, el iris es inmune a las
variaciones del medio ambiente, exceptuando la respuesta de la
pupila a la luz. Las deformaciones elásticas que ocurren con la
dilatación de la pupila son revertidas matemáticamente por
algoritmos que localizan los contornos externos e internos del iris. La
movilidad de la pupila, aún en ausencia de cambio de luz (llamada
"hippus"), y las deformaciones elásticas asociadas que crea en la
textura del iris, proveen un test contra las fotografías, ojos de vidrio,
u otra simulación de un iris viviente. Otro test en contra de la
falsificación de identidad, involucra fuentes de luz infrarroja que
causan cambios en las reflexiones especulares de la cornea,
detectando así los lentes de contacto que puedan tener impreso en
los mismos impresiones de los patrones del iris.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Fig. 8 - Patr ón de Ir is tomado a
50 c m
Página 39 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
¿Que hay sobre la "Iridologia"? ¿Es afectado el iris por los cambios en los estados de
ánimo, salud, personalidad? Hay una creencia popular acerca de que el iris refleja el estado de
salud, humor, personalidad de una persona. La práctica de interpretar estas características del
iris es denominada Iridología, pero esta práctica no es aceptada por los médicos ni la comunidad
científica.
¿Qué sucede con los cambios de color del iris producidos por medicaciones o lentes de
contacto? No influye, ya que la técnica de escaneo es insensible al color.
La estructura y patrones del iris son capturados en imagen y luego codificados por el
proceso IrisScan. Por la textura, naturaleza fisiológica y la generación “aleatoria” del iris, es que
la duplicación artificial es virtualmente imposible.
Análisis de los patrones de iris
Las dos dimensiones de modulación que componen los
patrones del iris pueden ser extraídas por
demodulaciones matemáticas utilizando onditas
(wavelets) de Gabor de 2D de valores complejos.
Primero es necesario localizar con precisión los
contornos internos y externos del iris, y detectar y
destruir los parpadeos si es que molestan. Estas
operaciones son ejecutadas por operadores integrodiferenciales. Luego un sistema de coordenadas
adimensional es definido, el cual mapea el tejido de una
manera que es invariante a los cambios de las
contracciones de la pupila, al factor de zoom de la
Fig. 9 - Ir is y su c odific ación
cámara y a la distancia al ojo. El sistema de coordenadas
automáticamente compensa las variaciones del tejido del
iris producido por las dilataciones de la pupila. Se ve en la Fig. 9 arriba a la izquierda un IrisCode
de 256 bytes de información.
Perfil Tecnológico del Reconocimiento del Iris
•
•
•
•
•
•
•
Probabilidad que dos iris produzcan el mismo código: 1 en 1078
Variables independientes (grados de libertad): 266
Tamaño de la codificación del iris (sin comprimir): 512 bytes
Densidad de información de un código de iris: 3.4 bits por mm2 de iris
Exactitud: Cross-over error rate: 1 en 1,200,000 (Cross-over: error medio medido con un criterio
de decisión que produce iguales medias de falsas aceptaciones que falsos rechazos)
Velocidad promedio de reconocimiento (base de datos con 100,000 códigos de iris): 2
segundos
Verificación: 3 segundos
Concluyendo, se puede extraer como puntos más sobresalientes de esta tecnología de
reconocimiento, a los siguientes,
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 40 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
•
La textura del iris es una característica fenotípica (no genética), por lo
cual, aún clonando a personas, sería imposible obtener una réplica exacta.
•
Se comprobó estadísticamente que los patrones del iris que se utilizan para
identificación, no están correlacionados y son estadísticamente
independientes, con lo cual se obtienen 266 grados de libertad, dando como
resultado un número astronómico de codificaciones posibles (1078).
•
El iris es claramente visible a la distancia, y el sistema es no intrusivo, a
diferencia del escaneo de retina.
•
Su aislación y protección del medio ambiente, como un órgano interno del
ojo, y su inalterabilidad a lo largo de la vida lo posicionan como el "biometric
token" por excelencia.
•
La respuesta fisiológica del iris a la luz y a las oscilaciones naturales de la
pupila, lo dotan de cualidades importantísimas en contra de las
substituciones por fotografías o por otra simulación con tejido viviente.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 41 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Reconocimiento facial por termografía
La termografía facial, o también denominada reconocimiento facial en 3-D, identifica a
las personas por los patrones únicos de emisión de calor los cuales crean una "firma facial". Este
tipo de firma se basa en que el sistema vascular que yace por debajo del rostro humano,
produce una firma facial única cuando el calor atraviesa los tejidos faciales y es emitido a través
de la piel. La cámara infrarroja captura estos patrones a los que se hace referencia como
"termogramas". El termograma es leído por la computadora, digitalizado, encriptado y archivado.
Cuando la computadora lee un termograma, elimina los patrones vasculares pertenecientes a los
oídos y nariz, ya que son muy sensibles a los cambios de temperatura
Caracterí sticas de la tecnología
•
Pasiva: Condice con el criterio de un programa de verificación de identidad no intrusivo. Esto
significa que la identidad puede ser verificada sin contacto, sin una vista total de la cámara y
con personas no-cooperantes.
•
Independiente de la luz: Al encontrarse el espectro infrarrojo por debajo de la luz visible, la
cámara infrarroja puede capturar independientemente de las condiciones de luz ambiental.
•
Invulnerable a la simulación: Aun en el caso de cirugías plásticas, estas no pueden
redireccionar el flujo de sangre a través del sistema vascular.
•
Exactitud, velocidad y disponibilidad mayores que otros sistemas de identificación como:
digitalización de huellas dactilares, retinagramas, reconocimiento de voz.
•
Mínimo espacio de almacenamiento: solo requiere de 2 a 4 KBytes para guardar un
termograma facial digitalizado.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 42 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Reconocimiento facial por morfografía
Este proceso se basa en un método de reconocimiento facial llamado "eigenfaces".
Fundamentalmente cada imagen que formará parte de la base de datos, es mapeada en una
serie de números a los que se refieren como "coeficientes". Estos coeficientes reducen las
características de la cara de un individuo a 128 números enteros, los que conforman una matriz,
la cual posteriormente será utilizada para futuras validaciones.
Tomando la distancia entre el "vector imagen capturado" y el "vector imagen
almacenado", dicha distancia es calculada en un sistema de coordenadas llamado "espacio
facial". Si la distancia calculada es mayor que un valor predeterminado, las dos imágenes son
declaradas como no coincidentes, en el caso contrario hay coincidencia.
Proceso de reconocimiento
 25
12

 ...

 ...
58
8
...
...
...
2
...
...
...
...
...
...
...
....
...
...
17
2

... 

... 
41
Proceso de identificación
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 43 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Palma/mano
Un sistema de lectura de mano escanea la mano y guarda la imagen en la PC. La
imagen es utilizada para identificar y verificar a una persona.
La tecnología de este sistema se basa en ubicar la mano en un escáner de 3D que
examina y mapea las dimensiones de la mano incluyendo la longitud, ancho, espesor, la
superficie, etc. Más de 90 mediciones para cada mano son guardadas como un template para
ser utilizada en el futuro para autentificar e identificar a dicha persona.
Imagen de huellas digitales
Este sistema coincide casi en su totalidad con el de palma/mano, pero en este caso el
instrumental necesario es de menor dimensión y menor costo.
Proceso de reconocimiento
Se genera un patrón
único con las
mediciones realizadas
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 44 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Sistemas de Biomediciones Físicas/Conducta
Reconocimiento de voz
El sistema de verificación del patrón vocal graba y
digitaliza la voz del usuario guardándola como un patrón en
la computadora. Luego la voz del usuario es comparada con
el patrón en futuras visitas. Otra tecnología desarrollada
para el mismo fin denominada "TESPAR", convierte la voz
en una codificación digital la cual produce una matriz de
números que es única para cada persona.
El reconocimiento de la voz no depende únicamente del sonido de la voz, sino también
de otros parámetros: de que manera la boca y el paladar son utilizados para crear el sonido, etc..
Grabado de Voz
y
Preprocesamiento
Registro
Extracción de
Características
Generación de
Patrones
Confrontación
de patrones
Update
Base de Datos
de Voces
Decisión
Otra
Información
Resultado del
Reconocimiento
Fig. 10 - Sistema de r ec onocimiento por altavoz
Cualidades de la Verificación Vocal
•
•
•
Natural: Es un sistema no intrusivo
Conveniente: Posee la capacidad de realizar log-in remotos a través de la Red Telefónica
Fácil de programar
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 45 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
•
Bajo costo: Los elementos utilizados son comunes (teléfonos, micrófonos)
Speech
Server
Speaker
Verification Unit
Red Telefónica
Fig. 11 - Sistema de Ver ific ación por altavoz a tr avés de la r ed
Estos sistemas de voz son relativamente seguros, pero para aumentar aún más su
confiabilidad e invulnerabilidad es necesario que estos sistemas tengan la capacidad de detectar
presiones de aire para asegurar que grabaciones realizadas previamente no sean utilizadas para
vulnerar al sistema.
Identificación de firma
El sistema PenOp (el más comercializado en el mercado) se basa en el análisis de mediciones
biométricas del comportamiento de la firma, generalmente 42, que incluyen entre las más
importantes: dirección de golpe, cantidad de golpes, orden, velocidad y aceleración máxima y
mínima, etc.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 46 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Visión Legal en el Mundo
Análisis etimológico de la palabra "firmar"
Firmar: del latín firmare: afirmar, asegurar. Poner nombre y apellido en un escrito.
Asegurar: de a y seguro.
Seguro: del latín securus: seguro, sereno. Protegido, inmune.
Analizando la etimología de la palabra "firmar" se puede observar cómo el término por sí
mismo, a través de su significado, brinda una definición clara y concisa a lo que hace referencia:
"Afirmar, asegurar. Ponerle nombre y apellido a un escrito. Protegerlo, inmunizarlo"
Afirmar: Decir fehacientemente que una persona es tal.
Ponerle nombre y apellido a un escrito: Identificar un mensaje en forma unívoca. El mensaje
pertenece a la persona X con sus características que la definen como
única.
Asegurar: Protegerlo, Inmunizarlo de ataques externos que traten de alterar de cualquier forma
el contenido del mensaje y/o las características que definen a una
persona como única, para identificarse como otra distinta a la original.
Para terminar de conceptualizar la de idea de Firma Digital al término "firmar" hay que
adosarle otra palabra a la que se aplica la firma: DOCUMENTO.
Según la doctrina, un documento es todo objeto o cosa, producto de la actividad
humana, preexistente al proceso (legal), cuya función es representar un hecho.
Los 3 elementos principales del documento resultan entonces en que es:
•
•
•
Material
Representativo
Anterior al potencial litigio
Sintetizando la definición se puede decir que:
"… un documento es un hecho material y representativo producto de la actividad
humana…"
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 47 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Definición de términos concernientes al vocabulario de Firma Digital
estrictamente desde el punto de vista legislativo
A continuación se transcriben los Anexos I y II de la Resolución Nro.427/98 los cuales
ilustran a los lectores del mismo, sobre el glosario aceptado como válido en la legislación
Argentina y sobre el cual se basaran las futuras leyes. Al finalizar la definición de los términos,
se cuenta con el conocimiento necesario sobre los mismos para poder interpretar la resolución,
el decreto presidencial y los anexos.
Anexo I
DOCUMENTO DIGITAL: Representación digital de actos, hechos o datos jurídicamente relevantes.
DOCUMENTO DIGITAL FIRMADO: Documento Digital al cual se le ha aplicado una Firma Digital.
EMISIÓN DE UN CERTIFICADO: La creación de un certificado por parte de una autoridad certificante
licenciada.
ENTEORGANISMO AUDITANTE: Órgano administrativo encargado de auditar la actividad del
Enteorganismo licenciante y de las autoridades certificantes licenciadas.
ENTEORGANISMO LICENCIANTE: Órgano administrativo encargado de otorgar las licencias a las
autoridades certificantes y de supervisar la actividad de las autoridades certificantes licenciadas.
FIRMA DIGITAL: Resultado de una transformación de un Documento Digital empleando un
criptosistema asimétrico y un digesto seguro, de forma tal que una persona que posea el
Documento Digital inicial y la Clave Pública del firmante pueda determinar con certeza:
1. Si la transformación se llevó a cabo usando la Clave Privada que corresponde a la
Clave Publica del firmante, lo que impide su repudio.
2. Si el Documento Digital ha sido modificado desde que se efectuó la transformación, lo
que garantiza su integridad.
La conjunción de los dos requisitos anteriores garantiza su NO REPUDIO y su
INTEGRIDAD.
FUNCIÓN DE DIGESTO SEGURO:
Es una función matemática que transforma un documento digital en una secuencia de
bits de longitud fija, llamada DIGESTO SEGURO, de forma tal que:
1. Se obtiene la misma secuencia de bits de longitud fija, el mismo resultado, cada vez que
se calcula esta función respecto del mismo documento digital;
2. Es computacionalmente no factible inferir o reconstituir un documento digital a partir de
su digesto seguro;
3. Es computacionalmente no factible encontrar dos documentos digitales diferentes que
produzcan el mismo digesto seguro.
INTEGRIDAD: Condición de no-alteración de un Documento Digital.
LISTA DE CERTIFICADOS REVOCADOS: Es la lista publicada por la autoridad certificante licenciada,
de los certificados de Clave Pública por ella emitidos cuya vigencia ha cesado antes de su fecha
de vencimiento, por acto revocatorio.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 48 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
NO REPUDIO: Cualidad de la Firma Digital, por la cual su autor no puede desconocer un
Documento Digital que él ha firmado digitalmente.
PAR DE CLAVES: Clave Privada y su correspondiente Clave Pública en un Criptosistema
asimétrico, tal que la Clave Publica puede verificar una Firma Digital creada por la Clave Privada.
PERÍODO DE VIGENCIA (de un certificado): Período durante el cual el suscriptor puede firmar
Documentos Digitales utilizando la Clave Privada correspondiente a la Clave Pública contenida
en el Certificado, de modo tal que la Firma Digital no sea repudiable. El Período de Vigencia de
un Certificado comienza en la fecha y hora en que fue emitido por la Autoridad Certificante
Licenciada, o en una fecha y hora posterior si así lo especifica el Certificado, y termina en la
fecha y hora de su vencimiento o revocación.
PUBLICAR: Dar a conocer, notificar o comunicar por cualquier medio.
REVOCACIÓN DE UN CERTIFICADO: Acción de dejar sin efecto en forma permanente un Certificado
a partir de una fecha cierta, incluyéndolo en la Lista de Certificados Revocados dándolo a
publicidad.
SELLADO DIGITAL DE FECHA Y HORA: Acción mediante la cual la Autoridad Certificante Licenciada
adiciona la fecha, hora, minutos y segundos (como mínimo) de su intervención, a un Documento
Digital de la información digital o a su DIGESTO SEGURO. La información resultante del proceso
antes descripto es firmada digitalmente por la AUTORIDAD CERTIFICANTE LICENCIADA.
SISTEMA CONFIABLE: Equipos de computación, software y procedimientos relacionados que:
1. Sean razonablemente confiables para resguardar contra la posibilidad de intrusión o de
uso indebido;
2. Brinden un grado razonable de disponibilidad, confiabilidad, confidencialidad y correcto
funcionamiento;
3. Sean razonablemente aptos para el desempeño de sus funciones específicas;
4. Cumplan con los requisitos de seguridad generalmente aceptados.
SUSCRIPTOR: Persona:
1. A cuyo nombre se emite un Certificado, y
2. Que es titular de la Clave Privada correspondiente a la Clave Pública incluída en dicho
Certificado.
T ÉCNICAMENTE CONFIABLE: Dícese de los SISTEMAS CONFIABLES que cumplen con los
estándares tecnológicos que al efecto dicte la Secretaría de la Función Pública de la Jefatura de
Gabinete de Ministros. Respecto de las longitudes de claves a utilizar, se requerirá como mínimo
una cantidad de bits igual o superior al doble de la longitud de las claves que se puedan quebrar
al momento de (generar el Par de Claves, o crear la Firma Digital, o Verificar la Firma Digital).
Respecto de las longitudes de digestos de Documento Digital a utilizar, se requerirá como
mínimo una cantidad de bits igual o superior al doble de la longitud de digestos de Documento
Digital que se puedan quebrar al momento de (generar el Par de Claves, o crear la Firma Digital,
o VERIFICAR la Firma Digital).
T ERCERO: Todo aquel que ostenta un derecho subjetivo o interés legítimo .
VERIFICACIÓN DE UNA FIRMA DIGITAL: Con relación a un Documento Digital, a una Firma Digital, el
correspondiente a un Certificado de Clave Pública y a una Lista de Certificados Revocados, es la
determinación fehaciente de que:
1. El Documento Digital fue firmado digitalmente con la Firma Digital creada en base a la
Clave Privada correspondiente a la Clave Pública incluída en el Certificado;
2. El Documento Digital no fue alterado desde que fue firmado digitalmente.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 49 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Para aquel documento cuya naturaleza pudiera exigir la necesidad de certificación de
fecha cierta, o bien ésta fuere conveniente dado sus efectos, deberá determinarse
adicionalmente que el mismo fue firmado digitalmente durante el Período de Vigencia del
correspondiente Certificado.
Anexo II
AUTORIDAD CERTIFICANTE LICENCIADA: Órgano administrativo que emite Certificados de Clave
Pública.
CERTIFICADO O CERTIFICADO DE CLAVE PÚBLICA: Documento Digital emitido y firmado digitalmente
por una Autoridad Certificante Licenciada, que asocia una Clave Pública con su Suscriptor
durante el dentro del Período de Vigencia del Certificado, y que asimismo hace plena prueba
dentro de la Administración Sector Público Nacional, de la veracidad de su contenido.
CLAVE PRIVADA: En un Criptosistema Asimétrico, es aquella que se utiliza para crear una Firma
Digital.
CLAVE PÚBLICA: En un Criptosistema Asimétrico, es aquella que se utiliza para verificar una
Firma Digital.
COMPUTACIONALMENTE NO F ACTIBLE: Dícese de aquellos cálculos matemáticos asistidos por
computadora que para ser llevados a cabo requieren de tiempo y recursos informáticos que
superan ampliamente a los disponibles en la actualidad.
CORRESPONDER: Con referencia a un cierto Par de Claves, significa pertenecer a dicho par.
CRIPTOSISTEMA ASIMÉTRICO: Algoritmo que utiliza un Par de Claves, una Clave Privada para
firmar digitalmente y su correspondiente Clave Pública para verificar esa Firma Digital, cuya
Clave Privada crea una Firma Digital, y cuya correspondiente Clave Pública se utiliza para
Verificar esa Firma Digital. A efectos de este Decreto, se entiende que el Criptosistema
Asimétrico deberá ser Técnicamente Confiable.
DIGESTO SEGURO (Hash Result): La secuencia de bits de longitud fija será el resultado producido
por una Función de Digesto Seguro luego de procesar un Documento Digital.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 50 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Planteo de la situación legislativa mundial actual referente a la Firma
Digital
Hoy en día uno de los aspectos decisivos para afianzar el comercio electrónico en
Internet, medio de comunicación en pleno crecimiento y que probablemente sea la manera de
realizar cualquier tipo de transacción electrónica en el futuro, está constituido por el entorno
jurídico, es decir, las leyes que sirvan de soporte para las transacciones, e introduzcan el
concepto de seguridad jurídica en el mercado digital.
Existe una opinión generalizada de que, si ya es complicado, en la vida presente,
demostrar la existencia de una deuda que no se ha formalizado en un título ejecutivo, la dificultad
probatoria será mayor en una plataforma contractual en la que el consentimiento se transmite en
forma de bits. Es evidente que los que basan sus compromisos comerciales en el célebre
apretón de manos, tendrán que recurrir a la realidad virtual para poder sellar así sus acuerdos a
través de Internet. Pero los que tienen por norma documentar sus transacciones con contratos
escritos podrán comprobar en poco tiempo, que la firma digital aporta una eficacia probatoria
igual, o incluso superior a la que aporta la firma original en papel.
La firma digital es el instrumento que permitirá, entre otras cosas, determinar de forma
fiable si las partes que intervienen en una transacción son realmente las que dicen ser, y si el
contenido del contrato ha sido alterado o no posteriormente, como se ha mencionado
anteriormente.
La primera ley que ha regulado los aspectos jurídicos de la firma digital como
instrumento probatorio se aprobó el año pasado en Utah. Posteriormente surgieron proyectos
legislativos en Georgia, California y Washington. En Europa, el primer país que ha aprobado una
Ley sobre la materia ha sido Alemania.
Es evidente que la eficacia de estas leyes radica en su uniformidad, ya que si su
contenido difiere en cada estado, será difícil su aplicación a un entorno global como Internet. Por
ello, el esfuerzo a realizar a partir de ahora deberá centrarse en la concepción de un modelo
supraestatal, que pueda ser implantado de manera uniforme en las leyes nacionales e
internacionales. Tal tarea puede encomendarse a organismos internacionales como UNCITRAL1,
que ya dispone de experiencia en iniciativas similares en esta materia.
La Comisión Europea (CE) emitió una comunicación con fecha 8 de octubre de 1997, la
cual persigue el fin de sensibilizar a los Estados sobre el creciente uso de Internet como
plataforma de comunicación y de comercio, así como de la necesidad de establecer un marco
uniforme en materia de cifrado de la información y firma digital. Esta comunicación recuerda que
los mensajes en Internet pueden ser interceptados y manipulados, y esta circunstancia puede
impedir que se conceda validez a los documentos enviados a través de la red. Las tecnologías
de cifrado pueden resolver este problema, ya que constituyen una herramienta esencial para
garantizar la seguridad y la fiabilidad de las comunicaciones y transacciones electrónicas.
1
UNCITRAL: United Nations Commission on International Trade Law, establece un Modelo de leyes para el
comercio electrónico.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 51 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Dos aplicaciones importantes de estas tecnologías son las firmas digitales y el cifrado de
mensajes. Varios Estados han anunciado su intención de promulgar leyes específicas relativas a
la encriptación, y algunos ya lo han hecho. Pero la divergencia legal y técnica de estas
regulaciones podría constituir un serio obstáculo para el Mercado Interior e impedir el desarrollo
de nuevas actividades económicas relacionadas con el comercio electrónico.
Los objetivos de la Comunicación de la CE son:
•
El desarrollo de un marco legal que asegure el funcionamiento de los productos y
servicios de cifrado en el Mercado Interior.
•
Establecer un marco europeo (internacional) para las firmas digitales.
Esta Comunicación anuncia la intención de la Comisión de proponer una legislación que
cubra estos dos objetivos durante el primer semestre de 1998.
Actualmente el uso de firmas digitales exige el ajuste y la armonización de diversas áreas. La
mayor parte de los problemas se centran en los siguientes puntos:
Ø Ausencia de requisitos uniformes para las autoridades de certificación.
Ø Ausencia de requisitos uniformes para los productos de firma digital.
Ø Ausencia de normas uniformes en materia de responsabilidad.
Ø Ausencia de normas uniformes respecto al reconocimiento legal de las firmas
digitales y su eficacia probatoria.
La evidente naturaleza de las firmas digitales, que traspasa las fronteras de cada país, exige el
reconocimiento mutuo de los requisitos legales establecidos en esta materia por cada Estado,
con el fin de evitar la fragmentación del comercio electrónico en el Mercado Interior.
Posibles soluc iones a implementar
En la comunicación se propone la siguiente estrategia a seguir:
Ø Establecer un marco comunitario para las firmas digitales con el fin de que la
regulación de cada Estado no genere barreras internas para el comercio electrónico.
Ø Determinar requisitos comunes para las autoridades de certificación en Europa.
Ø El sistema jurídico de cada Estado debe reconocer y tratar las firmas digitales de
manera idéntica a las firmas convencionales.
Ø La interoperabilidad entre diferentes sistemas de cifrado y firma digital es
absolutamente necesaria.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 52 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Síntesis de la normativa aplicada a la firma digital de documentación,
focalizándose la misma en el decreto 427/98 de la República Argentina y el
proyecto de Ley de Firma Digital de Alemania
Una Firma Digital es el resultado de la aplicación de ciertos procedimientos técnicos a un
Documento Digital utilizando un sistema criptográfico extremadamente seguro.
La implementación de esta tecnología permitirá a la Administración Pública Nacional hacer
más eficientes sus circuitos administrativos, al hacer posible la identificación fehaciente del autor
y/o emisor de la información, y al otorgar garantías de que el documento digital no ha sido
alterado desde el momento de su firma.
Consciente de esta situación, la Secretaría de la Función Pública integra desde hace dos
años el Subcomité de Criptografía y Firma Digital y ha dedicado importantes esfuerzos a
viabilizar la introducción de esta tecnología. Como resultado, el 16 de abril de 1998, el
Presidente de la Nación, Dr. Carlos Saúl Menem, firmó el Decreto Nº 427/98, que permite el uso
de esta tecnología para los actos internos del Sector Público Nacional que no produzcan efectos
jurídicos individuales en forma directa, y sienta las bases para la creación de una Infraestructura
de Autoridades Certificantes de la Administración Pública Nacional. En el marco de esta
normativa, la Secretaría de la Función Pública es autoridad de aplicación.
En la Resolutiva Final del 16 Abril 1998, se enunció:
"…” VISTO los Decretos Nros.: 660 del 24 de junio de 1996 y 998 del 30 de agosto de 1996, la
Resolución Nº 45 del 17 de marzo de 1997 de la SECRETARIA DE LA FUNCION PUBLICA de la
JEFATURA DE GABINETE DE MINISTROS, y considerando:
•
"…” la necesidad de optimizar la actividad de la Administración Pública Nacional
adecuando sus sistemas de registración de datos, tendiendo a eliminar el uso del
papel y automatizando sus circuitos administrativos, amerita la introducción de
tecnología de última generación, entre las cuales se destacan aquellas relativas al
uso de la firma digital, susceptible de la misma o superior garantía de confianza que
la firma ológrafa "…” considerando necesario estimular la difusión de las citadas
tecnologías a través del dictado de una norma de jerarquía superior, que promueva
la extensión del uso de la firma digital a todo el ámbito del Sector Público Nacional
"…”
•
Que el mecanismo de la firma digital cumple con la condición de no repudio "…”
•
"…” establecer una Infraestructura de Firma Digital para el Sector Público Nacional
“…”
•
Que las funciones del Organo Auditante recaigan en la CONTADURIA GENERAL
DE LA NACION,
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 53 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
•
Que la presente medida se dicta en uso de las facultades conferidas por el Artículo
99 inciso 1º de la CONSTITUCION NACIONAL2.
A partir de las necesidad de los puntos anteriormente explicados acerca de la firma digital, es
que el Presidente argentino aprobó el Decreto Nro. 427, el cual se detalla a continuación Artículo
por Artículo, y en donde por cada artículo se extrae el concepto más importante de cada uno.
Decreto Nro. 427
ARTÍCULO 1º- Autorízase por el plazo de dos años, a contar del dictado de los manuales de
procedimiento y de los estándares aludidos en el artículo 6° del presente Decreto, el empleo de
la firma digital en la instrumentación de los actos internos del Sector Público Nacional, que no
produzcan efectos jurídicos individuales en forma directa "…” En el régimen del presente Decreto
la firma digital tendrá los mismos efectos de la firma ológrafa, siempre que se hayan cumplido los
recaudos establecidos en el Anexo I y dentro del ámbito de aplicación definido en el artículo 3.
ARTÍCULO 2°- Los términos del este reglamento tendrán los alcances definidos en el Glosario que
como Anexo II integra el presente Decreto.
ARTÍCULO 3º- El siguiente Decreto se aplicara a todo el ámbito del Sector Público Nacional,
dentro del cual se comprende
•
•
•
•
•
•
•
Administración centralizada y la descentralizada,
Entes autárquicos,
Empresas del Estado,
Sociedades del Estado,
Sociedades Anónimas con participación estatal mayoritaria,
Bancos y entidades financieras oficiales
Todo otro ente, cualquiera que sea su denominación o naturaleza jurídica, en el que
el Estado Nacional o sus organismos descentralizados tengan participación
suficiente para la formación de sus decisiones.
ARTÍCULO 4º- Los organismos del Sector Público Nacional deberán arbitrar los medios que
resulten adecuados para extender el empleo de la tecnología de la firma digital "…”
ARTÍCULO 5º- La correspondencia entre una clave pública, elemento del par de claves que
permite verificar una firma digital, y el agente titular de la misma, será acreditada mediante un
certificado de clave pública emitido por una Autoridad Certificante Licenciada. Los requisitos y
condiciones para la vigencia y validez de los certificados de clave pública (emisión, aceptación,
revocación, expiración y demás contingencias del procedimiento), así como las condiciones bajo
las cuales deben operar las Autoridades Certificantes Licenciadas integrantes de la
Infraestructura de Firma Digital para el Sector Público Nacional, quedan establecidas en el citado
Anexo I.
ARTÍCULO 6º- "…” la Secretaría de la Función Pública, es la Autoridad de Aplicación del presente
Decreto, estando facultada, además, para dictar los manuales de procedimiento de las
Autoridades Certificantes Licenciadas y de los Organismos Auditante y Licenciante, y los
2
Art. 99: Atribuciones del Poder Ejecutivo: El presidente de la Nación tiene las siguientes atribuciones: Inciso 1: Es el
jefe supremo de la nación, jefe del gobierno y responsable político de la administración general del país.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 54 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
estándares tecnológicos aplicables a las claves "…” cuyos contenidos deberán reflejar el último
estado del arte "…”
ARTÍCULO 7º- "…"
ARTÍCULO 8º- La Secretaría de la Función Pública de la Jefatura de Gabinete de Ministros
cumplirá las funciones de Organismo Licenciante con los alcances definidos en el Anexo I del
presente Decreto.
ARTÍCULO 9º- La Contaduría General de la Nación "…” cumplirá las funciones de Organismo
Auditante en los términos de lo establecido en el Anexo I del presente Decreto "…”
ARTÍCULO 10º- "..."
ARTÍCULO 11º- "..."
ARTÍCULO 12º- Comuníquese, publíquese, dése a la Dirección Nacional del Registro Oficial y
archívese.
Luego de sintetizar los artículos del decreto, se analiza de la misma forma en cuanto a su
contenido los Anexos I y II correspondientes a la Infraestructura de Firma Digital para el Sector
Publico Nacional
Anexo I: Infraestructura de Firma Digital para el Sector Público Nacional
Organismo Licenciante
Funciones:
•
•
•
•
•
•
Otorga, deniega y revoca las licencias para las autoridades certificantes y emite
certificados de clave pública, que permiten verificar las firmas digitales de los certificados
que éstas emitan;
Verifica que las autoridades certificantes licenciadas utilicen sistemas técnicamente
confiables;
Considera para su aprobación el manual de procedimientos y el plan de seguridad;
Acuerda con el organismo auditante el plan de auditoría para las autoridades
certificantes licenciadas;
Dispone la realización de auditorías y resuelve los conflictos individuales que se susciten
entre el suscriptor de un certificado y la autoridad certificante licenciada emisora del
mismo;
Resuelve todas aquellas contingencias respecto a la Infraestructura de firma digital.
Obligaciones:
•
•
•
•
Abstenerse de generar, exigir, conocer o acceder bajo ninguna circunstancia, a la clave
privada de cualquier SUSCRIPTOR de los certificados que emita;
Mantener el control de su propia clave privada e impedir su divulgación;
Revocar su propio certificado de clave pública frente al compromiso de su clave privada;
Permitir el acceso público permanente a los certificados de clave pública que ha emitido,
por medio de conexiones de telecomunicaciones públicamente accesibles.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 55 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
•
•
•
•
Permitir el ingreso de los funcionarios autorizados del organismo auditante a su local
operativo, poner a su disposición toda la información necesaria, y proveer la asistencia
del caso;
Publicar su propio certificado DE Clave Publica en el Boletín Oficial, y en DOS (2) diarios
de difusión nacional, durante TRES (3) días consecutivos a partir del día de su emisión;
Revocar los certificados emitidos en favor de las autoridades certificantes licenciadas
cuando las claves públicas que en ellos figuran dejan de ser TECNICAMENTE
CONFIABLES;
Registrar las presentaciones que le sean formuladas, así como el trámite conferido a
cada una de ellas.
Organismo Auditante
Funciones:
•
•
•
Audita:
• al organismo licenciante
• a las autoridades certificantes licenciadas;
• a las autoridades certificantes previo a la obtención de sus licencias;
• a las autoridades certificantes licenciadas a solicitud del organismo licenciante;
Acuerda con el organismo licenciante el plan de auditoría
Efectúa las revisiones de cumplimiento de las recomendaciones formuladas en las
auditorías.
Obligaciones:
•
•
•
•
•
•
•
Utilizar técnicas de auditoría apropiadas en sus evaluaciones;
Evaluar:
• la confiabilidad y calidad de los sistemas utilizados
• la integridad, confidencialidad y disponibilidad de los datos,
• el cumplimiento con las especificaciones del manual de procedimientos
• el plan de seguridad
Verificar que se utilicen sistemas TECNICAMENTE CONFIABLES;
Emitir informes de auditoría con los hallazgos, conclusiones y recomendaciones en cada
caso;
Realizar revisiones de seguimiento de las auditorías, para determinar si el organismo
auditado ha tomado las acciones correctivas que surjan de las recomendaciones;
Emitir informes con las conclusiones de las revisiones de seguimiento de auditorías;
Intervenir en los simulacros de planes de contingencia.
Autoridad Certificante Licenciada
Funciones:
•
Emite certificados de Clave Publica;
Condiciones:
a) recibir del agente requeriente una solicitud de emisión de certificado de clave pública,
firmada digitalmente con la correspondiente clave privada;
b) verificar fehacientemente la información identificatoria del solicitante,
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 56 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
•
•
La autoridad certificante licenciada puede, opcionalmente, incluir en un certificado
información no verificada, debiendo indicar claramente tal cualidad.
Revoca certificados de clave pública;
a) por solicitud de su Suscriptor; o de un Tercero; o
b) si llegara a determinar que un certificado fue emitido en base a una información falsa,
o
c) si llegara a determinar que las Claves Publicas contenidas en los certificados dejan de
ser T ECNICAMENTE CONFIABLES
Provee, opcionalmente, el servicio de Sellado Digital de Fecha y Hora.
Obligaciones:
Adicionalmente a sus obligaciones emergentes como suscriptora de su certificado emitido por el
organismo licenciante, la autoridad certificante licenciada debe:
•
•
•
•
•
•
•
•
•
Abstenerse de generar, exigir, o por cualquier otro medio tomar conocimiento o acceder
bajo ninguna circunstancia, a la clave privada del suscriptor;
Mantener el control de su clave privada e impedir su divulgación;
Solicitar inmediatamente la revocación de su certificado, cuando tuviera sospechas
fundadas de que su clave privada ha sido comprometida;
Solicitar al organismo licenciante la revocación de su certificado cuando la clave publica
en él contenida deje de ser Técnicamente Confiable;
Informar inmediatamente al organismo licenciante sobre cualquier cambio en los datos
contenidos en su certificado, o sobre cualquier hecho significativo que pueda afectar la
información contenida en el mismo;
Operar utilizando un sistema Técnicamente Confiable;
Notificar al solicitante sobre las medidas necesarias que éste está obligado a adoptar
para crear Firmas Digitales seguras y para su verificación confiable; y de las obligaciones
que éste asume por el sólo hecho de ser suscriptor de un certificado de clave pública;
Mantener la documentación respaldatoria de los certificados emitidos por DIEZ (10) años
a partir de su fecha de vencimiento o revocación;
Permitir el acceso público permanente a los certificados que ha emitido, y a la Lista de
certificados revocados, por medio de conexiones de telecomunicaciones públicamente
accesibles.
Cese de Actividades:
•
•
Los certificados emitidos por una autoridad certificante licenciada que cesa en sus
funciones se revocarán a partir del día y la hora en que cesa su actividad, a menos que
sean transferidos a otra autoridad certificante licenciada.
Si los certificados son transferidos a otra autoridad certificante licenciada, toda la
documentación pertinente también deberá ser transferida a ella.
Requisitos para obtener la licencia de autoridad certificante:
La autoridad certificante que desee obtener una licencia deberá:
1. Presentar una solicitud;
2. Contar con un dictamen favorable emitido por el organismo auditante;
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 57 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
3. Someter a aprobación del organismo licenciante el manual de procedimientos, el plan de
seguridad y el de cese de actividades, así como el detalle de los componentes técnicos a
utilizar;
4. Emplear para el ejercicio de las actividades de certificación, personal técnicamente
idóneo;
5. Presentar toda otra información relevante al proceso de otorgamiento de licencias que
sea exigida por el organismo licenciante.
Suscriptor De Certificado De Clave Pública
Obligaciones del suscriptor:
Proveer todos los datos requeridos por la autoridad certificante licenciada bajo declaración
jurada;
Mantener el control de su clave privada e impedir su divulgación;
Informar inmediatamente a la autoridad certificante licenciada:
sobre cualquier circunstancia que pueda haber comprometido su clave privada licenciada
cuando cambie alguno de los datos contenidos en el certificado que hubieran sido objeto de
verificación.
Certificados de Clave Pública
El certificado de clave pública contendrá, como mínimo, los siguientes datos:
Suscriptor
Nombre
Documento
Tipo
Número
Clave Pública
Algoritmo a utilizar con la Clave Pública
Número de Serie
Período de Vigencia
Autoridad Certificante Licenciada Emisora
Firma Digital (identificando algoritmos utilizados)
Tabla 2 – C ertificado de C lave Públic a
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 58 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Condiciones de Validez del Certificado de Clave Pública
Condiciones sine qua non para la validez de un certificado:
1. HA SIDO EMITIDO POR UNA AUTORIDAD CERTIFICANTE LICENCIADA;
2. NO HA SIDO REVOCADO;
3. NO HA EXPIRADO.
Borrador del proyecto de ley de Firma Digital Ale mana:
A continuación se detallan y sintetizan los artículos que conforman el proyecto de ley de
Firma Digital Alemana. Los artículos que no poseen ningún tipo de aclaración es porque se han
analizado en la reglamentación Argentina, y el objeto de los artículos es de similar contenido; y
aquellos que sí son aclarados es porque no están contemplados en el decreto.
ARTÍCULO 1. Objetivo y Area de Aplicación
4. El propósito de esta ley es crear las condiciones generales para las firmas digitales bajo
las cuales se las pueda considerar seguras y que las falsificaciones de firmas digitales y
las falsificaciones de información firmada puedan ser verificadas sin lugar a duda.
5. La aplicación de otros procedimientos para firmas digitales está permitida en la medida
que las firmas digitales no son requeridas legalmente bajo esta ley.
ARTÍCULO 2. Definiciones
ARTÍCULO 3. La Autoridad
ARTÍCULO 4. Otorgamiento de licencias para certificadores
ARTÍCULO 5. Emisión de certificados de claves de firmas y sellos de fecha y hora
ARTÍCULO 6. Deber de informar
El certificador deberá informar al solicitante en lo referente al articulo 5 párrafo 1
concerniente a las medidas necesarias para contribuir a asegurar la firma digital y su
verificación confiable. Deberá informar al solicitante respecto a los componentes técnicos
que cumplan los requerimientos “…"
ARTÍCULO 7. Contenido de los certificados
ARTÍCULO 8. Bloqueo de certificados
ARTÍCULO 9. Sello de Fecha y Hora
ARTÍCULO 10. Documentación
ARTÍCULO 11. Cese de las actividades
ARTÍCULO 12. Protección de la información
ARTÍCULO 13. Control e Implementación de Responsabilidades.
ARTÍCULO 14. Componentes técnicos
1. Para la generación y almacenamiento de claves de firma y la generación y verificación
de firmas digitales, se deberán utilizar componentes técnicos que tengan características
seguras que hagan confiablemente detectable la falsificación de firmas digitales y la
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 59 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
falsificación de información firmada, y que protejan contra el uso no autorizado de las
claves de firma privadas.
2. Los componentes técnicos utilizados para generar firmas digitales deberán permitir que
el firmante identifique en forma confiable y previa la información que va a firmar. Para la
verificación de la información firmada, se deberán usar aquellos componentes técnicos
que tengan características seguras que permitan determinar que la información no ha
sido alterada, a cual información se refiere la firma digital y a cual propietario de la clave
de firma se le atribuye la firma digital.
3. "..."
ARTÍCULO 15. Certificados extranjeros
1. Las firmas digitales que se puedan verificar con una clave pública de firma para la cual
exista un certificado extranjero de otro Estado miembro de la Unión Europea o de otro
Estado firmante del Tratado en el Area Económica Europea son equivalentes a firmas
digitales según esta ley, en tanto puedan demostrar un nivel de seguridad equivalente.
2. El párrafo 1 también se aplica a otros Estados en la medida en que se suscriban
acuerdos internacionales relativos al reconocimiento de certificados.
3. "…"
ARTÍCULO 16. Ordenanza Legal
El gobierno federal tiene el poder para promulgar a través de la Ordenanza Legal las
disposiciones necesarias para implementar según los Artículos 3 a 15:
1. Los detalles de los procedimientos para otorgar, transferir y revocar una licencia, así
como el procedimiento de cese de las actividades licenciadas;
2. Las circunstancias que originan honorarios según el Articulo 4 párrafo 6, y el monto
de los honorarios;
3. Los detalles de las obligaciones de los certificadores;
4. El periodo de validez de los certificados de clave de firma;
5. Los detalles de la estructura de control sobre los certificadores;
6. Los detalles de los requisitos de los componentes técnicos, así como la verificación
de los componentes técnicos y la confirmación de que los requisitos hayan sido
cumplidos;
7. El plazo en el cual debería comenzar a usarse una nueva firma digital, así como los
procedimientos asociados.
(Nota general: Este proyecto de ley no especifica la responsabilidad civil de los
certificadores.)
Reglamentación
Borrador Final, 20 de diciembre de 1996.
ARTÍCULO 1. Procedimiento para el Otorgamiento y la Revocación de Licencias
ARTÍCULO 2. Costos
3. Se impondrán costos (honorarios y gastos) para los siguientes servicios públicos:
1. El otorgamiento de una licencia o su rechazo;
2. La revocación de una licencia;
3. La denegación total o parcial de una apelación;
4. La emisión de certificados;
5. La verificación de informes de auditoría según lo expresado en el Artículo 15,
párrafo 2 así como también de los controles según el Artículo 15, párrafo (3);
6. La transferencia de documentación según lo expresado en el artículo 11, párrafo
(2) de la Ley de Firma Digital.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 60 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Se deberán utilizar las siguientes tarifas horarias como base para el cálculo de
honorarios para servicios públicos, según los expresado en “…"
ARTÍCULO 3. Procedimiento de solicitud
ARTÍCULO 4. Instrucción del solicitante
ARTÍCULO 5. Creación y Almacenamiento de claves de firma e información de identificación
1. Si el propietario de la clave de firma genera sus propias claves de firma, entonces el
certificador deberá convencerse de que dicho propietario de clave de firma utilizó
componentes técnicos apropiados "…”
2. Si las claves de firma o los datos de identificación según lo expresado en el párrafo (1),
sentencia 2 son provistos por el certificador, éste deberá tomar las medidas necesarias
para evitar la divulgación inadvertida de las claves privadas o de los datos de
identificación, como así también evitar su almacenamiento por parte del certificador.
(Nota: Debe evitarse el almacenamiento con posterioridad a su generación.)
ARTÍCULO 6. Distribución de claves de firma e Información de identificación
ARTÍCULO 7. Validez de los certificados
1. El período de validez de un certificado no puede exceder los 3 años. El lapso entre la
emisión y el comienzo del período de validez de un certificado, no podrá exceder los seis
meses.
2. El período de validez de un certificado de atributo no podrá superar el período de validez
del certificado de clave de firma al cual se refiere.
ARTÍCULO 8. Registros públicos de certificados
1. El certificador deberá registrar los certificados emitidos por él, por un plazo de al menos
10 años a partir del comienzo de su validez, en un registro de acuerdo con las
disposiciones del artículo 5, párrafo (1), sentencia 2 de la Ley de Firma Digital.
2. La Autoridad deberá registrar los certificados emitidos por ella, por un plazo de al menos
15 años desde el comienzo de su validez, en un registro de acuerdo con las
disposiciones del artículo 4, párrafo (5), sentencia 3 de la Ley de Firma Digital. Si se
reconocen certificados extranjeros, lo anterior también se aplica a las claves públicas de
firma de los más altos certificadores de dichos países. La Autoridad deberá publicar en el
Boletín Federal las conexiones de telecomunicaciones bajo las cuales puede accederse
a los certificados.
ARTÍCULO 9. Procedimiento para el bloqueo de certificados
1. El certificador deberá dar a conocer a los propietarios de claves de firma y a los terceros
cuya información se encuentra incorporada en un certificado, así como a la Autoridad, un
número telefónico por medio del cual podrán hacer que se bloquee inmediatamente un
certificado.
2. "…” el bloqueo de certificados deberá ser indicado inequívocamente en el registro según
lo expresado en el artículo 8, con indicación del momento preciso, y no podrá ser
revocado "…”
ARTÍCULO 10. Confiabilidad del Personal: "…” El certificador deberá convencerse de la
confiabilidad de las personas que asisten en la emisión de los certificados de claves de firma o
de sellados de fecha y hora "…”
ARTÍCULO 11. Protección de componentes técnicos: El certificador deberá tomar medidas
necesarias para proteger contra accesos no autorizados a los componentes técnicos y a las
claves de firma privadas utilizadas la creación de certificados y sellados de fecha y hora.
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 61 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
ARTÍCULO 12. Plan de seguridad
ARTÍCULO 13. Documentación
ARTÍCULO 14. Cese de Actividades
ARTÍCULO 15. Control de certificadores
ARTÍCULO 16. Requerimientos para componentes técnicos
4. Los componentes técnicos necesarios para la creación de las claves de firma deberán
diseñarse de modo tal que, con un grado casi absoluto de certeza, cada clave ocurra
sólo una vez y la clave privada no pueda ser calculada a partir de la clave pública. Se
debe asegurar la confidencialidad de la clave privada, la cual no debe poder copiarse
"…”
5. Los componentes técnicos necesarios para la creación o verificación de firmas digitales
deben ser diseñados de manera tal que la clave privada de firma no pueda ser calculada
a partir de la firma, y que la firma no pueda ser falsificada de otro modo. Debe ser
posible utilizar la clave privada de firma sólo después de la identificación del propietario,
a través de la posesión y del conocimiento, y no debe ser revelada durante el uso.
Pueden utilizarse otras características, tales como las biométricas, para la
identificación del propietario de la clave de firma. Los componentes técnicos
necesarios para recoger los datos de identificación se deben diseñar de manera tal que
dichos datos no sean revelados "…”
6. Los componentes técnicos utilizados para mantener o acceder en forma verificable a los
certificados, según lo expresado en el artículo 5, párrafo (1), sentencia 2 de la Ley de
Firma Digital, deben diseñarse de manera tal que sólo personal autorizado pueda
efectuar entradas y cambios, que el desbloqueo de un certificado bloqueado no pueda
pasar desapercibido, y que pueda ser verificada la autenticidad de los informes. Sólo los
certificados que son mantenidos en forma verificable no necesitan ser accedidos
públicamente. Cualquier cambio en los componentes técnicos respecto a las técnicas de
seguridad debe poder ser reconocido por el operador.
7. La Autoridad deberá mantener un catálogo de las medidas de seguridad apropiadas, que
será publicado en el Boletín Federal, cuyas medidas deberán ser tenidas en cuenta en lo
que respecta a los componentes técnicos. El catálogo deberá elaborarse sobre la base
de la información de la Oficina Federal para la Seguridad en Tecnología de la
Información, en consulta con expertos de las áreas científica y comercial.
ARTÍCULO 17. Verificación de los componentes técnicos
8. Los componentes técnicos deben ser verificados con respecto al cumplimiento de los
requerimientos de los "Criterios para la Evaluación de la Seguridad de los Sistemas de
Tecnología de la Información", como sigue "…”
ARTÍCULO 18. Firmas Digitales renovadas después de un cierto plazo
1. Si la información se necesita en forma firmada por un tiempo prolongado, deberá
contener la fecha de emisión y deberá ser firmada nuevamente con una firma digital que
contenga un sellado de fecha y hora dentro de los 5 años a más tardar. Si las firmas
digitales anteriores han retenido su valor de seguridad, la nueva firma debe incluirlas.
2. Si la confirmación de seguridad de los componentes técnicos usados para la creación de
firmas digitales se extiende según lo expresado en el artículo 17, párrafo 2, entonces el
plazo mencionado en párrafo (1) se extiende correspondientemente.
ARTÍCULO 19. Entrada en vigencia
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 62 de 63
Criptografía y Seguridad Electrónica
Trabajo Práctico Final
Bibliografía
[Stinson, 1995]:
[Schneier, 1996]:
[Corripio, 1979]:
[CGC, 1998]:
[Microsoft, 1997]
[Intellitrak]
[Miros]
[NewMarket]
[PenOp]
[Qvoice]
[Sensar]
[Visage]
[Iriscan]
[FDAlem]
D. R. Stinson, “Cryptography, theory and practice”, CRC Press, 1995.
Bruce Schneier, “Applied Cryptography, 2nd Edition: protocols, algorithms,
and source code in C”, John Wiley & Sons, 1996.
Fernando Corripio, “Diccionario Etimológico General de la Lengua
Castellana”, Editorial Bruguera, 1979.
Congreso General Constituyente, “Constitución de la Nación Argentina”,
22 de Agosto de 1994.
Microsoft , “Visual Basic Books Online”, Microsoft Press, 1997.
Intellitrak Technologies Inc., Voice, www.intellitrak.com
Miros Inc, Face Recognition, www.miros.com
New Market Solutions, Fingerprint, Retinal Scanning,
www.cardsolutions.com
PenOp Inc, Signature Verification, www.penop.com
Qvoice Inc, Facial Biometrics, Voice, Fingerprint, www.qvtrek.com
Sensar Inc., Iris Scan, www.sensar.com
Visage Technology, Facial Biometrics, www.viisage.com
Iriscan Inc, Iris Scan, www.iriscan.com/basis.htm
Traducción al castellano de legislación alemana, Firma Digital,
www.spf.gov.ar
66-69 Criptografía y Seguridad Informática
Facultad de Ingeniería Universidad de Buenos Aires
Página 63 de 63
Descargar