TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

ZeroDB white paper: An end-to-end encrypted database

171 pointsby mwilkisonabout 9 years ago

11 comments

teraflopabout 9 years ago
Interesting concept. I disagree with this statement from the &quot;Data confidentiality&quot; section:<p>&gt; Unlike CipherBase [6], our approach doesn’t leak information about the order of the elements. By observing access patterns, the server can only figure out which buckets are leaf nodes and which are branch nodes, but not whether the child node is located to the left or right of the parent node.<p>The paper correctly notes that when a client does a range query, it leaks information about the total number of blocks returned. However, if I&#x27;ve understood correctly, it <i>also</i> leaks the identities of those blocks. The closer two tree nodes are in order, the more likely they are to be touched by the same request. A passive adversary could use this to extract information about the relative ordering of encrypted nodes.<p>Also, active adversaries cause much worse problems. Let&#x27;s say I have the ability to cause someone to do queries on the encrypted database, without observing the results. By simply doing separate index lookups on two different fields, I can extract a lot of information by looking at which nodes were touched by both queries.<p>Finally, I noticed that the paper doesn&#x27;t describe how the B-trees are modified. If the client is the only party that knows how to decrypt nodes, then it&#x27;s responsible for splitting and merging nodes to keep the tree balanced. Doesn&#x27;t this require some kind of distributed coordination, so that multiple clients don&#x27;t trample on each other&#x27;s changes?
评论 #11172122 未加载
评论 #11169165 未加载
评论 #11170036 未加载
评论 #11171188 未加载
saganusabout 9 years ago
This looks very interesting.<p>I guess that this would be the next-best thing after FHE?.<p>The catch is the performance, right? I mean, the paper says:<p>&quot;In order to make the database end-to-end encrypted yet still capable of performing queries, the client encrypts the buckets (at the time of creation or modification). The server, which stores the buckets, never knows the encryption key used. The objects referenced by the leaf nodes of the B-Tree indexes are also encrypted client-side. As a result, the server doesn’t know how individual objects are organized within the B-Tree or whether they belong to an index at all. Since ZeroDB is encryption agnostic, probabilistic encryption can ensure that the server cannot even compare objects for equality. <i>When a client performs a query, it asks the server to return buckets of the tree as it traverses the index remotely and incrementally</i>, as in Fig. 2b. The client fetches and decrypts buckets in order to figure out which buckets in the next level of the tree to fetch next. Frequently accessed buckets can be cached client-side so that subsequent queries do not make unnecessary network calls.&quot;<p>Which would suggest that it might be a bit slow to do many round-trips for each query.<p>I&#x27;m guessing there could be some specific use-cases where this is not so relevant?<p>I would love to have some more knowledgeable people comment on this as it would be really neat to be able to start using a DB with these features.
评论 #11169141 未加载
评论 #11169184 未加载
augustlabout 9 years ago
Seems that this initial release only supports python. The client is obviously heavy, since it has to run all the queries, etc. Thankfully the protocol is well defined, so it&#x27;s just a question of effort to support more languages.<p><a href="https:&#x2F;&#x2F;docs.zerodb.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;docs.zerodb.io&#x2F;</a>
评论 #11169102 未加载
swordswinger12about 9 years ago
I read the whitepaper, and while I have many questions one detail in particular jumped out at me:<p>&quot;The client authenticates with an X.509 certificate or a self-signed certificate where the private key is derived from a passphrase. When a passphrase is used, the scrypt algorithm is used to derive a private key from the passphrase. Information about the salt is stored server-side and is given before establishing an authenticated encrypted connection. ... The symmetric key is derived from either the passphrase, the private key in an X.509 certificate, or provided by a key management service (KMS).&quot;<p>You&#x27;re deriving a private key from a user-defined passphrase, then storing the salt used to derive the password <i>on the server</i>, which is defined to be untrusted. I understand you use scrypt to derive the private key, but this still seems like a massive, massive footgun. Database systems are usually kept up and running for a long time, like maybe even years. If the server gets the salt, isn&#x27;t it only a matter of time before even a very slow brute-force attack can re-derive the authentication credential and make whatever queries it wants?
评论 #11173384 未加载
derefrabout 9 years ago
I can&#x27;t help but compare this system to Datomic. Effectively, what ZeroDB is calling the &quot;database&quot; is what Datomic calls a &quot;storage service&quot;; and what ZeroDB is calling the &quot;client&quot;, Datomic calls the &quot;transactor.&quot;<p>In both architectures, &quot;blocks&quot; of data get pulled from the storage service (database) to the transactor (client), which decodes blocks into rows of tables or indexes, does a query which possibly mutates those tables&#x2F;indexes, generates new blocks from the mutated tables&#x2F;indexes, and uploads them.<p>The difference is that ZeroDB&#x27;s blocks are encrypted by the client, obviously—but I&#x27;m not sure that this is a <i>semantic</i> difference in the architectures of the two databases. I&#x27;m wondering if an equivalent change could be made to Datomic&#x27;s transactor logic, without materially affecting the way Datomic works. (The question is basically how much of Datomic&#x27;s required block <i>metadata</i>, necessary for finding the blocks on the storage service, leaks information which ZeroDB has managed to sequester inside the encrypted blocks instead.)
评论 #11173388 未加载
mwilkisonabout 9 years ago
BTW, you can hop in our Slack [<a href="http:&#x2F;&#x2F;slack.zerodb.io&#x2F;" rel="nofollow">http:&#x2F;&#x2F;slack.zerodb.io&#x2F;</a>] channel if you have any questions.
corbinpageabout 9 years ago
Being able to query&#x2F;search&#x2F;sort on encrypted data sounds really powerful and super relevant for this day and age.<p>I look forward to playing around with it.<p>Very cool MacLane!
评论 #11169281 未加载
0xFFFF0000about 9 years ago
SQL Server has Always Encrypted - <a href="https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;mt163865.aspx" rel="nofollow">https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;mt163865.aspx</a>
评论 #11169919 未加载
mankash666about 9 years ago
OK - So why should I use ZeroDb when it seems to be using Crypt-DB for encrypted query processing [which is the USP of ZeroDb] when cryptDb is fully open source, free and verifiable?
评论 #11171775 未加载
StabbyCutyouabout 9 years ago
Well...<p>Guess I need to rename <a href="https:&#x2F;&#x2F;github.com&#x2F;StabbyCutyou&#x2F;0db" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;StabbyCutyou&#x2F;0db</a>
crystalnabout 9 years ago
Also the name of a popular silent disco company in San Francisco:<p><a href="https:&#x2F;&#x2F;www.facebook.com&#x2F;ZEROdBsf&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.facebook.com&#x2F;ZEROdBsf&#x2F;</a><p>Clearly not overlapping business though.
评论 #11170753 未加载