Man page - keyrings(7)

Packages contains this manual

Available languages:

en fr ru de

Manual

keyrings

NOM
DESCRIPTION
Clés
Types de clé
Trousseaux de clés
ClĂ©s d’ancrage
Possession
Droits d’accùs
Recherche de clés
Création à la demande de clé
Utilisateurs
FICHIERS
VOIR AUSSI
TRADUCTION

NOM

keyrings – Gestion interne au noyau de clĂ©s et mĂ©morisation

DESCRIPTION

La fonction de gestion de clĂ©s de Linux est principalement un moyen pour divers composants du noyau de mĂ©moriser ou de mettre en cache des donnĂ©es de sĂ©curitĂ©, des clĂ©s d’authentification, des clĂ©s de chiffrement et d’autres donnĂ©es dans le noyau.

Les interfaces d’appel systĂšme sont fournies de façon Ă  ce que les programmes en espace utilisateur puissent gĂ©rer ces objets, et aussi en utiliser la fonctionnalitĂ© pour leurs propres besoins. Consultez add_key (2), request_key (2) et keyctl (2).

Une bibliothĂšque et quelques utilitaires en espace utilisateur sont fournis pour autoriser l’accĂšs Ă  cette fonctionnalitĂ©. Consultez keyctl (1), keyctl (3) et keyutils (7) pour davantage d’informations.

Clés

Une clé possÚde les attributs suivants :
Numéro de série (ID)

IL s’agit d’un entier unique par lequel une clĂ© est rĂ©fĂ©rencĂ©e dans des appels systĂšme. Le numĂ©ro de sĂ©rie est parfois appelĂ© de maniĂšre synonyme l’identifiant de clĂ©. En programmation, les numĂ©ros de sĂ©rie sont reprĂ©sentĂ©s en utilisant le type key_serial_t .

Type

Le type de clé précise quelle sorte de données sera gérée par la clé, de quelle maniÚre le contenu présenté par la clé sera analysé et comment la charge utile sera utilisée.

Un certain nombre de types génériques sont disponibles en plus de types spécialisés définis par des composants particuliers du noyau.

Description (nom)

La description de la clé est une chaßne affichable qui est utilisée comme terme de recherche de la clé (conjointement avec le type de la clé) ainsi que comme nom à afficher. Lors des recherches, la description peut correspondre partiellement ou totalement.

Charge utile (données)

La charge utile est le contenu rĂ©el de la clĂ©. Elle est habituellement dĂ©finie au moment de la crĂ©ation de la clĂ©, mais il est possible qu’un appel montant (upcall) du noyau dans l’espace utilisateur finisse l’instanciation de la clĂ© si celle-ci n’était pas connue du noyau quand elle a Ă©tĂ© demandĂ©e. Pour plus de dĂ©tails, consultez request_key (2).

Une charge utile de clĂ© peut ĂȘtre lue et mise Ă  jour si le type de clĂ© le gĂšre et si les permissions adĂ©quates sont donnĂ©es Ă  l’appelant.

Droits d’accùs

De la mĂȘme maniĂšre que pour les fichiers, chaque clĂ© possĂšde un ID utilisateur, un ID de groupe et une Ă©tiquette de sĂ©curitĂ©. Chaque clĂ© possĂšde aussi un ensemble de permissions, mais il en existe plus que pour un fichier UNIX normal, et il existe une catĂ©gorie supplĂ©mentaire – possesseur — en plus des utilisateur, groupe et autres. Consultez Possession , ci-dessous).

Il est Ă  remarquer que les clĂ©s sont sujettes Ă  un quota puisqu’elles nĂ©cessitent de la mĂ©moire du noyau non « swappable ». L’ID de l’utilisateur propriĂ©taire indique quel quota doit ĂȘtre dĂ©bitĂ©.

Heure d’expiration

Chaque clĂ© peut avoir une heure d’expiration dĂ©finie. Quand ce moment est atteint, la clĂ© est marquĂ©e comme pĂ©rimĂ©e et une demande d’accĂšs Ă  celle-ci Ă©chouera avec l’erreur EKEYEXPIRED . Si elle n’est pas supprimĂ©e, mise Ă  jour ou remplacĂ©e, alors aprĂšs un certain temps, la clĂ© ayant expirĂ©e est automatiquement supprimĂ©e (collectĂ©e par le ramasse-miettes) avec tous les liens vers elle, et toute tentative d’accĂšs Ă  cette clĂ© Ă©chouera avec l’erreur ENOKEY .

Comptage de références

Chaque clĂ© possĂšde un comptage de rĂ©fĂ©rences. Les clĂ©s sont rĂ©fĂ©rencĂ©es par des trousseaux de clĂ©s, par les utilisateurs actuellement actifs, et par les identifiants d’un processus. Quand le comptage de rĂ©fĂ©rences atteint zĂ©ro, la clĂ© est programmĂ©e pour le ramasse-miettes.

