Ir al contenido

Confianza y admisión

Un nodo no confía en otro nodo porque pueda alcanzarlo. Confía en él porque un documento en el que ya confía dice quién es ese nodo.

El registro es un único documento firmado que enumera cada nodo admitido: su dominio, su clave pública de firma y la huella de esa clave, las versiones de protocolo que habla, lo que es capaz de hacer, y si está activo o revocado.

Cada nodo guarda una clave — la clave pública raíz del registro. Esa clave es lo único en lo que un nodo confía sin más. Todo lo demás se deriva de ella: el nodo comprueba el documento del registro contra esa clave, y después comprueba cada mensaje entrante contra la clave de firma que el registro publica para el remitente.

Un nodo sin ninguna clave raíz configurada no adivina. Se niega a resolver a cualquier par, y lo dice.

El documento está firmado, así que no importa dónde se sirve. Lleva una fecha de emisión y una de caducidad, y se reemite con regularidad para que la caducidad se mantenga por delante.

La admisión es una revisión, no un registro automático.

Cuando se instala un nodo produce una carga de admisión. Esa carga contiene solo material público: el dominio del nodo, su clave pública de firma federada y su huella, la huella de su certificado de cliente, las versiones de protocolo y las capacidades que declara. No hay material de clave privada en ella y no se pide ninguno.

El operador envía la carga. El nodo firma el envío con su propia clave, lo que demuestra que tiene la mitad privada de la clave que reclama. Eso es todo lo que una firma puede demostrar — no dice nada sobre quién es dueño del dominio. Así que el envío queda en una cola para que lo revise una persona, y el operador confirma la huella de la clave por otro canal. Un humano lo aprueba.

Una vez aprobado y reemitido el registro, el nodo se federa. Volver a enviarlo antes de la aprobación actualiza la entrada pendiente en vez de crear una segunda.

Nada de la carga concede confianza por sí solo.

Un nodo se quita marcando su entrada del registro como revocada y reemitiéndolo. Las entradas revocadas se quedan en el documento durante un mes aproximadamente en vez de desaparecer, así queda visible que el nodo estuvo ahí y ya no lo está.

Desde el momento en que otros nodos obtienen el documento reemitido, los mensajes del nodo revocado se rechazan como los de cualquier otro remitente desconocido.

Antes de intercambiar cualquier otra cosa, dos nodos se dan la mano. Cada uno envía la lista de cosas que sabe hacer; la respuesta es la parte en común. Esa parte en común es lo que la pareja puede usar para el resto del intercambio.

Esto importa porque los nodos no siempre están en la misma versión. Un nodo que recibe un mensaje que reconoce pero no ha implementado lo rechaza limpiamente, y — esto es importante — no lo marca como entregado, así que el remitente puede volver a intentarlo en cuanto ambos lados tengan la función.

La admisión es de toda la malla. Un operador también puede rechazar un nodo concreto de forma local, sin esperar a nada central: la aplicación de administración enumera cada servidor con el que el nodo ha tratado y te deja cortar la relación con uno. Esa decisión solo surte efecto en tu nodo.

Hacerlo requiere un permiso que tu primer administrador ya tiene.