Registro DNS OPENPGPKEY
Por el 19 de Abril de 2022
El registro de recurso DNS OPENPGPKEY permite publicar claves públicas en formato OpenPGP a través del servidor DNS mediante un tipo de registro especial. Aquí explico como se configura en un sistema OpenBSD que funciona con el servidor DNS NSD.
Referencias
Exportar la clave pública al formato adecuado
Según el borrador del RFC:
$ gpg --export --export-options export-minimal,no-export-attributes \
hugh@example.com | base64
En OpenBSD:
$ gpg --export --export-options export-minimal,no-export-attributes \
hugh@example.com | openssl base64
Generar la etiqueta correspondiente al usuario
El campo local-part
de la dirección de correo hugh@example.com según el RFC 5322 sería hugh
. Generando el hash SHA2 256
el resultado es:
$ echo -n hugh | sha256
c93f1e400f26708f98cb19d936620da35eec8f72e57f9eec01c1afd64efa1583
Ahora hay que truncarlo a 28 octetos (RFC 7929 sección 3). Como cada carácter hexadecimal representa 4 bits, un byte serán dos caracteres hexadecimales, con lo que queda:
$ echo -n hugh | sha256 | cut -c -56
c93f1e400f26708f98cb19d936620da35eec8f72e57f9eec01c1afd6
Crear la entrada DNS para OPENPGPKEY
Esta sería la entrada de DNS correspondiente para la dirección de correo electrónico hugh@example.com tal y como se configuraría en la zona DNS:
c93f1e400f26708f98cb19d936620da35eec8f72e57f9eec01c1afd6._openpgpkey.example.com. IN OPENPGPKEY (
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[...]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
)
Comprobar que funciona con dig
Pidiendo el registro OPENPGPKEY con dig(1) de esta forma debe mostrar la llave pública OpenPGP:
$ dig c93f1e400f26708f98cb19d936620da35eec8f72e57f9eec01c1afd6._openpgpkey.example.com openpgpkey +multi