Types de clé

Le noyau fournit plusieurs types basiques de clé :
"keyring"

Les trousseaux de clĂ©s sont des clĂ©s spĂ©ciales qui stockent un ensemble de liens vers d’autres clĂ©s (incluant d’autres trousseaux de clĂ©s), de maniĂšre analogue Ă  un rĂ©pertoire contenant des liens vers des fichiers. L’objectif principal d’un trousseau de clĂ©s est d’empĂȘcher d’autres clĂ©s d’ĂȘtre collectĂ©es par le ramasse-miettes parce qu’elles ne servent de rĂ©fĂ©rences Ă  rien.

Les trousseaux de clĂ©s avec des descriptions (noms) commençant par un point (.) sont rĂ©servĂ©es Ă  l’implĂ©mentation.

"user"

Il s’agit d’un type de clĂ© gĂ©nĂ©rique. La clĂ© est entiĂšrement conservĂ©e dans la mĂ©moire du noyau. La charge utile peut ĂȘtre lue et mise Ă  jour par des applications de l’espace utilisateur.

La charge utile des clés de ce type est un objet binaire (blob) de données arbitraires pouvant contenir 32 767 octets.

La description peut ĂȘtre n’importe quelle chaĂźne autorisĂ©e, bien qu’il soit prĂ©fĂ©rable qu’elle commence par un prĂ©fixe dĂ©limitĂ© par un deux-points reprĂ©sentant le service auquel la clĂ© est destinĂ©e (par exemple, « afs:mykey »).

"logon" (depuis Linux 3.3)

Ce type de clĂ© est fondamentalement identique Ă  « user », mais ne permet pas la lecture (c’est-Ă -dire l’opĂ©ration KEYCTL_READ de keyctl (2)), signifiant que la charge utile n’est jamais visible Ă  partir de l’espace utilisateur. Cela est adaptĂ© au stockage de paires nom d’utilisateur/mot de passe qui ne doivent pas ĂȘtre lisibles Ă  partir de l’espace utilisateur.

La description de la clĂ© « logon » doit dĂ©buter par un prĂ©fixe non vide dĂ©limitĂ© par un deux-points dont le but est d’identifier le service auquel la clĂ© appartient. Il est Ă  remarquer que cela diffĂšre du type de clĂ© « user » oĂč l’incorporation du prĂ©fixe est recommandĂ©e mais pas obligĂ©e.

"big_key" (depuis Linux 3.13)

Ce type de clé est semblable au type « user » de clé, mais il peut contenir une charge utile de taille 1 MiB. Ce type de clé est utile pour, par exemple, contenir des caches de ticket Kerberos.

Les donnĂ©es de la charge utile peuvent ĂȘtre stockĂ©es dans un systĂšme de fichiers tmpfs, plutĂŽt que dans la mĂ©moire du noyau si la taille des donnĂ©es excĂšde la surcharge due au stockage des donnĂ©es dans le systĂšme de fichiers. Stocker les donnĂ©es dans un systĂšme de fichiers nĂ©cessite que des structures de systĂšme de fichiers soient allouĂ©es dans le noyau. La taille de ces structures dĂ©termine le seuil au-dessus duquel la mĂ©thode tmpfs de stockage est utilisĂ©e. Depuis Linux 4.8, les donnĂ©es de la charge utile sont chiffrĂ©es lorsqu’elles sont stockĂ©es en tmpfs, empĂȘchant par consĂ©quentqu’elles soient Ă©crites dans l’espace d’échange sans ĂȘtre chiffrĂ©es.

Il existe aussi d’autres types de clĂ© spĂ©cialisĂ©s, mais ils ne sont pas Ă©voquĂ©s ici, car ils ne sont pas destinĂ©s Ă  une utilisation normale en espace utilisateur.

Les noms de type de clĂ© qui commencent par un point (.) sont rĂ©servĂ©s Ă  l’implĂ©mentation.

Trousseaux de clés

Comme indiquĂ© prĂ©cĂ©demment, les trousseaux de clĂ©s sont un type spĂ©cial de clĂ© qui contient des liens vers d’autres clĂ©s (pouvant inclure d’autres trousseaux de clĂ©s). Les clĂ©s peuvent ĂȘtre liĂ©es Ă  plusieurs trousseaux de clĂ©s. Les trousseaux de clĂ©s peuvent ĂȘtre considĂ©rĂ©s comme analogues Ă  des rĂ©pertoires UNIX oĂč chaque rĂ©pertoire contient un ensemble de liens physiques vers des fichiers.

DiffĂ©rentes opĂ©rations (appels systĂšme) ne peuvent ĂȘtre appliquĂ©es qu’aux trousseaux de clĂ©s :

Ajout

