Restore security extension platform as primary goal

This commit is contained in:
Sergey Chernov 2026-08-17 16:46:38 +04:00
parent af5467bf87
commit 55f614f6fc
5 changed files with 131 additions and 56 deletions

View File

@ -108,11 +108,50 @@ privileged-extension integration spike. Expected additions are:
access. access.
10. Isolate Browsec branding, profiles, updates, signing keys, and audit data. 10. Isolate Browsec branding, profiles, updates, signing keys, and audit data.
## ADR-006: Security extensions have private evidence storage
Privileged security extensions need durable, general-purpose private storage,
not merely access to the formal trust-policy overlay. An extension may retain
observations, indexes, historical certificates, intermediate analysis, remote
responses, user annotations, model state, or other information required by its
declared security function.
The browser brokers storage rather than exposing arbitrary Firefox databases or
the storage of another extension. Each extension receives an isolated namespace
with explicit capability grants, quotas, schema/version ownership, migration,
backup, inspection, export, and deletion controls. Stored information does not
become trusted evidence merely because a privileged extension wrote it; all
later journal contributions still identify their source and provenance.
The built-in Velvet Hammer extension separately owns durable policy and
investigation storage. Trust decisions remain structured and auditable even
when their supporting evidence comes from an extension's general store.
## ADR-007: Users can initiate evidence capture
Browsec must provide an unforgeable browser-chrome action available on both
successful and failed TLS connections. Its working label is **Record security
concern**; final wording requires user research. It must not prematurely assert
that the site is insecure.
Activation freezes a browser-produced observation of the current security
context and opens the protected investigation surface. The record may include
TLS facts, presented and constructed certificates, path analysis, applicable
policy, timestamps, and user-supplied notes. It excludes page contents,
credentials, cookies, authorization headers, private keys, and TLS session
secrets unless a future, separately consented forensic capability explicitly
defines otherwise.
Authorized security extensions may receive the immutable capture event and add
attributed evidence or store extension-private analysis. They cannot rewrite
the browser observation or silently transmit it without a separately granted
network capability and applicable user consent.
## Deferred decisions ## Deferred decisions
- Firefox source revision and ESR release; - Firefox source revision and ESR release;
- plugin package format and signing envelope; - plugin package format and signing envelope;
- persistent policy database technology; - persistent policy and extension-private storage technology;
- P2P transport and community governance; - P2P transport and community governance;
- release governance and threshold signing; - release governance and threshold signing;
- precise UI design and accessibility treatment. - precise UI design and accessibility treatment.

View File

@ -69,6 +69,20 @@ the user's browsing targets to peers merely because a certificate validated.
Hostnames, addresses, fingerprints, and timing are separate declared disclosure Hostnames, addresses, fingerprints, and timing are separate declared disclosure
capabilities, and local policy controls which may leave the browser. capabilities, and local policy controls which may leave the browser.
Each privileged security extension has an isolated, durable, general-purpose
data store. It may retain observations and any extension-specific information
needed for future analysis; storage is not limited to formalized trust
decisions. The browser controls capability grants, quotas, inspection, export,
deletion, and network disclosure. An extension cannot access another
extension's store or treat stored material as unattributed browser fact.
The user can also initiate investigation through an unforgeable browser-chrome
control on successful or failed connections. The working action **Record
security concern** captures the current immutable security context and opens
the protected investigation UI. It records that the user requested evidence,
not that the service has already been proven unsafe. Authorized extensions may
analyse and retain the capture while preserving provenance and privacy limits.
Trust plugins control trust only. They do not gain general authority over Trust plugins control trust only. They do not gain general authority over
navigation, page contents, cookies, credentials, downloads, browser settings, navigation, page contents, cookies, credentials, downloads, browser settings,
or arbitrary Firefox internals. Their enforceable output is a scoped **trusted** or arbitrary Firefox internals. Their enforceable output is a scoped **trusted**

View File

@ -38,6 +38,10 @@ trust policy.
weaken them. weaken them.
7. Keep all decisions inspectable, revocable, exportable, and attributable. 7. Keep all decisions inspectable, revocable, exportable, and attributable.
8. Isolate research browsing from the user's everyday browser data. 8. Isolate research browsing from the user's everyday browser data.
9. Let the user begin an investigation on any connection, including one that
conventional TLS validation accepted.
10. Let privileged security extensions retain arbitrary extension-specific
evidence and analysis in isolated, user-governed storage.
## 3. Non-goals ## 3. Non-goals
@ -135,6 +139,32 @@ Every decision has a visible expiration, can be revoked immediately, and is
written to a local audit log. The investigation report stores fingerprints and written to a local audit log. The investigation report stores fingerprints and
metadata, never private keys or page contents. metadata, never private keys or page contents.
### 6.5 A valid certificate does not end investigation
The absence of a TLS warning does not prove that a service is benign or that
its certificate was expected. Browsec therefore exposes a browser-owned
**Record security concern** action on successful and failed connections. The
action captures facts rather than asserting a conclusion, then opens the same
protected investigation surface used for automatic TLS failures.
The initial capture includes the requested origin, observation time, TLS
parameters, original certificates, validation and path results, applicable
local policy, and optional user notes. It excludes browsing content and secrets.
Extensions may append attributed findings according to their capabilities.
### 6.6 Evidence storage is broader than policy storage
The formal trust-policy database stores narrow enforceable decisions. It is not
a sufficient data model for security extensions. Each privileged security
extension also receives isolated general-purpose storage for information it
chooses to collect for later security analysis.
The browser must provide quotas, storage-use visibility, export, deletion,
migration, and per-extension network controls. One extension cannot read
another extension's store. Writing data does not grant it evidentiary authority:
when stored information later enters an investigation journal, its extension
source and derivation remain visible.
## 7. Investigation page ## 7. Investigation page
### 7.1 Page structure ### 7.1 Page structure

View File

@ -68,30 +68,27 @@ replacement for the concept, architecture, or detailed design documents.
- This is still a browser-neutral research tool. It reports what Browsec would - This is still a browser-neutral research tool. It reports what Browsec would
decide but does not yet control a Firefox network connection. decide but does not yet control a Firefox network connection.
## Next milestone: named trust providers ## Next milestone: Firefox host and privileged security extensions
Add trust-store comparison without merging stores or erasing provenance. The The primary product is a Firefox downstream that hosts full-fledged security
same candidate path should be evaluated independently against providers such as: extensions. TrustLab and Velvet Hammer are the proven reference implementation,
not the final delivery environment.
- Mozilla's root program snapshot; The next milestone should establish the smallest real Firefox integration:
- the operating-system trust store;
- an explicitly imported PEM/DER anchor collection;
- the user's local allow and distrust policy;
- configured community trust providers.
The first implementation should provide: 1. Map NSS/PSM validation and certificate data into immutable `TlsFacts`.
2. Define the privileged security-extension package, identity, capability, and
1. A small trust-provider interface returning exact anchor fingerprints, local grant model.
provider identity, snapshot identity, observation time, and Boolean 3. Invoke the bounded success/failure trust hooks and enforce a fresh scoped
recognition or distrust. retry without granting arbitrary NSS database access.
2. Safe import of PEM and DER anchor collections with duplicate detection and 4. Host the irremovable Velvet Hammer root extension in unforgeable browser UI.
DER-derived metadata. 5. Provide isolated general-purpose durable storage to each privileged security
3. Independent results per provider. No implicit union of trust stores. extension, including quota, migration, inspection, export, and deletion.
4. UI comparison showing why the same path terminates differently under each 6. Implement durable, auditable Velvet Hammer policy and investigation storage.
provider. 7. Add a browser-chrome **Record security concern** action for user-initiated
5. Investigation-bundle preservation of provider and snapshot provenance. evidence capture on successful as well as failed connections.
6. Tests proving that a provider's trust cannot become anonymous global trust 8. Prove one end-to-end navigation through a deliberately broken certificate,
or escape its configured scope. user decision, stored scoped rule, and fresh connection retry.
## Later milestones ## Later milestones
@ -101,14 +98,15 @@ The first implementation should provide:
server-presented, locally stored, and downloaded certificates. server-presented, locally stored, and downloaded certificates.
- Compare investigation bundles across time for key, issuer, SAN, extension, - Compare investigation bundles across time for key, issuer, SAN, extension,
policy, and path changes. policy, and path changes.
- Add several trust-store adapters and historical snapshot comparison. - Add named trust providers, trust-store adapters, and historical snapshot
- Design durable, auditable local policy storage. comparison as optional security extensions.
- Map the proven TrustLab contracts onto Firefox NSS/PSM integration points. - Develop distributed/community trust as a later extension family rather than
a prerequisite for the browser platform.
## Resume here ## Resume here
Begin by defining the trust-provider TypeScript contract and two browserless Begin by documenting the Firefox/NSS/PSM integration seam and selecting a
reference providers: an explicit in-memory anchor set and a local distrust set. specific Firefox revision for a privileged-extension spike. In parallel, define
Feed their separately attributed results into the existing path analysis and the extension-private storage broker and the browser-produced manual evidence
display the comparison without changing the current final-decision semantics. capture record. Do not begin distributed-trust implementation before this host
platform works.

