lunes, 26 de octubre de 2015

Criptografía

anillo de confianza es un concepto usado en PGPGnuPG, y otros sistemas compatibles con OpenPGP para certificar la autenticidad de que una clave privada pertenece a su dueño.1
Se basa en que los participantes en el anillo firman entre sí sus claves públicas con sus llaves privadas, certificando de esta manera que la llave pública pertenece a la persona física a la que se atribuye. La persona que firma debe establecer esta correspondencia sobre la base de un conocimiento externo, como por ejemplo haberse encontrado físicamente con la persona de la que certifica la llave en el mundo real. El interés del concepto está en que todos los demás conocidos del firmante, aunque se encuentren en un lugar remoto, tienen ahora un vínculo que les asegura que pueden confiar en los mensajes (por ejemplo, código de software) firmados con la llave privada de la persona certificada.

Características

El concepto de anillo de confianza fue propuesto por primera vez en 1992 por el creador de PGP Phil Zimmermann en el manual para la versión 2.0 de PGP:
Con el paso del tiempo, usted acumulará claves de otras personas que podría querer designar como introductores de confianza. Todos los demás elegirán sus propios introductores de confianza. Y todos gradualmente acumularán y distribuirán junto con su clave una colección de firmas certificadas por otras personas, en la expectativa de que quien quiera que la reciba confiará por lo menos en una o dos de las firmas. Esto llevará a la aparición (espontánea) de un anillo de confianza descentralizado y resistente a los fallos para todas las claves públicas.
Los participantes en un anillo de confianza deben firmar entre sí sus claves públicas, certificando que avalan la correspondencia entre el nombre atribuido a la clave y la clave en sí misma. Esto sucede a menudo en fiestas conocidas como fiestas de firmado de claves (key signing parties, en inglés).
De este modo se implementa un modelo de confianza descentralizado que contrasta con el modelo centralizado basado en PKI (que sólo considera certificados firmados por autoridades certificadoras). Existen multitud de anillos de confianza, y un usuario puede pertenecer a cuantos de ellos desee.
Las implementaciones compatibles con OpenPGP suelen incluir un sistema de recuento de votos que puede servir para determinar cuáles asociaciones entre dueño y clave pública serán de confianza para un usuario mientras esté usando PGP. Por ejemplo, si tres avalistas parcialmente confiados por el usuario han garantizado un certificado (y por tanto la correspondencia que incluye entre clave pública y dueño), o si un avalista plenamente de confianza ha hecho lo mismo, entonces la correspondencia se tomará como cierta. Los parámetros son ajustables por el usuario; por ejemplo, se puede requerir que no haya votos de avalistas solo parcialmente de confianza, o como mínimo 6 parciales sustituirán a un aval directo, o circunvalar el sistema de votos por completo.

Contraste con el esquema PKI

Por contraste, el esquema PKI formalizado en X.509 solo permite que cada certificado esté firmado por una única entidad: una autoridad de certificación (CA, en sus siglas en inglés). El certificado de la CA puede estar él mismo firmado por una CA diferente, subiendo en una jerarquía de certificados hasta un llegar a uno firmado por sí mismo, también llamado certificado raíz (en inglés, root certificate). Los certificados raíz deben estar disponibles para aquellos que usen una CA de menor nivel y por tanto son ampliamente distribuidos. Por ejemplo, vienen incorporados en aplicaciones como navegadores, clientes de email, y en sistemas operativos como Mac OS X. De esta manera, aquellas páginas web o e-mails protegidos mediante el protocolo SSL/TLS pueden ser autenticados sin necesidad de que el usuario instale manualmente un certificado raíz. Estas aplicaciones comúnmente incluyen más de un centenar de certificados raíz de una docena de PKIs diferentes, otorgando así por defecto confianza a toda la jerarquía de certificados que asciende de nuevo hasta ellos.
El mecanismo de anillo de confianza es flexible, al contrario que la mayoría de arquitecturas de PKI, y deja las decisiones acerca de la confianza en las manos de los usuarios individuales. No es un sistema perfecto y requiere al mismo tiempo precaución y supervisión inteligente por parte de los usuarios. Esencialmente todos los diseños de PKI son menos flexibles y requieren que el usuario siga la cadena de garantías de los certificados generados por la CA.
A cambio, el usuario gana en comodidad y en facilidad de uso con un esquema PKI, puesto que no necesita tener conocimientos técnicos para establecer una comunicación de confianza a través de los mecanismos ya establecidos en su navegador.

Construcción del anillo de confianza

