LibassuanLibassuan es una pequeña biblioteca que implementa
el llamado protocolo Assuan. Este protocolo se utiliza para
la comunicación inter-procesos (IPC) entre la
mayoría de los nuevos componentes de GnuPG. Se proporcionan
tanto las funciones de servidor como las de cliente. En un mundo ideal, Assuan sería irrelevante. El uso
principal de Assuan es permitir a un cliente interactuar con un
servidor no persistente. Utilizando Assuan, esto se consigue
bifurcando (fork) un subproceso y comunicándose
con él vía, por ejemplo, una tubería
(pipe) o un zócalo Unix (Unix domain
socket). Este método no es ni elegante ni eficiente
especialmente cuando hay un montón de datos repartidos
entre varias transacciones: no sólo hay una
penalización por el incrementado número de cambios
de contexto, sino que también se realiza memcpy sobre una
cantidad significativa de datos del cliente a un descriptor de
ficheros y del descriptor al servidor. Aparte de estas y otras
desventajas, este tipo de comunicación cliente-servidor
puede ser útil: el cliente queda completamente separado
del servidor; se encuentran en espacios de direcciones
diferentes. Esto es especialmente importante en situaciones en
las que el servidor debe tener un grado conocido de fiabilidad
y los datos deben ser protegidos: como el protocolo Assuan
está bien definido y los clientes no pueden corromper el
espacio de direcciones del servidor, auditar se vuelve mucho
más fácil. Assuan fue desarrollado para su uso por el Guardián de
Privacidad de GNU, GnuPG, para prevenir que clientes
potencialmente mal programados corrompieran inadvertidamente
transacciones sensibles o comprometieran datos tales como una
clave privada. Assuan permite que los servidores, que hacen
realmente el trabajo, p. ej. cifrado y descifrado de datos
utilizando una clave privada, sean desarrollados
independientemente de las interfaces de usuario, p. ej. clientes
de correo y otras interfaces de cifrado. Como una biblioteca
compartida, la interfaz está bien definida y cualquier
número de interfaces de usuario puede utilizarla; sin
embargo, al contrario que en una biblioteca compartida, el
cliente no puede ver ni tocar los datos del servidor. Como con
muchos sistemas modulares, Assuan ayuda a mantener los
servidores pequeños y comprensibles lo que ayuda a que
el código sea más comprensible y menos dado a
errores. Assuan no está, sin embargo, limitado a su uso con
servidores y clientes GnuPG: ha sido diseñada para ser lo
suficientemente flexible como para satisfacer los requerimientos
de prácticamente cualquier entorno basado en
transacciones con servidores no persistentes. | |