Здравствуйте, андроиданы! Ситуация следующая: необходимо научить приложение сохранять в памяти телефона, шифровать и отображать html-страницы со всеми связанными потрохами (пару .js, шрифт, картинки), которые хранятся на сервере. Есть ли какой-то хитрый инструмент\инструменты для всего этого? Или лучше собирать архивы и шифровать на сервере, потом получать их в приложение и расшифровывать?
Ещё вопрос. В каком виде лучше хранить эти файлы в памяти и как можно сделать, чтобы элементов одновременно сохранялось строго определённое количество, например 5.
Спасибо.
Сохранение+шифрование+дешифрование html страницы.
Re: Сохранение+шифрование+дешифрование html страницы.
Во первых все зависит от того, что вы понимаете под шифрованием и его целью. Какой конкретно тип шифрования. Какова цель и что конкретно вы пытаетесь защитить? Локальный файл или процесс его передачи? Как вы планируете передвать ключи и т.д. Все это очень сильно зависимо, потому, что типы ключей бывают разные, как и способы их генерации/хранения/передачи, так и взаимодействие с пользователем может быть просто придумай пароль или придумай сверх надежный пароль или вообще вводи пароль каждый раз. Как бы я могу вам ответить, что вариантов сотни и что варриантов вообще нет, поскольку делать это можно и на клиенте и на сервере, все зависит от уровня безопастности и методов взаимодействия, Что вы собираетесь с этим делать? Просто зашифровать и сохранить? http://docs.oracle.com/javase/7/docs/ap ... ipher.html Вы хотите безопастную передачу архивировать должен клиент, но генерировать закрытый ключ только сервер. О том, как формируются ключи и что это вообще такое почитать можно например тут: http://www.javamex.com/tutorials/crypto ... tion.shtmlVici писал(а):Или лучше собирать архивы и шифровать на сервере, потом получать их в приложение и расшифровывать?
Хранить в памяти их можно в том виде, в котором вам нужно не более и не менее.
в чем проблема? две функции - encrypt/decrypt. Вы хотите знать как делать лучше и какие есть алгоритмы? Вам сюда : http://ru.wikipedia.org/wiki/%D0%9A%D1% ... 0%B8%D1%8FСитуация следующая: необходимо научить приложение сохранять в памяти телефона, шифровать и отображать html-страницы со всеми связанными потрохами
P.S. для начала вам нужно понимание архитектуры своего приложения и того что вы от него хотите, определить какой алгоритм реализует ваши потребности и делать... Обычный zip архив с AES шифрованием + RSA256 для генерации ключа даст вам надежный уровень защиты но один вы качесвтенную реализацию не напишите ближайшие пару лет, как минимум.

Re: Сохранение+шифрование+дешифрование html страницы.
Спасибо за быстрый ответ!altwin писал(а):Во первых все зависит от того, что вы понимаете под шифрованием и его целью. Какой конкретно тип шифрования. Какова цель и что конкретно вы пытаетесь защитить? Локальный файл или процесс его передачи? Как вы планируете передвать ключи и т.д. Все это очень сильно зависимо, потому, что типы ключей бывают разные, как и способы их генерации/хранения/передачи, так и взаимодействие с пользователем может быть просто придумай пароль или придумай сверх надежный пароль или вообще вводи пароль каждый раз. Как бы я могу вам ответить, что вариантов сотни и что варриантов вообще нет, поскольку делать это можно и на клиенте и на сервере, все зависит от уровня безопастности и методов взаимодействия, Что вы собираетесь с этим делать? Просто зашифровать и сохранить? http://docs.oracle.com/javase/7/docs/ap ... ipher.html Вы хотите безопастную передачу архивировать должен клиент, но генерировать закрытый ключ только сервер. О том, как формируются ключи и что это вообще такое почитать можно например тут: http://www.javamex.com/tutorials/crypto ... tion.shtmlVici писал(а):Или лучше собирать архивы и шифровать на сервере, потом получать их в приложение и расшифровывать?
Хранить в памяти их можно в том виде, в котором вам нужно не более и не менее.
в чем проблема? две функции - encrypt/decrypt. Вы хотите знать как делать лучше и какие есть алгоритмы? Вам сюда : http://ru.wikipedia.org/wiki/%D0%9A%D1% ... 0%B8%D1%8FСитуация следующая: необходимо научить приложение сохранять в памяти телефона, шифровать и отображать html-страницы со всеми связанными потрохами
P.S. для начала вам нужно понимание архитектуры своего приложения и того что вы от него хотите, определить какой алгоритм реализует ваши потребности и делать... Обычный zip архив с AES шифрованием + RSA256 для генерации ключа даст вам надежный уровень защиты но один вы качесвтенную реализацию не напишите ближайшие пару лет, как минимум.
Цель шифрования - предоставлять оффлайн доступ к странице только через приложение, без возможности достать из файловой системы и воспользоваться этими данными. Возможно ли просто вешать пароль на архив ещё на сервере, а потом извлекать в рантайме клиента? Насколько эта задача тяжёлая для железа телефона и правильно ли вообще защищать данные таким образом?
Нужно найти наиболее компромиссный способ, чтобы было как можно легче и ресурсоёмко, и в то же время достаточно безопасно, в разумных пределах.
Re: Сохранение+шифрование+дешифрование html страницы.
Эту работу должен делать сервер. При регистрации пользователя вы используя его пароль сохраняете на устройстве что то вроде токена, обычный xml хранящий данные о пользователе и ключ доступа, который генерируется при старте сессии(вы можете даже использовать данные gps привязки просто добавляя в "соль" или же имея в базе места разрешенные для использования...). Таким образом вы полуаете возможность идентифицировать его. Далее имея файл клиент отправляет запрос на сервер, который выполняет архивацию и генерацию открытого и закрытого ключей. Закрытый ключ используется для редактирования и не передается, открытый же ключ отсылается клиенту вместе с файлом. В случае наличия открытого ключа и токена клиента архив можно прочитать. Тут уже вы можете выполнять decrypt в фоне, чтобы пользователь не парился с вводом пароля просто показывая файл. Но это очень примитивный пример, хотя и упрощающий например share, т.е. при желании расшарить доступ - пользователь просто отправляет файл с прикрепленным открытым ключем другу регистрационные данные которого (токен) дописывается в ключ, и чтение разрешается. Т.е. можно разрешить временный или постоянный доступ без проблем. Опять же сохраняется принцип one onclick, т.е. довольно высокая надежность обеспечивается минимальными усилиями человека, который введя простой пароль получает zip, т.е AES зашифрованный RSA ключем(до 4гб, вскрыть которой сегодня практически не возможно.), при этом ему не нужно ничего знать, приложение все может делать не заметно и выдавать сообщения только при отсутсвии доступа. Но нужно понимать, что если с устройства будут удалены одновременно токен и открытый ключ к файлу - востановление в принципе не возможно и потому серверу придется хранить резервные копии с возможностью повторной генерации.
В любом слуае все это очень примитивно, в рельном приложении архитектура будет на много сложнее.
В любом слуае все это очень примитивно, в рельном приложении архитектура будет на много сложнее.
