Skip to content

security(windows): ship one immutable Authenticode-signed installer with zero recurring signing cost #250

Description

@balejosg

Summary

Introduce a fresh canonical Windows distribution path in OpenPath where each release publishes one immutable Authenticode-signed installer whose bytes never change per classroom, deployment, wrapper, or download.

Target invariant:

same OpenPath release
-> same OpenPath-Windows-Setup.exe bytes
-> same SHA-256
-> same Authenticode signature
-> no runtime PE mutation

The signing solution must preserve the project's requirement of 0 EUR recurring service cost. Preferred implementation path: a free OSS signing program such as SignPath Foundation, subject to eligibility/approval. Signing occurs in the release pipeline, never per API request.

This is a new implementation ticket. Older Windows-installer issues may be referenced for historical context only; they are not the implementation contract for this work.

OpenPath-first boundary

Per AGENTS.md:

wrapper -> OpenPath

OpenPath owns the signed installer artifact, external bootstrap contract, signature/provenance verification, release publication, Windows E2E and maintained docs. No ClassroomPath-specific concepts belong here.

Required architecture

The installer must consume deployment/enrollment context outside the signed PE bytes through a generic OpenPath bootstrap mechanism, e.g. a sidecar supplied next to the executable or an explicit installer argument.

Conceptually:

build immutable installer
-> Authenticode sign
-> verify expected publisher/signature
-> SHA-256 final signed bytes
-> publish immutable artifact + provenance

No file writes are allowed after the signature is applied.

Zero-cost constraint

Do not introduce a paid per-signature/runtime signing service under this issue. If the preferred free OSS signing provider is unavailable or the project is ineligible, fail the implementation decision explicitly rather than silently adding a recurring paid dependency.

Historical context only

Relevant earlier work may help with reconnaissance, including OpenPath #242/#247 and the existing Windows offline-installer implementation, but this ticket defines the new target architecture.

Non-goals

  • per-request Authenticode signing;
  • self-signed certificates as a public SmartScreen solution;
  • embedding classroom/deployment secrets in the signed EXE;
  • claiming SmartScreen warnings disappear immediately after first release;
  • downstream wrapper UX;
  • multi-device deployment accounting (tracked separately).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions