Secure Headers Technical Documentation/fr
Sommaire
Mécanismes
Les mécanismes assurant la sécurisation des entêtes de message sont basés sur les concepts des attributs signés d'un objet: Les champs d'entêtes (nom + valeur) à sécuriser sont insérés au sein d'une structure SecureHeaderFields, elle même encapsulée dans une structure SignedAttributes intégrée dans un objet SignerInfo. Ensuite, le processus de calcul du condensé de la signature est réalisé à partir du contenu de message ainsi que des données présentes dans la structure des attributs signés.
La norme de référence pour l'implémentation des attributs signés est la RFC 3852.
Architecture
Préférences de compte
Une section "entêtes sécurisés" est insérée pour chaque compte utilisateur afin de définir le fichier XML contenant les entêtes à sécuriser. Quant au fichier XML de description des entêtes, un fichier par défaut se trouve dans les sources et est copié dans le répertoire du profile utilisateur lors de l'installation du client.
Composition de message
Deux items de menu sont intégrés dynamiquement par le javascript dans la fenêtre de composition pour activer l'option des entêtes sécurisés. La valeur que va prendre le menuitem va déterminer si le message sera envoyé avec les entêtes sécurisés. La fenêtre d'information de sécurité est enrichie de la liste des entêtes à sécuriser à l'envoi du message.
Signature de message
Lors de la génération de la signature, pour chaque entête à sécuriser est appliqué l'algorithme suivant:
- renseignement du champ HeaderFiledName avec le nom de l'entête,
- canonisation de la valeur de l'entête,
- renseignement du champ HeaderFieldValue avec la valeur canonisée,
- renseignement du champ HeaderFieldStatus avec le statut de l'entête.
La structure SecureHeaderFields (syntaxe ASN.1 présentée ci-dessous) est ensuite intégrée dans les attributs signés de l'objet SignerInfos.
SecureHeaderFields ::= SET{ canonAlgorithm Algorithm, secHeaderFields HeaderFields } Algorithm ::= ENUMERATED { canonAlgorithmSimple(0), canonAlgorithmRelaxed(1) } HeaderField ::= SEQUENCE{ field-Name HeaderFieldName, field-Value HeaderFieldValue, field-status HeaderFieldStatus OPTIONAL }
Réception de message
A la réception d'un message, le processus de vérification de signature est complété par une comparaison des entêtes présents dans la structure SecureHeaderFields avec ceux du message. La comparaison est réalisée en utilisant l'algorithme de canonisation enregistré dans les attributs signés. Le résultat de la comparaison est signalé par le marquage de l'icône . Si la comparaison est négative, la signature n'est pas signalée comme invalide mais un point d'interrogation est présenté sur cette icône pour avertir l'utilisateur.
Arborescence
La sécurisation des entêtes est intégrée dans les sources de Thunderbird pour le produit TrustedBird. La majorité du code se trouve dans comm-1.9.2/mailnews/extensions/secureheaders, cette partie correspond aux interfaces graphiques spécifiques des entêtes sécurisées. D'autres fichiers sont modifiés pour utiliser les IHMs déjà présentes et surcharger l'existant afin d'intégrer cette fonction supplémentaire. Ainsi, comm-1.9.2/mailnews/extensions/smime contient des ajouts pour afficher dans des fenêtres déjà existantes les informations sur les entêtes sécurisés. C'est aussi cette extension qui est utilisée pour le chiffrage et déchiffrage des entêtes. Les fichiers concernés pour les secureHeaders sont:
./comm-1.9.2/mailnews/extensions/makefile.in /secureheaders/resource /secureheaders/src /secureheaders/jar.mn /secureheaders/makefile.in /extensions/smime ./comm-1.9.2/mail/installer/package-manifest.in ./comm-1.9.2 /mozilla/security/nss/lib/smime /nss/lib//util ./comm-1.9.2 /mozilla/security/manager/ssl/src
Intégrer le service de configuration des Secure Headers dans les préférences de compte
Pour la compilation, le fichier am-service-secureheaders.js doit être déclaré dans le makefile.in du composant via la variable
EXTRA_COMPONENTS = src/am-service-secureheaders.js
Pour le packaging, le fichier am-service-secureheaders.js doit être déclaré dans le fichier .\comm-1.9.2\mail\installer\package-manifest.in
@BINPATH@/components/am-service-secureheaders.js