计算机安全:编程语言与静态分析视角
1. 引言
计算机安全通常被定义为,即使存在蓄意的恶意对手,也要确保系统的完整性、保密性和可用性。敏感数据只能由授权用户修改和查看(完整性、保密性),此外,系统应能抵御试图使其无法使用的“拒绝服务”攻击(可用性)。形象地说,计算机安全就像是“为撒旦的计算机编程”,开发者必须假定每个可能被利用的弱点都会被利用。
安全是整个系统的属性,涉及许多不同的主题,包括与计算机相关的(硬件、系统、网络、编程、密码学)和与用户相关的(组织和社会政策及法律)。这里将讨论编程语言和静态程序分析对实现访问控制安全策略的影响,特别关注智能卡。
2. 访问控制
访问控制是最基本且广泛应用的安全策略。它对“这个主体(用户、程序、角色等)是否被允许对这个资源(文件、网络连接、数据库记录等)执行这个操作(读取、写入、创建、删除等)?”这个问题给出“是”或“否”的答案。访问控制能有效确保完整性,也能保证一些简单的保密性。
2.1 防止直接访问资源
访问控制由代码片段(操作系统内核、参考监视器、特权库)执行,这些代码会在对底层低级资源(磁盘或网络控制器)执行操作之前,检查对逻辑资源(文件、网络连接)的访问是否被允许。当然,如果程序可以绕过这些代码并直接对低级资源进行操作,那么访问控制就失去了意义。
传统的解决方案依赖于硬件强制机制:只有当处理器处于管理模式时才能访问低级资源,并且从用户模式切换到管理模式只能通过特定的入口点进行,这些入口点会分支到访问控制代码。在用户端,资源通过“句柄”间接表示,例如内核表中的索引。硬件内存管理防止用户代码直接访问内核数据。
然而,这种模型并
超级会员免费看
订阅专栏 解锁全文
15万+

被折叠的 条评论
为什么被折叠?



