Skip to content

Latest commit

 

History

History
184 lines (138 loc) · 36.7 KB

ChangeLog.md

File metadata and controls

184 lines (138 loc) · 36.7 KB

VeriRandom ChangeLog

本文件是 VeriRandom 分支自有的更新日志,只记录本仓库对用户可见的改动,按版本发布时间组织。 与上游相关的三个文件边界见下方「本文件的边界」,请勿混用。

本仓库是 SecRandom 的开源分支,对外产品名为 VeriRandom。 本文件不被视为 SecRandom 官方更新日志,也不代表上游对任何改动的认可。


本文件的边界

文件 / 目录 归属 内容
ChangeLog.md(本文件,根目录) 本仓库 只放我们自己的用户可见改动,按版本发布时间组织,只追加
CHANGELOG/ 上游 随上游同步带过来的「核心」更新日志(CHANGELOG/<版本族>/<版本>/CHANGELOG.md)。不要为了记录本仓库的改动去改这里;上游同步时也不要覆盖或删除我们已发布的内容
DownStream_Change.md 本仓库 与上游分歧的登记册,供上游同步时逐条核对(文件级、技术级,「哪些改动必须活下来」)。它是工程台账,不是面向用户的更新日志

三者的关系:发布一个版本时,本文件写面向用户的条目;若该版本引入了与上游的分歧,那些分歧必须已经在 DownStream_Change.md 里登记。 本文件出现、而 DownStream_Change.md 没有的分歧 = 未完成的改动。

