Есть ли способ защитить данные внутри SD-карты?

Как мы все знаем, внутреннее хранилище не является подходящим местом для хранения больших данных в Android по многим причинам, поэтому мы должны полагаться на SD-карту. Мое приложение должно хранить много небольших видео и изображений в папке кеша, поэтому я использую стандартный каталог «/sdcard/Android/cache».

Проблема в том, что внутреннее хранилище не так легко читается, SDcard вместо этого легко читается и монтируется в другом месте.

Моя идея состоит в том, чтобы переопределить классы потока входных и выходных файлов, чтобы ввести оператор xor или какой-либо другой простой код «скремблирования». Будет ли это хорошей идеей? Есть ли лучшее решение, которое не добавляет много накладных расходов?


person Zutroi    schedule 14.09.2011    source источник
comment
Смотря как. От чего вы защищаете данные от и насколько решительны ваши злоумышленники?   -  person Piskvor left the building    schedule 14.09.2011
comment
Я просто не хочу иметь там простые изображения и видеофайлы, которые может прочитать любой, просто подключив SD к ПК и изменив расширение на jpg или что-то еще, просто мне не нужно надежное шифрование, вот-вот почему я думал о простом xor   -  person Zutroi    schedule 14.09.2011


Ответы (4)


Если у вас много изображений, у вас должен быть сервер БД, вам просто нужно создать, не знаю, 32-символьный ключ для каждого изображения, а затем, когда вы записываете файлы в кеш, разделите этот ключ на 4/6/8 и писать 4/6/8 файлов вместо одного.

Таким образом, будет не так просто прочитать данные, потому что вы должны знать, какие фрагменты и порядок фрагментов находятся в БД, которая хранится во внутреннем каталоге.

Никаких накладных расходов.

person JohnUopini    schedule 14.09.2011
comment
Я ожидаю, что эта схема будет полностью небезопасной. Зачем возиться с чем-то, что не является безопасным? - person D.W.; 17.09.2011
comment
Заявитель попросил способ защитить изображения и видео, просто подключив SD-карту к компьютеру и изменив расширение. Таким образом, если у вас нет БД (которой нет на SD) и есть сотни файлов (как указал запрашивающий), у среднего пользователя нет возможности воссоздать исходный файл, так что да, это более безопасно и без ЛЮБЫХ накладных расходов. Если вы поместите изображения в listView, шифрование все замедлит, ваш отрицательный голос несправедлив, мой ответ соответствует требованиям. - person JohnUopini; 17.09.2011

Вы всегда можете попытаться зашифровать данные. Здесь есть хороший ответ, который вы можете посмотреть:

Есть ли способ безопасно хранить пользовательские данные на устройстве Android?

person Otra    schedule 14.09.2011
comment
Да, это было бы хорошо для текста или небольших данных, но мне нужно хранить видео и изображения, поэтому использование настоящей криптобиблиотеки было бы слишком медленным. - person Zutroi; 14.09.2011
comment
Вы сказали, что изображения и видео были маленькими. Насколько большими вы планируете их увеличить? - person Otra; 14.09.2011
comment
Не знаю, сотни файлов и общий размер не превысит 100 Мб (для всех файлов, а не только для одного) - person Zutroi; 14.09.2011
comment
Просто пища для размышлений, для шифрования изображения размером 100 КБ требуется около секунды, а для шифрования файла размером 3 МБ требуется около 8 секунд, но похоже, что вы нашли свое решение. - person Otra; 14.09.2011
comment
Поскольку я использую эти изображения для заполнения интерактивных списков, одна секунда — это много! В любом случае спасибо за вашу помощь (я бы проголосовал за вас, но у меня недостаточно баллов) - person Zutroi; 15.09.2011
comment
@Zutroi, откуда ты знаешь, что они слишком медленные? Вы сравнивали? Бьюсь об заклад, если вы сравните его, вы обнаружите, что производительность обычного шифрования с симметричным ключом (например, на основе AES) вполне адекватна. - person D.W.; 17.09.2011
comment
@DW Otra сказал, что 1 секунда, и я ответил, что 1 секунда - это слишком много, потому что мне нужно заполнить список, нет, я ничего не сравнивал, но ясно, что заполнение списка 200 изображениями, зашифрованными на SD-карте, не так быстро, даже если вы создайте поток для каждого из них. - person Zutroi; 18.09.2011

Поскольку файловая система, скорее всего, жирная или жирная32, защита ее на основе разрешений будет более запутанной.

Если вы храните плоские текстовые файлы, я бы посоветовал найти сложный алгоритм для кодирования и декодирования вместе с несколькими «проходами». Однако это будет не слишком безопасно.

Если вы можете изменить или преобразовать файловую систему, вы можете открыть некоторые параметры. Вы можете использовать efs от ms. Но это работает, если вы конвертируете том в ntfs. Я уверен, что Android не может прочитать эту файловую систему. Особенно с эф.

person Apollo SOFTWARE    schedule 14.09.2011
comment
Как я уже сказал, я храню изображения и видео, мне нужно что-то очень быстрое и немного безопасное (но только немного) - person Zutroi; 14.09.2011

Я рекомендую вам зашифровать данные и хранить ключ в личном хранилище.

Не используйте xor или что-то подобное наполовину. Это будет тривиально расшифровываться.

person D.W.    schedule 16.09.2011