首页
学习
活动
专区
圈层
工具
发布
综合排序丨最热优先丨最新优先
时间不限
驱动层透明加密之外的三层补位
驱动层透明加密解决了一个边界清晰的问题:文件作为字节流离开授权环境后不可读。但把它放到真实的企业数据流里看,这个边界会立刻暴露出两侧的空隙。 本文围绕加密内核展开的三层补位——授信判定、密钥时序与外发出口——以及每一层为什么不能由加密引擎本身代劳。 一、授信边界:零信任模型如何替换“进程白名单”驱动层的进程授信机制(哈希、签名、路径的组合比对)回答的是一个静态问题:这段代码是不是已知的可执行体。 这些事件不经过常规的文件 I/O 审计路径,因为加解密在过滤驱动内部完成,应用层没有任何感知。这意味着加密业务专项审计必须由加密内核本身产出一份日志,并与通用审计在时间戳和文件标识上对齐。 驱动层透明加密的系统价值,不在于它单独能挡住多少种泄露路径,而在于它提供了一个稳定的密码学基座,使得授信判定、密钥时序和外发出口这三层补位有一个共同的信任锚点:文件字节本身携带了策略元数据,任何补位层都只需围绕这个锚点追加控制逻辑
重庆数安
2026-10-21
1390
标签:
驱动层透明加密和应用层加密区别是什么?评审文档加密产品时,先问一句:你的加密跑在内核态还是用户态?
加密跑在应用层还是驱动层,决定了覆盖面、安全强度、维护成本,甚至决定了三年后这个系统还能不能用。 一、原理:拦截层加在哪里应用层加密(钩子加密)跑在用户态(Ring3),通过Hook挂到Word、CAD这些目标程序上,拦截它们的读写API:保存时加密,打开时解密。它的思路是"盯着程序"。 驱动层加密跑在内核态(Ring0),在Windows文件系统驱动栈上插入一个过滤驱动。 二、评审对比表对比维度应用层加密驱动层加密工作层级用户态(Ring3)内核态(Ring0)覆盖范围仅已适配的程序所有程序、格式无关新程序/程序升级需重新适配,可能漏自动覆盖未适配程序明文落盘照常加密临时明文依赖临时文件整体解密 收个尾驱动层和应用层加密的区别,记住一句话就够了:一个管文件,一个管程序。程序会变、版本会升、新工具会冒出来,只有管文件的方式才跟得上变化——但管住了文件,别忘了管行为。
企业安全-域智盾
2026-10-28
890
标签:
驱动层透明加密的系统级设计:拦截语义、密钥封装与实现代价
IRP_MJ_SET_INFORMATION 中的文件长度变更(EndOfFile)直接与加密头的存在耦合:磁盘上的密文文件比其逻辑明文多出一个加密头,任何截断或扩展操作都必须在驱动层进行偏移量换算,否则应用看到的大小与磁盘上的实际字节数不一致 缓存泄露或过期不释放,是驱动层密钥管理中最典型的内存安全风险。四、受信进程判定:不是“认进程名”,而是“认代码身份”驱动层看到的是 IRP,而不是发起 IRP 的“意图”。 如果一个受信进程被 DLL 注入或远程线程劫持,过滤驱动仍然会将明文递交给这个被污染的进程上下文。这是驱动层方案与 EDR 类行为监控方案之间的天然分工缝隙。 这已经超出了单纯的文件加密范畴,进入了终端身份与密钥绑定的交叉领域。七、能力的边界:驱动层透明加密不做什么技术上的诚实性要求明确这套机制的能力半径。 驱动层透明加密路径,其技术内核可以概括为一组精确的工程决策:在 Minifilter 的 IRP 回调链中选择正确的拦截点,用自包含的加密头承载密钥元数据,以数字信封结构分层保护 DEK,并通过受信进程指纹和离线票据将
重庆数安
2026-10-21
1470
标签:
通过OpenSSH建立二层和三层加密隧道
使用SSH隧道的优点: 不需要安装和配置额外的软件 使用SSH认证并自带加密,不需要使其它VPN软件一样配置共享密钥或者证书 兼容性强,可以建立二层隧道或三层隧道,所有3/4层协议如:ICMP、TCP/ ,tun是模拟三层网络设备,收发的是IP包,无法处理以太网数据帧。 一、ssh server端配置 首先要使用ssh的二层和三层隧道,尽量保证系统差别不要太大,我这里两边都是oracle linux 8,SSH版本更新到最新。 三、二层隧道配置 由于linux中允许为tap设备设置ip,所以二层隧道和三层隧道也可以完全一样的进行配置。 86字节的文件,2048位的私钥可以加密小于214字节的文件。
用户2323866
2021-06-23
6.1K0
标签:
3.5 Windows驱动开发:应用层与内核层内存映射
PEB得到进程参数》中我们通过使用KeStackAttachProcess附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我们将实现一个更加有趣的功能,在某些情况下应用层与内核层需要共享一片内存区域通过这片区域可打通内核与应用层的隔离 3.5.1 应用层映射到内核层先来实现将R3内存数据拷贝到R0中,功能实现所调用的API如下:调用IoAllocateMdl创建一个MDL结构体。这个结构体描述了一个要锁定的内存页的位置和大小。 总的来说,这个函数是一个很好的实现,它遵循了内核驱动程序中的最佳实践,包括对内存的安全处理、分块复制、错误处理等。 SafeCopyMemory_R0_to_R3函数则用于将一个内核层中的缓冲区写出到应用层中,SafeCopyMemory_R0_to_R3函数接收源地址SrcAddr、要复制的数据长度Length以及目标地址 它属于Windows内核API的一种,与用户态的VirtualAlloc函数相似,但是它运行于内核态,可以分配不受用户空间地址限制的虚拟内存,并且可以用于在驱动程序中为自己或其他进程分配内存。
王瑞MVP
2023-11-16
1.7K0
标签:
3.5 Windows驱动开发:应用层与内核层内存映射
PEB得到进程参数》中我们通过使用KeStackAttachProcess附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我们将实现一个更加有趣的功能,在某些情况下应用层与内核层需要共享一片内存区域通过这片区域可打通内核与应用层的隔离 3.5.1 应用层映射到内核层 先来实现将R3内存数据拷贝到R0中,功能实现所调用的API如下: 调用IoAllocateMdl创建一个MDL结构体。这个结构体描述了一个要锁定的内存页的位置和大小。 总的来说,这个函数是一个很好的实现,它遵循了内核驱动程序中的最佳实践,包括对内存的安全处理、分块复制、错误处理等。 与上方功能实现相反SafeCopyMemory_R0_to_R3函数则用于将一个内核层中的缓冲区写出到应用层中,SafeCopyMemory_R0_to_R3函数接收源地址SrcAddr、要复制的数据长度 它属于Windows内核API的一种,与用户态的VirtualAlloc函数相似,但是它运行于内核态,可以分配不受用户空间地址限制的虚拟内存,并且可以用于在驱动程序中为自己或其他进程分配内存。
王瑞MVP
2023-11-17
1.5K0
标签:
Linux驱动开发新手必读 | 二、LED子系统——硬件驱动层
二、LED子系统——硬件驱动层 上篇文章我们了解了子系统的框架,下面我们来分析驱动框架中每层的实现以及作用。 image-20230417084033734 在LED子系统中,硬件驱动层相关文件在包括:kernel/drivers/leds/ 目录下,其主要的函数有:led-gpio.c、led-xxx.c,其中 在硬件驱动层需要与其进行关联,遂在此介绍。 4、回调函数分析 硬件驱动层,肯定包括最终操作硬件的部分,也就是上面提到的一些回调函数,属于我们驱动工程师开发的内容。 5、总结 上面我们了解了硬件驱动层的实现流程以及相关数据结构,总结来看: 5.1 数据结构之间的关系如下 LED子系统-LED数据结构.drawio 5.2 函数实现流程如下 gpio_led_probe
董哥聊技术
2023-08-29
2.3K0
标签:
驱动开发:通过ReadFile与内核层通信
驱动与应用程序的通信是非常有必要的,内核中执行代码后需要将其动态显示给应用层,但驱动程序与应用层毕竟不在一个地址空间内,为了实现内核与应用层数据交互则必须有通信的方法,微软为我们提供了三种通信方式,如下先来介绍通过 ,此时应用层调用ReadFile,WriteFile函数进行读写时,在驱动内会自动触发 IRP_MJ_READ 与 IRP_MJ_WRITE这两个派遣函数,在派遣函数内则可以对收到的数据进行各类处理。 ,应用层还没有介绍,在应用层我们只需要调用ReadFile函数当调用该函数时驱动中会使用DispatchRead派遣例程来处理这个请求,同理调用WriteFile函数则触发的是DispatchWrite write_buffer, strlen(write_buffer), &write_length, 0); system("pause"); CloseHandle(hDevice); return 0;}使用驱动工具安装我们的驱动 ,然后运行该应用层程序,实现通信,效果如下所示:图片
王瑞MVP
2022-11-20
8230
标签:
驱动开发:通过SystemBuf与内核层通信
内核层与应用层之间的数据交互是必不可少的部分,只有内核中的参数可以传递给用户数据才有意义,一般驱动多数情况下会使用SystemBuf缓冲区进行通信,也可以直接使用网络套接字实现通信,如下将简单介绍通过SystemBuf 实现的内核层与应用层通信机制。 内核与应用层传递结构体,实现应用层用户传入一个结构体到内核,内核处理后返回一段字符串。 内核代码如下,代码已经备注。 struct _DEVICE_EXTENSION { UNICODE_STRING SymLinkName; } DEVICE_EXTENSION, *PDEVICE_EXTENSION; // 驱动关闭提示 // 设置操作的字节 IoCompleteRequest(pIrp, IO_NO_INCREMENT); // 完成IRP,不增加优先级 return Status; } // 驱动入口
王瑞MVP
2022-12-28
6950
标签:
驱动开发:通过ReadFile与内核层通信
驱动与应用程序的通信是非常有必要的,内核中执行代码后需要将其动态显示给应用层,但驱动程序与应用层毕竟不在一个地址空间内,为了实现内核与应用层数据交互则必须有通信的方法,微软为我们提供了三种通信方式,如下先来介绍通过 ,此时应用层调用ReadFile,WriteFile函数进行读写时,在驱动内会自动触发 IRP_MJ_READ 与 IRP_MJ_WRITE这两个派遣函数,在派遣函数内则可以对收到的数据进行各类处理。 ,应用层还没有介绍,在应用层我们只需要调用ReadFile函数当调用该函数时驱动中会使用DispatchRead派遣例程来处理这个请求,同理调用WriteFile函数则触发的是DispatchWrite strlen(write_buffer), &write_length, 0); system("pause"); CloseHandle(hDevice); return 0; } 使用驱动工具安装我们的驱动 ,然后运行该应用层程序,实现通信,效果如下所示:
王瑞MVP
2022-12-28
8750
标签:
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档