112
Информатика и технологии информатики
УДК 004.65: 004.052.42
А. А. Корниенко, М. Л. Глухарёв
Петербургский государственный университет путей сообщения
ФОРМАЛЬНАЯ ВЕРИФИКАЦИЯ ОГРАНИЧЕНИЙ ЦЕЛОСТНОСТИ И ТРИГГЕРОВ РЕЛЯЦИОННЫХ БАЗ ДАННЫХ ПРИ НАЛИЧИИ ИЗБЫТОЧНЫХ ТРЕБОВАНИЙ ЦЕЛОСТНОСТИ *
Верификация, анализ и оценка защищенности реляционных баз данных - актуальное направление научных исследований и практических разработок. Рассматривается процедура сравнения описателей требований и функций целостности. Данная процедура входит в состав метода формальной верификации ограничений целостности и триггеров.
функциональная корректность, формальная верификация, сравнение описателей, избыточность требования целостности, критичная операция, эквивалентность описателей, полная неэквивалентность описателей, частичное сходство описателей.
Введение
Анализ и оценка защищенности реляционных баз данных (БД) включают выявление уязвимостей, к которым, в частности, относятся недекларированные возможности (НДВ) программных объектов БД. Цели анализа защищенности пересекаются с целями верификации, в ходе которой проверяется соответствие различных компонентов информационной системы заданным требованиям, в том числе требованиям безопасности, пригодности и корректности. В ходе верификации могут быть выявлены НДВ, имеющиеся в программных объектах [1,
2]. В работах [3, 4] был рассмотрен метод формальной верификации ограничений целостности (ОЦ) и триггеров реляционных БД. Метод позволяет проверять полноту реализации требований целостности, выявлять ненужные ОЦ и триггеры и получать
формальные модели НДВ при условии, что НДВ оказывают непосредственное влияние на содержимое БД.
При формальной верификации ОЦ и триггеров требуется учитывать, что некоторые требования целостности могут оказаться избыточными. В такой ситуации программная система проведения формальной верификации не должна выдавать ложных сообщений о неполноте реализации избыточного требования целостности. В случаях, когда неполнота действительно имеет место, она должна выявляться в процессе верификации.
В настоящей статье раскрывается понятие избыточности и безызбыточности требований целостности и рассматриваются некоторые особенности формальной верификации ОЦ и триггеров реляционных БД относительно избыточных и безызбыточ-ных требований целостности.
* Работа выполнена при финансовой поддержке РФФИ (проект № 110713150-офи-м-2011-РЖД).
2012/2
Proceedings of Petersburg Transport University
Информатика и технологии информатики
113
1 Избыточность и безызбыточность
требований целостности
Формальная модель требования или реальной функции целостности представляет собой описатель - выражение, имеющее следующий вид [3]:
б I A,
где Q - условие, формулируемое относительно таблиц и конкретных столбцов, связанных данным требованием; A - множество DML-операций.
Это выражение имеет следующий смысл: условие Q должно быть истинно после выполнения любой операции из множества A.
Само наличие множества A в описателе свидетельствует о том, что выполнение той или иной DML-операции может изменить состояние таблиц таким образом, что условие Q становится ложным. Однако нет достаточных оснований утверждать, что для любого требования все операции из множества A равным образом влияют на истинность условия
Q. Сказанное можно пояснить на примере требования определенности значений в столбце х таблицы t. Описатель этого требования имеет вид охis (t) = 0 | {ins(t), upd(t), del(t)}. Условие охisnull(t) = 0 должно быть истинно после выполнения любой из трех возможных операций с таблицей t. Но нарушить его истинность, т. е. привести к появлению неопределенных значений в столбце х, могут только две операции: ins(t) и upd(t). При выполнении операции del(t), если условие °хs nuii(t) = 0 априори истинно, оно остается истинным и после удаления строк. Значит, операция del(t) не влияет на истинность условия охjs (t) = 0 и программная реализация такого требования может быть построена таким образом, чтобы контролировались только операции ins(t) и upd(t). В этой связи имеет смысл говорить о критичности активизирующих операций по отношению к требованию, а также избыточности и безызбыточности требования и приведении требования к безыз-быточному виду.
Критичной для требования операцией (или просто критичной операцией) описа-
теля назовем такую операцию из множества A, по выполнении которой условие Q может оказаться ложным при отсутствии в БД контролирующего ОЦ или триггера. Операцию, не являющуюся критичной, назовем некритичной операцией.
Обозначим множество критичных операций требования A'; A' ^ A. Введем также множество T' - множество таблиц, обрабатываемых критичными операциями; T' ^ T, где T - исходное множество таблиц, связанных требованием целостности.
Требование целостности является избыточным, если множество A в его описателе содержит хотя бы одну некритичную операцию.
Требование целостности является безыз-быточным, если все операции, входящие в множество A его описателя, являются критичными.
Если требование с описателем Q | A избыточно и известно множество критичных операций A' ^ A, то Q | A' является описателем безызбыточного требования. Поскольку A' полностью входит в A, описатель безызбыточного требования является частью описателя избыточного требования.
2 Избыточность требований
целостности и частичное
сходство описателей
При использовании метода формальной верификации ОЦ и триггеров реляционных БД [4] в качестве исходных данных берется следующая информация:
- формальные описатели требований целостности;
- SQL-коды ОЦ и триггеров проверяемой
БД.
Верификация проводится в два этапа.
Первый этап - восстановление описателей - представляет собой построение модели реализации ОЦ и триггеров. На этом этапе эксперт (инженер по тестированию) с помощью специализированного программного обеспечения проводит семантический анализ SQL-кодов ОЦ и триггеров, стремясь
ISSN 1815-588Х. Известия ПГУПС
2012/2
114
Информатика и технологии информатики
понять, какие именно функции целостности они реализуют. Результатом этих действий является набор описателей реализованных функций целостности - восстановленных описателей. Процедуры семантического анализа ОЦ и триггеров, используемые на этапе восстановления описателей, достаточно подробно рассмотрены в работе [4].
Второй этап верификации - сравнение описателей - определяет формальное соответствие между восстановленными описателями реальных функций целостности и исходными описателями требований целостности. БД можно считать корректно реализованной в части ОЦ и триггеров, если каждому восстановленному описателю соответствует исходный описатель заранее декларированного требования целостности и наоборот.
Сравнение описателей основано на доказательстве эквивалентности двух описателей; в целом, на этапе сравнения описателей требуется доказать эквивалентность множества пар описателей. Описатели называются эквивалентными, если эквивалентны их условия Q и равны их множества A.
Проверка полноты функций целостности заключается в том, что для каждого исходного описателя отыскивается один и только один эквивалентный ему восстановленный описатель.
Выявление НДВ в ОЦ и триггерах (в том числе лишних ОЦ и триггеров) заключается в том, что для каждого восстановленного описателя отыскивается один и только один эквивалентный ему исходный описатель.
Помимо отношения полной эквивалентности, целесообразно определить отношения полной неэквивалентности и частичного сходства описателей.
Описатели Q1|A1 и Q2|A2 не эквивалентны друг другу, если Q1 не эквивалентно Q2
и Ai * A2.
Частично схожими назовем описатели Q | A1 и Q |A2 - при условии, что A1 П A2 * * 0. Частными случаями частичного сходства являются случаи, когда A1 е A2 или
A2 ^ A1.
Наличие пары частично схожих описателей Desc1 = Q |A1 и Desc2 = Q |A2, где Desc1 - описатель требования целостности, а Desc2 - восстановленный описатель функции целостности, может быть обусловлено следующими причинами.
1. Если Desc1 - описатель безызбыточно-го требования:
а) A1\ A2 * 0 - объекты-ограничения не обрабатывают одну или более специфицированных активизирующих операций, т. е. имеет место неполнота реализации требования целостности Desc1;
б) A2\A1 * 0 - объекты-ограничения реагируют на одну или более DML-операций, не указанных в Desc что является частным случаем НДВ.
2. Если Desc1 - описатель избыточного требования и в результате приведения к безызбыточному виду получается описатель
Desc\ = Q |A/:
а) A1\A2 * 0, но Desc[ = Desc2 фактически означает, что объекты-ограничения, по которым восстановлен описатель Desc2, корректны относительно Desc1; при этом A2 е е A1, так как A' = A2 и A' е A1, т. е. A1\A2 -множество некритичных по отношению к требованию Desc1 операций;
б) A1\A2 * 0 и A/ \A2 * 0 означают ситуацию, аналогичную описанной в п. 1, а;
в) A2\ A1 * 0 (при этом также истинно условие A2\A1' * 0, так как A’ е A1) означает наличие НДВ за счет срабатывания объектов-ограничений в ответ на DML-операции, не включенные в исходный описатель Desc
Таким образом, подтверждение корректности ОЦ и триггеров путем сравнения описателей может быть полным только в том случае, если выявлены критичные и некритичные операции в описателях требований целостности.
3 Приведение описателей требований целостности к безызбыточному виду
Выявление критичных и некритичных операций является допустимым непосред-
2012/2
Proceedings of Petersburg Transport University
Информатика и технологии информатики
115
ственно при верификации объектов-ограничений, на этапе сравнения описателей. Однако более удобным является приведение требований к безызбыточному виду на стадии их формулирования. С точки зрения разработчика БД, удобство заключается в том, что безызбыточность требований позволяет избежать разработки ненужных ОЦ и триггеров: изначально ясно, какие операции являются критичными, т. е. требуют контроля со стороны ОЦ и триггеров. С точки зрения эксперта, проводящего верификацию, заблаговременное устранение избыточности требований предпочтительно, так как позволяет принять единственный критерий корректности ОЦ и триггеров: полную эквивалентность исходных и восстановленных описателей.
Процедура приведения избыточного требования к безызбыточному виду, очевидно, должна выполняться следующим образом:
- избыточное требование представляется в виде описателя вида Q | A;
- определяется подмножество критичных операций A';
- описатель безызбыточного требования записывается в виде Q | A'.
При приведении требования к безызбы-точному виду условие Q не меняется. Множество T таблиц, обрабатываемых критичными операциями, может рассматриваться как дополнительная характеристика безыз-быточного требования.
Заключение
Учет избыточности требований целостности при проведении формальной верификации ОЦ и триггеров реляционных БД способствует получению более достоверной информации о пригодности и корректности реляционных БД относительно требований
целостности, предъявленных заказчиком. Данная информация, в свою очередь, может быть использована для принятия решения о подтверждении соответствия с последующим допуском БД к эксплуатации или доработкой требований целостности и БД.
Библиографический список
1. Анализ методов проверки корректности программ / М. А. Еремеев, М. Л. Глухарев, А. А. Корниенко // Информационные технологии на железнодорожном транспорте : сб. докладов Десятой Международной научно-практической конференции «Инфотранс-2005». - СПб. : Петербургский гос. ун-т путей сообщения, 2005. -
С. 276-280.
2. Верификация защищенных информаци-онно-управляющих систем железнодорожного транспорта на наличие недекларированных возможностей / А. А. Корниенко, М. А. Еремеев, А. Г. Котенко // Информационные технологии на железнодорожном транспорте : сб. докладов Международной научно-практической конференции «Инфотранс-2006» (СПб.; 4-7 окт. 2006 г.). - СПб. : Санкт-Петербургский гос. политехнический университет, 2006. - С. 299303.
3. Применение формальных описателей для логико-алгебраического моделирования требований целостности информации в реляционных базах данных / М. Л. Глухарев // Известия Петербургского университета путей сообщения. -СПб. : Петербургский гос. ун-т путей сообщения, 2010. - Вып. 4 (25). - С. 78-88.
4. Метод формальной верификации ограничений целостности и триггеров реляционных баз данных / М. Л. Глухарёв // Известия Петербургского университета путей сообщения. - СПб. : Петербургский гос. ун-т путей сообщения, 2011. -Вып. 2 (27). - С. 79-87.
ISSN 1815-588Х. Известия ПГУПС
2012/2