5.8. Spécification du message KRB_CRED
5.8. Spécification du message KRB_CRED
Cette section spécifie le format d'un message utilisable pour transmettre des informations d'identification Kerberos (credentials) d'un principal à un autre. Elle est présentée ici pour encourager l'usage d'un mécanisme commun par les applications lors du transfert de tickets ou de la délégation à des serveurs subordonnés. Elle suppose qu'une clé de session a déjà été échangée, éventuellement au moyen des messages KRB_AP_REQ/KRB_AP_REP.
5.8.1. Définition de KRB_CRED
Le message KRB_CRED contient une séquence de tickets à envoyer et les informations nécessaires pour utiliser ces tickets, y compris la clé de session de chacun. Les informations nécessaires pour utiliser les tickets sont chiffrées sous une clé de chiffrement échangée auparavant ou transmise en même temps que le message KRB_CRED. Les champs du message sont les suivants :
KRB-CRED ::= [APPLICATION 22] SEQUENCE {
pvno [0] INTEGER (5),
msg-type [1] INTEGER (22),
tickets [2] SEQUENCE OF Ticket,
enc-part [3] EncryptedData -- EncKrbCredPart
}
EncKrbCredPart ::= [APPLICATION 29] SEQUENCE {
ticket-info [0] SEQUENCE OF KrbCredInfo,
nonce [1] UInt32 OPTIONAL,
timestamp [2] KerberosTime OPTIONAL,
usec [3] Microseconds OPTIONAL,
s-address [4] HostAddress OPTIONAL,
r-address [5] HostAddress OPTIONAL
}
KrbCredInfo ::= SEQUENCE {
key [0] EncryptionKey,
prealm [1] Realm OPTIONAL,
pname [2] PrincipalName OPTIONAL,
flags [3] TicketFlags OPTIONAL,
authtime [4] KerberosTime OPTIONAL,
starttime [5] KerberosTime OPTIONAL,
endtime [6] KerberosTime OPTIONAL,
renew-till [7] KerberosTime OPTIONAL,
srealm [8] Realm OPTIONAL,
sname [9] PrincipalName OPTIONAL,
caddr [10] HostAddresses OPTIONAL
}
pvno et msg-type
Ces champs sont décrits ci-dessus à la section 5.4.1. msg-type vaut
KRB_CRED.
tickets
Il s'agit des tickets obtenus auprès du KDC spécifiquement pour être utilisés
par le destinataire prévu. Les tickets successifs sont associés à la
séquence KrbCredInfo correspondante dans le enc-part du message KRB-
CRED.
enc-part
Ce champ contient un encodage de la séquence EncKrbCredPart
chiffré sous la clé de session partagée par l'émetteur et le
destinataire prévu, avec une valeur d'utilisation de clé de 14. Cet encodage
chiffré est utilisé pour le champ enc-part du message KRB-CRED.
Note d'implémentation : certaines applications, notamment certaines implémentations du mécanisme GSS-API Kerberos,
ne chiffrent pas séparément le contenu de EncKrbCredPart du
message KRB-CRED lors de l'envoi. Dans le cas de ces mécanismes GSS-
API, il ne s'agit pas d'une vulnérabilité de sécurité, car l'intégralité du message KRB-CRED est elle-même intégrée dans un message
chiffré.
nonce
Si c'est pratique, une application PEUT exiger l'inclusion d'un nonce
généré par le destinataire du message. Si la même valeur est
incluse comme nonce dans le message, cela apporte la preuve que
le message est récent et n'a pas été rejoué par un attaquant. Un
nonce NE DOIT JAMAIS être réutilisé.
timestamp et usec
Ces champs précisent l'heure à laquelle le message KRB-CRED a été
généré. L'heure sert à garantir que le message
est récent.
s-address et r-address
Ces champs sont décrits ci-dessus à la section 5.6.1. Ils sont utilisés
facultativement pour apporter une assurance supplémentaire quant à l'intégrité du
message KRB-CRED.
key
Ce champ figure dans le ticket correspondant transmis par le message KRB-
CRED et sert à transmettre la clé de session de l'émetteur
au destinataire prévu. L'encodage du champ est décrit à la
section 5.2.9.
Les champs suivants sont facultatifs. S'ils sont présents, ils peuvent être associés aux informations d'identification dans le fichier de tickets distant. S'ils sont absents, on suppose que le destinataire des informations d'identification connaît déjà leurs valeurs.
prealm et pname
Le nom et le domaine (realm) du principal délégué.
flags, authtime, starttime, endtime, renew-till, srealm, sname et caddr
Ces champs contiennent les valeurs des champs correspondants du
ticket figurant dans le champ ticket. Les descriptions des champs
sont identiques à celles du message KDC-REP.