View File

@ -228,35 +228,30 @@ There were **38 passing tests**. Live checks also behaved as intended:
Use `git status --short` before new work. Existing uncommitted changes, if any, Use `git status --short` before new work. Existing uncommitted changes, if any,
must be treated as belonging to the user. must be treated as belonging to the user.
## Exact next implementation seam ## Corrected next implementation seam
Implement named trust providers before adding more global policy behavior. The primary goal is the Browsec Firefox host and its privileged security-
extension platform. Distributed trust and named trust providers are later
extensions that may be implemented by us or the community; they must not delay
the browser integration.
Start with a strict TypeScript contract that accepts a candidate path and Begin with three connected designs:
immutable certificate facts, then returns an attributed Boolean recognition or
distrust result containing:
- provider ID and human name; 1. The narrow Firefox NSS/PSM adapter that creates `TlsFacts`, invokes the trust
- provider kind; chain, and performs a fresh scoped retry.
- snapshot ID/version; 2. The privileged-extension host, package/capability grants, protected UI, and
- observation or effective time; isolated general-purpose storage broker. Extensions may retain any
- exact recognized/distrusted anchor fingerprint; information needed for their security function, subject to explicit
- supporting reason codes. capabilities, quotas, inspection, export, deletion, and network controls.
3. A browser-owned **Record security concern** action that lets the user capture
immutable evidence and open Velvet Hammer even when conventional TLS
validation succeeded. User-generated concern is an observation trigger, not
a pre-written verdict that the service is unsafe.
Build two browserless reference providers first: Then connect the already implemented Velvet Hammer reference extension to this
host, add durable policy/investigation storage, and prove an end-to-end failed
1. An explicit in-memory anchor set. navigation and retry. Only after the platform works should work resume on named
2. An explicit local distrust set. or distributed trust providers.
Evaluate them independently against each candidate path. Do not union provider
stores, do not collapse conflicting results, and do not change final-decision
semantics yet. Show a comparison matrix in TrustLab and preserve provider
snapshots in investigation bundles.
After that, add safe PEM/DER anchor collection import with duplicate detection.
Only later add real Mozilla/OS adapters, AIA issuer retrieval, Name Constraints,
revocation, Certificate Transparency, historical comparisons, durable policy,
and Firefox NSS/PSM integration.
## Files to open first next session ## Files to open first next session
@ -270,4 +265,3 @@ and Firefox NSS/PSM integration.
The conceptual documents remain authoritative for broader intent: The conceptual documents remain authoritative for broader intent:
[`CONCEPT.md`](CONCEPT.md), [`ARCHITECTURE.md`](ARCHITECTURE.md), and [`CONCEPT.md`](CONCEPT.md), [`ARCHITECTURE.md`](ARCHITECTURE.md), and
[`DESIGN.md`](DESIGN.md). [`DESIGN.md`](DESIGN.md).