维护约定

  • 只追加:已发布的条目不再改写或删除。写错了就在同一版本下补一条「更正」,不要回改历史。
  • 一个版本一个 # 标题,标题下按下面的固定小节组织;没有内容的小节直接省略。
  • 版本号沿用上游的 vX.Y.Z 与阶段命名(alpha.N / beta.N / release.N)。同一个上游版本由本仓库发布多次修订时,追加 -fork.N 区分。
  • 条目请写用户能看懂的效果,不要写实现细节(实现细节属于 DownStream_Change.md)。
  • 标识归属见 DownStream_Change.md §7:产品身份类(包名、verirandom://、VeriRandom.Desktop.exe、VeriRandom.package.json、单实例名、数据目录、安装目录等)为 VeriRandom 自有;代码级内部标识(命名空间、项目与文件夹名、avares://SecRandom/...、证明文件格式、上游服务与外部契约)仍保持 SecRandom
  • 上游同步后,把上游带来的改动的用户可见部分摘要进本文件对应版本,并注明来自上游;完整上游日志仍以上游 CHANGELOG/ 为准。

小节模板

# vX.Y.Z - <Codename> <阶段> N

<可选:一句话版本说明>

## 🚀 主要更新
## 💡 功能优化
## 🐛 修复问题
## ⚠️ 需要注意
## 🙏 致谢

⚠️ 需要注意 用来集中放置行为变更、默认值变更、以及会向本仓库以外发送数据的功能说明。


v3.0.0 - VeriRandom release 1 2026年10月04日

🚀 主要更新

  • 新增 抽取证明双链:普通模式的证明改为「Up 链 + Own 链」两个文件。Up 链是面向上游服务的兼容记录(不再携带信标数据),信标改由「时间戳周期 + 预设」在验证时重新获取脉冲并重新派生种子来核对;Own 链是自有参考声明,每个节点绑定对应的 Up 节点,记录信标脉冲索引与同一脉冲内的种子递增因子,并先于 Up 链申请时间戳,用于说明它不是抽取完成后的补加。Own 链只用于参考声明,不参与公平性判定
  • 新增 外部信标熵源(普通模式,默认关闭):开启后抽取种子来自已发布的 NIST Beacon 脉冲而不是本机随机数,主持人无法注入自定义熵;同一脉冲内用从 0 开始、公差为 1 的序号保证不重复;信标不可用时本次抽取直接失败,不会退回本地随机数
  • 新增 时间戳服务开关(默认开启):每份证明会向沃通 TSA 申请 RFC 3161 第三方时间戳,只发送证明摘要;现在可以在「抽取验证」设置页显式关闭
  • 新增 首次运行引导中的独立 SECTL 说明与跨境数据传输须知,并把这些说明的确认改为由你主动选择
  • 新增 抽取验证页的「证明可信度评分」,由你选择「您所信任的来源方」(信标提供方 / 时间戳证明者 / SECTL 服务器 / 社会见证),程序对最新一份普通模式证明按证据覆盖度算分
  • 新增 配置分离签名(安全设置「防篡改」区块):可由你自己的可信设备用私钥签发一份策略签名,抽取机只携带公钥,因此能验证策略但无法自行签发;界面会显著展示公钥指纹并要求与可信设备逐字核对

💡 功能优化

  • 隐私默认值收紧:Sentry 遥测上传与在线状态上报在本分支中默认关闭。这两条通道的数据仍然发往 SecRandom / SECTL 的基础设施(Sentry DSN 与 SECTL 端点未改动),因此所有暴露这些开关的界面都会明确说明「开启后数据发往 SecRandom 与 SECTL,而不是本分支」
  • 关于页按本仓库 README 重组:把原先展示的上游作者、组织与其社区入口整体收进一个默认折叠的区块(并注明这些均属于上游项目),在原位置改为本分支自己的社区入口(QQ 群、邮箱、哔哩哔哩、Issue、贡献指南,全部指向本仓库);关于页横幅改为本分支自有资源名,资源补齐前显示带说明的占位框;贡献者名单改为本仓库与上游合并展示,并且不再从网络预加载头像(避免第三方图片进入渲染路径),整行点击跳转到对应 GitHub 主页
  • 新增证明可信度评分(抽取验证设置页):由你选择「您所信任的来源方」(信标提供方 / 时间戳证明者 / SECTL 服务器 / 社会见证),程序对最新一份普通模式证明按证据覆盖度从满分起算分——证明链自身完整性不通过时直接置零;时间戳与信标脉冲发布时间间隔超过 60 秒(属上一周期)时按规则减半,超过 110 秒(超出容忍范围)时扣四分之三;社会见证需要你填写记忆中的大致抽取时间与时间置信度,误差在置信度窗口内不扣分
  • SECTL 相关确认改为可选、按需补签:首次运行引导中的 SECTL 独立说明不再阻塞流程;当你之后切换正式公证模式,或开启遥测 / 在线状态时,才需要通过确认弹窗补签,拒绝则回退该操作
  • 高危确认弹窗强制阅读:切换正式公证模式的确认弹窗与 SECTL 补签弹窗,其确认按钮在显示满 5 秒且必选勾选完成前保持禁用
  • 正式公证模式说明重写:明确该功能由上游 SecRandom 提供、名称不代表本分支对其法律性质或效力的评价、数据将提交至 SECTL 服务器,并保留「它不能证明现实名单本身完整真实」等限制说明
  • 证明链异常会显著提示:当服务端在抽取回执里报告本地证明链异常(例如链被删除后重建)时,抽取验证页会单独高亮提示,不再混在计数摘要里
  • 出境闸门收口:未同意跨境须知时,SECTL 账号的令牌刷新与公告拉取都不再发出请求;抽取验证页的抽取上传选项旁会直接给出补签入口,补签成功后当场解锁,不必离开页面重进

🐛 修复问题

  • 修复 无 tag 仓库的构建:仓库尚无任何 tag 时,构建脚本的版本解析不再因 git describe 失败而中断,改为按 PluginApiVersions.Current 的主号回退(如 v3.0.0-dev)
  • 修复 Android 无签名密钥时的构建:未配置发布密钥时降级为调试签名并产出 -unsigned.apk,且该产物会被排除在发布输出与清单之外,不会误发到正式渠道
  • 修复 安装版启动时字体与图标加载失败导致崩溃:桌面资源加载器对程序集名的比较不再区分大小写,此前部分安装布局会因此加载不到内置字体而无法启动
  • 修复 Android 发布密钥生成脚本:脚本此前会因 keytool 把提示写入标准错误而中断(且中断发生在密钥写盘之前,等于每次都失败且不留产物);默认输出目录也改为锚定在仓库根,不再跟着调用者的当前目录走

⚠️ 需要注意

  • SECTL 服务器位于境外:SECTL 当前的服务节点在德国巴伐利亚邦阿多特多夫。因此首次设置中新增了独立的跨境数据传输须知,并把它作为所有可能向 SECTL 发送数据的功能的总闸门
  • 不勾选跨境须知 = 强制禁用所有 SECTL 相关功能,包括抽取证明提交、正式公证、在线状态与使用统计上报、版本使用量上报、SECTL 账号登录与其心跳、以及账号云备份。这是可选路径而非阻塞步骤,你可以在之后需要这些功能时再补签,补签必须经过确认弹窗
  • 抽取上传改为无默认的二选一:普通模式抽取完成后自动向 SECTL 申请签名的行为不再是默认开启,而是没有任何预设值的主动选择;未选择时一律不上传,证明只保存在本机
  • 自动更新在本分支中已关闭。本分支的更新发现仍指向上游 SECTL/SecRandom 的元数据,因此不会去消费上游的二进制产物。更新功能的完整实现被保留,将来本分支有了自己的元数据与发布服务器后可以一行策略开关重新启用
  • 上游的更新日志不在本文件。随上游同步带来的「核心」改动记录在 CHANGELOG/,完整历史以上游为准
  • 启用「正式公证」模式,或启用遥测 / 在线状态上报时,数据会离开本机并提交至 SECTL 服务器;SECTL 为独立主体,适用其自身的服务条款与隐私政策,本分支不参与该服务关系
  • 「仅验证码(TOTP)」这种验证方式在本分支不可用:验证码在没有密码时无法验证,除非额外保存一份明文种子,而这个取舍不可接受。因此本分支不再支持"只用验证码"验证;USB 绑定与密码 + 验证码不受影响
  • 本版本的版本号为 v3.0.0,与上游 SecRandom 的版本号体系相同。两者是不同的仓库与不同的发布产物,请以 WinFunan/VeriRandom 的发布页为准

v3.1.5 - Nonomi (十六夜野宫) VeriRandom release 2 2026年10月11日

本版本跟随上游 SecRandom v3.1.5(Nonomi) 同步。标注「来自上游同步」的条目是上游带来的改动,完整上游日志见 CHANGELOG/;本分支与上游的差异见 DownStream_Change.md。

🚀 主要更新

  • 来自上游同步:新增 集控,可以接入自部署的集控平台对多台机器统一下发点名/抽奖
  • 来自上游同步:新增 插件扩展能力,插件现在可以自行呈现抽签结果、插入界面、叠加内容、调整配色、使用私有存储、查询名单与奖池、弹出通知与对话框、提供多语言文案、订阅宿主事件、上报运行诊断,并在退出时执行收尾清理
  • 来自上游同步:新增 账号云备份(登录 SECTL 账号后可把备份分片上传到个人云存储,支持自动备份与保留数量)、移动端账号登录,以及平板(iPad / Android 大屏)使用与桌面一致的布局与页面

💡 功能优化

  • 分离签名的公钥指纹现在也显示在抽签主界面:启用分离签名后,点名页左上角会直接显示「已锁定 · 指纹 …」,鼠标悬停给出签名者与签发时间。指纹是逐字核对签名者身份的唯一手段,此前只在安全设置页显示,日常抽签的人看不到它
  • 闪抽新增两个可选开关(都默认关闭):① 「闪抽结束后归还焦点」(浮动窗口设置页 · 交互组)在你按下快捷键或点击悬浮窗时记下当时的前台窗口,闪抽窗口关闭后把焦点还给它——你通常正在别的程序里打字,没有这个功能光标就丢了;该功能目前仅 Windows 支持,其它平台上该开关不生效。② 「抽签前预取信标脉冲」(抽取验证页 · 信标组)在抽签开始时就异步获取信标脉冲,把网络往返藏在抽签动画里;只预取脉冲本身,序号仍在抽签时预留,所以未被用掉的预取不会消耗序号、也不会在证明链上留下缺口
  • 来自上游同步:抽取设置的「动画样式」统一改用新的选择器,内置动画与插件动画在同一个下拉里选择;插件被卸载或禁用时,原先选中的插件动画会在启动时自动恢复为内置动画,不再出现空白的「动画样式」;宿主交给插件的结果文案与内置结果卡完全一致;切换界面语言后插件注册的文案会立刻刷新,不需要重启;同一标识的插件窗口会被复用,宿主没有叠加层时自动回落为独立窗口;插件的候选项过滤、结果后处理与结果呈现即使出错也只跳过它自己那一步并记录日志,抽签本身照常完成

🐛 修复问题

  • 来自上游同步:修复导出数据时日志被占用:正在写入的当前日志现在也能正常导出,「导出全部数据」不再因此失败,诊断数据里也不会再缺少日志

⚠️ 需要注意

  • 安全防护开关已不在 settings.json 中(随本次上游同步带来):防护总开关、因素选择、受保护操作、Sudo 与防篡改校验改为存放在 data/config/security/settings.json 的独立加密文件里,旧版明文会在首次运行时自动迁移并从 settings.json 删除。这样做是为了让「改一下文件就能关掉防护」不再可行——代价是该目录下的文件可被读取者伪造,边界与凭据文件相同
  • 集控是远程控制入口:本机是否接受远程控制由设备本地的开关决定,保存在 data/config/control/node-state.json,导入任何设置文件都无法把它打开
  • 本版暂不提供 iOS 版:本分支的 iOS 构建在本次发布中关闭,发布页不会有 IPA 产物,其他平台不受影响

v3.1.6 - VeriRandom release 3 2026年10月24日

本版本是下游自有发布:上游当前版本仍是 v3.1.5(Nonomi),本版只包含本分支自己的改动,不跟随上游同步。上一版标注「来自上游同步」的条目仍有效,完整上游日志见 CHANGELOG/,与上游的差异见 DownStream_Change.md。

🚀 主要更新

  • 新增 证明重放:抽取验证页的「证明重放」按钮打开一个只读窗口,把本机的证明按证明链顺序排成一条可滚动的画布(每个节点标注抽取时间与链序号),点选任意节点即可按这份证明重算中奖者,并把「记录的中奖者」与「重算的中奖者」并列显示;还可以选一份名单,用它把内部记录编号翻译成姓名,并核对这份名单是否就是抽取时的那一份。重放只使用证明里记录的候选池、权重与随机数种子,不会拿当前名单或当前历史重算——它能证明「记录下来的输入必然产生记录下来的结果」,但不能证明种子诚实随机、名单就是真实班级名单、抽签前没有筛过名单
  • 新增 外部随机源可选(抽取验证页 · 信标组):除了原有的 NIST 信标,现在还可以把 drand quicknet 或 random.org 作为抽取种子的来源。三者的可信程度不同,界面上逐项写明:NIST 在取回时校验签名;drand 记录轮次与签名、可在事后用内置链公钥复核(本版本不校验);random.org 提供真正的大气噪声随机数,但没有时间轴,因此无法事后复核,也不能阻止有人多次取回后挑选一份
  • 新增 random.org 用自己的密钥并走签名接口(抽取验证页 · 信标组):把来源切到 random.org 后,同一组里会出现「接入签名」按钮,填进你自己的 random.org API Key 就能先验证额度、再保存。填了密钥之后取数改走 random.org 的签名接口:随机数和它的签名一起写进证明,之后在证明重放窗口里用内置证书重新验一遍,结论分成「复核通过」「复核通过但证书已过期」「数据与签名不符」「只记录了签名,本窗口不重复验签」四种,不会只给一句「签名有效」。密钥只保存在本机,随时可以清空或更换
  • 新增 结果浮窗(点名页控制面板):把当前抽取结果缩小成一块置顶、可拖动的小窗,主窗口同时收起,演示课件时仍能看见谁依次回答问题;浮窗上的按钮(或直接关掉浮窗)会把主窗口还原回来
  • 新增 「跳转到最新证明」:证明重放窗口的画布右上角一键选中链尾并滚到最右端(证明按时间从左往右排,链一长最新那份一开始就在视野之外)
  • 「证明可信度」的打分并入证明重放窗口:它不再固定在抽取验证页里对「最新一份」证明打分,而是跟着画布上选中的节点走——选中哪个节点就评哪一份,于是重放与信标 / 时间戳 / 服务端回执的完整性检查落在同一处;链完整性同时改成按节点判定,自己那份文件被改过的节点直接归零
  • 新增 「使用当前名单」(证明重放窗口):按选中证明的抽取类型取当前活动的点名名单 / 奖池,先弹一个只读预览窗口列出成员(编号、姓名、分组/性别或数量,停用成员标出),确认后才把它当作参考名单——不用再去文件管理器里找名单文件
  • 新增 「导出证明参考文件」(点名名单页 / 奖池页工具栏):导出一份纯 JSON,供证明重放窗口当参考名单使用。它和「导出名单」不是一回事:历史导出与名单导出都不会写入内部记录编号,而重放要用它把中奖者对回人名并核对名单摘要,所以只有这份 JSON 能当参考。导出的 CSV/XLSX 无法充当参考名单,重新导入它们还会给每条记录分配新的编号,核对必然显示不一致
  • 新增 信标每分钟后台自动预取(抽取验证页 · 信标组,默认关闭,需与「抽签前预取信标脉冲」同时开启):后台每分钟取一次最新信标脉冲放入缓存,这一分钟内开始抽签就直接使用缓存、完全没有网络等待;缓存超过一个脉冲周期(60 秒)即作废,不会被很久以后的抽签用掉,也不会因为定时预取而消耗序号或在证明链上留下缺口
  • 新增 「随机数」页(主界面侧栏,排在历史之后):在你自己给的范围里生成一个裸随机数,不考虑重复与放回。上下界会记住;「锁定范围与熵源」是受安全密码保护的一项防护——开启后范围与熵源选择都不可改,而关掉它属于放宽防护,必须重新输入安全密码(设置页的临时免验证与全局免验证都不算数),该开关随安全设置存进加密文件,改配置文件或导入设置都无法解锁。熵源可以一次勾选多个:NIST 信标、drand 网络、random.org、本地 CSPRNG。只勾选一个可验证来源(NIST / drand)时,事后可以用那个来源公布的公开脉冲重算同一个数;一旦勾入 random.org 或本地 CSPRNG,界面上会明确写出可复核性受损,因为这两种来源无法事后核对。无论哪种组合,它都只能证明「这个输入产出了这个数」,不能证明抽中了某个人——没有名单就没有可核对的名单摘要。每次生成都会立即写一份证明,记录范围、结果、每个熵源的原文与种子摘要,并在写入后立刻用记录自身重算一遍;这份证明与抽签证明分开存放,也不会提交给上游见证服务——它没有名单也没有抽签载荷,提交只会换来一条永远失败的回执。校验入口在证明重放窗口(「校验随机数记录」):逐条用记录自带的原文重算结果并复核各自的链,这些记录不会出现在链画布上,因为它们没有候选池、抽签内核无法重放
  • 新增 「候选 + 排除」筛选条件(随机数页):不再只能给一个连续区间——候选框支持 5-10, 20 这样写区间与单值,排除框可以再减掉 7,8,下方直接显示「候选 N 个」。抽样是均匀的,且不会因为范围很大而变慢(一百万的区间排除一个数字仍是瞬间完成)
  • 新增 枚举生成器(随机数页 · 候选模式内,默认折叠):给一个起止范围加一句条件,批量生成符合要求的值并入候选,例如「1 到 50,只要偶数」。条件里只有 X 一个变量,支持加减乘除取余、比较与逻辑运算;没有赋值与循环,写错会直接告诉你错在哪
  • 新增 高级输出(随机数页 · 默认折叠,需在「更多设置」里先开启):可以输出原始熵而不是范围内的数;位数可手动输入(32 / 64 / 128 / 1280 只是快捷按钮);结果按十进制、十六进制或可打印 ASCII 显示,ASCII 的字符个数可以单独设定;下方实时显示这次输出的信息熵与熵源上限
  • 新增 拼接采样(高级输出内):当请求的位数超过单个种子能提供的量时,可以选择多次取数再拼接。界面上写明:只有本地 CSPRNG 与 random.org 每次取数会带来新熵,同一信标脉冲内重复取数不会——此时输出更宽但实际熵不变,实测值就摆在同一行
  • 新增 设置摘要徽标(主界面,本地哈希完整性模式下默认显示):在主界面直接显示设置文件的摘要前几位,悬停可看完整摘要与文件位置,便于和另一份记录逐字核对;可在「更多设置」里关闭
  • 新增 课件标记可编辑:已生成的标记可以点「编辑」把参数读回表单,改完保存仍是同一个标记(不会多出一条),保存后新图片直接进剪贴板并提示替换课件里的旧图片。参数写在图片里,所以课件里的旧图片在你替换之前仍按旧参数触发——界面把这句话放在编辑时一直可见的位置,而不是保存完才说
  • 新增 标记快捷键:在课件标记页填一个全局快捷键(例如 Ctrl+Alt+M),课上按一下就把指定标记的图片放进剪贴板,直接粘进课件,不打开任何窗口、不打断正在放映的幻灯片。每个标记行有「设为快捷键」可以改指向,新生成的标记会自动成为快捷键目标
  • 新增 「均衡抽取」算法(点名设置 / 闪抽设置 · 抽取算法):除了原有的「公平抽取」和「随机抽取」,现在可以选第三个由独立算法仓库维护的均衡策略。它同样按「每人应得份额」记账,但把倍率直接计入份额,并在全池欠账同时归零时退化为等权。三档都是先按历史算出权重再抽,证明里记录的正是这次实际用到的权重,所以重放结果不变;算法本身留在自己的仓库里按版本接入,不会把源码复制进本仓库,关于页的鸣谢里也标注了它的来源与致谢
  • 新增 联网总开关(设置 · 通用 · 隐私页最上方):一个开关把本软件所有会连接 SecRandom / SECTL 服务器的功能一次关掉——证明存证、正式公证、公告、在线状态、使用统计、版本上报、账户登录、设备心跳、云备份与云端名单传输都不再发起请求;更新与插件市场也不再经由国内镜像,直接走 GitHub。这个开关保存在本机,不在设置文件里,所以导入设置或恢复备份都无法把它重新打开。本版本把它固定为禁用:界面上只能看到状态、不能关闭,你之前的选择仍会被记住,但暂时不生效
  • 恢复「仅 TOTP」单一验证(设置 · 通用 · 安全 · 验证方式):关掉「全部已选验证方式均需验证」后,只输认证器应用里的 6 位验证码即可通过验证,不再要求先输主密码。代价必须说清楚——这条路径靠把 TOTP 密钥以可读形式留在本机,所以它只是界面上的限制:能读到本机文件的人可以直接算出验证码。因此第一次把这种组合设成可用时会弹窗提醒「仅界面逻辑限制,攻击者可轻易获得解锁因子」,验证窗口里也每次都会重复这句;如果你需要的是真正挡人的保护,请继续用「全部已选验证方式均需验证」,或者加一枚 USB 绑定

💡 功能优化

  • 关于页:移除横幅占位框,本分支社区入口改用自有头像图标,社区图片区改用本分支自己的图片
  • 结果浮窗现在能调整大小,也认得手指:原来的浮窗只能拖动、不能缩放,而且在触屏上拖动根本不响应——它判断的是鼠标左键。现在四个边和四个角都能抓(边角按手指而不是鼠标留尺寸),右下角画了握把痕迹提示可以缩放;拖动同时接受手指与鼠标;调好的大小会记住,下节课再开仍是这个尺寸(位置不记忆,卡片按当前屏幕居中,避免换一块屏后跑到屏幕外)。底部还原按钮也从 32 像素放大到 40 像素,大屏上更容易按中
  • 随机数的结果现在能一键复制:以前结果是一段只能看的文字,1280 位那档是 320 个字符,连选中都做不到;现在可以直接选中部分内容,或点「复制结果」整段取走,状态行会说明复制了多少字符
  • 随机数记录也能重放了(证明重放窗口):勾选「包含随机数记录」后会列出已生成的随机数记录,点一条即可看到「记录值」与「用同一种子重算出来的值」以及是否一致。它们不会混进抽签链的画布,因为没有候选池,抽签内核无法重放
  • 锁定现在覆盖到筛选条件与生成器:以前开启锁定后,候选、排除与枚举生成器仍可修改(生成器那条是漏掉的)。现在这几项整块受锁定保护;「生成个数」不受锁定影响,因为它属于「抽几次」而不是「从哪些值里抽」
  • 随机数的「熵记录」现在能真正复核了:高级输出生成的记录以前在重放窗口显示「记录值 0 · 重算值 0 · 一致」,这个「一致」不含任何信息。现在这类记录在列表上标为「熵」,点开核对的是种子摘要(按记录里的熵源重算种子再比对摘要),并写明展示文本本来就不保存在记录里。顺带修掉一个真实缺陷:拼接取样超过一轮时,这类记录以前会自己校验自己失败(记的是多轮拼接摘要,校验却按单轮重算)。旧记录没有保存分轮信息,会如实显示「无法复核」,不会冒充「不一致」
  • 排除项不再沉默:排除框里的值如果根本不在候选中(例如候选取 5 到 10 却排除 20),候选行会直接写「排除项没有匹配到任何候选值」,不用再怀疑是自己写错了还是抽签没生效
  • 拼接是否真的带来新熵会说出来:同一次信标脉冲被重复取用时,实测熵那一行会追加「(拼接没有带来新的熵)」;「可用源熵」也不会再把同一个脉冲重复计数
  • 证明现在会先自己核对一遍:打开任意一份证明时,程序会用文件里真实的字节重算输入承诺,把「记录的中奖者」与结果帧对账,并检查候选数是否自相矛盾。这三项以前没人做过——重放只保证「这份输入产出这个结果」,而文件里另有一份中奖者列表和一份门槛声明是直接被相信的。核对结果直接写在节点详情与详情窗里,分「通过」「部分通过(旧版本写入,无法重算输入承诺)」「具体不一致」三种说法,不会把旧记录误判成被篡改
  • 门槛声明与门槛证据开始对账:一份「公平」抽取如果声称移除了人,旁边却没有那份说明,现在会被直接指出来;说明里写的阈值与证明里的阈值不一致、或说明声称的移除人数多于候选数实际下降量,也会被指出来。旧证明(早于该功能)不会被误报
  • 门槛现在会按记录复算一遍:以前「平均差距保护移除了谁」只能看它自己写的说明,现在程序会用说明里记录的整个候选池(每人被抽中过几次)重跑一遍规则,再把算出的人与记录的移除集合逐人比对——多移了规则不支持的人、或漏掉了规则本应移除的人,都会在自洽核对里直接写出来。也就是说「移除既正当又完整」第一次变成了可以自己跑一遍的事,而不只是相信记录
  • 证明默认永久保留,首次引导会问一次:以前本机证明默认 30 天或 64 MB 就自动删除,删掉的证明再也无法参与任何复核。现在默认不删,并在首次引导的隐私页直接问「保留多久」,写明「自动清除会让旧证明无法再参与复核,本机只能核对保留下来的那一段」。每份证明只有几 KB,永久保留通常不是负担;设置页里仍可随时改成按天或按容量清理
  • 结果浮窗在触屏上拖动不再抖、也不再「跟手不及」:以前手指按住拖动时,卡片一边延迟一边抽搐,手指的落点还会在卡片上慢慢跑偏,看起来像被缩小了。原因是拖动距离按「相对卡片」的坐标计算——卡片一动,这个基准也跟着动,于是每一帧都少算一截。现在改成按屏幕坐标计算,卡片与手指严格同速;同时顺手修了在非 100% 缩放的屏幕上,从左边或上边缩放时卡片会跳一截的问题
  • 课件标记会跟着课程表开始新一节:以前每节课都要手动点「开始新一节」,忘了点的话上一节已经触发过的标记在这一节就不会再响应。现在接上课程联动(ClassIsland 或 CSES)后,进入新的一节课会自动开始新会话;课程联动关闭时保持原样,应用在某一节课中途启动也不会把这一节已经触发过的标记重新激活。这个开关在课件标记页,默认开启
  • 被排除的学生现在有据可查:如果一次抽取因为「平均间隔保护」把某些人移出了候选,证明旁边会多出一份说明,记下被移除的是谁(只记内部编号)、他们当时分别被抽中过几次、候选从多少人变成多少人。在证明详情里能看到这份说明,并显示它是否确实属于这份证明。没有移除任何人时不会写,所以「没有这份说明」本身就是一种答案;旧证明同样没有
  • 新增 随机数的机密模式(随机数页 · 高级选项,默认关闭):勾上之后这次生成不写任何记录,种子与结果只留在内存里,结果默认用 * 遮盖,需要时点「显示结果」,或者直接复制。这个状态不会被记住——每次都重新勾选,因为「这次不留证据」应当是一个明确的决定,而不是上次设置的延续。复制会把内容放进系统剪贴板(含剪贴板历史),界面会照实说明这一步
  • 筛选条件与生成器也会记住:候选集合、排除项、生成器起止与条件式现在都随设置保存,重启后直接回到上次的写法。以前只有范围与候选框会记住,排除与条件每次启动都要重填,看起来像设置丢了;这些内容同样整块受「锁定范围与熵源」保护,锁上之后连改都不能改
  • 修复用 verirandom:// 打开链接时只弹「已有实例」提示:本分支主用的 verirandom:// 在启动参数里被当成普通参数丢掉了,导致第二次启动拿不到要打开的链接,只能把已运行窗口叫到前台(管道不通时还会弹单例提示)。现在两种协议都能正常转交,secrandom:// 的兼容行为不变
  • 新增 硬件安全密钥验证(设置 · 通用 · 安全 · 安全密钥):可以把 YubiKey 这类 FIDO2 安全密钥登记成一种验证方式。登记与每次验证都在系统浏览器里完成,密钥本身不会被导出,本机只保存公钥与签名计数;密钥的签名计数器不前进时会被判为可能已被复制,本次验证直接拒绝。它和主密码、认证器、USB 绑定可以一起用;在「任意已选验证方式」模式下,插上密钥轻触即可通过,不需要输入密码进入
  • 分离配置现在可以用安全密钥签发(设置 · 通用 · 安全 · 分离签名):分离签名过去只能在持有私钥的可信设备上签发。现在把已登记的安全密钥插到任意一台机器上,就能用它对当前配置签名——那台机器不需要、也不会留下私钥;抽取机两种签名文档都能验证。需要注意的是,签名保护的仍是「这份配置没有被改过」,而不是「签它的那台机器本身可信」

⚠️ 需要注意

  • 版本号可以带下游序号:本分支的版本号跟随上游,但需要在上游版本不变的情况下发布自有修订时,会写成 v3.1.5 Mu 1、v3.1.5 Mu 2 这种形式。它排序在上游 v3.1.5 之后、v3.1.6 之前,因此下游修订能正常作为更新推送;带 Mu 的版本属于正式发布,不是预览版
  • 「证明可信度」的评估入口已移到证明重放窗口:抽取验证页不再有这张卡,评估跟着画布上选中的节点走;想评最新一份就用画布右上角的「跳转到最新证明」
  • 此前签发的配置策略签名文档需要重新签发(重要):签名覆盖的设置范围这一版又扩大了一次——「默认抽取设置」「点名设置」「闪抽设置」「抽奖设置」四页此前不在签名范围内,改掉它们签名照样验证通过,而文档却写着关键抽取策略被锁定。现在它们已被纳入,作用域编号随之升到第 6 版,按第 5 版签发的文档会被判为格式不符,需要在可信设备上重新签发
  • 「随机数」页的证明只存在本机:它记录范围、结果与每个熵源的原文,可随时重算,但不会上传到上游见证服务——那个服务按固定的字段清单校验,裸随机数既没有名单也没有抽签载荷,上传只会换来一条永远失败的回执。它证明的是「这份记录仍然描述它声称的那个数」,不证明熵源当时的行为,也不证明结果没有被人挑选过
  • 随机数页的锁定属于安全防护:范围与熵源的锁存在加密的安全设置文件里,改配置文件或导入设置都无法解开;关掉这把锁要求重新输入安全密码,设置页的临时免验证不适用
  • random.org 的那份签名证书已经过期:签名本身仍然可以被复核并通过,但当前无法再确认证书链的有效性,界面上会如实写成「复核通过,但证书已于 2025-11-15 过期」;这是它自己停止续期,不是本应用能修的问题
  • 课件标记不再提供「可重复」「忽略历史权重」:这两项在课件标记的触发路径里无法表达,以前给了开关却只会生成一张永远不会触发的标记。现在这两个开关已移除;旧课件里已经带着这两项的标记仍然会被拒绝触发,并在标记库里标成「含不支持的参数,不会触发」
  • 机密模式下的数字不可证明:它不写记录,所以事后无法复算,也没有任何东西能证明这个数是什么。遮盖只挡肉眼与截屏,挡不住进程内存被换出、崩溃转储,也挡不住你自己把它复制到系统剪贴板——这些边界在界面上一并写明
  • 门槛证据现在会记下整个候选池的次数:为了能核对「移除是否完整」,「平均差距保护」触发时会额外保存一份「每人被抽中过几次」的匿名清单(只有内部编号,没有姓名)。它换来的是可复算,代价是这一次抽取的次数分布会随证明一起留下
  • 已有的证明保留设置不会被改动:升级不会把你原本设成 30 天或 64 MB 的清理策略改掉;新的默认值只对从未设置过的新安装生效
  • 联网总开关只关 SECTL 那一侧:它关的是本软件连接 SECTL 服务器的通道;自建集控节点与控制面用的是你自己填写的地址,由那两个功能自己的开关决定(账号登录被总开关关掉时,控制面同样不可用)。它不会退出账号,也不会删除云端备份,只是让这台机器不再发起请求;把总开关关掉之后,各在线开关与跨境须知照常按原设置生效
  • 本版本固定禁用所有 SECTL 联网,相关功能会如实失败:账号登录、正式公证、云备份、在线状态、使用统计、版本上报、公告与云端名单传输都用不了,入口仍然可见,但会明确告诉你被禁用;抽签证明仍照常写在本机、仍可在证明重放窗口里核对,只是不会提交到任何服务器。界面上没有可以绕过这个固定的地方,等后续版本解除