From 90fa4b2edc8a31afedf8ed73bd7b8587331ea93d Mon Sep 17 00:00:00 2001 From: mywaaagh_admin Date: Tue, 15 Aug 2023 10:55:45 +0800 Subject: [PATCH] add IMA file sign doc Signed-off-by: mywaaagh_admin --- docs/how to sign a IMA file.md | 46 +++++++++++++++++++++++++++++++++ docs/images/ima_signature.png | Bin 0 -> 63011 bytes 2 files changed, 46 insertions(+) create mode 100644 docs/how to sign a IMA file.md create mode 100644 docs/images/ima_signature.png diff --git a/docs/how to sign a IMA file.md b/docs/how to sign a IMA file.md new file mode 100644 index 0000000..4b333f5 --- /dev/null +++ b/docs/how to sign a IMA file.md @@ -0,0 +1,46 @@ +# What is a IMA file +The Linux [IMA](https://docs.openeuler.org/en/docs/21.09/docs/Administration/trusted-computing.html#kernel-integrity-measurement-architecture-ima)(Integrity Measurement Architecture) subsystem introduces hooks within the Linux kernel to support creating and collecting hashes of files when opened, before their contents are accessed for read or execute. The IMA subsystem has 2 subsystems within in it - measure and appraise. Measurement collects the hashes of files, while appraisal compares a collected hash to a stored hash and denies access in the event of a mismatch.[1] + +To support proven integrity of the files, the IMA measurement subsystem can interact with the TPM chip within the system to protect the collected hashes from tampering by a rogue administrator or application. + +The IMA measurement subsystem was added in linux-2.6.30. Appraisal came later, in linux-3.7. + +Protection of the extended attribute itself is handled by EVM[2] + +# EVM +In order to detect accidental or malicious modifications to a file, IMA is the way, As the IMA content can only be modified by superior user, but we must still make sure the value wont be tampered, so we have EVM(extended verification module), which utilize digital signature to protect the security extended attributes produced by IMA. + +## How to generate the signatrue +Nowaday, there're two signature schemas to sign a IMA file, one is a compatible rsa way, we called `sign_v1`, other one is morden way we called `sign_v2`, here we just try to describe `sign_v2`: + +1. the signatrue make up by a header and the signature +2. the signature was a normal digital signatrue signed by a private key, the `message digest` algo default to `sha256` for now and can range from `sha1, sha224, sha256, sha384, sha512` +3. the signed message is called a `evm_hash`, which is a simple hash of the IMA protected file and the `hash algo` is same with the `message digest` algo in `step 1` +4. the header contains a one btye magic which values `3` and a header which contains `sig_size`, `version`, `hash algo` and the `keyid` +5. the signatrue can be store in a detached file or directly in filesystem extend attribute + +![ima_signature](./images/ima_signature.png) + +We can also using the `evmctl` from `ima-evm-utils` package to do the sign +```bash +evmctl ima_sign -a sha256 -f /path/to/file.txt -s /path/to/signature.sig -k /etc/keys/privkey_evm.pem +``` + +NOTICE: +1. the `sig_size` field in header is in `big endian` order, other fields are CPU endian +1. the `keyid` can be obtained from a `private key` in signing process and from a `public key` in verify process: + 1. in private key, keyid is the first 32-bits from the `X509 certificate subject key identifier` which can be retrieved by `x509_get_skid` + 1. in public key, keyid is the first 32-bits of sha1 fingerprint + +## how to verify the signature +1. for schema v2, we just using the public key to verify the signature +2. make sure the `keyid` in `signature header` is same with the keyid in `public key` + +We can also using the `evmctl` from `ima-evm-utils` package to do the verification +```bash +evmctl ima_sign -a sha256 -f /path/to/file.txt -s /path/to/signature.sig -k /etc/evm/pubkey_evm.pem +``` + +REFs: +1. https://wiki.gentoo.org/wiki/Integrity_Measurement_Architecture +2. https://docs.openeuler.org/en/docs/21.09/docs/Administration/trusted-computing.html#kernel-integrity-measurement-architecture-ima \ No newline at end of file diff --git a/docs/images/ima_signature.png b/docs/images/ima_signature.png new file mode 100644 index 0000000000000000000000000000000000000000..cca3d46692dbb88c64711fef694a00a045188ed3 GIT binary patch literal 63011 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/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 P0)J{sT9^v7Nyz^Lp!*R1 literal 0 HcmV?d00001 -- Gitee