Раздел № 3 Программные средства реализации информационных процессов. Классификация, обеспечения. виды и характеристики Классификация языков программного программирования. Искусственный интеллект, базы знаний, экспертные системы. Инструментальное программное обеспечение – это пакет программ, предназначенных для автоматизации создания, редактирования, отладки, тестирования различных программных продуктов. Инструментальное программное обеспечение включает: - компиляторы с языков высокого уровня (ЯВУ) - интерпретаторы с ЯВУ - библиотеки стандартных программ - средства редактирования, отладки и тестирования - прикладные утилиты Трансляция программы (компиляция и интерпретация) С помощью языка программирования создается не готовая программа, а только ее текст, описывающий разработанный алгоритм. Текст алгоритма задачи, записанный на любом языке программирования называется исходным модулем. Специальная программа - транслятор переводит исходный модуль в последовательность команд ЭВМ. Имеются два основных типа таких программ - трансляторов: компиляторы и интерпретаторы. Компилятор транслирует весь текст исходного модуля в машинный код, который называется объектным модулем за один непрерывный процесс. Компилятор выдает промежуточный объектный код - двоичный файл с расширением .OBJ. Объектный модуль еще не может выполняться, т.к. он может содержать неразрешенные ссылки на другие модули или программы, а также перемещаемый код. К нему еще нужно добавить машинный код подпрограмм, реализующий стандартные функции (например, математические). Эти функции содержатся в стандартных библиотеках файлах с расширением .LIB. Поэтому объектный модуль обрабатывается 1 специальной программой – редактором связей. Редактор связи разрешает все внешние ссылки и создает загрузочный модуль. Далее начинает работу программа Загрузчик, она определяет для загрузочного модуля абсолютные адреса в ОП. Только после всех этих действий программ может выполняться. Часто функции редактора и загрузчика выполняет одна программа – редактирующий загрузчик. Итак, объектный код обрабатывается специальной программой - редактором связей или сборщиком, который выполняет связывание объектных модулей и машинного кода стандартных функций, находя их в стандартных библиотеках, и формирует на выходе работоспособное приложение - исполнимый код. Итак, чтобы получить работающую программу, надо текст программы, называемый исходным модулем, перевести в объектный модуль, пригодный для последующего редактирования и выполнения на ЭВМ. Рассмотрим подробнее работу программы-компилятора Программа-компилятор автоматически переводит исходный текст в машинный код, который потом используется отдельно от исходного текста. В общем случае работа компилятора состоит из 4-ч фаз. 1. Лексический анализ. На основе исходного модуля идентифицируются различные символы и классифицируются по категориям: ключевые слова, числовые значения, идентификаторы переменных и т.д. 2. Синтаксический анализ. При этом определяются синтаксические отношения ключевых слов и строится структурный каркас программы. 3. Генерация объектного кода, который соответствует структуре программы. 4. Оптимизация объектного модуля с целью повышения его эффективности (по объему и быстродействию). Компиляторы делают исходную программу компактной, эффективной, работающей в сотни раз быстрее программы, выполненной с помощью интерпретатора. 2 Исполнимый код - это законченная программа, которую можно запустить на любом компьютере, где установлена ОС, для которой эта программа создавалась. Итоговый файл имеет расширение .EXE или .COM. Программа-интерпретатор сразу выполняет команды языка, указанные в тексте программы. Интерпретатор берет очередной оператор языка из текста программы, анализирует его и если все правильно, сразу же исполняет его. Только после успешного выполнения текущего оператора интерпретатор перейдет к следующему оператору. При выполнении одного оператора многократно, интерпретатор каждый раз работает с ним так, словно встретил этот оператор впервые. Программы с большим объемом повторяющихся операторов будут работать медленно. Интерпретатор удобен при изучении инструментов программирования, т.к. позволяет понять принцип работы отдельного оператора языка. В отличии от компилятора интерпретатор не создает объектный код, а выполняет исходный модуль программы в режиме «оператор за оператором», по ходу работы он превращает каждый оператор ЯВУ в машинные команды. ЯЗЫКИ ПРОГРАММИРОВАНИЯ Под языком программирования будем понимать алфавит, систему записи и набор правил, определяющих синтаксис правильной программы. Ядро ИПО составляют ЯВУ (языки высокого уровня), позволяющие описывать алгоритмы решаемых пользователем задач. Существуют следующие уровни языков программирования. 1.Машинные языки. 2. Машинно-ориентированные языки. 3. Алгоритмические языки 4. Языки 4-го поколения. 3 Поколения языков программирования Поколения программных средств Языки и системы Характерные черты программных ПС программирования средств Машинные Машинно-зависимые, быстрые, 1-е сложные для освоения, требуют хорошего знания архитертуры ЭВМ Ассемблеры, макроассемблеры 2-е Более удобные для использования, быстрые 3-е Языки высокого уровня ЯВУ Мобильные, более человеко- (Fortran, Basic, Pascal, PL/1, C) ориетированные, проще в освоении, более медленные 4-е Непроцедурные, генераторы Ориентированы на отчетов, объектно- непрофессионального ориентированные, языки запросов, пользователя; ориентированы на параллельные ЭВМ с параллельной архитектурой 5- Языки искусственного интеллекта Повышение интеллектуального ИИ, экспертных систем и баз уровня ЭВМ и интерфейса с ними знаний, естественные языки Уровни языков программирования Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его способности, то он называется языком программирования низкого уровня. В данном случае «низкий уровень» не значит «плохой». Имеется ввиду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода, но не в виде чисел, а с помощью символьных условных обозначений, называемых мнемониками. Однозначное преобразование одной машинной инструкции в одну команду ассемблера называется транслитерацией. Так как наборы инструкций для каждой модели процессора отличаются, конкретной компьютерной 4 архитектуре соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде. С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется очень хорошо понимать устройство компьютера, затрудняется отладка больших приложений, а результирующая программа не может быть перенесена на компьютер с другим типом процессора. Подобные языки обычно применяют для написания небольших системных приложений, драйверов устройств, модулей стыков с нестандартным оборудованием, когда важнейшими требованиями становятся компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. В некоторых областях, например в машинной графике, на языке ассемблера пишутся библиотеки, эффективно реализующие требующие интенсивных вычислений алгоритмы обработки изображений. Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше. Ассемблеры - языки первых поколений - до сих пор используются системными программистами для разработки ПО, непосредственно управляющими аппаратными ресурсами ЭВМ. Первые три поколения ЯП требуют сложного синтаксиса написания программ (необходимы точные правила и конструкции) написания программ. Языки 4-го поколения тоже требуют соблюдения синтаксиса, но он легче в освоении. Естественные ЯП, разрабатываемые в 5-м поколении, позволят непрофессионалу решать задачи, 5 используя предложения языка, близкого к естественному, не требующего соблюдения особого синтаксиса. В настоящее время ЯВУ 3-го поколения составляют основу ПО всех классов ЭВМ, исключая ВС нетрадиционной параллельной архитектуры, а также широко используются ЯВУ 4-го поколения. Этапы решения задач на ЭВМ Основными этапами решения задач на ЭВМ являются: 1. Постановка задачи 2. Выбор метода решения. 3. Составление алгоритма. 4. Программирование. 5. Отладка и тестирование. 6. Анализ результатов. После того, как поставлена конкретная задача и выбран метод ее решения, приступают к составлению алгоритма, по которому и будет решаться задача. Алгоритм Алгоритм - это точное и простое описание последовательности действий для решения данной задачи. Алгоритм содержит несколько шагов, которые должны выполняться в определенной последовательности. Каждый шаг алгоритма может состоять из одной или нескольких простых операций. Важным свойством алгоритма является то, что результат его выполнения не должен зависеть от исполнителя. Свойства алгоритмов Понятность – исполнитель алгоритма должен знать, как алгоритм выполнить. Дискретность – алгоритм должен состоять из последовательности выполнения отдельных простых шагов. Определенность – каждое правило алгоритма должно быть четким, определенным, не оставлять места для произвола. 6 Результативность – алгоритм должен приводить к решению задачи за конечное число шагов. Массовость – алгоритм разрабатывается в общем виде и его можно применить к некоторому классу задач. Блок-схемы Для графической записи алгоритмов используют блок - схемы. На блок - схеме каждый шаг алгоритма обозначается специальной геометрической фигурой, а внутри нее записываются простые операции. начало конец присвоение значений ввод/вывод данных и вычисления вызов проверка условия Направления выполнения алгоритма подпрограммы обозначаются стрелками. Существуют несколько типов алгоритмов. Линейный алгоритм. Алгоритм называется линейным, если он содержит N шагов, и все шаги выполняются последовательно друг за другом от начала до конца. Разветвляющийся алгоритм. Алгоритм называется разветвляющимся, если последовательность выполнения шагов алгоритма изменяется в зависимости от некоторых условий. Условие - это логическое выражения, которое может принимать два значения: "да" - если условие верно, "нет" - если условие неверно. Пример: A>0; X<A+B; Z=5 Циклический алгоритм. Алгоритм называется циклическим, если определенная последовательность шагов выполняется несколько раз в зависимости от заданной величины. Эта величина называется параметром 7 цикла. В любом циклическом алгоритме, для того, чтобы он мог закончиться, должен быть параметр цикла. Цикл заканчивается, когда параметр принимает определенное значение. Проверка значения параметра выполняется в начале цикла (проверка с предусловием) или в конце цикла (проверка с постусловием). Часто встречаются ситуации, когда один цикл находится внутри другого цикла, тогда говорят о вложенности циклов. В случаях, когда один цикл вложен в другой, каждый из циклов должен иметь собственную переменную для обозначения параметра цикла. Алгоритм следует разрабатывать так, чтобы сначала изменялась от начального до конечного значения внутренняя переменная цикла. Итак, когда выполнены следующие шаги: поставлена задача, выбран метод решения и составлен алгоритм, этот алгоритм записывается на выбранном языке программирования по правилам этого языка. Интегрированные системы программирования Для создания программы нужны: -текстовый редактор; - компилятор; - редактор связей; - библиотеки стандартных функций. Все вышеперечисленные компоненты составляют интегрированную систему программирования. В современных интегрированных системах есть еще один компонент - отладчик. Он позволяет анализировать работу программы во время ее выполнения. С его помощью можно последовательно выполнять отдельные операторы исходного текста по шагам, наблюдая при этом, как меняются значения различных переменных. Без отладчика разработать большое приложение очень сложно. Кроме перечисленного в интегрированную среду разработки входят средства управления проектом и оперативной помощи и стандартные заготовки, упрощающие разработку стандартных задач (типа Мастер). После отладки программы, с помощью 8 контрольного примера проверяется правильность решения программы, т.е. тестирование. Далее проводится анализ результатов Здесь же уместно привести определение кросс-системы. Кросс-система – это система программирования, которая обеспечивает подготовку программ в среде, отличающейся от целевой вычислительной среды. Обычно кросс-системы применяются в тех случаях, когда целевая среда не имеет ресурсов, необходимых для подготовки программы. Программа – последовательность команд (операторов), задающая алгоритм решения задачи на одном из языков программирования. Подпрограмма – выделенная часть программы, реализующая определенный алгоритм и допускающая обращение из разных мест остальных частей программы. Подпрограмма имеет имя и может вызываться с набором параметров. Применение подпрограмм сокращает текст программы. Функция – в языках высокого уровня аналогична подпрограмме, имеет имя, может иметь параметры. После выполнения функции, результат присваивается имени функции, функцию можно использовать в качестве операнда (данного) в выражении. Рекурсия — это такой способ организации обработки данных, при котором программа вызывает сама себя непосредственно, либо с помощью других программ. Рекурсивная подпрограмма обычно выполняется медленнее, чем ее нерекурсивный аналог и сложнее отлаживается. Итерация (цикл) — способ организации обработки данных, при котором определенные действия повторяются многократно, не приводя при этом к рекурсивным вызовам программ. Лекция Языки программирования высокого уровня 9 Алгоритмический язык программирования Programming language; Algorithmic language Алгоритмический язык программирования - искусственный (формальный) язык, предназначенный для записи алгоритмов. Язык программирования задается своим описанием и реализуется в виде специальной программы: компилятора или интерпретатора. Pascal (Паскаль). Язык Паскаль, созданный в конце 70-х годов основоположником множества идей современного программирования Николасом Виртом, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов. Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень просто в изучении. С (Си). Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix). Четвертое поколение языков программирования С++ (Си++). Си++ - это объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко повысить производительность программистов, наложилось на унаследованную от языка Си определенную низкоуровневость, в результате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки. 10 Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка – компиляция не в машинный код, а в платформонезависимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора – виртуальной Javaмашины JVM (Java Virtual Machine), версии которой созданы сегодня для любых платформ. Благодаря наличию множества Java-машин программы на Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода, поэтому по популярности язык Ява сегодня занимает второе место после Бейсика. Язык Java позволяет создавать программы для работы в Интернет. Особое направлениям: внимание в поддержке развитии этого всевозможных языка уделяется мобильных двум устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini) и созданию платформонезависимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans). Пока основной недостаток этого языка – невысокое быстродействие, так как язык Ява интерпретируемый. Это все алгоритмические языки. В настоящее время широко используются алгоритмические языки Паскаль и СИ. На основе алгоритмических языков стали создаваться языки объектного и объектновизуального программирования. являются СИ++ и приложения. Языки Объектно-ориентированными языками Object Pascal, они позволяют создавать различные 4-го уровня позволяют создавать приложения, функционирующие на различных платформах:DOS, WINDOWS, UNIX. Особенности алгоритмических языков в том, что имеется конкретный заданный алгоритм решения задачи, используется оператор присваивания, 11 возможен, но не приветствуется оператор goto. Алгоритмические языки подругому называются процедурными или императивными. Императивное программирование Императивное программирование – это технология программирования, характеризующаяся принципом последовательного изменения состояния вычислителя пошаговым образом. При этом управление изменениями полностью определено и полностью контролируется. Императивный язык программирования – это тоже самое, что и процедурно-ориентированный язык программирования. Процедурно-ориентированный язык программирования - язык программирования высокого уровня, в основу которого положен принцип описания (последовательности) действий, позволяющей решить поставленную задачу. Обычно процедурно- ориентированные языки задают программы, как совокупности процедур или программ. Декларативный язык программирования (От лат.Declaratio – объявление) Декларативный язык программирования - язык программирования высокого уровня, построенный: - на описании данных; и - на описании искомого результата. Декларативные языки подразделяются на функциональные и логические языки. Тексты программ на функциональных языках программирования описывают "как решить задачу", но не предписывают последовательность действий для решения. (языки F# и O'Caml ) Функциональный (аппликативный) язык программирования – язык программирования, позволяющий задавать программу в виде совокупности определений функций. 12 В функциональных языках программирования: - функции обмениваются между собой данными без использования промежуточных переменных и присваиваний; - переменные, однажды получив значение, никогда его не изменят; - циклы заменяются аппаратом рекурсивных функций. Самым главным отличием функциональных языков является отсутствие оператора присваивания Язык программирования Лисп LISP language От англ.LISt Processing - обработка списков Язык программирования Лисп аппликативный - язык программирования. - он относится к декларативным языкам функционального типа; - предназначен для обработки символьных данных, представленных в виде списков. Основой языка являются функции и рекурсивные построения. Функциональные языки применяются преимущественно для научных вычислений, а также при реализации особенно сложных алгоритмов и обработке чрезвычайно запутанных структур данных Логический язык программирования - язык программирования, позволяющий выполнить описание проблемы в терминах фактов и логических формул, а собственно решение проблемы выполняет система с помощью механизмов логического вывода. PROLOG language От англ.PROgramming in LOGic Язык программирования Пролог Язык программирования Пролог - язык логического программирования, программа на котором состоит: - из логических утверждений, образующих базу данных; и - из правила вывода новых утверждений из известных ранее. 13 Языки программирования баз данных Эта группа языков отличается от алгоритмических языков прежде всего решаемыми задачами. База данных – это файл (или группа файлов), представляющий собой упорядоченный набор записей, имеющих единообразную структуру и организованных по единому шаблону (как правило, в табличном виде). Базы данных чаще всего бывают реляционные (таблично организованные), иерархические, сетевые, объектно- ориентированные, многомерные, дедуктивные. Реляционная база данных может состоять из нескольких таблиц. Удобно хранить в базах данных различные сведения из справочников, картотек, журналов бухгалтерского учета и т. д. При работе с базами данных чаще всего требуется выполнять следующие операции: создание/модификация свойств/удаление таблиц в базе данных; поиск, отбор, сортировка информации по запросам пользователей; добавление новых записей; модификация новых записей; удаление существующих записей. Первые базы данных появились очень давно, как только появилась потребность в обработке больших массивов информации и выборке групп записей по определенным признакам. Для этого был создан структурированный язык запросов SQL (Structured Query Language). Он основан на мощной математической теории и позволяет выполнять эффективную обработку баз данных, манипулируя не отдельными записями, а группами записей. Для управления большими базами данных и их эффективной обработки разработаны СУБД (Системы Управления Базами Данных). Практически в каждой СУБД помимо поддержки языка SQL имеется также свой уникальный язык, ориентированный на особенности этой СУБД и не 14 переносимый на другие системы. Сегодня в мире насчитывается пять ведущих производителей СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix и Sybase. Их продукты нацелены на поддержку одновременной работы тысяч пользователей в сети, а базы данных могут хранится в распределенном виде на нескольких серверах. В Oracle имеется встроенный язык PL/SQL, в Informix – INFORMIX 4GL, в Adabas – Natural и т. д. С появлением персональных компьютеров были созданы так называемые настольные СУБД. Родоначальником современных языков программирования баз данных для ПК принято считать СУБД dBase II, язык которой был интерпретируемым. Затем для него были созданы компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня похожие, но несовместимые версии языков семейства dBase реализованы в продуктах Visual FoxPro фирмы Microsoft и Visual dBase фирмы Inprise. Базы знаний База знаний – это один или несколько специальным образом организованных файлов, которые хранят систематизированную совокупность понятий, правил и фактов, относящихся к некоторой предметной области. Например, база знаний по химии углеводородов. Содержимое базы знаний оформляется, связывается между собой и представляется таким образом, чтобы на основе этого содержимого можно было с помощью специальных программ осуществлять рассуждения и делать выводы и получать выводы, которые в явном виде могут не присутствовать в базе данных. искусственного Для построения интеллекта, интеллектуальный содержательной интеллектуальных знаний специальные интерфейс. частью базы Базы знаний интеллектуальных обучающих языки систем, применяются описания методы знаний являются и основной информационных систем, интеллектуальных систем программирования и экспертных систем. 15 Экспертная система – это система программных и аппаратных средств, включающая базу знаний. В экспертных системах с помощью баз знаний представляются навыки и опыт экспертов – специалистов в данной предметной области. Например, база знаний в области медицины содержит накопленные медицинскими специалистами сведения о связях между болезнями, их симптомами и порождающими причинами, рекомендуемые лечебные действия и их результаты. На основе такой базы знаний разрабатываются экспертные диагностические и прогнозирующие медицинские системы. Экспертная система способна на основании методов искусственного интеллекта и представленных пользователем фактов идентифицировать ситуацию, поставить диагноз, сделать прогноз, сгенерировать решение или дать рекомендацию для выбора действия. Э.С. обычно ориентируется на некоторую предметную область, она способна получать, накапливать, корректировать знания из этой области, выводить новые знания из уже известных, решать практические задачи на основе этих знаний и объяснять ход решения. Кроме базы знаний, хранящей факты, закономерности и правила в ЭС входят программы-решатели, они реализуют функции планирования, поиска решения задачи, механизма логического вывода, часто из неполных и нечетких знаний. Создание ЭС начинается с разработки ее первоначального варианта – прототипа ЭС. Далее следует длительный многоэтапный процесс испытаний и совершенствования. Для программирования ЭС используются языки Лисп, Пролог, Си. Искусственный интеллект. Во-первых, это область информатики, занимающаяся научными исследованиями и разработкой методов и средств для правдоподобной имитации отдельных функций человеческого интеллекта с помощью автоматизированных систем. В рамках И.и. создаются методы, программные и технические формальные средства алгоритмы: решения задач, распознавание для которых отсутствуют изображений, понимание 16 естественных языков и речи, обучение с учетом способностей ученика, постановка диагнозов, доказательство теорем и т.д. Эти задачи обычно решаются человеком с привлечением подсознания и поэтому их трудно моделировать. На основе методов И.и. разрабатываются программные интеллектуальные системы, например, интеллектуальные информационные системы, интеллектуальные обучающие системы, интеллектуальные системы программирования и т.д. Большинство таких систем используют для своей работы базы знаний, которые тоже разрабатываются с привлечением методов И.и. Иногда программы И.и. служат для моделирования поведения человека, а иногда – технических применений. Термин машинный интеллект является синонимом И.и., но чаще служит для указания только технологического аспекта проблемы И.и. Во-вторых И.и. – это свойство автоматических и автоматизированных систем выполнять отдельные функции интеллекта человека, например, выбирать и принимать оптимальные решения на основе ранее полученного опыта и анализа внешних воздействий. Интеллектуальная система программирования Система программирования, в основе которой лежит естественный или профессионально-ориентированный язык. И.с.п. автоматически создает программу по сформулированному пользователем на естественном или профессионально-ориентированном языке описанию решаемой задачи. При этом пользователь освобождается от необходимости выполнять предварительную разработку алгоритма и программирование. Интеллектуальный интерфейс Интерфейс, обеспечивающий взаимодействие пользователя с компьютером на естественном языке. И.и обычно включает диалоговый процессор, интерпретирующий профессиональный язык пользователя, и планировщик, преобразующий описание задачи в программу ее решения на основе информации, хранящейся в базе знаний. Интеллектуальная информационная система 17 Автоматизированная информационная система, снабженная интеллектуальным интерфейсом, дающим возможность пользователю делать запросы на естественном или профессионально-ориентированном языке. Языки программирования для Интернета С активным развитием глобальной сети было создано немало реализаций популярных специально для языков Интернета. Все программирования, они отличаются адаптированных характерными особенностями: языки являются интерпретируемыми, интерпретаторы для них распространяются бесплатно, а сами программы – в исходных текстах. Такие языки называются скрипт – языками. HTML. Общеизвестный язык для оформления документов, его команды называются тэги. Он очень прост и содержит элементарные команды форматирования текста, добавления рисунков, задания цветов и шрифтов, организации ссылок и таблиц. Все Web-страницы написаны на языке HTML или используют его расширения. Perl. В 80-х годах Ларри Уолл разработал язык Perl. Он задумывался как средство обработки больших текстовых файлов, генерации текстовых отчетов и управления задачами. По мощности Perl значительно превосходит языки типа Си. В него введено много часто используемых функций работы со строками, массивами, всевозможными средствами преобразования данных, управления процессами, работы с системной информацией и др. PHP – язык для разработки web-приложений. Tcl/Tk. В конце 80-х годов Джон Аустираут придумал популярный скрипт-язык Tcl и библиотеку Tk. В Tcl он попытался воплотить видение идеального скрипт-языка. Tcl ориентирован на автоматизацию рутинных процессов и состоит из мощных команд, предназначенных для работы с абстрактными нетипизированными объектами. Он не зависит от типа системы и при этом позволяет создать программы с графическим интерфейсом. 18 Области применения языков программирования В настоящее время языки программирования применяются в самых различных областях человеческой деятельности, таких как: научные вычисления (языки C++, FORTRAN, Java); системное программирование (языки C++, Java); обработка информации (языки C++, COBOL, Java); искусственный интеллект (LISP, Prolog); издательская деятельность (Postscript, TeX); удаленная обработка информации (Perl, PHP, Java, C++); описание документов (HTML, XML). Парадигмы программирования Синтаксис языка описывает систему правил написания различных языковых конструкций, а семантика языка программирования определяет смысл этих конструкций. Семантика языка взаимосвязана с используемой вычислительной моделью. В настоящее время языки программирования в зависимости от применяемой вычислительной модели делятся на четыре основные группы: Процедурные языки, которые представляют собой последовательность выполняемых операторов. Если рассматривать состояние ПК как состояние последовательность ячеек памяти, операторов, то процедурный изменяющих значение язык – одной это или нескольких ячеек. К процедурным языкам относятся FORTRAN, C, Ada, Pascal, Smalltalk и некоторые другие. Процедурные языки иногда также называются императивными языками. Код программы на процедурном языке может быть записан следующим образом: оperator1; operator2; operator3; Аппликативные языки, в основу которых положен функциональный подход. Язык рассматривается с точки зрения нахождения функции, необходимой для перевода памяти ПК из одного состояния в другое. Программа представляет собой набор функций, применяемых к 19 начальным данным, позволяющий получить требуемый результат. К аппликативным языкам относится язык LISP. Код программы на аппликативном языке может быть записан следующим образом: function1(function2( function3(beginning_date))); Языки системы правил, называемые также языками логического программирования, основываются на определении набора правил, при выполнении которых возможно выполнение определенных действий. Правила могут задаваться в виде утверждений и в виде таблиц решений. К языкам логического программирования относится язык Prolog. Код программы на языке системы правил может быть записан следующим образом: if condition1 then operator1; if condition2 then operator2; if condition3 then operator3; объектов Объектно-ориентированные языки, основанные на построении как набора данных и операций над ними. Объектно- ориентированные языки объединяют и расширяют возможности, присущие процедурным и аппликативным языкам. К объектно-ориентированным языкам относятся C++, Object Pascal, Java. В настоящий момент наибольшее распространение получили языки, основанные на объектно-ориентированной модели. Они, реализуя процедурную модель построения языка, поддерживают аппликативность конструкций, позволяя структурированной представлять программы как блок-схему некоторый набор выполнения аппликативных функций. Прикладное программное обеспечение ППО - это комплекс прикладных программ, с помощью которых выполняются конкретные задания: производственные, творческие, развлекательные и т.д. 20 Классификация ПП средств Текстовые редакторы - основные их функции - ввод и редактирование текстовых данных. Графические редакторы - обширный класс программ, предназначенных для создания и обработки графических изображений. Системы управления базами данных. БД называют огромные массивы данных, организованные в табличные структуры. Электронные таблицы - это комплексные средства для хранения различных типов данных и их обработки. Электронные таблицы аналогичны базам данных, но акцент смещен не на хранения данных, а на преобразование данных. Системы автоматизированного проектирования (CAD-системы), они предназначены для автоматизации процесса верстки полиграфических изданий. Существуют и другие прикладные программные средства: экспертные системы, редакторы HTML (Web-редакторы), броузеры (средства просмотра Web), интегрированные системы делопроизводства, бухгалтерские системы и т.д. Резюме Парадигмы программирования Парадигма — набор теорий, стандартов и методов, которые представляют собой способ организации научного знания, — иными словами, способ видения мира. Парадигма в программировании — способ концептуализации, который определяет, как следует проводить вычисления, и как работа, выполняемая компьютером, должна быть структурирована и организована. Известно несколько основных парадигм программирования, важнейшими из которых на данный момент времени являются парадигмы директивного, объектно-ориентированного и функционально- логического программирования. Для поддержки программирования в 21 соответствии с той или иной парадигмой разработаны специальные алгоритмические языки. C и Pascal являются примерами языков, предназначенных для директивного программирования (directive programming), когда разработчик программы использует процессно-ориентированную модель, то есть пытается создать код, должным образом воздействующий на данные. Активным началом при этом подходе считается программа (код), которая должна выполнить все необходимые для достижения нужного результата действия над пассивными данными. Этот подход представляется вполне естественным для человека, который только начинает изучать программирование, и исторически возник одним из первых, однако он практически неприменим для создания больших программ. Сейчас весьма распространенным стал объектно-ориентированный (object oriented) подход, реализуемый, например, языками C++ и Java. При этом, наоборот, первичными считаются объекты (данные), которые могут активно взаимодействовать друг с другом с помощью механизма передачи сообщений (называемого также и механизмом вызова методов). Функция программиста в этом случае подобна роли бога при сотворении Вселенной — он должен придумать и реализовать такие объекты, взаимодействие которых после старта программы приведет к достижению необходимого конечного результата. Раздел № 4 Модели решения функциональных и вычислительных задач. Моделирование, методы и технология моделирования, виды моделей. Моделирование как средство проектирования программного обеспечения вычислительных систем Моделью называется семантически законченная абстракция системы или полное описание какой-то системы с определенной точки зрения. 22 Модель – это некоторое представление или описание оригинала (объекта, процесса, явления), которое при определенных предложениях, гипотезах о поведении оригинала позволяет замещать оригинал для его лучшего изучения, исследования, описания его свойств. Проблема моделирования состоит из трех взаимосвязанных задач: построение новой (адаптация известной) модели; исследование модели (разработка метода исследования или адаптация, применение известного); использование (на практике или теоретически) модели. Классификация моделей Модель статическая, если среди параметров описания модели нет (явно) временного параметра. Модель динамическая, если среди параметров модели явно выделен временной параметр. Модель дискретная, если описывает поведение оригинала лишь дискретно, например, в дискретные моменты времени (для динамической модели). Модель непрерывная, если описывает поведение оригинала на всем промежутке времени. Модель детерминированная, если для каждой допустимой совокупности входных параметров она позволяет определять однозначно набор выходных параметров; в противном случае – модель недетерминированная, стохастическая (вероятностная). Модель функциональная, если она представима системой функциональных соотношений (например, уравнений). Модель теоретико-множественная, если она представима некоторыми множествами и отношениями их и их элементов. Модель логическая, если она представима предикатами, логическими функциями и отношениями. Модель информационно-логическая, если она представима информацией о составных элементах, подмоделях, а также логическими отношениями между ними. 23 Модель игровая, если она описывает, реализует некоторую игровую ситуацию между элементами (объектами и субъектами игры). Модель алгоритмическая, если она описана некоторым алгоритмом или комплексом алгоритмов, определяющим ее функционирование, развитие. Введение такого, на первый взгляд, непривычного типа моделей (действительно, кажется, что любая модель может быть представлена алгоритмом ее исследования), вполне обосновано, так как не все модели могут быть исследованы или реализованы алгоритмически. Модель графовая, если она представима графом (отношениями вершин и соединяющих их ребер) или графами и отношениями между ними. Модель иерархическая (древовидная), если она представима иерахической структурой (деревом). Модель языковая, лингвистическая, если она представлена некоторым лингвистическим объектом, формализованной языковой системой или структурой. Иногда такие модели называют вербальными, синтаксическими и т.п. Модель визуальная, если она позволяет визуализировать отношения и связи моделируемой системы, особенно в динамике. Модель натурная, если она есть материальная копия оригинала. Модель геометрическая, если она представима геометрическими образами и отношениями между ними. Модель имитационная, если она построена для испытания или изучения, проигрывания возможных путей развития и поведения объекта путем варьирования некоторых или всех параметров модели. Есть и другие типы моделей. Примеры моделей Алгоритмической моделью вычисления суммы бесконечного убывающего ряда чисел может служить алгоритм вычисления конечной суммы ряда до некоторой заданной степени точности. 24 Правила правописания – языковая, структурная модель. Глобус – натурная географическая модель земного шара. Макет дома является натурной геометрической моделью строящегося дома. Вписанный в окружность многоугольник дает визуальную геометрическую модель окружности на экране компьютера. Тип модели зависит от связей и отношений его подсистем и элементов, окружения, а не от его физической природы. Основные свойства любой модели: целенаправленность; конечность; упрощенность; приблизительность; адекватность; информативность; полнота; замкнутость и др. Современное моделирование сложных процессов и явлений невозможно без компьютера, без компьютерного моделирования. Компьютерное моделирование – основа представления знаний как в компьютере, так и с помощью компьютера и с использованием любой информации, которую можно обрабатывать с помощью ЭВМ. Разновидность эксперимент, компьютерного осуществляемый моделирования экспериментатором – вычислительный над исследуемой системой или процессом с помощью орудия эксперимента – компьютера, компьютерной технологии. Вычислительный эксперимент позволяет находить новые закономерности, проверять гипотезы, визуализировать события и т.д. Компьютерное моделирование от начала и до завершения проходит следующие этапы. 1. Постановка задачи. 25 2. Предмодельный анализ. 3. Анализ задачи. 4. Исследование модели. 5. Программирование, проектирование программы. 6. Тестирование и отладка. 7. Оценка моделирования. 8. Документирование. 9. Сопровождение. 10. Использование (применение) модели. При моделировании систем ПО выделяют два подхода: структурное моделирование и объектно-ориентированное моделирование. Каждый из этих подходов использует свои методы и средства. Язык моделирования должен включать: элементы модели, т.е. функциональные концепции моделирования и их семантику, нотацию, т.е. визуальное представление элементов моделирования и моделировании широко руководство по использованию. При используются инструментальные средства, называемые Case-средствами. Case-средство – это технология использования и эксплуатации систем ПО. Case-средство – это программное средство, которое поддерживает процессы жизненного цикла ПО. ЖЦ любого ПО – это период времени от принятия решения о необходимости создания ПО до изъятия ПО из эксплуатации. Все процессы ЖЦ ПО делятся на три группы: основные (5), вспомогательные (8), организационные (4). Для разработки моделей ЖЦ используется стандарт (ISO/IEC 12207). Стадия создания ПО – это часть процесса создания ПО, ограниченная временными рамками и заканчивающаяся выпуском конкретного продукта (модели, программы или документации). В состав ЖЦ ПО включают стадии: 1. Формирование требований к ПО 2. Проектирование 3. Реализация 26 4. Тестирование 5. Ввод в действие 6. Эксплуатация и сопровождение 7. Снятие с эксплуатации. Сущность структурного подхода к разработке ПО заключается в его декомпозиции на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, те – на задачи и т.д. до конкретных процедур. Все компоненты автоматизируемой системы взаимоувязаны. В структурном подходе используются две группы средств, которые описывают функциональную структуру системы и отношения между данными. Каждой группе средств соответствуют определенные виды моделей, самые распространенные среди них: DFD – диаграмма потоков данных – основное средство моделирования функциональных требований к проектируемой системе. Требования к системе представляются в виде иерархии функциональных компонент (процессов), связанных потоками данных. Главная цель такого представления – показать, как каждый процесс преобразует свои входные данные в выходные, а также выявить отношения между этими процессами. Основными компонентами диаграммы потоков данных являются внешние сущности, системы и подсистемы, процессы, накопители данных и потоки данных. SADT – метод структурного анализа и проектирования – совокупность правил и процедур, предназначенных для построения функциональной модели объекта какой-либо предметной области. Функциональная модель SADT отображает функциональную структуру объекта, т.е. производимые объектом действия и связи между ними. ERD – диаграммы сущность – связь. Это самое распространенное средство моделирования данных, которые в процессе проектирования и 27 реализации будут отображены в базу данных. Базовыми понятиями данного средства моделирования являются: сущность, связь и атрибут. Принципиальное отличие между структурным и объектно- ориентированном подходом при моделировании систем ПО заключается в способе декомпозиции системы. Объектно-ориентированный подход использует объектную декомпозицию. При этом статическая структура системы описывается с помощью объектов и связей между ними, а поведение объектов системы описывается сообщениями, которыми объекты обмениваются между собой. Основой объектно-ориентированного подхода является объектная модель. Элементами (свойствами) этой модели являются: абстрагирование, инкапсуляция, модульность, иерархия, типизация, параллелизм, устойчивость. Абстракция – это процесс выявления основных характеристик какойлибо сущности, которые отличают ее от других сущностей. Инкапсуляция – это процесс отделения друг от друга отдельных элементов объекта, которые определяют устройство и поведение объекта. Инкапсуляция служит для того, чтобы изолировать интерфейс объекта, который отражает внешнее поведение объекта от его внутренней реализации. Модульность – это свойство системы, связанное с возможностью ее декомпозиции на ряд внутренне связных, но слабо связанных между собой модулей. Иерархия – это ранжирование или упорядочивание системы абстракций. Виды иерархических структур – это структура классов и структура объектов. Типизация – это ограничение, которое накладывается на класс объектов, она препятствует взаимозаменяемости различных классов. Параллелизм – это свойство объектов находиться в активном или пассивном состоянии и различать активные и пассивные объекты между собой. 28 Устойчивость – свойство объекта существовать во времени и/или пространстве. Основные понятия, используемые при объектно-ориентированном моделировании: объект и класс. Объект – это предмет или явления, которое имеет четко определяемое поведение. Класс – это множество объектов, которые имеют общую структуру и поведение. Объект является экземпляром класса. Важными понятиями в объектно-ориентированном моделировании являются полиморфизм и наследование. Полиморфизм – это способность класса принадлежать более чем одному типу. Наследование – это построение новых классов на основе уже существующих, при этом можно добавлять или переопределять данные и методы. Языки моделирования Язык визуального моделирования – это формальный язык, который имеет графическую нотацию, язык предназначен для визуального моделирования и спецификации программных и аппаратных средств. VRML – формальный язык для создания трехмерных изображений. В 1994 году был создан язык VRML для организации виртуальных трехмерных интерфейсов в Интернете. Он позволяет описывать в текстовом виде различные трехмерные сцены, освещение и тени, текстуры (покрытия объектов), создавать свои миры, путешествовать по ним, «облетать» со всех сторон, вращать в любых направлениях, масштабировать, регулировать Унифицированный язык моделирования UML – формальный язык визуального моделирования, который предназначен для проектирования и построения моделей сложных программных систем. Объектно-ориентированное программирование Одной из программированию программирование, альтернатив является которое директивному (императивному) объектно-ориентированное действительно помогает справиться с нелинейно растущей сложностью программ при увеличении их объема. 29 Основные концепции ООП (основные идеи объектно-ориентированного проектирования и объектно-ориентированного разработанный проект программирования реализуется на одинаковы, одном из т.к. объектно- ориентированных языков программирования) Объектно-ориентированное программирование или ООП — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного типа, использующая механизм пересылки сообщений и классы, организованные в иерархию наследования. Центральный элемент ООП — абстракция. Данные с помощью абстракции преобразуются в объекты, а последовательность обработки этих данных превращается в набор сообщений, передаваемых между этими объектами. Каждый из объектов имеет свое собственное уникальное поведение. С объектами можно обращаться как с конкретными сущностями, которые реагируют на сообщения, приказывающие им выполнить какие-то действия. ООП характеризуется следующими принципами (по Алану Кею): все является объектом; вычисления осуществляются путем взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие; объекты взаимодействуют, посылая и получая сообщения; сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия; каждый объект имеет независимую память, которая состоит из других объектов; каждый объект является представителем класса, который выражает общие свойства объектов данного типа; 30 в классе задается функциональность (поведение объекта); тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия; классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования; память и поведение, связанное с экземплярами определенного класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве. Абстрагирование (abstraction) — метод решения задачи, при котором объекты разного рода объединяются общим понятием (концепцией), а затем сгруппированные сущности рассматриваются как элементы единой категории. Абстрагирование позволяет отделить логический смысл фрагмента программы от проблемы его реализации, разделив внешнее описание (интерфейс) объекта и его внутреннюю организацию (реализацию). Инкапсуляция (encapsulation) — техника, при которой несущественная с точки зрения интерфейса объекта информация прячется внутри него. Наследование (inheritance) — свойство объектов, посредством которого экземпляры класса получают доступ к данным и методам классовпредков без их повторного определения. Наследование позволяет различным типам данных совместно использовать один и тот же код, приводя к уменьшению его размера и повышению функциональности. Полиморфизм (polymorphism) — свойство, позволяющее использовать один и тот же интерфейс для различных действий; полиморфной переменной, например, может соответствовать несколько различных методов. Полиморфизм перекраивает общий код, реализующий некоторый интерфейс, так, чтобы удовлетворить конкретным особенностям отдельных типов данных. 31 Класс (class) — множество объектов, связанных общностью структуры и поведения; абстрактное описание данных и поведения (методов) для совокупности похожих объектов, представители которой называются экземплярами класса. Объект (object) — конкретная реализация класса, обладающая характеристиками состояния, поведения и индивидуальности, синоним экземпляра. При объектно-ориентированном подходе программа представляет собой описание объектов, их свойств (или атрибутов), совокупностей (или классов), отношений между ними, способов их взаимодействия и операций над объектами (или методов). Основными концепциями, характеризующими объектно-ориентированное программирование, являются наследование (сохранение производными объектами свойств базовых объектов) и инкапсуляция (изоляция определений объектов от методов управления ими), а также уже упомянутое понятие полиморфизма Основы представления графических данных Виды компьютерной графики Существует специальная область информатики, изучающая методы и средства создания и обработки изображений с помощью программноаппаратных вычислительных комплексов, — компьютерная графика. Она охватывает все виды и формы представления изображений, доступных для восприятия человеком либо на экране монитора, либо в виде копии на внешнем носителе (бумага, кинопленка, ткань и прочее). Виды компьютерной графики: полиграфия, 2D графика, 3D графика и анимация, САПР и деловая графика, Web дизайн, мультимедиа, видеомонтаж. В зависимости от способа формирования изображений компьютерную 2D-графику принято подразделять на растровую, векторную и фрактальную. Отдельным предметом считается трехмерная (3D) графика, изучающая приемы и методы построения объемных моделей объектов в виртуальном 32 пространстве. Как правило, в ней сочетаются векторный и растровый способы формирования изображений. Особенности цветового охвата характеризуют такие понятия, как чернобелая и цветная графика. На специализацию в отдельных областях указывают названия некоторых разделов: инженерная графика, научная графика, Web-графика, компьютерная полиграфия и прочие. На стыке компьютерных, телевизионных и кинотехнологий зародилась и стремительно развивается сравнительно новая область компьютерной графики и анимации. Хотя компьютерная графика служит всего лишь инструментом, ее структура и методы основаны на передовых достижениях фундаментальных и прикладных наук: математики, физики, химии, биологии, статистики, программирования и множества других. Это замечание справедливо как для программных, так и для аппаратных средств создания и обработки изображений на компьютере. Поэтому компьютерная графика является одной из наиболее бурно развивающихся отраслей информатики и во многих случаях выступает «локомотивом», тянущим за собой всю компьютерную индустрию. Растровая графика Векторная графика 33 Трехмерная графика Инженерная графика Растровая графика Для растровых изображений, состоящих из точек, особую важность имеет понятие разрешения, выражающее количество точек, приходящихся на единицу длины. При этом следует различать: • разрешение оригинала; • разрешение экранного изображения; • разрешение печатного изображения. Разрешение оригинала. Разрешение оригинала измеряется в точках на дюйм (dots per inch — dpi) и зависит от требований к качеству изображения и размеру файла, способу оцифровки или методу создания исходной иллюстрации, избранному формату файла и другим параметрам. В общем случае действует правило: чем выше требования к качеству, тем выше должно быть разрешение оригинала. Разрешение экранного изображения. Для экранных копий изображения элементарную точку растра принято называть пикселом. Размер пиксела варьируется в зависимости от выбранного экранного разрешения (из диапазона стандартных значений), разрешения оригинала и масштаба отображения. Мониторы для обработки изображений с диагональю 20-21 дюйм (профессионального класса), как правило, обеспечивают стандартные экранные разрешения 640x480, 800x600, 1024x768, 1280x1024, 1600x1200, 1600x1280, 1920x1200, 1920x1600 точек. Расстояние между соседними 34 точками люминофора у качественного монитора составляет 0,22-0,25 мм. Для экранной копии достаточно разрешения 72 dpi, для распечатки на цветном или лазерном принтере 150-200 dpi, для вывода на фотоэкспонирующем устройстве 200-300 dpi. Установлено эмпирическое правило, что при распечатке величина разрешения оригинала должна быть в 1,5 раза больше, чем линиатура растра устройства вывода. В случае, если твердая копия будет увеличена по сравнению с оригиналом, эти величины следует умножить на коэффициент масштабирования. Разрешение печатного изображения и понятие линиатуры. Размер точки растрового изображения как на твердой копии (бумага, пленка и т. д.), так и на экране зависит от примененного метода и параметров растрирования оригинала. При растрировании на оригинал как бы накладывается сетка линий, ячейки которой образуют элемент растра. Частота сетки растра измеряется числом линий на дюйм (lines per inch — Ipi) и называется линиатурой. Размер точки растра рассчитывается для каждого элемента и зависит от интенсивности тона в данной ячейке. Чем больше интенсивность, тем плотнее заполняется элемент растра. То есть, если в ячейку попал абсолютно черный цвет, размер точки растра совпадет с размером элемента растра. В этом случае говорят о 100% заполняемости. Для абсолютно белого цвета значение заполняемости составит 0%. На практике заполняемость элемента на отпечатке обычно составляет от 3 до 98%. При этом все точки растра имеют одинаковую оптическую плотность, в идеале приближающуюся к абсолютно черному цвету. Иллюзия более темного тона создается за счет увеличения размеров точек и, как следствие, сокращения пробельного поля между ними при одинаковом расстоянии между центрами элементов растра (рис. 1). Такой метод называют растрированием с амплитудной модуляцией (AM). 35 Рис. 1. Примеры амплитудной и частотной модуляции растра Существует и метод растрирования с частотной модуляцией (ЧМ), когда интенсивность тона регулируется изменением расстояния между соседними точками одинакового размера. Таким образом, при частотномодулированном растрировании в ячейках растра с разной интенсивностью тона находится разное число точек (см рис. 1). Изображения, растрированные ЧМ-методом, выглядят более качественно, так как размер точек минимален и во всяком случае существенно меньше, чем средний размер точки при АМрастрировании. Еще более повышает качество изображения разновидность ЧМ-метода, называемая стохастическим растрированием. В этом случае рассчитывается число точек, необходимое для отображения требуемой интенсивности тона в ячейке растра. Затем эти точки располагаются внутри ячейки на расстояниях, вычисленных квазислучайным методом (на самом деле используется специальный математический алгоритм). То есть регулярная структура растра внутри ячейки, как и на изображении в целом, вообще отсутствует (рис. 2). Поэтому при стохастическом ЧМ - растрировании теряет смысл понятие линиатуры растра, имеет значение лишь разрешающая способность устройства вывода. Такой способ требует больших затрат полиграфического вычислительных оборудования; ресурсов он и применяется высокой в точности основном для художественных работ, при печати с числом красок, превышающим четыре. 36 Рис.2. Пример использования стохастического растра Связь между параметрами изображения и размером файла. Средствами растровой графики принято иллюстрировать работы, требующие высокой точности в передаче цветов и полутонов. Однако размеры файлов растровых иллюстраций стремительно растут с увеличением разрешения. Фотоснимок, предназначенный для домашнего просмотра (стандартный размер 10x15 см, оцифрованный с разрешением 200-300 dpi, цветовое разрешение 24 бита), занимает в формате TIFF с включенным режимом сжатия около 4 Мбайт. Оцифрованный с высоким разрешением слайд занимает 45-50 Мбайт. Цветоделенное цветное изображение формата А4 занимает 120-150 Мбайт. Масштабирование растровых изображений. Одним из недостатков растровой графики является так называемая пикселизация изображений при их увеличении (если не приняты специальные меры). Раз в оригинале присутствует определенное количество точек, то при большем масштабе увеличивается и их размер, становятся заметны элементы растра, что искажает саму иллюстрацию (рис 3). Для противодействия пикселизации принято заранее оцифровывать оригинал с разрешением, достаточным для качественной визуализации при масштабировании. Другой прием состоит в применении стохастического растра, позволяющего уменьшить эффект пикселизации в определенных пределах. Наконец, при масштабировании используют метод интерполяции, когда увеличение размера иллюстрации происходит не за счет масштабирования точек, а путем добавления необходимого числа промежуточных точек. При масштабировании растровой графики возможны потери в изображении. 37 Рис.3. Эффект пикселезации при масштабировании растрового изображения Векторная графика Если в растровой графике базовым элементом изображения является точка, то в векторной графике - линия. Линия описывается математически как единый объект, и потому объем данных для отображения объекта средствами векторной графики существенно меньше, чем в растровой графике. Линия — элементарный объект векторной графики. Как и любой объект, линия обладает свойствами: формой (прямая, кривая), толщиной, цветом, начертанием (сплошная, пунктирная). Замкнутые линии приобретают свойство заполнения. Охватываемое ими пространство может быть заполнено другими объектами (текстуры, карты) или выбранным цветом. Простейшая незамкнутая линия Ограничена двумя точками, именуемыми узлами. Узлы также имеют свойства, параметры которых влияют на форму конца линии и характер сопряжения с другими объектами. Все прочие объекты векторной графики составляются из линий. Например, куб можно составить из шести связанных прямоугольников, 38 каждый из которых, в свою очередь, образован четырьмя связанными линиями. Возможно представить куб и как двенадцать связанных линий, образующих ребра. Рис. 4. Объекты векторной графики Математические основы векторной графики Рассмотрим подробнее способы представления различных объектов в векторной графике. Точка. Этот объект на плоскости представляется двумя числами (х, у), указывающими его положение относительно начала координат. Прямая линия. Ей соответствует уравнение у = kx + b. Указав параметры k и b, всегда можно отобразить бесконечную прямую линию в известной системе координат, то есть для задания прямой достаточно двух параметров. Отрезок прямой. Он отличается тем, что требует для описания еще двух параметров — например, координат x1 и х2 начала и конца отрезка. Кривая второго порядка. К этому классу кривых относятся параболы, гиперболы, эллипсы, окружности, то есть все линии, уравнения которых содержат степени не выше второй. Кривая второго порядка не имеет точек перегиба. Прямые линии являются всего лишь частным случаем кривых второго порядка. Формула кривой второго порядка в общем виде может выглядеть, например, так: x2+a1y2+a2xy+a3x+a4y+а5 = 0. 39 Таким образом, для описания бесконечной кривой второго порядка достаточно пятя; параметров. Если требуется построить отрезок кривой, понадобятся еще два параметра. Кривая третьего порядка. Отличие этих кривых от кривых второго порядка состоит в возможном наличии точки перегиба. Например график функции у = x3 имеет точку перегиба в начале координат (рис. 15.5). Именно эта особенность позволяет сделать кривые третьего порядка основой отображения природных объектов в векторной графике. Например линии изгиба человеческого тела весьма близки к кривым третьего порядка. Все кривые второго порядка, как и прямые, являются частными случаями кривых третьего порядка. В общем случае уравнение кривой третьего порядка можно записать так: x3 + а1у3 + а2x2у + a3xy2 + a4x2 + а5y2 + а6xy + a7x + а8y + а9 = 0 Таким образом, кривая третьего порядка описывается девятью параметрами. Описание ее отрезка потребует на два параметра больше. Рис.5. Кривая третьего порядка (слева) и кривая Безье (справа) Кривые Безье. Это особый, упрощенный вид кривых третьего порядка (с. рис. 5). Метод построения кривой Безье (Bezier) основан на использовании пары касательных, проведенных к отрезку линии в ее окончаниях. Отрезки кривых Безье описываются восемью параметрами, поэтому работать с ними удобнее. На форму линии влияет угол наклона касательной и длина ее 40 отрезка. Таким образом, касательные играют роль виртуальных «рычагов», с помощью которых управляют кривой. Отрезками кривых Безье можно аппроксимировать сколь угодно сложный контур. Наряду с линией другим основным элементом векторной графики является узел (опорная точка). Линии и узлы используются для построения контуров. Каждый контур имеет несколько узлов. Форма контуров в векторных редакторов изменяется путем манипуляции узлами. Это можно сделать одним из следующих способов: перемещением узлов, изменением свойств узлов, добавлением или удалением узлов. В основе всех процедур связанных с редактированием контуров лежит работа с узлами. При выделении узловой точки криволинейного сегмента у нее появляются одна или две управляющие точки, соединенные с узловой точкой касательными линиями. Управляющие точки изображаются черными закрашенными точками. Расположение касательных линий и управляющих точек определяет длину и форму криволинейного сегмента, а их перемещение приводит к изменению формы контура. Типы узловых точек. Вид касательных линий и соответственно методы управления кривизной сегмента в точке привязки определяются типом узловой точки. Различают три типа узловых точек. Симметричный узел. У симметричного узла оба отрезка касательных по обе стороны точки привязки имеют одинаковую длину и лежат на одной прямой, которая показывает направление касательной к контуру в данной узловой точке. Это означает, что кривизна сегментов с обеих сторон точки привязки одинакова. Гладкий узел. У гладкой узловой точки оба отрезка касательных линий по обе стороны точки привязки лежат на одной прямой, которая показывает направление касательной к кривой в данной точке, но длина управляющих линий разная. 41 Острый узел. У острого узла касательные линии с разных сторон этой точки не лежат на одной прямой. Поэтому два криволинейных сегмента, прилегающих к опорной точке, имеют различную кривизну с разных сторон узловой точки и контур в этой точке образует резкий излом. Представление графических данных Форматы графических данных Способ организации информации в файле называется форматом хранения изображения. В компьютерной графике применяют по меньшей мере три десятка форматов файлов для хранения изображений. Но лишь часть из них стала стандартом «де-факто» и применяется в подавляющем большинстве программ. Как правило, несовместимые форматы имеют файлы растровых, векторных, трехмерных изображений, хотя существуют форматы, позволяющие хранить данные разных классов. Все множество форматов условно делится на три категории: Форматы, хранящие изображения в растровом виде: BMP, TIFF. PCD, PSD, JPEG, PNG, GIF; Форматы, хранящие информацию в векторном виде: WMF; Универсальные форматы (векторное и растровое представление): EPS, PICT, CDR – формат Coral Draw. Основные критерии выбора формата – это совместимость программ и компактность записи. По сравнении с векторным растровый формат устроен проще. Это прямоугольная таблица или матрица bitmap, в каждой ячейке или клетке которой установлен пиксел. Считывание информации из файла растрового изображения сводится к следующему: Определяется размер изображения в виде произведения пикселов по горизонтали и вертикали; Определяется размер пиксела; Определяется битовая глубина, она характеризует емкость пиксела в битах или цветовую разрешающую способность, т.е. количество цветов. В цветном RGB изображении каждый пиксел кодируется 24-битовым числом, 42 поэтому в каждой ячейки битовой матрицы хранится число из 24 нулей и единиц. Многие приложения ориентированы на собственные «специфические» форматы, перенос их файлов в другие программы вынуждает использовать специальные фильтры или экспортировать изображения в «стандартный» формат. TIFF (Tagged Image File Format). Формат предназначен для хранения растровых изображений высокого качества (расширение имени файла .ТIF), данный формат поддерживается основными растровыми и векторными редакторами. Он относится к числу широко распространенных, отличается переносимостью между платформами (IBM PC к Apple Macintosh), обеспечен поддержкой со стороны большинства графических, верстальных и дизайнерских программ. Предусматривает широкий диапазон цветового охвата — от монохромного черно-белого до 32-разрядной модели цветоделения CMYK. Начиная с версии 6.0 в формате TIFF можно хранить сведения о масках (контурах обтравки) изображений. Данный формат – это лучший выбор для импорта растровой графики в векторные программы. Для уменьшения размера файла применяется встроенный алгоритм сжатия без потерь LZW (возможно сжатие до 50%).. PSD (PhotoShop Document). Собственный формат программы Adobe Photoshop (расширение имени файла .PSD), один из наиболее мощных по возможностям хранения растровой графической информации. Позволяет запоминать параметры слоев, каналов, степени прозрачности, множества масок. Поддерживаются 48-разрядное кодирование цвета, цветоделение и различные цветовые модели. Основной недостаток выражен в том, что отсутствие эффективного алгоритма сжатия информации приводит к большому объему файлов, однако этот формат постоянно совершенствуется. Еще один формат программы Adobe Photoshop имеет расширение PDF – это аппаратно-независимый растровый формат, в этом формате документ хранится целиком. 43 Windows Bitmap. Формат операционной системе Windows хранения растровых (расширение изображений имени файла в .BMP). Соответственно, поддерживается всеми приложениями, работающими в этой среде, данный формат обеспечивает быстрый вывод изображений, но из-за очень больших размеров файла используется только для нужд Windows. WMF (Windows Meta File) – формат хранения векторных изображений ОС Windows, он искажает цвет изображений. EPS – универсальный формат хранения изображений, как векторных, так и растровых на языке PostScript. На экране векторное изображение представляется в формате WMF, а растровое в формате TIFF. JPEG (Joint Photographic Experts Group). Формат предназначен для хранения растровых изображений (расширение имени файла .JPG). Позволяет регулировать соотношение между степенью сжатия файла и качеством изображения. Применяемые методы сжатия основаны на удалении «избыточной» информации, поэтому формат рекомендуют использовать только для электронных публикаций, т.к. алгоритм сжатия приводит к потери качества изображения. Этот формат не рекомендуется использовать, если важны цветовые нюансы, в формате .JPEG хранят только конечный результат, т.к. каждое промежуточное хранение в данном формате приводит к потерям. GIF (Graphics Interchange Format). Стандартизирован в 1987 году как средство хранения сжатых изображений с фиксированным (256) количеством цветов (расширение имени файла .GIF). Получил популярность в Интернете благодаря высокой степени сжатия. Последняя версия формата GIF89a позволяет выполнять чересстрочную загрузку изображений и создавать рисунки с прозрачным фоном. Чересстрочноя запись изображения означает, что в начале файла хранятся строки изображения с номерами, кратными восьми, затем кратными четырем и т.д. Просмотр идет с нарастающим уровнем детализации, видно приблизительное изображение до завершения полной загрузки. Ограниченные возможности по количеству цветов 44 обусловливают его применение исключительно в электронных публикациях. Основные стандарты расширения файлов .com .exe Исполняемые файлы .bat Командные файлы .txt Текстовые файлы .doc Файлы Word .xls Файлы Excel .bmp gif jpg Файлы рисунков .zip .rar .arj Архивные файлы .htm .html Файлы, используемые в Интернете Алгоритмы сжатия изображений В настоящее время не существует алгоритмов, одинаково сжимающих файлы любых форматов. Степень сжатия изображений может колебаться от 4:1 до 200:1. Различают алгоритмы сжатия с потерями качества изображения и без потерь. Суть алгоритмов сжатия без потерь в том, что при наличии больших областей однотонной закраски или однотипных узорах в растровых изображениях повторяющиеся одинаковые пиксельные области запоминают один раз и впоследствии повторяют его необходимое количество раз. При этом в исходных данных ничего не отбрасывается и не теряется. Такие алгоритмы используются в форматах TIFF или GIF. Пример такого алгоритма – LZW. Алгоритмы сжатия с потерями приходиться использовать, если имеют дело с фотографическими изображениями, у которых нет повторяющихся узоров или больших областей однотонной закраски. В растровом рисунке, который имеет много слегка отличающихся друг от друга оттенков (пикселов) большие области могут заполняться пикселами одного цвета. Важным моментов в применения сжатия с потерями является определение приемлемого уровня потерь. 45 Пример хранения одного и того же изображения в разных форматах. Пусть имеется одна и та же картинка. Формат Размер файла, в байтах PCX 886406 BMP 817974 TIF (без сжатия) 818705 TIF (LZW сжатие) 527320 PSD 817988 JPG 55707 Понятие цвета Цвет чрезвычайно важен в компьютерной графике как средство усиления зрительного впечатления и повышения информационной насыщенности изображения. Ощущение цвета формируется человеческим мозгом в результате анализа светового потока, попадающего на сетчатку глаза от излучающих или отражающих объектов. Световой поток формируется излучениями, представляющими собой комбинацию трех «чистых» спектральных цветов (красный, зеленый, синий — КЗС) и их производных (в англоязычной литературе используют аббревиатуру RGB — Red, Green, Blue). Для излучающих объектов характерно аддитивное суммируются), для цветовоспроизведение отражающих объектов (световые — излучения субтрактивное цветовоспроизведение (световые излучения вычитаются). Примером объекта первого типа является электронно-лучевая трубка монитора, второго типа — полиграфический отпечаток. Физические характеристики светового потока определяются параметрами мощности, яркости и освещенности. Визуальные параметры ощущения цвета характеризуются светлотой, то есть различимостью участков, сильнее или слабее отражающих свет. Минимальную разницу между яркостью различимых по светлоте объектов называют порогом. 46 Величина порога пропорциональна логарифму отношения яркостей. Последовательность оптических характеристик объекта (расположенная по возрастанию или убыванию), выраженная в оптических плотностях или логарифмах яркостей, составляет градацию и является важнейшим инструментом для анализа и обработки изображения. Способы описания цвета В компьютерной графике применяют понятие цветового разрешения (другое название — глубина цвета). Оно определяет метод кодирования цветовой информации для ее воспроизведения на экране монитора. Для отображения черно-белого изображения достаточно одного бита (белый и черный цвета). Восьмиразрядное кодирование позволяет отобразить 256 градаций цветового тона. Два байта (16 бит) определяют 65 536 оттенков (такой режим называют High Color). При 24-разрядном способе кодирования возможно определить более 16,5 миллионов цветов (режим называют True Color). С практической точки зрения цветовому разрешению близко понятие цветового охвата. Под цветовым охватом понимают диапазон цветов, который можно воспроизвести с помощью устройств вывода. Цвет – это точка в трехмерном пространстве. Цветовые модели расположены в трехмерной системе координат, которая образует цветовое пространство. Цвет можно выразить точкой в трехмерном пространстве. Первый закон Цветовая модель CIE Lab В1920 году была разработана цветовая пространственная модель CIE Lab (Communication Internationale de I'Eclairage — международная комиссия по освещению. L,a,b — обозначения осей координат в этой системе). Система является аппаратно независимой и потому часто применяется для переноса данных между устройствами. В модели CIE Lab любой цвет определяется светлотой (I) и хроматическими компонентами: параметром а, изменяющимся в диапазоне от зеленого до красного, и параметром b, изменяющимся в диапазоне от синего до желтого. Цветовой охват модели 47 CIE Lab значительно превосходит возможности мониторов и печатных устройств, поэтому перед выводом изображения, представленного в этой модели, его приходится преобразовывать. Данная модель была разработана для согласования цветных фотохимических процессов с полиграфическими. Сегодня она является принятым по умолчанию стандартом для программы Adobe Photoshop. Цветовая модель RGB Рис. 6. Аддитивная цветовая модель RGB Цветовая модель RGB является аддитивной, то есть любой цвет представляет собой сочетание в различной пропорции трех основных цветов — красного (Red), зеленого (Green), синего (Blue). Она служит основой при создании и обработке компьютерной графики, предназначенной для электронного воспроизведения (на мониторе, телевизоре). При наложении одного компонента основного цвета на другой яркость суммарного излучения увеличивается. Совмещение трех компонентов дает ахроматический серый цвет, который при увеличении яркости приближается к белому цвету. При 256 градационных уровнях тона черному цвету соответствуют нулевые значения RGB, а белому — максимальные, с координатами (255,255,255). Цветовая модель HSB 48 Рис. 7 Цветовая модель HSB Цветовая модель HSB разработана с максимальным учетом особенностей восприятия цвета человеком. Она построена на основе цветового круга Манселла. Цвет описывается тремя компонентами: оттенком (Hue), насыщенностью (Saturation) и яркостью (Brightness). Значение цвета выбирается как вектор, исходящий из центра окружности. Точка в центре соответствует белому цвету, а точки по периметру окружности — чистым спектральным цветам. Направление вектора задается в градусах и определяет цветовой оттенок. Длина вектора определяет насыщенность цвета. На отдельной оси, называемой ахроматической, задается яркость, при этом нулевая точка соответствует черному цвету. Цветовой охват модели HSB перекрывает все известные значения реальных цветов. Модель HSB принято использовать при создании изображений на компьютере с имитацией приемов работы и инструментария художников. Существуют специальные программы, имитирующие кисти, перья, карандаши. Обеспечивается имитация работы с красками и различными полотнами. После создания изображения его рекомендуется преобразовать в другую цветовую модель, в зависимости от предполагаемого способа публикации. 49 Цветовая модель CMYK, цветоделение Рис. 8 Цветовая модель CMYK Цветовая модель CMYK относится к субтрактивным, и ее используют при подготовке публикаций к печати. Цветовыми компонентами CMY служат цвета, полученные вычитанием основных из белого: голубой (cyan) = белый - красный = зеленый + синий; пурпурный (magenta) = белый - зеленый = красный + синий; желтый (yellow) = белый - синий = красный + зеленый. Такой метод соответствует физической сущности восприятия отраженных от печатных оригиналов лучей. Голубой, пурпурный и желтый цвета называются дополнительными, потому что они дополняют основные цвета до белого. Отсюда вытекает и главная проблема цветовой модели CMY — наложение друг на друга дополнительных цветов на практике не дает 50 чистого черного цвета. Поэтому в цветовую модель был включен компонент чистого черного цвета. Так появилась четвертая буква в аббревиатуре цветовой модели CMYK (Cyan, Magenta, Yellow, blacK). Для печати на полиграфическом оборудовании цветное компьютерное изображение необходимо разделить на составляющие, соответствующие компонентам цветоделением. цветовой В итоге модели CMYK. получают четыре Этот процесс отдельных называют изображения, содержащих одноцветное содержимое каждого компонента в оригинале. Затем в типографии с форм, созданных на основе цветоделенных пленок, печатают многоцветное изображение, получаемое наложением цветов CMYK. 51 Раздел № 5 Локальные и глобальные сети ЭВМ. Защита информации в сетях. Понятие сетей, локальные, глобальные сети, сетевые устройства. Топология сети, способы передачи информации в сети. Уровни модели связи. Интернет, службы и протоколы Интернета. Методы защиты информации, программных и аппаратных средств. Виды вирусов. Методы борьбы с Криптографические вирусами. функции, Антивирусные симметричное и программы. несимметричное кодирование, электронно-цифровая подпись. Локальные и глобальные компьютерные сети. Internet . Компьютерная сеть – это совокупность компьютеров, соединенных с помощью каналов связи и средств коммуникации в единую систему для обмена сообщениями и доступа пользователей к программным, техническим, информационным и организационным ресурсам сети. В общем случае для создания компьютерных сетей необходимо специальное оборудование) и специальное аппаратное обеспечение (сетевое программное обеспечение (сетевые программные средства). Простейшее соединение двух компьютеров для обмена данными называется прямым соединением. Архитектура сети - это реализованная структура сети передачи данных, определяющая ее топологию, состав устройств и правила их взаимодействия в сети. В рамках архитектуры сети рассматриваются вопросы кодирования информации, ее адресации передачи, управления потоком сообщений, контроля ошибок и анализа работы сети в аварийных ситуациях. Трафик – это информация, приходящая из сети, т.е. поток данных по линии связи или в сети передачи данных. 52 Базовая модель OSI Основной задачей, решаемой при создании компьютерных сетей, является обеспечение совместимости оборудования по электрическим и механическим характеристикам и обеспечение совместимости информационного обеспечения (программ и данных) по системе кодирования и формату данных. Решение этой задачи относится к области стандартизации и основано на модели OSI - модели взаимодействия открытых систем - Model of Open System Interconnections. Она создана на основе технических предложений Международного института стандартов ISO. OSI является международным стандартом для передачи данных. Понятие "открытая система" Модель OSI, как следует из ее названия (Open System Interconnection), описывает взаимосвязи открытых систем. Что же такое открытая система? В широком смысле открытой системой может быть названа любая система (компьютер, вычислительная сеть, ОС, программный пакет, другие аппаратные и программные продукты), построенная в соответствии с открытыми спецификациями. Напомним, что под термином "спецификация" (в вычислительной технике) понимают формализованное описание аппаратных или программных компонентов, способов их функционирования, взаимодействия с другими компонентами, условий эксплуатации, ограничений и особых характеристик. Понятно, что не всякая спецификация является стандартом. Под открытыми спецификациями понимаются опубликованные, общедоступные спецификации, соответствующие стандартам и принятые в результате достижения согласия после всестороннего обсуждения всеми заинтересованными сторонами. Использование при разработке систем открытых спецификаций позволяет третьим сторонам разрабатывать для этих систем различные аппаратные или программные средства расширения и модификации, а также 53 создавать программно-аппаратные комплексы из продуктов разных производителей. Если две сети построены с соблюдением принципов открытости, то это дает следующие преимущества: возможность построения сети из аппаратных и программных средств различных производителей, придерживающихся одного и того же стандарта; возможность безболезненной замены одних компонентов сети другими, что позволяет сети развиваться с минимальными затратами; возможность легкого сопряжения одной сети с другой; простота освоения и обслуживания сети. Согласно модели ISO/OSI архитектуру компьютерных сетей следует рассматривать на разных уровнях (до 7 уровней). Самый верхний уровень прикладной. На этом уровне пользователь взаимодействует с вычислительной системой. Самый нижний уровень - физический. Он обеспечивает обмен сигналами между устройствами. Обмен данными в системах связи происходит путем их перемещения с верхнего уровня на нижний, затем транспортировки и обратным воспроизведением на компьютере клиента в результате перемещения с нижнего уровня на верхний. Для обеспечения совместимости на каждом уровне архитектуры компьютерной сети действуют специальные стандарты, называемые протоколами. Они определяют характер аппаратного взаимодействия компонентов сети (аппаратные протоколы) и характер взаимодействия программ и данных (программные протоколы). Физически функции поддержки протоколов исполняют аппаратные устройства (интерфейсы) и программные средства (программы поддержки протоколов) Программы, выполняющие поддержку протоколов, также называют протоколами. Например, если два компьютера соединены между собой прямым соединением, то на низшем (физическом) уровне протокол их 54 взаимодействия определяют конкретные устройства физического порта (параллельного или последовательного) и механические компоненты (разъемы, кабели и т. д.). На более высоком уровне взаимодействие между компьютерами определяют программные средства, управляющие передачей данных через порты. Для стандартных портов они находятся в базовой системе ввода/вывода взаимодействия BIOS. обеспечивают На самом высоком приложения уровне протокол операционной системы. Например для WINDOWS 98 это программа Прямое кабельное соединение. Уровни модели связи (OSI) (как происходит обмен данными между удаленными пользователями) Системы компьютерной связи рассматривают на семи разных уровнях. Обмен данными между пользователями сети происходит следующим образом: * на прикладном уровне с помощью специальных приложений пользователь создает документ (сообщение, рисунок и т.д.): * на уровне представления операционная система компьютера пользователя фиксирует, где находятся созданные данные ( в оперативной памяти, в файле на жестком диске и т.п.) и обеспечивает взаимодействие со следующим уровнем: * на сеансовом уровне компьютер пользователя взаимодействует с локальной или глобальной сетью. Протоколы этого уровня проверяют права пользователя на "выход в эфир" и передают документ к протоколам транспортного уровня: * на транспортном уровне документ преобразуется в ту форму, в которой положено передавать данные в сети. сетевой уровень определяет маршрут движения данных в сети, например, если на транспортном уровне данные были нарезаны на пакеты, то на сетевом уровне каждый пакет должен получить адрес, по которому он должен быть доставлен независимо от прочих пакетов; 55 уровень соединения необходим для того, чтобы промодулировать сигналы, циркулирующие на физическом уровне, в соответствии с данными, полученными с сетевого уровня. в компьютере эти функции выполняет сетевая карта или модем; реальная передача данных происходит на физическом уровне, здесь нет ни документов, пакетов, ни байтов - только биты. Средства физического уровня лежат за пределами компьютеров. Это телефонные модемы, линии телефонной связи и т.п. На компьютере получателя информации происходит обратный процесс преобразования данных от битовых сигналов до документов. Сетевые устройства и средства коммуникаций В качестве средств коммуникации используются витая пара, коаксиальный кабель, оптоволоконные линии. Сетевая карта Платы сетевого адаптера выступают в качестве физического интерфейса, они вставляются в специальные гнезда (слоты) компьютеров. Назначение платы сетевого адаптера: - подготовка данных, поступающих с компьютера к передаче по сетевому кабелю - передача данных другому компьютеру - управление потоком данных между компьютером и кабельной системой - плата сетевого адаптера принимает данные из сетевого кабеля и переводит в форму, понятную ЦП Коннекторы (соединители) – служат для подключения кабелей к компьютеру, разъемы – для соединения отрезков кабеля. Трансиверы повышают уровень качества передачи данных по кабелю, отвечают за прием сигналов из сети и обнаружение конфликтов Хабы (концентраторы) и коммутирующие хабы (коммутаторы) расширяют топологические , функциональные и скоростные возможности 56 компьютерных сетей. Хаб с набором различных портов может объединять сегменты сетей с различными кабельными системами. К порту хаба можно подключать отдельный узел сети или другой хаб или сегмент кабеля. Повторители (репиторы) усиливают сигналы, передаваемые по кабелю при его большой длине. Применительно к сетям рабочей станцией называется ПК в сети, ПК, на котором установлено сетевое аппаратное и программное обеспечение. Сети соединяются между собой специальными устройствами, называемыми маршрутизаторами. Маршрутизатор — это устройство, которое собирает информацию о топологии межсетевых соединений и пересылает пакеты сетевого уровня в сеть назначения. Чтобы передать сообщение от отправителя, находящегося в одной сети, получателю, находящемуся в другой сети, нужно совершить некоторое количество транзитных передач между сетями, или хопов (от слова hop — прыжок), каждый раз выбирая подходящий маршрут. Таким образом, маршрут представляет собой последовательность маршрутизаторов, через которые проходит пакет. Локальные вычислительные сети В соответствии с используемыми протоколами компьютерные сети принято разделять на локальные сети и глобальные сети. Компьютеры локальной сети преимущественно используют единый комплект протоколов для всех участников. По территориальному признаку локальные сети отличаются компактностью. Они могут объединять компьютеры одного помещения, этажа, здания или компьютеры, расположенные в пределах нескольких километров. В локальной сети рабочие места сотрудников объединяются в единую систему. Достоинства локальных сетей: 1 Разделение ресурсов (можно пользоваться одним принтером со всех рабочих мест) 2 Разделение данных (появляется возможность доступа к базам данных со всех рабочих мест) 57 3 Разделение программных средств (появляется возможность одновременно использовать ранее установленные программы) 4 Разделение ресурсов процессора (ресурсы процессора используют через специальный процессор, доступный каждому компьютеру) 5 Многопользовательский режим (одновременное использование централизованных прикладных программ) Сервер – это программа, предоставляющая определенные услуги другим программам, которые называются клиентами. Клиент – это программа, использующая определенные услуги другой программы. Программа-сервер и программы-клиенты могут находиться на одном или на разных компьютерах. Сервером часто называют компьютер, на котором установлена программа-сервер. Трафик – поток данных по линии связи или в сети передачи данных Одноранговая сеть В ней все компьютеры равноправны: нет иерархии среди компьютеров и нет выделенного сервера. Каждый компьютер работает как клиент и как сервер. В одноранговой сети не больше 10 компьютеров, они дешевле сетей на основе сервера, но нужны при этом более мощные компьютеры. Сети на основе сервера В большинстве сетей используются выделенные серверы. Выделенным называется такой ПК, который работает только как сервер. Он может быстро обрабатывать запросы от клиентов. Существуют файл – серверы, принт – серверы и серверы – приложений. Файл – сервер обеспечивает доступ к файлам, принт-сервер – к принтерам. На серверах приложений выполняются прикладные части клиент-серверских приложений и находятся данные. В сервере приложений на запрашиваемый компьютер посылается только результаты запроса (а не 58 вся база). Главное в сети с выделенным сервером – это защита данных, в целях безопасности ею занимается один администратор. Глобальные сети имеют увеличенные географические размеры. Они могут объединять как отдельные компьютеры, так и отдельные локальные сети, в том числе и использующие различные протоколы. Назначение всех видов компьютерных сетей определяются двумя функциями: * обеспечение совместного использования аппаратных и программных ресурсов сети; * обеспечение совместного доступа к ресурсам данных. Совокупность приемов разделения и ограничения прав участников компьютерной сети называется политикой сети. Управление сетевыми политиками (их может быть несколько) в сети называется администрированием сети. Лицо, которое управляет организацией работы участников сети называется системным администратором. В локальных сетях соединение происходит с помощью традиционных каналов связи: кабельных, спутниковых, релейных, даже телефонных, хотя последние менее предпочтительные. Для связи между несколькими локальными сетями, которые работают по разным протоколам, служат специальные средства, называемые шлюзами. Шлюзы могут быть аппаратными и программными, преобразуется поступившее в другое в шлюз сообщение, сообщение от соответствующее одной сети требованиям следующей сети, т.е. несколько сетей могут работать как единая сеть. Методы передачи информации в сети Метод коммутации каналов предполагает установление физической связи между источником и приемником информации на основе отдельных соединений сети на период передачи всего сообщения. Соединительные линии сети на время передачи блокируется; Метод коммутации сообщений в отличие от коммутации каналов на период передачи сообщений физически резервирует не весь путь 59 передачи, а только соединение между двумя ближайшими узлами сети и только на время передачи сообщения; Метод коммутации пакетов состоит в том, что поступающая от источника информация разбивается в интерфейсных процессорах на пакеты фиксированной длины, снабжаемые маркерами адреса отправителя, адреса приемника и номера самого пакета в сообщении. Сформированные пакеты передаются в сети как независимые сообщения и, поступая в узел коммутации пакетов, накапливаются в буферах каналов связи. В пункте назначения интерфейсный процессор формирует из пакетов сообщение. Топологии вычислительной сети Топология типа звезда - в ней вся информация между двумя периферийными рабочими компьютерами идет через центральный узел вычислительной сети. Топология в виде звезды – наиболее быстродействующая из всех топологий, но производительность ее зависит от мощности сервера. Файловый сервер Кольцевая топология. В этом случае рабочие станции связаны одна с другой по кругу, последняя связана с первой. Рабочая станция получает из кольца запрос и посылает по конечному адресу информацию. Сообщения посылаются одно за другим. Основная проблема заключается в том, что если одна станция выйдет из строя, работа сети парализуется. 60 файловый сервер Шинная топология. В этом случае сеть – это коммуникационный путь, к нему подключены все рабочие станции, можно подключать и отключать рабочие станции без перерыва работы сети. На одном участке могут встретиться два идущих навстречу пакета, произойдет конфликт оборудования и пакеты будут потеряны. Древовидная структура – одна из комбинированных структур, образуется в виде комбинаций вышеназванных топологий. Основание дерева (корень) располагается в точке, в которой собираются ветви. Используются в случае, если невозможно использование базовых сетевых структур. 61 Появление стандартных технологий локальных сетей В середине 80-х годов утвердились стандартные технологии объединения компьютеров в сеть — Ethernet, Arcnet, Token Ring, Token Bus, несколько позже — FDDI. Все стандартные технологии локальных сетей опирались на тот же принцип коммутации, который был с успехом опробован и доказал свои преимущества при передаче трафика данных в глобальных компьютерных сетях — принцип коммутации пакетов. Стандартные сетевые технологии сделали задачу построения локальной сети почти тривиальной. Для создания сети достаточно было приобрести сетевые адаптеры соответствующего стандарта, например Ethernet, стандартный кабель, присоединить адаптеры к кабелю стандартными разъемами и установить на компьютер одну из популярных сетевых операционных систем, например Novell NetWare. После этого сеть начинала работать, и последующее присоединение каждого нового компьютера не вызывало никаких проблем — естественно, если на нем был установлен сетевой адаптер той же технологии. 62 В 80-е годы были приняты основные стандарты на коммуникационные технологии для локальных сетей: в 1980 году — Ethernet, в 1985 — Token Ring, в конце 80-х — FDDI. Это позволило обеспечить совместимость сетевых операционных систем на нижних уровнях, а также стандартизировать интерфейс ОС с драйверами сетевых адаптеров. Конец 90-х выявил явного лидера среди технологий локальных сетей — семейство Ethernet, в которое вошли классическая технология Ethernet 10 Мбит/c, а также Fast Ethernet 100 Мбит/c и Gigabit Ethernet 1000 Мбит/c. Простые алгоритмы работы предопределили низкую стоимость оборудования Ethernet. Широкий диапазон скоростей позволяет рационально строить локальную сеть, применяя ту технологию, которая в наибольшей степени отвечает задачам предприятия и потребностям пользователей. Важно также, что все технологии Ethernet очень близки друг другу по принципам работы, что упрощает обслуживание и интеграцию построенных на их основе сетей. Начало 80-х годов связано с еще одним знаменательным для истории сетей событием — появлением персональных компьютеров. Эти устройства стали идеальными элементами для построения сетей: с одной стороны, они были достаточно мощными для работы сетевого программного обеспечения, а с другой — явно нуждались в объединении вычислительной мощности для решения сложных задач, а также разделения дорогих периферийных устройств и дисковых массивов. Поэтому персональные компьютеры стали активно использоваться в локальных сетях, причем не только в качестве клиентских компьютеров, но и в качестве центров хранения и обработки данных, то есть сетевых серверов, потеснив с этих ролей мини-компьютеры и мэйнфреймы. Сетевые операционные системы В 90-е годы практически все операционные системы, занимающие заметное место на рынке, стали сетевыми. Сетевые функции сегодня встраиваются в ядро ОС и являются его неотъемлемой частью. Операционные системы получили средства для работы со всеми основными 63 технологиями локальных (Ethernet, Fast Ethernet, Gigabit Ethernet, Token Ring, FDDI, ATM) и глобальных (X.25, frame relay, ISDN, ATM) сетей, а также средства для создания составных сетей (IP, IPX, AppleTalk, RIP, OSPF, NLSP). Во второй половине 90-х годов все производители операционных систем резко усилили поддержку средств работы с Internet (кроме производителей Unix-систем, в которых эта поддержка всегда была существенной). Кроме самого стека TCP/IP в комплект поставки начали включать утилиты, реализующие такие популярные сервисы Internet как telnet, ftp, DNS и Web. Влияние Internet проявилось и в том, что компьютер превратился из вычислительного устройства в средство коммуникаций с развитыми вычислительными возможностями. На современном этапе развития операционных систем на передний план вышли средства обеспечения безопасности. Это обусловлено возросшей ценностью информации, обрабатываемой компьютерами, а также повышенным уровнем риска, связанного с передачей данных по сетям, особенно по общедоступным, таким как Internet. Многие операционные системы обладают сегодня развитыми средствами защиты информации, основанными на шифровании данных, аутентификации и авторизации. Современным операционным системам присуща многоплатформенность, то есть способность работать на компьютерах различного типа. Типы построения сетей Локальная сеть Token Ring – метод управления маркерное кольцо, т. е. устройства подключаются по топологии кольцо, все устройства в сети могут передавать данные, только получив разрешение на передачу (маркер). Локальная сеть Ethernet – в ней на логическом уровне применяется шинная топология, все устройства равноправны и данные, передаваемые одной станцией доступны всем станциям сети. 64 Extranet –экстранет – расширенная интрасеть. Это корпоративная сеть, в которой используется технология Интернета для связи с деловыми партнерами. Сеть Интранет - интрасеть – корпоративная сеть – локальная вычислительная сеть организации, использующая стандарты, технологии и ПО Интернета, в частности протоколы HTTP, FTP. Обычно эта сеть соединена с Интернетом через специальное оборудование (брандмауэр), который защищает ее от несанкционированного доступа, этой сетью обычно пользуются только сотрудники организации Сеть H.323 – это сеть стандарта Р.323 Интернет. Основные понятия. Интернет - это Всемирная компьютерная сеть, состоящая из нескольких миллионов компьютеров, связанных друг с другом всевозможными физическими линиями связи. Интернет в более широком смысле - это информационное пространство, внутри которого осуществляется непрерывная циркуляция данных. Днем рождения Интернета стала дата стандартизации основного протокола связи Интернет TCP/IP в 1983 году. Сетевой протокол – это протокол, определяющий правила взаимодействия между собой отдельных компьютеров компьютерной сети.. Протокол TCP - протокол транспортного уровня. Он управляет тем, как происходит передача информации, предназначен для контроля передачи целостности передаваемой информации. Согласно протоколу TCP, отправляемые данные "нарезаются" на небольшие пакеты, после чего каждый пакет маркируется таким образом, чтобы в нем были данные, необходимые для правильной сборки документа на компьютере. Протокол IP - адресный. Он принадлежит сетевому уровню и определяет, куда происходит передача, этот протокол описывает формат пакета данных. (где адрес, где служебная информация, где данные). 65 Суть адресного протокола IP состоит в том, что у каждого участника Всемирной сети должен быть свой уникальный адрес. Без этого нельзя говорить о точной доставке TCP пакетов в нужное место. Этот адрес выражается четырьмя байтами. Каждый компьютер, через который проходит TCP-пакет, может по этим четырем байтам определить, кому из соседей надо переслать пакет, чтобы он оказался ближе к получателю. Каждый компьютер, подключенный к сети, имеет два равноценных уникальных адреса: цифровой IP-адрес и символический доменный адрес. Доменное имя – это уникальный набор символов, который позволяет ассоциировать ресурс, работающий в сети Интернет, с сервером (в частности с его IP-адресом), на котором он расположен. Международная организация Сетевой Информационный Центр выдает группы адресов владельцам локальных сетей, которые распределяют конкретные адреса по своему усмотрению. В доменной системе имен разбор адреса идет справа налево: Topsoft.minsk.by By – указывает на страну - Белоруссия Minsk – город, в котором находится организация Topsoft – имя организации, которой принадлежит адрес. Каждая группа, имеющая домен, может создавать и изменять адреса, находящиеся под ее контролем, например, добавить новое имя Petrov, в описание адресов своего домена. Домен верхнего уровня является самым правым. Домены верхнего уровня называются организационными, они бывают коммерческими, образовательными, военными, географическими .com .net .org .biz .info .gov .edu .mil .ru .us и т.д. Адрес электронной почты состоит из двух частей, разделенных символом @. Справа указан адрес компьютера, на котором располагается почтовое отделение абонента, а слева указывается имя абонента, например [email protected]. Уникальный номер IP-адреса – это например 192.112.36.42 - эти числа определяют сеть и компьютер, откуда пакет отправлен. При работе в 66 Интернете используют службы Интернета. Разные службы имеют разные протоколы. Они называются прикладными протоколами. Чтобы воспользоваться какой-либо службой Интернета нужно установить на компьютере программу, способную работать по протоколу данной службы. Такие программы называются клиентскими. Для передачи файлов в Интернете используют специальный протокол FTP, т.е., чтобы получить файл из Интернета, нужно иметь на компьютере программу, являющуюся клиентом FTP и установить связь с сервером, предоставляющем услуги FTP. К службам (сервисам) Интернета относятся: * служба удаленного управления компьютером Telnet; * электронная почта (E-Mail); * списки рассылки; * служба телеконференций Usenet; * служба World Wide Web (WWW), самая популярная служба современного Интернета, которую часто отождествляют с Интернетом; * служба передачи файлов FTP; * служба IRC общения нескольких человек в реальном времени; * служба ICQ для поиска сетевого IP-адреса человека, подключенного в данный момент к Интернету. (IRC ICQ общение в реальном времени) Служба World Wide Web - это единое информационное пространство, состоящее из сотен миллионов взаимосвязанных электронных документов, хранящихся пространство на Web-серверах. Web, называют Отдельные документы, Web-страницами. Группы составляющие тематически объединенных Web-страниц называют Web-узлами. От обычных текстовых документов Web-страницы отличаются тем, что они оформлены без привязки к конкретному носителю. Поэтому Web-документы не могут иметь "жесткого" форматирования. Программы для просмотра Web-страниц называют браузерами. 67 Виды поисковых систем: Yandex, Rambler, Ay, Yahoo,Google, MSN, Апорт – предметные каталоги, Alta Vista – автоматическая поисковая система. Для работы в Интернете необходимо: 1 физически подключить компьютер к одному из узлов Всемирной сети; 2 получить IP-адрес на постоянной или временной основе; 3 установить и настроить программное обеспечение – программыклиенты тех служб Интернета, услугами которых предполагается пользоваться. Краткие определения Унифицированный указатель ресурса URL Адрес любого файла во всемирном масштабе определяется URl, который состоит из трех частей: 1 указание службы, которая осуществляет доступ к данному ресурсу, обычно это имя протокола, соответствующего службе http:// 2 указание доменного имени ПК, на котором хранится данный ресурс www.abcd.com 3 указание полного пути доступа к файлу на данном ПК (разделитель /) /Files/New/abcdf/zip Итак, получаем http:// www.abcd.com/Files/New/abcdf.zip Прокси-сервер – (почти сервер), программа, которая принимает запросы от клиентов и передает их во внешнюю сеть. ПК локальной сети имеют внутренние адреса, а прокси-сервер имеет внешний адрес и ограниченные возможности сервера. Через прокси-сервер работать быстрее, т.к. часто используемые программы лежат на прокси-сервере, прокси-сервер защищает от незаконного проникновения в сеть и вирусов. 68 Провайдер – человек, который владеет частью локальной сети, имеет необходимое аппаратное и программное обеспечение, IP-адреса. Модератор – человек, имеющий более широкие права по сравнению с пользователями на общественных сетевых ресурсах. Администратор ВС – сотрудник, отвечающий за работу сети на предприятии, проектирует сеть, проверяет эффективность ее использования и продумывает и обеспечивает политику защиты информации. Хостинг – услуга по предоставлению дискового пространства для физического размещения информации на сервере. Хеширование – преобразование входного массива данных произвольной длины в выходную битовую строку фиксированной длины таким образом, что изменение входных данных приводит к непредсказуемому изменению входных данных. Кэширование – сохранение информации. DNS (Domain Name System) – служба, которая соотносит доменное имя с IP-адресом. RFC (Request for Comments) – документ, содержащий технические спецификации и стандарты Интернета. Гипер-куб – сетевая технология (Интернета), в которой узлы являются вершинами графа многомерного куба: 0-куб-точка, 1-куб – отрезок, 2- куб – квадрат, 3-куб – куб, 4-куб – октахарон и т.д. Поисковая система – web-сайт, дающий возможность поиска информации в Интернете. Yandex, Rambler, Ay, Yahoo, Google, MSN, Апорт. Поисковая машина – комплекс программ, который обеспечивает функциональность поисковой машины. Поисковые системы можно сравнить со справочной службой, агенты которой обходят предприятия, собирая информацию в базу данных. При обращении в службу информация выдается из этой базы. Данные в базе устаревают, поэтому агенты их периодически обновляют. Некоторые 69 предприятия сами присылают данные о себе, и к ним агентам приезжать не приходится. Иными словами, справочная служба имеет две функции: создание и постоянное обновление данных в базе и поиск информации в базе по запросу клиента. Аналогично, поисковая машина состоит из двух частей: так называемого робота (или паука), который обходит серверы Сети и формирует базу данных поискового механизма. База робота в основном формируется им самим (робот сам находит ссылки на новые ресурсы) и в гораздо меньшей степени - владельцами ресурсов, которые регистрируют свои сайты в поисковой машине. Помимо робота (сетевого агента, паука, червяка), формирующего базу данных, существует программа, определяющая рейтинг найденных ссылок. Принцип работы поисковой машины сводится к тому, что она опрашивает свой внутренний каталог (базу данных) по ключевым словам, которые пользователь указывает в поле запроса, и выдает список ссылок, ранжированный по релевантности. Следует отметить, что, отрабатывая конкретный запрос пользователя, поисковая система оперирует именно внутренними ресурсами (а не пускается в путешествие по Сети, как часто полагают неискушенные пользователи), а внутренние ресурсы, естественно, ограниченны. Несмотря на то, что база данных поисковой машины постоянно обновляется, поисковая машина не может проиндексировать все Web-документы: их число слишком велико. Поэтому всегда существует вероятность, что искомый ресурс просто неизвестен конкретной поисковой системе. Эту мысль наглядно иллюстрирует рис. Эллипс 1 ограничивает множество всех Web-документов, существующих на некоторый момент времени, эллипс 2 - все документы, которые проиндексированы данной поисковой машиной, а эллипс 3 - искомые документы. Таким образом, найти с помощью данной поисковой машины можно лишь ту часть искомых документов, которые ею проиндексированы. 70 Схема, поясняющая возможности поиска Проблема недостаточности полноты поиска состоит не только в ограниченности внутренних ресурсов поисковика, но и в том, что скорость робота ограниченна, а количество новых Web-документов постоянно растет. Увеличение внутренних ресурсов поисковой машины не может полностью решить проблему, поскольку скорость обхода ресурсов роботом конечна. При этом считать, что поисковая машина содержит копию исходных ресурсов Интернета, было бы неправильно. Полная информация (исходные документы) хранится отнюдь не всегда, чаще хранится лишь ее часть - так называемый индексированный список, или индекс, который гораздо компактнее текста документов и позволяет быстрее отвечать на поисковые запросы. Для построения индекса исходные данные преобразуются так, чтобы объем базы был минимальным, а поиск осуществлялся очень быстро и давал максимум полезной информации. Объясняя, что такое индексированный список, можно провести параллель с его бумажным аналогом - так 71 называемым конкордансом, т.е. словарем, в котором в алфавитном порядке перечислены слова, употребляемые конкретным писателем, а также указаны ссылки на них и частота их употребления в его произведениях. Очевидно, что конкорданс (словарь) гораздо компактнее исходных текстов произведений и найти в нем нужное слово намного проще, нежели перелистывать книгу в надежде наткнуться на нужное слово. Программы браузеры – Internet Explorer , Opera, Mozilla, Netscape Navigator. Internet Explorer включает два протокола: протокол передачи файлов FTP и протокол передачи гипертекста HTTP. Почтовые Microsoft Outlook, программы: Mail, Outlook Express, The Bat, Google gmail, Eudora pro. Протоколы почтовой службы: SMTP – отправка почтовых сообщений POP – прием почтовых сообщений POP3 - прием почтовых сообщений IMAP – можно использовать этот протокол при приеме почты с других ПК. Вопросы компьютерной безопасности Понятие о компьютерной безопасности В вычислительной технике понятие безопасности подразумевает надежность работы компьютера, сохранность ценных данных, защиту информации от внесения в нее изменений неуполномоченными лицами и сохранение тайны переписки в электронной связи. Комплексное обеспечение информационной безопасности Для обеспечения информационной безопасности необходимо обеспечить защиту программ и данных, защиту операционных систем, защиту в сетях, защиту в СУБД. Для этого используются криптография программные и аппаратные способы защиты, другие технические средства. 72 Комплексное обеспечение информационной безопасности автоматизированных систем – это область науки и техники, охватывающая совокупность криптографических, программно-аппаратных, технических, правовых и организационных методов и средств обеспечения безопасности информации при ее обработке, хранении и передачи с использованием современных информационных технологий. Методы защиты информации Широкое использование информационных технологий во всех сферах жизни современного общества делает вполне закономерной и актуальной проблему защиты информации, или иначе, проблему информационной безопасности. В методологии анализа выделяют следующие основные информационной безопасности понятия: объект информационной безопасности; существующие и потенциально возможные угрозы данному объекту; обеспечение информационной безопасности объекта от таких угроз. Если объектом информационной безопасности выступает сама информация, то для нее наиболее важным является сохранение таких свойств, как Целостность целостность, информации конфиденциальность – это существование и доступность. информации в неискаженном виде по сравнению с некоторым фиксированным состоянием. Конфиденциальность – это свойство, которое указывает на необходимость введения ограничений доступа к данной информации определенного круга лиц. Доступность информации – это свойство обеспечивать своевременный и беспрепятственный доступ пользователей к необходимой информации. Защитить информацию означает: обеспечить ее физическую целостность, не допустить подмены элементов информации при сохранении ее целостности, не допустить несанкционированного получения информации лицами или процессами, не имеющими для этого полномочий, иметь уверенность в том, что передаваемые владельцем информации ресурсы будут использоваться только в соответствии с договоренностями. Защита информации – это процесс создания условий, которые обеспечивают 73 необходимую защищенность информации. Информационная безопасность – это достигнутое состояние такой защищенности. Угрозы информационной безопасности в компьютерных системах Угроза информационной безопасности КС – это потенциально возможное событие, действие, процесс или явление, которое может оказать нежелательное воздействие на систему и информацию, которая хранится и обрабатывается в системе. Компьютерная система как объект защиты представляет собой совокупность следующих компонент: информационных массивов на машинных носителях, технических средств обработки и передачи данных, программных средств, обслуживающего персонала и пользователей системы. Методы защиты информации Применительно к КС выделяют следующие уровни защиты: охрана по периметру территории объекта, охрана по периметру здания, охрана помещения, защита аппаратных средств, защита программных средств, непосредственная защита информации. Средства обеспечения защиты информации Организационные средства защиты сводятся к правилам доступа к информационным и вычислительным ресурсам. Организационные мероприятия создают надежный механизм защиты против злоумышленных или халатных действий пользователей и персонала. Инженерно-технические средства защиты технологические, включают в себя физико-технические, аппаратные, программные, криптографические средства. средства обеспечивают следующие рубежи защиты: территория, информации. здание, отдельные устройства Программно-аппаратные средства контролируемая вместе с защиты непосредственно в КС. Специальные пакеты программ Данные носителями применяются реализуют такие функции защиты, как разграничение и контроль доступа к ресурсам, регистрация и анализ протекающих процессов, предотвращение возможных разрушительных воздействий на ресурсы. Идентификация и аутентификация 74 пользователей и процессов. Существенное повышение информационной безопасности, особенно при передаче данных в компьютерных сетях, достигается применением средств криптографической защиты. Защита КС от несанкционированного вмешательства Политика безопасности – это совокупность норм и правил, выполнение которых обеспечивает защиту от определенного множества угроз и оставляет необходимое условие безопасности системы. Принято считать, что информационная безопасность компьютерных систем обеспечена, если для любых информационных ресурсов в системе поддерживается определенный целостности доступности. и уровень Для конфиденциальности, защиты информации от несанкционированного доступа (НСД) создается система разграничения доступа. В системе разграничения доступа по отношению к любому субъекту доступа (пользователю, программе, техническому средству) существуют такие этапы доступа: идентификация субъектов и объектов доступа, установление подлинности (аутентификация), определение полномочий для последующего контроля и разграничения доступа к компьютерным системам. Идентификация необходима для закрепления за каждым субъектом доступа уникального имени в виде номера, шифра, кода и т.п. Основными и наиболее часто применяемыми методами установления подлинности пользователей являются методы, основанные на использовании паролей. Эффективность парольных методов может быть существенно повышена путем записи в зашифрованном виде длинных и нетривиальных паролей. Представление паролей в зашифрованном виде ведется с использованием криптографии. Разграничение доступа заключается в том, чтобы каждому зарегистрированному пользователю предоставлялась возможность доступа к информации в пределах доступа его полномочий и не более. Для каждого пользователя устанавливаются его полномочия в отношении доступных файлов, каталогов логических дисков и др. Разграничение доступа 75 происходит по уровням секретности, по специальным спискам, по матрицам полномочий, по специальным мандатам. Очень эффективным методом защиты от несанкционированного доступа является создание функционально-замкнутых сред пользователей. Суть его состоит в следующем. Для каждого пользователя создается меню, в которое он попадает после загрузки операционной системы. В нем указываются программы, к выполнению которых допущен пользователь. После выполнения любой программы из меню пользователь снова попадает в меню. Если эти программы не имеют возможности инициировать выполнение других программ, а также предусмотрена корректная обработка ошибок, сбоев и отказов, то пользователь не может выйти за рамки установленной замкнутой функциональной среды. Защита программных средств от несанкционированного копирования Угроза несанкционированного копирования информации блокируется двумя группами методов: - методы, затрудняющие считывание скопированной информации -методы, препятствующие использованию информации Методы первой группы основаны на создании в процессе записи информации на носители таких особенностей, которые не позволяют считывать полученную копию на других носителях, не входящих в состав защищаемой КС. Вторая группа методов противодействия копированию затрудняет использование полученных копированием программ и данных. Наиболее эффективным в этом отношении средством защиты является хранение информации в преобразованном криптографическими методами виде. Защита от несанкционированного изменения структуры КС в процессе эксплуатации При эксплуатации КС неизменность аппаратной и программной структуры требует предотвращения несанкционированного доступа к аппаратной и программной частям КС. Организация доступа 76 обслуживающего пользователей. персонала По отличается возможности от организации устройство доступа освобождается от конфиденциальной информации и отключаются все информационные связи. Техническое обслуживание выполняется под контролем должностного лица. Одним из возможных путей несанкционированного изменения технической структуры КС является подключение незарегистрированных устройств или замена ими штатных устройств КС. Для предотвращения этих угроз используются методы: регулярная проверка конфигурации системы, использование идентификаторов для установления подлинности устройства. Контроль целостности программ и данных Под контролем целостности программ и данных, хранимых в КС, понимается обнаружении их любых модификаций. В общем случае контроль информационной целостности достигается путем определения характеристики целостной (эталонной) информации, называемой эталонной характеристикой, или эталонным кодом обнаружения модификаций. Эта эталонная характеристика контролируемой по информации, своему а ее объему значение значительно отражает меньше содержимое защищаемых от изменения данных. В процессе непосредственного контроля информационной целостности выполняются следующие действия: -для контролируемой информации определяется текущая характеристика обнаружения изменений по тому алгоритму, по которому формировалась эталонная характеристика; -текущая и эталонная характеристика сравниваются. Если они совпадают, то считается, что контролируемая информация не изменялась. Наиболее простым алгоритмом является контрольное суммирование. В этом случае эталонная характеристика создается путем поразрядного суммирования с накоплением по модулю два всех двоичных слов, образующих контролируемый файл. При этом разрядность контрольной суммы равна разрядности двоичного слова. Регистрация и контроль действий пользователя 77 Для своевременного пресечения несанкционированных действий, для контроля за соблюдением правил доступа необходимо обеспечить регулярный сбор, фиксацию и выдачу по запросам сведений о всех обращениях к защищаемым компьютерным ресурсам, о входе и выходе из системы. Основной формой регистрации является программное ведение специальных регистрационных журналов в виде файлов на внешних носителях информации. Доступ к ним имеет только администратор системы защиты. При регистрации сведений по обращению к КС рекомендуется фиксировать: время поступления запроса, идентификатор пользователя, идентификатор компьютера, с которого поступил запрос, содержание сообщения в составе запроса, полномочия пользователей, пароли, ключи, время окончания использования ресурса. При обработке секретной информации необходимо ведение «ручного» журнала. Имея в журналах необходимые сведения, можно в любой момент получить статистические данные относительно компьютера, пользователей и программ, сведения о результатах выполнения запросов и использовании запрашиваемых ресурсов. При обнаружении несанкционированных действий пользователей и программ, нарушении работоспособности программно-аппаратных средств для службы безопасности КС должна быть предусмотрена сигнализация, содержащая информацию о самом факте НСД, сообщение о месте, времени и характере события, устройствах, информацию связанных с о пользователях, возникновением НСД. программах Для или пресечения злоумышленных действий важное значение имеет преимущество во времени. Для этого создаются специальные программы, имитирующие нормальную работу с нарушителем. Криптографические методы защиты информации Суть криптографической защиты заключается в преобразовании информации к неявному виду с помощью специальных алгоритмов либо аппаратных средств и соответствующих кодовых ключей. Именно так 78 устанавливается подлинность документов с помощью электронной цифровой подписи. Криптографические преобразования связаны с шифрованием и дешифрованием информации. При шифровании с помощью правил, содержащихся в шифре, происходит преобразование защищаемой информации к неявному виду. Дешифрование – обратный процесс, т.е. преобразование шифрованного сообщения в исходную информацию. Кроме этого существуют другие методы криптографического преобразования: шифрование, стенография, кодирование, рассечение/разнесение, сжатие. При шифровании подвергается обратимым преобразованиям, в каждый символ математическим, результате которых защищаемого логическим исходная сообщения или другим информация представляется в виде хаотического набора букв, цифр и других символов. Стенография, в отличие от других методов преобразования информации, позволяет скрыть не только смысл информации, но и сам факт хранения или передачи закрытой информации. В КС практическое использование стенографии только начинается, но этот метод защиты информации считается перспективным. В основе всех методов стенографии лежит маскирование закрытой информации среди открытых файлов. Кодирование широко используется для защиты информации от искажений в каналах связи. Обычно кодирование связано с заменой смысловых конструкций исходной информации алфавитно-цифровыми кодами. В этом случае для кодирования и обратного преобразования используются специальные таблицы или словари, хранящиеся в секрете, при этом кодировочные таблицы необходимо часто менять. Рассечение/разнесение заключается в том, что массив защищаемых данных делится (рассекается) на такие элементы, каждый из которых в отдельности не позволяет раскрыть содержание защищаемой информации. Выделенные таким образом элементы данных разносятся по разным зонам ЗУ или располагаются на различных носителях. Целью сжатия является сокращение объема информации, но в то 79 же время сжатая информация не может быть использована без обратного преобразования, но этот метод нельзя считать надежным. Шифрование данных широко используется в Интернете для защиты информации, хотя исключить доступ к информации посторонних лиц невозможно даже теоретически. Симметричное и несимметричное шифрование информации К документу применяется некий метод шифрования (ключ), после этого документ становится недоступен для чтения обычными средствами. Его может прочитать только тот, кто знает ключ. Аналогично происходит шифрование и ответного сообщения. Если в процессе обмена информацией для шифрования и чтения пользуются одним и тем же ключом, то такой криптографический процесс называется симметричным. Основной недостаток симметричного процесса заключается в том, что, прежде чем начать процесс обмена информацией, надо выполнить передачу ключа, а для этого нужна защищенная связь, т.е. проблема повторяется, хотя и на другом уровне. В настоящее время в Интернете чаще используют несимметричные криптографические системы. Они основаны на использовании двух ключей. Компания создает для работы с клиентами два ключа: открытый и закрытый. На самом деле это две половинки одного целого ключа, связанные друг с другом. Ключи устроены так, что сообщение, зашифрованное одной половинкой, можно расшифровать только другой половинкой, не той, которой было зашифровано. Создав пару ключей, компания широко распространяет публичный ключ и надежно сохраняет закрытый ключ. Публичный ключ может быть опубликован на сервере и всем доступен. С его помощью можно зашифровать и послать в компанию сообщение, но расшифровать его может только тот, у кого есть закрытый ключ. Естественно существует реальная угроза реконструирования закрытого ключа, важно, чтобы этого нельзя было сделать в приемлемые сроки. В этом состоит принцип достаточной защиты: он предполагает, что защита не абсолютна и 80 приемы ее снятия известны, но она все же достаточна для того, чтобы сделать это мероприятие нецелесообразным. Электронная цифровая подпись Электронная цифровая подпись – это метод удостоверения подлинности сообщения. Он основан на применении шифрования открытым ключом. Суть метода: Отправитель сообщения кодирует сообщение S своим закрытым ключом и отправляет получателю подписанное сообщение, т.е. само сообщение S и его код C. Получатель сообщения еще раз кодирует код C с помощью открытого ключа отправителя. При этом он получает сообщение S/. Если S и S/ совпали , это значит, что нешифрованное сообщение S не было искажено злоумышленником при передаче и действительно было отправлено отправителем, который опубликовал свой открытый ключ. Подделать ЭЦП практически невозможно. Защита операционной системы от несанкционированного доступа и разрушений Основные функции защиты операционной системы 1. Разграничение доступа. Каждый пользователь имеет доступ только к тем объектам операционной системы, к которым ему предоставлен доступ в соответствии с текущей политикой безопасности. 2. Идентификация и аутентификация. Ни один пользователь не может начать работу с операционной системой, не идентифицировав себя и не предоставив системе аутентификационную информацию, подтверждающую, что пользователь тот, за кого себя выдает. Для идентификации пользователь должен ввести свое имя, а для аутентификации ввести пароль - текстовую строку, известную только ему. Имя пользователя назначается администратором системы. 3.Аудит. Общие сведения 81 Процедура аудита применительно к операционным системам заключается в регистрации в специальном журнале, называемом журналом аудита или журналом безопасности, событий, которые могут представлять опасность для операционной системы. Пользователи системы, обладающие правом чтения этого журнала, называются аудиторами. Необходимость включения в защищенную операционную систему функций аудита диктуется следующими обстоятельствами. 1. Подсистема защиты операционной системы, не обладая интеллектом, не способна отличить случайные ошибки пользователей от злонамеренных действий. Например, то, что пользователь в процессе входа в систему ввел неправильный пароль, может означать как случайную ошибку при вводе пароля, так и попытку подбора пароля. Но, если сообщение о подобном событии записано в журнал аудита, администратор, просматривая этот журнал, легко сможет установить, что же имело место на самом деле ошибка легального пользователя или атака злоумышленника. Если пользователь ввел неправильный пароль всего один раз - это явная ошибка. Если же пользователь пытался угадать собственный пароль 20—30 раз - это явная попытка подбора пароля. 2. Администраторы операционной системы должны иметь возможность получать информацию не только о текущем состоянии системы, но и о том, как она функционировала в недавнем прошлом. Журнал аудита дает такую возможность, накапливая информацию о важных событиях, связанных с безопасностью системы. 3. Если администратор операционной системы обнаружил, что против системы проведена успешная атака, ему важно выяснить, когда была начата атака и каким образом она осуществлялась. При наличии в системе подсистемы аудита не исключено, что вся необходимая информация содержится в журнале аудита. 82 Аппаратное обеспечение средств защиты. Задачи аппаратного обеспечения защиты информации Под аппаратным обеспечением средств защиты операционной системы традиционно понимается совокупность защитных функций, встроенных в процессор и программно реализованные расширения этих функций, а также средства и методы, используемые для решения следующих задач: управление оперативной и виртуальной памятью компьютера; распределение процессорного времени между задачами в много задачной операционной системе; синхронизация выполнения параллельных задач в многозадачной операционной системе; обеспечение корректности совместного доступа задач к ресурсам операционной системы; исключение тупиковых ситуаций в процессе совместного доступа задач к ресурсам операционной системы. Перечисленные задачи в значительной степени решаются с помощью аппаратно реализованных функций процессоров и других узлов компьютера. Однако, как правило, для решения этих задач применяются и программные средства, и поэтому термины "аппаратное обеспечение защиты" и "аппаратная защита" не вполне корректны. Тем не менее, поскольку эти термины фактически общеприняты, мы будем их использовать в настоящем пособии. Компьютерные вирусы. Защита от компьютерных вирусов Компьютерный вирус - это программный код, встроенный в другую программу, или в документ, или в определенные области носителя данных и предназначенный для выполнения несанкционированных действий на компьютере. Компьютерный вирус – это программа небольшая по размерам (200 – 5000 байт), которая самостоятельно запускается, многократно копирует свой код, присоединяет его к кодам других программ и мешает корректной работе ПК. Все компьютерные вирусы могут быть 83 классифицированы по следующим признакам: по среде обитания, по способу заражения среды обитания, по деструктивным возможностям, по особенностям алгоритмов функционирования. По способу заражения вирусы делятся на резидентные и нерезидентные. Резидентные вирусы после их инициализации перемещаются из сети, загрузочного сектора или файла в оперативную память ЭВМ, там они находятся долгое время, отслеживая появление доступной для заражения жертвы. Нерезидентные вирусы попадают в ОП только на время активности, в течение которого выполняют разрушительную функцию. Затем эти вирусы покидают ОП вместе с программой-носителем и остаются в среде обитания. Арсенал деструктивных компьютерных вирусов очень велик. По степени опасности для информационных ресурсов компьютерные вирусы можно разделить на безвредные, неопасные, опасные и очень опасные. Безвредные вирусы не влияют на работу компьютера, обычно их пишут авторы, которые желают показать свои возможности программиста. Неопасные вирусы не причиняют серьезного ущерба ресурсам, они лишь уменьшают свободную память компьютера. Деструктивное воздействие таких вирусов сводится к выводу на экран монитора шуток, картинок и т. д. К опасным относятся вирусы, которые вызывают существенное снижение эффективности КС, но не приводят к нарушению целостности и конфиденциальности информации, хранящейся в ЗУ. Такие вирусы не блокируют работу сети, а вызывают необходимость повторного выполнения программ, перезагрузки операционной системы или повторной передачи данных по каналам связи. Очень опасными следует считать вирусы, вызывающие нарушение конфиденциальности, уничтожение. необратимые изменения информации, а также блокирующие доступ к информации, что приводит к отказу технических средств. По особенностям алгоритма функционирования вирусы делятся на вирусы, не изменяющие среду обитания и изменяющие среду обитания. Вирусы, не изменяющие среду обитания делятся на две группы: вирусы-«спутники», вирусы-«черви». Вирусы-«спутники» создают копии для 84 файлов, имеющих расширение .EXE, но присваивают им расширение .COM. Операционная система первым загружает на выполнение файл с расширение .COM, который является программой-вирусом, потом загружается и файл с расширением .EXE. Вирусы-«черви» попадают в рабочую станцию из сети, вычисляют адреса рассылки вирусов по другим абонентам сети и передают вирусы. Компьютерный вирус может удалять некоторые файлы, блокировать работу ПК, форматировать жесткий диск и разрушать ПЗУ. По среде обитания вирусы делятся на группы: Загрузочные – они заражают программу начальной загрузки компьютера и запускаются при загрузке ПК, в настоящее время встречаются очень редко. Загрузочные вирусы замещают код программы, получающей управление при запуске системы, поэтому после перезагрузки системы управление передается вирусу. Загрузочные вирусы относятся к числу резидентных. От программных вирусов загрузочные вирусы отличаются методом распространения. Они поражают не программные файлы, а определенные системные области магнитных носителей (жестких и гибких). На включенном компьютере вирусы могут располагаться в оперативной памяти. Из оперативной памяти вирус попадает в загрузочный сектор жестких дисков. Далее компьютер сам становится источником распространения загрузочного вируса, заражаться будут все не защищенные от записи и не зараженные носители информации. Программные или файловые (самые старые) – заражают исполняемые файлы, документы. Они приписываются в конец программы, потом начинают размножаться, увеличивая размеры файлов. Программные (файловые) вирусы - это блоки программного кода, целенаправленно внедренные внутрь других прикладных программ. При запуске программы, несущей вирус, происходит запуск имплантированного в нее вирусного кода. Работа этого кода вызывает скрытые от пользователя изменения в файловой системе жестких дисков и/или в содержании других программ. Вирусный код 85 может воспроизводить себя в теле других программ - этот процесс называется размножением. Создав достаточное количество копий, программный вирус может перейти к разрушительным действиям нарушению работы программ и операционной системы, удалению информации, хранящейся на жестком диске. Этот процесс называется вирусной атакой. Самые разрушительные действия могут инициализировать форматирование жестких дисков. Случается, что программные повреждения приходится устранять заменой аппаратных средств. Например, в большинстве современных материнских плат базовая система ввода/вывода хранится в перезаписываемых постоянных запоминающих устройствах (флэш-память). Некоторые программные вирусы уничтожают данные BIOS, в этом случае заменяется микросхема с BIOS, либо перепрограммируется. Макровирусы – заражают приложения, в которых можно создавать макрокоманды, эти вредители являются программой на макроязыке. Это особая разновидность вирусов поражает не программы, а данные, документы, выполненные в некоторых прикладных программах, имеющих средства для исполнения так называемых макрокоманд. В частности, к таким документам относятся документы Microsoft вредительские программы, Word, MS Excel. Макровирусы – написанные на макроязыке, встроенном в текстовый редактор, табличный процессор и т. д. Загрузочно-файловые вирусы; Драйверные вирусы – заражают драйверы устройств; Сетевые вирусы – распространяются в сетях. Сетевые черви "Червей" часто называют вирусами, хотя, строго говоря, это не совсем верно. Сетевые черви - это программы, которые не изменяют файлы на дисках, а распространяются в компьютерной сети, проникают в операционную систему компьютера, находят адреса других компьютеров или пользователей и рассылают по этим адресам свои копии. Сетевые черви могут вообще не обращаться к ресурсам компьютера (за исключением 86 оперативной памяти). По среде распространения червей можно условно разделить на следующие типы: Интернет-черви (распространяются по Интернету), LAN-черви (распространяются по локальной сети), IRC-черви (распространяются через чаты Internet Relay Chat). Есть еще одна крайне опасная разновидность червей - бестелесные. Эти паразиты не используют для своего размножения ни временных, ни постоянных файлов. Бестелесные черви вне компьютера существуют в виде сетевых пакетов, а внутри зараженного компьютера - в виде программного кода прямо в оперативной памяти. Такие черви распространяются автоматически, используя уязвимости в прикладном и системном программном обеспечении. Для этого не требуется вмешательство со стороны пользователя. Бестелесные черви распространяются очень быстро. Одному из них в конце января 2003 года удалось в течение нескольких часов вывести из строя 25% всех серверов в Интернете, т.е. каждый четвертый узел, запрашиваемый пользователем, был недоступен. Этот бестелесный червь известен под двумя названиями: Slammer и Helkern (более подробную информацию о червях можно найти по адресу www.viruslist.com) Троянские программы Троянские программы, "троянские кони" и просто "троянцы" - это вредоносные программы, которые сами не размножаются. Подобно знаменитому Троянскому коню из "Илиады" Гомера, программа-троянец выдает себя за что-то полезное. Чаще всего троянский конь маскируется под новую версию бесплатной утилиты, какую-то популярную прикладную программу или игру. Таким способом "троянец" пытается заинтересовать пользователя и побудить его переписать и установить на свой компьютер вредителя самостоятельно. По выполняемым вредоносным действиям троянские программы можно условно разделить на следующие виды: 87 1. утилиты несанкционированного (позволяют злоумышленнику удаленного удаленно администрирования управлять зараженным компьютером); 2. утилиты для проведения DDoS-атак (Distributed Denial of Service распределенные атаки типа отказ в обслуживании); 3. шпионские и рекламные программы, а также программы дозвона; 4. серверы рассылки спама; 5. многокомпонентные "троянцы"-загрузчики (переписывают из Интернета и внедряют в систему другие вредоносные коды или вредоносные дополнительные компоненты). Следует отметить, что на практике часто встречаются программы"троянцы", относящиеся сразу к нескольким перечисленным выше видам. Утилиты несанкционированного удаленного администрирования Удаленное управление компьютером часто используется в крупных и средних компаниях, а также в тех случаях, когда необходимо оказать техническую помощь пользователю, находящемуся на значительном расстоянии. С помощью средств удаленного управления системный администратор может настроить каждый компьютер в организации, не вставая со своего рабочего места. Однако эта полезная функциональность в руках злоумышленника превращается в грозное оружие. "Троянские кони" часто представляют собой вполне легальные утилиты удаленного управления, адаптированные под нужды хакеров. Если злоумышленнику удастся внедрить такого "троянца" в чужую систему, он сможет незаметно управлять этим компьютером втайне от его настоящего владельца. Управление зараженным компьютером обычно осуществляется через Интернет. Вот лишь небольшая часть того, что может сделать злоумышленник на инфицированном ПК: выкрасть любую информацию с компьютера-жертвы (файлы, пароли, реквизиты и т.д.), провести любую файловую операцию переименовать (отформатировать какие-то файлы и жесткий т.д.), диск, перезагрузить стереть или компьютер, 88 подключиться к сетевым ресурсам, использовать зараженный компьютер для атаки на какой-то третий компьютер или сервер в Интернете. Самыми известными утилитами несанкционированного удаленного администрирования являются "троянцы" Back Orifice и NetBus. Утилиты для проведения DDoS-атак Цель DoS-атаки, или атаки типа отказ в обслуживании, - исчерпать ресурсы информационной системы. В случае успешного проведения DoSатаки система перестает выполнять свои функции, становится недоступной и иногда непредсказуемой. Чаще всего объектом атаки типа отказ в обслуживании является web-сервер, например Интернет-магазин. DDoS-атака, или распределенная атака типа отказ в обслуживании, отличается от DoS-атаки тем, что в ней один и тот же узел атакуют сразу несколько компьютеров. Для того чтобы исчерпать ресурсы web-сервера, злоумышленник должен искусственно создать повышенную нагрузку на него. Каждый web-сервер тратит определенные ресурсы (память, вычислительные мощности и т.д.) на обработку входящих запросов. Если большое число компьютеров, на которых установлена утилита для проведения DDoS-атак, одновременно начнут посылать свои запросы webсерверу, то велика вероятность, что ресурсы web-сервера быстро исчерпаются, а сам сервер не сможет обслуживать легальных пользователей. При проведении масштабной распределенной атаки типа отказ в обслуживании злоумышленник чаще всего контролирует и координирует действия зараженных троянской программой компьютеров. Серверы рассылки спама Спам - это нежелательные электронные сообщения. Чтобы избежать ответственности за рассылку спама, злоумышленники не рассылают письма со своего компьютера. Они предпочитают заразить компьютеры других пользователей Интернета специальным "троянцем", который превратит чужой ПК в сервер рассылки спама. Злоумышленнику останется лишь указать троянской программе, какое письмо и по каким адресам следует 89 рассылать. Ответственность за эти незаконные действия будет нести легальный пользователь зараженного компьютера. На практике одного сервера рассылки спама преступнику не хватает, ему требуется целая сеть зараженных компьютеров. Такие сети управляемых злоумышленником компьютеров называют сетями зомби-машин или просто зомби-сетями. В типичную зомби-сеть входит около 3 тыс. компьютеров, находящихся по всему миру. Чтобы заразить большое число компьютеров и превратить их в серверы рассылки спама, преступники комбинируют различные виды вредоносных кодов. Чаще всего объединяют сетевых червей и "троянцев". Сетевые черви распространяются очень быстро, что позволяет заразить довольно много компьютеров, а при попадании на машину-жертву червь не только рассылает повсюду свои копии, но и устанавливает "троянца", который, собственно, и превращает зараженный компьютер в зомби. Многокомпонентные "троянцы"- загрузчики Многокомпонентность таких вредоносных кодов заключается в том, что после заражения нового компьютера они переписывают из Интернета другой вредоносный код и внедряют его в систему. Например, червь из предыдущего примера, который превращает компьютер в зомби, может не нести на себе "троянца", а переписать его из Интернета уже после того, как ему самому удастся заразить компьютер. Различают компоненты разного уровня. Например, если "троянец" перепишет из сети другой вредоносный код, то это уже будет компонент второго уровня. Иногда бывает, что компонент второго уровня сам скачивает и внедряет еще одного паразита. Это уже компонент третьего уровня. Административные меры борьбы с вирусами Говоря о степени ответственности антивирусной защиты, требуется разделять корпоративные и частные системы. Если речь идет об информационной безопасности организации, то необходимо позаботиться не 90 только о технических (программных и аппаратных) средствах, но и об административных. Если в некоторой компании есть сеть, не связанная с Интернетом, то вирус извне туда не проникнет, а чтобы вирус случайно не попал в корпоративную сеть изнутри, можно просто не давать пользователям возможности самостоятельно считывать носители информации, такие как CD-диски, USB-флэш или выходящие из употребления дискеты. Например, если кому-то из сотрудников необходимо считать что-либо с CD, он должен обратиться к администратору, который имеет право установить CD и считать данные. При этом за проникновение вирусов с этого CD уже несет ответственность администратор. При нормальной организации безопасности в офисе именно администратор контролирует установку любого ПО; там же, где сотрудники бесконтрольно устанавливают софт, в сети рано или поздно появляются вирусы. Большинство случаев проникновения вирусов в корпоративную сеть связано с выходом в Интернет с рабочей станции. Существуют режимные организации, где доступ к Интернету имеют только неподключенные к корпоративной сети станции. В коммерческих организациях такая система неоправданна. Там Интернет-канал защищается межсетевым экраном и прокси-сервером, о принципах работы которых будет сказано позднее. Во многих организациях разрабатывается политика, при которой пользователи имеют доступ лишь к тем ресурсам Интернета, которые нужны им для работы. Как эволюционируют антивирусные программы Антивирусные программы развивались параллельно с вредоносными кодами. Первые антивирусные алгоритмы строились на основе сравнения с эталоном (часто эти алгоритмы называют сигнатурным поиском). Каждому вирусу ставилась в соответствие некоторая сигнатура или маска. С одной 91 стороны, маска должна была быть небольшого размера, чтобы база данных всех таких масок не приняла угрожающих размеров. С другой стороны, чем больше размер сигнатуры, тем ниже вероятность ложного срабатывания (когда достоверно незараженный файл определяется антивирусом как инфицированный). На практике разработчики антивирусных программ использовали маску длиной 10-30 байт. Первые антивирусы знали какое-то количество сигнатур, могли находить и лечить определенное число вирусов. Получив новый вирус, разработчики анализировали его код и составляли уникальную маску. Эта маска добавлялась в базу данных антивирусных сигнатур, а само обновление распространялось на дискете. Если при сканировании подозрительного соответствующий инфицированным. маске, Описанный файла то антивирус исследуемый алгоритм находил файл применяется в код, признавался большинстве антивирусных программ до сих пор. В середине 90-х годов появились первые полиморфные вирусы. Эти вредители изменяли свое тело по непредсказуемым алгоритмам, что значительно затрудняло анализ кода вируса и составление сигнатуры. Для борьбы с полиморфными вирусами метод сигнатурного поиска был дополнен средствами эмуляции среды выполнения. Эмуляция – это точное выполнение на ЭВМ программы или ее части, которые записаны в системе команд другой ЭВМ. Другими словами, антивирус не исследовал подозрительный файл статически, а запускал его в специальной искусственно созданной среде. Специалисты по антивирусам называют ее песочницей. Дело в том, что песочница абсолютно безопасна. Вирус в ней не сможет размножиться или нанести вред. Он также не сможет отличить песочницу от настоящей среды. В этом виртуальном пространстве антивирус следил за исследуемым объектом, ждал, пока код вируса будет расшифрован, и запускал метод сигнатурного поиска. Второй базовый механизм для борьбы с компьютерными паразитами также появился в середине 90-х годов. Это эвристический анализ. Данный 92 метод представляет собой существенно усложненный эмулятор, только в результате анализируется не код подозрительного файла, а его действия. Для того чтобы размножаться, файловый вирус должен копировать свое тело в память, открывать другие исполняемые файлы и записывать туда свое тело, записывать данные в секторы жесткого диска и т.д. Есть характерные действия и у сетевого червя. Это прежде всего доступ к адресной книге и сканирование жесткого диска на предмет обнаружения любых адресов электронной почты. Благодаря этому эвристический анализатор способен обнаружить даже те вредоносные коды, сигнатуры которых еще неизвестны. Таким образом, сегодня двумя основными способами борьбы с вирусами являются сигнатурный поиск и эвристический анализатор. Все сигнатуры размещены в антивирусной базе - специальном хранилище, в котором антивирус хранит маски вредоносных программ. Эффективность сигнатурного поиска сильно зависит от объема антивирусной базы и от частоты ее пополнения. Именно поэтому сегодня разработчики антивирусных программ выпускают обновления для своих баз как минимум раз в сутки. Чтобы повысить скорость доставки этих обновлений на защищаемые компьютеры, используется Интернет. Методы защиты от компьютерных вирусов Существует три рубежа защиты от компьютерных вирусов: 1. предотвращение поступления вирусов; 2. предотвращение вирусной атаки, если вирус проник в компьютер; 3. предотвращение разрушительных воздействий, если атака произошла. Существует три метода реализации защиты: 1. программные методы защиты; 2. аппаратные методы защиты; 3. организационные методы защиты. Создавать систему безопасности следует с конца - с предотвращения разрушительных последствий любого воздействия, будь то вирусная атака, кража компьютера или выход из строя жесткого диска. 93 Средства антивирусной защиты Основным средством защиты информации является резервное копирование наиболее ценных данных. Резервные копии хранятся отдельно от компьютера. Вспомогательными средствами защиты информации являются антивирусные программы и средства аппаратной защиты. Для защиты информации рекомендуется выполнять ряд действий. 1. Хранить образ жесткого диска на внешних носителях. 2. Регулярное сканировать жесткие диски в поисках компьютерных вирусов, при этом нужно регулярно обновлять антивирусную программу. 3. Вести контроль за изменением размеров и других атрибутов дисков. 4. Контролировать обращения к жесткому диску. Наиболее опасные операции, связанные с работой компьютерных вирусов, обращены на модификацию данных, записанных на жестком диске. Антивирусные программы могут контролировать обращения к диску и предупреждать пользователя о подозрительной активности. Антивирусные программы делятся на несколько типов: Детекторы – они обнаруживают вирусы. Детекторы сравнивают загрузочные сектора дисков с известными загрузочными секторами, которые формируют операционные системы и обнаруживают вирусы. Сейчас в чистом виде такие программы встречаются редко; Фаги или программы-доктора. Фаг – это программа, которая обнаруживает и уничтожает вирус, т. е. удаляет код вируса из файла. Пример: Aidstest. Очень мощный фаг – Doctor Web, а также фаг – AntiViral Tookit Pro – эта программа находит и неизвестные вирусы; Ревизоры. Они относятся к самым надежным защиты от вирусов. Ревизоры запоминают исходное состояние программ, каталогов и системных областей диска, когда компьютер не заражен вирусом, а затем периодически сравнивают текущее состояние с исходным. Пример – Adinf; Сторожа. Это резидентная программа, постоянно находящаяся в памяти. Она контролирует попытки изменения файлов с расширением .com, 94 .exe, следит за изменением атрибутов файлов, записями в загрузочные сектора диска и т. д.; Вакцины (иммунизаторы) – резидентные программы, предотвращающие заражение файлов. Вакцинация возможна только для известных вирусов. Атрибуты файла: только для чтения, скрытый, архивный Брандмауэр - средство защиты частных сетей Межсетевые экраны или брандмауэры или файерволы (от англ. FIREWALL). Брандмауэр – это часть ПО, эта программа помогает защитить ПК от вирусов и других угроз безопасности, защищает от несанкционированного доступа через сеть. Интересно происхождение данного термина. Брандмауэрами называли специальные устройства в поездах. В машинном отделении паровозов топливо находилось поблизости от топки. Кочегар бросал лопатой уголь в топку, и легковоспламеняющаяся угольная пыль часто вспыхивала. Из-за этого в машинном отделении нередко возникали пожары. Чтобы огонь не распространялся на пассажирские вагоны, позади машинного отделения начали устанавливать железные загородки. Именно этот щит получил название "брандмауэр". Первые компьютерные брандмауэры были созданы для того, чтобы препятствовать распространению сетевого программного обеспечения, содержащего множество ошибок, на всю сеть с одного ее участка. Подобно своим железнодорожным прототипам, они были средством локализации "пожара". Сегодня брандмауэры выступают в роли защитников границ между локальными сетями и Интернетом. Персональные брандмауэры выполняют те же функции, но на границе между домашним компьютером и Интернетом. Брандмауэр, или межсетевой экран,- это система, предотвращающая несанкционированный доступ извне во внутреннюю сеть. Брандмауэры 95 бывают аппаратными или программными. Аппаратный брандмауэр - это устройство, которое подключается к сети физически, фильтрует входящий и исходящий трафик и защищает от нежелательных проникновений во внутреннюю сеть или на персональный компьютер. Программный брандмауэр выполняет те же функции, но является не внешним аппаратным устройством, а программой, установленной на компьютере. В роли параметров фильтрации выступают адреса получателя и отправителя каждого сетевого пакета, протокол передачи данных (например, HTTP, FTP и т.д.), приложение, которое отсылает или принимает сетевой пакет и т.д. Несанкционированный пользователь не сможет получить доступ в локальную сеть, если ее защищает брандмауэр. Брандмауэр защищает частную сеть и отфильтровывает те данные, обмен которыми запрещен. Если в компании есть, например, 100 персональных компьютеров, объединенных в локальную сеть и имеющих выход в Интернет, но нет брандмауэра, то злоумышленник сможет проникнуть на каждый из этих компьютеров из Интернета. Брандмауэры, предназначенные для защиты корпоративной сети, часто имеют встроенные proxy-сервер и систему обнаружения вторжений (систему обнаружения атак). Proxy-сервер играет роль посредника между внутренней сетью организации и Интернетом. Сервер-посредник кэширует (сохраняет) часто запрашиваемые web-страницы в своей памяти. Когда пользователь запрашивает какую-нибудь страницу из Интернета, proxy-сервер проверяет, есть ли она в его базе данных. Если есть, то страница сразу же отправляется к пользователю. Если нет, то proxy-сервер запрашивает оригинальный сервер, где размещена страница, и, получив ее, отправляет пользователю. Механизм сохранения часто запрашиваемой информации позволяет значительно сэкономить время доступа к наиболее важным данным. Еще одной функцией proxy-сервера часто является трансляция сетевых адресов (NAT - Network Address Translation). Ее суть в том, чтобы сделать 96 компьютеры внутренней сети организации невидимыми для внешних запросов. Если злоумышленник попытается "заглянуть" во внутреннюю сеть компании, он увидит один лишь proxy-сервер (в данном случае еще и брандмауэр). Он не сможет узнать внутренние адреса компьютеров, а следовательно, вторгнуться в корпоративную сеть будет значительно сложнее. Естественно, механизм трансляции адресов немного замедляет работу всей защищаемой сети. Системы обнаружения вторжений, даже являясь составной частью крупного брандмауэра, дополняют другие системы информационной безопасности. Они не только определяют сам факт проникновения в сеть, но и выявляют подозрительные действия. Если брандмауэры рассматривать как забор с калиткой, через которую могут пройти те, кто наделен соответствующими полномочиями, система обнаружения будет выступать здесь в роли устройств внешнего видеонаблюдения и охранной сигнализации. Охранная система включается, когда злоумышленник перелез через забор или сломал калитку и теперь намеревается захватить центральный пульт управления. То есть когда хакер уже проник внутрь и готовится поразить жизненно важную систему. Работа системы обнаружения вторжений строится на законах математической статистики. Каждое действие, происходящее в системе, подвергается анализу на соответствие сценарию сетевой атаки. Так как действия злоумышленника обнаружения вторжений разнятся приходится от случая учитывать к случаю, системе отклонения реально происходящих событий от сценария нападения. Персональные брандмауэры Персональные брандмауэры защищают отдельные автономные компьютеры, подсоединенные к Интернету. Чаще всего персональные брандмауэры используются на домашних ПК. Основная задача этого средства защиты - фильтровать входящий и исходящий сетевой трафик 97 (поток данных), контролировать сетевую активность приложений и блокировать любые опасные действия. Персональный брандмауэр умеет фильтровать входящие и исходящие соединения по целому ряду признаков. Это прежде всего адреса абонентов, используемый для соединения порт (число, которое идентифицирует процесс или приложение внутри компьютера) и полномочия приложения, осуществляющего обмен информацией. Есть и более сложные способы фильтрации. Например, при анализе входящих соединений брандмауэр всегда может проверить, запрашивало ли какое-нибудь приложение соединение с данным узлом. Если нет, то входящее соединение нужно запретить, а если да, значит, на персональный компьютер просто пришел ответ на посланный ранее запрос. Для того чтобы эффективно фильтровать трафик, в брандмауэре должна быть реализована поддержка большого числа протоколов и технологий. В операционной системе Microsoft Windows XP имеется свой встроенный брандмауэр. Брандмауэр, встроенный в Microsoft Windows XP Брандмауэр Windows представляет собой фильтр сетевых пакетов (а информация в сети передается именно в пакетах), способный отразить стандартные сетевые атаки и не допустить низкоуровневого сетевого подключения к защищенному компьютеру. Также поставляемый по умолчанию с Microsoft Windows XP брандмауэр умеет корректно обрабатывать диагностические и служебные пакеты, приходящие из Интернета. Между тем служебные пакеты чаще всего используются для организации сетевых атак. Благодаря брандмауэру Windows компьютер пользователя намного сложнее обнаружить в Интернете и атаковать. В операционную систему Microsoft Windows XP Service Pack 2 (пакет обновлений 2) включен "Центр обеспечения безопасности", который следит за тем, чтобы встроенный в ОС брандмауэр был включен и правильно настроен. 98 Однако для защиты компьютера под управлением Microsoft Windows необязательно использовать встроенный в операционную систему брандмауэр. Сами разработчики Microsoft рекомендуют попробовать и другие решения, а потом сделать выбор. Outpost Firewall Pro Разработчик: Agnitum www.agnitum.com/ru/products/outpost/ Outpost Firewall Pro - это персональный брандмауэр, который устанавливает защитный барьер между вашим компьютером и Интернетом, охраняя ваш компьютер от внешних атак и блокируя отсылку ценной информации в Сеть. Основные особенности программы: обнаруживает и блокирует атаки хакеров; предотвращает несанкционированный доступ к данным; скрывает присутствие вашей системы в сети, делая ее невидимой для взломщиков; анализирует входящие почтовые сообщения и блокирует потенциально опасные; отслеживает всю сетевую активность вашей системы; препятствует посещению вашими детьми или сотрудниками нежелательных web-сайтов; ведет подробный журнал вcей сетевой активности вашей системы и позволяет ее анализировать; предотвращает утечку частной информации с вашего компьютера; отражает посягательства на вашу конфиденциальность в сети Интернет; сохраняет в тайне ваши перемещения и навигацию по Интернету; работает со всеми современными версиями Windows - 98, 98SE, ME, 2000 и XP; 99 автоматически настраивается для оптимальной защиты данных во время инсталляции; систематически следит за обновлениями через настраиваемую утилиту в целях обеспечения защиты от новых атак. ZoneAlarm Pro Разработчик: Zone Labs (www.ZoneLabs.com) ZoneAlarm Pro - это еще один брандмауэр, который позволяет блокировать активность любых программ, обращающихся к Windows из Интернета или пытающихся самостоятельно выйти в Сеть с ПК. ZoneAlarm распознает выполняемые программы и ограничивает их возможности, в частности контролирует пересылку данных из компьютера в Интернет. С помощью ZoneAlarm можно не только запретить выход в Сеть отдельной программе, но и остановить весь поток данных в Сеть и обратно. 100