行业动态

Git、SVN、编译器为什么照常能跑:透明加密的进程白名单拆解

发表时间:2026-11-05

装上透明加密之后,最让研发团队担心的问题不是文件会不会被保护,而是开发流程会不会被保护弄坏。代码文件全成了密文,Git还能正常提交拉取吗,编译器还能读到源码吗,SVN的working copy会不会损坏。这些问题问得对,因为答案取决于加密系统里一个核心机制的设计,进程白名单。文档图片

加密是按文件和进程两个维度做的

透明加密的基本逻辑前面说过:文件在落盘时加密,读入内存时解密,应用无感知。但一套加密系统如果对机器上所有文件、所有进程一视同仁,很快就会出乱子。操作系统自己的文件、杀毒软件的数据库、浏览器缓存、用户随手存的私人照片,这些都不该被加密,也未必需要保护。文档图片

所以成熟的产品用两个维度收窄范围。文件维度上,只有受控格式才加密,比如.c、.cpp、.py这类源码文件和图纸格式、文档格式。进程维度上,只有可信进程读写受控文件时走透明加解密,不在名单里的进程读到的是密文。

这两个维度叠在一起,才有了那句关键的承诺:合法用户在授权环境里工作完全无感,文件离开环境就是密文。

白名单是怎么判定一个进程的

进程白名单的判定不是简单看进程名字。改个名字把notepad.exe改成devenv.exe就冒充开发工具,这种事必须防住。

实际判定通常做几层。第一层看进程的可执行文件路径,程序必须从指定的安装位置启动。第二层看文件本身的特征,常见的做法是校验可执行文件的数字签名,签名验证过才认。更严格的会校验文件哈希,程序更新一个字节就不再匹配,需要管理员重新放行。文档图片

判定结果决定这个进程处在什么角色。可信进程读写受控文件时,过滤驱动自动帮它解密和加密,它拿到的始终是明文,工作方式和没装加密一样。非可信进程读同一个文件,过滤驱动不帮忙,它拿到的就是盘上的密文,打开是乱码。文件还是那个文件,差别全在进程身份上。

这套机制的直接效果是,员工把源码文件拷进U盘带回家,家里没装客户端,用记事本打开就是乱码;用微信把图纸传出去,对方收到的也是打不开的密文。泄密的最常见出口就这样被堵上了。

开发工具链为什么能正常工作

回到研发团队的担心。Git和SVN能正常工作,正是因为它们运行在可信进程的角色里。

以Git为例。git.exe在名单里,它读工作区的源码文件时,过滤驱动递给它明文,它正常计算差异、生成对象、写入.git目录;它写文件时,过滤驱动把内容加密落盘。开发者执行commit、pull、diff,全程感知不到下面发生的事。唯一需要注意的细节是.git目录里的对象文件要不要加密,多数企业选择让版本库目录也受控,这样整个仓库数据都出不去。文档图片

编译器同理。cl.exe、gcc、javac这些编译进程从源文件读到的是明文,编译能正常进行,产出的目标文件和可执行文件按策略决定是否加密。构建服务器是特殊场景,它上面的进程角色和开发机要分别配置, CI流水线能不能正常跑,是研发型企业选型时必须实测的一项。

会出现麻烦的反而是三类东西。一是各类IDE的缓存,比如索引文件、智能提示数据库,这些文件频繁读写、体积大,如果被纳入加密,索引速度会受影响,常见做法是把缓存目录加入排除。二是第三方开发工具自带的守护进程和辅助程序,名单里要配全,漏一个就出现"编辑器正常但构建工具读不了"这种古怪现象。三是和外部系统交换数据的场景,比如把构建产物发布到内部制品库,制品库服务如果部署在受控机器之外,就要单独考虑。

白名单的边界和代价

白名单机制很有效,但它有三个绕不开的特点,评估产品时要把这三点问清楚。

第一,名单是运维对象。公司要上新工具、开发者要装新版本的编译器,可执行文件变了,哈希对不上,就需要管理员放行。放行流程如果太慢,一线会绕过流程用旧版本,反而引入风险。好的产品提供签名级放行和批量策略,把这类运维成本压低。文档图片

第二,白名单只管"谁能正常读",不管"可信进程把数据写到哪"。一个可信进程如果有联网能力,理论上可以把明文内容通过网络发出去。所以白名单之外还要有网络外发管控,两条机制配合才完整。只看白名单就以为万事大吉,是选型里常见的误读。

第三,判定逻辑本身可能被利用。如果判定只看进程名,冒充就是可能的。所以判定强度直接决定机制的可信度,路径加签名加哈希的多重校验是必要的,这也可以作为产品对比时的一项硬指标。

安秉网盾在研发环境落地的做法是把这两层分开谈:驱动层透明加密负责文件本身的密文化,进程白名单负责保住开发流程的原样运转,外发管控负责封住网络出口。三件事各管一段,缺哪一段,研发团队要么被加密卡住干活,要么被泄密钻了空子。评估的时候,把公司实际用的工具链列出来,在测试机上全部过一遍,比看任何功能清单都管用。

本文来源:360安全网,信息安全平台

主笔专家:张燕飞‌

责任编辑:编辑部-方一诺

最后更新时间:2026年11月05日