ruview @ v1105
integrity
- size
- 55.6 MiB
- downloaded
- last checked
release notes
Automated release from CI pipeline
Changes: adr-109: Dilithium PQC signatures — provenance side of post-quantum migration (#733)
Sister-ADR to ADR-108. Where ADR-108 closes the confidentiality side (Kyber key exchange), ADR-109 closes the integrity side (Dilithium signatures) of the post-quantum migration.
Replaces Ed25519 in ADR-100 cog signing with Dilithium-3 (NIST FIPS 204, ~AES-192 equivalent, CNSA 2.0 default).
Migration timeline (matches ADR-108):
- Phase 0 (NOW 2026): Ed25519 only
- Phase 1 (Q4 2026): Dual-sig (Ed25519 + Dilithium-3), accepts either
- Phase 2 (Q2 2027): BOTH required (defence in depth)
- Phase 3 (2030+): Pure Dilithium-3
Why now (backdating argument): An adversary who can break Ed25519 in 2035 with quantum computers can backdate signatures on cog binaries to install malicious code retroactively. The provenance chain breaks even for binaries deployed today. Hybrid mode prevents this: forging a 2026 cog signature still requires breaking BOTH Ed25519 AND Dilithium-3.
Manifest size: 64 B (Ed25519) + 3293 B (Dilithium-3) = ~4 kB per cog. 50-cog catalogue overhead ~200 kB. Negligible.
LOC: +270 on top of ADR-100. Combined chain budget (ADR-105+106+107+108+109): ~1,820 LOC, ~7 weeks.
ADR CHAIN (8 ADRs) complete for both confidentiality and integrity at quantum-resistant tier:
- ADR-100: cog packaging
- ADR-103: cog-person-count
- ADR-104: MCP + CLI
- ADR-105: within-installation federation
- ADR-106: DP-SGD + primitive isolation
- ADR-107: cross-installation + secure aggregation
- ADR-108: PQC key exchange (Kyber-768)
- ADR-109: PQC signatures (Dilithium-3) <-- THIS
Future ADRs catalogued:
- ADR-110: PQC hardware acceleration on Cognitum-v0
- ADR-111: Owner key rotation policy
- ADR-112: Cross-signing with external CA
- ADR-113: Multistatic placement strategy (R6 family findings -> ADR-029 amendment)
Composes:
- R14/R15 privacy + biometric requires provenance integrity
- R12 PABS / R12.1: intruder-detection cog must itself be signed
- R10/R11 long-deployment cogs most affected by backdating
- R7 mincut adversarial assumes the model is trustworthy
Honest scope:
- Dilithium ~5 years old; hybrid mitigates uncertainty
- ESP32-S3 verification ~5-10 ms estimated; needs benchmarking
- pqcrypto-dilithium Rust crate dependency
- Owner key management = highest-risk operational change
- Phase 3 Ed25519 retirement needs future decision
Coordination: ticks/tick-30.md, no PROGRESS.md edit.
Docker Image:
ghcr.io/ruvnet/RuView:27d911ca6d55a3ce9dba910495eb59a1d49a38aa
download
curl -fL -o v1105.zip https://ratatoskr.space/pkg/ruview/v1105.zip
printf '%s %s\n' '5ae116187dff5289187950ff2bf0da7e647df152e99562ac4e75f3adb613e50d' 'v1105.zip' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1105.zip"
$out = "v1105.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5ae116187dff5289187950ff2bf0da7e647df152e99562ac4e75f3adb613e50d") { throw "sha256 mismatch" }
curl -fL -o v1105.tar.gz https://ratatoskr.space/pkg/ruview/v1105.tar.gz
printf '%s %s\n' '767de6acc609f5f81c81643b40a0ffce5f76fe91c43a0bd07a54a015f15a58c6' 'v1105.tar.gz' | sha256sum -c -
$url = "https://ratatoskr.space/pkg/ruview/v1105.tar.gz"
$out = "v1105.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "767de6acc609f5f81c81643b40a0ffce5f76fe91c43a0bd07a54a015f15a58c6") { throw "sha256 mismatch" }
download via yggdrasil mesh
curl -fL -o v1105.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1105.zip
printf '%s %s\n' '5ae116187dff5289187950ff2bf0da7e647df152e99562ac4e75f3adb613e50d' 'v1105.zip' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1105.zip"
$out = "v1105.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "5ae116187dff5289187950ff2bf0da7e647df152e99562ac4e75f3adb613e50d") { throw "sha256 mismatch" }
curl -fL -o v1105.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1105.tar.gz
printf '%s %s\n' '767de6acc609f5f81c81643b40a0ffce5f76fe91c43a0bd07a54a015f15a58c6' 'v1105.tar.gz' | sha256sum -c -
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1105.tar.gz"
$out = "v1105.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "767de6acc609f5f81c81643b40a0ffce5f76fe91c43a0bd07a54a015f15a58c6") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1105.zip | zip | 55.5 MiB |
blake3-24 0206261ac5e2c085886f25568ac3b02a70d32d67304da80f
sha256 5ae116187dff5289187950ff2bf0da7e647df152e99562ac4e75f3adb613e50d
sha1 64c4c629142d71fcbeac479e1d99ebe27894ab33
|
| v1105.tar.gz | tar.gz | 54.1 MiB |
blake3-24 7e0c279659aed69eb0184ff07249581becf576ce9ba79d14
sha256 767de6acc609f5f81c81643b40a0ffce5f76fe91c43a0bd07a54a015f15a58c6
sha1 263cbcac2f0dd27e325774dc2501312a5dfef4c9
|
install
http_archive(
name = "ruview",
urls = ["https://ratatoskr.space/pkg/ruview/v1105.tar.gz"],
integrity = "sha256-dn3mrMYJ9fgcgWQ7QKD/zl92/pHEOgvQelSgFfFaWMY=",
strip_prefix = "ruview-v1105",
)
.url = "https://ratatoskr.space/pkg/ruview/v1105.tar.gz",
install via yggdrasil mesh
http_archive(
name = "ruview",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1105.tar.gz"],
integrity = "sha256-dn3mrMYJ9fgcgWQ7QKD/zl92/pHEOgvQelSgFfFaWMY=",
strip_prefix = "ruview-v1105",
)
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/ruview/v1105.tar.gz",