3.5. КОМПЬЮТЕРНЫЕ ВИРУСЫ КАК ОСОБЫЙ КЛАСС РАЗРУШАЮЩИХ ПРОГРАММНЫХ ВОЗДЕЙСТВИЙ

 

            Понятие компьютерного вируса

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

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

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

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

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

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

            2. Системные области компьютеров (в частности, области начальной загрузки операционных систем). Соответствующие вирусы получили название загрузочных вирусов, или Boot-вирусов.

            3. Макропрограммы и файлы документов современных систем обработки информации (например, Microsoft Word). Вирусы, связанные с этим типом объектов, именуются макровирусами.

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

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

 

            Жизненный цикл вирусов

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

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

Стадия исполнения компьютерных вирусов, как правило, состоит из пяти этапов:

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

            2) поиска жертвы;

            3) заражения найденной жертвы;

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

            5) передачи управления программе — носителю вируса. Рассмотрим эти этапы подробнее.

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

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

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

            Такие вирусы на стадии загрузки должны позаботиться о закреплении своего кода в оперативной памяти. Это можно реализовать различными способами. Например, операционные системы типа MS-DOS содержат стандартные средства поддержки резидентных модулей. Но, как правило, вирусы не пользуются этими механизмами, а переносят свой код либо в самостоятельно отведенные блоки памяти, либо в зарезервированные под нужды операционной системы участки памяти. Однако размещение кода в оперативной памяти — необходимое, но недостаточное действие. Помимо этого, вирус должен позаботиться о том, чтобы этому коду время от времени передавалось управление. Поэтому вирусы должны изменить код системных функций, которые гарантированно используются прикладными программами, добавив в них команды передачи управления своему коду, либо изменить в системной таблице адреса соответствующих системных функций, подставив адреса своих подпрограмм. Такой перехват определенных функций, например чтения (записи) файлов, позволит также вирусу контролировать информационные потоки между операционной системой и прикладными программами. Для многозадачных систем типа Windows вирусы могут обойтись без перехвата системных событий, если не ставится задача контроля информационных потоков. Для того чтобы вирус мог функционировать независимо от программы-носителя, ему достаточно зарегистрировать в системе новую задачу, в контексте которой он будет выполняться.

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

            2. Поиск жертвы. По способу поиска жертвы вирусы можно разделить на два класса. К первому относятся вирусы, осуществляющие активный поиск с использованием функций операционной системы. Примерами являются файловые вирусы, использующие механизм поиска исполняемых файлов в текущем каталоге. Второй класс составляют вирусы, реализующие пассивный механизм поиска, т. е. вирусы, расставляющие ловушки для программных файлов. Как правило, файловые вирусы устраивают подобные ловушки путем перехвата функции Ехес операционной системы, а макровирусы с помощью перехвата команд типа «Save as» из меню «File».

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

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

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

            2) внедрение в конец файла. Наиболее распространенный тип внедрения. Передача управления коду вирусов обеспечивается модификацией первых команд программы или заголовка файла;

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

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

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

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

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

            Общие вопросы борьбы с компьютерными вирусами

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

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

            2. Юридические средства сводятся к привлечению к уголовной (или административной) ответственности лиц, по чьей вине наносится ущерб вычислительным системам. В настоящее время законодательство многих стран имеет разделы, посвященные компьютерным преступлениям, к числу которых относится распространение компьютерных вирусов. В частности, в Уголовном кодексе Российской Федерации имеется ст. 273, в которой предусмотрена ответственность «за создание, использование и распространение вредоносных программ для ЭВМ», заключающаяся в «лишении свободы на срок до трех лет со штрафом от двухсот до пятисот минимальных размеров оплаты трудами.

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

 

            3.6. ЗАЩИТА ОТ РАЗРУШАЮЩИХ ПРОГРАММНЫХ ВОЗДЕЙСТВИЙ. ПОНЯТИЕ ИЗОЛИРОВАННОЙ ПРОГРАММНОЙ СРЕДЫ

 

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

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

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

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

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

            1) не допустить внедрение закладки;

            2) выявить внедренный код закладки;

            3) удалить внедренный код закладки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            2. Специальные методы выявления программ с потенциально опасными последствиями:

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

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

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

            Первоначально необходимо убедиться, что в программном обеспечении ПЗУ вычислительных средств системы (например, в BIOS ПЭВМ) не имеется РПВ. Данная задача может решаться в статическом варианте (задача 1) и динамическом варианте (задача 2). С точки зрения экономико-временных параметров целесообразнее решение задачи 1, поскольку в противном случае требуется длительная работа в аппаратной среде в различных режимах. На практике желательно комплексно решать как первую, так и вторую задачу.

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

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

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

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

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

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

            1) проверенные программы будут использованы на другом компьютере с другой BIOS, которая может содержать закладки;

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

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

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

            1) на компьютере с проверенной BIOS установлена проверенная операционная среда;

            2) достоверно установлена неизменность операционной среды и BIOS для данного сеанса работы;

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

            4) исключен запуск проверенных программ в какой-либо иной ситуации, т. е. вне проверенной среды.

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

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

            1) надежный алгоритм контроля;

            2) контроль реальных данных.

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

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

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

            1) невозможность запуска никаких иных программ, кроме входящих в состав базового ПО;

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

            3) невозможность изменить любые программы базового ПО.

            Наиболее просто было бы выполнить условия 1 — 3 в тех случаях, когда все базовое ПО находится в ПЗУ и ПЗУ не содержит более никаких программ и фрагментов кода. Инициирование программ происходит при включении питания. Однако в таком случае система будет представлять собой нечто похожее на микрокалькулятор.

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

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

            1) невозможность запуска программ в обход контролируемых ИПС событий;

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

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

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

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

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

            При запуске ИПС таким же образом и в той же последовательности происходит контроль целостности. Этот алгоритм можно распространить на произвольную операционную среду. Для контроля данных на i-м логическом уровне их представления для чтения требуются предварительно проверенные на целостность процедуры (i — 1)-го уровня. Самым же первым этапом является контроль целостности программ в ПЗУ (этап 0).

            Обратимся теперь к вопросу контроля целостности данных. Предположим, что имеются некоторый файл F — последовательность байтов и некоторый алгоритм А, преобразующий файл F в некоторый файл М меньшей длины. Этот алгоритм таков, что при случайном равновероятном выборе двух файлов из множества возможных соответствующие им числа М с высокой вероятностью различны. Тогда проверка целостности данных строится так: рассматриваем файл F, по известному алгоритму А строим К = A(F) и сравниваем М, заранее вычисленное как М = A(F), с К. При совпадении считаем файл неизменным. Алгоритм А называют, как правило, хеш-функцией или реже — контрольной суммой, а число М — хеш-значением. В данном случае является важным выполнение следующих условий:

            1) нахождение другого файла 6, не равного F, такого, что М = A(G) по известному числу М - A(F) должно быть очень трудоемким;

            2) число М должно быть недоступно для изменения.

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

 

4. ЗАЩИТА ИНФОРМАЦИИ И ПРОГРАММ ОТ ИЗУЧЕНИЯ

 

            4.1. КЛАССИФИКАЦИЯ СПОСОБОВ ЗАЩИТЫ

 

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

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

            Задача защиты от изучения (исследования) сводится к решению двух взаимосвязанных задач:

            1) выявлению отладчика;

            2) направлению работы защищенной программы или отладчика по неверному пути.

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

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

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

 

            4.2. ЗАЩИТА ОТ ОТЛАДКИ И ДИЗАССЕМБЛИРОВАНИЯ

 

            Способы защиты от исследования можно разделить на четыре класса.

            1. Влияние на работу отладочного средства через общие программные или аппаратные ресурсы. В данном случае наиболее известны:

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

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

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

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

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

            1) перемещение фрагментов кода или данных с помощью контроллера прямого доступа к памяти;

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

            3) переход микропроцессора в защищенный режим.

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

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

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

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

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

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

            1) противодействие файловому дизассемблированию программы;

            2) противодействие работе отладчика;

            3) противодействие считыванию кода программы в файл из оперативной памяти.

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

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

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

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

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

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

            Часто с отладочными прерываниями бывают совмещены сложные алгоритмы преобразования кода программы, которые при выполнении каждой команды производят преобразование последующей команды в исполняемую и предыдущей в хаотический код. Такой метод получил название «бегущая строка». Как правило, это прерывание int 1h (One Step). Для успешного применения данного метода обязательно выполнение таких условий, как:

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

            2) отсутствие операций сравнения для определения факта работы под отладчиком.

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

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

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

            1. Пассивная защита — запрещение работы при переопределении обработчиков событий относительно заранее известного адреса.

            2. Активная защита первого типа — замыкание цепочек обработки событий, минуя программы трассировки.

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

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

            1) работу с ключевой меткой путем прямого программирования контроллера гибкого диска (активную защиту второго типа);

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

            3) прямой вызов соответствующих функций в ПЗУ (BIOS) после восстановления различными способами их физического адреса (активная защита первого типа);

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

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

            1) переопределение исходного прерывания в BIOS на неиспользуемый вектор прерывания;

            2) прямой вызов функций BIOS.

            Прерывание int 1h относится к аппаратным прерываниям, вызываемым особым состоянием процессора. Данное состояние достигается установкой специального флага трассировки в регистре флагов. При этом после завершения выполнения каждой инструкции процессора автоматически вызывается прерывание int 1h (режим покомандного управления). Для того чтобы включение трассировки не воздействовало на саму программу — обработчик первого прерывания (в режиме обычной работы она состоит из одной команды iret), при вызове прерывания флаг трассировки автоматически сбрасывается. Поскольку при вызове прерывания регистр флагов автоматически сохраняется в стеке, а при окончании работы обработчик его автоматически восстанавливает, то после обработки прерывания управление возвращается к следующей трассируемой команде вновь с установленным флагом трассировки. Функционально это аналогично тому, что после каждой команды прикладной программы находится команда вызова первого прерывания. Выполнив покомандное цепочку int 13h и проанализировав исполняемые инструкции, можно легко определить точки входа в BIOS.

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

            1) определение факта замены обработчиков событий на собственные функции (в частности, для защиты от отладчиков);

            2) файловые операции, связанные со считываниями различных счетчиков или паролей, вычисление контрольных сумм и хеш-функций файлов;

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

            Кроме того, в программах, полученных при помощи распространенных компиляторов, в самом начале идет последовательность предопределенных событий операционной среды (для программ DOS — прерываний Lnt 21h), что позволяет во многих случаях при остановке на одном из этих прерываний считать код программы из оперативной памяти в незащищенном виде, поскольку к этому моменту антиотладочные средства обычно завершают свою работу.

 

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

 

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

            1) вставкой фрагмента проверочного кода (одного или нескольких) в исполняемый файл;

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

            3) вставкой проверочного механизма в исходный код на этапе разработки и отладки программного продукта (для проектируемых и проверяемых СЗИ является основным);

            4) комбинированием указанных способов.

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

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

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

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

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

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

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

 

            4.4. ЗАЩИТА ИНФОРМАЦИИ МЕТОДОМ ШИФРОВАНИЯ

 

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

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

 

            где z — секретный ключ;

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

            Шифр Цезаря в принятых обозначениях соответствует значению секретного ключа z = 3. Такие шифры раскрываются чрезвычайно просто даже без знания значения ключа: достаточно знать лишь алгоритм шифрования, а ключ можно подобрать простым перебором (так называемой силовой атакой).

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

            Так называемая донаучная криптография более чем за 2000 лет полуинтуитивно получила довольно много интересных решений. Первым систематическим трудом по криптографии принято считать работу великого архитектора Леона Баттисты Альберти (1404 — 1472). Период до середины XVII в. был насыщен работами по криптографии и крипто анализу.    

