Skip to content

feat: classical strength for every detected algorithm (PRD-010) - #19

Merged
khalid-offset merged 5 commits into
mainfrom
feat/classical-strength
Oct 21, 2026
Merged

khalid-offset merged 5 commits into
mainfrom
feat/classical-strength

Conversation

@khalid-offset

Copy link
Copy Markdown
Contributor

Builds the rest of ENH-001 as PRD-010, approved with OD-1 (a suite is as strong as its weakest part). Stacked work from #16 is already on main.

What changes

  • Rating (internal/eval/strength.go): each suite's parts (cipher, key exchange, certificate key, MAC) are rated by NIST's method, and the word follows PRD-010 §2. Single DES is Insecure (Single DES (56-bit) cipher suites are rated Weak, not Insecure #18), and RSA-2048 suites are Acceptable.
  • API: the evaluation carries suiteStrength and keyStrength, and SSH algorithms carry strength. Moving to eval/9 means stored scans are re-evaluated on start.
  • Report and PDF read the evaluation, so both heuristic copies are deleted. The suite, group and certificate tables now show bits.
  • CLI: tls scan --details shows each suite's word, bits and weakest part.
  • Inventory and SSH report: both get a Classical strength column.
  • CBOM: algorithmProperties.classicalSecurityLevel is set, valid against the 1.6 and 1.7 schemas.
  • Fix: the live connection count no longer goes backwards. This race made TestAC02 flaky on feat(algo): classical strength by NIST's method (ENH-001 spec and calculator) #16.

QA

QA-REPORT-010:

  • go test ./...: all 44 packages pass.
  • Lint: 0 issues, on Windows and with GOOS=linux.
  • Browser journey: 217 passed, 0 failed, including the new E2E-STR-1..3.
  • Screen walk in light, dark and at 375 px.

Closes #17. Closes #18.

Progress ticks from parallel probes could arrive out of order, and the
progress write happened outside the lock, so the count shown during a
scan could drop (CI: TestAC02_ProgressIsLiveAndScanCanBeCancelled saw
8 then 7). tick keeps the maximum under the lock, and message writes its
event and progress under the lock.
A suite is as strong as its weakest part (OD-1): cipher, key exchange,
certificate key and MAC, each rated by NIST's own method (GNFS for RSA
and DH, SP 800-186 for curves, SP 800-57 for ciphers and hashes).

- eval/9: the evaluation carries suiteStrength and keyStrength; stored
  scans are re-evaluated on start
- report and PDF read the evaluation; both heuristic copies are gone
- tls scan --details shows each suite's word, bits and weakest part
- Inventory, SSH report: a Classical strength column
- CBOM: algorithmProperties.classicalSecurityLevel (1.6 and 1.7)
- single DES is Insecure (#18)
- Help, methodology, cbom-model, README, CHANGELOG; QA-REPORT-010

Closes #17. Closes #18.
crypto/x509 in 1.27.2 does not distrust compromised intermediate
certificates, and pki.Validate calls Certificate.Verify. Bumps the
go.mod toolchain (which every workflow reads) and the Dockerfile's
build image, pinned by digest.
On CI the fonts swapped in after the scroll and pushed the topic 214 px
down (E2E-STR-3). Scroll again once document.fonts is ready.
CI places the Help topic 214 px from the top on every run (20 px
locally): a layout difference, not timing. The check now states the
requirement: the page scrolled and the heading is in the top third.
@khalid-offset
khalid-offset merged commit ee275af into main Oct 21, 2026
14 checks passed
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.

Single DES (56-bit) cipher suites are rated Weak, not Insecure Show classical strength for every detected algorithm, from one cited model (ENH-001)

1 participant