М. В. Шаханова

Современные технологии информационной безопасности

Учебно-методический комплекс

ebooks@prospekt.org

Информация о книге

УДК 614.2

ББК 66.4(2)3

Ш11

Автор: Шаханова М. В.

Рецензенты: Гряник В. Н., канд. техн. наук, доц., зав. кафедрой электроники ВГУЭС;

Быканова А. Ю., канд. техн. наук., ст. научный сотрудник ИПМТ ДВО РАН.

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

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

УДК 614.2

ББК 66.4(2)3

© ДВФУ, 2007

© ООО "Проспект", электронная версия книги, 2015

ВВЕДЕНИЕ

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

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

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

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

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

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

Цикл, состоящий из пяти лабораторных работ, проводится в рамках дисциплины “Информационная безопасность и защита информации”.

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

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

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

Выполнение лабораторной работы № 1 “Алгоритмы вычисления наибольшего общего делителя” дает студентам практические навыки реализации алгоритмов Евклида (классического, бинарного, расширенного). Программы, реализующие указанные алгоритмы, используются в двух следующих лабораторных работах и, кроме того, применяются в дальнейших работах по дисциплине “Криптографические методы и средства обеспечения информационной безопасности” для вычисления наибольшего общего делителя и обращения чисел и многочленов (например, при выработке параметров криптосистемы RSA).

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

При выполнении лабораторных работ № 3, № 4 и № 5 “Элементарные методы цифрового шифрования”, “Симметричные системы защиты информации” и “Системы защиты информации с открытым ключом. Асимметричные системы” студенты должны написать программы, реализующие эти алгоритмы, протестировать их и реализовать программы, помогающие вскрыть один из алгоритмов путем криптографического анализа, исследовать алгоритмы на количество ошибок, обработать полученные статистические данные, а также измерить и сравнить время работы программ.

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

1. ПОНЯТИЕ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ

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

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

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

Защищаемая информация имеет следующие признаки:

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

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

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

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

С повышением значимости и ценности информации соответственно растёт и важность её защиты.

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

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

Аспекты защиты информации

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

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

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

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

Таким образом, не существует абсолютной защиты. Всякая защита измеряется временем взлома.

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

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

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

На практике важнейшими являются три аспекта информационной безопасности:

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

– целостность (актуальность и непротиворечивость информации, ее защищенность от разрушения и несанкционированного изменения);

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

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

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

2. ОСНОВНЫЕ КЛАССИФИКАЦИИ УГРОЗ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ

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

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

2.1. Классификация угроз, предложенная Стивом Кентом

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

Рис. 2.1. Угрозы безопасности

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

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

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

Пассивные нарушения обнаружить очень трудно, но их вполне реально предупредить.

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

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

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

3. Модификация означает либо изменение части легитимного сообщения, либо его задержку, либо изменение порядка поступления сообщения с целью получения несанкционированного эффекта. Например, сообщение “Разрешить доступ к секретному файлу Бюджет Ивану Иванову” можно преобразовать к виду “Разрешить доступ к секретному файлу Бюджет Петру Петрову”.

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

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

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

По средствам воздействия различают три основных класса угроз:

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

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

3. Разрушающее воздействие на программные компоненты системы с помощью программных средств. Такие средства называются разрушающими программными средствами (РПС). К ним относятся компьютерные вирусы, троянские кони, средства проникновения в удалённые системы с использованием локальных и глобальных сетей. Средства борьбы с подобными атаками состоят из программно – и (реже) аппаратно-реализованных систем защиты.

Рассмотрим подробно каждый из этих классов.

Вмешательство человека

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

• Искажение (misrepresentation) – это использование компьютера для введения в заблуждение или запугивания с определённой целью. При данной угрозе компьютер рассматривается как объект, предмет или инструмент правонарушения. Обман, даже если с его помощью извлекается прибыль, не обязательно является преступлением, поэтому искажение само по себе согласно законодательству ещё не компьютерное преступление. Главная опасность искажения состоит во введении в заблуждение лиц, ответственных за безопасность, при сокрытии нарушений.

• Кража (theft) может быть трёх типов: кража оборудования, кража информации и кража услуг.

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

Кража информации – для того чтобы похитить информацию, не нужно выносить из здания компьютер. Термин “утечка данных” (data leakage) применяется для описания действий, заключающихся в тайном копировании информации и выносе её за пределы организации. Целостность подвергается опасности только в том случае, когда совершается кража единственной копии информации. Кража информации может оставаться незамеченной.

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

• Хищение (embezzlement) обычно имеет отношение к внутренней работе, когда кража денег или ресурсов работодателя выполняется его же сотрудником. Будучи одним из самых старых видов преступлений вообще, хищение является одним из наиболее распространённых видов компьютерных преступлений в частности. Самым лёгким способом хищения данных является их подмена (data diddling) – процесс изменения данных перед вводом или в процессе ввода. Расхитители могут воспользоваться таким богатым набором различных приёмов, что рассказать обо всех практически невозможно.

• Мошенничество (fraud) – это любое использование информационной системы при попытке обмана организации или получения её ресурсов. Способы мошенничества столь же разнообразны, как и способы хищения.

• Небрежность (bumbling) – ошибки человека (human errors), случайности (accidents), оплошности (errors of omission), проявления некомпетентности (errors of commission).

• Неточная или устаревшая информация.

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

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

• Самозванство (impersonation) – это использование кода доступа другого человека для проникновения в систему в целях изучения данных, использования программ или отводимого ему компьютерного времени.

