Hi Elias! Nice to meet you and thanks for your interest in this GSOC project! Iâm Marcela, a mentor on this project as well. I was the main author on the CONIKS paper, so I can answer all of your paper-related questions. From some of the terminology youâre using and from some of the text youâve quoted, it seems to me that youâve been reading an older version of the paper, so I would refer you to our most recent and peer-reviewed paper published at USENIX Security 2015: https://www.cs.princeton.edu/~melara/static/pubs/sec15-paper-melara.pdf I hope my explanations make sense, and please let us know if you have more questions! Best, Marcela
Yes, we propose that the identity providers can act as auditors and cross-verify each other in this way, and clients may query any auditor when they are checking for equivocation. However, I should note that we intended this to be the *ideal deployment* (and I apologize if this doesnât come through clearly enough in the paper). CONIKS also allows third-party auditors whose sole job it is to check that the chain of signed tree roots is linear. In practice, we expect that auditors and identity providers will be separate in most cases (at least until there is a standard for CONIKS protocols and data formats, but weâre not there yet). Itâs not accurate to conflate auditing with being a key server, or say that auditing is a subset of the key serverâs functionality. Auditors only need to keep records of identity providersâ signed tree roots, and they never download or record any key directory contents, so it doesnât really make sense to equip auditors with key server functionality and âturn it offâ when youâre not acting as a key server. Key servers have the more complex and rich functionality needing to maintain significantly larger data structures and perform more cryptographic computations. This means that key servers have very different space and availability requirements than auditors do.
See my point above. Auditing and maintaining keys isnât just about configuring a server differently.
Arlo may have a better answer to this question.
How the lookup index is calculated is actually not a minor point. Itâs pretty important that this is done in a very specific way to ensure that authentication paths in the CONIKS Merkle tree canât allow an adversary to easily determine which other usernames have key mappings in the tree. This is one of the main privacy feature of CONIKS.
The answer to this question is in the portion of the paper you quote: "signature schemes are generally not unforgeable given some bits of the valid signature.â Thereâs some crypto-jargon here, which you may not be familiar with if you haven't taken a crypto course. What this sentence is trying to say is that, given some bits of a valid signature, an adversary could be able to find some message or data and a corresponding digital signature which is valid and which has not been generated by the legitimate signer (in this case the identity provider). This is called an existential forgery, and it means that an adversary can create forged lookup indices if the signature isnât hashed. The hash on top of the signature also ensures that the lookup index canât be easily computed from the VUF.
Unfortunately, the reference implementation is still a work in progress (although Iâve had to take some time off from working on it due to other research projects), and is missing several features described in the paper. The SignatureOps class in the reference implementation simply implements wrappers around Java signature functions, so thatâs not where the user lookup index calculation happens. The lookup index calculation happens in the unameToIndex() function in conks_server.ServerUtils. Now, I will note that the reference implementation currently *isnât* doing the proper index calculation as it only currently hashes the username, so thank you for making me go back and double-check my code! But it would be relative straight-forward to change this and to add the digital signature computation that needs to be done before the hashing. |
_______________________________________________ tor-dev mailing list tor-dev@xxxxxxxxxxxxxxxxxxxx https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev