Powrót do strony głównej

QuarkDash: postkwantowy szyfr na TypeScript

QuarkDash — hybrydowy postkwantowy protokół oparty na Ring-LWE do wymiany kluczy, ChaCha20/Gimli do szyfrowania i SHAKE-256 do uwierzytelniania. Zapewnia 128-bitowe bezpieczeństwo z wydajnością do 2710 MB/s. Zawiera ochronę przed atakami replay i atakami side-channel.

Postkwantowy QuarkDash: Ring-LWE i kod TypeScript
Advertisement 728x90

Hybrydowy postkwantowy protokół QuarkDash: implementacja w TypeScript dla systemów wysokonakładowych

QuarkDash łączy Ring-LWE do postkwantowej wymiany kluczy, szyfry strumieniowe ChaCha20 lub Gimli, SHAKE-256 do KDF i MAC, plus ochronę przed atakami replay i timing. Rozmiar klucza publicznego ~2 KB, prywatnego ~1 KB. Ustanowienie sesji zajmuje ~8-9 ms na średnim CPU. Nadaje się dla systemów klient-serwer bez przywiązywania do architektury.

Wybór prymitywów w QuarkDash

Ring-LWE do wymiany kluczy

Ring-LWE używa pierścienia wielomianów z parametrami N=256, Q=7681, ω=7. Zapewnia 128-bitową postkwantową bezpieczeństwo. Mnożenie wielomianów poprzez NTT z O(N log N). Generacja kluczy: ~12 ms, inkapsulacja/dekapsulacja ~8-9 ms.

Szyfrowanie symetryczne

  • ChaCha20: 20 rund, 256-bitowy klucz, 12-bajtowy nonce. Wysoka prędkość w oprogramowaniu, odporność na timing-ataki.
  • Gimli: 24 rundy, 384-bitowy stan, 256-bitowa bezpieczeństwo. Szybszy niż ChaCha20 na 32-bitowych architekturach, mniej kodu dla IoT.

KDF i MAC na SHAKE-256

SHAKE-256 (oparty na Keccak) do kwantowo-odpornej pochodnej kluczy i autentykacji. KDF: SHAKE256(salt || sharedSecret || "session-key", 64) → sessionKey (32 bajty) + macKey (32 bajty). MAC: SHAKE256(macKey || header || ciphertext, 32) z constant-time weryfikacją.

Google AdInline article slot

Krok po kroku algorytm działania

Generacja kluczy

  • Wybrać a ∈ Z_Q^N.
  • Małe s, e ze współczynnikami {-1,0,1}.
  • b = a ⊗ s + e (NTT).
  • Publiczny: (a, b), prywatny: s.

KEM dla sesji

Inicjator:

  • u = a ⊗ s' + e'.
  • sharedSecret z b ⊗ s'.

Odbiorca: sharedSecret z u ⊗ s.

Szyfrowanie wiadomości

  • header = timestamp (8 bajtów) || sequence (4 bajty).
  • ciphertext = streamCipher.encrypt(plaintext, sessionKey, nonce).
  • mac = SHAKE256(macKey || header || ciphertext, 32).
  • Pakiet: header || ciphertext || mac.

Odszyfrowanie

  • Podzielić pakiet.
  • Weryfikacja MAC (constant-time).
  • timestamp w granicach 5 min.
  • sequence nie powtarza się (okno 1000).
  • plaintext = streamCipher.decrypt(ciphertext).

Środki bezpieczeństwa

  • Postkwantowa odporność: Ring-LWE bez znanych kwantowych ataków, SHAKE-256 przeciw Groverowi.
  • Kanały boczne: constant-time porównania, secureZero kluczy, bez rozgałęzień na sekretach.
  • Forward secrecy: efemeryczne klucze na sesję.
  • Ochrona przed replay: timestamp + sequence.

Ogólny poziom: 128-256 bitów przeciw klasycznym/kwantowym zagrożeniom.

Google AdInline article slot

Benchmarki wydajności

Ustanowienie sesji (ms, średnia z 1000)

| Operacja | QuarkDash (ChaCha20) | QuarkDash (Gimli) | ECDH P-256 | RSA-2048 |

|----------|----------------------|-------------------|------------|----------|

| Generacja kluczy | 12.3 | 12.1 | 1.2 | 48 |

Google AdInline article slot

| KEM inkapsulacja | 8.7 | 8.5 | 3.4 | 42 |

| KEM dekapsulacja | 9.2 | 9.0 | 3.4 | 0.1 |

Przepustowość (MB/s)

| Rozmiar | ChaCha20 | Gimli | AES-256-GCM | ECIES |

|--------|----------|-------|-------------|-------|

| 1 KB | 125 | 132 | 117 | 10 |

| 1 MB | 2380 | 2630 | 1176 | 48 |

| 10 MB | 2450 | 2710 | 1200 | 50 |

Nakłady: klucz publiczny 2 KB, prywatny 1 KB, overhead pakietu 44 bajty.

Porównanie z alternatywami

  • Vs AES: QuarkDash dodaje wbudowany KEM, forward secrecy, replay-ochronę. ChaCha20 szybszy niż AES bez sprzętu.
  • Vs ECC: odporny na Shora, mniejszy overhead pakietu (44 vs 61 bajtów), wyższa prędkość dla dużych danych.

Protokół zoptymalizowany dla TypeScript w aplikacjach webowych, z emulacją SHAKE-256 na Keccak.

Co ważne

  • Ring-LWE (N=256, Q=7681) dla 128-bit PQC z NTT-mnożeniem.
  • Podwójny wybór szyfrów: ChaCha20 dla oprogramowania, Gimli dla IoT.
  • SHAKE-256 KDF/MAC z constant-time operacjami.
  • Ochrona przed replay przez timestamp + sequence (okno 1000).
  • Benchmarki: do 2710 MB/s szyfrowania, sesja ~9 ms.

— Editorial Team

Advertisement 728x90

Czytaj dalej