Como utilizar o SQLCipher para encriptação de bancos de dados na Unity

João Vitor Amorim
3 min readApr 27, 2020

O SQLCipher é uma extensão open-source para o SQLite que adiciona segurança aos bancos de dados criados, já que permite a criptografia dos dados contidos neles, onde será possível abri-los somente conhecendo a senha usada na encriptação. O SQLCipher usa o Padrão de Criptografia Avançada com chaves de 256 bits (256-bit AES), que até hoje mostrou-se praticamente impossível de quebrar com brute force (mesmo em computadores quânticos).

Sem a utilização de encriptação nos bancos de dados das suas aplicações Unity (e outras aplicações em geral) é muito fácil qualquer pessoa, que possua conhecimento sobre bancos de dados, abrir o seu banco de dados em um SGBD (Sistema de Gerenciamento de Bancos de Dados) e editar facilmente os valores contidos nele (com a mesma facilidade de edição de uma planilha de Excel, por exemplo). Já está convencido de usar bancos de dados criptografados no seu projeto? Então vamos prosseguir para a implementação na Unity.

Instalação

Caso ainda não tenha o SQLite instalado no seu projeto Unity, faça o download aqui. Após o download, descompacte o .zip e copie a pasta Plugins para dentro do seu projeto Unity, e pronto! O SQLite já está pronto para utilização. Bem simples, não? A instalação do SQLCipher é tão simples quanto.

Há um ótimo projeto open-source no Github que torna bem simples a instalação do SQLCipher na Unity. O projeto em questão é o SqlCipher4Unity3D. Faça o download do .zip do projeto clicando aqui. Após descompactá-lo, você terá uma arquivo .unitypackage. Para importá-lo para a Unity basta dar um duplo clique no arquivo, caso o seu projeto da Unity esteja aberto. Também é possível importá-lo clicando com o botão direito do mouse na janela de Assets dentro da Unity e escolhendo a opção Import Package e após isso Custom Package.

Esse projeto possui outro recurso muito interessante: ele já vem com o ORM SQLite-net incluído, o que é uma ótima coisa! Entretanto, isso pode causar erros caso você já tenha o SQLite-net incluído no seu projeto Unity. Se for notificado algum erro, apague o SQLite-net que você já possuía no seu projeto (eu não tive nenhum erro do tipo).

Ainda não sabe utilizar SQLite-net? É uma excelente ferramenta de desenvolvimento, que facilita a manipulação de bancos de dados. Caso queria saber mais sobre e aprender a utilizá-la, leia este meu outro artigo.

Utilização

Após a instalação concluída, crie um script de teste, anexe-o à um GameObject vazio em sua cena da Unity e abra o script no Visual Studio (ou no editor que você utiliza). Para realizar a utilização do SQLite e da biblioteca SQLCipher, é necessário realizar a importação para o seu arquivo de script. Você pode fazer isso digitando a seguinte linha no início do seu arquivo:

using SqlCipher4Unity3D;
using SQLite.Attribute;

Para realizar a criptografia do banco de dados com uma única senha de acesso, é bem simples, basta passar um parâmetro a mais ao abrir a conexão com o banco de dados, sendo esse parâmetro a senha desejada. Posteriormente, quando for desejado manipular o banco de dados, sempre será necessário passar essa chave como parâmetro novamente.

public class SQLiteExample : MonoBehaviour
{
private void Start()
{
var databasePath =
Application.dataPath + "/SoftwareDatabase.db";
var db = new SQLiteConnection(databasePath, "myPassword");

Nunca se esqueça de sempre passar a senha ao tentar abrir a conexão com o banco de dados, caso contrário, acontecerão erros em sua aplicação e o DB também não será aberto.

A criptografia utilizada é a padrão do SQLCipher 3, portanto, caso vá usar algum software de gerenciamento de banco de dados, escolha essa opção ao digitar a senha para abrir seus bancos de dados. Não se esqueça também que esse software deve ter suporte à abrir DBs SQLite com esse tipo de criptografia. Um software que recomendo é o DB Browser for SQLCipher. Ao instalar o DB Browser for SQLite (para bancos não encriptados), é possível optar pela instalação do DB Browser for SQLCipher também.

Links

Links citados no decorrer do artigo:

--

--

João Vitor Amorim

Career in the areas of Computer Science and Software Engineering in evolution. Working as Angular front-end developer.