Kerberos et le chiffrement

Kerberos supporte, sur Windows 2003, divers types de chiffrement et longueurs de clé. On y retrouve:

  • le RC4 (Rivest Cipher 4), avec une longueur de  clé de 128 bits, et combiné à l’algorithme de signature HMAC;
  • le DES (Data Encryption Standard), associé au CRC (Cyclic Redundancy Check);
  • le DES, combiné au MD5 (Message Digest 5).

Avec Windows 2008, apparaît également:

  • l’AES (Advanced Encryption Standard), avec deux longueurs de clé possibles (128 bits et 256 bits).

Ci-dessous, une configuration d’utilisateur indiquant que le DES n’est pas utilisé: la case « Use Kerberos DES ecryption types for this account » n’y est pas cochée.

Propriétés d'un compte User

Propriétés d'encryptage d'un objet User

Notons d’ailleurs que pour les serveurs Windows 2008 R2 comme les postes de travail Windows 7, le DES n’est plus utilisé par défaut. On s’empressera (avant toute extinction hâtive) de vérifier si des applicatifs tiers le nécessitent.

L’usage du type de chiffrement peut se définir à plusieurs niveaux. On l’a vu précédemment côté utilisateur. Pour les postes de travail, les serveurs membres et les contrôleurs de domaine, il est également possible de préciser les algorithmes de chiffrement retenus, au moyen d’une GPO par exemple. Comme présenté ci-dessous, on pourra activer le DES comme l’AES en activant le paramètre « Network security : Configure encryption types allowed for Kerberos ». Les types non cochés ne seront alors pas disponibles.

Paramètre de GPO autorisant le DES

Paramètre de GPO autorisant le DES

Notons enfin que le type de chiffrement utilisé peut avoir un impact non négligeable sur le temps de connexion.

Qu’est-ce qu’un SPN?

SPN, voilà un bien bel acronyme. SPN signifie « Service Principal Name », soit mais après ? Un équivalent dans le monde « DNS » serait un enregistrement de ressource de type CNAME. Bref un alias. Là, il s’agit d’un alias dans le monde « KERBEROS ».

Lorsqu’un client souhaite accéder à un service, il va d’abord chercher à savoir qui porte le service. Dans Active Directory, cette information est stockée dans l’attribut multivalué « servicePrincipalName » d’objets computer ou user.

Ci-dessous un exemple de SPN, sur un contrôleur de domaine Windows 2008 R2.

Attribut "servicePrincipalName"

Attribut "servicePrincipalName" d'un objet Computer

Un SPN suit le format <service>/<hôte>.

  • <service> correspond à une classe de service (ex: « ldap » pour du service… LDAP)
  • <hôte> peut être soit le FQDN du dit hôte soit son nom NETBIOS, l’unicité n’étant alors pas garantie.

Il arrive que l’on trouve un voire deux autres paramètres constituant le SPN comme le port utilisé par l’instance du service et un nom optionnel. Dans ce cas, on trouvera le SPN sous la forme <service>/<hôte>:<port>/<nom>.

Si on imagine facilement qu’un compte Computer puisse porté ce type d’information, il n’en reste effectivement pas moins qu’un compte User peut également voir cet attribut renseigné. On retrouve ce cas pour certains « comptes de service ».