<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Chang,<div><br></div><div>Thanks for the update. BOSH certainly looks like a promising basis, though of course it makes no attempt at obfuscation or scanning resistance.</div><div><br></div><div>I've added this to the design document: <a href="https://github.com/sjmurdoch/http-transport/blob/master/design.md">https://github.com/sjmurdoch/http-transport/blob/master/design.md</a></div><div><br></div><div>I was thinking about this being a useful basis for you to have for refining your design, so do feel free to fork and change it.</div><div><br></div><div><div>Best wishes,</div><div>Steven</div><div> </div><div><div>On 28 Jun 2013, at 16:07, Chang Lan <<a href="mailto:changlan9@gmail.com">changlan9@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi there, </div><div><br></div><div>During the first two weeks of my GSoC project, I have implemented a HTTP CONNECT-based pluggable transport. In short, I use HTTP CONNECT semantics to establish a secure channel between the client and the bridge. Specifically, this is the scenario:</div><div><br></div><div><font face="Courier New">1. Connection establishment:</font></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">     +------------------------------+</font></div><div><font face="Courier New">     |CONNECT bridge_ip:443 HTTP/1.0|</font></div><div><font face="Courier New">     |User-agent: blablabla         |</font></div><div><font face="Courier New">     +------------------------------+</font></div><div><font face="Courier New">              |</font></div><div><font face="Courier New">              |</font></div><div><font face="Courier New">+----------+  |   </font><span style="font-family: 'Courier New'; ">+----------+      </span><span style="font-family: 'Courier New'; ">+----------+</span></div><div><font face="Courier New">|  client  |----->|  proxy   |----->|  bridge  |</font></div><div><font face="Courier New">+----------+      </font><span style="font-family: 'Courier New'; ">+----------+   |  </span><span style="font-family: 'Courier New'; ">+----------+</span></div><div><font face="Courier New">                                 |</font></div><div><font face="Courier New">                                 |</font></div><div><div><font face="Courier New">                 +------------------------------+</font></div><div><span style="font-family: 'Courier New'; ">                 </span><font face="Courier New">|   (Establish a connection)   |                   </font></div><div><span style="font-family: 'Courier New'; ">                 </span><font face="Courier New">+------------------------------+</font></div></div><div><font face="Courier New"><br></font></div><div><font face="Courier New">2. Data relay</font></div><div><font face="Courier New"><br></font></div><div><div><font face="Courier New">     +------------------------------+</font></div><div><font face="Courier New">     |    (Encrypted Payload)       |</font></div><div><font face="Courier New">     +------------------------------+</font></div><div><font face="Courier New">              |</font></div><div><font face="Courier New">              |</font></div><div><font face="Courier New">+----------+  |    </font><span style="font-family: 'Courier New'; ">+----------+       </span><span style="font-family: 'Courier New'; ">+----------+</span></div><div><font face="Courier New">|  client  |<----->|  proxy   |<----->|  bridge  |</font></div><div><font face="Courier New">+----------+       </font><span style="font-family: 'Courier New'; ">+----------+   |   </span><span style="font-family: 'Courier New'; ">+----------+</span></div><div><font face="Courier New">                                  |</font></div><div><font face="Courier New">                                  |</font></div><div><div><font face="Courier New">                 +------------------------------+</font></div><div><span style="font-family: 'Courier New'; ">                 </span><font face="Courier New">|   </font><span style="font-family: 'Courier New'; ">(Encrypted Payload)</span><font face="Courier New">        |                   </font></div><div><span style="font-family: 'Courier New'; ">                 </span><font face="Courier New">+------------------------------+</font></div></div></div><div><font face="Courier New"><br></font></div><div><br></div><div>I hope the diagrams above are self-explanatory. It is only my initial attempt to get familiar with HTTP protocol. Once I make sure it is working correctly under squid proxy I will upload it to the repository.</div><div><br></div><div>The use of CONNECT method is restricted in many networks, so it is better to implement the HTTP transport using the usual HTTP methods as POST, GET, etc. In the next stage, I plan to implement a new HTTP transport based on BOSH[1]. There are many issues to care about (in order of priority):</div><div><br></div><div>* bi-directional data transfer over HTTP</div><div>* proxy cache</div><div>* HTTP request/response encoding</div><div>* encryption</div><div>* scanning resistance</div><div><br></div><div>Have a nice weekend!</div><div><br></div><div>[1]: <a href="http://xmpp.org/extensions/xep-0124.html">http://xmpp.org/extensions/xep-0124.html</a></div><div><br></div><div>Best, </div><div>Chang</div><div><br></div><div>Sent from my mobile device. Sorry for the brevity.</div>_______________________________________________<br>tor-dev mailing list<br><a href="mailto:tor-dev@lists.torproject.org">tor-dev@lists.torproject.org</a><br>https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev<br></blockquote></div><br></div></body></html>