Sari la conținut
00 Criptografie

XChaCha20-Poly1305

RFC 8439 — criptare autentificată cu nonce de 192 de biți.

01 Overview

De ce un cifru simetric pentru tot.

01

Cifrurile simetrice sunt rapide

Criptarea simetrică autentificată rulează la gigabytes pe secundă pe un CPU modern, cu ordine de mărime mai rapidă decât operațiile cu cheie publică. Folosirea primitivelor simetrice pentru datele reale este singura alegere practică la scară.

02

Impactul cuantic este limitat

Algoritmul lui Grover oferă calculatoarelor cuantice o accelerare de rădăcină pătrată împotriva cifrurilor simetrice. O cheie de 256 de biți păstrează securitate efectivă de 128 de biți împotriva unui atacator cuantic — mult peste orice capacitate plauzibilă de forță brută.

03

XChaCha20 este un cifru de flux modern

ChaCha20 este un cifru de flux proiectat de Daniel J. Bernstein în 2008, selectat pentru simplitatea, performanța și rezistența la atacuri pe canale laterale. Este utilizat pe scară largă: TLS 1.3, WireGuard, OpenSSH.

02 Details

Cum funcționează XChaCha20-Poly1305 în UltimaOS.

Payload-urile în plic pe UltimaOS — mesaje de chat, e-mailuri, fișiere, note, sarcini, documente și foi de calcul — sunt criptate cu XChaCha20-Poly1305 folosind o cheie simetrică de 256 de biți derivată din sesiunea ML-KEM-768. Evenimentele din calendar și istoricul conversațiilor cu AI sunt în afara acestui plic astăzi.

01

Chei de sesiune de 256 de biți

Fiecare conversație, partajare de fișiere sau apel folosește o cheie simetrică nouă de 256 de biți, derivată din încapsularea ML-KEM-768. Nu există o cheie simetrică pe termen lung pe server.

02

Nonce-uri aleatorii de 192 de biți

Nonce-ul de 192 de biți al XChaCha20 (24 de octeți) este suficient de mare pentru a permite utilizarea sigură a nonce-urilor aleatorii — probabilitatea de coliziune rămâne neglijabilă chiar și după 2^64 de mesaje cu aceeași cheie.

03

Autentificare Poly1305

Poly1305 calculează un autentificator de 16 octeți peste textul cifrat și orice date asociate. Modificarea textului cifrat sau a antetelor invalidează eticheta, iar clientul care primește refuză să decripteze.

04

Streaming de fișiere

Fișierele sunt împărțite în bucăți, fiecare cu propriul nonce și etichetă Poly1305. Bucățile pot fi verificate și decriptate în orice ordine, permițând descărcarea în flux fără a aștepta întregul fișier.

03 Key points

Considerații practice.

  1. 01

    Accelerarea hardware este peste tot

    CPU-urile moderne de la Intel, AMD și ARM includ toate AES-NI sau instrucțiuni vectoriale echivalente. ChaCha20 este cifrul ales pentru sistemele fără AES hardware (dispozitive mobile) sau pentru rezistența la canale laterale.

  2. 02

    Fără reutilizare a nonce-ului

    Generarea nonce-ului folosește un contor per mesaj combinat cu prefixul aleatoriu al nonce-ului. Cu nonce-uri de 192 de biți, reutilizarea este statistic imposibilă chiar și după miliarde de mesaje per sesiune.

  3. 03

    Implementare în timp constant

    Implementările de referință ale ChaCha20 sunt în timp constant, eliminând scurgerea de informații despre cheie prin analiza timpului sau a cache-ului.

  4. 04

    Audituri ale bibliotecilor

    Primitivele criptografice provin de la @noble — implementări pure TypeScript, verificate, utilizate pe scară largă, revizuite de comunitatea criptografică — care rulează în clientul pe care îl puteți inspecta. Oricine este liber să verifice modul în care le folosim.

04b References

Standards and references.

05 Frequently asked

Întrebări despre XChaCha20-Poly1305.

Ce este XChaCha20-Poly1305?

Short answer

XChaCha20-Poly1305 este un cifru de criptare autentificată cu date asociate (AEAD). Combină cifrul de flux XChaCha20 (variantă cu nonce de 24 de octeți a ChaCha20) cu MAC-ul Poly1305 pentru autentificare. Este specificat în RFC 8439. (RFC 8439)

De ce să folosim XChaCha20 în loc de AES-256-GCM?

Short answer

Ambele sunt cifruri excelente. XChaCha20 are avantajul practic al implementărilor software în timp constant, fără a necesita instrucțiuni hardware AES, fiind mai robust împotriva atacurilor pe canale laterale pe dispozitive mobile. Nonce-ul de 192 de biți face, de asemenea, sigure construcțiile cu nonce aleatoriu.

Care este dimensiunea efectivă a cheii împotriva calculatoarelor cuantice?

Short answer

Algoritmul lui Grover oferă o accelerare pătratică împotriva cifrurilor simetrice. O cheie de 256 de biți păstrează securitate cuantică efectivă de 128 de biți, ceea ce este mult peste orice capacitate plauzibilă de forță brută — inclusiv de către calculatoarele cuantice.

Care este diferența dintre ChaCha20 și XChaCha20?

Short answer

XChaCha20 folosește un nonce de 192 de biți (24 de octeți) în loc de nonce-ul de 96 de biți (12 octeți) al ChaCha20. Biții suplimentari ai nonce-ului sunt derivați prin rularea ChaCha20 cu o cheie derivată. Nonce-ul mai lung permite generarea sigură a nonce-urilor aleatorii fără grija epuizării.

Ce este Poly1305?

Short answer

Poly1305 este o funcție hash universală rapidă proiectată de Daniel J. Bernstein. În construcțiile AEAD precum XChaCha20-Poly1305, Poly1305 calculează un autentificator de 16 octeți peste textul cifrat care dovedește că textul cifrat nu a fost modificat.

Este XChaCha20-Poly1305 folosit în afara UltimaOS?

Short answer

Da. TLS 1.3 (RFC 8446) suportă ChaCha20-Poly1305 ca suită de cifruri. WireGuard VPN folosește ChaCha20-Poly1305 exclusiv. OpenSSH folosește ChaCha20-Poly1305 de la versiunea 6.5.

Ce se întâmplă dacă apare o coliziune Poly1305?

Short answer

Poly1305 este un hash universal; ieșirea sa este imposibil de falsificat sub ipoteze criptografice standard. Chiar dacă ar apărea o coliziune (probabilitate ~2^-128), aceasta nu ar permite falsificarea fără a sparge Poly1305 în sine, ceea ce ar implica spargerea AES.

Gratuit pentru totdeauna

Gratuit pentru persoane fizice și familii. Pentru totdeauna.

Fără reclame, fără extragere de date, fără cronometru de încercare. Conturile individuale și de familie sunt gratuite — permanent. Organizațiile plătesc pe loc, și asta finanțează totul.

Solicitați contul Doar pe invitație în timp ce ne extindem