• Сбор мусора (scavenging) или подсматривание (browsing) часто связаны с необходимостью покопаться в отходах (dumpster diving), чтобы найти листинги, ленты, диски, информацию о кредитных карточках, использованные копирки и другие сведения. Применительно к компьютерам сбор мусора может означать восстановление с помощью соответствующих утилит файлов, удалённых пользователями. Кроме того, источником утечки информации может стать принтер, когда из-за задержки печати пользователь создаёт большее число копий, которые могут попасть в чужие руки.

• Умышленное повреждение данных или программ.

Аппаратурно-техническое вмешательство

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

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

• Перегрузка. При больших нагрузках сломается всё что угодно. Когда система перегружается, безопасность сети подвергается риску.

• Излучение (emanations) – это испускание электромагнитных сигналов, являющееся одним из слабых мест в компьютерной защите. Как кабели, так и подключаемые с их помощью устройства излучают определённые сигналы. Чувствительная антенна позволит на расстоянии прочесть данные даже при незначительном уровне излучения. Слабыми местами в системе безопасности из-за излучения могут быть: компьютеры, принтеры, модемы, мониторы, клавиатуры, переходники, усилители, распределительные коробки, места соединения коаксиального кабеля.

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

Воздействие на программные компоненты вычислительной системы

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

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

Рис. 2.2. Типы РПС

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

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

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

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

• Троянский конь (troyan horse) – это любая программа, содержащая в себе некоторую разрушающую функцию, которая активизируется при наступлении некоторого условия срабатывания. Троян – это вирус, который, маскируясь под полезную программу, антивирус, upgrade к Windows и т.д., заражает ваш компьютер.

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

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

• Потайной ход (back door) – это дополнительный способ проникновения в систему, часто преднамеренно создаваемый разработчиком сети, хотя иногда он может возникнуть и случайно. Лазейка (trap door) – разновидность потайного хода. Так обычно называют вспомогательные средства, которые программисты используют при создании, тестировании или поддержке комплексных программ. Потайные ходы обычно не документируются.

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

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

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

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

2.3. Угрозы безопасности в распределительных системах

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

К фундаментальным угрозам относятся:

утечка информации – раскрытие информации неавторизованному пользователю или процессу;

нарушение целостности – компрометация согласованности (непротиворечивости) данных путем целенаправленного создания, подмены и разрушения данных;

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

незаконное использование – использование ресурсов незаконным образом, неавторизованным объектом или субъектом. Например, использование удаленного компьютера с целью “взлома” других компьютеров сети.

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

К угрозам проникновения относятся:

маскарад. Пользователь (или иная сущность – процесс, подсистема и т.д.) маскируется и пытается выдать себя за другого пользователя. Данная угроза, как правило, связана с попытками проникновения внутрь периметра безопасности и часто реализуется хакерами;

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

нарушение полномочий – использование ресурсов не по назначению. Данная угроза связана с действиями внутреннего нарушителя.

К угрозам внедрения относятся:

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

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

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

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

2.4. Взаимосвязь различных видов угроз

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

Рис. 2.3. Взаимосвязь угроз

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

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

3. ПРОГРАММЫ С ПОТЕНЦИАЛЬНО ОПАСНЫМИ ПОСЛЕДСТВИЯМИ

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

• скрыть признаки своего присутствия в программной среде ПЭВМ;

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

• изменять код программ в оперативной или внешней памяти;

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

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

Программы с потенциально опасными последствиями можно условно подразделить:

• на классические программы-“вирусы”;

• программы типа “программный червь” или “троянский конь” и фрагменты программ типа “логический люк”;

• программы типа “логическая бомба”;

• программные закладки – обобщенный класс программ с потенциально опасными последствиями.

Кроме того, такие программы можно классифицировать по методу и месту их внедрения и применения (т.е. по “способу доставки” в систему):

• закладки, связанные с программно-аппаратной средой (BIOS);

• закладки, связанные с программами первичной загрузки;

• закладки, связанные с драйвером DOS, командным интерпретатором, сетевыми драйверами, т.е. с загрузкой и работой операционной среды;

• закладки, связанные с прикладным программным обеспечением общего назначения (встроенные в клавиатурные и экранные драйверы, программы тестирования ПЭВМ, утилиты, файловые оболочки);

• исполняемые модули, содержащие только код закладки (как правило, внедряемые в пакетные файлы типа ВАТ);

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

• закладки, маскируемые под программные средства оптимизационного назначения (архиваторы, ускорители и т.д.);

• закладки, маскируемые под программные средства игрового и развлекательного назначения (как правило, используются для первичного внедрения других закладок; условное название – “исследователь”).

3.1. Компьютерные вирусы

Первые исследования саморазмножающихся искусственных конструкций проводились в середине прошлого столетия: в работах фон Неймана, Винера и других дано определение и проведен математический анализ конечных автоматов, в том числе самовоспроизводящихся. Термин “компьютерный вирус” появился позднее – официально считается, что его впервые употребил сотрудник Лехайского университета (США) Фред Коэн в 1984 г. на 7-й конференции по безопасности информации, проходившей в США.

Что такое компьютерный вирус? Формальное определение этого понятия до сих пор не придумано, и есть серьезные сомнения, что оно вообще может быть дано. Многочисленные попытки дать “современное” определение вируса не привели к успеху. Чтобы почувствовать всю сложность проблемы, попробуйте, к примеру, дать определение понятия “редактор”. Вы либо придумаете нечто очень общее, либо начнете перечислять все известные типы редакторов. И то, и другое вряд ли можно считать приемлемым. Поэтому мы ограничимся рассмотрением некоторых свойств компьютерных вирусов, которые позволяют говорить о них как о некотором определенном классе программ.

Компьютерный вирус – это программа, обладающая способностью к самовоспроизведению. Такая способность является единственным средством, присущим всем типам вирусов. Но не только вирусы способны к самовоспроизведению. Любая операционная система и еще множество программ способны создавать собственные копии. Копии же вируса не только не обязаны полностью совпадать с оригиналом, но и могут вообще с ним не совпадать!

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

В настоящее время известно более тридцати тысяч вирусов. Условно они подразделяются на классы по следующим признакам:

• среда обитания вируса;

• способ заражения среды обитания;

• деструктивные возможности;

• особенности алгоритма.

По среде обитания различают вирусы сетевые, файловые, загрузочные и специальные. Сетевые вирусы распространяются по компьютерной сети, файловые внедряются в выполняемые файлы, т.е. в файлы, имеющие расширения СОМ и EXE. Файловые вирусы могут внедряться и в другие типы файлов, но, как правило, записанные в таких файлах, они никогда не получают управление и, следовательно, теряют способность к размножению. Загрузочные вирусы внедряются в загрузочный сектор диска (Boot-сектор) или в сектор, содержащий программу загрузки системного диска (Master Boot Record). Специальные ориентированы на конкретные особенности программного обеспечения (ПО), например вирус, заражающий документы редактора Word. Существуют сочетания – например, файлово-загрузочные вирусы, заражающие и файлы, и загрузочные сектора дисков. Кроме того, по сети могут распространяться вирусы любых типов.

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

По деструктивным возможностям вирусы можно разделить:

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

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

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

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

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

3.1.1. Основные виды вирусов и схемы их функционирования

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

• загрузочные;

• файловые;

• файлово-загрузочные.

Теперь поподробнее о каждой из этих групп.

Загрузочные вирусы

Рассмотрим схему функционирования очень простого загрузочного вируса, заражающего дискеты. Что происходит, когда вы включаете компьютер? Первым делом управление передается программе начальной загрузки, которая хранится в постоянно запоминающем устройстве (ПЗУ), т.е. ПНЗ ПЗУ. Эта программа тестирует оборудование и при успешном завершении проверок пытается найти дискету в дисководе А:\.

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

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

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

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

• копирует в выделенную область диска свой хвост и оригинальный (здоровый) загрузочный сектор;

• замещает программу начальной загрузки в загрузочном секторе (на стоящем) своей головой, организует цепочку передачи управления.

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

ПНЗ (ПЗУ) – ПНЗ (диск) – СИСТЕМА 

появляется новое звено:

ПНЗ (ПЗУ) – ВИРУС – ПНЗ (диск) – СИСТЕМА

Мораль ясна: никогда не оставляйте (случайно) дискет в дисководе А.

Мы рассмотрели схему функционирования простого загрузочного вируса, живущего в загрузочных секторах дискет. Как правило, вирусы способны заражать не только загрузочные секторы дискет, но и загрузочные секторы винчестеров. При этом в отличие от дискет на винчестере имеются два типа загрузочных секторов, содержащих программы начальной загрузки, которые получают управление. При загрузке компьютера с винчестера первой берет на себя управление программа начальной загрузки в MBR (Master Boot Record – главная загрузочная запись). Если ваш жесткий диск разбит на несколько разделов, то лишь один из них помечен как загрузочный (boot). Программа начальной загрузки в MBR находит загрузочный раздел винчестера и передает управление на программу начальной загрузки этого раздела. Код последней совпадает с кодом программы начальной загрузки, содержащейся на обычных дискетах, а соответствующие загрузочные секторы отличаются только таблицами параметров. Таким образом, на винчестере имеются два объекта атаки загрузочных вирусов: программа начальной загрузки в MBR и программа начальной загрузки в бут-секторе загрузочного диска.

Файловые вирусы

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

Какие же действия выполняет вирус? Он ищет новый объект для заражения – подходящий по типу файл, который еще не заражен (в том случае, если вирус “приличный”, а то попадаются такие, что заражают сразу, ничего не проверяя). Заражая файл, вирус внедряется в его код, чтобы получить управление при запуске этого файла. Кроме своей основной функции – азмножения, вирус вполне может сделать что-нибудь замысловатое (сказать, спросить, сыграть) – это уже зависит от фантазии автора вируса. Если файловый вирус резидентный, то он установится в память и получит возможность заражать файлы и проявлять прочие способности не только во время работы зараженного файла. Заражая исполняемый файл, вирус всегда изменяет его код – следовательно, заражение исполняемого файла всегда можно обнаружить. Но, изменяя код файла, вирус не обязательно вносит другие изменения:

• не меняет длину файла;

• не использует участки кода;

• не меняет начало файла.

Наконец, к файловым вирусам часто относят вирусы, которые “имеют некоторое отношение к файлам”, но не обязаны внедряться в их код. Рассмотрим в качестве примера схему функционирования вирусов известного семейства Dir-II. Нельзя не признать, что появившись в 1991 г., эти вирусы стали причиной настоящей эпидемии компьютерной чумы в России. Рассмотрим модель, на которой ясно видна основная идея вируса. Информация о файлах хранится в каталогах. Каждая запись каталога включает в себя имя файла, дату и время создания, некоторую дополнительную информацию, номер первого кластера файла и так называемые резервные байты. Последние оставлены «про запас» и самой MS-DOS не используются.

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

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

