Firma Digital De Documentos - Universidad De Buenos Aires

   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

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