Защита от несанкционированного изменения структур КС в процессе эксплуатации

Защита от внедрения аппаратных закладок на этапе разработки и производства

Защита от закладок при разработке программ

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

- использование современных технологий программирования;

- наличие автоматизированной системы разработки;

- наличие автоматизированных контрольно-испытательных стендов;

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

- наличие трансляторов для обнаружения закладок.

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

Одним из перспективных направлений создания программного обеспечения повышенной безопасности является использование объектно-ориентированного программирования, идущего на смену структурному программированию [19].

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

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

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

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

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

2. Автоматизированная система (АС) разработки программных средств. АС создается на базе локальной вычислительной сети (ЛВС). В состав ЛВС входят рабочие станции программистов и сервер администратора [19]. Программисты имеют полный доступ только к информации своей ЭВМ и доступ к ЭВМ других программистов в режиме чтения. С рабочего места администратора возможен доступ в режиме чтения к любой ЭВМ разработчиков.

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

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

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

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

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

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

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

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

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

Контрольно-испытательный стенд должен отвечать следующим требованиям [19]:

1. Стенд строится как открытая система, допускающая модернизацию и наращивание возможностей.

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

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

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

Контрольно-испытательный стенд может содержать следующие модули (рис.8.2):

ММ - модель программного модуля; МС - программный модуль реальной системы. Рис.8.2. Структурная схема контрольно-испытательного стенда

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

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

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

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

- модель внешних воздействий, предназначенная для учета воздействий, внешних по

отношению к моделируемой системе;

- модуль анализа результатов тестирования.

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

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

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

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

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

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

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

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

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

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

Этапы разработки, производства и модернизации аппаратных средств КС завершаются

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

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

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

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

- охрана помещений, в которых находятся аппаратные средства КС;

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

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

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

- противодействие внедрению вредительских программ.

Методы и средства охраны помещений рассмотрены в лекции 6.

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

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

- идентификация и аутентификация субъекта доступа;

- разблокирование устройства;

- ведение журнала учета действий субъекта доступа.

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

- пароли;

- съемные носители информации;

- электронные жетоны;

- пластиковые карты (см. лекцию 6);

- механические ключи.

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

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

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

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

зовать некоторые "технологические" пароли, перечень которых представлен в Internet [43].

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

(НСД) к ПЭВМ, которые проверяют пароль до загрузки ОС. Для этого изменяются участки программ, осуществляющих загрузку ОС. Эти изменения позволяют прервать процесс загрузки до ввода правильного пароля.

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

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

Идентификация субъекта доступа осуществляется средствами защиты и при загруженной ОС. Такой режим парольной защиты используется для организации многопользовательской работы на ЭВМ.

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

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

2. Длина пароля должна исключать возможность его раскрытия путем подбора. Рекомендуется устанавливать длину пароля S ³ 9 символов.

3. Пароли должны периодически меняться. Безопасное время использования пароля (Тб) может быть рассчитано по формуле [54]:

Тб = (АS t)/2,

где t - время, необходимое на ввод слова длиной s;

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

А - количество символов, из которых может быть составлен пароль.

Время t определяется из соотношения:

t = E/R,

где Е - число символов в сообщении, содержащем пароль;

R - скорость передачи символов пароля (симв./мин.).

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

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

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

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

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

- криптографическое преобразование пароля.

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

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

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

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

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

Для идентификации пользователей широко используются электронные жетоны-гене-раторы случайных идентификационных кодов [18]. Жетон - это прибор, вырабатывающий псевдослучайную буквенно-цифровую последовательность (слово). Это слово меняется примерно раз в минуту синхронно со сменой такого же слова в КС. В результате вырабатывается одноразовый пароль, который годится для использования только в определенный промежуток времени и только для однократного входа в систему. Первый такой жетон SecurID американской фирмы Security Dynamics появился в 1987 году.

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

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

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

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

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

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

действий субъектов доступа.

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

2. Противодействие несанкционированному подключению устройств. Одним из возможных путей несанкционированного изменения технической структуры КС является подключение незарегистрированных устройств или замена ими штатных средств КС.

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

- проверка особенностей устройства;

- использование идентификаторов устройств.

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

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

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

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

- наличие автоматизированного контроля вскрытия аппаратуры.

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

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

