# Külső szolgáltatások API-kulcsainak és az érzékeny adatoknak a tárolása

> Hogyan titkosítja a MainWP az API-kulcsokat és a bejelentkezési adatokat AES-GCM-mel, és mire terjed ki a védelem.

A MainWP a külső szolgáltatások API-kulcsait és bejelentkezési adatait a PHPSecLib könyvtárral, AES-GCM titkosítással tárolja a vezérlőpult adatbázisában. A továbbfejlesztett titkosítás a 4.5-ös verzióban jelent meg, és az iparági szabványokat követi.

## Mire terjed ki a titkosítás?

| Védett adat | Példák |
|---|---|
| Kiegészítők API-kulcsai | Biztonsági mentési szolgáltatások hitelesítő adatai, figyelőszolgáltatások API-kulcsai |
| Bejelentkezési adatok | A kiegészítőkben tárolt külső szolgáltatások fiókadatai |
| Vezérlőpult-titkok | Belső hitelesítési tokenek |

A titkosítás a vezérlőpulton tárolt adatokra vonatkozik. Nem érinti azokat az adatokat, amelyeket külső bővítmények hoznak létre a Child-webhelyeken. Például a MainWP titkosítja egy mentési kiegészítő API-kulcsát, de nem titkosítja a Child-webhelyeken keletkező mentési fájlokat.

## A titkosítás elemei

| Elem | Leírás |
|---|---|
| IV (inicializálási vektor) | 16 karakteres véletlen karaktersor, ami egyedivé teszi a titkosítást |
| Hitelesítési adat | Az adatok sértetlenségét ellenőrzi |
| AES-GCM titkosítás | Galois-számláló mód, a PHPSecLib által |
| PHPSecLib `Random` osztály | Kriptográfiailag biztonságos véletlen karaktersor előállítása |
| Kulcsfájl | A titkosítási kulcs a titkosított adatoktól külön tárolva |

## Mi az AES-GCM?

Az AES-GCM (Galois Counter Mode) az AES titkosítás egy folyamtitkosító módja. Jellemzői:

- kis késleltetés: gyors titkosítás és visszafejtés;
- nincs szükség kitöltésre (padding);
- hitelesített titkosítás (AEAD): ellenőrzi, hogy az adatot nem módosították;
- hitelesítési címke: minden titkosítás egy MAC-kódot (üzenethitelesítő kódot) állít elő.

Az AES-GCM a titkosítási kulcsból és az üzenetből titkosított szöveget, véletlen nonce-t és hitelesítési címkét készít.

## A titkosítás menete

| Lépés | Művelet |
|---|---|
| 1 | 32 karakteres titkosítási kulcs generálása a PHPSecLib `Random` osztályával |
| 2 | 16 karakteres IV generálása ugyanazzal |
| 3 | Az AES-GCM beállítása a kulccsal, az IV-vel mint nonce-szal és a hitelesítési adattal |
| 4 | Az érték (API-kulcs vagy bejelentkezési adat) titkosítása |
| 5 | Az AES hitelesítési címke előállítása |
| 6 | Az IV, a titkosított adat és a hitelesítési címke egyesítése |
| 7 | Az egyesített érték base64-kódolása és mentése az adatbázisba |
| 8 | A titkosítási kulcs mentése külön kulcsfájlba |
| 9 | A kulcsfájl hivatkozásának mentése az adatbázisba |

## Mit ad a megoldás?

- Különválasztás: a titkosítási kulcs a titkosított adatoktól elkülönítve van tárolva.
- Sértetlenség: a hitelesítési címke jelzi, ha az adatot módosították.
- Egyediség: a véletlen IV miatt azonos értékekből is különböző titkosított szöveg lesz.
- Szabvány: az AES-256 GCM a biztonságos adattárolás széles körben elfogadott módszere.

A Child-webhelyek kapcsolatának magánkulcsairól a [Magánkulcsok titkosítása](https://hub.hellowp.io/hu/plugins/mainwp/halado-privat-kulcsok-titkositasa/), a vezérlőpult és a Child-webhelyek kommunikációjáról [a kapcsolat biztonságáról szóló fejezetben](https://hub.hellowp.io/hu/plugins/mainwp/halado-kapcsolat-biztonsaga/) olvashatsz.
