Ensayo 3

Cifrado Asimétrico
Se basa en el uso de dos claves: la pública (que se podrá difundir sin ningún problema a todas las personas que necesiten mandarte algo cifrado) y la privada (que no debe de ser revelada nunca).
solo cifra una persona (con la clave pública) y la otra se limita a mirar el contenido, por lo que la forma correcta de tener una comunicación bidireccional sería realizando este mismo proceso con dos pares de claves, o una por cada comunicador.


¿Qué es RSA?
El sistema criptográfico con clave pública RSA es un algoritmo asimétrico cifrador de bloques, que utiliza una clave pública, la cual se distribuye (en forma autenticada preferentemente), y otra privada, la cual es guardada en secreto por su propietario.
Una clave es un número de gran tamaño, que una persona puede conceptualizar como un mensaje digital, como un archivo binario o como una cadena de bits o bytes.
Cuando se envía un mensaje, el emisor busca la clave pública de cifrado del receptor y una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.
Los mensajes enviados usando el algoritmo RSA se representan mediante números y el funcionamiento se basa en el producto de dos números primos grandes (mayores que 10100) elegidos al azar para conformar la clave de descifrado.
Emplea expresiones exponenciales en aritmética modular.
La seguridad de este algoritmo radica en que no hay maneras rápidas conocidas de factorizar un número grande en sus factores primos utilizando computadoras tradicionales.
El algoritmo RSA es un algoritmo de clave pública desarrollado en 1977 en el MIT por Ronald Rivest, Adi Shamir y Leonard Adelman.
Fue registrado el 20 de Septiembre de 1983. El 20 de Septiembre del 2000, tras 17 años, expiró la patente RSA, pasando a ser un algoritmo de dominio público.
Este popular sistema se basa en el problema matemático de la factorización de números grandes.
El algoritmo RSA funciona de la siguiente manera:
  1. Inicialmente es necesario generar aleatoriamente dos números primos grandes, a los que llamaremos p y q.
  2. A continuación calcularemos n como producto de p y q: n = p * q
  3. Se calcula fi: fi(n)=(p-1)(q-1)
  4. Se calcula un número natural e de manera que MCD(e, fi(n))=1 , es decir e debe ser primo relativo de fi(n).
    Es lo mismo que buscar un numero impar por el que dividir fi(n) que de cero como resto.
  5. Mediante el algoritmo extendido de Euclides se calcula d: e.d mod fi(n)=1 Puede calcularse d=((Y*fi(n))+1)/e para Y=1,2,3,… hasta encontrar un d entero.
  6. El par de números (e,n) son la clave pública.
  7. El par de números (d,n) son la clave privada.
  8. Cifrado: La función de cifrado es C = M^e mod n
  9. Descifrado: La función de descifrado es M = C^d mod n
