Программно-аппаратная защита информации

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

Рубрика Программирование, компьютеры и кибернетика
Вид курс лекций
Язык русский
Дата добавления 02.01.2013
Размер файла 956,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Конспект лекций

«Программно-аппаратная защита информации»

специальность 090104 «Комплексная защита объектов информатизации»

Лекция № 1. Программные и аппаратные механизмы защиты

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

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

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

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

Парольные подсистемы идентификации и аутентификации

Реализуются в открытых компьютерных системах. Являются наиболее распространенными. В качестве идентификации используется Login (имя пользователя), в качестве аутентификации - секретный пароль.

Преимущества: дешевизна, возможность использовать во всех компьютерных системах.

Недостаток: самые уязвимые ко взлому:

- перебор пароля в интерактивном режиме;

- подсмотр, кража из общедоступного места;

- возможность преднамеренной передачи пароля другому лицу;

- кража БД учетных записей из общедоступного места;

- перехват вводимого пароля путем внедрения в КС программных закладок;

- перехват паролей передаваемых по сети;

- возможность применения социального инжиниринга.

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

Для уменьшения влияния человеческого фактора требуется реализовать ряд требований к подсистеме парольной аутентификации.

Требования:

1. задавание минимальной длины пароля для затруднения перебора паролей в лоб;

2. использование для составления пароля различных групп символов для усложнения перебора;

3. проверка и отбраковка паролей по словарю;

4. установка максимальных и минимальных сроков действия паролей;

5. применения эвристических алгоритмов, бракующих нехорошие пароли;

6. определение попыток ввода паролей;

7. использование задержек при вводе неправильных паролей;

8. поддержка режима принудительной смены пароля;

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

Количественная оценка стойкости парольной защиты

А - мощность алфавита символов, из которых состоит пароль;

L - длина пароля;

V - скорость перебора паролей злоумышленником;

T - срок действия паролей;

P - вероятность подбора паролей злоумышленником за время t, меньшее срока действия паролей

Лекция № 2. Хранение аутентифицирующей информации в открытых компьютерных системах. Типовые схемы хранения ключевой информации. Защита БД аутентификации

При работе с открытыми КС необходимо обеспечить защиту аутентифицирующей информации, хранимой в КС. В открытых КС часто отсутствуют внешние максимально защищенные от НСД устройства, хранящие аутентифицирующую информацию, и данную информацию, используемую для аутентификации, приходится хранить в реальном объекте файловой системы (БД аутентификации).

Эту информацию необходимо защищать от 2 основных видов угроз:

- угроза непосредственного доступа злоумышленника к БД аутентификации с целью ее копирования, модификации, удаления;

- угроза несанкционированного изучения БД аутентификации.

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

Поэтому при защите БДА большее внимание уделяется защите от несанкционированного исследования их содержимого.

Методы:

1). Шифрование

Такой подход к закрытию содержимого БД аутентификации не является стойким, так как:

1. Шифрование должно быть на ключах, которые необходимо хранить. Хранение в операционной системе недопустимо.

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

2). Хэширование

Для защиты от исследования БДА используется две типовых схемы хранения ключевой информации:

Схема 1

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

Информация для идентификации

Информация для аутентификации

1

ID1

E1

2

ID2

E2

n

IDn

En

- функция хэширования. Функция должна удовлетворять следующим свойствам:

1). Необратимостью: восстановить возможно было бы только полным перебором

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

3). Рассеивание - при малейшем изменении сообщения его хэш должен существенным образом изменяться.

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

Алгоритм аутентификации пользователя будет выглядеть следующем образом:

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

Подсистема аутентификации вычисляет . Если , то аутентификация принимается.

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

Для устранения этого вводится вторая схема аутентификации.

Схема 2

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

Информация для идентификации

Информация для аутентификации

1

ID1 , S1

E1

2

ID2, S2

E2

n

IDn, Sn

En

В этом случае хэши будут различны. Данная схема используется в системах класса Unix.

Утверждение о подмене эталона

Если злоумышленник имеет доступ на запись в БД аутентификации, то он может пройти аутентификацию как любой пользователь КС, отраженный в ней, в том числе и как администратор. Следовательно, доступ на запись в БД аутентификации должны иметь только привилегированные субъекты.