No basta con que una persona quiera usar GnuPG. Para poder usarlo para comunicarse en modo seguro con otros, es necesario que tengamos un anillo de confianza. A primera vista, construir un anillo de confianza es una tarea desalentadora. Las personas con las que nos comunicamos necesitan usar GnuPG[1], y es necesario que haya las suficientes firmas para que las clave sean consideradas válidas. Estos no son problemas de tipo técnico; son problemas de tipo social. Debemos superar estos problemas si queremos usar GnuPG.
En nuestros primeros pasos con GnuPG, es importante darse cuenta de que no necesitamos comunicarnos de modo seguro con todas las personas. Empecemos con un pequeño círculo de amigos, tal vez sólo nosotros y uno ó dos más que también quieran ejercitarse en su derecho a la privacidad. Generemos nuestras claves, y firmémoslas recíprocamente. Éste es nuestro anillo de confianza inicial. Al hacerlo así, apreciaremos el valor de un pequeño, pero robusto anillo de confianza, y seremos más cautos a medida que vaya creciendo nuestro anillo de confianza con el tiempo.
Además de aquéllos en nuestro anillo de confianza iniciático, es posible que deseemos comunicarnos en modo seguro con otros que también están usando GnuPG. Sin embargo, esto puede ser problemático por dos razones: (1) no siempre sabemos cuándo alguien usa o estaría dispuesto a usar GnuPG; (2) si sabemos de alguien que lo usa, todavía es posible que tengamos problemas para validar su clave. El primer motivo sucede porque las personas no siempre hacen público que usan GnuPG. La forma de cambiar ese comportamiento es sentar ejemplo y hacer público que usamos GnuPG. Existen al menos tres maneras de hacer esto: firmar digitalmente los mensajes que enviamos a otros[2], publicar nuestra clave pública en nuestra página en Internet, o, si la subimos a un servidor de claves, poner nuestro identificador de clave como parte de nuestra firma. Haciendo pública nuestra clave, ayudamos a que sea más aceptable para otras personas hacerla también pública. Además, hacemos más fácil para otros el que puedan comenzar a comunicarse con nosotros en modo seguro, ya que habremos tomado la iniciativa, dejando claro que usamos GnuPG.
La validación de la clave es más difícil. Si no conocemos personalmente a la persona cuya clave queremos firmar, no es posible que podamos firmar su clave personalmente. Debemos fiarnos de las firmas de otras personas y esperar que encontraremos una cadena de firmas que nos lleven desde la clave en cuestión hasta la nuestra. Para poder encontrar una cadena, debemos tomar la iniciativa y conseguir que nuestra clave sea firmada por otras personas fuera de nuestro anillo de confianza inicial. Un modo efectivo de conseguir esto es participando en «reuniones de firmas».
De todos modos, debemos tener en cuenta que todo esto es opcional. No existe ningún tipo de obligación de hacer públicas nuestras claves o de firmar las claves de otros. GnuPG es lo suficientemente flexible como para adaptarse a nuestros requerimientos de seguridad, sean éstos los que sean. Sin embargo, la realidad social es que necesitaremos tomar la iniciativa si queremos engrosar nuestro anillo de confianza, y hacer todo el uso posible de GnuPG.












 criptografía asimétrica (en inglés asymmetric key cryptography), también llamada criptografía de clave pública (en inglés public key cryptography) ocriptografía de dos claves1 (en inglés two-key cryptography), es el método criptográfico que usa un par de claves para el envío de mensajes. Las dos claves pertenecen a la misma persona que ha enviado el mensaje. Una clave es pública y se puede entregar a cualquier persona, la otra clave es privada y el propietario debe guardarla de modo que nadie tenga acceso a ella. Además, los métodos criptográficos garantizan que esa pareja de claves sólo se puede generar una vez, de modo que se puede asumir que no es posible que dos personas hayan obtenido casualmente la misma pareja de claves.
Si el remitente usa la clave pública del destinatario para cifrar el mensaje, una vez cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje, ya que es el único que la conoce. Por tanto se logra la confidencialidad del envío del mensaje, nadie salvo el destinatario puede descifrarlo.
Ejemplo de cifrado de mensaje: Ana envía un mensaje a David
CriptografiaAsimetrica.png

  1. Ana redacta un mensaje
  2. Ana cifra el mensaje con la clave pública de David
  3. Ana envía el mensaje cifrado a David a través de internet, ya sea por correo electrónico, mensajería instantánea o cualquier otro medio
  4. David recibe el mensaje cifrado y lo descifra con su clave privada
  5. David ya puede leer el mensaje original que le mandó Ana
