Live data from Hacker News

Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

news.ycombinator.com

41–50 of 80 posts

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#41

this is great, thanks for launching it, I may actually be a future user of yours ;) one important feature I see missing is that one cannot run queries with comparisons, such as "give me any message sent between 2022-10-10 and 2023-02-01". This would be very important when one doesn't have all the keys, or when the keys are too many, like in the messages example above. Any idea for this kind of scenario?

Thanks! Yup, it's not always practical to make a huge number of queries when you expect many of them to come back empty. Instead, we first perform private lookups against a Bloom filter, to find out which keys actually hold data (e.g. messages). Then, we privately retrieve only the useful keys.

The Bloom filter is also served over Blyss, so the server still learns nothing about which keys you're interested in. We implemented this system for our private password checker, which tests passwords against almost a billion breached credentials: https://playground.blyss.dev/passwords

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#42

this is great, thanks for launching it, I may actually be a future user of yours ;) one important feature I see missing is that one cannot run queries with comparisons, such as "give me any message sent between 2022-10-10 and 2023-02-01". This would be very important when one doesn't have all the keys, or when the keys are too many, like in the messages example above. Any idea for this kind of scenario?

Thanks! Yup, it's not always practical to make a huge number of queries when you expect many of them to come back empty. Instead, we first perform private lookups against a Bloom filter, to find out which keys actually hold data (e.g. messages). Then, we privately retrieve only the useful keys. The Bloom filter is also served over Blyss, so the server still learns nothing about which keys you're interested in. We imp…

Thanks for the answer, but I was meaning from your customer perspective. My understanding is that you offer a key-value store, so the only operation available on the encrypted data is a comparison (==).

If my application wants to retrieve data within a certain range ( operators) is there anything I can do to implement it on top of you SDK?

Think of the encrypted messages app: how can I retrieve this month's messages using your SDK?

I hope this clearer now...

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#43
This capability is not exactly Fully Homomorphic Encryption (FHE). In the cryptographic literature this is typically referred to as PIR, or Private Information Retrieval [https://en.wikipedia.org/wiki/Private_information_retrieval]. Counterintuitive indeed. The idea is not totally new, though...

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#44

Are there any hardware acceleration strategies for FHE or is it all making the calculations more efficient on the software side right now? My guess is that the software needs to mature before baking silicon?

Our FHE scheme uses lots of Number Theoretic Transforms (NTTs), which are pretty computationally expensive. NTT is a good candidate for acceleration, and there is quite a bit of interest from the zk community in doing so ( https://www.zprize.io/prizes/accelerating-ntt-operations-on-... ). From a hardware perspective, NTT can be done in parallel, but has a fairly large working set of data (~512 MB) with lots of unstru…

interesting prize, I wonder why they fix that it has to be radix-2 NTT, using higher radix speeds things up an order of magnitude on GPU (granted I am using a 256 bit field, so it might be more memory bound)

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#45

I'm guessing this solves a very specific pet peeve of mine: When your bitwarden vault is not opened, if you log in to website, the extension will ask if you want to store the password, even if your vault already has an entry for that website. Of course, this is by design so that bitwarden doesn't store websites you have credentials for in plaintext (unlike lastpass and it blew up in their face). Would this allow your…

wouldn't salting and hashing be enough for this use case if you keep the salt on the client?

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#46
post #43

This capability is not exactly Fully Homomorphic Encryption (FHE). In the cryptographic literature this is typically referred to as PIR, or Private Information Retrieval [ https://en.wikipedia.org/wiki/Private_information_retrieval ]. Counterintuitive indeed. The idea is not totally new, though...

True! We are using FHE to perform PIR. The underlying scheme we use is a real homomorphic encryption scheme (Regev + GSW), but yeah, we explicitly do not support performing arbitrary computation on encrypted data. As it turns out, that's still quite slow - the Google FHE C++ transpiler still takes seconds to do 32-bit arithmetic operations. Our PIR system is able to achieve much more practical speed + communication overheads.

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#47
post #43

This capability is not exactly Fully Homomorphic Encryption (FHE). In the cryptographic literature this is typically referred to as PIR, or Private Information Retrieval [ https://en.wikipedia.org/wiki/Private_information_retrieval ]. Counterintuitive indeed. The idea is not totally new, though...

I haven't read their protocol, but you can easily implement PIR using FHE through polynomial evaluation.

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#48
post #46
post #43

This capability is not exactly Fully Homomorphic Encryption (FHE). In the cryptographic literature this is typically referred to as PIR, or Private Information Retrieval [ https://en.wikipedia.org/wiki/Private_information_retrieval ]. Counterintuitive indeed. The idea is not totally new, though...

True! We are using FHE to perform PIR. The underlying scheme we use is a real homomorphic encryption scheme (Regev + GSW), but yeah, we explicitly do not support performing arbitrary computation on encrypted data. As it turns out, that's still quite slow - the Google FHE C++ transpiler still takes seconds to do 32-bit arithmetic operations. Our PIR system is able to achieve much more practical speed + communication o…

I vaguely recall basic PIR schemes turn a database from O(n) to O(n^2). While this would be transparent to users of the service, could you comment on space overhead?

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#49
post #48
post #46

Earlier quoted context omitted.

True! We are using FHE to perform PIR. The underlying scheme we use is a real homomorphic encryption scheme (Regev + GSW), but yeah, we explicitly do not support performing arbitrary computation on encrypted data. As it turns out, that's still quite slow - the Google FHE C++ transpiler still takes seconds to do 32-bit arithmetic operations. Our PIR system is able to achieve much more practical speed + communication o…

I vaguely recall basic PIR schemes turn a database from O(n) to O(n^2). While this would be transparent to users of the service, could you comment on space overhead?

The space overhead is roughly constant (or at most logarithmic in n), and varies by the scheme. In practice, it’s something like 1.5-8x overhead. This is no big deal for storage, but does make it a pain on the memory side for processing (since the full database, including the overhead factor, needs to be resident in memory).

Re: Launch HN: Blyss (YC W23) – Homomorphic encryption as a service

#50

Earlier quoted context omitted.

Thanks! Yup, it's not always practical to make a huge number of queries when you expect many of them to come back empty. Instead, we first perform private lookups against a Bloom filter, to find out which keys actually hold data (e.g. messages). Then, we privately retrieve only the useful keys. The Bloom filter is also served over Blyss, so the server still learns nothing about which keys you're interested in. We imp…

Thanks for the answer, but I was meaning from your customer perspective. My understanding is that you offer a key-value store, so the only operation available on the encrypted data is a comparison (==). If my application wants to retrieve data within a certain range ( operators) is there anything I can do to implement it on top of you SDK? Think of the encrypted messages app: how can I retrieve this month's messages…

Yeah, we don’t natively support range queries.

The simple way to efficiently do this kind of check would be to store an index of keys (perhaps chunk them into buckets, like 0-10, 10-20, etc), and then privately retrieve the individual items. Retrievals are fast, especially when batched, so if the ultimate number of items you’re trying to retrieve is not too large, this can work.

If you want to chat more about range queries, feel free to email us (founders @ blyss.dev)

Post reply on HN