This disclosure relates generally to a cross-domain transfer system using shared memory, and, more particularly, to a cross-domain transfer system which passes data across a domain boundary by utilizing a shared memory which acts as a one-way transfer path so that information can be only written to the shared memory from one network domain and the same information can only be read from the shared memory in another separate network domain.
Many organizations have processing and communication environments which include different networks subject to differing levels of security. Such environments may include a highly secure network used to communicate confidential or secret information, and one or more less secure networks that do not process confidential or secret information. Such highly secure networks may have strict limitations on the type of data that can be imported thereto or exported therefrom. In addition, the data within a highly secure network may be subject to differing security requirements.
In some cases, a one-way link is be used to transfer data. For example, a one-way link may receive data from a highly secure network (the source network) on an input and forward such data to a less secure network (the destination network) on an output, or vice versa. A prior art cross-domain solution system 80 is shown which includes a first client 10 coupled to a first network 20 in a first network domain 44 (the area to the left of dotted line 45). A send server 30 is also coupled to first network 20. The send server 30 is coupled to a receive server 50 via a one-way link 40. The receive server 50 is coupled to a second network 60 in a second network domain 46 (the area to the right of dotted line 45). A second client 70 is also coupled to second network 60. First network 20 is completely isolated from second network 60, except for the one-way transfer path provided by send server 30, one-way link 40, and receive server 50. Typically, the first network 20 has a different security classification than second network 60. To transfer information or files from the first client 10 to the second client 7one0, first client 10 initiates the transfer by forwarding the information or files to send server 30 (shown by arrow 15 in
Accordingly, there is a need for a cross-domain transfer system which overcomes the foregoing problems.
In a first aspect, a one-way transfer system uses a shared memory. The one-way transfer system has an input interface for receiving input information. The one-way transfer system also has an input processor coupled to the input interface and configured to receive the input information from the input interface and to process the input information. The input processor is also coupled to the shared memory in a manner that allows information to be written to the shared memory and prevents information from being read from the shared memory. The input processor is further configured to write the processed input information to the shared memory. The one-way transfer system further has an output interface for transmitting output information. The one-way transfer system finally has an output processor coupled to the shared memory in a manner that allows information to be read from the shared memory and prevents information from being written to the shared memory. The output processor is also coupled to the output interface and configured to monitor the shared memory for new information, to read the new information, and to forward the new information to the output interface as output information. The output processor has no communications pathway to transfer any information to the input processor.
In a further embodiment, the shared memory may have a write enable pin and a read enable pin. The input processor may be connected to the write enable pin and may not be connected to the read enable pin. The output processor may be connected to the read enable pin and may not be connected to the write enable pin. In addition, the input processor may be configured to process the input information by filtering the input information based on predetermined criteria. Further, the input processor may be configured to process the input information by encrypting the input information and the output processor may be further configured to decrypt the new information before forwarding the decrypted new information to the output interface. Still further, the shared memory, the input processor, and the output processor may be provided on a single integrated circuit.
In a second aspect, a one-way transfer system uses a first shared memory and a second shared memory. The one-way transfer system has an input interface for receiving input information. The one-way transfer system also has an input processor coupled to the input interface and configured to receive the input information from the input interface and to process the input information. The input processor is also coupled to the first shared memory and the second shared memory in a manner that allows information to be selectively written to one of the first shared memory or the second shared memory based on predetermined criteria and prevents information from being read from the first shared memory and the second shared memory. The input processor is further configured to selectively write the processed input information to the first shared memory or the second shared memory. The one-way transfer system further has an output interface for transmitting output information. The one-way transfer system finally has an output processor coupled to the first shared memory and the second shared memory in a manner that allows information to be read from the first shared memory or the second shared memory and prevents information from being written to the first shared memory or the second shared memory. The output processor is also coupled to the output interface and configured to monitor the first shared memory and the second shared for new information, to read the new information, and to forward the new information to the output interface as output information. The output processor has no communications pathway to transfer any information to the input processor.
In a further embodiment, the first shared memory and the second shared memory each may have a write enable pin and a read enable pin. The input processor may be connected to the write enable pin of the first shared memory and to the write enable pin of the second shared memory. The input processor may not be connected to the read enable pin of the first shared memory and to the read enable pin of the second shared memory. The output processor may be connected to the read enable pin of the first shared memory and to the read enable pin of the second shared memory. Finally, the output processor may not be connected to the write enable pin of the first shared memory and to the write enable pin of the second shared memory. Further, the input processor may be configured to process the input information by filtering the input information based on predetermined criteria. Still further, the input processor may be configured to process the input information by encrypting the input information and the output processor may be further configured to decrypt the new information before forwarding the new information to the output interface. Also, the first shared memory, the second shared memory, the input processor, and the output processor may be provided on a single integrated circuit. In addition, the input information may comprise a first type of data packets and a second type of data packets, and the predetermined criteria may comprise a type of packet. Further, the first type of data packets may comprise Transmission Control Protocol/Internet Protocol packets and the second type of data packets may comprise User Datagram Protocol packets.
In a third aspect, a bidirectional transfer system uses a first shared memory and a second shared memory. The bidirectional transfer system has a first interface for receiving first input information and transmitting first output information. The bidirectional transfer system also has a first processor coupled to the first interface and configured to receive the first input information from the first interface and to process the first input information. The first processor is also coupled to the first shared memory in a manner that allows information to be selectively written to the first shared memory and prevents information from being read from the first shared memory. The first processor is also coupled to the second shared memory in a manner that allows information to be selectively read from the second shared memory and prevents information from being written to the second shared memory. The first processor is further configured to write the processed first input information to the first shared memory. The first processor is also configured to monitor the second shared for first new information, to read the first new information, and to forward the first new information to the first interface as first output information. The bidirectional transfer system further has a second interface for receiving second input information and transmitting second output information. The bidirectional transfer system finally has a second processor coupled to the first shared memory in a manner that allows information to be read from the first shared memory and prevents information from being written to the first shared memory. The second processor is also coupled to the second interface and configured to monitor the first shared memory for second new information, to read the second new information, and to forward the second new information to the second interface as second output information. The second processor is also coupled to the second shared memory in a manner that allows information to be selectively written to the second shared memory and prevents information from being read from the second shared memory. The second processor is also configured to receive the second input information from the second interface, to process the second input information, and to write the processed second input information to the second shared memory, the second processor having no other communications pathway with the first processor.
In a further aspect, the first shared memory and second shared memory each may have a write enable pin and a read enable pin. The first processor may be connected to the write enable pin of the first shared memory and to the read enable pin of the second shared memory. The first processor may not be connected to the read enable pin of the first shared memory and to the write enable pin of the second shared memory. The second processor may be connected to the read enable pin of the first shared memory and to the write enable pin of the second shared memory. The second processor may not be connected to the write enable pin of the first shared memory and to the read enable pin of the second shared memory. The first processor may be configured to process the first input information by filtering the first input information based on predetermined criteria. The first processor may be configured to process the first input information by encrypting the first input information and the second processor may be further configured to decrypt the second new information before forwarding the decrypted second new information to the second interface. The first shared memory, the second shared memory, the first processor, and the second processor may be provided on a single integrated circuit.
In a fourth aspect, a filter criteria storage system using a shared memory. The filter criteria storage system has an interface for receiving filter criteria information. The filter criteria storage system further has a processor coupled to the interface and configured to receive the filter criteria information from the interface and to process the filter criteria information. The processor is also coupled to the shared memory in a manner that allows information to be written to the shared memory and prevents information from being read from the shared memory. The processor is further configured to write the processed filter criteria information to the shared memory. The filter criteria storage system finally has a filter engine coupled to the shared memory in a manner that allows information to be read from the shared memory and prevents information from being written to the shared memory. The filter engine is configured to monitor the shared memory for new filter criteria information, to read the new filter criteria information, and to store the new filter criteria information in an internal memory.
In a further embodiment, the shared memory may have a write enable pin and a read enable pin. The processor may be connected to the write enable pin and may not be connected to the read enable pin and the filter engine may be connected to the read enable pin and may not be connected to the write enable pin. The processor may be configured to process the filter criteria information by validating that the filter criteria information conforms to predetermined criteria.
The features, functions, and advantages can be achieved independently in various embodiments of the present disclosure or may be combined in yet other embodiments in which further details can be seen with reference to the following description and drawings.
The following detailed description, given by way of example and not intended to limit the present disclosure solely thereto, will best be understood in conjunction with the accompanying drawings in which:
In the present disclosure, like reference numbers refer to like elements throughout the drawings, which illustrate various exemplary embodiments of the present disclosure.
Referring now to the drawings and in particular to
Output processor 120 is connected to memory 115 in a manner which allows output processor 120 to read information from memory 115 but without any ability to write data to memory 115. For example, output processor 120 may be connected to the read enable pin of memory 115 and not be connected to the write enable pin of memory 115. Output processor 120 is also connected to output interface 125. Output processor 120 is configured to monitor the memory 115 to detect when new data is stored therein, and, when the existence of new data is detected, output processor 120 is configured to read that data, to optionally process (e.g., decrypt) such data, and to forward such data (processed data, if processed) to output interface 125. During the memory write process, input processor 110 may, for example, change the state of a particular dedicated memory location in memory 115. Output processor 120 may thereafter identify the presence of new data by monitoring the memory 115 to identify when the state of that particular memory location has changed. No other connections are provided between input processor 110 and output processor 120, so the only path available to transfer information between input processor 110 and output processor 120 is via memory 115. Since input processor 110 can only write to memory 115 and output processor 120 can only read from memory 115, one-way link system 100 has a one-way transfer path from the input interface 105 to the output interface 125 and there is no possibility of any data or other information of any kind passing from output interface 125 to input interface 105 because there is no path at all for data to flow from output processor 120 to input processor 110. The use of a shared memory 115, instead of an optical fiber coupled between a send-only interface card coupled to a send server and a receive-only interface card coupled to a receive server, as in the prior art system shown in
In one implementation of one-way link 101, each of the components 105, 110, 115, 120, 125 shown in
In operation, one-way link system 100 provides a secure way to transfer data from a first communications line (i.e., a line coupled to input interface 105) to a second communications line (i.e., a line coupled to output interface 125), while preventing any data from flowing from the second communications line (i.e., a line coupled to output interface 125) to the first communications line (i.e., a line coupled to input interface 105). Referring now to
In some cases, the transfer from first client 140 to second client 150 may be done using TCP/IP protocol, with the input processor 110 and output processor 120 (
In other cases, the data transferred across one-way link 101 may be in the form of UDP packets, with the input processor 110 and output processor 120 each configured as a UDP socket, as also discussed in the '581 Patent. Further, the one-way link 101 may be configured to perform both TCP/IP protocol transfer and UDP transfer, as additionally discussed in the '581 Patent.
The use of shared memory as the one-way transfer path in a one-way link also provides the ability to provide parallel transfer paths from the input to output of such link. The use of parallel transfer paths enables faster throughput and/or the ability to provide different throughput speeds for different types of data. For example, UDP packets representing streaming video data may pass along a higher throughput channel while TCP/IP packets my pass along a slower throughput channel. Referring now to
The circuits that make up one-way link system 200 may be provided in separate discrete integrated circuits 205, 210, 215, 216, 217, 220, 225 or some or all of the functionality of such integrated circuits may be provided on a single chip which may be a custom or semicustom integrated circuit, or a field programmable gate array (FPGA) circuit. For example, a single chip 230 may be provided which includes the functionality of input processor 210, memories 215, 216, 217, and output processor 220.
In operation, the one-way link system 200 of
In some situations, it is desirable to have a bidirectional transfer system that employs parallel one-way links in opposite directions to each other. This type of system can be used to filter data passing in each direction, for example, and ensures that only filtered data is output from each interface. Such a system can be implemented using shared memory, as shown in
The circuits that make up bidirectional link system 300 may be provided in separate discrete integrated circuits 305, 310, 315, 316, 320, 325 or some or all of the functionality of such integrated circuits may be provided on a single chip which may be a custom or semicustom integrated circuit, or a field programmable gate array (FPGA) circuit. For example, a single chip 330 may be provided which includes the functionality of first processor 310, memories 315, 316, and second processor 320.
First processor 310 is configured to receive input information (e.g., packets or files) from first interface 305, to process such information (e.g., to remove IP information and/or to filter the data), and to write such processed information to memory 315. In addition, first processor is configured to monitor the memory 316 for the presence of new information stored therein (as discussed above with respect to output processor 120 in
Second processor 320 is configured to receive input information (e.g., packets or files) from second interface 325, to process such information (e.g., to remove IP information and/or to filter the data), and to write such processed information to memory 316. In addition, first processor is configured to monitor the memory 315 for the presence of new information stored therein (as discussed above with respect to output processor 120 in
Bidirectional link system 300 allows information to flow in two directions between two different security domains and provides the ability to filter all information flowing between such security domains to ensure that no malware or other undesirable or unapproved information passes across the boundary between the two security domains. In addition, a protocol break may be provided so that IP information from one of the security domains is removed before the information is transmitted to the other of the security domains. The protocol break provides protection to the originating security domain since no IP information is passed outside such security domain.
In some filtering applications, there is a need to securely receive and store filter criteria, i.e., the criteria used by a filter engine to filter information. A one-way link formed using shared memory can be used to secure such filter criteria. Referring now to
The various embodiments disclosed herein provide a flexible and economical way to transmit information across a security domain boundary. Although the present invention has been particularly shown and described with reference to the preferred embodiments and various aspects thereof, it will be appreciated by those of ordinary skill in the art that various changes and modifications may be made without departing from the spirit and scope of the invention. It is intended that the appended claims be interpreted as including the embodiments described herein, the alternatives mentioned above, and all equivalents thereto.