Si el propietario del par de claves usa su clave privada para cifrar el mensaje, cualquiera puede descifrarlo utilizando su clave pública. En este caso se consigue por tanto la identificación y autentificación del remitente, ya que se sabe que sólo pudo haber sido él quien empleó su clave privada (salvo que alguien se la hubiese podido robar). Esta idea es el fundamento de la firma electrónica.
Ejemplo de firma digital con clave asimétrica: David envía un mensaje a Ana
Firma Digital Asimétrica.png

  1. David redacta un mensaje
  2. David firma digitalmente el mensaje con su clave privada
  3. David envía el mensaje firmado digitalmente a Ana a través de internet, ya sea por correo electrónico, mensajería instantánea o cualquier otro medio
  4. Ana recibe el mensaje firmado digitalmente y comprueba su autenticidad usando la clave pública de David
  5. Ana ya puede leer el mensaje con total seguridad de que ha sido David el remitente
Los sistemas de cifrado de clave pública o sistemas de cifrado asimétricos se inventaron con el fin de evitar por completo el problema del intercambio de claves de los sistemas de cifrado simétricos. Con las claves públicas no es necesario que el remitente y el destinatario se pongan de acuerdo en la clave a emplear. Todo lo que se requiere es que, antes de iniciar la comunicación secreta, el remitente consiga una copia de la clave pública del destinatario. Es más, esa misma clave pública puede ser usada por cualquiera que desee comunicarse con su propietario. Por tanto, se necesitarán sólo n pares de claves por cada n personas que deseen comunicarse entre sí.
Las dos principales ramas de la criptografía de clave pública son:
  • Cifrado de clave pública: un mensaje cifrado con la clave pública de un destinatario no puede ser descifrado por nadie (incluyendo al que lo cifró), excepto un poseedor de la clave privada correspondiente--presumiblemente, este será el propietario de esa clave y la persona asociada con la clave pública utilizada. Se utiliza para confidencialidad.
  • Firmas digitales: un mensaje firmado con la clave privada del remitente puede ser verificado por cualquier persona que tenga acceso a la clave pública del remitente, lo que demuestra que el remitente tenía acceso a la clave privada (y por lo tanto, es probable que sea la persona asociada con la clave pública utilizada) y la parte del mensaje que no se ha manipulado. Sobre la cuestión de la autenticidad.
Una analogía con el cifrado de clave pública es la de un buzón con una ranura de correo. La ranura de correo está expuesta y accesible al público; su ubicación (la dirección de la calle) es, en esencia, la clave pública. Alguien que conozca la dirección de la calle puede ir a la puerta y colocar un mensaje escrito a través de la ranura; sin embargo, sólo la persona que posee la llave (clave privada) puede abrir el buzón de correo y leer el mensaje.
Una analogía para firmas digitales es el sellado de un sobre con un sello personal. El mensaje puede ser abierto por cualquier persona, pero la presencia del sello autentifica al remitente.

Esquemas para la propagación de la confianza

Observar que la criptografía de clave pública necesita establecer una confianza en que la clave pública de un usuario (al cual se identifica por una cadena identificativa a la que se llama identidad) es correcta, es decir el único que posee la clave privada correspondiente es el usuario auténtico al que pertenece. Cuanto más fiable sea el método más seguridad tendrá el sistema.
Lo ideal sería que cada usuario comunicara (e idealmente probara) de forma directa al resto de usuarios cual es su clave pública. Sin embargo esto no es posible en la realidad y se desarrollan distintos esquemas para aportar confianza. Estos esquemas se pueden agrupar en dos tipos: Esquema centralizados y esquemas descentralizados. En los esquemas descentralizado hay varios nodos y cada uno tiene unas capacidades y derechos. En los esquemas centralizados hay una arquitectura cliente-servidor donde los servidores juegan un papel central y proveen servicios a los clientes. Cada esquema tiene sus ventajas e inconvenientes y en cada caso hay que evaluarlos y decidir cual es el mejor en ese caso. En general los sistemas centralizados suelen ser más vulnerables a ataques de denegación de servicio debido a que basta con que falle el servidor central para que el sistema de confianza caiga por completo. Los sistemas descentralizados se suelen considerar menos seguros contra ataques encaminados a publicar claves públicas falsas debido a que al haber varios nodos posibles a atacar es más difícil asegurar su seguridad. Los modelos más usados son:
  • Uso de una infraestructura de clave pública o PKI. En este modelo hay una o varias entidades emisoras de certificados (Autoridades de certificación o CA del inglés Certification Authority) que aseguran la autenticidad de la clave pública y de ciertos atributos del usuario. Para ello firman con su clave privada ciertos atributos del usuario incluyendo su clave pública generando lo que se llama certificado del usuario.
  • Establecimiento de una web de confianza.
