一种基于主成分分析的用户行为异常检测系统及方法转让专利

申请号 : CN201610489907.8

文献号 : CN106101116B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐剑杨青松毕猛周福才王墨

申请人 : 东北大学

摘要 :

一种基于主成分分析的用户行为异常检测系统及方法,属于计算机技术领域,该系统包括用户行为预处理模块、用户行为训练模块、PCA模块、用户行为检测模块、用户行为异常处理模块。该方法包括用户行为训练阶段和用户行为检测阶段,用户行为训练阶段用于产生用户行为异常阈值;用户行为检测阶段利用用户行为异常阈值判断实时用户行为是否异常;本发明利用PCA方法检测用户的异常行为,PCA对异常值变化非常敏感,用户行为异常对主方向影响大,使用户行为检测结果更有效;检测过程没有重复运算,增加了检测效率,且易于实现;使用阈值来检测实时用户行为是否异常,使检测具有高效、便捷的特点。

权利要求 :

1.一种基于主成分分析的用户行为异常检测系统,其特征在于:所述用户行为包括两种类型:用户数据库访问行为和用户Web服务器访问行为;每种类型的用户行为中用户行为元素包括:当用户行为为数据库访问行为时,用户行为元素包括用户访问的数据表名、用户访问时间、用户访问表中的主键、用户访问的原始数据和用户更改数据;当用户行为为Web服务器访问行为时,用户行为元素包括用户向Web服务器提出的访问请求的对象和相邻访问请求的时间间隔;

所述系统包括:

用户行为预处理模块,(1)在用户行为训练阶段,用于从数据库中获取一种用户行为类型历史用户行为数据;从历史用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到历史用户行为向量;将历史用户行为向量分组构建历史用户行为矩阵;求解每个历史用户行为矩阵的最大特征值对应的特征向量;将每个特征向量中每一个元素的值减去向量所有元素的平均值,得到历史用户行为特征向量集合,并发送到用户行为训练模块;

(2)在用户行为检测阶段,用于实时获取实时用户行为数据,并判断用户行为类型;从每个实时用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到实时用户行为向量;将实时用户行为向量分组构建m个实时用户行为矩阵;求解每个实时用户行为矩阵的最大特征值对应的特征向量;将m个特征向量中每一个元素的值减去向量所有元素的平均值,得到实时用户行为特征向量,并发送到用户行为检测模块;

用户行为训练模块,用于在用户行为训练阶段,接收用户行为预处理模块发送的历史用户行为特征向量集合,并将集合中不可信的历史用户行为特征向量删除,得到历史用户正常行为特征向量集合,并发送到PCA模块;接收PCA模块发送的历史用户正常行为特征向量的主方向,选取其中一个子集的主方向作为历史用户正常行为特征向量的主方向样本,计算其他所有子集合中历史用户正常行为特征向量的主方向与主方向样本之间的相似系数,即历史用户正常行为相似系数,并根据历史用户正常行为相似系数计算该种用户行为类型的用户行为异常阈值,并发送给用户行为检测模块;将历史用户正常行为特征向量的主方向样本发送给用户行为检测模块;

所述将集合中不可信的历史用户行为特征向量删除的具体方法为:对集合中所有历史用户行为特征向量中位置相同的对应元素求取平均值和标准差,将平均值与标准差的倍数分别相加、相减后得到历史用户行为特征向量中该位置元素可信区间,如果一个历史用户行为特征向量中的任何一个元素不在该元素所在位置的可信区间内,就将这一用户行为特征向量删除;

PCA模块,(1)在用户行为训练阶段,用于接收用户行为训练模块发送的用户正常行为特征向量集合,将历史用户正常行为特征向量集合中每m个向量构成一个历史用户正常行为特征向量子集合,使用PCA计算每个历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向,并发送给用户行为训练模块;

(2)在用户行为检测阶段,用于获取用户行为检测模块发送的m个实时用户行为特征向量,并将m个实时用户行为特征向量构成实时用户行为特征向量集合,使用PCA计算实时用户行为特征向量集合中实时用户行为特征向量的主方向,并发送给用户行为检测模块;

用户行为检测模块,用于在用户行为检测阶段,接收用户行为训练模块发送的每种用户行为类型的用户行为异常阈值、每种用户行为类型的历史用户正常行为特征向量的主方向样本和用户行为预处理模块发送的m个实时用户行为特征向量,并将m个实时用户行为特征向量发送给PCA模块;接收PCA模块发送的实时用户行为特征向量的主方向,并计算实时用户行为特征向量的主方向与同种用户行为类型的历史用户正常行为特征向量的主方向样本之间的相似系数,即实时用户行为相似系数;根据实时用户行为相似系数与同种用户行为类型用户行为异常阈值,判断实时用户行为是否异常,如果实时用户行为异常,则将该用户实时用户行为特征向量发送给用户行为异常处理模块;如果实时用户行为正常,将该用户实时用户行为特征向量放入用户行为类型对应的数据库中;

用户行为异常处理模块,如果接收到用户行为检测模块发送的该用户实时用户行为特征向量,则停止该用户相应用户行为类型的操作,并进行报警;

所述相似系数采用如下公式生成:

其中,qij为相似系数,xik为第i个主方向Xi=(xi1,xi2,…xik,…,xim)′中的第k个元素,xjk为第j个主方向Xj=(xj1,xj2,…,xjk,…,xjm)′中的第k个元素;

所述用户行为异常阈值采用如下步骤生成:

定义异常值为1减去相似系数的绝对值,计算每个历史用户正常行为相似系数的异常值,将异常值的平均值加上异常值的标准差,得到用户行为异常阈值。

2.一种基于主成分分析的用户行为异常检测方法,采用权利要求1所述的基于主成分分析的用户行为异常检测系统实现,其特征在于:包括用户行为训练阶段和用户行为检测阶段;

用户行为训练阶段包括如下步骤:

步骤1:从数据库中获取一种用户行为类型历史用户行为数据;

步骤2:对历史用户行为数据进行预处理;

步骤2.1:从历史用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到历史用户行为向量;

步骤2.2:将历史用户行为向量分组构建历史用户行为矩阵;

步骤2.3:求解每个历史用户行为矩阵的最大特征值对应的特征向量;

步骤2.4:将每个特征向量中每一个元素的值减去向量所有元素的平均值,得到历史用户行为特征向量集合;

步骤3:将历史用户行为特征向量集合中不可信的历史用户行为特征向量删除,得到历史用户正常行为特征向量集合;

步骤4:将历史用户正常行为特征向量集合中每m个向量构成一个历史用户正常行为特征向量子集合,使用PCA计算每个历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向;

步骤5:选取其中一个子集的主方向作为历史用户正常行为特征向量的主方向样本,计算其他所有子集合中历史用户正常行为特征向量的主方向与主方向样本之间的相似系数,即历史用户正常行为相似系数,并根据历史用户正常行为相似系数计算该种用户行为类型的用户行为异常阈值;

步骤6:对每个用户行为类型执行步骤1到步骤5,得到全部用户行为类型的用户行为异常阈值;

用户行为检测阶段包括如下步骤:

步骤1:实时获取实时用户行为数据,并判断用户行为类型;

步骤2:对实时用户行为数据进行预处理;

步骤2.1:从每个实时用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到实时用户行为向量;

步骤2.2:将实时用户行为向量分组构建m个实时用户行为矩阵;

步骤2.3:求解每个实时用户行为矩阵的最大特征值对应的特征向量;

步骤2.4:将m个特征向量中每一个元素的值减去向量所有元素的平均值,得到实时用户行为特征向量集合;

步骤3:使用PCA计算实时用户行为特征向量集合中实时用户行为特征向量的主方向;

步骤4:随机选取同种用户行为类型的一个历史用户正常行为特征向量的主方向,计算实时用户行为特征向量的主方向与该历史用户正常行为特征向量的主方向之间的相似系数,即实时用户行为相似系数;

步骤5:根据实时用户行为相似系数与同种用户行为类型的用户行为异常阈值,判断实时用户行为是否异常;

步骤6:如果实时用户行为异常,停止该用户相应用户行为类型的操作,并进行报警;如果实时用户行为正常,将该用户实时用户行为特征向量放入同种用户行为类型的数据库中。

3.根据权利要求2所述的基于主成分分析的用户行为异常检测方法,其特征在于:

所述用户行为包括两种类型:用户数据库访问行为和用户Web服务器访问行为;所述每种类型的用户行为中用户行为元素包括:当用户行为为数据库访问行为时,用户行为元素包括用户访问的数据表名、用户访问时间、用户访问表中的主键、用户访问的原始数据和用户更改数据;当用户行为为Web服务器访问行为,用户行为元素包括用户向Web服务器提出的访问请求的对象和相邻访问请求的时间间隔。

4.根据权利要求2所述的基于主成分分析的用户行为异常检测方法,其特征在于:所述将历史用户行为特征向量集合中不可信的历史用户行为特征向量删除的具体方法如下:对集合中所有历史用户行为特征向量中位置相同的对应元素求取平均值和标准差,将平均值与标准差的倍数分别相加、相减后得到历史用户行为特征向量中该位置元素的可信区间,如果历史用户行为特征向量中的任何一个元素不在该元素所在位置的可信区间内,就将这一用户行为特征向量删除。

