单用户检测(共7篇)
单用户检测 篇1
自从1979年Schneider第一次提出多用户检测的思想以来, 多用户检测技术已经得到大量研究, 但迄今为止还没有真正广泛应用于实际中, 主要是因为可接受的复杂度与性能无法达到合理的折中, 研究并开发出更加实用的多用户检测方案仍然是未来码分多址无线传输技术研究的一个重点。
1 概述
多用户检测技术通过测量各个用户扩频码之间的非正交性, 用矩阵求逆方法或迭代方法消除多用户之间的相互干扰。由于CDMA系统是一个多输入多输出 (MIMO) 系统, 传统的检测方式如匹配滤波器采用单入单出检测方式, 不能充分的利用用户的边信息, 而将多址干扰看作是高斯白噪声, 因此大大降低了系统容量。多用户检测技术利用各用户之间码字的非正交性来消除多用户之间的相互干扰, 将造成多址干扰的所有用户信号信息、均看作是有用信号信号, 利用其对单个期望信号解调, 来降低多址干扰和远近效应的影响, 也降低了系统对控制精度的要求, 进而提高了通信系统的容量, 成为下一代移动通信系统提高性能的关键技术之一。
2 多用户检测技术发展
多用户检测的想法最早在1979年由Schneider提出的, 但当时并没有引起人们的重视。直到1986年Verdu将最优多用户检测的理论向前推动了一大步, 认为多址干扰是具有一定结构的有效信息, 理论上证明采用最大似然序列检测可以逼近单用户接收性能, 并有效地克服了远近效应, 大大地提高了系统容量, 从而开始了对多用户检测的广泛研究。
然而由于最优多用户检测算法的复杂度随系统中的用户数呈指数关系增长, 当用户数较大时, 运算量非常大, 以致在现阶段还难以实用。但是Verdu的工作为进一步研究奠定了理论基础, 促使人们去寻求复杂度较低、性能上优于传统检测器的各种次优多用户检测器。研究首先集中在AWGN信道下的次优多用户检测上, 而在实际的CDMA通信系统中, 收端不可能知道所有发端用户信息, 而且多用户检测的参数如:振幅、相位和用户间的互相关系数经常改变, 因此开始研究自适应多用户检测算法。
在1995年Michael Honig等人提出了盲自适应多用户检测的概念, 这种多用户检测机仅需要和传统检测机相同的信息, 就可以检测出所发送的信号, 使得多用户检测技术向实用化又前进了一步。自适应滤波的原理在其中得到了广泛的应用各种算法纷纷被应用到多用户检测的系统中。
在1998年Xiaodong Wang和H.Vincent Poor提出了子空间盲多用户检测技术, 将盲自适应信道估计、盲自适应阵列响应估计与盲多用户检测技术结合在一起, 利用基于子空间的高分辨方法对接收的信号进行多用户检测。在1999年他们又将多径CDMA信道中接收天线阵列技术与盲多用户检测技术相结合, 提出了空时多用户检测技术。盲自适应技术不需要采用训练序列, 且提高了系统的动态跟踪能力, 因而近年来也成为一个研究热点。
3 急需解决的问题
3.1 目前多用户检测器的时间复杂度和结
构复杂度都与实际应用存在差距, 尤其是当一些参数 (频率、幅度、相位及同步) 估计不理想时相关系数矩阵会发生变化, 多用户检测器性能也会随之下降。
3.2 多用户检测仅考虑本小区内的用户干
扰, 对周围小区影响不予考虑, 而对CDMA系统中的盲多用户检测技术的研究于处在本小区边缘的移动用户, 周围小区的干扰是不容忽略的, 而如何在周围小区的影响下发挥和使用多用户检测器的特性, 尤其是在小区扇区化后, 多用户检测技术如何应用于实际系统中都是值得进一步研究的问题。
4 最新的研究成果
4.1 基于Lagrangian乘子法的多用户检测。
将二进制二次规划问题连续化为一个带等式约束的二次规划问题, 借助于求解等式约束的Lagrangian乘子法, 推导出Lagrangian乘子与用户信息码及信道噪声之间的关系。同时, 根据多用户检测问题的特殊性, 还给出了估计Lagrangian乘子的方法, 进而得到了一种新的多用户检测器。仿真结果表明, 新算法的误码率与最佳多用户检测器大致相同, 低于一般的次最优多用户检测器。
4.2 基于瞬时混合结构的盲多用户检测。
基本思想是将现有的盲信源分离算法 (BSS) 应用到MIMO-OFDM系统的信号检测中。该算法从MIMO-OFDM系统中的频点角度出发, 解决了BSS算法在存在时延的系统中的应用问题以及由于被分离后的信号重组而带来的不确定置换和通信系统中的复值信号性质所引发不确定的尺度变化问题。方法的有效性已通过计算机仿真得以验证[2]。
4.3 基于演化策略的多用户检测。
DS-CDMA无线通信中的最优多用户检测属于NP完备组合优化问题, 启发式方法是求解这类问题的有效方法, 通过分析最优多用户检测问题的适应值曲面特征, 研究和设计系列低计算复杂度、接近最优多用户检测性能的启发式算法。仿真结果表明[3], 基于演化策略的多用户检测算法能够在中等规模用户数情况下提供与最优多用户检测相当的性能, 而快速迭代局域搜索算法能够以较低的计算复杂度得到比其他局域搜索算法更好的解。
4.4 基于MPIC算法的多用户检测。
在RAKE接收机的基础上, 用前一级解调出的信号对多径干扰进行估计, 并在后一级解调每一径时从接收信号中减去其他径干扰的估计, 以消除由于多径衰落造成的符号间干扰。MPIC算法是一种非线性的多用户检测算法, 采用多级迭代的方法消除多用户之间的干扰。随着迭代级数的增加, 该算法的性能将逐渐提高, 但也会增加运算的复杂度和时延。在MPIC的实现过程中, 综合算法复杂度和性能方面, 采用了2级IGU单元估计多径干扰, 每一级估计的多径干扰的准确性将随着级数的增加而增加[4]。
4.5 基于免疫克隆选择算法的多用户检测。
为了解决最佳检测器计算复杂度较高的难题, 提出一种精简有效的克隆选择算法。把人工免疫系统和神经网络系统的信息处理机制引入到CSA提出了免疫克隆选择算法。所提ICSA通过使用随机Hopfield神经网络制备疫苗构成新的免疫算子, 把新的免疫算子结合到克隆选择算法中, 不仅加快了克隆选择算法的收敛速度, 并提高了克隆选择算法的全局收敛能力。在CDMA系统利用此算法设计了新的多用户检测器, 仿真结果证明了ICSA检测器能够快速收敛到全局最优解, 并且无论抗多址干扰和抗远近效应能力都优于传统方法和一些应用优化算法的多用户检测器[5]。
5 结论
以上这些多用户检测算法多是停留在理论的探讨阶段, 寻找复杂度与性能之间的合理折中且能满足实际高速信号处理需要的实用化多用户检测器仍是目前多用户检测研究的主要方向。相信随着多用户检测理论的不断成熟和工业技术的不断进步, 尤其是半导体技术及DSP器件的飞速发展, 多用户检测技术一定能在未来的移动通信系统中得到充分利用。
参考文献
[1]刘文龙, 马晓红.Lagrangian乘子法在多用户检测中的应用[J].通信学报, 2008 (1) :51-55.[1]刘文龙, 马晓红.Lagrangian乘子法在多用户检测中的应用[J].通信学报, 2008 (1) :51-55.
[2]赵宸, 郭滨, 王珂.基于瞬时混合结构的盲多用户检测[J].通信学报, 2008 (2) :134-140.[2]赵宸, 郭滨, 王珂.基于瞬时混合结构的盲多用户检测[J].通信学报, 2008 (2) :134-140.
[3]王少尉, 季晓勇.最优多用户检测问题研究[J].电子学报, 2007 (12) :2339-2342.[3]王少尉, 季晓勇.最优多用户检测问题研究[J].电子学报, 2007 (12) :2339-2342.
[4]冯侨, 郑建宏.TD-SCDMA系统中多用户检测算法比较[J].重庆邮电大学学报 (自然科学版) , 2007 (12) :710-712.[4]冯侨, 郑建宏.TD-SCDMA系统中多用户检测算法比较[J].重庆邮电大学学报 (自然科学版) , 2007 (12) :710-712.
[5]高洪元, 刁鸣, 王冰.基于免疫克隆选择算法的多用户检测技术研究[J].系统仿真学报, 2007, (5) :983-986.[5]高洪元, 刁鸣, 王冰.基于免疫克隆选择算法的多用户检测技术研究[J].系统仿真学报, 2007, (5) :983-986.
互联网用户异常行为检测 篇2
入侵检测[1] (Intrusiondetection) 作为一种主动的防御技术被期望实现对网络攻击的全方位检测。ADAM[2], MADAMID[3]和MINDS是采用关联规则的经典算法。ADAM算法主要使用单层关联规则挖掘模式寻找连接记录各属性之间的关联关系, 使用多层关联规则挖掘模式来发掘IP地址的高层抽象的关联规则, 随后将设计全程变量记录某些特征属性的统计值, 但是算法是对已知攻击特征的理解和分析, 并不能为发现新的入侵特征提供支持。MADAMID算法利用挖掘到的频繁模式进行特征构造, 使用分类学习算法进行入侵检测。但是, 所构造的特征只是有限的几个统计模式, 没有构造出新的特征和未知的模式。MINDS使用无监督技术, 对每个网络连接设置一个值, 用来反映每个连接的异常度, 对标记很高异常度的网络连接进行关联模式分析发现异常行为, MINDS存在需要训练集进行分类和只分析数据的头部而没有分析负载数据的问题。由于传统的基于关联规则技术的入侵检测算法是对全部历史数据进行等同学习, 不能准确反映网络的行为特征, 另外, 网络数据具有海量、数据持续到达等特点, 上述算法进行关联模式挖掘需多次扫描数据信息, 无法适应网络数据流信息的特征。
基于前面的分析, 入侵检测系统 (IDS) 行为度量存在如下不足:传统的IDS主要是监测用户的系统行为日志, 根据用户的行为/事件的输入/输出进行监测或预警。其典型的异常行为监测模型基于系统调用序列异常模式和参数的检测方法[4]。这类方法的主要缺陷为:一方面没有全面地对行为进行度量, 通常只注重网络访问者用户系统行为, 而忽视对网络行为的监测;另一方面基于监控系统行为日志的异常行为监测实时性不高, 并且存在较高的误判率。当前的入侵检测是一种后置检测, 缺乏动态适应性。因此本文提出行为的定义, 对网络行为进行异常分析, 针对不同的应用场景采用基于向量空间和语义的行为异常检测算法。仿真实验表明与传统的入侵检测方法相比, 本文方法有较好的环境适应性和较低的误判率。
1 异常检测总体框架
异常检测的对象一般是本机当前的一段行为序列, 记为q, 通过一定的方法, 来判断序列q是否存在异常。在判断过程中可以利用的资源有本机的历史行为序列h, 以及本机所在网络环境的群体行为序列集合c。异常检测作为一种模式判定应用, 往往存在一定的误判, 因此需要从多角度对行为进行检测, 综合做出判断, 以降低误判的几率。为了达到这个目标, 本文提出了一种二维异常检测框架来实现综合判断目标。一方面, 将本机上的当前行为序列和该机上的历史行为序列进行模式匹配, 检测其在纵向的时间维度上是否存在异常;另一方面, 将本机上的当前行为序列和该机所在环境的群体行为序列进行模式匹配, 检测其在横向的群体维度上是否存在异常。最终, 将两个维度上的判断按照统一的参数模型融合起来, 做出综合的异常判断。具体过程如图1所示。
网络行为定义:社会学中[5]认为, 行为是人类在生活中表现出来的生活态度及具体的生活方式, 它是在一定的物质条件下, 不同的个人或群体, 在社会文化制度、个人价值观念的影响下, 在生活中表现出的行为的基本特征, 或对内外环境因素刺激所做出的能动反应。因此, 网络中用户的行为可以由4个基本要素构成, 即网络行为承担者、行为环境、行为目的、行为动作, 具体描述如下。
1) 行为的承担者。
网络中用户的承担者的发起者包括两个要素:发起者的ID, 发起者受体的ID可以用二元组P= (ID, ID') 进行描述。
2) 行为的网络环境。
用户行为的网络环境包括网络行为发生的时间、用户行为所涉及的通信协议、周围用户的状态和用户客户端本身所运行的进程。因此, 用户行为的网络环境可以描述为四元组:E= (HT, CP, PR) , 其中:HT表示网络行为发生的时间;CP为用户行为所涉及的通信协议集合, P= (P1, P2, …, Pn) ;PR为用户的进程集合, PR= (PR1, PR2, …, PRn) 。
在本文提出的模型中, E= (HT, CP, PR) 。
3) 行为目的。
网络中用户行为目的是指用户根据自身的需要, 借助计算机网络作为中介, 预先设想的行为目的。在现实的计算机网络中, 可以映射为用户所需要获取的资源和服务, 可以用如下序列描述M= (S1, S2, …, Sn, π1, π2, …πm) 。其中S1, S2, …, Sn为用户想要获取的服务, π1, π2, …, πm为用户想要获取的资源。
4) 行为的操作序列。
用户行为的操作序列定义为O= (a1, a2, …, an) 。
行为的4元组为 (P, E, M, O) , 该4元组使用下面论述的向量空间归一化操作, 可以映射到n维空间中的一个n维向量。
2 基于向量空间的检测方法
不同的网络环境中对行为预期要求的严格程度不同, 对计算速率要求也不一样。例如生产型信息系统所在的网络中, 要求用户的输出必须落到预期的输出范围内, 而且对实时性要求很高。根据文献[6]中所述, 对生产型信息系统本文采用基于向量空间的检测方法。
在建模阶段, 每段文本都被看作一个词元集合, 通过统计词频 (term frequency) , 其被转换为一个词频序列。在本文中, 网络行为序列有着和文本相似的结构, 其中以行为作为维度来构筑向量空间, 行为序列是分析的对象, 将被映射到空间中形成对应的行为向量。
当网络行为序列被映射为向量空间中的行为向量后, 我们就可以进入匹配阶段来计算行为序列之间的相关度了。顺理成章地, 向量的空间距离是衡量行为向量两两之间的相关度的合理指标。实际应用发现, 在空间距离匹配体系里, 序列的长度往往会影响到相关度的衡量。例如, 两个本来很相似的行为序列, 其中一个序列由于记录的时间较长而比另一个序列长了好几倍, 从而映射为行为向量后, 每个行为维度上的取值都比另一个序列按比例高了好几倍, 其在空间中的表现就是这两个行为向量方向相近, 但是长短差了很多, 如果直接用空间距离来表征相关度, 就会显示这两个序列相关度很低, 而带来很大的误差。因此, 在计算空间距离前, 一般需要对向量进行归一化, 可以解决向量因为长度不一而在匹配上带来的误差。归一化之后, 由于向量之间的空间距离和两者之间的夹角是正相关的, 而向量夹角又是与向量点积正相关, 所以一般选用向量点积来表征向量的匹配度Sim:
其中, Vq, Vh分别表示两个向量。通过模式匹配算法得到当前序列和历史序列之间的匹配度Sim (q, h) 以及当前序列和群体序列集之间的匹配度Sim (q, c) 之后, 我们通过融合算法将两者进行结合, 得到总的匹配度, 以做出异常决策。在这里, 融合过程本质上是一个插值过程, 选用比较流行的线性插值法即可, 其形式为:
其中参数a可以通过训练方法来确定。
3 基于语言空间模型的检测方法
对于普通的网络环境, 异常检测的计算应该符合通用性原则, 根据文献[7]所述, 基于语言空间的异常行为模型具有通用性的计算特点, 因此通用网络环境, 本文采用基于语言空间模型的检测方法, 本方法的建模方法以行为作为基本单位对序列进行频率统计, 并按照倒文档频率行为进行信息量加权。同时, 相较于空间向量模型的建模过程, 本方法在建模对象和建模上存在两点不同。在建模对象上, 本方法只针对以序列或序列集为特征的某个主体进行建模, 在本框架中, 只对本机历史序列h和群体序列集c进行建模。在物理意义上, 与空间向量模型中不同的是, 序列在本方法中的建模结果不是一个空间向量, 而是一个统计概率模型。以本机历史序列h为例, 其中每一个行为t在模型中都有一个对应的产生式概率p (t|h) , 也即在以序列h为特征的本机主体发生行为t的概率为p (t|h) 。同理, 群集行为集c的建模结果为p (t|c) 。
值得注意的是, 在序列h或是序列c中没有出现的行为t, 原则上p (t|h) 或是p (t|c) 的值是0, 但为了计算的合理性, 都对其做一定程度的平滑, 用一个很小的概率θ来代替0。这些θ值一定程度上会影响到模式匹配时的相关度计算, 因此我们在本方法中采用先融合、后匹配的顺序, 通过融合算法, 将θ值的数目尽可能减少, 以提高计算的准确度。为了达到上述目的, 这里采用Bayes插值的方式来进行融合, 其表达式为
其中, Tt│h为事件t在历史序列h中的频率, Len (h) 为历史序列h的长度, 而p (t|h) 为Tt│h/Len (h) , a为插值参数, 可以通过训练确定。
通过融合算法得到统一的产生式模型p (t|hc) 后, 就可以通过匹配算法计算相关度了。在产生式模型里, 对于当前的行为序列q, 以模型h、c产生该序列q的概率p (q|hc) 作为相关度表征, 表示成公式为
其中Tt│h为ti行为在q里发生频率, p (ti|hc) 为模型hc产生行为ti的概率。在本匹配算法里, 当前序列q里的行为ti若在历史序列h和群体蓄力集c里都很少发生, 说明本行为不是很正常, 若q含有的不正常行为越多, 则该序列是异常的可能性则越大。
4 实验仿真
本文的仿真实验主要模拟具体的应用场景及用户之间的交互行为。随着信任模型研究的增多, 为了评估信任模型在P2P (点对点) 环境、Adhoc和普适计算环境中的效果, 本文通过不同的场景来验证本文提出的方法的有效性、效率和环境适应性。
本文通过Net Logo模拟软件仿真了一个网络环境来对本文的提出的用户行为预测模型及其算法进行性能分析, 试验环境为Intel core双核2.66 GB, 内存2 GB, Win7平台上使用Net Logo对网络环境中的实体行为进行仿真。表1为实验参数。
1) 实验中实体有2种角色, 分别为普通用户和服务器, 服务器对用户行为的评估的和用户自身对行为的评估独立进行, 不受到其他用户的影响;
2) 实验中设定了个体最小相似度为λ=0.7, 如果相似度小于0.7就认为当前行为和个体可信行为不相似;
3) 行为预测评估模型中的n1、n2、N分别初始历史行为的数量和群体行为的数量以及网络环境中的实体数目, 上述参数的设定与具体的网络应用场景有关。
通过对网络用户的行为的度量, 来判断该行为是否是攻击行为, 从而进一步确认该网络访问者是否是可信的。下面说明了个体可信行为特征库可信行为数量的增加对行为判断正确率的影响。设在Δt时间内, 系统检测了用户的可信行为有x (t) 个, 恶意行为有y (t) 个, 设该群体中的已经判断为恶意用户的比例为α, 那么MR (恶意行为成功检测率) 可以描述为
本文模型和文献[7-8]中提到的传统的入侵检测机制进行比较, 图2和图3是根据群体中被感染的个体百分比来来进行MR的比较。
从模拟的结果来看, 本文方法比传统的方法更能有效地检测出恶意行为, 从而能更有效地保护网络中的用户群体。
参考文献
[1]罗守山, 温巧燕, 杨义先.入侵检测[M].北京:北京邮电大学出版社, 2004:47-48.
[2]BARBARA D, COUTO J, JAJODIA S.ADAM:A tested for exploring the use of data mining in intrusiondetection[J].SIGMOD, 2001, 30 (4) :l5-24.
[3]STOLFO S J, LEE Wenke, CHAN P K, et a1.Data mining based intrusion detectors:An overview of the Columbia IDS project[J].SIGMODRecord, 2001, 30 (4) :5-14.
[4]ITU-T Recommendation X.509.Information technology.Open systems interconnection.The directory:Public-key and attribute certificate frame works[S].
[5]王瑞鸿.人类行为与社会环境[M].上海:华东理工大学出版社, 2002:1-12.
[6]BUDANITSKY Alexander, HIRST Graeme.Semantic distance in word net:An Experimental, Application-oriented evaluation of five measures[EB/OL].[2013-02-18].ftp://ftp.cs.utoronto.ca/pub/gh/Budanitsky+Hirst-2001.pdf.
[7]WUU L C, HUNG C H, CHEN S F.Building intrusion pattern miller for Snort net work intrusion detection system[J].Journal of Systems and Software, 2007, 80 (10) :1699-1715.
单用户检测 篇3
随着网络广告的迅猛发展, 以及网络广告点击付费计价模式的兴起, “欺诈点击”行为就成为了困扰广告客户和广告服务提供商的一大难题。Google把“欺诈点击”定义[4]为:无效的点击, 通常是由人为故意和 (或) 有敌意的用任何方式产生的点击和页面显示。面对此种问题, 目前国内外主要采取的预防和检测方法有: (1) 以IP和Referer[5]作为检测手段的防欺诈点击方法; (2) 雅虎点击分析过滤、历史行为分析过滤和AI模式识别过滤三种等过滤技术[9]; (3) 基于有限状态自动机 (DFA) 的实时检测方法; (4) 基于图形验证码防欺诈点击方法[5]等。
以上前三种方法中检测出的有效点击就意味着对该点击的“信任”, 但是信任与风险往往是并存出现的。仅仅依靠人为编写的检测程序来判定点击的有效性是比较片面和危险的, 因为失误的判断将会同时损害点击用户、广告主和广告服务提供商的利益。第四种方法虽然能够很好地预防欺诈点击行为, 但是将会极大影响用户查看广告时的网络浏览体验。那么怎样才能在不影响用户广告浏览体验的基础上, 更加准确地检测出用户的欺诈点击行为呢?本文通过挖掘用户点击流数据对用户每次点击合法性概率进行预测, 然后结合博弈控制机制[2]对用户当次点击合法性进行最终判断。
1 广告欺诈点击检测模型的建立
若想检测用户广告点击行为有效性, 那么获取详细的用户点击行为数据流[3]则是必须的, 目前获取这些信息的实现方法有三种: (1) 在网站服务器端代码中直接获取; (2) 从处理每日网站访问的详细日志获取; (3) 利用手工或软件工具在网站页面添加获取数据代码进行获取。通过考虑实现成本及效率等多方面因素, 最终选取第三种方法实现点击流数据的获取。由于用户Web网站[7]的开发目前最常用的是PHP、JSP和ASP三种语言环境, 所以在本文设计的用户点击流数据获取方法中有必要为这些语言封装调用数据挖掘的接口, 这些接口以API方式实现[3]。获得了用户点击行为数据以后, 结合数据挖掘和博弈控制机制建立了基于用户行为广告欺诈点击检测整体模型三层构架框图。如图1所示。
1.1 点击流数据仓库的创建
对所获取的用户点击数据流通过星型多维数据模型创建Click数据仓库, 其中包括一个包含大批数据且不含冗余的Click事实表和一组相对较小的维度表, 每个维度只有一个逻辑数据表。如图2所示。
数据仓库的面向主题性决定了获取访客由点击行为所产生的属性值是主要的, 而那些 (如:客户端操作系统、分辨率等) 无关的属性将不会影响最终的判定结果。基于以上原因, 我们建立了图2所示包含客户端信息 (User) 、用户地理信息 (Location) 、点击日期 (Date) 、点击时间 (Time) 、关键字 (Keyword) 、入口页 (Path) 和着陆页 (Landpage) 等多维的事实表。其中:User和Location两个维表是为了验证用户的身份, 检测某用户某一时段频繁访问的现象而建立;关键词竞价现已成为企业宣传的重要途径, Keyword维表的建立就是为了检测损坏企业利益的关键词行为;Path和Landpage维表的建立是为了获取用户访问广告的频繁路径, 从而从这方面找到恶意点击的疑点;Date和Time两个维表分开建立是为了能够极大地节省数据处理时的资源消耗, 提高分析效率, 且同时能够满足访客行为分析的需要。
1.2 运用数据挖掘预测点击行为合法性
通过贝叶斯分类方法[1]对用户的点击行为合法程度首先进行预测, 而在预测之前将用户点击合法程度 (设为T) 划分为L个等级, 本文中取L=3。这三个等级分别代表了正常点击、可疑点击和恶意点击。把这些等级从高到低进行顺序编号并设为整型变量i, i∈[1, L] (全文中i的含义一样) , i越小, 点击合法程度越高, 并且它们所代表的信任范围从高到低的顺序分别是:
其中TH0是信任阈值, 即当用户的点击行为信任值小于TH0时, 则此次点击为恶意点击, 且TH0+TH1=1。每次点击后, 点击的总次数n加1, 点击行为信任评估的值落在哪个范围内, 则相应范围内所对应的次数加1, 其他保持不变。用Ti表示点击行为信任范围, |Ti| (1≤i≤L) 表示与所预测点击用户的以前点击历史中整体信任落在Ti范围内的次数。设X为一次点击事件, 即:X={x1, x2, …, xmax}, 其中max为一次点击事件的最多属性个数。我们先计算出用户点击行为合法等级的先验概率:
其中n表示与所预测点击用户以往点击的总数。由于点击流训练数据集有许多属性和元组, 为了节省开销, 假设各属性的取值互相独立, 先验概率p (X1|Ti) , p (X2|Ti) …p (Xn|Ti) 可以从训练数据集[1]求得。那么用户一次点击行为的合法等级的预测概率[6]就可以表示为:
我们求出用户一次点击行为的合法等级预测概率, 然后结合博弈控制机制最终判定此次点击的合法性。
1.3 结合博弈控制机制判定点击行为合法性
根据贝叶斯分类方法对点击行为合法性所预测的概率, 下面我们结合博弈控制机制进行点击行为合法性判定分析。首先假设:Alossaccdec>0表示广告站点放过欺诈点击时平均损失量;Alossnn--accdec>0表示用户误判为欺诈时广告站点平均损失量;Aincomeanccdec表示广告站点正常访问时平均收益;Cincomeaccdec表示欺诈点击逃脱检测时用户超额收益;Cincomeanccdec表示正常点击时用户平均收益;Ccost>0表示用户欺诈点击需要成本;Cpun>0表示用户欺诈点击可能受到的惩罚, 则广告站点和点击用户的支付矩阵分别为:
经过简单的画线法, 我们求出该博弈模型不存在纯策略均衡。假设广告站点以x的概率接受点击, 以 (1-x) 的概率判断为恶意点击, 则广告站点混合策略为p1= (x, 1-x) 。我们假设用户以y的概率选择恶意点击, 以1-y的概率选择正常点击, 则用户的混合策略为p2= (y, 1-y) , 求出用户的预期支付函数为:
上式关于y求偏导:
广告站点的预期支付函数为:
上式关于x求偏导:
其中Mi、Ni分别表示广告站点和用户的支付矩阵, αk (k=1, 2, …, 6) 是博弈分析的参数因子, 根据等级粒度和对安全的要求进行选取。由上式可以看出混合纳什均衡策略的好处是可以给用户一个不确定的博弈结果, 这样点击用户就没有任何投机机会。若已知用户点击行为的合法等级的预测概率和广告站点的支付矩阵, 则广告站点判定点击正常合法的控制条件就是:
其中Pti是所预测一次用户点击分别落在各个等级区间的概率, 可以根据式 (2) 求得, 这里就不再赘述。y*和1-y*分别是用户欺诈和正常点击的混合纳什均衡策略。如果控制条件式 (9) 大于零, 则广告站点判定为正常点击, 否则判定为欺诈点击。
2 实例检验及结果分析
2.1 应用实例背景
该实例选自某中型广告联盟站点, 站长通过用户点击站点广告获得收益。用户在点击广告的过程中每次点击行为可信程度是不同的, 有时将会是欺诈点击。为了防止用户的欺诈点击行为, 广告站点将会根据点击行为的不良严重程度做出相应惩罚, 比如:警告、严重警告和拒绝访问等。如果惩罚频率过高将会严重影响用户对该广告的体验兴趣, 从而减少了站点的收益, 如果惩罚频率过低将达不到检测欺诈点击的效果。如果广告站点采取本文所描述的方法进行欺诈检测和惩罚, 用户的任何策略对用户来说都是无差异的。即使用户知道自己会因为他们的欺诈点击而受到惩罚, 但在不知道欺诈点击标准的情况下, 用户是不敢随意欺诈的。在过去的欺诈点击检测过程中, 该站点一直使用Google所提供的数据, 但使用费用高, 所以公司欲自行创建检测系统。
2.2 参数的假定与结果分析
在本实例中作者假设点击行为合法等级为三级, 分别表示:正常、可疑和欺诈。假设αi分别是:0.7, 0.95, 0.87, 0.91, 0.85, 0.95, 其他参数假定值见表1中的第2至第8列, 其中第9列根据假定参数通过式 (6) 可求得, 第10列根据假定参数通过式 (8) 可求的。
根据信任等级概率Pti, 博弈分析参数因子αk和表1所求得的数据, 我们选取该站点相邻几天的点击流数据, 然后结合上述方法进行访客点击合法性判断, 最终结果与Google所提供检测数据相比较, 比较结果见表2。
表2所示的三种检测结果仅为检测出的欺诈点击数量。从表2可知, 本文所述方法检测结果与Google所提供的数据结果相比更接近, 由于Google所提供的数据有较高的准确性, 所以这也证明了该种方法的可行性。从表1可知访客因欺诈点击所获得的收益Cincomeaccdec和访客所受到的惩罚Cpun会随着合法等级的降低而降低。在访客进行点击欺诈成本固定不变的情况下, 随着访客合法等级的降低, 广告站点的接受概率Aacc-p也在减少, 用户的欺骗概率Cdec-p在增大。
3 结论
本文论述了如何把贝叶斯分类方法与博弈控制机制相结合检测广告欺诈点击, 并且通过实例证实了该方法的可行性。以前的欺诈点击检测方法主要是以相对静态的身份和角色为基础, 并且不能很好地说明未来用户行为的趋势, 缺乏必要的信任预测, 而本文阐述的方法根据用户的行为进行动态控制决策。广告点击行为是人参与或者一些夹杂了编写者思想的软件模仿行为, 因此, 通过实验证明利用博弈论进行得失分析是最恰当的。
摘要:在网络广告业中出现的欺诈点击行为, 使得搜索引擎企业以及广告主的利益受到了严重损害, 致使点击付费模式遭到质疑, 欺诈点击已经成为阻碍网络广告业健康发展的一大顽疾。针对网络广告业发展所面临的此种困境, 提出一种基于用户行为分析的广告欺诈点击检测技术。首先创建用户行为数据仓库, 然后运用贝叶斯分类方法对用户行为数据进行点击合法等级预测, 最后结合博弈控制机制对用户点击有效性进行最终判断。
关键词:欺诈点击,用户行为,数据挖掘,博弈控制
参考文献
[1]Jiawei Han, Micheline Kamber.数据挖掘概念与技术[M].范明, 孟小峰, 等译.北京:机械工业出版社, 2007:84-310.
[2]李帮义.博弈论及其应用[M].北京:机械工业出版社, 2010.
[3]秦超.电子商务网站访客行为分析系统[D].上海:上海交通大学, 2007.
[4]吴祎.在线广告点击欺骗的检测和应用[D].上海:上海交通大学, 2006.
[5]袁健, 张劲松, 马良.一种有效预防欺诈点击的策略[J].计算机应用, 2009, 29 (7) .
[6]田立勤, 林闯.可信网络中一种基于行为信任预测的博弈控制机制[J].计算机学报, 2007, 30 (11) .
[7]王勇.WEB数据挖掘研究[D].西安:西北工业大学, 2006.
[8]Kenneth C.Wilbur, Yi Zhu.Click Fraud[J].INFORMS, 2009, 28 (2) .
用户电能表现场检测的注意事项 篇4
环境温度发生变化, 会引起电能误差在一定范围内变化, 应考虑环境温度引起的附加误差。
2 现场负载功率
现场负载功率应为实际的常用负载, 当负载电流低于被校准电能表标定电流10%时, 不宜进行现场校准。在对居民用户电能表进行校准时, 经常会遇到居民家中无人, 即被校准电能表无负载现象。此时就需要校表人员自备负荷 (如行灯) 。一般情况下, 居民家中所使用的电能表为5 (20) A或10 (40) A, 根据规范规定可以算出最小电流值即0.5 A或1 A, 这样就可以算出自备负荷为110 W或220 W。考虑到校表人员可能不知道现场电能表的标准电流, 为了方便工作只需携带一只250 W的行灯就可以了。
3 接线检查
到现场后, 首先应对电能表的外观进行检查。包括电能表的外部检查和封印检查。居民用电的接线检查较为简单, 但值得注意的是, 对整个电能表箱统一更换或安装新电能表箱后的用户, 应注意检查负荷侧的接线, 有时可能会出现用户与用户之间错接线现象。
4 校准方法
在现场一般都采用标准电能表比对法, 利用手动方法控制转数对被试电能表进行校准。被试电能表转数的下限值, 按规程要求在任一负载功率时, 对1.0级或2.0级的电能表应分别选定3转或2转。当负载功率不大于50%额定功率时, 可成倍减少转数。
5 行灯的使用
使用行灯时, 应先断开用户侧的空气断路器;拆开用户侧的相线;把行灯上的两个夹子夹在用户侧 (行灯尾部接2根带夹子的软线, 并在行灯上安装开关) , 此时行灯应是关闭状态;接好标准电能表, 打开行灯, 输入参数, 开始校验。校验结束后, 先将行灯关闭, 然后将标准电能表、行灯分别拆除;将所有接线及开关恢复正常。
6 校验结果的处理
由于电能表在现场运行的环境条件和试验室环境条件不同, 所以对电能表的误差限要求也不同。电能表在现场的误差限称为工作误差限, 其工作误差限基本上是低于电能表本身一个等级。
7 及时反馈信息
单用户检测 篇5
传统的CDMA系统中一般采用将用户扩频序列与接收信号直接相关的方法解扩期望信号,当不同用户的扩频序列严格正交并且信号传输在加性高斯白噪声信道(AWGN)中时,这种方法是最优的。然而实际中不可能完全满足这种正交性,因而导致了CDMA系统中的远近问题,即期望信号扩频序列与强干扰用户的互相关可能大于它与期望用户的自相关。这种不同用户之间的相互干扰直接影响到信道利用率和系统可容纳的用户数量,因而传统的CDMA系统中不得不采取严格的功率控制措施。直到1986年,Verdú在文献[1]中设计了一种基于最大似然准则的最优多用户接收机,从理论上解决了CDMA系统中的多用户干扰(MAI)问题。但是,由于该最优接收机算法的计算量随着用户数量的增多成指数增长,因而目前尚难以应用于实际系统中。文献[1]之后又出现了多种次优的解决方案,其中基于最小均方误差准则(MMSE)的盲自适应算法(包括盲LMS,RLS,KALMAN等)由于需要已知的先验信息少(仅需已知期望信号的扩频序列)、不需要专门的训练序列等优点而受到了广泛的关注。文献[2]提出了盲多用户检测的LMS算法,该算法计算复杂度为O(L)(L为扩频增益),但是收敛速度较慢。文献[3]和[4]中提出的盲多用户检测的RLS算法和Kalman滤波算法提高了收敛速率,但计算复杂度增加为O(L2)。自适应增益LMS算法最早于1990年由Benveniste等提出,并已应用于自适应均衡、锁相环信号处理等方面。本文将该算法思想应用于CDMA系统的盲多用户检测,推导了算法实现的步骤,给出了算法实现的计算复杂度分析。仿真实验证明,在平稳信道与瑞利衰落信道条件下,该盲多用户检测算法性能表现优秀,具有较高的收敛速率和稳态输出信干比。
1 系统模型
考虑一个直序扩频码分多址系统,它有K个用户,对接收信号进行相干解调、码片速率采样之后的离散时间信号可以表示为:
式中Ak表示第k个用户的接收信号幅度,bk,j∈{1,-1}表示第k个用户接收到的第j个信息比特,sk,i表示第k个用户扩频序列的第i个码片,L表示扩频增益,njL+i为加性高斯白噪声序列。这里假设信息码元从{1,-1}中独立等概的选取,扩频序列具有单位能量。
定义向量
Yj=[yjL+0,yjL+1,…,yjL+L-1]T
nj=[njL+0,njL+1,…,njL+L-1]T
分别为接收信号向量和噪声向量,定义用户k的扩频序列为:
Sk=[sk,0,sk,1,…,sk,L-1]T
则(1)式可以表示为向量形式
不失一般性,可以令用户1为期望用户信号,用户2~K为干扰用户信号,现在针对期望用户设计其检测器W,则第j个信息码元间隔内的期望用户输出比特可以使用undefined来估计。文献[2]中提出了W的一种典范表示式:
Wj=S1+Xj (3)
Wj被分解成了固定部分S1和自适应部分Xj,且S1TX=0,同时WjTS1=S1TS1=1。基于典范表示式(3)及其约束条件,可以推导出多种检测器W的自适应算法实现,本文中自适应增益LMS算法实现步骤的推导也是在这个基础上完成的。
2 盲多用户检测的LMS算法[2]
文献[2]中得到的LMS算法是根据最小输出能量(MOE)准则得出的。该准则定义代价函数为:
JMOE(W)=E[(YTW)2] (4)
MOE准则等价于MMSE准则[5],因此,根据MOE准则导出的自适应检测器算法将收敛于MMSE线性检测器的最优解。
求解(4)式可得W自适应部分X的更新公式如下:
Xj=Xj-1-μYundefined(S1+Xj-1)(Yj-SundefinedYjS1) (5)
3 自适应增益LMS的盲多用户检测算法
LMS盲多用户检测算法运算量较小,但同时存在收敛速度慢,失调量大,非平稳环境下跟踪性能差等缺点。μ值的选取是克服上述缺点的关键之一,适当取大μ值可以使算法收敛速度加快,但同时将使得稳态跟踪过程中的失调量增大;而较小的μ值虽然对应更精细的步进调整和稳态失调量,但却是以牺牲系统收敛速度为代价的。因此,可以考虑在LMS盲多用户检测算法中增加对μ值的自适应更新。求(4)式最小输出能量代价函数关于μ的无约束梯度,得到:
令undefined,则ᐁμ=2E(WTYΨTY),
定义undefined分别表示第j个信息码元内W和Ψ的估计,得梯度瞬时估计表示为:
继而得到步长因子μ的更新递推公式为:
又由式(3)、(5)可知
式(9)两边对μ求导得
总结以上的推导步骤,可以得到盲多用户检测的自适应增益LMS算法的实现流程:
①选取初始值undefined (0)、μ(0)和
undefined
在式(12)中,μ+和μ-表示对μ值限幅,根据文献[6]中的结论,下限μ-对算法影响不大,可将其置为0或某一个很小的数,而上限μ+的取值则对算法的跟踪性能具有重要的意义。通常,具有良好跟踪性能算法的最优μ值接近于不稳定点,因此,上限μ+的选取应接近且略小于不稳定点,以保证算法的跟踪性能和收敛性。
4 算法复杂度比较
表1显示出了几种盲多用户检测算法每判决一个信息比特所需要的运算复杂度。L表示扩频增益。
由表1可以看出,自适应增益LMS算法的计算量较传统LMS略有增加,但远远低于RLS和Kalman算法。
5 算法性能仿真实验
在使用LMS算法时,由文献[2]可知,步长因子μ应满足输出均方误差收敛的稳定性条件undefined。实验中取μ0=μmax/10,选取较小的μ值是为了更好地保证算法输出的均方误差收敛性和更小的失调量。在使用自适应增益LMS算法时,取初始值μ(0)=μ0,在μ值的自适应更新过程中限幅下限μ-取为0,上限μ+取为5μ0。
仿真实验中采用了7用户的同步CDMA系统,扩频码为Gold码,扩频增益为31。用户1为期望信号,用户2~7为干扰信号,干扰信号干信比分别为两个10dB,三个20dB和一个30dB。
图1中显示的是在输入信噪比20dB下得到的几种盲自适应算法的收敛性能曲线。纵坐标表示检测器输出端信干比,横坐标表示算法迭代的次数。由图中可以看出,自适应增益LMS算法收敛速度和稳态输出信干比大大高于普通的LMS算法,超过了RLS算法并且逼近Kalman算法。图2中显示了传统的匹配滤波检测器和几种盲自适应算法在不同信噪比条件下采用蒙特卡罗方法得到的误码率曲线。可以看出,在实验中严重的多用户干扰条件下,匹配滤波的单用户检测方法已经失效,几种盲自适应算法则具有不同程度的抑制多址干扰能力,自适应增益LMS算法的误码率特性接近Kalman算法的性能。图3和图4是在瑞利衰落信道中各种检测器的性能曲线,图3显示的是在输入信噪比20dB下瑞利衰落信道中的几种盲自适应算法的收敛性能曲线。由图中可以看出瑞利衰落信道中自适应增益LMS算法在高信噪比下的收敛性能和误码率性能均略微超过Kalman算法,低信噪比时的误码率性能也已经非常接近Kalman算法。
6 结束语
本文对LMS盲多用户检测算法进行改进,导出了一种低复杂度的盲多用户检测算法的实现步骤。仿真实验表明该盲多用户检测算法具有较快的收敛速率、较高的稳态输出信干比和较强的适应非平稳信道的能力,验证了算法推导的正确性与有效性。
参考文献
[1]VerdúS.Minimum probability of error for asynchronous Gaussian mul-tiple-access channels[J].IEEE Trans.Inform Theory,1986,IT-32:85-96.
[2]Honig M L,Madhow U Verd.úBlind adaptive multiuser detection[J].IEEE Trans.Inform Theory,1995,IT-41:944-960.
[3]Poor H V,Wang X.Code-aided interference suppression for DS/CD-MA communications Part II:Parallel blind adaptive implementations[J].IEEE Trans.Comm.,1997,45:1112-1122.
[4] Zhang X D. Blind adaptive multiuser detection based on Kalman filte-ring[J].IEEE Trans. Signal Processing,2002,50:87-95.
[5] Verdú S. Multiuser detection[M].Cambridge University Press, 1998.
单用户检测 篇6
传统的CDMA系统中一般采用将用户扩频序列与接收信号直接相关的方法解扩期望信号,当不同用户的扩频序列严格正交并且信号传输在加性高斯白噪声信道(AWGN)中时,这种方法是最优的。然而实际中不可能完全满足这种正交性,因而导致了CDMA系统中的远近问题,即期望信号扩频序列与强干扰用户的互相关可能大于它与期望用户的自相关。这种不同用户之间的相互干扰直接影响到信道利用率和系统可容纳的用户数量,因而传统的CDMA系统中不得不采取严格的功率控制措施。直到1986年,Verdú在文献[1]中设计了一种基于最大似然准则的最优多用户接收机,从理论上解决了CDMA系统中的多用户干扰(MAI)问题。但是,由于该最优接收机算法的计算量随着用户数量的增多成指数增长,因而目前尚难以应用于实际系统中。文献[1]之后又出现了多种次优的解决方案, 其中Honig等[2]提出了基于最小输出能量准则的盲多用户检测算法,由于需要已知的先验信息少(仅需已知期望信号的扩频序列),不需要专门的训练序列等优点而受到了广泛的关注。同时,还可以将各种自适应算法应用到此检测器中,典型的有最小均方(LMS)算法[2]和递归最小二乘(RLS)算法[3]。在此基础之上,文献[4]中又提出来一种判决反馈变步长MOE检测算法(DF-MOE)。本文在研究这三种算法的基础之上,对其进行改进,将递归最小二乘(RLS)算法和判决反馈变步长MOE算法(DF-MOE)相结合,得到一种改进的盲算法。
1 同步DS-CDMA系统模型
考虑一直接序列码分多址(DS-CDMA)系统,它有K个用户,无线信道。盲多用户检测器在一个码元间隔期间的离散时间输入可用以下信号模型表示:
undefined
式中,v(n)为信道噪声;Ak,bk(n)和sk(n)分别是第k个用户的接收幅值、信号字符序列和用户扩频码;σ为一常量。假定特征波形具有单位能量,扩频增益为N。所谓“盲“是指盲多用户检测器没有其它用户的任何信息。接收信号以chip间隔采样后,其离散模型表示成矩阵形式为:
r=SAb+n (2)
其中r,n为接收信息和噪声向量,S=[s1,…,sK],A=diag(A1,…,AK),b=[b1,…,bK]T。现针对期望用户1, 设计其盲多用户检测器c1,则检测器的输出和判决为
undefined
2 盲多用户检测器采用的基本方法
2.1 盲多用户检测的LMS算法
文献[2]中提出了c1的一种典范表示式:
c1=s1+x1 (4)
c1被分解成了固定部分s1和自适应部分x1,且〈s1,x1〉=0,同时〈s1,c1〉=‖s1‖=1。在典范表示及其约束条件之下,最小输出能量检测器的公式非常适合用作推导x1的更新公式。输出能量函数定义为
MOE(x1)=E{〈r,s1+x1〉2} (5)
以此为代价函数,可推导出盲自适应多用户检测的LMS滤波算法为:
在没有干扰特征波形信息(或方便实现)的情况下,递推公式的初始条件可选择x1(0)=0。
在使用LMS算法时,步长μ必须满足输出均方误差收敛的稳定性条件[2]:
undefined
2.2 盲多用户检测的RLS算法
与盲检测的LMS算法不同,Poor和Wang[3]提出RLS算法,它使盲检测器的指数加权输出能量最小化,即
undefined
式中,0<λ<1为遗忘因子,同样约束条件为sundefinedc1(n)=1。
容易证明,满足式的RLS算法如下:
undefined
式中
undefined
表示观测信号的自相关矩阵。
2.3 判决反馈变步长MOE检测算法
DF-MOE盲算法的代价函数如下:
JDF-MOE(c1,λ)=E{(y-λb1)2} (9)
同样约束条件cundefineds1=1,利用随机梯度算法,用户1第i个数据点的DF-MOE盲自适应迭代算法为
其中,μ表示算法迭代步长,x1的初始值取x1(0)=0。λ的控制算法为:
undefined
其中,undefined表示为A1的估计,且η(i)∈[ηmin,ηmax],一般给定ηmin=0,ηmax=1。同时η(i)按下式迭代控制进行
η(i+1)=(1-α)η(i)+α[1-e2(i)] (11)
其中,η(0)=0,α满足:0<α<<1,α→0;而e(i)定义为e(i)=y(i)-y(i-1)。同时η(i)还需满足
undefined
对于undefined的估计可采取如下方法,即
其中,undefined。
3 改进的MOE盲多用户检测算法
上面研究的三种算法各有其优缺点(由以下仿真图可以看出),本文针对RLS算法和DF-MOE算法的特点提出一种改进的盲多用户检测算法即RLS算法结合DF-MOE算法的盲多用户检测算法,使其更好地适应动态环境,抑制多址干扰。在静态环境中,当用户数目一定时,采用DF-MOE盲算法,保证输出高稳态信干比;当强干扰加入系统时,再切换到RLS算法,使其快速跟踪信道变化,实现快速收敛,到达稳态,然后次切换到DF-MOE算法。这样既保证算法的快速收敛又保证高的稳态输出信干比。
4 仿真实验
为了充分反映系统性能,以下所有实验结果都是经过100次独立实验的平均值,用户1为目标用户。为了比较不同算法的多址干扰抑制能力,常使用n步迭代的时间平均信干比(SIR)作为测度。下面考虑同步DS-CDMA系统,扩频序列为31位gold码,调制方式为BPSK调制,AWGN情况下各种算法的SIN。平稳信道下系统中有10个用户,期望用户1具有单位能量,即Aundefined=1,其信噪比为20dB(即σ2=0.01),有3个30dB的干扰6个40dB的干扰。LMS算法的步长选为:μ=4.7*10-4。RLS算法的λ=0.997,R-1(0)=100×I。DF-MOE算法的α=5×10-2,γ=0.1。非平稳信道下,其余条件同平稳信道只是在迭代到1000步时加入7个30dB和3个40dB的干扰(10个用户同时加入代表强干扰)。如图1-3所示。
5 结束语
由以上仿真图可知,平稳信道下DF-MOE 算法的稳态信干比最高,LMS最差,RLS次之,但是计算量上LMS算法最小,DF-MOE算法与其相差不多,RLS算法会复杂的多。在非平稳信道下LMS算法不但稳态信干比低,而且收敛速率慢、信干比性能随着用户数增多而明显变差,DF-MOE仍然保持了高的稳态信干比,只是在收敛速率上不及RLS算法,所以结合两者的优点,将RLS算法和DF-MOE算法相结合使其更能适应于动态系统。
参考文献
[1]VerdúS.Minimum probability of error for asynchronous Gaussian multiple-access channels[J].IEEE Trans.Inform Theory,1986(1):85-96.
[2]Honig M L,Madhow U,VerdúS.Blind adaptive multiuser detection[J].IEEE Trans.Inform Theory,1995(41):944-960.
[3]Poor H V,Wang X.Code-aided interference suppression for DS/CDMAcommunications Part II:Parallel blind adaptive implementations[J].IEEE Trans.Commun,1997(45):1112-1122.
[4]曾召华,刘贵忠,刘平艳.一种等效变步长盲多用户检测算法[J].西安电子科技大学学报:自然科学版,2003,30(5):713-716.
单用户检测 篇7
钩住系统服务调度表的技术是内核钩子技术之一, 并且得到广泛的应用。比如在木马软件和安全防护软件中利用此技术来获取系统信息等。目前, 检测这一技术所使用的一般方法是rootkit, 它以加载驱动程序的形式进入内核, 实现内核的读写权限等。本文中实现了如何在用户模式下通过权限的提升, 来检测系统服务调度表钩子的方法, 以用户程序的形式提供了一种用户模式检测内核的新思路、新方法。
1 系统服务描述表
Windows可执行程序在内核模式中运行, 并且对操作系统的所有子系统 (Win32、POSIX和OS/2) 都提供本地支持。这些本地系统服务的地址在内核结构中称为系统服务调度表 (System Service Dispatch Table, SSDT) 中列出。
系统服务调度表用于查询处理特定系统调用的函数。该工具在操作系统而不是在CPU中实现。程序有两种执行系统调用的方式:使用中断0x2E, 或者使用SYSENTER指令。
在Windows XP及其后的系统上, 程序通常使用SYSTEM指令, 而较老的平台则使用中断0x2E。这两种机制是完全不同的, 尽管他们能够得到相同的结果。
执行系统调用会导致在内核中调用Ki System Service函数。该函数从EAX寄存器中读取系统调用的编号, 并在SSDT中查询该调用.该函数还将由EDX寄存器所指向的系统调用参数从用户模式堆栈中复制到内核模式堆栈。图1给出了Windows下的Win32系统服务调用机制, 如图所示:
钩住系统服务描述表即将SSDT改为指向自己提供的函数, 而不是指向Ntoskrnl.exe或Win32k.sys。
2 查找系统服务调度表 (SSDT) 钩子
基于内存的检测方法是在操作系统或进程之中查找钩子, 系统服务调度表 (SSDT) 中的所有项都应该位于内核进程ntoskrnl.exe的地址范围之内[2]。
3 用户模式检测系统服务调度表 (SSDT) 钩子
3.1 使用devicephysicalmemory在用户模式下检测
用户空间可以通过直接读写devicephysicalmemory[4]来检测SSDT的入口。
在管理员权限下用户空间程序获取对devicephisicalmemory的读写
在用户空间的程序中必须把物理内存页映射到虚拟内存, 才能够直接对物理内存进行写操作, 这里可以通过Nt Map View Of Section函数完成。在物理内存映射到虚拟内存以后, 用户空间程序就可以像它本身自己分配的内存一样, 进行读写操作。
2.获取内核模块的地址范围
为了保护SSDT, 首先必须标识出可接受范围。这需要一个起始地址和长度。对于内核模块, 可以调用Zw Query System Information[7]来查找这些信息。
查找模块ntosnrnl.exe这一项的起始地址和结束地址, 并保存在全局变量中, 该信息用于标识SSDT中导出函数地址的可接受范围。
在内核导出表Ke Service Descriptor Table中保存的函数地址中检测在可接受范围之外的函数即为挂钩函数。
注意:由于所读取的内核模块SSDT位于物理内存空间, 因此需要将物理内存映射到虚拟内存空间, 即将相应的物理地址映射成虚拟内存地址[8]。
3.2 用户模式使用Nt System Debug Control函数检测
Command=8时从内核空间拷贝到用户空间, 或者从用户空间拷贝到用户空间, 但是不能从用户空间拷贝到内核空间。
Command=9时从用户空间拷贝到内核空间, 或者从用户空间拷贝到用户空间, 但是不能从内核空间拷贝到用户空间。
利用函数Enable Privilege (SE_DEBUG_NAME) 设置权限
调用Windows操作系统函数Nt System Debug Control () , 这个函数在ring 0模式下执行, 拥有Se Debug Privilege权限的调试者可以利用这个函数获得权限提升。
定位系统服务调度表的内存地址
首先通过调用Nt Query System Information () 函数来获取内核模块相关信息, 找到其中的一项ntoskrnl.exe模块;然后通过调用函数Ldr Get Procedure Address () 来获取Ke Service Descriptor Table导出表的内核地址;最后利用函数Read Kernel Memory () 来读取SSDT保存的各个Native API函数的入口地址, 使用内存检测方法检测函数的入口地址是否在可接受的范围内, 从而断定是否存在钩子挂接。
实验测试
挂接系统服务调度表SSDT的情况一般出现在木马用于自身的一些特性的实现。例如截获系统信息, 隐藏自身等。同样一些安全软件也会利用此技术来监视、检测木马病毒, 起到主动防御的功能。实验测试平台为Windows XP, 通过实验程序运行结果分析, 发现安全软件卡巴斯基等都有对SSDT的挂接的钩子。其中对卡巴斯基软件检测的部分结果如表1所示:
从表1中红色部分标记的一行, 可以看到其入口地址已经超出SSDT可接受的地址范围, 表明卡巴斯基对SSDT中的部分函数挂接了钩子。
结语
笔者对系统服务调度表的检测进行了深入的研究, 给出了区别于rootkit的两种在用户模式下检测系统服务调度表钩子的方法。实验证明这两种方法对以内存方式检测系统服务调度表的挂接是有效的。用户模式避免了加载驱动的繁琐过程, 并且给出了一种检测内核模块的不同思路。
摘要:为了保护系统服务调度表 (System Service Dispatch Table, SSDT) , 发现隐藏于该内核模块的钩子, 进行了深入研究, 提出异于rookit以加载驱动程序的形式的内核检测模式, 即两种在用户模式下检测SSDT钩子的方法:使用devicephysical memory在用户模式下检测;用户模式使用Nt System Debug Control函数检测。实验表明, 用户模式的这两种方法同样可以实现SSDT钩子的检测, 并且用户程序省略了加载驱动时的繁琐步骤, 避免了驱动的各种弊端。