Название: Комплексная защита информации в компьютерных системах - Завгородний В.И.

Жанр: Информатика

Рейтинг:

Просмотров: 785


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

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

 

 

где m - степень порождающего полинома, G(x) - частное, a R(x) -остаток от деления F(x)• хш на Р(х).

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

 

 

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

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

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

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

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

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

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

GA(x) = 1•хб+0•х5+ 1•х4+0•х3+0•х2+1•х1+0-х°= х6+ х4+х.

GA(x)•x3= x9+ х7+х4.

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

FA(x) = GA(x) • x3RA(x) = х9 + х7 + х4 + х + 1.

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

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

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

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

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


Оцените книгу: 1 2 3 4 5