Markov Chain Fingerprinting to Classify Encrypted Traffic 论文笔记
0.Abstract
在本文中,提出了用于SSL/TLS会话中传输的应用程序流量的随机指纹。这个指纹基于一阶齐次马尔可夫链,模型识别应用程序的准确率,并提供了检测异常对话的可能性。
1.Introduction
通过SSL/TLS会话时的头部信息创建统计指纹,用于分类应用流量。研究了 12 个使用 SSL/TLS 的代表性应用程序的马尔可夫链指纹,建立的模型展现出特定的结构,这种结构能够通过比较应用程序流量和和它带有指纹的消息序列对加密的应用程序流量分类。
2.SSL/TLS Overview
在 SSL/TLS 握手期间,很多信息都作为明文发送。但是,在服务器 Hello Done 或 Change Cipher SpecProtocol 消息之后,只有协议类型、记录的长度和 SSL/TLS 版本没有被加密。

SSL/TLS协议交流流程

将协议中的消息类别用数字表示,用于建图和分析。
主要分析服务端,文章认为客户端有个性差异,但是服务端没有。
III. MARKOV CHAIN FINGERPRINTS
Xt表示t时刻的状态,it∈{1,2,3…s},it表示一个SSL/TLS信息类别或者在一次TCP片段中传输的一系列SSL/TLS信息类别。
假设满足一阶马尔科夫链:

进一步假设满足齐次性:

设置Q和W是进入session和离开session的概率分布。
注意Q和W是独立于马尔科夫链的,他们只是提供了进入马尔科夫链和离开马尔科夫链的概率。

基于以上定义,某个长度为T的序列,他是SSL/TLS session的概率就如公式(6)所示。因为序列是X1、X2…XT这些消息,所以计算概率肯定是第一个消息是X1进入的概率,然后按照给定的消息序列走的概率,对应连乘,最后乘一个离开的概率。(为什么最后乘一个离开的概率?)
交叉验证:
4折交叉验证。
四个数据集,每次都是一个数据集训练,三个数据集测试。(为什么和常规理解是反着的)

