From 38640e77c6cca7ce6699a9b50784639e5c8ef238 Mon Sep 17 00:00:00 2001 From: ccfelius Date: Tue, 25 Mar 2025 12:38:58 +0100 Subject: [PATCH 1/2] adding scripts for the demo --- scripts/demo/load_lineitem_enc.sql | 26 ++++++++++++++++++++++++++ scripts/demo/load_lineitem_naive.sql | 26 ++++++++++++++++++++++++++ scripts/demo/load_sf1.sql | 11 +++++++++++ 3 files changed, 63 insertions(+) create mode 100644 scripts/demo/load_lineitem_enc.sql create mode 100644 scripts/demo/load_lineitem_naive.sql create mode 100644 scripts/demo/load_sf1.sql diff --git a/scripts/demo/load_lineitem_enc.sql b/scripts/demo/load_lineitem_enc.sql new file mode 100644 index 0000000..1b234a1 --- /dev/null +++ b/scripts/demo/load_lineitem_enc.sql @@ -0,0 +1,26 @@ +ATTACH 'lineitem_enc_512.db' as demo_lineitem_enc_512; +CREATE SECRET key_2 ( + TYPE VCRYPT, + TOKEN 'ABCDEFGHIJKLMNOP', + LENGTH 16 +); +CREATE TABLE demo_lineitem_enc_512.lineitem AS +SELECT + encrypt(l_orderkey, 'key_2') AS l_orderkey, + encrypt(l_partkey, 'key_2') AS l_partkey, + encrypt(l_suppkey, 'key_2') AS l_suppkey, + encrypt(l_linenumber, 'key_2') AS l_linenumber, + l_quantity, + l_extendedprice, + l_discount, + l_tax, + l_returnflag, + l_linestatus, + encrypt(l_shipdate, 'key_2') AS l_shipdate, + encrypt(l_commitdate, 'key_2') AS l_commitdate, + encrypt(l_receiptdate, 'key_2') AS l_receiptdate, + encrypt(l_shipinstruct, 'key_2') AS l_shipinstruct, + encrypt(l_shipmode, 'key_2') AS l_shipmode, + l_comment +FROM lineitem; +CHECKPOINT; diff --git a/scripts/demo/load_lineitem_naive.sql b/scripts/demo/load_lineitem_naive.sql new file mode 100644 index 0000000..6a484ca --- /dev/null +++ b/scripts/demo/load_lineitem_naive.sql @@ -0,0 +1,26 @@ +ATTACH 'lineitem_naive.db' as demo_lineitem_naive; +CREATE SECRET key_2 ( + TYPE VCRYPT, + TOKEN 'ABCDEFGHIJKLMNOP', + LENGTH 16 +); +CREATE TABLE demo_lineitem_naive.lineitem AS +SELECT + encrypt_naive(l_orderkey, 'key_2') AS l_orderkey, + encrypt_naive(l_partkey, 'key_2') AS l_partkey, + encrypt_naive(l_suppkey, 'key_2') AS l_suppkey, + encrypt_naive(l_linenumber, 'key_2') AS l_linenumber, + l_quantity, + l_extendedprice, + l_discount, + l_tax, + l_returnflag, + l_linestatus, + encrypt_naive(l_shipdate, 'key_2') AS l_shipdate, + encrypt_naive(l_commitdate, 'key_2') AS l_commitdate, + encrypt_naive(l_receiptdate, 'key_2') AS l_receiptdate, + encrypt_naive(l_shipinstruct, 'key_2') AS l_shipinstruct, + encrypt_naive(l_shipmode, 'key_2') AS l_shipmode, + l_comment +FROM lineitem; +CHECKPOINT; diff --git a/scripts/demo/load_sf1.sql b/scripts/demo/load_sf1.sql new file mode 100644 index 0000000..731b819 --- /dev/null +++ b/scripts/demo/load_sf1.sql @@ -0,0 +1,11 @@ +ATTACH 'demo_sf1.db' as demo_sf1; +CALL dbgen(sf=1); +CREATE table demo_sf1.lineitem AS SELECT * from lineitem; +CREATE TABLE demo_sf1.region AS SELECT * FROM region; +CREATE TABLE demo_sf1.customer AS SELECT * FROM customer; +CREATE TABLE demo_sf1.nation AS SELECT * FROM nation; +CREATE TABLE demo_sf1.supplier AS SELECT * FROM supplier; +CREATE TABLE demo_sf1.part AS SELECT * FROM part; +CREATE TABLE demo_sf1.partsupp AS SELECT * FROM partsupp; +CREATE TABLE demo_sf1.orders AS SELECT * FROM orders; +CHECKPOINT; From d3c1c23ee1481d534db0d6c39c2dfd5cae360aa0 Mon Sep 17 00:00:00 2001 From: ccfelius Date: Wed, 26 Mar 2025 08:03:22 +0100 Subject: [PATCH 2/2] Support DATE for decryption --- src/core/functions/scalar/decrypt_vectorized.cpp | 1 + src/include/vcrypt/core/functions/common.hpp | 2 +- src/include/vcrypt/core/module.hpp | 1 + src/vcrypt_extension.cpp | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/functions/scalar/decrypt_vectorized.cpp b/src/core/functions/scalar/decrypt_vectorized.cpp index d793769..cb942f4 100644 --- a/src/core/functions/scalar/decrypt_vectorized.cpp +++ b/src/core/functions/scalar/decrypt_vectorized.cpp @@ -384,6 +384,7 @@ static void DecryptData(DataChunk &args, ExpressionState &state, counter_vec_u, cipher_vec_u, value_vec_u, result, lstate, *key, same_nonce, size); case LogicalTypeId::INTEGER: + case LogicalTypeId::DATE: return DecryptDataFixedSize(nonce_hi_u.sel, nonce_lo_u.sel, nonce_hi_data, nonce_lo_data, FlatVector::Validity(result), counter_vec_u, cipher_vec_u, value_vec_u, result, lstate, *key, same_nonce, size); diff --git a/src/include/vcrypt/core/functions/common.hpp b/src/include/vcrypt/core/functions/common.hpp index 4f4fc08..abbe3d9 100644 --- a/src/include/vcrypt/core/functions/common.hpp +++ b/src/include/vcrypt/core/functions/common.hpp @@ -2,7 +2,7 @@ #include "vcrypt/common.hpp" #include "vcrypt/core/functions/function_data/encrypt_function_data.hpp" -#define BATCH_SIZE 256 +#define BATCH_SIZE 128 namespace vcrypt { diff --git a/src/include/vcrypt/core/module.hpp b/src/include/vcrypt/core/module.hpp index 505cb8e..fe80266 100644 --- a/src/include/vcrypt/core/module.hpp +++ b/src/include/vcrypt/core/module.hpp @@ -10,6 +10,7 @@ struct CoreModule { public: static void Register(DatabaseInstance &db); static void RegisterType(DatabaseInstance &db); + static void SetBatchSize(uint32_t batch_size); }; } // namespace core diff --git a/src/vcrypt_extension.cpp b/src/vcrypt_extension.cpp index 037bb70..f875f47 100644 --- a/src/vcrypt_extension.cpp +++ b/src/vcrypt_extension.cpp @@ -41,6 +41,7 @@ static void LoadInternal(DatabaseInstance &instance) { void VcryptExtension::Load(DuckDB &db) { LoadInternal(*db.instance); } + std::string VcryptExtension::Name() { return "vcrypt"; } std::string VcryptExtension::Version() const {