I am searching for an SQL lite alternative that implements encryption more or less or of the box and has rust bindings. Do you know of any database systems that fulfill that requirement?
Firebird: 13.8. Database Encryption https://www.firebirdsql.org/file/documentation/chunk/en/refdocs/fblangref30/fblangref30-security-dbcrypt.html
Turso: https://docs.turso.tech/libsql#encryption-at-rest
Also, DuckDB devs said it was planned: https://github.com/duckdb/duckdb/discussions/4512
SQLCipher fits that bill. I had some issues with language integration but depending on what you’re using it might work for you.
The application encrypts the data, you save in the database the data encrypted. When you retrieve the info, the app decrypt it.
This makes it impossible to support any analytical SQL queries against the DB. Look into how to enable encryption at rest on whichever DB you choose.
So put an SQLite database on a Luks-encrypted partition or a Luks-encrypted filesystem in a file.
Well, sqlite
For the low low price of $2000
Depending on the application could you just mount a filesystem that supports encryption? Even if it’s just mounting a
.tar
file.Use an encryption library to decrypt the database in memory and encrypt it prior to writing it to disk. Assuming that you are not afraid of data loss due to power loss; that would be the most secure option and it works with the standard SQLite library
Or if you need more fault tolerance. The SQLite Encryption Extension (SEE) will read and write database files encrypted using 128-bit or 256-bit AES.
Encryption is usually implemented in the server or client code. Why do you want the database to handle encryption?
It is for as desktop app that stores data on a user drive.
Then the application should encrypt the data saved to the db.
I can’t think of any scenario where it would make sense for the db to handle encryption.
Encryping by the application would kill the use of a lot of sql features such as SUM.