Следующая заметная личность в истории криптографии — Карл Фридрих Гаусс (1777 — 1855), который ошибочно полагал, что создал не раскрываемый шифр. В это же время Огюст Керкхофф (1835 — 1903) формулирует свое замечательное правило: стойкость шифра должна определяться только секретностью ключа.

            Это правило полагает, что алгоритм шифрования не является секретным,

а значит, можно вести открытое обсуждение достоинств и недостатков алгоритма. Таким образом, это правило переводит работы по криптографии в разряд открытых научных работ, допускающих дискуссии, публикации и т. п. Инженер AT&T Жильбер Вернам в 1926 г. предложил действительно не раскрываемый шифр. Идея шифра состоит в том, чтобы в уравнении (1) для каждого следующего символа выбирать новое значение z. Другими словами, секретный ключ должен использоваться только один раз. Если такой ключ выбирается случайным образом, то, как было строго доказано К. Шенноном через 23 года, шифр является не раскрываемым. Этот шифр является теоретическим обоснованием для использования так называемых шифроблокнотов, широкое применение которых началось в годы Второй мировой войны. Шифроблокнот содержит множество ключей однократного использования, последовательно выбираемых при шифровании сообщений. Предложение Ж. Вернама, однако, не решает задачи секретной связи: вместо способа передачи секретного сообщения теперь необходимо найти способ передачи секретного ключа, равного ему по длине, т. е. содержащего столько же символов, сколько имеется в открытом тексте.

            В 1949 г. статья Клода Шеннона «Теория связи в секретных системах» положила начало научной криптографии. К. Шеннон показал, что, получив для некоторого случайного шифра количество знаков шифротекста, крипто аналитик при неограниченных ресурсах может восстановить ключ (и раскрыть шифр):

 

 

            где H(Z) — энтропия ключа;

            r — избыточность открытого текста;

            N — объем алфавита.

            По эффективности, с которой архиваторы сжимают текстовые файлы, нам хорошо известно, как велика избыточность обычного текста — ведь их работа и состоит в снижении избыточности (причем только на наиболее легко устраняемой ее части). При избыточности обычного текста порядка 0,75 и использовании 56-битового ключа (такого, как предполагает алгоритм шифрования DES), достаточно 11 символов шифротекста для восстановления ключа при неограниченных ресурсах крипто аналитика. Строго говоря, соотношение (2) не доказано для произвольного шифра, но верно для известных частных случаев. Из него следует замечательный вывод: работу крипто аналитика можно затруднить не только совершенствованием криптосистемы, но и снижением избыточности открытого текста. Более того, если избыточность открытого текста снизить до нуля, то даже короткий ключ даст шифр, который крипто аналитик не сможет раскрыть.

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

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

            Требования, предъявляемые к алгоритмам шифрования:

            1) надежность алгоритма шифрования вне зависимости от доступности его исходного кода;

            2) обеспечение высокого уровня защиты информации от дешифрования и изменения;

            3) значительное изменение зашифрованных данных даже при не значительных модификациях исходных данных или ключа шифрования;

            4) исключение возможности взлома алгоритма за разумное время путем

