summaryrefslogtreecommitdiffstats
path: root/docs/meshbay-draft-v5.md
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-13 12:08:48 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-13 12:08:48 +0200
commit197f5e25893b845995853379125f607be18fc4e9 (patch)
tree1734dd67e3e58f0af0574dd37518c21d26985cf9 /docs/meshbay-draft-v5.md
parentf4bbc090d7e840c5dc7a838289441955cbdb7fd5 (diff)
downloadmeshbay-197f5e25893b845995853379125f607be18fc4e9.tar.gz
docs: record 11.5.6 spike — QUIC channel binding constraints
Investigated aioquic 1.3.0 before implementing the QUIC challenge/response, since the binding anchor gates the whole design. No RFC 5705 exporter exists (aioquic.tls.Context has no export_keying_material), so the preferred anchor is unavailable. Certificate access is asymmetric: the server reaches its own cert via the public tls.certificate, but the client can only reach the server's via tls._peer_certificate — a private attribute, behind a QuicConnection that exposes no tls accessor at all. That matters because binding a security check to a private API means an upgrade can remove it silently. Since make_proof() refuses an empty binding (11.5.21), a rename would fail loudly rather than degrade — but only while the refusal path stays strict. Three options recorded with a recommendation: certificate hash via the private attribute with a guard test that fails CI on upgrade, plus pinned aioquic; or bind to pk_node instead, which for QUIC may suffice since signaling is not hub-relayed — but that requires certificate pinning, as the QUIC client currently does not verify the TLS certificate at all; or upstream an exporter. No implementation started: the challenge/response needs both protocol sides, test updates in two files and multiple verification cycles. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'docs/meshbay-draft-v5.md')
0 files changed, 0 insertions, 0 deletions