|
Захист файлів від запису
Захист файлів від запису
2 Міністерство освіти і науки України Кіровоградський державний технічний університет ФАЕП Кафедра Програмного забезпечення Курсова робота Тема: "Захист файлів від запису" Зміст - Вступ
- 1. Призначення та область застосування програми
- 1.1 Захист файлів від несанкціонованого копіювання
- 2. Огляд існуючих методів для захисту файлів від несанкціонованого доступу
- 2.1 Використання криптографії
- 2.2 Прив'язка до місця розташування на диску
- 2.3 Ключова дискета з нестандартним форматом
- 3. Постанова задачі та методи її реалізації
- 3.1 Захист файлів від запису
- 3.1.1 Процес підготування програми на мові ассемблера
- 3.2 Реалізація задачі
- Список літератури
- Додатки
- Текст програми
- Блок-схема алгоритму
ВступМетоди захисту даних на персональних комп'ютерах надзвичайно різноманітні як по кінцевій меті, так і по технічному втіленню; їх можна розділити на механічні, апаратні і програмні.До механічних засобів захисту відносяться різноманітні кришки і чохли з замками (що замикають, наприклад, дисковод гнучких дисків або мережний вимикач), клейкі пластини для приклеювання термінала до комп'ютера, а комп'ютера до столу, помешкання що замикаються із сигналізацією і багато інших.Апаратні засоби реалізуються у вигляді спеціальних електронних модулів, що підключаються до системного каналу комп'ютера або портів вводу-виводу, і здійснюють обмін кодовими послідовностями з програмами, що захищаються.Найбільш різноманітні - програмні засоби. Сюди відносяться програми шифрації даних по заданому користувачем ключу, адміністратори дисків, що дозволяють обмежити доступ користувачів до окремих логічних дисків, методи встановлення програмного продукту з дистрибутивних дискет, що дозволяють виконати установку не більше вказаного числа запуску програм, що захищаються за допомогою некопійованих ключових дискет, спеціальні захисні програмні оболонки, куди поміщаються програми що захищуються.1. Призначення та область застосування програми1.1 Захист файлів від несанкціонованого копіюванняОсобливості захисту персональних комп'ютерів (ПК) обумовлені специфікою їх використання. Як правило, ПК користується обмежене число користувачів. ПК можуть працювати як в автономному режимі, так і в складі локальних мереж (сполученими з іншими ПК) і можуть бути залучені до віддаленого ПК або локальної мережі за допомогою модему по телефонній лінії.Стандартність архітектурних принципів побудови, устаткування і програмного забезпечення персональних комп'ютерів, висока мобільність програмного забезпечення і ряд інших ознак визначають порівняно легкий доступ професіонала до інформації, що знаходиться в ПК. Якщо персональним комп'ютером користується група користувачів, то може виникнути необхідність в обмеженні доступу до інформації різноманітних користувачів.Дана програма призначена для захисту від копіювання та від знищення файлів на гнучкому диску. Програма працює на всіх IBM-сумісних ПК. Для коректної роботи програми потрібна OS MS - DOS версії 5.0 або вище або WINDOWS 9x.2. Огляд існуючих методів для захисту файлів від несанкціонованого доступу2.1 Використання криптографіїКоритувачі ПК у різноманітних організаціях для обміну інформацією усе ширше використовують електронну пошту, що без додаткових засобів захисту може стати надбанням сторонніх осіб. Самим надійним захистом від несанкціонованого доступу до переданої інформації і програмних продуктів ПК є застосування різноманітних методів шифрування (криптографічних методів захисту інформації).Криптографічні методи захисту інформації - це спеціальні методи шифрування, кодування або іншого перетворення інформації, у результаті якого її утримання стає недоступним без пред'явлення ключа криптограми й оберненого перетворення. Криптографічний метод захисту, безумовно, самий надійний метод захисту, тому що охороняється безпосередньо сама інформація, а не доступ до неї (наприклад, зашифрований файл не можна прочитати навіть у випадку крадіжки носія). Даний метод захисту реалізується у виді програм або пакетів програм, що розширюють можливості стандартної операційної системи. Захист на рівні операційної системи, частіше усього, повинен доповнюватися засобами захисту на рівні систем керування базами даних, що дозволяють реалізовувати складні процедури керування доступом.В даний час не існує узвичаєної классифікації криптографічних методів захисту інформації. Проте, коли піддається перетворенню (шифровці) кожний символ переданого повідомлення ("симетричний" метод закриття інформації), можна умовно виділити чотири основні групи:підстановка - символи тексту що шифрується заміняються символами того ж або іншого алфавіту відповідно до заздалегідь визначеного правила;перестановка - символи тексту що шифрується переставляються по деякому правилу в межах заданого блока переданого текстуаналітичне перетворення - текст що шифрується перетвориться по деякому аналітичному правилу;комбіноване перетворення - вихідний текст шифрується двома або великим числом засобів шифрування.Існує велике число програмних продуктів шифрування інформації, що відрізняються по ступеню надійності.2.2 Прив'язка до місця розташування на дискуЯкщо потрібно виключити копіювання програми з гнучкого диска на інший гнучкий диск, її можна прив'язати до номера кластера або сектора, із якого починається файл програми на диску. Прив'язка здійснюється в такий спосіб. Спеціально підготовлена установча програма відкриває файл із робочою програмою і по таблиці відкритих файлів знаходить початковий номер кластера. Це число, що є своєрідним ключем, записується установчою програмою у визначене місце файла робочої програми (у поле даних). Робоча ж програма після запуску насамперед виконує ту ж операцію - визначає свою початкову адресу, а потім порівнює його з ключем. Якщо числа збігаються, програма приступає до виконання своєї змістовної частини; якщо не збігаються - аварийно завершується. При копіюванні програми на інший диск (або навіть на той же самий) вона виявиться розташованої в іншому місці і номер кластера, записаний нустановчою програмою вже не буде відповідати реальній адресі файла. У той же час за допомогою установчої дискети програму неважко встановити на будь-якому диску.2.3 Ключова дискета з нестандартним форматомДостатньо надійний засіб захисту програм від переносу на інші комп'ютери полягає у використанні ключової дискети. У цьому випадку робоча програма, що знаходиться на жорсткому диску, перед початком роботи перевіряє наявність на дисководі дискети з ключовою інформацією. Для того, щоб ключову дискету не можна було розмножити за допомогою команди DISKCOPY, що здійснює копіювання на фізичному рівні, ключова інформація записується на доріжці з нестандартним форматом, розташованої до того ж за межами робочого простору диска. Така ключова дискета підготовляється спеціальною установчою програмою, що за допомогою функції 05h переривання BIOS 13h, форматує, наприклад, доріжку номер 40 (або 80) із розміром сектора 256 байтів замість 512 і записує на її заданий ключ. Робоча програма перед початком роботи виконує читання нестандартної доріжки і при відсутності самої доріжки або ключа на ній аварийно завершується. Такий засіб зручний тим, що користувач, придбавши програмний продукт із ключовою дискетою, може вільно переносити його з комп'ютера на комп'ютер і навіть запускати його на декількох комп'ютерах одночасно, але не має можливості передати програмний пакет третій особі (не позбавивши себе ключової дискети).Очевидно, що для жорсткості захисту розглянуті методи можуть використовуватися спільно в різноманітних комбінаціях.3. Постанова задачі та методи її реалізації3.1 Захист файлів від запису3.1.1 Процес підготування програми на мові ассемблераПроцес підготування і налагодження програми включає такі етапи:підготування вихідного тексту програми за допомогою будь-якого текстового редактора. Файл із вихідним текстом повинний мати розширення. ASM;трансляція програми за допомогою ассемблера ТASM. EXE із метою одержання об'єктного файла;компонування об'єктного модуля за допомогою компоновника ТLINK. ЕХЕ з метою одержання завантажувального файлаПри виборі редактора для підготування вихідного тексту програми варто мати на увазі, що багато текстових процесорів (наприклад, Microsoft Word) додають у вихідний файл службову інформацію. Тому варто скористатися редактором, що виводить у вихідний файл "чистий текст", без яких-небудь керуючих символів. До таких редакторів відносяться, наприклад, широко поширені в нас Лексикон, Norton Editor і ін. Якщо файл із вихідним текстом програми названий P. ASM, то рядок виклику ассемблера може мати такий вид:ТASM /ZIКлюч /ZI управляє включенням в об'єктний файл номерів рядків вихідної програми й іншої інформації, не необхідної при виконанні програми, але використовуваної відлагоджувальником CodeView.Рядок виклику компоновника може мати такий вигляд:ТLINK /VКлюч /V передає в завантажувальний файл символьну інформацію, що дозволяє відлагоджувальнику CV виводити на екран повний текст вихідної програми, включаючи мітки, коментарі та ін. Компоновник створює завантажувальний модуль у форматі. ЕХЕ. Якщо вихідна програма написана у форматі. СОМ, то після трансляції і компонування її треба перетворити у файл типу. СОМ. Для цього використовується включена до складу DOS зовнішня команда EXE2BIN:EXE2BIN P P.comПерший параметр позначає вихідний для команди EXE2BIN завантажувальний файл Р. ЕХЕ, другий - очікуваний результат перетворення. Вказівка розширення. СОМ у другому параметрі обов'язкова, тому що по замовчанню команда EXE2BIN створює файл із розширенням. BIN.3.2 Реалізація задачіЗадача по забезпеченню захисту файлу на гнучкому диску від несанкціонованого запису передбачає створення такої програми, яка б при читанні диску не давала б змоги недозволеному користувач читати інформацію на ній.Після того, як користувач запустить програму і введе ім'я файлу (File. Txt), що необхідно захистити від запису, програма відкриє цей файл, і витягне з нього один кластер. Місце, де знаходився цей кластер буде помічене як БЕД - блок. Потім програма створить файл на жорсткому диску (File_), в який буде занесено номер кластеру і пароль (пароль користувач повинно ввести в процесі роботи програми). Створивши такий файл програма закінчує свою роботу. Після цього файл на гнучкому диску не можна ні прочитати, ні скопіювати, ні знищити. Цей алгоритм програми дозволяє захистити файл від несанкціонованого копіювання на інший диск. Навіть коли дискету буде втрачено без наявності файлу File_ не можна надати файлу попереднього вигляду.Список літературиФиногенов К.Г. “Самоучитель по системным функциям MS-DOC". Скэнлон Л. “Персональные ЭВМ IBM PC и XT” Фигурнов: "Работа пользователя с IBM PC". Громов В.И. Васильев Г.А. "Энциклопедия компьютерной безопасности" Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT: Пер. с англ. - Финансы и статистика, 1992. - 544 с. Браун Р., Кайл Дж. Справочник по прерываниям для IBM PC: В 2-х томах: Т.1. Пер. с англ. - М.: Мир, 1994. - 558 с. Т.2. Пер. с англ. - М.: Мир, 1994. - 480 с. ДодаткиТекст програми. model tiny. dataBoot db 512 dup (0)Fat1 db 512*9 dup (0)Root db 512*9 dup (0)DTA db 2Ch dup (0)RootRecord db 32 dup (0)Size_Fat db 0Clust dw 0CntSim dw 0el_DTA dw 0el_Root dw 0Save_di dw 0MassOne dw 0Sim dw 0Handle dw?FileName db 13 dup (0)File_Nam db 13 dup (0)New_File db 13 dup (0)Password db 8 dup (0)Passwd db 8 dup (0)InFile db " "Path db "a: \ "Inp_file db "Input name of file: $"Inp_Pass db "Input password: $"Err_file db "Error name of file... $"Err_Pass db "Error password... $"Err_WrtF db "Error write Fat... $"Err_WrtR db "Error write Root... $"Select db "Select operatiom: ",13,10,"1 - Protected file",13,10,"2 - DeProtected file",13,10,"$". codeSetDTA Procmov ah,1ahmov dx,offset DTAint 21hRetSetDTA EndpPerevod Procmov ah,2mov dl,13int 21hmov ah,2mov dl,10int 21hRetPerevod EndpReadBoot Proc; Процедура читання BOOT сектораmov al,0mov dx,0mov cx,1mov bx,offset Bootint 25hpop dxRetReadBoot EndpCntFat Procmov ah,Boot [16h]mov Size_Fat,ahRetCntFat EndpReadFat Proc; Процедура читання FATmov cx,0mov al,0mov dx,1mov cl,Size_Fatmov bx,offset Fat1int 25hpop dxRetReadFat EndpReadRoot Procmov al,0mov dx, 19mov cx,8mov bx,offset Rootint 25hpop dxRetReadRoot EndpReadNameFile Proc; Процедура читання ім'я файлуmov ah,09hmov dx,offset Inp_Fileint 21hcall SetDTAmov di,0NewSimFileName:mov ah,1int 21hcmp al,13je EndVvodcmp al,'a'jl NotBigcmp al,'z'jg NotBigsub al, 20hNotBig:mov FileName [di],almov File_Nam [di],alinc dicmp di,13jne NewSimFileNameEndVvod:mov di,0NewSimPath:mov ah,FileName [di]mov Path [di+3],ahcmp ah,0je EndPathinc dijmp NewSimPathEndPath:mov ah,4ehmov dx,offset Pathmov cx,3Fhint 21hjnc FileOkcall Perevodmov ah,09hmov dx,offset Err_Fileint 21hmov ah,1int 21hjmp Exit0FileOk:mov di,12mov si,10NewSimName:mov ah,FileName [di]dec dicmp ah,0je NewSmov FileName [si],ahmov bh,0mov FileName [di+1],bhdec siNewS:cmp ah,'. 'jne NewSimNamemov bh,0mov FileName [si+1],bhmov di,0NewS1:mov ah,FileName [di]cmp ah,0jne NewS2mov bh,' 'mov FileName [di],bhNewS2:inc dicmp di,11jne NewS1RetReadNameFile EndpNumClust Proc; Процедура, що зчитує номер кластераmov di,0NewSimRoot:mov di,el_Rootmov ah,Root [di]mov di,el_DTAmov al,FileName [0]cmp ah,aljne Daleemov bx,el_Rootmov di,0mov el_DTA,diNewSimEqu:mov di,el_Rootmov ah,Root [di]mov di,el_DTAmov al,FileName [di]cmp ah,aljne NotEquinc CntSimNotEqu: inc el_Rootinc el_DTAmov di,el_DTAcmp di,11jne NewSimEqucmp di,CntSimjne NotThisFilesub di,11mov Save_di,dijmp Read_ClustNotThisFile:mov di,0mov el_DTA,dimov CntSim,dimov el_Root,bxDalee: inc diinc el_Rootmov di,el_Rootcmp di,3200jne NewSimRootRead_Clust:mov di,el_Rootsub di,11mov al,Root [di+1ah]mov ah,Root [di+1bh]mov Clust,axmov bx,0NewSimRecord:mov ah,Root [di+bx]mov RootRecord [bx],ahinc bxcmp bx,32jne NewSimRecordRetNumClust EndpReadClusts Proc; Процедура читання кластераmov ax,Clustmov bx,0mov dx,0mov ax,Clustmov bx,3mul bxmov bx,2div bxmov bx,axmov cx,Clustand cx,1jne NeChetmov al,Fat1 [bx]mov ah,Fat1 [bx+1]mov cx,axshr cx,12shl cx,12add cx,0FF7hmov Fat1 [bx],clmov Fat1 [bx+1],chshl ax,4shr ax,4mov MassOne,axjmp EndClustNeChet:mov al,Fat1 [bx]mov ah,Fat1 [bx+1]mov cx,axshl cx,12shr cx,12add cx,0FF70hmov Fat1 [bx],clmov Fat1 [bx+1],chshr ax,4mov MassOne,axEndClust:RetReadClusts EndpReadPassword Proc; Процедура, що читає парольcall Perevodmov ah,09hmov dx,offset Inp_Passint 21hmov di,0NewSimPassword:mov ah,8int 21hcmp al,13je EndVvodPassmov Password [di],alinc dicmp di,8jne NewSimPasswordEndVvodPass:RetReadPassword EndpWriteFile Proc; Процедура запису в файлmov di,0NewSimN_File:mov ah,File_Nam [di]cmp ah,0je EndVvodN_Filemov New_File [di],ahinc dicmp di,13jne NewSimN_FileEndVvodN_File:mov ah,'_'mov New_File [di-1],ahmov ah,3Chmov dx,offset New_Filemov cx,0int 21hjnc N_FileOkmov ah,09hmov dx,offset Err_Fileint 21hmov ah,1int 21hjmp Exit0N_FileOk:mov Handle,axmov di,Save_dimov ah,40hmov bx,Handlemov cx,32mov dx,offset RootRecordint 21hmov di,0mov ax,MassOnemov si,5NewDec:mov dx,0mov bx,10div bxmov cx,axadd dl,30hmov InFile [si-1],dldec simov ax,cxcmp si,0jne NewDecmov ah,40hmov bx,Handlemov cx,5mov dx,offset Infileint 21hcall ReadPassword; Викликаємо процедуру ReadPasswordmov ah,40hmov bx,Handlemov cx,dimov dx,offset Passwordint 21hmov ah,3ehmov bx,Handleint 21hRetWriteFile EndpWriteData Proc; Процедура запису в файл данихmov ax,0mov cx,0mov al,0mov dx,1mov cl,Size_Fatmov bx,offset Fat1int 26hpop dxjnc no_errcall Perevodmov ah,09hmov dx,offset Err_WrtFint 21hmov ah,1int 21hjmp Exit0no_err:RetWriteData EndpCoder Proccall Perevodcall ReadBootcall CntFatcall ReadFatcall ReadRootcall ReadNameFilecall NumClustcall ReadClustscall WriteFilecall WriteDataRetCoder EndpFindNullRecord Proc; Процедура знаходження нульового записуmov di,0NewSimFindRecord:mov ah,Root [di]inc dicmp ah,229jne NewSimFindRecorddec dimov Save_di,diRetFindNullRecord EndpReadNameFileW Proc; Процедура читання імені записаного файлуmov ah,09hmov dx,offset Inp_Fileint 21hcall SetDTAmov di,0W_NewSimFileName:mov ah,1int 21hcmp al,13je W_EndVvodcmp al,'a'jl W_NotBigcmp al,'z'jg W_NotBigsub al, 20hW_NotBig:mov FileName [di],alinc dicmp di,13jne W_NewSimFileNameW_EndVvod:mov ah,4ehmov dx,offset FileNamemov cx,3Fhint 21hjnc W_FileOkcall Perevodmov ah,09hmov dx,offset Err_Fileint 21hmov ah,1int 21hjmp Exit0W_FileOk:RetReadNameFileW EndpReadFile Proc; Процедура читання файлуmov ah,3dhmov dx,offset FileNamemov al,2int 21hjnc R_FileOkcall Perevodmov ah,09hmov dx,offset Err_Fileint 21hmov ah,1int 21hjmp Exit0R_FileOk:mov Handle,axmov ah,3fhmov bx,Handlemov cx,32mov dx,offset RootRecordint 21hmov di,0mov ah,3fhmov bx,Handlemov cx,5mov dx,offset InFileint 21hmov di,0mov ax,0mov MassOne,axmov bx,10000mov cx,10NewDec_R:mov dx,0mov al, InFile [di]sub al,30hmul bxmov Sim,axmov dx,0mov ax,bxdiv cxmov bx,axmov ax,Simadd MassOne,axmov ax,0inc dicmp di,5jne NewDec_Rmov ax,MassOnecall ReadPasswordmov ah,3fhmov bx,Handlemov cx,8mov dx,offset Passwdint 21hmov bx,axmov ax,0mov di,0mov CntSim,axNewSimPw:mov ah,Password [di]mov al,Passwd [di]cmp ah,aljne Dalee0inc CntSimDalee0:inc dicmp di,bxjne NewSimPwcmp di,CntSimje PasswdOkcall Perevodmov ah,09hmov dx,offset Err_Passint 21hmov ah,1int 21hjmp Exit0PasswdOk:mov di,Save_dimov bx,0NewRR:mov ah,RootRecord [bx]mov Root [di+bx],ahinc bxcmp bx,32jne NewRRRetReadFile EndpWriteClusts Proc; Процедура запису в файл кластераmov al,RootRecord [1ah]mov ah,RootRecord [1bh]mov Clust,axmov ax,Clustmov bx,0mov dx,0mov ax,Clustmov bx,3mul bxmov bx,2div bxmov bx,axmov cx,Clustand cx,1jne NeChetWmov al,Fat1 [bx]mov ah,Fat1 [bx+1]mov cx,axshr cx,12shl cx,12add cx,MassOnemov Fat1 [bx],clmov Fat1 [bx+1],chjmp EndClustWNeChetW:mov al,Fat1 [bx]mov ah,Fat1 [bx+1]mov cx,MassOneshl cx,4mov MassOne,cxmov cx,axshl cx,12shr cx,12add cx,MassOnemov Fat1 [bx],clmov Fat1 [bx+1],chEndClustW:RetWriteClusts EndpDeleteFile Proc; Процедура знищення файлуmov ah,41hmov dx,offset FileNameint 21hRetDeleteFile EndpDeCoder Proccall Perevodcall ReadBootcall CntFatcall ReadFatcall ReadRootcall FindNullRecordcall ReadNameFileWcall ReadFilecall WriteClustscall WriteDatacall DeleteFileRetDeCoder EndpSelect_Operation ProcNewSelect:call Perevodmov ah,09hmov dx,offset Selectint 21hmov ah,1int 21hcmp al,31hjne NotCodercall Coderjmp EndSelectNotCoder:cmp al,32hjne NotDeCodercall DeCoderjmp EndSelectNotDeCoder:jmp NewSelectEndSelect:call PerevodRetSelect_Operation EndpMain Procmov ax,@datamov ds,axcall Select_OperationExit0: mov ah,04chint 21hMain EndpEnd MainБлок-схема алгоритмуПродовження блок-схеми алгоритму:
|
|