CN116310728A - 基于CNN-Linformer模型的浏览器识别方法 - Google Patents
基于CNN-Linformer模型的浏览器识别方法 Download PDFInfo
- Publication number
- CN116310728A CN116310728A CN202310311808.0A CN202310311808A CN116310728A CN 116310728 A CN116310728 A CN 116310728A CN 202310311808 A CN202310311808 A CN 202310311808A CN 116310728 A CN116310728 A CN 116310728A
- Authority
- CN
- China
- Prior art keywords
- fingerprint
- browser
- cnn
- linformer
- fingerprints
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000012549 training Methods 0.000 claims abstract description 26
- 238000005516 engineering process Methods 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims abstract description 11
- 238000004422 calculation algorithm Methods 0.000 claims description 38
- 239000013598 vector Substances 0.000 claims description 28
- 238000012545 processing Methods 0.000 claims description 17
- 239000011159 matrix material Substances 0.000 claims description 14
- 238000012360 testing method Methods 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 5
- 238000010606 normalization Methods 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 239000013589 supplement Substances 0.000 claims description 3
- 208000018747 cerebellar ataxia with neuropathy and bilateral vestibular areflexia syndrome Diseases 0.000 claims description 2
- 230000008901 benefit Effects 0.000 abstract description 4
- 238000013527 convolutional neural network Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000004913 activation Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 235000014510 cooky Nutrition 0.000 description 4
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 238000007637 random forest analysis Methods 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/12—Fingerprints or palmprints
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Databases & Information Systems (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Human Computer Interaction (AREA)
- Collating Specific Patterns (AREA)
Abstract
本发明公开了一种基于CNN‑Linformer模型的浏览器识别方法,先通过CNN提取输入数据的时序特征,再通过Linformer的线性注意力聚焦重要的特征,提高了模型的准确率,并通过多头注意力对数据进行并行计算,提高了模型的训练速度。同时,通过删除Linformer中的解码器部分、输入嵌入部分和位置编码部分对Linformer进行简化,降低了模型的复杂度进而提高计算的速度。此外,本发明针对现有的其他方法没有全面考虑各种伪指纹技术带来准确率下降的问题,利用了随机化属性值和添加噪声两种伪指纹技术对原始数据集进行数据增强,然后使用含有正常指纹和伪指纹的增强数据集对CNN‑Linformer模型进行了训练。本方法具有准确率高和识别速度快的优点,在伪指纹场景下具有良好的鲁棒性。
Description
技术领域
本发明涉及网络信息安全技术领域,尤其涉及一种基于CNN-Linformer模型的浏览器识别方法。
背景技术
网站因为业务需要经常需要追踪用户的浏览器,包括有发布个性广告、内容个性化和网络安全。服务器和浏览器通常使用cookie来为网站后续的服务提供信息。然而,近年来,cookie技术引发了越来越多的问题。例如,cookie存储在用户的本地机器上,这很容易导致用户信息的丢失。当cookie技术的效率越来越低时,浏览器指纹(BrowserFingerprint)技术已经逐渐成为浏览器追踪的新主流技术。
浏览器指纹是一个可以通过浏览器收集的有关浏览器所有特征信息的集合。它包括诸如浏览器版本、屏幕分辨率、浏览器插件、***字体和时区等信息,可以用来识别用户的浏览器。浏览器指纹识别依靠的是浏览设备本身的指纹的唯一性。然而,浏览器设备变化迅速且频繁,这可能导致新的指纹与之前的指纹完全不同。因此,仅靠指纹的唯一性是不足以进行追踪的,如何准确识别变化前后的浏览器指纹将变得非常重要。
由于浏览器指纹收集的是客户端的信息,这些信息会随着用户改变客户端的配置或浏览器的版本更新而发生变化,所以要达到长期追踪用户的目的,需要识别用户浏览器不断变化的指纹。除了因为浏览器版本等客观原因导致的浏览器指纹变动,还有一些是由于反浏览器指纹追踪软件主动改变某些特征的信息,所以也需要提高对这些浏览器指纹识别的准确率。
传统的动态浏览器指纹识别方法使用的是统计学和传统机器学习算法,比如随机森林算法,但这些方法准确率不高。此外,还有使用深度学习算法的动态浏览器指纹识别方法,比如使用递归神经网络(Recurrent Neural Network,RNN)算法和长短期记忆(LongShort-Term Memory,LSTM)算法。但这些算法只能顺序处理传入的数据,并且难以处理非常高维和稀疏的输入数据,例如包含大量特征的浏览器指纹,并且顺序处理数据会降低算法的效率。
发明内容
为了识别用户浏览器不断变化的指纹,提高指纹识别算法的准确率和效率,同时应对反浏览器指纹追踪软件生成伪指纹的问题,本发明提出一种基于CNN-Linformer模型的浏览器识别方法,通过生成伪指纹对原始数据集进行扩充,形成增强数据集来对模型进行训练,从而提高了指纹识别算法的鲁棒性。
为了实现上述目的,本发明提供如下技术方案:
本发明提供一种基于CNN-Linformer模型的浏览器识别方法,包括如下步骤:
对于未知的指纹fu,首先遍历指纹链集合C中的每个指纹链ck=<fk,t,fk,t-1,fk,t-2,fk,t-3>,将未知的指纹fu和指纹链ck通过生成输入向量算法生成输入向量Vinput=[It,It-1,...,It-i+1],其中i是指纹链的长度,t是当前的时间戳,It=diff<ft-1,ft>代表两个指纹的比较结果,diff表示一个由M个特征组成的单一特征向量I=<x1,x2,...,xM>,xn是两个指纹的第n个特征的比较结果;所述指纹链是根据指纹获取时间的先后,将拥有同一ID的指纹链接起来形成,每一个浏览器指纹都有一个ID,该ID关联到拥有相同ID的浏览器实例,一个浏览器实例拥有一个指纹链;所述指纹链集合C包含所有已链接到浏览器实例的指纹;
然后将Vinput输入CNN-Linformer模型,通过CNN提取输入数据的时序特征,再通过Linformer的线性注意力聚焦重要的特征,并通过多头注意力对数据进行并行计算,得到未知的指纹fu是否属于指纹链ck的概率p;若p>λ,则表示未知的指纹fu属于指纹链ck,将指纹链ck的ID赋值给未知的指纹fu,并将未知的指纹fu***指纹链ck的末尾,删除指纹链ck中头部的指纹;若p≤λ,则生成新的ID赋值给fu,并生成新的指纹链<fu>加入到指纹链集合C中,λ为设置的概率阈值;所述CNN-Linformer模型包涵一个重塑层Bridge,用于重塑来自CNN的输出,以匹配Linformer的输入大小;Linformer层只采用了1个编码器块,Linformer的输出最后通过一个由Softmax激活的线性层来产生二进制分类结果。
进一步地,CNN-Linformer模型中,CNN模块采用了两层卷积层来提取输入数据的时序特征,通过Bridge模块将最后一层卷积层的输出进行重塑,变为匹配Linformer模块的输入Vnew;Linformer模块只采用Linformer的编码器部分,并且只采用了1个编码器块。
进一步地,所述CNN-Linformer模型的构建步骤如下:
(1)选用数据集:将浏览器指纹数据集作为原始数据集Fraw;
(2)数据增强:利用伪指纹技术对原始数据集Fraw进行数据增强,获得增强数据集Faug;
(3)数据预处理:按照规则对增强数据集Faug中的指纹进行筛选,得到浏览器指纹数据集Ftemp,并对浏览器指纹数据集Ftemp进行特征正则化;
(4)特征选择:根据指纹特征的信息熵进行特征选择,将选择的指纹特征以及在数据增强时获得的特征共同构成多个有时序关系的指纹比较向量;
(5)生成输入向量:将多个有时序关系的指纹比较向量转化为一个二维矩阵Vinput=[It,It-1,...,It-i+1],作为CNN-Linformer模型的输入向量,其中i是指纹链的长度,t是当前的时间戳,It=diff<ft-1,ft>代表两个指纹的比较结果,diff表示一个由M个特征组成的单一特征向量I=<x1,x2,...,xM>,xn是两个指纹的第n个特征的比较结果,diff方法采用计算两个特征之差的绝对值的方法;
(6)训练CNN-Linformer模型:构建数据集Ftemp正负样本,作为后续训练和测试的新数据集F,在新数据集F中随机选择20%的数据作为训练集,其余80%作为测试集,使用训练数据对模型进行训练,得到训练完的模型并保存,然后利用模型对测试数据进行分类,得到分类结果并进行结果分析。
进一步地,步骤(2)通过随机化属性值或添加噪声的伪指纹技术对原始数据集Fraw进行数据增强。
进一步地,步骤(3)中,对指纹进行筛选的方法为:
对于增强数据集Faug,Faug中的每个浏览器指纹f都有一个浏览器ID链接到它所属的浏览器实例,该浏览器实例的所有指纹组成集合Fid,其中id为该浏览器实例的id;对于每一个若Fid不符合规则1和规则2,则删除Faug中所有指纹f∈Fid,最终得到新的浏览器指纹数据集Ftemp;
其中:
规则1:若一个浏览器实例关联的所有指纹数量少于6个,则删除该浏览器实例的所有指纹;
规则2:若一个浏览器实例关联的所有指纹中的操作***类型属性不全一样,则删除该浏览器实例的所有指纹。
进一步地,步骤(3)中,特征正则化的方法如下:
对于数值类型特征,采用最小最大规范化进行处理;
对于布尔类型特征,用0,1的二进制表示;
对于字符串类型特征,先转化为数值再用最小最大规范化进行处理;对于不可以直接转为数值的字符串,通过python中的hashlib库中的哈希算法,将字符串映射为数值,再用最小最大规范化进行处理;
对于canvas,先通过python中的hashlib库中的哈希算法,将字符串映射为数值,再用最小最大规范化进行处理。
进一步地,步骤(5)中,生成输入向量算法步骤如下:
首先生成一个空的Vinput;其次,遍历ck=<fk,t,fk,t-1,fk,t-2,fk,t-3>中的指纹fk,i,将fu和fk,i进行比较运算,得到比较结果Ii=diff<fu,fk,i>=<x1,x2,...,xM>,并将结果并入Vinput中;若ck的长度即指纹链中指纹的个数小于4,将生成Vzero来补充,Vzero=<0,0,...0>;最后生成的输入二维矩阵Vinput表示为:
进一步地,在CNN-Linformer模型的Linformer模块中,最后一个层后放置一个Dropout模块。
与现有技术相比,本发明具有以下有益效果:
(1)在现有浏览器指纹识别方法中,他们使用的算法都是顺序处理的算法,比如随机森林、RNN、LSTM等,只能对数据进行顺序处理。本发明设计了新的浏览器识别模型,将卷积神经网络(Convolutional neural network,CNN)和Linformer结合,提出基于CNN-Linformer模型的浏览器指纹识别算法,用于计算未知指纹是否属于某个指纹链的概率,它可以一次性处理多个输入,并且善于处理高维和稀疏的输入数据。在本发明方法中,采用新的输入矩阵构造算法,将多个输入转为二维矩阵,就可以同时传入模型进行训练或测试。使用CNN从时间序列数据中提取特征,用Linformer对这些特征进行进一步计算以作出预测。其中,Linformer的核心是线性注意力机制,使其能够更有效地捕捉数据中的复杂联系和相互作用。此外,通过移除Linformer中的解码器部分、输入嵌入部分和位置编码部分对Linformer进行优化,将CNN的结果重塑后直接送入Linformer的编码器进行计算,降低了模型的复杂度进而提高计算的速度,并通过在Linformer解码器之后加入Dropout层防止过度拟合。
(2)针对匿名浏览器为了摆脱浏览器指纹追踪,通过伪指纹生成技术改变浏览器指纹从而降低指纹识别的成功率的问题,本发明对常见的伪指纹技术和工具进行了全面分析,并利用这些伪指纹技术对原始数据集进行了数据增强。使用含有正常指纹和伪指纹的增强数据集对CNN-Linformer模型进行训练,提高了浏览器指纹识别在伪指纹场景下的鲁棒性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于CNN-Linformer模型的浏览器指纹识别方法流程图。
图2为本发明实施例提供的浏览器指纹识别过程流程图。
图3为本发明实施例提供的CNN-Linformer模型的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提出的一种基于CNN-Linformer模型的浏览器识别方法,如图1所示,首先对原始数据集进行处理,进行特征选择,然后划分训练集和测试集。然后使用训练数据对模型进行训练,得到训练完的模型并保存,然后利用模型对测试数据进行分类,得到分类结果并进行结果分析。
具体的浏览器指纹识别过程如图2所示。在实际环境中,我们给连接到一个服务器的所有浏览器都分配一个ID,则该ID可以唯一标识一个浏览器,我们称拥有ID的浏览器为浏览器实例。在本方法中,每一个浏览器指纹都有一个ID,该ID关联到拥有相同ID的浏览器实例。我们根据指纹获取时间的先后,将拥有同一ID的指纹链接起来,形成指纹链。一个浏览器实例拥有一个指纹链。我们将维护一个指纹链集合,该集合包含所有已链接到浏览器实例的指纹。对于一个未知的指纹fu,要识别该指纹的指纹匹配(Fingerprint Matching)算法如算法1所示:
其中C为指纹链集合,λ为设置的概率阈值,在本方法中λ=0.5。在算法1中,首先遍历指纹链集合C中的每个指纹链ck=<fk,t,fk,t-1,fk,t-2,fk,t-3>,将fu和ck通过算法2生成输入向量算法(详见生成输入向量部分)生成输入向量Vinput,再通过CNN-Linformer模型得到fu是否属于ck的概率p。若p>λ,则表示fu属于ck,将ck的ID赋值给fu,并将fu***ck的末尾,删除ck中头部的指纹(即最早加入的指纹);若p≤λ,则生成新的ID赋值给fu,并生成新的指纹链<fu>加入到指纹链集合C中。
本方法设计的浏览器指纹识别过程相对于其他的浏览器识别方法,抛弃了基于规则进行预识别的部分。由于规则是人为制定的粗粒度规则,识别错误率高,并且伪指纹技术常常对具有高信息熵的指纹特征进行伪造,而在规则中这些特征经常被认为不变,从而对伪指纹进行错误识别。所以我们将深度学习算法作为核心,去掉粗粒度规则,不仅简化了指纹识别流程,还提高了识别的准确率。
以下将对构建CNN-Linformer模型的步骤进行详细说明:
(1)用数据集:本方法使用Spirals团队发布在Github上的FPStalker项目中的浏览器指纹数据集。该数据集中有15000个浏览器指纹,本方法将这些指纹作为原始数据集Fraw。
(2)数据增强:有些匿名浏览器为了摆脱浏览器指纹追踪,通过伪指纹生成技术改变浏览器指纹,从而降低指纹识别的成功率。为了提高浏览器指纹识别在伪指纹场景下的鲁棒性,需要模拟伪指纹技术在防止用户被跟踪时所采取的措施。我们对常见的伪指纹技术和工具进行了全面分析,并利用这些伪指纹技术对原始数据集Fraw进行数据增强。
常见的伪指纹技术的具体有两类:(I)FPGuard、PriVaricator等工具通过随机化某些指纹特征值使得每次收集信息时都不一样;(II)FPRandom等工具通过对WebGL、Canvas等图像信息添加噪声,使得每次收集的信息都不一样。针对随机化属性值和添加噪声两种伪指纹技术,本发明实施例中具体的数据增强方法可采用如下手段:
a、针对FPGuard等工具通过禁用Flash来阻止基于Flash的字体枚举,Flash的缺失可以被用作指纹信息,所以可以在特征筛选时添加Flash的相关属性值作为指纹特征,如Flash fonts、Flash resolution、Flash language等。但从便于特征处理的角度,可以只选用易于数值化的属性值Flash resolution做为指纹特征。
b、针对DCB等工具使用真实指纹做为伪指纹的情况。可以对User-Agent、Language、Fonts等部分信息熵较高的基本指纹特征进行伪造。需要从当前指纹库的指纹特征中获取真实数据,然后对指纹特征值进行替换形成伪指纹。
c、针对PriVaricator等工具通过过滤navigator.plugin属性的单个条目,返回实际插件列表的随机子集的情况。可以将一条指纹链中的所有指纹的plugin属性的并集做为该指纹链的plugin集,并从plugin集中随机抽取一些插件做为子集,要求该子集中的插件数量小于所有指纹的插件数量。最后使用这个子集替换所在指纹链中的某些指纹的plugin属性,从而构造伪指纹。
d、针对FireGloves等工具限制可以检索的字体数量的情况。可以通过与c中相同的方法构造字体子集并伪造指纹。
e、针对FireGloves等工具需要通过JavaScript函数间接访问浏览器功能等情况,所以可以根据是否使用了JavaScript对象来判断是否使用了如FireGloves的伪指纹工具。可以在特征筛选时添加JavaScript对象的相关属性值作为指纹特征,如localStorage。
f、针对FPRandom等工具对Canvas、WebGL指纹进行加噪处理的情况。可以在收集一个浏览器指纹时,连续创建两个的Canvas(WebGL)图像,并检查生成的Canvas(WebGL)图像数据是否存在差异来判断是否存在Canvas噪音。由于Canvas、WebGL图像过大,所以可以在收集信息时进行差异计算,并将差异结果做为浏览器指纹特征之一。本文将差异结果命名为CanvasDiff(WebGLDiff),取值0或1,0代表相同,1代表不同。构造伪指纹时,随机选取一些浏览器实例,将这些实例的指纹的CanvasDiff(WebGLDiff)都设置为1,其余实例都设置为0。
g、对Screen resolution、Timezone和Content-Encoding等指纹特征,可以根据指纹库中的真实数据进行更改,但要求每次构造伪指纹时,同一个伪指纹中的这些特征不能同时进行替换。
h、要求在每一次构造伪指纹时,一个伪指纹中所替换的特征值数量不能大于3个。
最终,我们将原始数据集Fraw扩充到了20000个指纹做为增强数据集Faug。
(3)数据预处理:
a、筛选指纹。为了更好地训练CNN-Linformer模型,数据集中的指纹需要按照规则进行限制。对于增强数据集Faug,Faug中的每个浏览器指纹f都有一个浏览器ID链接到它所属的浏览器实例,该浏览器实例的所有指纹组成集合Fid,其中id为该浏览器实例的id。对于每一个若Fid不符合规则1和规则2,则删除Faug中所有指纹f∈Fid。最终得到新的浏览器指纹数据集Ftemp。规则1和规则2如下:
规则1.若一个浏览器实例关联的所有指纹数量少于6个,则删除该浏览器实例的所有指纹。
规则2.若一个浏览器实例关联的所有指纹中的操作***类型属性不全一样,则删除该浏览器实例的所有指纹。
b、特征正则化。浏览器指纹中的特征有几种类型:1.数值类型、2.布尔类型、3.字符串类型。4.canvas
1)对于数值类型,采用最小最大规范化(min-max normalization)进行处理。对于浏览器指纹中的某个数值类型特征值x,遍历Ftemp中的所有x得到一个序列x1,x2,x3,...,xn,其中n为Ftemp中的指纹个数。对序列x1,x2,x3,...,xn进行变换:
得到新序列y1,y2,y3,...,yn∈[0,1]。
2)对于布尔类型,用0,1的二进制表示。
3)对于字符串类型。对于creationDate这种日期形式,先转化为数值再用1中的方法正则化。对于不可以直接转为数值的,可以通过python中的hashlib库中的SHA256等哈希算法,将字符串映射为8bit的数值,之后再用1中的方法正则化。
4)对于canvas,先进行SHA256哈希算法,将字符串映射为8bit的数值,之后再用1中的方法正则化。
相比于其他方法中处理浏览器指纹特征的技术,该方法更加简单、易于操作。对于浏览器指纹识别来说,识别指纹的速度是衡量算法优劣的一个重要指标,所以简单高效的数据预处理方法能够减少数据处理时间,进而提高指纹识别的速度。
(4)特征选择:通过浏览器指纹收集脚本收集的指纹拥有很多特征,而在这些特征中会出现很多的冗余特征。在训练CNN-Linformer模型的时候,拥有太多特征并不能保证更好的结果,甚至可能导致过拟合。为了选择哪些属性构成特征向量,本方法将根据指纹特征的信息熵进行特征选择。Alejandro等人(A Gómez-Boix,P.Laperdrix,and B.Baudry.″Hiding in the Crowd:an Analysis of the Effectiveness of BrowserFingerprinting at Large Scale.″World Wide Web Conference2018)收集了1,816,776个浏览器指纹做为数据集来计算不同浏览器指纹特征的信息熵,其结果如表1所示。我们将选择表1中的16个指纹特征以及在数据增强时增加的4个特征Flashresolution、localStorage、CanvasDiff、WebGLDiff,共20个特征构成训练CNN-Linformer模型的特征向量。
表1浏览器指纹特征熵值
(5)生成输入向量:要将数据传入CNN中,我们将多个有时序关系的指纹比较向量转化为一个类似图像的二维矩阵作为输入。把二维矩阵Vinput=[It,It-1,...,It-i+1]作为输入向量,其中i是指纹链的长度,t是当前的时间戳。而It=diff<ft-1,ft>代表两个指纹的比较结果,diff表示一个由M个特征组成的单一特征向量I=<x1,x2,...,xM>,xn是两个指纹的第n个特征的比较结果。在本方法中,由于浏览器指纹的特征全都已经转为数值并且正则化,所以diff方法采用计算两个特征之差的绝对值的方法。生成输入向量算法具体步骤如算法2所示。
首先生成一个空的Vinput。其次,遍历ck=<fk,t,fk,t-1,fk,t-2,fk,t-3>中的指纹fk,i,将fu和fk,i进行比较运算,得到比较结果Ii=diff<fu,fk,i>=<x1,x2,...,xM>,并将结果并入Vinput中。若ck的长度(即指纹链中指纹的个数)小于4,我们将生成Vzero来补充,Vzero=<0,0,...0>。最后算法2生成的输入二维矩阵Vinput如下:
在本方法中,一个浏览器实例所关联的指纹数量至少为4个,一个指纹拥有20个特征,所以Vinput为4×20的矩阵。
在其他浏览器指纹识别方法中,他们使用的算法都是顺序处理的算法,比如随机森林、RNN、LSTM等。在本方法中,我们通过将多个输入转为二维矩阵,就可以同时传入模型进行训练或测试,这样就可以提高指纹识别的效率。
(6)训练CNN-Linformer模型:本方法将数据集Ftemp通过现有技术(Li,Xiaoyun,etal.″Constructing browser fingerprint tracking chain based on LSTM model.″2018IEEE Third International Conference on Data Science in Cyberspace(DSC).IEEE,2018)中的方法构建了正负样本,获得136914个正样本和136041个负样本,总共272,955个样本作为后续训练和测试的新数据集F。在新数据集F中随机选择20%的数据作为训练集,其余80%作为测试集。
本发明构造的CNN-Linformer模型如图3所示。该模型是CNN和Linformer的组合,为二元分类任务而设计。输入是一个二维矩阵Vinput,其中一维是时间序列数据,另一维是浏览器指纹的特征。CNN从时间序列数据中提取特征,然后Linformer对这些特征进行计算以作出预测。模型中包涵一个重塑层Bridge,用于重塑来自CNN的输出,以匹配Linformer的输入大小。我们将Vinput经过CNN模块和Bridge模块处理后的数据表示为Vnew。之后,将Vnew传入Linformer层,它处理数据并产生输出。Linformer的输出最后通过一个由Softmax激活的线性层来产生二进制分类结果。
以下从CNN和Linformer两部分对模型进行介绍。
a、CNN模块:CNN可以对输入数据进行卷积和池化操作,从输入数据中提取重要特征,有助于捕捉与分类任务有关的空间和时间信息。CNN可以在多个GPU或CPU上并行处理数据,适合在大型数据集上进行大规模训练,提高模型的训练效率。本发明CNN的具体架构由表1所示,采用了两层卷积层来提取输入数据的时序特征,并且为了保证输入数据的时间维度不变,让之后的Linformer进一步提取特征,我们舍弃了池化层(Pooling layer),转而通过图3中的Bridge模块将最后一层卷积层的输出进行重塑,变为可用于Linformer模块的输入Vnew。Vnew为4×320的矩阵。
表1 CNN架构
层 | 类型 | 输出形状 | 激活函数 | 参数 |
conv2d | Conv2D | (None,4,20,10) | ReLU | 50 |
conv2d_1 | Conv2D | (None,4,20,20) | ReLU | 820 |
reshape | Reshape | (None,4,400,1) | - | 0 |
b、Linformer模块:在浏览器指纹识别的任务中,输入通常是一系列具有不同特征的数据点,这些数据点可能分散在输入序列的不同位置。通过采用线性注意力机制,Linformer模型可以更好地捕捉这些分散的信息,并利用这些信息以提高指纹识别的准确性和鲁棒性。具体而言,线性注意力机制允许Linformer模型对输入的不同位置进行加权,以便更加关注那些对于特定任务更为重要的信息。这一机制与传统的自注意力机制相比,具有更低的时间和空间复杂度,因此能够提高指纹识别的效率。多头线性注意力(Multi-head Linear Attention)能够让Linformer对输入数据进行并行处理。
为了适用于浏览器指纹识别任务,本发明对Linformer模型进行了修改:为了降低模型的复杂度,我们删除了Linformer模型中的解码器(decoder)部分,只采用Linformer的编码器(encoder)部分,并且只采用了1个编码器块,即图3中Linformer模块的虚线部分,N=1。由于CNN部分的输出不需要进一步处理就可以直接输入到Linformer-encoder中进行下一步计算,所以我们删除了Linformer中的输入嵌入和位置编码的部分。修改后的Linformer模型的结构如图3中Linformer部分所示。Linformer模型相关的参数设置如表2所示。
表2.Linformer模型的参数设置
编码器个数 | 1 |
多头注意力头数 | 5 |
前馈网络层维度 | 64 |
c、Dropout层:为了防止过度拟合,在最后一个层标准化模块之后放置一个Dropout模块。在本方法中,Dropout=0.1。
d、线性(Linear)层:线性层使用RELU函数。ReLU是非线性激活函数,相比于线性激活函数,能更好地表达复杂的分类边界和更符合神经元的信号激励原理,可以提高模型的性能。另外,ReLU有助于减少消失状态和误差梯度问题。
e、输出层激活函数:sigmoid。在二分类问题中,常常使用sigmoid作为激活函数。sigmoid的特点就是将输出映射到[0,1]之内,可以和概率轻易对应起来,很容易用来反映二分类结果的概率。输出层最后输出了fu是否属于某个指纹链的概率p。
f、损失函数:二元交叉熵(Binary Cross Entropy)函数。二元交叉熵损失函数常被用来处理二分类问题。其计算公式如下:
其中其中,y是二元标签0或者1,p(y)是输出属于y标签的概率。
g、优化器:Adam。我们在构建模型时使用了Adam做为优化算法。Adam是一种可以替代传统随机梯度下降过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重。
本发明提出了基于CNN-Linformer模型的浏览器指纹识别算法,用来计算未知指纹是否属于某个指纹链的概率。CNN-Linformer模型先通过CNN提取输入数据的时序特征,再通过Linformer的线性注意力聚焦重要的特征,提高了模型的准确率,并通过多头注意力对数据进行并行计算,提高了模型的训练速度。通过删除Linformer中的解码器部分、输入嵌入部分和位置编码部分对Linformer进行简化,降低了模型的复杂度进而提高计算的速度。采用CNN-Linformer模型将浏览器指纹识别准确率提高到了99.78%。在同等实验条件下,基于CNN-Linformer模型的浏览器指纹识别算法识别2000个浏览器指纹所用的时间为2830s,对比LSTM的3655s降低了22.57%,比BiGRU的4482ms降低了36.86%,比FPStalker的8275s降低了65.8%。结果表明本方法具有准确率高和识别速度快的优点。
同时,本发明针对现有的其他方法没有全面考虑各种伪指纹技术带来准确率下降的问题,利用了随机化属性值和添加噪声两种伪指纹技术对原始数据集进行数据增强,然后使用含有正常指纹和伪指纹的增强数据集对CNN-Linformer模型进行了训练。本方法不仅使用伪指纹技术进行了数据增强,还将Flash resolution、localStorage、CanvasDiff、WebGLDiff四个特征做为指纹特征。这些新加入特征能够标识用户使用了那些伪指纹技术,将伪指纹技术也做为指纹的一部分。最终,CNN-Linformer模型的精确度达到了99.73%,召回率达到了99.83%,F1值达到了99.78%,MCC值达到了98.89%。这些结果表明,本方法在伪指纹场景下具有良好的鲁棒性。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,但这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于CNN-Linformer模型的浏览器识别方法,其特征在于,包括如下步骤:
对于未知的指纹fu,首先遍历指纹链集合C中的每个指纹链ck=<fk,t,fk,t-1,fk,t-2,fk,t-3>,将未知的指纹fu和指纹链ck通过生成输入向量算法生成输入向量Vinput=[It,It-1,...,It-i+1],其中i是指纹链的长度,t是当前的时间戳,It=diff<ft-1,ft>代表两个指纹的比较结果,diff表示一个由M个特征组成的单一特征向量I=<x1,x2,...,xM>,xn是两个指纹的第n个特征的比较结果;所述指纹链是根据指纹获取时间的先后,将拥有同一ID的指纹链接起来形成,每一个浏览器指纹都有一个ID,该ID关联到拥有相同ID的浏览器实例,一个浏览器实例拥有一个指纹链;所述指纹链集合C包含所有已链接到浏览器实例的指纹;
然后将Vinput输入CNN-Linformer模型,通过CNN提取输入数据的时序特征,再通过Linformer的线性注意力聚焦重要的特征,并通过多头注意力对数据进行并行计算,得到未知的指纹fu是否属于指纹链ck的概率p;若p>λ,则表示未知的指纹fu属于指纹链ck,将指纹链ck的ID赋值给未知的指纹fu,并将未知的指纹fu***指纹链ck的末尾,删除指纹链ck中头部的指纹;若p≤λ,则生成新的ID赋值给fu,并生成新的指纹链<fu>加入到指纹链集合C中,λ为设置的概率阈值;所述CNN-Linformer模型包涵一个重塑层Bridge,用于重塑来自CNN的输出,以匹配Linformer的输入大小;Linformer层只采用了1个编码器块,Linformer的输出最后通过一个由Softmax激活的线性层来产生二进制分类结果。
2.根据权利要求1所述的基于CNN-Linformer模型的浏览器识别方法,其特征在于,CNN-Linformer模型中,CNN模块采用了两层卷积层来提取输入数据的时序特征,通过Bridge模块将最后一层卷积层的输出进行重塑,变为匹配Linformer模块的输入Vnew;Linformer模块只采用Linformer的编码器部分,并且只采用了1个编码器块。
3.根据权利要求1所述的基于CNN-Linformer模型的浏览器识别方法,其特征在于,所述CNN-Linformer模型的构建步骤如下:
(1)选用数据集:将浏览器指纹数据集作为原始数据集Fraw;
(2)数据增强:利用伪指纹技术对原始数据集Fraw进行数据增强,获得增强数据集Faug;
(3)数据预处理:按照规则对增强数据集Faug中的指纹进行筛选,得到浏览器指纹数据集Ftemp,并对浏览器指纹数据集Ftemp进行特征正则化;
(4)特征选择:根据指纹特征的信息熵进行特征选择,将选择的指纹特征以及在数据增强时获得的特征共同构成多个有时序关系的指纹比较向量;
(5)生成输入向量:将多个有时序关系的指纹比较向量转化为一个二维矩阵Vinput=[It,It-1,...,It-i+1],作为CNN-Linformer模型的输入向量,其中i是指纹链的长度,t是当前的时间戳,It=diff<ft-1,ft>代表两个指纹的比较结果,diff表示一个由M个特征组成的单一特征向量I=<x1,x2,...,xM>,xn是两个指纹的第n个特征的比较结果,diff方法采用计算两个特征之差的绝对值的方法;
(6)训练CNN-Linformer模型:构建数据集Ftemp正负样本,作为后续训练和测试的新数据集F,在新数据集F中随机选择20%的数据作为训练集,其余80%作为测试集,使用训练数据对模型进行训练,得到训练完的模型并保存,然后利用模型对测试数据进行分类,得到分类结果并进行结果分析。
4.根据权利要求3所述的基于CNN-Linformer模型的浏览器识别方法,其特征在于,步骤(2)通过随机化属性值或添加噪声的伪指纹技术对原始数据集Fraw进行数据增强。
5.根据权利要求3所述的基于CNN-Linformer模型的浏览器识别方法,其特征在于,步骤(3)中,对指纹进行筛选的方法为:
对于增强数据集Faug,Faug中的每个浏览器指纹f都有一个浏览器ID链接到它所属的浏览器实例,该浏览器实例的所有指纹组成集合Fid,其中id为该浏览器实例的id;对于每一个若Fid不符合规则1和规则2,则删除Faug中所有指纹f∈Fid,最终得到新的浏览器指纹数据集Ftemp;
其中:
规则1:若一个浏览器实例关联的所有指纹数量少于6个,则删除该浏览器实例的所有指纹;
规则2:若一个浏览器实例关联的所有指纹中的操作***类型属性不全一样,则删除该浏览器实例的所有指纹。
6.根据权利要求3所述的基于CNN-Linformer模型的浏览器识别方法,其特征在于,步骤(3)中,特征正则化的方法如下:
对于数值类型特征,采用最小最大规范化进行处理;
对于布尔类型特征,用0,1的二进制表示;
对于字符串类型特征,先转化为数值再用最小最大规范化进行处理;对于不可以直接转为数值的字符串,通过python中的hashlib库中的哈希算法,将字符串映射为数值,再用最小最大规范化进行处理;
对于canvas,先通过python中的hashlib库中的哈希算法,将字符串映射为数值,再用最小最大规范化进行处理。
8.根据权利要求1所述的基于CNN-Linformer模型的浏览器识别方法,其特征在于,在CNN-Linformer模型的Linformer模块中,最后一个层后放置一个Dropout模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310311808.0A CN116310728A (zh) | 2023-03-28 | 2023-03-28 | 基于CNN-Linformer模型的浏览器识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310311808.0A CN116310728A (zh) | 2023-03-28 | 2023-03-28 | 基于CNN-Linformer模型的浏览器识别方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116310728A true CN116310728A (zh) | 2023-06-23 |
Family
ID=86813065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310311808.0A Pending CN116310728A (zh) | 2023-03-28 | 2023-03-28 | 基于CNN-Linformer模型的浏览器识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116310728A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117544322A (zh) * | 2024-01-10 | 2024-02-09 | 北京雪诺科技有限公司 | 浏览器的辨识方法、装置、设备及存储介质 |
-
2023
- 2023-03-28 CN CN202310311808.0A patent/CN116310728A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117544322A (zh) * | 2024-01-10 | 2024-02-09 | 北京雪诺科技有限公司 | 浏览器的辨识方法、装置、设备及存储介质 |
CN117544322B (zh) * | 2024-01-10 | 2024-03-22 | 北京雪诺科技有限公司 | 浏览器的辨识方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109639739B (zh) | 一种基于自动编码器网络的异常流量检测方法 | |
CN112508085B (zh) | 基于感知神经网络的社交网络链路预测方法 | |
CN111783442A (zh) | 入侵检测方法、设备和服务器、存储介质 | |
CN113806746B (zh) | 基于改进cnn网络的恶意代码检测方法 | |
CN114120041B (zh) | 一种基于双对抗变分自编码器的小样本分类方法 | |
Alabadi et al. | Anomaly detection for cyber-security based on convolution neural network: A survey | |
Rehman et al. | Deep learning for face anti-spoofing: An end-to-end approach | |
Chu et al. | Neural batch sampling with reinforcement learning for semi-supervised anomaly detection | |
CN113269228B (zh) | 一种图网络分类模型的训练方法、装置、***及电子设备 | |
CN116310728A (zh) | 基于CNN-Linformer模型的浏览器识别方法 | |
CN111008570B (zh) | 一种基于压缩-激励伪三维网络的视频理解方法 | |
Feng et al. | A phishing webpage detection method based on stacked autoencoder and correlation coefficients | |
Shafique et al. | SSViT-HCD: A spatial–spectral convolutional vision transformer for hyperspectral change detection | |
CN115759482A (zh) | 一种社交媒体内容传播预测方法和装置 | |
CN116340524A (zh) | 一种基于关系自适应网络的小样本时态知识图谱补全方法 | |
Barbhuiya et al. | Gesture recognition from RGB images using convolutional neural network‐attention based system | |
CN114118267A (zh) | 基于半监督生成对抗网络的文物感知数据缺失值插补方法 | |
CN116258504B (zh) | 银行客户关系管理***及其方法 | |
CN117391816A (zh) | 一种异质图神经网络推荐方法、装置及设备 | |
Charitidis et al. | Operation-wise attention network for tampering localization fusion | |
Cultrera et al. | Leveraging Visual Attention for out-of-distribution Detection | |
CN111797732B (zh) | 一种对采样不敏感的视频动作识别对抗攻击方法 | |
CN114757391A (zh) | 一种基于网络数据空间设计的服务质量预测方法 | |
Wu et al. | Efficient multi-domain dictionary learning with gans | |
Priya et al. | An Enhanced Animal Species Classification and Prediction Engine using CNN |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |