.maipdf 文件 + 系统级拒绝截屏 + 交付后仍可吊销
MaiPDF App DRM
iOS · Android · Windows · macOS · 加密 .maipdf 文件 + 系统级拒绝截屏 + 交付后仍可吊销
这份文档讲的是三条产品线里保护最强的一条:App DRM。前两条(在线分享、Secure Share)都跑在浏览器里,而浏览器从根本上无法拒绝系统截屏 —— 这是 App DRM 存在的理由。
一句话概括:文件本身成为保护措施。PDF 被加密成一个 .maipdf 包,只能在 App 里打开,只能在你允许的设备上、在你允许的时间内打开,而且 App 会要求操作系统直接拒绝截屏。

图 1:App 首页 —— 打开收到的受保护文件,或保护自己的文件
一、三个部件,各管一件事
理解这三样东西分别干什么,就很容易想清楚它的能力边界在哪。
① 容器:加密的 .maipdf 文件
你的 PDF 在离开你的电脑之前就用 AES-GCM 256 位加密好了。这个包里装着:许可证 ID、验证服务器地址、初始化向量,以及密钥的一半。另一半永远不会跟着文件走。
明文 PDF 从不写入读者的硬盘 —— 每次打开都是在 App 内存里解密。所以把这个文件转发给别人,转发出去的是一个上了锁的盒子,不是文档本身。
② 许可证:每次打开都验
打开次数、有效期、设备上限这些规则存在服务器上,不在文件里 —— 这就是为什么它们在文件交付出去之后依然生效。
这也是「吊销」能真正生效的原因:你切断访问权限,下一次打开就会失败,哪怕这个文件已经躺在别人的笔记本电脑上了。被吊销的读者会看到一条明确提示,说访问权限已被发送方收回。
③ 阅读器:拒绝被捕获
App 窗口在操作系统层面被标记为受保护,所以截屏或录屏拿到的是黑屏 —— 不是事后警告,是当场就拿不到。
阅读体验本身不受影响:页面完整清晰可见,没有任何遮挡物在中间晃。每一页都带一个无法关闭的可追溯水印。
二、防截屏:四个平台,四套原生机制
这是浏览器根本做不到的部分。网页没有任何办法拒绝系统级的截屏快捷键(比如 Windows 的 Win+Shift+S);而原生窗口可以要求操作系统把自己整个排除在捕获之外。
|
平台 |
实际使用的机制 |
|
Android |
窗口设置 FLAG_SECURE |
|
Windows |
通过 SetWindowDisplayAffinity 设置 WDA_EXCLUDEFROMCAPTURE |
|
macOS |
窗口的 sharingType 设为 none |
|
iOS |
内容通过一个系统会排除在捕获之外的图层渲染 |
【关键区别】这些是操作系统自己提供的能力,不是 App 在「检测」截屏然后做反应。所以第三方截屏工具、录屏软件撞的是同一堵墙。
挡不住什么(老实说)
- 拿相机对着屏幕拍。 没有任何软件能防住这个 —— 这恰恰是水印不允许关闭的原因:拍照拍下来的画面里,水印也在
- iOS 上正在录屏或投屏时,App 会把页面对读者本人也遮住,而不是让它继续显示在投屏画面上
- 需要读者装 App。 所以它适合高敏感度文件,不适合随手分享的场景
敌意环境直接拒绝运行
App 启动时会做设备完整性检查,在这些环境下根本不加载:越狱设备、已 root 的设备、模拟器;桌面端还包括虚拟机等可疑环境。原因很直接 —— 这些正是防截屏机制可能被绕过的地方。
三、保护一份 PDF:打包时定规则
所有规则都在打包时决定,加密在你自己的设备上完成,然后才上传。