Une clĂ© peut ĂȘtre ajoutĂ©e dans un trousseau de clĂ©s par les appels systĂšme ayant créé les clĂ©s. Cela Ă©vite que la nouvelle clĂ© soit dĂ©truite immĂ©diatement quand l’appel systĂšme libĂšre la derniĂšre rĂ©fĂ©rence Ă  la clĂ©.

Liaison

Un lien peut ĂȘtre ajoutĂ© Ă  un trousseau de clĂ©s pointant vers une clĂ© dĂ©jĂ  connue, si cela ne crĂ©e pas de cycle d’auto-rĂ©fĂ©rencement.

Déliaison

Un lien peut ĂȘtre supprimĂ© d’un trousseau de clĂ©s. Quand le dernier lien vers une clĂ© est supprimĂ©, cette clĂ© sera programmĂ©e pour ĂȘtre collectĂ©e par le ramasse-miettes.

Effacement

Tous les liens peuvent ĂȘtre supprimĂ©s d’un trousseau de clĂ©s.

Recherche

Un trousseau de clĂ©s peut ĂȘtre considĂ©rĂ© comme la racine d’un arbre ou d’un sous-arbre dans lesquels les trousseaux de clĂ©s forment les branches et le reste les feuilles. Cet arbre peut ĂȘtre parcouru pour rechercher une clĂ© d’une description ou d’un type particulier.

Consultez keyctl_clear (3), keyctl_link (3), keyctl_search (3) et keyctl_unlink (3) pour davantage d’informations.

ClĂ©s d’ancrage

Pour empĂȘcher une clĂ© d’ĂȘtre collectĂ©e par le ramasse-miettes, elle doit ĂȘtre ancrĂ©e pour conserver son comptage de rĂ©fĂ©rences en cours lorsqu’elle n’est pas utilisĂ©e activement par le noyau.

Les trousseaux de clĂ©s sont utilisĂ©s pour ancrer d’autres clĂ©s. Chaque lien est une rĂ©fĂ©rence Ă  une clĂ©. Il est Ă  remarquer que les trousseaux de clĂ©s sont eux-mĂȘmes des clĂ©s et sont aussi sujets Ă  la mĂȘme nĂ©cessitĂ© d’ancrage pour empĂȘcher qu’ils soient collectĂ©s par le ramasse-miettes.

Le noyau propose un certain nombre de trousseaux de clĂ©s d’ancrage. Il est Ă  remarquer que certains de ces trousseaux de clĂ©s seront créés seulement lors de leur premiĂšre accession.
Trousseaux de clés de processus

Les identifiants de processus eux-mĂȘmes rĂ©fĂ©rencent les trousseaux de clĂ©s avec des sĂ©mantiques spĂ©cifiques. Ces trousseaux de clĂ©s sont attachĂ©s aussi longtemps que l’ensemble des identifiants existe, ce qui veut dire habituellement aussi longtemps que le processus existe.

Il existe trois trousseaux de clĂ©s avec des rĂšgles d’hĂ©ritage et de partage diffĂ©rentes : session-keyring (7) (hĂ©ritage et partage par tous les processus enfant), process-keyring (7) (partage par tous les threads dans un processus) et thread-keyring (7) (spĂ©cifique Ă  un thread particulier).

Comme alternative Ă  l’utilisation des identifiants rĂ©els de trousseau de clĂ©s dans les appels Ă  add_key (2), keyctl (2) et request_key (2), les valeurs spĂ©ciales de trousseau de clĂ©s KEY_SPEC_SESSION_KEYRING , KEY_SPEC_PROCESS_KEYRING et KEY_SPEC_THREAD_KEYRING peuvent ĂȘtre utilisĂ©es comme rĂ©fĂ©rences aux propres instances de l’appelant de ces trousseaux de clĂ©s.

Trousseau de clés utilisateur

Chaque UID connu du noyau possĂšde un enregistrement qui contient deux trousseaux de clĂ©s : user-keyring (7) et user-session-keyring (7). Ceux-ci existent aussi longtemps que l’enregistrement de l’UID existe dans le noyau.

Comme alternative Ă  l’utilisation des identifiants rĂ©els de trousseau de clĂ©s, dans les appels Ă  add_key (2), keyctl (2) et request_key (2), les valeurs spĂ©ciales de trousseau de clĂ©s KEY_SPEC_USER_KEYRING et KEY_SPEC_USER_SESSION_KEYRING peuvent ĂȘtre utilisĂ©es comme rĂ©fĂ©rences aux propres instances de l’appelant de ces trousseaux de clĂ©s.

Un lien vers le trousseau de clés utilisateur est placé dans le nouveau trousseau de clés de session par pam_keyinit (8) quand une nouvelle session de connexion est initiée.

Trousseaux de clés persistants