验证相当于是一个多假设决策问题。
最大似然估计,把所有应用(12个应用)中消息序列的概率P最大的当作该消息序列的对应应用。因为最大似然估计认为模型求出的消息序列概率P就是他属于某个应用的可能性。最大似然估计的核心:存在即合理。
为了让实验结果更有说服力,在第一次实验之后在一年半的时间内又做了两次实验,观察之前得到的马尔科夫链指纹是否仍然有效。总而言之,应用程序指纹可能会随着时间的推移而演变,并且需要定期甚至恒定的更新。
V. DISCUSSION
讨论本文的方法能够精确区分应用程序的原因:
1.许多协议并不完全遵守RFC规范,且行为与普通的SSL/TLS协议具有细微的差异。这样产生了高度分化的应用,与之对应方便求出高度分化的马尔科夫链指纹,进而进行应用的分类。
2.SSL/TLS隧道使用频率正在逐渐增加,而使用SSL/TLS加强安全性的不多,比如Skype用自己的安全性和实时性通信协议,仅使用SSL/TLS隧道来绕过防火墙。因此,SSL/TLS 堆栈指纹被简化为几个转换,这与其他模型有很大不同。
3.一些 SSL/TLS 协议消息被定义为可选的或上下文相关的。例如,在我们研究的前两个数据集中,我们没有观察到 PayPal 和 Twitter 会话中的任何服务器密钥交换消息,而在 Dropbox 的情况下,它总是遵循证书消息。这样,应用之间的差异就容易找到。
4.应用实现的功能不同。Twitter只有少数会话转换,用户能够发送很多基于文本的消息。Gadu-Gadu 协议的情况下,我们可以观察到一百多个会话。
VII. CONCLUSIONS
通过一阶马尔可夫链建立的分类模型,达到了不错的分类效果。
优点:
1.分类效果较好
2.方法简单,方法需要的时间、资源要求低,代码实现简单。
缺点:
1.假设满足马尔可夫链,其实研究问题不完全满足马尔可夫链的性质。
2.每个状态基于单个变量(消息类型),状态表达能力有限,容易导致指纹的低区分度。
解决方案:
文章使用1阶马尔可夫链,如果尝试用n阶马尔可夫链,可能与实际问题关联更加紧密。有助于解决缺点1
每个状态采用<消息类别,分组长度>二元组来表征,可能能表达更好的状态,有助于解决缺点2
写了一份简单的马尔可夫链python代码,输入n,输入表示初始状态的概率分布(n维行向量)与状态转移矩阵(n*n的矩阵),可以判断迭代一定次数后是否达到稳态。
import numpy as npres = []
def check(a,b): #判断相邻两个状态的Π是否相等tmp = a - b# print(tmp)if all(abs(i)<=1e-10 for i in tmp) > 0:return Truereturn False
def markov(pai,A): #马尔可夫链,给定初始状态和状态转移矩阵,求之后的每个状态。如果达到稳态,返回Trueres.append(pai)for i in range(1,10000):tmp = np.dot(res[i-1],A)res.append(tmp)if check(res[i-1],res[i]):return Truereturn False
def main():n = int(input())pai = list(map(float,input().split()))A = []for _ in range(n):tmp = list(map(float,input().split()))A.append(tmp)print("初始状态:",end="")print(pai)if markov(pai,A):print("稳态:", end="")print(res[-1])
if __name__=='__main__':main()main()
'''
3
0.2 0.3 0.5
0.2 0.6 0.2
0.3 0 0.7
0.5 0 0.53
0.7 0.2 0.1
0.2 0.6 0.2
0.3 0 0.7
0.5 0 0.5
'''相关文章:
Markov Chain Fingerprinting to Classify Encrypted Traffic 论文笔记
0.Abstract 在本文中,提出了用于SSL/TLS会话中传输的应用程序流量的随机指纹。这个指纹基于一阶齐次马尔可夫链,模型识别应用程序的准确率,并提供了检测异常对话的可能性。 1.Introduction 通过SSL/TLS会话时的头部信息创建统计指纹ÿ…...
vue 跨标签页的数据共享(即跨标签页通信)
跨标签页通信的常见方案 LocalStorage 或 SessionStorage BroadCast Channel Service Worker Shared Worker Window.postMessage() Cookies IndexedDB 什么是跨标签页通信? 指在同一个浏览器窗口中的多个标签页之间进行数据交流和信息传递的过程。通常情况…...
什么是拉宾-斯科特定理?
拉宾-斯科特定理(Rabin-Scott theorem )是数学上最深刻的数学结果之一。拉宾-斯科特定理是人们最喜欢的计算机科学概念之一。 当正确理解拉宾-斯科特定理时,它会以一种相当基本的方式改变你对现实的看法。然而,它典型的教科书式的呈现方式掩盖了这种深…...
Java并发编程第11讲——AQS设计思想及核心源码分析
Java并发包(JUC)中提供了很多并发工具,比如前面介绍过的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore、FutureTask等锁或者同步部件,它们的实现都用到了一个共同的基类——AbstractQueuedSynchronizer&…...
什么是数据库?数据库有哪些基本分类和主要特点?
数据库是以某种有组织的方式存储的数据集合。本文从数据库的基本概念出发,详细解读了数据库的主要类别和基本特点,并就大模型时代备受瞩目的数据库类型——向量数据库进行了深度剖析,供大家在了解数据库领域的基本概念时起到一点参考作用。 …...
flutter显示出底部控件的引导页
需求:同一个页面的两个不同的入口,同一个控件的位置有变化,显示引导页时对应这个控件的引导内容的位置也需要改变;同时半透明底部显示出真实的页面内容。 这样的需要如果切图然后再往页面上贴位置无法精确的对准。 思路࿱…...
常用设计模式——模板方法模式
什么是模板方法模式 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却要在每一个子类都重写这些方法…...
idea使用git删除本地提交(未推送)
1、找到reset head 2、打开弹窗,在HEAD后面输入^ 结果为HEAD^ 注释: Reset Type 有三种: Mixed(默认方式),保留本地源码,回退 commit 和 index 信息,最常用的方式Soft 回退到某个版本…...
centos 7部署Mysql8.0主从
Mysql官网中关于部署主从的网址 环境准备: 搭建虚拟机和安装Mysql之前的文章中已经涉及,在此不再赘述。 主从IPMysql账号密码主192.168.213.4root/Root1234!从192.168.213.5root/Root1234! 1、主数据库设置 配置my.cnf 一般存放于/etc/。 主从配…...
asp.net docker-compose添加es search
打开docker-compose.yml添加 es-search:image: docker.elastic.co/elasticsearch/elasticsearch:7.17.14 打开docker-compose.override.yml添加 es-search:volumes:- data01:/usr/share/elasticsearch/dataports:- 9200:9200 docker集群中添加es search成功...
工业路由器网关的网络协议之NAT技术
在物联网通讯领域,NAT技术能将内网的一个私有IP转换成一个公网IP去接入互联网,解决组建局域网络时私有IP地址无法在公网上进行路由的问题。 NAT(Network Address Translation)的三种方式: 静态NAT 1、一个私有IP对应…...
【亲测可用】SpringBoot使用Redis的Lettuce连接池报RedisCommandTimeoutException
目录 一、问题详情 二、根本原因 三、解决方案 一、问题详情 在最近新项目的开发当中,当项目刚启动的时候访问Redis服务一切正常,但是过了几分钟后再次访问Redis就报如下错误。 Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutExcept…...
When Urban Region Profiling Meets Large Language Models
本文是LLM系列文章,针对《When Urban Region Profiling Meets Large Language Models》的翻译。 当城市区域轮廓遇到大型语言模型时 摘要1 引言2 前言3 方法4 实验5 结论与未来工作 摘要 基于网络数据的城市区域概况对城市规划和可持续发展至关重要。我们见证了LL…...
【python】最大的偶数
题目: """ 给出一个由非负整数组成的序列 A (A1,A2,A3,....,Av)。这个序列的长度为N判断是否存在一个偶数可以表示为在A中两个不同元素的和。若存在,找到最大的偶数,否则输出”-…...
QT 实现两款自定义的温度计/湿度控件
文章目录 0 引入1、带有标尺的温度/湿度计控件1.头文件2.核心代码 2、竖起来的温度/湿度计控件1.头文件2.实现 3、引用 0 引入 QT原生控件没有实现如仪表盘或者温度计的控件,只好自己实现,文章代码部分参考引用的文章。直接上图 图一 带有标尺的温度计…...
Fourier分析导论——第4章——Fourier级数的一些应用(E.M. Stein R. Shakarchi)
第 4 章 傅里叶级数的一些应用 Fourier series and analogous expansions intervene very naturally in the general theory of curves and surfaces. In effect, this theory, conceived from the point of view of analysis, deals obviously with the study of arbitra…...
c语言使用fdk_aac库对aac音频解码为pcm
//示例为adts的aac流数据(adts数据可以每一包都可以独立解析不需要拼凑) //解码数据的采样率同解码前的采样率,如果不满足需求,需要对数据进行重采样 #include <aacdecoder_lib.h>int m_fd -1; int m_fd2 -1;void aac2pc…...
zustand管理工具--React
npm i zustand 1.函数参数必须返回一个对象 对象内部编写状态数据和方法 2.set是用来修改数据的专门方法必须调用它来修改数据 import { useEffect } from "react"; import { create } from "zustand";// 1. 创建store const goodsStore create((set) …...
Elasticsearch内存分析
文章目录 Elasticsearch JVM内存由哪些部分组成Indexing BufferNode Query CacheShard Request CacheField Data CacheSegments Cache查询 非堆内存内存压力mat分析es的jvm缓存监控 Elasticsearch JVM内存由哪些部分组成 官方建议Elasticsearch设置堆内存为32G,因为…...
Alert警告提示(antd-design组件库)简单使用
1.Alert警告提示 警告提示,展现需要关注的信息。 2.何时使用 当某个页面需要向用户显示警告的信息时。 非浮层的静态展现形式,始终展现,不会自动消失,用户可以点击关闭。 组件代码来自: 警告提示 Alert - Ant Design 3…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
