.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2017 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH bzero 3 "20 juillet 2023" "Pages du manuel de Linux 6.05.01" .SH NOM bzero, explicit_bzero \- mise à zéro d'une chaîne d'octets .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .PP \fBvoid bzero(void \fP\fIs\fP\fB[.\fP\fIn\fP\fB], size_t \fP\fIn\fP\fB);\fP .PP \fB#include \fP .PP \fBvoid explicit_bzero(void \fP\fIs\fP\fB[.\fP\fIn\fP\fB], size_t \fP\fIn\fP\fB);\fP .fi .SH DESCRIPTION La fonction \fBbzero\fP() efface les données dans les \fIn\fP premiers octets de la mémoire à partir de l'emplacement pointé par \fIs\fP en écrivant des zéros (octets contenant «\ \e0\ ») dans cette zone. .PP La fonction \fBexplicit_bzero\fP() exécute les mêmes tâches que \fBbzero\fP(). Elle diffère de \fBbzero\fP() en ce qu'elle garantit que les optimisations du compilateur ne suppriment pas l'opération d'effacement si le compilateur déduit que l'opération n'est «\ pas indispensable\ ». .SH "VALEUR RENVOYÉE" Aucune. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBbzero\fP(), \fBexplicit_bzero\fP() T} Sécurité des threads MT\-Safe .TE .sp 1 .SH STANDARDS Aucune. .SH HISTORIQUE .TP \fBexplicit_bzero\fP() glibc 2.25. .IP La fonction \fBexplicit_bzero\fP() est une extension qui n'est pas standard, mais est présente également dans certains BSD. Certaines autres implémentations ont une fonction similaire comme \fBmemset_explicit\fP() ou \fBmemset_s\fP(). .TP \fBbzero\fP() 4.3BSD. .IP Fonction marquée «\ LEGACY\ » dans POSIX.1\-2001, supprimée dans POSIX.1\-2008. .SH NOTES La fonction \fBexplicit_bzero\fP() traite d'un problème que peuvent rencontrer les applications soucieuses de la sécurité lors de l'utilisation de \fBbzero\fP()\ : si le compilateur peut déduire que l'emplacement à mettre à zéro ne sera jamais plus touché par un programme \fIcorrect\fP, alors il peut supprimer complètement l'appel \fBbzero\fP(). C'est un problème si l'intention de l'appel \fBbzero\fP() était d'effacer des données sensibles (par exemple des mots de passe) pour éviter la possibilité de la divulgation des données par un programme incorrect ou compromis. Les appels à \fBexplicit_bzero\fP() ne sont jamais optimisés par le compilateur. .PP La fonction \fBexplicit_bzero\fP() ne résout pas tous les problèmes associés à l'effacement des données sensibles\ : .IP \- 3 La fonction \fBexplicit_bzero\fP() ne garantit \fIpas\fP que les données sensibles sont complètement effacées de la mémoire. (C'est la même chose pour \fBbzero\fP().) Par exemple, il peut y avoir des copies des données sensibles dans un registre et des zones «\ scratch\ » de la pile. La fonction \fBexplicit_bzero\fP() n'a pas connaissance de ces copies et ne peut pas les effacer. .IP \- Dans certaines circonstances, \fBexplicit_bzero\fP() peut réduire la sécurité. Si le compilateur a déterminé que la variable contenant les données sensibles pouvait être optimisée pour être stockée dans un registre (parce qu'elle était assez petite pour tenir dans un registre et qu'aucune autre opération que l'appel \fBexplicit_bzero\fP() n'avait besoin d'obtenir l'adresse de la variable), alors l'appel \fBexplicit_bzero\fP() pourra forcer la copie des données du registre vers un emplacement en mémoire vive qui est alors immédiatement effacé (tandis que la copie dans le registre demeure non touchée). Le problème ici est que la donnée en mémoire vive est plus susceptible d'être exposée par un bogue que les données dans le registre, et donc l'appel \fBexplicit_bzero\fP() crée une courte fenêtre temporelle où les données sont plus vulnérables qu'elles ne l'auraient été si aucune tentative d'effacement des données n'avait été entreprise. .PP Notez que déclarer la variable sensible avec le qualificatif de \fBvolatile\fP \fIn'élimine pas\fP les problème ci\-dessus. En fait, cela ne fait que l’aggraver dans la mesure où, par exemple, cela peut faire qu'une variable, qui autrement aurait été optimisée dans un registre, est plutôt maintenue en mémoire vive (plus vulnérable) durant toute son existence. .PP Malgré les détails ci\-dessus, pour les applications soucieuses de la sécurité, utiliser \fBexplicit_bzero\fP() est généralement préférable à ne pas le faire. Les développeurs d'\fBexplicit_bzero\fP() s'attendent à ce que les compilateurs à venir reconnaîtront les appels d'\fBexplicit_bzero\fP() et prendront des mesures pour s'assurer que toutes les copies des données sensibles sont effacées, y compris les copies dans les registres ou dans les zones «\ scratch\ » de la pile. .SH "VOIR AUSSI" \fBbstring\fP(3), \fBmemset\fP(3), \fBswab\fP(3) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Frédéric Hantrais et Jean-Pierre Giraud . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .