Validar otras claves en nuestro anillo de claves públicas

En el capítulo 1 se introdujo un procedimiento para validar las claves públicas de otros usuarios: la clave de otro usuario se valida comprobando personalmente la huella digital de su clave, y firmando su clave pública con nuestra clave privada. Comprobando personalmente la huella digital podemos estar seguros de que la clave pertenece realmente al supuesto usuario y, dado que hemos firmado la clave, podemos estar seguros de que detectaremos cualquier manipulación o falsificación en un futuro. Desafortunadamente este proceso se complicado cuando debemos validar un gran número de claves o cuando debemos comunicarnos con personas a las que no conocemos personalmente.

GnuPG trata este problema con un mecanismo conocido como anillo de confianza. En el modelo del anillo de confianza la responsabilidad de la validación de las claves públicas recae en las personas en las que confiamos. Por ejemplo, supongamos que

Si Javier confía en Arancha lo suficiente como para validar las claves que él firma, entonces Javier puede deducir que las claves de Jordi y de Ignacio son válidas sin llegar a comprobarlas personalmente. Javier se limitará a usar su copia validada de la clave pública de Arancha para comprobar que las firmas de Arancha sobre Jordi e Ignacio son auténticas. Por lo general, y asumiendo que Javier confíe plenamente en todos como para validar las claves que firmen, cualquier clave firmada por una clave válida también es considerada válida. El origen es la clave de Javier, que se asumirá axiomáticamente como válida.

Confianza en el propietario de una clave

En la práctica la confianza es algo subjetivo. Por ejemplo, la clave de Arancha es válida para Javier ya que ha sido firmada por ella, pero Javier puede desconfiar de otras claves que hayan sido validadas por la firma de Arancha. En este caso, Javier no aceptaría las claves de Jordi e Ignacio como válidas sólo porque hayan sido firmadas por Arancha. El modelo del anillo de confianza prevee este caso mediante un indicador que asocia nuestro nivel de confianza en el propieario de la clave, a cada clave pública en nuestro anillo de claves. Existen cuatro niveles de confianza:

unknown

Desconocido. No se sabe nada sobre el dueño de la clave firmante. Las claves en nuestro anillo de claves que no nos pertenezcan tendrán al principio este nivel de confianza.

none

Ninguno. Se sabe que el propietario firma otras claves de modo impropio.

marginal

Marginal. El propietario comprende las implicaciones de firmar una clave y valida las claves de forma correcta antes de firmarlas.

full

Absoluto. El propietario comprende perfectamente las implicaciones de firmar una clave y su firma sobre una clave es tan buena como la nuestra.

El nivel de confianza en una clave es algo que sólo nosotros podemos asignar a la clave, y se considera información privada. El nivel de confianza no se exporta con la clave, de hecho no se almacena en los anillos de claves sino en una base de datos aparte.

El editor de claves de GnuPG puede ser usado para ajustar nuestra confianza en el propietario de una clave. La orden es trust. En el siguiente ejemplo Javier edita su confianza en Arancha y actualiza la base de datos para recomputar qué claves son válidas, basándose en su nuevo nivel de confianza en Arancha.

javier:~$ gpg --edit-key Aranzanzu

pub  1024D/B63E132C  created: 1999-09-24 expires: never      trust: q/f
sub  1024g/581A915F  created: 1999-09-24 expires: never
(1)  Ar\xc3\xa1nzazu (A.G.deZ.) <arancha@nav.es>

Command> trust
pub  1024D/B63E132C  created: 1999-09-24 expires: never      trust: q/f
sub  1024g/581A915F  created: 1999-09-24 expires: never
(1)  Ar\xc3\xa1nzazu (A.G.deZ.) <arancha@nav.es>

Please decide how far you trust this user to correctly
verify other users' keys (by looking at passports,
checking fingerprints from different sources...)?

 1 = Don't know
 2 = I do NOT trust
 3 = I trust marginally
 4 = I trust fully
 s = please show me more information
 m = back to the main menu

Your decision? 3

pub  1024D/B63E132C  created: 1999-09-24 expires: never      trust: m/f
sub  1024g/581A915F  created: 1999-09-24 expires: never
(1)  Ar\xc3\xa1nzazu (A.G.deZ.) <arancha@nav.es>

Command> quit
[...]
La confianza en el propietario de la clave y la validez de la clave se indican a la derecha al mostrar la clave. La confianza en el propietario se muestra primero, y la validez después[1]. Los cuatro niveles de confianza/validez se encuentran abreviados: unknown (q), none (n), marginal (m), y full (f). O sea, desconocido, ninguno, marginal y absoluto. En este caso, la clave de Arancha es totalmente válida ya que está firmada por Javier. Al principio el nivel de confianza que Javier tiene en Arancha es desconocido, por lo que no procede validar otras claves; pero luego decide confiar en ella de modo marginal.