Il existe un persistent-keyring (7) disponible pour chaque UID connu du systĂšme. Il peut persister au-delĂ  de la durĂ©e de l’enregistrement de l’UID prĂ©cĂ©demment mentionnĂ©, mais possĂšde un ensemble de dĂ©lais d’expiration de telle façon qu’il soit automatiquement nettoyĂ© aprĂšs un temps dĂ©fini. Les trousseaux de clĂ©s persistants permettent, par exemple, aux scripts cron (8) d’utiliser les identifiants laissĂ©s dans le trousseau de clĂ©s persistant aprĂšs la dĂ©connexion de l’utilisateur.

Il est Ă  remarquer que le dĂ©lai d’expiration du trousseau de clĂ©s persistant est rĂ©initialisĂ© Ă  chaque requĂȘte du trousseau de clĂ©s persistant.

Trousseaux de clés spéciaux

Il existe des trousseaux de clés spéciaux possédés par le noyau qui peuvent ancrer des clés pour des buts spéciaux. Un exemple de cela est le trousseau de clés systÚme utilisé pour contenir les clés de chiffrement pour la vérification de signature des modÚles.

Ces trousseaux de clĂ©s spĂ©ciaux sont habituellement fermĂ©s Ă  une altĂ©ration directe par l’espace utilisateur.

Un « trousseau de clĂ©s groupe », originellement prĂ©vu pour stocker des clĂ©s associĂ©es avec chaque GID connu du noyau, n’est pas encore implĂ©mentĂ© et vraisemblablement ne le sera jamais. NĂ©anmoins, la constante KEY_SPEC_GROUP_KEYRING a Ă©tĂ© dĂ©finie pour ce type de trousseau de clĂ©s.

Possession

Le concept de possession est important pour comprendre le modĂšle de sĂ©curitĂ© des trousseaux de clĂ©s. La possession par un thread d’une clĂ© est dĂ©terminĂ©e par les rĂšgles suivantes :

(1)

Toute clĂ© ou tout trousseau qui n’accorde pas la permission de recherche Ă  l’appelant est ignorĂ© dans toutes les rĂšgles qui suivent.

(2)

Un thread possÚde ses session-keyring (7), process-keyring (7) et thread-keyring (7) directement, car ces trousseaux de clés sont référencés par ses identifiants.

(3)

Si un trousseau de clés est possédé, alors toute clé liée est aussi possédée

(4)

Si une clĂ© reliĂ©e Ă  un trousseau de clĂ©s est elle-mĂȘme un trousseau de clĂ©s, alors la rĂšgle (3) s’applique de maniĂšre rĂ©cursive.

(5)

Si le noyau fait un appel montant de processus pour instancier une clĂ© (consultez request_key (2)), alors il possĂšde aussi les trousseaux de clĂ©s du requĂ©rant comme dans la rĂšgle (1) comme s’il Ă©tait le requĂ©rant.

La possession n’est pas une propriĂ©tĂ© fondamentale de la clĂ©, mais doit plutĂŽt ĂȘtre calculĂ©e Ă  chaque besoin de la clĂ©.

La possession est conçue pour permettre l’exĂ©cution de programmes set-user-ID Ă  partir, par exemple, d’un interprĂ©teur de commandes d’utilisateur pour accĂ©der aux clĂ©s de l’utilisateur. Accorder la permission au possesseur de la clĂ© tout en la refusant au propriĂ©taire et au groupe de la clĂ© permet d’empĂȘcher l’accĂšs Ă  la clĂ© sur la base de correspondance D’UID ou GID.

Lorsqu’il crĂ©e un trousseau de clĂ©s de session, pam_keyinit (8) ajoute un lien Ă  user-keyring (7), ce qui entraĂźne que le trousseau de clĂ©s d’utilisateur et tout ce qu’il contient sont possĂ©dĂ©s par dĂ©faut.

Droits d’accùs

Chaque clé possÚde les attributs relatifs à la sécurité suivants :

-

l’ID de l’utilisateur propriĂ©taire ;

-

l’ID du groupe autorisĂ© Ă  accĂ©der Ă  la clé ;

-

une étiquette de sécurité ;

-

un masque de permissions.

Le masque de permissions contient quatre ensembles de droits. Les trois premiers ensembles sont mutuellement exclusifs. Un et seulement un ensemble sera effectif pour une vĂ©rification particuliĂšre d’accĂšs. Dans l’ordre dĂ©croissant de prioritĂ©, ces trois ensembles sont :

user

Cet ensemble indique les droits accordĂ©s si l’ID utilisateur de clĂ© correspond Ă  l’ID utilisateur de systĂšme de fichiers de l’appelant.

group

Cet ensemble indique les droits accordĂ©s si l’ID utilisateur ne correspond pas et que l’ID groupe de clĂ© correspond au GID du systĂšme de fichiers de l’appelant ou Ă  un de ses ID groupe supplĂ©mentaires.

