Establish certifiable Voting provider boundary
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# Native certifiable Voting program
|
||||
|
||||
## Objective and non-claim
|
||||
|
||||
GovOPlaN may develop a native end-to-end verifiable Voting provider, but the
|
||||
current platform and bundled `local_confidential` provider are not certified
|
||||
voting products. Certification cannot be obtained by adding a label, tests, or
|
||||
general platform security controls. It applies to a precisely bounded Target
|
||||
of Evaluation (TOE), version, evaluated configuration, lifecycle, and evidence
|
||||
set assessed by an independent laboratory and certification authority.
|
||||
|
||||
The native provider must therefore be an isolated assurance component behind
|
||||
`voting.provider.<id>`, not an implicit claim over all of GovOPlaN. Voting owns
|
||||
the governed ballot lifecycle and evidence projection; the TOE owns ballot
|
||||
secrecy, cryptographic casting, verification, tallying, and the evaluated
|
||||
ceremony. Policy, Access, Identity Trust, Encryption, Forms Runtime, Workflow
|
||||
Engine, Committee, Decisions, Audit, Records, and Reporting may support the
|
||||
journey without being silently pulled into the TOE.
|
||||
|
||||
## Program stages
|
||||
|
||||
### 1. Protection profile and legal target
|
||||
|
||||
- identify election classes, jurisdictions, attack potential, voting
|
||||
principles, accessibility duties, and retention obligations;
|
||||
- select the applicable BSI Protection Profile/TR and Common Criteria target;
|
||||
- engage a recognized evaluation facility before fixing the architecture;
|
||||
- write the Security Target, assumptions, threats, organizational policies,
|
||||
security objectives, and evaluated configuration.
|
||||
|
||||
### 2. TOE and trust boundaries
|
||||
|
||||
- specify client, election server, bulletin board, verifier, tally component,
|
||||
key ceremony, build/release chain, time source, and operator boundaries;
|
||||
- define electorate preparation and archival as explicit supporting processes
|
||||
when they are outside the TOE;
|
||||
- prohibit node-local authoritative state and undeclared side channels;
|
||||
- define compromise, suspension, challenge, annulment, recovery, and evidence
|
||||
export before implementation.
|
||||
|
||||
### 3. Protocol and independent review
|
||||
|
||||
- select a published, independently reviewed end-to-end verifiable protocol;
|
||||
- use reviewed cryptographic libraries and parameter suites rather than
|
||||
designing new cryptography;
|
||||
- provide individual and universal verification without exposing vote choice;
|
||||
- define coercion-resistance claims truthfully, including what is not solved;
|
||||
- commission independent cryptographic and privacy review before production.
|
||||
|
||||
### 4. Conformance implementation
|
||||
|
||||
- implement canonical ballot/electorate/result/evidence encodings;
|
||||
- bind every cast and tally artifact to the frozen definition and electorate;
|
||||
- provide deterministic conformance fixtures, malformed-input suites,
|
||||
property tests, fault injection, and cross-implementation verification;
|
||||
- preserve receipt privacy and prevent credentials, raw votes, or private keys
|
||||
from entering GovOPlaN evidence projections;
|
||||
- expose certification state through `VotingProviderAssuranceDeclaration`.
|
||||
|
||||
### 5. Controlled lifecycle
|
||||
|
||||
- reproducible, signed builds and reviewed dependencies;
|
||||
- role-separated source, release, election, key-custody, and audit authority;
|
||||
- vulnerability handling, maintenance impact analysis, SBOM, provenance, and
|
||||
controlled update path for in-progress elections;
|
||||
- production ceremonies, backup/restore, disaster recovery, secure deletion,
|
||||
monitoring, incident response, and independently witnessed evidence.
|
||||
|
||||
### 6. Evaluation and operation
|
||||
|
||||
- laboratory pre-evaluation and gap remediation;
|
||||
- formal Common Criteria evaluation/certification of an exact TOE version;
|
||||
- target-specific deployment acceptance against the evaluated configuration;
|
||||
- certificate and maintenance-report monitoring;
|
||||
- fail-closed retirement or profile downgrade when validity expires or the
|
||||
evaluated configuration changes.
|
||||
|
||||
## Work-product gates
|
||||
|
||||
Native implementation can proceed through fixtures and research profiles, but
|
||||
the `external_certified` runtime profile remains unavailable until all of these
|
||||
are independently evidenced:
|
||||
|
||||
- approved Security Target and TOE boundary;
|
||||
- independent protocol/cryptographic review;
|
||||
- conformance and adverse-condition evidence;
|
||||
- controlled build and release provenance;
|
||||
- operational ceremony and recovery evidence;
|
||||
- valid product/version/configuration-specific certificate.
|
||||
|
||||
Research, evaluation, and certified states are separate. A provider in
|
||||
evaluation may support a bounded test profile, but cannot become certified by
|
||||
configuration or administrator override.
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# POLYAS provider profile
|
||||
|
||||
## Current integration position
|
||||
|
||||
POLYAS is the first external provider selected for high-assurance GovOPlaN
|
||||
Voting. This is an integration decision, not a certification claim. Until a
|
||||
contracted machine interface, sandbox, exact product/version binding, and
|
||||
current certificate evidence are available, the integration remains
|
||||
operator-assisted and must not advertise the `external_certified` assurance
|
||||
profile.
|
||||
|
||||
The public POLYAS material documents the Online Voting Manager, spreadsheet
|
||||
electoral-roll import, PDF/Excel result export, an election control portal,
|
||||
verification tools, SecureLink, and an electoral-board interface. It does not
|
||||
document a stable public API that is sufficient for an unattended GovOPlaN
|
||||
provider. The initial integration therefore uses the existing external
|
||||
provider contract as its target and keeps manual handoffs explicit:
|
||||
|
||||
1. GovOPlaN freezes the ballot definition and electorate hashes.
|
||||
2. An authorized election officer creates and seals the corresponding POLYAS
|
||||
election using a reviewed export.
|
||||
3. GovOPlaN records the POLYAS project reference, exact product/profile, and
|
||||
handoff evidence without storing voter credentials.
|
||||
4. Voters enter the provider through its controlled launch or invitation path.
|
||||
5. An authorized officer imports signed result and protocol artifacts.
|
||||
6. GovOPlaN verifies the frozen binding, records aggregate results and evidence,
|
||||
and retains certification, challenge, and annulment as separate actions.
|
||||
|
||||
Operator-assisted imports must be labelled as such. Browser automation or
|
||||
screen scraping is not an acceptable production API.
|
||||
|
||||
## Provider information required
|
||||
|
||||
Before implementing unattended preparation, launch, status, or result
|
||||
acquisition, obtain from POLYAS:
|
||||
|
||||
- the contracted API/protocol specification and versioning policy;
|
||||
- sandbox credentials and representative test-election fixtures;
|
||||
- supported ballot methods, weighting, voter groups, replacement, quorum, and
|
||||
threshold semantics;
|
||||
- idempotency, revision, sealing, cancellation, outcome-unknown, and retry
|
||||
behavior;
|
||||
- invitation and voter-authentication boundaries;
|
||||
- signed result, archive, audit, and verification artifact formats;
|
||||
- retention, deletion, subprocessor, location, incident, and DPA terms;
|
||||
- product/version-specific Security Target, certificate, maintenance reports,
|
||||
validity period, and evaluated configuration;
|
||||
- recovery and continuity evidence for an election in progress.
|
||||
|
||||
Credentials belong in governed credential envelopes. Raw selections, voter
|
||||
credentials, recovery codes, and private provider keys must never cross the
|
||||
Voting provider boundary.
|
||||
|
||||
## Certification gate
|
||||
|
||||
The BSI certificate `BSI-DSZ-CC-0862-V2-2021` for POLYAS CORE 2.5.0, including
|
||||
maintained versions described by its maintenance reports, was valid through
|
||||
2026-06-24. As of 2026-08-04, that validity date has passed. A new election must
|
||||
not be labelled `external_certified` from this historical certificate alone.
|
||||
|
||||
The adapter must expose a `VotingProviderAssuranceDeclaration`. The runtime
|
||||
accepts `external_certified` only when the declaration pins:
|
||||
|
||||
- the exact provider and implementation contract;
|
||||
- supported assurance profile and protocol version;
|
||||
- certification authority and reference;
|
||||
- an independently retrievable evidence reference;
|
||||
- a current validity window.
|
||||
|
||||
The declaration is frozen with the ballot and revalidated before cast and
|
||||
finalization. Expiry, revocation, provider replacement, protocol change, or
|
||||
certificate substitution fails closed and requires explicit reconciliation.
|
||||
|
||||
Authoritative references:
|
||||
|
||||
- [BSI certificate record](https://www.bsi.bund.de/SharedDocs/Zertifikate_CC/CC/Sonstiges/0862_0862V2.html)
|
||||
- [BSI TR-03169](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03169/BSI-TR-03169.pdf)
|
||||
- [POLYAS security overview](https://support.polyas.com/en/faqs/security/ensure-secure-voting/)
|
||||
- [POLYAS election control portal](https://support.polyas.com/en/online-voting-manager/features/authentication/election-control-portal/)
|
||||
|
||||
@@ -32,6 +32,12 @@ credentials inside its own assurance boundary and returns aggregate counts,
|
||||
weighted counts, a result hash, and evidence. GovOPlaN does not claim that a
|
||||
provider or deployment satisfies legal or certification requirements merely
|
||||
because the adapter contract is implemented.
|
||||
Each provider declares supported assurance profiles, protocol and
|
||||
implementation identity, and certification state. Voting pins that declaration
|
||||
when opening and revalidates it before provider casting and finalization.
|
||||
`external_certified` requires a current authority, certificate reference,
|
||||
evidence reference, and validity window; a changed, expired, or revoked claim
|
||||
fails closed.
|
||||
Core bounds provider evidence to JSON, 64 items and 64 KiB and rejects fields
|
||||
that can carry credentials, private key material, plaintext, or raw
|
||||
selections before Voting or Committee can persist the projection.
|
||||
@@ -57,6 +63,14 @@ external certification. It therefore cannot be selected for `secret` or
|
||||
the ballot opens; externally hosted providers may continue to require a
|
||||
pre-existing reference.
|
||||
|
||||
POLYAS is the selected first external provider, initially through an explicit
|
||||
operator-assisted handoff until a contracted API and sandbox are available.
|
||||
The historical POLYAS CORE 2.5 Common Criteria certificate expired on
|
||||
2026-06-24, so its reference alone cannot enable `external_certified`. See
|
||||
[the POLYAS provider profile](POLYAS_PROVIDER_PROFILE.md). Native certifiable
|
||||
development is governed by the separate
|
||||
[certifiable Voting program](CERTIFIABLE_VOTING_PROGRAM.md).
|
||||
|
||||
## Lifecycle and concurrency
|
||||
|
||||
Ballots move through `draft -> open -> closed -> certified`. A closed or
|
||||
@@ -109,4 +123,7 @@ node-local filesystem.
|
||||
- raw selections are never returned by list, detail, result, or history APIs
|
||||
- provider result keys must exactly match frozen options
|
||||
- external results require evidence and cannot exceed the frozen electorate
|
||||
- external providers must match the assurance declaration frozen at opening
|
||||
- externally certified providers must remain currently certified through
|
||||
provider casting and finalization
|
||||
- certification and annulment use separate permissions
|
||||
|
||||
Reference in New Issue
Block a user