Upload files to "/"

This commit is contained in:
continuist 2025-11-22 20:51:04 -05:00
parent 270fe9fbfe
commit 0146c86e98

View file

@ -0,0 +1,192 @@
# Decentralized Hub Ownership and Recovery Design (PKI-Based, No Blockchain)
## 1. Keys and DIDs (Conceptual Model)
For each Hub, define three logical components:
### 1. Hub Owner Key (Kₒ)
- Longterm key pair defining the **owner** of the Hub DID.
- Private key never leaves the user's devices.
- DID example: `did:key:<public-of-Kₒ>`.
- Ultimate authority for the Hub.
### 2. Hub Operational Key (Kₕ)
- Key pair used by the **server instance** running the Hub.
- Private key stored on the Hub backend server.
- Granted authority via a signed **delegation certificate** from Kₒ.
### 3. Recovery Secret / Code (R)
- Highentropy secret generated **client-side** (NextJS).
- Used to derive Kₒ (e.g., `Kₒ = KDF(R, "hub-owner")`).
- Shown **only once**.
- **Never stored on any server.**
### Additional Component: Passport DID (Dᴘ)
The user's self-sovereign identity. Contains a verifiable claim linking
the user to ownership of the Hub DID.
------------------------------------------------------------------------
## 2. Creating a Hub and Binding Ownership to a Passport
### Step 1: Generate Owner Identity (Client-Side)
1. Generate random secret `R`.
2. Derive owner key pair `Kₒ`.
3. Compute Hub DID: `Dᴴ = did:key:<pub(Kₒ)>`.
4. Show recovery code R to user for offline storage.
### Step 2: Create Operational Identity (Server-Side)
1. Server generates new key pair `Kₕ`.
2. Client fetches `pub(Kₕ)` securely.
### Step 3: Delegate Authority (Client → Server)
Create a delegation certificate:
{
hubDid: Dᴴ,
delegatedTo: pub(Kₕ),
privileges: ["serve-hub", "sign-hub-messages"],
issuedAt: t₀,
expiresAt: t₁
}
Sign the certificate with `Kₒ`, then upload it to the server.
### Step 4: Bind Hub to Owner's Passport
Add a verifiable claim:
``` json
{
"subject": Dᴘ,
"claim": {
"type": "HubOwnership",
"hubDid": Dᴴ,
"role": "owner"
}
}
```
Signed by the Passport key, optionally also by Kₒ.
------------------------------------------------------------------------
## 3. Normal Operation
When interacting with other Hubs, a Hub sends: - Hub DID (`Dᴴ`) -
Delegation certificate (`Kₒ → Kₕ`) - Its operational public key
(`pub(Kₕ)`)
Peers verify: 1. Certificate signature matches `pub(Kₒ)` encoded in
`Dᴴ`. 2. Message signatures match `pub(Kₕ)`. 3. Ownership via Passport
profile (if desired).
**Owner = controls Kₒ**\
**Server = controls Kₕ (delegated)**
------------------------------------------------------------------------
## 4. Handling a Server Compromise
If a hacker takes over the server: - They gain `Kₕ`. - They **do not**
have `R` or `Kₒ`.
The owner must: 1. Launch a new Hub on a new server. 2. Broadcast a
signed compromise notice. 3. Prove ownership via signatures from `Kₒ`.
### 4.1 Reconstructing Kₒ from R (If Needed)
User enters recovery code R on a safe device: - Derive
`Kₒ = KDF(R, "hub-owner")`. - Validate that its DID matches the Hub DID
Dᴴ.
### 4.2 Create New Operational Key (Kₕ)
New server generates `Kₕ`.
Owner creates a new delegation certificate:
Kₒ → Kₕ
Owner also signs a **revocation** of the old operational key:
{
hubDid: Dᴴ,
revokedKey: pub(Kₕ),
reason: "Server compromised",
revokedAt: t₂
}
### 4.3 Broadcasting the Recovery
New Hub publishes: - `hubDid: Dᴴ` - new endpoint - new `pub(Kₕ)` - new
delegation certificate - revocation of `pub(Kₕ)` - optional
Passport-signed confirmation
The attacker cannot: - sign new delegations (requires `Kₒ`) - sign
revocations (requires `Kₒ`) - change the Hub DID (`pub(Kₒ)`)
------------------------------------------------------------------------
## 5. Trust Decision Model (No Consensus)
Each Hub or human owner decides independently what to trust.
### Typical Validation Rules
1. Accept only messages signed by an operational key currently
delegated by `Kₒ`.
2. Respect revocations signed by `Kₒ`.
3. Track a local chain of:
- delegations\
- revocations\
- Passport claims
No global ledger required.
### Human Decision Layer
Owners may also use: - Outofband communication - Social trust - Direct
evidence from the Passport DID
------------------------------------------------------------------------
## 6. Recovery Code Requirements
The design satisfies your constraints:
- **Never stored on a server.**
- Generated client-side only.
- Used only to derive `Kₒ` when recovering ownership.
- Never transmitted over the network.
- Attackers cannot derive R or Kₒ from any server compromise.
------------------------------------------------------------------------
## 7. Optional Refinements
- Multi-sig ownership (`Kₒ` split across devices).
- Timebound delegations.
- Owner-signed references to external identities (website, company
DID, etc.).
- More expressive Passport claims.
------------------------------------------------------------------------
## Summary
This design provides: - **Hub DID ownership backed by PKI**, no
blockchain needed. - **Recovery mechanism based on a secret code (R)**
that never touches servers. - **Revocation and redelegation** driven by
the owner key (Kₒ). - **Humancentric trust decisions**, no consensus
protocol.
The attacker cannot permanently hijack a Hub unless they obtain the
recovery code.