Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение высшего профессионального образования
Российский государственный гидрометеорологический университет
Кафедра ИС и ГТ
Курсовая работа
«Формализованные способы представления и
организации данных и программ».
Дисциплина: Основы информационной безопасности.
Выполнил: студент
Группы ИБ-434
Оленев Д. С.
Проверил: профессор
Гагарин Ю. И.
Санкт-Петербург
2013
Содержание
1.2 Общие сведения по организации и доступу к данным в ЭВМ…………………..4
1.3 Логический тип данных………………………………………………………………5
1.4 Арифметический тип данных………………………………………………………..6
1.5 Текстовый тип данных………………………………………………………………..8
1.6 Практическая часть………………………………………………………………..…8
2. Исследование структуры и функциональных возможностей пакетов прикладных программ программ……………………………………………………………………………...10
2.2 Интегрированная среда разработки Borland Turbo C++ 3.0………………….10
3. Защита от несанкционированного доступа………………………………………………..14
3.1 Общие положения……………………………………………………………………14
3.2 Парольная защита………………………………………...…………………………15
3.3 Взлом парольной защиты…………………………………………………………...18
3.4 Программно-аппаратная защита…………………………………………………..19
1. Организация данных и формы их представления в ЭВМ.
1.1 Структура аппаратных средств однопроцессорной ЭВМ на основе системного интерфейса.
Архитектура фон Неймана широко известный принцип совместного хранения программ и данных в памяти компьютера. Вычислительные системы такого рода часто обозначают термином «машина фон Неймана», однако соответствие этих понятий не всегда однозначно. В общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных. Архитектура фон Неймана представлена на рисунке 1.
Рис. 1 Структура аппаратных средств однопроцессорной ЭВМ на основе системного интерфейса.
Принципы:
Программы и данные хранятся в одной и той же памяти. Поэтому ЭВМ не различает, что хранится в данной ячейке памяти число, текст или команда. Над командами можно выполнять такие же действия, как и над данными.
Основная память структурно состоит из пронумерованных ячеек; процессору в произвольный момент времени доступна любая ячейка. Отсюда следует возможность давать имена областям памяти, так, чтобы к хранящимся в них значениям можно было бы впоследствии обращаться или менять их в процессе выполнения программы с использованием присвоенных имен.
Предполагает, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности.
Неизменяемость в процессе работы топологии, архитектуры, списка команд.
1.2 Общие сведения по организации и доступу к данным в ЭВМ.
В ЭВМ существует два направления организации двоичной информации:
Далее будут рассмотрены данные, а именно логические, арифметические и текстовые. Они могут быть организованы следующими способами:
1.3 Логический тип данных.
Логический (булев) тип данных тип данных, которые может принимать только два значения: правда (TRUE) или ложь (FALSE). В языках программирования за правду принимают 1, за ложь 0.
Булев тип данных может быть реализован с использованием только одного бита, но обычно используется минимальная адресуемая ячейка памяти (байт) или машинное слово, как эффективная единица работы с регистрами и оперативной памятью.
К этому типу данных применимы следующие операции:
Логическое умножение
AND (И) выполняет поразрядную конъюнкцию (логическое умножение операцию «И») битов двух чисел; устанавливает 1 в тех битах результата, в которых у обоих исходных операндов были 1.
Логическое сложение
OR (ИЛИ) выполняет поразрядную дизъюнкцию (логическое сложение операцию «ИЛИ») битов двух чисел; устанавливает 1 в тех битах результата, в которых была 1 хотя бы у одного из исходных операндов.
Операция отрицания
NOT (HE) команда устанавливает обратное значение битов в числе (операция инверсии).
1.4 Арифметический тип данных.
К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений.
Целые числа
Как правило, целые числа хранятся в компьютере в двоичной форме. Разумеется при вводе мы записываем их в привычной для нас десятичной системе счисления, но компьютер сразу же переводит его в двоичную систему. При этом многие вычислительные системы соблюдают ещё три правила:
Пример. Операция сложения положительного числа и отрицательного числа, представленного в дополнительном коде.
Прямой код числа 5: 0 000 0101
Прямой код числа -7: 1 000 0111
Формирование дополнительного кода числа -7.
Прямой код : 1 000 0111
Инверсия : 1 111 1000
Добавление единицы: 1 111 1001
Операция сложения.
0 000 0101
+ 1 111 1001
--------------
1 111 1110
Проверка результата путем преобразования к прямому коду.
Дополнительный код: 1 111 1110
Вычитание единицы : 1 111 1101
Инверсия : 1 000 0010 (или -210)
Вещественные числа
Вещественные числа хранятся в оперативной памяти в форме с плавающей точкой. Эта форма записи 0.35 * 1012 по-другому называется «научной». Коэффициент при 10 называется мантиссой, степень числа 10 порядком числа. В компьютере мантисса записывается в двоичной форме и применяется степень числа 2, а не 10. При этом хранится только знак числа, мантисса и характеристика числа, число 2 не хранится и никакого умножения на степень двойки не выполняется. Поскольку запись с плавающей точкой неоднозначна, 0.35 * 1012 = 0.035 * 1013 = 3.5 * 1011, договорились выбрать нормализованную запись, при которой целая часть мантиссы равна нулю, а дробная часть начинается с 1.
У нормализованной мантиссы хранятся только двоичные цифры дробной части. Поскольку вследствие нормализации в такой записи старший бит всегда равен 1, то он не хранится. Это так называемый скрытый бит. Скрытый бит всегда автоматически добавляется к мантиссе при извлечении её из оперативной памяти.
Двоичный порядок числа, т. е. степень числа 2, преобразуется в характеристику числа. Характеристика получается прибавлением к порядку числа 127 или 1023 в зависимости от длинны типа. Зачем это нужно? Порядок числа может быть положительным или отрицательным, значит надо где-то хранить знак порядка. Вместо этого решили сдвинуть порядок вправо по числовой оси в неотрицательную область. Характеристика вещественного числа это всегда неотрицательное целое число.
Рис. 3 Представление вещественного числа в двоичных разрядах
Арифметические операции
К арифметическим в языках программирования относятся:
1.5 Текстовый тип данных.
Текстовый тип данных хранится и обрабатывается в ЭВМ в форме цифрового кода. Необходимый набор символов, предусмотренный конкретной ЭВМ, обычно включает в себя:
Кроме того, в состав набора входят управляющие символы, соответствующие определенным функциям.
Текстовый тип вводится с клавиатуры, для символов клавиатуры разработаны специальные коды двоичной информации ASCII (American Standart Code for Information Interchange) американский стандартный код обмена информацией.
Восьмибитовая кодировка символов состоит из двух таблиц кодирования: базовой и расширенной. Базовая таблица построена по стандарту ASCII и одинакова для всех компьютеров. Первые 32 кода (с 0 до 31) содержат управляющие коды, с кода 32 по код 127 размещены коды символов английского алфавита, знаков препинания, цифр, арифметических операций и некоторых вспомогательных символов. Расширенная таблица относится к символам с номерами от 128 до 255 и может отличаться на компьютерах разного типа. В ней содержатся символы псевдографики, символы национального алфавита, специальные знаки.
1.6 Практическая часть.
Для того, чтобы наглядно показать чем отличаются типы данных в ЭВМ, была разработана программа SUM. Данная программа суммирует 2 числа (числа вводит пользователь) тремя способами: арифметическое сложение, логическое сложение (побитовое ИЛИ) и текстовое (выводится строка, состоящая из двух чисел, идущих друг за другом).
Листинг программы SUM
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define CHAR_BIT 8
#include<iostream.h>
#include<stdlib.h>
void printBinary(const unsigned char* data, int size)
{ for(int i = size - 1; i >= 0; --i)
{ unsigned char mask = 1 << (CHAR_BIT - 1);
while(mask)
{ if(data[i] & mask)
printf("1");
else printf("0");
mask >>= 1;
}}}
main()
{
clrscr();
int a,b,c,d;
printf("vvedite checlo a\n"); scanf("%d",&a);
printf("vvedite ceclo b\n"); scanf("%d",&b);
c = a+b;
d = a|b;
printf("\nArifmeticheskaya operaciya: a+b=c=%d");
printf("\nV Binarnoy sisteme schisleniya:");
printf("\n a=");
printBinary((unsigned char*)(&a), sizeof(a));
printf(" b=");
printBinary((unsigned char*)(&b), sizeof(b));
printf("\nLogicheskaya operaciya: a|b=d=)");
printBinary((unsigned char*)(&d), sizeof(d));
printf("\nTekstovaya operaciya: %d%d", a,b);
getch();
}
Вывод программы SUM
Рис. 4 Работа программы SUM
2. Исследование структуры и функциональных возможностей пакетов программ
Пакет прикладных программ набор взаимосвязанных модулей, предназначенных для решения задач определённого класса некоторой предметной области. По смыслу ППП было бы правильнее назвать пакетом модулей вместо устоявшегося термина пакет программ. Отличается от библиотеки тем, что создание библиотеки не ставит целью полностью покрыть нужды предметной области, так как приложение может использовать модули нескольких библиотек. Требования же к пакету программ жёстче: приложение для решения задачи должно использовать только модули пакета, а создание конкретного приложения может быть доступно не программистам.
Пакет прикладных программ отдельная программная разработка, состоящая из комплекса взаимосвязанных программ для решения задач определенного класса конкретной предметной области.
Структура пакета:
∆ = <L, P, C>
L входной язык;
P проблемные программы;
С системная часть.
2.2 Интегрированная среда разработки Borland Turbo C++ 3.0
Входной язык ППП Borland Turbo C++ это проблемные языки программирования высокого уровня (Си и С++). Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры).
В области проблемных программ данного пакета можно выделить:
1. Текстовый редактор исходного текста программы (Editor)
Текстовый редактор
Для создания и редактирования исходного кода программ может быть отдельным приложением, или встроен в интегрированную среду разработки (IDE). На выходе текстового редактора образуется двоично-кодированный текстовый файл исходных текстов. Редакторы исходного кода имеют некоторые возможности, упрощающие и ускоряющие написание и изменение кода, такие как подсветка синтаксиса, автодополнение, проверка правильности расстановки скобок, контекстная помощь по коду и многие другие. Такие редакторы предоставляют удобный способ для запуска компилятора, интерпретатора, отладчика или других программ необходимых в процессе разработки программного обеспечения. Несмотря на то, что многие текстовые редакторы могут быть использованы для редактирования исходного кода, если они не не имеют расширенных возможностей, автоматизирующих или упрощающих ввод и модификацию кода, то они не могут называться «редакторами исходного кода», а просто являются «текстовыми редакторами, которые также могут быть использованы для редактирования исходного кода».
Рис. 5 Текстовый редактор С++ Builder
Компилятор
Транслятор - это программа, обеспечивающая перевод исходной программы пользователя на внутренний язык компьютера. Он работает под управлением ОС, которая и обеспечивает связь его с устройствами и блоками электронно-вычислительных машин.
Компиляция трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, обычно на язык ассемблера). Входной информацией для компилятора (исходный код) является описание алгоритма или программа на проблемно-ориентированном языке, а на выходе компилятора эквивалентное описание алгоритма на машинно-ориентированном языке (объектный код). Процесс компиляции как правило состоит из нескольких этапов: лексического, синтаксического и семантического анализов, генерации промежуточного кода, оптимизации и генерации результирующего машинного кода. Помимо этого, программа как правило зависит от сервисов, предоставляемых операционной системой и сторонними библиотеками (например, файловый ввод-вывод или графический интерфейс), и машинный код программы необходимо связать с этими сервисами. Связывание со статическими библиотеками выполняется редактором связей или компоновщиком (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и динамическими библиотеками связывание выполняется при начале исполнения программы загрузчиком.
Рис. 6 Cхема работы компилятора.
Отладчик
Отладчик программный модуль, предназначенный для поиска ошибок в программах и других видах кода. Отладчик позволяет выполнять пошаговую трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т. д.
Рис.7 Окно ошибок в текстовом редакторе С
Загрузчик
Загрузчик - программа, которая подготавливает объектную программу к выполнению и инициирует ее выполнение. Многие загрузчики обеспечивают, кроме того, перемещение и связывание. В некоторых системах функция связывания отделена от функций перемещения и загрузки. Связывание выполняется специальной программой связывания (или редактором связей), перемещение и загрузка - загрузчиком.
Связывание - это связывание двух или более отдельных оттранслированных программ.
Перемещение - это модификация объектной программы так, чтобы она могла загружаться с адреса, отличного от первоначального.
Функции загрузчика:
Схема:
Рис. 8 Технология отладки программ
3. Защита от несанкционированного доступа.
3.1 Общие положения.
Естественным ходом развития информационных технологий явился принципиальный переход от открытости к защищенности при построении информационных систем. На сегодняшний день большинство программных продуктов, применяющихся для построения информационных систем, обладают встроенными средствами защиты. Это касается не только ОС, но СУБД и других приложений. Например, взамен протокола IP v4.0, изначально созданного для реализации единого открытого сетевого пространства, предлагается версия протокола IPSec, содержащая развитые возможности обеспечения информационной безопасности. Таким образом, наблюдается общая тенденция усиления роли механизмов защиты от несанкционированного доступа в современных информационных и сетевых технологиях.
Данную тенденцию наглядно иллюстрирует развитие ОС MS Windows. Можно четко проследить развитие встроенных в ОС механизмов защиты от Windows 3.1 (где механизмы защиты практически отсутствовали), к Windows NT (где механизмы защиты интегрированы в ядро ОС) и к Windows 2000 (где интеграция захватывает и внешние по отношению к разработчикам технологии защиты, такие как Kerberos, IР-тунелирование и т.д.). То же самое можно сказать и о других семействах ОС. Например, в ОС FreeBSD в каждой из новых версий появляются новые механизмы защиты (firewall, nat). Такое же развитие средств защиты касается и прикладного программного обеспечения (ПО). В СУБД (Oracle) развитие защитных механизмов выражается в шифровании трафика, усложнении авторизации, добавлении разграничения доступа к элементам таблиц и т.п.
3.2 Парольная защита.
Функциональное назначение механизмов парольной защиты
По функциональному назначению парольный вход, как правило, используется для контроля загрузки системы, контроля функционирования и с целью блокировки. С целью контроля загрузки может устанавливаться процедура идентификации и аутентификации пользователя перед началом загрузки системы, например, встроенными средствами BIOS. В этом случае выполнить загрузку системы сможет только санкционированный пользователь. Доступ к заданию режима загрузки контролируется штатными средствами BIOS, где после аутентификации пользователь может установить, откуда загружается система с жесткого диска или с внешнего носителя, а также указать очередность выбора средств загрузки. В качестве контроля доступа к заданию режима загрузки может устанавливаться парольный вход на возможность загрузки в безопасном режиме. Например, для загрузки в режиме Safe Mode для ОС Windows NT/2000/XP пользователю необходимо пройти авторизацию. Загрузиться в аналогичном безопасном режиме в ОС семейства UNIX после авторизации может только пользователь с правами «root».
Для решения задачи контроля функционирования вычислительной системы выделяются:
штатными средствами ОС.
В качестве реакции на несанкционированные действия пользователя системой защиты может устанавливаться блокировка некоторых функций: загрузки системы, доступа в систему, учетных записей пользователя (идентификаторов), запуска определенных приложений. Для снятия блокировки необходима авторизация администратора безопасности или ответственного лица.
Способы ввода пароля.
В этом разделе мы рассмотрим основные известные на сегодняшний день способы ввода пароля. Все они представлены на рис. 13.
Рис. 13 Способы ввода пароля.
Наиболее очевидный способ ввода пароля, который реализован практически во всех ОС, состоит в вводе пароля с клавиатуры. Недостатком данного способа является возможность визуального съема пароля злоумышленником. При этом в меньшей степени опасность представляет набор пароля пользователем на клавиатуре этому можно противодействовать организационными мерами. В большей степени угроза состоит в том, что при задании сложного пароля пользователь стремится его куда-нибудь записать, чтобы не забыть.
В качестве противодействия угрозе визуального съема пароля могут использоваться внешние носители информации. При этом могут использоваться как стандартные средства ввода информации (например, дискета), так и средства, предполагающие подключение специальных средств ввода парольной информации всевозможные электронные ключи, «таблетки» и т.д. На этих носителях записывается пароль, который считывается системой при аутентификации пользователя. Здесь может задаваться достаточно большая длина пароля без угрозы его визуального съема. Применение для ввода пароля стандартного или специального носителя с точки зрения обеспечиваемого уровня безопасности практически равноценно. Вопрос выбора носителя определяется его ценой, долговечностью, удобством хранения.
Недостатком применения внешних носителей информации для ввода пароля является потенциальная угроза его хищения злоумышленником.
Для противодействия хищению злоумышленником носителя информации с паролем могут рассматриваться следующие альтернативные способы защиты:
Способы усиления пароля
Рис. 14 Способы усиления пароля
3.3 Взлом парольной защиты
1. Узнавание пароля. Часто пользователи записывают пароли на листках, в блокнотах, тетрадях, доступных неавторизованным лицам. Доступность записанных паролей, их несекретность, является одной из важных «дыр» в парольной защите. Часто пароли доступа могут быть получены путем их выведывания, обычно с использованием тех или иных методов психологии или социальной инженерии. Разновидностью этого метода является выведывание информации, которая могла быть использована пользователем в подсказках, иногда предусматриваемых на случай, если пароль забыт. Такие подсказки предлагаются, например, почтовыми серверами при регистрации электронного почтового ящика и, обычно, представляются предложением ответить на некоторый контрольный вопрос, такой как «Ваш рост», «Ваше любимое блюдо», «номер Вашего паспорта», «девичья фамилия матери» и т. п. Для желающего получить доступ к защищенному паролем ресурсу, как правило, значительно легче узнать информацию, необходимую для правильного ответа на подобные вопросы, чем сам пароль.
2. Угадывание пароля. Во многих случаях в качестве пароля используются имена, фамилии, номера телефонов и другие личные данные пользователя или его родственников и друзей. Такая информация может быть известна злоумышленникам, что позволяет использовать ее для угадывания и подбора пароля. В наиболее примитивном случае пароль выбирается пользователем таким же как учетное имя (логин).
3. Словарная атака. Наиболее распространенным вариантом при выборе пароля является задание в качестве пароля некоторого слова, что, в первую очередь, обусловлено легкостью запоминания такого пароля. В этом случае пароль может быть выявлен при помощи специальных программ-взломщиков паролей, реализующих, так называемую, словарную атаку, состоящую в последовательном переборе всех слов, содержащихся в электронном словаре, подключаемом к такой программе.
4. Метод прямого перебора (brute-force attack метод грубой силы, «лобовая атака»). Этот метод предполагает прямой перебор всех возможных комбинаций всех допустимых в пароле символов. Перебор символов осуществляется до тех пор, пока не будет найдена нужная комбинация.
Описанные выше способы преодоление парольной защиты путем узнавания или угадывания пароля с перебором ограниченного количества сочетаний букв, цифр и символов, вводимых с клавиатуры, может привести к успеху лишь в том случае, когда пользователь игнорирует элементарные правила выбора пароля. Словарная атака эффективна лишь при игнорировании пользователем одного из основных правил выбора пароля не использовать в качестве пароля семантически определенное слово. Если выбран нетривиальный и достаточно длинный пароль, его успешный подбор возможен только методом прямого перебора с использованием специальных программ-взломщиков. Программная реализация метода автоматического перебора позволяет взломать любой пароль, но для сложных паролей может потребоваться значительное время, особенно учитывая возможное переключение верхнего и нижнего регистров и раскладки клавиатуры.
4.4 Программно-аппаратная защита.
Подход к реализации программно-аппаратного контроля активности системы защиты проиллюстрирован рис. 15.
Рис. 15 Схема реализации программно-аппаратного контроля активности системы защиты
Контроль(мониторинг активности) осуществляется следующим образом.
Программная компонента содержит таймер и датчик активности системы защиты. Датчик активности с задаваемым таймером периодом выдает парольное слово на определенный порт (в плату). Получая данный сигнал, плата определяет активность ПО системы защиты. Если за заданный интервал времени плата не получит парольное слово (сигнал активности), то это будет означать перевод ПО системы защиты в пассивное состояние. В ответ на это плата выработает либо сигнал «Reset», который осуществит перезагрузку системы, либо другую заданную реакцию.
Внешние устройства в исходном состоянии отключены. Подключаются они платой только после получения ею первого сигнала (парольного слова) от программной компоненты.
С целью предотвращения эмуляции ПО системы защиты вводится парольное слово. При N-кратной неверной передаче пароля на плату, плата считает, что система защиты не выполняет своих функций и отправляет компьютер на перезагрузку.
Таким образом, преимуществом данного подхода является следующее:
Таким образом, метод защиты от несанкционированного доступа с помощью платы является более надёжным, чем метод защиты с помощью пароля.
PAGE 2