Nothing Special   »   [go: up one dir, main page]

RU2777302C1 - System and method for controlling the delivery of messages transmitted between processes from different operating systems - Google Patents

System and method for controlling the delivery of messages transmitted between processes from different operating systems Download PDF

Info

Publication number
RU2777302C1
RU2777302C1 RU2021126158A RU2021126158A RU2777302C1 RU 2777302 C1 RU2777302 C1 RU 2777302C1 RU 2021126158 A RU2021126158 A RU 2021126158A RU 2021126158 A RU2021126158 A RU 2021126158A RU 2777302 C1 RU2777302 C1 RU 2777302C1
Authority
RU
Russia
Prior art keywords
security
messages
processes
delivery
policy
Prior art date
Application number
RU2021126158A
Other languages
Russian (ru)
Inventor
Андрей Юрьевич Симановский
Сергей Викторович Рогачев
Станислав Юрьевич Пинчук
Original Assignee
Акционерное общество "Лаборатория Касперского"
Filing date
Publication date
Application filed by Акционерное общество "Лаборатория Касперского" filed Critical Акционерное общество "Лаборатория Касперского"
Priority to US17/835,034 priority Critical patent/US20230074455A1/en
Application granted granted Critical
Publication of RU2777302C1 publication Critical patent/RU2777302C1/en
Priority to EP22189845.5A priority patent/EP4145318A1/en

Links

Images

Abstract

FIELD: computer technology.
SUBSTANCE: invention relates to computer technology. A method for controlling the delivery of interprocess communication messages transmitted between processes from different operating systems is described, in which a proxy process is created in the first OS using the process creation tool, designed to exchange messages between at least the first process from the first OS and the second process in the second OS and having a program interface corresponding to the program interface of the second process, at the same time, the first OS and the second OS are operating systems installed in different computing environments; with the help of the policy assignment tool, at least one security policy is assigned to the created proxy process to control the delivery of messages associated with the proxy process, where messages are transmitted through a specified program interface; with the help of the generated security monitor, the delivery of messages is controlled between at least the first and second processes by controlling the delivery of messages associated with the proxy-process, based on security policies.
EFFECT: increase in the security of operating systems when exchanging interprocess communication messages transmitted between the first and second processes from different operating systems.
22 cl, 11 dwg

Description

Область техникиTechnical field

Изобретение относится к области информационной безопасности.The invention relates to the field of information security.

Уровень техникиState of the art

Современные операционные системы (далее - ОС) представляют собой сложные информационные системы с множеством установленного программного обеспечения (далее - ПО) для выполнения самого разнообразного функционала. При этом разработчики ПО ведут постоянную работу над исправлением ошибок и расширением функционала ПО. Тем не менее, такое количество и разнообразие ПО влечет за собой существенные риски информационной безопасности из-за наличия уязвимостей в ПО, а также из-за возможности несанкционированной установки вредоносного ПО. Первым уровнем защиты против упомянутых угроз являются особенности архитектуры ОС, а также встроенные в ОС средства защиты, потому что именно ОС предоставляет механизмы обработки и контроля межпроцессных взаимодействий (англ. inter-process communication, IPC), которые могут быть реализованы, в частности путем обмена сообщений между процессами.Modern operating systems (hereinafter referred to as OS) are complex information systems with a lot of installed software (hereinafter referred to as software) to perform a wide variety of functions. At the same time, software developers are constantly working on fixing bugs and expanding the functionality of the software. However, such a quantity and variety of software entails significant information security risks due to the presence of vulnerabilities in the software, as well as the possibility of unauthorized installation of malware. The first level of protection against the mentioned threats are the features of the OS architecture, as well as the protection tools built into the OS, because it is the OS that provides the mechanisms for processing and controlling inter-process communication (IPC), which can be implemented, in particular, by exchanging messages between processes.

Во многих популярных ОС (например, Windows 9x, Linux, Android и др.) используют монолитное ядро (англ. monolithic kernel), которое обладает рядом преимуществ, например производительностью, а также простотой взаимодействия драйверов между собой. Но из-за большого количества программных модулей ядра и, как следствие, высокой вероятности ошибок в коде, обеспечение надежности и безопасности ОС с монолитным ядром затруднительно. Таким образом, при наличии уязвимости в ОС, доставка некоторых нежелательных или вредоносных сообщений между процессами может быть разрешена средствами обработки и контроля межпроцессных взаимодействий. Примером такого вредоносного сообщения между процессами является сообщение, содержащее запрос на доступ к защищенному участку памяти. Другим типом ядра ОС является микроядро (например, ядро KasperskyOS, Symbian и др.), предоставляющее минимальный набор элементарных функций управления процессами и абстракций для работы с оборудованием. Для микроядерной (англ. microkernel) архитектуры ОС характерен небольшой размер микроядра и доверенной вычислительной базы. Это способствует более высокому уровню надежности и безопасности микроядерной архитектуры ОС, так как небольшой объем кода микроядра проще проверить на корректность. Но при этом такая архитектура ОС обладает, как правило, более низкой производительностью. Также существуют ОС с гибридными ядрами (англ. hybrid kernel, например, MacOS X, Windows NT и др.), которые позволяют операционной системе использовать преимущества хорошо структурированной микроядерной архитектуры ОС, сохраняя при этом производительность монолитного ядра.Many popular operating systems (for example, Windows 9x, Linux, Android, etc.) use a monolithic kernel, which has a number of advantages, such as performance, as well as ease of interaction between drivers. But due to the large number of kernel software modules and, as a result, the high probability of errors in the code, it is difficult to ensure the reliability and security of an OS with a monolithic kernel. Thus, if there is a vulnerability in the OS, the delivery of some unwanted or malicious messages between processes can be allowed by means of processing and controlling interprocess communications. An example of such a malicious message between processes is a message containing a request to access a protected area of memory. Another type of OS kernel is a microkernel (for example, the kernel of KasperskyOS, Symbian, etc.), which provides a minimal set of elementary process control functions and abstractions for working with hardware. The microkernel (English microkernel) architecture of the OS is characterized by a small size of the microkernel and a trusted computing base. This contributes to a higher level of reliability and security of the microkernel architecture of the OS, since a small amount of microkernel code is easier to check for correctness. But at the same time, such an OS architecture has, as a rule, lower performance. There are also operating systems with hybrid kernels (English hybrid kernel, for example, MacOS X, Windows NT, etc.), which allow the operating system to take advantage of the well-structured microkernel architecture of the OS, while maintaining the performance of a monolithic kernel.

Для операционных систем актуальна задача обеспечения надежности и безопасности межпроцессных взаимодействий, реализованных путем обмена сообщений между процессами. Еще более сложной задачей является обеспечение безопасности межпроцессных взаимодействий между первым и вторым процессами, где второй процесс исполняется в среде, аппаратно или программно изолированной от первой среды исполнения, в которой исполняется первый процесс. Например, второй процесс может исполняться на втором компьютере, связанном с первым компьютером по сети, на виртуальной машине или в других средах выполнения. В этом случае возникает техническая проблема, заключающаяся в сложности осуществления контроля доставки сообщений межпроцессного взаимодействия между процессами из разных ОС на предмет соответствия политике безопасности.For operating systems, the task of ensuring the reliability and security of interprocess communications implemented by exchanging messages between processes is relevant. An even more difficult task is to ensure the security of inter-process communications between the first and second processes, where the second process is executing in an environment that is hardware or software isolated from the first execution environment in which the first process is executing. For example, the second process may run on a second computer connected to the first computer over a network, in a virtual machine, or in other execution environments. In this case, a technical problem arises, which consists in the difficulty of monitoring the delivery of interprocess communication messages between processes from different operating systems for compliance with the security policy.

Из уровня техники известен патент US8336050B2, в котором описан способ межпроцессного взаимодействия между виртуальными машинами с использованием виртуальной синхронизации и общей памяти.From the prior art patent US8336050B2 is known, which describes a method for interprocess communication between virtual machines using virtual synchronization and shared memory.

Тем не менее, известные технологии не позволяют решить заявленную техническую проблему, так как они не позволяют осуществить контроль доставки сообщений межпроцессного взаимодействия между процессами из разных ОС на предмет соответствия политике безопасности. Поэтому возникает необходимость в технологии, способной решить заявленную техническую проблему.However, known technologies do not allow solving the claimed technical problem, since they do not allow controlling the delivery of interprocess communication messages between processes from different OS for compliance with the security policy. Therefore, there is a need for a technology capable of solving the stated technical problem.

Раскрытие сущности изобретенияDisclosure of the essence of the invention

Настоящее изобретение предназначено контроля доставки сообщений, передаваемых между первым и вторым процессами, исполняющимися в разных операционных системах.The present invention is intended to control the delivery of messages passed between the first and second processes running on different operating systems.

Первый технический результат заключается в повышении безопасности ОС при обмене сообщениями межпроцессного взаимодействия, передаваемыми между первым и вторым процессами из разных ОС за счет создания прокси-процесса для отправки и получения сообщений от второго процесса, обладающего программным интерфейсом для прокси-процесса, а также добавления политики безопасности для контроля доставки сообщений, связанных с упомянутым прокси-процессом.The first technical result consists in increasing the security of the OS when exchanging interprocess communication messages transmitted between the first and second processes from different OS by creating a proxy process for sending and receiving messages from the second process, which has a programming interface for the proxy process, as well as adding a policy security to control the delivery of messages associated with said proxy process.

Второй технический результат заключается в повышении контроля доставки сообщений межпроцессного взаимодействия, передаваемых между первым и вторым процессами.The second technical result consists in increasing the control of delivery of interprocess communication messages transmitted between the first and second processes.

В варианте реализации используется способ контроля доставки сообщений межпроцессного взаимодействия (далее - сообщений), передаваемых между процессами из разных операционных систем (ОС), в котором: с помощью средства создания процесса создают прокси-процесс в первой ОС, предназначенный для обмена сообщениями между по меньшей мере первым процессом из первой ОС и вторым процессом во второй ОС и обладающий программным интерфейсом, соответствующим программному интерфейсу второго процесса, при этом первая ОС и вторая ОС — это операционные системы, установленные в разных вычислительных средах; с помощью средства назначения политик назначают по меньшей мере одну политику безопасности созданному прокси-процессу для контроля доставки сообщений, связанных с прокси-процессом, где сообщения передают через заданный программный интерфейс; с помощью сформированного монитора безопасности осуществляют контроль доставки сообщений между по меньшей мере первым и вторым процессами путем контроля доставки сообщений, связанных с прокси-процессом, на основании политик безопасности.In an embodiment, a method is used to control the delivery of interprocess communication messages (hereinafter referred to as messages) transmitted between processes from different operating systems (OS), in which: using the process creation tool, a proxy process is created in the first OS, designed to exchange messages between at least as the first process from the first OS and the second process in the second OS and having a programming interface corresponding to the programming interface of the second process, while the first OS and the second OS are operating systems installed in different computing environments; using the policy assigner, assigning at least one security policy to the created proxy process to control the delivery of messages associated with the proxy process, where the messages are transmitted through a given programming interface; using the generated security monitor, control the delivery of messages between at least the first and second processes by controlling the delivery of messages associated with the proxy process based on security policies.

В одном из частных вариантов реализации контроль доставки сообщения включает по меньшей мере разрешение или запрет доставки сообщения.In one particular implementation, message delivery control includes at least allowing or denying delivery of the message.

В другом частном варианте реализации сообщения включают по меньшей мере одно из: запрос на запуск процесса, запрос и ответ на осуществление межпроцессного взаимодействия, запрос процесса к монитору безопасности.In another particular implementation, the messages include at least one of: a request to start a process, a request and response to interprocess communication, a process request to a security monitor.

В еще одном частном варианте реализации вторая ОС является одной из по меньшей мере следующих: гостевой ОС, работающей на виртуальной машине под управлением первой ОС на компьютере; гостевой ОС, работающей на виртуальной машине, при этом первая ОС является второй гостевой ОС, работающей на второй виртуальной машине и связанной с первой виртуальной машиной посредством гипервизора; второй ОС на втором компьютере, который связан с компьютером, на котором функционирует первая ОС, по сети.In another particular implementation, the second OS is one of at least the following: a guest OS running on a virtual machine running the first OS on the computer; a guest OS running on a virtual machine, wherein the first OS is a second guest OS running on a second virtual machine and associated with the first virtual machine via a hypervisor; a second OS on a second computer that is connected to the computer running the first OS via a network.

В одном из частных вариантов реализации монитор безопасности сформирован для первой ОС с использованием средства формирования.In one particular implementation, the security monitor is generated for the first OS using a generation tool.

В одном из частных вариантов реализации формируют монитор безопасности с учетом особенностей архитектуры первой ОС, в частности с учетом созданного прокси-процесса, а также с учетом назначенных прокси-процессу политик безопасности из базы политик.In one of the private implementation options, a security monitor is formed taking into account the architecture features of the first OS, in particular, taking into account the created proxy process, as well as taking into account the security policies assigned to the proxy process from the policy base.

В другом частном варианте реализации формируют монитор безопасности путем создания кода монитора безопасности, включающего один из: исходный код, промежуточный код, исполняемый код.In another particular implementation, a security monitor is formed by creating a security monitor code that includes one of: source code, intermediate code, executable code.

В одном из частных вариантов реализации при контроле доставки сообщений, монитор безопасности использует программный интерфейс прокси-процесса для определения разрешенных сообщений для прокси-процесса, при этом с помощью средства назначения политик дополнительно задают список разрешенных сообщений в соответствии с программным интерфейсом и назначают политику безопасности, запрещающую доставку сообщений от прокси-процесса в случае, если монитором безопасности была зафиксирована попытка доставки сообщений, отсутствующих в списке разрешенных.In one of the private implementation options when controlling message delivery, the security monitor uses the proxy process API to determine the allowed messages for the proxy process, while using the policy assigner, the list of allowed messages is additionally set in accordance with the API and the security policy is assigned, which prohibits the delivery of messages from the proxy process if the security monitor has detected an attempt to deliver messages that are not in the list of allowed messages.

В другом частном варианте реализации при контроле доставки сообщений, монитор безопасности использует программный интерфейс прокси-процесса для определения перечня процессов, с которыми разрешен обмен сообщениями прокси-процессу, при этом с помощью средства назначения политик дополнительно назначают политику безопасности, запрещающую обмен сообщениями между прокси-процессом и процессами, отсутствующими в перечне процессов, при этом перечень процессов включает по меньшей мере первый процесс.In another particular implementation, when controlling message delivery, the security monitor uses the proxy process API to determine the list of processes with which the proxy process is allowed to exchange messages, while using the policy assigner, an additional security policy is assigned that prohibits the exchange of messages between the proxy process. process and processes not in the process list, wherein the process list includes at least the first process.

В еще одном частном варианте реализации создают прокси-процесс для по меньшей мере двух процессов второй ОС, если между упомянутыми процессами второй ОС присутствует программный интерфейс для обмена сообщениями.In yet another particular implementation, a proxy process is created for at least two second OS processes if there is a messaging API between said second OS processes.

В одном из частных вариантов реализации политики безопасности используют по меньшей мере одну из следующих моделей: базовые операции; конечный автомат; временный автомат; ролевое управление доступом; мандатный контроль целостности; регулярные выражения; дискретные события; мандатные ссылки; темпоральная логика.In one of the private options for implementing security policies use at least one of the following models: basic operations; finite state machine; temporary machine; role-based access control; mandatory integrity control; regular expressions; discrete events; mandate links; temporal logic.

В варианте реализации используется система контроля доставки сообщений, передаваемых между процессами из разных ОС, реализуемая компьютером, включающим память и функционально связанный с памятью по меньшей мере один процессор, выполненный с возможностью осуществлять следующие средства: средство создания процесса, предназначенное для создания прокси-процесса в первой ОС, предназначенного для обмена сообщениями между по меньшей мере первым процессом в первой ОС и вторым процессом во второй ОС и обладающего программным интерфейсом, соответствующим программному интерфейсу второго процесса, при этом первая ОС и вторая ОС - это операционные системы, установленные в разных вычислительных средах; средство назначения политик, предназначенное для назначения по меньшей мере одной политики безопасности созданному прокси-процессу для контроля доставки сообщений, связанных с упомянутым прокси-процессом, где заданный программный интерфейс служит для передачи упомянутых сообщений, при этом упомянутые политики сохраняют в базу политик безопасности, которая хранится в памяти; сформированный монитор безопасности, предназначенный для осуществления контроля доставки сообщений между по меньшей мере первым и вторым процессами путем контроля доставки сообщений, связанных с упомянутым прокси-процессом, на основании политик безопасности из базы политик безопасности.In an embodiment, a system is used to control the delivery of messages transmitted between processes from different OS, implemented by a computer that includes memory and is functionally associated with memory at least one processor, configured to implement the following means: a process creation tool designed to create a proxy process in the first OS, designed for messaging between at least the first process in the first OS and the second process in the second OS and having a programming interface corresponding to the programming interface of the second process, while the first OS and the second OS are operating systems installed in different computing environments ; a policy assigner for assigning at least one security policy to the created proxy process to control the delivery of messages associated with said proxy process, where the given API is used to transmit said messages, said policies being stored in a security policy database, which stored in memory; a generated security monitor for monitoring the delivery of messages between at least the first and second processes by monitoring the delivery of messages associated with said proxy process based on security policies from the security policy database.

