- 博客(171)
- 收藏
- 关注
原创 探测+检测+缓解(PDM):让云租户自主防御微架构攻击
PDM 使云租户无需依赖服务商资源即可自主检测和缓解缓存侧信道攻击与瞬态执行攻击:(i)通过探测监控受害者的内存空间;(ii)以线程形式注入自身以检测攻击并处理干扰;(iii)在检测到攻击后缓解数据泄露问题。并通过实验证明了其有效性、高效性和鲁棒性,从而提升租户安全意识、推动服务商改进并作为现有防御的补充层。
2026-06-11 16:47:10
435
原创 【Linux系统编程】基础IO第二讲——文件描述符
一个进程可以打开多个文件,那在操作系统内,就可能同时存在多个进程,它们一共打开了很多的文件。并且文件和进程之间还有一定的从属关系。那这么多的进程,要不要被操作系统管理起来呢?当然!如何管理?先描述,再组织!在 Linux 内核中,使用结构体 来描述一个被进程打开的文件。每个 open 系统调用成功时,内核都会创建一个 struct file 实例,并返回一个文件描述符(fd)与之关联。struct file内部,会直接或间接地包含与被打开文件相关的属性和数据等信息。
2026-06-08 17:05:15
256
原创 【Linux系统编程】基础IO第一讲——系统文件IO
C语言的时候我们学习过文件操作学了很多文件操作的库函数。这些库函数我们把它叫做C 语言的文件 I/O 接口。(当然其它编程语言诸如C++、python也都有自己的文件操作相关的接口)但是,这都是在语言层面,仅凭这些内容,我们对文件的理解其实是非常肤浅的。仅仅停留在会用C语言进行一些文件操作,甚至这里面的大部分接口我们也都忘记了,因为学过去之后就很少再使用它们了。那么接下来的几篇文件,我们将深入到系统层面,对文件进行一个更深的理解。
2026-06-07 11:12:02
265
原创 关于论文《保护机密虚拟机免受硬件性能计数器侧信道攻击》的理解
Aegis 能在仅引入 3% 执行时间开销和 7% CPU 开销的情况下,将所有 HPC 侧信道攻击的准确率从 90% 以上降到接近随机猜测的 2%,并且提供严格的差分隐私可证明安全性,是目前现有 AMD SEV 机密云环境下最实用、最有效的 HPC 侧信道防御方案。论文用三个最常见的机密计算场景,演示了 HPC 侧信道的威力。最后,一种常见的侧信道防御策略是模糊攻击者的观测结果,最直接的方法是直接注入随机噪声,但该方法会向虚拟机中引入额外噪声,带来额外的性能开销,且随机注入噪声无法提供严格的隐私保障。
2026-06-03 18:24:41
455
原创 2015年IEEE安全与隐私研讨会:末级缓存侧信道攻击具有实际可行性——PRIME+PROBE攻击改进版
L1/L2 会满足大多数访问,LLC 看不到很多内存活动。如果攻击者只控制 LLC 状态,但受害者数据从 L1/L2 命中,就不会到达 LLC → 攻击者看不到。解决方案:利用包容性缓存。即L3缓存中包含了L1、L2中的所有数据。因此,从L3驱逐数据会同时从所有核心的L1/L2中移除该数据。(因为如果一个数据在 L1 或 L2 里,那么它 必须 同时在 L3 里)攻击有效:基于 LLC 的 Prime+Probe 可实现 1.2 Mb/s 隐蔽信道,并攻破 GnuPG 的平方-乘和滑动窗口算法。
2026-05-25 15:41:05
400
原创 【Linux 系统编程】手撕一个简易版的shell命令行解释器
那到这里,我们的这个自定义shell就实现的差不多了当然还有很多功能没有支持,因为我们一共也就写了差不多两百多行代码,系统的bash代码比我们的多得多了。但是,这已经足够帮我们理解很多需要理解的东西了,这才是写这个shell真正的目的。当然后面学习的过程中,我们也会再补充一些新的功能。在继续学习新知识前,我们来思考函数和进程之间的相似性:exec/exit就像call/return⼀个C程序有很多函数组成。⼀个函数可以调用另外⼀个函数,同时传递给它⼀些参数。
2026-05-21 17:46:03
407
原创 关于论文《FLUSH+RELOAD:一种高分辨率、低噪声的L3缓存侧信道攻击》的理解
CPU缓存主要了是为了缓和cpu和主存之间的一个速度差异,根据局部性原理,可以把主存中要频繁访问的部分数据副本存放在高速缓存中,然后当CPU需要读写数据时,就优先去cache中查找,如果cache命中,那就直接从cache中获取到数据了,就不需要去访问速度较慢的内存了。攻击者的测量会被干扰,两者同时访问,不过谁触发了数据的加载(内存放入cache),攻击者测到的结果都是长时间(cache未命中),就会判定为受害者未访问,但事实是两者同时在访问。然而,在真实的攻击场景中,该攻击的效果取决于系统调度器。
2026-05-17 15:46:36
572
1
原创 【Linux系统编程】进程控制(三)——进程程序替换
比execvp多了一个e那它又有什么不同呢?我们看到它在后面又多了一个参数,也是一个char*数组,名为envp我们之前环境变量那篇文章,学习main函数的第三个参数,不就和它一样嘛所以,这里第三个参数,使得进程可以显式传递新环境变量数组,不继承父进程环境那下面就修改代码继续演示这个接口:上面我们演示的都是重新替换执行系统的一些命令,当然程序替换也可以执行我们自己写的程序。比如我们现在新写一个C++程序:然后编译生成可执行程序——mycmd。
2026-05-12 18:28:01
406
原创 【Linux系统编程】进程控制(二)——进程等待
那未来通过这个status,我们如何判断一个进程 是正常退出,还是异常终止呢?🆗,只要终止信号部分(最低7bit)为0,那就表示是正常退出(所以上面我们看到并没有0号信号)那正常退出的话,结果正确还是错误呢,如果错误,是什么原因呢?那此时通过退出码(低16位的高8位)就可以知道!退出码为0,程序执行成功;非0,执行出错,不同的错误码对应不同的出错原因。如果终止信号非0,那就代表进程异常终止,此时退出码无意义!总结:(完美!下面修改代码来演示上面的三种场景:首先把终止信号也打印出来。
2026-04-27 18:08:28
387
原创 【Linux系统编程】进程切换与进程调度
CPU按优先级调度的时候,就从运行队列中找到queue数组,找到对应下标的链表(本质是链式结构的队列),从中就可以拿到队头进程的task_struct(同一队列中的进程优先级一致,相同优先级的进程按照FIFO规则进行排队调度)。不会的,我们上面说了:我们通过NICE值修改进程的优先级,那么就在重新入队列(入到过期队列)的时候加上这个NICE值,得到新的优先级,换到过期队列中它对应的优先级的队列中。因为我们一旦修改了某个进程的优先级,比如改的值更小了(优先级更高了),此时他会抢占到优先级比它低的进程前面吗?
2026-04-11 11:41:25
388
原创 关于论文《使用 FLUSH+RELOAD 缓存侧信道攻击恢复 OpenSSL ECDSA 的随机数》的理解
这篇论文干了什么?用FLUSH+RELOAD攻击OpenSSL的ECDSA签名,恢复了随机数k,拿到了私钥为什么能成功?因为OpenSSL的实现里,k的每个比特会影响程序走哪个if分支,分支对应不同内存地址,FLUSH+RELOAD能探测到我知道了这种缓存侧信道攻击是怎么做的,后面我是要研究如何防御这种攻击的!
2026-04-05 16:57:48
664
1
原创 2026年3月远程软件性能横评:ToDesk、向日葵、RayLink多维度实测分数揭晓
现在跨地域协作越来越普遍,个人设备也越来越多,选一款流畅、安全又好用的远程控制工具,已经成了刚需。本次测评不堆参数、不玩虚的,基于长期真实使用体验,实测ToDesk、向日葵、RayLink三款热门产品,从界面、操作、画质等多核心维度入手,客观分析各款优劣,给大家一份实测分数结果和不踩坑的选择指南。
2026-03-04 16:56:02
10881
61
原创 【MySQL】视图
那如果我们修改了视图,会影响基表中的数据吗?我们来试一试(和对表的操作一样,前面都讲过了)比如,我们把emp表中SMITH的姓名改成smith然后我们来看基表emp能够看到它也变成了小写,即修改视图数据是会影响基表的。
2026-02-26 20:32:51
975
原创 从“祖传代码”到标准工程:飞算JavaAI专业版三剑客,拯救了我的订单模块
Java整洁器先让代码达到“可工作”状态。文档生成器进而让项目达到“可理解”状态。单元测试生成器最终让项目达到“可信任”状态。这三者结合,完美解决了项目维护和交付的核心痛点。相比于GitHub Copilot(以补全见长)或通义灵码(免费版功能有限),飞算JavaAI这种深度集成、面向全链路工程化的思路,对Java开发者来说更具实用价值。而其每月仅9.9元的价格(远低于直接使用智谱4.7等底层模型20元/月的成本),提供的却是企业级的代码质量和开发体验,性价比极高。行动号召。
2026-02-26 19:25:36
325
原创 CANN开源仓Catlass模板库核心能力与编程实战
Catlass 模板库通过“分层架构+组件复用”,解决了昇腾算子开发“门槛高、效率低、性能难优化”的痛点。未来,随着昇腾 AI 处理器迭代,Catlass 将进一步支持稀疏计算、动态 Shape 等场景,成为 AI 原生开发的核心基础设施。CANN 与 Catlass 关系:图:CANN AI架构计算架构图CANN AI架构计算架构图展示其分层结构:上层为深度学习框架适配、创新算子与库、AI应用;
2026-02-26 19:24:19
6079
原创 CANN开源仓Catlass横模库适配自定义模型踩坑录
背景:某客户船脸识别模型含120个小矩阵乘(多头注意力),GPU上性能达标,昇腾NPU迁移后性能下降40%。问题分析:通过msprof定位到“内核启动开销占比52%”(小矩阵乘单次计算量小,频繁启动内核)。解决方案:用Catlass GroupGEMM替换循环调用GEMM,复用BlockMmad组件,一次内核处理所有小矩阵。效果:内核启动开销降至5%,整体性能提升38%(数据来源:客户验收报告)。图7:船脸识别模型迁移前后性能对比图CPU版本下,船名识别模型运行时间约为0.55秒;
2026-02-26 19:24:12
6049
原创 【MySQL】表的内连接和外连接
然后就可以引出外连接的概念了:如果把悬浮元组也保留在结果中,其它属性填上空置,那么这种连接就叫做外连接。如果只保留左表中的悬浮元组,那就叫左外连接;如果只保留右表中的悬浮元组,那就叫右外连接。所以,对于上面两张表,外连接的结果应该是这样的那么左外连接就应该是这样:只保留左表的悬浮元组嘛查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来所以左外连接的结果不就是题目想要的嘛。学生id为3,4的两名学生没有成绩,但是也把信息也是出来了。
2026-02-25 16:16:32
1519
原创 【MySQL】SQL里的“套娃”与“拼图”:子查询和合并查询
首先要知道10号部门的工作岗位是什么,然后要找的是工作岗位与这个(10号部门的工作岗位)相同的雇员的信息,包括姓名、岗位、工资、部门号,但是要求雇员不能是10号部门中的。我们前面的文件已经做过简单的了解了,这个文章我们正式来学习它。那同样的,我们说过很多遍了,笛卡尔积中通常是有很多的无意义数据的,比如SMITH这个人,他所在的部门是确定的,那他与tmp表中其它部门的信息组合是无意义的。是30号部门的员工中的最高工资,因为要比30号部门的所有员工工资高嘛,那比部门中最高工资高,自然就比所有员工工资高了。
2026-02-23 20:24:55
1926
4
原创 【MySQL】SQL里的“连连看”:从笛卡尔积到自连接
前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够。先来复习一下我们之前学过的基本查询,做几道题。
2026-02-14 11:58:14
880
1
原创 【MySQL】数据处理的瑞士军刀——常用的内置函数(下)
这样我们存入的就不是真正的密码,而是密码的MD5 值。不论密码多长,最终得到的都是一个32位等长的字符串。当然MD5() 函数虽然因其安全性问题不再适用于安全领域,但在快速校验、去重、生成标识等非对抗性场景中仍有实用价值。
2026-02-11 21:29:07
664
原创 【MySQL】数据处理的瑞士军刀——常用的内置函数(上)
MySQL提供了数百个内置函数,涵盖数据处理、计算、转换、分析等各个方面。这些函数就像SQL的"瑞士军刀",让数据处理变得异常强大!前面的文章中我们以及学习了其中的聚合函数,这篇文件再来讲解一些其它的常用内置函数。
2026-02-10 15:42:52
1045
原创 【MySQL】数据分析双剑客:聚合函数 与 group by子句的完美搭配
这样做其实存在一个逻辑错误,我们先按部门分组,然后一个部门中又按照岗位分组,最终分出来的这个组中,它们的所属部门一定是一样的,并且岗位是一样的。假设有一个销售表,包含每个员工的销售额。拆分成了多张子表,在这些子表内,我们就可以直接统计它的诸如最大值,平均值这些聚合的统计,不就变成上面我们一开始学的内容了)。根据部门编号去分组,由于有多个不同的部门(对应多个不同的部门编号),所以最终就分成了多个不同的组(可以理解成把一张表。而在一组内的数据,它们的部门编号一定是一样的,那么就可以对他们使用聚合函数,
2026-02-01 18:27:08
1061
9
原创 【MySQL】增删查改的艺术——数据库CRUD完全指南(下)
本文介绍了SQL中UPDATE、DELETE和TRUNCATE操作的使用方法及注意事项。
2026-01-31 14:57:09
827
原创 【MySQL】增删查改的艺术——数据库CRUD完全指南(上)
CRUD是数据库操作的四种基本功能:Create(增)、Read(查)、Update(改)、Delete(删)。本文重点讲解Create和Read操作。
2026-01-26 21:05:20
1321
5
原创 【MySQL】表的操作
上一篇文章我们学习了库的各种操作,那建好一个数据库,在数据库里面我们就可以建表,然后对表进行各种操作,所以这篇文章——表的操作。
2026-01-07 14:14:05
1116
原创 【MySQL】库的操作
本文介绍了MySQL数据库的基本操作,主要包括创建和删除数据库的方法,以及数据库编码集和校验规则的相关概念。文章详细讲解了如何使用CREATE DATABASE和DROP DATABASE语句,并通过示例演示了操作效果。同时,深入解释了编码集和校验规则的作用,展示了如何查看和设置数据库的字符集及校验规则。通过具体实验对比了不同校验规则对数据查询和排序的影响,帮助读者理解校验规则的重要性。最后还介绍了查看数据库列表等常用操作。这些内容为MySQL初学者提供了基础但全面的数据库管理知识。
2026-01-06 14:28:40
903
原创 【MySQL】数据库基础
安装与卸载中,用户全部切换成为root,⼀旦安装,普通用户均能使用初期练习,mysql不进行用户管理,全部使用root进行,尽快适应mysql语句,后面学了用户管理后,再考虑新建普通用户我们上文已经简单提到过,MySQL是一种网络服务:MySQL 严格遵循客户端/服务器架构,那在我们当前的云服务器上,这两个角色分别是谁呢?就是这里的mysql和mysqld。mysql就是我们当前环境的数据库服务客户端,mysqld即为数据库服务的服务端。
2026-01-03 20:39:45
1347
原创 【C++11】lambda表达式(匿名函数)
该列表总是出现在 lambda 函数的开始位置,编译器根据[]来判断接下来的代码是否为 lambda 函数,捕捉列表能够捕捉上下⽂中的变量供 lambda 函数使用,捕捉列表可以传值或传引用捕捉,具体细节我们后面再细讲。函数指针的定义和书写比较复杂麻烦,仿函数又要定义⼀个类,也相对比较麻烦。函数体内的实现跟普通函数完全类似,在该函数体内,除了可以使⽤其参数外,还可以使⽤所有捕获到的变量,函数体为空也不能省略。,并且&混合捕捉时,后面的捕捉变量必须是值捕捉,同理=混合捕捉时,后面的捕捉变量必须是引用捕捉。
2025-12-31 20:26:52
994
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