Provided by: manpages-fr_4.18.1-1_all bug

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
              Much  as  files  do,  each  key  has  an  owning user ID, an owning group ID, and a
              security label. Each key also has a set of permissions, though there are more  than
              for  a  normal  UNIX file, and there is an additional category—possessor—beyond the
              usual user, group, and other (see Possession, below).

              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.

              Keyrings with descriptions (names)  that begin with a period ('.') are reserved  to
              the implementation.

       "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.

       Key type names that begin with a period ('.') are reserved to the implementation.

   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)  The process keyrings are searched in the following order: the  thread-keyring(7)   if
            it   exists,   the   process-keyring(7)    if   it   exists,   and  then  either  the
            session-keyring(7)  if it exists or the user-session-keyring(7)  if that exists.

       (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.

   Fichiers /proc
       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

                         name[: 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.

   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.

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)

       Les fichiers source du noyau Documentation/crypto/asymmetric-keys.txt et dans
       Documentation/security/keys (ou, avant Linux 4.13, dans le fichier
       Documentation/security/keys.txt).

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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.