Method for establishing trust in a computer network via association6212636Abstract A method is disclosed for establishing trusted communications with associations for communications between users on an Internet Protocol based computer network. The method entails the first user's SNIU determining the Internet Protocol (IP) address of a second user's SNIU on the computer network through the use of custom and ICMP Echo Request and Reply messages. The user's SNIUs exchange security related information needed to complete the establishment of a trusted association. The trusted association is maintained during all communications between the first user and the second user. Claims What is claimed is: Description FIELD OF THE INVENTION
0 8 16 24 31
HARDWARE TYPE PROTOCOL TYPE
HLEN PLEN OPERATION
SENDER'S HA (bytes 0-3)
SENDER'S HA (bytes 4-5) SENDER'S IP (bytes 0-1)
SENDER'S IP (bytes 2-3) TARGET'S HA (bytes 0-1)
TARGET'S HA (bytes 2-5)
TARGET'S IP (bytes 0-4)
where: HARDWARE TYPE is set to 0001 hex to indicate Ethernet PROTOCOL TYPE is set to 0800 hex to indicate IP addresses HLEN hardware address length) is set to 06 hex bytes PLEN (protocol address length) is set to 04 hex bytes OPERATION is set to 0001 hex for an ARP Request message 0002 hex for an ARP Response message 0003 hex for a RARP Request message 0004 hex for a RARP Response message SENDER'S HA contains the sender's 48 bit Ethernet hardware address SENDER'S IP contains the sender's 32 bit IP address TARGET'S HA contains the target's 48 bit Ethernet hardware address TARGET'S IP contains the target's 32 bit IP address When a host broadcasts a request message, it fills in all of the data and the target's hardware address field is set to 000000 hex if an ARP; or the sender's and target's IP address fields are set to 0000 hex if a RARP. When the target machine responds, it fills in the missing address and changes the operation field to indicate a response message. During an ARP, the target machine swaps the sender's and target's addresses so that the sender's address fields contains its addresses and the target's address fields contains the original requesting host's addresses. During a RARP, the server stores its addresses in the sender's address fields and returns the response to the original sender's hardware address. When a SNIU receives a message, it performs the following processes. ARP Request--If an ARP Request message is received on a SNIU's port A, the untrusted software in port A's memory segment determines if the sender's IP address is in port A's ARP cache. If not, it creates a new entry in the ARP cache and inserts the sender's hardware and IP addresses. Otherwise, the sender's hardware address is copied into the entry (overwriting any previous address); and packets (if any) waiting to be sent to the sender's IP address are transmitted. If the target's IP address is in port A's address list (i.e., a list of IP addresses which are reachable from port B), the untrusted software returns an ARP Response message swapping the SENDER'S and TARGET'S addresses and inserting port A's Ethernet hardware address into the SENDER's HA field. In either case, the untrusted software passes the ARP Request to the Trusted Computing Base (TCB). The TCB checks port B's address list for the SENDER'S IP. If the SENDER'S IP is not in port B's address list, the TCB determines whether the SENDER'S IP is releasable to port B; and if releasable, inserts it into port B's address list. Secondly, the TCB determines whether a proxy ARP Request should be broadcast from port B. If an ARP Response message was not returned by port A, and the target's IP address is not in port A's ARP cache, and the sender's IP is releasable to port B, the TCB creates a proxy ARP Request message. The TCB inserts port B's hardware and IP addresses in the SENDER'S address fields, copies the target's IP address from the original ARP Request into the TARGET'S IP field, and signals port B's untrusted software to broadcast the message. Each time the TCB releases a proxy ARP Request, it creates an Anticipated Message in the form of a proxy ARP Response message which contains the original sender's addresses in the TARGET'S fields, the target's IP address in the SENDER'S IP field, and port A's hardware address in the SENDER'S HA field. This message is saved in the Anticipated Message list for port A and will be released to port A's untrusted software for transmission if the anticipated ARP Response message is received on port B. Note that releasability may involve the TCB modulating ARP Requests from a high network to a low network in order to not exceed the 100 bits per second covert channel bandwidth requirement. ARP Response--If an ARP Response message is received on a SNIU's port A, the untrusted software in port A's memory segment determines if the sender's IP address is in port A's ARP cache. If not, it creates a new entry in the ARP cache and inserts the sender's hardware and IP addresses. Otherwise, the sender's hardware address is copied into the entry (overwriting any previous address); and packets (if any) waiting to be sent to the sender's IP address are transmitted. Finally, the untrusted software passes the ARP Response to the TCB. The TCB checks port B's address list for the SENDER'S IP. If the SENDER'S IP is not in port B's address list, the TCB determines whether the SENDER'S IP is releasable to port B; and if releasable, inserts it into port B's address list. Secondly, the TCB checks the Anticipated Message list for port B and determines whether the ARP Response was due to a proxy ARP Request made for a request originally received on port B. If the SENDER'S IP matches an entry in the Anticipated Message list and the message is releasable to port B, the TCB signals port B's untrusted software to create a proxy ARP Response message identical to the Anticipated Message, and removes the message from the Anticipated Message list for port B. RARP Request--If a RARP Request message is received on a SNIU's port A, the untrusted software in port A's memory segment checks a flag to determine if the SNIU was initialized to act as a RARP server for the network attached to port A. If not, the received message is ignored. Otherwise, the untrusted software passes the RARP Request to the TCB. The TCB determines whether the RARP Request can be released to port B. If releasable, it creates a proxy RARP Request message copying the TARGET'S HA from the received message and inserting port B's addresses in the SENDER'S HA and IP fields, passes the proxy RARP Request message to port B's untrusted software for broadcast, and creates an Anticipated message in the form of a proxy RARP Response message. The TCB copies the original TARGET'S HA, inserts port A's hardware address in the SENDER'S HA, and saves it in the Anticipated Message list for port A. RARP Response--If a RARP Response message is received on a SNIU's port A, the untrusted software in port A's memory segment determines if the sender's IP address is in port A's ARP cache. If not, it creates a new entry in the ARP cache and inserts the sender's hardware and IP addresses. Otherwise, the sender's hardware address is copied into the entry (overwriting any previous address); and packets (if any) waiting to be sent to the sender's IP address are transmitted. Finally, the untrusted software inserts the TARGET'S IP into port A's address list and passes the RARP Response to the TCB. The TCB checks port B's address list for the SENDER'S IP. If the SENDER'S IP is not in port B's address list, the TCB determines whether the SENDER'S IP is releasable to port B; and if releasable, inserts it into port B's address list. Secondly, the TCB determines whether the TARGET'S IP is releasable to port B. If releasable, the TCB creates a new entry in port B's ARP cache and inserts the TARGET'S HA and IP. The TCB uses the TARGET'S HA to find the appropriate proxy RARP Response message in port B's Anticipated Message List and copies the TARGET'S IP and SENDER'S IP into the Anticipated message, signals port B's untrusted software to create a proxy RARP Response message identical to the Anticipated Message, and removes the message from the Anticipated Message list for port B. Trusted Session Protocol Dragonfly units (e.g., SNIUs and Companions) establish associations in order to authenticate each other, exchange security parameters, and establish a trusted session for communication. Dragonfly uses a combination of custom messages and standard ICMP Echo Request and Echo Reply messages to identify Dragonfly units between source and destination hosts on a network and establish a trusted communications path. Once the path and an association between two SNIUs has been established, user datagrams are encapsulated in custom Dragonfly messages called Protected User Datagrams for secure transmission between the two SNIUs. This collection of messages to establish and utilize associations is referred to as the Dragonfly Trusted Session Protocol (TSP). When a host behind a SNIU attempts to communicate with someone else over the network, the SNIU stores the datagram from the host in a Waiting Queue and transmits an Association Request Message and an ICMP Echo Request to the intended destination. The Association Request Message is used to identify other Dragonfly units in the communications path and to carry the originating SNIU's security parameters. The SNIU inserts the originating host's security level, appends its certificate, and signs the message. The ICMP Echo Request message contains a flag which indicates that it came from a SNIU. This message is referred to as a Dragonfly Ping Message. Each Dragonfly unit which receives the Association Request Message authenticates the message, saves a copy of the message, appends its certificate, signs the message, sends it on to the destination, and sends a new Dragonfly Ping Message to the destination. When a SNIU receives a Dragonfly Ping Message from another SNIU, the message is discarded and not passed through to the destination. When a destination host receives an Association Request Message, it does not recognize the Dragonfly custom protocol; so it discards the message. However, the destination host does recognize the Dragonfly Ping Message as an ICMP Echo Request message; so it returns an ICMP Echo Reply message. Therefore, a SNIU only receives an ICMP Echo Reply if and only if no other SNIU exists between the SNIU which sent the Dragonfly Ping Message (an ICMP Echo Request) and the destination host. The SNIU which receives the ICMP Echo Reply message is the terminating SNIU (i.e., closest to the destination) in the potential association's communications path. This SNIU determines if the association should be permitted (i.e. would not violate the security policy). If permitted, the SNIU grants the association, generates an encryption key for the association, and encrypts the key using the originating SNIU's public key (from its certificate). If the saved copy of the Association Request Message contained an intermediate SNIU's certificate, the SNIU also generates a release key and encrypts it using the intermediate SNIU's public key. The terminating SNIU creates an Association Grant Message, stores the encrypted key(s), inserts the destination host's security level, appends its certificate, signs the message, and sends it onto the originating SNIU. Each intermediate SNIU (if any exist) which receives the Association Grant Message authenticates the previous SNIU's signature, extracts the release key, generates a new release key for the next SNIU, encrypts the key using the public key (from the certificate in the saved copy of the Association Request message) of the next SNIU, removes the previous intermediate SNIU's certificate and signature, appends its own certificate and signature, and sends the message on the return path. When the originating SNIU receives the Association Grant Message, it authenticates the message and extracts the key(s). Once the association is granted, the originating SNIU fetches the originating host's datagram from the Waiting Queue and prepares to send it to the terminating SNIU in the newly established association. The SNIU uses the association key to encrypt the datagram for privacy and store it and the encryption residue into a new datagram from the originating SNIU to the terminating SNIU. If the association contains intermediate SNIU's, the originating SNIU uses the release key to calculate a second encryption residue and appends it to the datagram. Finally, the SNIU transmits the protected user datagram to the peer SNIU in the association. When the protected user datagram is received by an intermediate SNIU (if any in the path), the intermediate SNIU fetches the release key corresponding to the previous SNIU and uses the release key to validate the datagram. If valid, the SNIU removes the release key residue from the datagram and checks to determine whether there are more intermediate SNIUs in the path before reaching the terminating SNIU. If another intermediate SNIU exists, the release key corresponding to the next intermediate SNIU is used to calculate a new release residue which is appended to the datagram. In either case, the datagram is sent on its way out the opposite port from which it was received. When the terminating SNIU receives the protected user datagram, it uses the association key corresponding to the originating SNIU to decrypt and validate the datagram. If the source and destination hosts are at the same security level (i.e., a write-equal situation), the decrypted datagram is sent out the opposite port to the destination host. If the source host has a lower security level than the destination (i.e., a write-up situation), the SNIU predicts the response from the destination and saves it before sending the decrypted datagram to the destination host. If the source host has a higher security level than the destination (i.e., a write-down situation), the received datagram (i.e., a response to a previous datagram from the lower level host) was predicted by the SNIU which sent the protected datagram. Therefore, this SNIU is assured that the classification of the received datagram is dominated by the lower level destination host; so the datagram is released to the destination. If a SNIU receives a user datagram from a native host which would be a write-down to the destination host and no predicted datagram is found, the received datagram is erased and the attempted write-down is audited. TSP Message Processing Tables There are three tables which are used to process in-coming and out-going messages; the Association Table, the Symmetric Key Table (Sym_Key), and the Certificate Table. Each SNIU has two Association tables, one for each port. Each entry contains data corresponding to a particular source or destination IP address. The Sym_Key table contains data corresponding to a particular message encryption key (MEK) which could be used as a release key or an association key. The Certificate table contains recently received certificates from other SNIU's. Each table consists of a linked list of tokens in which the data for an entry in the table is stored in a token. The tokens for each table have a unique data structure and are linked together in `free` lists during initialization. When a new entry is made in one of the tables, a token is removed from the free list for that table's tokens, the data for the new entry is inserted in the appropriate fields of the token, and the token is linked at the top of the table. When an entry is removed from a table, the `previous` and `next` tokens are linked, the data fields in the token are cleared, and the token is linked at the bottom of the appropriate free list. Whenever the data in an entry is used, the token is removed from the table and re-linked at the top of the table. In this way the oldest (i.e., least used) entry is at the bottom of the table. If a new entry is needed and the free list is empty, the bottom token is removed from the table, the data fields are cleared, the new entry's data is inserted, and the token is linked at the top of the table. In addition, when a SNIU removes the bottom (oldest unused) token in the Sym_Key Table, it also removes every token in the Association Table which pointed to the removed key. A SNIU does not terminate an association when a certificate, key, or Association Table entry is removed because many valid entries using the same association could still exist. A token for the Association Table has the following data structure:
0 8 16 24 31
NEXT
PREVIOUS
IP ADDRESS
PEER SNIU IP ADDRESS
ASSOCIATION KEY POINTER
RELEASE KEY POINTER
ASSOC-TYPE RELKEY-TYPE SECURITY- AC-CLIENT
LEVEL
where: NEXT is a pointer to the next token in the table or list PREVIOUS is a pointer to the previous token in the table or list IP ADDRESS is the IP address of the source/destination PEER SNIU IP ADDRESS is the address of the other terminating SNIU for the association ASSOCIATION KEY POINTER points to the association MEK in the Sym_Key table RELEASE KEY POINTER points to the release MEK in the Sym_Key table ASSOC-TYPE is set to 0001 hex for `pending` 0002 hex for `host` (i.e., the entry is for a host destination) 0003 hex for `sniu` (i.e., the entry is for a SNIU destination) 0004 hex for `native host` (i.e., no peer SNIU) 0005 hex for `audit catcher` RELKEY-TYPE is set to 0001 hex for `in` (i.e., use to validate release key residue) 0002 hex for `out` (i.e., use to add release key residue) 0003 hex for `both` SECURITY-LEVEL indicates the security level of the source/destination AC-CLIENT indicates if the source/destination is an audit catcher client A token for the Sym_Key Table has the following data structure:
0 8 16 24 31
NEXT
DISTINGUISHED NAME (bytes 0-3)
. . .
DISTINGUISHED NAME (bytes 28-31)
MEK (bytes 0-3)
MEK (bytes 4-7)
MFK (bytes 8-11)
IV (bytes 0-3)
IV (bytes 4-7)
IV (bytes 8-11)
IV (bytes 12-15)
IV (bytes 16-19)
IV (bytes 20-23)
CERTIFICATE POINTER
INDEX SPARE SPARE
where: NEXT is a pointer to the next token in the table or list PREVIOUS is a pointer to the previous token in the table or list DISTINGUISHED NAME is the 128 byte name in certificate from the other SNIU using this key MEK is the 12 byte wrapped key (association or release) shared with the another SNIU IV is the 24 byte initialization vector associated with the MEK CERTIFICATE POINTER points to the other SNIU's certificate in the Certificate table INDEX is a Fortezza card key register index which indicates if and where the key is loaded (1-9 are valid key register indexes, 0 indicate that the key is not loaded on the Fortezza) SPARE is an unused byte to keep addressing on 32-bit boundary Dragonfly Message Flag Any message (IP datagram) which is generated or modified by a Dragonfly unit contains a Dragonfly Message Flag in the last four bytes of the datagram. The first byte is the message type field; the second byte is the message format field; and the third and fourth bytes are the Dragonfly Flag. Note that all Dragonfly message types are signed except for Dragonfly Ping and Protected User Datagram (PUD) Messages. Note that a PUD uses MEK residues for integrity and authentication. Message Type: 51. Audit Event 52. Audit Catcher List 53. Audit Catcher Check-In 54. Audit Mask 55. Host Unknown 56. Association Request 57. Association Grant 58. Association Denial (currently not implemented) 59. Association Unknown 60. Protected User Datagram 61. Receipt 62. Certificate Revocation List 63. Dragonfly Ping 64. SNIU Initialization 65. Association Established 66. Release Key Unknown Message Format: 46. Signed Type 1 (source SNIU's certificate and signature) 47. Signed Type 2 (source and intermediate SNIUs' certificates and signature) 48. PUD Type 1 (Association MEK residue) 49. PUD Type 2 (Association MEK and Release MEK residues) Dragonfly Flag: dfdf hex Waiting Queue and Schedule Table The Waiting Queue is used to store IP datagrams for potential future processing based upon some anticipated event. For every entry made in the Waiting Queue, a corresponding entry is made in the Schedule Table. The Schedule Table is used to automatically process entries in the Waiting Queue if they have not been processed within some predetermined amount of time (i.e., the anticipated event does not occur). The Schedule Table entry contains a time-out field (which is set to the current time plus some reasonable delta representing the maximum waiting period) and a function pointer (which indicates which subroutine should be called if time expires before the Waiting Queue entry is processed). The Schedule Table is checked in the main executive loop of the TCB; expired entries are removed; and the corresponding datagrams in the Waiting Queue are processed by the designated subroutine. For example, when a SNIU receives a user datagram from a native host which is destined for another host for which there is no existing association, the SNIU stores the user datagram in the Waiting Queue and transmits an Association Request Message. When the Association Grant Message is received, the user datagram is removed from the Waiting Queue, the corresponding Schedule Table entry is deleted, and the user datagram is encrypted and sent to the peer SNIU of the association. If an Association Grant Message is never received, the Schedule Table entry expires which calls a subroutine to delete the user datagram from the Waiting Queue. Another example is when the SNIU sends an Audit Event Message to an Audit Catcher. The transmitted datagram is stored in the Waiting Queue. When the Receipt Message is received from the Audit Catcher, the original Audit Event datagram is removed from the Waiting Queue and the corresponding Schedule Table entry is deleted. If the Schedule Table entry expires, the designated subroutine is called which re-transmits the Audit Event Message stored in the Waiting Queue and a new entry is made in the Schedule Table. Generating and Exchanging MEKs Message Encryption Keys (MEKs) are generated during the association establishment process (previously described) and are exchanged via the Association Grant Message. When a SNIU generates an MEK, it simultaneously generates an initialization vector (IV). When a SNIU exchanges an MEK with another SNIU, it generates a random number, RA, which is required to encrypt (i.e., wrap) the MEK. The key exchange algorithm is designed so that only the sending and receiving SNIUs can decrypt the MEK and use it. The sender wraps the MEK for transmission using the destination's public key, RA, RB (which is always set=1), and the sender's private key. IVs which were generated with release keys are transmitted in the clear with the wrapped MEK in the Association Grant Message. IVs which were generated with association keys are ignored. The recipient unwraps the key using its private key, RA, RB, and the sending SNIU's public key. Once unwrapped, the safe exchange is complete. Each SNIU re-wraps the MEK using its storage key (Ks), stores the MEK and the IV (if the MEK is a release key) in the Sym_Key Table, stores the pointer to the MEK in the Association Table and stores the Distinguished Name (of the other SNIU sharing this MEK) in the Sym_Key Table entry. Using MEKs and IVs Message Encryption Keys (MEKs) are used as association and release keys to provide confidentiality, integrity and authentication of user datagrarns during an association between two SNIUs. IVs are used to initialize the feedback loop in the Skipjack encryption algorithm for most modes of operation. Encrypting identical data using the same MEK, but different IVs, will produce different ciphertext. In fact, the Fortezza card requires the user to generate a new IV for each encryption event in order to assure that each message looks different when encrypted. When a SNIU encrypts a user datagram it first generates a new IV for the association key, encrypts the datagram, appends the encryption residue for integrity and authentication purposes, and appends the new IV. If the association involves intermediate SNIUs, the SNIU does a second encryption operation (on the new ciphertext, residue, and IV) using the release key and release key IV. The release key IV is never changed since the encrypted data is always guaranteed to be unique even if the original datagram was not. The release key residue is appended to the protected user datagram. The completed protected user datagram is transmitted. Received Message Processing When a SNIU receives an IP datagram, it checks the destination address in the header and determines if it is the intended recipient. Then, it checks the last four bytes of the IP datagram for the Dragonfly Message Flag and determines the type and format of the received message. Destination SNIU Message Processing When a SNIU receives an IP datagram which is addressed to it, the message should be one of the following types of Dragonfly formatted messages. If it is not, the SNIU will audit the event. The only exceptions are ICMP Echo Request messages which are processed by the receiving port's untrusted software and not passed to the trusted computing base. 51. Audit Event--If the SNIU is not configured to be an Audit Catcher, it will audit the event sending the source IP address of the received message to its primary Audit Catcher. If the SNIU is configured to be an Audit Catcher, it verifies the signature on the message, increments its received audit event sequence number, generates a time-stamp, and prints the sequence number, time-stamp, source IP address, and ASCII character string from the message. Once the event has been recorded, the Audit Catcher SNIU generates a Receipt Message (copies the audit event counter from the received message and inserts it in the message number field), and sends it. 52. Audit Catcher List--The SNIU verifies the signature on the message, stores the new list of Audit Catchers in the Configuration Table, generates a SNIU Initialization Message, generates a Receipt Message, and updates the Audit Catcher Check-In Message stored in the Waiting Queue. 53. Audit Catcher Check-In--If the SNIU is not configured to be an Audit Catcher, it will audit the event sending the source IP address of the received message to its primary Audit Catcher. If the SNIU is configured to be an Audit Catcher, it verifies the signature on the message, generates a time-stamp, prints the time-stamp and source IP address, and compares the audit mask in the received message with the current mask. If they do not match, the current audit mask is sent to the SNIU which just checked-in. Note that the period between check-ins is a parameter in each SNIU's configuration data. The audit catcher does not return a Receipt Message in any case. 54. Audit Mask--The SNIU verifies the signature on the message, stores the new audit mask in the Configuration Table and the Audit Catcher Check-In Message stored in the Waiting Queue, generates a Receipt Message, and audits the event (in case someone else other than the Audit Catcher is distributing new audit masks). 55. Host Unknown--When a SNIU receives a valid Protected User Datagram, but cannot find the destination's Association Table entry, it sends a Host Unknown Message back to the originating SNIU and audits the event. The originating SNIU verifies the signature on the received Host Unknown Message, extracts the original destination host's IP, removes the host's entry from its Association Table and audits the event. It does not remove the peer SNIU's entry nor entries from the Sym_Key Table as they might be supporting other associations. 56. Association Request--This message should only be sent to native hosts and intercepted by SNIUs; but a SNIU should never be the destination. 57. Association Grant--The SNIU verifies the signature in the datagram and updates the receiving port's Association Table entries for the peer SNIU and host destination. The SNIU determines if an entry exists for the peer SNIU. If not, the SNIU creates a new entry for the peer SNIU and marks the association type as `sniu`. In either case, the SNIU extracts and unwraps the association MEK (and release MEK if needed), stores the re-wrapped key(s) in the Sym_Key Table (being careful to over-write the old keys without changing the pointers to the keys if some already existed), and marks the release key type as `out` (if a release key exists). If the received message indicates that existing release keys are to be used, the SNIU searches the Association Table for `sniu` type entries and checks the DN of each Sym_Key Table entry identified via the release key pointer. The SNIU compares that DN with the DN in the bottom certificate in the received message. If a match is found, the release key pointer is copied to the Association Table entry for the peer SNIU of this new association. If no match can be found, the SNIU generates a Release Key Unknown Message. This message is generated by modifying the received Association Grant Message. The destination address (its IP) is swapped with the peer SNIU's address (i.e., the association granting SNIU's IP) in the data section of the datagram. The previous SNIU's certificate is replaced with this SNIU's certificate so the previous SNIU can wrap the new release key and return it to this SNIU in the Association Grant Message. The signature at the bottom is removed. The message number is changed from 58 to 66. The new message is signed and sent back to the previous SNIU in the path. Finally, the association type field of the peer SNIU's entry in the Association Table is changed back to `pending`. If a Release Key Unknown Message is transmitted, the SNIU waits for the new release key in another Association Grant Message before continuing. If the peer SNIU's Association Table entry is complete, the SNIU finds the entry for the destination host, changes the association type from `pending` to `host`, inserts the peer SNIU's IP, copies the association and release key pointers and release key type from the peer SNIU's entry, and copies the destination host's security level from the received message. Once the receiving port's Association Table has been updated, the SNIU finds the original host's user datagram in the Waiting Queue, removes the corresponding entry from the Schedule Table, and compares the source and destination security levels to determine it the user datagram can be sent to the destination. If the source's security level is dominated by (i.e., less than or equal to) the destination's, the SNIU creates a Protected User Datagram (PUD). The SNIU sets the destination to the peer SNIU's IP, sets the protocol type to indicate a Dragonfly Message, uses the association key to encrypt the entire received datagram and prefixed source host's security level, inserts the ciphertext and IV, appends the association residue, generates and inserts a release residue (if the destination host's Association Table entry contains a pointer to a release key), appends the appropriate Dragonfly Message Flag, and sends the datagram. If the source host is not dominated by the destination (i.e., a potential write-down), the attempted write-down is audited. This procedure is repeated for each entry in the Waiting Queue which is intended for the same destination. 58. Association Denial (currently not implemented) 59. Association Unknown--A SNIU sends an Association Unknown Message (and generates audit notices) when a Protected User Datagram or Association Exists Message is received and a corresponding Association Table entry does not exist. The message is sent back to the source SNIU and contains the destination SNIU's IP address. When a SNIU receives an Association Unknown Message, it deletes every entry in the Association Table in which the peer SNIU's IP matches the returned destination SNIU IP. Subsequent user datagrams from the same host sent to the same destination will initiate an Association Request to re-establish the association 60. Protected User Datagram (PUD)--The SNIU uses the source IP to find the peer SNIU's entry in the receiving port's Association Table and retrieve the association key to decrypt and validate the received datagram. If the decryption residue does not match, the event is audited. Otherwise, the SNIU uses the destination host's IP to find the appropriate entry in the opposite port's Association Table, retrieves the destination host's security level, and compares it to the security level in the received datagram. If a write-up situation, the SNIU generates an anticipated message. However, regardless of the relative security levels, the decrypted and validated user datagram is sent to the destination host. If the decrypted and validated datagram is a broadcast message, the SNIU compares the security level of the received datagram and the security level of the opposite port. If the security level of the opposite port dominates that of the datagram, the SNIU releases the datagram out the opposite port. If a terminating SNIU receives a PUD and cannot find the peer SNIU's entry in the Association Table, the SNIU returns an Association Unknown Message (containing this SNIU's IP) and audits the event. If the receiving SNIU validates the residue but cannot deliver the user datagram because it cannot find the destination host in the Association Table, then the SNIU returns a Host Unknown Message (containing the destination host's IP) to the originating SNIU and audits the event. 61. Receipt--A Receipt Message is sent by an Audit Catcher to a SNIU for a SNIU Initialization or an Audit Event message. The SNIU uses the message number in the received datagram to locate the saved copy of the original message in the Waiting Queue and remove it and the corresponding Schedule Table entry. If the original message was a SNIU Initialization Message, the SNIU locates the Association Table entry for the Audit Catcher and changes the association type from `pending` to `audit catcher`. If time expires in the Schedule Table entry before the Receipt Message is received, the SNIU will retransmit the original message. If no receipt is received after TBD attempts, the SNIU will switch to the next Audit Catcher in its list. If all Audit Catchers are attempted without success, the SNIU will check a configuration parameter to determine whether to continue without audit or halt. SNIUs issue Receipt Messages to the source for Audit Catcher List, Audit Mask, and Certificate Revocation List messages. When the source receives a receipt, it uses the returned message number to remove the copy of the message from the Waiting Queue and the corresponding Schedule Table entry. Refer to the section above, "Waiting Queue and Schedule Table", for more details. 62. Certificate Revocation List--If a Certificate Revocation List (CRL) is received, the SNIU returns a receipt to the source and checks the Sym_Key Table for any keys which were received from (or sent to) another SNIU with a revoked certificate. For each entry which contains the Distinguished Name (DN) of a revoked certificate, the SNIU deletes the certificate from the Certificate Table (if it is still there), deletes the Sym_Key Table entry, and deletes every entry in the Association Table which pointed to the key. Note that deleting a table entry means to unlink the token from the table, clear the token's memory, and re-link the token in the token's free list. 63. Dragonfly Ping--This message can only be received by a SNIU which is the terminating SNIU in an association (i.e., the closest SNIU to the destination host). This SNIU originally transmitted a Dragonfly Ping Message (in the form of an ICMP Echo Request) along with an Association Request Message to some unknown destination which converted the Echo Request to an Echo Reply, returned it, and ignored the Association Request Message (which could only be processed by another SNIU). Upon receiving this message the SNIU checks the originating SNIU IP in the data section of the received message to determine if it is the only SNIU in the association (i.e., the only SNIU between the originating host and the destination host). If it was the originator, the SNIU uses the source IP address to find the destination's entry in the Association Table, changes the association type from `pending` to `native host`, sets the security level to that port's security level, finds the original host's user datagram in the Waiting Queue, removes the corresponding entry from the Schedule Table, and compares the source and destination security levels to determine it the user datagram can be sent to the destination. If the comparison indicates a write-up situation, the SNIU generates and saves an anticipated message and releases the original datagramn to the destination port. If a write-down situation, the SNIU deletes the datagram and audits the attempted write-down. If a write-equal, the datagram is released to the destination port. This procedure is repeated for each entry in the Waiting Queue which is intended for the same destination. If this SNIU was not also the originating SNIU, the originating SNIU's and originating host's IP addresses in the data section of the received Echo Reply are used to identify the peer SNIU's entry in the Association Table and fetch the Association Request Message which was saved in the Waiting Queue (and delete the corresponding entry from the Schedule Table). Then the SNIU creates or updates three Association Table entries. First, it creates an entry (if it doesn't already exist) in the receiving port's Association Table for the original destination host (using the source IP from the received datagram header), marks the association type as `native host` and stores the receiving port's security level in the security level field. Second, it updates the entry in the opposite port's Association Table for the peer SNIU. If the peer SNIU's entry is already complete (i.e., the association type field is marked as `sniu`), the SNIU verifies that the DN in the Sym_Key Table entry for the association key is still valid and returns an Association Exists Message (containing the original destination host's IP and security level) instead of an Association Grant Message to the peer SNIU. If the DN or the certificate has changed, the SNIU deletes all entries in the Association Table which refer to this entry as the peer SNIU and then continues as if this was the first association with this peer SNIU and over-writes the old data. If the peer SNIU entry in the Association Table is incomplete (i.e., the association type field is marked as `pending`), the SNIU continues to fill in the missing data as follows. If the release key type is marked `out` or `both`, then the association path contains at least one intermediate SNIU; therefore, the SNIU must extract the peer SNIU's certificate from the Association Request Message and store it in the Certificate Table. If a certificate with this DN already exists, but is not identical, then the SNIU must locate and delete all other Sym_Key Table and Association Table entries referencing this certificate. In either case, the SNIU stores the pointer to the certificate and the DN in a Sym_Key Table entry, and stores the pointer to the Sym_Key Table entry in the association key pointer field of the Association Table entry. If there aren't any intermediate SNIUs, the pointer in the release key pointer field is copied to the association key pointer field; and the release key pointer field is cleared. In either case, the association type is changed from `pending` to `sniu`. The SNIU generates the association key and stores the key in the Sym_Key Table entry. If a release key is needed for an intermediate SNIU, the SNIU must determine if a release key associated with the intermediate SNIU's certificate's DN already exists. The SNIU uses the release key pointer in each entry with association type `sniu` in the Association Table to locate the Sym_Key Table entry of every release key. If a match is found, the pointer to that Sym_Key Table entry is copied. Otherwise a new release key is generated and stored. The third Association Table entry is for the originating host. It's IP and security level are in the data portion of the Association Request Message. The security level is copied into the entry, the association type is marked as `host`, and the rest of the data is copied from the peer SNIU entry. Once the Association Table entries are updated, an Association Grant Message is generated. The SNIU stores the source address from the Association Request Message (i.e., the association originating SNIU's IP) in the destination address and stores the destination host's IP in the source address (a little IP spoofing). The SNIU fills in the data section by storing its IP, the destination host's security level, the association key data (%rapped key and RA), and if necessary, the release key data (the wrapped key, RA and IV). If a release key for the first intermediate SNIU on the return path existed previously to establishing this association, the SNIU sets a flag (instead of storing the release key in the message) to instruct the intermediate SNIU to use the existing release key. The Dragonfly Message Flag is inserted at the bottom marking the type as Association Grant and the format as Signed Type 1 to indicate only one certificate. The message is signed and sent; and the event is audited. 64. SNIU Initialization--This message is sent by a SNIU to it's primary Audit Catcher during the SNIU's initialization to determine whether the Audit Catcher is ready to support the SNIU. Depending upon a configuration parameter, the SNIU may not allow any other message processing until a Receipt Message is received from the Audit Catcher. Upon receiving this message, the Audit Catcher verifies the signature on the message, makes an entry in its receiving port's Association Table using the source IP, marks the association type as `sniu`, returns a Receipt Message, and compares the audit mask in the received message with the current mask. If they do not match, the current audit mask is sent to the SNIU in an Audit Mask Message. 65. Association Exists--If a SNIU receives an Association Request Message, determines that it is the terminating SNIU, and that it already has an existing association with the requesting SNIU; the terminating SNIU will return an Association Exists Message in stead of an Association Grant Message. When a SNIU receives an Association Exists Message, it verifies the signature on the message and checks the receiving port's Association Table for an entry for the source SNIU. If the source (i.e., peer) SNIU entry exists, this SNIU uses the destination host's IP address in the message to update (or create, if necessary) the destination host's Association Table entry. It changes the association type from `pending` to `host`, copies the MEK pointers from the peer SNIU entry, and copies the security level from the received message. Once the Association Table has been updated, the SNIU locates the user datagram (which was stored in the Waiting Queue until the association was established) and processes the datagram for transmittal the same as if a normal Association Grant Message had been received (see description above). If an entry cannot be found in the Association Table for the source SNIU, then this SNIU will return an Association Unknown Message to the source SNIU. The message will contain this SNIU's IP address to indicate which association needs to be deleted. Then the SNIU will locate the original host's datagram saved in the Waiting Queue, reset its time-out value in the Schedule Table, and schedule a new event (after some TBD seconds delay) to regenerate a new Association Request Message. 66. Release Key Unknown--A SNIU may receive an Association Grant Message with a flag set to indicate that an existing release key should be used. However, if the SNIU cannot locate the release key, it sends a Release Key Unknown Message back to the previous SNIU requesting it to generate a new release key. This message is generated by modifying the received Association Grant Message. The destination address (the association originating SNIU's IP) is swapped with the terminating SNIU's address (i.e., the association granting SNIU's IP) in the data section of the datagram. The previous SNIU's certificate is replaced with this SNIU's certificate so the previous SNIU can wrap the new release key and return it to this SNIU in the Association Grant Message. The signature at the bottom is removed. The message number is changed from 58 to 66. And the new message is signed and sent back to the previous SNIU in the path. Note that this message is addressed to the terminating SNIU which generated the original Association Grant Message. However, this message is intended for the previous SNIU in the new association's path. Therefore, if the first SNIU to receive this message is an intermediate SNIU, it should process the message and not send it on to the terminating SNIU. If a SNIU receives a Release Key Unknown Message and it is the destination, the SNIU must be the terminating SNIU which granted the association. The SNIU verifies the signature on the message, swaps the destination address (its IP) with the peer SNIU address (the association originating SNIU's IP) in the data section, uses the new destination address to locate the peer SNIU's entry in the receiving port's Association Table, removes the certificate from the message, and compares the DN in the certificate with the DN in the Sym_Key Table entry indicated via the peer SNIU's release key pointer. If the DN does not match, the SNIU audits the error and over-writes the DN entry with the DN from the certificate. In either case, the SNIU stores the certificate in the Certificate Table (over-writing the old one if a certificate with the same DN already exists), generates a new release key, over-writes the old release key in the Sym_Key Table with the new release key (Ks-wrapped), wraps the key using the public key from the received certificate, stores the wrapped release key in the message, changes the message number from 66 back to 58, stores its certificate in the message, signs and sends it. Broadcast--Various messages (non-Dragonfly) are broadcast to every device on a network. When a broadcast message is received, the SNIU creates a Protected User Datagram (containing the received broadcast message and the security level of the port on which the message was received) for every peer SNIU in the opposite port's Association Table and sends them. Non-Destination SNIU Message Processing When a SNIU receives an IP datagram which is not addressed to it, the message should be one of the following types of Dragonfly formatted messages. If it is not, the SNIU will assume the IP datagram is from a native host. 51. Audit Event--The SNIU verifies the signature on the message and releases the message out the opposite port. 52. Audit Catcher List--The SNIU verifies the signature on the message and releases the message out the opposite port. 53. Audit Catcher Check-In--The SNIU verifies the signature on the message and releases the message out the opposite port. 54. Audit Mask--The SNIU verifies the signature on the message and releases the message out the opposite port. 55. Host Unknown--The SNIU verifies the signature on the message and releases the message out the opposite port. 56. Association Request--When a SNIU receives an Association Request, it validates the signature at the bottom of the message and checks the receiving port's Association Table for an entry with the originating SNIU's IP address. If it cannot find an entry, it creates one, marks the association type as `pending`, stores the previous SNIU's certificate in the Certificate Table, updates the Sym_Key Table entry for the Distinguished Name (DN), stores the pointer to the Sym_Key Table entry in the release key pointer field in the Association Table entry, and store a copy of the received message in the Waiting Queue (and makes a corresponding entry in the Schedule Table). If a certificate with this DN already exists, but is not identical, then the SNIU must locate and delete all other Sym_Key Table and Association Table entries referencing this certificate. If the previous SNIU was an intermediate SNIU (i.e., the Message Format field of the Dragonfly Message Flag is `Signed Type 2`), this SNIU marks the release key type field as `out` and removes the previous SNIU's certificate and signature. In either case, this SNIU appends its certificate and signature and sends the message out the other port. It does not make any entry in the out-going port's Association Table. Finally, the SNIU creates and sends a Dragonfly Ping Message (in the form of an ICMP Echo Request) to the destination host. The SNIU stores the originating SNIU and originating host's IP addresses in the datagram and sets the Dragonfly Flag, but does not sign the message. 57. Association Grant--The SNIU validates the signature at the bottom of the received datagram and ,if not correct, deletes the datagram and audits the event. Otherwise, since it is not the destination, the SNIU is an intermediate SNIU somewhere in the path between the two peer SNIUs. The SNIU creates an entry (if one doesn't already exist) in the receiving port's Association Table for the IP of the terminating SNIU which granted the association (in the data section of the Association Grant Message), marks the association type as `sniu`, marks the release key type as `in` (if the format is `Signed Type 1`) or `both` (if the format is `Signed Type 2`), extracts the release key data (i.e., the wrapped MEK, RA and IV), unwraps and stores the release key in the Sym_Key Table, stores the release key IV in the same Sym_Key Table entry, stores the pointer to the release key in the Association Table, stores the certificate in the Certificate Table, and stores the pointer to the certificate and the DN in the Sym_Key Table entry. If a certificate with this DN already exists, but is not identical, then the SNIU must locate and delete all other Sym_Key Table and Association Table entries referencing this certificate. If the received message contains a flag indicating that an appropriate release key already exists, the SNIU uses the release key pointer in every other `sniu` type entry in the Association Table and compares the DNs of the certificates associated with the release keys. If a match is found, the pointer to the matching Sym_Key Table entry is copied to the new Association Table entry. If no match is found, the SNIU generates a Release Key Unknown Message. This message is generated by modifying the received Association Grant Message. The destination address (i.e., the association originating SNIU's IP) is swapped with the peer SNIU's address (i.e., the association granting SNIU's IP) in the data section of the datagram. The previous SNIU's certificate is replaced with this SNIU's certificate so the previous SNIU can wrap the new release key and return it to this SNIU in the Association Grant Message. The signature at the bottom is removed. The message number is changed from 58 to 66. The new message is signed and sent back to the previous SNIU in the path. Finally, the association type field of the terminating SNIU's entry in the Association Table is changed back to `pending`. If a Release Key Unknown Message is transmitted, the SNIU waits for the new release key in another Association Grant Message before continuing. Next, the SNIU uses the destination IP address in the header of the received Association Grant Message to find the destination's entry in the opposite port's Association Table. If the association type is `pending`, the SNIU determines whether an existing release should be used or if a new one should be generated. The SNIU uses the release key pointer to fetch the saved certificate of the next SNIU and compares its DN with the DN associated with the other release keys identified via the release key pointers in other `sniu` type entries. If a match is found, the pointer to the release key's entry in the Sym_Key Table is copied to the new Association Table entry. If a match is not found, the SNIU generates new release key data (an MEK, RA, and IV) and stores the wrapped MEK and IV in the Sym_Key Table entry. In either case, the SNIU changes the association type to `sniu`. If the release key type is `NULL`, the SNIU changes it to `in`; otherwise, it is marked as `both`. The SNIU uses the original destination host's IP (the source IP in the header of the Association Grant Message) and the original SNIU's IP (i.e., the destination IP in the header of the Association Grant Message) to locate the Association Request Message which was saved in the Waiting Queue and delete it and the corresponding entry in the Schedule Table. Finally, the SNIU rebuilds the Association Grant Message to send on to the destination. The SNIU copies the received datagram up to and including the association key data and the certificate of the SNIU which originated the Association Grant Message, inserts its certificate and the release key data (or a flag indicating to use an existing release key), and signs and sends the datagram. 58. Association Denial (currently not implemented) 59. Association Unknown--The SNIU verifies the signature on the message and releases the message out the opposite port. 60. Protected User Datagram--The SNIU uses the source IP address to find the appropriate entry in the receiving port's Association Table, fetches the release key, and verifies the release key residue. If the release residue is not correct the datagram is deleted and the event audited. Otherwise, the SNIU uses the destination IP address to find the appropriate entry in the opposite port's Association Table, fetches the release key, generates the new release residue, overwrites the old release residue, and sends the datagram on to the destination. 61. Receipt--The SNIU verifies the signature on the message and releases the message out the opposite port. 62. Certificate Revocation List--The SNIU verifies the signature on the message and releases the message out the opposite port. 63. Dragonfly Ping--The SNIU ignores (i.e., deletes) the ICMP Echo Request and does nothing else. It should also receive an Association Request Message which it will process (see description above). Note that if the datagram is a standard ICMP Echo Request (i.e., no Dragonfly Flag), it is treated as any other Native Host Message (see description below). 64. SNIU Initialization--The SNIU verifies the signature on the message and releases the message out the opposite port. 65. Association Exists--When an intermediate SNIU receives this message, it verifies the signature on the message and verifies that it has entries for both the source and destination IP addresses (i.e., the two peer SNIUs of the of the association) in the appropriate ports' Association Tables. If everything is verified, the message is released out the opposite port. If either peer SNIU's entry cannot be found in the Association Table, then this SNIU will return an Association Unknown Message to the source SNIU. The message will contain the destination SNIU's IP address to indicate which association needs to be deleted. In any case, the SNIU uses the association originating SNIU's and the host destination's addresses in the Association Exists Message to locate and delete the Association Request Message which was saved in the Waiting Queue (and the appropriate Schedule Table entry). 66. Release Key Unknown--A SNIU may receive an Association Grant Message with a flag set to indicate that an existing release key should be used. However, if the SNIU cannot locate the release key, it sends a Release Key Unknown Message back to the previous SNIU requesting it to generate a new release key. This message is generated by modifying the received Association Grant Message. The destination address (the association originating SNIU's IP) is swapped with the terminating SNIU's address (i.e., the association granting SNIU's IP) in the data section of the datagramn. The previous SNIU's certificate is replaced with this SNIU's certificate so the previous SNIU can wrap the new release key and return it to this SNIU in the Association Grant Message. The signature at the bottom is removed. The message number is changed from 58 to 66. And the new message is signed and sent back to the previous SNIU in the path. Note that this message is addressed to the terminating SNIU which generated the original Association Grant Message. However, this message is intended for the previous SNIU in the new association's path. Therefore, if the first SNIU to receive this message is an intermediate SNIU, it should process the message and not send it on to the terminating SNIU. If a SNIU receives a Release Key Unknown Message and it is not the destination, the SNIU must be an intermediate SNIU somewhere in the middle of the association's path. The SNIU verifies the signature on the message, swaps the destination address (the association granting SNIU's IP) with the peer SNIU address (the association originating SNIU's IP) in the data section, uses the new destination address to locate the peer SNIU's entry in the receiving port's Association Table, removes the bottom certificate from the message, and compares the DN in the certificate with the DN in the Sym_Key Table entry indicated via the peer SNIU's release key pointer. If the DN does not match, the SNIU audits the error and over-writes the DN entry with the DN from the certificate. In either case, the SNIU stores the certificate in the Certificate Table (over-writing the old one if a certificate with the same DN already exists), generates a new release key, over-writes the old release key in the Sym_Key Table with the new release key (Ks-wrapped), wraps the key using the public key from the received certificate, stores the wrapped release key in the message, changes the message number from 66 back to 58, stores its certificate in the message, signs and sends it. Native Host Message--When a SNIU receives a user datagram from a native host, the SNIU creates an entry (if one doesn't already exist) in the receiving port's Association Table for the source host's IP, marks the association type as `native host`, sets the security level to the receiving port's security level, and checks the opposite port's Association Table for the destination's IP address. If an entry does not already exist for the destination, the SNIU creates a new entry, marks the association type as `pending`, stores the received datagram in the Waiting Queue, makes a corresponding entry in the Schedule Table, creates an Association Request Message and sends it. Next, the SNIU creates and sends a Dragonfly Ping to the destination host. The SNIU stores the originating SNIU and originating host's IP addresses in the datagramn and sets the Dragonfly Flag, but does not sign the message. If an Association Table entry exists for the destination and the association type is `pending`, the SNIU stores the received datagram in the Waiting Queue, linking it to other datagrams for the same destination. If an Association Table entry exists for the destination and the association type is `host`, the SNIU compares the source host's security level to the destination host's security level. If the source's security level is dominated by (i.e., less than or equal to) the destination's, the SNIU creates a Protected User Datagram (PUD). The SNIU sets the destination to the peer SNIU's IP, sets the protocol type to indicate a Dragonfly Message, uses the association key to encrypt the entire received datagram, inserts the ciphertext and IV, appends the association residue, generates and inserts a release residue (if the Association Table entry contains a pointer to a release key), appends the appropriate Dragonfly Message Flag, and sends the datagram. If the source host is not dominated by the destination (i.e., a potential write-down), the SNIU determines if this datagram was anticipated. If a matching datagram was predicted, the anticipated datagram is transformed into a PUD (as described above) and sent. If an anticipated message is not found, the attempted write-down is audited. If an Association Table entry exists for the destination and the association type is any other bona fide type (i.e., `native host`, `sniu`, or `audit catcher`, the SNIU compares the source and destination ports' security levels to determine if the datagram can be allowed to proceed. If the comparison indicates a write-up situation, the SNIU generates and saves an anticipated message and releases the original datagram to the destination port. If a write-down situation, the SNIU determines if the datagram was predicted and sends the anticipated message or audits as previously described. If a write-equal, the datagram is released to the destination port. The SNIU may be implemented in the form of a software program executed on a general purpose computer coupled as a server between a host machine and the network. Alternatively, it may be programmed as a network communications program resident in and executed from the host machine. However, for security purposes, the preferred form of the SNIU is a closed module having the security program functions resident in ROM and executed by a dedicated microprocessor. The closed module can incorporate the communications link or modem to the network. It is to be understood that the embodiments described herein are merely exemplary of the principles of the, invention, and that a person skilled in the art may make many variations and modifications without departing from the spirit and scope of the invention. All such variations and modifications are intended to be included within the scope of the invention as defined in the appended claims.
|
Same subclass Same class Consider this |
||||||||||
