| What:		security/evm | 
 | Date:		March 2011 | 
 | Contact:	Mimi Zohar <zohar@us.ibm.com> | 
 | Description: | 
 | 		EVM protects a file's security extended attributes(xattrs) | 
 | 		against integrity attacks. The initial method maintains an | 
 | 		HMAC-sha1 value across the extended attributes, storing the | 
 | 		value as the extended attribute 'security.evm'. | 
 |  | 
 | 		EVM supports two classes of security.evm. The first is | 
 | 		an HMAC-sha1 generated locally with a | 
 | 		trusted/encrypted key stored in the Kernel Key | 
 | 		Retention System. The second is a digital signature | 
 | 		generated either locally or remotely using an | 
 | 		asymmetric key. These keys are loaded onto root's | 
 | 		keyring using keyctl, and EVM is then enabled by | 
 | 		echoing a value to <securityfs>/evm made up of the | 
 | 		following bits: | 
 |  | 
 | 		Bit	  Effect | 
 | 		0	  Enable HMAC validation and creation | 
 | 		1	  Enable digital signature validation | 
 | 		2	  Permit modification of EVM-protected metadata at | 
 | 			  runtime. Not supported if HMAC validation and | 
 | 			  creation is enabled. | 
 | 		31	  Disable further runtime modification of EVM policy | 
 |  | 
 | 		For example: | 
 |  | 
 | 		echo 1 ><securityfs>/evm | 
 |  | 
 | 		will enable HMAC validation and creation | 
 |  | 
 | 		echo 0x80000003 ><securityfs>/evm | 
 |  | 
 | 		will enable HMAC and digital signature validation and | 
 | 		HMAC creation and disable all further modification of policy. | 
 |  | 
 | 		echo 0x80000006 ><securityfs>/evm | 
 |  | 
 | 		will enable digital signature validation, permit | 
 | 		modification of EVM-protected metadata and | 
 | 		disable all further modification of policy | 
 |  | 
 | 		Note that once a key has been loaded, it will no longer be | 
 | 		possible to enable metadata modification. | 
 |  | 
 | 		Until key loading has been signaled EVM can not create | 
 | 		or validate the 'security.evm' xattr, but returns | 
 | 		INTEGRITY_UNKNOWN.  Loading keys and signaling EVM | 
 | 		should be done as early as possible.  Normally this is | 
 | 		done in the initramfs, which has already been measured | 
 | 		as part of the trusted boot.  For more information on | 
 | 		creating and loading existing trusted/encrypted keys, | 
 | 		refer to: | 
 | 		Documentation/security/keys/trusted-encrypted.rst. Both | 
 | 		dracut (via 97masterkey and 98integrity) and systemd (via | 
 | 		core/ima-setup) have support for loading keys at boot | 
 | 		time. | 
 |  | 
 | What:		security/integrity/evm/evm_xattrs | 
 | Date:		April 2018 | 
 | Contact:	Matthew Garrett <mjg59@google.com> | 
 | Description: | 
 | 		Shows the set of extended attributes used to calculate or | 
 | 		validate the EVM signature, and allows additional attributes | 
 | 		to be added at runtime. Any signatures generated after | 
 | 		additional attributes are added (and on files posessing those | 
 | 		additional attributes) will only be valid if the same | 
 | 		additional attributes are configured on system boot. Writing | 
 | 		a single period (.) will lock the xattr list from any further | 
 | 		modification. |