5.根据权利要求2所述的基于主成分分析的用户行为异常检测方法,其特征在于:所述相似系数采用如下公式生成:其中,qij为相似系数,xik为第i个主方向Xi=(xi1,xi2,…xik,…,xim)′中的第k个元素,xjk为第j个主方向Xj=(xj1,xj2,…,xjk,…,xjm)′中的第k个元素。

6.根据权利要求2所述的基于主成分分析的用户行为异常检测方法,其特征在于:所述用户行为异常阈值采用如下步骤生成:定义异常值为1减去相似系数的绝对值,计算每个历史用户正常行为相似系数的异常值,将所有异常值的平均值加上异常值的标准差,得到用户行为异常阈值。

说明书 :

一种基于主成分分析的用户行为异常检测系统及方法

技术领域

[0001] 本发明属于计算机技术领域,具体涉及一种基于主成分分析的用户行为异常检测系统及方法。

背景技术

[0002] 随着信息化进程的推进,互联网和网络数据业务的飞速发展,越来越多的人开始应用互联网获取信息。网络用户可以通过网络存储文件、浏览网站、建立远程视频互动、订购车票和购物等。然而,在享受网络便利的同时,我们也正面临着各种网络攻击手段所带来的威胁。传统的用户身份认证机制,如访问控制、数据加密、身份认证等,都是使用密码进行用户认证,而密码容易被非法用户破解,导致这些机制的安全性较差,不能保证用户与服务器进行安全信息交换。审计技术是被大部分数据库系统采用的一种入侵检测技术,审计技术有易于监视、易于追踪的优点,但也存在着通过人工方法很难从庞大的审计数据中找出可疑的入侵行为和无法实现实时的在线检测入侵行为等缺点。
[0003] 用户行为分析方法是根据每一个合法用户基本行为具有一定规则的特点提出的。现有的用户行为异常检测大多是基于数据挖掘方法和机器学习的方法,方法主要集中在关联分析、聚类分析、序列模式分析上,需要进行海量的数据源审计,导致系统运行速度慢,系统的响应时间长,常出现假死现象。同时,现有的数据挖掘方法和机器学习方法过程设计较为复杂,需要很长的运行时间才能得到结果,比如,基于隐马尔可夫模型(Hidden Markov Model,HMM)的用户行为检测方法,该方法利用HMM在用户界面层建立合法用户的正常行为轮廓,并采用Baum-Welch算法对HMM进行训练,在检测阶段利用近似的前向后向算法和贝叶斯准则判断用户当前行为是否出现异常,虽然该方法可以对用户行为进行检测,但所需要的计算量很大,检测效率和实时性较差;基于神经网络的用户行为检测方法,检测过程中运行效率低,而且过程需要人为的干预,实用性差。

发明内容

