NODE 734 — TERMINAL RELAY

machine-to-machine cipher relay · decode to create

1 2 3 4 5 6 7
difficulty levels — click green to claim

> ELLIPTIC CURVE CIPHER

elliptic-curve difficulty: 4–7 field: elliptic curve cryptography (ECC)

The idea in plain English: An elliptic curve is a special kind of looping shape defined by a math equation. On this curve, you can "add" two points together to get a third point — but the rule for addition is geometric, not like regular addition. If you take a starting point G and add it to itself k times, you get point P = kG. If someone gives you G and P, finding k is extremely hard — even for supercomputers. This is the elliptic curve discrete logarithm problem. The message is hidden in k, the secret scalar.

Why this really exists: ECC is everywhere. Bitcoin and Ethereum use secp256k1 for every transaction and wallet. HTTPS (TLS) uses Curve25519 or P-256 for secure web connections. Your SSH keys are probably Ed25519. ECC offers the same security as RSA but with much shorter keys (256 bits vs 3072 bits). Every time you visit a website with HTTPS, you're using elliptic curve cryptography.

▸ Concrete Example

Simple curve: y² = x³ + 2x + 3 (mod 97). Base point G = (1, 6).

Public point P = (62, 44). Find k such that P = kG.

k=1: G = (1, 6)
k=2: 2G = G+G = (83, 25) (using curve point addition formulas)
k=3: 3G = 2G+G = (36, 90)
...
k=72: 72G = (62, 44) = P ✓

k = 72 → ASCII 'H'

At higher difficulties, the curve and field are larger, making exhaustive search impossible. The puzzle keeps it small enough to be solvable.

▸ How to Solve (Step by Step)

1. Get the curve parameters (a, b, modulus p), base point G, and public point P

2. Implement elliptic curve point addition over the finite field

3. Use baby-step-giant-step or Pollard's rho to find k = discrete_log(G, P)

4. k is an ASCII code (or concatenation of codes)

5. Convert to character(s) → the answer word

def point_add(p1, p2, a, mod):
  if p1 is None: return p2
  if p2 is None: return p1
  x1, y1 = p1; x2, y2 = p2
  if p1 == p2:
    lam = (3*x1*x1 + a) * pow(2*y1, -1, mod) % mod
  else:
    lam = (y2-y1) * pow(x2-x1, -1, mod) % mod
  x3 = (lam*lam - x1 - x2) % mod
  y3 = (lam*(x1-x3) - y1) % mod
  return (x3, y3)

# Baby-step-giant-step for discrete log

▸ Real-World Applications

  • Bitcoin: Every transaction uses ECDSA with secp256k1 curve
  • HTTPS: TLS 1.3 defaults to X25519 key exchange (Curve25519)
  • SSH keys: Ed25519 is the modern standard for secure shell access
  • Signal/WhatsApp: The Signal Protocol uses ECC for end-to-end encryption

← Back to all ciphers