прямого перебора значений ключа (атака «brut force»);

            5) высокое быстродействие алгоритма при обработке потоков данных;

            6) простота реализации на аппаратном уровне.

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

            Все алгоритмы шифрования делятся на симметричные и асимметричные.

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

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

            2) отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;

            3) получатель принимает сообщение и расшифровывает его.

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

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

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

            2) отправитель, используя открытый ключ получателя, зашифровывает сообщение, которое пересылается получателю;

            3) получатель получает сообщение и расшифровывает его, используя свой секретный ключ.

            Это порождает определенную классификацию алгоритмов шифрования.

            1. Симметричные алгоритмы:

            1) потоковые (шифрование потока данных):

            • с одноразовым (или бесконечным) ключом (infinite-key cipher);

            • с конечным ключом (система Вернама);

            • на основе генератора псевдослучайных чисел (ПСЧ);

            2) блочные (шифрование данных поблочно):

            • шифры перестановки (P-блоки);

            • шифры замены (S-блоки):

            — моноалфавитные (код Цезаря);

            — полиалфавитные (шифр Видженера, цилиндр Джефферсона, диск Уэтстоуна, Enigma);

            • составные:

            — Lucipher (фирма IBM, США);

            — DES (Data Encryption Standard, США);

            — FEAL-1 (Fast Enciphering Algorithm, Япония);

            — IDEA / IPES (International Data Encryption Algorithm / Improved Proposed Encryption Standard, фирма Ascom-Tech AG, Швейцария);

            — В-Crypt (фирма British Telecom, Великобритания); — ГОСТ 28147-89 (СССР); — Skipjack (США).

            2. Асимметричные алгоритмы:

            1) DH (Diffie, Hellman);

            2) RSA (Rivest, Shamir, Adleman);

            3) EIGamal.

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

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

 

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

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

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

            При использовании генератора ПСЧ возможны несколько вариантов:

            1) побитовое шифрование потока данных. Цифровой ключ используется в качестве начального значения генератора ПСЧ, а выходной поток битов суммируется по модулю 2 с исходной информацией. В таких системах отсутствует свойство распространения ошибок;

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

            3) побитовое шифрование потока данных с обратной связью по исходному тексту. Базой генератора ПСЧ является исходная информация. Характерно свойство неограниченного распространения ошибки;

            4) побитовое шифрование потока данных с обратной связью по шифротексту и по исходному тексту.

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

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

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

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

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

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

            Блочное шифрование можно осуществлять двояко:

            1) без обратной связи. Несколько битов (блок) исходного текста шифруются одновременно, и каждый бит исходного текста влияет на каждый бит шифротекста. Однако взаимного влияния блоков нет, т. е. два одинаковых блока исходного текста будут представлены одинаковым шифротекстом. Поэтому подобные алгоритмы можно использовать только для шифрования случайной последовательности битов (например, ключей). Примерами являются DES в режиме ЕСВ и ГОСТ 28147-89 в режиме простой замены;

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

            Генератор ПСЧ может применяться и при блочном шифровании.

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

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

            Весьма распространен федеральный стандарт США DES (Data Encryption Standard), на котором основан Международный стандарт ISO 8372-87. DES был поддержан Американским национальным институтом стандартов (ANSI) и рекомендован для применения Американской ассоциацией банков (АВА). DES предусматривает четыре режима работы:

            1) ЕСВ (Electronic Codebook) электронный шифроблокнот;

            2) СВС (Cipher Block Chaining) цепочка блоков;

            3) CFB (Cipher Feedback) обратная связь по шифротексту;

            4) OFB (Output Feedback) обратная связь по выходу.

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

            Алгоритмы шифрования ГОСТа 28147-89 обладают достоинствами других алгоритмов для симметричных систем и превосходят их своими возможностями. Так, ГОСТ 28147-89 (256-битовый ключ, 32 цикла шифрования) по сравнению с такими алгоритмами, как DES (56-битовый ключ, 16 циклов шифрования) и FEAL-1 (64-битовый ключ, 4 цикла шифрования), обладает более высокой криптостойкостью за счет более длинного ключа и большего числа циклов шифрования. Следует отметить, что в отличие от DES у ГОСТа 28147-89 блок подстановки можно произвольно изменять, т. е. он является дополнительным 512-битовым ключом. Алгоритмы гаммирования ГОСТа 28147-89 (256-битовый ключ, 512-битовый блок подстановок, 64-битовый вектор инициализации) превосходят по криптостойкости и алгоритм В-Crypt (56-битовый ключ, 64-битовый вектор инициализации). Достоинствами ГОСТа 28147-89 являются также наличие защиты от навязывания ложных данных (выработка имитовставки) и одинаковый цикл шифрования во всех четырех алгоритмах ГОСТа.

            Блочные алгоритмы могут использоваться и для выработки гаммы. В этом случае гамма вырабатывается блоками и поблочно складывается по модулю 2 с исходным текстом. В качестве примера можно назвать В-Crypt, DES в режимах CFB и OFB, ГОСТ 28147-89 в режимах гаммирования и гаммирования с обратной связью.

            Наиболее часто используемыми асимметричными алгоритмами шифрования являются RSA и ElGamal.

RSA (патент США № 4405 829) разработан в 1977 г. в Массачусетском технологическом институте (США). Криптостойкость RSA основана на вычислительной сложности задачи разложения большого числа на простые множители.

            Алгоритм ElGamal разработан в 1985 г. ElGamal используется в стандарте США на цифровую подпись DSS (Digital Signature Standard). Крипто стойкость ElGamal основана на вычислительной сложности задачи логарифмирования целых чисел в конечных полях.

            Сравнение симметричных и асимметричных алгоритмов шифрования

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

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

            Обмен информацией можно осуществлять следующим образом:

            1) получатель вычисляет открытый и секретный ключи, секретный ключ хранит в тайне, открытый же делает доступным;

            2) отправитель, используя открытый ключ получателя, зашифровывает сеансовый ключ, который пересылается получателю по незащищенному

            3) получатель принимает сеансовый ключ и расшифровывает его, используя свой секретный ключ;

            4) отправитель зашифровывает сообщение сеансовым ключом и пересылает получателю;

            5) получатель принимает сообщение и расшифровывает его.

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

            Проверка подлинности информации. Цифровая подпись

            При передаче информации должны быть обеспечены вместе или по отдельности:

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

            2) подлинность, которая включает два понятия:

            • целостность (сообщение должно быть защищено от случайного или умышленного изменения); 

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

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

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

            1) код подлинности сообщения (Message Authentical Code, МАС);

            2) квадратичный конгруэнтный алгоритм (Quadratic Congruentical Manipulation Detection Code, QCMDC);

            3) Manipulation Detection Code (MDC); 4) Message Digest Algorithm (MD5); 5) контрольная сумма;

            6) символ контроля блока (Block Check Character, ВСС);

            7) циклический избыточный код (ЦИК, Cyclic Redundancy Check, CRC); 8) хеш-функция (hash);

            9) имитовставка в ГОСТ 28147-89;

            10) алгоритм с усечением до n битов (n-bit Algorithm with Truncation).

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

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

            Проверке подлинности (аутентификации) посвящены стандарты:

            1) проверка подлинности — ISO 8730-90, ISO / IES 9594-90 и ITU Х.509;

            2) целостность — ГОСТ 28147-89, ISO 8731-90;

            3) цифровая подпись — ISO 7498, P 34.10-94, DSS (Digitа1 Signature Standard).

            Реализация алгоритмов шифрования

            Алгоритмы шифрования реализуются программными или аппаратными средствами. Существует множество чисто программных реализаций различных алгоритмов. Из-за своей дешевизны (некоторые и вовсе бесплатны), а также все большего быстродействия процессоров ПЭВМ, простоты работы и безотказности они весьма конкурентоспособны. Широко известна программа Diskreet из пакета Norton Utilities, реализующая DES.

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

            Аппаратная реализация алгоритмов возможна с помощью специализированных микросхем (производятся кристаллы для алгоритмов DH, RSA, DES, Skipjack, ГОСТа 28147-89) или с использованием компонентов широкого назначения (ввиду дешевизны и высокого быстродействия перспективны цифровые сигнальные процессоры — DSP). Среди российских разработок следует отметить платы «Криптон» (фирма «Анкад») и «Грим» (методология и алгоритмы фирмы «ЛАН-Крипто», техническая разработка НПЦ «ЭлиПС).

            «Криптон» — одноплатные устройства, использующие крипто процессоры (специализированные 32-разрядные микроЭВМ, которые также называются блюмингом). Блюминги аппаратно реализуют алгоритмы ГОСТа 28147-89, они состоят из вычислителя и ОЗУ для хранения ключей. Причем в крипто процессоре есть три области для хранения ключей, что позволяет строить многоуровневые ключевые системы. Для большей надежности шифрования одновременно работают два крипто процессора, и блок данных в 64 бита считается правильно зашифрованным, только если совпадает информация на выходе обоих блюмингов. Скорость шифрования — 250 КБ/с. Кроме двух блюмингов, на плате расположены:

            1) контроллер сопряжения с шиной компьютера;

            2) BIOS платы, предназначенный для осуществления интерфейса с компьютером и выполняющий самотестирование устройства и ввод ключей в крипто процессоры;

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

            В устройствах «Криптон» ключи могут храниться в виде файла на диска 3 те или на смарт-карте, что затрудняет подделку и копирование.

            В плате «Грим» используются цифровые сигнальные процессоры фирмы Analog Devices ADSP-2105 и ADSP-2101, что дает скорость шифрования соответственно 125 и 210 КБ/с. На плате есть физический ДСЧ и ПЗУ с программами начального теста, проверки прав доступа, загрузки и генерации ключей. Ключи хранятся на нестандартно форматированной дискете. Плата реализует алгоритмы ГОСТа 28147-89 и цифровой подписи.

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

            Распространение секретных ключей

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

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

            1) субъекты А и Б выбирают случайные числа Хa и Хb соответственно;

