A C/C++ fejlesztők számára elérhető, függőségmentes titkosítási könyvtár jelent meg, amely az OpenSSL helyett nyújt gyorsabb és könnyebb megoldást, több nyelvre is kiterjesztve a támogatást.
A probléma: A blokkolt megoldások túlterhelése
A fejlesztők gyakran találkoznak olyan esetekkel, amikor a hagyományos titkosítási könyvtárak, mint például az OpenSSL, túlságosan terhelik a projektet. A felhasználó szerint a meglévő megoldások "túl bloatedek voltak", ezért szükségessé vált egy egyszerűbb, könnyen beépíthető alternatíva.
A megoldás: Enigma könyvtár
- Multi-language support: A könyvtár elérhető ANSI C-n kívül Python, Lua, PHP és JavaScript nyelvekhez is.
- Dependency-free: Nincs szükség külső függőségekre, kivéve a Python-t, amelyhez a hashlib modul szükséges.
- Simple API: A használat egyetlen függvényre épül:
dst = enigma(src, password).
Titkosítási algoritmus és biztonság
A könyvtár titkosítási mechanizmusa három szintet tartalmaz: - afhow
- Triple-SHA key derivation: A jelszóból származtatott kulcs generálása SHA256-algoritmus segítségével.
- AES256 blokk-csere: A 16 bajtos blokkok XOR-olása Rijndael-algoritmus (AES256) alkalmazásával.
- Dynamic XOR key rotation: A 32 bajtos blokkok dinamikusan változó kulcsai, amelyek a jelszó függvényében csúsznak jobbra-balra.
A folyamat szimmetrikus, ami lehetővé teszi a be- és kititkosítást ugyanazon a kulcsra.
Teknológiai részletek
A könyvtár MIT licenc alatt terjesztésre kerül, és egyetlen fejléc-fájlból áll. A dokumentáció a README fájlban található. A fejlesztő hangsúlyozza a könyvtár biztonságát és a NIST-ben nem biztosított megoldások kiegészítését.
A könyvtár C verziója két függvényből áll, amely képes bármekkora méretű adatok titkosítására, és hibakóddal tér vissza, nem pedig kivételt dobva.