Защита баз данных аутентификации операционных систем класса Windows NT.

В данных ОС БД аутентификации хранится в каталоге: winnt\system32\config

БДА носит название SAM, а файл System, в котором хранится ключ шифрования БД аутентификации.

В данной БД аутентификации хранится 2 вида хэшей:

- LANMAN, используемый для удаленной сетевой аутентификации с ранних версий Windows;

- NTLM, используется для локальной аутентификации.

Алгоритм вычисления хэша LANMAN

Например, если пароль будет состоять из заглавных букв английского алфавита (26), прописных букв английского алфавита (26), цифр (10), специальных символов (13), то

Тогда время подбора сек

Используя хэш LANMAN, получим, что

Время подбора пароля

Минусы:

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

- пароль разбивается на две части, которые образуются независимо друг от друга;

При выборе паролей больше 14 символов хэши LANMAN из БД исчезают, следовательно, необходимо выбирать пароли из 15-16 символов.

Хэш NTLM

Хэш NTLM имеет длину 16 байт. Каждому из паролей длины меньшей или равной 16 символов соответствует единственный хэш NTLM, по которому ОС будет определять корректность его ввода пользователем. Однако если выбрать пароли больше 17 символов, то для них найдутся другие с длинной меньше или равной 16 символам, которые будут иметь тот же самый хэш. В этом случае ОС будет пускать пользователя на пароле меньшей длины. Есть вероятность, что длина таких паролей будет очень мала. Поэтому в целях безопасности использование паролей длиной больше или равной 17 символов необходимо запретить. Для ОС, построенных на технологии NT, следует выбирать пароли 15-16 символов.

Лекция № 3. Протоколы стойкой удаленной аутентификации пользователей. Протокол CHAP, S/KEY. Удаленная аутентификация в Windows с использованием хэша LANMAN

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

Для разрешения этих проблем требуется:

1) Передавать ключ аутентификации в закрытом виде

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

При построении протокола удаленной безопасной передачи для разрешения вышеперчисленных проблем используется 2 подхода:

1). Передача от сервера клиенту при запросе на аутентификацию случайного числа, которое будет использовано при закрытии пароля.

2). Независимое формирование клиентом и сервером последовательности одноразовых паролей, которые не могут быть построены злоумышленником. Каждый из таких паролей действует на протяжении одной аутентификации.

Протокол CHAP

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

Протокол использования одноразовых ключей S/KEY

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

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

Ключи передаются в обратной последовательности от клиента серверу. В этом случае злоумышленник, слушающий канал связи, зная одноразовый ключ Si , узнать следующий одноразовый ключ Si-1 , не может в силу необратимости функции хэширования. Он может найти этот ключ только с помощью перебора. Сервер независимо от клиента может формировать ту же последовательность и выполнить проверку одноразовых паролей, переданных клиентом. Недостатки: - после исчерпания списка одноразовых ключей возникает вопрос, какой ключ передавать следующим. Зацикливать эту последовательность нельзя, так как злоумышленник, слушающий канал связи, мог видеть всю предысторию передаваемых паролей, а значит, сможет корректно формировать пароли. Для устранения этого недостатка, используют подход, основанный на передаче перед формированием последовательности одноразовых ключей случайного числа R от сервера клиенту. Это случайное число будет участвовать в формировании последовательности одноразовых ключей. Когда клиент исчерпает весь список паролей сервер передает клиент другое случайное число, и сформированная последовательность ключей будет другой:

Лекция № 4. Технические устройства идентификации и аутентификации

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

1. iButton (Touch Memory)

2. бесконтактные радиочастотные карты Proximity

3. пластиковые карты (со штрих-кодом и магнитной полосой)

4. карты с памятью

5. смарт-карты

6. электронные ключи e-Token

Устройства iButton (Touch Memory)

Разработано Dallas Semiconductor.Представляет собой устройство идентификации пользователя, включает в себя уникальные идентификаторы, присваиваемые пользователю. Данное устройство включает в себя 3 компонента:

1. ПЗУ, которое хранит 64-разрядный код, состоит из 8-битового кода устройства, 48 бит - код идентификатора, 8 бит - контрольная сумма. Содержание ПЗУ уникально и не может быть перепрошито в дальнейшем.