No hay nodos aparte de los usuarios. Los usuarios recogen claves públicas de otros usuarios y aseguran su autenticidad si están seguros de que la clave privada correspondiente pertenece en exclusiva a ese usuario. Un usuario además puede directamente confiar en el conjunto de claves públicas en las que otro confía ya sea directamente o a través de otras relaciones de confianza. En cada caso es el propio usuario el que decide el conjunto de claves públicas en las que confía y su grado de fiabilidad. Dos usuarios que no se conocen pueden confiar en sus claves públicas si existe una cadena de confianza que enlace ambas partes. Este tipo de implementación de la confianza es el que usa por ejemplo PGP.
  • Uso de criptografía basada en identidad. En este modelo existe un generador de claves privadas o PKG (acrónimo de Private Key Generator) que a partir de una cadena de identificación del usuario genera una clave privada y otra pública para ese usuario. La pública la difunde para que el resto de usuarios la sepan y la privada es comunicada en exclusiva al usuario a quien pertenece.
  • Uso de criptografía basada en certificados. En este modelo el usuario posee una clave privada y otra pública. La clave pública la envía a una Autoridad de certificación que basándose en criptografía basada en identidad genera un certificado que asegura la validez de los datos.
  • Uso de criptografía sin certificados. Este modelo es similar al modelo que usa criptografía basada en identidad pero con la diferencia de que lo que se genera en el centro generador de claves o KGC (acrónimo de Key Generator Center) es una clave parcial. La clave privada completa se genera a partir de la clave privada parcial y un valor generado aleatoriamente por el usuario. La clave pública es generada también por el usuario a partir de parámetros públicos del KGC y el valor secreto escogido.
Girault 2 distingue tres niveles de confianza que dan los distintos modelos a la autoridad que interviene en el proceso (PKG, KGC o CA según cada caso):
  • Nivel 1: La autoridad puede calcular claves secretas de usuarios y por tanto pueden hacerse pasar como cualquier usuario sin ser detectado. Las firmas basadas en identidad pertenecen a este nivel de confianza
  • Nivel 2: La autoridad no puede calcular claves secretas de usuarios, pero puede todavía hacerse pasar como cualquier usuario sin ser detectado. Firmas sin certificados pertenecen a este nivel
  • Nivel 3: La autoridad no puede calcular claves secretas de usuarios, y tampoco puede hacerse pasar como un usuario sin ser detectado. Es el nivel más alto de fiabilidad. Las firmas tradicionales PKI y la firmas basadas en certificados pertenecen a este nivel

Seguridad

Según el segundo principio de Kerckhoffs toda la seguridad debe descansar en la clave y no en el algoritmo (en contraposición con la seguridad por la oscuridad). Por lo tanto, el tamaño de la clave es una medida de la seguridad del sistema, pero no se puede comparar el tamaño de la clave del cifrado simétrico con el del cifrado de clave pública para medir la seguridad. En un ataque de fuerza bruta sobre un cifrado simétrico con una clave del tamaño de 80 bits, el atacante debe probar hasta 280-1 claves para encontrar la clave correcta. En un ataque de fuerza bruta sobre un cifrado de clave pública con una clave del tamaño de 512 bits, el atacante debe factorizar un número compuesto codificado en 512 bits (hasta 155 dígitos decimales). La cantidad de trabajo para el atacante será diferente dependiendo del cifrado que esté atacando. Mientras 128 bits son suficientes para cifrados simétricos, dada la tecnología de factorización de hoy en día, se recomienda el uso de claves públicas de 1024 bits para la mayoría de los casos.

Ventajas y desventajas del cifrado asimétrico

La mayor ventaja de la criptografía asimétrica es que la distribución de claves es más fácil y segura ya que la clave que se distribuye es la pública manteniéndose la privada para el uso exclusivo del propietario, pero este sistema tiene bastantes desventajas:
  • Para una misma longitud de clave y mensaje se necesita mayor tiempo de proceso.
  • Las claves deben ser de mayor tamaño que las simétricas. (Generalmente son cinco o mas veces de mayor tamaño que las claves simétricas)
  • El mensaje cifrado ocupa más espacio que el original.
Los nuevos sistemas de clave asimétrica basado en curvas elípticas tienen características menos costosas.
Herramientas como PGPSSH o la capa de seguridad SSL para la jerarquía de protocolos TCP/IP utilizan un híbrido formado por la criptografía asimétrica para intercambiar claves de criptografía simétrica, y la criptografía simétrica para la transmisión de la información.

Tecnologías

Algunos algoritmos y tecnologías de clave asimétrica son:

Protocolos

Algunos protocolos que usan los algoritmos antes citados son:

No hay comentarios:

Publicar un comentario