Загрузочно-файловые вирусы

Мы не станем рассматривать модель загрузочно-файлового вируса, потому что никакой новой информации вы при этом не узнаете. Но здесь представляется удобный случай кратко обсудить крайне “популярный” в одно время загрузочно-файловый вирус OneHalf, заражающий главный загрузочный сектор (MBR) и исполняемые файлы. Основное разрушительное действие – ифрование секторов винчестера. При каждом запуске вирус шифрует очередную порцию секторов, а зашифровав половину жесткого диска, радостно сообщает об этом. Основная проблема при лечении данного вируса состоит в том, что недостаточно просто удалить вирус из MBR и файлов, надо расшифровать зашифрованную им информацию. Наиболее “смертельное” действие – просто переписать новый здоровый MBR. Главное – не паникуйте. Взвесьте все спокойно, посоветуйтесь со специалистами.

Полиморфные вирусы

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

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

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

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

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

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

Вирус, как правило, внедряется в рабочую программу таким образом, чтобы при ее запуске управление сначала передалось ему и только после выполнения всех его команд снова вернулось к рабочей программе. Получив доступ к управлению, вирус прежде всего переписывает сам себя в другую рабочую программу и заражает ее. После запуска программы, содержащей вирус, становится возможным заражение других файлов. Наиболее часто вирусом заражаются загрузочный сектор диска и исполняемые файлы, имеющие расширения EXE, COM, SYS, ВАТ. Крайне редко заражаются текстовые файлы.

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

3.1.3. Признаки появления вирусов

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

– прекращение работы или неправильная работа ранее успешно функционировавших программ;

– медленная работа компьютера;

– невозможность загрузки операционной системы;

– исчезновение файлов и каталогов или искажение их содержимого;

– изменение даты и времени модификации файлов;

– изменение размеров файлов;

– неожиданное значительное увеличение количества файлов на диске;

– существенное уменьшение размера свободной оперативной памяти;

– вывод на экран непредусмотренных сообщений или изображений;

– подача непредусмотренных звуковых сигналов;

– частые зависания и сбои в работе компьютера.

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

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

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

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

Напомним основные виды вирусов: загрузочные, файловые, файловозагрузочные. Наиболее опасный вид вирусов – полиморфные.

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

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

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

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

3.2. Люки

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

Люки чаще всего являются результатом забывчивости разработчиков. В процессе разработки программы разработчики часто создают временные механизмы, облегчающие ведение отладки за счет прямого доступа к отлаживаемым частям продукта. По окончанию отладки большинство люков убирается из программы; но люди есть люди – зачастую они забывают о существовании каких-то мелких “лючков”.

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

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

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

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

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

Таким образом, люк (или люки) может присутствовать в программе ввиду того, что программист:

1) забыл удалить его;

2) умышленно оставил его в программе для обеспечения тестирования или выполнения оставшейся части отладки;

3) умышленно оставил его в программе в интересах облегчения окончательной сборки конечного программного продукта;

4) умышленно оставил его в программе с тем, чтобы иметь скрытое средство доступа к программе уже после того, как она вошла в состав конечного продукта.

3.3. Троянские кони

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

3.4. Логическая бомба

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

Мировая компьютерная общественность достаточно хорошо знакома с логическими бомбами. Логическая бомба является одним из излюбленных способов мести программистов компаниям, которые их уволили или чем-либо обидели. При этом чаще всего срабатывание бомбы ставится в зависимость от установки в системе даты – так называемые “часовые” бомбы. Это очень удобно: допустим, программист знает, что его уволят 1 марта; в таком случае он может установить “часовую” бомбу на взрыв, допустим, 6 июля или даже на Рождество, когда сам он будет уже вне пределов досягаемости для пострадавшей компании.

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

3.5. Программные закладки

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

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

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

Исполнение кода закладки может быть сопровождено операциями несанкционированной записи (НСЗ), например для сохранения некоторых фрагментов информации, и несанкционированного считывания (НСЧ), которое может происходить отдельно от операций чтения прикладной программы или совместно с ними. При этом операции считывания и записи, возможно, не связаны с получением конфиденциальной информации, например считывание параметров устройства или его инициализация (закладка может использовать для своей работы и такие операции, в частности, для инициирования сбойных ситуаций или переназначения ввода-вывода).

Несанкционированная запись закладкой может происходить:

• в массив данных, не совпадающий с пользовательской информацией, – сохранение информации;

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

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

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

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

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

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

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

Рассмотренные действия особенно опасны для программ подтверждения подлинности электронных документов (“электронная цифровая подпись” – ЭЦП). При считывании приготовленного для подписи файла-документа может произойти изменение имени автора, даты, времени, цифровых данных, заголовка документа (например, изменение суммы платежа в платежных поручениях и др.).

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

Широко известна и использовалась во многих банках система ЭЦП Pretty Good Privace (PGP). Многие стали жертвой простейшей программной закладки против этой системы.

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

Работа закладки была основана на навязывании длины файла. Закладка позволяет программе ЭЦП считать только первый 512-байтный блок и вычислять подпись только на его основе.

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

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

Отметим четыре основных метода воздействия программных закладок на ЭЦП:

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

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

3. Метод навязывания длины сообщения – предъявление программе ЭЦП электронного документа меньшей длины, следовательно, производится подпись только части документа.

4. Метод искажения программы ЭЦП – связан с изменением исполняемого кода самой программы ЭЦП.

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

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

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

