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…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