other

Cet ensemble indique les droits accordĂ©s si ni l’ID utilisateur ni l’Id groupe de la clĂ© ne correspondent.

Le quatriÚme ensemble de droits est :
possessor

Cet ensemble indique les droits accordĂ©s s’il est Ă©tabli que l’appelant possĂšde la clĂ©.

L’ensemble complet des droits pour une clĂ© est l’union de tout ce qui est applicable des trois premiers ensembles et du quatriĂšme ensemble si la clĂ© est possĂ©dĂ©e.

L’ensemble des droits qui peuvent ĂȘtre accordĂ©s dans chacun des quatre masques est comme suit :

view

Les attributs de la clĂ© peuvent ĂȘtre lus. Cela comprend le type, la description et les droits d’accĂšs (Ă  l’exclusion de l’étiquette de sĂ©curitĂ©).

read

Pour une clĂ©, sa charge utile peut ĂȘtre lue, pour un trousseau de clĂ©s, la liste des numĂ©ros de sĂ©rie (clĂ©s) auxquels le trousseau de clĂ©s est liĂ© peut ĂȘtre lue.

write

La charge utile de la clĂ© peut ĂȘtre mise Ă  jour et la clĂ© peut ĂȘtre rĂ©voquĂ©e. Pour un trousseau de clĂ©s, des liens peuvent y ĂȘtre ajoutĂ©s ou retirĂ©s et le trousseau de clĂ©s peut ĂȘtre complĂštement effacĂ© (tous les liens sont retirĂ©s).

search

Pour une clĂ© (ou un trousseau de clĂ©s), la clĂ© peut ĂȘtre trouvĂ©e par une recherche. Pour un trousseau de clĂ©s, les clĂ©s ou trousseaux de clĂ©s liĂ©s peuvent ĂȘtre retrouvĂ©s.

link

Des liens peuvent ĂȘtre créés des trousseaux de clĂ©s vers la clĂ©. Le lien initial vers une clĂ© qui est Ă©tabli quand la clĂ© est créée n’a nul besoin de cette permission.

setattr

Les dĂ©tails de possession et l’étiquette de sĂ©curitĂ© de la clĂ© peuvent ĂȘtre modifiĂ©s, le dĂ©lai d’expiration de la clĂ© peut ĂȘtre rĂ©glĂ© et la clĂ© peut ĂȘtre rĂ©voquĂ©e.

En plus des droits d’accĂšs, tout module de sĂ©curitĂ© de Linux (LSM) peut empĂȘcher l’accĂšs Ă  une clĂ© si sa politique l’indique. Une clĂ© peut recevoir une Ă©tiquette de sĂ©curitĂ© ou un autre attribut par le LSM. Cette Ă©tiquette est rĂ©cupĂ©rable Ă  l’aide de keyctl_get_security (3).

Consultez keyctl_chown (3), keyctl_describe (3), keyctl_get_security (3), keyctl_setperm (3) et selinux (8) pour davantage d’informations.

Recherche de clés

Une des caractĂ©ristiques principales de la fonctionnalitĂ© de gestion de clĂ©s de Linux est la possibilitĂ© de trouver la clĂ© qu’un processus conserve. L’appel systĂšme request_key (2) est le premier point d’accĂšs pour les applications en espace utilisateur pour trouver la clĂ©. En interne, le noyau a quelque chose de similaire disponible pour une utilisation par les composants internes qui utilisent des clĂ©s.

L’algorithme de recherche fonctionne comme suit :

(1)

Les trousseaux de clĂ©s des processus sont recherchĂ©s dans l’ordre suivant : le thread-keyring (7) s’il existe, le process-keyring (7) s’il existe et ensuite soit le session-keyring (7) s’il existe ou le user-session-keyring (7) s’il existe.

(2)

Si l’appelant Ă©tait un processus invoquĂ© par le mĂ©canisme d’appel montant request_key (2), alors les trousseaux de clĂ©s de l’appelant originel de request_key (2) seront aussi recherchĂ©s.

(3)

La recherche dans l’arbre des trousseaux est faite en largeur : chaque trousseau de clĂ©s est d’abord parcouru pour une correspondance puis les trousseaux de clĂ©s rĂ©fĂ©rencĂ©s par ce trousseau sont parcourus.

(4)

Si une clé correspondante valable est trouvée, alors la recherche se termine et cette clé est renvoyée.

(5)

Si une clĂ© correspondante est trouvĂ©e Ă  laquelle est attachĂ© un Ă©tat d’erreur, cet Ă©tat d’erreur est notĂ© et la recherche continue.

(6)

Si aucune clĂ© correspondante valable n’est trouvĂ©e, alors le premier Ă©tat d’erreur est renvoyĂ©. Autrement, une erreur ENOKEY est renvoyĂ©e.

