Secure Headers Technical Documentation/fr : Différence entre versions
(→Mécanismes) |
|||
(16 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | {{lang|Secure Headers_Technical_Documentation|Secure Headers_Technical_Documentation/fr}} |
||
+ | > [[Documentation/fr|Documentation]] > [[Trustedbird/fr|Trustedbird]] > [[Secure Headers/fr|En-têtes sécurisés]] > [[Secure_Headers_Technical_Documentation/fr|Documentation technique]] |
||
+ | |||
+ | |||
== Mécanismes == |
== Mécanismes == |
||
Ligne 4 : | Ligne 8 : | ||
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. |
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 [http:// |
+ | La norme de référence pour l'implémentation des attributs signés est la [http://tools.ietf.org/html/rfc4422 RFC 5652]. |
== Architecture == |
== Architecture == |
||
Ligne 16 : | Ligne 20 : | ||
=== Composition de message === |
=== 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. |
|
[[File:SecureHeader_sch_compose.png||]] |
[[File: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. |
||
+ | |||
+ | [[File:SecureHeader_class.png||]] |
||
=== Réception de message === |
=== Réception de message === |
||
− | A la lecture d'un message, une enveloppe avec un point rouge permet de voir les entêtes qui ont été sécurisés. |
||
+ | 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 [[File:SecureHeaders_read_icon.png||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. |
||
[[File:SecureHeader_sch_read.png||]] |
[[File:SecureHeader_sch_read.png||]] |
||
Ligne 37 : | Ligne 71 : | ||
/secureheaders/jar.mn |
/secureheaders/jar.mn |
||
/secureheaders/makefile.in |
/secureheaders/makefile.in |
||
⚫ | |||
+ | /extensions/smime |
||
⚫ | |||
+ | ./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 === |
=== Intégrer le service de configuration des Secure Headers dans les préférences de compte === |
||
Ligne 48 : | Ligne 86 : | ||
@BINPATH@/components/am-service-secureheaders.js |
@BINPATH@/components/am-service-secureheaders.js |
||
+ | |||
+ | |||
+ | Les entêtes sécurisés ont été implémentés par [[File:Cassidian_logo.png|link=http://www.cassidian.com|150px]] |
Version actuelle en date du 15 octobre 2010 à 17:04
> Documentation > Trustedbird > En-têtes sécurisés > Documentation technique
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 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.
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.
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.
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