Может ли массив существовать в нескольких местах в физической памяти? - PullRequest
0 голосов
/ 18 января 2020

Предположим, у меня есть массив, в котором я храню некоторые конфиденциальные данные. Перезапись каждого элемента массива гарантирует, что данные будут удалены из его текущего местоположения в физической памяти.

Однако, могут ли быть какие-либо устаревшие копии данных где-либо еще в физической памяти? Или отображение виртуальной памяти в физическую память фиксировано на время существования массива?

Мне особенно интересно узнать о поведении в C, Java и WebAssembly.

1 Ответ

1 голос
/ 19 января 2020

На всех языках - массив был заполнен из какой-то другой области памяти, поэтому вам необходимо убедиться, что другая область памяти также перезаписана.

На языке с мусором, таком как Java и WebAssembly, вполне возможно, что реализация сборщика мусора будет перемещать объект (например, массив), возможно, без перезаписи предыдущего расположения в памяти.

Следует также отметить, что если данные поступили извне процесса (например, сеть), и был дешифрован до перехода к процессу (или вообще не зашифрован), затем он также может существовать в буфере ОС.

В большинстве случаев лучше не допускать процесс обмена памятью с ненадежной стороной, если она имеет дело с конфиденциальной информацией, вместо того, чтобы отслеживать возможные утечки конфиденциальных данных.

...