本机数据与备份
账本、设置与收到的授权,都加密存在你的机器上。换了或丢了电脑之后能找回多少,取决于事先做了哪些备份。
本机数据始终加密
本机的全部数据由一枚主钥加密,主钥由口令开启。账本条目、设置、待上链队列、身份登记、记录索引、收到的授权与条款文件,都用主钥派生的本机数据钥加密(XChaCha20-Poly1305)。锁着时全部封存;拿到这台机器文件的人,要有口令才读得到。
三类文件在主钥加密之外,因为它们本来就要给别人读,或要在开锁前读:
- 开锁前就要读的:密钥库本身(另有加密)、机器设置
machine.json、数据目录指针。 - 给别人看的导出件:记录包与记录包索引、授权文件、凭证、账本镜像、密钥文件、整机备份(整机备份用备份密码加密)。
- 别人交来的外来文件。
文件放在哪里
- 机器目录
- 存放密钥库、身份登记、机器设置与记录包索引。默认位置是
~/.zikaron-desk.d/;指针文件~/.zikaron-desk(一行绝对路径)可以把它指到别处。 - 数据目录
- 每个身份的每种角色一个,存放账本、设置、待上链队列、收到的授权等。
整机备份
一份备份文件恢复全部:这台机器上的所有身份和密钥、全部本机数据和设置。主钥、口令和错误次数只留在本机。
- 「设置 › 本机数据」的「导出备份…」:输入本机口令,设备份密码(至少 8 位)并再输一次,选保存位置,按「导出」。
- 文件名为
zikaron-backup-年-月-日.zikaron,同一天再导出即往后编号,旧的照旧保留。 - 写出后应用读回并打开一次核对,通过才提示「已导出备份:…」。
备份用 scrypt(N=262144、r=8、p=1)从备份密码派生密钥,再以 XChaCha20-Poly1305 加密。备份密码是打开备份的唯一钥匙,请另处记牢。
从备份恢复。「从备份恢复…」:选备份文件,填备份密码和本机口令,按「恢复」。本机的身份、密钥和数据整份换成备份里的,口令照旧;本机多出备份的内容随之被替换。这一步要么全部完成,要么保持原状。恢复后仍解读失败的旧文件,原样挪到机器目录的 set-aside 文件夹保存。
上次备份之后又多了账本条目或收到的授权时,提醒页显示「N 条未备份」,请再导出一次。
只剩助记词时
助记词找回的是密钥。条目文件存在本机,链上只有它们的指纹;所以只凭助记词,能找回的是链上读得到的数据;条目本身要靠整机备份,原文件要你自己保留。
取回账本
凭助记词、私钥或密钥文件重新导入一个身份时,「本机数据」页顶上出现红框「这个身份是还原来的:账本还没取回」;取回之前这个身份能读,写入暂停。取回方法:选一份整机备份,填备份密码,按「取回账本」。应用从备份里取出这个身份的账本,再与链上这把密钥的锚核对:
- 全部对上
- 链上的上链记录都在账本里,恢复写入。
- 链上有更新的条目
- 链上有几条上链记录是取回的账本里缺的,仍然只读。请找更新的那份备份再取一次。
- 与本机条目冲突
- 出冲突卡;按「取回并替换」后,本机原有的数据保留为「旧数据」,可以只读查看。
这样可以确保接着写下去的,始终是最新的那本账。
账本镜像
记录者的「本机数据」页有「导出账本镜像…」:把账本导出一份到指定文件夹,按 ZIKARON-backup/<地址>/<角色> 分层;同一文件夹里已有较早的镜像时,只补上新增的条目。镜像是给别的工具读的导出件,交给命令行 zikaron 的条目就从这里取,见命令行;恢复本机请用整机备份。
数据目录
- 更换数据目录…
- 只对这一次运行生效,下次启动回到这个身份自己的数据目录。
- 迁移到空文件夹
- 把数据目录搬过去,并改为这个身份的数据目录;旧处的文件原样保留,何时清理由你决定。
- 导入授权文件夹…
- 使用方批量导入一个文件夹里的授权条目文件。
- 对账
- 「高级选项」里的「立即对账」离线核一遍本机账本,通过即恢复写入。
同一个数据目录同一时间只有一个窗口写入,后打开的只能读,页顶显示只读提示条。
转为只读的几种情形
- 账本已移交
- 账本已交给新密钥,本机只能读。
- 账本已断链
- 账本检查发现断链。点「去恢复」,从整机备份恢复,或在「高级选项」里对账。
- 另一窗口正在写入
- 关掉另一个窗口后,重新打开这个数据目录(锁定再解锁,或重启应用)即可写入;也可以在这里继续只读。
- 还原的身份
- 取回账本之前只读,见上文。
备份要点
- 助记词抄在纸上,与电脑分开存放。
- 整机备份存在另一块磁盘上,备份密码另处记录。
- 原文件自己保留。账本记的是指纹,日后举证要出示字节一致的原件。