Download do SQLite Cipher: Como criptografar seu banco de dados SQLite
O SQLite é um popular mecanismo de banco de dados incorporado que é amplamente utilizado por muitos aplicativos e dispositivos. No entanto, o SQLite não fornece nenhuma criptografia interna ou proteção por senha para os arquivos do banco de dados. Isso significa que qualquer pessoa que tenha acesso ao arquivo de banco de dados pode ler ou modificar os dados sem nenhuma restrição.
Se você deseja proteger seus dados confidenciais contra acesso não autorizado, você precisa criptografar seu banco de dados SQLite. Uma maneira de fazer isso é usar o SQLite Cipher, uma extensão de segurança do SQLite que adiciona criptografia AES de 256 bits de arquivos de banco de dados e outros recursos de segurança.
sqlite cipher download
Download File: https://urlcod.com/2vRxIv
O que é Cifra SQLite?
SQLite Cipher é um fork independente do SQLite que adiciona criptografia AES de 256 bits de arquivos de banco de dados e outros recursos de segurança como:
Criptografia instantânea
Detecção de adulteração
sanitização de memória
Derivação de chave forte
O SQLite Cipher é baseado no SQLite e os recursos estáveis de versão upstream são periodicamente integrados. Embora o SQLite Cipher seja mantido como uma versão separada da árvore de origem, o projeto minimiza as alterações no código SQLite principal sempre que possível.
O SQLite Cipher é mantido pela Zetetic, LLC, e informações e documentação adicionais estão disponíveis no site oficial .
Recursos do SQLite Cipher
Algumas das principais características do SQLite Cipher são:
Desempenho rápido com apenas 5-15% de sobrecarga para criptografia em muitas operações
100% dos dados no arquivo de banco de dados são criptografados
Boas práticas de segurança (modo CBC, HMAC, derivação de chave)
Configuração zero e criptografia no nível do aplicativo
Algoritmos fornecidos pela biblioteca de criptografia OpenSSL revisada por pares
Provedores de criptografia configuráveis
Compatibilidade com bancos de dados SQLite padrão
Possibilidade de converter de um banco de dados de texto simples (SQLite padrão) para um banco de dados SQLite Cipher criptografado usando ATTACH e a função de conveniência sqlcipher_export()
Benefícios da Cifra SQLite
Alguns dos benefícios de usar o SQLite Cipher são:
Você pode proteger seus dados contra acesso não autorizado, roubo ou adulteração
Você pode cumprir os regulamentos e padrões de privacidade de dados
Você pode usar a mesma sintaxe SQL e API do SQLite padrão
Você pode aproveitar os recursos e benefícios existentes do SQLite, como portabilidade, confiabilidade, desempenho e simplicidade
Você pode escolher entre diferentes plataformas e linguagens compatíveis com SQLite Cipher, como C/C++, Obj-C, QT, Win32/.NET, Java, Python, Ruby, Linux, macOS , iOS e Mac Catalyst , Android, iOS .NET e Android .NET
Você pode obter suporte da comunidade ou comprar pacotes e licenças oficiais da Zetetic
Como instalar o SQLite Cipher
: : ] .
Pré-requisitos
Antes de instalar o SQLite Cipher, você precisa ter os seguintes pré-requisitos:
Visual Studio 2019 ou posterior
OpenSSL 1.1.1 ou posterior
git
Baixando o SQLite Cipher
Para baixar o SQLite Cipher, você precisa clonar o repositório GitHub do SQLite Cipher usando o seguinte comando:
git clone
Isso criará uma pasta chamada sqlcipher em seu diretório atual. Você também pode baixar o arquivo zip da página do GitHub e extraí-lo para uma pasta de sua escolha.
Construindo Cifra SQLite
Para construir o SQLite Cipher, você precisa abrir o arquivo de solução do Visual Studio localizado em sqlcipher\sqlite3\sqlite3.sln. Você pode escolher a configuração Debug ou Release e a plataforma x86 ou x64. Em seguida, você precisa criar a solução pressionando F7 ou selecionando Build Solution no menu Build.
Isso criará um arquivo de biblioteca estático denominado sqlite3.lib em sqlcipher\sqlite3\Debug ou sqlcipher\sqlite3\Release dependendo de sua configuração. Você também pode criar um arquivo de biblioteca dinâmica denominado sqlite3.dll alterando as propriedades do projeto para usar /MD em vez de /MT e /LD em vez de /MTd.
Agora você pode usar SQLite Cipher em seus aplicativos vinculando ao arquivo de biblioteca e incluindo o arquivo de cabeçalho sqlite3.h.
Como usar a cifra SQLite
Nesta seção, mostraremos como usar o SQLite Cipher em um aplicativo C/C++ usando o Visual Studio. Para outros idiomas e plataformas, consulte o .
Criando um banco de dados criptografado
Para criar um banco de dados criptografado usando o SQLite Cipher, você precisa seguir os seguintes passos:
Inclua o arquivo de cabeçalho sqlite3.h em seu código-fonte.
Link para o arquivo de biblioteca sqlite3.lib ou sqlite3.dll nas configurações do seu projeto.
Abra uma conexão de banco de dados usando sqlite3_open() ou sqlite3_open_v2() e especifique um nome de arquivo para seu banco de dados.
Defina a chave de criptografia para seu banco de dados usando sqlite3_key() ou sqlite3_key_v2() e passe um ponteiro para seus dados de chave e seu comprimento.
Crie tabelas e insira dados em seu banco de dados normalmente usando comandos SQL.
Feche a conexão com o banco de dados usando sqlite3_close() ou sqlite3_close_v2().
Aqui está um exemplo de criação de um banco de dados criptografado chamado test.db com uma chave "secret":
#include "sqlite3.h" int main(void) // Declara variáveis sqlite3 *db; char *err_msg = NULL; int rc; // Abre conexão com o banco de dados rc = sqlite3_open("test.db", &db); if (rc != SQLITE_OK) fprintf(stderr, "Não foi possível abrir o banco de dados: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); retornar 1; // Definir chave de criptografia rc = sqlite3_key(db, "secret", 6); if (rc != SQLITE_OK) fprintf(stderr, "Não é possível definir a chave: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); retornar 1; // Cria a tabela char *sql = "CREATE TABLE Users(Id INTEGER PRIMARY KEY, Name TEXT);"; rc = sqlite3_exec(db, sql, NULL, NULL, &err_msg); if (rc!= SQLITE_OK) fprintf(stderr, "Erro SQL: %s\n", err_msg); sqlite3_free(err_msg); sqlite3_close(db); retornar 1; // Inserir dados sql = "INSERT INTO Users VALUES(1, 'Alice');" "INSERT INTO Users VALUES(2, 'Bob');" "INSERT INTO Users VALUES(3, 'Charlie');"; rc = sqlite3_exec(db, sql, NULL, NULL, &err_msg); if (rc!= SQLITE_OK) fprintf(stderr, "Erro SQL: %s\n", err_msg); sqlite3_free(err_msg); sqlite3_close(db); retornar 1; // Fecha a conexão com o banco de dados sqlite3_close(db); retornar 0;
Você pode verificar se seu banco de dados está criptografado abrindo-o com um editor hexadecimal ou uma ferramenta SQLite padrão. Você deve ver bytes aleatórios em vez de texto legível.
Abrindo um banco de dados criptografado
Para abrir um banco de dados criptografado usando o SQLite Cipher, você precisa seguir os seguintes passos:
Inclua o arquivo de cabeçalho sqlite3.h em seu código-fonte.
Link para o arquivo de biblioteca sqlite3.lib ou sqlite3.dll nas configurações do seu projeto.
Abra uma conexão de banco de dados usando sqlite3_open() ou sqlite3_open_v2() e especifique o nome do arquivo de seu banco de dados criptografado.
Defina a chave de criptografia para seu banco de dados usando sqlite3_key() ou sqlite3_key_v2() e passe um ponteiro para seus dados de chave e seu comprimento.
Consulte e atualize dados em seu banco de dados normalmente usando comandos SQL.
Feche a conexão com o banco de dados usando sqlite3_close() ou sqlite3_close_v2().
Aqui está um exemplo de abertura de um banco de dados criptografado chamado test.db com uma chave "secret" e imprimindo os nomes dos usuários:
#include "sqlite3.h" // Função de retorno de chamada para imprimir os resultados da consulta static int callback(void *NotUsed, int argc, char argv, char azColName) int i; for (i = 0; i
Você deve ver a seguinte saída:
Nome = Alice Nome = Bob Nome = Charlie
Alterando a chave de criptografia
Para alterar a chave de criptografia de um banco de dados existente usando o SQLite Cipher, você precisa executar as seguintes etapas:
Inclua o arquivo de cabeçalho sqlite3.h em seu código-fonte.
Link para o arquivo de biblioteca sqlite3.lib ou sqlite3.dll nas configurações do seu projeto.
Abra uma conexão de banco de dados usando sqlite3_open() ou sqlite3_open_v2() e especifique o nome do arquivo de seu banco de dados criptografado.
Defina a chave de criptografia atual para seu banco de dados usando sqlite3_key() ou sqlite3_key_v2() e passe um ponteiro para seus dados de chave e seu comprimento.
Defina a nova chave de criptografia para seu banco de dados usando sqlite3_rekey() ou sqlite3_rekey_v2() e passe um ponteiro para seus novos dados de chave e seu comprimento.
Feche a conexão com o banco de dados usando sqlite3_close() ou sqlite3_close_v2().
Aqui está um exemplo de alteração da chave de criptografia de um banco de dados chamado test.db de "secret" para "newsecret":
#include "sqlite3.h" int main(void) // Declara variáveis sqlite3 *db; char *err_msg = NULL; int rc; // Abre conexão com o banco de dados rc = sqlite3_open("test.db", &db); if (rc != SQLITE_OK) fprintf(stderr, "Não foi possível abrir o banco de dados: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); retornar 1; // Define a chave de criptografia atual rc = sqlite3_key(db, "secret", 6); if (rc != SQLITE_OK) fprintf(stderr, "Não é possível definir a chave: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); retornar 1; // Definir nova chave de criptografia rc = sqlite3_rekey(db, "newsecret", 8); if (rc != SQLITE_OK) fprintf(stderr, "Não é possível rechavear: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); retornar 1; // Fecha a conexão com o banco de dados sqlite3_close(db); retornar 0;
Você pode verificar se seu banco de dados está criptografado com a nova chave abrindo-o com o SQLite Cipher e fornecendo a nova chave.
Alternativas de Cifra SQLite
Se você estiver procurando outras maneiras de criptografar seu banco de dados SQLite, considere algumas das seguintes alternativas:
VER
SEE significa SQLite Encryption Extension e é uma extensão oficial desenvolvida pelos desenvolvedores do SQLite. Ele fornece criptografia AES-256 de arquivos de banco de dados e outros recursos como:
Algoritmos de criptografia conectáveis
Criptografia parcial do banco de dados
Arquivos temporários criptografados
Arquivos de diário criptografados
Arquivos de backup criptografados
O SEE não é gratuito e exige uma taxa de licença de US$ 2.000 por aplicativo. Você pode encontrar mais informações sobre o SEE no .
wxSQLite
wxSQLite é uma extensão para SQLite que fornece criptografia AES-256 de arquivos de banco de dados usando a biblioteca wxWidgets. Ele também suporta outros recursos como:
Funções definidas pelo usuário
Manipulação de BLOBs
métodos de metadados
Extensões carregáveis
Módulo R*Tree
Módulo de pesquisa de texto completo
módulo de extensão JSON1
Módulo de extensão Carray
Módulo de tabela virtual CSV
Módulo de extensão de criptografia grave (compatível com SEE)
Módulo de autenticação de usuário SQLite (userauth)
Módulo de extensão Lua SQL (lsqlite)
O wxSQLite é gratuito e de código aberto sob a licença de biblioteca wxWindows. Você pode encontrar mais informações sobre o wxSQLite no .
SQLCipher
SQLCipher é outra extensão para SQLite que fornece criptografia AES-256 de arquivos de banco de dados usando OpenSSL. Ele também suporta outros recursos como:
Autenticação de página HMAC
IVs por página
Limpeza de memória
derivação chave
Provedores de criptografia configuráveis
Compatibilidade com bancos de dados SQLite padrão
Possibilidade de converter de um banco de dados de texto simples (SQLite padrão) para um banco de dados SQLCipher criptografado usando ATTACH e a função de conveniência sqlcipher_export()
O SQLCipher é gratuito e de código aberto sob uma licença no estilo BSD para uso não comercial. Para uso comercial, você precisa adquirir uma licença da Zetetic. Você pode encontrar mais informações sobre o SQLCipher no .
Desempenho da Cifra SQLite
Nesta seção, discutiremos alguns aspectos do desempenho do SQLite Cipher e como otimizá-lo.
sobrecarga de criptografia
O SQLite Cipher adiciona alguma sobrecarga às operações do banco de dados devido à criptografia e descriptografia dos dados. A quantidade exata de sobrecarga depende de vários fatores, como:
O tamanho e a complexidade das consultas
O número e o tipo de índices
O algoritmo e o modo de criptografia
O comprimento da chave e o método de derivação
O ambiente de hardware e software
Em geral, o SQLite Cipher funciona bem com apenas 5 a 15% de sobrecarga para criptografia em muitas operações.No entanto, algumas operações podem incorrer em mais sobrecarga, como:
Criando ou descartando tabelas ou índices
Aspirar ou desfragmentar o banco de dados
Inserir ou atualizar grandes quantidades de dados
Executar varreduras completas de tabelas ou junções sem índices
Para medir o desempenho do SQLite Cipher, você pode usar ferramentas como . Você também pode comparar o desempenho do SQLite Cipher com o SQLite padrão ou outras extensões de criptografia usando as mesmas ferramentas.
Dicas de desempenho
Para otimizar o desempenho do SQLite Cipher, você pode seguir algumas dessas dicas:
Use um dispositivo de armazenamento rápido e confiável para seu arquivo de banco de dados
Evite criptografia e descriptografia desnecessárias usando texto simples para dados ou colunas não confidenciais
Use índices apropriados para suas consultas e evite verificações completas de tabelas ou junções sem índices
Use instruções preparadas e parâmetros de ligação para consultas repetidas
Use transações e operações em lote para reduzir a E/S de disco e a sobrecarga de bloqueio
Ajuste o tamanho da página e os parâmetros de tamanho do cache de acordo com o tamanho dos seus dados e padrão de acesso
Aspire ou desfragmente seu banco de dados periodicamente para recuperar espaço não utilizado e melhorar o desempenho
Use as instruções PRAGMA para definir as configurações do SQLite Cipher, como cipher, kdf_iter, hmac_algorithm, etc.
Use o PRAGMA cipher_integrity_check para verificar a integridade do seu arquivo de banco de dados criptografado
Use o PRAGMA cipher_migrate para atualizar seu arquivo de banco de dados criptografado para a versão de formato mais recente, se necessário
Conclusão
Resumo
Neste artigo, aprendemos como criptografar seu banco de dados SQLite usando SQLite Cipher, uma extensão de segurança que adiciona criptografia AES de 256 bits de arquivos de banco de dados e outros recursos. Também aprendemos como instalar, usar e otimizar o SQLite Cipher no Windows usando o Visual Studio. Também discutimos algumas alternativas ao SQLite Cipher, como SEE, wxSQLite e SQLCipher.
perguntas frequentes
Aqui estão algumas perguntas frequentes sobre o SQLite Cipher:
Qual é a diferença entre SQLite Cipher e SQLCipher?
SQLite Cipher e SQLCipher são bifurcações do SQLite que fornecem criptografia de arquivos de banco de dados usando AES de 256 bits. No entanto, eles são mantidos por organizações diferentes (Zetetic for SQLCipher e Richard Hipp for SQLite Cipher) e possuem algumas diferenças em recursos, licenciamento e compatibilidade. Por exemplo, o SQLCipher oferece suporte a mais plataformas e idiomas do que o SQLite Cipher, mas o SQLite Cipher é mais compatível com os bancos de dados SQLite padrão.
Quão seguro é o SQLite Cipher?
O SQLite Cipher usa algoritmos de criptografia fortes (AES-256) e modos (CBC) para proteger seus dados contra acesso não autorizado. Ele também usa HMAC para detecção de violação, limpeza de memória para dados confidenciais, derivação de chave para fortalecimento de senha e provedores de criptografia configuráveis para flexibilidade. No entanto, nenhum sistema de criptografia é perfeito e você deve sempre seguir boas práticas de segurança, como escolher uma senha forte, armazenar sua chave com segurança, limitar o acesso ao seu arquivo de banco de dados etc.
Como posso descriptografar um banco de dados SQLite Cipher?
Para descriptografar um banco de dados SQLite Cipher, você precisa ter a chave de criptografia correta e usar o SQLite Cipher para abrir o banco de dados. Você pode usar comandos SQL para consultar e atualizar os dados como de costume. Como alternativa, você pode usar a função de conveniência sqlcipher_export() para converter um banco de dados SQLite Cipher criptografado em um banco de dados SQLite padrão de texto sem formatação usando o comando ATTACH.
Como posso criptografar um banco de dados SQLite existente?
Para criptografar um banco de dados SQLite existente, você precisa usar o SQLite Cipher para abrir o banco de dados e fornecer a chave de criptografia. Você pode então usar a função de conveniência sqlcipher_export() para converter um banco de dados SQLite padrão de texto sem formatação em um banco de dados SQLite Cipher criptografado usando o comando ATTACH.
Como posso alterar a chave de criptografia de um banco de dados SQLite Cipher?
Para alterar a chave de criptografia de um banco de dados SQLite Cipher, você precisa usar o SQLite Cipher para abrir o banco de dados e fornecer a chave de criptografia atual. Você pode usar a função sqlite3_rekey() ou sqlite3_rekey_v2() para definir uma nova chave de criptografia para o banco de dados.
Como posso verificar a integridade de um banco de dados SQLite Cipher?
Para verificar a integridade de um banco de dados SQLite Cipher, você precisa usar o SQLite Cipher para abrir o banco de dados e fornecer a chave de criptografia. Você pode usar a instrução PRAGMA cipher_integrity_check para verificar se o arquivo de banco de dados não está corrompido ou adulterado.
0517a86e26
Comments