ChaCha20
Főnév
ChaCha20 (tsz. ChaCha20s)
- (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
- 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).
- A ChaCha blokkfunkció 20 körön keresztül manipulálja ezt az állapotot.
- A végső állapotot összeadja az eredeti inicializálással.
- Az eredményül kapott 64 bájt a kulcsfolyam egy blokkját képezi.
- 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.