Материал: Информационные технологии в профессиональной деятельности. Программирование на языке высокого уровня Pascal 7.0

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Вирус - это специальная самостоятельная программа, способная к самостоятельному распространению, размножению и внедрению своего кода в другие программы путем модификации данных с целью бесследного выполнения вредоносного кода

Вирусы характеризуются тем, что они способны самостоятельно размножаться и вмешиваться в вычислительный процесс, получая возможность управления этим процессом.

То есть, если Ваша программно-аппаратная защита информации пропустила подобную угрозу, то вирус, получив доступ к управлению информационной системой, способен автономно производить собственные вычисления и операции над хранящейся в системе конфиденциальной информацией.

Наличие паразитарных свойств у вирусов позволяет им самостоятельно существовать в сетях сколь угодно долго до их полного уничтожения, но проблема обнаружения и выявления наличия вируса в системе до сих пор не может носить тотальный характер, и ни одна служба информационной безопасности не может гарантировать 100-процентную защиту от вирусов, тем более, что информационная безопасность государства и любой другой способ защиты информации контролируется людьми.

Червь - программа, передающая свое тело или его части по сети. Не оставляет копий на магнитных носителях и использует все возможные механизмы для передачи себя по сети и заражения атакуемого компьютера. Рекомендацией по защите информации в данном случае является внедрение большего числа способов защиты информации, повышение качества программной защиты информации, внедрение аппаратной защиты информации, повышение качества технических средств защиты информации и в целом развитие комплексной защиты информации информационной системы.

Перехватчик паролей - программный комплекс для воровства паролей и учетных данных в процессе обращения пользователей к терминалам аутентификации информационной системы.

Программа не пытается обойти службу информационной безопасности напрямую, а лишь совершает попытки завладеть учетными данными, позволяющими, не вызывая никаких подозрений совершенно санкционировано проникнуть в информационную систему, минуя службу информационной безопасности, которая ничего не заподозрит. Обычно программа инициирует ошибку при аутентификации, и пользователь, думая, что ошибся при вводе пароля повторяет ввод учетных данных и входит в систему, однако, теперь эти данные становятся известны владельцу перехватчика паролей, и дальнейшее использование старых учетных данных небезопасно.

Важно понимать, что большинство краж данных происходят не благодаря хитроумным способам, а из-за небрежности и невнимательности, поэтому понятие информационной безопасности включает в себя: информационную безопасность (лекции), аудит информационной безопасности, оценка информационной безопасности, информационная безопасность государства, экономическая информационная безопасность и любые традиционные и инновационные средства защиты информации.

1.5 Криптография


Криптография - это наука, которая изучает и описывает модель информационной безопасности данных. Криптография открывает решения многих проблем информационной безопасности сети: аутентификация, конфиденциальность, целостность и контроль взаимодействующих участников.

Термин "Шифрование" означает преобразование данных в форму, не читабельную для человека и программных комплексов без ключа шифрования-расшифровки. Криптографические методы защиты информации дают средства информационной безопасности, поэтому она является частью концепции информационной безопасности.

Криптографическая защита информации (конфиденциальность)

Цели защиты информации в итоге сводятся к обеспечению конфиденциальности информации и защите информации в компьютерных системах в процессе передачи информации по сети между пользователями системы.

Защита конфиденциальной информации, основанная на криптографической защите информации, шифрует данные при помощи семейства обратимых преобразований, каждое из которых описывается параметром, именуемым "ключом" и порядком, определяющим очередность применения каждого преобразования.

Важнейшим компонентом криптографического метода защиты информации является ключ, который отвечает за выбор преобразования и порядок его выполнения. Ключ - это некоторая последовательность символов, настраивающая шифрующий и дешифрующий алгоритм системы криптографической защиты информации. Каждое такое преобразование однозначно определяется ключом, который определяет криптографический алгоритм, обеспечивающий защиту информации и информационную безопасность информационной системы.

Один и тот же алгоритм криптографической защиты информации может работать в разных режимах, каждый из которых обладает определенными преимуществами и недостатками, влияющими на надежность информационной безопасности России и средства информационной безопасности.

Основы информационной безопасности криптографии (Целостность данных)

Защита информации в локальных сетях и технологии защиты информации наряду с конфиденциальностью обязаны обеспечивать и целостность хранения информации. То есть, защита информации в локальных сетях должна передавать данные таким образом, чтобы данные сохраняли неизменность в процессе передачи и хранения.

Для того чтобы информационная безопасность информации обеспечивала целостность хранения и передачи данных необходима разработка инструментов, обнаруживающих любые искажения исходных данных, для чего к исходной информации придается избыточность.

