用户手册

GravesZIP v1.0.0 — 与应用程序内附带的手册相同

1. 关于本手册

本手册介绍 GravesZIP 1.0:它处理的格式、其加密的行为方式、它保护什么和不保护什么,以及如何使用界面的每个部分。手册中不描述任何无法使用的功能;已有计划但尚未实现的功能,在界面一节末尾如实列出。

2. GravesZIP 是什么

一款压缩包管理器:它把文件打包成压缩包,再把它们解压出来,并且可以对打包的内容加密。

压缩和加密由 SharpZipLib 完成,这是一个历史悠久的开源库,而不是在这里重新实现。GravesZIP 创建的压缩包是普通 ZIP 文件:未加密的压缩包用任何工具都能打开,包括 Windows 和 macOS 内置的压缩包支持。加密的压缩包可在任何支持 ZIP 的 AES-256 加密的程序中打开——7-Zip、WinZip 等。有些内置的 ZIP 工具(包括 Windows 自带工具的较旧版本)不支持 AES,无法打开任何程序生成的加密压缩包;请使用 GravesZIP 或上述程序之一。

它不建立任何网络连接。参见隐私声明。

3. 格式

本版本处理 ZIP。

zip可读可写,包括 AES-256 加密的压缩包。

这就是全部列表,而且是特意保持简短。GravesMail 受密码保护的邮件就是以 ZIP 形式送达的,其他所有压缩工具都能读取 ZIP,而把一种格式做好,胜过把几种格式都只做一半。以后会增加其他格式;在此之前,本手册不会声称支持它们。

7z、RAR、tar 及其他格式目前尚不支持。GravesZIP 不包含 7-Zip,也不需要安装它。

4. 打开受密码保护的邮件

来自 GravesMail 的受密码保护的邮件,会以名为 protected-message.zip 的附件形式送达。用 GravesZIP 打开它,然后输入发件人另行告诉你的密码——通过电话或短信,绝不会写在邮件里。

在里面你会看到:

message.html邮件本身。打开它即可阅读正文。
attachment-01, attachment-02, …随邮件附带的文件,使用中性的名称。

附件是特意重命名的。ZIP 加密每个文件内部的内容,但名称列表对任何持有该压缩包的人都是可读的,所以一个名为“layoff-list.xlsx”的文件,在有人输入密码之前就已经暴露了自己。真实名称记录在 message.html 中。

打开这类压缩包的过程不会有任何内容进入网络,GravesZIP 和 GravesWare 都绝不会看到密码。

5. 加密

为 ZIP 设置密码,就会用 AES-256 对其加密。

ZIP 支持两种加密算法,其中一种已被攻破。原始的 ZipCrypto 在普通硬件上几秒钟就会被已知明文攻击攻破,而大多数工具——包括 7-Zip——在你设置 ZIP 密码时默认使用的正是它。GravesZIP 绝不使用它。也没有相应的设置,因为在任何情况下它都不是正确的选择。

加密不涵盖的内容

ZIP 无法加密自身的文件列表。其中所有内容的名称、大小和时间戳,对任何持有该压缩包的人都是可读的,尽管内容本身不可读。这是格式的限制,而不是 GravesZIP 的限制,任何 ZIP 工具都无法做得更好。

如果名称本身就很敏感,请在打包之前重命名文件——GravesMail 写入 attachment-01 而不是真实名称,正是这样做的。

压缩包文件本身也有名称、大小和修改日期,这些都没有加密。一个名为“resignation-letter.zip”的压缩包,已经说得太多了。

GravesZIP 不会假装并非如此。如果你要求它创建隐藏文件列表的加密 ZIP,它会拒绝,而不是悄悄写出一个列表可读的压缩包。

6. 密码

忘记的密码无法找回

你不能,GravesWare 不能,任何人都不能。没有后门,没有恢复密钥,也无法重置。如果你丢失了密码,压缩包就没了。加密的意义正在于此。

如果你打算因为某样东西已经放进加密压缩包,就删除它的唯一副本:不要这么做。

选择密码

密码就是全部的安全所在。AES-256 不是薄弱环节,也永远不会是;容易猜到的密码才是。

长度胜过复杂度。几个互不相关的词,比一串短的替换字符更强,也更容易记住。“correct horse battery staple”远比“P@ssw0rd!”更难猜中。

不要重复使用你在别处用过的密码。压缩包存在的时间可能比你借用其密码的那个账户更长,也可能最终落到你没想到的地方。

GravesZIP 把密码保存在哪里

在内存中,仅在操作期间,别无他处。它绝不会写入磁盘。按照设计,没有“记住此密码”选项。