Il est aussi possible de rechercher une clĂ© particuliĂšre, auquel cas seules les Ă©tapes (3) à (6) s’appliquent.

Consultez request_key (2) et keyctl_search (3) pour davantage d’informations.

Création à la demande de clé

Si une clĂ© ne peut ĂȘtre trouvĂ©e, et si un argument callout_info est fourni, request_key (2) crĂ©era une nouvelle clĂ© et un appel montant dans l’espace utilisateur instanciera la clĂ©. Cela permet de crĂ©er des clĂ©s selon les besoins.

Classiquement, cela impliquera la crĂ©ation d’un nouveau processus par le noyau qui exĂ©cutera le programme request-key (8), qui lui-mĂȘme exĂ©cutera alors le gestionnaire appropriĂ© basĂ© sur sa configuration.

Une clĂ© d’autorisation spĂ©ciale est passĂ©e au gestionnaire qui lui permet, lui et seulement lui, d’instancier la nouvelle clĂ©. Cela est aussi utilisĂ© pour permettre des recherches rĂ©alisĂ©es par le programme gestionnaire pour aussi rechercher les trousseaux de clĂ©s du requĂ©rant.

Consultez request_key (2), keyctl_assume_authority (3), keyctl_instantiate (3), keyctl_negate (3), keyctl_reject (3), request-key (8) et request-key.conf (5) pour davantage d’informations.

Utilisateurs

La fonctionnalitĂ© de gestion de clĂ©s de Linux a un certain nombre d’utilisateurs et d’usages, mais n’est pas limitĂ©e Ă  ce qui existe dĂ©jĂ .

Les utilisateurs du noyau de cette fonctionnalité comprennent :
SystĂšmes de fichiers rĂ©seau – DNS

Le noyau utilise le mĂ©canisme d’appel montant fourni par les clĂ©s pour un appel montant dans l’espace utilisateur pour des recherches DNS et puis pour mettre en cache les rĂ©sultats.

AF_RXRPC et kAFS – Authentification

Le protocole rĂ©seau AF_RXRPC et le systĂšme de fichiers AFS interne au noyau utilisent les clĂ©s pour enregistrer le ticket nĂ©cessaire pour un trafic sĂ©curisĂ© ou chiffrĂ©. Celles-ci sont recherchĂ©es par les opĂ©rations rĂ©seau lors d’opĂ©rations AF_RXRPC et de systĂšme de fichiers sur kAFS.

NFS – Mappage d’ID utilisateur

Le systĂšme de fichiers NFS utilise des clĂ©s pour stocker les mappages d’ID utilisateur Ă©trangers Ă  des ID utilisateur locaux.

CIFS – Mot de passe

Le systĂšme de fichiers CIFS utilise des clĂ©s pour stocker les mots de passe pour l’accĂšs Ă  des partages distants.

Vérification de module

Le processus de construction du noyau peut ĂȘtre conduit pour une signature chiffrĂ©e des modules.

Les utilisateurs de l’espace utilisateur de cette fonctionnalitĂ© incluent :
Stockage de clés Kerberos

La fonctionnalitĂ© Kerberos 5 du MIT (libkrb5) peut utiliser des clĂ©s pour stocker les jetons d’authentification. Cela peut servir Ă  les supprimer automatiquement aprĂšs une durĂ©e dĂ©finie lorsque l’utilisateur les a utilisĂ©s pour la derniĂšre fois, mais pendant ce temps leur permettre de se maintenir jusqu’à ce que l’utilisateur se soit dĂ©connectĂ© de façon Ă  ce que les scripts cron (8) puissent les utiliser.

FICHIERS

Le noyau fournit divers fichiers /proc qui exposent les informations concernant les clĂ©s ou qui dĂ©finissent les limites d’utilisation des clĂ©s.
/proc/keys
(depuis Linux 2.6.10)

Ce fichier expose une liste de clĂ©s pour laquelle le thread lecteur possĂšde la permission view , fournissant diverses informations Ă  propos de chaque clĂ©. Il n’est pas nĂ©cessaire que le thread possĂšde la clĂ© pour que cette derniĂšre soit visible dans ce fichier.

Les seules clĂ©s incluses dans la liste sont celles qui accordent la permission view au processus lecteur (indĂ©pendamment du fait qu’il les possĂšde ou non). Les vĂ©rifications de sĂ©curitĂ© LSM sont toujours rĂ©alisĂ©es et peuvent supprimer par filtrage d’autres clĂ©s que le processus n’est pas autorisĂ© Ă  voir.

Voici un exemple de donnĂ©es pouvant ĂȘtre vues dans ce fichier (avec un numĂ©rotage des colonnes pour une rĂ©fĂ©rence facile dans les explications) :