Информационная безопасность в России с криптографией решает вопрос целостности путем добавления некой контрольной суммы или проверочной комбинации для вычисления целостности данных. Таким образом, снова модель информационной безопасности является криптографической - зависящей от ключа. По оценке информационной безопасности, основанной на криптографии, зависимость возможности прочтения данных от секретного ключа является наиболее надежным инструментом и даже используется в системах информационной безопасности государства.

Как правило, аудит информационной безопасности предприятия, например, информационной безопасности банков, обращает особое внимание на вероятность успешно навязывать искаженную информацию, а криптографическая защита информации позволяет свести эту вероятность к ничтожно малому уровню. Подобная служба информационной безопасности данную вероятность называет мерой имитостойкости шифра, или способностью зашифрованных данных противостоять атаке взломщика.

1.6 Экранирование


Экран (фаерволл, брэндмауер) - это средство разграничения доступа клиентов из одного множества к серверам из другого множества. Экран выполняет свои функции, контролируя все информационные потоки между двумя множествами систем.

В простейшем случае экран состоит из двух механизмов, один из которых ограничивает перемещение данных, а второй, наоборот, ему способствует. В более общем случае экран или полупроницаемую оболочку удобно представлять себе, как последовательность фильтров. Каждый из них может задержать данные, а может и сразу "перебросить" их "на другую сторону". Кроме того, допускаются передача порции данных на следующий фильтр для продолжения анализа или обработка данных от имени адресата и возврат результата отправителю.

Помимо функций разграничения доступа экраны осуществляют также протоколирование информационных обменов.

Обычно экран не является симметричным, для него определены понятия "внутри" и "снаружи". При этом задача экранирования формулируется как защита внутренней области от потенциально враждебной внешней. Так, межсетевые экраны устанавливают для защиты локальной сети организации, имеющей выход в открытую среду, подобную Internet. Другой пример экрана - устройство защиты порта, контролирующее доступ к коммуникационному порту компьютера до и после независимо от всех прочих системных защитных средств.

Экранирование позволяет поддерживать доступность сервисов внутренней области, уменьшая или вообще ликвидируя нагрузку, индуцированную внешней активностью. Уменьшается уязвимость внутренних сервисов безопасности, поскольку первоначально сторонний злоумышленник должен преодолеть экран, где защитные механизмы сконфигурированы особенно тщательно и жестко. Кроме того, экранирующая система, в отличие от универсальной, может быть устроена более простым и, следовательно, более безопасным образом.

Экранирование дает возможность контролировать также информационные потоки, направленные во внешнюю область, что способствует поддержанию режима конфиденциальности.

Важным понятием экранирования является зона риска, определяемая как множество систем, которые становятся доступными злоумышленнику после преодоления экрана или какого-либо из его компонентов. Для повышения надежности защиты, экран реализуют как совокупность элементов, так что "взлом" одного из них еще не открывает доступ ко всей внутренней сети. Экранирование и с точки зрения сочетания с другими сервисами безопасности, и с точки зрения внутренней организации использует идею многоуровневой защиты, за счет чего внутренняя сеть оказывается в пределах зоны риска только в случае преодоления злоумышленником нескольких, по-разному организованных защитных рубежей. Экранирование может использоваться как сервис безопасности не только в сетевой, но и в любой другой среде, где происходит обмен сообщениями.

Экранирование - один из наиболее действенных способов защиты информации, но в бочке мёда обязательно найдётся ложка дёгтя, хотя я бы даже сказал 50 ложек дёгтя. Дело в том, что большинство межсетевых экранов требуют для своей полноценной и корректной работы административных прав. А ведь очень много экранов имеют уязвимости. Воспользовавшись одной из таких уязвимостей хакер без труда получит права, под которыми работает экран и соответственно станет суперпользователем в данной системе.

В более-менее развитых сетях под экран выделяют отдельный компьютер, который в свою очередь может выполнять роль не только межсетевого фильтра, но и маршрутизатора.

Часто экран представлен в виде программного пакета, но также экраны бывают представлены и в аппаратном виде. Такие фаерволлы справляются со своими функциями куда лучше своих программных собратьев. Они могут обрабатывать намного больше информации (следственно на них тяжело вызвать ошибку отказа в обслуживании), а также имеют меньше уязвимостей и больше возможностей. Соответственно, они стоят гораздо дороже брэндмауэров, реализуемых на программном уровне.

2. Программирование, компиляция и выполнение Turbo Pascal-программ

2.1 Язык программирования Pascal


