Access Control and Intrusion detection
Access Control
Suppose we have 40k students and 40k student records, and a student should only read/write his/her own files将student看为一个subject,将一个record一个object,我们将要存储(40k+40k)*40k=320M的元素,但是针对那些控制权限为空的存储,我们没必要浪费空间。
方案1——ACL
ACLs可以存储针对某一文件,用户拥有的权限,以集合的形式。
还有一个问题:How about identical rows in ACM?也就是说,针对同一份文件,不同用户对它都有相同的操作,为了节省空间,我们应该怎么存储?
引入Group的概念,使用group或者去合并对用一文件拥有相同权限的用户。
UNICOS System (http://en.wikipedia.org/wiki/Unicos)
IBM AIX (http://www-03.ibm.com/servers/aix/)
方案2——capability list
Rows of access control matrix stored with subjects.
针对某一用户对哪些文件拥有哪些权限来存储。
C-list可以类比为电影票,你需要展示电影票才有权利看电影;电影(object)被定义在电影票上。(这有一点是电影票的内容可以被修改,用户可以修改想观看的电影)
如果要做撤销的话,比如某某电影不上映了,那只能回收电影票,这开销是很大的。有一个很聪明的做法是——use indirection
比如说,我在电影票上写电影1.然后我可以改变电影1所指定的电影。比如原先电影1指向《归来》,然后它不上映了,我就把电影1指向《百鸟朝凤》就行了,而电影票不用修改。
总的来说,ACL和C-L是对称的。
针对两者的不同我们可以回答以下两个问题来探究他俩的不同:
1. Which object can be accessed by a given subject?
2. What subjects can access a given object?
很明显,问题1适合使用C-L,而问题2适合使用ACLs.
然而在现实世界的应用场景中,问题2是更普遍存在的,所以ACLS更被广泛应用。如下是ACL和C-L的subject和object的关系图。
以上两种存储关联,最后subject和object的关系会变成如下复杂的关系:
于是Role-as-a-Bridge诞生了。
Role-Based Access Control
A standard (http://csrc.nist.gov/rbac/)
为什么会出现这个role呢?
Intrusion detection(入侵检测)
分类:anomaly detection 和 misuse detection
①anomaly detection
Assumption: attacks vary from normal behaviors(异常能够被检测出来)
n Method: statistics, data mining, Machine learning, etc.
n Advantage: potentially detect zero-day attacks
n Disadvantage: (theoretically) less accurate (理论上不会完美精确)
②misuse detection
Assumption: attacks can be identified with a signature
(构造一种签名来catch不合法的攻击)
n Method: state transition, colored Petri net, etc.
n Advantage: more accurate
n Disadvantage: can only detect modeled attacks(不能防御未知的攻击)
A. anomaly detection
攻击率意味着什么?
In 100,000,000 calls, there are 100 real attacks
B.99%的精确率意味着什么?
伪阳性:(100,000,000 - 100)*1/100= 1,000,000
(可能会有1,000,000合法的calls被判断成不合法的calls)
伪阴性:100*1/100= 1
(可能会有1个不合法的call被判断成合法的call)
B. Misuse detection
观察如下操作?考虑t1-t6哪些步骤的执行顺序是可以互换的?
以上操作的结果是:you have an executable root’s shell。
更好的表示操作执行的顺序,构建colored petri net
练习:给定一个attack signature,列出所有可以被检测的执行事件。
t1 t2
t3 t4
C32=6种
C.其他检测方法
Buffer overflow overwrite memory from the bufferto the return address
So put a ‘canary word’ before return address
If it’s been changed, the function won’t return
The canary word must be random, why?