3. Происходит обмен программным продуктом (в пространстве – передача по каналу связи или на материальном носителе, во времени – хранение), свободным от потенциально опасных действий, программный продукт не исполняется, задача защиты (статическая) ставится в трех вариантах: не допустить внедрения закладки; выявить внедренный код закладки; удалить внедренный код закладки.

4. В условиях п. 3 решается динамическая задача – защита от воздействия закладки в ходе работы программ.

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

Далее рассмотренные задачи будем упоминать как задачи 1–5.

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

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

а. Контроль целостности системных областей, запускаемых прикладных программ и используемых данных (решение Задачи 3).

б. Контроль критических для безопасности системы событий (решение задачи 2).

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

• навязывания конечного результата проверок;

• влияния на процесс считывания информации;

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

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

в. Создание безопасной и изолированной операционной среды (решение задачи 4).

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

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

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

Меры защиты можно подразделить на две основные группы:

I. Меры защиты на этапе разработки программного обеспечения (ПО) системы.

II. Меры защиты на этапе эксплуатации.

В группу I входят:

1. Меры защиты на этапе разработки прикладного ПО, содержащего внутреннюю защиту от несанкционированного доступа (НСД).

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

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

В группу II входят:

1. Регулярные меры защиты и контроля, применяемые постоянно с фиксированными временными интервалами.

2. Эпизодические защитные мероприятия (в дополнение к п. 1 в период повышения опасности вирусного нападения).

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

К общим способам защиты системы относятся:

– ограничение физического доступа к программам и оборудованию путем установления соответствующего организационного режима и применения аппаратных или программных средств ограничения доступа к ПЭВМ и ее компонентам;

– при активизации прикладного ПО контроль его целостности, целостности областей DOS, BIOS и CMOS путем просчета контрольных сумм (вычисления хеш-функций) и сравнения их с эталонными значениями для каждой ПЭВМ;

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

– организация выборочного и внезапного контроля работы операторов ПЭВМ с целью выявления фактов использования нерегламентированного ПО;

– защита от записи на магнитных носителях (дискетах), учет и надежное хранение архивных копий;

– немедленное уничтожение ценной информации сразу по истечении потребности в ней;

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

Средства защиты, учитывающие специфику работы фрагментов системы:

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

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

Что же касается мер защиты от вирусов и закладок в процессе разработки самих программ защиты (п. 2 группы I), то в данном случае необходимо предусмотреть: встроенный самоконтроль ПО системы защиты, установленный на сети, путем просчета контрольных сумм по файлам и коду программ в оперативной памяти; переопределение “на себя” существенно важных прерываний (int01h, 03h, 08h, 10h, 13h, 21h) для предотвращения перехвата ввода ключей и паролей и их сохранения закладкой на внешнем носителе, а также блокирование проникновения в логику работы программ защиты при помощи стандартных отладочных средств; защиту от переноса установленного ПО защиты коммуникации на другую ПЭВМ, проводимого с целью детального изучения ПО и поиска обходных путей для преодоления защиты; это может быть достигнуто “привязкой” ПО к индивидуальным параметрам ПЭВМ – тем самым работоспособность ПО будет обеспечиваться только на данной ЭВМ сети.

3.6. Атака “салями”

А теперь поговорим о биче банковских компьютерных систем – атаке “салями”.

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

При разработке банковских систем устанавливается правило округления (или усечения), используемое при выполнении всех операций. Вся хитрость состоит в том, как запрограммировать обработку округлений. Можно, конечно, просто удалять несуществующие величины. Но можно и не удалять, а накапливать на некоем специальном счете. Там пол цента, тут пол цента... – а в сумме? Как свидетельствует практика, сумма, составленная буквально из ничего, за пару лет эксплуатации “хитрой” программы в среднем по размеру банке может исчисляться тысячами долларов.

Можно сказать, что атака “салями” – компьютерная реализация известной поговорки “С миру по нитке – голому рубаха”.

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

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

4. ЗАРОЖДЕНИЕ КРИПТОГРАФИИ

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

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

Существовали три основных способа защиты информации. Один из них предполагал защиту ее чисто силовыми методами: охрана документа – носителя информации – физическими лицами, передача его специальным курьером и т.д. Второй способ получил название “стеганография” латино-греческое сочетание слов, означающих в совокупности “тайнопись”). Он заключался в сокрытии самого факта наличия информации. В данном случае использовались так называемые симпатические чернила. При соответствующем “проявлении” бумаги текст становится видимым. Один из примеров сокрытия информации приведен в трудах древнегреческого историка Геродота. На голове раба, которая брилась наголо, записывалось нужное сообщение. И когда волосы его достаточно отрастали, раба отправляли к адресату, который снова брил его голову и считывал полученное сообщение.

Третий способ защиты информации заключался в преобразовании смыслового текста в некий набор хаотических знаков (или букв алфавита). Получатель данного донесения имел возможность преобразовать его в то же самое осмысленное сообщение, если обладал ключом к его построению. Этот способ защиты информации называется криптографическим. Криптография – слово греческое и в переводе означает “тайнопись”. По утверждению ряда специалистов, криптография по возрасту – ровесник египетских пирамид. В документах древних цивилизаций – Индии, Египта, Месопотамии – есть сведения о системах и способах составления шифрованных писем.

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

Шифрованные тексты Древнего Египта – это чаще всего религиозные тексты и медицинские рецепты.

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

Наиболее полные и достоверные сведения о шифрах относятся к Древней Г реции.

