Przejdź do treści
00 Kryptografia

XChaCha20-Poly1305

RFC 8439 — uwierzytelnione szyfrowanie z 192-bitowym nonce.

01 Overview

Dlaczego szyfr symetryczny do wszystkiego.

01

Szyfry symetryczne są szybkie

Uwierzytelnione szyfrowanie symetryczne działa z prędkością gigabajtów na sekundę na nowoczesnym CPU, o rzędy wielkości szybciej niż operacje z kluczem publicznym. Używanie prymitywów symetrycznych do rzeczywistych danych jest jedynym praktycznym wyborem na dużą skalę.

02

Wpływ kwantowy jest ograniczony

Algorytm Grovera daje komputerom kwantowym przyspieszenie pierwiastkowe względem szyfrów symetrycznych. 256-bitowy klucz zachowuje 128-bitowe efektywne bezpieczeństwo przeciwko atakującemu kwantowemu — daleko poza jakąkolwiek prawdopodobną siłą brute-force.

03

XChaCha20 to nowoczesny szyfr strumieniowy

ChaCha20 to szyfr strumieniowy zaprojektowany przez Daniela J. Bernsteina w 2008 roku, wybrany ze względu na prostotę, wydajność i odporność na ataki kanałami bocznymi. Jest szeroko stosowany: TLS 1.3, WireGuard, OpenSSH.

02 Details

Jak XChaCha20-Poly1305 działa w UltimaOS.

Zaszyfrowane ładunki na UltimaOS — wiadomości czatu, poczta, pliki, notatki, zadania, dokumenty i arkusze kalkulacyjne — są szyfrowane za pomocą XChaCha20-Poly1305 przy użyciu 256-bitowego klucza symetrycznego pochodzącego z sesji ML-KEM-768. Wydarzenia kalendarza i historia rozmów AI znajdują się dziś poza tą kopertą.

01

256-bitowe klucze sesji

Każda rozmowa, udostępnienie pliku lub połączenie używa nowego 256-bitowego klucza symetrycznego, pochodzącego z kapsułkowania ML-KEM-768. Na serwerze nie ma długoterminowego klucza symetrycznego.

02

192-bitowe losowe nonce

192-bitowy nonce XChaCha20 (24 bajty) jest wystarczająco duży, aby można było bezpiecznie używać losowych nonce — prawdopodobieństwo kolizji pozostaje znikome nawet po 2^64 wiadomościach z tym samym kluczem.

03

Uwierzytelnianie Poly1305

Poly1305 oblicza 16-bajtowy uwierzytelniacz na podstawie szyfrogramu i wszelkich powiązanych danych. Manipulowanie szyfrogramem lub nagłówkami unieważnia tag, a klient odbierający odmawia odszyfrowania.

04

Strumieniowanie plików

Pliki są dzielone na fragmenty, każdy z własnym nonce i tagiem Poly1305. Fragmenty można weryfikować i odszyfrowywać w dowolnej kolejności, co umożliwia pobieranie strumieniowe bez czekania na cały plik.

03 Key points

Praktyczne rozważania.

  1. 01

    Przyspieszenie sprzętowe jest wszędzie

    Nowoczesne procesory Intel, AMD i ARM zawierają instrukcje wektorowe AES-NI lub równoważne. ChaCha20 jest wybranym szyfrem dla systemów bez sprzętowego AES (urządzenia mobilne) lub dla odporności na ataki kanałami bocznymi.

  2. 02

    Brak ponownego użycia nonce

    Generowanie nonce używa licznika na wiadomość w połączeniu z losowym prefiksem nonce. Przy 192-bitowych nonce ponowne użycie jest statystycznie niemożliwe nawet po miliardach wiadomości na sesję.

  3. 03

    Implementacja w stałym czasie

    Implementacje referencyjne ChaCha20 działają w stałym czasie, eliminując wyciek materiału klucza przez analizę czasu lub pamięci podręcznej.

  4. 04

    Audyty bibliotek

    Prymitywy kryptograficzne pochodzą z @noble — zweryfikowane, szeroko używane implementacje czystego TypeScript, przejrzane przez społeczność kryptograficzną — działające w kliencie, który możesz zbadać. Każdy może zweryfikować nasze ich użycie.

04b References

Standards and references.

05 Frequently asked

Pytania o XChaCha20-Poly1305.

Co to jest XChaCha20-Poly1305?

Short answer

XChaCha20-Poly1305 to szyfr uwierzytelnionego szyfrowania z danymi stowarzyszonymi (AEAD). Łączy szyfr strumieniowy XChaCha20 (wariant ChaCha20 z 24-bajtowym nonce) z MAC Poly1305 do uwierzytelniania. Jest określony w RFC 8439. (RFC 8439)

Dlaczego używać XChaCha20 zamiast AES-256-GCM?

Short answer

Oba są doskonałymi szyframi. XChaCha20 ma praktyczną przewagę stałoczasowych implementacji programowych bez wymogu sprzętowych instrukcji AES, co czyni go bardziej odpornym na ataki kanałami bocznymi na urządzeniach mobilnych. 192-bitowy nonce sprawia również, że konstrukcje z losowym nonce są bezpieczne.

Jaka jest efektywna długość klucza wobec komputerów kwantowych?

Short answer

Algorytm Grovera zapewnia kwadratowe przyspieszenie względem szyfrów symetrycznych. 256-bitowy klucz zachowuje 128-bitowe efektywne bezpieczeństwo kwantowe, co jest daleko poza jakąkolwiek prawdopodobną siłą brute-force — w tym komputerów kwantowych.

Jaka jest różnica między ChaCha20 a XChaCha20?

Short answer

XChaCha20 używa 192-bitowego nonce (24 bajty) zamiast 96-bitowego nonce ChaCha20 (12 bajtów). Dodatkowe bity nonce są wyprowadzane przez uruchomienie ChaCha20 z kluczem pochodnym. Dłuższy nonce pozwala na bezpieczne generowanie losowych nonce bez obaw o wyczerpanie.

Co to jest Poly1305?

Short answer

Poly1305 to szybka uniwersalna funkcja skrótu zaprojektowana przez Daniela J. Bernsteina. W konstrukcjach AEAD, takich jak XChaCha20-Poly1305, Poly1305 oblicza 16-bajtowy uwierzytelniacz na podstawie szyfrogramu, który dowodzi, że szyfrogram nie został zmodyfikowany.

Czy XChaCha20-Poly1305 jest używany poza UltimaOS?

Short answer

Tak. TLS 1.3 (RFC 8446) obsługuje ChaCha20-Poly1305 jako zestaw szyfrów. WireGuard VPN używa wyłącznie ChaCha20-Poly1305. OpenSSH używa ChaCha20-Poly1305 od wersji 6.5.

Co jeśli wystąpi kolizja Poly1305?

Short answer

Poly1305 to uniwersalna funkcja skrótu; jej wynik jest niepodrabialny przy standardowych założeniach kryptograficznych. Nawet gdyby wystąpiła kolizja (prawdopodobieństwo ~2^-128), nie pozwoliłoby to na fałszerstwo bez złamania samego Poly1305, co oznaczałoby złamanie AES.

Wolny na zawsze

Wolny dla osób i rodzin. Na zawsze.

Żadnych reklam, danych, czasu próbnego. Konta indywidualne i rodzinne są bezpłatne - na stałe. Organizacje płacą za miejsce i to je finansuje.

Poproś o konto Invite - tylko podczas skalowania