УДК 658.512.011:681.326:519.713
В.И. ХАХАНОВ, ANDERS CARLSSON, С.В. ЧУМАЧЕНКО, БУТЕНКО С.А. МОДЕЛИ УПРАВЛЕНИЯ УЯЗВИМОСТЬЮ
Предлагается математический аппарат создания инфраструктуры программно-аппаратных телекоммуникационных информационных кибернетических систем ( КС), ориентированной на защиту от несанкционированного доступа к сервисам, определенным в спецификации системы, путем проникновения через легальные интерфейсы взаимодействия компонентов, имеющие уязвимости. Инфраструктура защитных сервисов создается вместе с киберсистемой и сопровождает последнюю в течение всего жизненного цикла, обслуживая все последующие модификации КС, и сама постоянно повышает свой интеллект путем пополнения истории и библиотек конструктивных и деструктивных компонентов.
1. Модель процессов тестирования уязвимостей и проникновений
Предлагаются технологичные и эффективные процесс-модели и методы диагностирования уязвимостей или функциональных нарушений в программных и/или аппаратных компонентах киберсистемы. Используются регистровые (векторные) или матричные (табличные) структуры данных, которые ориентированы на параллельное выполнение логических операций при поиске уязвимых компонентов КС.
Проблема синтеза или анализа компонентов произвольной системы и инфраструктуры сервисов может быть сформулирована в виде взаимодействия (симметрической разности - аналог хог-операции на булеане) в кибернетическом пространстве ее модели F с входными воздействиями T и реакциями L: f(F,T,L) = 0 ^ FATAL = 0 .
Киберпространство - совокупность взаимодействующих по метрике информационных процессов и явлений, использующих в качестве носителя компьютерные системы и сети. В частности, компонент пространства представлен k-мерным (кортежем) вектором
а = (a1,a2,.. ,aj,...,ak), aj = {О,1} в двоичном алфавите. Нуль-вектор есть k-мерный кортеж, все координаты которого равны нулю: aj = 0, j = 1,k .
Метрика ß кибернетического (двоичного) пространства определяется единственным
равенством, которое формирует нуль-вектор для хог-суммы расстояний di между ненуле-
n
вым и конечным числом точек (объектов), замкнутых в цикл: ß = ® di =
i=1
Иначе: метрика ß векторного логического двоичного пространства есть равная нуль-вектору хог-сумма расстояний между конечным числом точек (вершин) графа, образующих цикл. Сумма n-мерных двоичных векторов, задающих координаты точек цикла, равна нуль-вектору. Данное определение метрики оперирует отношениями, что позволяет сократить систему аксиом с трех до одной и распространить ее действие на любые конструкции n-мерного киберпространства.
Метрика ß кибернетического многозначного пространства, где каждая координата вектора (объекта) определена в алфавите, составляющем булеан на универсуме примитивов мощностью p: aj = {aj,a2,...,ar,...,am}, m = 2p, есть равная 0 -вектору (по всем координатам) симметрическая разность расстояний между конечным числом точек, обра-n
зующих цикл: ß = A di = 0.
i=1
Равенство пустому вектору симметрической разности покоординатного теоретико-множественного взаимодействия подчеркивает равнозначность компонентов (расстояний), формирующих уравнения.
Введенная метрика представляет не только теоретический интерес, но имеет и практическую направленность на обобщение и классификацию задач тестирования путем создания модели хог-отношений на множестве из четырех основных компонентов. Процедуры синтеза тестов, моделирования уязвимостей и их диагностирования можно свести к хог-отношениям на графе (рис. 1) полного взаимодействия четырех вершин (функциональность, киберсистема (Unit Under Test), тест, уязвимости) G = {F,U,T,L}.
Рис. 1. Граф взаимодействия компонентов тестирования Такой граф порождает четыре базовых треугольника, которые формируют 12 практически полезных триад отношений, формулирующих задачи тестирования:
T © F © L = 0 T © L © U = 0 T © F © U = 0 F © L © U = 0
1) T = F © L 2) F = T © L 3) L = T © F 4) T = L © U 5) L = T © U 6) U = T © L 7) T = F © U 8) F = T © U 9) U = T © F 10) F = L © U 11) L = F © U 12) U = F © L
Введение вершины и в граф взаимодействия компонентов тестирования расширяет функциональные возможности модели, появляются новые свойства полученной системы. Введение в структуру новой вершины должно иметь весомые аргументы в пользу ее целесообразности. Что касается представленного на рис. 1 графа, содержательно все формульно описанные задачи можно классифицировать в группы следующим образом.
Группа 1 - теоретические эксперименты (на модели функциональности), без киберсис-темы: 1) Синтез теста по модели функциональности для заданного списка уязвимостей. 2) Построение модели функциональности на основе заданного теста и списка уязвимостей. 3) Моделирование уязвимостей функциональности на заданном тесте.
Группа 2 - реальные эксперименты (на киберсистеме), без модели функциональности: 4) Синтез теста путем физической эмуляции уязвимостей в КС. 5) Определение списка уязвимостей устройства при выполнении диагностического эксперимента. 6) Верификация теста и уязвимостей в эксперименте на реальной КС.
Группа 3 - тестовые эксперименты (верификация), без уязвимостей: 7) Синтез теста путем сравнения результатов моделирования модели и реальной КС. 8) Синтез функциональности по реальной КС и заданному тесту. 9) Верификация теста и модели функциональности относительно реальной КС с существующими уязвимостями.
Группа 4 - эксперименты в процессе функционирования, на рабочих воздействиях: 10) Проверка правильности поведения реальной КС на существующих или заданных уязвимос-тях. 11) Проверка работоспособности устройства относительно существующей модели в процессе функционирования. 12) Верификация функциональности и списка уязвимостей относительно поведения реального КС.
Наиболее популярными задачами из перечисленного выше списка являются: 1, 3, 5, 8, 9. Можно ввести и другую классификацию типов задач, которая дает возможность определить на графе О = (Б, и, Т, Ь) все концептуальные пути решения целевых проблем: синтеза тестов, определения модели функциональности, генерирования модели уязвимостей и проектирования КС:
1)Т = Б 0 Ь; 4) Б = Т © Ь; 7) Ь = Т © Б; 10) и = Т © Ь;
2) Т = и © Ь; 5) Б = и © Ь; 8) Ь = Т © и; 11) и = Т © Б;
3) Т = Б © и; 6) Б = Т © и; 9) Ь = Б © и; 12) и = Б © Ь.
Все конструкции, представленные в отношениях, обладают замечательным свойством обратимости. Компонент, вычисляемый с помощью двух других, может быть использован в качестве аргумента для определения любого из двух исходных. Потому здесь можно говорить о транзитивной обратимости каждой триады отношений на полном графе, когда по двум любым компонентам всегда и однозначно можно восстановить или определить третий. При этом формат представления каждого компонента должен быть одинаковым по форме и размерности (векторы, матрицы). На основе предложенной метрики и моделей тестирования далее рассмотрим более подробно методы диагностирования уязвимостей или функциональных нарушений.
2. Граф-метод поиска функциональных нарушений в КС
Используется уравнение пространства
f(F,T,L,U) = 0 ^ F0 T0 L© U = 0, которое трансформируется к виду L = (T © F) © (T © U). Диагностирование уязвимостей (функциональных нарушений) сводится к сравнению результатов модельного (T © F) и натурного (T © U) экспериментов, которое формирует список функциональных нарушений L, присутствующих в объекте диагностирования. Формула-модель процесса поиска блока Fj с функциональными нарушениями сводится к выбору решения посредством определения хог-взаимодействия между тремя компонентами:
Р
L = Fj ^ [(T© Fj) © (T© Uj)] = 0. j=1
Аналитическая модель верификации HDL-кода с использованием механизма ассерций (дополнительных линий наблюдения) ориентирована на достижение заданной глубины диагностирования и представлена в следующем виде:
M = f(F,A,B,S,T,L), F = (A*B) х S; S = f(T, B);
A = {Ai,A2,...,Aj,...,An>; B = {BbB2,...,Bj,...,Bn};
S = {S1,S2,...,Sj,...,Sm}; Si = {Si1,Si2,...,Sij,...,Sip};
T = {Ti,T2,...,Tj,...,Tk>; L = {LbL2,...,Lj,...,Ln>.
Здесь F = (A*B) х S - функциональность, представленная графом (рис. 2) транзакций
программных блоков (Code-Flow Transaction Graph - CFTG), где S = {Si,S2,...,Sj,...,Sm> -вершины или состояния программного продукта при моделировании тестовых сегментов. Иначе граф можно идентифицировать как ABC-граф - Assertion Based Coverage Graph.
Каждое состояние Sj = {Sii,Si2,...,Sij,...,Sip> определяется значениями существенных переменных КС (переменные, память, терминалы, компьютеры). Ориентированные дуги графа представлены совокупностью функциональных блоков:
B = (Bi,B2,...,Bj,...,Bn), £ Bj = B; A Bj =0 ,
i=1 i=i
где каждому из них может быть поставлена в соответствие ассерция Aj е A = {Ai,A2,...,Aj,...,An>. Каждая дуга Bj - группа операторов кода - формирует
состояние вершины Sj = f(T,Bj) в зависимости от теста T = {Ti,T2,...,Tj,...,Tk> . Каждой вершине может быть поставлен ассерционный монитор, объединяющий ассерции входящих в вершину дуг A(Sj) = Aji v Aj2 v... v Ajj v... v Ajn. Вершина может иметь более одной входящей (исходящей) дуги. Множество блоков с функциональными нарушениями представлено списком L = {Li,L2,...,Lj,...,Ln> .
B = (B1B3B9 v (B2B7 v B1B5)B11)B13 v v ((B1B4 v B2B6)B10 v B2B8B12)B14 = = B1B3B9B13 v B2B7B11B13 v B1B5B11B13 v v B1B4B10B14 v B2B6B10B14 v B2B8B12B14.
Рис. 2. Пример ABC-графа для HDL-кода
Модель HDL-кода, представленная в форме ABC-графа, отображает не только структуру программного кода, но и тестовые срезы функциональных покрытий, формируемые с помощью программных блоков, входящих в рассматриваемую вершину. Последняя определяет отношение между достигнутым на тесте пространством переменных и потенциально возможным, которое формирует функциональное покрытие как мощность состояния i-
вершины графа Q = cardC^ / cardCp . В совокупности все вершины графа должны составлять полное покрытие пространства состояний переменных КС, которое формирует каче-
m r m p
ство теста, равное 1 (100%): Q = card U Ci/card U Ci = 1. Кроме того, механизм ассерций
i=1 i=1
< A,C > , существующий на графе, позволяет выполнять мониторинг дуг (function-coverage) A = {A1,A2,...,Ai,...,An} и вершин (state- coverage) C = {C1,C2,...,Ci,...,Cm}. Ассерции на дугах отвечают за диагностирование функциональных нарушений в КС блоках. Ассерции на вершинах графа дают дополнительную информацию о качестве тестов (ассерций) в целях их улучшения или дополнения. Транзакционный граф КС блоков дает возможность: 1) использовать аппарат тестопригодного проектирования для оценки качества КС; 2) оценить затраты на создание тестов, диагностирование и исправление функциональных нарушений; 3) оптимизировать синтез теста путем решения задачи покрытия минимальным множеством активизированных путей всех дуг (вершин). Например, минимальный тест для приведенного ABC-графа имеет шесть сегментов, которые активизируют все существующие пути:
T = S0S1S3S7S9 v S0S1S4S8S9 v S0S1S5S7S9 v
v S0S2S4S8S9v S0S2S5S7S9v S0S2S6S8S9.
Тесту можно поставить в соответствие следующую матрицу активизации программных блоков:
Bij B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14
T1 1 1 1 1
T2 1 1 1 1
T3 1 1 1 1
T4 1 1 1 1
T5 1 1 1 1
T6 1 1 1 1
Матрица активизации иллюстрирует факт неразличимости на тесте функциональных нарушений в блоках 3 и 9, 8 и 12, которые составляют два класса эквивалентностей при
наличии одной ассерции (монитора) в вершине 9. Для устранения такой неразличимости необходимо создать два дополнительных монитора в вершинах 3 и 6. В результате 3
ассерции на вершинах A = (Аз,Аб,А9) дают возможность различить между собой все блоки программного кода. Таким образом, граф позволяет не только синтезировать оптимальный тест, но и определять минимальное число ассерционных мониторов здесь и далее в вершинах для поиска неисправных блоков с заданной глубиной диагностирования.
Увеличение числа ассерционных мониторов приводит к модификации таблицы активизации. Иначе, на заданном тесте и механизме ассерций необходимо однозначно решать задачу диагностирования функциональных нарушений КС с глубиной до функционального блока. При этом число ассерций и тестовых сегментов должно быть минимально допустимым для кодовой идентификации всех блоков:
+ |А| > log2|B| = cardT + cardA > log2 cardB .
Первоначально количество ассерционных мониторов равно числу тестовых сегментов. Таблица активизации функциональных модулей позволяет выполнять идентификацию блоков кода с функциональными нарушениями на обобщенном векторе экспериментальной проверки (ассерционного мониторинга):
V = (Vi,V2,...,Vi,...,Vn),Vi = {0,1}, Vj = Ti © Bj, Vj(Bjj = 1).
Координата вектора Vj = Tj © Bj = 1 идентифицирует факт «падения» тест-сегмента на подмножестве активизированных им блоков. В соответствии с вектором V, заданным на таблице активизации с учетом приведенного выше правила вычисления его координат:
B
Ti T2
T3
T4 T5 T6
Bi
B2
B3
B4
B5
B6
B7
B8
1
Be
B
10
B
11
строится логическая функция функциональных нарушений
B
12
1
B
13
B
14
V
КС, которая упрощается на
основе использования координат вектора экспериментальной проверки V:
В = (Т V В1V В3 V В9 V В13) л (Т2 V В1 V В4 V Вю V В14) л
л (Т3 V В1 V В5 V Вц V В13) л (Т4 V В2 V Вб V Вю V В14) л
л (Т5 V В2 V В7 V В11 V В13) л (Тб V В2 V В8 V В12 V В14);
{V,T} = (010101) ^
В = (0 V В1 V В4 V В10 V В14) л (0 V В2 V Вб V В10 V В14) л
V (0 V В2 V В8 V В12 V В14) =
= (В1V В4 V Вю V В14) л (В2 V Вб V Вю V В14) л
V (В2 V В8 V В12 V В14) =
= В1В2 V В4В2 V ... V В3В6В12 V ... V В14.
После преобразования конъюнктивной нормальной формы (КНФ) к дизъюнктивной нормальной форме полученные термы содержат все возможные решения в виде покрытия единичных координат вектора экспериментальной проверки одиночными или кратными функциональными нарушениями КС блоков. Выбор лучшего решения связан с определением терма ДНФ минимальной длины. В данном примере оптимальным решением является
терм, содержащий один блок В = В14 , который своим функциональным нарушением покрывает три единицы в векторе экспериментальной проверки V = (010101). Данный факт также очевиден из сравнения двух последних столбцов матрицы активизации В.
1
1
1
1
1
1
Другое аппаратно-ориентированное аналитическое решение связано с синтезом много-выходовой комбинационной схемы - дешифратора по матрице активизации программных блоков:
Bi = T1T2T3T4T5T6; B2 = T1T2T3 T4 T5 Tg;
B3 = T1T2T3T4T5T6; ... B14 = T1T2T3T4T5T6.
Такое устройство имеет число входов, равное количеству тестовых сегментов, а выходных линий - равное числу КС блоков. При подаче на входы дешифратора вектора экспериментальной проверки формируется единичное значение на одном из его выходов. При этом номер выхода соответствует блоку, имеющему функциональные нарушения. Такая схема представляет интерес для создания замкнутой в цикл инфраструктуры тестирования и исправления функциональных нарушений, где адрес уязвимого блока может быть использован для его автоматической замены на альтернативный модуль из существующей библиотеки диверсных решений.
3. Векторно-логические методы диагностирования уязвимостей
Основная цель методов - определение места причины и вида уязвимости на структуре КС путем анализа таблиц уязвимостей (функциональных нарушений - ФН), построенных в процессе моделирования всех возможных деструктивов. Аналитическая модель проверки КС с использованием механизма ассерций ориентирована на достижение заданной глубины диагностирования уязвимостей и представлена в следующем виде:
M = f(F,L,T,C,A,t); C = {CbC2,...,Cb...,Cm}; L = {LbL2,...,Lb...,Ln};
A(t) = {AbA2,...,Ai,...,Ak}; A с L; F = Lx C;k < n;T = {TbT2,...,Tb...,Tp}.
Здесь Ci - группа операторов кода, нагруженная на вершину (компонент КС) Li и формирующая ее состояние; F - функциональность, представленная транзакционным графом F = L x C в виде декартова произведения множества вершин и дуг; A - совокупность ассерций, как подмножество вершин транзакционного графа A с L. Метод поиска функциональных нарушений блока киберсистемы использует предварительно построенную таблицу ФН B = [Bij ], где строка есть отношение между тестовым сегментом и подмножеством блоков Ti « (Bi1,Bi2,...,Bjj,...,Bin) с возможными ФН. Столбец таблицы формирует отношение между блоком и тестовыми сегментами Bj « (T1j,T2j,...,Tij,...,Tpj), которые могут проверять блок с ФН. На стадии моделирования определяется обобщенная реакция m = {m1,m2,...,mi,...,mp} механизма ассерций F на тест, путем формирования
mi = (A1 v A2 v... v Ai v... v Ak), Ai = {0,1} как реакции ассерций на тест-сегмент Ti. Поиск ФН основан на определении хог-операции между вектором состояния ассерций и столбцов таблицы ФН m © (B1 v B2 v... v Bj v... v Bn). Выбор решения определяется совокупностью векторов B j с минимальным числом единичных координат
Р Р B = min [Bj =2 (Bij © mi)], j=1,n i=1 i=1
формирующих программные блоки с ФН, проверяемые на тестовых сегментах.
Повышение адекватности модели диагностирования ФН блоков КС связано с расширением пространства реакции проекта в процессе его тестовой верификации. В этом случае следует расширить пространство существования механизма ассерций до двумерного путем модификации векторов m и A:
Ai = (Ai1,Ai2,...,Aij,.. ,Aik); mi = (mi1,mi2,...,mij,.. ,mik);
Bij = (Bjj!,Bij2,...,Bijr,...,Bijk); {Aij,mij,Bijr} = {0,1}; i = ЦР; j = й; г = Ük
При этом таблица ФН становится трехмерной по параметрам: [ = 1,р; j = 1,п; г = 1,к -числа строк или тест-сегментов, столбцов или функциональных блоков, ассерций или точек наблюдения для блоков соответственно:
B A1 A2 A3 A4 A5 A6 A7 A8 m
B1 B2 B3 B4 B5 B6 B7 B8
T1 1001 1110 0001 0110 0011 1110 0001 1110 1001
T2 1010 1000 0001 0110 0001 0001 1110 1110 1000
T3 1110 0001 1111 0111 1011 1110 1001 1101 0011
T4 1000 0111 0110 1001 1000 0001 1011 1110 1011
T5 0001 0110 1100 0111 0010 1110 0001 1000 1001
T6 1110 1011 0110 0001 1110 1100 1001 0111 1110
T7 0110 1101 0110 1000 0111 1011 0101 1110 0001
T8 1000 1110 1001 0100 0101 1001 0111 0001 1110
Потенциально трехмерность таблицы ФН увеличивает объем диагностической информации, что дает возможность повысить глубину поиска уязвимости, в пределе до неделимого примитива КС. Однако для анализа трехмерной таблицы ФН необходимо модифицировать предложенные методы диагностирования.
Поиск уязвимостей по таблице функциональных нарушений на основе вектора экспериментальной проверки - реакции (m) киберсистемы на тест
m = (mi,m2,...,mj,...,mn),mj = {0,1} сводится к методам анализа строк или столбцов. Первый метод основан на применении векторной хог-операции между реакцией m КС на тест, формально рассматриваемый в качестве входного вектор-столбца или маски m, и
столбцов таблицы ФН m©(Bi vB2 v...vBj v...vBm). Для подсчета качества взаимодействия векторов Qj(m © Bj) в целях выбора лучшего решения определяются столбцы c минимальным числом единиц результирующего вектора:
n n B = min [Bj = £ (Bjj © mj)] j=1,k i=1 i=1 '
Они идентифицируют и формируют примитивы с функциональными нарушениями, проверяемые на тестовых наборах. Аналитическая модель процесса получения решения в виде списка блоков с уязвимостями, присутствующих в КС, представлена в следующем виде:
n n 0 n n
B = min [B; = £ (Bij © mi)]; B0 = [Bj = £ (Bij © mi) = 0]. j=1,k J i=1 1=1 j=1,k J i=1 1=1
Здесь фигурирует вектор экспериментальной проверки, который является входным для
*
последующего анализа таблицы ФН m = f(A, B) © f (A, B, L) есть результат проведения
тестового эксперимента - сравнение функционалов (состояний выходов) эталонной f (A, B)
*
и реальной f (A,B,L) КС с ФН L на тестовых наборах A. Во втором случае, если
множество B0 > 1, это означает наличие эквивалентных, не различимых на данном тесте и механизме ассерций, функциональных нарушений. Выбор лучшего решения
Y = v[(Q1 л Q2) © Q1] с минимальным числом единичных координат из двух альтернатив, представленных векторными оценками Q1 v Q2, осуществляется с помощью структуры, изображенной на рис. 3.
42-
Рис. 3. Схема выбора лучшего решения Достоинство метода - выбор лучшего решения из всех возможных одиночных и кратных ФН. По существу, в список ФН включаются такие одиночные ФН, которые при логическом умножении на вектор экспериментальной проверки дают результат в виде соответствующего вектор-столбца. Дизъюнкция всех столбцов, составляющих решение,
г
равна вектору экспериментальной проверки У^®) е В) = т .
Вычислительная сложность метода анализа столбцов определяется следующей зависи-с 2 2 2 г
мостью: Ъ = 3п + п = 4п ; Ъ = 3п + п = 4п. Здесь первая оценка учитывает выполнение координатных операций над матрицей, размерностью п х п . Вторая оценка определяет вычислительную сложность регистровых параллельных операций для подсчета критериев качества и обработки матрицы соответственно.
Логический метод анализа строк таблицы ФН. Стратегия определения ошибок программного кода по таблице ФН связана с анализом ее строк, состоящим из двух процедур: 1) вычисление логического произведения конъюнкции строк, отмеченных единичными
значениями вектора = 1), на отрицание дизъюнкции нулевых строк = 0) для
одиночных дефектных блоков; 2) вычисление логического произведения дизъюнкции единичных строк на отрицание дизъюнкции нулевых строк для кратных дефектных блоков:
В = ( А ТО л ( V Т^); В = ( V ТО л ( V ТО; (1)
=1 =0 =1 =0 у1>
Формулы интересны тем, что они не привязаны к критериям качества диагностирования, а оперируют лишь двумя компонентами, таблицей ФН и вектором экспериментальной проверки. Выполнение процедуры диагностирования по формулам (1) для вектора экспериментальной проверки т1 = (0101010010010), заданного в последней таблице ФН, дает
результат: В8(тьТ) = Б2, который не хуже, чем ранее полученный методом анализа столбцов. Для вектора экспериментальной проверки т2 = (1110011100000) результат
диагностирования имеет вид: Вт(т2,Т) = Ь VЬ2 . Вычислительная сложность метода
анализа строк определяется следующей зависимостью: Ъс = п2; Ъг = п. Первая оценка предназначена для подсчета числа координатных операций, вторая определяет вычислительную сложность процесса обработки на основе регистровых параллельных операций. Предложенные методы диагностирования уязвимостей для КС есть один из наиболее существенных компонентов инфраструктуры сервисного обслуживания проектируемых и функционирующих КС.
4. ЭБ-метод диагностирования уязвимостей
Мотивация определяется рыночной привлекательностью матричного метода поиска ФН в компонентах КС как самого технологичного, который ориентирован на параллельную обработку данных, что дает возможность существенно уменьшить время диагностического обслуживания при возникновении уязвимостей (проникновений).
Цель исследования - создание модели, метода и их программно-аппаратной реализации, ориентированных на существенное уменьшения времени тестирования и затрат памяти для хранения матрицы диагностирования путем формирования тернарных отношений (тест-монитор-функциональный компонент).
Задачи: 1) Разработка модели КС в виде транзакционного графа, а также матрицы активизации функциональных компонентов на тестах относительно выбранного множества
мониторов. 2) Разработка метода анализа матрицы активизации для поиска уязвимостей с заданной глубиной. 3) Синтез логических функций для встроенного диагностирования ФН.
Модель тестирования киберсистемы представлена в виде следующего преобразования начального уравнения диагноза, определенного хог-отношением параметров <тест - функциональность - уязвимые блоки>:
Т © Б © В = 0 ^ В = Т © Б ^ В = {Т х А} © Б ^ В = {Т х А} © (Б х т}, которое оформлено в тернарное матричное отношение компонентов:
М = {{Т х А}х {В}} ^ Му = (Тх А)! © Bj.
Здесь координата матрицы (таблицы) равна 1, если пара тест-монитор (Т х А)! проверяет (активизирует) ФН функционального блока В j е В .
Модель киберсистемы представлена в виде транзакционного графа О =< В,А >, В = {В1,В2,...,Вх,...,Вп}, А = {А1, A2,...,Aj,...,Am}, где определены множество дуг - функциональных блоков и вершин - мониторов для наблюдения совокупности примитивов КС. Для целей диагностирования на графовую модель накладывается совокупность тестовых сегментов Т = {Т1,Т2,...,Тг,...,Тк} , которая активизирует транзакционные пути в графе. В общем случае модель тестирования представлена декартовым произведением М =< В х А х Т > , которая имеет размерность Q = п х т х к . Чтобы уменьшить объем диагностической информации каждому тесту предлагается поставить в соответствие монитор, который отвечает за визуализацию пути активизации функциональных блоков, что дает возможность уменьшить размерность модели (матрицы) до Q = п х к при сохранении всех возможностей отношения триады М =< В х А х Т > . Для пары тест-монитор возможны взаимно-однозначные соответствия < Т ^ А j > , функциональные
< {Т^,Тг} ^ Aj > и инъективные < Т ^ {Aj,As} > . Такое многообразие соответствий
дает возможность дублировать один тестовый сегмент для различных мониторов, равно как и нагружать несколько тестов на один и тот же монитор. При этом ячейка матрицы
Му = {0,1} всегда сохраняет свою размерность, равную одному биту.
Аналитическая обобщенная модель матричного диагностирования с использованием механизма мониторов ориентирована на достижение заданной глубины поиска дефектов и представлена в следующем виде:
М = ^О,Ь,Т,В,А,1); В = {ВьВ2,...,Вь...,Вт}; Ь = {ЬьЬ2,...,Ц,...,Ьп};
А(1) = {АьА2,...,Аь...,Ак}; А с Ь; О = Ь х В; к < п; Т = {ТьТ2,...,Ть...,Тр}.
Здесь В! - группа операторов кода, нагруженная на вершину Ц (блок КС) и формирующая ее состояние; О - функциональность, представленная транзакционным графом О = (Ь,А) х В в виде декартова произведения множества вершин и дуг; А - совокупность мониторов, как подмножество вершин транзакционного графа А с Ь . Метод поиска уязвимостей функциональных блоков (ФБ) использует предварительно построенную таблицу
(матрицу) активизации ТАФБ М = [Му], где строка есть отношение между тестовым сегментом и подмножеством активизированных блоков
Т ^ Aj « (Мл,М12,...,Му,...,М1п),Му = {0,1}, наблюдаемых на мониторе Aj. Столбец таблицы формирует отношение между функциональным блоком, тестовыми сегментами и мониторами Mj = Bj « ^Т,А). В механизм мониторов может быть введен параметр модельного времени, который частично усложняет матрицу активизации, указывая временной или модельный такт, на котором выполняется мониторинг состояния вершины или
функционального блока на тест-сегменте Aj = f(Tj,Bj,tj).
Для диагностирования неисправностей на стадии моделирования определяется обобщенная реакция (вектор-столбец) ш = {ш1,ш2,...,ш^,...,шр} механизма мониторов A на тест-сегменты T путем формирования ш^ = f(T\, Aj). Поиск уязвимости ФБ основан на определении хог-операции между вектором состояния ассерций и столбцов таблицы ФН ш Ф (Mi v M2 v... v Mj v... v Mn). Решение выбирается методом хог-анализа столбцов, путем выбора совокупности векторов Bj с минимальным числом единичных координат
Р Р
B = rnin [Bj = £ (Bjj Ф rnj)], формирующих функциональные блоки с уязвимостями, про-j=1,n i=i i=1
веряемыми на тестовых сегментах. В дополнение к модели матричного диагностирования необходимо описать следующие важные свойства матрицы:
ш
1) Mj = (Ti - Aj); 2) vMy ^VMj = 1;
n k
3) Mij Ф Mjj Ф Mij; 4) Mij Ф Mir Ф Mij; j=1 i=1
5) log2n < k ^ log2|B < |T|; 6) Bj = f(T, A) ^ B Ф T Ф A = 0.
Свойства означают: 1) Каждая строка матрицы есть соответствие или подмножество декартова произведения (тест-монитор). 2) Дизъюнкция всех строк матрицы дает вектор, равный единицам по всем координатам. 3) Все строки матрицы различны, что исключает тестовую избыточность. 4) Все столбцы матрицы различны, что исключает существование эквивалентных неисправностей. 5) Число строк матрицы должно быть больше двоичного логарифма от числа столбцов, что определяет потенциальную диагностируемость всех ФН блоков. 6) Функция диагностирования блока с ФН зависит от совокупного теста и мониторов, которые должны быть минимизированы без нарушения диагнозопригодности.
Для пояснения работоспособности модели и метода рассмотрим функциональности трех модулей, входящих в примера КС. Первым является компонент Row_buffer, для которого создан транзакционный граф (рис. 4). Вершины представлены состояниями переменных и мониторов, отвечающих за входящие в вершину транзакции или дуги, которым соответствуют функциональные блоки.
Рис. 4. Компонент Яо^^Ьийег транзакционного графа На основе графа, полученного в процессе анализа КС, строится таблица активизации функциональных блоков, строки которой представляют пути активизации блоков к заказанной вершине-монитору. Таблица представляет собой покрытие строками-путями всех столбцов или функциональных блоков. При этом в ней не должно быть хотя бы двух одинаковых столбцов. Отличие таблицы заключается в формировании пары <тест-наблю-
даемая вершина>, что дает возможность существенно сократить ее размерность при 100% распознавании всех дефектных блоков. Здесь самое главное отличие предложенной модели заключается в возможности описания с помощью таблицы следующих отношений: различные тесты - одна вершина; один тест - различные вершины:
Ац Т1 Т2 Т3 Т4 Т5 Т6 Т7 Т8 Т9 Т10 Т11 Т12 Т13
11 ^ 03 12 ^ 01 13 ^ °1 14 ^ 01 15 ^ 01 16 ^ 01 17 ^ 02 18 ^ 02 19 ^ 02 110 ^ 02 111 ^ 02 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
С помощью матрицы активизации функциональных блоков (транзакционного графа) и хог-метода поиска дефектов достаточно просто синтезировать логические функции для формирования комбинационной схемы, определяющей в процессе и по результатам моделирования номер функционального блока, который имеет семантические ошибки:
°з = Т1;
°1 = VТ^З VV Т11зТ111 VТ11зТ1;
02 = Т12Т2 V Т12Т4 V Т12Т6 V Т12Т7 V Т12Т10 .
Такое свойство становится возможным благодаря отсутствию эквивалентных уязвимо-стей или одинаковых столбцов в матрице активизации. Поэтому фиксация фактического
состояния всех мониторов в вершинах 01,02,03 на 11 тестовых наборах дает возможность однозначно идентифицировать некорректный функциональный модуль путем выполнения хог-операции между вектором ассерций и столбцами матрицы активизации. Нулевое значение всех координат результата хог-операции определяет номер столбца, соответствующего уязвимости модуля. Имплементация модели и метода в логическую функцию позволяет возможность определять уязвимый блок еще до завершения диагностического эксперимента, если это возможно. Это означает существенную экономию времени диагностирования отдельных видов уязвимостей. Например, тест-монитор 11 ^ О3 дает возможность идентифицировать уже на первом тесте уязвимость блока Б§ .
В качестве второго тестового примера для практического использования разработанной модели активизации и хог-метода поиска дефектов далее предлагается синтез матрицы диагностирования для модуля, представленного на рис. 5.
Рис. 5. Транзакционный граф шаш-ТЬ
Данному графу ставится в соответствие следующая матрица диагностирования:
Aij Tl T2 T3 T4 T5 Тб Т7 Т8 Т9 Tio Til Т12 Tl3 Tl4
Pi ^ F7 1 1 1 1
P2 ^ F 1 1 1 1
Рз ^ F9 1 1 1 1
Р4 ^ Flo 1 1 1 1
Р5 ^ F12 1 1 1 1 1
Рб ^ Fi3 1 1 1 1 1
Pi ^ F2 Р2 ^ F3 1 1
Система функций диагностирования имеет такой вид:
F7 = T11T31T51Tl; F8 = T:[Tz|T51T81 ; F9 = тЗ^тЗ;
F10 = Т33Т51Т(8Т112; F32 = Т^ЗтЬ^ ; F13 = т8Тз3т(3т110т84 ;
F2 = T11; F3 = Т3.
5. Мультиуровневая модель и метод диагностирования ФН
Представлена мультидеревом В, где каждая вершина есть трехмерная таблица активизации функциональных модулей, а дуги, исходящие из нее, есть переходы на нижний уровень детализации при диагностировании, когда замена рассматриваемого уязвимого функционального блока слишком дорога:
п тг кг8 В = [В**], оаМВ =2 X X ВГ5 -1 г=1 8=1 ]=1 '
п - число уровней мультидерева диагностирования; тг - количество функциональных
блоков или компонентов на уровне г; кг8 - число компонентов в таблице В*8; ВГ8 = {0,1} - компонент таблицы активизации, определенный сигналами проверки (непроверки) функционального модуля тест-сегментом Т^^ относительно наблюдаемого монитора Л^.
Каждая вершина-таблица имеет число исходящих вниз дуг, равное количеству функциональных блоков, диагностируемых (представленных) в таблице активизации. Структура мультидерева, соответствующая модели многоуровневого диагностирования, представлена на рис. 6.
Рис. 6. Фрагмент мультидерева диагностирования Процесс-модель или метод поиска дефектов по мультидереву диагностирования сводится к созданию движка (рис. 7) для спуска по одной из ветвей дерева на такую глубину, которая удовлетворяет пользователя по степени детализации:
Brs © Ars =
0 ^ {Bj+1,s,R};
1 ^ {Br+1,,T}.
С Start ]
r=0,5=f[j,r>
|j=1 ; f=r+1 k|
]=FH
l>m,
—(B"- repair) (T Repair)
Рис. 7. Движок обхода мультидерева диагностирования Здесь выполняется векторная хог-операция между столбцами матрицы и вектором
rs
экспериментальной проверки А , который определяется реакцией функциональности, снятой с мониторов (ассерций) при подаче всех тест-сегментов. Если хотя бы одна координа-
та полученной векторной xor-суммы равна нулю
Brs © Are = 0
, то выполняется одно из
действий: переход к матрице активизации нижнего уровня
B1 J
r+1,s
или восстановление
работоспособности (устранение уязвимости) функционального блока Б j . При этом анализируется, что важнее: 1) время - тогда устранение уязвимости рассматриваемого блока; 2) деньги - тогда осуществляется переход вниз, для уточнения места уязвимости, поскольку замена более мелкого блока существенно уменьшает стоимость восстановления неуязвимости. Если хотя бы одна координата полученного вектора хог-суммы равна единице
Б ©А = 1, то выполняется переход к анализу следующего столбца матрицы. При
нулевых значениях всех координат вектора (ассерционных) мониторов аГЯ = 0 фиксируется неуязвимое состояние всего изделия. Если в рассматриваемой таблице зафиксированы
все векторные xor-суммы, не равные нулю bj © A = 1, то коррекции подлежит тест,
построенный для проверки данной функциональности.
Технологическая модель инфраструктуры встроенного тестирования, диагностирования и восстановления неуязвимости (рис. 8) имеет три компонента: 1. Тестирование КС (Unit Under Test (UUT)) с использованием эталонной модели (Model Under Test (MUT)) для формирования вектора экспериментальной проверки ma, размерность которого соответствует числу тестовых наборов. 2. Поиск дефектов на основе анализа таблицы уязвимос-тей A. 3. Восстановление неуязвимости КС посредством замены уязвимых блоков на компоненты из Spare Good Primitives.
Процесс-модель встроенного сервисного обслуживания работает в реальном масштабе времени и позволяет поддерживать в работоспособном состоянии, без вмешательства человека, КС, что является целесообразным решением в случае применения технологий,
и> с
41 сп О с СП
га О
го о. аз СС
Testbench
UUT
GMU Н
3"
е
связанных с дистанционной эксплуатацией изделия. Предложенные процесс-модели анализа ассоциативных таблиц, а также введенные критерии качества логических решений позволяют решать задачи квазиоптимального покрытия, диагностирования уязвимостей программных и (или) аппаратных блоков. Модель векторных вычислений стала основой
для разработки специализированной мультипроцессорной архитектуры, ориентированной на поиск, распознавание и принятие решений на основе использования структур ассоциативных таблиц.
Таким образом, представленная на рисунке граф-схема дает возможность эффективно осуществлять сервисное обслуживание сколь угодно сложной ки-берсистемы. Преимущества такого движка, инвариантного к уровням иерархии, заключаются в простоте подготовки и представления диагностической информации в виде минимизированной таблицы активизации функциональных блоков или деструктивных компонентов (уязвимостей) на тестовых сегментах.
В последнем случае эффект (уменьшение времени) получен благодаря введению дополнительной инфраструктуры (рис. 9) к функциональности проекта, позволяющей избирательно осуществлять тестирование и диагностирование, а также перепрограммировать отдельные модули в случае фиксации уязвимостей.
mf
1 I 1 &
1
ть
md
та
"ОН
А
шгш
AD
SM
Рис. 8. Модель встроенного тестирования „ „ тт , т/.„
^ ^ Рис. 9. Инфраструктура тестирования КС
компонентов КС ч-f fj J f f
Здесь представлены блоки: Testbench - тесты проверки функциональных блоков, FC - функциональное покрытие теста, F - функциональные блоки КС, DI - диагностическая информация, DT - методы и средства диагностирования, DA - результаты анализа процесса диагностирования, FB - уязвимые функциональные модули, Repairing - восстановление работоспособности функциональных модулей. Сервисное обслуживание отдельной ячейки функциональности осуществляется с помощью ячейки граничного сканирования, представленной на рис. 10.
6. Выводы
Предложена усовершенствованная процесс-модель определения уязвимостей в КС, которая отличается использованием хог-операции, что дает возможность повысить быстродействие диагностирования одиночных или кратных ФН на основе параллельного анализа таблицы ФН с помощью логических векторных операций and, or, xor.
Рис. 10. Ячейка граничного сканирования Разработаны структурная модель в виде мультидерева и метод (движок) его быстрого обхода, которые отличаются инвариантностью к уровням иерархии КС для диагностирования уязвимостей на тестовых сегментах, что дает возможность эффективно, в реальном масштабе времени, осуществлять сервисное обслуживание сколь угодно сложной киберси-стемы.
Список литературы: 1. БондаренкоМ.Ф.,ХахановВ.И., ЛитвиноваЕ.И. Структура логического ассоциативного мультипроцессора // Автоматика и телемеханика. 2012. № 10. С. 71-92. 2. Hahanov V., Wajeb Gharibi, Litvinova E., Chumachenko S. Information analysis infrastructure for diagnosis // Information an international interdisciplinary journal. 2011. Japan. Vol.14, № 7. Р. 2419-2433. 3. BishopM. About Penetration Testing // IEEE Security & Privacy. 2007. Vol. 5, Iss. 6. P. 84 - 87. 4. Mainka C., Somorovsky J, Schwenk J. Penetration Testing Tool for Web Services Security // 2012 IEEE Eighth World Congress on Services (SERVICES). 2012. P. 163 - 170. 5. Salas P.A.P., Padmanabhan Krishnan, Ross K.J. Model-based Security Vulnerability Testing // 18th Australian Software Engineering Conference. 2007. P. 284 - 296. 6. Bau Jason, Bursztein Elie, Gupta Divij, Mitchell John. State of the Art: Automated Black-Box Web Application Vulnerability Testing // 2010 IEEE Symposium on Security and Privacy. 2010. P. 332 - 345. 7. Shahriar H., Zulkernine M. Automatic Testing of Program Security Vulnerabilities // 33 rd Annual IEEE International Computer Software and Applications Conference. 2009.Vol. 2. P. 550 - 555. 8. Sedaghat S., Adibniya F., Sarram M.-A. The investigation of vulnerability test in application software // International Conference on the Current Trends in Information Technology (CTIT). 2009. P.1 - 5. 9. Wilhelm T. Professional Penetration Testing. Syngress. 2009. 524 p. 10. ShakeelA., Heriyanto T. BackTrack 4: Assuring Security by Penetration Testing. Packt Publishing. 2011. 392 p. 11. Хаханов В.И., Anders Carlsson, Чумаченко С.В. Инфраструктура PenTestING и управления уязвимостью // АСУ и приборы автоматики. 2012. Вып. 160. C. 36-54.
Поступила в редколлегию 17.10.2012
Хаханов Владимир Иванович, д-р техн. наук, декан факультета КИУ, профессор кафедры АПВТ ХНУРЭ. Научные интересы: техническая диагностика цифровых систем, сетей и программных продуктов. Увлечения: баскетбол, футбол, горные лыжи. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 70-21-326. E-mail: hahanov@kture.kharkov.ua.
Anders Carlsson, COM School of Computing, Blekinge Institute of Technology (BTH). Adress: Room H454D, Blekinge Institute of Technology, SE-37179 Karlskrona, Sweden. Чумаченко Светлана Викторовна, д-р техн. наук, профессор кафедры АПВТ ХНУРЭ. Научные интересы: математическое моделирование, теория рядов, методы дискретной оптимизации. Увлечения: путешествия, любительское фото. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 70-21-326. E-mail: ri@kture.kharkov.ua.
Бутенко Сергей Александрович, студент группы КИ-09-4 факультета КИУ .Научные интересы: диагностика цифровых систем и сетей. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 70-21-326.