当前位置: 首页 > news >正文

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 在本文中&#xff0c;提出了用于SSL/TLS会话中传输的应用程序流量的随机指纹。这个指纹基于一阶齐次马尔可夫链&#xff0c;模型识别应用程序的准确率&#xff0c;并提供了检测异常对话的可能性。 1.Introduction 通过SSL/TLS会话时的头部信息创建统计指纹&#xff…...

vue 跨标签页的数据共享(即跨标签页通信)

跨标签页通信的常见方案 LocalStorage 或 SessionStorage BroadCast Channel Service Worker Shared Worker Window.postMessage() Cookies IndexedDB 什么是跨标签页通信&#xff1f; 指在同一个浏览器窗口中的多个标签页之间进行数据交流和信息传递的过程。通常情况…...

什么是拉宾-斯科特定理?

拉宾-斯科特定理(Rabin-Scott theorem )是数学上最深刻的数学结果之一。拉宾-斯科特定理是人们最喜欢的计算机科学概念之一。 当正确理解拉宾-斯科特定理时&#xff0c;它会以一种相当基本的方式改变你对现实的看法。然而&#xff0c;它典型的教科书式的呈现方式掩盖了这种深…...

Java并发编程第11讲——AQS设计思想及核心源码分析

Java并发包&#xff08;JUC&#xff09;中提供了很多并发工具&#xff0c;比如前面介绍过的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore、FutureTask等锁或者同步部件&#xff0c;它们的实现都用到了一个共同的基类——AbstractQueuedSynchronizer&…...

什么是数据库?数据库有哪些基本分类和主要特点?

数据库是以某种有组织的方式存储的数据集合。本文从数据库的基本概念出发&#xff0c;详细解读了数据库的主要类别和基本特点&#xff0c;并就大模型时代备受瞩目的数据库类型——向量数据库进行了深度剖析&#xff0c;供大家在了解数据库领域的基本概念时起到一点参考作用。 …...

flutter显示出底部控件的引导页

需求&#xff1a;同一个页面的两个不同的入口&#xff0c;同一个控件的位置有变化&#xff0c;显示引导页时对应这个控件的引导内容的位置也需要改变&#xff1b;同时半透明底部显示出真实的页面内容。 这样的需要如果切图然后再往页面上贴位置无法精确的对准。 思路&#xff1…...

常用设计模式——模板方法模式

什么是模板方法模式 模板方法模式&#xff1a;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决&#xff1a;一些方法通用&#xff0c;却要在每一个子类都重写这些方法…...

idea使用git删除本地提交(未推送)

1、找到reset head 2、打开弹窗&#xff0c;在HEAD后面输入^ 结果为HEAD^ 注释&#xff1a; Reset Type 有三种&#xff1a; Mixed&#xff08;默认方式&#xff09;&#xff0c;保留本地源码&#xff0c;回退 commit 和 index 信息&#xff0c;最常用的方式Soft 回退到某个版本…...

centos 7部署Mysql8.0主从

Mysql官网中关于部署主从的网址 环境准备&#xff1a; 搭建虚拟机和安装Mysql之前的文章中已经涉及&#xff0c;在此不再赘述。 主从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技术

在物联网通讯领域&#xff0c;NAT技术能将内网的一个私有IP转换成一个公网IP去接入互联网&#xff0c;解决组建局域网络时私有IP地址无法在公网上进行路由的问题。 NAT&#xff08;Network Address Translation&#xff09;的三种方式&#xff1a; 静态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系列文章&#xff0c;针对《When Urban Region Profiling Meets Large Language Models》的翻译。 当城市区域轮廓遇到大型语言模型时 摘要1 引言2 前言3 方法4 实验5 结论与未来工作 摘要 基于网络数据的城市区域概况对城市规划和可持续发展至关重要。我们见证了LL…...

【python】最大的偶数

题目&#xff1a; """ 给出一个由非负整数组成的序列 A (A1&#xff0c;A2&#xff0c;A3&#xff0c;....&#xff0c;Av)。这个序列的长度为N判断是否存在一个偶数可以表示为在A中两个不同元素的和。若存在&#xff0c;找到最大的偶数&#xff0c;否则输出”-…...

QT 实现两款自定义的温度计/湿度控件

文章目录 0 引入1、带有标尺的温度/湿度计控件1.头文件2.核心代码 2、竖起来的温度/湿度计控件1.头文件2.实现 3、引用 0 引入 QT原生控件没有实现如仪表盘或者温度计的控件&#xff0c;只好自己实现&#xff0c;文章代码部分参考引用的文章。直接上图 图一 带有标尺的温度计…...

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流数据&#xff08;adts数据可以每一包都可以独立解析不需要拼凑&#xff09; //解码数据的采样率同解码前的采样率&#xff0c;如果不满足需求&#xff0c;需要对数据进行重采样 #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&#xff0c;因为…...

Alert警告提示(antd-design组件库)简单使用

1.Alert警告提示 警告提示&#xff0c;展现需要关注的信息。 2.何时使用 当某个页面需要向用户显示警告的信息时。 非浮层的静态展现形式&#xff0c;始终展现&#xff0c;不会自动消失&#xff0c;用户可以点击关闭。 组件代码来自&#xff1a; 警告提示 Alert - Ant Design 3…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...