В одном из частных вариантов реализации контроль доставки сообщения включает по меньшей мере разрешение или запрет доставки сообщения.In one particular implementation, message delivery control includes at least allowing or denying delivery of the message.

В другом частном варианте реализации сообщения включают по меньшей мере одно из: запрос на запуск процесса, запрос и ответ на осуществление межпроцессного взаимодействия, запрос процесса к монитору безопасности.In another particular implementation, the messages include at least one of: a request to start a process, a request and response to interprocess communication, a process request to a security monitor.

В еще одном частном варианте реализации вторая ОС является одной из по меньшей мере следующих: гостевой ОС, работающей на виртуальной машине под управлением первой ОС на компьютере; гостевой ОС, работающей на виртуальной машине, при этом первая ОС является второй гостевой ОС, работающей на второй виртуальной машине и связанной с первой виртуальной машиной посредством гипервизора; второй ОС на втором компьютере, который связан с компьютером, на котором функционирует первая ОС, по сети.In another particular implementation, the second OS is one of at least the following: a guest OS running on a virtual machine running the first OS on the computer; a guest OS running on a virtual machine, wherein the first OS is a second guest OS running on a second virtual machine and associated with the first virtual machine via a hypervisor; a second OS on a second computer that is connected to the computer running the first OS via a network.

В одном из частных вариантов реализации система дополнительно содержит средство формирования, предназначенное для формирования монитора безопасности в первой ОС.In one of the private implementation options, the system further comprises a generating tool for generating a security monitor in the first OS.

В одном из частных вариантов реализации средство формирование предназначено для формирования монитора безопасности с учетом особенностей архитектуры первой ОС, в частности с учетом созданного прокси-процесса, а также с учетом назначенных прокси-процессу политик безопасности из базы политик.In one of the private implementation options, the generation tool is designed to generate a security monitor taking into account the architecture features of the first OS, in particular, taking into account the created proxy process, as well as taking into account the security policies assigned to the proxy process from the policy base.

В другом частном варианте реализации средство формирование предназначено для формирования монитора безопасности путем создания кода монитора безопасности, включающего один из: исходный код, промежуточный код, исполняемый код.In another particular implementation, the generation tool is designed to generate a security monitor by creating a security monitor code, including one of: source code, intermediate code, executable code.

В одном из частных вариантов реализации при контроле доставки сообщений, монитор безопасности предназначен для использования программного интерфейса прокси-процесса для определения разрешенных сообщений для прокси-процесса, при этом средство назначения политик дополнительно предназначено для задания списка разрешенных сообщений в соответствии с программным интерфейсом и назначения политики безопасности, запрещающей доставку сообщений от прокси-процесса в случае, если монитором безопасности была зафиксирована попытка доставки сообщений, отсутствующих в списке разрешенных.In one particular implementation in message delivery control, the security monitor is designed to use the proxy process API to determine the allowed messages for the proxy process, while the policy assigner is additionally designed to set the list of allowed messages according to the API and assign the policy security that prohibits the delivery of messages from a proxy process if the security monitor has detected an attempt to deliver messages that are not on the allowed list.

В другом частном варианте реализации при контроле доставки сообщений, монитор безопасности предназначен для использования программного интерфейса прокси-процесса для определения перечня процессов, с которыми разрешен обмен сообщениями прокси-процессу, при этом с помощью средства назначения политик дополнительно назначают политику безопасности, запрещающую обмен сообщениями между прокси-процессом и процессами, отсутствующими в перечне процессов, при этом перечень процессов включает по меньшей мере первый процесс.In another particular implementation, when controlling message delivery, the security monitor is designed to use the proxy process API to determine the list of processes with which the proxy process is allowed to exchange messages, while using the policy assigner, an additional security policy is assigned that prohibits the exchange of messages between a proxy process and processes not in the process list, wherein the process list includes at least the first process.

В еще одном частном варианте реализации средство создания процесса предназначено для создания прокси-процесс для по меньшей мере двух процессов второй ОС, если между упомянутыми процессами второй ОС присутствует программный интерфейс для обмена сообщениями.In yet another particular implementation, the process creator is designed to create a proxy process for at least two second OS processes if there is a messaging API between said second OS processes.

В одном из частных вариантов реализации политики безопасности используют по меньшей мере одну из следующих моделей: базовые операции; конечный автомат; временный автомат; ролевое управление доступом; мандатный контроль целостности; регулярные выражения; дискретные события; мандатные ссылки; темпоральная логика.In one of the private options for implementing security policies use at least one of the following models: basic operations; finite state machine; temporary machine; role-based access control; mandatory integrity control; regular expressions; discrete events; mandate links; temporal logic.

Краткое описание чертежейBrief description of the drawings

Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:Additional objects, features and advantages of the present invention will become apparent from reading the following description of an embodiment of the invention with reference to the accompanying drawings, in which:

На Фиг. 1а-1д представлены схемы межпроцессного взаимодействия с использованием монитора безопасности на примере операционной системы с микроядерной архитектурой.On FIG. Figures 1a-1e show diagrams of interprocess communication using a security monitor using an operating system with a microkernel architecture as an example.

На Фиг. 2а представлена система формирования монитора безопасности.On FIG. 2a shows the security monitor generation system.

На Фиг. 2б представлена система контроля доставки сообщений межпроцессного взаимодействия, передаваемых между первым и вторым процессами.On FIG. 2b shows a delivery control system for interprocess communication messages passed between the first and second processes.

На Фиг. 3а представлен вариант реализации настоящего изобретения на примере второй ОС, являющейся гостевой ОС, работающей на виртуальной машине под управлением первой ОС на компьютере.On FIG. 3a shows an embodiment of the present invention using a second OS as a guest OS running on a virtual machine running the first OS on the computer.

На Фиг. 3б представлен пример создания прокси-процессов для виртуальной машины и доменов безопасности гостевой ОС.On FIG. Figure 3b shows an example of creating proxy processes for a virtual machine and guest OS security domains.

На Фиг. 4 представлен способ контроля доставки сообщений, передаваемых между первым и вторым процессами.On FIG. 4 shows a method for controlling the delivery of messages passed between the first and second processes.

Фиг. 5 представляет пример компьютерной системы общего назначения. Fig. 5 represents an example of a general purpose computer system.

Осуществление изобретенияImplementation of the invention

Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако, настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.The objects and features of the present invention, methods for achieving these objects and features will become apparent by reference to exemplary embodiments. However, the present invention is not limited to the exemplary embodiments disclosed below, but may be embodied in various forms. The gist of the description is nothing but specific details provided to assist the person skilled in the art in a thorough understanding of the invention, and the present invention is defined within the scope of the appended claims.

ГлоссарийGlossary

Процесс (англ. process) - последовательность операций при выполнении программы или ее части вместе с используемыми данными, включает один или более потоков (англ. thread) и ассоциированные с ними системные ресурсы.Process (English process) - a sequence of operations when executing a program or part of it, along with the data used, includes one or more threads (English thread) and system resources associated with them.

Межпроцессное взаимодействие (англ. inter-process communication, IPC) - набор способов обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удаленных вызовов.Inter-process communication (IPC) is a set of methods for exchanging data between multiple threads in one or more processes. Processes can run on one or more computers connected by a network. IPC methods are divided into messaging, synchronization, shared memory, and remote call methods.

Операция - элементарное действие, выполняемое в рамках рассматриваемого процесса (в качестве операции может выступать, например, API-функция).An operation is an elementary action performed within the framework of the process under consideration (for example, an API function can act as an operation).

Современные операционные системы при обмене данными между двумя процессами методами межпроцессного взаимодействия используют как синхронные, так и асинхронные операции.Modern operating systems use both synchronous and asynchronous operations when exchanging data between two processes using interprocess communication methods.

Домен безопасности (англ. security domain) — часть автоматизированной системы, которая реализует одни и те же политики безопасности.A security domain is a part of an automated system that implements the same security policies.

Конечный автомат (англ. Finite State Machine, FSM) — модель дискретного устройства, характеризующаяся состояниями и переходами от одного состояния к другому. Каждое состояние конечного автомата характеризует одну из возможных ситуаций, в которой может находиться конечный автомат.Finite State Machine (FSM) is a discrete device model characterized by states and transitions from one state to another. Each state of the finite automaton characterizes one of the possible situations in which the finite automaton can be.

На Фиг. 1а-1в представлены схемы межпроцессного взаимодействия с использованием монитора безопасности 120 на примере ОС 100 с микроядерной архитектурой. Представленная на Фиг. 1а ОС 100 включает изолированные процессы 131-132 приложений ОС 100, которые взаимодействуют между собой за счет межпроцессного взаимодействия, а также с ядром ОС 110 посредством программных интерфейсов путем обмена сообщений 140 (также сообщения межпроцессного взаимодействия, IPC-сообщения, на фигуре обозначены стрелкой, начинающейся с точки). Сообщения 140 включают следующие: запрос на запуск 141 процесса 131, запрос 142 от процесса 131 или ответ 143 от другого процесса 132 (например, вызов процессом 131 метода процесса 132), запрос процесса 132 к монитору безопасности 120 (запрос безопасности 144). Стоит отметить, что под сообщениями 140 в настоящем изобретении понимаются сообщения межпроцессного взаимодействия в общем случае, обеспечивающие возможность взаимодействия между различными процессами ОС 100, в том числе процессами 131-132. Монитор безопасности 120 — компонент ОС 100, предназначенный для осуществления контроля доставки упомянутых сообщений 140. Подробности реализации монитора безопасности 120 будут раскрыты далее по тексту. Также сообщения 140 могут включать уведомление об ошибке от ядра ОС 110 в ответ на сообщения 140 от процессов 131-132. При этом упомянутые интерфейсы, реализуемые процессами, представляют собой структуры данных с объявленными в них методами, реализующими функционал соответствующего процесса.On FIG. 1a-1c are diagrams of inter-process communication using security monitor 120 using an OS 100 with a microkernel architecture as an example. Shown in FIG. 1a , OS 100 includes isolated processes 131 - 132 of OS 100 applications that interact with each other through interprocess communication, as well as with the OS kernel 110 through program interfaces by exchanging messages 140 (also interprocess communication messages, IPC messages, are indicated by an arrow in the figure, starting with a dot). Messages 140 include the following: a request to start 141 a process 131 , a request 142 from a process 131 or a response 143 from another process 132 (for example, process 131 calling a method of process 132 ), a process 132 request to a security monitor 120 (security request 144 ). It is worth noting that messages 140 in the present invention refers to inter-process communication messages in the general case, allowing communication between various OS processes 100 , including processes 131 - 132 . Security monitor 120 is an OS component 100 designed to monitor the delivery of said messages 140 . Details of the implementation of the security monitor 120 will be disclosed later in the text. Also, messages 140 may include an error notification from the OS kernel 110 in response to messages 140 from processes 131-132 . At the same time, the mentioned interfaces implemented by processes are data structures with methods declared in them that implement the functionality of the corresponding process.

Упомянутые интерфейсы статически описаны, а разрешенные взаимодействия между процессами заданы заранее.The interfaces mentioned are statically defined, and the allowed interactions between processes are predetermined.

Отправка и получение сообщений 140 процессами 131-132 происходят посредством системных вызовов ядра ОС 110.The sending and receiving of messages 140 by processes 131 - 132 occur through OS kernel system calls 110 .

Системные вызовы могут включать следующие:System calls may include the following:

• call() — используется процессом 131 для отправки запроса 142 к процессу 132 и получения ответа 143 на осуществление межпроцессного взаимодействия;• call() is used by process 131 to send a request 142 to process 132 and receive a response 143 for interprocess communication;

• recv() — используется процессом 132 для получения запроса 142;• recv() - used by process 132 to receive request 142 ;

• reply() — используется процессом 132 для отправки ответа 143 процессу 131.• reply() is used by process 132 to send a reply 143 to process 131 .

В частном варианте реализации системный вызов reply() производится в том же потоке процесса, в котором происходил вызов recv().In a particular implementation, the reply() system call is made on the same process thread as the recv() call.

Монитор безопасности 120 реализован с возможностью исполнения на процессоре компьютера, на котором установлена ОС 100 (пример компьютера 20 общего назначения представлен на Фиг. 5). С использованием монитора безопасности 120 осуществляют контроль доставки сообщений 140 с учетом решений 150, принятых на основании политик безопасности из базы политик 121. База политик 121 хранится на машиночитаемом носителе компьютера (в памяти), на котором установлена ОС 100, например на диске 27 компьютера 20 (см. Фиг. 5). Контроль доставки сообщения 140 включает разрешение или запрет доставки сообщения 140 и, соответственно, разрешение или запрет выполнения взаимодействия, осуществляющегося с использованием указанного сообщения 140. Решение 150 о способе контроля доставки сообщения 140 указывает на разрешение или запрет передачи сообщения 140 при выполнении политики безопасности. Решение 150 используется монитором безопасности 120 или его компонентами для осуществления упомянутого контроля доставки сообщений 140 (см. Фиг. 2а). На основании политик безопасности из базы политик 121 могут выносить решение 150 с использованием данных сообщения 140 (например, имени запускаемого процесса или фактических аргументов вызываемого метода процесса).The security monitor 120 is implemented to run on the processor of the computer running the OS 100 (an example of a general purpose computer 20 is shown in FIG. 5 ). The security monitor 120 monitors the delivery of messages 140 based on decisions 150 based on the security policies in the policy base 121 . The policy base 121 is stored on the machine-readable medium of the computer (memory) on which the OS 100 is installed, such as on disk 27 of the computer 20 (see FIG. 5 ). The delivery control of the message 140 includes allowing or denying the delivery of the message 140 and, accordingly, allowing or denying the execution of an interaction carried out using the specified message 140 . The decision 150 on how to control the delivery of the message 140 indicates the permission or prohibition of the transmission of the message 140 when the security policy is enforced. Solution 150 is used by security monitor 120 or its components to perform said delivery control of messages 140 (see FIG. 2a ). Based on the security policies from the policy base 121 , a decision 150 can be made using the data of the message 140 (eg, the name of the process being started or the actual arguments of the process method being called).

Также решение 150 о способе контроля доставки сообщения 140 может зависеть от корректности структуры упомянутого сообщения 140. Таким образом, если сообщение 140 имеет недопустимую структуру, передача указанного сообщения 140 может быть запрещена. В этом случае допустимые структуры сообщений 140 могут быть определены с использованием декларативного описания интерфейса процесса-получателя сообщения 140. Упомянутая структура может содержать размер сообщения 140, допустимые аргументы и другие допустимые параметры сообщения 140.Also, the decision 150 on how to control the delivery of the message 140 may depend on the correctness of the structure of said message 140 . Thus, if message 140 has an invalid structure, transmission of said message 140 may be prohibited. In this case, valid message structures 140 can be defined using the declarative description of the interface of the receiving process of message 140 . The referenced structure may contain a message size 140 , valid arguments and other valid message options 140 .

В одном частном варианте реализации монитор безопасности 120 может быть частью ядра ОС 110 или отдельным приложением, исполняющимся на процессоре компьютера. В другом частном варианте реализации монитор безопасности 120 исполняется на процессоре компьютера в привилегированном режиме ядра ОС 110.In one particular implementation, the security monitor 120 may be part of the OS kernel 110 or a separate application running on the computer's processor. In another particular implementation, the security monitor 120 runs on the computer's processor in privileged mode of the OS kernel 110 .

В частном варианте реализации ОС 100 дополнительно включает сервис аудита 133, предназначенный для записи в журнал результатов контроля доставки сообщений 140. При этом контроль доставки сообщения 140 дополнительно включает выполнение аудита с использованием сервиса аудита 133. В еще одном частном варианте реализации монитор безопасности 120 осуществляет контроль доставки сообщений 140 дополнительно с учетом текущего статуса сервиса аудита 133. При этом упомянутый статус указывает на готовность сервиса аудита 133 принимать и сохранять сообщения 140. Например, если процесс 131 выполняет запрос 142 к защищенному ресурсу (через процесс 132), где информация о доступе к защищенному ресурсу всегда должна быть записана в журнал, но при этом статус сервиса аудита 133 указывает на то, что сервис аудита 133 в данный момент не сохраняет сообщения 140, то такой запрос 142 будет запрещен монитором безопасности 120 согласно политике безопасности.In a particular implementation, the OS 100 further includes an audit service 133 for logging the results of message delivery control 140 . At the same time, the control of message delivery 140 additionally includes performing an audit using the audit service 133 . In yet another particular implementation, the security monitor 120 monitors the delivery of messages 140 in addition to the current status of the audit service 133 . This status indicates the readiness of the audit service 133 to receive and store messages 140 . For example, if process 131 makes a request 142 to a protected resource (through process 132 ), where information about access to a protected resource should always be logged, but the status of the audit service 133 indicates that the audit service 133 is not currently saves messages 140 , then such a request 142 will be denied by the security monitor 120 according to the security policy.

В еще одном частном варианте реализации ОС 100 содержит контекст монитора безопасности 122, при этом монитор безопасности 120 осуществляет контроль доставки сообщения 140 дополнительно с учетом упомянутого контекста 122, где контекст 122 содержит значения параметров политик безопасности. В другом частном варианте реализации монитор безопасности 120 дополнительно предназначен для изменения контекста 122 с учетом решений 150 на основании политик безопасности из базы политик 121. В частном варианте реализации политики безопасности используют модель конечного автомата, модель мандатного контроля целостности или другие модели для реализации политик безопасности. Подробнее об упомянутых моделях будет раскрыто далее в описании к Фиг. 2а. В зависимости от используемых политиками безопасности упомянутых моделей контекст 122 может содержать различные параметры политик безопасности. Например, для политик безопасности на основе модели мандатного контроля целостности контекст 122 будет содержать значения уровней целостности и уровней доступа к защищаемым объектам. Для политик безопасности на основе конечного автомата контекст 122 будет содержать текущее значение состояния конечного автомата и таблицу переходов конечного автомата. На Фиг. 1б представлен пример контроля доставки разрешенного запроса 142 от процесса 131 к процессу 132 с использованием монитора безопасности 120. Процесс 131 может вызвать метод интерфейса процесса 132, для этого процесс 131 отправляет запрос 142, содержащий входные аргументы вызываемого метода. Процесс 131 отправляет запрос 142 посредством ядра ОС 110, которое в свою очередь передает запрос 142 на проверку монитору безопасности 120. Монитор безопасности 120 выносит решение 150 «разрешено» на основании политик безопасности и передает указанное решение 150 ядру ОС 110. После этого ядро 110 на основании решения 150 передает запрос 142 далее процессу 132.In yet another particular implementation, OS 100 includes a security monitor context 122 , wherein security monitor 120 monitors the delivery of message 140 further based on said context 122 , where context 122 contains security policy parameter values. In another particular implementation, the security monitor 120 is further configured to change the context 122 based on the decisions 150 based on the security policies from the policy base 121 . In a particular implementation of security policies, a state machine model, a mandatory integrity control model, or other models are used to implement security policies. More details about these models will be discussed later in the description of FIG. 2a . Depending on the security policies used by these models, context 122 may contain various security policy settings. For example, for security policies based on the mandatory integrity control model, context 122 will contain the values of integrity levels and access levels to securable objects. For state machine-based security policies, context 122 will contain the current state machine state value and the state machine transition table. On FIG. 1b shows an example of monitoring the delivery of a permitted request 142 from process 131 to process 132 using security monitor 120 . Process 131 can call a process interface method 132 , for this process 131 sends a request 142 containing the input arguments of the called method. The process 131 sends a request 142 through the OS kernel 110 , which in turn passes the request 142 to the security monitor 120 for verification. The security monitor 120 makes a "allowed" decision 150 based on the security policies and passes that decision 150 to the OS kernel 110 . Thereafter, the kernel 110 passes the request 142 onward to the process 132 based on the decision 150 .

В рассматриваемом примере процесс 132 далее отправляет ответ 143 (обратный порядок следования сообщений 140 не указан) процессу 131, где ответ 143 содержит выходные аргументы вызываемого метода. Способ отправки ответа 143 аналогичен способу отправки запроса 142, но в обратном порядке, от процесса 132 к процессу 131. То есть процесс 132 отправляет ответ 143 посредством ядра ОС 110, которое в свою очередь передает ответ 143 на проверку монитору безопасности 120. Монитор безопасности 120 выносит новое решение 150 «разрешено» на основании политик безопасности и передает указанное новое решение 150 обратно ядру ОС 110. После этого ядро 110 на основании нового решения 150 передает ответ 143 далее процессу 131.In this example, process 132 then sends a response 143 (reverse order of messages 140 not specified) to process 131 , where response 143 contains the output arguments of the method being invoked. The method for sending response 143 is similar to the method for sending request 142 , but in reverse order, from process 132 to process 131 . That is, the process 132 sends a response 143 via the OS kernel 110 , which in turn passes the response 143 to the security monitor 120 for verification. The security monitor 120 makes a new "allowed" decision 150 based on the security policies and passes said new decision 150 back to the OS kernel 110 . Thereafter, the core 110 , based on the new decision 150 , forwards the response 143 to the process 131 .

На Фиг. 1в представлен пример контроля запрещенного запроса 142 от процесса 131 к процессу 132, в котором монитор безопасности 120 осуществляет контроль доставки запроса 142 путем запрета доставки запроса 142. Процесс 131 отправляет запрос 142 посредством ядра ОС 110, которое в свою очередь передает запрос 142 на проверку монитору безопасности 120. Монитор безопасности 120 выносит решение 150 «запрещено» на основании политик безопасности и передает указанное решение 150 ядру ОС 110. После этого ядро 110 на основании решения 150 направляет уведомление об ошибке процессу 131. При этом запрос 142 не будет передан процессу 132.On FIG. 1c shows an example of monitoring a denied request 142 from process 131 to process 132 in which security monitor 120 controls the delivery of request 142 by denying delivery of request 142 . The process 131 sends a request 142 through the OS kernel 110 , which in turn passes the request 142 to the security monitor 120 for verification. The security monitor 120 makes a "forbidden" decision 150 based on the security policies and passes the said decision 150 to the OS kernel 110 . The kernel 110 then sends an error notification to the process 131 based on the decision 150. In this case, the request 142 will not be passed to the process 132 .

На Фиг. 1г представлен пример взаимодействия первого процесса 134, выполняемого в первой ОС 100, со вторым процессом 161, выполняемого во второй ОС 160, посредством канала связи 170, который не контролируется монитором безопасности 120. Для простоты изложения здесь и далее под первой ОС понимается ОС 100 (см. Фиг. 1а). Стоит отметить, что вторая ОС 160 может быть любой ОС, архитектура которой известна из уровня техники, в том числе и операционной системой 100, архитектура которой представлена на Фиг. 1а. Таким образом, первая ОС 100 и вторая ОС 160 могут быть как разными ОС (то есть не обладающими одинаковой архитектурой ОС), так и одинаковыми ОС, а ключевое отличие заключается в том, что первая ОС 100 и вторая ОС 160 установлены в разных вычислительных средах. Так в примерных вариантах реализации первая ОС 100 и вторая ОС 160 могут быть установлены на различных компьютерах, виртуальных машинах или в программно или аппаратно изолированных друг от друга вычислительных средах, которые в свою очередь реализованы с возможностью исполнения на компьютере 20 (см. Фиг. 5). Одним из примеров технологии для изолирования вычислительных сред является технология TrustZone.On theFig. 1g an example of the interaction of the first process is presented134running in the first OS100, with the second process161performed in the second OS160, through a communication channel170, which is not controlled by the security monitor120. For simplicity of presentation, hereinafter, the first OS is the OS100(cm.Fig. 1a). It should be noted that the second OS160 can be any OS whose architecture is known from the prior art, including the operating system100, the architecture of which is shown inFig. 1a. So the first OS100 and second OS160 can be both different OS (that is, not having the same OS architecture) or the same OS, and the key difference is that the first OS100 and second OS160 installed in different computing environments. So in exemplary implementations, the first OS100 and second OS160can be installed on different computers, virtual machines or in software or hardware isolated from each other computing environments, which in turn are implemented with the ability to execute on a computertwenty(cm.Fig. 5). One example of a technology for isolating computing environments is the TrustZone technology.

Таким образом, взаимодействие первого процесса 134 со вторым процессом 161 осуществляется с использованием канала связи 170, например компьютерной сети, транспортного механизма виртуальных машин (например, расширения паравиртуализации VirtIO) и другого канала связи в зависимости от вычислительных сред, на которых установлены первая ОС 100 и вторая ОС 160. Однако, такой способ взаимодействия первого процесса 134 со вторым процессом 161 обладает рядом недостатков, так как доставка сообщений 140, передаваемых между упомянутыми процессами по каналу связи 170, не может быть проконтролирована монитором безопасности 120 на предмет соответствия политике безопасности из базы политик 121. Это влечет за собой снижение безопасности первой ОС 100 при обмене сообщениями 140, передаваемыми между первым 134 и вторым 161 процессами. Таким образом, пример взаимодействия между первым 134 и вторым 161 процессами, представленный на Фиг. 1г не позволяет решить заявленную техническую проблему. В данной связи для решения указанной технической проблемы может быть использовано заявленное изобретение.Thus, the interaction of the first process 134 with the second process 161 is carried out using a communication channel 170 , such as a computer network, a virtual machine transport mechanism (for example, VirtIO paravirtualization extensions) and another communication channel depending on the computing environments on which the first OS 100 is installed and second OS 160 . However, this way of interaction of the first process 134 with the second process 161 has a number of disadvantages, since the delivery of messages 140 transmitted between the mentioned processes over the communication channel 170 cannot be monitored by the security monitor 120 for compliance with the security policy from the policy base 121 . This entails reducing the security of the first OS 100 in the exchange of messages 140 passed between the first 134 and the second 161 processes. Thus, the example of interaction between the first 134 and the second 161 processes shown in FIG. 1d does not solve the stated technical problem. In this regard, the claimed invention can be used to solve this technical problem.

На Фиг. 1д представлен пример безопасного взаимодействия первого процесса 134 в первой ОС 100 со вторым процессом 161 во второй ОС 160 согласно заявленному изобретению. Стоит отметить, что в общем случае второй процесс 161 может взаимодействовать с несколькими процессами в первой ОС 100, один из которых представлен на фигуре как первый процесс 134. Однако для простоты изложения далее будет рассмотрен только первый процесс 134, взаимодействующий со вторым процессом 161. Как и в предыдущем примере, представленном на Фиг. 1г, первая ОС 100 связана со второй ОС 160 посредством канала связи 170, который не контролируется монитором безопасности 120. Вторая ОС 160 может быть любой ОС, архитектура которой известна из уровня техники, в том числе и операционной системой 100, архитектура которой представлена на Фиг. 1а. Первая ОС 100 и вторая ОС 160 могут быть установлены на различных компьютерах, виртуальных машинах или в программно или аппаратно изолированных друг от друга вычислительных средах, которые в свою очередь реализованы с возможностью исполнения на компьютере 20 (см. Фиг. 5). Однако второй процесс 161 взаимодействует с первым процессом 134 не напрямую, а посредством заранее созданного прокси-процесса 135. При этом прокси-процесс 135 представлен в первой ОС 100 (но не представлен во второй ОС 160), предназначен для обмена сообщениями 140 со вторым процессом 161 по каналу связи 170 и обладает программным интерфейсом, соответствующим программному интерфейсу второго процесса 161. В частном варианте реализации при контроле доставки сообщений 140 монитор безопасности 120 использует программный интерфейс прокси-процесса 135 для определения разрешенных сообщений 140 для прокси-процесса 135. При этом в базе политик 121 заранее определена по меньшей мере одна политика безопасности, запрещающая доставку сообщений 140 от прокси-процесса 135 в случае, если монитором безопасности 120 была зафиксирована попытка доставки сообщений 140, отсутствующих в списке разрешенных. При этом список разрешенных сообщений 140 и соответствующие политики безопасности заранее задают с помощью средства назначения политик 290 при формировании монитора безопасности 120 (см. Фиг. 2а-2б). Таким образом, первый процесс 134 взаимодействует с прокси-процессом 135 посредством отправки сообщений 140 межпроцессного взаимодействия и под контролем монитора безопасности 120, в то время как прокси-процесс 135 связан со вторым процессом 161 по каналу связи 170, при этом монитор безопасности 120 не контролирует канал связи 170.On FIG. 1e shows an example of a secure interaction of the first process 134 in the first OS 100 with the second process 161 in the second OS 160 according to the claimed invention. It is worth noting that, in general, the second process 161 may interact with multiple processes in the first OS 100 , one of which is represented in the figure as the first process 134 . However, for simplicity, only the first process 134 interacting with the second process 161 will be discussed below. As in the previous example shown in Fig. 1d , the first OS 100 is connected to the second OS 160 via a link 170 that is not controlled by the security monitor 120 . The second OS 160 may be any OS whose architecture is known in the art, including operating system 100 as shown in FIG. 1a . The first OS 100 and the second OS 160 may be installed on different computers, virtual machines, or in software or hardware isolated computing environments from each other, which in turn are implemented to run on the computer 20 (see FIG. 5 ). However, the second process 161 interacts with the first process 134 not directly, but through a pre-created proxy process 135 . At the same time, the proxy process 135 is present in the first OS 100 (but is not present in the second OS 160 ), is designed to exchange messages 140 with the second process 161 over the communication channel 170 and has a program interface corresponding to the program interface of the second process 161 . In a particular implementation, when monitoring the delivery of messages 140 , the security monitor 120 uses the proxy process 135 API to determine allowed messages 140 for the proxy process 135 . At the same time, at least one security policy is predefined in the policy base 121 , which prohibits the delivery of messages 140 from the proxy process 135 if the security monitor 120 detected an attempt to deliver messages 140 that are not on the allowed list. At the same time, the list of allowed messages 140 and the corresponding security policies are predetermined by the policy assigner 290 when generating the security monitor 120 (see Fig. 2a-2b ). Thus, the first process 134 communicates with the proxy process 135 by sending inter-process communication messages 140 and under the control of the security monitor 120 , while the proxy process 135 communicates with the second process 161 over a communication channel 170 , while the security monitor 120 does not control communication channel 170 .

В предпочтительном варианте реализации во второй ОС 160 каждому второму процессу соответствует свой отдельный прокси процесс. Например, второму процессу 161 соответствует прокси-процесс 135, а третьему процессу 162 соответствует второй прокси-процесс (на фигуре не указан), отличный от прокси-процесса 135. Кроме того, в предпочтительном варианте реализации процессы 161 и 162 не связаны между собой.In the preferred embodiment, in the second OS 160 , each second process has its own separate proxy process. For example, the second process 161 corresponds to the proxy process 135 , and the third process 162 corresponds to a second proxy process (not shown in the figure) other than the proxy process 135 . In addition, in the preferred embodiment, processes 161 and 162 are unrelated.

При этом в частном варианте реализации во второй ОС 160 второй процесс 161 может быть связан с третьим процессом 162 посредством программного интерфейса для обмена сообщениями 140. В этом примере может использоваться один прокси-процесс 135, единый для обоих упомянутых процессов 161-162. Таким образом, процессы 161-162 образуют единый домен безопасности, взаимодействие с которым происходит посредством одного прокси-процесса 135, что также позволяет контролировать взаимодействие между вторым 161 и третьим 162 процессами второй ОС 160. Стоит отметить, что упомянутый домен безопасности, включающий процессы 161-162, может также включать и большее количество процессов второй ОС 160, не представленных на фигуре. В ином случае, когда во второй ОС 160 могут быть выделены несколько различных доменов безопасности, каждый из которых включает по меньшей мере один второй процесс, то для каждого упомянутого домена безопасности будет определен отдельный прокси-процесс в первой ОС 100.However, in a private implementation in the second OS 160 , the second process 161 may be associated with the third process 162 via a messaging API 140 . In this example, one proxy process 135 can be used, which is the same for both mentioned processes 161 - 162 . Thus, the processes 161 - 162 form a single security domain, interaction with which occurs through a single proxy process 135 , which also allows you to control the interaction between the second 161 and third 162 processes of the second OS 160 . It is worth noting that said security domain including processes 161-162 may also include more second OS 160 processes not shown in the figure. Otherwise, when several different security domains can be allocated in the second OS 160 , each of which includes at least one second process, then a separate proxy process in the first OS 100 will be defined for each said security domain.

Использование представленной системы взаимодействия первого 134 и второго 161 процессов позволяет решить указанную техническую проблему и достичь заявленных технических результатов, а именно повысить безопасность ОС при обмене сообщениями 140 межпроцессного взаимодействия, передаваемыми между первым 134 и вторым 161 процессами из разных ОС за счет создания прокси-процесса 135 для отправки и получения сообщений 140 от второго процесса 161, обладающего программным интерфейсом для прокси-процесса 135, а также добавления политики безопасности для контроля доставки сообщений 140, связанных с упомянутым прокси-процессом 135, а также повысить контроль доставки сообщений 140 межпроцессного взаимодействия, передаваемых между первым 134 и вторым 161 процессами. Подробнее о вариантах реализации настоящего изобретения, в частности о создании прокси-процесса 135 и назначении политик безопасности созданному прокси-процессу 135 будет описано далее.The use of the presented system of interaction between the first 134 and second 161 processes allows solving the specified technical problem and achieving the stated technical results, namely, increasing the security of the OS when exchanging interprocess communication messages 140 transmitted between the first 134 and second 161 processes from different OS by creating a proxy process 135 to send and receive messages 140 from a second process 161 having an API for the proxy process 135 , as well as adding a security policy to control the delivery of messages 140 associated with said proxy process 135 , as well as to increase control of the delivery of messages 140 of inter-process communication, transmitted between the first 134 and second 161 processes. More details about the embodiments of the present invention, in particular about creating a proxy process 135 and assigning security policies to the created proxy process 135 will be described below.