Контроль вскрытия аппаратуры обеспечивается за счет использования несложных электрических схем, аналогичных системам охранной сигнализации. Контроль вскрытия обеспечивается путем использования датчиков контактного типа. Они устанавливаются на всех съемных и открывающихся конструкциях, через которые возможен доступ к внутреннему монтажу устройств, элементам управления и коммутации. Датчики объединяются в единую систему контроля вскрытия устройств (СКВУ) с помощью проводных линий. Известно множество вариантов объединения датчиков в систему [28]. При построении таких систем решаются две взаимосвязанные задачи: обеспечение максимальной информативности системы и минимизация числа проводных линий. Максимум информативности автоматизированной СКВУ достигается в системах, позволяющих определить факт вскрытия конкретной защитной конструкции на определенном устройстве. Однако во многих случаях достаточно получить дежурному администратору системы безопасности сигнал о вскрытии устройства, чтобы принять адекватные меры. Конкретное нарушение внешней целостности устройства определяется на месте. Этому может способствовать контроль целостности специальных защитных знаков на защитных конструкциях [12]. Специальные защитные знаки реализуются в виде материалов, веществ, самоклеющихся лент, наклеек, самоклеющихся пломб. Целостность специальных защитных знаков определяется по внешнему виду и определенным признакам, которые могут контролироваться с применением технических средств. Специальные защитные средства на защитных конструкциях служат дополнительным индикатором вскрытия. Периодический контроль целостности специальных защитных средств позволяет (хотя бы с некоторым опозданием) выявить нарушение внешней целостности устройства при отсутствии или обходе злоумышленником аппаратных средств СКВУ.

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

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

По возможности проводные линии СКВУ желательно маскировать под линии информационных трактов устройств.

Факт снятия разъема может быть легко зафиксирован. Для этого достаточно выделить один контакт разъема на цели контроля. При снятии разъема линия СКВУ разрывается.

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

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

Другой подход к получению характеристик целостности связан с использованием циклических кодов [63]. Суть метода состоит в следующем. Исходная двоичная последовательность представляется в виде полинома F(x) степени n-1, где n - число бит последовательности. Для выбранного порождающего полинома P(x) можно записать равенство:

F(x)×xm = G(x)×Р(x) Å R(x),

где m - степень порождающего полинома,

G(x) - частное, a R(x) -остаток от деления F(x) × xm на Р(x).

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

F(x)× xm Å R(x) = G(x)×P(x)

Из последнего выражения можно сделать вывод: если исходный полином увеличить на xm (сдвинуть в сторону старших разрядов на m разрядов) и сложить с остатком R(x) по модулю 2, то полученный многочлен разделится без остатка на порождающий полином Р(x).

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

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

Задача злоумышленника усложнится, если использовать переменную длину двоичной последовательности при подсчете контрольной характеристики, а характеристику хранить в зашифрованном виде или вне КС (например, в ЗУ Touch Memory).

Рассмотрим пример использования циклических кодов для контроля целостности двоичной последовательности.

Пусть требуется проконтролировать целостность двоичной последовательности А=1010010. Используется порождаемый полином вида: P(x)=x3+x+l.

А. Получение контрольной характеристики.

GA(x) = l×x6+0×x5+l×x4+0×x3+0×x2+l×x l+0×x0= x6+x4+x..

GA(x)×xЗ = x9+x7+x4.

При вычислении синдрома RA(x) действия выполняются по правилам деления полиномов, заменяя операцию вычитания операцией сложения по модулю:

x9+x7+x4 | x3+x+1

Å x6+x3+1

x9+x7+x6

------------

x6+x4

Å

x6+x4+x3

------------

x3

Å

x3+x+1

------------

x+1 - остаток RA(x)

F(x)×xm = GA(x)×x3Å RA(x) = х974+x+1.

Двоичная последовательность с синдромом имеет вид:

А' = 1010010 011 (синдром подчеркнут). Последовательность А' хранится и (или) передается в КС.

Б. Контроль целостности информации.

Если изменений последовательности А' = 1010010011 не произошло, то соответствующий ей полином должен разделиться на порождающий полином без остатка:

x9+x7+x3+x+1 | x3+x+1

Å x6+x3+1

x9+x7+x6

------------

x6+x4+x+1

Å

x6+x4+x3

x3+x+1

Å

x3+x+1

------------

0 - остаток RA(x)

Результат произведенных вычислений свидетельствует о целостности информации.

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

Существует метод, который позволяет практически исключить возможность неконтролируемого изменения информации в КС. Для этого необходимо использовать хэш-функцию. Под хэш-функцией понимается процедура получения контрольной характеристики двоичной последовательности, основанная на контрольном суммировании и криптографических преобразованиях. Алгоритм хэш-функции приведен в ГОСТ Р34.11-94. Алгоритм не является секретным, так же как и алгоритм используемого при получении хэш-функции криптографического преобразования, изложенного в ГОСТ 28147-89 [9].

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

Итерационный процесс вычисления хэш-функции H предусматривает:

- генерацию четырех ключей (слов длиной 256 бит);

- шифрующее преобразование с помощью ключей текущего значения H методом простой замены (ГОСТ 28147-89);

- перемешивание результатов;

- поразрядное суммирование по mod2 слов длиной 256 бит исходной последовательности;

- вычисление функции Н.

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: