Под сертификацию ФСТЭК
Показатели защищенности от несанкционированного доступа к информации подпадают средства вычислительной техники (HW+SW) в случае, если есть разделение доступа в Ваших системах. Помните, вводя логины и пароли ...
Рассмотрим одно из требований - очистку памяти. Уточним - оперативной памяти.
Цитата:
6класс. При первоначальном назначении или при перераспределении внешней памяти КСЗ должен предотвращать доступ субъекту к остаточной информации.
4класс. При первоначальном назначении или при перераспределении внешней памяти КСЗ должен затруднять субъекту доступ к остаточной информации. При перераспределении оперативной памяти КСЗ должен осуществлять ее очистку.
3класс. Для СВТ третьего класса защищенности КСЗ должен осуществлять очистку оперативной и внешней памяти. Очистка должна производиться путем записи маскирующей информации в память при ее освобождении (перераспределении).
У Вас, допустим, стоит задача подготовить сертифицированный по 3 классу дистрибутив Linux (Перекликается с историей из моего опыта). Вам представляется, что уж почистить оперативную память совсем просто: ну присвоили случайные числа каким-то адресам. Где, в системной библиотеке? В системной библиотеке не получится, ибо память освобождается, даже если процесс аварийно завершается и не сделает никакого вызова. А еще есть виртуальные странички, которые периодически сбрасываются на диск, включая секретную информацию. Приходится лезть в ядро Linux.
Вывод первый - использование системного программного обеспечения (в данном случае ОС) порождает виртуальную прослойку между Вами и реальным миром, вы с этим виртуальным миром взаимодействуете, при этом возникает иллюзия управления реальным миром. Но это не так. Периодически возникающие проблемы показывают, что не так.
Вы надеетесь открыть документацию и находите книгу
Mel Gorman's book "Understanding the Linux Virtual Memory Manager". Замечательная книга, 731 стр на английском. Но версия:
Цитата:
solid understanding of the 2.4
VM, the later 2.5 development VMs and the final 2.6 release will be decipherable in
a number of weeks
Что же делать, где копнуть - там есть еще одна цитата:
Цитата:
new developers ask-
ing questions are sometimes told to refer directly to the source with the po-
lite acronym RTFS
-Read The Flaming Source. It doesn't really stand for Flaming but there could be children
watching.
Вывод второй - Системное свободно распространяемое ПО обременительно в плане развития. Ядро Linux обросло избыточной сложностью, если им заниматься, нужны годы на постоянной основе. Вы ступаете в отношения зависимости с ядром, Вам это изначально не было нужно. (По ряду причин, использование вариантов SELinux для Вас неприемлемо).
Выход в общем-то нашелся. Идея взята из
Прокопов В. С. Очистка освобождаемых областей оперативной памяти в процессе освобождения страниц в GNU/Linux.Если бы у Вас был бы абстрактный базовый тип, то Вы легко смогли бы сделать расширение типа и в соответствующих функциях написать реализацию. Но тут ядро, написанное на С. Но есть механизм перехвата функций. Можно модифицировать код ядра таким образом, чтобы передать управление на функцию-перехватчик с помощью генерации исключения (
Встраивание в ядро Linux: перехват функций).
С помощью таких перехватчиков удалось обнулять оперативную память при системных вызовах __free_pages __get_free_pages.
Что важно, этот подход применим к последующим модификациям ядер Linux.
Вывод третий - унаследовав системное ПО и библиотеки, мы автоматически наследуем все сопутствующие проблемы при крайне малой возможности что-нибудь серьезное изменить. Вирт относил наследование к мертвой материи, здесь как раз это применимо, в отношении заимствованного сложного ПО нет ни осознания структуры, ни ощущения проблем.