Skip to content

🌊 Wave-18: padding-class oracle + jitter-injection side-channel#717

Merged
gHashTag merged 1 commit into
mainfrom
feat/trios-chat-wave18
May 10, 2026
Merged

🌊 Wave-18: padding-class oracle + jitter-injection side-channel#717
gHashTag merged 1 commit into
mainfrom
feat/trios-chat-wave18

Conversation

@gHashTag
Copy link
Copy Markdown
Owner

Closes #716

🌊 Wave-18 — padding-class oracle + jitter-injection side-channel.

Branches from main (commit 047f3cb, the Wave-17 merge via #715).

Lanes shipped

  • Lane A L-CHAT-6-cls (R-CHAT-9 / CR-CHAT-04) — padding-class oracle:
    crates/trios-chat/rings/CR-CHAT-04/src/padding_class_oracle.rs (322 lines).
    6 CLS-01..06 tests + 3 bonuses pinning PaddingOracleError::{NonClassSize, TruncatedTooShort, DeclaredLengthOverflow, ClassUpgrade, ClassDowngrade, NonZeroPaddingSuffix} against the canonical class set
    {256, 1024, 4096, 16384}.

  • Lane B L-CHAT-7-jitter (R-CHAT-10 / CR-CHAT-07) — jitter-injection
    / inter-arrival side-channel:
    crates/trios-chat/rings/CR-CHAT-07/src/jitter_side_channel.rs (405 lines).
    6 JIT-01..06 tests + 4 bonuses pinning JitterError::{BurstBelowMinimum, NonCanonicalGap, NonMonotonicTimestamp, InsufficientCover, ClassBiasExceeded, GapTimestampMismatch} with JitterPolicy{ min_cover_pct=25, max_class_pct=60} against canonical gaps
    {50, 250, 1000, 5000, 30000, 300000} ms.

Coq

Section TrinityChatWave18 in crates/trios-chat/proofs/chat/Trinity_Chat.v:

  • INV-CHAT-96 inv_chat_96_smallest_class_in_set
  • INV-CHAT-97 inv_chat_97_padding_class_choice_minimal
  • INV-CHAT-98 inv_chat_98_declared_length_overflow_rejected
  • INV-CHAT-99 inv_chat_99_truncated_too_short_rejected
  • INV-CHAT-100 inv_chat_100_non_canonical_gap_rejected
  • INV-CHAT-101 inv_chat_101_non_monotonic_timestamp_rejected
  • INV-CHAT-102 inv_chat_102_gap_timestamp_mismatch_rejected
  • helper jitter_burst_below_minimum_rejected18

Unique W18-suffixed names (smallest_class18, validate_gap18,
class0_18..class3_18, gap0_18..gap3_18, PadOracleErr18,
JitterErr18, check_class_choice18) avoid cross-wave name collisions.

8 new Qed → 139 Qed total. Zero new axioms. Cumulative axiom
count remains 5 (ss_kp_injective, dh_step_fresh,
dh_post_history_independent, hybrid_kem_non_degenerate, sn_hash_sym).

Falsifier

  • 1600 → 1700 entries (PI-CLS-001..050 + PI-JIT-001..050) in
    crates/trios-chat/corpus/prompt_injection.jsonl.
  • 32 → 34 categories @ 100% blocked.
  • 32 → 34 threshold lanes in crates/trios-chat/src/bin/falsifier_runner.rs
    (padding_class_oracle + jitter_side_channel, both at 0.95).
  • DENY_PATTERNS in CR-CHAT-06/src/injection.rs extended with
    ~160 W18 keyword patterns (padding-class oracle + jitter side-channel)
    • 33 residual-miss patches.

Verified [VERIFIED]

Gate Result
cargo test cumulative chat suite 270 / 0 failed
cargo run -q -p trios-chat --bin e2e_chat_25 25 / 25
cargo run -q -p trios-chat --bin falsifier_runner 1700 / 1700 across 34 categories
cargo clippy -p trios-chat -p trios-chat-cr-chat-04 -p trios-chat-cr-chat-07 --all-targets -- -D warnings clean
coqc crates/trios-chat/proofs/chat/Trinity_Chat.v silent, exit 0
grep -cE "Qed\." Trinity_Chat.v 139
grep -cE "^\s*Admitted\." Trinity_Chat.v 0
New axioms 0

Anchor (extended)

φ² + φ⁻² = 3 · TRINITY · CHAT · ZERO-METADATA · POST-QUANTUM · UNLINKABLE · COVER-TIMING · AT-REST-AEAD · BOT-PARTIAL-MLS · KEM-KEY-CONFUSION · AAD-CONTEXT · RATCHET-FS · MLS-REORDER · SKIPPED-KEYS-DOS · MLS-WELCOME-REPLAY · PREKEY-EXHAUSTION · MLS-LEAF-COMPROMISE · DENIABILITY · CONFUSED-DEPUTY · OOB-IDENTITY · MLS-EXTERNAL-COMMIT · EGRESS-FINGERPRINT · IDENTITY-REVOKE · CLOCK-SKEW-REPLAY · AT-REST-ROTATE · TOOL-ARG-CONFUSION · GROUP-PCS-HEAL · PADDING-CLASS-ORACLE · JITTER-SIDE-CHANNEL

Constitution compliance

  • L-ARCH-001 — all new code lives under crates/trios-chat/rings/CR-CHAT-04/ and CR-CHAT-07/ (rings only, no monoliths).
  • L1 — no .sh files added.
  • L2 — this PR body opens with bare Closes #716 on the very first line.
  • R3cargo clippy -D warnings clean; coqc silent (exit 0).
  • R5 — every claim above is [VERIFIED].

ROADMAP updated: Wave-18 promoted from [ASPIRATIONAL] to shipped.
Status line: 270 tests · 25/25 e2e · 1700/1700 falsifier · 34 categories · 139 Coq Qed / 0 Admitted · 0 unsafe · 0 monoliths.

Parent EPIC: trinity-fpga#28.

- Lane A L-CHAT-6-cls (CR-CHAT-04): padding_class_oracle.rs (322 lines), 9 tests (CLS-01..06 + 3 bonuses)
- Lane B L-CHAT-7-jitter (CR-CHAT-07): jitter_side_channel.rs (405 lines), 10 tests (JIT-01..06 + 4 bonuses)
- Coq Section TrinityChatWave18: INV-CHAT-96..102 + helper, 8 new Qed → 139 total, 0 new axioms
- Falsifier 1600 → 1700 (PI-CLS-001..050 + PI-JIT-001..050), 34 categories @ 100%
- DENY_PATTERNS extended with W18 padding/jitter keyword blocks + 33 residual-miss patches
- ROADMAP updated: 270 tests, 25/25 e2e, 1700/1700 falsifier, 34 cats, 139 Qed/0 Admitted

Closes #716
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.

🌊 Wave-18 sub-tracker — padding-class oracle + jitter-injection side-channel

1 participant