这种保护的局限,参见隐私声明。

7. 加密不是签名

密码能证明制作压缩包的人知道该密码。它不能证明对方是谁,也不能证明你收到的压缩包就是对方发送的那个——知道密码的人可以另做一个压缩包,用同一个密码照样能打开。

加密防止内容被读取。确认某样东西出自谁手是另一个问题,本程序不解决这个问题。

8. 安全解压

来自他人的压缩包是不可信的输入。

GravesZIP 不会在你选择的文件夹之外写入任何文件。有些压缩包存储了像“../../.ssh/authorized_keys”这样的路径,粗心的解压程序会按路径所指的位置写入。GravesZIP 会直接拒绝这类压缩包并停止解压,而不是跳过该条目,所以恶意压缩包不可能部分落地。

GravesZIP 不会扫描解压出的内容中是否有恶意软件。那是杀毒软件的工作。

9. 验证压缩包

“文件”>“测试压缩包”会解压每个条目,并对照随它存储的校验和进行检查,不向磁盘写入任何内容。它确认压缩包完好;对于加密压缩包,还确认密码正确。需要密码时它会询问,如果输入的密码不对,会再次询问。

结果用大白话给出:要么每个项目均已检查、压缩包完好,要么至少有一个项目与其校验和不符、压缩包已损坏。损坏的压缩包或许仍能用“解压所选项”取出部分文件;如果可以,请重新获取一份。

它不确认压缩包来自哪里或由谁制作。

GravesZIP 中“测试压缩包”的结果,报告每个项目均已检查、压缩包完好。
“测试压缩包”的结论,用大白话给出。

10. 界面

窗口

没有打开压缩包时,窗口提供“打开”和“新建压缩包”两个按钮。打开压缩包后,窗口列出其中的内容:每个项目的名称和文件夹、大小以及上次更改的时间,按字母顺序排列。行旁边的挂锁表示该项目的内容已加密。

每项压缩包操作都在“文件”菜单中,同样的操作也在右键菜单中:在窗口中任意位置右键点击,或按 Shift+F10 或菜单键。需要已打开压缩包或需要有选中项的操作,在条件满足之前呈灰色。

打开压缩包

“文件”>“打开”,或在命令行中传入压缩包的路径——把 GravesZIP 设为 .zip 文件的打开程序,或把压缩包拖到它的图标上时,就是这样做的。Microsoft Store 版本会把自己列入 Windows 中 .zip 文件的“打开方式”列表。

列表会立即显示,即使是加密压缩包也是如此。这不是安全漏洞:ZIP 的索引没有加密,所以名称、大小和日期对任何持有该文件的人都是可读的。

解压

“文件”>“全部解压”解压所有内容。“文件”>“解压所选项”只解压你选中的行——点击选中一行,按住 Ctrl 点击或按住 Shift 点击可选中更多。选中文件夹所在的行,会连同该文件夹内的所有内容一起解压。

无论哪种方式,都要选择文件的存放位置。加密压缩包在这时才询问密码,因为到这一步才真正需要密码。如果密码不对,GravesZIP 会告诉你并再次询问,而不是让整个操作失败。

在检查完每个条目的目标位置之前,不会写入任何内容。压缩包中只要有一条路径指向你所选文件夹之外,就会被整个拒绝,所以它不可能留下一半的内容。

测试

“文件”>“测试压缩包”。参见上文验证压缩包。

创建压缩包

“文件”>“新建压缩包”。添加你想要的文件和文件夹;每一项按名称列出,下方是它所在的文件夹。选择压缩强度,还可以选择设置密码。文件夹会整个添加,包括其下的所有内容,并在压缩包内保留自己的名称。

压缩提供三档设置,而不是九级刻度:

无文件按原样存储。速度最快,适合本身已经压缩过的内容——照片、视频或压缩包里的压缩包——对它们再压缩毫无收益,只会费时间。
普通合理的默认选项。
最高更小,更慢。相比“普通”,体积上的收益通常不大;多花的时间却不少。

要创建普通压缩包,请将密码留空。输入密码后会出现第二个输入框用于确认,因为密码无法找回:输错的密码会让压缩包从写入那一刻起就无法读取,事后也没有任何东西能告诉你。同时还会出现一条提醒:文件名仍然可读。

压缩包一写完就会打开,这样你可以亲眼看到里面放进了什么,而不必凭信任。

GravesZIP 中的“新建压缩包”对话框,已添加文件、选定“普通”压缩,并已输入和确认密码。
新建压缩包,已添加文件并设置密码。

关闭

