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
Javier ha firmado la clave de Arancha y que,
Arancha ha firmado las claves de Jordi y de Ignacio.
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:
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.
Ninguno. Se sabe que el propietario firma otras claves de modo impropio.
Marginal. El propietario comprende las implicaciones de firmar una clave y valida las claves de forma correcta antes de firmarlas.
Absoluto. El propietario comprende perfectamente las implicaciones de firmar una clave y su firma sobre una clave es tan buena como la nuestra.
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 [...] |
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:
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;
y si el camino de claves firmadas que nos lleva desde K hasta nuestra propia clave es de cinco pasos o menos.
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/confianza | validity/validez | ||
---|---|---|---|
marginal | full/plena | marginal | full/plena |
Ignacio | Arancha, Jordi, Ignacio, Claudia | ||
Arancha, Ignacio | Claudia | Arancha, Jordi, Ignacio | |
Jordi, Ignacio | Jordi, Claudia | Arancha, Ignacio | |
Arancha, Jordi, Ignacio | Jimena | Arancha, Jordi, Ignacio, Claudia | |
Arancha, Jordi, Jimena | Arancha, Jordi, Jimena, Claudia |
[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». |