YPC-27

Yakmesh Polynomial Checksum — 27 Trits

"Your packets now carry quantum-resistant armor."

— v2.7.1 Release Theme

Overview

YPC-27 is a quantum-hard checksum algorithm that protects YAKMESH packets from forgery. Unlike traditional CRC or hash-based checksums, YPC-27 operates in balanced ternary space using a 27-trit polynomial ring.

Forging a YPC-27 checksum requires solving the Short Integer Solution (SIS) problem — the same hard problem that underpins lattice-based post-quantum cryptography.

27
Trits
7.6T
Possible States (3²⁷)
SIS
Hardness Basis

Why 27 Trits?

Mathematical Properties

  • 27 = 3³ — perfect cube in the ternary domain
  • 3²⁷ ≈ 7.6 trillion possible checksum values
  • • Ring structure: Z[x]/(x²⁷-1) mod 3
  • • Polynomial operations provide algebraic mixing (avalanche)

Security Properties

  • Avalanche effect: Single bit flip → all 27 coefficients change
  • SIS hardness: Finding two messages with same checksum = solving SIS
  • Domain separation: Same data → different checksums per protocol
  • Quantum resistant: No known quantum speedup for SIS

Balanced Ternary

YPC-27 uses balanced ternary with values {-1, 0, +1}:

T
-1 (negative)
0
0 (neutral)
1
+1 (positive)

Example checksum: 1T011T0... (27 trits total)

Usage

Basic Checksum

import { computeYpc27, verifyYpc27 } from 'yakmesh/oracle/ypc27';

// Compute checksum for any data
const data = { message: 'Hello, YAKMESH!' };
const checksum = computeYpc27(data);
// → { trits: Int8Array(27), base64: 'YXBj...', hex: 'abc123...' }

// Verify checksum
const isValid = verifyYpc27(data, checksum);
// → true

Domain-Separated Checksums

import { 
  createStupaChecksum,
  createNakpakChecksum,
  createKhataChecksum 
} from 'yakmesh/oracle/packet-checksum';

// Same data, different domain → different checksums
const data = { content: 'test' };

const stupaChecksum = createStupaChecksum(data);
const nakpakChecksum = createNakpakChecksum(data);
const khataChecksum = createKhataChecksum(data);

// All three are different! (domain separation)
console.log(stupaChecksum !== nakpakChecksum); // true

Wrap & Unwrap Helpers

import { wrapWithChecksum, unwrapWithChecksum } from 'yakmesh/oracle/packet-checksum';

// Wrap data with checksum
const wrapped = wrapWithChecksum(myData, 'STUPA');
// → { data: myData, ypc27: 'YPC27:v1:abc123...' }

// Unwrap and verify
const { data, valid } = unwrapWithChecksum(wrapped, 'STUPA');
if (!valid) {
  console.error('Checksum mismatch - packet may be corrupted or tampered!');
}

Wire Format

YPC-27 checksums use a versioned wire format:

YPC27:v1:<base64-encoded-trits>
Part Description Example
YPC27 Algorithm identifier YPC27
v1 Version (for future algorithm updates) v1
<trits> Base64-encoded 27 trits YXBjZGVm...

Protocol Integrations

STUPA Broadcasts

Beacon messages now include ypc27 field. Verified on deserialize.

mesh/beacon-broadcast.js

NAKPAK Packets

Routed packets include checksum. Computed during padToFixedSize().

mesh/nakpak-routing.js

KHATA Protocol

ANNOUNCE, REQUEST, RESPONSE, REVOKE messages all include checksums.

security/khata-protocol.js

SHERPA Discovery

Peer discovery messages protected against tampering.

mesh/sherpa-discovery.js

Security Analysis

Attack Resistance

Attack Difficulty Notes
Brute Force 3²⁷ ≈ 7.6T operations Infeasible for online attacks
Collision (Classical) SIS-Hard Requires solving lattice problem
Collision (Quantum) No known speedup SIS believed quantum-resistant
Cross-Protocol Replay Prevented Domain separation ensures uniqueness

API Reference

oracle/ypc27.js

Export Description
computeYpc27(data) Compute 27-trit checksum for any data
verifyYpc27(data, checksum) Verify checksum matches data
tritsToBase64(trits) Convert trit array to Base64 string
base64ToTrits(b64) Convert Base64 string to trit array

oracle/packet-checksum.js

Export Description
wrapWithChecksum(data, domain) Wrap data with domain-separated checksum
unwrapWithChecksum(wrapped, domain) Unwrap and verify checksum
createStupaChecksum(msg) STUPA-domain checksum
createNakpakChecksum(pkt) NAKPAK-domain checksum
createKhataChecksum(msg) KHATA-domain checksum

Version History

Version Changes
v2.7.1 Initial release of YPC-27 checksums with STUPA, NAKPAK, KHATA integrations