Dmitry V. Levin, 2005
В основе архитектуры hasher'а лежит трёхпользовательская модель: вызывающий непривилегированный пользователь (C) и два непривилегированных вспомогательных псевдопользователя; первый (R) играет роль root в порождаемой среде выполнения (далее псевдоroot), второй (U) - обычного пользователя, выполняющего программы (далее псевдосборщик).
Архитектура hasher'а призвана исключить атаки вида U->R, U->C, R->C, а также все виды атак на root.
Переключение между вызывающим и вспомогательными пользователями осуществляется с помощью привилегированной программы, написанной специально для этих целей. Кроме того, с помощью этой программы удаляются процессы, запущенные вспомогательными псевдопользователями и не завершившиеся в срок, а также создаются устройства и монтируются каталоги. Наконец, эта программа предоставляет возможность контролировать ресурсы, выделяемые процессам вспомогательных пользователей, для защиты от DoS-атак.
Более подробное описание архитектуры hasher'а можно найти в статье hasher: технология безопасной сборки дистрибутива.
Наряду с созданием среды выполнения, hasher обеспечивает и удаление этой среды по окончании работы.
С помощью hasher'а можно в любой момент обеспечить завершение всех процессов, работающих в среде выполнения.
Процессу, запускаемому в среде выполнения, могут быть установлены ограничения на используемые ресурсы, поддерживаемые ядром Linux, а также ограничения на объём выходных данных, время простоя и общее время работы. В сочетании с дисковыми квотами и правилами iptables, которые можно установить для вспомогательных пользователей, эти ограничения позволяют полностью контролировать программы, запускаемые в среде выполнения.
Перед запуском приложения средствами hasher'а в среду выполнения могут быть смонтированы файловые системы, которые будут автоматически размонтированы по окончании работы этого приложения.
Средствами hasher'а для запускаемого процесса специально создаётся и предоставляется управляющий терминал вне зависимости от того, смонтирован ли /dev/pts в среду выполнения или нет.
Кроме того, средствами hasher'а для запускаемого процесса может быть специально создан и предоставлен канал для X11 forwarding (как trusted, так и untrusted) вне зависимости от того, какие ограничения для вспомогательных пользователей установлены правилами iptables.
В каждый момент времени может быть создано и использоваться произвольное число сред выполнения, каждая со своей парой предварительно созданных вспомогательных пользователей.
За исключением времени, затрачиваемого на формирование среды выполнения, и пространства файловой системы, используемого для кэширования этой среды, у hasher'а практически нет накладных расходов на выполнение приложений.
Из других средств виртуализации такими показателями обладают только модифицированные ядра Linux.
Работоспособность hasher'а проверена на ядрах Linux 2.2.x, 2.4.x и 2.6.x. Для монтирования файловых систем средствами hasher'а требуется ядро Linux не старее 2.4.x.
Таким образом, hasher является самым `легким' (и, как следствие, потенциально самым безопасным) средством виртуализации с перечисленными выше возможностями.