На Фиг. 2а представлена система формирования монитора безопасности 200. Система формирования монитора безопасности 200 используется для повышения безопасности ОС 100 при обмене сообщениями 140, а также для обеспечения контроля доставки упомянутых сообщений 140 получателям. При этом монитор безопасности 120 может быть использован разработчиками ПО в различных операционных системах 100, а также в любых других компьютерных системах, в которых осуществляется обмен сообщениями 140, в частности в базах данных и в прикладном ПО. Пример такого использования был приведен ранее на Фиг. 1а-1в. Для каждой ОС 100 формируют монитор безопасности 120 с учетом особенностей архитектуры ОС 240, а также с учетом требований безопасности для данной ОС 100, которые выражаются в политиках безопасности. Стоит отметить, что для различных программных и программно-аппаратных систем разработчика на базе ОС 100 (далее — система разработчика) основные объекты архитектуры ОС 240 могут быть общими, например процессы, службы, приложения, драйверы, отвечающие за работу ядра ОС 110 и других компонентов ОС 260. В то же время другие объекты архитектуры ОС 240, отвечающие за функциональность системы разработчика, будут различными для каждой из упомянутых систем. Следовательно, будут различаться и политики безопасности, с использованием которых осуществляется контроль доставки сообщений 140. Системы разработчика могут включать программное обеспечение, а также программно-аппаратные комплексы.On FIG. 2a shows the security monitor generation system 200 . The security monitor generation system 200 is used to improve the security of the OS 100 when exchanging messages 140 , as well as to control the delivery of said messages 140 to recipients. Thus, the security monitor 120 can be used by software developers in various operating systems 100 , as well as in any other computer systems in which messages 140 are exchanged, in particular in databases and in application software. An example of such use has been shown previously in FIG. 1a-1c . For each OS 100 , a security monitor 120 is formed, taking into account the OS 240 architecture, as well as the security requirements for this OS 100 , which are expressed in security policies. It should be noted that for various software and hardware-software systems of the developer based on OS 100 (hereinafter referred to as the developer's system), the main objects of the OS 240 architecture can be common, for example, processes, services, applications, drivers responsible for the operation of the OS 110 kernel and other components OS 260 . At the same time, other objects of the OS architecture 240 responsible for the functionality of the developer's system will be different for each of these systems. Consequently, the security policies used to control the delivery of messages 140 will also differ. The developer's systems may include software, as well as software and hardware systems.

Система 200 содержит базу политик 121, предназначенную для хранения политик безопасности, необходимых для контроля доставки сообщений 140. Система 200 также содержит по меньшей мере одно средство настройки 220, которое предназначено для настройки соответствующего ему модуля проверки 221 на основании политик безопасности, полученных от средства формирования 210. Модуль проверки 221 предназначен для вынесения решения 150 о способе контроля доставки сообщения 140 (далее — решение) по запросу монитора безопасности 120 при выполнении политики безопасности. Система 200 также содержит описание архитектуры ОС 240, которое в свою очередь включает такие объекты архитектуры ОС, как процессы и приложения ОС 100. В частном варианте реализации упомянутые объекты архитектуры ОС дополнительно включают объекты системы разработчика на базе ОС 100. В еще одном частном варианте реализации объекты архитектуры ОС дополнительно включают:The system 200 includes a policy base 121 for storing the security policies needed to control the delivery of messages 140 . System 200 also includes at least one configuration tool 220 , which is configured to configure its corresponding checker 221 based on the security policies received from generator 210 . The verification module 221 is designed to make a decision 150 on how to control the delivery of the message 140 (hereinafter referred to as the decision) at the request of the security monitor 120 when executing the security policy. System 200 also contains an architecture description of OS 240 , which in turn includes OS architecture objects such as OS 100 processes and applications. In a particular implementation, said OS architecture objects further include OS 100 developer system objects. In yet another particular implementation, OS architecture objects further include:

• предоставляющий сервис процесс, который включает по меньшей мере один программный компонент, предназначенный для реализации программного интерфейса упомянутого процесса, при этом взаимодействие с упомянутым процессом происходит посредством упомянутого интерфейса (например, таким сервисом может быть приложение, транслирующее поток внешних событий и запросы для процесса обработки событий);• a service-providing process that includes at least one software component designed to implement the programming interface of said process, while interaction with said process occurs through said interface (for example, such a service can be an application that broadcasts a stream of external events and requests for the processing process events);

• перечень программных интерфейсов для каждого процесса, при этом могут быть указаны соответствующие методы интерфейсов, реализующие функционал соответствующего процесса.• a list of programming interfaces for each process, while the corresponding methods of the interfaces that implement the functionality of the corresponding process can be specified.

В еще одном частном варианте реализации объектом архитектуры ОС дополнительно является драйвер ресурсов — процесс, управляющий ресурсами и доступом к ним. Ресурсом является, в частности, файл, порт или процесс. Например, файловая система является драйвером ресурсов, а сами файлы — ресурсами, к которым файловая система может предоставить доступ другим процессам.In another particular implementation, the object of the OS architecture is additionally a resource driver - a process that manages resources and access to them. A resource is, in particular, a file, a port, or a process. For example, the file system is a resource driver, and the files themselves are resources that the file system can provide access to other processes.

Кроме того, система 200 содержит средство формирования 210, предназначенное для анализа политик безопасности, где анализ заключается, в частности, в определении процессов, для которых используется упомянутая политика безопасности. В частном варианте реализации при упомянутом анализе учитывают объекты архитектуры ОС 240, включающие упомянутые процессы и приложения. Средство формирования 210 также предназначено для выбора политик безопасности из базы политик 121 для соответствующих средств настройки 220 и для передачи по меньшей мере одной выбранной политики безопасности соответствующему средству настройки 220. Средство формирования 210 также предназначено для формирования монитора безопасности 120 с использованием настроенных модулей проверки 221, полученных от каждого средства настройки 220 на основании результатов анализа. В частном варианте реализации средство формирования 210 формирует монитор безопасности 120 путем создания кода монитора безопасности 120. При этом упомянутый код может быть исходным кодом, промежуточным кодом или исполняемым кодом. Кроме того, формирование кода монитора безопасности 120 также может включать оптимизацию кода и анализ кода на наличие ошибок. Таким образом, средство формирования 210 может быть компилятором, формирующим упомянутый код.In addition, the system 200 includes a generator 210 intended for the analysis of security policies, where the analysis consists, in particular, in determining the processes for which said security policy is used. In a particular implementation, this analysis takes into account OS architecture objects 240 that include the processes and applications mentioned. Creator 210 is also operative to select security policies from policy base 121 for respective customizers 220 and to pass at least one selected security policy to the respective customizer 220 . The builder 210 is also configured to build the security monitor 120 using the customized checkers 221 received from each builder 220 based on the results of the analysis. In a particular implementation, generator 210 generates security monitor 120 by generating code for security monitor 120 . Here, said code may be source code, intermediate code, or executable code. In addition, code generation of the security monitor 120 may also include code optimization and code analysis for errors. Thus, generator 210 may be a compiler that generates said code.

Архитектура ОС 240, база политик 121, а также средства настройки 220 могут быть настроены заранее с использованием средства разработки 250. Для этого средство разработки 250 может предоставлять набор API (англ. application programming interface — программный интерфейс приложения) или готовые модули для разработки ПО. При этом под интерфейсом далее понимается интерфейс процессов, описанный ранее, а для программного интерфейса приложения будет использовано сокращение API. В частном варианте реализации по меньшей мере часть архитектуры ОС 240, часть политик безопасности из базы политик 121, а также часть средств настройки 220 могут быть общими (шаблонными) для различных ОС 100. В этом случае разработчик с использованием средств разработки 250 может настроить средства настройки 220, архитектуру ОС 240 и политики безопасности из базы политик 121 путем добавления в упомянутый шаблон отсутствующих в шаблоне политик безопасности, в архитектуре ОС 240, а также средств настройки 220, необходимых для отражения особенностей ОС 100, или системы разработчика на базе ОС 100, и требований безопасности к ОС 100 или соответственно к системе разработчика на базе ОС 100, для которой упомянутый разработчик формирует монитор безопасности 120. Кроме того, часть данных из упомянутого шаблона может быть удалена, если она будет не нужна в ОС 100 или соответственно в системе разработчика на базе ОС 100. Например, могут быть удалены некоторые политики безопасности и приложения.The OS architecture 240 , the policy base 121 , as well as the configuration tools 220 may be configured in advance using the development tool 250 . To do this, the development tool 250 may provide a set of APIs (application programming interface) or ready-made modules for software development. In this case, the interface is further understood as the interface of the processes described earlier, and the abbreviation API will be used for the application programming interface. In a private implementation, at least part of the architecture of the OS 240 , part of the security policies from the policy base 121 , and part of the configuration tools 220 can be common (template) for different OS 100 . In this case, the developer using the development tools 250 can configure the configuration tools 220 , the OS architecture 240 and the security policies from the policy base 121 by adding to the said template the security policies missing in the template, in the OS architecture 240 , as well as the customization tools 220 necessary to reflect features of OS 100 , or OS 100 - based developer 's system , and security requirements for OS 100 , or OS 100 - based developer 's system , for which said developer generates security monitor 120 . In addition, part of the data from the above template can be removed if it is not needed in the OS 100 or, respectively, in the developer's system based on OS 100 . For example, some security policies and applications may be removed.

Сформированный монитор безопасности 120 вместе с другими компонентами ОС 260 далее включают в операционную систему 100. При этом упомянутое включение монитора безопасности 120 и компонентов ОС 260 может быть осуществлено известными из уровня техники способами, например на этапе компиляции ОС 100 с использованием компилятора ОС 100 или путем установки монитора безопасности 120 в ОС 100. Как упоминалось ранее, монитор безопасности 120 может быть частью ядра ОС 110 или отдельным приложением ОС 100. Монитор безопасности 120 исполняется в привилегированном режиме ядра ОС 110. Для ОС 100 также может быть создан установочный образ ОС 270, необходимый для установки ОС 100 на компьютерные устройства конечных пользователей. Установочный образ ОС 270 может быть, например архивом, исполняемым файлом или установочным пакетом. Установочный пакет представляет собой файл архива, в который входят файлы ОС 100, управляющие файлы и опционально файлы для настройки процесса установки ОС 110. Кроме того, в установочный пакет могут входить файлы системы разработчика на базе ОС 100. Упомянутые файлы могут быть представлены в исходном коде, в промежуточном коде или в исполняемом коде.The generated security monitor 120 , along with other components of the OS 260 , is further included in the operating system 100 . This inclusion of the security monitor 120 and components of the OS 260 can be carried out by methods known from the prior art, for example, at the stage of compiling the OS 100 using the OS 100 compiler or by installing the security monitor 120 in the OS 100 . As previously mentioned, security monitor 120 may be part of the OS kernel 110 or a separate OS 100 application. The security monitor 120 runs in privileged OS kernel mode 110 . An OS 270 installation image may also be created for OS 100 to install OS 100 on end user computing devices. The OS installation image 270 may be, for example, an archive, an executable file, or an installation package. The installation package is an archive file that includes OS 100 files, control files, and optional files for customizing the OS 110 installation process. In addition, the installation package may include developer system files based on OS 100 . The mentioned files may be present in source code, in intermediate code, or in executable code.

Описание политик безопасностиDescription of security policies

В частном варианте реализации политики безопасности используют по меньшей мере одну из следующих моделей:In a particular implementation of the security policy, at least one of the following models is used:

базовые операции;basic operations;

конечный автомат;finite state machine;

временной автомат;temporary machine;

ролевое управление доступом;role-based access control;

мандатный контроль целостности;mandatory integrity control;

регулярные выражения;regular expressions;

дискретные события (англ. Discrete Event Systems, DES);discrete events (English Discrete Event Systems, DES);

мандатные ссылки;mandate links;

темпоральная логика (временнáя логика; англ. temporal logic).temporal logic (temporal logic; English temporal logic).

Политики безопасности из базы политик 121 могут быть заданы с использованием языка спецификации, например PSL (англ. policy specification language). На примере PSL мандатный контроль целостности задан классом политик Mandatory_integrity_control. Класс (семейство) политик безопасности определяет множество правил, соответствующих правилам модели, используемой в политике безопасности. Спецификация политики безопасности определяет соответствие упомянутых правил и взаимодействий в системе, которые могут быть реализованы путем обмена сообщений 140 между процессами. При каждой попытке взаимодействия, то есть при проверке монитором безопасности 120 сообщений 140, монитор безопасности 120 исполняет правила для определения решения о допустимости указанного взаимодействия (доставки сообщения 140). Для использования класса политик на его основе создают объект политики, для которого указывают конфигурацию.Security policies from the policy base 121 can be defined using a specification language such as PSL (policy specification language). In the PSL example, the mandatory integrity control is defined by the policy class Mandatory_integrity_control. A class (family) of security policies defines a set of rules that correspond to the rules of the model used in the security policy. The specification of the security policy defines the correspondence of these rules and interactions in the system, which can be implemented by the exchange of messages 140 between processes. On each interaction attempt, that is, when the security monitor 120 checks the messages 140 , the security monitor 120 executes the rules to determine whether the specified interaction is acceptable (delivery of the message 140 ). To use a policy class, a policy object is created based on it, for which the configuration is specified.

В частном варианте реализации анализ политик безопасности и объектов архитектуры ОС 240 включает по меньшей мере один из следующих видов анализа: лексический анализ, синтаксический анализ, семантический анализ. В результате указанного анализа политик безопасности определяют объекты архитектуры ОС 240, в частности, процессы, участвующие в обмене сообщений 140, для которых применяется упомянутая политика безопасности. То есть будет определено соответствие между определенными объектами архитектуры ОС 240 и политикой безопасности, применяемой для указанных объектов. Например, если политика безопасности разрешает запрос 142 от процесса 131 к процессу 132, то в результате анализа этой политики безопасности будут определены указанные процессы 131-132 и информация о разрешенном запросе 142. Стоит отметить, что в результате указанного анализа политик безопасности могут дополнительно определить и другие объекты архитектуры ОС 240, которые проверяют в указанной политике безопасности, например, методы интерфейсов процесса, когда сообщение 140 адресовано указанному методу и будет передано по указанному интерфейсу процесса. В этом случае политики безопасности будут проверять условие, что при обмене сообщениями 140 между определенными процессами используются заданные интерфейсы процессов и заданные методы интерфейсов.In a particular implementation, the analysis of security policies and architecture objects of OS 240 includes at least one of the following types of analysis: lexical analysis, parsing, semantic analysis. As a result of this analysis of security policies, objects of the OS architecture 240 are determined, in particular, the processes involved in the exchange of messages 140 for which the said security policy is applied. That is, a correspondence will be determined between certain objects of the OS 240 architecture and the security policy applied to said objects. For example, if a security policy allows a request 142 from process 131 to process 132 , then the analysis of this security policy will determine the specified processes 131 - 132 and information about the allowed request 142 . It is worth noting that as a result of this analysis of security policies, other objects of the OS architecture 240 can additionally be determined, which check in the specified security policy, for example, methods of the process interfaces, when the message 140 is addressed to the specified method and will be transmitted over the specified process interface. In this case, the security policies will check the condition that the exchange of messages 140 between certain processes uses the specified process interfaces and specified methods of the interfaces.

На примере языка PSL, с использованием которого могут быть заданы политики безопасности в базе политик 121, указание на процесс 131, являющийся источником запроса 142, может содержаться в переменной scr. Указание на процесс 132, являющийся получателем запроса 142 может содержаться в переменной dst. Соответственно, именно упомянутый анализ политики безопасности, написанной на языке PSL, позволит определить указанные объекты архитектуры ОС, для которых будет применяться указанная политика безопасности.Using the example of PSL, which can be used to set security policies in the policy base 121 , the process 131 that is the source of the request 142 can be referenced in the scr variable. An indication of the process 132 that is the recipient of the request 142 may be contained in the variable dst. Accordingly, it is the mentioned analysis of the security policy written in the PSL language that will make it possible to determine the specified objects of the OS architecture for which the specified security policy will be applied.

В другом частном варианте реализации анализ политик безопасности также включает проверку типов объектов архитектуры ОС 240, а также анализ на ошибки в политиках безопасности.In another particular implementation, the analysis of security policies also includes checking the types of OS architecture objects 240 , as well as analyzing for errors in security policies.

Результаты упомянутого анализа учитываются при формировании монитора безопасности 120. Например, в мониторе безопасности 120 могут быть записаны условия применения политик безопасности — перечень объектов архитектуры ОС 240, в частности, процессов, и соответствующие указанному перечню политики безопасности, а также модули проверки 221. Поэтому при получении от ядра ОС 110 сообщения 140 сформированный монитор безопасности 120 определяет объекты архитектуры ОС 240, участвующие в обмене сообщением 140, после чего определяет политики безопасности, применимые к указанным объектам архитектуры ОС 240. После чего монитор безопасности 120 передает сообщения 140 модулям проверки 221, соответствующим указанным политикам безопасности, для вынесения решения о способе контроля доставки сообщения 140.The results of said analysis are taken into account in the formation of the security monitor 120 . For example, in the security monitor 120 , the conditions for applying security policies can be recorded - a list of OS architecture objects 240 , in particular, processes, and corresponding to the specified list of security policies, as well as check modules 221 . Therefore, when message 140 is received from the OS kernel 110 , the generated security monitor 120 determines the OS architecture objects 240 participating in the message exchange 140 and then determines the security policies applicable to said OS architecture objects 240 . The security monitor 120 then passes the messages 140 to the validators 221 corresponding to the specified security policies to decide how to control the delivery of the message 140 .

В еще одном частном варианте реализации выполняют синтаксический анализ путем построения синтаксического дерева для кода монитора безопасности 120, при этом включают в синтаксическое дерево код модулей проверки 221, сформированных по меньшей мере одним средством настройки 220.In yet another particular implementation, parsing is performed by constructing a parse tree for the code of the security monitor 120 , wherein the code of the checkers 221 generated by at least one customizer 220 is included in the parse tree.

Политики безопасности могут использовать базовые операции, разрешающие или запрещающие передачу сообщения 140 при условии совпадения параметров сообщения 140 (например, имя запускаемого процесса или фактические аргументы вызываемого метода) с данными, указанными в политике безопасности. Например, политика безопасности может определить, что процесс 131 может получать любые сообщения 140, но при этом процессу 131 запрещено отправлять сообщения 140.Security policies can use basic operations that allow or deny transmission of message 140 , provided that the parameters of message 140 (for example, the name of the process to be started or the actual arguments of the method being called) match the data specified in the security policy. For example, a security policy may specify that process 131 may receive any messages 140 , but that process 131 is prohibited from sending messages 140 .

Политики безопасности также могут использовать конечный автомат, где политика безопасности определяет разрешение или запрет доставки сообщения 140 в зависимости от состояния конечного автомата и в соответствии с таблицей переходов состояний конечного автомата.Security policies may also use a state machine, where the security policy determines whether message 140 is allowed or denied delivery depending on the state of the state machine and according to the state machine's state transition table.

Модель временных автоматов (англ. Timed automata), и в частности временной автомат типа ERA (англ. Event-recording automata), является частным случаем конечных автоматов. В данной модели дополнительно для каждого сообщения 140 задают параметр времени (таймер), равный времени с момента последнего получения этого сообщения 140. Например, переход из одного состояния конечного автомата в другое состояние может быть осуществлен, если сообщение 140 было получено спустя время, определенное таймером.The Timed automata model, and in particular the ERA (Event-recording automata) type time machine, is a special case of finite automata. In this model, in addition, for each message 140 , a time parameter (timer) is set equal to the time since the last receipt of this message 140 . For example, a transition from one state of the state machine to another state can be performed if the message 140 was received after the time specified by the timer.

Модель мандатного контроля целостности (англ. Mandatory integrity control) используется для разрешения или запрета доставки сообщения 140. Согласно модели мандатного контроля целостности с использованием монитора безопасности 120 объектам архитектуры ОС 240, участвующим в передаче сообщения 140, например процессам 131-132, ставят в соответствие два числа, называемые уровнем целостности (англ. Integrity level) и уровнем доступа. При этом для разрешения доставки сообщения 140 от одного объекта к другому используются политики безопасности на основе мандатного контроля целостности, то есть использующие значения уровней целостности и уровней доступа объектов. Например, может быть использована политика безопасности, согласно которой одному объекту разрешено обращаться к другому объекту, если значение уровня доступа первого объекта не ниже значения уровня целостности другого. На языке спецификаций PSL для модели мандатного контроля целостности задают уровни целостности и уровни доступа. Таким образом, для задания уровней целостности определяют объект политик integrity, являющийся экземпляром класса Mandatory_integrity_control:The Mandatory integrity control model is used to allow or deny message delivery 140 . According to the model of mandatory integrity control using a security monitor, 120 OS architecture objects 240 participating in message transmission 140 , for example, processes 131 - 132 , are assigned two numbers, called the Integrity level and the access level. At the same time, to allow the delivery of message 140 from one object to another, security policies are used based on mandatory integrity control, that is, using the values of integrity levels and access levels of objects. For example, a security policy may be used, according to which one object is allowed to access another object if the value of the access level of the first object is not lower than the value of the integrity level of the other. In the PSL specification language, integrity levels and access levels are specified for the mandatory integrity control model. Thus, to set integrity levels, an integrity policy object is defined, which is an instance of the Mandatory_integrity_control class:

Figure 00000001
Figure 00000001

В конфигурации объекта политик integrity будут заданы три уровня целостности: LOW (низкий), MEDIUM (средний) и HIGH (высокий) — в порядке возрастания. То есть LOW < MEDIUM < HIGH.In the integrity policy object configuration, three levels of integrity will be set: LOW (low), MEDIUM (medium) and HIGH (high) - in ascending order. That is, LOW < MEDIUM < HIGH.

В основе политик на основе мандатных ссылок (англ. object capability model) лежит принцип минимальных привилегий. Этот принцип организации доступа к ресурсам подразумевает предоставление субъекту (процессу или пользователю) только тех привилегий, которые являются абсолютно необходимыми для успешного выполнения задачи. Например, пользователю, который хочет ознакомиться с содержимым файла, должны быть выданы только права на чтение этого файла и только на период использования этого файла.The object capability model is based on the principle of least privilege. This principle of organizing access to resources implies granting to the subject (process or user) only those privileges that are absolutely necessary for the successful completion of the task. For example, a user who wants to view the contents of a file should only be granted read access to the file, and only for the duration of the file's use.

Для задания политик безопасности на основе темпоральной логики формулируют свойства (требования) безопасности с помощью формулы темпоральной логики и с использованием темпоральных операторов. С использованием монитора безопасности 120 объектам архитектуры ОС 240, участвующим в передаче сообщения 140, например процессам 131-132, ставят в соответствие события их состояния из заранее определенного множества событий.To set security policies based on temporal logic, security properties (requirements) are formulated using a temporal logic formula and using temporal operators. Using the security monitor 120 , the objects of the OS architecture 240 participating in the transmission of the message 140 , such as the processes 131-132 , are assigned their state events from a predetermined set of events.

В качестве примера рассматривается применение политик безопасности на основе темпоральной логики для процесса установки ПО из образа ПО. В процессе установки могут участвовать несколько компонентов (являющихся процессами 131-132), например средство проверки и средство установки. Процесс установки ПО может включать проверку целостности образа ПО средством проверки и последующую установку ПО из образа ПО средством установки в случае, если целостность образа ПО не нарушена. Целостность образа ПО определяет непротиворечивость, полнота и сохранность данных образа ПО. Проверка целостности образа ПО может быть осуществлена путем проверки электронно-цифровой подписи. Для упомянутого образа ПО множество событий может включать следующие: {seal, verify, apply}, где seal — событие «запечатывания» образа ПО, verify — событие проверки целостности образа ПО, apply — событие установки ПО из образа ПО. Свойства безопасности формулируют, например, следующим образом:As an example, the application of security policies based on temporal logic for the process of installing software from a software image is considered. Several components (which are processes 131 - 132 ) may be involved in the installation process, such as a checker and an installer. The software installation process may include verifying the integrity of the software image with a checker and then installing the software from the software image with the installer if the integrity of the software image is not compromised. The integrity of the software image determines the consistency, completeness, and integrity of the data in the software image. Checking the integrity of the software image can be carried out by checking the digital signature. For the mentioned software image, the set of events can include the following: {seal, verify, apply}, where seal is the event of "sealing" the software image, verify is the event of checking the integrity of the software image, apply is the event of installing software from the software image. The security properties are formulated, for example, as follows:

Свойство 1. Всегда, когда выполняется проверка целостности образа ПО, должно быть гарантировано, что после процесса проверки целостности образа ПО упомянутый образ ПО не будет изменен. Данное свойство можно записать в виде формулы: Feature 1 : Whenever a software image integrity check is performed, it must be guaranteed that after the software image integrity check process, said software image will not be modified. This property can be written as a formula:

G (verify => P seal),G (verify => P seal),

где G — темпоральный оператор «всегда в будущем», P — темпоральный оператор «хотя бы один раз в прошлом». Свойство 1 означает, что всегда, когда осуществляется проверка целостности образа ПО в прошлом, должна быть гарантирована невозможность дальнейшей записи данных в образ ПО.where G is the "always in the future" temporal operator, P is the "at least once in the past" temporal operator. Property 1 means that whenever a past integrity check is performed on a software image, it must be guaranteed that no further data can be written to the software image.

Свойство 2. Установка ПО из образа ПО возможна только в том случае, если подтверждена целостность образа ПО. Данное свойство можно записать в виде формулы: Property 2: Installing software from a software image is possible only if the integrity of the software image is confirmed. This property can be written as a formula:

G (apply => P verify).G (apply => P verify).

Создание объекта класса политик, реализующего управление доступом на основе темпоральной логики, может быть реализовано на языке PSL в виде следующей конструкции:Creating a policy class object that implements access control based on temporal logic can be implemented in PSL as the following construct:

Figure 00000002
Figure 00000002

Стоит отметить, что возможны и другие формулировки свойств. Например, свойство 2 может быть задано следующим образом: образ ПО не применяется, пока не подтверждена целостность образа ПО:It should be noted that other formulations of properties are also possible. For example, property 2 could be set as follows: the software image is not applied until the integrity of the software image is verified:

!apply U verify,!apply U verify,

где U — темпоральный оператор «до тех пор, пока не наступит заданное событие».where U is the temporal operator "until the given event occurs".

Политика на основе модели темпоральной логики при установке ПО связывает с данным межпроцессным взаимодействием событие apply и проверяет истинность формулы, указанной в конфигурации объекта политик. Если формула истинна, политика разрешает взаимодействие, если ложна — запрещает.A policy based on the temporal logic model, when installing software, associates an apply event with this interprocess communication and checks the validity of the formula specified in the policy object configuration. If the formula is true, the policy allows the interaction; if it is false, it denies it.

Политики на основе модели с дискретными событиями задают с использованием соответствующего политикам модуля проверки 221. Упомянутые политики безопасности также могут быть описаны на языке спецификаций PSL. Упомянутые политики безопасности могут быть применены для систем разработчика, состоящих из большого количества компонентов. Для упомянутой системы модель с дискретными событиями представляет собой результирующий конечный автомат, который задан путем комбинации множества конечных автоматов, каждый из которых описывает отдельный компонент системы. Для каждого конечного автомата указывают множество их состояний и переходов между ними при возникновении определенных событий. Состояние результирующего конечного автомата определяют путем комбинации состояний конечных автоматов компонентов системы. При этом указанная комбинация осуществляется, например, путем синхронного или асинхронного произведения конечных автоматов. Для результирующего конечного автомата также задают список разрешенных переходов, список разрешенных состояний и список запрещенных состояний результирующего конечного автомата. Соответственно, с использованием политик безопасности проверяют переход упомянутых конечных автоматов компонентов системы и результирующего конечного автомата в начальное состояние, заданное в конфигурации соответствующего конечного автомата, переход между состояниями при возникновении определенного события, нахождение соответствующего конечного автомата в одном из заданных состояний.The discrete event model-based policies are set using the policy-corresponding checker 221 . The mentioned security policies can also be described in the PSL specification language. The mentioned security policies can be applied to developer systems that consist of a large number of components. For the said system, the discrete event model is the resulting finite state machine, which is specified by combining a set of finite state machines, each of which describes a separate component of the system. For each finite state machine, a set of their states and transitions between them when certain events occur. The state of the resulting finite state machine is determined by combining the states of the state machines of the system components. This combination is carried out, for example, by synchronous or asynchronous product of finite automata. For the resulting state machine, a list of allowed transitions, a list of allowed states, and a list of forbidden states of the resulting state machine are also specified. Accordingly, using security policies, they check the transition of the said finite automata of the system components and the resulting finite automaton to the initial state specified in the configuration of the corresponding finite automaton, the transition between states when a certain event occurs, the presence of the corresponding finite automaton in one of the specified states.

В еще одном частном варианте реализации для политик безопасности, использующих различные модели, выбирают различные средства настройки 220. Например, политики безопасности могут быть объедены в классы политик. Класс политик безопасности — это набор семантически связанных политик, реализующих определенную модель политик безопасности. Первый класс политик может состоять из политик безопасности, использующих конечный автомат, а второй класс политик может состоять из политик безопасности, использующих мандатный контроль целостности. В этом примере для политик безопасности из первого класса будет выбрано средство настройки 1, в то время как для политик безопасности из второго класса будет выбрано средство настройки 2. Описанный вариант реализации позволит разрабатывать средства настройки 220, предназначенные для настройки модулей проверки 221 для политик безопасности из одного класса. Кроме того, при добавлении новой политики безопасности в базу политик 121 будет использовано существующее средство настройки 220 без необходимости его доработки или добавления нового средства настройки 220.In yet another particular implementation, different settings 220 are selected for security policies using different models. For example, security policies can be grouped into policy classes. A security policy class is a set of semantically related policies that implement a particular security policy model. The first class of policies may consist of security policies using a state machine, and the second class of policies may consist of security policies using mandatory integrity control. In this example, for security policies from the first class, configuration tool 1 will be selected , while for security policies from the second class, configuration tool 2 will be selected. one class. In addition, adding a new security policy to the policy base 121 will use the existing configuration tool 220 without the need to modify it or add a new configuration tool 220 .

В еще одном частном варианте реализации с использованием средства формирования 210 дополнительно включают в монитор безопасности 120 контекст монитора безопасности 122, при этом монитор безопасности 120 осуществляет контроль доставки сообщения 140 дополнительно с учетом упомянутого контекста 122, где контекст монитора безопасности 122 содержит значения параметров политик безопасности. В другом частном варианте реализации монитор безопасности дополнительно предназначен для изменения контекста 122 с учетом решений 150 на основании политик безопасности. В зависимости от используемых политиками безопасности упомянутых моделей контекст 122 может содержать различные параметры политик безопасности. Например, для политик безопасности на основе модели мандатного контроля целостности контекст 122 будет содержать значения уровней целостности и уровней доступа к защищаемым объектам. Для политик безопасности на основе конечного автомата контекст 122 будет содержать текущее значение состояния конечного автомата и таблицу переходов конечного автомата.In another particular implementation, using the generator 210 , the context of the security monitor 122 is additionally included in the security monitor 120 , while the security monitor 120 controls the delivery of the message 140 additionally taking into account the mentioned context 122 , where the context of the security monitor 122 contains the values of security policy settings. In another particular implementation, the security monitor is further configured to change context 122 based on security policy decisions 150 . Depending on the security policies used by these models, context 122 may contain various security policy settings. For example, for security policies based on the mandatory integrity control model, context 122 will contain the values of integrity levels and access levels to securable objects. For state machine-based security policies, context 122 will contain the current state machine state value and the state machine transition table.

В частном варианте реализации в случае, если сообщению 140 соответствуют по меньшей мере две политики безопасности, дополнительно вычисляют общее решение для упомянутых политик безопасности путем конъюнкции решений для каждой из упомянутых политик безопасности, при этом монитор безопасности 120 осуществляет контроль доставки сообщения 140 дополнительно с учетом упомянутого общего решения. Когда процесс 131 или процесс 132 инициирует взаимодействие путем отправки сообщения 140, монитор безопасности 120 вызывает все политики безопасности из базы политик 121, связанные с этим конкретным взаимодействием. Если все политики безопасности вынесли решение «разрешено», то с использованием монитора безопасности 120 выносят общее решение «разрешено». Если хотя бы одна политика вынесла решение «запрещено», с использованием монитора безопасности 120 выносят общее решение «запрещено».In a particular implementation, if at least two security policies correspond to the message 140 , the overall solution for the mentioned security policies is additionally calculated by conjuncting the solutions for each of the mentioned security policies, while the security monitor 120 monitors the delivery of the message 140 additionally taking into account the mentioned general solution. When process 131 or process 132 initiates an interaction by sending message 140 , security monitor 120 invokes all security policies from policy base 121 associated with that particular interaction. If all security policies have made a "allow" decision, then a general "allow" decision is made using the security monitor 120 . If at least one policy has issued a "forbidden" decision, a general "forbidden" decision is made using the security monitor 120 .

В еще одном частном варианте реализации настройка модуля проверки 221 включает создание кода, обеспечивающего вынесение решения 150 по запросу монитора безопасности 120 для политики безопасности при выполнении упомянутой политики безопасности.In yet another particular implementation, customizing the checker 221 includes generating code that makes a decision 150 upon request of the security monitor 120 for a security policy when said security policy is executed.

В частном варианте реализации монитор безопасности 120 осуществляет контроль доставки сообщения 140 дополнительно с учетом решений 150 на основании политик безопасности, связанных с упомянутыми сообщениями 140.In a particular implementation, the security monitor 120 monitors the delivery of the message 140 in addition to decisions 150 based on the security policies associated with said messages 140 .

На Фиг. 2б представлена система контроля доставки сообщений межпроцессного взаимодействия, передаваемых между первым 134 и вторым 161 процессами. Для осуществления контроля доставки сообщений 140, передаваемых между первым 134 и вторым 161 процессами, может быть использована система формирования монитора безопасности 200 (Фиг. 2а) для формирования монитора безопасности 120 для первой ОС 100. Таким образом система контроля доставки сообщений 201 использует систему формирования монитора безопасности 200, при этом дополнительно включает средство создания процесса 280 и средство назначения политик 290.On FIG. 2b shows a delivery control system for interprocess communication messages passed between the first 134 and second 161 processes. To control the delivery of messages 140 passed between the first 134 and second 161 processes, the security monitor generation system 200 ( FIG. 2a ) can be used to generate the security monitor 120 for the first OS 100 . Thus, the message delivery control system 201 utilizes a security monitor generation system 200 , while further including a process builder 280 and a policy assigner 290 .

Стоит отметить, что описанные средства и модули, в частности средства настройки 220, средство формирования 210, средство разработки 250, средство создания процесса 280, средство назначения политик 290, реализованы с возможностью исполнения на процессоре компьютера (см. Фиг. 5). При этом база политик 121, архитектура первой ОС 241, модули проверки 221 содержатся в памяти компьютера.It is worth noting that the described tools and modules, in particular the configuration tools 220 , the generation tool 210 , the development tool 250 , the process creation tool 280 , the policy assigner 290 , are implemented with the ability to execute on the computer processor (see Fig. 5 ). In this case, the policy base 121 , the architecture of the first OS 241 , the verification modules 221 are contained in the computer's memory.

Средство создания процесса 280 предназначено для создания прокси-процесса 135 для второго процесса 161, где прокси-процесс 135 предназначен для обмена сообщениями 140 со вторым процессом 161 во второй ОС 160 и обладает программным интерфейсом, соответствующим программному интерфейсу второго процесса 161. При этом информацию о втором процессе 161, в частности о его программных интерфейсах, средство создания процесса 280 получает от средства разработки 250.The process creator 280 is designed to create a proxy process 135 for the second process 161 , where the proxy process 135 is designed to exchange messages 140 with the second process 161 in the second OS 160 and has an API corresponding to the API of the second process 161 . In this case, information about the second process 161 , in particular about its programming interfaces, the process creation tool 280 receives from the development tool 250 .

Таким образом, информация о созданном первом процессе 134, взаимодействующим со вторым процессом 161 во второй ОС 160, будет добавлена в архитектуру первой ОС 241 средством создания процесса 280. Средство назначения политик 290 предназначено для назначения политик безопасности созданному прокси-процессу 135 для контроля доставки сообщений 140, связанных с упомянутым прокси-процессом 135, где упомянутые сообщения 140 передают по заданному программному интерфейсу. При этом назначенные прокси-процессу 135 политики безопасности будут сохранены в базу политик 121. После формирования монитор безопасности 120 будет осуществлять контроль доставки сообщений 140 между первым 134 и вторым 161 процессами, при этом сообщения 140 связаны с упомянутым прокси-процессом 135, а упомянутый контроль осуществляется с учетом политики безопасности, назначенной средством назначения политик 290.Thus, information about the created first process 134 interacting with the second process 161 in the second OS 160 will be added to the architecture of the first OS 241 by the process creator 280 . The policy assigner 290 is designed to assign security policies to the created proxy process 135 to control the delivery of messages 140 associated with said proxy process 135 where said messages 140 are transmitted over a given API. In this case, the security policies assigned to the proxy process 135 will be stored in the policy base 121 . Once generated, the security monitor 120 will control the delivery of messages 140 between the first 134 and second 161 processes, the messages 140 being associated with said proxy process 135 , and said control taking into account the security policy assigned by the policy assigner 290 .

В частном варианте реализации монитор безопасности 120 при контроле доставки сообщений 140 использует программный интерфейс прокси-процесса 135 для определения разрешенных сообщений 140 для прокси-процесса 135. При этом с помощью средства назначения политик 290 определяют политику безопасности, запрещающую доставку сообщений 140 от прокси-процесса 135 в случае, если была зафиксирована попытка доставки сообщений 140, отсутствующих в списке разрешенных. Список разрешенных сообщений 140 и соответствующие политики безопасности заранее задают с помощью средства назначения политик 290 при формировании монитора безопасности 120. В еще одном частном варианте реализации при контроле доставки сообщений 140 монитор безопасности 120 использует программный интерфейс прокси-процесса 135 для определения перечня процессов, с которыми разрешен обмен сообщениями 140 прокси-процессу 135. При этом перечень процессов включает по меньшей мере первый процесс 134. При этом с помощью средства назначения политик 290 дополнительно назначают политику безопасности, запрещающую обмен сообщениями 140 между прокси-процессом 135 и процессами, отсутствующими в упомянутом перечне. Допустимые структуры разрешенных сообщений 140 могут быть определены с использованием декларативного описания интерфейса второго процесса 161. Такие структуры могут содержать размер сообщения 140, допустимые аргументы и другие допустимые параметры сообщения 140.In a particular implementation, the security monitor 120 , when monitoring message delivery 140 , uses the proxy process 135 API to determine allowed messages 140 for the proxy process 135 . At the same time, using the policy assigner 290 , a security policy is determined that prohibits the delivery of messages 140 from the proxy process 135 if an attempt was made to deliver messages 140 that are not on the allowed list. The list of allowed messages 140 and the corresponding security policies are predefined by the policy assigner 290 when generating the security monitor 120 . In another particular implementation, when monitoring the delivery of messages 140 , the security monitor 120 uses the proxy process 135 API to determine the list of processes with which the proxy process 135 is allowed to exchange messages 140 . The list of processes includes at least the first process 134 . At the same time, using the policy assigner 290 , a security policy is additionally assigned that prohibits the exchange of messages 140 between the proxy process 135 and processes that are not in the mentioned list. Valid allowed message structures 140 can be defined using the declarative interface description of the second process 161 . Such structures may contain a message size 140 , valid arguments and other valid message options 140 .

Таким образом, с использованием настоящего изобретения для реализации межпроцессных взаимодействий второго процесса 161 с первым процессом 134 создают прокси-процесс 135, реализующий все программные интерфейсы второго процесса 161, и назначают политики безопасности для созданного прокси-процесса 135 для контроля доставки сообщений 140 между вторым 161 и первым 134 процессами по разрешенным интерфейсам. Настоящее изобретение позволяет монитору безопасности 120 осуществить контроль доставки сообщений 140 между вторым 161 и первым 134 процессами путем контроля доставки сообщений 140, связанных с упомянутым прокси-процессом 135, с учетом политики безопасности, даже несмотря на наличие небезопасного канала связи 170. За счет этого заявленное изобретение решает указанную техническую проблему и достигает заявленных технических результатов.Thus, using the present invention to implement inter-process communications of the second process 161 with the first process 134 , a proxy process 135 is created that implements all the programming interfaces of the second process 161 , and security policies are assigned to the created proxy process 135 to control the delivery of messages 140 between the second 161 and the first 134 processes on allowed interfaces. The present invention allows the security monitor 120 to control the delivery of messages 140 between the second 161 and the first 134 processes by monitoring the delivery of messages 140 associated with said proxy process 135 based on the security policy, even though there is an insecure communication channel 170 . Due to this, the claimed invention solves the specified technical problem and achieves the claimed technical results.

В еще одном частном варианте реализации для процессов 161-162 второй ОС 160, между которыми присутствует программный интерфейс для обмена сообщениями 140, с помощью средства создания процесса 280 создают один прокси-процесс 135, единый для обоих упомянутых процессов 161-162. Стоит отметить, что в случае, если процессы 161-162 не связаны между собой, то есть являются отдельными доменами безопасности, для каждого из них будет создан отдельный прокси-процесс. Например, для второго процесса 161 будет создан прокси-процесс 135 для взаимодействия с первым процессом 134. А для третьего процесса 162 будет создан другой прокси-процесс (на фигуре не указан) для взаимодействия с другим процессом (на фигуре не указан) в первой ОС 100.In another particular implementation, for processes 161 - 162 of the second OS 160 between which there is a programming interface for messaging 140 , using the process creation tool 280 , one proxy process 135 is created, which is the same for both mentioned processes 161 - 162 . It is worth noting that if processes 161 - 162 are not related to each other, that is, they are separate security domains, a separate proxy process will be created for each of them. For example, for the second process 161 a proxy process 135 will be created to interact with the first process 134 . And for the third process 162 , another proxy process (not shown in the figure) will be created to interact with another process (not shown in the figure) in the first OS 100 .

В частном варианте реализации вторая ОС 160 является одной из:In a particular implementation, the second OS 160 is one of:

гостевой ОС, работающей на виртуальной машине под управлением первой ОС 100 на компьютере;a guest OS running on a virtual machine running the first OS 100 on the computer;

гостевой ОС, работающей на виртуальной машине, при этом первая ОС 100 является второй гостевой ОС, работающей на второй виртуальной машине и связанной с первой виртуальной машиной посредством гипервизора;a guest OS running on a virtual machine, wherein the first OS 100 is a second guest OS running on a second virtual machine and associated with the first virtual machine via a hypervisor;

второй ОС 160 на втором компьютере, который связан с компьютером, на котором функционирует первая ОС 100, по сети или посредством других каналов связи 170.the second OS 160 on a second computer that is connected to the computer running the first OS 100 via a network or other communication channels 170 .

В частном варианте реализации, когда второй процесс 161 содержит более одного потока выполнения, для каждого потока второго процесса 161 создают соответствующий поток в прокси-процессе 135. В этом случае поток второго процесса 161, который осуществляет обмен сообщениями межпроцессного взаимодействия, выполняет вызов метода драйвера канала связи 170 (путем системного вызова операций ввода-вывода, например, ioctl), который в свою очередь уведомляет прокси-процесс 135 о необходимости создания потока в прокси-процессе 135 для обмена сообщениями межпроцессного взаимодействия с соответствующим потоком второго процесса 161. После завершения обмена сообщениями 140 между потоками второго процесса 161 и прокси-процесса 135, второй процесс 161, путем вызова метода драйвера канала связи 170, уведомляет прокси-процесс 135 о завершении обмена сообщениями 140 с ним. После этого прокси-процесс 135 завершает выполнение соответствующего потока в прокси-процессе 135.In a particular implementation, when the second process 161 contains more than one thread of execution, for each thread of the second process 161 create a corresponding thread in the proxy process 135 . In this case, the thread of the second process 161 , which is exchanging interprocess communication messages, makes a call to the method of the communication channel driver 170 (by an I/O system call, for example, ioctl), which in turn notifies the proxy process 135 to create a thread in proxy process 135 to exchange IPC messages with the corresponding thread of the second process 161 . After the completion of the message exchange 140 between the threads of the second process 161 and the proxy process 135 , the second process 161 notifies the proxy process 135 of the completion of the message exchange 140 with it by calling the method of the communication channel driver 170 . After that, the proxy process 135 ends the execution of the corresponding thread in the proxy process 135 .

Драйвер канала связи 170 предназначен для установления канала связи 170 между вторым процессом 161 и прокси-процессом 135, управления потоками для прокси-процесса 135, для реализации вызовов call(), recv(), reply(), причем программный интерфейс прокси-процесса 135 соответствует интерфейсу второго процесса 161, а также для доставки сообщений 140 от второго процесса 161 соответствующему потоку прокси-процесса 135.The communication channel driver 170 is designed to establish a communication channel 170 between the second process 161 and the proxy process 135 , flow control for the proxy process 135 , to implement the call(), recv(), reply() calls, and the proxy process API 135 corresponds to the interface of the second process 161 , as well as to deliver messages 140 from the second process 161 to the corresponding thread of the proxy process 135 .

Стоит также отметить, что при создании прокси-процессов, например, прокси-процесса 135, для различных процессов второй ОС 160 может быть использован общий шаблон прокси-процесса, однако для различных процессов второй ОС 160 в соответствующем прокси-процессе будет реализован программный интерфейс, соответствующий интерфейсу второго процесса 161. Таким образом, использование общего шаблона прокси-процесса повышает безопасность заявленного изобретения за счет возможности более детальной проверки кода указанного шаблона, а также использования общих политик безопасности. При этом несмотря на то, что некоторые политики безопасности для различных процессов второй ОС 160 будут одинаковыми, часть политик безопасности будет отличаться.It is also worth noting that when creating proxy processes, for example, proxy process 135 , a common proxy process template can be used for different processes of the second OS 160 , however, for different processes of the second OS 160 , a programming interface will be implemented in the corresponding proxy process, corresponding to the interface of the second process 161 . Thus, the use of a common proxy process template improves the security of the claimed invention due to the possibility of more detailed verification of the code of the specified template, as well as the use of common security policies. However, although some of the security policies for different processes of the second OS 160 will be the same, some of the security policies will be different.

На Фиг. 3а представлен вариант реализации настоящего изобретения на примере второй ОС 160, являющейся гостевой ОС, работающей на виртуальной машине под управлением первой ОС 100 на компьютере (пример компьютера 20 общего назначения представлен на Фиг. 5). В рассматриваемом примере в первой ОС 100 установлен гипервизор 303, являющийся модулем (сервисом) ядра ОС 110 и управляющий виртуальными машинами 301-302. Упомянутые виртуальные машины 301-302 являются приложениями первой ОС 100, исполняющиеся в пространстве пользователя на процессоре компьютере. Гипервизор 303 может использовать любую известную из уровня техники систему виртуализации для обеспечения работы виртуальных машин. Примером гипервизора 303 является Kaspersky Secure Hypervisor (KSH) — безопасная система виртуализации на базе гипервизора второго типа, где первая ОС 100 (например, KasperskyOS) выступает в роли хост-машины. В данном случае гипервизор 303 экспортирует компонентный интерфейс, который используется виртуальными машинами 301-302 для управления сессиями, виртуальными процессорами, памятью и низкоуровневым пробросом устройств. Кроме виртуальных машин в первой ОС 100 могут функционировать другие приложения 331-332. В предпочтительном варианте реализации упомянутые приложения 331-332 и виртуальные машины 301-302 содержат по одному процессу, но также могут быть реализованы с использованием нескольких процессов и исполняются на процессоре компьютера.On FIG. 3a illustrates an embodiment of the present invention with a second OS 160 as a guest OS running on a virtual machine running the first OS 100 on a computer (an example of a general purpose computer 20 is shown in FIG. 5 ). In the example under consideration, the hypervisor 303 is installed in the first OS 100 , which is a module (service) of the kernel of the OS 110 and manages virtual machines 301 - 302 . Said virtual machines 301 - 302 are applications of the first OS 100 running in user space on the computer's processor. The hypervisor 303 may use any virtualization system known in the art to provide virtual machines. An example of a hypervisor 303 is Kaspersky Secure Hypervisor (KSH), a secure virtualization system based on a type 2 hypervisor, where the first OS 100 (eg, KasperskyOS) acts as the host machine. In this case, the hypervisor 303 exports a component interface that is used by virtual machines 301 - 302 to manage sessions, virtual processors, memory, and low-level device forwarding. In addition to the virtual machines, other applications 331-332 may be running on the first OS 100 . In the preferred embodiment, said applications 331-332 and virtual machines 301-302 each contain a single process, but can also be implemented using multiple processes and run on a computer processor.

В контексте приложения виртуальной машины 301 создают виртуальную машину с гостевой ОС 310, под управлением которой работают гостевые функциональные компоненты, реализованные с использованием гостевых процессов и приложений. В качестве примера в гостевой ОС 310 созданы приложения 311-314, разделенные на два домена безопасности 315-316. В общем случае функциональные компоненты гостевой ОС 310 могут работать в различных доменах безопасности, при этом гостевая ОС 310 обеспечивает изоляцию упомянутых доменов безопасности, а гипервизор 303 обеспечивает изоляцию гостевой ОС 310 от виртуальных машин, представленных приложениями 317-318. Аналогичным образом в контексте приложения виртуальной машины 302 создают виртуальную машину с гостевой ОС 320.In the application context of the virtual machine 301 , a virtual machine is created with a guest OS 310 running guest functional components implemented using guest processes and applications. As an example, guest OS 310 creates applications 311-314 divided into two security domains 315-316 . In general, the functional components of the guest OS 310 may operate in different security domains, with the guest OS 310 isolating said security domains and the hypervisor 303 isolating the guest OS 310 from the virtual machines represented by applications 317-318 . Similarly, in the application context of virtual machine 302 , a virtual machine with guest OS 320 is created.

Доставка сообщений 140 межпроцессного взаимодействия от различных доменов безопасности 315-316 гостевой ОС 310, а также от приложения виртуальной машины 301, являющегося отдельным доменом безопасности, контролируются монитором безопасности 120 первой ОС 100 независимо с использованием созданных прокси-процессов для каждого домена безопасности. Аналогичным образом монитор безопасности 120 контролирует доставку сообщений 140 от приложения виртуальной машины 302 и доменов безопасности 325-326 гостевой ОС 320. При этом виртуальная машина 301 осуществляет контроль взаимодействия между доменами безопасности 315-316 внутри гостевой ОС 310, контроль собственных политик безопасности внутри виртуальной машины 301, контроль доступа к оборудованию гостевой ОС 310, контроль управления потоками данных для эмулируемых устройств и другие взаимодействия внутри гостевой ОС 310.The delivery of IPC messages 140 from the various security domains 315-316 of the guest OS 310 as well as from the virtual machine application 301 that is a separate security domain are controlled by the security monitor 120 of the first OS 100 independently using generated proxy processes for each security domain. Similarly, the security monitor 120 monitors the delivery of messages 140 from the virtual machine application 302 and security domains 325-326 of the guest OS 320 . At the same time, the virtual machine 301 controls the interaction between security domains 315-316 within the guest OS 310 , controls its own security policies within the virtual machine 301 , controls access to guest OS 310 hardware , controls data flow for emulated devices, and other interactions within the guest OS 310 .

Взаимодействия, контролируемые модулем безопасности 120, обозначены на Фиг. 3а сплошной линией со стрелками. А взаимодействия, неконтролируемые монитором безопасности 120, обозначены штриховой линией — например, взаимодействия между гипервизором 303 и виртуальными машинами 301-302, требующие привилегированного режима ядра ОС 100, которые невозможно реализовать в пользовательском режиме в приложениях виртуальных машин 301-302. При этом взаимодействия между различными виртуальными машинами 301-302 также контролируются монитором безопасности 120.The interactions controlled by the security module 120 are indicated in FIG. 3a by a solid line with arrows. And interactions that are not controlled by the security monitor 120 are indicated by a dashed line - for example, interactions between the hypervisor 303 and virtual machines 301 - 302 that require privileged mode of the OS kernel 100 that cannot be implemented in user mode in virtual machine applications 301 - 302 . Meanwhile, the interactions between the various virtual machines 301 - 302 are also monitored by the security monitor 120 .

На Фиг. 3б представлен пример создания прокси-процессов для виртуальной машины 301 и доменов безопасности гостевой ОС 310. Так, будут созданы прокси-процесс 341 для домена безопасности 315 и прокси-процесс 342 для домена безопасности 316. Созданные прокси-процессы 341-342 взаимодействуют с другими процессами первой ОС 100 посредством сообщений межпроцессного взаимодействия 140, доставка которых контролируется монитором безопасности 120. При этом виртуальная машина 301, будучи отдельным доменом безопасности и процессом первой ОС 100, взаимодействует с другими процессами первой ОС 100 посредством сообщений 140, доставка которых также контролируется монитором безопасности 120. То есть для виртуальной машины 301 не требуется создание отдельного прокси-процесса. Также стоит отметить, что созданные прокси-процессы 341-342 будут обладать программными интерфейсами, которые соответствуют программным интерфейсам домена безопасности 315 и домена безопасности 316 соответственно.On FIG. 3b shows an example of creating proxy processes for virtual machine 301 and guest OS security domains 310 . Thus, a proxy process 341 for the security domain 315 and a proxy process 342 for the security domain 316 will be created. The created proxy processes 341 - 342 communicate with other processes of the first OS 100 via inter-process communication messages 140 , the delivery of which is controlled by the security monitor 120 . In this case, the virtual machine 301 , being a separate security domain and process of the first OS 100 , interacts with other processes of the first OS 100 through messages 140 , the delivery of which is also controlled by the security monitor 120 . That is, the virtual machine 301 does not require the creation of a separate proxy process. It is also worth noting that the generated proxy processes 341 - 342 will have APIs that correspond to those of the security domain 315 and security domain 316 , respectively.

Как упоминалось ранее, отправка и получение сообщений 140 процессами первой ОС 100 происходят посредством системных вызовов ядра ОС 110 и по заданным программным интерфейсам.As mentioned earlier, sending and receiving messages140 processes first OS100occur through system calls to the OS kernel110 and according to the given programming interfaces.

Системные вызовы могут включать следующие:System calls may include the following:

• call() — используется процессом 131 для отправки запроса 142 к процессу 132 и получения ответа 143 на осуществление межпроцессного взаимодействия;• call() is used by process 131 to send a request 142 to process 132 and receive a response 143 for interprocess communication;

• recv() — используется процессом 132 для получения запроса 142;• recv() - used by process 132 to receive request 142 ;

• reply() — используется процессом 132 для отправки ответа 143 процессу 131.• reply() is used by process 132 to send a reply 143 to process 131 .

В частном варианте реализации системный вызов reply() производится в том же потоке процесса, в котором происходил вызов recv().In a particular implementation, the reply() system call is made on the same process thread as the recv() call.

Для идентификации получателя и отправителя сообщений 140 в гостевой ОС 310 могут быть использованы уникальные идентификаторы, значения которых равны значениям дескрипторов процессов, используемых прокси-процессами 341-342 для обмена сообщениями 140 в первой ОС 100.To identify the recipient and sender of messages 140 in the guest OS 310 , unique identifiers can be used, the values of which are equal to the values of the process descriptors used by the proxy processes 341 - 342 to exchange messages 140 in the first OS 100 .

В предпочтительном варианте реализации сообщения 140, формируемые вторым, а также другими процессами гостевой ОС 310 (в данном примере — доменами безопасности 315-316 и приложением виртуальной машины 301), представлены в формате сообщений 140, передаваемых в первой ОС 100. В этом случае соответствующие прокси-процессы 341-342, получив сообщения 140 от процессов гостевой ОС 310, являющейся второй ОС 160 (домены безопасности 315-316), осуществят дальнейшую отправку сообщений 140 соответствующим процессам 351-352 первой ОС 100 без изменения. В другом варианте реализации, когда формат сообщений 140 от процессов второй ОС 160 отличен от формата сообщений 140, прокси-процесс осуществит преобразование сообщений 140 от процессов второй ОС 160 в формат сообщений 140.In the preferred embodiment, the messages 140 generated by the second, as well as other processes of the guest OS 310 (in this example, security domains 315 - 316 and the virtual machine application 301 ), are in the format of messages 140 transmitted in the first OS 100 . In this case, the corresponding proxy processes 341 - 342 , having received messages 140 from the processes of the guest OS 310 , which is the second OS 160 (security domains 315 - 316 ), will further send messages 140 to the corresponding processes 351 - 352 of the first OS 100 without change. In another embodiment, when the message format 140 from the processes of the second OS 160 is different from the message format 140 , the proxy process will convert the messages 140 from the processes of the second OS 160 to the message format 140 .

При обращении второго процесса, например домена безопасности 315 в гостевой ОС 310, к процессу 351 первой ОС 100, домен безопасности 315 получает дескриптор процесса 351 и отправляет сообщение 140 прокси-процессу 341 по каналу связи 170 (удаленный вызов call()). При этом домен безопасности 315 переходит в спящее состояние (англ. sleep) до момента получения сообщения reply() от прокси-процесса 341. Прокси-процесс 341, получив указанное сообщение, преобразовывает его в сообщение 140 и отправляет сообщение 140 процессу 351 с использованием системного вызова ядра ОС 100. При этом доставка сообщения 140 будет проконтролирована монитором безопасности 120 с использованием политик безопасности, назначенных для прокси-процесса 341 и процесса 351. Отправка сообщений 140 от процесса 351 домену безопасности 315 происходит аналогичным образом посредством прокси-процесса 341 и под контролем монитора безопасности 120. После получения сообщения 140 домен безопасности 315 выходит из спящего состояния и завершает вызов call().When a second process, such as security domain 315 in guest OS 310 , calls process 351 of first OS 100 , security domain 315 obtains a handle to process 351 and sends a message 140 to proxy process 341 over communication channel 170 (remote call()). In this case, the security domain 315 goes into a sleep state until the reply() message is received from the proxy process 341 . The proxy process 341 , upon receiving the specified message, transforms it into a message 140 and sends the message 140 to the process 351 using the OS kernel system call 100 . In this case, the delivery of the message 140 will be controlled by the security monitor 120 using the security policies assigned to the proxy process 341 and process 351 . Messages 140 from process 351 to security domain 315 are sent in a similar manner via proxy process 341 and under the control of security monitor 120 . Upon receipt of message 140 , the security domain 315 wakes up and completes the call() call.

Стоит отметить, что упомянутое взаимодействие осуществляется посредством программных интерфейсов домена безопасности 315 и соответствующего программного интерфейса прокси-процесса 341. Программный интерфейс домена безопасности 315 получает набор дескрипторов, необходимых для обмена сообщениями 140, значения которых соответствуют дескрипторам прокси-процесса 341. Поток выполнения домена безопасности 315 производит вызов recv() по указанному интерфейсу к прокси-процессу 341, после чего указанный поток выполнения переходит в спящий режим. Вызов recv() потока выполнения домена безопасности 315 приводит к системному вызову recv() ядра первой ОС 110, который инициирует прокси-процесс 341. После этого прокси-процесс 341 также переходит в спящий режим. После того, как прокси-процесс 341 получает вызов call() от домена безопасности 315 (например, от другого потока выполнения), прокси-процесс 341 выходит из спящего состояния, а полученные ранее при вызове recv() данные отправляет домену безопасности 315 по соответствующему программному интерфейсу. Домен безопасности 315 также выходит из спящего состояния и получает данные, полученные в вызове recv() от прокси-процесса 341. Домен безопасности 315 в том же потоке, в котором производил вызов recv(), производит обработку вызова и отправляет данные, используя вызов reply(). Прокси-процесс 341, получив указанные данные, отправляет их домену безопасности 315. Для осуществления многопоточного обмена сообщениями 140 между вторым процессом (доменом безопасности 315) и прокси-процессом 341, для каждого потока второго процесса создается советующий поток прокси-процесса.It is worth noting that said interaction takes place via the security domain APIs 315 and the corresponding proxy process APIs 341 . The security domain API 315 receives a set of handles required for the exchange of messages 140 , whose values correspond to the handles of the proxy process 341 . The thread of execution of the security domain 315 makes a call to recv() on the specified interface to the proxy process 341 , after which the specified thread of execution enters sleep mode. The call to recv() of the thread of execution of the security domain 315 results in the system call recv() of the kernel of the first OS 110 , which initiates the proxy process 341 . After that, the proxy process 341 also goes to sleep. After the proxy process 341 receives a call() call from the security domain 315 (for example, from another thread of execution), the proxy process 341 wakes up, and sends the data received earlier when calling recv() to the security domain 315 on the appropriate software interface. The security domain 315 also wakes up and receives the data received in the recv() call from the proxy process 341 . The security domain 315 , on the same thread that made the recv() call, handles the call and sends the data using the reply() call. The proxy process 341 receives the specified data and sends it to the security domain 315 . For multi-threaded messaging 140 between the second process (security domain 315 ) and the proxy process 341 , an adviser thread of the proxy process is created for each thread of the second process.

В частном варианте реализации интерфейс прокси-процессов может включать следующие вызовы:In a particular implementation, the proxy process interface may include the following calls:

• method() — предназначен для получения идентификатора потока, дескриптора диапазона разделяемой памяти и смещения в пределах этого дескриптора, обработка указанного метода осуществляется отдельным потоком прокси-процесса;• method() is designed to get the thread ID, shared memory range descriptor and offset within this descriptor, processing of the specified method is performed by a separate thread of the proxy process;

• event() — предназначен для ожидания событий и возвращения описателей событий, обработка указанного метода осуществляется отдельным потоком прокси-процесса, при этом упомянутые события включают ответы на вызовы call() и получение запросов от процессов второй ОС 160 во время ожидания в спящем состоянии на вызов recv().• event() - designed to wait for events and return event handles, the processing of the specified method is carried out by a separate thread of the proxy process, while the mentioned events include responses to call() calls and receiving requests from processes of the second OS 160 while waiting in a sleep state on recv() call.

Упомянутые описатели событий содержат информацию о событии, включая тип события (call(), recv()), идентификатор потока прокси-процесса, в котором произошло событие, дескриптор диапазона разделяемой памяти, в котором были получены данные и др. В случае, когда в буфере событий отсутствуют элементы, в вызове event() происходит ожидание события. В случае, когда буфер событий содержит элементы, вызов event() возвращает описатель из указанного буфера.The mentioned event descriptors contain information about the event, including the type of the event (call(), recv()), the identifier of the proxy process thread in which the event occurred, the descriptor of the shared memory range in which the data was received, etc. In the case when there are no elements in the event buffer, the event() call waits for an event. In the case where the event buffer contains elements, the call to event() returns the handle from the specified buffer.

На Фиг. 4 представлен способ контроля доставки сообщений 140, передаваемых между по меньшей мере первым 134 и вторым 161 процессами, реализуемый компьютером. Так, на шаге 410 с помощью средства создания процесса 280 для второго процесса 161 создают прокси-процесс 135 в первой ОС 100, предназначенный для обмена сообщениями 140 со вторым процессом 161 во второй ОС 160 и обладающий программным интерфейсом, соответствующим программному интерфейсу второго процесса 161. Затем, на шаге 420 с помощью средства назначения политик 290 назначают по меньшей мере одну политику безопасности созданному прокси-процессу 135 для контроля доставки сообщений 140, связанных с упомянутым прокси-процессом 135, где упомянутые сообщения 140 передают через заданный программный интерфейс. На шаге 430 для первой ОС 100 формируют монитор безопасности 120 с учетом особенностей архитектуры ОС 240, в частности с учетом созданного прокси-процесса 135, а также с учетом требований безопасности для первой ОС 100, которые выражаются в назначенных политиках безопасности из базы политик 121. В итоге, на шаге 440 с помощью сформированного монитора безопасности 120 осуществляют контроль доставки сообщений 140 между по меньшей мере первым 134 и вторым 161 процессами путем контроля доставки сообщений 140, связанных с упомянутым прокси-процессом 135, на основании политик безопасности из базы политик 121. Стоит отметить, что частные варианты, раскрытые ранее, также применимы к способу на Фиг. 4.On FIG. 4 shows a method for controlling the delivery of messages 140 transmitted between at least the first 134 and the second 161 processes implemented by a computer. So, at step 410 , using the process creation tool 280 for the second process 161 , a proxy process 135 in the first OS 100 is created, designed to exchange messages 140 with the second process 161 in the second OS 160 and having a program interface corresponding to the program interface of the second process 161 . Then, at step 420 , at least one security policy is assigned by the policy assigner 290 to the created proxy process 135 to control the delivery of messages 140 associated with said proxy process 135 , where said messages 140 are transmitted through a given programming interface. At step 430 , a security monitor 120 is formed for the first OS 100 taking into account the architectural features of the OS 240 , in particular, taking into account the created proxy process 135 , and also taking into account the security requirements for the first OS 100 , which are expressed in the assigned security policies from the policy base 121 . Finally, at step 440 , the generated security monitor 120 monitors the delivery of messages 140 between at least the first 134 and the second 161 processes by monitoring the delivery of messages 140 associated with said proxy process 135 based on the security policies from the policy base 121 . It is worth noting that the particular embodiments disclosed earlier also apply to the method of FIG. 4 .

Фиг. 5 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24. Fig. 5 shows an example of a general purpose computer system, a personal computer or a server 20 ', comprising a central processing unit 21 ', system memory 22 ', and a system bus 23 ', which contains various system components including memory associated with the central processing unit 21 '. The system bus 23 is implemented as any bus structure known in the art, in turn comprising a bus memory or bus memory controller, a peripheral bus, and a local bus capable of interfacing with any other bus architecture. The system memory contains read only memory (ROM) 24 , random access memory (RAM) 25 . The main input/output system (BIOS) 26 contains the basic procedures that ensure the transfer of information between the elements of a personal computer 20 , for example, at the time of booting the operating system using ROM 24 .

Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20. Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.The personal computer 20 in turn comprises a hard disk 27 for reading and writing data, a magnetic disk drive 28 for reading and writing to removable magnetic disks 29 and an optical drive 30 for reading and writing to removable optical disks 31 such as CD-ROM, DVD -ROM and other optical storage media. The hard disk 27 , the magnetic disk drive 28 , the optical drive 30 are connected to the system bus 23 via the hard disk interface 32 , the magnetic disk interface 33 , and the optical drive interface 34 , respectively. Drives and related computer storage media are non-volatile means of storing computer instructions, data structures, program modules, and other personal computer data 20 . The present description discloses an implementation of a system that uses a hard disk 27 ', a removable magnetic disk 29 ', and a removable optical disk 31 ', but it should be understood that other types of computer storage media 56 that are capable of storing data in a computer-readable form (solid state drives, flash memory cards, digital disks, random access memory (RAM), etc.), which are connected to the system bus 23 through the controller 55 .

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.The computer 20 has a file system 36 that stores the recorded operating system 35 as well as additional software applications 37 , other program modules 38 and program data 39 . The user has the ability to enter commands and information into the personal computer 20 through input devices (keyboard 40 , mouse 42 ). Other input devices (not shown) may be used: microphone, joystick, game console, scanner, etc. Such input devices are normally connected to the computer system 20 through a serial port 46 , which in turn is connected to the system bus, but may be connected in other ways, such as through a parallel port, game port, or universal serial bus (USB). A monitor 47 or other type of display device is also connected to the system bus 23 via an interface such as a video adapter 48 '. In addition to the monitor 47 , the personal computer may be equipped with other peripheral output devices (not shown), such as speakers, a printer, and the like.

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другими удаленными компьютерами 49. Удаленные 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 5. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.The personal computer 20 is capable of operating in a networked environment using a network connection to other remote computers 49 . The remotes 49 are the same personal computers or servers that have most or all of the elements mentioned earlier in the description of the nature of the personal computer 20 shown in FIG. 5 . Other devices may also be present in the computer network, such as routers, network stations, peer-to-peer devices, or other network nodes.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях (также — информационных системах), внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к первой сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.The network connections may form a local area network (LAN) 50 and a wide area network (WAN). Such networks are used in corporate computer networks (also information systems), internal networks of companies and, as a rule, have access to the Internet. In LAN or WAN networks, the personal computer 20 is connected to the first network 50 via a network adapter or network interface 51 . When using networks, personal computer 20 may use a modem 54 or other means to communicate with a wide area network, such as the Internet. The modem 54 , which is an internal or external device, is connected to the system bus 23 via the serial port 46 . It should be clarified that the network connections are only indicative and are not required to represent the exact network configuration, i.e. in fact, there are other ways to establish a connection by technical means of communication from one computer to another.

В соответствии с описанием, компоненты, этапы исполнения, структура данных, описанные выше, могут быть выполнены, используя различные типы операционных систем, компьютерных платформ, программ.As described, the components, execution steps, data structure described above can be executed using various types of operating systems, computer platforms, programs.

В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.In conclusion, it should be noted that the information given in the description are examples that do not limit the scope of the present invention defined by the formula.

Claims (52)

1. Способ контроля доставки сообщений межпроцессного взаимодействия (далее - сообщений), передаваемых между процессами из разных операционных систем (ОС), в котором:1. A method for controlling the delivery of interprocess communication messages (hereinafter referred to as messages) transmitted between processes from different operating systems (OS), in which: а) с помощью средства создания процесса создают прокси-процесс в первой ОС, предназначенный для обмена сообщениями между по меньшей мере первым процессом из первой ОС и вторым процессом во второй ОС и обладающий программным интерфейсом, соответствующим программному интерфейсу второго процесса, при этом первая ОС и вторая ОС — это операционные системы, установленные в разных вычислительных средах;a) using the process creation tool, a proxy process is created in the first OS, designed to exchange messages between at least the first process from the first OS and the second process in the second OS and having a programming interface corresponding to the programming interface of the second process, while the first OS and the second OS is operating systems installed in different computing environments; б) с помощью средства назначения политик назначают по меньшей мере одну политику безопасности созданному прокси-процессу для контроля доставки сообщений, связанных с прокси-процессом, где сообщения передают через заданный программный интерфейс;b) using the policy assigner, assigning at least one security policy to the created proxy process to control the delivery of messages associated with the proxy process, where messages are transmitted through a given programming interface; в) с помощью сформированного монитора безопасности осуществляют контроль доставки сообщений между по меньшей мере первым и вторым процессами путем контроля доставки сообщений, связанных с прокси-процессом, на основании политик безопасности.c) using the generated security monitor, they control the delivery of messages between at least the first and second processes by monitoring the delivery of messages associated with the proxy process based on security policies. 2. Способ по п. 1, в котором контроль доставки сообщения включает по меньшей мере разрешение или запрет доставки сообщения.2. The method of claim 1, wherein the message delivery control includes at least allowing or denying message delivery. 3. Способ по п. 1, в котором сообщения включают по меньшей мере одно из: запрос на запуск процесса, запрос и ответ на осуществление межпроцессного взаимодействия, запрос процесса к монитору безопасности.3. The method of claim. 1, in which the messages include at least one of: a request to start the process, a request and response to perform inter-process communication, a process request to the security monitor. 4. Способ по п. 1, в котором вторая ОС является одной из по меньшей мере следующих:4. The method of claim 1, wherein the second OS is one of at least the following: гостевой ОС, работающей на виртуальной машине под управлением первой ОС на компьютере;a guest OS running in a virtual machine running the first OS on the computer; гостевой ОС, работающей на виртуальной машине, при этом первая ОС является второй гостевой ОС, работающей на второй виртуальной машине и связанной с первой виртуальной машиной посредством гипервизора;a guest OS running on a virtual machine, wherein the first OS is a second guest OS running on a second virtual machine and associated with the first virtual machine via a hypervisor; второй ОС на втором компьютере, который связан с компьютером, на котором функционирует первая ОС, по сети.a second OS on a second computer that is connected to the computer running the first OS via a network. 5. Способ по п. 1, в котором монитор безопасности сформирован для первой ОС с использованием средства формирования.5. The method according to claim 1, wherein the security monitor is generated for the first OS using a generation tool. 6. Способ по п. 5, в котором формируют монитор безопасности с учетом особенностей архитектуры первой ОС, в частности с учетом созданного прокси-процесса, а также с учетом назначенных прокси-процессу политик безопасности из базы политик.6. The method according to claim 5, in which the security monitor is formed taking into account the architecture features of the first OS, in particular, taking into account the created proxy process, as well as taking into account the security policies assigned to the proxy process from the policy base. 7. Способ по п. 5, в котором формируют монитор безопасности путем создания кода монитора безопасности, включающего один из исходного кода, промежуточного кода, исполняемого кода.7. The method of claim 5, wherein the security monitor is generated by generating a security monitor code including one of source code, intermediate code, executable code. 8. Способ по п. 1, в котором при контроле доставки сообщений монитор безопасности использует программный интерфейс прокси-процесса для определения разрешенных сообщений для прокси-процесса, при этом с помощью средства назначения политик дополнительно задают список разрешенных сообщений в соответствии с программным интерфейсом и назначают политику безопасности, запрещающую доставку сообщений от прокси-процесса в случае, если монитором безопасности была зафиксирована попытка доставки сообщений, отсутствующих в списке разрешенных.8. The method according to claim. 1, in which, when monitoring message delivery, the security monitor uses the proxy process API to determine allowed messages for the proxy process, while using the policy assignment tool, additionally specifying a list of allowed messages in accordance with the programming interface and assigning a security policy that prohibits the delivery of messages from the proxy process if the security monitor detected an attempt to deliver messages that are not on the allowed list. 9. Способ по п. 1, в котором при контроле доставки сообщений монитор безопасности использует программный интерфейс прокси-процесса для определения перечня процессов, с которыми разрешен обмен сообщениями прокси-процессу, при этом с помощью средства назначения политик дополнительно назначают политику безопасности, запрещающую обмен сообщениями между прокси-процессом и процессами, отсутствующими в перечне процессов, при этом перечень процессов включает по меньшей мере первый процесс.9. The method according to claim 1, in which, when monitoring message delivery, the security monitor uses the proxy process API to determine the list of processes with which the proxy process is allowed to exchange messages, while using the policy assignment tool, additionally assign a security policy that prohibits the exchange messages between the proxy process and processes not in the process list, the process list including at least the first process. 10. Способ по п. 1, в котором создают прокси-процесс для по меньшей мере двух процессов второй ОС, если между упомянутыми процессами второй ОС присутствует программный интерфейс для обмена сообщениями.10. The method of claim. 1, which creates a proxy process for at least two processes of the second OS, if between said processes of the second OS there is a programming interface for messaging. 11. Способ по п. 1, в котором политики безопасности используют по меньшей мере одну из следующих моделей:11. The method of claim 1, wherein the security policies use at least one of the following models: а) базовые операции;a) basic operations; б) конечный автомат;b) finite state machine; в) временный автомат;c) temporary machine; г) ролевое управление доступом;d) role-based access control; д) мандатный контроль целостности;e) mandatory integrity control; е) регулярные выражения;f) regular expressions; ж) дискретные события;g) discrete events; з) мандатные ссылки;h) mandatory references; и) темпоральная логика.i) temporal logic. 12. Система контроля доставки сообщений, передаваемых между процессами из разных ОС, реализуемая компьютером, включающим память и функционально связанный с памятью по меньшей мере один процессор, выполненный с возможностью осуществлять следующие средства:12. The system for monitoring the delivery of messages transmitted between processes from different OS, implemented by a computer, including memory and at least one processor functionally associated with the memory, configured to implement the following means: а) средство создания процесса, предназначенное для создания прокси-процесса в первой ОС, предназначенного для обмена сообщениями между по меньшей мере первым процессом в первой ОС и вторым процессом во второй ОС и обладающего программным интерфейсом, соответствующим программному интерфейсу второго процесса, при этом первая ОС и вторая ОС - это операционные системы, установленные в разных вычислительных средах;a) a process creation tool for creating a proxy process in the first OS, designed to exchange messages between at least the first process in the first OS and the second process in the second OS and having a programming interface corresponding to the programming interface of the second process, while the first OS and the second OS are operating systems installed in different computing environments; б) средство назначения политик, предназначенное для назначения по меньшей мере одной политики безопасности созданному прокси-процессу для контроля доставки сообщений, связанных с упомянутым прокси-процессом, где заданный программный интерфейс служит для передачи упомянутых сообщений, при этом упомянутые политики сохраняют в базу политик безопасности, которая хранится в памяти;b) a policy assigner for assigning at least one security policy to the created proxy process to control the delivery of messages associated with said proxy process, where the given API is used to transmit said messages, while said policies are stored in the security policy database , which is stored in memory; в) сформированный монитор безопасности, предназначенный для осуществления контроля доставки сообщений между по меньшей мере первым и вторым процессами путем контроля доставки сообщений, связанных с упомянутым прокси-процессом, на основании политик безопасности из базы политик безопасности.c) a generated security monitor for monitoring the delivery of messages between at least the first and second processes by monitoring the delivery of messages associated with said proxy process based on security policies from the security policy database. 13. Система по п. 12, в которой контроль доставки сообщения включает по меньшей мере разрешение или запрет доставки сообщения.13. The system of claim 12, wherein the message delivery control includes at least allowing or denying message delivery. 14. Система по п. 12, в которой сообщения включают по меньшей мере одно из запроса на запуск процесса, запроса и ответа на осуществление межпроцессного взаимодействия, запроса процесса к монитору безопасности.14. The system of claim 12, wherein the messages include at least one of a process start request, an interprocess communication request and response, a process request to a security monitor. 15. Система по п. 12, в которой вторая ОС является одной из по меньшей мере следующих:15. The system of claim 12, wherein the second OS is one of at least the following: гостевой ОС, работающей на виртуальной машине под управлением первой ОС на компьютере;a guest OS running in a virtual machine running the first OS on the computer; гостевой ОС, работающей на виртуальной машине, при этом первая ОС является второй гостевой ОС, работающей на второй виртуальной машине и связанной с первой виртуальной машиной посредством гипервизора;a guest OS running on a virtual machine, wherein the first OS is a second guest OS running on a second virtual machine and associated with the first virtual machine via a hypervisor; второй ОС на втором компьютере, который связан с компьютером, на котором функционирует первая ОС, по сети.a second OS on a second computer that is connected to the computer running the first OS via a network. 16. Система по п. 12, дополнительно содержащая средство формирования, предназначенное для формирования монитора безопасности в первой ОС.16. The system of claim. 12, further comprising a generator for generating a security monitor in the first OS. 17. Система по п. 16, в которой средство формирование предназначено для формирования монитора безопасности с учетом особенностей архитектуры первой ОС, в частности с учетом созданного прокси-процесса, а также с учетом назначенных прокси-процессу политик безопасности из базы политик.17. The system according to claim 16, in which the generation tool is designed to generate a security monitor, taking into account the architecture features of the first OS, in particular, taking into account the created proxy process, and also taking into account the security policies assigned to the proxy process from the policy base. 18. Система по п. 16, в которой средство формирования предназначено для формирования монитора безопасности путем создания кода монитора безопасности, включающего один из исходного кода, промежуточного кода, исполняемого кода.18. The system of claim 16, wherein the builder is for generating a security monitor by generating a security monitor code including one of source code, intermediate code, executable code. 19. Система по п. 12, в которой при контроле доставки сообщений, монитор безопасности предназначен для использования программного интерфейса прокси-процесса для определения разрешенных сообщений для прокси-процесса, при этом средство назначения политик дополнительно предназначено для задания списка разрешенных сообщений в соответствии с программным интерфейсом и назначения политики безопасности, запрещающей доставку сообщений от прокси-процесса в случае, если монитором безопасности была зафиксирована попытка доставки сообщений, отсутствующих в списке разрешенных.19. The system of claim. 12, in which, when monitoring message delivery, the security monitor is designed to use the proxy process API to determine allowed messages for the proxy process, while the policy assigner is additionally designed to set the list of allowed messages in accordance with the programmatic interface and assigning a security policy that prohibits the delivery of messages from the proxy process if the security monitor detected an attempt to deliver messages that were not on the allowed list. 20. Система по п. 12, в которой при контроле доставки сообщений монитор безопасности предназначен для использования программного интерфейса прокси-процесса для определения перечня процессов, с которыми разрешен обмен сообщениями прокси-процессу, при этом с помощью средства назначения политик дополнительно назначают политику безопасности, запрещающую обмен сообщениями между прокси-процессом и процессами, отсутствующими в перечне процессов, при этом перечень процессов включает по меньшей мере первый процесс.20. The system according to claim 12, in which, when monitoring message delivery, the security monitor is designed to use the proxy process API to determine the list of processes with which the proxy process is allowed to exchange messages, while using the policy assignment tool, the security policy is additionally assigned, prohibiting the exchange of messages between the proxy process and processes not in the process list, while the process list includes at least the first process. 21. Система по п. 12, в которой средство создания процесса предназначено для создания прокси-процесса для по меньшей мере двух процессов второй ОС, если между упомянутыми процессами второй ОС присутствует программный интерфейс для обмена сообщениями.21. The system of claim 12, wherein the process creator is for creating a proxy process for at least two processes of the second OS if there is a messaging API between said processes of the second OS. 22. Система по п. 12, в которой политики безопасности используют по меньшей мере одну из следующих моделей:22. The system of claim 12, wherein the security policies use at least one of the following models: а) базовые операции;a) basic operations; б) конечный автомат;b) finite state machine; в) временный автомат;c) temporary machine; г) ролевое управление доступом;d) role-based access control; д) мандатный контроль целостности;e) mandatory integrity control; е) регулярные выражения;f) regular expressions; ж) дискретные события;g) discrete events; з) мандатные ссылки;h) mandatory references; и) темпоральная логика.i) temporal logic.
RU2021126158A 2021-09-06 2021-09-06 System and method for controlling the delivery of messages transmitted between processes from different operating systems RU2777302C1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/835,034 US20230074455A1 (en) 2021-09-06 2022-06-08 System and method for monitoring delivery of messages passed between processes from different operating systems
EP22189845.5A EP4145318A1 (en) 2021-09-06 2022-08-11 System and method for monitoring delivery of messages passed between processes from different operating systems