2. ОЗУ (энергонезависимая статическая память) предназначена для хранения некой информации. В одном из типов эта энергонезависимая память защищена от НСД. В остальных типах - не защищена.

3. Элемент питания - встроенная литиевая батарейка 3В, питающая энергонезависимую память

После истечения 10 лет, память становится не доступна. Данное устройство может быть использовано для решения задачи идентификации (доступно только ПЗУ).

Виды устройств:

Тип (iButton)

Объем ОЗУ (байт)

Примечание

DS1990

-

Только идентификатор

DS 2400

-

DS1992

128

DS 1993

512

DS 1994

512

Таймер-календарь

DS1996

8192

DS1920

512

Термометр

iButton с идентификатиром

iButton с энергонезависимой памятью

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

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

iButton с энергонезависимой памятью и таймером

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

DS1994L

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

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

Преимущества: небольшая стоимость, может использоваться в промышленных приложениях «с жесткими условиями внешней среды»

Недостатки: сравнительно низкая скорость передачи информации от iButtonа к устройству чтения, большая вероятность сбоя в процессе чтения\записи.

Вообще iButton не предназначена для хранения аутентифицирующей информации в силу того, что энергонезависимая память не защищена от НСД. Однако, при использовании различных приемов на внешних устройствах его можно приспособить для хранения конфиденциальной информации. Например в устройствах «Соболь» (плата) в iButton хранятся закрытые пароли пользователей. Замок Соболь хранит некий ключ внутри себя, который используется при шифровании пароля. В iButton же в энергонезависимой памяти хранятся зашифрованные на этом ключе пароль пользователя.

Бесконтактные радиочастотные карты Proximity

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

Proximity-карта содержит внутри себя ПЗУ с идентификационным кодом, питающиеся через антенну при попадании в электромагнитное поле считывателя. Считыватель Proximity-карт постоянно генерирует электромагнитное излучение определенной частоты, карта, попадая в электромагнитное поле запитывается через антенну, заряжается конденсатор, который «выстреливает» идентификационным кодом на определенной частоте. Идентификационный код принимается считывателем. Сама карта элемента питания не имеет.

Пластиковые карты

Пластиковая карта - пластина 85,6*53,9*0,76 мм, изготовлена из специальной устойчивой к термическим и механическим воздействиям пластмассы.

Все требования к пластиковым картам изложены в стандарте ISO7816.

Данные карты выполняют функцию идентификации владельца, а отдельные типы карт еще и функцию аутентификации.

Выделяют 2 типа пластиковых карт: пассивные и активные.

Пассивные карты выполняют только функцию хранения информации без её обработки в активном режиме работы.

Активные карты могут кроме хранения информации выполнять её обработку.

К пассивным картам относятся карты со штрих-кодом и карты с магнитной полосой.

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

Карты с магнитной полосой используют магнитную полосу для хранения информации. Магнитная полоса состоит из трех дорожек, расположенных с обратной стороны карты имеют ширину 0,5 дюйма.

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

Для изготовления этих карт используют устройства типа Plextor, Cardpress.

Активные карты: относят карты-счетчики, карты с памятью и карты с микропроцессором. Данные карты позволяют выполнять обработку информации.

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

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

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

Архитектура SMART-карт

Данные карты содержат следующие основные компоненты:

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

2. ROM - ПЗУ, хранение ОС смарт-карты (8 Кб)

3. RAM - оперативная память (256 б), используется для временного хранения информации при выполнение криптографических операций

4. EEPROM - энергонезависимая память, используется для хранения файловой системы.

5. система ввода/вывода

Файловая система - система каталогов, каждый из которых отвечает за поддержку какого - либо приложения. В этих каталогах хранятся различные типы файлов. Каждый из каталогов ответственен за определенное приложение, например, электронный кошелек, ключи VPN для создания криптозащищенных тоннелей, защищенной электронной почты, ЭЦП. Для доступа к конкретному приложению и связи с ним файла требуется применение ключа, для каждого приложения такой ключ уникален. Для каждого типа объектов файловой системы определены свои операции, которые могут быть выполнены над одним типом объектов, но не могут быть применены к объектам других типов. Например, для файла ключей не определено операций чтения, зато определена операция «использовать».

