Man page - keyrings(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr ru deManual
keyrings
NOMDESCRIPTION
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 .