войти зарегистрироваться

Персональные блоги Управление информационными потоками

После обсуждения темы «Управление информационными потоками» пришло понимание, что делать с сервисами общения. На первом месте человек, с которым тебе нужен канал общения, а инструмент второстепенен.

Информационная безопасность«Распределенное управление информационными потоками»/«Distributed Information Flow Control»

Недавно по просьбе своего научного руководителя делал компиляцию и обзор для своей группы некоторых актуальных топиков в сфере безопасности ОС и систем в целом: automated trust negotiation (автоматическое «обсуждение» прав доступа — не знаю как правильно перевести) и information flow control (контроль потоков информации). Хотел запостить эту компиляцию, но к своему удивлению нашел, на мой взгляд, необоснованно мало сведений о DIFC (distributed information flow control/распределенном управлении инфромационными потоками) в .RU и поэтому решил написать эту небольшую статью по DIFC.

Мотивация
Практически единственным способом обеспечивать безопасность и приватность данных в системе принято считать аутенификацию (отвечает на вопрос: «Кто это сказал?») и авторизацию («Что он имеет право делать с этими данными»). Т.е. если программе необходим доступ к некоторым данным, мы фактически имеем 2 варианта: отказать или поверить. Если мы не доверяем этой программе, то теряем возможность работать с ней и возможно лишаемся важной функциональности. Если же мы решаем, что доверяем программе (и/или ее разработчикам), то программа фактически становится «полновластным хозяином» этой информации (или копии). Такой принцип в литературе называют All-Or-Nothing — «Все или ничего».

Естественно, что этот принцип недостаточно гибок и кроме того является основной причиной многих уязвимостей в системах, таких как переполнение буфера. В общем случае, этот принцип не позволяет создавать более интересные приложения, где права доступа не ограничиваются традиционными: «no access», «read only» и «read/write». Оказывается, что существуют системы, которые позволяют намного более гибкие разграничения прав доступа к данным — системы с поддержкой управления информационными потоками. Самой главной особенностью этих систем является то, что они следят за данными на всем протяжении их жизненного цикла в системе. Вспомним, что традиционно система ответственна только за начальный доступ к данным, например, проверку имеет ли программа доступ к файлу, а что после этого программа делает с этими данными систему уже не интересует.

Классический пример. Допустим, что в системе есть 2 пользователя Алиса и Боб. Они хотят назначить встречу, но так чтобы не раскрывать слишком много информации о своем расписании недели. Можно ли в многопользовательской системе Linux/Unix/Windows написать программу таким образом, чтобы она имела одновременный доступ к календарям и Алисы, и Боба и гарантировала конфиденциальность обоих пользователей системы?