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.
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}:
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 |