Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

Объект исследования – безопасной компьютерных технологий.

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

Задачи исследования:

- рассмотреть требования к системам защиты программного обеспечения;

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

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

1. ОБЗОР СТАНДАРТОВ ЗАЩИТЫ

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

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

Стандарты и руководящие документы можно разделить на две группы[4]:

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

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

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

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

Система стандартов Министерства обороны США в области компьютерной безопасности:

«Оранжевая книга» («Критерий оценки безопасности компьютерных систем») - заложила понятийный базис. В ней определяются важнейшие сервисы безопасности, и предлагается метод классификации информационных систем по требованиям безопасности

«Программа оценки безопасности продуктов»

«Желтая книга» («Руководство по применению критерия оценки безопасности компьютерных систем в специфических средах»)

«Радужная серия» (комплект документов)

Рекомендации X.800 по защите распределенных систем трактуют вопросы защиты сетевых конфигураций и предлагают развитый набор сервисов и механизмов безопасности.

Гармонизированные критерии европейских стран (критерии оценки безопасности компьютерных систем Великобритании)

Руководящие документы Гостехкомиссии при Президенте РФ

Так как в работе мы будем рассматривать построение защиты для МА ВМ (то есть российского учреждения), то использовать будем Руководящие документы Гостехкомиссии при Президенте РФ. Более подробно рассмотрим их далее.

1.1. Государственные стандарты РФ

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

Таблица 1.1. Нормативные документы, регламентирующие оценку защищенности информационных технологий.

1

ГОСТ Р ИСО 7498-2-99

Информационная технология. Взаимосвязь открытых систем. Базовая эталонная модель. Часть 2. Архитектура защиты информации

2

ГОСТ Р ИСО/МЭК

9594-8-98

Информационная технология. Взаимосвязь открытых систем. Справочник. Часть 8. Основы аутентификации

3

ГОСТ Р ИСО/МЭК 9594-9-95

Информационная технология. Взаимосвязь открытых систем. Справочник. Часть 9. Дублирование

4

ГОСТ Р ИСО/МЭК 15408-2002

Информационная технология. Методы обеспечения безопасности. Критерии оценки безопасности информационных технологий.

5

Руководящий документ Гостех- коммиссии

"Руководящий документ. Средства вычислительной техники. Межсетевые экраны. Защита от несанкционированного доступа к информации. Показатели защищенности от несанкционированного доступа к информации" (Утв. решением председателя Гостехкомиссии РФ 25.07.1997)

6

ГОСТ Р 50739-95

Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования" (принят и введен в действие Постановлением Госстандарта РФ от 09.02.1995 N 49)

Руководящие документы Гостехкоммисии РФ включают:

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

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

Показатели защищенности СВТ от НСД к информации. Устанавливают классификацию СВТ по уровню защищенности от НСД к информации на базе перечня показателей защищенности и совокупности описывающих их требований.

1.2. Классификацию автоматизированных систем и требования по защите информации.

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

В рамках государственных стандартов кратко рассмотрим некоторые документы, которые понадобятся нам в дальнейшем для построения защищенной СКБ (АС):

1. "Информационная технология. Методы обеспечения безопасности. Критерии оценки безопасности информационных технологий" ГОСТ Р ИСО/МЭК 15408-2002.

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

Руководящий документ разработан в развитие РД Гостехкомиссии России по защите информации от несанкционированного доступа и соответствует ГОСТ Р ИСО/МЭК 15408-2002 "Информационная технология. Методы обеспечения безопасности. Критерии оценки безопасности информационных технологий" - Общие критерии (ОК).

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

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

«Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования.» ГОСТ Р 50739-95

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

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

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

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

"Защита информации. Основные термины и определения. ГОСТ Р 50922-2006" (утв. Приказом Ростехрегулирования от 27.12.2006 N 373-ст)

Настоящий стандарт устанавливает основные термины и их определения в области защиты информации.

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

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

1.3. Классы защиты

Основополагающие документы открыли путь к ранжированию информационных систем по степени надежности. Так, в Оранжевой книге определяется четыре уровня безопасности - D, C, B, A. По мере перехода от уровня D до A к надежности систем предъявляются все более жесткие требования. Уровни C и B подразделяются на классы (С1, C2, В1, В2, ВЗ). Чтобы система в результате процедуры сертификации могла быть отнесена к некоторому классу, ее политика безопасности и гарантированность должны удовлетворять оговоренным требованиям. [23] [4]

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

Устанавливается семь классов защищенности СВТ от НСД к информации. Самый низкий класс — седьмой, самый высокий — первый. В Приложении 2 приведена таблица защищенности СВТ от НСД к информации.

Классификация автоматизированных систем устроена следующим об- разом[23]. Снова обратимся к соответствующему Руководящему документу:

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

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

Третья группа классифицирует АС, в которых работает один пользователь, допущенный ко всей информации АС, размещенной на носителях одного уровня конфиденциальности. Группа содержит два класса — ЗБ и ЗА.

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

Группа содержит два класса — 2Б и 2А.

Первая группа классифицирует многопользовательские АС, в которых одновременно обрабатывается и (или) хранится информация разных уровней конфиденциальности и не все пользователи имеют право доступа ко всей информации АС. Группа содержит пять классов— 1Д, 1Г, 1В, 1Б и 1А.

Сводные данные требований ко всем девяти классам защищенности АС указаны в приложении 1.

1.4. Классификация угроз безопасности

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

Единой и общепринятой классификации угроз безопасности АС пока не существует [22]. Однако можно классифицировать эти угрозы по различным аспектам их реализации, способу их осуществления и объекту атаки. Классификация угроз по цели:

несанкционированное чтение информации; несанкционированное изменение информации;

несанкционированное уничтожение информации;

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

Классификация угроз по принципу:

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

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

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

Классификация угроз по характеру воздействия:

активное воздействие - несанкционированные действия злоумышленника в системе;

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

Классификация угроз по типу используемой злоумышленником слабости защиты:

неадекватная политика безопасности, в том числе и ошибки администратора системы;

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

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

ранее внедренная программная закладка.

Классификация угроз по способу воздействия на объект атаки:

непосредственное воздействие;

превышение пользователем своих полномочий;

работа от имени другого пользователя;

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

Классификация угроз по способу действий злоумышленника (нарушителя):

в интерактивном режиме (вручную);

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

Классификация угроз по объекту атаки:

операционная система в целом;

объекты операционной системы (файлы, устройства и т.д.);

субъекты операционной системы (пользователи, системные процессы и т.д.);

каналы передачи данных.

Классификация угроз по используемым средствам атаки:

штатные средства операционной системы без использования дополнительного программного обеспечения;

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

специально разработанное программное обеспечение.

Классификация угроз по состоянию атакуемого объекта операционной системы на момент атаки:

хранение;

передача;

обработка.

C:\Users\rewqr\AppData\Local\Temp\FineReader12.00\media\image1.jpeg

Рисунок 1. Классификация угроз безопасности.

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

разрушительные;

дестабилизирующие;

парализующие

стимулирующие угрозы;

Классификация физических угроз:

уничтожение или разрушение средств обработки информации и связи;

хищение носителей информации;

хищение программных или аппаратных ключей и средств криптографической защиты данных;

воздействие на персонал;

Классификация радиоэлектронных угроз:

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

перехват, расшифровка, подмена и уничтожение информации в каналах связи.

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

2. ВИДЫ СИСТЕМ ЗАЩИТЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

2.1. Методические аспекты разработки систем защиты программного обеспечения

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

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

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

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

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

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

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

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

Классификация воздействий на исполняемый код включает два направления:

анализ;

модификация.

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

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

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

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

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

Выделяют два типа анализа ПО: статический и динамический анализ.

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

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

В зависимости от реализации статический анализ может быть проведён в ручном или автоматизированном режиме (в виде утилит или надстроек для систем IDE). Утилиты и надстройки применяются разработчиками для тестирования, выявления и устранение потенциальных ошибок ПО.

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

Динамический анализ. Динамический анализ кода - анализ ПО, производимый в результате выполнения исследуемой программы на реальном или виртуальном процессоре.

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

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

Доступные средства: отладчики, виртуальные машины.

Модификация исполняемого кода. Бывают ситуации, когда разработчик выпускает патч (от англ. patch - заплата) для приложения, позволяющий изменить несколько известных ему значений в исполняемом файле. К примеру, исполняемый файл программы размером 50МБ и патч - размером 11КБ. Из соображений экономии интернет-трафика пользователей или по каким-либо другим причинам можно выпустить патч размером 11КБ, передать пользователям по сети и изменить значения исполняемого файла в 50МБ.

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

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

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

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

Безопасность исполняемого кода направлена на противодействие:

анализу ПО;

модификации исполняемого кода.

По типу реализации защиты следует выделить:

статический режим;

динамический режим.

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

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

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

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

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

Методы защиты исполняемого кода. Широкое применение на практике нашли следующие методы защиты кода:

Сжатие/Криптографические методы;

Обфускация (запутывание);

Виртуализация процессора;

Использование упаковщиков/Изменение заголовков;

Полиморфизм и мутации;

