Ugrás a tartalomhoz

ChaCha20

A Wikiszótárból, a nyitott szótárból


Főnév

ChaCha20 (tsz. ChaCha20s)

  1. (informatika) A ChaCha20 egy modern, nagy sebességű és erős biztonságú stream cipher (folyamrejtjelező algoritmus), amelyet Daniel J. Bernstein fejlesztett ki. A ChaCha20 célja, hogy megbízható és biztonságos alternatívája legyen a korábban népszerű, de mára elavult és sebezhető RC4 algoritmusnak. A ChaCha20 a Salsa20 továbbfejlesztett változata, amely nagyobb biztonságot és jobb teljesítményt nyújt.

Ez az algoritmus különösen népszerű mobil környezetben, modern VPN-ekben (pl. WireGuard), TLS 1.3 kapcsolatokban, valamint alkalmazásszintű titkosításban (pl. Signal, WhatsApp), ahol a biztonság mellett a gyorsaság és az alacsony erőforrás-igény is kulcsfontosságú.



🧠 Alapfogalom: Mi az a ChaCha20?

  • A ChaCha20 egy szimmetrikus kulcsú folyamrejtjelező, azaz ugyanazzal a kulccsal titkosít és visszafejt.
  • A titkosítási folyamat során egy kulcsból, egy nonce-ból (indítóérték) és egy számlálóból (counter) generál egy pszeudovéletlen kulcsfolyamot, amit XOR művelettel kombinál a titkosítandó szöveggel.



🔧 Technikai paraméterek

Tulajdonság Érték
Kulcsméret 256 bit
Nonce méret 96 bit (12 byte)
Blokkméret 512 bit (64 byte)
Számláló (block counter) 32 bit
Műveletek XOR, addíció, rotáció (ARX: Add-Rotate-XOR struktúra)

Az ARX-alapú működés miatt hatékonyan végrehajtható szoftverben, hardveres gyorsítás nélkül is.


📦 Működési elv lépésenként

  1. Az algoritmus előkészíti a belső állapotát (state):
    • 4 konstans szó (16 byte),
    • 8 szó a kulcsból (32 byte),
    • 1 szó a számlálóból (4 byte),
    • 3 szó a nonce-ból (12 byte).
  2. A ChaCha blokkfunkció 20 körön keresztül manipulálja ezt az állapotot.
  3. A végső állapotot összeadja az eredeti inicializálással.
  4. Az eredményül kapott 64 bájt a kulcsfolyam egy blokkját képezi.
  5. Az üzenet ugyanekkora részével XOR műveletet alkalmaz – ez adja a titkosított kimenetet.

Ez a folyamat ismétlődik, míg a teljes üzenet titkosításra kerül.



🔐 Miért biztonságos a ChaCha20?

  • A Salsa20 biztonsági elemzésére épül, amit évek óta kutatnak.
  • A ChaCha módosításai (jobb diffúzió, több rotáció) még erősebbé tették.
  • Nincs ismert hatékony támadás a teljes 20 körös ChaCha20 ellen.
  • Biztonságos akkor is, ha nyílt protokollban használják, például TLS-ben.



✅ Előnyök

Előny Magyarázat
Gyors szoftveres végrehajtás ARM, mobil CPU-kon kiváló teljesítmény
Hardverfüggetlen Nem kell AES-NI típusú gyorsítás
Egyszerű, stabil algoritmus Csak egyszerű műveleteket használ (XOR, ADD, ROTATE)
Biztonságos és modern Nincs ismert gyenge pont
Nyílt forráskód, szabadon használható Nem esik szabadalmi védelem alá



⚙️ ChaCha20-Poly1305 – Titkosítás + Hitelesítés

A ChaCha20-Poly1305 egy AEAD algoritmus (Authenticated Encryption with Associated Data), amely:

  • ChaCha20-t használ titkosításra,
  • Poly1305-t az üzenet hitelesítésére (MAC – Message Authentication Code).

Ez a kombináció egyszerre biztosítja: - a titkosságot (confidentiality), - a hitelesítést (authentication), - az adat integritását (integrity).

Használják például: - TLS 1.2 / 1.3 (HTTPS), - WireGuard VPN, - OpenSSH (alapértelmezett titkosító), - Signal, WhatsApp (mobilos üzenetküldés).



🛠️ Példa felhasználás – Pythonban (cryptography könyvtár)

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305
import os

key = ChaCha20Poly1305.generate_key()
nonce = os.urandom(12)
chacha = ChaCha20Poly1305(key)

plaintext = b"Ez egy titkos üzenet"
aad = b"hozzáadott adat"  # opcionális
ciphertext = chacha.encrypt(nonce, plaintext, aad)

decrypted = chacha.decrypt(nonce, ciphertext, aad)
print(decrypted.decode())

📚 Használati területek

Rendszer / Alkalmazás Használat
TLS 1.3 Titkosítás ChaCha20-Poly1305 móddal
WireGuard VPN kapcsolat titkosítása
Signal / WhatsApp Üzenet- és fájl-titkosítás
OpenSSH Alapértelmezett titkosító 7.6-tól
Tor Rejtett hálózatok titkosítása
Beágyazott eszközök Hardveres AES nélkül is gyors titkosítás



⚠️ Biztonsági megjegyzések

Hiba Következmény
Nonce újrahasználata Katasztrofális biztonsági hiba
Kulcs ismételt használata Kulcsfolyam újrahasznosul, üzenetek kiszámolhatók
Nem hitelesített titkosítás Ha Poly1305 nincs, nincs integritásvédelem

Ajánlás: mindig használd ChaCha20-Poly1305 AEAD módban!



🧠 Összefoglalás

Fogalom Jelentés
ChaCha20 Modern, gyors, biztonságos stream cipher
Kulcsméret 256 bit
Nonce 96 bit (egyszer használatos indítóérték)
Műveletek Add, Rotate, XOR (ARX)
Titkosítás módja XOR pszeudovéletlen kulcsfolyammal
ChaCha20-Poly1305 Hitelesített titkosítás AEAD formában
Használat TLS, VPN, üzenetküldés, OpenSSH
Biztonság Jelenleg nincs ismert hatékony támadás ellene
Megjegyzés Ne használd kétszer ugyanazzal a nonce-szal!



A ChaCha20 napjaink egyik legmegbízhatóbb és leggyorsabb szoftveralapú titkosító algoritmusa. Mindenhol megtalálható, ahol a biztonságos kommunikáció, egyszerű implementáció és jó teljesítmény egyszerre fontos.