Publications (1)

Publication Number Publication Date
RU2777302C1 true RU2777302C1 (en) 2022-08-02

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060150195A1 (en) * 2003-06-30 2006-07-06 Microsoft Corporation System and method for interprocess communication
US20060168331A1 (en) * 2005-01-06 2006-07-27 Terevela, Inc. Intelligent messaging application programming interface
US20070011687A1 (en) * 2005-07-08 2007-01-11 Microsoft Corporation Inter-process message passing
US20070266392A1 (en) * 2004-04-02 2007-11-15 Symbian Software Limited Inter Process Communication in a Computing Device
RU2714726C2 (en) * 2015-06-30 2020-02-20 Закрытое акционерное общество "Лаборатория Касперского" Automation architecture of automated systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060150195A1 (en) * 2003-06-30 2006-07-06 Microsoft Corporation System and method for interprocess communication
US20070266392A1 (en) * 2004-04-02 2007-11-15 Symbian Software Limited Inter Process Communication in a Computing Device
US20060168331A1 (en) * 2005-01-06 2006-07-27 Terevela, Inc. Intelligent messaging application programming interface
US20070011687A1 (en) * 2005-07-08 2007-01-11 Microsoft Corporation Inter-process message passing
RU2714726C2 (en) * 2015-06-30 2020-02-20 Закрытое акционерное общество "Лаборатория Касперского" Automation architecture of automated systems