Доступ к драйверам и оборудованию;

Нестандартные методы.

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

Сжатие/Криптографические методы. Криптографические методы направлены на видоизменение открытых данных путём математических действий по заданным алгоритмам. Такими методами являются:

шифрование;

стеганография;

хеширование;

сжатие;

кодирование;

распределение ключевой информации и др.

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

Шифрование является универсальным средством защиты не только в данном контексте, оно применяется повсеместно: протоколы безопасного обмена данными, конфиденциальная информация в базах данных (БД), цифровых подписях и др.

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

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

Принимая это во внимание, следует учитывать некоторые особенности в реализации шифрования исполняемого кода:

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

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

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

Усилить защиту способны:

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

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

Недостатки метода:

существует проблема хранения ключей;

способ малоэффективен при трассировке приложения.

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

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

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

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

Хорошую степень защиты приносит комбинирование методов сжатия с различными упаковщиками при условии, что упаковщик не является одним из популярных (к примеру, UPX или ASPack) и хорошо известных взломщикам, а написан разработчиком самостоятельно. Такая защита затруднит анализ и уменьшит размер приложения.

Недостаток метода - популярные функции сжатия хорошо известны многим взломщикам;

Основная задача использования хэш-функций в системе защиты кода - защита от модификации. Хеширование работает в динамическом режиме. Принцип работы состоит в следующем. Путём вычисления контрольных сумм (КС) и выполняя сравнение их с эталонами, прошитыми в программе, обеспечивается контроль целостности (КЦ) защищаемых участков кода или его целиком. КЦ производится не только перезапуске приложения, но и при непрерывном контроле защищённых участков памяти в ОЗУ.

Стоит отметить, что обойти защиту с использованием простых функций (CRC или FNV и др.) достаточно просто, поэтому стоит использовать MD1, SHA-1, SIMD или написать собственную хэш-функцию.

Недостатки метода:

проблема хранения КС;

популярные хэш-функции хорошо известны многим взломщикам;

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

2.2. Современные технологии защиты ПО от нелегального копирования

Согласно исследованиям IDC, уровень пиратства в России в 2009 г. составил 67%. Несмотря на то что эта цифра каждый год снижается, для производителей коммерческого ПО это означает огромную недополученную прибыль.

Многие крупные производители софта предпочитают бороться с пиратством организационными  и юридическими мерами. Компания Adobe не так давно отрапортовала, что скорость закрытия нелегальных раздач ее ПО на "торрент-трекерах" составила рекордные 26 секунд. А скандально известное "дело Поносова" о нелегальной установке в заурядной сельской школе ПО от Microsoft – лишь одно из множества дел о нарушении авторских прав, рассматривавшихся в российских судах за последнее десятилетие. Однако мониторинг торрент-трекеров и показательные судебные процессы – лишь часть большого комплекса мер по защите интеллектуальной собственности.

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

Защита от копирования

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

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

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

Недорогой софт, выпускаемый в промышленных масштабах (особенно компьютерные игры), проще всего защищать, привязывая к носителю (CD- или DVD-дискам). Там используются, по сути, те же методы, которыми раньше защищали дискеты: нестандартное форматирование, сбойные секторы на диске, специально закодированный таким образом ключ. В качестве дополнительной меры защиты в системе может устанавливаться специальный защищенный драйвер, призванный бороться с различными эмуляторами. Этот метод защиты сравнительно дешев и подходит для широко тиражируемых продуктов. К ограничениям можно отнести не самую высокую степень защиты и неудобство, вызванное привязкой к физическому носителю. Самые известные системы защиты по такой технологии: SecuROM, StarForce, SafeDisk, Tages.

Электронные ключи

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

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

Интернет-активация

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

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

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

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

Обфускация кода

Несмотря на то что ассемблер современных процессоров не так прост для понимания, как высокоуровневый С-код, опытный взломщик с большой долей вероятности сможет при наличии времени и сил воспроизвести любые алгоритмы в приложении, включая и те, что обеспечивают защиту от копирования. И если где-то существует заблуждение, что сама по себе компиляция в машинный код - это уже хорошая защита, то в современном мире это не так, не говоря уже о том, что множество технологий не предусматривает компиляции в машинный код, а анализировать байт-код или промежуточное представление куда легче (например, .NET, Java или ActionScript).

Здесь на помощь приходят технологии обфускации (запутывания) кода. Обфускация может выполняться на разных уровнях в зависимости от языка. Для Web-технологий (например, клиентского JavaScript) есть возможность только запутывания исходного кода. Если речь о языке с компиляцией в некий промежуточный код (например, у Java или .NET), то обфусцируется этот код. Но на сегодняшний день в большинстве своем коммерческий софт пишется на классических языках (например, С) и компилируется в машинный код, в связи с чем встает задача обфускации машинного кода.

