|  | NetLabel CIPSO/IPv4 Protocol Engine | 
|  | ============================================================================== | 
|  | Paul Moore, paul.moore@hp.com | 
|  |  | 
|  | May 17, 2006 | 
|  |  | 
|  | * Overview | 
|  |  | 
|  | The NetLabel CIPSO/IPv4 protocol engine is based on the IETF Commercial IP | 
|  | Security Option (CIPSO) draft from July 16, 1992.  A copy of this draft can be | 
|  | found in this directory, consult '00-INDEX' for the filename.  While the IETF | 
|  | draft never made it to an RFC standard it has become a de-facto standard for | 
|  | labeled networking and is used in many trusted operating systems. | 
|  |  | 
|  | * Outbound Packet Processing | 
|  |  | 
|  | The CIPSO/IPv4 protocol engine applies the CIPSO IP option to packets by | 
|  | adding the CIPSO label to the socket.  This causes all packets leaving the | 
|  | system through the socket to have the CIPSO IP option applied.  The socket's | 
|  | CIPSO label can be changed at any point in time, however, it is recommended | 
|  | that it is set upon the socket's creation.  The LSM can set the socket's CIPSO | 
|  | label by using the NetLabel security module API; if the NetLabel "domain" is | 
|  | configured to use CIPSO for packet labeling then a CIPSO IP option will be | 
|  | generated and attached to the socket. | 
|  |  | 
|  | * Inbound Packet Processing | 
|  |  | 
|  | The CIPSO/IPv4 protocol engine validates every CIPSO IP option it finds at the | 
|  | IP layer without any special handling required by the LSM.  However, in order | 
|  | to decode and translate the CIPSO label on the packet the LSM must use the | 
|  | NetLabel security module API to extract the security attributes of the packet. | 
|  | This is typically done at the socket layer using the 'socket_sock_rcv_skb()' | 
|  | LSM hook. | 
|  |  | 
|  | * Label Translation | 
|  |  | 
|  | The CIPSO/IPv4 protocol engine contains a mechanism to translate CIPSO security | 
|  | attributes such as sensitivity level and category to values which are | 
|  | appropriate for the host.  These mappings are defined as part of a CIPSO | 
|  | Domain Of Interpretation (DOI) definition and are configured through the | 
|  | NetLabel user space communication layer.  Each DOI definition can have a | 
|  | different security attribute mapping table. | 
|  |  | 
|  | * Label Translation Cache | 
|  |  | 
|  | The NetLabel system provides a framework for caching security attribute | 
|  | mappings from the network labels to the corresponding LSM identifiers.  The | 
|  | CIPSO/IPv4 protocol engine supports this caching mechanism. |