Proteção do sistema

Bom dia. Desenvolvi um sistema para android mas estou um pouco perdido na parte de segurança. Utilizo o banco de dados sqlite e existem pastas no sistema com imagens e pdf. Como proteger esses arquivos (banco de dados, diretorio de imagens e diretorio de pdfs) para que apenas o sistema consiga acessá-los?

No aguardo. Obrigado

enquanto ao banco ele é protegido, somente sua aplicação consegue acessar-lo, o pdf já não sei, você salvou onde ? em qualquer pasta do SD CARD ? Ou na pasta que fica sua aplicação ? (Não sei se tem como fazer isso). Quando você cria o projeto você escolhe se não me engano no Android manifest a pasta do seu aplicativo, onde vai ficar o banco e etc. Exemplo: com.br.guj. Se você consegui salvar os arquivos nesta pasta(o banco SQLite é salvo lá), seus dados estarão protegidos :]

Obs: Tem como acessar atraves de programas como SuperUser de dá acesso total ao usuário do android.

Boa tarde. Obrigado pela resposta.

Meu sistema está no caminho /mnt/sdcard/data/br.com.android/

Dentro deste diretorio tem os diretorios database, relatorios(pdf) e imagens.
Quando eu acesso o cartão de memoria eu tenho acesso a todos eles.
Gostaria que não pudesse ou que fosse criptografado. Tem como?

Obs: Meu celular tem root.

Não sei dizer. Essa aplicação é pra cliente seu ? Se for, não precisa disse, por que é quase certo que seu cliente não vai ter root :stuck_out_tongue:

Blz Valeio. Obrigado pela resposta.

Olá
Infelizmente, seus dados não estão protegidos na memória externa
Por default, os arquivos gravados aí são públicos e World-readable
Com alguns apps o usuário poderá ler ou alterá-los
Se os dados forem gravados na memória interna como private então eles são protegidos
Menos, é claro de um usuário root
Abraços

Boa tarde. Reaproveitando este tópico, estou tentando criptografar meu banco de dados sqlite. Estou usando o sqlcipher mas não tenho muita noção de como utilizá-lo.
Estou utilizando este código:

[code]package com.demo.sqlcipher;

import java.io.File;
import net.sqlcipher.database.SQLiteDatabase;
import android.app.Activity;
import android.os.Bundle;

public class HelloSQLCipherActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
InitializeSQLCipher();
}

private void InitializeSQLCipher() {
    SQLiteDatabase.loadLibs(this);
    File databaseFile = getDatabasePath("demo.db");
    databaseFile.mkdirs();
    databaseFile.delete();
    SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
    database.execSQL("create table t1(a, b)");
    database.execSQL("insert into t1(a, b) values(?, ?)", new Object[]{"one for the money",
                                                                    "two for the show"});
}

}[/code]

O banco foi criptografado mas eu não consigo utilizá-lo. Quando eu vou rodar um código sql ele gera um erro como se não estivesse encontrado a tabela.
Quando eu tento acessar diretamente na console, ele da o seguinte erro: File is encrypted or is not a database.

Alguem pode me ajudar??

Obrigado