beldmit: (Программизм)
[personal profile] beldmit
Узнал тут из переписки в криптографической рассылке о функциях mlock/munlock. Почитал man-ы. К счастью, по разным операционкам. И кажется мне, что эти функции сильно недоделаны.

То, что оно позволяет блокировать в памяти от помещения в swap всю страницу целиком, это нормально и по-другому скорее всего не делается. То, что в половине операционок может быть вызваны только из-под рута (под Линуксом не так, там можно задать количество для не-рута через ulimit начиная с ядра 2.6.9), это уже большой привет. То, что там нет встроенного счетчика, сколько раз страницу лочили, и единственный вызов munlock разблокирует страницу, залоченную трижды – уже хуже, поскольку вынуждает сотворить собственный менеджер памяти, пусть даже вырожденный, системы «залочил страницу и отдаем по кусочку, все ценное туда» – совсем уже нехорошо.

А жалко. Потому как функциональность полезная.

Update: В комменты пришел [livejournal.com profile] dmih и рассказал про виртуализацию и ее издержки. Да, скорее всего все эти прелести в условиях виртуализации действительно неактуальны.

Date: 2014-05-11 02:47 pm (UTC)
From: [identity profile] dmih.livejournal.com
Уровня ОС - это демон, который висит от root-а, и этим рулит с учетом ВСЕХ возможностей КОНКРЕТНОГО ядра и архитектуры.
Например, в современных машинах только ленивый не занимается виртуализацией. Тут ты свопь, не свопь, для машины уровнем выше всё как открытая книга. Save-state опять же. И вот тут-то гипервизор может давать дополнительные возможности, а кое-где даже их и предоставляет, читал про это, запамятовал название экстеншена этого для XEN-а (как пример).
А то, что не свопить - это не уровня ОС, это скорее, уровня ядра называется, причем, механизм явно не по назначению. Бесправный пользователь и своп-то с трудом прочитает, а службе уровня root-а с таким флагом будет только проще ключи в памяти искать, причем проще порядка на два.

Date: 2014-05-11 03:35 pm (UTC)
From: [identity profile] beldmit.livejournal.com
(Отвечу сразу на все). Тут, пожалуй, согласен. Гибернация никаких сигналов не посылает, который обработать можно? Про реализации через page fault - интересно было бы почитать в деталях.

Про виртуализацию да. Боюсь, тупо выделить физическую железку уже не спасет.

Date: 2014-05-11 03:44 pm (UTC)
From: [identity profile] dmih.livejournal.com
Ну кому посылает, кому нет. Драйверам, конечно, посылает, причем дает возможность сделать что-то до гибернации (поэтому см. опять про службу, а не возможность ядра). Пользовательский софт этого боюсь не видит никак даже уровня root-а. Максимум он может получить извещение о событии, и может даже даже заблаговременно до гибернации (пока там драйвера чухаются - он еще жив и в сознании), но без гарантии и без возможности отложить или фиксированно что-то сделать.

Date: 2014-05-11 03:52 pm (UTC)
From: [identity profile] dmih.livejournal.com
А про реализации через page fault - да вот тут список софтварного FIPS-а подходящего уровня уже с 8-го этажа до пола - http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm
Там и VMWare отметилось, и Microsoft много раз, и так далее.
Я поскольку крепко всё забыл, какую конкретно реализацию я смотрел, я не помню (собственно у меня была нужда её поломать как раз), но половина софтварные и ключи у них из памяти, надо сказать, хрен сопрешь.
Надо вот API выстраивать к этим системам, а не страницы в памяти лочить в помощь хакерам, убирая даже security through obscurity (например, когда стоит необходимость поломать Windows с полным Address Space Randomization, все сразу унывают, и геморрой иногда возрастает за предел tradeoff-а с практичностью взлома).

Profile

beldmit: (Default)
Dmitry Belyavskiy

December 2025

S M T W T F S
 123456
78910111213
14151617181920
2122 2324252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 12th, 2026 01:58 pm
Powered by Dreamwidth Studios