Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       bzero, explicit_bzero - mise à zéro d'une chaîne d'octets

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <strings.h>

       void bzero(void s[.n], size_t n);

       #include <string.h>

       void explicit_bzero(void s[.n], size_t n);

DESCRIPTION

       La fonction bzero() efface les données dans les n premiers octets de la mémoire à partir de l'emplacement
       pointé par s en écrivant des zéros (octets contenant « \0 ») dans cette zone.

       La  fonction explicit_bzero() exécute les mêmes tâches que bzero(). Elle diffère de bzero() 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 ».

VALEUR RENVOYÉE

       Aucune.

VERSIONS

       explicit_bzero() a été introduite dans la glibc 2.25.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ bzero(), explicit_bzero()                                            │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       La  fonction bzero() est déconseillée (marquée « LEGACY » dans POSIX.1-2001), utilisez memset(3) dans les
       nouveaux programmes. POSIX.1-2008 supprime la spécification de bzero(). La fonction bzero  a  été  intro‐
       duite dans 4.3BSD.

       La  fonction  explicit_bzero() 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 memset_explicit() ou mem‐
       set_s().

NOTES

       La fonction explicit_bzero() traite d'un problème que peuvent rencontrer les applications  soucieuses  de
       la  sécurité lors de l'utilisation de bzero() : si le compilateur peut déduire que l'emplacement à mettre
       à zéro ne sera jamais plus touché par un programme correct, alors il peut supprimer complètement  l'appel
       bzero().  C'est  un problème si l'intention de l'appel bzero() é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  in‐
       correct ou compromis. Les appels à explicit_bzero() ne sont jamais optimisés par le compilateur.

       La  fonction  explicit_bzero()  ne résout pas tous les problèmes associés à l'effacement des données sen‐
       sibles :

       -  La fonction explicit_bzero() ne garantit pas que les données sensibles sont complètement  effacées  de
          la  mémoire.  (C'est  la même chose pour bzero().) Par exemple, il peut y avoir des copies des données
          sensibles dans un registre et des zones « scratch » de la pile. La fonction explicit_bzero()  n'a  pas
          connaissance de ces copies et ne peut pas les effacer.

       -  Dans certaines circonstances, explicit_bzero() 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 re‐
          gistre (parce qu'elle était assez petite pour tenir dans un registre et qu'aucune autre opération  que
          l'appel  explicit_bzero()  n'avait  besoin  d'obtenir  l'adresse de la variable), alors l'appel expli‐
          cit_bzero() 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 explicit_bzero() 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.

       Notez  que  déclarer  la  variable  sensible  avec le qualificatif de volatile n'élimine pas 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.

       Malgré  les détails ci-dessus, pour les applications soucieuses de la sécurité, utiliser explicit_bzero()
       est généralement préférable à ne pas le faire. Les développeurs d'explicit_bzero() s'attendent à  ce  que
       les  compilateurs à venir reconnaîtront les appels d'explicit_bzero() et prendront des mesures pour s'as‐
       surer 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.

VOIR AUSSI

       bstring(3), memset(3), swab(3)

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  <tvi‐
       gnaud@mandriva.com>,  François  Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fe‐
       vrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau  <jcristau@de‐
       bian.org>,   Thomas   Huriaux   <thomas.huriaux@gmail.com>,  Nicolas  François  <nicolas.francois@centra‐
       liens.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>,   Frédéric   Hantrais   <fhan‐
       trais@gmail.com> et Jean-Pierre Giraud <jean-pierregiraud@neuf.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 à  de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                         bzero(3)