LibassuanLibassuan è una piccola libreria che implementa il cosiddetto
protocollo Assuan. Questo protocollo è usato per la IPC
(inter process communication) tra le componenti più recenti di
GnuPG. Sono fornite sia funzioni lato server, sia lato client. In un mondo ideale, Assuan sarebbe inutile. L'uso principale di
Assuan è quello di permettere a un client di interagire con un
server non persistente. Usando Assuan, questa funzione viene
svolta facendo il fork di un sotto-processo e comunicando con esso
attraverso, ad esempio, una pipe o una socket di dominio unix.
Questo metodo non è né elegante né efficiente, specialmente quando
ci sono molti dati sparsi in più transazioni: non solo c'è una
penalità per l'aumentato numero di cambi di contesto, ma una parte
significante di dati è copiata attraverso memcpy dal client a un
descrittore di file e da questo al server. Nonostante questi ed
altri svantaggi, questo tipo di comunicazione client/server può
essere utile: il client è completamente separato dal server, essi
stanno in diversi spazi di indirizzamento. Questo è specialmente
importante in situazioni in cui il server deve avere un certo
livello di affidabilità e in cui i dati devono essere protetti:
visto che il protocollo Assuan è ben definito e i client non
possono corrompere lo spazio di indirizzo del server, il controllo
del codice è facilitato. Assuan è stato sviluppato per essere usato in GNU Privacy Guard,
GnuPG, per evitare che possibili client difettosi possano corrompere
transazioni che comprendono dati sensibili, o compromettere dati
come le chiavi private. Assuan permette ai server, che svolgono
operazioni come la cifratura e decifrazione di dati usando una
chiave privata, di essere sviluppati in modo indipendente dalle
interfacce utente, ad esempio i client di posta e gli altri
front-end. Come accade per una libreria condivisa, una volta ben
definita un'interfaccia, un numero qualsiasi di applicazioni può
usarla; tuttavia, a differenza di una libreria condivisa, il
client non può vedere o modificare i dati del server. Come per
qualsiasi sistema modulare, Assuan aiuta a mantenere i server
piccoli e comprensibili, facilitando l'interpretazione del codice
e limitando il rischio di errori di programmazione. Assuan non è comunque limitato all'uso con i server e i client del
sistema GnuPG: è stato progettato per essere abbastanza flessibile
in modo da essere usato in quasi tutti i contesti che richiedono
transazioni con server non persistenti. | |