Skip to content

[P1] 托管历史密文恢复与在线/备份旧钥退役 #68

Closed

Description

@LIghtJUNction

2026-09-28 串行集成:#100 生命周期及 #112/#116 加固均已在 main,完整验收仍开放

当前 main 45fe2382c63d21eef2f76d4f59141111f7d5713c,tree 1a8a28f467183ccab029625b0524ae5c5b7f115f 已读回。#112/#116 通过保留历史的 #118 集成;组合 CI36404029543(1544 core+8 conformance、四份SHA与真实JUnit node-ID完整互斥、零失败/错误/跳过、wheel/sdist)及 Recovery safety36404029733 通过。独立 main push与现场验收另核,不能沿用旧957e1ff的证据宣称当前全完成。

已在主线,应保留

剩余验收(不因合并勾选全部)

  • 完整受损/过期/错钥/串清单ACK、清单漂移、并发新写入/增量重验、处理中旧钥失效矩阵,确保均不得提前finalize;已合入的窄回归不等于所有场景验收。
  • 全保留历史清单客户端逐项真实解密/完整性校验,旧Revision正文/签名/key_id原字节不变,完整A/B映射和中断恢复。
  • B类envelope严禁IdentityKey、server-vault master key、他人钥;decrypt-only不得残留服务器签名能力,不把兼容旧钥恢复描述为历史已重新加密。
  • 未知/无法迁移项默认pending,仅对精确清单显式接受后处理不可恢复项;online_retired与backup_retired分别审计,缺独立备份退役证据不得声称server_key_retired。
  • 与#69联合核对旧备份恢复不复活token、证书当前权限或签名能力;外部密文/备份退役不能靠DB布尔值自证。当前恢复仍quarantine,完整当前政策重放/promotion未完成。
  • CLI/doctor/selftest/真实age/PostgreSQL的完整并发/崩溃/回滚/全入口矩阵、最终head及现场证据。

任务 A 与边界

A维护托管/密钥生命周期,授权接线与C、worker恢复闸与B交叉核验,共享入口按#83串行集成。#112已合入;#116因已包含于#118而关闭,不是放弃修改。无生产Root/备份删除/密钥销毁授权,没有现场退役材料保持open/blocked,切片用Refs。

依据:权威设计第03/06/11/15章、DCR-03;docs/CUSTODIAL_HISTORY.md、docs/TASK_A_RECOVERY_20260928.md、#118精确组合证据。旧进度文件只表示其对应版本。

Activity

  1. LIghtJUNction commented on Sep 27, 2026

    @LIghtJUNction
    ContributorAuthor

    已提交增量修复 PR #112(分支 fix/issues-68-70-recovery-safety)。

    本次落实:读取迁移状态时重新验证每份 Ed25519 解密 ACK,绑定挑战、新签名钥、旧/新密文版本及摘要;清单增量或持久化 ACK 被篡改时不再报告历史迁移完成。分别报告身份切换、历史可恢复、在线 vault 退役和备份退役;未取得独立备份销毁证据时,server_key_retired 始终不能变成 true。已添加真实 age 解密后 ACK 和篡改持久化 ACK 的集成回归。

    已验证:34 个独立单元测试在本地 Python 3.13.5 和 GitHub Python 3.15.0-rc.2 均通过(run 36352807272)。PR 上的真实 PostgreSQL/age 和完整 CI 尚在执行,不能据此声称全部验收通过。

    本 issue 保持开放:非空历史迁移最终完成、旧解密钥兼容封装、不可恢复项选择、写入冻结/增量策略,以及可独立审计的备份退役仍需继续实现与验收。未触及生产数据或生产密钥。

  2. LIghtJUNction commented on Sep 28, 2026

    @LIghtJUNction
    ContributorAuthor

    Refs #68 — A 已提交 #116(接续 #112,C 串行合并),当前 c97a5286c029aae298d66aa4c6390497f053e4c8。

    真实回归发现:retained age 清单为空时没有任何历史 ACK 触发原始 challenge 验证,修改挑战/四个 key ID 仍可被接受。新 test_task_a_custodial_binding.py 先得到9失败/1通过;security/custodial_migration.verify_challenge_binding() 现在每次快照验证旧服务端签名、账号和派生 key ID、旧签名凭据/旧 age 绑定,以及进行中或 decrypt_only 阶段的新主 age key 未退役。另修复 v1 空历史切换错误假设已处于pending_rewrap:使用真实阶段,保留#100生命周期。

    没有改旧正文/签名/Revision/key_id,没有把A类rewrap和B类仅本账号旧EncryptionSubkey兼容恢复混合;既有客户端真实age解密ACK路径保留。最终本地组合58通过(真实PG17.11/age1.2.1/Git),含既有完整托管生命周期、损坏/漂移及新回归;目标Py3.15/PG16完整四分片以#116最新CI结果为准,当前尚未宣称通过。

    在线删除、身份切换、历史恢复和备份退役继续分别记录;独立外部/备份退役材料未取得,backup_retired/server_key_retired绝不变true。本issue继续开放。文件/命令/摘要见docs/TASK_A_RECOVERY_20260928.md和docs/TASK_A_VERIFICATION.md。无生产密钥操作或部署。

  3. added 4 commits that reference this issue on Sep 28, 2026
  4. LIghtJUNction commented on Sep 29, 2026

    @LIghtJUNction
    ContributorAuthor

    2026-09-29 当前接续(#185 已合并)

    main 5cdaeba2b7b191a27684093cce7b5a153c99c88d / tree 3ad68f2012896310abfa9bcaf800c9ab05f6c886 已实际读回,等于最终PR通过的树。18个PR工作流全部success;8份ZIP摘要/JUnit node-ID独立核验 2531 core + 8 conformance,零失败/错误/跳过。精确来源和产物摘要见 #185证据,更新索引见#83。合并后main push是独立运行,正在核验,不预记成功。

    完整托管A/B历史、具体inventory ACK、exit与backup-retirement的现有回归保留;installed official selftest的custodial_history_recovery通过。在线retired与外部backup_retired继续分开,未取得真实retained密文逐项解密/独立退役范围,不声称server_key_retired。旧时“promotion未实现”不再代表当前源码,但现场current pin仍独立缺失。

    各条款源码入口与独立现场材料见 docs/RELEASE_ACCEPTANCE.md。本评论更新证据归属,不降低原验收范围或扩大现场权限。

  5. LIghtJUNction commented on Oct 3, 2026

    @LIghtJUNction
    ContributorAuthor

    已按托管历史密文恢复/钥生命周期功能完成关闭。当前源码包含 retained inventory、A/B 恢复映射、真实客户端解密后的签名 ACK、显式 finalize、decrypt-only/loss acceptance、在线退役与独立备份退役验证;保留原 Revision 签署字节。

    生命周期回归、inventory ACK、历史迁移及 退役证明回归 已在 当前 main CI 核实通过。操作者实际历史密文逐项解密及在线/备份退役现场证明继续在 #84 跟踪;本次没有解密生产数据、销毁钥或删除备份,不宣称现场退役完成。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions