База данных надежных сигнатур

База данных надежных сигнатур является базой данных, которая используется для хранения основных параметров защиты защищенных файлов системы. Эта база данных расположена в каталоге /etc/security/tsd/tsd.dat.

С каждым защищенным файлом должен быть связан файл настройки или определение файла, которые расположены в Базе данных надежных сигнатур (TSD). Каждый защищенный файл связан с уникальным криптографическим хэшем и цифровой подписью. Криптографический хэш набора защищенных файлов по умолчанию создается с помощью алгоритма SHA-256, а цифровая подпись - с помощью RSA с использованием среды компоновкиAIX и упаковывается как часть наборов установочных файлов AIX. Эти значения хэш-функции и подписи поставляются как части соответствующих установочных образов AIX и хранятся в базе данных защищенных программ (/etc/security/tsd/tsd.dat) в целевой системе в файле настройки, который может иметь следующий формат:

/usr/bin/ps:
           owner = bin
           group          = system
           mode           = 555
           type           = FILE
           hardlinks      = /usr/sbin/ps
           symlinks       = 
           size           = 1024
           cert_tag       = bbe21b795c550ab243
           signature      = 
f7167eb9ba3b63478793c635fc991c7e9663365b2c238411d24c2a8a
           hash_value     = c550ab2436792256b4846a8d0dc448fc45
           minslabel      = SLSL
           maxslabel      = SLSL
           intlabel       = SHTL
           accessauths    = aix.mls.pdir, aix.mls.config
           innateprivs    = PV_LEF                   
           proxyprivs     = PV_DAC
           authprivs      = 
aix.security.cmds:PV_DAC,aix.ras.audit:PV_AU_ADMIN
           secflags       = FSF_EPS
           t_accessauths  = 
           t_innateprivs  =
           t_proxyprivs   =
           t_authprivs    =
           t_secflags     =
owner
Владелец файла. Это значение вычисляется с помощью команды trustchk, при добавлении файла в TSD.
group
Группа файла. Это значение вычисляется командой trustchk.
mode
Список значений, разделенных запятыми. Допустимыми значениями являются SUID (установлен бит SUID), SGID (установлен бит SGID), SVTX (установлен бит SVTX) и TCB (Защищенная компьютерная база). Права доступа к файлу должны указываться последними и могут быть представлены в виде октета. Например, файл с режимом uid и битами доступа rwxr-xr-x режим будет иметь значение SUID, 755. Это значение вычисляется командой trustchk.
type
Тип файла. Это значение вычисляется командой trustchk. Допустимы значения FILE, DIRECTORY, MPX_DEV, CHAR_DEV, BLK_DEV, и FIFO.
hardlinks
Список жестких ссылок на файл. Это значение не может быть вычислено командой trustchk. Оно должно быть указано пользователем при добавлении файла в базу данных.
symlinks
Список символьных ссылок на файл. Это значение не может быть вычислено командой trustchk. Оно должно быть указано пользователем при добавлении файла в базу данных.
размер
Определяет размер файла. Значение VOLATILE - файл изменяется часто.
cert_tag
Поле связывает цифровую подпись файла с сертификатом, которым будет проверяться эта подпись. В этом поле содержится идентификатор сертификата, который можно вычислить командой trustchk во время добавления файла в TSD. Сертификаты хранятся в каталоге /etc/security/certificates.
signature
Цифровая подпись файла. Значение VOLATILE указывает на то, что файл изменяется часто. Значение поля вычисляется командой trustchk.
hash_value
Криптографический хэш файла. Значение VOLATILE указывает на то, что файл изменяется часто. Значение поля вычисляется командой trustchk.
minslabel
Определяет метку минимальной чувствительности объекта.
maxslabel
Определяет метку максимальной чувствительности объекта (действует в системе Trusted AIX). Этот атрибут не применяется к обычным файлам и файлам типа fifo.
intlabel
Определяет метку целостности объекта (действует в системе Trusted AIX).
accessauths
Определяет права доступа к объекту (действует в системе Trusted AIX).
innateprivs
Определяет изначальные права доступа для файла.
proxyprivs
Определяет для файла права доступа через прокси-сервер.
authprivs
Определяет права доступа, назначаемые пользователю после санкционирования доступа.
secflags
Определяет флаги защиты, связанные с объектом.
t_accessauth
Определяет дополнительную Trusted AIX с особыми правами доступа на базе Многоуровневой защиты (MLS) (действует в системе Trusted AIX).
t_innateprivs
Задает дополнительный Trusted AIX с внутренними правами доступа к файлу в MLS (действителен только в системе Trusted AIX).
t_proxyprivs
Задает дополнительный Trusted AIX с правами доступа proxy к файлу в MLS (действителен только в системе Trusted AIX).
t_authprivs
Задает дополнительный Trusted AIX с правами доступа в MLS, которые присваиваются пользователю после заданных процедур идентификации (действителен только в системе Trusted AIX).
t_secflags
Задает дополнительный Trusted AIX с флагами защиты в MLS, связанными с объектом (действителен только в системе Trusted AIX).