[0004] 针对上述现有技术存在的不足,本发明提供一种基于主成分分析的用户行为异常检测系统及方法。
[0005] 本发明的技术方案:
[0006] 一种基于主成分分析的用户行为异常检测系统,所述用户行为包括两种类型:用户数据库访问行为和用户Web服务器访问行为;每种类型的用户行为中用户行为元素包括:当用户行为为数据库访问行为时,用户行为元素包括用户访问的数据表名、用户访问时间、用户访问表中的主键、用户访问的原始数据和用户更改数据;当用户行为为Web服务器访问行为,用户行为元素包括用户向Web服务器提出的访问请求的对象和相邻访问请求的时间间隔;
[0007] 所述系统包括:
[0008] 用户行为预处理模块,(1)在用户行为训练阶段,用于从数据库中获取一种用户行为类型历史用户行为数据;从历史用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到历史用户行为向量;将历史用户行为向量分组构建历史用户行为矩阵;求解每个历史用户行为矩阵的最大特征值对应的特征向量;将每个特征向量中每一个元素的值减去向量所有元素的平均值,得到历史用户行为特征向量集合,并发送到用户行为训练模块;
[0009] (2)在用户行为检测阶段,用于实时获取实时用户行为数据,并判断用户行为类型;从每个实时用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到实时用户行为向量;将实时用户行为向量分组构建m个实时用户行为矩阵;求解每个实时用户行为矩阵的最大特征值对应的特征向量;将m个特征向量中每一个元素的值减去向量所有元素的平均值,得到实时用户行为特征向量,并发送到用户行为检测模块;
[0010] 用户行为训练模块,用于在用户行为训练阶段,接收用户行为预处理模块发送的历史用户行为特征向量集合,并将集合中不可信的历史用户行为特征向量删除,得到历史用户正常行为特征向量集合,并发送到PCA模块;接收PCA模块发送的历史用户正常行为特征向量的主方向,选取其中一个子集的主方向作为历史用户正常行为特征向量的主方向样本,计算其他所有子集合中历史用户正常行为特征向量的主方向与主方向样本之间的相似系数,即历史用户正常行为相似系数,定义异常值为1减去相似系数的绝对值,计算每个历史用户正常行为相似系数的异常值,并将异常值的平均值加上异常值的标准差,得到用户行为异常阈值,并发送给用户行为检测模块;将历史用户正常行为特征向量的主方向样本发送给用户行为检测模块;
[0011] 所述将每组中不可信的历史用户行为特征向量删除的具体方法为:对每组中所有历史用户行为特征向量中位置相同的对应元素求取平均值和标准差,将平均值与标准差的倍数分别相加、相减后得到历史用户行为特征向量中该位置元素可信区间,如果一个历史用户行为特征向量中的任何一个元素不在该元素所在位置的可信区间内,就将这一用户行为特征向量删除;
[0012] PCA模块,(1)在用户行为训练阶段,用于接收用户行为训练模块发送的用户正常行为特征向量集合,将历史用户正常行为特征向量集合中每m个向量构成一个历史用户正常行为特征向量子集合,使用PCA计算每个历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向,并发送给用户行为训练模块;
[0013] (2)在用户行为检测阶段,用于获取用户行为检测模块发送的m个实时用户行为特征向量,并将m个实时用户行为特征向量构成实时用户行为特征向量集合,使用PCA计算实时用户行为特征向量集合中实时用户行为特征向量的主方向,并发送给用户行为检测模块;
[0014] 用户行为检测模块,用于在用户行为检测阶段,接收用户行为训练模块发送的每种用户行为类型的用户行为异常阈值、历史用户正常行为特征向量的主方向样本和用户行为预处理模块发送的m个实时用户行为特征向量,并将m个实时用户行为特征向量发送给PCA模块;接收PCA模块发送的实时用户行为特征向量的主方向,并计算实时用户行为特征向量的主方向与同种用户行为类型的历史用户正常行为特征向量的主方向样本之间的相似系数,即实时用户行为相似系数;根据实时用户行为相似系数与同种用户行为类型用户行为异常阈值,判断实时用户行为是否异常,如果实时用户行为异常,则将该用户实时用户行为特征向量发送给用户行为异常处理模块;如果实时用户行为正常,将该用户实时用户行为特征向量放入用户行为类型对应的数据库中;
[0015] 用户行为异常处理模块,如果接收到用户行为检测模块发送的该用户实时用户行为特征向量,则停止该用户相应用户行为类型的操作,并进行报警。
[0016] 所述相似系数采用如下公式生成:
[0017]
[0018] 其中,qij为相似系数,xik为第i个主方向Xi=(xi1,xi2,…xik,…,xim)′中的第k个元素,xjk为第j个主方向Xj=(xj1,xj2,…,xjk,…,xjm)′中的第k个元素;
[0019] 一种基于主成分分析的用户行为异常检测方法,采用基于主成分分析的用户行为异常检测系统实现,所述用户行为包括两种类型:用户数据库访问行为和用户Web服务器访问行为;每种类型的用户行为中用户行为元素包括:当用户行为为数据库访问行为时,用户行为元素包括用户访问的数据表名、用户访问时间、用户访问表中的主键、用户访问的原始数据和用户更改数据;当用户行为为Web服务器访问行为,用户行为元素包括用户向Web服务器提出的访问请求的对象和相邻访问请求的时间间隔;
[0020] 所述方法包括:用户行为训练阶段和用户行为检测阶段;
[0021] 用户行为训练阶段包括如下步骤:
[0022] 步骤1:从数据库中获取一种用户行为类型历史用户行为数据;
[0023] 步骤2:对历史用户行为数据进行预处理;
[0024] 步骤2.1:从历史用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到历史用户行为向量;
[0025] 步骤2.2:将历史用户行为向量分组构建历史用户行为矩阵;
[0026] 步骤2.3:求解每个历史用户行为矩阵的最大特征值对应的特征向量;
[0027] 步骤2.4:将每个特征向量中每一个元素的值减去向量所有元素的平均值,得到历史用户行为特征向量集合;
[0028] 步骤3:将历史用户行为特征向量集合中不可信的历史用户行为特征向量删除,得到历史用户正常行为特征向量集合;
[0029] 所述将每组中不可信的历史用户行为特征向量删除的具体方法如下:
[0030] 对每组中所有历史用户行为特征向量中位置相同的对应元素求取平均值和标准差,将平均值与标准差的倍数分别相加、相减后得到历史用户行为特征向量中该位置元素可信区间,如果一个历史用户行为特征向量中的任何一个元素不在该元素所在位置的可信区间内,就将这一用户行为特征向量删除。
[0031] 步骤4:将历史用户正常行为特征向量集合中每m个向量构成一个历史用户正常行为特征向量子集合,使用PCA计算每个历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向;
[0032] 步骤5:选取其中一个子集的主方向作为历史用户正常行为特征向量的主方向样本,计算其他所有子集合中历史用户正常行为特征向量的主方向与主方向样本之间的相似系数,即历史用户正常行为相似系数,定义异常值为1减去相似系数的绝对值,计算每个历史用户正常行为相似系数的异常值,并将所有异常值的平均值加上异常值的标准差,得到该种用户行为类型的用户行为异常阈值;
[0033] 步骤6:对每个用户行为类型执行步骤1到步骤5,得到全部用户行为类型的用户行为异常阈值;
[0034] 用户行为检测阶段包括如下步骤:
[0035] 步骤1:实时获取实时用户行为数据,并判断用户行为类型;
[0036] 步骤2:对实时用户行为数据进行预处理;
[0037] 步骤2.1:从每个实时用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到实时用户行为向量;
[0038] 步骤2.2:将实时用户行为向量分组构建m个实时用户行为矩阵;
[0039] 步骤2.3:求解每个实时用户行为矩阵的最大特征值对应的特征向量;
[0040] 步骤2.4:将m个特征向量中每一个元素的值减去向量所有元素的平均值,得到实时用户行为特征向量集合;
[0041] 步骤3:使用PCA计算实时用户行为特征向量集合中实时用户行为特征向量的主方向;
[0042] 步骤4:计算实时用户行为特征向量的主方向与同种用户行为类型的历史用户正常行为特征向量的主方向样本之间的相似系数,即实时用户行为相似系数;
[0043] 步骤5:根据实时用户行为相似系数与同种用户行为类型的用户行为异常阈值,判断实时用户行为是否异常;
[0044] 步骤6:如果实时用户行为异常,停止该用户相应用户行为类型的操作,并进行报警;如果实时用户行为正常,将该用户实时用户行为特征向量放入同种用户行为类型的数据库中。
[0045] 所述相似系数采用如下公式生成:
[0046]
[0047] 其中,qij为相似系数,xik为第i个主方向Xi=(xi1,xi2,…xik,…,xim)′中的第k个元素,xjk为第j个主方向Xj=(xj1,xj2,…,xjk,…,xjm)′中的第k个元素;
[0048] 有益效果:本发明一种基于主成分分析的用户行为异常检测系统及方法,具有一下优点:
[0049] (1)本发明使用PCA方法检测用户的异常行为,不考虑准则权重和评估者的主观偏好,完全根据各项目在各准则下评估的结果进行综合评估,且PCA方法对异常值变化非常敏感,如果用户行为包含异常值,其主方向就会受到很大的影响,使用户行为检测结果更有效;
[0050] (2)检测过程没有重复运算,增加了检测效率,且易于实现;
[0051] (3)使用阈值来检测实时用户行为是否异常,使检测具有高效、便捷的特点。

