Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

CryptDB's website (including latest source code): http://css.csail.mit.edu/cryptdb

Wiki: https://github.com/burrows-labs/cryptdb-wiki/wiki/_pages

Convention : When this document uses syntax like single-quote text single-quote + 'some-text-here' + 'a second example' it indicates that the reader is to use the value without the single-quotes.

######################################### ######################################### ########### Getting started ########### ######################################### ######################################### * Requirements: > Ubuntu 12.04, 13.04; Not tested on a different OS. > ruby * Build CryptDB using the installation script. > note, this script will stop and start your mysql instance. > scripts/install.rb + should just be '.' if you are in the cryptdb directory + the script will likely require root privileges in order to install dependencies and UDFs. * Username/Password By default cryptdb uses 'root' for the username and 'letmein' for the password. You can change this by modifying the source. + Tests: test/test_utils.hh + Shell: main/cdb_test.cc + Proxy: mysqlproxy/wrapper.lua * Rebuildling CryptDB If you modify the source and want to rebuild, issue 'make' in the cryptdb directory. If you change the UDFs you will also need to do 'make install' (which will likely require root privilege).

######################################### ######################################### ####### A few ways to run CryptDB ####### ######################################### ######################################### Set (or place in your .bashrc): > export EDBDIR=/full/path/to/cryptdb/

I. Shell
> To Start: obj/main/cdb_test ./shadow <some-database-name>
> Type SQL queries that will be encrypted.
II. Proxy
A) To Start: > /path/to/cryptdb/bins/proxy-bin/bin/mysql-proxy \
--plugins=proxy --event-threads=4 \
--max-open-files=1024 \
--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua \
--proxy-address=127.0.0.1:3307 \
--proxy-backend-addresses=localhost:3306
B) Connect to CryptDB: (where root/letmein are username/password)
mysql -u root -pletmein -h 127.0.0.1 -P 3307
C) CREATE a database; USE it; Then type queries that will execute
on encrypted data at the DB server!
III. Tests
> To Start:
obj/test/test queries plain proxy-single

######################################### ######################################### ############ Failing queries ############ ######################################### #########################################

Note that CryptDB is not a product, but just a more advanced research
prototype. It only has implemented a subset of SQL queries. For example,
it supports the regular MySQL client and a variety of queries you can
play with from this shell, Wordpress, and other apps. We did not test
it with other MySQL clients (e.g., PHP, Java) and these likely issue
some uncommon metadata query we did not implement. Feel free to
implement what's missing!
> Queries can fail for a few reasons.
I) CryptDB can support the query, but we have not yet implemented it.
This should throw an UNIMPLEMENTED exception.
II) CryptDB can not support this type of query, likely for
cryptographic reasons. The error should include a message telling
you more about the issue.
For example if you issue this query to the shell.
SELECT * FROM t WHERE x + 10 < 50
You should get feedback. You will see that the feedback
tells you the desired security level for the operation at
each onion, and the current security level of each argument
for each onion.
In the case of this query, you can see that it would like
to compare order with onion 1 (OPE), 4 (PLAIN) or 6 (WAIT).
But if you look at it's first child "additive", you can see
that it would like to use the HOM onion. Because the HOM
onion is not supported by the order operation, the query
fails and gives you this error message.
Look to the CryptDB paper for more information regarding
how MySQL operations correspond to the cryptographic onions.
III) State corruption (ie a bug in our code), this will likely lead
to a crash.
IV) Invalid query; problem with the query syntax.

######################################### ######################################### ################ Misc ################### ######################################### #########################################

> The benchmarks in the CryptDB paper are based on an older version of
CryptDB. We have added new features and functionality to the current
version which we have not yet optimized (but it is part of our
roadmap).
> For example queries, take a look at our tests test/TestQueries.cc
> Consider connecting directly to MySQL to see what is in the raw
database.
> Resetting state (e.g., after running tests)
> Take a look at scripts/refresh.sh ; you probably want that.
> If you create a database in cryptdb and then reset
the state without first dropping the database from _within_
cryptdb; you will need to drop it from the regular mysql client.
> Modifying the UDFs.
+ If you make changes to edb/udf.cc, you must reinstall the UDFs
before your changes will take affect.
> sudo service mysql stop
> sudo make install
> sudo service mysql start
> This new version of CryptDB is only single principal. We are in the
process of developling a new platform that more affectively addresses
multiple principals.

About

A database system that can process SQL queries over encrypted data.

Resources

Stars

520 stars

Watchers

29 watching

Forks

Releases

Packages

Used by

Contributors

Languages