Основное понятие криптографии – шифр (от арабского “цифра”; арабы первыми стали заменять буквы на цифры с целью защиты исходного текста). Секретный элемент шифра, недоступный посторонним, называется ключом шифра. Как правило, в древние времена использовались так называемые шифры замены и шифры перестановки.

Историческим примером шифра замены является шифр Цезаря (I век до н.э.), описанный историком Древнего Рима Светонием. Гай Юлий Цезарь использовал в своей переписке шифр собственного изобретения. Применительно к современному русскому языку он состоял в следующем. Выписывался алфавит: А, Б, В, Г, Д, Е, ...; затем под ним выписывался тот же алфавит, но со сдвигом на 3 буквы влево:

При зашифровке буква А заменялась буквой Г, Б заменялась на Д, В – на Е и т.д. Так, например, слово “РИМ” превращалось в слово “УЛП”. Получатель сообщения “УЛП” искал эти буквы в нижней строке и по буквам над ними восстанавливал исходное слово “РИМ”. Ключом в шифре Цезаря является величина сдвига 3-й нижней строки алфавита. Преемник Юлия Цезаря – езарь Август – использовал тот же шифр, но с ключом – сдвиг 4. Слово “РИМ” он в этом случае зашифровал бы в буквосочетание “ФМР”.

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

Для примера шифра перестановки выберем целое положительное число, скажем 5; расположим числа от 1 до 5 в двустрочной записи

Зашифруем фразу “СВЯЩЕННАЯ РИМСКАЯ ИМПЕРИЯ”. В этой фразе 23 буквы. Дополним ее двумя произвольными буквами (например, Ь, Э) до ближайшего числа, кратного 5, т.е. 25. Выпишем эту дополненную фразу без пропусков, одновременно разбив ее на пятизначные группы:

СВЯЩЕ ННАЯР ИМСКА ЯИМПЕ РИЯЬЭ

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

ЩВСЕЯЯННРАКМИАСПИЯЕМЬИРЭЯ

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

Одним из первых приборов, реализующих шифр перестановки, является так называемый прибор СЦИТАЛЛА. Он был изобретен в древней “варварской” Спарте во времена Ликурга; Рим быстро воспользовался этим прибором. Для зашифрования текста использовался цилиндр заранее обусловленного диаметра. На цилиндр наматывался тонкий ремень из пергамента, и текст выписывался построчно по образующей цилиндра (вдоль его оси). Затем ремень сматывался и отправлялся – получателю сообщения. Последний наматывал его на цилиндр того же диаметра и читал текст по оси цилиндра. В этом примере ключом такого шифра являлся диаметр цилиндра и его длина, которые, по существу, порождают двухстрочную запись, указанную выше.

Интересно, что изобретение дешифровального устройства “АНТИСЦИТАЛЛА” приписывается великому Аристотелю. Он предложил для этого использовать конусообразное “копье”, на которое наматывался перехваченный ремень, который передвигался по оси до того положения, пока не появлялся осмысленный текст.

Были и другие способы защиты информации, разработанные в античные времена. Древнегреческий полководец Эней Тактика в IV веке до н.э. предложил устройство, названное впоследствии “диском Энея”. Принцип его был прост. На диске диаметром 10–15 см и толщиной 1–2 см высверливались отверстия по числу букв алфавита. В центре диска помещалась “катушка” с намотанной на ней ниткой достаточной длины. При зашифровании нитка “вытягивалась” с катушки и последовательно протягивалась через отверстия, в соответствии с буквами шифруемого текста. Диск и являлся посланием. Получатель послания последовательно вытягивал нитку из отверстий, что позволяло ему получать передаваемое сообщение, но в обратном порядке следования букв. При перехвате диска недоброжелатель имел возможность прочитать сообщение тем же образом, что и получатель. Но Эней предусмотрел возможность легкого уничтожения передаваемого сообщения при угрозе захвата диска. Для этого было достаточно выдернуть “катушку” с закрепленным на ней концом нити до полного выхода всей нити из всех отверстий диска.

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

Это устройство получило название “линейка Энея”. Шифр, реализуемый линейкой Энея, является одним из примеров шифра замены: когда буквы заменяются на расстояния между узелками с учетом прохождения через прорезь. Ключом шифра являлся порядок расположения букв по отверстиям в линейке. Посторонний, получивший нить (даже имея линейку, но без нанесенных на ней букв), не сможет прочитать передаваемое сообщение.

Аналогичное “линейке Энея” “узелковое письмо” получило распространение у индейцев Центральной Америки. Свои сообщения они также передавали в виде нитки, на которой завязывались разноцветные узелки, определявшие содержание сообщения.

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

Еще одно изобретение древних греков – так называемый квадрат Полибия. Применительно к современному латинскому алфавиту из 26 букв шифрование по этому квадрату заключалось в следующем. В квадрат размером 5x6 клеток выписываются все буквы алфавита, при этом буквы I, J не различаются (J отождествляется с буквой I):

Шифруемая буква заменялась на координаты квадрата, в котором она записана. Так, B заменялась на AB, F на BA, R на DB и т.д. При расшифровании каждая такая пара определяла соответствующую букву сообщения. Ключом такого шифра являлось расположение букв в таблице 5x5.

Интересно отметить, что в несколько измененном виде шифр Полибия дошел до наших дней и получил своеобразное название “тюремный шифр”. Для его использования нужно только знать естественный порядок расположения букв алфавита (как в указанном выше примере для английского языка). Стороны квадрата обозначаются не буквами (ABCDE), а числами (12345). Число 3, например, передается путем тройного стука. При передаче буквы сначала “отстукивается” число, соответствующее строке, в которой находится буква, а затем номер соответствующего столбца. Например, буква “F” передается двойным стуком (вторая строка) и затем одинарным (первый столбец).

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