Лекция № 5. Идентификация и аутентификация пользователей с помощью биометрических устройств

Архитектура

Например, (390, 418, 502,471,355) (389, 416, 501, 468, 353)

Устанавливается пороговое значение.

N - количество попыток аутентификации легальных пользователей

M - количество отказов легальным пользователям

- коэффициент ошибочных отказов

K - общее количество попыток аутентификации нелегальных пользователей

L - количество процедур аутентификации

- коэффициент ошибочных подтверждений

Системы контроля доступа (СКД)

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

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

- сигнализация при попытках НСД;

- ведение списка пользователей;

- учет рабочего времени сотрудников;

- учет движения сотрудников по организации;

- определение текущего местоположения;

- ведение архивов событий.

Основными составными элементами СКД являются:

- устройство чтения идентификаторов;

- исполнительные устройства (электронные замки, турникеты, шлюзы, шлагбаумы);

- ПО, которое управляет СКД, содержит политику разграничения доступа и осуществляет комплексный сбор и мониторинг информации;

- контроллер управления доступом, принимает решения о допуске\недопуске пользователя на охраняемый объект.

По способу управления преграждающими устройствами СКД можно поделить на следующие типы:

- автономные (локальные) используется для управления одним или несколькими преграждающими устройствами без передачи информации на центральный пульт и без контроля со стороны оператора;

- централизованные (сетевые) используется для управления преграждающими устройствами с обменом информацией с центральным пультом, контролем и управлением системой со стороны оператора;

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

По количеству точек доступа СКД делится на 3 класса:

- малые, для которых единица точек доступа - это офис;

- средние - десятки точек доступа, тысячи пользователей;

- большие - сотни точек доступа, десятки тысяч пользователей.

Схемы СКД Автономные

Такая система состоит из автономного контроллера, который хранит в себе БД идентификаторов. Он управляет работой всех остальных элементов системы. В качестве исполняющего устройства выступает электронный замок, либо защелка, которой контроллер дает команды на открывание. Для идентификации пользователя используются Proximity или iButton, подсоединенный к считывателю. Этот считыватель работает только на вход, как правило. Для выхода пользователя из помещения предусмотрена кнопка открывания двери. Дверной контакт фиксирует открывание двери и используется для обеспечения корректной работы системы. В подобных системах может использоваться компьютерная техника для управления автономным контроллером, загрузки и считыванию из него информации. Через специальную плату данный контроллер подключается к ЭВМ, стоящей в помещении, на которую загружается специальное ПО, позволяющее обновлять перечень зарегистрированных идентификаторов в автономном контроллере, изменять политику разграничения доступа. Это ПО позволяет в удобном для пользователя виде предоставлять информацию о проходах пользователей через эту дверь, вести учет рабочего времени, визуально контролировать личность сотрудника.

Сетевые СКД

Контроллеры УД выполняют принятие решения о допуске\недопуске пользователя с конкретным идентификатором. В зависимости от типа СКД контроллер может использовать для хранения от 2000 до 32000 идентификаторов, обладает внутренней памятью определенного объема, в которой накапливается информация о проходах.

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

Лекция № 6. Защита программного обеспечения от несанкционированного использования

Включает в себя:

1. Организационно-правовые меры

2. Правовые меры (распространение на программное обеспечение авторского права)

3. Технические меры

Модульная архитектура технических средств защиты ПО от несанкционированного копирования

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

Основные требования к системе защиты ПО от несанкционированного копирования:

1. такая система должна достоверно выявлять факт несанкционированного использования программы

2. реагировать на факт несанкционированного использования

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

идентификация компьютерный биометрический

Система защиты ПО от несанкционированного копирования работает по следующему алгоритму:

1. разработчик ПО разрабатывает и внедряет защитные механизмы в исполнительную программу

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

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

За установку текущих характеристик среды отвечает блок ответной реакции. Выход этого блока поступает на блок сравнения характеристик среды, который сравнивает текущие характеристики среды с эталонными.

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

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

Преимущества:

1. Простота. С помощью библиотек и функций, поставляется совместно с ПА средствами защиты, от ПА средства можно добиться максимальной эффективности

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

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

Недостаток: сложная реализация.

Модуль противодействия нейтрализации защитных механизмов затрудняет анализ злоумышленником защитного кода, противодействует вмешательству в его работу и выполняется по 2 направлениям:

1) статическое

2) динамическое

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

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

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

HASP Envelopment «+» 1. простота использования и простота внедрения

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

2. жесткая реакция защиты программы на несовпадение характеристик среды (отказ в запуске)

Блок сравнения характеристик среды

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

Для того, чтобы затруднить злоумышленнику атаку на этот блок, данный блок должен отвечать ряду требований:

1. установка значений характеристик среды и их сравнение с эталонными должно производиться многократно и на протяжении всей работы программы

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

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

Блок установки характеристик среды.

Наиболее уязвимым местом данного блока является способ сбора характеристик среды и способ передачи их от ПА среды блока установки и от блока установки к блоку сравнения. Если характеристики среды по открытому каналу, хранятся в открытых объектах, то такой способ защиты не является стабильным.

Лекция № 7. Электронные ключи. Защита программ с помощью электронных ключей HASP

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

Для устранения подобных недостатков характеристики среды необходимо выносить во внешние максимально защищенные от НСД устройства, которые затрудняют свою эмуляцию и дублирование.

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

Ключи являются разработкой израильской фирмы Aladdin и используются для ЗПО от НС использования: предотвращают запуск программ при отсутствии электронных ключей, ограничивают максимальное количество копии, одновременный запуск программ в сети, ограничивают время работы программы и ограничивают максимальное количество её запусков.

Типы электронных ключей HASP.

1. HASP4 Standart

2. HASP4 Memo

3. HASP4 Time

4. HASP4 Net

HASP Standard

Самая простая модификация электронных ключей HASP. Включает в себя только функцию шифрования и связанную с ней функцию отклика. Стоимость - 13$. Может реализовывать следующие функции по защите:

1. проверять наличие электронного ключа

2. подавать на вход функцию отклика различные значения и сравнивать ответ с эталонными значениями

3. использовать функцию шифрования для шифрования дешифрования исполнительного кода программы или используемых данных.

Основные элементы защиты

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

HASP Memo

Данные ключи включают в себя все функции HASP Standart. Кроме того, имеют уникальный идентификационный номер и энергонезависимую память определенного объёма.

2 типа по объёму энергонезависимой памяти:

· HASP4 М1 - 112 байт

· HASP4 М4 - 496 байт

Кроме тех функций, которые можно реализовать с помощью HASP4 Standart, эти ключи могут:

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

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

6. возможно защищать программы по количеству запусков.

HASP Time

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

Включает в себя встроенный календарь с датой и временем. Используется для защиты ПО по срокам использования.

HASP Net

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

Способы защиты программного обеспечения с помощью электронных ключей HASP

Можно реализовывать с помощью встроенных и пристыковочных механизмов.

Встроенные - HASP API.

Пристыковочные HASP Envelopment.

Электронные ключи HASP Memo, Time и Net включают в себя подсистему полного управления доступом (FAS), позволяющую защитить одновременно несколько программ одного производителя, и ограничить их в зависимости от типа ключей по количеству запусков, по сроку действия, по количеству одновременно запущенных копий.

Электронные ключи HASP Memo, Time и Net обладают возможностью их удаленного перепрограммирования с помощью подсистемы RUS.

Для реализации удаленного управления формируется 2 утилиты: продавца и покупателя. Они формируются под конкретный электронный ключ, привязывающийся к его идентификационному номеру.

Pattern Code Security (Механизм защиты структурного кода)

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

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

Лекция № 8. Защита программного обеспечения от исследования

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

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

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

Приемы защиты:

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

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

push ss

pop ss

push f

pop ax

test ax, 100h

je debugger detected

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

3) Контроль исполняемого кода. Установка точки прерывания в реальном режиме процессора требует модификации кода программы для защиты от установки точек прерывания можно периодически контролировать исполняемый код на целостность.

4) В защищенном режиме можно воздействовать на регистры отладки dr0-dr7, например, периодически обнулять или использовать для своих нужд.

5) Обнаружение наличия отладчиков в оперативной среде путем использования преднамеренно оставленных в них «дыр»

6) Использование недокументированных возможностей процессора:

1. mov ax, cs:[100]=ds:es:cs:mov ax, [100]