“文件”>“关闭压缩包”。密码在这一刻就从内存中擦除,而不是一直留到程序退出。

键盘快捷键

在 Windows 和 Linux 上,这些快捷键使用 Ctrl;在 Mac 上使用 Command。

Ctrl+N新建压缩包
Ctrl+O打开
Ctrl+W关闭压缩包
Ctrl+E解压所选项
Ctrl+Shift+E全部解压
Ctrl+T测试压缩包
Shift+F10右键菜单(也可按菜单键)

菜单本身用 Alt 加带下划线的字母打开:Alt+F 打开“文件”,Alt+H 打开“帮助”。

尚未提供的功能

不解压而直接打开压缩包内的文件、向已有的压缩包添加文件,以及 ZIP 以外的格式。

11. 语言

GravesZIP 提供 55 种语言。在“帮助”>“语言”中选择;列表以各语言自己的文字列出每种语言,并标出当前使用的语言。

英语(包括英国和澳大利亚拼写)、西班牙语(西班牙和拉丁美洲)、法语、德语(包括瑞士德语)、葡萄牙语(欧洲和巴西)、意大利语、波兰语、土耳其语、越南语、印度尼西亚语、菲律宾语、荷兰语、瑞典语、芬兰语、罗马尼亚语、克罗地亚语、波斯尼亚语、塞尔维亚语(拉丁字母和西里尔字母)、马来语、斯瓦希里语、约鲁巴语、伊博语、乌兹别克语、希腊语、俄语、乌克兰语、简体中文、繁体中文(香港)、日语、韩语、泰语、印地语、孟加拉语、泰米尔语、旁遮普语、马拉地语、尼泊尔语、古吉拉特语、奥里亚语、泰卢固语、卡纳达语、马拉雅拉姆语、阿姆哈拉语、阿拉伯语(包括埃及阿拉伯语)、波斯语、乌尔都语、信德语和维吾尔语。

所选语言在 GravesZIP 重新启动后生效。这并不是在绕开某种限制:窗口在创建时读取语言,其从左到右或从右到左的方向也在那一刻固定下来,因此如果在窗口已经显示时更换语言,窗口就会只翻译了一半,而且方向也是反的。

在你做出选择之前,GravesZIP 使用操作系统的语言。

阿拉伯语、波斯语、乌尔都语、信德语和维吾尔语的界面从右到左排版。压缩包的内容不会镜像:像“docs/report.txt”这样的路径在每种语言中都保持原有方向,因为分隔符的含义是左边包含右边。任何文字的文件名和文件夹名在列表中仍能正确显示。

12. 无障碍功能

GravesZIP 在设计上就要让人不靠视力也能使用。

屏幕阅读器

每个可操作的控件都带有屏幕阅读器能够读出的名称,包括“关于”窗口中的文档面板。每次构建都会自动检查这一点,而不是靠人工查看:只要有控件无法被读出,构建就会失败。

键盘

菜单可用 Alt 加带下划线的字母打开,用方向键在其中移动。对话框用 Escape 关闭,其默认按钮响应 Enter。

语言菜单使用单选式条目,而不是下拉列表,因为屏幕阅读器会读出哪个条目处于选中状态。这样,盲人用户就能直接听到当前使用的是哪种语言,而不必自己去推断。

颜色与对比度

GravesZIP 使用 GravesWare 配色,有浅色和深色两个版本,跟随系统的浅色或深色设置。其中每一处文本都达到 WCAG AA 的 4.5 比 1 对比度标准;如果某次改动使任何一处低于该标准,自动测试就会让构建失败。没有任何信息是只靠颜色传达的:已加密的行带有挂锁图标,屏幕阅读器会读出“已加密”。

当系统设置为高对比度时,GravesZIP 会放下自己的配色,改用朴素的系统主题。你选择那些颜色是因为你需要它们,一个应用如果用自己的颜色盖过这一选择,只会让自己更难阅读。

尺寸

按钮和文本框的高度至少为 44 像素,这是指针、手指或不太稳的手都能舒适操作的最小尺寸。GravesZIP 在 Windows 上声明自己支持显示缩放,因此在 150% 或 200% 下依然清晰,而不会被拉伸得模糊。

13. 支持

GravesWare, LLC
support@gravesware.com

该地址也在“关于”页面上(帮助 > 关于 GravesZIP),那里还有一个“发送电子邮件给支持团队”按钮,可打开你自己的邮件程序,并已填好地址和你的版本号。在你发送之前,不会发出任何内容。

请说明你使用的是哪个版本(“关于”窗口中有显示)以及哪种操作系统。凡是涉及加密压缩包的问题,请不要发送压缩包或密码。