identityHash(K) = keccak256("this.me/identity:v1::" + K.seed)
wallet.hidden ⊆ wallet ⟹ A(wallet.hidden) satisfies A(wallet)
cost(scoped_read) ≈ 10¹–10² × cost(public_read)
tamper(ciphertext) ⟹ decrypt_failure, not corrupted_read
A = A₁ ∪ A₂ ∪ ... // OR-audience, any member
A = A₁ ∩ A₂ ∩ ... // AND-audience, all required
S₁...Sₙ₋₁ ← random(32)
Sₙ = S ⊕ S₁ ⊕ ... ⊕ Sₙ₋₁
Wᵢ = wrapSecretV1(P256_pub(Kᵢ), Sᵢ) // XOR-split, needs all members
Identity = computation from seed, not credential.
Nested scopes inherit audience by ancestor prefix.
AND-audience is real crypto split, not policy check.
Source: Centralize the Self, Algebra of Encrypted Audiences, Set-Chemistry

Top comments (0)