Введение
Информационный поток в информационно-теоретическом контексте — это передача информации от одной переменной к другой в заданном процессе. Не все потоки могут быть желательными; например, система не должна допускать утечку какой-либо конфиденциальной информации (полной или частичной) к посторонним наблюдателям, поскольку это является нарушением приватности на индивидуальном уровне или может повлечь за собой значительные убытки на корпоративном уровне.
Введение
Защита данных, обрабатываемых вычислительными системами, оставалась сложной задачей в последние годы. Существует несколько методов ограничения раскрытия информации, таких как списки контроля доступа, межсетевые экраны и криптография. Однако, хотя эти методы и ограничивают объем информации, передаваемой системой, они не гарантируют контроль над распространением информации. Например, списки контроля доступа файловых систем предотвращают несанкционированный доступ к файлам, но не контролируют последующее использование данных. Аналогично, криптография обеспечивает конфиденциальный обмен информацией по незащищенному каналу, но не дает никаких гарантий конфиденциальности данных после их расшифровки. В анализе потоков информации нижнего уровня каждой переменной обычно присваивается уровень безопасности. Базовая модель состоит из двух различных уровней: низкого и высокого, обозначающих, соответственно, общедоступную и конфиденциальную информацию. Для обеспечения конфиденциальности необходимо предотвращать передачу информации от переменных высокого уровня к переменным низкого уровня. С другой стороны, для обеспечения целостности необходимо ограничивать потоки к переменным высокого уровня. Например, при наличии двух уровней безопасности и (низкого и высокого), если , то разрешены потоки от к , от к и от к , а поток от к запрещен. В данной статье используется следующая нотация: переменная (низкий уровень) обозначает общедоступную переменную, а переменная (высокий уровень) – конфиденциальную переменную. При этом и являются единственными двумя уровнями безопасности, рассматриваемыми в данной решетке.
guarantees about the confidentiality of the data are given once it is decrypted. In low level information flow analysis, each variable is usually assigned a security level. The basic model comprises two distinct levels: low and high, meaning, respectively, publicly observable information, and secret information. To ensure confidentiality, flowing information from high to low variables should not be allowed. On the other hand, to ensure integrity, flows to high variables should be restricted. For example, considering two security levels and (low and high), if , flows from to , from to , and to would be allowed, while flows from to would not. Throughout this article, the following notation is used:
variable (low) shall denote a publicly observable variable
variable (high) shall denote a secret variable
Where and are the only two security levels in the lattice being considered.
Невмешательство
Невмешательство — это политика, обеспечивающая невозможность для злоумышленника отличить два вычисления по их результатам, если они различаются только секретными входными данными. Однако эта политика слишком строгая для использования в реальных программах, либо они игнорируют обновления, которые могут привести к утечке информации. Один из основных способов обеспечения соблюдения политик информационного потока в программе — это система типов безопасности, то есть система типов, которая обеспечивает соблюдение свойств безопасности. В такой корректной системе типов, если программа проходит проверку типов, она соответствует политике потоков и, следовательно, не содержит несанкционированных информационных потоков.
Когда
Политика деклассификации регулирует, когда информация может быть раскрыта. Политики такого рода могут использоваться для верификации программ, реализующих, например, контролируемое раскрытие секретной информации после оплаты или зашифрованные секреты, которые не должны быть раскрыты в течение определенного времени при заданных полиномиальных вычислительных возможностях.
Подходы к рассекречиванию для неявных потоков
Неявный поток возникает, когда код, ветвление которого зависит от конфиденциальной информации, изменяет публичную переменную. Это особенно опасно при множественных выполнениях, так как злоумышленник может использовать публичную переменную для вывода конфиденциальной информации, наблюдая за изменением её значения во времени или в зависимости от входных данных.
Разрешительная модернизация
Разрешающее обновление вводит дополнительный класс безопасности P, который будет идентифицировать переменные, приводящие к утечке информации. Когда переменная High влияет на значение переменной Low, последняя помечается как P. Если переменная, помеченная как P, влияет на переменную Low, программа будет остановлена. Чтобы предотвратить остановку, переменные Low и P должны быть преобразованы в High с использованием функции приватизации, чтобы гарантировать отсутствие утечки информации. При последующих обращениях программа будет выполняться без прерываний.
Вывод о приватизации
Приватизационная инференция расширяет возможности разрешающего обновления, чтобы автоматически применять функцию приватизации к любой переменной, которая потенциально может привести к утечке информации. Этот метод следует использовать во время тестирования, где он преобразует большинство переменных. После перехода программы в производственную среду разрешающее обновление следует использовать для остановки программы в случае обнаружения утечки информации, а функции приватизации можно будет обновить для предотвращения последующих утечек.
Применение в компьютерных системах
Помимо применения в области языков программирования, теории управления информационными потоками находят применение в операционных системах, распределенных системах и облачных вычислениях.