2) субъект А передает субъекту Б Ya=aXa (mod q), а субъект Б субъекту А Yb = aXb (mod q).

            Здесь aтак называемый примитивный элемент конечного поля Галуа GF (q), замечательное для нас свойство которого заключается в том, что его степени дают все ненулевые значения элементов поля. В качестве секретного ключа используется значение Ya = AXaXb (mod q), которое субъект А получает возведением переданного субъектом Б числа в степень Хa, известную только ему, а субъект Б — полученного от субъекта А числа в известную только ему степень Xb. Криптоаналитик вынужден вычислять логарифм по крайней мере одного из передаваемых чисел.

            Устойчивость экспоненциального ключевого обмена базируется на так называемой односторонности функции возведения в степень: вычислительная сложность получения Ya из Хa при q длиной 1000 битов — порядка 2000 умножений 1000 битовых чисел, в то время как обратная операция потребует примерно 1030 операций. Односторонние функции, обладающие подобной асимметрией вычислительной сложности прямой и обратной задачи, играют ведущую роль в криптографии с открытым ключом.

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

            Такую функцию в 1976 г. удалось построить Р. Мерклю на основе задачи об укладке ранца. Эта задача сама по себе односторонняя: зная подмножество грузов, уложенных в ранец, легко подсчитать суммарный вес, но, зная вес, непросто определить подмножество грузов. В нашем случае использовался одномерный вариант задачи: вектор грузов и сумма компонентов его под векторов. Встроив лазейку, удалось получить так называемую ранцевую систем у Меркля — Хелмана. Первая криптосистема с открытым ключом заработала, и Р. Меркль предложил 100 долларов тому, кто сможет ее раскрыть.

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

            Значительно более удачна на сегодняшний день судьба системы RSA, названной так по первым буквам фамилий ее авторов Р. Ривеста, А. Шамира и Л. Адлмана. В первом систематическом изложении алгоритма RSA авторы в 1977 г. описали систему на основе односторонних свойств функции разложения на простые множители (умножать просто, а разлагать — нет). В настоящее время развитие криптографии с открытым ключом позволило крипто графическим системам довольно быстро найти широкое коммерческое применение.

            Криптоанализ

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

            Основные задачи крипто анализа заключаются в:

            1) восстановлении исходной информации по ее криптограмме;

            2) вычислении закрытого ключа по известному открытому ключу;

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

            4) создании фальшивого электронного документа, соответствующего известной подписи.

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

            1) крипто анализ на основе анализа шифротекста;

            2) крипто анализ на основе анализа известного открытого текста и соответствующего  ему шифротекста;

            3) крипто анализ на основе анализа выбранного открытого текста;

            4) крипто анализ на основе анализа выбранного шифротекста;

            5) крипто анализ на основе анализа адаптированного открытого текста;

            6) крипто анализ на основе анализа адаптированного шифротекста.

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

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

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

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

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

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

            Хеш-функция представляет собой криптографическую функцию от сообщения произвольной длины, значение которой зависит сложным образом от каждого бита сообщения. Хеш-функция реализуется, как правило, в виде некоторой итеративной процедуры, которая позволяет вычислить для сообщения М произвольной длины так называемый хеш-код H(M) фиксированного размера т (128 или 160 бит). Этот код и является эталонной характеристикой сообщения М. Типовая хеш-функция вычисляется путем последовательного шифрования двоичных блоков М; (индекс i =1, 2, 3 ...) сообщения М в соответствии со следующим итеративным выражением:

 

            где Е — базовая функция шифрования;

            H0специфицированное начальное значение хеш-функции.

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

            1) для данных H0 и М найти Н'0 и М'. М, удовлетворяющие условию Н(Н0, М) = H(H0, М);

            2) найти Н0, М и М'. М, для которых выполняется равенство H(H0, М)=Н(Н0,М’);

            3) найти H0, H0. Н, М и М'. М, для которых выполняется равенство H (H0,М) = H(H'0, М).

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

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

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

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

            3) отсутствие проверки на слабые ключи, при которых крипто алгоритм не обеспечивает должного уровня стойкости (это особенно относится к асимметричным криптосистемам);

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

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

            6) генерация ключей шифрования на основе параметров, не имеющих случайного характера;

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

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

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

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

 

 

 

 

 

 

