Шифрование данных
Любая система UNIX имеет утилиты для шифрования данных, с помощью которых можно зашифровать данные, находящиеся в любом файле.
Наиболее распространенные – это программа cr (crypt).
Данные утилиты обеспечиваю прозрачное шифрование данных. Для прозрачного шифрования выделяется специальное устройство, монтируемое на заданный пользователем каталог.
Данные утилиты выбирают данные для шифрования из входного потока и выдают результат в стандартный вывод. Это позволяет в командной строке включать данные утилиты шифрования в конвейер обработки. “|”
Например: ls | grep *.h > file1.txt
Фунция crypt – это функция шифрования основанная на стандартном алгоритме шифрования данный. По этой команде файлу присваивается ключ (пароль) шифрования. Тот же самый ключ используется для дешифровки данных.
char *crypt(const char *key, const char *salt);
key – строка для шифрования
salt - [a-zA-Z0-9./] – задает режим шифрования (один из 4096)
crypt < старый файл > новый файл - - кодирование
crypt < закодированный файл > новый файл -- декодирование
Защита данных, передаваемых по сети, осуществляется с использованием криптографических пакетов. Наиболее распространенный пакет OpenSSL. Обеспечивает механизмы шифрования, аутентификации, и безопасности передачи данных между клиентом и сервером.
Представляет собой криптографическую библиотеку с набором функций:
зашифровать
расшифровать
сгенерировать ключ
изготовить сертификаты
подписать данные
проверить цифровую подпись
выполнить свертку файла
Данная библиотека включает большое количество алгоритмов шифрования (DES, 3DES, RC2, RC4, and Blowfish, MD2, MD5).
27. Защита информации в ОС UNIX. Защита файлов.
Как принято в многопользовательской операционной системе, в UNIX поддерживается единообразный механизм контроля доступа к файлам файловой системы. Любой процесс может получить доступ к некоторому файлу в том и только в том случае, если права доступа, описанные при файле, соответствуют возможностям данного процесса.
В UNIX системах используется дискреционный метод доступа, который основан на сравнении масок доступа. Все множество пользователей делится на группы и атрибуту защиты связанные с владельцем файла, группой и всеми остальными пользователями. Все команды выполняются от имени определенного пользователя, принадлежащего в момент выполнения к определенной группе.
Маска доступа содержит 9 бит. Из них 9 бит разбиты на тройки по 3 бита, показывающие какими правами по отношению к данному файлу обладает конкретный процесс.
Кроме маски доступа, с каждым файлом связан идентификатор владельца UID и GID группы.
U G |
r |
w |
x |
r |
w |
x |
r |
w |
x |
suid,sgid owner group other
r – чтение. (0- запрещено, 1 – разрешено)
w- запись
x - запуск (выполнение)
Каждый процесс работает в своем собственном контексте и имеет UID и GID.
При попытке доступа к объекту процесс выдает запрос (системный вызов open) на открытие (т.е. сделать его доступным для обработки). ОС выполняет сравнение UID и GID процесса с UID и GID и на основе этого определяет принадлежность процесса к владельцу файла или группе владельца. В зависимости от этого выбирается одна из трех групп прав и в дескриптор открытого файла заносится набор разрешенных операций.
Если в выбранной тройке все права равны 0, то возвращается ошибка – «Файл закрыт» и выполнение любых операций с ним запрещено.
!!! Если разрешено выполнение, но запрещены чтение/запись, то команду Open может выполнить только ядро ОС в момент построения процесса, причем программный запрос должен быть только на запуск exec().
С использованием битов U и G возможно создание так называемых доверенных объектов.
Владелец файла, а также пользователь root может изменять владельца и группу-владельца файла. Для изменения владельца (и группы-владельца) файла используется команда chown со следующим синтаксисом: