Hello,
here is some background information and summarizing of proposal 247 "Defending Against Guard Discovery Attacks using Vanguards" for people who plan to work on this in the short-term future.
I include a list of open design topics (probably not exhaustive) and a list of engineering topics. Some engineering stuff can be done parallel to the design stuff.
==================== Background info ====================
* Proposal: https://gitweb.torproject.org/torspec.git/tree/proposals/247-hs-guard-discov... * Discussion: ** Initial prop247 thread: https://lists.torproject.org/pipermail/tor-dev/2015-July/009066.html ** Recent prop247 thread: https://lists.torproject.org/pipermail/tor-dev/2015-September/009497.html ** Reading group notes of prop247: https://lists.torproject.org/pipermail/tor-dev/2016-January/010265.html
==================== Design topics ====================
* Optimize proposal parameters ** Optimize guardset sizes ** Optimize guardset lifetimes and prob distributions (minXX/maxXX/uniform?) ** To take informed decision, we might need a prop247 simulator, or an actual PoC with txtorcon
* HOW to choose second-layer and third-layer guards? ** Should they be Guards? middles? Vanguards? Serious security / load balancing implications! ** Can guardsets share guards between them or are they disjoint? Particularly third-layer sets ** background: https://lists.torproject.org/pipermail/tor-dev/2016-January/010265.html
* HOW to avoid side-channel guard discovery threats? ** Can IP/RP be the same as first-layer guard? ** Can first-layer guard be the same as third-layer guard? ** background: https://gitweb.torproject.org/user/mikeperry/torspec.git/commit/?h=guard_dis...
* Change path selection for IP circs to avoid third-layer guard linkability threats. ** Switch from [HS->G1->M->IP] to [HS->G1->G2->G3->IP] or even to [HS->G1->G2->G3->M->IP]. ** Consider the latter option for HSDir circs as well? ** background: https://gitweb.torproject.org/user/mikeperry/torspec.git/commit/?h=guard_dis...
* Should prop247 be optional or default? ** Consider making it optional for a testing period?
* How does prop247 affects network performance and load balancing? ** especially if it's enabled by default? ** Update load balancing proposal?
* Correct behavior for multiple HSes on single host?
* Does prop247 influence guard fingerprinting (#10969) and should we care enough?
==================== Engineering topics ====================
* What's a good entrynodes API to implement prop247? * What's a good state file API to implement prop247?
* Write prop247 simulator to verify security goals and optimize proposal parameters (see above).
* Write PoC with txtorcon! * Write PoC with little-t-tor!
============================================================