Язык программирования Turbo Pascal является развитием языка Pascal, разработанного Никлаусом Виртом в 1969-71 годах, для обучения структурному программированию. Фирма Borland International, существенно расширила алгоритмические средства языка, создала удобную среду программирования и высокоскоростной компилятор.Pascal разрабатывался под операционную систему ДОС (Дисковая Операционная Система), поэтому он работает только в текстовом режиме. Среда разработки Turbo Pascal представляет из себя текстовый редактор и средства отладки и компиляции программы. Для переключения редактора из оконного в полноэкранный режим и обратно следует нажать одновременно клавиши Alt + Enter.

Рис. 1 - Вид окна Turbo Pascal

Программа на Pascal пишется в текстовом редакторе по определённым правилам. Текст программы проверяется редактором кода. Зарезервированные слова языка и определённые синтаксические конструкции выделяются цветом, что создаёт определённые удобства.

2.2 Линейный алгоритм. Типы числовых данных. Функции ввода - вывода


Простые программы пишутся последовательно, шаг за шагом до тех пор, пока не будет получено решение задачи. Такая линейная последовательность в программировании называется линейным алгоритмом. Рассмотрим программу простого калькулятора. Пусть нам нужно сложить, вычесть, умножить и разделить два числа X и Y. В большинстве языков программирования принято объявлять участвующие в программе переменные. Это нужно для того, чтобы зарезервировать фрагмент оперативной памяти компьютера для хранения объявленных данных. На рисунке показана программа калькулятора:

Рис. 2 - Программа калькулятора

Рассмотрим построчно, что означают введённые в редакторе команды:

·        uses crt; - Выражение: Использовать модуль CRT. В начале программы, обычно, пишется директива uses и затем, через запятую, перечисляются модули, содержащие набор необходимых функций для работы программы. CRT - модуль поддержки монитора и клавиатуры. (Важное замечание. Регистр букв текста программы не имеет значения. Так, например, можно написать uses crt; или Uses CRT; - программа будет работать и не воспримет это как ошибку). Любое выражение на Pascal должно заканчиваться знаком "точка с запятой".

·        var - (сокращённое от variable - переменная) объявления блока переменных. После команды var точка с запятой не ставится.

·        x, y, z1, z2, z3, z4: real; - перечисляем через запятую переменные необходимые для решения задачи; x и y - вводимые данные для вычислений; z1. z4 - переменные для хранения результатов вычислений. Двоеточие и real означает, что все перечисленные переменные объявлены как тип данных - число с плавающей запятой.

При программировании используются различные типы данных. Ниже представлены числовые типы данных:

Вещественные типы

Наименование

Диапазон значений

real

10-39.1038

double

10-324.10308

Целые типы

byte

0.255

Word

0.65535

Integer

-32768. +32767

Longint

-2147483648.2147483647


·        Begin - собственно начало программы. Оператор begin называется операторной открывающейся скобкой. После оператора begin точка с запятой не ставится.

·        Clrscr; - процедура очистки экрана. Эта процедура встроена в модуль CRT. В фигурных скобках {clear screen} написан комментарий к программе.

·        Write ('Wwedite X: '); - функция write выводит на экран сообщение. Выводимое сообщение является аргументом функции write. Если сообщение текстовое, то оно заключается в одинарные кавычки (апострофы). К сожалению Turbo Pascal не поддерживает символы кириллицы, поэтому сообщение <Введите Х: > пришлось написать латинским шрифтом.

·        Readln (x); - функция readln получает данные с клавиатуры вводимые пользователем. При появлении этой функции в исполняемой программе, действие программы приостанавливается и она ожидает ввода данных до нажатия клавиши Enter. Сама функция readln состоит из двух частей: read - собственно чтение с клавиатуры (может использоваться самостоятельно); окончание ln - означает (line new) новая строка, после выполнения чтения с клавиатуры переводит курсор на новую строку.

Следующие две строки в точности повторяют две предыдущие, только выводится сообщение для ввода переменной Y и чтение этой переменной с клавиатуры.

·        z1: = x + y; - вычисляем сумму аргументов х и у. Знак: = означает переменной z1 присвоить значение суммы х и у.

·        z2: = x - y; - вычисляем разность аргументов х и у.

·        z3: = x + y; - вычисляем произведение аргументов х и у.

·        z4: = x + y; - вычисляем частное от деления аргументов х и у.

·        End. - оператор конца программы. После end (операторная закрывающаяся скобка, парная оператору begin) ставится точка. Точка является признаком конца файла.

Что бы убедиться в правильности написания программы следует нажать клавишу F9. Произойдёт компиляция программы и проверка синтаксиса. Если код написан верно, то увидим следующее сообщение:

Рис. 3 - Проверка

Если компилятор обнаружит ошибку, то появится соответствующее сообщение, а курсор будет установлен в строку с ошибкой.

Рис. 4 - Ошибка

В нашем случае строка z4 = x / y; - должно быть z4: = x / y;

Для запуска программы на исполнение, следует нажать комбинацию клавиш Ctrl и F9. В программе следует ввести значение х и нажать Enter, затем ввести значение у и опять нажать Enter. Компьютер произведёт необходимые вычисления и выведет значения на экран, но мы, скорее всего, ничего не увидим, потому что выполнение программы закончится и произойдёт возврат в редактор. Для просмотра полученных результатов следует нажать одновременно Alt и F5.

Рис. 5 - Просмотр результатов

То, что мы видим на экране не совсем удобно для понимания. Лучше будет, если результаты отображать не экспоненциальном виде, а в нормальном, десятичном.

Так же, пользователь программы вынужден догадываться в какой строке результатов сложение, в какой умножение и так далее. Для исправления ситуации изменим строки вывода результатов на экран:

writeln ('X + Y = ', z1: 0: 4);('X - Y = ', z2: 0: 4);('X * Y = ', z3: 0: 4);('X / Y = ', z4: 0: 4);

Рассмотрим любую из изменённых строк, например writeln ('X / Y = ', z4: 0: 4); Функция вывода writeln в качестве аргумента (в нашем случае) принимает два значения. Аргументы друг от друга отделяются запятой.

Первое значение: 'X / Y = ' - надпись которая будет выводиться на экран, она должна быть заключена в апострофы. Второе значение - число z4. Для придания числу десятичной формы отображения, оно отформатировано по следующей схеме: двоеточие - число знаков до запятой, двоеточие - число знаков после запятой. Если число знаков до запятой неизвестно, то лучше поставить ноль.

Усовершенствованная программа принимает удобочитаемый вид:

Рис. 6 - Вид усовершенствованной программы

До оператора end можно ввести строку readln;, тогда программа не будет завершаться сразу после выполнения, а будет ожидать нажатия клавиши Enter. Для сохранения готовой программы следует нажать F2 и сохранить файл с именем, например, calc. pas.

 

2.3 Логические операторы. Символьные переменные


При выполнении написанной программы могут возникнуть непредвиденные обстоятельства, а именно, если пользователь программы вторым числом введёт значение 0 (нуль). Как известно, деление на 0 запрещено и при выполнении программы компьютер выдаст такое сообщение:

Рис. 7 - Деление на 0 запрещено

Что бы избежать таких ситуаций, программист должен предусмотреть в программе некоторую защиту.

Самое простое решение, в нашем случае, при значении Y равном нулю, перейти к началу программы, что бы пользователь ввёл другие значения. Перечислим те действия, которые должна выполнить программа:

если Y равно 0 то перейти к метке в начале программы, иначе (Y не равен 0) выполнить математические действия.

На языке Pascal это будет выглядеть так: if y = 0 then goto label1 else.

Эта запись означает: (if) если y = 0 (y = 0 - логическое выражение) then (то) goto (перейти к) label1 (имя метки) else (иначе). Оператор else можно не использовать если дальнейшее выполнение программы подразумевается при невыполнении условия логического выражения. Метка label1 придуманное имя метки, поэтому мы должны его объявить до начала программы, сразу за разделом объявления переменных. Сама метка устанавливается в том месте программы, куда должен осуществиться переход. После имени метки ставится знак двоеточие. Изменённая таким образом программа показана на рисунке:

Рис. 8 - Метка

Такая программа имеет более "товарный" вид и свойства.

Рассмотрим подробно какие конструкции можно создавать на языке Pascal с использованием логических операторов. В общем виде логическая запись выглядит так:(условие) then (действие1) else (действие2);

или if (условие) then (действие);

Сначала рассмотрим запись условий:

Условие.

Описание

A = B

А равно В

A <> B

А не равно В

A <= B

А меньше либо равно В

A >= B

А больше либо равно В

Логические связки условий

OR

Логическое ИЛИ

AND

Логическое И

NOT

Логическое НЕТ (Отрицание)


Логические связки записываются между логическими условиями, сами условия берутся в скобки, например: if (a = b) and (z <= 0) then.

Следует иметь в виду что при выполнении условия, после оператора then может быть только одно действие. Если действий по условию программы должно быть больше, то все действия должны быть взяты в операторные скобки begin. end.

Например:a = b then begin('Error! ');: = 22;label1; else.

