Allocation/desallocation de RAM sur PC

Salut, j'ai une question presque hors-charte ( je vais me faire allumer par Jean-Christophe :-) mais comme je sais que nous avons parmi nous des connaisseurs en informatique et PC, je me jette :

Est-ce que la memoire RAM allouee par un programme, par exemple lors d'un appel a la fonction malloc(); est effacee lorsqu'elle est desallouee ? Si ce n'est pas le cas, les dernieres informations qui y sont pourraient etre recuperees par un autre programme : si je fais un malloc() et que je regarde le buffer RAM, j'y vois quelque fois des trucs qui proviennent du dernier programme a y acceder, je trouve que ca peut etre dangereux.

Ma question est : faut-il explicitement remettre la memoire a zero via un appel a la fonction memset(ram,0,size); avant de la desallouer et terminer le programme, pour etre sur d'en avoir efface les informations ?

Exemple 1: Avec un editeur de texte, on fait un copier/coller d'un bout de texte qui contient un numero de carte bancaire : une fois le programme ferme, est-ce que la RAM du PC contient toujours cette information sensible ?

Exemple 2: J'ai un programme qui crypte des donnees, j'ai en entree un buffer memoire avec les donnees en clair, et en sortie un buffer memoire avec les donnees cryptees : une fois le programme ferm=E9, est-ce que la RAM du PC contient toujours cette information sensible ?

Reply to
Jean-Christophe
Loading thread data ...

"Jean-Christophe" a écrit dans le message de news: snipped-for-privacy@z38g2000yqh.googlegroups.com...

non, aucun interet d'ailleurs

il en est de meme sur la pile, ou dans route autre partie de la memoire

c'est pas loin de la paranoia, mais si tu veux effacer la memoire c'est la seule solution.

bhen oui

oui, mais ce que tu oublies, c'est que dans un chiffrement c'est la clé qui compte, pas les données, donc ce qui faut effacer c'est la clé. si c'est en dur dans un programme, c'est la que se trouve le maillon faible.

Reply to
jlp

Oui.

Exact.

Comme je l'ai dit, tu peux ecrire un programme de test qui fait un malloc de plusieurs megaoctets, puis avec un viewer hexadecimal tu visualises ce buffer RAM : je t'assure que tu peux avoir des surprises, comme par exemple y retrouver des passwords utilises recemment. Tant que ces zones RAM n'ont pas ete reecrites par un autre programme, les informations y restent. C'est d'ailleurs la raison de l'origine de ma question : la plupart du temps on s'en fout, mais pour certaines applications sensibles, ca represente vraiment un risque.

Okay.

qui

Dans mon exemple je me referais bien sur au buffer d'entree, celui qui contient les donnees *en clair*.

le.

C'est vrai, mais dans mon prog ce n'est pas le cas. Anyway merci pour tes reponses, JLP.

Reply to
Jean-Christophe

"Jean-Christophe" a écrit dans le message de news: snipped-for-privacy@d4g2000yqa.googlegroups.com...

ca ce n'est pas genant, ca disparait quand le jus est coupé, mais va voir dans ton fichier de swap, tu seras encore plus surpris, donc meme en effacant ta memoire, tu as un stock de données dans le swap, et c'est sur le disque ndur!

Reply to
jlp

On Aug 28, 12:33 pm, "jlp"

Ben si c'est genant, on ne coupe pas le jus apres chaque appel d'un programme :-)

Exact, je n'avais pas pense au fichier de swap, rogntudju !

Comment faire pour que dans mon programme, il n'y ait pas de swap de la RAM vers le disque entre le malloc() et le free(), sachant que c'est le systeme qui decide de swapper la RAM ?

Mon prog utilise la RAM pendant un temps relativement court, quelques millisecondes maxi, alors je pourrais temporairement passer la thread de mon prog en priorite temps reel jusqu'a ce que j'aie efface la RAM ?

A moins qu'il existe une fonction qui permette de suspendre temporairement certaines fonctions systeme, comme le swap ?

Reply to
Jean-Christophe

man mlock

