2012-01-23 2 views
1

Мы пытаемся создать файл sqlite db с помощью java на сервере и зашифровать его. Затем мы отправляем зашифрованный файл db на компьютер клиента, на котором работает настольное приложение Adobe Air. Воздушное приложение затем должно иметь возможность открывать/читать из зашифрованного файла db (клиент доступен только для чтения).Как зашифровать файл sqlite db на стороне сервера java, чтобы клиент flex/air мог его прочитать?

Мы используем java 1.6, flex/actionscript 4.5 и Air 3.1.

Мы можем создать файл sqlite db на сервере и отправить его клиенту, и он может быть прочитан клиентом без проблем, если мы его не зашифруем. Но у нас возникают проблемы с частью шифрования.

Мы прочитали довольно много документации о возможности ActionScript открывать зашифрованные файлы sqlite с использованием AES + CCM (http://help.adobe.com/en_US/as3/dev/WS8AFC5E35-DC79-4082-9AD4-DE1A2B41DAAF.html#WS61068DCE-9499-4d40-82B8-B71CC35D832C). И мы пытаемся использовать криптовальный пакет java для шифрования файла sqlite db.

Шифрование важно, потому что мы не хотим, чтобы клиент мог открыть файл sqlite db с любым браузером sqlite, только с помощью нашего приложения Air.

Кто-нибудь сделал это раньше и может указать нам в правильном направлении?

+1

Является ли природа приложения очень надежной? Продвинутые пользователи смогут отменить методы, используемые для шифрования файла, и одного шифрования недостаточно для остановки определенного пользователя. –

+0

Помните, что для вашего приложения Air для расшифровки файла он должен иметь ключ дешифрования. И если ключ дешифрования находится в программе на компьютере пользователя, опытный пользователь извлечет его и опубликует. – Wyzard

+0

Мы все еще не очень обеспокоены очень определенным пользователем. На данный момент это простой пользователь. Мы думали, что к ключу будет две части, одна из которых будет скомпилирована в эфир, а другая - с файлом db. – 742626

ответ

0

Прежде всего, почему бы просто не отправить зашифрованный файл по защищенному каналу amf? Если вам требуется какой-либо дополнительный уровень безопасности, как насчет простого простого шифрования xor? Криптография становится довольно сложной и имеет две разные технологии, при которых один шифрует, а другие расшифровывает - иш - вещи могут быть волосатыми. Шифрование Xor подразумевает наличие секретного ключа. Первый символ данных привязывается к первому символу ключа, второй - ко второму и так далее, пока вы не дойдете до конца ключа, после чего следующий символ данных затем будет обработан первым характер данных и т. д., пока вы не достигнете конца потока данных. Дешифрование - это точно такой же алгоритм. Конечно, вы можете выбрать миллион способов создания ключей. Лично я не буду доверять текущим криптографическим библиотекам ActionScript, чтобы сделать это для меня. Но это только вопрос мнения. И переписать один ... Удачи в любом случае.

+0

Благодарим вас за отзыв. Мы находимся в том, чтобы заглядывать во что-то, как вы предложили. Это не вопрос отправки файла по защищенному каналу amf. Проблема в том, что как только файл попадает на компьютер клиента, он остается там, чтобы он мог снова открыть его в любое время. Поэтому мы не хотим, чтобы пользователь мог открыть файл sqlite db с помощью любого браузера sqlite; они должны только иметь возможность открыть его с помощью нашего приложения. – 742626

+0

Единственное другое предложение, которое у меня есть, это то, что вы шифруете данные, которые вы храните в sqlite db. Поэтому при вставке/обновлении вы шифруете и при выборе вы дешифруете. Если вы хотите, вы можете зайти так далеко, чтобы использовать функции шифрования и дешифрования при создании таблицы, чтобы даже ваши таблицы и столбцы были запутаны. Я думаю, что самый простой способ добиться этого - расширить адаптер jdbc sqlite.Затем ваш зашифрованный jdbc-адаптер можно использовать в вашем инструменте анализатора db (белка или aqua или что-то еще) и в java, а в скрипте действий просто шифруется всякий раз, когда вы вставляете и дешифруете, когда вы удаляете –

Смежные вопросы