Diffie - Helman
Creado por Whitfield Diffie y Martin Hellman en 1976.
  • Publicado en el periódico New Directions in Criptography.
  • Se trata básicamente de un protocolo que basa su seguridad en el problema del logaritmo discreto y que permite a dos usuarios intercambiar una clave secreta a través de un medio inseguro, dicho protocolo también es conocido como "el cambio de clave de Diffie-Hellman".
    Descripción del algoritmo:
    1. Los usuarios A y B seleccionan públicamente un grupo G de orden n que sea un número primo p y un elemento alfa.
    2. Agenera un número aleatorio a, calcula alfa en G y envía el resultado a B.
    3. B genera un número aleatorio b, calcula alfa en G y envía el resultado a A.
    4. A recibe alfa y calcula alfa en G.
    5. B recibe alfa y calcula alfa en G.
    De este modo A y B poseen un elemento común secreto: alfa.
    Como puede apreciarse en la descripción anterior, el algoritmo por sí sólo no utiliza autenticación, por lo que su implementación es comúnmente acompañada de la utilización de firmas digitales ya que de no hacerlo se podría tener un ataque de hombre en medio.

    Digital Signature Standard - DSS
    Éste solo provee autenticación y no encriptado, esto hace que aquellos productos que usen este estándar sea exportables.
    DSS utiliza un algoritmo de clave pública para realizar la firma de los datos. Puede ser implementado con DSA (Digital Signature Algorithm), RSA (véase Criptografía Asimétrica) o ECDSA (Elliptic Curve Digital Signature Algorithm).
    Utiliza una función hash para obtener una versión condensada de los datos, que será la entrada al algoritmo para generar la firma digital. La firma digital es enviada, junto con el mensaje al destinatario (utilizando algún sistema de encriptado). Este último verifica la firma usando la clave pública del emisor para desencriptar el resumen firmado y la misma función hash utilizada para generar el mensaje para comprobar que dicho resumen corresponde al mensaje recibido. La función hash utilizada por DSS es SHS (también conocido como Algoritmo de Hash estándar - SHA). De esta forma, la firma digital lograda con DSS permite autenticar tanto la integridad de los datos firmados como la identidad de la entidad que emitió el mensaje.

    Criptografía de curva elíptica
    "Si en el caso del
    algoritmo RSA, el problema consistía en factorizar números, en la ECC se
    trata de obtener logaritmos. Por si alguien no tiene fresco el
    concepto, recordemos. Supongamos que tenemos una expresión del tipo
    a^x=b, donde el signo ^ quiere decir “elevado a”. Para “despejar” x,
    utilizamos la operación inversa a la potenciación, y eso es el
    logaritmo. Esto es, si a^x=b, entonces x=Log(a)b, lo que se lee “x es
    el logaritmo en base a de b” Si a=10, hablamos de logaritmos decimales,
    y si a es el número e (=2.71828…), tenemos logaritmos naturales o
    neperianos.
    Bueno, en principio hallar un logaritmo no comporta mayor
    problema que hallar una potencia. Así que vamos a complicar las cosas
    en seguida. En primer lugar, necesitaremos un grupo. No se trata de
    una agrupación de personas. En álgebra, un grupo es un conjunto de
    elementos unidos a una operación matemática. Dicha operación matemática
    (llamémosla *) debe cumplir las siguientes propiedades:
    – Si a,b son elementos del grupo, su combinación a*b también es
    un elemento del grupo
    – La operación cumple la propiedad asociativa: a*(b*c)=(a*b)*c
    – Existe el elemento neutro 1, tal que 1*a=a*1 para cualquier a
    – Existe el elemento opuesto, y, tal que x*y=y*x=1.
    Por ejemplo, el conjunto de números enteros con la operación
    suma (y el cero como elemento neutro) formaría un grupo.
    Existen muchos tipos de grupos. Los que nos interesan se
    denominan “grupos cíclicos”. Un grupo cíclico se caracteriza porque
    todos sus elementos se pueden obtener mediante un sólo elemento, llamado
    generador. Si la operación es la multiplicación, se denomina grupo
    cíclico multiplicativo. Como ejemplo, podemos tomar el grupo formado
    por las cuatro raíces cuartas de 1: +1,-1,+i,-i (i es la raíz cuadrada
    de uno). El número i puede servir de multiplicador. En efecto:
    i*(+1) = i
    i*(+i) = -1
    i*(-1) = -i
    i*(-i) = 1
    El concepto de grupo multiplicativo nos permite complicar la
    obtención de logaritmos. Supongamos un grupo G con n elementos, y sea b
    un generador. Eso significa que podemos obtener todos los elementos del
    grupo como {1, b, b^2, b^3 … b^(n-1)}. Es decir, habrá un número
    entero k de forma que podamos escribir g=b^k para cualquier número g del
    grupo. En realidad, existen muchos números enteros k que cumplan esta
    propiedad. Por ejemplo, el número k’=k+n también nos vale, puesto que
    b^(k+n)=(b^k)*(b^n),y b^n=1. Esto nos dice que cualesquiera dos enteros
    k,k´ capaces de representar el elemento g son congruentes módulo n (o
    dicho de otra forma: nos dan el mismo resto al dividirlos por n).
    Me huelo la cara que estará poniendo. Así que, antes de que
    pierda usted el apetito, vamos a aderezar el guiso con el elemento
    filipino: los logaritmos discretos. ¿Recuerda? Bien, se trataba de que
    si a^x=b, entonces x=Log(a)b. Aquí tenemos algo muy similar. La
    diferencia es que, en lugar de movernos por todo el campo de los números
    reales, nos restringiremos al grupo cíclico G. El LOGARITMO DISCRETO de
    g en base b es la operación inversa a la potenciación: si g=b^k,
    entonces k=Log(b)g.
    En el caso de nuestro grupo, tendríamos b=i, k=0,1,2,3:
    b^k=g k=Log(b)g.
    i*1 = i 1 = Log(i)i
    i*2 = -1 2 = Log(i)(-1)
    i*3 = -i 3 = Log(i)(-i)
    i*4 = 1 4 = Log(i)(1)
    Vale, ya está. La salsa está lista. Ahora, la pregunta del
    millón es ¿y esto qué complicación tiene? Nos hemos aburrido como locos
    con todo ese rollo de los grupos multiplicativos, total, para terminar
    haciendo un logaritmo. El problema está cuando el grupo es muy grande.
    En nuestro caso, el número n es pequeño, de forma que he podido generar
    los elementos g como b^k (k=1,2,3,4). Si quiero saber cuál es el
    logaritmo discreto de -i no tengo más que mirar en la tabla y leer
    “i^3=-i”, de forma que la respuesta que busco es k=3.
    Pero, ¿y si el número n es muy grande? ¿Y si es enorme? ¿Y si n
    es 2^100? !Ah! Entonces tengo un problema gordo. !A ver quién se dedica
    a calcular g, g^2, g^3 … hasta g^(2^100)! Calcularlos todos requiere
    un tiempo de ejecución polinómico, lo que nos deja en la cuneta cuando n
    alcanza valores grandes. Es decir, podemos hacer operaciones del tipo
    g=b^k fácilmente, pero su inversa k=Log(b) ya es mucho más difícil. Nos
    recuerda el caso del algoritmo RSA: es fácil multiplicar dos números
    primos grandes, pero resulta mucho más difícil factorizar el producto.
    ¿Y dónde entran las curvas elípticas? Básicamente, y
    simplificando mucho, nos permiten crear el grupo G. Según sea el grupo,
    así de complicado será el problema y, por tanto, así de seguro será el
    esquema a efectos de montar sistemas de cifrado. Por ejemplo, el
    algoritmo de cifrado Diffle-Hellman (bueno, en realidad es de
    intercambio de claves, pero viene a ser lo mismo) usa un grupo que se
    denota como Zn* y que se lee “”grupo multiplicativo de enteros módulo
    n”. No es necesario aquí saber qué significa, así que sean buenos y no
    me obliguen a explicárselo.
    Volvamos a las curvas elípticas. ¿Recuerdan sus tiempos de
    instituto?. La ecuación y=ax+b nos daba una recta, x^2+y^2=r^2
    representaba una circunferencia … y la curva del tipo y^2=x^3+ax+b nos
    da nuestra curva elíptica. Para cada pareja de valores (a,b), la curva
    nos da un montón de puntos (x,y). Añadiremos el “punto en el infinito” a
    efectos de complitud. Ese montón de puntos forma un grupo.
    Es importante distinguir entre dos conceptos: los números x,y
    son reales y forman un campo finito (otro bicho matemático como el
    grupo, pero con propiedades distintas), pero los puntos (x,y) forman un
    grupo. Es como una coordenada en un plano. Si decimos “longitud 4.3,
    latiud 45.8″, los números 4.3 y 45.8 son una cosa, pero el lugar
    geográfico que representan es otra. Por eso suele hablarse de “grupos
    multiplicativos de campos finitos”. Puede parecer complicado, pero por
    lo que parece el problema de logaritmos discretos en los grupos
    generados mediante curvas elípticas es más complejo que el
    correspondiente al grupo de elementos muitlplicativos no nulos
    subyacentes al campo en sí (y si no lo han entendido, lo tachan y ya
    está).
    El esquema sería algo así:
    a) Escogemos una curva elíptica
    b) La curva elíptica tiene un conjunto de soluciones (x,y).
    c) Si los valores x,y pertenecen a un campo finito, entonces los
    puntos (x,y) de la curva forman un grupo
    d) Tomamos un elemento del grupo, y hallamos su logaritmo
    discreto para una base dada. Eso nos servirá de base para establecer
    algoritmos criptográficos de intercambio de claves y de firma digital.
    Mis disculpas por lo engorroso del tema, y coincido con ustedes
    en que quienes inventaron todo ese galimatías debería ser puesto en
    busca y captura. Los “sospechosos habituales” son Victor Millery Neil
    Koblitz, quienes descubrieron la ECC en 1985 como mecanismo alternativo
    para distribución de claves.
    En cualquier caso, el hecho es que la ECC es mucho más compleja que el sistema RSA, tiene más incertidumbres y puede que nos de más de una sorpresa. También es bastante lento, al menos en su implementacióninicial. En el apartado positivo, requiere claves de longitud menor que
    las RSA, aunque todavía mayores que las de los algoritmos simétricos.
    Según el NIST (el instituto de estándares de EEUU), el algoritmo simétrico AES con clave de 128 bits proporciona una seguridad aproximadamente igual a la de ECC con clave de 256 bits … o a la del algoritmo asimétrico RSA con clave de 3072 bits. Quizá el mayor inconveniente del esquema ECC sea legal: según la NSA norteamericana, la empresa Certicom tiene más de 130 patentes en ese campo, lo que seguramente desanima a más de uno. Claro que la propia NSA tiene un acuerdo de licencia con Certicom, y acepta dos algoritmos basados en ECC dentro de su “Suite B” de algoritmos de cifrado y firma. Así que algo debe tener."

    Firma digital
    La firma digital se basa en la propiedad  que un mensaje cifrado utilizando la clave privada de un usuario sólo puede ser descifrado utilizando la clave pública asociada. De tal manera, se tiene la seguridad de que el mensaje que ha podido descifrarse utilizando la clave pública sólo pudo cifrarse utilizando la privada. La firma digital, por tanto, es un cifrado del mensaje que se está firmando pero utilizando la clave privada en lugar de la pública.
    El principal inconveniente de los algoritmos de clave pública: su lentitud que, además, crece con el tamaño del mensaje a cifrar. Para evitar éste problema, la firma digital hace uso de funciones hash. Una función hash es una operación que se realiza sobre un conjunto de datos de cualquier tamaño de tal forma que se obtiene como resultado otro conjunto de datos, en ocasiones denominado resumen de los datos originales, de tamaño fijo e independiente el tamaño original que, además, tiene la propiedad de estar asociado unívocamente a los datos iniciales, es decir, es prácticamente imposible encontrar dos mensajes distintos que tengan un resumen hash idéntico.

    Sello digital
    • Cadena Original, el elemento a sellar, en este caso de una constancia de sueldos, salarios, conceptos asimilados y crédito al salario (Formato 37) y Constancia de pagos y retenciones del ISR, IVA e IEPS (Formato 37-A).
    • Certificado de Firma Electrónica Avanzada y su correspondiente clave privada.
    • Algoritmos de criptografía de clave pública para firma electrónica avanzada.
    • Especificaciones de conversión de la firma electrónica avanzada a Base 64.
    Para la generación de sellos digitales se utiliza criptografía de clave pública aplicada a una cadena original
    La criptografía de Clave Pública se basa en la generación de una pareja de números muy grandes relacionados íntimamente entre sí, de tal manera que una operación de encripción sobre un mensaje tomando como clave de encripción a uno de los dos números, produce un mensaje alterado en su significado que solo puede ser devuelto a su estado original mediante la operación de desencripción correspondiente tomando como clave de desencripción al otro
    número de la pareja.
    Uno de estos dos números, expresado en una estructura de datos que contiene un módulo y un exponente, se conserva secreta y se le denomina “clave privada”, mientras que el otro número llamado “clave pública”, en formato binario y acompañado de información de identificación del emisor, además de una calificación de validez por parte de un tercero confiable, se incorpora a un archivo denominado “certificado de firma electrónica avanzada o certificado para sellos
    digitales”.
    El Certificado puede distribuirse libremente para efectos de intercambio seguro de información y para ofrecer pruebas de autoría de archivos electrónicos o acuerdo con su contenido mediante el proceso denominado “firma electrónica avanzada”, que consiste en una característica observable de un mensaje, verificable por cualquiera con acceso al certificado digital del emisor, que sirve para implementar servicios de seguridad para garantizar: La integridad (facilidad para detectar si un mensaje firmado ha sido alterado), autenticidad, certidumbre de origen (facilidad para determinar qué persona es el autor de la firma y valida el contenido del mensaje) y no repudiación del mensaje firmado (capacidad de impedir que el autor de la firma niegue haber firmado el mensaje).
    Estos servicios de seguridad proporcionan las siguientes características a un mensaje con firma electrónica avanzada:
    • Es infalsificable.
    • La firma electrónica avanzada no es reciclable (es única por mensaje).
    • Un mensaje con firma electrónica avanzada alterado, es detectable.
    • Un mensaje con firma electrónica avanzada, no puede ser repudiado.

    Certificado digital
    Los certificados digitales permiten la identificación exclusiva de una entidad; en esencia, son tarjetas de identificación electrónica emitidas por compañías de confianza. Los certificados digitales permiten a un usuario verificar a quién se ha emitido un certificado, así como el emisor del certificado. Los certificados digitales son el vehículo que SSL utiliza para la criptografía de clave pública. La criptografía de clave pública utiliza dos claves criptográficas diferentes: una clave privada y una clave pública. La criptografía de clave pública también se conoce como criptografía asimétrica, porque puede cifrar la información con una clave y descifrarla con la clave complementaria desde un par de claves pública-privada determinado.
    Los pares de claves pública-privada son simplemente cadenas largas de datos que actúan como claves en un esquema de cifrado de un usuario. El usuario mantiene la clave privada en un lugar seguro (por ejemplo, cifrada en el disco duro de un sistema) y proporciona la clave pública a cualquiera con quien el usuario desee comunicarse. La clave privada se utiliza para firmar digitalmente todas las comunicaciones seguras enviadas desde el usuario; el destinatario utiliza la clave pública para verificar la firma del emisor.
    La criptografía de clave pública se construye a partir de la confianza; el destinatario de una clave pública ha de confiar en que la clave pertenece realmente al emisor y no a un impostor. Los certificados digitales proporcionan esta confianza.
    Un certificado digital sirve para dos finalidades: establece la identidad del propietario y hace que la clave pública del propietario esté disponible. Una autoridad de confianza --una autoridad de certificación (CA)-- emite un certificado digital y sólo se emite para un plazo de tiempo limitado. Cuando pasa la fecha de caducidad, debe sustituirse el certificado digital.


    Bibliografía APA:
    Manuel Lucena. (2007). ¿Qué es RSA?. 10/29/17, de SeguInfo Sitio web: https://seguinfo.wordpress.com/2007/09/14/%C2%BFque-es-rsa/

    UNAM. (2012). Diffie - Helman. 10/29/17, de UNAM Sitio web: http://redyseguridad.fi-p.unam.mx/proyectos/criptografia/criptografia/index.php/5-criptografia-asimetrica-o-de-clave-publica/52-diffie-hellman/521-el-algoritmo

    Textos Cientificos.com. (2006). Firmas digitales y funciones de resumen y certificados. 10/29/17, de Textos Cientificos Sitio web: https://www.textoscientificos.com/redes/firewalls-distribuidos/soluciones-seguridad/firmas-funciones-resumen-certificados

    Seguridad Informatica.com. (2007). ¿Qué es la criptografía de curva elíptica?. 10/29/17, de Seguridad Informatica.com Sitio web: https://seguinfo.wordpress.com/2007/10/02/%C2%BFque-es-la-criptografia-de-curva-eliptica/

    Cert. (2006). Criptografia de Clave Asimétrica Firma digital.. 10/29/17, de Cert Sitio web: http://www.cert.fnmt.es/content/pages_std/html/tutoriales/tuto7.htm

    Robert Novelo. (2008). Generación de sellos digitales para Constancia de sueldos, salarios, conceptos asimilados y crédito al salario. 10/29/17, de Rob Novelo Sitio web: https://www.robnovelo.com/generacion-de-sellos-digitales-para-constancia-de-sueldos-salarios-conceptos-asimilados-y-credito-al-salario/

    IBM. (2010). Certificados digitales. 10/29/17, de IBM Sitio web: https://publib.boulder.ibm.com/tividd/td/TRM/SC23-4822-00/es_ES/HTML/user276.htm









    Comentarios