Когда в TSD добавляется новая запись, то содержащиеся в доверенном файле символьные или жесткие ссылки в TSD можно добавить с помощью команд symlinks, hardlinks и trustchk. Если ожидается частое изменение добавляемого файла, то введите в командной строке ключевое слово VOLATILE. В этом случае команда trustchk не будет вычислять значения полейhash_value и signature при создании определения файла для добавления в TSD. При проверке целостности этого файла поля hash_value и signature игнорируются.

При добавлении в TSD определений обычных файлов необходимо указать личный ключ (формат ASN.1/DER). Для этого укажите флаг -s с цифровым сертификатом и флаг -v с соответствующим открытым ключом. Личный ключ используется для создания сигнатуры файла, а впоследствии аннулируется. Пользователь должен самостоятельно обеспечить безопасное хранение этого ключа. Сертификат сохраняется в хранилище сертификатов в файле /etc/security/certificates для проверки сигнатур при запросе проверки целостности. Поскольку вычисление сигнатуры невозможно для файлов, которые не являются обычными, например файлов каталогов и устройств, при добавлении таких файлов в TSD не обязательно указывать личный ключ и сертификат.

С помощью опции -f в TSD можно добавить уже сформированное определение файла. Команда trustchk не будет ничего вычислять и сохранит определение в TSD без проверки. В такой ситуации пользователь лично ответственен за работоспособность определений файлов.

Поддержка проверки библиотеки

Для поддержки проверки библиотеки добавьте файл tsd.dat в каталог /etc/security/tsd/lib/. Имя базы данных хранится в /etc/security/tsd/lib/lib.tsd.dat. В базе данных хранятся исключительно те библиотеки, у которых соответствующие доверенные библиотеки хранят свои разделы в файлах .o. Раздел каждого файла .o библиотеки хранится в формате, как указано в следующем примере.

Если файл strcmp.o, относящийся к библиотеке libc.a, имеет тип .o, то раздел файла strcmp.o в файле /etc/security/tsd/lib/lib.tsd.dat имеет следующий формат:
/usr/lib/libc.a/strcmp.o:
			Type = OBJ
			Size = 2345
			Hash value
			Signature =    
			Cert_tag =  

В базе данных хранятся записи, соответствующие полям type, hash size, cert tag и signature файла .o. Хэш-код раздела, соответствующего библиотеке, обновляется в файле /etc/security/tsd/tsd.dat. Значения атрибутов генерируются динамически во время компоновки и переносятся в базу данных /etc/security/tsd/lib/lib.tsd.dat во время установки.

В файле /etc/security/tsd/tsd.dat отображаются изменения атрибута type раздела библиотеки, поскольку атрибуты LIB, size и signature пусты. В данный момент, если атрибуты size, hash, signature имеют значение dynamica, то они обрабатываются как VOLATILE. Таким образом, во время запуска системы проверка библиотек не выполняется. Начиная с выпуска AIX 6.1.0, разделы size, hash и signature доверенных библиотек рассчитываются на основании файлов .o соответствующей библиотеки. Во время установки, в базе данных tsd.dat устанавливаются рассчитанные значения, а соответствующие разделам файлы .o сохраняются в базе данных /etc/security/tsd/lib/lib.tsd.dat.