Защита на данни

Инструментите за сигурност в WindowsNT/2000/XP са отделна подсистема, която осигурява защита не само на файлове, но и на други видове системни обекти. NTFS файловете и директориите са най-честите примери за защитени обекти.

Както знаете, Windows ви позволява да използвате различни файлови системи, докато възможностите за защита на данните се определят от архитектурата на конкретна файлова система. Например, ако обемът на диска използва системата FAT (където, както знаем, няма мерки за сигурност), тогава Windows може да ограничи достъпа само до целия обем, но не и до отделни файлове и директории.

Удостоверяване на потребителя

Важен елемент от всяка система за защита на данните е процедурата за влизане, която удостоверява потребителя. В Windows NT добре известната "комбинация от три пръста" -Ctrl+Alt+Del- се използва за извикване на диалоговия прозорец за влизане. Според разработчиците нито една "троянска" програма не може да прихване обработката на тази комбинация и да я използва за събиране на пароли.

Някой иска ли да опита?

Системата търси въведеното потребителско име първо в списъка с потребители на този компютър, а след това на други компютри от текущия домейн на локалната мрежа. Ако името бъде намерено и паролата съвпада, системата получава достъп доакаунта(акаунт) на този потребител.

Въз основа на информацията от потребителския акаунт, системата генерира структура от данни, нареченатокен за достъп(accesstoken). Токенът съдържа потребителския идентификатор (SID,SecurityIDentifier), идентификатори на всички групи, към които е включен дадения потребител, както и наборпривилегии, които потребителят има.

Привилегиите са общи права, които не са свързани с конкретни обекти. Привилегиите, достъпни само за администратора, включват, например, правата за настройка на системното време, за създаване на нови потребители, за присвояване на файлове на други хора. Някои скромни привилегии обикновено се предоставят на всички потребители (като правото за отстраняване на грешки в процесите, правото да бъдете уведомявани за промени във файловата система).

При по-нататъшна работа, когато на потребителя трябва да бъде предоставен достъп до защитени ресурси, решението за достъп се взема въз основа на информацията от токена за достъп.

Дескриптор за сигурност

На всеки защитен обект на Windows (файл, директория, диск, устройство, семафор, процес и т.н.) може да бъде присвоена специална структура от данни – атрибути за защита.

идентификатора за сигурност (SID) на собственика на обекта;

идентификаторът за сигурност на основната група на собственика на обекта;

потребителски ("дискреционен", "ограничаващ") списък за контрол на достъпа (DACL, DiscretionaryAccessControlList);

списък за контрол на достъпа до системата (SACL,SystemAccessControlList).

Персонализираният списък контролираразрешенияиотказиза достъп до този обект. Само собственикът на обекта може да променя този списък.

Системният списък контролира самоодитна достъпа до този обект, т.е. указва какви потребителски действия по отношение на този обект трябва да бъдат регистрирани в системния журнал. Този списък може да се променя само от потребител с права на системен администратор.

В Windows, за разлика от много други операционни системи, администраторът не е всемогъщ. Не може да забрани или да позволи на никого, дори и на себе си, достъп до чуждотофайл. Друго нещо е, че администраторът има право да се обяви за собственик на всеки файл, но тогава той няма да може да върне файла на предишния му собственик. Такива ограничения произтичат от разбирането, че администраторът също не винаги е ангел и въпреки че трябва да има големи права в системата, действията му трябва да бъдат контролирани по някакъв начин.

И двата списъка за контрол на достъпа имат една и съща структура, основната им част е масив отзаписи за контрол на достъп(ACE,AccessControlEntity).

Помислете за структурата на ACE запис. Съдържа:

Тип ACE, който може да бъде един от следните: разреши, откажи, одит;

флагове, указващи характеристиките на действието на този ACE;

битова маска на видовете достъп, указваща кои действия трябва да бъдат разрешени, отказани или одитирани;

идентификатора (SID) на потребителя или групата, чиито права дефинира този ACE.

По-интересен е персонализираният списък. Може да съдържа само разрешаващи и отказващи записи. В началото на списъка винаги има забраняващи записи, след това разрешаващи.

Когато потребител поиска достъп до обект (т.е. например програма, стартирана от този потребител, извиква функция за отваряне на файл), правата за достъп се проверяват. Извършва се чрез сравняване на маркера за достъп на потребителя с DACL. Системата преглежда всички ACE от DACL в ред, като за всеки ACE определя SID, записан в него, и проверява дали това е ID на текущия потребител или една от групите, към които този потребител принадлежи. Ако не, тогава този ACE не е свързан с него и не се взема предвид. Ако да, тогава разрешенията, изисквани от потребителя за извършване на исканата операция, се сравняват с маската на разрешенията от ACE. В същото време правата се анализират много подробно:например, отварянето на файл за четене предполага наличието на права за четене на данни, за четене на атрибути (включително собственик и атрибути за защита), за използване на файла като обект за синхронизация (вижте раздел 4.5.5.2).

АкоdenyACE съдържа поне един бит 1 в позиция, съответстваща на един от заявените типове достъп, тогава цялата операция, започната от потребителя, се счита за забранена и не се правят допълнителни проверки.

Ако такива битове се открият вenableACE, тогава се проверяват допълнителни ACE, докато не бъдат разрешени и всички останали заявени достъпи.

Как мислите, защо в списъка на DACL първо забранявате ACE и едва след това разрешавате?

Така, накратко, потребителят ще има достъп до обект само ако всички достъпи, които е поискал, са изрично разрешени и нито един от тях не е отказан.

През годините на перестройката много се пишеше за два противоположни принципа: „всичко, което не е позволено, е забранено“ или „всичко, което не е забранено, е позволено“. В Windows всичко е много по-строго: всичко, което е забранено, е забранено и всичко, което не е позволено.

Списъкът DACL с всички необходими разрешения и забрани може да бъде зададен програмно при създаване на файл, а по-късно собственикът може да го промени програмно. Можете също да промените разрешенията в диалоговия прозорец, като използвате прозореца със свойства на файла.

Има и два крайни случая. Списъкът DACL може да отсъства напълно (за това е достатъчно, например, да посочите NULL вместо атрибути за сигурност при създаване на файл), докато правата за достъп не се проверяват, всички действия са разрешени на всички потребители. DACL може да присъства, но да има нулева дължина (няма ACE). Както следва от общите правила, в този случай достъпът ще бъде отказанвсички, включително собственика на файла.