Псевдокод и полиморфные технологии

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

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

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

Перспективы

За последние 30 лет появлялись и погибали различные технологии. И сейчас многим кажется, что с развитием Интернета и цифровой дистрибуции право на существование имеет только онлайн-активация для защиты от копирования и обфускация кода для защиты от реверсинга. Однако есть и противоположная тенденция – развитие рынка SaaS и переход приложений в "облако". Если считать эту тенденцию потенциальным победителем, то защита вообще никому не нужна, ведь приложение не распространяется. Для "облаков" важна аутентификация, безопасность передачи данных и доступность сети.

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

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

2.3. Сравнительный анализ антивирусных программ

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

Компьютерный вирус – это вредоносное программное обеспечение, способное нанести непоправимый ущерб компьютеру и информации, хранящейся на его носителях [4]. Его основной целью является нанесение вреда, хищение информации и многое другое. Определить наличие вируса на компьютере можно по признакам, представленным на рисунке 1.

https://sibac.info/files/2017_09_28_studtech/Agababyn.files/image001.png

Рисунок 2. Признаки заражения вирусом

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

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

стабильность и надежность работы;

регулярное обновление базы данных;

определение разнообразных типов вирусов;

умение работать с файлами разнообразных типов;

осуществление проверки всех новых файлов автоматически;

возможность восстанавливать зараженные файлы, не стирая их с жесткого диска [3].

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

На сегодняшний день в мире существует огромное разнообразие компьютерных вирусов. Согласно данным компании Symantes, в 2008 году суммарное количество вирусов уже превысило 1 миллион экземпляров [5]. Именно для определения того или иного типа вируса у антивирусных программ есть база данных сигнатур, с которой антивирус сверяет сканируемые файлы. И при обнаружении подозрительности оповещает об этом пользователя.

Антивирусные программы имеют три режима проверки на наличие вредоносного программного обеспечения: минимальный, средний (оптимальный), максимальный (параноидальный).

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

Компьютерные вирусы опасны как для аппаратной части компьютера, так и для персональных данных. Чтобы защитить их, необходимо установить на компьютер антивирусную программу. Рассмотрим наиболее популярные на 2017 год антивирусные программы (рис. 23):

https://sibac.info/files/2017_09_28_studtech/Agababyn.files/image002.jpg

Рисунок 3. Популярные антивирусные программы

Антивирус лаборатории Касперского – Internet Security 2017. Самая известная антивирусная программа на территории Российской Федерации. Данный антивирус работает с операционными системами Windows, Mac, а также планшетными и мобильными устройствами на базе Android [2]. Лаборатория Касперского предоставляет антивирусные программы для малого, среднего и крупного бизнеса, которые защищают Интернет-соединения, банковые операции, веб-камеру и имеют функцию родительского контроля. Антивирус предоставляет возможность поиска и установки обновлений программ и удаление неиспользуемых программ, имеется бесплатный тестовый период – 30 дней.

Avast Free Antivirus 2017 – интуитивно понятная и не требующая значительных ресурсов программа для защиты компьютера [6]. Данное антивирусное программное обеспечение распространяется бесплатно, но можно приобрести расширенную или максимальную версии, которые содержат в себе дополнительные функции. Avast совместим с большинством современных операционных систем, а также смартфонов на базе Android и iPhone. Как и Антивирус лаборатории Касперского предоставляет антивирусные программы для бизнеса, защищает Интернет-соединения, банковые и финансовые операции и проверяет безопасность сети Wi-Fi.

360 Total Security. Данный антивирус быстр и прост в использовании, практически с каждым обновлением программы ее арсенал функций возрастает. Данная антивирусная программа совместима с теми же операционными системами, что и ее конкуренты. Этот продукт защищает веб-браузер, сжимает данные в памяти компьютера, проверяет и очищает системный реестр, защищает сеть Wi-Fi от внешних угроз. Для опытных пользователей имеются гибкие настройки приложения, возможность оптимизировать работу системы через антивирус и выбора темы оформления интерфейса на интересующую тематику [1]. Данный антивирус также является бесплатным, но можно купить премиум версию, которая отличается расширенным функционалом.

В таблице 2. 1 представлены результаты сравнительного анализа функционала рассмотренных антивирусных программ.

Таблица 2.1. Результаты сравнительного анализа антивирусных программ

Функционал антивирусной программы

Антивирус Касперского – Internet Security 2017

Avast Free Antivirus 2017

360 Total Security

Антивирусный сканер и антивирусный монитор

+

+

+

Защита персональных данных

+

+

+

Система обновлений

+

+

+

Веб-защита

+

+

+

Поведенческий блокиратор

+

+

+

Эвристический анализ

+

+

+

Анти-фишинг

+

-

-

Анти-спам

+

-

-

Возможность работы в облаке

+

+

+

Цена базовой версии

1800 руб.

бесплатно

бесплатно

Цена премиум версии

1992 руб.

1950 руб.

999 руб.

 Из представленной таблицы видно, что безусловным лидером по функционалу является антивирус Касперского – Internet Security 2017, два других претендента немного отстают. Таким образом, самым оптимальным вариантом является антивирус Касперского – Internet Security 2017. Ели же нет желания платить за лицензию Avast Free Antivirus 2017 и 360 Total Security являются неплохим выбором, потому что базовые версии отлично подходят для повседневной работы за компьютером. Особенно они будут удобны для новичков, благодаря автоматизации множества функций и удобному, простому интерфейсу.

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ  

  1. Provos Niels, Holz Thorsten. Virtual Honeypots: From Botnet Tracking to Intrusion Detection//AddisonWesleyProfessional, 2007. 480 p.
  2. Аветисян А.И., Белеванцев А.А., Бородин А.Е., Несов В.В. Использование статического анализа для поиска уязвимостей и критических ошибок в исходном коде программ // Труды ИСП РАН. Том 21, 2011. C. 23-38.
  3. Агабабян Е.О. Сравнительный анализ антивирусных программ // Научное сообщество студентов XXI столетия. Технические науки: сб. ст. по мат. LVII междунар. студ. науч.-практ. конф. № 9(56). URL: https://sibac.info/archive/technic/9(56).pdf (дата обращения: 08.03.2019)
  4. Антивирус 360 Total Security для защиты компьютера [Электронный ресурс]. – Режим доступа: https://ru-360totalsecurity.ru (дата обращения: 16.09.2017).
  5. Антивирус лаборатории Касперского – Internet Security 2017[Электронный ресурс]. – Режим доступа: https://www.kaspersky.ru (дата обращения: 17.02.2019).
  6. Антивирусные программы и их классификация [Электронный ресурс]. – Режим доступа: https://studopedia.ru/11_73520_antivirusnie-programmi-i-ih-klassifikatsi... (дата обращения: 16.02.2019).
  7. Антивирусные программы. Принцип работы [Электронный ресурс]. – Режим доступа: http://www.softerr.com/bezopasnost/chto-takoe-antivirusnyie-programmy.html (дата обращения: 15.02.2019).
  8. Гецци Карло. Основы инженерии программного обеспечения // Карло Гецци, Мехди Джазайери, Дино Мандриоли. М.: БХВ-Петербург, 2017. 832 c.
  9. Гроувер Д. Защита программного обеспечения // Д. Гроувер, Р. Сатер, и др. М.: Мир, 2017. 283 c.
  10. Гэртнер Маркус. ATDD. Разработка программного обеспечения через приемочные тесты // Маркус Гэртнер. Москва: Мир, 2014. 232 c.
  11. Дюваль. Непрерывная интеграция. Улучшение качества программного обеспечения и снижение риска // Дюваль М. Поль. М.: Вильямс, 2017. 240 c.
  12. Казарин О.В. Безопасность программного обеспечения компьютерных систем. Монография. М.: МГУЛ, 2003. 212 с.
  13. Лучшие антивирусы 2018 года [Электронный ресурс]. – Режим доступа: http://pcpro100.info/luchshie-antivirusyi-2018-goda/ (дата обращения: 18.02.2019).
  14. Лучший бесплатный антивирус [Электронный ресурс]. – Режим доступа: https://www.avast.ru/index(дата обращения: 17.02.2019).
  15. Макаренко С.И., Чукляев И.И. Терминологический базис в области информации информационного противоборства // Вопросы кибербезопасности, 2014. № 1. С. 13-21.
  16. Маккарти Джим. Правила разработки программного обеспечения (+ CD-ROM) / Маккарти Джим. М.: Русская Редакция, 2017. 825 c.
  17. Фаронов В.В. Turbo Pascal 7.0 Практика программирования. Учебное пособие. М.: Нолидж, 2001. 416 с.
  18. Чукляев И.И., Морозов А.В., Болотин И.Б. Теоретические основы построения адаптивных систем комплексной защиты информационных ресурсов распределенных информационно-вычислительных систем. Монография // Смоленск: ВА ВПВО ВС РФ, 2011. 227 с.