
- •Введення
- •1. Структура та обсяг дисципліни
- •2. Основи програмування на мові с
- •2.1 Найпростіші конструкції мови
- •2.2 Типи даних
- •2.4 Операції мови с
- •2.5 Структура простої с програми
- •2.6 Організація введення-виведення
- •2.7 Компіляція в системі Linux
- •2.8 Організація розгалужень в програмі
- •2.9 Організація циклів
- •2.10 Оператор break
- •2.11 Оператор continue
- •2.11 Масиви
- •2.12 Функції
- •2.13 Вызов функции с переменным числом параметров
- •2.14 Рекурсивні функції
- •2.15 Читання і запис текстових файлів
- •2.16 Структури даних
- •2.17 Перелік|перерахування| (enumeration)
- •2.18 Об'єднання (union)
- •3. Операційні системи і системне програмування
- •3.1. Поняття операційної системи
- •4. Корисні команди Linux
- •4.1. Загальні|спільні| команди
- •4.1.1. Команда arch – виведення архітектури комп'ютера
- •4.1.2. Команда clear – очищення екрану
- •4.1.3. Команда date
- •4.1.9. Команда uptime – інформація про роботу системи
- •4.1.10. Команда users – інформація про користувачів
- •4.1.11. Команди w, who і whoami інформація про користувачів
- •4.1.12. Команда xf8config – настройка графічної підсистеми
- •4.2. Команди для роботи з текстом
- •4.2.1. Команди diff і cmp
- •4.2.2. Команди grep і egrep – текстовий фільтр
- •4.2.3. Команди more и less – посторінкове виведення
- •4.2.4. Команди head і tail – виведення начала і хвоста файлу
- •4.2.5. Команда wc – підрахунок слів у файлі
- •5. Захист інформації в інформаційних системах
- •5.1 Основні завдання забезпечення безпеки
- •5.2 Базові поняття криптографії
- •5.2.1 Поняття криптографічного алгоритму і протоколу
- •5.2.2 Криптосистеми з секретним ключем
- •5.2.3 Криптосистеми із відкритим ключем
- •5.2.4. Гибридні криптосистеми
- •5.2.5. Цифрові підписи
- •5.2.6. Сертифікати
- •5.3. Принципи аутентифіекації і керування доступом
- •5.3.1. Основи аутентифікації
- •5.3.2. Основи керування доступом
- •5.4. Аутентифікація та керування доступом в unix
- •5.4.1. Облікові записи користувачів
- •5.4.2. Аутентифікація
- •5.4.3. Керування доступом
- •6. Програмний інтерфейс unix. Системні виклики і функції стандартних бібліотек
- •6.1. Підтримка програмування в oc unix. Вивчення передачі інформації
- •6.2. Змінні оточення
- •6.3. Обробка помилок
- •6.4. Правила формування і засоби розбору командних рядків
- •7. Операції над файлами
- •7.1 Файлові операції posix
- •7.2. Збирання інформації про атрибути файла
- •7.3. Операції над каталогами
- •Література
5.3. Принципи аутентифіекації і керування доступом
5.3.1. Основи аутентифікації
Аутентифікація надає можливість розрізняти легитимні та нелигитимні спроби доступу до системи. Надійна аутентифікація у багатьох випадках даї змогу обмежити коло потенційних порушників легітимними користувачами системи, спрошуючи цим процедури забезпечення її безпеки.
Свідчення, які вимагаються від користувачач під час аутентифікації, найчастіше зводяться до знання секретної інформації, спільної для користувачач і системи (наприклад, пароля).
До альтернативних свідчень належать:
володіння деяким фізичним предметом (наприклад, смарт-картою);
біометричні параметри (наприклад, відбитки пальців, тощо).
Розрізняють локальну і мережну аутентифікацію. У разі успішної локальної аутентифікації користувач свідчить свою легітимність для використання ресурсів однієї комп’ютерної системи (свідчення користувача перевіряють локально), мережна аутентифікація дає змогу користувачу дає змогу користувачу довести легітимність для використання всіх ресурсів мережі (свідчення користувача передають для перевірки на спеціальний сервер із будь-якого комп’ютера мережі).
Облікові записи
Для того щоб аутентифікація користувача була можлива, у системі має зберігатися інформація про цього користувача. Таку інформацію називають обліковим записом (account). Із ним звичайно пов’язують такі дані:
ім’я користувача, яке він використовує для входу в систему;
ідентифікатор користувача, що зазвичай є чисельним значенням, унікальним у межах комп/ютера або групи комп’ютерів (цей ідентифікатор ОС використовує під час аутентифікації і авторизації);
інформація про пароль користувача;
інформація про обмеження на вхід користувача у систему (термін легітимності облікового запису, періодичність зміни пароля, години і дні тижня, у які користувач може отримувати доступ у систему тощо)4
інформація про групи, до яких належить цей користувач;
місце знаходження домашнього каталогу користувача (у якому він може створювати свої файли);
налаштування сесії користувача (шлях до його командного інтерпретатора тощо).
Інформацію про облікові записи зберігають у базі даних облікових записів (account database). Адміністратор може змінювати будь-яку інформацію в цій базі, для інших користувачів звичайно доступна лише зміна їхнього власного пароля.
Групи користувачів
У сучасних ОС для зручності адміністрування системи користувачі можуть об’єднуватися у групи. Користувач одночасно може належати до кількох груп. Під час авторизації доступу до об’єктів перевіряють не тільки права самого користувача, але й права груп, до яких він належить.
Інформацію про групи також зберігають у базі даних облікових записів. Звичайно ОС визначає кілька стандартних груп, які створюють під час її установки., зокрема, у групу адміністраторів системи (фкі можуть виконувати в ній будь-які дії) і групу звичайних користувачів із обмеженим доступом.
Аутентифікація з використанням односторонніх функцій
Для перевірки пароля немає потреби знати цей пароль, досить уміти відрізняти правильний пароль від неправильного. Тому замість зберігання ціх паролів доцільно зберігати односторонні функції цих паролів. Протокол аутентифікації в цьому випадку виглядатиме так:
Аліса посилає системі свої ім’я і пароль;
Система обчислює односторонню функцію від пароля;
Система порівню результат обчислення односторонньої функції зі значенням, що зберігається у базі даних облікових записів.
У результаті зменшуються втрати, які може додати зловмисник, коли отримає доступ до списку паролів, оскільки навіть у цьому разі за односторонньою функцією відновити паролі неможливо. Проте цій підхід не позбавлений від недоліків.
Словникові атаки і сіль
Якщо зловмисник володіє списком паролів, зашифрованих односторонньою функцією, можлива словникова атака. Зловмисник бере набір найпоширеніших паролів, застосовіє для них односторонню функцію і зберігає всі зашифровані паролі. Потім він порівнює список зашифрованих паролів із цим файлом (словником) у пошуках збігів.
Один із спосібів боротьби із такою атакою пов’язаний із використанням солі (solt).Сіль – це випадковий рядок S, який додають до пароля перед шифруванням. У список шифрованих паролів заноситься рядок S+E(S+P), де P – пароль, E – функція шифрування, «+» - конкатенація рядків. Якщо кількість можливих значень солі достатньо веліка,то це робить словникову атаку значно складнішою, оскільки в словник потрібно вносити результати шифрування паролів із усіма можливими значеннями солі.
Солі потрібно досить багато. Наприклад, стандартний її обсяг, прийнятий в UNIX (12 біт, що дає 4096 можливих значень), є не зовсім достатнім (є словники найуживаніших паролів, з усіма значеннями солі).
Аутентифікація за принципом «вивклик – відповідь»
Більш серйозна проблема, пов’язана із використанням описаного підходу, полягає в тому, що пароль передають мережею незашифрованим, і він може бути перехоплений зловмисником. Один із спосібів вирішення цієї проблеми полягає в тому, щоб передавати мережею не паролі, а їх односторонні хеші (дайджести).Цей пвдхід називають аутентифікацією за принципом «виклик-відповідь» (challenge-response authentification) або дайджест-аутентіфікацією.
Протокол цієї аутентифікації має такий вигляд.
1. Система збарігає значення односторонньої функції від пароля Аліси F1(Ps) у базі даних облікових щаписів.
2. Аліса передає системі своє вхідне ім’я (відкритим текстом) і значення F1(PA), обчислене із використанням пароля PA, який вона ввела.
3. Система генерує випадкове число C, яке називають викликом (challenge), і передає його алісі.
4. Аліса застосовує іншу односторонню функцію до значення виклику. На вхід цієї функції, крім виклику, передають значення F1(PA)
RA=F2(F1(PA),C).
5. Аліса передає системі значення RA (відповідь, response).
6. Система обчислює аналогічне до RA значення RS на підставі інформації із бази даних облікових записів
RS=F2(F1(PS),C).
7. Якщо значення RA і RS, отримані системою на кроках 5 і 6, збігаються, аутентифікацію вважають успішною.
Використання випадкового значення виклику в цьому разі зумовлене необхідністю запобігання атаці відтворенням ((replay attack), під час якої зловмисник перехоплює інформацію, передану Алісою системі для того, щоб пізніше відіслати її самому, прикидаючись Алісою.
Цей протокол був соновним підходом до аутентифікації у системах лініїї windows Xpдо появи Windows 2000 і до тепер підтримується у цих системах (наприклад, для локальної аутентифікації). Його надійність залежить від надійності алгоритму, використаного для односторонньої функції (перехоплення зловмисником дайджесту дасть можливість здійснити на нього словникову атаку). Зазначимо також, що в цьому разі користувач не може бути впевнений, що система насправді є тією, до якої він запитує доступ.
Більш складним протоколом аутентифікації є протокол Kerberos. Це розподілена система аутентифікації користувачів із можливістю аутентифікації клієнта і сервера. Протокол Kerberos є основним протоколом мережної аутентифікації у системах лінії Windows XP, починаючи із Windows 2000. Реалізація цього протоколу доступна і для UNIX-систем.
Одноразові паролі
Проблему пересилання паролю мережою можна також розвязати , використовучи паролі, дійсні лише один раз під час сесії користувача. Перехоплення такого одноразового парля (one-time password)нічого не дає зловмисникові.
Протокол використання одноразових паролів такий.
1. Аліса задає випадкове згачення R для ініціалізації системи.
2. Система обчислює односторонні функції F(R), F(F(R)), F(F(F(R))), наприклад, n+1 раз. Назвемо ці числа x1 … xn+1; із них x1 …xn система передає Алісі, а сама зберігає xn+1.
3. Входячи в систему, Аліса задає своє ім’я і число xn. Система обчислює F(xn) і порівнює результат із xn+1. Якщо значення збігаються, аутентифікацію Аліси вважають успішною, і збережене системою xn+1 замінюється на xn.
4. Для наступної аутентифікації Аліса використає число xn-1, далі - xn-2 і т.д. коли буде використане число x1, систему повторно ініціалізують новим числом R.
Такі паролі у сучасних системах можуть реалізовуватися за допомогою смарт-карт – електронних пристроїв, у які вбудовані мікропроцесор із засобами генерації відповідних одноразових паролів.