图 2:DRM 主界面 —— 创建受保护文件、打开文件、管理许可证、追查泄露
可以设置的规则
|
规则 |
可选值 |
|
最大打开次数 |
1 以上任意数字,或不限 |
|
有效期 |
1 天、7 天(默认)、30 天,或自定义时长 |
|
受众 |
开放给任何持有文件的人,或按邮箱指定收件人 |
|
设备上限 |
开放受众时 = 这个文件的总设备数上限(服务端天花板 10,000);指定收件人时 = 每个收件人各自的设备上限(每人最多 100 台) |
收件人邮箱可以直接粘贴,换行、逗号、分号、空格分隔都行 —— 系统会自动去掉首尾空格、转成小写、去重。
【说明】没有水印开关,也没有批量上传:一次一个文件,并且永远带水印。这是刻意的设计。
四、许可证页面:交付之后的控制台
每一个受保护文件都有一个许可证页面。这里就是一份已经送出去的文档继续受你控制的地方。

图 3:许可证详情页 —— 次数、设备、有效期、打开记录一览
页面上能看到和能改的
- 打开次数 —— 已用和剩余,实时计数
- 设备上限和有效期
- 创建时间和最后阅读时间
- 设备绑定 —— 哪些设备打开过它,还有一个可以补充授权邮箱的输入框
- 打开事件 —— 谁打开的、什么时候、用哪台设备
- 复制许可证 ID,以及在你想让它停下来的时候吊销
没登录也能管
许可证查询框接受许可证 ID + 修改码的组合 —— 跟网页版那边「阅读码 + 修改码」是同一个思路。
五、追查泄露:照片之后唯一还起作用的手段
每一页都带一层很淡的平铺编码,和那一次打开的许可证与设备绑定。如果某一页被拍了照、又出现在了不该出现的地方,那串编码也在照片里。

图 4:Trace watermark —— 输入泄露截图上的编码,查出是谁打开的
怎么用
- 从泄露的截图或照片上读出那串编码
- 在 App 的 Trace watermark 里输入它
- 已登录 → 在你名下所有许可证里搜;未登录 → 用许可证 ID + 修改码代替
- 得到结果:读者、时间、以及那一次打开用的设备
【关键】水印是按每次打开生成的,所以同一份文件的两个读者 —— 甚至同一个读者打开两次 —— 拿到的编码都不一样。这意味着你定位到的不是「哪个文件泄露了」,而是「哪一次打开泄露的」。
六、App DRM 和在线分享怎么选
它们是两条不同的路线,不是同一个东西的两个版本。 大多数人两个都在用,只是用在不同的文档上。
|
在线分享(浏览器链接) |
App DRM(App 里的加密文件) |
|
|
读者要做什么 |
点链接就读,什么都不用装 |
需要装 App,然后打开文件 |
|
能设的规则 |
打开次数、有效期、邮箱或短信验证、访问记录、可替换文件 |
打开次数、有效期、设备绑定、指定收件人、交付后可吊销 |
|
截屏 |
挡不住 —— 浏览器没有这个能力,水印让截图可追溯 |
系统级拒绝,截出来是黑屏 |
|
最适合 |
覆盖面 —— 提案、宣传册,以及任何发给「你没法要求他装软件」的人 |
控制力 —— 高敏感度文件,值得让对方装个 App |
【选型】选择的判断标准其实很简单:你能不能要求对方装一个 App?
能 —— 且文件确实敏感,用 App DRM。
不能 —— 用在线分享,接受「挡不住截屏、但能追溯」这个现实。
七、诚实的限制
和任何单一控制手段一样,它只是一层。真正的做法是把它和打开次数上限、有效期、水印线索叠加使用,而不是指望某一个开关解决所有问题。
- 相机拍屏幕防不住 —— 所以水印不允许关闭
- 需要读者装 App —— 这本身就筛掉了一部分场景
- 读者必须能联网 —— 每次打开都要向服务器验证许可证
本文档内容依据 MaiPDF App 实际功能整理,配图为 App 真实截图。如有疑问:joe@pdfhost.online
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)