(1) (2) (3)(4) (5) (6) (7) (8) (9)
009a2028 I--Q--- 1 perm 3f010000 1000 1000 user krb_ccache:primary: 12
1806c4ba I--Q--- 1 perm 3f010000 1000 1000 keyring _pid: 2
25d3a08f I--Q--- 1 perm 1f3f0000 1000 65534 keyring _uid_ses.1000: 1
28576bd8 I--Q--- 3 perm 3f010000 1000 1000 keyring _krb: 1
2c546d21 I--Q--- 190 perm 3f030000 1000 1000 keyring _ses: 2
30a4e0be I------ 4 2d 1f030000 1000 65534 keyring _persistent.1000: 1
32100fab I--Q--- 4 perm 1f3f0000 1000 65534 keyring _uid.1000: 2
32a387ea I--Q--- 1 perm 3f010000 1000 1000 keyring _pid: 2
3ce56aea I--Q--- 5 perm 3f030000 1000 1000 keyring _ses: 1

Les champs affichés dans chaque ligne du fichier sont les suivants :

ID (1)

L’Id (numĂ©ro de sĂ©rie) de la clĂ© exprimĂ© en hexadĂ©cimal.

Indicateurs (2)

Un ensemble d’indicateurs dĂ©crivant l’état de la clé :

I

La clé a été instanciée.

R

La clé a été révoquée.

D

La clĂ© est morte (c’est-Ă -dire que le type de clĂ© n’est plus enregistrĂ©). Une clĂ© peut ĂȘtre briĂšvement dans cet Ă©tat lors de la collecte par le ramasse-miettes.

Q

La clĂ© contribue au quota de l’utilisateur.

U

La clĂ© est en cours de construction Ă  l’aide d’une fonction de rappel dans l’espace utilisateur. Consultez request-key (2).

N

La clé est instanciée négativement.

i

La clé a été invalidée.

Utilisation (3)

C’est un comptage du nombre de structures d’identifiant qui Ă©pinglent la clĂ© (approximativement, le nombre de rĂ©fĂ©rences de threads et de fichiers ouverts qui se rĂ©fĂšrent Ă  cette clĂ©).

Durée (4)

Le dĂ©lai avant que la clĂ© n’expire, exprimĂ© sous forme comprĂ©hensible (semaines, jours, heures, minutes et secondes). La chaĂźne perm signifie ici que la clĂ© est permanente (aucun dĂ©lai). La chaĂźne expd signifie que la clĂ© a dĂ©jĂ  expirĂ©e, mais n’a pas Ă©tĂ© collectĂ©e par le ramasse-miettes.

Permissions (5)

Les permissions de clĂ©, exprimĂ©es sous forme de quatre octets hexadĂ©cimaux contenant, de gauche Ă  droite, le possesseur, l’utilisateur, le groupe et les autres permissions. À l’intĂ©rieur de chaque octet, les bits de permission sont comme suit :

0x01

view

0x02

read

0x04

write

0x08

search

0x10

link

0x20

setattr

UID (6)

L’ID utilisateur du possesseur de la clĂ©.

GID (7)

L’ID de groupe de la clĂ©. La valeur -1 signifie ici que la clĂ© n’a pas d’ID de groupe. Cela peut se produire dans certaines circonstances pour des clĂ©s créées par le noyau.

Type (8)

Le type de clé (utilisateur, trousseau de clés, etc.)

Description (9)

La description de la clé (nom). Ce champ contient une information descriptive à propos de la clé. Pour la plupart des types de clé, elle a la forme

nom[: extra-info]

Le sous-champ nom est la description de la clé (nom). Le champ facultatif extra-info fournit quelques autres informations à propos de la clé. Les informations qui apparaissent comme suit dépendent du type de clé :
"user"
et "logon"

La taille en octets de la charge utile de la clé (exprimée en décimal).

"keyring"

Le nombre de clĂ©s liĂ©es au trousseau de clĂ©s ou la chaĂźne empty s’il n’existe aucune clĂ© liĂ©e au trousseau.

"big_key"

La taille de la charge utile en octets, suivie soit par la chaßne [file] si la charge utile de la clé excÚde le seuil signifiant que la charge utile est stockée dans un systÚme de fichiers tmpfs (5) (swappable), ou autrement la chaßne [buff] indiquant que la clé est suffisamment petite pour résider dans la mémoire du noyau.

Pour le type de clĂ© « .request_key_auth » (clĂ© d’autorisation, consultez request_key (2)), le champ de description a la forme montrĂ©e dans l’exemple suivant :

key:c9a9b19 pid:28880 ci:10

Les trois sous-champs sont comme suit :

key

L’ID hexadĂ©cimal de la clĂ© en cours d’instanciation dans le programme requĂ©rant.

pid

Le PID du programme requérant.

ci

La taille des annotations avec lesquelles la clĂ© demandĂ©e devrait ĂȘtre instanciĂ©e (c’est-Ă -dire la taille de la charge utile associĂ©e avec la clĂ© d’autorisation).

/proc/key-users (depuis Linux 2.6.10)

Ce fichier liste diverses informations pour chaque ID utilisateur qui possÚde au moins une clé dans le systÚme. Voici un exemple des données visibles dans ce fichier :

0: 10 9/9 2/1000000 22/25000000
42: 9 9/9 8/200 106/20000
1000: 11 11/11 10/200 271/20000

Les champs affichés dans chaque ligne sont les suivants :

uid

L’ID utilisateur.

usage

Il s’agit d’un comptage d’utilisation interne au noyau pour la structure utilisĂ©e pour enregistrer les utilisateurs de clĂ©.

nkeys / nikeys

Le nombre total de clĂ© possĂ©dĂ©es par l’utilisateur et le nombre de clĂ©s ayant Ă©tĂ© instanciĂ©es.

qnkeys / maxkeys

Le nombre de clĂ©s possĂ©dĂ©es par l’utilisateur et le nombre maximal de clĂ©s que l’utilisateur peut possĂ©der.

qnbytes / maxbytes

Le nombre d’octets utilisĂ©s dans les charges utiles des clĂ©s possĂ©dĂ©es par l’utilisateur et la limite haute du nombre d’octets dans les charges utiles des clĂ©s pour cet utilisateur.

/proc/sys/kernel/keys/gc_delay (depuis Linux 2.6.32)

La valeur dans ce fichier indique l’intervalle, en seconde, aprĂšs lequel les clĂ©s rĂ©voquĂ©es ou expirĂ©es seront collectĂ©es par le ramasse-miettes. Cet intervalle a pour but de disposer d’une fenĂȘtre temporelle pendant laquelle l’espace utilisateur peut voir une erreur (respectivement EKEYREVOKED et EKEYEXPIRED ) qui indique ce qui est arrivĂ© Ă  la clĂ©.

La valeur par dĂ©faut dans ce fichier est 300 (c’est-Ă -dire cinq minutes).

/proc/sys/kernel/keys/persistent_keyring_expiry (depuis Linux 3.13)

Ce fichier dĂ©finit un intervalle, en secondes, aprĂšs lequel le programmateur de durĂ©e du trousseau de clĂ©s persistant est rĂ©initialisĂ© chaque fois que le trousseau de clĂ©s est accĂ©dĂ© (Ă  l’aide de l’opĂ©ration keyctl_get_persistent (3) ou keyctl (2) KEYCTL_GET_PERSISTENT ).

La valeur par dĂ©faut dans ce fichier est 259200 (c’est-Ă -dire trois jours).

Les fichiers suivants (pouvant ĂȘtre modifiĂ©s par les processus privilĂ©giĂ©s) sont utilisĂ©s pour imposer des quotas sur le nombre de clĂ©s et le nombre d’octets de donnĂ©es pouvant ĂȘtre stockĂ©s dans les charges utiles des clĂ©s :
/proc/sys/kernel/keys/maxbytes
(depuis Linux 2.6.26)

C’est le nombre maximal d’octets de donnĂ©es que les utilisateurs non privilĂ©giĂ©s peuvent dĂ©tenir dans les charges utiles des clĂ©s qu’ils possĂšdent.

La valeur par défaut dans ce fichier est 20 000.

/proc/sys/kernel/keys/maxkeys (depuis Linux 2.6.26)

C’est le nombre maximal de clĂ©s qu’un utilisateur non privilĂ©giĂ© peut possĂ©der.

La valeur par défaut dans ce fichier est 200.

/proc/sys/kernel/keys/root_maxbytes (depuis Linux 2.6.26)

C’est le nombre maximal d’octets de donnĂ©es que le superutilisateur (UID 0 dans l’espace de noms utilisateur racine) peut dĂ©tenir dans les charges utiles des clĂ©s qu’il possĂšde.

La valeur par défaut dans ce fichier est 25 000 000 (20 000 avant Linux 3.17).

/proc/sys/kernel/keys/root_maxkeys (depuis Linux 2.6.26)

C’est le nombre maximal de clĂ©s que le superutilisateur (UID 0 dans l’espace de noms utilisateur racine) peut dĂ©tenir.

La valeur par défaut dans ce fichier est 1 000 000 (200 avant Linux 3.17).

En ce qui concerne les trousseaux de clés, il est à remarquer que chaque lien dans un trousseau consomme quatre octets de la charge utile du trousseau.

VOIR AUSSI

keyctl (1), add_key (2), keyctl (2), request_key (2), keyctl (3), keyutils (7), persistent-keyring (7), process-keyring (7), session-keyring (7), thread-keyring (7), user-keyring (7), user-session-keyring (7), pam_keyinit (8), request-key (8)

linux.git/Documentation/crypto/asymmetric-keys.txt

linux.git/Documentation/security/keys/

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .