计算机学院系统安全
实验三
完整性访问控制系统设计与实现
一、实验内容
(1) 设计完整性访问控制系统,实现系统,并满足某商业公司的完整性
访问控制需求。
(2) 编制实验报告,给出系统安全策略文档、系统设计报告,源代码、
实现过程说明,及心得体会。
(3) 给出应用系统的安全策略文档。
提供交互界面,能够完成录入、查询等功能。
满足责任分离原则。
保存审计日志。
遵循 Clark-Wilson 模型,定义应用系统的完整性限制条件。
遵循 Clark-Wilson 模型的证明规则和实施规则,并在设计报告中有
所体现。
二、实验设计
1.1 为商业公司设计系统,提出该应用系统的安全策略:
设计对象:
一家公司预定货物,然后付款。
设计流程:
1.采购员先做一张供应订单,并把订单同时发给供货方和收货部门。
2.供货方将货物运到收货部门。接受员检查货物,确保收到货物的种类
和数量是正确的,然后在运货单上签字。送货单和原始订单再交给会计部门。
3.供货方将发票送到会计部门。会计人员将发票同原始订单进行校对(校
对价格和其他条款)并将发票同送货单进行校对(校对数量和品种),然后
开支票给供货方。
安全策略:
模型考虑如下几点:
1)主体必须被识别和认证
2)客体只能通过规定的程序进行操作
3)主体只能执行规定的程序
4)必须维护正确的审计日志
5)系统必须被证明能够正确工作
Clark 和 Wilson 用受约束数据项(constrained data item)来表达他
们的策略,受约束数据项由转变程序(transformation procedure)进行处
理。转变程序就像一个监控器,对特定种类的数据项执行特定的操作;只有
转变程序才能对这些数据项进行操作。转变程序通过确认这些操作已经执行
来维持数据项的完成性。Clark 和 Wilson 将这个策略定义为访问三元组
(access triple):,通过他将转变程序、一
个或多个受约束数据项以及用户识别结合起来,其中用户是指已经被授权且
事务程序的方式操作数据项的人。Clark-Wilson 策略的目标是使内部数据与
其外部(用户)期望保持一致。
流程运作的顺序非常重要。
接受员在没有接受到与订单相符的货物之前是不能签署送货单的(因为
这样就等于允许供货方随便把他们想卖出去的任何货物卖给收货方),而会
计人员在收到一份与实际收到货物相匹配的订单和送货单之前,也不能够开
支票(因为如果我们没有订购某种货物,或者没有收到我们订购的货物,就
不应该付款给供货方)。而且,在大多数实例中,订单和送货单都需要某个
被授权的人员来签订。委任专人按顺序准确执行以上步骤,就构成了一个良
构事务。
实施规则:
从而流程有如下转移关系:
完成订单的从无到有过程。
完成订单的消息分发通知到商人和接收者
完成商品的寄送
校对商品的数目名称。
完成商品的确认收货。
获取 reciever 的签字确认收货。
商人收钱,会计收到账单。
获取原始订单。
获取签字数据。
会计校对后签发支票。
证明和验证:
1. 过程中责任分离,1)主体必须被识别和认证 2)客体只能通过规定
的程序进行操作 3)主体只能执行规定的程序。
这里必须使用这个操作平台进行数据输入输出,不可超越平台。
2. 必须维护正确的审计日志
每一步操作都有对应的日志输出。
3. 系统必须被证明能够正确工作
对系统进行主要功能的测试后,发现没有 bug;
对边界进行测试,发现没有 bug。
每一个条件转移都有处理。
完整性:
是指信息在传输、交换、存储和处理过程中,保持信息不被破坏或修改、
不丢失和信息未经授权不能改变的特性,也是最基本的安全特征。
这里每个角色进行操作过程中,都有一个记录。订单以及其他信息除了
系统规定的流程外是不可以访问的,从而保证了信息未经授权是不可修改的。
订单的删除和生成都是授权和收到限制的。
这里只有 buyguy 可以下单,其他人对原始订单是不可操作的,只可以进
行查看。而收货单只有收货人可以操作,只有他能给出证明,其他人只能查
看。
1.2 责任分离
每个人都有自己专门的职责,整个交易由公司的三个人负责,实现了责
任的分离,每一步都责任明确。
责任分离还包括了信息部分,如下 1.3 所述。
1.3 信息查询
Buyguy:可以查询自己下的单,对自己下的单负责。
Businessman 可以查询不同的 buyguy 下单的自己的品名,对自己负责的
商品进行售卖。
Reciever 只可以查询 businessman 发过来的货物的下单时间,数量来进
行具体查询,如果全部相符,就可以签收(有这个订单,且送货的数目一样);
否则拒绝签收。他不可以签收没有申请的接收请求。请求了才可以接收。
Calculator 可以查询 businessman 发过来的收据的订单和原始订单。必
须已知这个订单的所有信息才可以进行查询。否则,假如查无此单,不给开
支票。会计是不允许私自开支票的。只有会计获得了订单的全部信息,才可
以开相应的支票。
这样避免了他们去看公司的全部交易信息,只可以看少量的必须由他们进
行处理的交易信息。
1.4 应用系统的完整性限制条件
用户自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具
体应用所涉及的数据必须满足的语义要求。
例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取
值范围在 0-100 之间等。
这里在实现时,必须要输入所有信息,才可以进行下单,接收货物,开张
支票等等工作。
1.5 保存审计日志
所有的操作都保存到 memo 中,
每个数据库有对应的列表。
1.6 效果展示
1. 建立用户和密码数据库:
2. 建立用户和用户类型数据库,进行关联。如上图。
3. BuyGuy 们下单。
完成订单的从无到有过程。
完成订单的消息分发通知到商人和接收者
Buguy:Jaman 对 order 数据库进行写操作,并记录该操作于 memo 之中。
Buyguy:Jaman 查询下单结果。能看到自己下的订单。
这里让另一个 BuyGuy 用户:BuyGuy 去进行操作,
可以看到,BuyGuy 只能看到自己的订单,尽管 Jaman 也下了订单。从而实现
了数据分离,每个出货员只能看到自己下的订单和订单情况。
4. Businessman 们发货:
商人 sheshe 只能看到自己公司被下单了:看不到订货公司的其他情况。
完成商品的寄送
商家记录自己的发送货物情况。
商人 water 能查到 water:
商人 apple 能查到 apple。
如果数量和品名,金额对不上,送货肯定是失败的: