id: Гость   вход   регистрация
текущее время 12:38 16/07/2019
создать
просмотр
редакции
ссылки

Управление памятью


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


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



Здесь &bn — адрес памяти, содержащей переменную bn. Функция bnBegin присвоит этой переменной ссылку на вновь занимаемую память. mgr — это менеджер памяти, который знает, как выделить память, а TRUE указывает на то, что память может содержать ценные данные. Едва ли можно проверить, не сохранит ли Windows эти данные на диск, несмотря на все усилия PGP (Windows NT — огромная программа, и её исходники недоступны), однако мы убедились, что все указания FALSE в вызовах PGP верны.


С помощью программ, наподобие WinGrep, найти все случаи строки "bnBegin" совсем не трудно. Большинство вызовов верны, но несколько из них привлекли более пристальное внимание: в некоторых случаях последние аргументы опущены, как, например, в файле bndsaprime.c:



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


Назад | Дальше


 
Комментариев нет [показать комментарии/форму]
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3