首页 理论教育 Linux内核安全模块深入剖析:数据结构及其关键成员

Linux内核安全模块深入剖析:数据结构及其关键成员

时间:2023-11-22 理论教育 版权反馈
【摘要】:第一个重要的数据成员是serial。内核通过此序列号来唯一地标识一个key。uid和gid标识key的属主和数组,perm是key的访问权限,这都和文件类似。至于datalen怎样和payload配合,payload中的data和data2怎样使用,不同类型的key做法不同。密钥种类不同,payload中数据的格式和长度也不同。所以key数据结构中包含了数据成员type,其类型为key_type,其中包含若干函数指针,用于处理payload。

Linux内核安全模块深入剖析:数据结构及其关键成员

密钥在内核代码中称为key,先看一下key的定义。

第一个重要的数据成员是serial。内核通过此序列号来唯一地标识一个key。下面几个成员:user、uid、gid、perm、security,和访问控制相关。user指向的数据类型key_user中包含一些和用户配额(quota)相关的数据,像用户拥有key的数量,用户拥有key占用的总内存之类。因为key是由用户态进程创建,由内核管理,其实体存储在内核申请的内存中,所以密钥管理需要实施配额管理。uid和gid标识key的属主和数组,perm是key的访问权限,这都和文件类似。security是一个指针,被LSM使用,指向的内容由具体的LSM模块定义。之后的datalen和payload一起用于存储密钥内容,datalen标识了payload的长度。至于datalen怎样和payload配合,payload中的data和data2怎样使用,不同类型的key做法不同。

前面说过密钥有对称密钥和非对称密钥两大类,每类密钥又有很多种。密钥种类不同,payload中数据的格式和长度也不同。所以key数据结构中包含了数据成员type,其类型为key_type,其中包含若干函数指针,用于处理payload。(www.xing528.com)

下一个重要成员是description,它是一个字符串,用于用户态进程查询密钥。用户态先用字符串description从内核查询到key对应的序列号serial,以后就直接用serial来对key进行操作。

还有一个重要成员flags。它包含密钥的状态信息,和密钥的生命周期有关。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