附图说明

[0052] 图1为本发明一种实施方式的基于主成分分析的用户行为异常检测系统的结构示意图;
[0053] 图2为本发明一种实施方式的基于主成分分析的用户行为异常检测方法流程图;
[0054] 图3为本发明一种实施方式的基于主成分分析的用户行为异常检测方法中用户行为训练阶段流程图;
[0055] 图4为本发明一种实施方式的基于主成分分析的用户行为异常检测方法中用户行为检测阶段流程图。

具体实施方式

[0056] 下面结合附图对本发明的一种实施方式作详细说明。
[0057] 一种基于主成分分析的用户行为异常检测系统:所述用户行为包括两种类型:用户数据库访问行为和用户Web服务器访问行为;每种类型的用户行为中用户行为元素包括:当用户行为为数据库访问行为时,用户行为元素包括用户访问的数据表名、用户访问时间、用户访问表中的主键、用户访问的原始数据和用户更改数据;当用户行为为Web服务器访问行为,用户行为元素包括用户向Web服务器提出的访问请求的对象和相邻访问请求的时间间隔。
[0058] 如图1所示,系统包括如下模块:
[0059] 用户行为预处理模块,(1)在用户行为训练阶段,用于对所有用户行为类型依次进行如下操作:从数据库中获取一种用户行为类型历史用户行为数据;从历史用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到历史用户行为向量;将历史用户行为向量分组构建历史用户行为矩阵;求解每个历史用户行为矩阵的最大特征值对应的特征向量;将每个特征向量中每一个元素的值减去向量所有元素的平均值,得到历史用户行为特征向量集合,并发送到用户行为训练模块;
[0060] (2)在用户行为检测阶段,用于实时获取实时用户行为数据,并判断用户行为类型;从每个实时用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到实时用户行为向量;将实时用户行为向量分组构建m个实时用户行为矩阵;求解每个实时用户行为矩阵的最大特征值对应的特征向量;将m个特征向量中每一个元素的值减去向量所有元素的平均值,得到实时用户行为特征向量,并发送到用户行为检测模块;用户行为训练模块,用于在用户行为训练阶段,接收用户行为预处理模块发送的历史用户行为特征向量集合,并将集合中不可信的历史用户行为特征向量删除,得到历史用户正常行为特征向量集合,并发送到主成分分析(Principal ComponentAnalysis,PCA)模块;接收PCA模块发送的历史用户正常行为特征向量的主方向,选取其中一个子集的主方向作为历史用户正常行为特征向量的主方向样本,计算其他所有子集合中历史用户正常行为特征向量的主方向与主方向样本之间的相似系数,即历史用户正常行为相似系数,定义异常值为1减去相似系数的绝对值,计算每个历史用户正常行为相似系数的异常值,将异常值的平均值加上异常值的标准差,得到该种用户行为类型的用户行为异常阈值,并发送给用户行为检测模块;将历史用户正常行为特征向量的主方向样本发送给用户行为检测模块;接收用户行为检测模块发送的实时用户行为特征向量并放入数据库中;
[0061] 所述将集合中不可信的历史用户行为特征向量删除的具体方法为:对集合中所有历史用户行为特征向量中位置相同的对应元素求取平均值和标准差,将平均值与标准差的倍数分别相加、相减后得到历史用户行为特征向量中该位置元素可信区间,如果历史用户行为特征向量中的任何一个元素不在该元素所在位置的可信区间内,就将这一用户行为特征向量删除;
[0062] PCA模块,(1)在用户行为训练阶段,用于接收用户行为训练模块发送的用户正常行为特征向量集合,将历史用户正常行为特征向量集合中每m个向量构成一个历史用户正常行为特征向量子集合,使用PCA计算每个历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向,并发送给用户行为训练模块;
[0063] (2)在用户行为检测阶段,用于获取用户行为检测模块发送的m个实时用户行为特征向量,并将m个实时用户行为特征向量构成实时用户行为特征向量集合,使用PCA计算实时用户行为特征向量集合中实时用户行为特征向量的主方向,并发送给用户行为检测模块;
[0064] 用户行为检测模块,用于在用户行为检测阶段,接收用户行为训练模块发送的每种用户行为类型的用户行为异常阈值、每种用户行为类型的历史用户正常行为特征向量的主方向样本和用户行为预处理模块发送的m个实时用户行为特征向量,并将m个实时用户行为特征向量发送给PCA模块;接收PCA模块发送的实时用户行为特征向量的主方向,并计算实时用户行为特征向量的主方向与同种用户行为类型的历史用户正常行为特征向量的主方向之间的相似系数,即实时用户行为相似系数;根据实时用户行为相似系数与同种用户行为类型用户行为异常阈值,判断实时用户行为是否异常,如果实时用户行为异常,则将该用户实时用户行为特征向量发送给用户行为异常处理模块;如果实时用户行为正常,将该用户实时用户行为特征向量发送给用户行为训练模块;
[0065] 用户行为异常处理模块,如果接收到用户行为检测模块发送的该用户实时用户行为特征向量,则停止该用户相应用户行为类型的操作,并进行报警。
[0066] 所述相似系数采用如下公式生成:
[0067]
[0068] 其中,qij为相似系数,xik为第i个主方向Xi=(xi1,xi2,…xik,…,xim)′中的第k个元素,xjk为第j个主方向Xj=(xj1,xj2,…,xjk,…,xjm)′中的第k个元素;
[0069] 如图2所示,一种基于主成分分析的用户行为异常检测方法,采用基于主成分分析的用户行为异常检测系统来实现,包括用户行为训练阶段和用户行为检测阶段;
[0070] 具体的,如图3所示,用户行为训练阶段包括如下步骤:
[0071] 步骤1:从数据库中获取一种用户行为类型历史用户行为数据;
[0072] 所述用户行为包括两种类型:用户数据库访问行为和用户Web服务器访问行为;对于 用户访问 数据 库的行 为来说 ,需 要为 用户的行 为的 数据 操作语 言(DatamanipulationLanguage,DML)或数据描述语言(DataDescriptionLanguage,DDL)建立触发器。当用户对被保护的数据进行访问时,一旦使用了DML或DDL操作,就会触发相应的触发器,将用户的访问行为:访问时间、用户名、主键、原始数据、更改数据,记录到特定的审计表中。获取用户数据时需要将这个表中记录的用户访问数据读出并统计其中每个的操作的状况,对各个字段进行分解,得到用户行为元素信息。
[0073] 对于用户的Web浏览行为来说,由于Web服务器有着相对完善的日志机制,因此可以直接从服务器日志中读取相应的用户行为数据。由于日志中用户行为数据很多,并不全都具有统计特征,而且有一些访问信息并不是用户触发的,如下载的图像、动画等文件的请求,因此,需要对用户的信息进行筛选,从中得到具有用户特征信息的条目并进行统计。本实施方式选取以下两个用户行为元素来描述用户行为:用户向服务器请求的对象和到达服务器的相邻访问请求的时间间隔。
[0074] 步骤2:对历史用户行为数据进行预处理;
[0075] 步骤2.1:从历史用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到历史用户行为向量;
[0076] 如数据库访问行为:从审计表中获取数据,从数据中提取指定的元素,如审计日志中数据为“更改学生表studentTable中学号为101的学生信息”,提取元素:学生表、访问时间、学号、原学生信息、新学生信息。对提取出元素,如果为数值型,则直接使用;如果不是数值型,需要指定元素对应的数值,例如学号为101可以直接使用,而对学生表studentTable指定数值为12。每一个数值作为历史用户行为向量的一个元素。数据库访问行为一个历史用户行为向量有5个元素;Web浏览行为一个历史用户行为向量有2个元素。
[0077] 步骤2.2:将历史用户行为向量分组构建历史用户行为矩阵;
[0078] 步骤2.3:求解每个历史用户行为矩阵的最大特征值对应的特征向量;
[0079] 步骤2.4:将每个特征向量中每一个元素的值减去向量所有元素的平均值,得到历史用户行为特征向量集合;
[0080] 步骤3:将历史用户行为特征向量集合中不可信的历史用户行为特征向量删除,得到历史用户正常行为特征向量集合;
[0081] 所述将每组中不可信的历史用户行为特征向量删除的具体方法为:
[0082] 对每组中所有历史用户行为特征向量中位置相同的对应元素求取平均值和标准差,将平均值与标准差的倍数分别相加、相减后得到历史用户行为特征向量中该位置元素可信区间,如果一个历史用户行为特征向量中的任何一个元素不在该元素所在位置的可信区间内,就将这一用户行为特征向量删除。
[0083] 步骤4:将历史用户正常行为特征向量集合中每m个向量构成一个历史用户正常行为特征向量子集合,使用PCA计算每个历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向;
[0084] 对于PCA来说,会有很多特征向量,但是在实际应用中,一些特征向量对于变化几乎没有贡献,因此可以被剔除。本实施方式中使用第一主方向,即最大特征值的对应的特征向量来代表用户行为。由于本实施方式中只涉及第一主方向,因此,本实施方式中将第一主方向简称为主方向。
[0085] 本实施方式中,以历史用户正常行为特征向量:
[0086] Z=(2.5 0.5 2.2 1.9 3.1 2.3 2 1 1.5 1.1)′Y=(2.4 0.7 2.9 2.2 3.0 2.7 1.6 1.1 1.6 0.9)′为例,说明PCA构建主方向的具体步骤。
[0087] (1)均值处理:所有的z减去 y减去 得到处理后的历史用户行为特征向量:
[0088] Z'=(0.69 -1.31 0.39 0.09 1.29 0.49 0.19 -0.81 -0.31 -0.71)′
[0089] Y'=(0.49 -1.21 0.99 0.29 1.09 0.79 -0.31 -0.81 -0.31 -1.01)′[0090] (2)计算协方差矩阵
[0091] 如果n维随机变量(X1,X2,...,Xn)的二阶混合中心矩阵ci,j=Cov(Xi,Xj)=E{[Xi-E(Xi)][Xj-E(Xj)]},i,j=1,2,...,n都存在,则称 为n维随机变量(X1,X2,...,Xn)的协方差矩阵。
[0092] 计算(Z',Y')的协方差矩阵,结果为 由于n等于2,所以协方差矩阵为2×2维。
[0093] (3)计算协方差矩阵的特征向量和特征值
[0094] 因为协方差矩阵为方阵,可以计算它的特征向量和特征值,用来代表数据信息。鉴于协方差矩阵为对称阵,本实施方式中使用Jacobi过关法求 的特征值和特征向量,得到数据的特征值为λ1=0.049、λ2=1.284,对应的特征向量为 和[0095] 这些向量都是单位向量,也就是它们的长度为1,这对于PCA是非常重要的。
[0096] (4)生成主方向
[0097] 选择两个特征向量中对应特征值较大的特征向量,即特征向量 作为历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向。
[0098] 步骤5:选取其中一个子集的主方向作为历史用户正常行为特征向量的主方向样本,本实施例中选择特征向量(0.68,0.74)′为历史用户正常行为特征向量的主方向样本,计算其他所有子集合中历史用户正常行为特征向量的主方向与主方向样本之间的相似系数,即历史用户正常行为相似系数,定义异常值为1减去相似系数的绝对值,计算每个历史用户正常行为相似系数的异常值,将异常值的平均值加上标准差得到的值作为用户行为异常阈值;
[0099] 所述相似系数采用如下公式生成:
[0100]
[0101] 其中,qij为相似系数,xik为第i个主方向Xi=(xi1,xi2,…xik,…,xim)′中的第k个元素,xjk为第j个主方向Xj=(xj1,xj2,…,xjk,…,xjm)′中的第k个元素:
[0102] 本实施方式以历史用户正常行为特征向量子集合中历史用户正常行为特征向量的主方向分别为:X1=(0.39,0.41)′,X2=(1.01,1.29)′,X3=(-0.81,-0.71)′,X4=(-0.26,-0.94)′,X5=(0.09,0.29)′为例,说明用户行为异常阈值产生过程:
[0103] (1)利用主方向Xa=(0.68,0.74)′,根据式(2)求得相似系数分别为q1a=0.9999,q2a=0.9869,q1a=0.7287,q1a=0.8893,q1a=0.9031;
[0104] (2)异常值p=|1-qij|,历史用户正常行为特征向量子集的异常值分p1=0.0001,p2=0.0131,
[0105] p3=0.2713,p4=0.1107,p5=0.0969;
[0106] (3)求异常值的平均值和标准差:
[0107] 平均值
[0108] 标准差
[0109] 得到计算出均值为μ=0.09842,标准差为σ=0.09696
[0110] (4)阀值为均值加上标准差,即μ+σ=0.19538。
[0111] 步骤6:对每个用户行为类型执行步骤1到步骤5,得到全部用户行为类型的用户行为异常阈值;
[0112] 如图4所示,用户行为检测阶段包括如下步骤:
[0113] 步骤1:实时获取实时用户行为数据,并判断用户行为类型;
[0114] 步骤2:对实时用户行为数据进行预处理;
[0115] 步骤2.1:从每个实时用户行为数据中提取用户行为类型对应的用户行为元素,并将用户行为元素转换为向量元素,得到实时用户行为向量;
[0116] 步骤2.2:将实时用户行为向量分组构建m个实时用户行为矩阵;
[0117] 步骤2.3:求解每个实时用户行为矩阵的最大特征值对应的特征向量;
[0118] 步骤2.4:将m个特征向量中每一个元素的值减去向量所有元素的平均值,得到实时用户行为特征向量集合;
[0119] 步骤3:使用PCA计算实时用户行为特征向量集合中实时用户行为特征向量的主方向;
[0120] 步骤4:计算实时用户行为特征向量的主方向与历史用户正常行为特征向量主方向样本之间的相似系数,即实时用户行为相似系数;
[0121] 步骤5:根据实时用户行为相似系数求实时用户行为异常值,并与同种用户行为类型的用户行为异常阈值比较,判断实时用户行为是否异常;
[0122] 本实施方式中,以实时用户行为特征向量的主方向为X=(0.98,0.03)′为例,历史用户正常行为特征向量的主方向样本为Xa=(0.6779,0.7352)′,根据公式(2)计算相似系数q=0.7,异常值为p=1-q=1-0.7=0.3。由于异常值p=0.3大于用户行为异常阈值0.19538,所以认为此实时用户行为异常。
[0123] 步骤6:如果实时用户行为异常,停止该用户相应用户行为类型的操作,并报警;如果实时用户行为正常,将该用户实时用户行为特征向量放入同种用户行为类型的数据库中,并重复执行用户行为检测阶段,生成新的全部用户行为类型的用户行为异常阈值。