5. КОМПЛЕКС СРЕДСТВ ЗАЩИТЫ ИНФОРМАЦИИ ОТ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА «АККОРД»

 

            5.1. НАЗНАЧЕНИЕ КОМПЛЕКСА «АККОРД»

 

            Профессиональное решение задач в области защиты информации, как правило, осуществляется специализированными предприятиями. Одним из таких является государственное предприятие ОКБ САПР. Это предприятие при участии фирмы «Инфокрипт» на основе лицензии Гостехкомиссии России разработало комплекс средств защиты информации (СЗИ) «Аккорд», обеспечивающий защиту от НСД и разграничение доступа к ресурсам систем на базе IBM-совместимых компьютеров.

            Комплекс «Аккорд» входит в состав средств криптографической защиты информации «Верба», «АПДС», «АПДС-В», «АПДС-С», имеющих сертификаты ФАПСИ. Комплекс «Аккорд» прошел испытания на соответствие требованиям руководящего документа Гостехкомиссии «Автоматизированные системы. Защита от НСД к информации. Классификация автоматизированных систем и требования по защите информации», и имеет сертификаты Гостехкомиссии России и аттестат соответствия производства.

 

            5.2. СОСТАВ КОМПЛЕКСА АККОРДМ

 

            Комплекс «Аккорд» состоит из программно-аппаратных средств «Аккорд АМДЗ» (аппаратный модуль доверенной загрузки) и программного обеспечения разграничения доступа «Аккорд 95/NT/2000», функционирующего под управлением ОС Windows 95/NT/2000. В настоящее время комплекс «Аккорд» выпускается в нескольких основных версиях в зависимости от модификации аппаратных средств (контроллеров). Все модификации могут быть использованы на современных ЭВМ с процессорами типа Pentium. Для установки контроллеров необходим свободный слот: ISA или PCI. Контроллеры используют для идентификации пользователя персональные ТМ-идентификаторы DS 1992-1996 («Touch memory») с объемом памяти до 64 Кбит, а для аутентификации — пароль до 12 символов; предусматривают регистрацию до 30 пользователей; блокируют загрузку с FDD, CD ROM, ZIP Drive; имеют аппаратный датчик случайных чисел (ДСЧ); обеспечивают контроль целостности программ, данных и системных областей жестких дисков; имеют внутреннюю энергонезависимую память (ЭНП) для хранения данных о зарегистрированных пользователях и журнала регистрации событий; допускают изменение встроенного ПО (технологический режим) без замены платы контроллера; обеспечивают режим доверенной загрузки операционной системы (выполнение процедур идентификации (аутентификации) пользователя, контроль целостности аппаратной части ПЭВМ, системных файлов, программ и данных на аппаратном уровне до загрузки ОС).

 

            5.3. ЗАЩИТНЫЕ ФУНКЦИИ KОMПЛЕКСА «АККОРД»

 

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

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

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

            2) аппаратным (до загрузки ОС) контролем целостности технических средств ПЭВМ, программ и данных на жестком диске;

            3) ограничением времени доступа субъекта к ПЭВМ в соответствии с установленным режимом работы пользователей;

            4) блокировкой несанкционированной загрузки ПЭВМ с отчуждаемых носителей;

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

            6) дисциплиной разграничения доступа к ресурсам ПЭВМ, определяемой атрибутами доступа. Комплекс «Аккорд» позволяет администратору использовать как дискреционный, так и мандатный методы разграничения доступа;

            7) дисциплиной применения специальных процедур печати и процедур ввода (вывода) на отчуждаемые носители информации;

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

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

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

            10) другими механизмами защиты в соответствии с требованиями нормативных документов по безопасности информации.

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

            1) защиту от несанкционированного доступа к ПЭВМ и ее ресурсам;

            2) разграничение доступа к ресурсам ПЭВМ, в том числе к внешним устройствам, в соответствии с уровнем полномочий пользователей;

            3) защиту от несанкционированных модификаций программ и данных и внедрения РПВ;

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

            5) создание изолированной программной среды (ИПС) с исключением возможности несанкционированного выхода в ОС, загрузки с FDD и несанкционированного прерывания контрольных процедур с клавиатуры;

            6) регистрацию действий пользователей в системном журнале, доступ к которому предоставляется только администратору БИ.

            Отметим, что в комплексе «Аккорд» используются и некоторые дополнительные механизмы защиты от НСД к ЭВМ. Так, в частности, для пользователя администратор может установить:

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

            2) интервал времени (с дискретностью 30 мин) по дням недели, в котором разрешена работа для данного пользователя;

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

            4) целесообразный с точки зрения критичности информационной безопасности объем конфиденциальной информации, выводимый на внешние устройства ПЭВМ;

            5) подачу соответствующих звуковых и визуальных сигналов при попытках несанкционированного доступа к ПЭВМ и ее ресурсам.