Захист від несанкціонованого доступу
Міністерство освіти та науки України
Кіровоградський Державний Технічний університет
Кафедра програмного забезпечення
Курсова робота
з дисципліни “Програмування на мові ASM-86” на тему:
Захист від несанкціонованого доступу
Зміст
Вступ
Призначення та область застосування програми.
Огляд існуючих методів для захисту від несанкціонованого доступу.
Постанова задачі та методи її реалізації.
Реалізація задачі.
Список скорочень.
Список літератури.
Додатки.
Вступ
Методи захисту даних на персональних комп'ютерах надзвичайно різноманітні як по кінцевій меті, так і по технічному втіленню; їх можна розділити на механічні, апаратні і програмні.
До механічних засобів захисту ставляться різноманітні кришки і чохли з замками (що замикають, наприклад, дисковод гнучких дисків або мережний вимикач), клейкі пластини для приклеювання термінала до комп'ютера, а комп'ютера до столу, помешкання що замикаються із сигналізацією і багато інших.
Апаратні засоби реалізуються у вигляді спеціальних електронних модулів, що підключаються до системного каналу комп'ютера або портів вводу-виводу, і здійснюють обмін кодовими послідовностями програмами, що захищається.
Найбільш різноманітні програмні засоби. Сюди відносяться програми шифрації даних по заданому користувачем ключу, адміністратори дисків, що дозволяють обмежити доступ користувачів до окремих логічних дисків, методи встановлення програмного продукту з дистрибутивних дискет, що дозволяють виконати установку не більше вказаного числа запуску програм, що захищаються за допомогою некопійованих ключових дискет, спеціальні захисні програмні оболонки, куди поміщаються програми що захищуються.
Призначення та область застосування програми. Захист комп'ютерів від несанкціонованого доступу
Особливості захисту персональних комп'ютерів (ПК) обумовлені специфікою їх використання. Як правило, ПК користується обмежене число користувачів. ПК можуть працювати як в автономному режимі, так і в складі локальних мереж (сполученими з іншими ПК) і можуть бути залучені до віддаленого ПК або локальної мережі за допомогою модему по телефонній лінії.
Стандартність архітектурних принципів побудови, устаткування і програмного забезпечення персональних комп'ютерів, висока мобільність програмного забезпечення і ряд інших ознак визначають порівняно легкий доступ професіонала до інформації, що знаходиться в ПК. Якщо персональним комп'ютером користується група користувачів, то може виникнути необхідність в обмеженні доступу до інформації різноманітних користувачів.
Несанкціонованим доступом (НСД) до інформації ПК будемо називати незаплановане ознайомлення, опрацювання, копіювання, застосування різноманітних вірусів, у тому числі руйнуючі програмні продукти, а також модифікацію або знищення інформації та порушення встановлених правил розмежування доступу. У захисті інформації ПК від НСД можна виділити три основні напрямки:
перший орієнтується на недопущення порушника до обчислювального середовища і ґрунтується на спеціальних технічних засобах упізнання користувача
другий пов'язано з захистом обчислювального середовища і ґрунтується на створенні спеціального програмного забезпечення по захисту інформації.
третій напрямок пов'язаний із використанням спеціальних засобів захисту інформації ПК від несанкціонованого доступу.
Спеціальне програмне забезпечення по захисту інформації ПК
Для захисту персональних комп'ютерів використовуються різноманітні програмні методи, що значно розширюють можливості по забезпеченню безпеки інформації, що зберігається. Серед стандартних захисних засобів персонального комп'ютера найбільше поширення одержали:
засоби захисту обчислювальних ресурсів, що використовують парольну ідентифікацію й обмежують доступ несанкціонованого користувача.
застосування різноманітних методів шифрування, що не залежать від контексту інформації.
засоби захисту від копіювання комерційних програмних продуктів.
захист від комп'ютерних вірусів і створення архівів.
Огляд існуючих методів для захисту від несанкціонованого доступу. Захист накопичувача на жорсткому магнітному диску
Захист вмонтованого накопичувача на жорсткому магнітному диску складає одну з головних задач захисту ПК від стороннього вторгнення.Існує декілька типів програмних засобів, спроможних вирішити проблему захисту:
захист від будь-якого доступу до жорсткого диска;
захист диска від запису/читання;
контроль за зверненням до диска;
засоби видалення залишків секретної інформації.
Захист умонтованого жорсткого диска звичайно здійснюється шляхом застосування спеціальних паролів для ідентифікації користувача (так звана парольна ідентифікація). У даному випадку доступ до жорсткого диска можна одержати при правильному введенні пароля при завантаженні операційної системи. У противному випадку завантаження системи не відбудеться, а при спробі завантаження з гнучкого диска, жорсткий диск стає "невидимим" для користувача. Ефект захисту жорсткого диска в системі досягається зміною завантажувального сектора диска, із якого видалиться інформація про структуру диска. Такий захист дуже ефективний, і вона надійно захищає жорсткий диск від рядового користувача.
Використання криптографії
Можливість використання персональних комп'ютерів у локальних мережах (при сполученні їх з іншими ПК) або застосування "модемів" для обміну інформацією з телефонним проводам пред'являє більш жорсткі вимоги до програмного забезпечення по захисті інформації ПК.
Коритувачі ПК у різноманітних організаціях для обміну інформацією усе ширше використовують електронну пошту, що без додаткових засобів захисту може стати надбанням сторонніх осіб. Самим надійним захистом від несанкціонованого доступу до переданої інформації і програмних продуктів ПК є застосування різноманітних методів шифрування (криптографічних методів захисту інформації).
Криптографічні методи захисту інформації - це спеціальні методи шифрування, кодування або іншого перетворення інформації, у результаті якого її утримання стає недоступним без пред'явлення ключа криптограми й оберненого перетворення. Криптографічний метод захисту, безумовно, самий надійний метод захисту, тому що охороняється безпосередньо сама інформація, а не доступ до неї (наприклад, зашифрований файл не можна прочитати навіть у випадку крадіжки носія). Даний метод захисту реалізується у виді програм або пакетів програм, що розширюють можливості стандартної операційної системи. Захист на рівні операційної системи, частіше усього, повинен доповнюватися засобами захисту на рівні систем керування базами даних, що дозволяють реалізовувати складні процедури керування доступом.
В даний час не існує узвичаєної классифікації криптографічних методів захисту інформації. Проте, коли піддається перетворенню (шифровці) кожний символ переданого повідомлення ("симетричний" метод закриття інформації), можна умовно виділити чотири основні групи:
підстановка - символи тексту що шифрується заміняються символами того ж або іншого алфавіту відповідно до заздалегідь визначеного правила;
перестановка - символи тексту що шифрується переставляються по деякому правилу в межах заданого блока переданого тексту
аналітичне перетворення - текст що шифрується перетвориться по деякому аналітичному правилу;
комбіноване перетворення - вихідний текст шифрується двома або великим числом засобів шифрування.
Існує велике число програмних продуктів шифрування інформації, що відрізняються по ступеню надійності.
Захист ПК за допомогою апаратних засобів
Призначення даного пристрою - видалення інформації при спробі вилучення накопичувача, при викраденні комп'ютера, при проникненні в зону обслуговування комп'ютера (серверу) або при натисканні визначеної кнопки.
Принцип дії даного пристрою - форматування накопичувача. Відомо, що на початку кожного накопичувача розташовані таблиці розділів, таблиці розміщення файлів, каталоги - тому знищення інформації починається саме з них і навіть після декількох секунд роботи даного пристрою на накопичувачі залишену інформацію, дуже важко відновити. Якщо ж пристрій відпрацює декілька хвилин, то вся інформація буде знищена. Після першого циклу знищення починається другий і так далі (до розряду автономного джерела живлення), тому інформацію не можна відновити навіть по залишковій намагніченості. Подібний метод стирання є в утилітах WipeFile і WipeDisk, проте для їхнього запуску комп'ютер повинний бути включений, та й багато операційних систем не мають безпосередній доступ до диска і відповідно ці утиліти можуть не спрацювати.
Подібний метод знищення інформації може здаватися "варварським", проте якщо правильно організувати роботу (резервне копіювання щодня, ведення повного протоколу роботи за день і т.п.), то стерту інформацію можна відновити із мінімальними втратами (диск не страждає).
Для ідентифікації адміністратора, що має доступ до комп'ютера, застосовуються електронні ключі з довжиною коду 48 бітів. Невеличкий час, відведений для пред'явлення даного ключа - 10 секунд, цілком виключає можливість його підбору. Датчики, при спрацьовуванні яких відбувається знищення інформації, користувачі вибирають самі. Найбільше часто використовуються вимикачі (вимикання комп'ютера, відкриття кімнати, тривожна кнопка), дзвоник телефону (пейджера), датчики що спрацьовують при зміні обсягу.
Пристрій являє собою блок, що монтується у відсік 3,5" дисковода і має автономне живлення. Пристрій включається в IDE шлейфа і не потребує установки ніяких драйверів. Даний пристрій можна встановити в будь-який комп'ютер, що має накопичувачі типу IDE
Прив'язка до місця розташування на диску
Якщо потрібно виключити копіювання програми з жорсткого диска на інший жорсткий диск, її можна прив'язати до номера кластера або сектора, із якого починається файл програми на диску. Прив'язка здійснюється в такий спосіб. Спеціально підготовлена установча програма відкриває файл із робочою програмою і по таблиці відкритих файлів знаходить початковий номер кластера. Це число, що є своєрідним ключем, записується установчою програмою у визначене місце файла робочої програми ( у поле даних). Робоча ж програма після запуску насамперед виконує ту ж операцію - визначає свою початкову адресу, а потім порівнює його з ключем. Якщо числа збігаються, програма приступає до виконання своєї змістовної частини; якщо не збігаються - аварийно завершується. При копіюванні програми на інший диск (або навіть на той же самий) вона виявиться розташованої в іншому місці і номер кластера, записаний нустановчою програмою вже не буде відповідати реальній адресі файла. У той же час за допомогою установчої дискети програму неважко встановити на будь-якому диску.
Ключова дискета з нестандартним форматом
Достатньо надійний засіб захисту програм від переносу на інші комп'ютери полягає у використанні ключової дискети. У цьому випадку робоча програма, що знаходиться на жорсткому диску, перед початком роботи перевіряє наявність на дисководі дискети з ключовою інформацією. Для того, щоб ключову дискету не можна було розмножити за допомогою команди DISKCOPY, що здійснює копіювання на фізичному рівні, ключова інформація записується на доріжці з нестандартним форматом, розташованої до того ж за межами робочого простору диска. Така ключова дискета підготовляється спеціальною установчою програмою, що за допомогою функції 05h переривання BIOS 13h, форматує, наприклад, доріжку номер 40 (або 80) із розміром сектора 256 байтів замість 512 і записує на її заданий ключ. Робоча програма перед початком роботи виконує читання нестандартної доріжки і при відсутності самої доріжки або ключа на ній аварийно завершується. Такий засіб зручний тим, що користувач, придбавши програмний продукт із ключовою дискетою, може вільно переносити його з комп'ютера на комп'ютер і навіть запускати його на декількох комп'ютерах одночасно, але не має можливості передати програмний пакет третій особі (не позбавивши себе ключової дискети).
Очевидно, що для жорсткості захисту розглянуті методи можуть використовуватися спільно в різноманітних комбінаціях.
Постанова задачі та методи її реалізації. Захист від НСД шляхом запису ключа за логічними межами файла
Як відомо, DOS виділяє місце під файли цілими кластерами, у результаті чого за логічним кінцем файла практично завжди є вільний простір (до кінця кластера). При копіюванні файла на інший диск реально переносяться тільки байти, що відповідають самому файлу, тому що число байтів що копіюються визначається логічною довжиною файла. Байти останнього кластера файла, що знаходяться за логічними межами файла, не копіюються. Якщо в них записати ключ, то при копіюванні ключ зникне. Після запису робочої програми на жорсткий диск вона встановлюється за допомогою спеціальної установчої програми (яка зберігається на дискеті). Установча програма відкриває файл із робочою програмою, переміщюає вказівник файла на його кінець і записує ключ (одне або декілька слів) за старими межами файла. Потім за допомогою засобів DOS файл укорочується до старої довжини. У результаті ключ надається фізично прилягаючим до файла, але логічно за його межами.
При використанні цього методу установча програма повинна перед записом ключа проаналізувати довжину файла. Якщо файл займає ціле число кластерів, його попередньо варто подовжити так, щоб він зайняв частину такого кластера, інакше нікуди буде записати ключ. Те ж утвориться, якщо, скажемо, при довжині ключа 2 байта файл займає ціле число кластеров мінус 1 байт. У цьому випадку файл також потребує подовження. Робоча програма після запуску виконує ті ж операції, що і установча (за винятком подовження файла) і перевіряє, чи записаний відомий їй ключ за кінцем файла.
Процес підготування програми на мові ассемблера
Процес підготування і налагодження програми включає такі етапи:
підготування вихідного тексту програми за допомогою будь-якого текстового редактора. Файл із вихідним текстом повинний мати розширення . ASM;
трансляція програми за допомогою ассемблера MASM. EXE із метою одержання об'єктного файла;
компонування об'єктного модуля за допомогою компоновника LINK. ЕХЕ з метою одержання завантажувального файла
При виборі редактора для підготування вихідного тексту програми варто мати на увазі, що багато текстових процесорів (наприклад, Microsoft Word) додають у вихідний файл службову інформацію. Тому варто скористатися редактором, що виводить у вихідний файл "чистий текст", без яких-небудь керуючих символів. До таких редакторів відносяться, наприклад, широко поширені в нас Лексикон, Norton Editor і ін. Якщо файл із вихідним текстом програми названий P.ASM, то рядок виклику ассемблера може мати такий вид:
MASM IZ /ZI /N Р.Р.Р;
Ключ /Z дозволяє вивод на екран рядків вихідного тексту програми, у яких ассемблер виявив помилки (без цього ключа пошук помилок прийшлося б проводити по листингу трансляції).
Ключ /ZI управляє включенням в об'єктний файл номерів рядків вихідної програми й іншої інформації, не необхідної при виконанні програми, але використовуваної відлагоджувальником CodeView.
Ключ /N не включає висновок у листинг переліку символічних позначень у програмі, від чого декілька зменшується інформативність листинга, але істотно скорочується його розмір.
Параметри, що знаходяться далі, визначають імена модулів: вихідного (P. ASM), об'єктного (P. OBJ) і листинга (P. LST). Точка з комою не включає формування файла P. CRF.
Рядок виклику компоновника може мати такий вигляд:
LINK /CO Р,Р;
Ключ /З передає в завантажувальний файл символьну інформацію, що дозволяє відлагоджувальнику CV виводити на екран повний текст вихідної програми, включаючи мітки, коментарі та ін. Параметри, що знаходяться далі, позначають імена модулів: об'єктного (P. OBJ) і завантажувального (Р.ЕХЕ). Точка з комою не включає формування файла з листингом компонування (Р.МАР) і використання бібліотечного файла з об'єктними модулями підпрограм.
Компоновник створює завантажувальний модуль у форматі . ЕХЕ. Якщо вихідна програма написана у форматі . СОМ, то після трансляції і компонування її треба перетворити у файл типу . СОМ. Для цього використовується включена до складу DOS зовнішня команда EXE2BIN:
EXE2BIN P P. COM
Перший параметр позначає вихідний для команди EXE2BIN завантажувальний файл Р.ЕХЕ, другий - очікуваний результат перетворення. Вказівка розширення .СОМ у другому параметрі обов'язкова, тому що по замовчанню команда EXE2BIN створює файл із розширенням . BIN.
Використання інтерактивного відлагоджувальника CodeView Microsoft
Інтерактивний відлагоджувальник CodeView дозволяє виконувати програму по кроках або з точками останова, виводити на екран вміст регістрів і областей пам'яті, модифікувати (у відомих межах) завантажену в пам'ять програму, примусово змінювати вміст регістрів і виконувати інші дії, що дозволяють у наочній і зручній формі відлагоджувати програми, написані на мові ассемблера. відлагоджувальник запускається командою
CV Р.ЕХЕ
де Р.ЕХЕ - ім'я файла з відлагодженою програмою. У процесі роботи відлагоджувальник використовує також файл із вихідним модулем P. ASM.
Реалізація задачі
Задача по забезпеченню захисту програм від копіювання шляхом запису ключа в порожнє місце кластера за межами файлу з програмою потребує написання робочої програми WORK3.EXE, яка виводить на екран текст, що відповідає конкретному випадку завершення програми.
На початку програма читає перше слово за логічним кінцем файла WORK3.EXE, читає його ключ і порівнює його з ключем записаним в програмі. Якщо ключі не співпадають , програма аварійно завершується та видає відповідне повідомлення. В противному випадку програма видає повідомлення про нормальну роботу файла. Робоча програма потребує встановлення на жорсткому диску.
Також задача потребує написання установчої програми INSTALL3.EXE, яка призначена для установки на жорсткому диску робочої програми WORK3.EXE.
Установча програма записує за логічним кінцем файла робочої програми WORK3.EXE заданий ключ, попередньо проаналізувавши довжину файла WORK3.EXE і подовживши його на два байта (тобто фактично на цілий кластер), якщо за межами файла, але до кінця останнього зайнятого файлом кластера, не має місця для запису ключа.
Список скорочень
ПК – персональний комп’ютер.
НСД – несанкціонований доступ.
Список літератури
Финогенов К.Г. “Самоучитель по системным функциям MS-DOC”.
Скэнлон Л. “Персональные ЭВМ IBM PC и XT”
Фигурнов: "Работа пользователя с IBM PC".
Громов В.И. Васильев Г.А. "Энциклопедия компьютерной безопасности."
Текст програми
Програма WORK3. EXE
;Робоча програма WORK3.EXE, що потребує установки на жорсткому диску
;Основні фрагменти програми
;Відкриваємо файл із робочою програмою
jnc gol
jmp notopen
gol:
mov handle,AX ;Запам’ятаємо дескриптор
;Зупинимо вказівник на 2 байта за ;кінцем файла
mov АН,42h ;Функція установки пвказівника
mov AL,2 ;Режим - від кінця файла
mov BX,handle
mov CX,0
mov DX,2
Int 21h
;Виконаємо фіктивний запис 0 байтів, щоб збільшити файл на два байти
mov AH,40h
mov BX,handle
mov CX,0
mov DX,offset key_rd ;Фіктивний параметр
int 21h
;Зсунемо вказівник на старий кінець файла, тобто на ключ
mov АН,42h
mov AL,2
mov BX,handle
mov CX,-1
mov DX,-2
int 21h
;Прочитаємо ключ
mov AH,3Fh
mov BX,handle
mov CX,2
mov DX,of set key_rd
int 21h
;Порівняємо прочитаний ключ із записаним у програмі
mov AX,key
сmр AX,key_rd
je ok ;Ключі збігаються
;Ключі не збігаються, виведемо повідомлення mes1 про те,
;що програма не встановлена
jmp ahead ;Продовжимо програму
ok:
;Виведемо повідомлення ims про нормальну роботу
;Зрушимо вказівник на старий кінець файла
ahead:
mov AH,42h
mov AL,2
mov BX,handle
mov CX,-l
mov DX,-Z
Int 21h
;Виконаємо фіктивний запис 0 байтів, щоб зафіксувати поточну довжину файла
mov AH,0h
mov BX,handle
mov CX,0
mov DX,offset key_rd ;Фіктивний параметр
Int 21h
;Виведемо повідомлення mes2 про відмову відкрити Файл
notopen:
jmp outprog
myproc endp
;Поля даних
fname db 'work3.exe',0 ;Ім'я файла
handle dw 0 ;Комірка для дескриптора
key dw 1234h ;Ключ, що записується у файл
key_rd dw 0 ;Ключ, що читається з файла
mes db 'Программа встановлена і буде працювати нормально',10,13
mes1 db 'Программа не встановлена і не може бути запущена',10,13
mes2 db 'Файл WORK3. EXE не відкрився'. 10.13
mes3 db 'Файл WORK3. EXE не знайдений у таблиці файлів'
Програма INSTALL3. EXE
;Установча програма, призначена для установки
;на жорсткому диску робочої програми WORK3.EXE ;Основні фрагменти програми
;Відчинимо файл із робочою програмою, щоб він потрапив у таблицю файлів
jnc go1
jmp notopen
go1:
mov handle,AX ;
;Одержимо індекс SFT із JFT, що знаходиться в PSP
mov DI,l8h ;ES:DI->JFT
add DI,AX ;ЕS:DI->наш елемент у JFT
mov CL,ES:[DI] ;CL=індекс SFT
xor CH.CH ;CH=індекс SFT
;Одержимо доступ до системної таблиці файлів
mov AH,52h
Int 21h
les DI,ES:[BX+4] ;ES:DI->перша SFT сmр CX,ES:[OI+4] ;Індекс у цій SFT?
jb here ;І
sub> CX,ES:[DI+4] ;Немає, віднімемо число блоків у цій ;SFT
les DI,ES:[OI] ;ES:DI->друга SFT
here:
;Знайшли ту SFT, у котрій наш індекс
mov AX,59 ;Розмір блока опису файла
mul CL
add DI,6 ;ЕS:DI->перший блок опису файла
add DI,AX ;ЕS:DI->блок опису файла
mov AX,ES:[DI+llh] ;АХ=молодше слово довжини
mov DX,ES:[DI+13h] ;DХ=старше слово довжини
les DI,ES:[DI+7] ;ЕS:DI=вказівник на DPB
mov BL,ES:[DI+4] ;ВL=номер старшого сектора кластера
inc BL ;BL=число секторів у кластері
xor BH,BH ;ВХ-число секторів у кластері
mov CL,9 ;Зсув на 9 бітій = множення на 512
shl BX,CL ;вх=число байтів у кластері
mov SI,BX ;Збережемо розмір кластера в SI
d1v BX ;DX:AX/BX.
push DX ;Збережемо у стекі залишок
;Встановимо вказівник на кінець файла
mov AH,42h
mov AL,2 ;Режим установки від кінця файла
mov BX,handle
mov CX,O ;0 байтів
mov DX,O ;від кінця файла
1nt 21h
;чи потрібна корекція довжини файла? Файл треба подовжити,
;якщо залишок дорівнює 0 або дорівнює довжині кластера-1.
pop DX ; Витягнемо зі стека залишок
dec SI ;SI-число байтів у кластері-1
cmp DX,0 ;Залишок дорівнює 0?
je incr ;Так, на корекцію
cmp DX.SI ;Залишок дорівнює довжині кластера-1?
je incr ;Так, на корекцію
jmp good ;корекція не потрібна
;Збільшемо файл на два байти, щоб він зайняв ще один кластер
incr:
mov AH,40h
mov BX,handle
mov CX.2
mov OX, offset null
Int 21h
jmp good ;Ha запис ключа за межами нової довжини файла
good:
;Запишемо за межами файла ключ
mov АН,40h
mov ВХ,handle
mov СХ,2
mov OX,offset key
Int 21h ;Зрушимо покажчик на старий кінець файла, щоб відділити ключ від файла
mov AH,42h
mov AL,2 ;Режим установки від кінця файла
mov ВХ,handle
mov СХ,-1 ;СХ:DХ=машинне уявлення
mov DX,-2 ;числа -2
int 21h
; Виконаємо фіктивний запис 0 байтів, щоб укоротить файл
;до старої довжини
mov AH,40h
mov ВХ,handle
mov СХ.0
mov DX,offset key ;Фіктивний параметр
Int 21h ;Виведемо повідомлення mes про нормальну роботу
;Завершимо програму
notopen:
;Виведемо повідомлення mes2 про неможливість відкрити файл
jmp outprog ;Поля даних
fname db 'work3.exe',0 ;Ім'я файла handle dw 0 ;Осередок для дескриптора
key dw 1234h ;Ключ, що записується у файл
null dw 0
mes db 'Программа WORK3.EXE установлена на жорсткому дискі',10,13
mes2 db 'Файл WORK3.EXE не відкрився',10,13
Блок-схема алгоритму
Блок-схема робочої програми WORK3.EXE.
Ні
Так
Так
Ні
Блок-схема установочної програми INSTALL3.EXE.
Так
Ні
Ні
Так