LSM零知识学习零、背景

文章探讨了计算机安全的复杂性,包括开源软件的安全性、CIA三特性,以及计算机系统安全的历史,如BLP和BIBA模型。当前,Linux内核包含多种安全模块,如LSM、IMA和EVM,但面临应用和整合的挑战。文章指出,安全性与易用性之间的平衡以及安全功能的实际应用是关键问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文内容参考《Linux内核安全模块深入剖析》(李志 编著,机械工业出版社)第一章 导言。

一、什么是安全

安全是一个很难说清楚的概念。并不容易说明白它究竟是什么、包含什么。众多国家科研项目都以安全为题,其背后大半是(某些)开源软件。这其中隐含的逻辑是:开源意味着自主可控,因为自主可控所以安全;国外开源界有些人的观点是:由于开源,代码暴露给无数双眼睛,因此有安全问题一定会被早早发现。但是,近一两年来,开源代码频频曝光重大漏洞,追根溯源,一些问题代码早已经存在了几年甚至几十年。在发展迅猛的计算机领域,十几年已经可以被称作“古时候”或“想当初”了;还有一些观点将安全与漏洞挂钩。且不说究竟什么是漏洞、漏洞和代码缺陷究竟是什么,单单只回忆一下我们日常的手机,在不到十年之前,还处于那个功能满天飞的时代,我们并不担心手机安全。那么怎么到了现在智能机时代,手机安全反倒成为了公众关心的话题了呢?是原先的功能漏洞或代码缺陷少吗?不是吧。

尽管很难说清楚,国际上对计算机安全勉强概括了三个特性私密性(Confidentiality)完整性(Integrity)可用性(Availability),三者合起来简写为CIA。私密性就是数据不被未授权的人看到(比如你肯定不希望自己的手机号码、银行账户、照片等让不认识的人看到);完整性指存储或传输的信息不被篡改(比如你肯定不希望付款的时候输入100元,结果实际被扣款1000块);可用性是指自己的设备在需要使用的时候能够使用(比如你肯定不希望家人在急需联系你的时候拨不通你的电话)。
计算机系统应对安全挑战的办法大致有四种隔离控制混淆监视。计算机系统安全的设计者在系统的各个层次都发明了不同的技术以实现隔离,隔离的结果常常被称作“沙盒”或“沙箱”(英文对应为SailBox)。隔离是对外的,阻断的内部和外部的交互;控制是对内的,在计算机世界通过系统代码内在的逻辑和安全策略来维护信息流动和信息改变(如用户A可不可以读取文件a、用户B能不能读写文件b的内容等);混淆要达到的效果是,明明你可以接触到数据却无法还原信息(加密就是一种混淆);监视的作用是间接的。好比现实世界中你闯红灯或违停时,并不会被立即告知或阻止,但你可能会因为监控摄像头的存在而收到交通罚单。计算机系统中的日志和审计就是做监视工作的,它们就是计算机系统中的摄像头。

二、计算机系统安全历史

现代意义的计算机诞生于第二次世界大战。那时的计算机是一个庞然大物,可以说就是一个巨大的计算器或超级算盘。你会关心一个计算器的安全问题吗?当然不会。后来,技术的进步和发展让计算机不再仅仅是“计算的机器”,也是“信息处理的机器”。那么,怎么保证计算机中信息的私密性和完整性呢?走在信息革命前头的美国首先遇到了这个问题并试图解决它。

在1970年前后,先后出现了两个安全模型:BLP模型BIBA模型。前者参考美国军方的保密原则,着力解决私密性;后者着力解决完整性。

  • BLP模型可以简化概括为两句话:禁止上读,禁止下写。数据被分级,下级部门不能读上级部门的数据,上级部门也不能把数据传递给下级部门。如此,某部门就只能读到本部门或更低级别部门的数据,数据的私密性得到了保证。
  • BIBA模型也可以简化概括为两句话:禁止上写,禁止下读;数据被分级,下级不能写上级的数据,上级不能读下级的数据。BIBA模型是服务于完整性的。

BLP模型和BIBA模型本身都经过了数学证明,都是很严谨的。可喜的是它们的适应面比较窄,无法涵盖计算机系统信息处理的全部。

为了更有效地利用计算机,计算机操作系统步入分时多用户时代。随之出现了基于角色的访问控制(Role-based Access Contro,RBAC),让用户分属于不同的角色,再基于角色赋予访问权限。当PC时代来临,计算机设备专属某个人,系统中所谓用户也背离了原有的含义(打开Linux系统上的/etc/passwd文件,看看里面还要几个是真正的用户),这时使用基于角色的访问控制RBAC就有些力不从心了。接下来诞生了类型增强(Type Enforcement,TE)访问控制模型。模型中控制的对象不再是人或角色,而是进程。进程属于不同的类型,不同类型有不同的访问权限。

江湖中不仅有少林,还有武当。计算机系统安全的另一路人马在“可信”领域辛勤地耕耘着,他们希望计算机只做人预先定义好的工作,而不会有意或无意地去做主人不希望的事情。如果做到了这一点,他们就认为计算机是“可信”的了。可信理论的背后是将人类社会的信任模型移植到计算机的世界中,甲信任乙、乙信任丙,于是甲也信任丙。计算机固件信任引导加载器(BootLoader),引导加载器信任操作系统,操作系统信任应用,于是应用是可信的。信任的度量是用完整性校验值和数字签名。这的确可以确保应用是某个“正直”的人或公司开发的,但不能保证应用没有漏洞,不会被恶意利用。

三、计算机系统安全现状

计算机系统安全的可悲之处在于,任何一个被用户广泛接受的操作系统在设计之初都没有把安全作为系统设计的目标。这一点可以从NIX设计者之一的丹尼斯 里奇(Dennis Ritchie)的论文中看到。计算机系统安全的第二个可悲之处是,安全不仅仅是一个技术问题,它还和管理维护紧密联系。在安全研究人员眼中,苹果的iOS并不比谷歌的Android安全,但是后者暴露的安全问题却多得多。计算机系统的第三个可悲之处在于,安全性和易用性总是矛盾的。没有哪个厂商会为了安全而牺牲市场份额,而用户在免费的诱惑下,也更愿意牺牲自己的隐私。

计算机在过去的几十年里迅猛发展,然而计算机安全并没有跟上时代的脚步。四十多年前的BLP模型是成功的,它达成了预定的目标——将安全原则移植到信息处理系统中来。但在随后的日子里,没有一个好的安全模型能覆盖计算机应用的方方面面。这换来了BLP的设计者之一Bell的一声叹息。

病毒与反病毒、漏洞与漏洞补丁,头痛医头、脚痛医脚,乐此不疲!

四、Linux内核安全概貌

内核对于系统的重要性是无需多言的。Linux内核安全的开发从20世纪90年代中后期开始,经过20多年的开发,Linux内核中安全相关模块还是很全面的,有用于强制访问控制的LSM(Linux Security Module)、有用于完整性保护的IMA(Integrity Measurement Architecture)和EVM(Extended Verification Module)、有用于加密的密钥管理模块和加密算法库、还有日志和审计模块、以及一些零碎的安全增强特性。

说起来安全功能是很多的。但是问题也有:其一是应用问题,这些安全功能还没有被广泛地应用起来。最典型的是Linux内核中基于能力的特权控制。时至今日,广大应用程序的开发者不仅没有用它,甚至根本不知道它的存在!其二是整合问题。攻与防的区别在于,攻击只求一点突破即可,防守则要保证整条防线。内核各个安全模块散布于内核多个子系统之中,如何整合各个安全子模块来整体加固系统的安全是一个不小的挑战。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值