Usar la confianza para validar las claves

El anillo de confianza permite usar un algoritmo más elaborado para validar una clave. Anteriormente, una clave sólo se consideraba válida si la firmábamos nosotros personalmente. Ahora es posible usar un algoritmo más flexible: una clave K se considera válida si cumple dos condiciones:

  1. si viene firmada por las suficientes claves válidas, lo que quiere decir

    • que la hemos firmado nosotros personalmente,

    • o que ha sido firmada por una clave de plena confianza,

    • o que ha sido firmada por tres claves de confianza marginal;

  2. y si el camino de claves firmadas que nos lleva desde K hasta nuestra propia clave es de cinco pasos o menos.

La longitud del camino, en número de claves con confianza marginal requeridas, y el número de claves con confianza plena requeridas se pueden cambiar. Los números dados arriba son los valores por definición usados por GnuPG.

Figura 3-1 muestra un anillo de confianza cuyo origen está en Javier. El gráfico ilustra quién ha firmado las claves de quién. La tabla muestra qué claves son consideradas válidas por Javier en base a su confianza en otros miembros del anillo. Este ejemplo asume que se necesitan dos claves de confianza marginal o una de confianza plena para validar otra clave. La longitud máxima del camino es tres.

Al computar claves válidas en el ejemplo, las de Arancha e Ignacio siempre son consideradas como totalmente válidas, ya que están directamente firmadas por Javier. La validez de las otras claves depende de la confianza. En el primer caso la confianza en Ignacio es plena, lo que implica que las claves de Jordi y Claudia se considerarán válidas. En el segundo ejemplo la confianza en Arancha e Ignacio es marginal. Ya que son necesarias dos claves de confianza marginal para dar validez total a una clave, la clave de Jordi será considerada como totalmente válida, pero la clave de Claudia será considerada sólo como marginalmente válida. En el caso en el que Jordi e Ignacio tuvieran confianza marginal, la clave de Jordi sería marginalmente válida ya que la clave de Ignacio es totalmente válida. Sin embargo, la clave de Claudia será considerada marginalmente válida ya que sólo se puede usar una clave completamente válida para validar otras claves, y la clave de Ignacio es la única clave válida que se ha usado para firmar la clave de Claudia. Al añadir un nivel de confianza marginal a Arancha, la clave de Jordi se convierte en totalmente válida y por tanto puede ser usada para validar totalmente la clave de Claudia, y validar marginalmente la clave de Jimena. Por último, una confianza plena en Arancha, Jordi y Jimena es todavía insuficiente para validar la clave de Gonzalo ya que el camino máximo de certificación es tres, pero la longitud del camino desde Gonzalo hasta Javier es cuatro.

El modelo del anillo de confianza es una aproximación flexible al problema del intercambio seguro de claves públicas. Nos permite poner a punto GnuPG para que refleje el modo en que lo usamos. Es posible llegar a insistir en múltiples caminos cortos desde nuestra clave hasta otra clave K para cambiar el nivel de confianza. Por otra parte, puede ser que caminos más largos nos satisfagan e incluso un sólo camino desde nuestra clave hasta la otra clave K. El requerimiento de múltiples caminos cortos es una fuerte garantía de que K pertenece a quien nosotros creemos. El precio, por supuesto, es la dificultad añadida para validar claves, ya que debemos firmar personalmente más claves que si aceptáramos menos y más largos caminos.

Figura 3-1. Un anillo de confianza hipotético

trust/confianzavalidity/validez
marginalfull/plenamarginalfull/plena
 Ignacio Arancha, Jordi, Ignacio, Claudia
Arancha, Ignacio ClaudiaArancha, Jordi, Ignacio
Jordi, Ignacio Jordi, ClaudiaArancha, Ignacio
Arancha, Jordi, Ignacio JimenaArancha, Jordi, Ignacio, Claudia
 Arancha, Jordi, Jimena Arancha, Jordi, Jimena, Claudia

Notas

[1]

N. de T.: GnuPG hace un uso excesivo de la palabra ``trust'', utilizándola en el sentido de «confianza en el propietario y confianza en la clave». Esto puede llevar a confusión. Algunas veces la confianza en un propietario viene referida como owner-trust para distinquirla de la confianza en una clave. Sin embargo, a lo largo de este manual ``trust'' se usa en el sentido de «confianza en el propietario de la clave», y ``validity'' en el sentido de «confianza en que una clave pertenece a la persona asociada con el identificador de clave».