Similar Documents

Publication Publication Date Title
RU2714726C2 (en) Automation architecture of automated systems
JP6588945B2 (en) System and method for analyzing malicious files in a virtual machine
US7421500B2 (en) Grid computing control system
RU2618946C1 (en) Method to lock access to data on mobile device with api for users with disabilities
US7784101B2 (en) Identifying dependencies of an application upon a given security context
JP2005327239A (en) Security-related programming interface
Armando et al. Formal modeling and reasoning about the android security framework
KR101665894B1 (en) Mandatory protection control in virtual machines
GB2403827A (en) Kernel cryptographic module signature verification system and method
US9652223B2 (en) Method and apparatus for executing integrated application program
US7779480B2 (en) Identifying dependencies of an application upon a given security context
US8095513B2 (en) Safe buffer
US7620995B2 (en) Identifying dependencies of an application upon a given security context
US20230074455A1 (en) System and method for monitoring delivery of messages passed between processes from different operating systems
RU2777302C1 (en) System and method for controlling the delivery of messages transmitted between processes from different operating systems
Zou et al. Building Automated Trust Negotiation architecture in virtual computing environment
Cuppens et al. Availability enforcement by obligations and aspects identification
RU2773108C1 (en) System and method for forming a security monitor
EP4145318A1 (en) System and method for monitoring delivery of messages passed between processes from different operating systems
RU2790338C1 (en) Data access control system and method
RU2770458C1 (en) Network gateway and method for transferring data from a first network to a second network
CN105701400A (en) Virtual machine platform safety control method and device
RU2775157C1 (en) System and methods for verifying the integrity of software install image
EP4095726A1 (en) System and method for building a security monitor in a microkernel
EP3361406A1 (en) System and method of analysis of files for maliciousness in a virtual machine