“Тюремный шифр”, строго говоря, не шифр, а способ перекодировки сообщения с целью его приведения к виду, удобному для передачи по каналу связи (через стенку). Дело в том, что в таблице использовался естественный порядок расположения букв алфавита. Отметим, что при произвольном расположении букв в квадрате возникает одно затруднение: либо нужно помнить отправителю и получателю сообщения заданный произвольный порядок следования букв в таблице (ключ шифра), что вообще говоря затруднительно, либо иметь при себе запись этих букв. Во втором случае появляется опасность ознакомления с ключом посторонних лиц. Поэтому в ряде случаев ключ составляется следующим образом. Берется некоторое “ключевое слово”, которое легко запомнить, например “CRYPTOLOGY”, затем из него удаляют повторы букв (получают “CRYPTOLOG”) и записывают его в начальных клетках квадрата. В оставшиеся клетки записываются остальные буквы алфавита в естественном порядке.

A B C D E A C R Y P T B O L G A B C D E F H I E U V W X Z

В таком шифре ключом является указанное “ключевое слово” (“пароль”). Заметим, кстати, что таким же образом можно легко запомнить порядок следования букв и в “линейке Энея”.

Крах Священной Римской империи породил Средневековье. Этот период в жизни человечества характеризуется и упадком интеллектуальной деятельности. Во времена, когда сама грамотность была доступна очень узкому кругу людей, необходимость в криптографической защите информации стояла не столь остро. Так, король франков и Священной Римской империи Карл Великий научился читать и писать в возрасте 50 лет, а “завоеватель Вселенной” Чингисхан остался безграмотным на всю жизнь. Тем не менее Карл Великий уже знал и использовал некоторые шифры замены. Просвещение и грамотность в эти времена сосредоточились в церкви, и тайнопись стала ее монополией. Церковь постановила, что простым прихожанам нельзя скрывать тайны от “господа”; их тайнопись – это “ересь”. За использование тайнописи предусматривались жесткие меры наказания, вплоть до смертной казни.

Тем не менее криптография не умерла. Серьезный вклад в ее развитие внесли арабы. Некоторые историки считают, что криптография как наука зародилась именно в арабском мире. Именно в арабских книгах впервые были описаны методы криптоанализа (дешифрования). О криптографии упоминается и в “Илиаде” Гомера.

5. ЭЛЕМЕНТАРНЫЕ МЕТОДЫ ЦИФРОВОГО ШИФРОВАНИЯ

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

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

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

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

5.1. Применение подстановок

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

5.1.1. Шифр Цезаря

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

Открытый текст: meet me after the toga party

Шифрованный текст: PHHW PH DIWHU WKH WRJD SDUMB

Обратите внимание на то, что алфавит считается “циклическим”, поэтому после Z идет А. Определить преобразование можно, перечислив все варианты, как показано ниже.

Открытый текст: abcdefghijklmnopqrstuvwxyz

Шифрованный текст: DEFGHIJKLMNOPQRSTUVWXYZABC

Если каждой букве назначить числовой эквивалент (а = 1, b = 2 и т.д.), то алгоритм можно выразить следующими формулами. Каждая буква открытого текста р заменяется буквой шифрованного текста С:

С = Е(р) = (р + 3)mod(26).

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

С = Е(р) = (р + k)mod(26),

где k принимает значения в диапазоне от 1 до 25. Алгоритм дешифрования также прост:

р = D(С) = (С - k)mоd(26).

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

Рис. 5.1. Криптоанализ шифра Цезаря методом перебора всех вариантов ключей

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

1. Известны алгоритмы шифрования и дешифрования.

2. Необходимо перебрать всего 25 вариантов.

3. Язык открытого текста известен и легко узнаваем.

В большинстве случаев, когда речь идет о защите сетей, можно предполагать, что алгоритм известен. Единственное, что делает криптоанализ на основе метода последовательного перебора практически бесполезным – это применение алгоритма, для которого требуется перебрать слишком много ключей. Например, алгоритм DES, использующий 56-битовые ключи, требует при последовательном переборе рассмотреть пространство из 2⁵⁶, или более чем 7х10¹⁶ ключей.

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

5.2. Моноалфавитные шифры

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

Открытый текст: abcdefghijklmnopqrstuvwxyz 

Шифрованный текст: DEFGHI JKLMNOPQRSTUVWXYZABC 

Если в строке “Шифрованный текст” допустить использование любой из перестановок 26 символов алфавита, то мы получим 26!, или более чем 4х10²⁶ возможных ключей. Это на 10 порядков больше, чем размер пространства ключей DES, и это кажется достаточным для того, чтобы сделать невозможным успешное применение криптоанализа на основе метода последовательного перебора.

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

UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZ

VUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSX

EPYEPOPDZSZUFPOMBZWPFUPZHMDJUDTMOHMQ

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

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

Сравнивая эти результаты с данными, показанными на рис. 5.2, можно заключить, что, скорее всего, буквы Р и Z шифрованного текста являются эквивалентами букв е и t открытого текста, хотя трудно сказать, какой именно букве – Р или Z – соответствует е, а какой – t. Буквы S, U, О, М и Н, обладающие относительно высокой частотой появления в тексте, скорее всего, соответствуют буквам из множества {г, n, i, о, а, s}. Буквы с низкой частотой появления (а именно А, В, G, Y, I, J), по-видимому, соответствуют буквам множества w, v, b, k, x, q, j, z}.

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

Один из очень эффективных методов заключается в подсчете частоты использования комбинаций, состоящих из двух букв. Такие комбинации называют биграммами. Для значений относительной частоты появления в тексте биграмм тоже можно построить гистограмму, подобную показанной на рис. 5.2. Известно, что в английском языке самой распространенной является биграмма th. В нашем шифрованном тексте чаще всего (три раза) встречается комбинация ZW. Поэтому можно предположить, что Z соответствует t а W – h. Тогда из ранее сформулированной гипотезы вытекает, что Р соответствует е. Заметим, что в шифрованном тексте буквосочетание ZWP имеется, и теперь мы можем представить его как the. В английском языке the является самой распространенной триграммой (т.е. комбинацией из трех букв), поэтому можно надеяться, что мы движемся в правильном направлении.

Рис. 5.2. Относительная частота появления букв в английском тексте

Теперь обратите внимание на комбинацию ZWSZ в первой строке. Конечно, мы не можем сказать с полной уверенностью, что эти буквы принадлежат одному и тому же слову, но, если предположить, что это так, они соответствуют слову thSt. Отсюда заключаем, что букве S соответствует а.

Теперь мы имеем следующий результат.

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

it was disclosed yesterday that several informal but direct contacts have been made with political representatives of the viet cong in moscow

Моноалфавитные шифры легко раскрываются, так как они наследуют частотность употребления букв оригинального алфавита. Контрмерой в данном случае является применение для одной буквы не одного, а нескольких заменителей (называемых омофонами). Например, букве е исходного текста может соответствовать несколько разных символов шифра (скажем, 16, 74, 35 и 21), причем каждый такой символ может использоваться либо поочередно, либо по случайному закону. Если число символов-заменителей, назначенных букве, выбрать пропорциональным частоте появления этой буквы, то подсчет частотности употребления букв в шифрованном тексте становится бессмысленным. Великий математик Карл Фридрих Гаусс (Carl Friedrich Gauss) был уверен, что с использованием омофонов он изобрел шифр, который невозможно взломать. Но даже при употреблении омофонов каждому элементу открытого текста соответствует только один элемент шифрованного текста, поэтому в последнем по-прежнему должны наблюдаться характерные показатели частоты повторения комбинаций нескольких букв (например, биграмм), и в результате задача криптоанализа по-прежнему остается достаточно элементарной.

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

5.2.1. Шифрование инверсными символами (по дополнению до 255)

Данный метод шифрования является частным случаем одноалфавитной замены в алфавите мощности 256 (двоично-восьмеричные вектора). Суть метода заключается в замене символа АSСII с номером і на символ с номером 255-i. Аналогично проводится и операция расшифрования.

5.3. Многоалфавитные методы

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

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

В шифрах многоалфавитной замены для шифрования каждого символа исходного сообщения применяется свой шифр простой замены (свой алфавит).

Таблица 5.1

| АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_
A | АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_
Б | _АБВГ ДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ
В | Я_АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮ
Г | ЮЯ_АБВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭ
. | ............
Я | ВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_АБ
– | БВГДЕЁЖЗИКЛМНОПРСТУФХЧШЩЪЫЬЭЮЯ_А

Каждая строка в табл. 5.1 соответствует одному шифру замены аналогично шифру Цезаря для алфавита, дополненного пробелом. При шифровании сообщения его выписывают в строку, а под ним ключ. Если ключ оказался короче сообщения, то его циклически повторяют. Шифртекст получают, находя символ в колонке таблицы по букве текста и строке, соответствующей букве ключа. Например, используя ключ АГАВА из сообщения ПРИЕЗЖАЮ ШЕСТОГО, получаем следующую шифровку:

Сообщение | ПРИЕЗЖАЮ_ШЕСТОГО
Ключ | АГАВААГАВААГАВАА
Шифровка | ПНИГЗЖЮЮЮАЕОТМГО

В компьютере такая операция соответствует сложению кодов ASCII символов сообщения и ключа по модулю 256.

5.3.1. Шифр Плейфейера

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

Алгоритм Плейфейера основан на использовании матрицы букв размерности 5x5, созданной на основе некоторого ключевого слова. Давайте рассмотрим пример, решение которого находит лорд Питер Уимси в романе Дороти Сэйерс (Dorothy Sayers) “Have His Carcase”:

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

1. Если оказывается, что повторяющиеся буквы открытого текста образуют одну пару для шифрования, то между этими буквами вставляется специальная буква-заполнитель, например х. В частности, такое слово как balloon будет преобразовано к виду ba lx lo on.

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

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

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

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

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

Один из способов оценки эффективности шифра Плейфейера и других шифров показан на рис. 5.3. Линия, помеченная на рисунке как открытый текст, отображает распределение значений относительной частоты вхождения символов алфавита в статье Encyclopaedia Brittanica, посвященной криптологии и содержащей более 70 000 символов. Подобный график характерен для распределения относительной частоты появления символов и для любого моноалфавитного шифра. Сам график получается следующим образом. Число вхождений буквы в тексте делится на число появлений в тексте символа е (самый часто используемый символ в английском языке). В результате е имеет относительную частоту 1, t – около 0,76 и т.д. Деления на горизонтальной оси соответствуют буквам в порядке снижения значений относительной частоты их появления.

Рис. 5.3. График распределения значений частоты для текстов, шифрованных с помощью шифра Плейфейера

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