机器学习互联网业务安全实践
互联网业务安全简述(第一章)
现状
业务安全事件有着以下的特点:
效率高、范围广
高度产业链化
危害严重,社会影响较大
如何应对挑战
1.对互联网业务安全预警信息实施监控【这是进行互联网业务安全防护的先决条件】
2.提升业务安全防护技术【这是互联网业务安全防护的基石】
3.培养业务安全相关的专业技术人员【这是业务安全防护的核心】
机器学习入门(第二章)
相似性
范数
范数(norm)是一个函数,主要用于度量向量或者向量空间的大小和长度。
在泛函分析与计算数学中,它都扮演着特别重要的角色【比如在数值代数、研究数值方法的收敛性、稳定性及误差分析问题】。
例如在赋范性空间中,范数的定义需要满足三个条件:①非负性②齐次性③三角不等式
向量范数
定义:若V是数域P以上的线性空间,而且对于V的任一向量x,若实值函数||·||:$\R^n$→R满足如下条件:
(1)∀x∈$\R^n$,||X||≥0;如果x=0,则||x||=0
(2)∀$\alpha$∈R,x∈R,有||$\alpha$x||=|$\alpha$|||x||
(3)∀x,y∈$\R^n$,||x+y||≤||x||+||y||
则称||·||为向量范数,其中$\R^n$表示n维向量空间。
向量范数是对向量大小的一种度量,可以形象地理解为向量的长度
以下是几个有代表性的n阶向量范数
1.L1=|x1|+|x2|+……
这里的L1表示向量x各元素的绝对值之和
2.L2=$\sqrt{x_1^2+x_2^2+……}$
L2表示欧氏空间中的点到原点的距离,也叫欧式范数或者弗罗贝尼乌斯范数
3.Lp=($(|x_1|^p+|x_2|^p+……)^\frac{1}{p}$
通过1、2、3可以看出L1和L2以及Lp是相同的形式。
4.L∞=lim( $\sum{(|p_i-q_i|^k)^\frac{1}{k}}$
L∞表示向量x的元素中绝对值的最大值,称为无穷范数,也是一致范数(可以理解为Lp意义下的范数的极限)
PS:可以这样理解,在三维空间里,如果p是∞的时候,它会表示成一个正方体;如果p为2,则是一个球;p=1时为一个锥形;o<p<1时为一个类似陀螺的形状;p=0时为一条线

矩阵范数
定义:设A为mXn矩阵,$||·||\alpha$是$R^m$上的向量范数,$||·|| \beta$是$R^n$上的向量范数,则定义矩阵范数为:
||A||=max||x|| $\beta$=1||Ax||$ \alpha$
矩阵范数具有与向量范数相似的性质,区别在于向量范数的性质包含在定义的条件中,而矩阵范数由于包含了向量范数的定义,因此它有如下的性质:
(1)||Ax||$\alpha$≤||A||·||X||$\beta$
(2)||$\lambda$A||=|$\lambda$|·||A||
(3)||A+B||≤||A||+||B||
(4)||AD||≤||A||·||D||
其中,A、B为mXn矩阵,D是nXp矩阵,$\lambda$为实数,X∈$R^n$
同样的,下面列出几个有代表性的n阶矩阵范数:
(1)||A1=maxj $\sum_{i=1}^m{|a_{ij}|}$,称为列范数
(2)||A||2= $\sqrt{\lambda A^HA}$,$\lambda A^H$A表示$A^H$A的绝对值的最大特征值,||A||2又称为谱范数
(3)||A||∞=maxi$\sum_{j=1}^n{|a_{ij}|}$,称为行范数
其中A=(aij)mxn
模型(第三章)
账户业务安全(第六章)
账户安全保障
对于用户来说,账户安全涉及用户个人隐私信息的安全、用户体验以及资金安全等方面
对于平台来说,账号安全涉及广告投放、流量购买、营销活动以及战略决策等方面
横向来看,账户安全主要从两个环节来保障,一个是账户注册环节,另一个是账户登录环节
纵向来看,维护账户安全的手段主要有网络层防护、数据层防护以及业务层防护,相应的手段有WAF、设备指纹、验证码、生物探针、数字证书、安全SDK等
这些防护手段从技术原理来看,可以分成两大类,一类是加密/解密,即判断账户的请求是否被篡改;第二类是人机识别,即甄别账户的请求是来自人来时来自机器的操作。
注册环节
一般来说,注册环节是账户安全的第一入口
因为互联网公司需要保证独立访客量(UV)的增长,所以会通过各种运营活动来吸引新用户(拉新)。这些运营活动最常见的就是注册新用户返回红包这类有返利的活动,而许多有心人士会通过建立虚假账户将这些返利取走。
一般来说,黑灰产是通过一下三种方式进行注册账号的
1.机器注册:通过软件自动化大批量进行注册,这种手段主要涉及三个方面:账号注册软件、打码和解码平台以及IP地址切换器。
2.半人工注册:通过软件加人工手动操作的方式,来提升人工注册的效率,相当于使用软件来辅助人工注册。
3.人工注册:通过大量兼职人员手动注册账号,这种方式效率最低,但安全性最高。
| 注册方式 | 效率 | 安全性 |
|---|---|---|
| 机器注册 | 高 | 低 |
| 半人工注册 | 中 | 中 |
| 人工注册 | 低 | 高 |
应对方法:
1.梳理各个注册渠道的入口,加强对注册数据的监控,如果某个注册渠道的数据波动较大,就说明可能存在问题
2.留存好日志数据,将其作为数据分析的依据,依靠大数据技术来识别垃圾账号注册的蛛丝马迹
3.在注册过程中采取安全防护措施,如验证码、语音验证、短信上行验证等
4.监控外部黑灰产的数据
登录环节
登录环节进行业务安全防控的方法大体可以分为三类:
1.基础安全技术:常见的基础安全技术手段有数字证书、安全控件、虚拟机和模拟器检测、数据加密/解密等
2.人机识别技术:主要依托于生物探针技术来实现(通过登录环节收集到的数据【包括但不限于基础网络数据、用户操作数据等】来分析当前行为是否是机器人的行为)
3.安全验证技术:常见的手段主要有验证码(数字、图形、计算题等各种形式)、滑块、短信上行/下行验证等。
PS:所谓的上行和下行就是你发和你收的意思
聚类算法在账户安全中的应用
特征主体的聚集性是业务安全中最常利用的特性之一。
比如:同一个IP地址注册大量的账号,或者同一台设备注册大量的账号,这两种行为都可以归结为在单一维度下存在高度聚集性,从业务安全的角度可以认为该聚集性是有问题的。
K-Means算法
这是一个非常基础的聚类算法,其时间复杂度与数据规模线性相关,计算量小,适用于大规模的数据。
如何让这些点(指的是平面上距离相近的点)自主归类?书本给了一个例子:
假设现在有K个类别,将每个点与这些类别的代表(比如中心点)做相似度判断,相似度较高的点被归为一类。
那么如何进行相似度判断?
在自然语言处理中可以使用TF-IDF(Term Frequency-Inverse Document Frequency)作为点的表示,使用余弦值作为衡量相似度的指标,或者直接使用欧氏距离作为衡量相似度的指标。
对于不同的数据,假设空间和维度可能需要选择不同的衡量指标,甚至可以使用信息论中的互信息(Mutual Information,MI)、信息距离交换(Variation of Information Distance)、KL散度(Kullback-Leibler divergence)等作为相似度的衡量指标。
于是问题又来了,如何选择同一个类别的代表方式***呢**?**
理论上来说,这些点的中心点通常就是聚类的中心。选择中心点的方式也有多种,最基本的方式是使用点集向量的均值作为中心点,这些中心点也就是聚类的中心。不过这样的聚类中心并不一定是存在的数据或者有意义的数据。
除此之外,我们还可以使用几何中心(如果有凸包快速计算几何中心的方法的话),或者使用最靠近聚类中心的有意义的点(这样做是为了让中心点不再是凭空产生多余的数据),这样处理出来的聚类中心就是真是存在的。
K-Means算法基础步骤
1.在原始数据中初始化K个聚类中心
2.分别计算每个对象与这K个聚类中心的距离,并根据每个对象与聚类中心的最短距离为相应对象重新划分类别
3.重新计算每个聚类的中心
4.计算标准测度函数。当满足一定条件,如函数收敛时,算法终止;如果不满足条件则返回步骤3
K-Means算法的时间复杂度时O(nkt),其中n为数据量,k为选取得聚类中心得个数,t是迭代得次数。
它是一种无监督学习方法,以k为参数,把n个对象分为k簇,使得簇内具有较高的相似度,而簇间的相似度则较低。一般以簇的中心为聚类中心,也叫质心。它也是一种典型的逐点迭代动态聚类的算法,所有对象元素按照某一规则聚到某一类后,最终会重新计算类的中心。
K-Means的一个主要问题是聚类的稳固性。由于迭代次序、中心点、距离函数等都有多种不同的选择,所以歌词迭代产生的聚类中心往往会有偏差。为了增加K-Means的稳固性,前人也做了很多尝试,如将各聚类中心之间的距离最大化,采用更能反应模型假设空间距离意义的测度函数(兰德系数、杰卡德相似系数、海明距离、最小匹配距离、互信息)
高斯混合模型(GMM)
这是一种应用很广泛的算法。它不仅能在给定聚类数时计算出样本点的类别,还能计算出每个类别下的样本分布。
高斯混合模型作为期望最大化(简称EM)算法的一种特例,有助于理解EM算法。
D维高斯分布
N(X|$\mu$,$\Sigma$)=$\frac{1}{(2Π)^2}$$\frac{1}{|\Sigma|^\frac{1}{2}}$exp{-$\frac{1}{2}$(x-$\mu$)T $\Sigma$-1(x-$\mu$)}
其中,$\mu$是D维的均值向量,$\Sigma$是DXD的协方差矩阵,|$\Sigma$|则表示$\Sigma$的行列式
所以高斯混合模型可以表示为以下这个式子:
P(x)=$ \sum_{k=1}^k$$Π_k$N(x|$\mu$k,$\Sigma_k$)
高斯混合模型的物理意义:空间种的样本点(向量)以不同的概率隶属于多个高斯分布。
假设Z是K维空间向量,且Z中的元素只有1个为1,其他的皆为0,这样Z就有K个状态了,而且Z中的元素满足$\Sigma_k$$Z_k$=1,那么$Z_k$表示任意样本点属于第k个高斯分布的概率,Z也可以看作是高斯混合模型的隐变量。
因此在计算样本点的后验概率时,需要先确定Z,再确定样本点在该高斯模型中的概率,即P(x,Z)由边缘分布P(Z)和条件分布P(x|Z)相乘而得。P(Z)的边缘概率为高斯模型中的混合系数$Πk$,即p($Z_k$=1)=$Π_k$,易知0≤$Π_k$,$ \sum{k=1}^k$$Πk$=1,所以也可以写成P(Z)=$\prod{k=1}^{k}$$Π_k^{Zk}$
所以高斯混合模型的分部也可以写成这样:
P(X)=$\sum_{Z}$P(Z)P(X|Z)=$\prod_{k=1}^{k}$N(X|$\mu_k$, $\Sigma_k$)
其中,每一个$X_n$的观测值都有一个对应的隐变量$Z_n$
OPTICS算法和DBSCAN算法
OPTICS算法
OPTICS算法是一种基于密度的聚类算法,目标是将空间中的数据安扎哦密度愤怒不进行聚类,跟DBSCAN算法背后的思想十分类似。
但不同的是,OPTICS算法可以获得不同密度的聚类,换句话说就是我们可以通过这个算法获得任意密度的聚类(原因是OPTICS算法输出的样本是一个有序队列的样本,从这个队列中可以获得任意密度的聚类)
OPTICS算法的输入参数比较简单,包括半径$\varepsilon$和最少点树MinPts。在这两个参数的基础上,我们可以定义算法中的一些核心概念。
1.核心点:如果一个点的半径为$\varepsilon$,领域内包含的点的数量不少于最少点书,则该点为核心点,其数学描述如下:
$N_\varepsilon$(P)≥MinPts
2.核心距离:在核心点的定义基础上可以引出核心距离的定义:对于核心点,距离其第$MinPts_{th}$d近的点与其之间的距离。
数学描述为:
coreDist(P)=$\begin{cases}UNDEFINED,,,ifN(P)≤MinPts\MinPts_{th}Distance in N(P),,,else\\end{cases}$
3.可达距离:对于核心点P,O到P的科大距离定义为O到P的距离或者P的核心距离
数学描述如下:
reachDist(O,P)=$\begin{cases}UNDEFINED,,,if N(P)≤MinPts\max(coreDist(p), dist(O,P)),,,else\\end{cases}$
4.直接密度可达:如果P为核心点,且P到O的距离小于半径,那么O到P就是直接密度可达的
OPTICS算法的难点在于维护核心点的直接密度可达点的有序列表
以下是算法中计算有序列表的过程
输入:数据样本$\Omega$,给定半径$\varepsilon$和最小点数MinPts。
初始化:所有点的可达距离和核心距离初始化为MAX
步骤:
(1)建立两个队列:有序队列列(核心点及该核心点的直接密度可达点)和结果队列(存储输出的样本及处理次序)
(2)如果D中数据全部处理完,则算法结束;否则,从D中选择一个未处理且为核心点对象的点,将该核心点放入结果队列,将该核心点的直接密度可达点放入有序队列,并将这些直接密度可达点按可达距离升序排列
(3)如果有序队列为空,则回到步骤2,否则从有序队列中取出第一个点,如果该店不再结果队列中,则将该点存入结果队列,然后:
①判断该点是否为核心点,若不是则回到步骤3;如果是的话,则进行下一步
②找到该核心点的所有直接密度可达点,将这些点放入有序队列,并且将有序队列中的点按照可达距离重新排序。如果该点已经在有序队列中且新的可达距离较短,则更新该点的可达距离。
(4)重复步骤3,直到有序队列为空
(5)算法结束
输出结果:给定半径$\varepsilon$和最少点MinPts时,输出核心点的直接idu可达点的有序列表。
OPTICS算法中计算样本最终类别的过程
对给定的结果队列,执行以下操作:
(1)从结果队列中按顺序去除样本点,如果该点的可达距离不大于给定半径$\varepsilon$,则该点属于当前类别,否则执行步骤(2)
(2)如果该点的核心距离大于给定半径$\varepsilon$,则该点为噪声点,可以忽略;否则,该点属于新的聚类,跳至步骤1
(3)若已经遍历完结果队列,则算法结束。
DBSCAN算法
这个算法属于OPTICS算法中的一种特殊情况,OPTICS算法主要是解决了DBSCAN算法对输入参数敏感的问题。
DBSCAN算法跟OPTICS算法差不多,不同的在于DBSCAN算法中有样本被分为直接密度可达和密度可达这两种情况
1.直接(密度)可达:如果P为核心点,那么其周围半径$\varepsilon$的领域内的点都是从P直接(密度)可达的。
2.(密度)可达:对于点Q,如果存在$p_1$,$p_2$,……,$p_n$且$p_1$=$p_2$,……,$p_{n-1}$=$p_n$,$p_n$=Q,即$p_1$到$p_n$都是直接(密度)可达的,那么Q对于$p_1$(密度)可达。
3.噪声:如果一个点对于其他所有点都不可达,那么这个点就是噪声,也可以称为异常点。
DBSCAN算法
输入:数据样本集D,给定半径$\varepsilon$和最少点书MinPts
初始化:将所有点设置为未访问
步骤:
(1)建立neighbor队列
(2)如果D中数据已全部处理完,则算法结束;否则从D中选择一个未处理的点,标记为已访问,获得其所有直接密度可达点。如果这个点为非核心点,则标记为噪声,重复步骤2,直到获得核心点,生成新的类别,进入步骤3
(3)将当前核心点放入该类别,将其直接密度可达点放入neighbor队列,并遍历该队列,如果neighbor队列全部遍历完则回到步骤2
①如果该点已经访问过,则进入步骤2,否则将其标志为已访问,然后计算获得该点的所有密度可达点,如果这个点也为核心点,则将该点的所有直接密度可达点放入neighbor队列
②如果该点不属于任何类别,则放入当前类别
(4)算法结束
输出结果:给定半径$\varepsilon$和最少点数MinPts时,数据样本集D的聚类结果