Аналогичным образом несколько действий записывается после оператора else.

Написанная нами программа "калькулятор" имеет один существенный недостаток, если нужно произвести несколько вычислений, приходится перезапускать программу на выполнение. Изменим нашу программу так, чтобы она завершалась с согласия пользователя. Пользователю следует предложить нажать клавишу Y для продолжения работы с программой, или любую другую клавишу для завершения работы.

Заменим последний в программе оператор readln; на такие строки:('Repeat - Y / End - other key'); {Выводим сообщение для пользователя}(sym); {Считываем символ с клавиатуры}(sym = 'Y') or (sym = 'y') then goto label1; {Если введён символ Y или y, то переходим к началу программы}

В нашей программе появилась новая переменная - sym (вымышленное имя, которое придумываем мы сами. Имя должно начинаться с буквы, а затем могут следовать цифры или буквы). Эта переменная имеет тип одиночного символа, и мы должны её объявить в разделе переменных. Символьные переменные имеют тип char. Символьные переменные при использовании в программе следует заключать в апострофы.

Добавим эту переменную в разделе var:: char;

....

Запустим программу на исполнение, и убедимся, что программа написана правильно:

Рис. 9 - Проверка программы

В паскале есть ещё один тип символьных переменных, это тип string - строка состоящая максимум из 255 символов, но об этом в следующих разделах.

Разрабатывая нашу программу, мы нарушили один из основных принципов структурного программирования - в программе не должно быть переходов из одной части программы в другую. Поэтому при структурном программировании нужно стараться не использовать оператор перехода goto.

3. Практическая часть


3.1 Задание на практическую часть


Задана фраза - последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать все слова, предварительно преобразовав каждое из них по следующему правилу: удалить из слова все последующие вхождения первой буквы. Программа должна читать текст из файла "input. txt" и выводить последовательность в файл "output. txt".

3.2 Текст программы


program task;crt;slova: array [1.30] of string;, output: text;: string;, j, n: integer;;(input, 'input. txt');(output, 'output. txt');(input);not eof (input) do readln (input, s);(input);('Obrabotka texta');('Text: '+s);: =0;i: =1 to length (s) do(s [i] =' ') thens [i+1] =' ' do delete (s, i+1,1);: =n+1;;s [length (s)] ='. ' then n: =n+1;('Udalenie lishnih probelov: '+s);: =1;i: =1 to length (s) - 1 dos [i] =' ' then j: =j+1slova [j]: =slova [j] +s [i];: ='';i: =1 to n doj: =2 to length (slova [i]) doslova [i] [j] =slova [i] [1] then delete (slova [i],j,1);: =s+slova [i] +' ';('Resultat: '+s);(output);(output, 'Resultat: '+s);('Nazhmite enter');;(output);

end.

Рис. 10 - Готовая программа, написанная в ABC Pascal

Рис. 11 - Результат выполнения программы

3.3 Блок-схема программы



Заключение


В заключении хотелось бы подчеркнуть, что никакие аппаратные, программные и любые другие решения не смогут гарантировать абсолютную надежность и безопасность данных в компьютерных сетях.

В вычислительной технике понятие безопасности является весьма широким. Оно подразумевает и надежность работы компьютера, и сохранность ценных данных, и защиту информации от внесения в нее изменений неуполномоченными лицами, и сохранение тайны переписки в электронной связи. Разумеется, во всех цивилизованных странах на безопасности граждан стоят законы, но в вычислительной технике правоприменительная практика пока не развита, а законотворческий процесс не успевает за развитием технологий, и надежность работы компьютерных систем во многом опирается на меры самозащиты.

Итак, можно привести массу фактов, свидетельствующих о том, что угроза информационному ресурсу возрастает с каждым днем, подвергая в панику ответственных лиц в банках, на предприятиях и в компаниях во всем мире.

Список литературы


1.      Фролов А. В, Фролов Г. В Осторожно: компьютерные вирусы. М. 2003.

2.      Информатика под, ред. Черноскутовой И.А. Учебное пособие 2005-272 с.

.        Терехов А. В, Чернышев А. В, Чернышев В.Н. Учебное пособие ТГТУ 2007-128 с.

.        Информатика под ред. Хубаева Г.Н. Учебное пособие 2010-288 с.

5.      Информационные технологии. Классификация ИТ. Стандарты по ИТ [электронные ресурсы] / http://www.tspu. tula.ru/ <http://ugned.ru/>.

.        Фаронов В.В. Turbo Pascal 7.0.М. "Нолидж", 1999

.        Немнюгин С.А. Turbo PASCAL С-П Изд-во Питер 2000.