Šifrování
Důležitou součástí zabezpečení systému iOS je šifrování. Společnost Apple využívá k šifrování dat speciální API pro ochranu dat, tzv. Data Protection API, které je současně 16 k dispozici vývojářům aplikací. Cílem API je ochrana citlivých uživatelských dat v zařízení pro případ jeho odcizení. Další metodou pro ochranu dat je využívání bezpečnostních scénářů.
Ochrana dat
Jak bylo zmíněno výše, hlavním účelem šifrování dat je jejich ochrana v případě odcizení zařízení. Kromě samotného šifrování existují různé scénáře, podle kterých mohou vývojáři zabezpečit své aplikace. Scénáře můžeme rozdělit do dvou základních skupin, které vychází z již používaného zabezpečení systému iOS. Prvním je šifrování dat a jejich zpřístupnění až po odemčení zařízení uživatelem. Alternativou je dostupnost dat i v případě uzamčeného zařízení. Vývojáři deklarují ve zdrojovém kódu ochranné třídy, tzv. Protection Class, pro rozpoznávání situací, kdy budou data dostupná a kdy nikoliv. Implementace ochranných tříd probíhá s využitím hierarchie klíčů (viz Obrázek 2.2). Základem hierarchie je UID klíč a uživatelské heslo. Každý UID klíč je unikátní pro každé zařízení se systémem iOS. Klíč je vestavěn do šifrovacího akcelerátoru a není dostupný aplikacím v zařízení. Je využíván akcelerátorem k šifrování a dešifrování dat. Po každém odemčení zařízení je uživatelské heslo šifrováno s využitím šifrovacího algoritmu PBKDF2. Výsledkem je vytvoření hesla šifrovacího klíče, který je uchováván v paměti zařízení do jeho uzamčení. UID klíč je používán také k tvorbě šifrovacího klíče zařízení, který je následně využíván k šifrování všech dat v zařízení.
Data Protection API
API pro ochranu dat, tzv. Data Protection API je využíváno k ochraně a šifrování dat v zařízení. Je navrženo tak, aby aplikace sami určovali, kdy budou soubory dešifrovány a zpřístupněny. Toho docílí přechodem definovaných ochranných tříd do již existujícího API. Ochranná třída následně informuje systém, kdy dojde k dešifrování souborů. Pro správné použití API k ochraně dat musí každá aplikace nastavit hodnotu atributu NSFileProtectionKey s použitím třídy NSFileManager.