Шифрування даних в ОС Android тісно пов'язане з двома проблемами: контролем доступу до карт пам'яті і перенесенням на них додатків. Багато програм містять дані активації, платіжну та конфіденційну інформацію. Її захист вимагає управління правами доступу, які не підтримуються типовою для карток файлової системою FAT32. Тому в кожній версії Android підходи до шифрування кардинально змінювалися - від повної відсутності криптографічного захисту змінних носіїв до їх глибокої інтеграції в єдиний розділ з шифруванням на льоту.
У кожного гаджета з ОС Android є свої суттєві відмінності - як в прошивці, так і на апаратному рівні. Навіть різні версії однієї моделі можуть сильно відрізнятися. Карти пам'яті теж мають свої особливості. Тому детальні керівництва з використання шифрування на одному пристрої часто не працюють без модифікацій на іншому. Універсальних методів тут не існує. Є лише загальні підходи, які і описані в даній статті.
Особлива роль карти пам'яті
До того ж це була напівзахід: багато програм переносилися частково, залишаючи частину даних у внутрішній пам'яті, а деякі (наприклад, системні або містять віджети) переносилися на картку зовсім. Сама можливість перенесення додатків залежала від їх типу (встановлене або стороннє) і внутрішньої структури. У одних каталог з одними даними відразу розташовувався окремо, а у інших - в підкаталозі самої програми.
Інтерфейс перенесення даних на карту пам'ятіЯкщо додатки інтенсивно використовували операції читання / запису, то надійність і швидкість роботи карток вже не могла задовольнити розробників. Вони навмисно робили так, що перенесення програм штатними засобами ставав неможливий. За рахунок такого хитрування їх творіння гарантовано отримувало прописку у внутрішній пам'яті з великим ресурсом перезапису і високою швидкодією.
З четвертої версії в Android з'явилася можливість вибрати, де розмістити додаток. Можна було призначити карту пам'яті як диск для установки програм за замовчуванням, але не всі прошивки коректно підтримували цю функцію. Як вона працює в конкретному пристрої - вдавалося з'ясувати лише досвідченим шляхом.
Адаптуй це!
В Android Marshmallow з'явився компроміс під назвою «адаптованості сховище» - Adoptable Storage. Це спроба Google зробити так, щоб і вівці залишилися цілі, і солдати задоволені.
Функція Adoptable Storage дозволяє об'єднати користувальницький розділ у вбудованій пам'яті з розділом на картці в один логічний том. Фактично вона створює на картці розділ ext4 або F2FS і додає його до призначеного для користувача розділу внутрішньої пам'яті. Це чисто логічна операція об'єднання, що віддалено нагадує створення складеного томи з кількох фізичних дисків в Windows.
Меню включення Adoptable StorageУ процесі об'єднання з внутрішньою пам'яттю картка переформатується. За замовчуванням весь її обсяг буде використаний в об'єднаному томі. В такому випадку файли на картці вже не можна буде прочитати на іншому пристрої - вони будуть зашифровані унікальним ключем пристрою, який зберігається всередині довіреної середовища виконання.
В якості альтернативи можна зарезервувати на картці місце під другий розділ з FAT32. Збережені на ньому файли будуть видні на всіх пристроях, як раніше.
Втім, не маркетологам вирішувати, як нам використовувати свої пристрої. Через ADB на комп'ютері з Windows функція Adoptable Storage включається в такий спосіб.
де x: y - номер карти пам'яті.
де nn - залишок обсягу у відсотках для томи FAT32.
Наприклад, команда sm partition disk: 179: 32 mixed 20 додасть до вбудованої пам'яті 80% обсягу картки і залишить на ній тому FAT32 в 1/5 її обсягу.
За замовчуванням можливість використовувати USB-OTG для створення адаптованого сховища відключена, оскільки його несподіване витяг може привести до втрати даних. Імовірність раптового відключення карти пам'яті набагато нижче через її фізичного розміщення всередині пристрою.
Якщо з додаванням об'єму змінного носія або його розбиттям на розділи виникають проблеми, то спочатку видали з нього всю інформацію про колишнє логічної розмітки. Надійно це можна зробити за допомогою лінуксових утиліти gparted. яка на комп'ютері з Windows запускається із завантажувального диска або у віртуальній машині.
Згідно офіційній політиці Google додатки можуть одночасно бути встановлені в адаптується сховище або перенесені в нього, якщо розробник вказав це в атрибуті android: installLocation. Іронія в тому, що далеко не всі власні додатки Google поки дозволяють це робити. Якихось практичних лімітів у «адаптованого сховища» в Android немає. Теоретична межа для Adoptable Storage становить дев'ять зеттабайт. Стільки немає навіть в дата-центрах, а вже карти пам'яті більшого об'єму тим більше не з'являться в найближчі роки.
Якщо після об'єднання пам'яті за допомогою Adoptable Storage скинути до заводських налаштувань, то дані на картці також пропадуть. Тому попередньо варто зробити їх бекап, а краще - відразу призначити хмарну синхронізацію.
Альтернативне шифрування даних на карті пам'яті
Тепер, коли ми розібралися з особливостями зберігання файлів на карті пам'яті в різних версіях Android, перейдемо безпосередньо до їх шифрування. Якщо у тебе девайс з шостим андроїдом і новіше, то з великою ймовірністю в ньому так чи інакше можна активувати функцію Adoptable Storage. Тоді всі дані на картці будуть зашифровані, як і у вбудованій пам'яті. Відкритими залишаться лише файли на додатковому розділі FAT32, якщо ти захотів його створити при переформатуванні картки.