Aller au contenu principal

5.6. Spécification du message KRB_SAFE

5.6. Spécification du message KRB_SAFE

Cette section spécifie le format d'un message utilisable par l'une ou l'autre partie (client ou serveur) d'une application pour envoyer à son pair un message à l'intégrité garantie (tamper-proof). Elle suppose qu'une clé de session a déjà été échangée (par exemple au moyen des messages KRB_AP_REQ/KRB_AP_REP).

5.6.1. Définition de KRB_SAFE

Le message KRB_SAFE contient des données utilisateur ainsi qu'une somme de contrôle résistante aux collisions (collision-proof checksum), calculée avec clé à partir de la dernière clé de chiffrement négociée via des sous-clés, ou à partir de la clé de session si aucune négociation n'a eu lieu. Les champs du message sont les suivants :

   KRB-SAFE        ::= [APPLICATION 20] SEQUENCE {
pvno [0] INTEGER (5),
msg-type [1] INTEGER (20),
safe-body [2] KRB-SAFE-BODY,
cksum [3] Checksum
}
   KRB-SAFE-BODY   ::= SEQUENCE {
user-data [0] OCTET STRING,
timestamp [1] KerberosTime OPTIONAL,
usec [2] Microseconds OPTIONAL,
seq-number [3] UInt32 OPTIONAL,
s-address [4] HostAddress,
r-address [5] HostAddress OPTIONAL
}

pvno et msg-type

Ces champs sont décrits ci-dessus à la section 5.4.1. msg-type vaut

KRB_SAFE.

safe-body

Ce champ sert d'emplacement pour le corps du message KRB-SAFE.

cksum

Ce champ contient la somme de contrôle des données d'application, calculée

avec une valeur d'utilisation de clé (key usage) de 15.

La somme de contrôle est calculée sur l'encodage de la séquence KRB-SAFE.

D'abord, cksum est fixé à une valeur de type zéro et de longueur zéro,

et la somme de contrôle est calculée sur l'encodage de la séquence KRB-

SAFE. Ensuite, la somme de contrôle est fixée au résultat de ce

calcul. Enfin, la séquence KRB-SAFE est encodée à nouveau.

Cette méthode, bien que différente de celle spécifiée dans la RFC

1510, correspond à la pratique existante.

user-data

Ce champ fait partie des messages KRB_SAFE et KRB_PRIV, et

contient les données propres à l'application transmises de

l'émetteur au destinataire.

timestamp

Ce champ fait partie des messages KRB_SAFE et KRB_PRIV. Son

contenu est l'heure courante telle que la connaît l'émetteur du

message. En vérifiant l'horodatage, le destinataire du message

peut s'assurer qu'il a été généré récemment et qu'il ne s'agit pas d'une

relecture (replay).

usec

Ce champ fait partie des en-têtes KRB_SAFE et KRB_PRIV. Il

contient la partie microsecondes de l'horodatage.

seq-number

Ce champ est décrit ci-dessus à la section 5.3.2.

s-address

Adresse de l'émetteur (Sender's address).

Ce champ précise l'adresse utilisée par l'émetteur du

message.

r-address

Ce champ précise l'adresse utilisée par le destinataire du

message. Il PEUT être omis pour certains usages (tels que les protocoles de

diffusion), mais le destinataire PEUT rejeter arbitrairement de tels

messages. Ce champ, avec s-address, peut servir à aider à

détecter des messages incorrectement ou malicieusement

livrés au mauvais destinataire.