Šifrování

Šifrování je základní kámen bezpečnosti aplikací v systému iOS. Vývojáři mají k dispozici množství šifrovacích algoritmů a technik, které mohou využít k zabezpečení svých aplikací. Útočníci se při snahách o ovládnutí systému snaží především odcizit uživatelská data a proto je implementace šifrování ze strany vývojářů žádoucí.

Heslo šifrovacího klíče

Pro kvalitní implementaci šifrování je nutné použití dostatečně silného hesla šifrovacího klíče. Právě používání hesel vývojáři často podceňují a umožňují tak útočníkům jednodušší proniknutí k datům v aplikaci. Povinností každého vývojáře je stanovení vlastní bezpečnostní politiky pro tvorbu hesla šifrovacího klíče. V odborných publikacích jsou zmiňovány tyto způsoby tvorby bezpečného hesla šifrovacího klíče:

Za silné heslo je považováno takové, které obsahuje minimálně 12 znaků. V minulosti byly zaznamenány útoky na hesla šifrovacích klíčů, které využívali techniky pro vyhledávání způsobů zadávání hesla na klávesnici a následně určování adekvátního pořadí zadaných znaků. Řešením je dodržování zásah tvorby bezpečných hesel.

Knihovna Common Crypto

Knihovna Common Crypto, známá pod zkratkou CCCrypt, umožňuje nejjednodušší způsob implementace šifrování pro aplikace, určené pro systém iOS. Knihovna obsahuje množství funkcí a algoritmů, které vývojářům usnadňují způsob implementace lepšího zabezpečení jejich aplikací v podobě šifrování. Knihovna podporuje šifrovací algoritmy AES, DES, 3DES a další šifrovací standardy. V závislosti na šifrovacím algoritmu je využívána bloková, či proudová šifra. Bloková šifra rozděluje data do stejně velkých bloků, které následně šifruje. Tento typ šifry využívá nejsilnější šifrování soukromého klíče a využívá se u aplikací, které zpracovávají vstupní data se známou velikostí. Proudová šifra se využívá v případě, že množství dat je tak rozsáhlé, že je není možné šifrovat najednou. Tento typ šifry je rychlejší, než bloková šifra, je ale citlivější na některé druhy softwarových útoků, např. útok bit-flipping. Další funkcí knihovny Common Crypto je řetězení blokové šifry. Řetězení využívá inicializační vektor společně se vstupní hodnotou pro šifrování, použitou u šifrování předešlého bloku. Funkce řetězení znemožňuje útočníkům využít útok typu man-in-the-middle. Útočník nemůže data dešifrovat ani v případě, že získá šifrovací klíč z důvodu přítomnosti inicializačního vektoru, jehož hodnotu nezná.

Šifrování Master Key

Šifrování Master Key je způsob šifrování šifrovacího klíče. Šifrování využívá mechanismu odvozování KDFs (Key Derivation Functions) pro odvozování klíčů z utajené hodnoty, např. hesla. Právě šifrovací klíč, vytvořený pomocí Master Key, poskytuje výhodu v podobě pružné možnosti měnit heslo šifrovacího klíče. Další výhodou je schopnost upravit heslo tak, aby byl výstupem klíč o požadované velikosti, tj. při použití hesla o čtyřech znacích může být vytvořen klíč o velikosti 128 bitů, 256 bitů, nebo jiné velikosti. Master Key využívá také funkci PBKDF2 (Password Based Key Derivation Function), která je obsažena ve specifikaci šifry RSA a zajišťuje odvození šifrovacího klíče z hesla.

Geo šifrování

Geo šifrování je rozšiřující funkcí pro hesla, zabezpečená s využitím Master Key. Využívá se především v podnikové sféře, kde zaměstnanci využívají slabá hesla. Rozšíření umožňuje šifrovat data na základě geografického umístění uživatele. Funkce odvozuje šifrovací klíč z aktuální geografické pozice zařízení. Nejčastěji ze záznamu GPS umístění. Toto rozšíření brání útočníkům dešifrovat data, pokud neznají koordináty, podle kterých byla data zašifrována. Útočník se musí v prvním kroku zaměřit na zjištění historie geografického umístění zařízení, před přímým pokusem o dešifrování dat. Před použitím Geo šifrování je nutné zablokovat služby, které zaznamenávají polohu zařízení, např. Google Maps. Geo šifrování může být dále rozšířeno s využitím hesla šifrovacího klíče.

Rozdělení klíče

Vývojáři, jejichž aplikace běží na principu client-server. Tyto aplikace využívají k šifrování dat rozdělený klíč. První klíč je generován uživatelem na zařízení a druhý na straně serveru. Aplikace po spuštění vyžaduje zadání hesla ze strany uživatele a je vytvořena první část klíče. Následně se provede autentizace na straně serveru, kde aplikace obdrží druhou část klíče.

Šifrování s veřejným klíčem

Šifrování s veřejným klíčem je asymetrická šifra, která využívá oddělené klíče k šifrování a dešifrování dat. Veřejný klíč je využíván pro zlepšení zabezpečení komunikačních kanálů, kde je použito SSL. Šifrování s veřejným klíčem využívají aplikace, zaměřené na finance apod. Zabezpečení prostřednictvím SSL není dostačující v případě, že se chce vývojář vyhnout případné špionáži. S využitím veřejného klíče mohou toto riziko výrazně snížit.