Man page - explicit_bzero(3)

Packages contains this manual

Available languages:

en fr pt_BR pl ja ru ro

Manual

bzero

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
VOIR AUSSI
TRADUCTION

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.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3885703-1.png

STANDARDS

Aucune.

HISTORIQUE

explicit_bzero ()

glibc 2.25.

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

bzero ()

4.3BSD.

Fonction marquée « LEGACY » dans POSIX.1-2001, supprimée dans POSIX.1-2008.

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 incorrect 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 sensibles :

-

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 registre (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 explicit_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’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.

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 <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>, Frédéric Hantrais <fhantrais@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 à debian-l10n-french@lists.debian.org .