Skip to content

template: add Threat Model & Security Requirements section#45

Draft
fryorcraken wants to merge 4 commits intomasterfrom
security-concerns
Draft

template: add Threat Model & Security Requirements section#45
fryorcraken wants to merge 4 commits intomasterfrom
security-concerns

Conversation

@fryorcraken
Copy link
Copy Markdown
Collaborator

Summary

  • Adds a new ## 🛡️ Threat Model & Security Requirements section to RFPs/RFP-000-template.md listing common privacy/security scenarios grouped by adversary class (O on-chain observer, A active attacker, C malicious counterparty, S sequencer, F malicious/buggy client, X external identity correlator). Each scenario has a stable code so other documents can reference them, and protocol-specific scenarios extend the same numbering per RFP.
  • Adds appendix/logos-stack-trust-assumptions.md as a dated snapshot (2026-04-28) of the five component FURPS published at roadmap.logos.co, pulled from logos-co/roadmap@v4. The appendix quotes each relevant FURPS item verbatim, then distils a Stack-wide trust assumptions an RFP can rely on list and a Stack-wide non-guarantees an RFP must not assume list. Notable non-guarantees: no anonymous transaction submission at the network layer, no mempool/pre-confirmation privacy, no anonymous indexer RPC queries, no off-chain LEZ-state privacy, no sequencer-level censorship resistance.
  • Retargets Supportability item 9 (privacy and anonymisation properties document) so it must address every scenario in the new Threat Model section.

Why draft

Open for discussion before applying the new section to the existing RFPs (001, 002, 003, 004, 008, 012, 015, 016). Each of those will get its own follow-up PR adding protocol-specific scenarios under the relevant adversary class.

Specific items worth feedback before merging:

  • Adversary class set. S (sequencer) is included because the appendix found that LEZ FURPS does not commit to non-censorship or non-correlation against the sequencer. Reasonable, or fold into trust assumptions?
  • O-5 requires the SDK/mini-app not to issue RPC queries that re-link ephemeral accounts. This is non-trivial to implement and may be a meaningful new requirement on every RFP. Acceptable bar?
  • Out-of-scope listing requirement. Proposals must enumerate out-of-scope scenarios with rationale rather than omit them. Adds proposal length but makes review easier.
  • Snapshot freshness. The appendix is dated; it should be re-validated before each new batch of RFPs uses it. Worth a follow-up scheduled agent?

Test plan

  • Review the adversary class set and stable codes
  • Verify the FURPS quotations against the live roadmap pages
  • Confirm the Supportability item 9 rewording does not invalidate any existing RFP's privacy doc plan
  • Decide whether the appendix lives under appendix/ (current) or under RFPs/ next to the template
  • Plan the per-RFP follow-up PRs that add protocol-specific scenarios

🤖 Generated with Claude Code

fryorcraken and others added 4 commits April 28, 2026 12:08
Add a top-level section to the RFP template listing common
privacy/security scenarios grouped by adversary class (O, A, C, S, F,
X), each with stable codes that protocol-specific scenarios extend.

Add appendix/logos-stack-trust-assumptions.md as a dated snapshot
(2026-04-28) of the five component FURPS at roadmap.logos.co, with
verbatim citations and a distilled list of what RFPs can rely on vs
must not assume.

Retarget Supportability item 9 so the privacy and anonymisation
document must address every Threat Model scenario.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rework the Threat Model section so it covers any application built on
any part of the Logos stack, not only LEZ programs. Adversary classes
are stack-wide:

- N (Network observer): any public surface the app touches
- A (Active attacker): any layer
- C (Malicious counterparty): any user-mediated exchange
- P (Platform operator with elevated visibility): sequencer, Waku
  store/relay, Codex cache/provider, RPC, RLNaaS — replaces the
  prior LEZ-specific S
- F (Malicious or buggy client): any client surface
- X (External identity correlator): any cross-system linkage

Common scenarios are component-agnostic. Component-specific scenarios
move to dedicated subsections (Blockchain/LEZ, AnonComms, Logos Core,
Messaging/Waku, Storage/Codex) that apply only when the RFP declares
the component in a new "Stack components consumed" subsection.

The deshield→interact→re-shield language and ephemeral-account
hygiene now live under L-1..L-6 in the LEZ-specific section instead
of in the common scenarios.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Use stack-level names "Messaging" and "Storage" throughout instead of
the deprecated "Waku" and "Codex" codenames. Renumber the
component-specific scenarios accordingly:

- Messaging scenarios W-1..W-4 → M-1..M-4
- Storage scenarios CX-1..CX-3 → ST-1..ST-3

The one remaining "Waku" string in the appendix is inside a verbatim
quote from the upstream FURPS source; it is annotated to indicate the
current stack-level term.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@fryorcraken
Copy link
Copy Markdown
Collaborator Author

@kaiserd to provide feedback as this attempts to address his concerns.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant