Secure Headers Technical Documentation/fr

De Trustedbird Client Wiki
Révision de 15 octobre 2010 à 17:04 par Rfairise (discussion | contributions)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
English | Français

> Documentation > Trustedbird > En-têtes sécurisés > Documentation technique


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 5652.

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.

SecureHeader sch settings.png

Composition de message

Une entrée dans les menus d'accès aux options de sécurité est intégrée dynamiquement via le javascript dans la fenêtre de composition pour activer l'option des entêtes sécurisés. Si l'option est activée, la fenêtre d'information de sécurité est enrichie de la liste des entêtes à sécuriser à l'envoi du message.

SecureHeader sch compose.png

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
 }

Les informations à sécuriser sont implémentées via le fichier nsMsgComposeSecure.cpp.

SecureHeader class.png

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 caption. 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.

SecureHeader sch read.png

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


Les entêtes sécurisés ont été implémentés par Cassidian logo.png