审计算法
毫无疑问,没有任何一种加密软件可以宣称自己是绝对安全的,防者处处小心,攻者却也无孔不入。即使加密软件多管齐下,让系统始终处于多重保护之下,可是泄密者却是绝对存在的,泄密的因素很多,泄密的机率也不可小觑。泄密者的行为是不露痕迹的,用户可能在事发之前完全没有防备,从而遭受重大损失。那么事后肯定要追究责任,是由谁(WHO)泄了密,这就要求我们的加密软件提供一个可行的解决方案。审计算法便由此诞生了。
一、 算法前提
加密软件的所有模块都已完成,预期功能也已实现,现在就只剩下一个责任问题了。关于内部资料的泄密,加密软件必须为其提供解决方案,事后如何追究责任,谁该对此负责,审计算法就在这样的前提下被提出,要其完成应该完成的功能。
二、算法思想
1、 泄密的途径可能不止一种,审计的方法也就不可能是单一的。但是,由我们加密软件的实际情况来看,我们重点保护的是文档,这些文档也是泄密者和偷窃者的终极目标。所以,我们只要能完全掌握任何一个FN的相关操作,捕获到任何操作此FN的客户端,并给出泄密级别,此算法就算成功了。
2、 客户端想要进行任何的有效操作,都必须先插入USB-Key,让CA对其进行身份验证。如果是合法用户就能成功登录,否则CA检测到客户端登录时的错误信息,那么此次的登录行为也就宣告失败,同时CA要记录登录失败的用户信息,并进行一个计数。当同一个用户登录失败的次数达到5次,CA就会自动报警,并锁定此USB-Key用户。
3、 客户端在成功登录后,CA要分配一把私有DES给客户端,客户端的所有文件都由这把DES进行加解密,其它用户因为没有此私有DES,是没有办法加解密的。计算机将自动记录下客户端的加解密操作。
4、 公共DES是由程序生成,全网唯一,所有的可公开信息(比如通知、公告、普通文档)都是由此DES来加解密的。这些可公开信息都是放在公共的共享目录中,所有客户端都能共享这把DES来进行加解密的操作。此操作同样被记录下来。
5、 授权方在授权行为中,充当了拍板人与负责人的角色,那么关于授权方、授权文件与授权DES就要记录在案。
6、 客户端打印了文件,就意味着内部信息有可能被带出去,也就是说打印行为同样要被记录。
7、 除了以上几种行为是可能的泄密途径外,内网与外网的通信也是泄密的一大可能,只要此行为发生,我们就要记录下来。
8、 从我们这个审计算法出发,我们要对登录、加解密、授权、打印以及内网与外网的通信这五种操作进行跟踪审计。
9、 记录将以日期作为分类保存的依据,生成日审计文件,月审计文件,季度审计文件以及年度审计文件。每到一个时期,审计文件就该进行一次存储清理,并备份以前的数据,然后清空,便于下一次的存储。但是,不断膨胀的数据放在后台数据库显然是不合适的,审计要不要有一个专用服务器呢?我想,不同的用户可能会有不同的考虑。总之,不管数据放在哪里,审计的步骤是不会变的。
10、 有了审计数据后,我们要对这些数据进行聚类和关联。然后对每个客户端的所有相关操作进行一个统计,并给出客户端的泄密级别。
11、 审计的结果将以审计报表的格式显示出来,但是结果肯定不是一条记录,而是一个记录集。这样的数据只是作为审计的参考,泄密级别也只是一个估计的值,误差是绝对存在的。所以,审计报表给出的数据,不一定是百分之百正确的,审计人员根据这些数据进行判断,达到一个有智能化分析的效果。
三、符号说明
Num:表示员工编号
InputNum:表示客户端在登录时输入的员工编号
FN:表示文件名
DDES:表示用于解密的DES
EDES:表示用于加密的DES
K:表示授权DES
UnEnTSum:表示失败登录的次数。0表示一次性登录成功,非0表示登录失败以及失败次数。
Sli:表示文件打印的份数
Time:表示某个操作或行为发生的时间
Normal:表示客户端行为发生时间的合法性。如果行为发生时的Time是客户端的正常工作时间,那么Normal的值就为正常时间,否则值为非正常时间。
ComTime:表示客户端与外网通信的长达时间
四、算法说明
(一)审计数据的记录格式
为了更加快速地进行审计数据的记载和备份归档,我们的审计数据采用数据库文件的方式来保存。一旦客户端发生登录、加解密、授权和打印这四种操作,相关记录便经由计算机自动产生了。审计数据的内容要包括人,DES,文件,时间等信息。为了防止客户端修改本机的系统时间,我们在审计算法中用到的Time都将调用服务器的系统时间。
在作审计之前必须要先建立一个审计数据库,审计数据库里有5张表,分别为登录表、加解密表、授权表、打印表、外网通信表。
登录表的项有:InputNum,Num,UnEnTSum,Time,Normal
加解密表的项有:Num,FN,DDES, EDES,Time, Normal
授权表的项有:Num,FN,K,Time, Normal
打印表的项有:Num,FN,DDES,Sli,Time,Normal
外网通信表:Num,ComTime,Time,Normal
(二)审计跟踪
1、 跟踪客户端登录信息
客户端一旦插入USB-Key(假设持有者为A)后,就会弹出登录界面,在客户端输入用户名和密码后,CA便会对其进行验证。
(1)A的登录信息正确,也就是说客户端是合法用户,CA就会产生一把私有DES并将其分配给A。
计算机自动记录下此次的登录行为。记录内容为:InputNumA,NumA,UnEnTSum,Time,Normal
UnEnTSum:0
Time:yy-mm-dd hh:mm:ss (以下凡涉及到Time都采用此格式)。
如果A是在正常工作时间内一次性成功登录的,也就是说Normal的值为正常时间,那么此行为就不用被记录下来。
(2)A的登录信息错误,也就是说客户端是非法用户,CA会对这一个用户的登录行为进行一次累计计数,记录内容为:InputNumA,NumA,UnEnTSum,Time,Normal
UnEnTSum:表示登录失败的次数。
如果在第五次登录时仍然失败了,那么
UnEnTSum:登录失败五次,USB-Key被锁定。
当登录次数累计到5,可仍就失败了,CA就会将A锁定,A也就无法登录。下次,用户如果要用此USB-Key,必须先解除锁定,否则此USB-Key就永远无法被激活。并且在一年之内都不将此USB-Key激活的话,它就会被彻底注销。
2、跟踪客户端加解密文件信息(假设有某一客户端为A)
当用户在进行任何文件的加解密时,A就自动产生相应的记录(NumA,FN,DDES,EDES,Time,Normal)发送给CA。
如果客户端对自己的文件加解密,那么DDES与EDES相同。如果客户端想把文件上传到公共共享目录,会先用自己的私有DDES解密,再用公共EDES加密,DDES与EDES肯定不同。如果客户端看的是授权文件,不仅DDES与EDES相同,并且还与授权表里的K是相同的。
3、跟踪授权信息
假设申请方为A,被申请方为B,授权方为R。
在我们的授权算法中,A想要和B共享访问,必须得到他们的同一祖先结点R的同意,并由R来进行一个授权操作。这样做是为了达到一个权限控制的目的,也是为了事后如果相关文档泄密,可以找到一个负责人。
R在确认A和B的身份之后,如果允许他们共享访问的话,就会进行授权操作。这时,R的授权行为要记录下来。记录内容为:NumR,FN,K,Time,Normal
如果想获得更多关于授权申请的信息,可查看后台数据库中的授权申请表和授权注销表。这两张表对整个授权申请行为都有比较详细的记录。
4、打印审计跟踪
打印端口应被监控,一旦客户端打印文件,此操作就被记录。记录内容:Num,FN,DDES,Sli,Time,Normal
Sli:Num打印FN的份数。
5、外网审计跟踪
客户端一般都在网内进行通信,但是客户端在某些情况下可能需要与外网交互。我们的加密软件主要是针对内网,但与外网进行通信,也会构成一个安全上的威胁,是内部人员外泄机密的一个途径。因此,客户端只要与外网交互,就必须被审计跟踪。关于这方面的记录可从网管处获得,并由审计人员将相关信息录入外网通信表中,录入格式为:Num,ComTime,Time,Normal
(三)审计数据处理。
审计数据可能会是海量级的,如何更快更准确地找出有用的审计数据呢, CA应按照不同的时间来定期整理和备份。
(1)日审计文件
以24小时为制,把00:00:00作为每一天的结束时间,凡是这之后所生成的记录都是第二天的。CA将一天之内的所有记录按其Time生成一个文件,并命名为日审计文件(例如:日审计文件2005-4-27)。
(2)月审计文件
显然,CA在一个月之中会生成很多这样内容相似的记录,那么到了一个月的最后一天,CA按照Time把日审计文件进行合并后,就产生了我们的月审计文件。命名方式:月审计文件2005-4-30。
月审计文件一旦生成,此月中的所有日审计文件便可被删除。
(3)季度审计文件
原理同上,不再赘述。但是生成季度审计文件之后,月审计文件要做好备份工作。
(4)年度审计文件
同上。不过,因为这个时间很长,所以要注意审计文件本身的保密工作和备份工作。
(五)审计数据的智能分析
到此为止,审计数据的采集与过滤就算完成了。现在要做的就是我们最关键的数据分析了,如何才能得到泄密的一个可能范围,这将是审计算法的核心。
在数据的分析与处理当中,我们将要引入两种分析方法--聚类与关联。
在下面五种情况中,我们会有正常时间与非正常时间的区别。这里说明一下,正常时间是指员工正常上班的时间,非正常时间是指员工的非上班时间。因为,在员工的非正常时间里所做的任何操作,他的泄密可能性都比在正常时间时要大。
(1)聚类与报警
1.登录类
if(正常时间){
if (UnEnTSum==5) { 向CA报警,USB-Key被锁定,并将记录放入登录表 }
if (1<=UnEnTSum<5){ 将记录放入登录表 }
}
else {记录放入登录表,向CA报警,有人在非正常工作时间进行登录操作}
记录为:(InputNum,Num,UnEnTSum, Time,Normal)
2.加解密类
if(正常时间){ 记录放入加解密表 }
else {记录放入加解密表,并向CA报警,有人在非正常工作时间进行加解密操作}
记录为:(Num,FN,DDES,EDES, Time,Normal)
3、授权类
if(正常时间){记录放入授权表}
else {记录放入授权表,并向CA报警,有人在非正常时间对某文件进行授权操作。}
记录为:(Num,FN,K,Time,Normal)
4、打印类
if(正常时间){记录放入打印表}
else {记录放入打印表,并向CA报警,某人在非正常时间对某文件进行打印操作}
记录为:(Num,FN,DDES,Time,Normal)
5、外网通信类
if (正常时间) { 记录放入外网通信表 }
else { 记录放入外网通信表,并向CA报警,某人在非正常时间与外网进行通信}
记录为:(Num,ComTime,Time ,Normal)
(2)关联
仅仅有了聚类是不够的,因为数据之间没有任何的联系,每一个类都是单独的。我们要想办法在它们之间牵线搭桥,用一些规则把数据关联起来,在内部形成一个关系网。我们把这些规则称为关联规则。
接下来的事就是如何关联,怎么来定义规则。
首先需要用户的介入,如果有机密数据被泄密,审计人员手动输入泄密数据的FN与Time,剩下的交给计算机来处理。
我们在审计时要输入审计参数FN和Time,那么这两个字段就定义为关联字段,凡是数据中有这两个字段且字段值相同的记录便为关联记录。
先根据这两个参数在5张表里找出对应的记录,按Num进行关联并形成用户文档,即一个用户一个审计文档。在各个文档中将4张表里的记录进行分类排列,也就是说来自一个表里的记录是相邻的,都放到一起,并按时间进行排序。
接下来,要对每个用户的相同操作行为以及报警进行计数,并对各个文档进行泄密级别的统计,也即对每个用户的泄密级别进行统计。
泄密级别越高,表明此人的泄密嫌疑越大。最大级别为10级,最小级别为1。
先统计加解密、打印、授权、登录、外网通信这5种操作行为在正常时间与非正常时间的发生次数,将次数的累计和分别表示为R,P,A,L,C。
|
InputNum,Num,UnEnTSum, Time,Normal Num,FN,DDES,EDES, Time,Normal Num,FN,K,Time,Normal Num,FN,DDES,Sli,Time,Normal Num,ComTime,Time,Normal
|
Num |
for(i=0,R>0,R--) //加解密统计
{
if(正常时间)
{
if(DDES==EDES!=K){客户端的泄密级别设为X=1级}
if (DDES是自己的私有DES & EDES是公共DES ) {泄密级别设为X=2级}
if ((DDES==EDES==K){ 泄密级别设为X=3级}
}
else {用户的泄密级别设为X=4级}
} //始终取一个最大级别的值X
Y=X
for(i=0,P>0,P--) //打印统计
{
if(X<4){
{
if(正常时间){用户的泄密级别设为Y=X+1级}
else {用户的泄密级别设为Y=X+2级}
}
else {用户的泄密级别设为Y=5级}
} // Y始终取一个最大值
Z=Y
for(i=0,A>0,A--) //授权统计
{
if(Y<5)
{
if(正常时间){用户的泄密级别设为Z=Y+2级}
else {用户的泄密级别设为Z=Y+3级}
}
else {用户泄密级别设为Z=6级}
} // Z始终取一个最大值
U=Z
for(i=0,L>0,L--) //登录统计
{
if(正常时间&( UnEnTSum!=0))
{用户的泄密级别设为U=7级}
if(非正常时间){
if(登录成功&(UnEnTSum==0)) {用户的泄密级别设为U=Z+2级}
else U=Z+3
}
} // U始终取一个最大值
如果客户端在被审计的时间段内与外网进行过通信,那么由所有相关操作最终推出的泄密值还要加上1,即U=U+1。至此,客户端的泄密级别就算统计完了。
每个客户端在某个时间段对FN进行的所有操作都被统计出来了,客户端与外网通信的时间以及被报警次数也已被计数。最后,把它们以审计报表的形式显示出来。
这里要说明一下,对于某一个客户端来说,它的授权申请方是如何得来的。假如有NumA,它在Time内有过授权行为,那么在授权表中就会有员工编号为NumA的记录,可能还不止一条。而要看授权文件的那一方,也就是授权申请方,对授权文件就会有一个加解密操作,那么在加解密表中肯定就会有记录,当在FN一样的前提下,有记录的DDES、EDES与K相同时,记录的员工编号(客户端)就是NumA的授权申请方。
员工编号 | 文件名 | 私有DES加解密次数 | 公共DES加解密次数 | 授权次 数 | 授权申请方 | 打印份数 | 登录失败次数 | 与外网通信时间 | 报警次数 | 泄密级别 | 时间 | ||||||
正常 时间 | 非正常时间 | 正常 时间 | 非正常时间 | 正常 时间 | 非正常时间 | 正常 时间 | 非正常时间 | 正常 时间 | 非正常时间 | 正常 时间 | 非正常时间 | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|