[liberationtech] New protocol sacrifices bandwidth for metadata privacy

Marc W. Abel marc at clique4.us
Tue Aug 5 11:52:45 PDT 2014


Greetings Natanael, Seth, Tom, Gregory, and the list,

Without exception, I have been delighted with the quality and 
thoughtfulness of your feedback. I am also very grateful for the time so 
many more have spent looking at the website as well as the tarball. It's 
been hard for me to resist responding immediately to each of your posts, 
but now that the pace has settled a little, I hope to slip in a 
thank-you and some responses without dominating the conversation.

NATANAEL, pointing me toward I2P's Bote Mail is a great help because I 
will be expected to demonstrate knowledge of and differences from 
similar systems.

SETH, your mention of Pond is similarly helpful. I also like Pond's 
threat model documentation, and I think that Clique should have a 
similar disclosure. You are right that Clique needs forward secrecy, 
something that I haven't a clue yet how to implement against the threat 
model Clique is designed for. This could be a whole new thread or two or 
three, but the very short explanation is that Marc thinks that P = NP 
and that protocols such as Diffie-Hellman may fail or already have 
failed. I don't maintain that I'm right on these points, but I do think 
our planet has too many eggs in the asymmetric cryptography basket.

Good news: Clique peers do not broadcast message traffic (although they 
do broadcast announcements about the keys they have available). It's 
actually not feasible to broadcast, because the peers negotiate their 
own connection speeds. A high-bandwidth peer would have a lot of work to 
do force-feeding traffic to everybody and keeping track of it. A message 
goes directly to the (most recent) IP address where its key has been 
observed.

I really like your comments about authenticating the host and hash, 
because I have only considered my own perspective. Yours is valid and 
will be shared by some. Prior to seeing your input, my view was simply 
this. Asymmetric cryptography is already suspect (P = NP today). 
High-profile implementations fail catastrophically. No server can be 
made physically secure. And most importantly from my perspective, Clique 
is designed with a very specific type of adversary in mind -- exactly 
the type of adversary who can issue browser-trusted SSL certificates at 
will. So in my mind (as opposed to the Reasonable Not-Marc User's mind), 
adding HTTPS (Everywhere!) to the server I wrote is only going to give 
the site visitor a warm feeling of overconfidence. If I don't offer a 
"secure" connection, I don't need to worry that you might trust it. 
Instead, you'll seek some other measure of assurance.

What I take away from your feedback here is that not everyone is Marc, 
and that I can address my concerns without heightening yours. I can add 
TLS support to Subpoena, the Recordless Web Server (that really is what 
I named it), and post a conspicuous warning next to the download link. 
Then we're both placated.

My comments about "truly unlimited computing power" stem from my 
original and eventual plan for Clique. Rijndael is only a fallback for 
users who don't want to use one-time pads. But implementing Rijndael is 
much simpler than implementing a workable, real-world OTP system, so the 
former got done first.

TOM, your comments are great also. You asked why I modified the Rijndael 
key schedule. Indeed I need to be careful how I write things on the 
website. I only "modified" the schedule in the sense that I eliminated 
it entirely (modified, in this case, by replacing it with an identity 
transformation). And "quasi-4096 bit symmetric cipher" wasn't a great 
wording choice either; there really are 4096 bits and there's nothing 
quasi- about it. At best, quasi- was meant to express that I can't 
guarantee key sizes to be directly comparable, because Rijndael does not 
treat all bits of the key identically (although it tries to approach this).

But your question still stands: why didn't I leave Rijndael alone? 
Because no one has answered the opposite question: why does AES insist 
on reducing the key space to such tiny sizes (128, 192, or 256 bits), 
when the only computational advantage of this is for an eavesdropper's 
benefit? It seems to me like the world has been on a Honey, I Shrunk the 
Keys craze since about 1970, and I am a skeptic. I have a lot more faith 
in the intellect of you four list members, or any four readers of this 
list for that matter, than I do in the strength of a 256-bit toy puzzle. 
4096 bits isn't an ideal fix, but I'm hoping it might buy a little more 
time than we have.

I appreciate your kind words about the decision and effort to have an 
implementation. It's one thing to say that something will work, but 
human factors need to be measured too. Even the little things, like 
"will people even hear about the software?" become part of the security 
discussion. And real implementations will be scrutinized better, with 
problematic issues found sooner.

Broadcasting questions: yes! If 30,000 users are connected at 50,000 
bits per second (unrealistic situation but easy to consider), the 
interval between packets between any two peers is around 49 minutes, and 
plaintext throughput between any two peers is about 16 kilobytes per 
day. This might not sound fast, but the application has to be 
considered, too. That would have been enough to command a submarine 
fleet, for instance, for many decades. It would easily swallow most of 
my personal correspondence, too, and even this list response if we slim 
down its headers. And yes, throughput creeps downward as we add users, 
but the elegance of this solution is that so few would want to fuss with 
it, I think there will be enough bandwidth for the 1% of the 1% who 
would give it a go.

Extensive consideration and countermeasures to DoS issues has gone into 
the protocol design, although there is never a final solution. This is 
one reason that working on real implementations is more fun than papers, 
because you need to be ready for real problems. "Deaf" attackers who 
spoof IP addresses that they can't actually receive messages to are 
precluded from joining cliques. Botnet machines that are behind NAT 
firewalls that they don't know how to configure can't join, either. 
There is a small (twofold) UDP packet amplification concern with the 
current peer discovery protocol; this could turn a clique into a 
platform for DDoS attacks, but much stronger amplification is available 
from more machines with other protocols.

GREGORY, the bitmessage reference is particularly helpful. You gentlemen 
seem to be writing my dissertation for me this week.

I'm thrilled with your candor about the "extremely concerning" 
modifications to Rijndael. We well know the sad history of unvetted 
cryptography mechanisms. And there is such a shortage of truly expert 
cryptographers, that few ciphers other than those standardized by NIST 
get a whole lot of scrutiny. Your concern about any departure from what 
is broadly reviewed, as well as healthy concern you ought to have about 
my credentials, are merited.

A choice had to be made. Trust that 10, 12, or 14 rounds of AES is okay, 
for the type of attacker contemplated by Clique's (unwritten) threat 
model? An upper limit of 256 bits on the key size? I couldn't. So I went 
looking for a middle ground. I was okay with the 
substitution-permutation network AES uses in principle. I kept the same 
S boxes, the same row and column operations, invented nothing, gutted 
the subkey system, added more rounds, and wrote the code. I tested that 
code against NIST's own AES test vector in appendix C.1 of FIPS 197, to 
ensure that my rounds work in the same way that theirs do. I had to use 
their subkey expansion in order to do this test, as I did not write 
anything to work with subkeys. One weak decision I made is that having 
that code tested, I removed the test code from the tarball entirely. I 
shouldn't have. I still have that test code and its output, and I will 
put it back.

The question I don't have the skills to answer, but hope I might find a 
credible answer for, is whether a string of independent and identically 
distributed random variables is stronger or weaker than a deterministic 
key schedule that has undergone peer review from a very small number of 
random variables. I think I've made the cryptography stronger -- a lot 
stronger -- but there are people who know a whole lot more about this 
than me. This is why I will be facing anonymous peer reviewers and a 
faculty committee; the end product will be a better considered one.

I might have a compromise that would leave you perhaps not wholly 
satisfied, but at least not feeling like you're stuck with my approach 
and no other option. I could add a command-line flag to clique-keygen, 
probably -A, that would do a full AES subkey expansion within the 
4096-bit key itself. If I go with AES-256, that would reduce the key 
strength by 1792 bits from my perspective, but it would guarantee that a 
complete AES encryption is performed on your data exactly by the book, 
with some extra bit twiddles to placate me. We can actually do this with 
two entirely separate AES-256 keys, doing everything by the book twice 
with 512 bits of source key material, plus 256 extra bits for the extra 
messing around. This option would require no code changes at all, except 
to the key generation utility. If there is a drawback from your 
perspective, it's that a user must opt in to this feature.

ALL, many thanks again. I look forward to more discussion as your time 
permits.

Marc




More information about the liberationtech mailing list