--
Mathieu Chouquet-Stringer
            The sun itself sees not till heaven clears.
	             -- William Shakespeare --
Reply to
Mathieu Chouquet-Stringer

On Aug 28, 1:38=A0pm, Mathieu Chouquet-Stringer :

Sous Windows avec un compilateur Visual C++ ?

Reply to
Jean-Christophe

No se mais ça serait étonnant que ça n'existe pas...

--
Mathieu Chouquet-Stringer
            The sun itself sees not till heaven clears.
	             -- William Shakespeare --
Reply to
Mathieu Chouquet-Stringer

Bonjour Mathieu Vouloir securiser soft une (partie) d'application sensible en usant de standard documenté est illusoire ! :oÞ

ça se "pelle" à la mano (et au moins à 6 mains :') ) en connnaissant initialements les tenants et les aboutissants ;o)

Rvl

Reply to
rvlegran

On Aug 28, 1:43 pm, Mathieu Chouquet-Stringer :

Oui il y a un equivalent: GlobalLock(), dont la doc specifie "Locked memory will not be moved or discarded"

Mais est-ce que ces fonctions (comme mlock) garantissent qu'il n'y aura aucun swap jusqu'a l'appel de GlobalUnlock() ? En principe cela devrait bien etre le cas ...

Reply to
Jean-Christophe

On Aug 28, 1:52=A0pm, "rvlegran" :

sant

Dans mon prog la memoire est non-moveable et locked. Il s'agit juste de s'assurer que la memoire soit effacee avant d'etre liberee, et qu'il n'y ait pas eu de swap.

Reply to
Jean-Christophe

"rvlegran" a écrit dans le message de news: snipped-for-privacy@demande.net...

Je pense que c'est l'une des raisons parmi des tonnes d'autres qui fait que Windaube ne peut pas et n'est pas un OS "sécuritaire"... De plus que l'on ne dispose pas des sources pour voir ce que fait cet OS et découvrir ses failles de sécurité.

Bonnes bidouilles à tous. pf

Reply to
Pierre-François (f5bqp_pfm)

Sous Unix c'est le fonctionnement : mlockall locke ton process en RAM jusqu'à appel de munlockall... Après RTFM pour Windows...

Enfin le plus simple c'est peut-être de ne pas utiliser de swap (enfin ça dépendant de ce que tu fais tourner sur la machine).

--
Mathieu Chouquet-Stringer
            The sun itself sees not till heaven clears.
	             -- William Shakespeare --
Reply to
Mathieu Chouquet-Stringer

Mouais, je suis pas entièrement d'accord : sa demande est légitime. De toutes manières, il est obligé d'avoir la clé en mémoire à un moment ou un autre donc s'il peut minimiser les risques d'exposition, il aurait tort de se priver.

"Pelle" ?

--
Mathieu Chouquet-Stringer
            The sun itself sees not till heaven clears.
	             -- William Shakespeare --
Reply to
Mathieu Chouquet-Stringer

On Aug 28, 2:37=A0pm, Mathieu Chouquet-Stringer :

e toutes

u un autre

river.

Tout a fait, et je ne vais pas me gener :-)

Reply to
Jean-Christophe

On Aug 28, 2:33=A0pm, Mathieu Chouquet-Stringer :

Ok.

Oui bien sur, mais la je n'ai pas le choix. Merci pour tes infos.

Reply to
Jean-Christophe

Mathieu Chouquet-Stringer se fendait de cette prose :

Au prix du Go de Ram, on peut facilement se passer de swap.

--
LeLapin
Reply to
LeLapin

Mathieu Chouquet-Stringer se fendait de cette prose :

On peut très facilement programmer de telle sorte que la clé ne soit pas clairement stockée en mémoire. C'est pas infaillible mais ça peut aider.

--
LeLapin
Reply to
LeLapin

On Aug 28, 4:32=A0pm, LeLapin :

J'attends qu'on puisse meme se passer de disques durs.

Reply to
Jean-Christophe

Jean-Christophe se fendait de cette prose :

On peut aussi, les disques solid state sont pas si chers que ça.

--
LeLapin
Reply to
LeLapin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.