2. cs:nop

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

Противодействие средствам статического анализа:

1. Шифрование исполняемого кода программы на хороших ключах. Универсальное и наиболее стойкое средство защиты.

2. Самомодифицирование кода программы. Замена одних участков кода программы на другие.

3. Внедрение между инструкциями некой области данных

mov ax, 0CEBh

jmp label

db 1,2,3,4,5,6,7,8,9

label: mov ax, 1234h

4. Скрытие команд передачи управления

mov word ptr cs:label[1], 1234h

……

label jmp 0000h

5. Использование косвенной передачи управления

mov bx, 1234h

……….

Jmp cs:[bx]

6. Использование нестандартных способов передачи управления

Для затруднения анализа исполняемого кода могут быть использованы попытки нестандартных приемов передачи управления. Могут быть сделаны моделирования одних инструкций через другие. Например, jmp, call, int через подобные инструкции.

Например:

Нормальный код

Альтернативный код

….

jmp m

……

m: ……..

mov ax, offset m

push ax

ret

……

m:….

call адрес подпрограммы

m:….

адрес подпрограммы: ……

ret

mov ax, offset m

push ax

jmp адрес подпрограммы

m:….

адрес подпрограммы:……

ret

ret

pop bx

jmp bx

7. Перемешивание кода программы

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

push ss

pop ss

push f

pop ax

test ax,100h

je Debugger detected

Адреса

Инструкция

00000000

push ss

00000001

jmp 0A

00000003

pop ax

00000004

jmp 0D

00000006

je debugger detected

000000A

pop ss

000000B

push f

000000C

jmp 03

000000D

test ax, 100h

000000E

jmps 06

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

Лекция № 9. Классификация средств атаки на средства защиты программного обеспечения

Программы-каталогизаторы - оболочки файловых систем, например, Far, Total Commander. С помощью данных средств возможно:

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

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

Мониторы файловых операций (FileMon, RegMon, PortMon). Данные средства позволяют злоумышленнику проанализировать активность программы, «общение» программы с файлами, реестром, устройствами через порты ввода/вывода.

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

Программы копирования областей оперативной памяти на внешние устройства (Advanced Memory Dumper).

Средства декомпиляции (Cordon swf) представляют собой средства статического анализа исполняемого кода для изучения исходных текстов программ. Хорошо работают для Basic, Flash.

Средства редактирования ресурсов (Passolo, Resource Hacker).

Средства программы эмуляции аппаратных средств (Virtual CD).

Средства эмуляции ЦП и ОС (VM Wave)

Защита от разрушающих программных воздействий (РПВ)

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

С помощью посторонних программ, присутствующих в компьютерной системе, злоумышленник может реализовать опосредованный несанкционированны доступ, то есть НСД, реализуемый злоумышленником не напрямую, а путем запуска в систему постороннего ПО - программных закладок, либо внедрения его на этапе проектирования АС. Можно выделить 3 вида разрушающих программных воздействий (программных воздействий, которые способны нарушить штатное функционирование АС).

Эти программы могут реализовать следующие функции:

1. скрывать признаки своего присутствия в оперативной среде

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

3. способны разрушать код иных программ в оперативной памяти КС

4. способны переносить фрагменты информации из оперативной памяти в некие области внешней памяти, доступной злоумышленнику

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

РПВ делятся на следующие классы:

1. Вирусы. Особенностью является направленность на самодублирование и деструктивные функции. Задача скрытия своего присутствия в ПА среде часто не ставится

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

3. «Троянские кони». Для этих программ не свойственно деструктивное воздействие. Данный класс РПВ часто относят к вирусам, однако, основной функцией РПВ данного класса, как правило, заключается в краже информации, например, номеров кредитных карт, либо в имитации сбоя ЭВМ, чтобы под видом ремонта злоумышленник мог получить к ней доступ. Основная особенность - ассоциирование либо выдача себя за часто используемое ПО либо сервисы.

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

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

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

Если РПВ присутствует в ПА среде и загружено в оперативную память, то при отсутствии для него активизирующего события деструктивные особенности этого РПВ невозможны.

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

Основные модели работы РПВ

1) Перехват. РПВ внедряется в оперативную среду и осуществляет перехват и дальнейшее копирование требуемой информации в некие скрытые области оперативной памяти. Например, клавиатурные шпионы.

2) «Троянский конь» - РПВ встраивается в постоянно используемое ПО, либо сервис и выполняет кражу информации. Либо сервис при активном событии моделирует сбойную ситуацию.

3) «Наблюдатель» - РПВ встраивается в постоянно используемое ПО или сервис и осуществляет контроль обработки информации, реализует контроль других РПВ. (Trojan Downloader)

4) Искажение либо инициатор ошибок.

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

Выделяют 3 основные группы деструктивных функций РПВ:

1. Сохранение фрагментов информации во внешнюю память.

2. Изменение алгоритмов функционирования прикладных программ.

3. Блокировка определенных режимов работы прикладных программ.

Лекция № 10. Компьютерные вирусы как класс РПВ

Вирусы как класс РПВ обладают следующими функциями:

1. способность к самодублированию

2. способность к ассоциированию с другими программами

3. способность скрывать признаки своего присутствия до определенного момента

4. направлены на деструктивные функции

Компьютерные вирусы делятся на:

· файловые

· загрузочные

· макровирусы

Жизненный цикл вирусов включает 2 фазы: латентную, когда вирус не проявляет своего присутствия, и фазу непосредственного функционирования.

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

1) автоматическая загрузка при запуске операционной системы

2) внедрение в меню автозагрузки

3) через носители типа flash

Фаза исполнения вируса включает следующие этапы:

1) загрузка вируса в память

2) поиск «жертвы»

3) инфицирование

4) выполнение деструктивных функций

5) передача управления объекту-носителю вируса.

По способу поиска «жертвы» вирусы делятся на:

1. те, которые выполняют активный поиск объектов

2. те, которые ведут пассивный поиск, то есть устанавливают ловушки на заражаемые объекты

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

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

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

Для защиты от вирусов наиболее часто применяют антивирусные мониторы, сканнеры, ПА средства, не допускающие заражение вирусами объектов операционной среды, не допускающие проникновение в КС.

Наиболее часто используемые пути проникновения вируса в КС:

1. носитель информации с зараженным объектом;

2. электронная почта;

3. компьютерная сеть.

Методы борьбы с РПВ

1. Контроль целостности, системных событий, прикладных программ, используемых данных

2. Контроль цепочек прерываний и фильтрация вызовов, критических для безопасности систем прерываний

3. Создание изолированной программной среды

4. Предотвращение результатов воздействия РПВ, например, аппаратная блокировка записи на диск

5. Поиск РПВ по свойственным им или характерным последовательностям - сигнатурам

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


Подобные документы

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

    курсовая работа [475,7 K], добавлен 01.03.2015

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

    реферат [138,5 K], добавлен 14.07.2015

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

    реферат [115,1 K], добавлен 16.03.2014

  • Проникновение в BIOS ROM, аппаратная защита. Искажение содержимого Video ROM. Перекрытие адресных диапазонов, остановка вентиляторов. Превышение потребляемой мощности. Разрушение дисковых устройств. Манипуляции с программно-управляемыми напряжениями.

    реферат [31,4 K], добавлен 29.05.2012

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

    презентация [525,3 K], добавлен 09.12.2015

  • Защита информации и ее виды. Роль информационной безопасности. Защита от несанкционированного доступа к информации. Физическая защита данных на дисках. Виды компьютерных вирусов. Защита от вредоносных программ и спамов (антивирусы, хакерские утилиты).

    презентация [160,9 K], добавлен 04.10.2014

  • Методы и средства защиты информационных данных. Защита от несанкционированного доступа к информации. Особенности защиты компьютерных систем методами криптографии. Критерии оценки безопасности информационных компьютерных технологий в европейских странах.

    контрольная работа [40,2 K], добавлен 06.08.2010

  • Способы и средства защиты информации от несанкционированного доступа. Особенности защиты информации в компьютерных сетях. Криптографическая защита и электронная цифровая подпись. Методы защиты информации от компьютерных вирусов и от хакерских атак.

    реферат [30,8 K], добавлен 23.10.2011

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

    курсовая работа [18,6 K], добавлен 02.03.2011

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

    доклад [102,9 K], добавлен 30.04.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.