
ERC-8228:加密失憶症——區塊鏈上可證明的密鑰銷毀機制
AI 生成摘要
我正在提議一項名為 ERC-8228 的新標準,它定義了加密失憶症的標準介面,透過在不可篡改的帳本上實現可證明且不可逆的加密密鑰銷毀,讓區塊鏈也能具備被遺忘權。
摘要
我正在提議一項新的 ERC,它定義了一個**加密遺忘(cryptographic amnesia)**的標準介面——在僅限附加(append-only)的帳本上實現可證明的、不可逆的加密金鑰銷毀。
在銷毀儀式完成後,鏈上的加密數據在數學上將與隨機雜訊無異。宇宙中將不再存在任何金鑰可以對其進行解密。密文雖然保留在鏈上,但它已成為永久的雜訊。
這是第一個能在不可篡改的區塊鏈上實現可信**「被遺忘權」**的標準。
儲存庫: https://github.com/Valisthea/styx-erc-cryptographic-amnesia
作者: Valisthea
相關提案: ERC: Encrypted Token Standard(另行提交)
問題所在
區塊鏈永不遺忘。這是一個特性——直到它變成一種負擔。
-
GDPR 第 17 條 — 歐盟法律要求數據控制者必須根據請求刪除個人數據。在公共區塊鏈上,刪除在架構上是不可能的。目前沒有任何標準能解決這個問題。在鏈上處理歐盟用戶數據的項目正處於法律灰色地帶,缺乏技術解決方案。
-
治理污染 — DAO 投票會產生永久的政治記錄。在治理週期結束後,個人的投票立場可能成為脅迫、報復和派系鬥爭的把柄。結果很重要,但每個人的投票方式不應永遠存在。
-
密封報價拍賣 — 在確定獲勝者後,落選的報價應變為永久無法訪問。如今,如果加密金鑰被破解(即使是在幾十年後),加密的報價仍可被還原。
-
醫療與法律記錄 — 臨時性的鏈上存儲(如臨床試驗、法律訴訟、舉報人報告),在超過定義的期限後,保留數據會帶來風險而非價值。
-
金鑰洩漏限制 — 當懷疑加密金鑰洩漏時,目前沒有標準方法能證明已將其銷毀,以限制損害窗口。
為什麼「直接刪除金鑰」行不通
從單一伺服器刪除金鑰無法證明任何事情。金鑰可能存在於備份、記憶體轉儲(RAM dumps)、HSM 快照或管理員的記憶中。沒有加密證明可以證實刪除確實發生過。
本標準透過帶有個人證明的分布式銷毀來解決此問題:主金鑰透過 Shamir 秘密分享(Shamir Secret Sharing)拆分給獨立的保管人。每位保管人透過 ZK 證明(零知識證明)獨立證明其分片已被銷毀。Shamir SSS 的門檻特性保證了只要有足夠的分片被銷毀,重構在數學上就是不可能的——無論剩餘的參與者保留了什麼。
運作原理
儀式生命週期
IDLE(空閒)→ PENDING(等待,VDF 倒數)→ ACTIVE(活動,接受銷毀證明)→ COMPLETED(完成,遺忘)
→ FAILED(失敗,超時,可重試)
階段 1 — 發起。 授權方調用 initiateOblivion(sessionId)。這會啟動一個 VDF(可驗證延遲函數)時間鎖倒數。敏感數據建議至少 24 小時,推薦 72 小時。
階段 2 — VDF 延遲。 倒數計時可防止被脅迫或恐慌性的銷毀。利益相關者會看到 OblivionInitiated 事件,並可以採取行動:檢索數據、取消儀式,或透過保管人絕對多數進行否決。
階段 3 — 銷毀證明。 在 VDF 延遲結束後,保管人提交 ZK 證明,證明其金鑰分片已被銷毀。每份證明都證實保管人曾持有一個有效的 Shamir 分片,並已承諾參與銷毀儀式。
階段 4 — 完成。 當達到銷毀門檻(對於 k-of-n 方案,需要 n-k+1 份證明)時,會發出 AmnesiaAchieved 事件。isForgotten(sessionId) 將返回 true —— 永久且不可逆。
如果截止日期過後仍未收集到足夠證明 → FAILED。金鑰不會被銷毀。可以發起新的儀式(設有冷卻時間和嘗試次數限制)。
核心介面
interface IERCYYYY {
// 生命週期
function initiateOblivion(bytes32 sessionId) external returns (uint256 vdfUnlockTime, uint256 deadline);
function submitDestructionProof(bytes32 sessionId, uint256 custodianIndex, bytes calldata proof) external returns (bool ceremonyComplete);
function cancelOblivion(bytes32 sessionId) external;
function vetoCeremony(bytes32 sessionId, bytes calldata vetoProof) external;
// 查詢
function isForgotten(bytes32 sessionId) external view returns (bool);
function isForgoable(bytes32 sessionId) external view returns (bool);
function ceremonyInfo(bytes32 sessionId) external view returns (CeremonyInfo memory);
// 事件
event OblivionInitiated(bytes32 indexed sessionId, address indexed initiator, uint256 vdfUnlockTime, uint256 deadline);
event ShareDestroyed(bytes32 indexed sessionId, uint256 indexed custodianIndex, bytes32 proofHash, uint256 proofsTotal, uint256 thresholdNeeded);
event AmnesiaAchieved(bytes32 indexed sessionId, uint256 completedAt);
}
擴展功能
合規性 — complianceReceipt(sessionId) 返回 ABI 編碼的審計軌跡(時間戳、保管人證明哈希、VDF 參數)。retentionPeriod(sessionId) 在法律保留要求到期前阻止遺忘。專為受監管環境設計。
鉤子(Hooks) — 為依賴合約提供 onAmnesiaAchieved(sessionId) 回調。在狀態轉換完成後調用。即使回調失敗(Revert)也不會阻止遺忘(不可逆性是神聖的)。
關鍵設計決策
Shamir SSS 優於 MPC — MPC 要求所有保管人同時在線。Shamir 允許異步、獨立的分片銷毀。這對於跨司法管轄區、地理分布的保管人至關重要。
VDF 優於簡單時間鎖 — 區塊高度時間鎖可能被驗證者操縱(±15秒)。VDF 提供了流逝真實時間的加密保證,與區塊產出無關。
FAILED 狀態保留金鑰 — 一個僅銷毀部分分片但未達門檻的儀式會留下模糊狀態。FAILED 意味著什麼都沒改變——可以安全地重試。
不可逆性不容妥協 — 一旦 isForgotten() 返回 true,它絕不能再返回 false。這是整個法律和加密保證的核心。可逆的遺忘不是真正的遺忘。
信任模型(誠實披露)
ZK 銷毀證明僅證明保管人參與了儀式並曾持有一個有效的 Shamir 分片。它不能證明該分片已從所有可能的存儲位置物理刪除——這在軟體層面上根本無法證明。
安全保證依賴於:
- ≥ (n-k+1) 位保管人誠實地銷毀其分片
- HSM(硬體安全模組)執行安全刪除(硬體信任)
- 保管人的機構多樣性(不同的組織、司法管轄區、硬體供應商)
我們在「安全考量」中明確記錄了這一點。這不是弱點,而是必須被理解的信任邊界。
與其他標準的交互
本標準旨在補充「加密代幣標準(Encrypted Token Standard)」:
- 加密代幣將餘額存儲在全同態加密(FHE)金鑰 K 下
- 金鑰 K 被拆分為 Shamir 分片交由保管人持有
- 治理週期結束,計票完成
initiateOblivion(sessionId)→ VDF 倒數- 保管人提交銷毀證明
- 達到門檻 →
AmnesiaAchieved - 所有在 K 下加密的數據現在都成了永久雜訊
- 計票結果保留,個人投票被遺忘。零政治債務。
先前技術
我目前尚未發現任何現有的 ERC 或 EIP 解決了區塊鏈上可證明的金鑰銷毀或被遺忘權問題。最相關的工作包括:
- EIP-2135(可消耗介面)— 代幣可以被「消耗」,但數據依然存在
- 關於區塊鏈 GDPR 的文獻 — 提議將數據存儲在鏈下並在鏈上存儲哈希的學術論文,但沒有金鑰銷毀的標準介面
- Aztec 的票據花費模型 — 無效符(nullifiers)將票據標記為已花費,但如果金鑰存在,加密數據仍可解密
如果有人知道該領域的先前工作,歡迎提供參考。
社群提問
- 最小保管人數量 — 草案建議最少 5 個,生產環境建議 7 個以上。這是否足夠,還是標準應強制執行更高的最小值?
- VDF 構造 — 標準是否應強制使用特定的 VDF(如 Wesolowski 或 Pietrzak),還是應保持構造無關性?
- 儀式嘗試限制 — 草案包含
maxCeremonyAttempts()(建議值:3)。達到最大嘗試次數後,需要治理覆蓋。這是否是正確的安全閥? - 取消 vs 否決 — 草案同時包含
cancelOblivion()(由發起者/治理方執行)和vetoCeremony()(由保管人絕對多數執行)。否決機制是否有必要,還是取消機制就足夠了? - 遺忘後的代幣行為 — 金鑰銷毀後,
encryptedBalanceOf()應該返回什麼?密文(現在是雜訊)?代幣合約是否應進入「凍結」狀態?這與加密代幣標準的交互需要社群意見。 - 法律充分性 — 是否有人諮詢過歐盟數據保護律師,關於「帶有可證明已銷毀金鑰的加密數據」是否滿足 GDPR 第 17 條?根據目前的監管解釋,我認為它是滿足的,但正式的法律分析將增強該標準的說服力。
歡迎提供反饋。這是一個未知的領域——目前沒有現有的標準解決這個問題。
— Valisthea
1 則貼文 - 1 位參與者
[閱讀完整主題](https://ethereum-magicians.org/t/erc-8228-cryptographic-amnesia/28215)
相關文章
其他收藏 · 0
收藏夾