]> git.za3k.com Git - za3k.git/commitdiff
known bugs
authorZachary Vance <za3k@za3k.com>
Wed, 19 May 2021 03:38:47 +0000 (20:38 -0700)
committerZachary Vance <za3k@za3k.com>
Wed, 19 May 2021 03:38:47 +0000 (20:38 -0700)
ok-mixnet.md

index 594dc949c33c01b74cef9e9f6bfdfc13ca2415f7..2f9b7dc31838ddeaf91a6621b01f1202ab421289 100644 (file)
@@ -131,7 +131,7 @@ Security
 - If the computerized client gets an invalid message from a friend, or doesn't get a message on schedule, it should raises a red flag to the user that an attacker might be present. Too many networked security programs silently ignore errors instead of raising them to user attention.
 
 # Notes and Known Improvements
-- In the proof-of-concept, the entire network needs to be shut down and restarted when someone joins or leaves OK-mixnet. This is because the sender and receiever need to agree on N to select the correct pad size.
+- In the proof-of-concept, the entire network needs to be shut down and restarted when someone joins or leaves OK-mixnet. This is because the sender and receiever need to agree on N to select the correct pad size. This also means some pads could be re-used when N changes, which is of course terrible.
 - It would probably be reasonable to add broadcast messages, which could be used as the basis for things like bulletin boards or larger group chats.
 - For pads, it seems like you'd like to only consume the pad while sending messages, and only consume a few bytes per chaff message. But I prefer the current simple system. There are some problems with active attacks and most obvious proposals to avoid waste. It would introduce more complexity than you think to do it well.
 - A note on random-number sources. I've mentioned, you need a really good source. The good news is that it's easy to make a pretty good random number generator, because of the properties of xor and hashes--you don't need all your sources to be perfect, you just to estimate the amount of randomness conservatively enough. New Intel CPUs support a [RDRAND](https://en.wikipedia.org/wiki/RDRAND) instruction that generates random numbers (at [500MB/s](https://stackoverflow.com/questions/10484164/what-is-the-latency-and-throughput-of-the-rdrand-instruction-on-ivy-bridge)), but it's hard to check if the output is good, and harder to check if it's backdoored. Just take a few sources like this where the output is decent (CPU, an external USB device, a software PRNG) and xor them together, and you get a good source of random bits.