<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-5146093514914002676</atom:id><lastBuildDate>Fri, 06 Mar 2009 20:55:16 +0000</lastBuildDate><title>Theo's Blog</title><description></description><link>http://crazygreek.co.uk/blogger/</link><managingEditor>theo@crazygreek.co.uk (Theo Zourzouvillys)</managingEditor><generator>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-8726823582312692639</guid><pubDate>Fri, 06 Mar 2009 20:55:00 +0000</pubDate><atom:updated>2009-03-06T12:55:16.391-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sip</category><category domain='http://www.blogger.com/atom/ns#'>ietf</category><title>SIP URI syntax is broken with IPv6 &amp; Generic URIs</title><description>&lt;p&gt;Well, actually, the way a bunch of commonly used URI schemes define their IPv6 syntax doesn't match what is allowed in the generic syntax defined in &lt;a href="http://tools.ietf.org/html/rfc3986"&gt;RFC 3986&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;SIP, (as well as a number of other URI schemes) define IPv6 literal URIs to be enclosed in square brackets to differentiate them, for example:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;sip:[XXXX:XXXX::XXXX]:5060&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;iax:[2001:db8::1]:4569/alice?friends&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Presumably, this is because of the &amp;quot;host&amp;quot; ABNF rule defined in RFC 3986:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;host = &lt;strong&gt;IP-literal&lt;/strong&gt; / IPv4address / reg-name&lt;/p&gt;    &lt;p&gt;IP-literal = &amp;quot;[&amp;quot; ( &lt;strong&gt;IPv6address&lt;/strong&gt; / IPvFuture&amp;#160; ) &amp;quot;]&amp;quot; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The problem with this is that the &lt;em&gt;host&lt;/em&gt; rule is only used when the absolute-URI contains '://':&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;absolute-URI&amp;#160; = scheme &amp;quot;:&amp;quot; &lt;strong&gt;hier-part&lt;/strong&gt; [ &amp;quot;?&amp;quot; query ]&lt;/p&gt;    &lt;p&gt;hier-part&amp;#160;&amp;#160;&amp;#160;&amp;#160; = &amp;quot;//&amp;quot; &lt;strong&gt;authority&lt;/strong&gt; path-abempty      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; / path-absolute      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; / path-rootless      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; / path-empty&lt;/p&gt;    &lt;p&gt;authority&amp;#160;&amp;#160;&amp;#160;&amp;#160; = [ userinfo &amp;quot;@&amp;quot; ] &lt;strong&gt;host&lt;/strong&gt; [ &amp;quot;:&amp;quot; port ]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;so URI schemes such as sip where the URI doesn't contain a ://, then an IPv6 address would instead match path-rootless:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;path-rootless = segment-nz *( &amp;quot;/&amp;quot; segment )&lt;/p&gt;    &lt;p&gt;segment-nz&amp;#160;&amp;#160;&amp;#160; = 1*pchar&lt;/p&gt;    &lt;p&gt;pchar&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = unreserved / pct-encoded / sub-delims / &amp;quot;:&amp;quot; / &amp;quot;@&amp;quot;&lt;/p&gt;    &lt;p&gt;pct-encoded&amp;#160;&amp;#160; = &amp;quot;%&amp;quot; HEXDIG HEXDIG&lt;/p&gt;    &lt;p&gt;unreserved&amp;#160;&amp;#160;&amp;#160; = ALPHA / DIGIT / &amp;quot;-&amp;quot; / &amp;quot;.&amp;quot; / &amp;quot;_&amp;quot; / &amp;quot;~&amp;quot;&lt;/p&gt;    &lt;p&gt;reserved&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; = gen-delims / sub-delims&lt;/p&gt;    &lt;p&gt;gen-delims&amp;#160;&amp;#160;&amp;#160; = &amp;quot;:&amp;quot; / &amp;quot;/&amp;quot; / &amp;quot;?&amp;quot; / &amp;quot;#&amp;quot; / &amp;quot;[&amp;quot; / &amp;quot;]&amp;quot; / &amp;quot;@&amp;quot;&lt;/p&gt;    &lt;p&gt;sub-delims&amp;#160;&amp;#160;&amp;#160; = &amp;quot;!&amp;quot; / &amp;quot;$&amp;quot; / &amp;quot;&amp;amp;&amp;quot; / &amp;quot;'&amp;quot; / &amp;quot;(&amp;quot; / &amp;quot;)&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; / &amp;quot;*&amp;quot; / &amp;quot;+&amp;quot; / &amp;quot;,&amp;quot; / &amp;quot;;&amp;quot; / &amp;quot;=&amp;quot; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Specifically, this means that only the following un-escaped characters are allowed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A-Za-z&lt;/li&gt;    &lt;li&gt;0-9&lt;/li&gt;    &lt;li&gt;: @&lt;/li&gt;    &lt;li&gt;! $ &amp;amp; &amp;quot; ( ) * + , ; =&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Any other characters must be encoded using %XX format.&lt;/p&gt;  &lt;p&gt;While this won't break SIP elements out there, one thing is will break is trying to use an IPv6 address literal somewhere where a generic URI is expected, for example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Generic URI parser&lt;/li&gt;    &lt;li&gt;XML Schema &amp;quot;anyURI&amp;quot; datatype&lt;/li&gt;    &lt;li&gt;HTML href attribute&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;... and anything else that expects a URI.&lt;/p&gt;  &lt;p&gt;Note that implementations of above may use RFC 2396 (and RFC 2397 to add support for IPv6 literals) instead.&lt;/p&gt;  &lt;p&gt;The following other URIs schemes are also affected:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;h323&lt;/li&gt;    &lt;li&gt;im&lt;/li&gt;    &lt;li&gt;mailto&lt;/li&gt;    &lt;li&gt;pres&lt;/li&gt;    &lt;li&gt;xmpp&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It seems that most people think that &lt;a href="http://tools.ietf.org/html/rfc3986"&gt;RFC 3986&lt;/a&gt; needs to be updated.&lt;/p&gt;  &lt;p&gt;The original thread discussing this on &lt;a href="mailto:sip@ietf.org.org"&gt;sip@ietf.org.org&lt;/a&gt; can be found &lt;a href="http://www.ietf.org/mail-archive/web/sip/current/msg26760.html"&gt;here&lt;/a&gt;.&lt;/p&gt;  </description><link>http://crazygreek.co.uk/blogger/2009/03/sip-uri-syntax-is-broken-with-ipv6.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-269365989107132393</guid><pubDate>Thu, 05 Mar 2009 13:36:00 +0000</pubDate><atom:updated>2009-03-05T05:53:40.242-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sip</category><category domain='http://www.blogger.com/atom/ns#'>drafts</category><category domain='http://www.blogger.com/atom/ns#'>ietf</category><category domain='http://www.blogger.com/atom/ns#'>security</category><title>SIP relay attack summary: It's a big User Agent FAIL.</title><description>&lt;p&gt;To summarise &lt;a href="http://tools.ietf.org/html/draft-state-sip-relay-attack-00"&gt;the document&lt;/a&gt;, it claims there are essentially 3 different attacks, all similar in the result - a 3rd party could use a victims valid credentials for authentication, resulting in - for example - the victim being charged for calls made by the attacker.&lt;/p&gt;  &lt;h2&gt;Attack 1: Direct Relay (fig 1)&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:fc3213fe-ee76-48a5-956c-9d605f8abf3b" class="wlWriterSmartContent"&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;                             bob              alice     +1-900-xxx&lt;br /&gt;         proxy.com       @rogue.com        @proxy.com   @proxy.com&lt;br /&gt;            |                 |                 |            |&lt;br /&gt;            |                 |  INVITE F1      |            |&lt;br /&gt;            |                 |----------------&gt;|            |&lt;br /&gt;            |                 |  200 OK F2      |            |&lt;br /&gt;            |                 |&lt;----------------|            |&lt;br /&gt;            |                 |     ACK F3      |            |&lt;br /&gt;            |                 |----------------&gt;|            |&lt;br /&gt;            |                 |                 |            |&lt;br /&gt;            |                 |  media session  |            |&lt;br /&gt;            |                 |.................|            |&lt;br /&gt;            |                 |                 |            |&lt;br /&gt;            |                 |  INVITE F4      |            |&lt;br /&gt;            |                 |&lt;----------------|            |&lt;br /&gt;            |              modify               |            |&lt;br /&gt;            |            the request            |            |&lt;br /&gt;            |  INVITE F5      |                 |            |&lt;br /&gt;            |&lt;----------------|                 |            |&lt;br /&gt;            |     407 F6      |                 |            |&lt;br /&gt;            |----------------&gt;|                 |            |&lt;br /&gt;            |     ACK F7      |                 |            |&lt;br /&gt;            |&lt;----------------|                 |            |&lt;br /&gt;            |              reverse              |            |&lt;br /&gt;            |            the changes            |            |&lt;br /&gt;            |                 |     407 F8      |            |&lt;br /&gt;            |                 |----------------&gt;|            |&lt;br /&gt;            |                 |     ACK F9      |            |&lt;br /&gt;            |                 |&lt;----------------|            |&lt;br /&gt;            |              modify               |            |&lt;br /&gt;            |            the request            |            |&lt;br /&gt;            |                 | INVITE(auth) F10|            |&lt;br /&gt;            | INVITE(auth) F11|&lt;----------------|            |&lt;br /&gt;            |&lt;----------------|                 |            |&lt;br /&gt;            |      INVITE F12 |                 |            |&lt;br /&gt;            |-----------------------------------------------&gt;|&lt;br /&gt;            |                 |                 |            |&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;p&gt;In this attack, the attacker sends an INVITE directly to the victim.  The victim answers and the call starts.  The attacker then forces the victim to send a re-INVITE: possible though session timers, or possibly through social engineering (e.g, getting the call put on hold).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once the attacker receives the re-INVITE send by the victim, an INVITE is sent to the proxy of the service provider that the victim uses.  The service provider will respond back to the attacker with a 407 along with a Proxy-Authenticate header containing a realm and nonce.&lt;/p&gt;&lt;p&gt;The attacker then copies the Proxy-Authenticate header in to it's own 407 response (to the in-dialog re-INVITE), which the victim receives.  The victim then re-sends the re-INVITE with valid Proxy-Authorization header credentials.&lt;/p&gt;&lt;p&gt;At this point, the attacker receives the re-INVITE with credentials in, and adds into the INVITE it originally sent to the service provider.&lt;/p&gt;&lt;p&gt;Because these credentials are legitimate, and the information covered by the response in the authorization header is the same, the call is allowed.&lt;/p&gt;&lt;h3&gt;Solution&lt;/h3&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;The solution to this attack is really simple, and something that all UAs should be doing already: &lt;strong&gt;A SIP UA must limit the scope in which it will send authentication credentials.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;While it seems like every UA out there should already be doing that, it would appear many don't.&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;This is a SIP User Agent security &lt;a href="http://crazygreek.co.uk/misc/fail/security_camera_fail.jpg"&gt;FAIL&lt;/a&gt;, not a problem with SIP.&lt;/p&gt;&lt;h2&gt;Attack 2: Through outbound proxy (fig 2)&lt;/h2&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:f8159aaf-6d48-45f9-afd5-070efba32aa6" class="wlWriterSmartContent"&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                  bob                            alice&lt;br /&gt;         p2.com        @rogue.com        proxy.com      @proxy.com&lt;br /&gt;           |                |                |                |&lt;br /&gt;           |                |  INVITE F1     |   INVITE F2    |&lt;br /&gt;           |                |---------------&gt;|---------------&gt;|&lt;br /&gt;           |                |  200 OK F4     |   200 OK F3    |&lt;br /&gt;           |                |&lt;---------------|&lt;---------------|&lt;br /&gt;           |                |     ACK F5     |      ACK F6    |&lt;br /&gt;           |                |---------------&gt;|---------------&gt;|&lt;br /&gt;           |                |                |                |&lt;br /&gt;           |                |          mediasession           |&lt;br /&gt;           |                |.................................|&lt;br /&gt;           |                |                |                |&lt;br /&gt;           |                |  INVITE F8     |   INVITE F7    |&lt;br /&gt;           |                |&lt;---------------|&lt;---------------|&lt;br /&gt;           |             modify              |                |&lt;br /&gt;           |           the request           |                |&lt;br /&gt;           | INVITE F9      |                |                |&lt;br /&gt;           |&lt;---------------|                |                |&lt;br /&gt;           |    407 F10     |                |                |&lt;br /&gt;           |---------------&gt;|                |                |&lt;br /&gt;           |    ACK F11     |                |                |&lt;br /&gt;           |&lt;---------------|                |                |&lt;br /&gt;           |             reverse             |                |&lt;br /&gt;           |           the changes           |                |&lt;br /&gt;           |                |     407 F12    |     407 F13    |&lt;br /&gt;           |                |---------------&gt;|---------------&gt;|&lt;br /&gt;           |                |     ACK F15    |     ACK F14    |&lt;br /&gt;           |                |&lt;---------------|&lt;---------------|&lt;br /&gt;           |                | INV w/auth  F17| INV w/auth F16 |&lt;br /&gt;           |                |&lt;---------------|&lt;---------------|&lt;br /&gt;           |             modify              |                |&lt;br /&gt;           |           the request           |                |&lt;br /&gt;           |                |                |                |&lt;br /&gt;           | INV w/auth F18 |                |                |&lt;br /&gt;           |&lt;---------------|                |                |&lt;br /&gt;           |                |                |                |&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So presuming we've got a well configured SIP User Agent that only sends credentials to 407 responses received through the proxy it's configured with, the second attack highlighted in the draft is a method by which the attacker can perform the same operation, but through the proxy that the victim uses, by sending a call to the UA through the proxy.&lt;/p&gt;&lt;p&gt;Of course, any sensibly configured outbound proxy would remove credentials at the edge of the network that relate to the realms that the administrative domain the proxy is in may generate, rather than leave them in.&lt;/p&gt;&lt;p&gt;Assuming a well configured proxy is at play, this leaves an attack where a SIP User Agent which has credentials for 2 authentication realms - lets say &lt;em&gt;proxy.atlanta.com&lt;/em&gt; and &lt;em&gt;proxy.billoxi.com&lt;/em&gt; may potentially be tricked into sending credentials for &lt;em&gt;proxy.atlana.com&lt;/em&gt; through it's &lt;em&gt;proxy.billoxi.com&lt;/em&gt; proxy, and therefore wouldn't be protected by the network stripping out the credentials.&lt;/p&gt;&lt;h3&gt;Solution&lt;/h3&gt;&lt;p&gt;As in Attack #1, a User Agent should simply ensure that the scope in which it will send credentials is limited.  A UA registered with two providers should&lt;strong&gt; only ever send proxy authentication details to the outbound proxy those credentials have been configured for&lt;/strong&gt;.&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;&lt;p&gt;This is a SIP User Agent security &lt;a href="http://crazygreek.co.uk/misc/fail/fail-security-guard.jpg"&gt;FAIL&lt;/a&gt;, and not a problem with SIP.&lt;/p&gt;&lt;h2&gt;Attack 3: Directed Response (fig 3)&lt;/h2&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:ff3f67ec-ea7d-480e-9ef9-51f6389a1408" class="wlWriterSmartContent"&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                                 bob                             alice&lt;br /&gt;         proxy.com     @rogue.com        proxy.com      @proxy.com&lt;br /&gt;           |                |                |                |&lt;br /&gt;           |                |  INVITE F1     |   INVITE F2    |&lt;br /&gt;           |                |&lt;---------------|&lt;---------------|&lt;br /&gt;           |         remove proxy.com        |                |&lt;br /&gt;           |         from Record-Route       |                |&lt;br /&gt;           |          and Via headers        |                |&lt;br /&gt;           |                |            200 OK F3            |&lt;br /&gt;           |                |--------------------------------&gt;|&lt;br /&gt;           |                |               ACK F4            |&lt;br /&gt;           |                |&lt;--------------------------------|&lt;br /&gt;           |                |                |                |&lt;br /&gt;           |                |          mediasession           |&lt;br /&gt;           |                |.................................|&lt;br /&gt;           |                |                |                |&lt;br /&gt;           |                |  INVITE F6     |   INVITE F5    |&lt;br /&gt;           |                |&lt;--------------------------------|&lt;br /&gt;           |             modify              |                |&lt;br /&gt;           |           the request           |                |&lt;br /&gt;           | INVITE F7      |                |                |&lt;br /&gt;           |&lt;---------------|                |                |&lt;br /&gt;           |    407 F8      |                |                |&lt;br /&gt;           |---------------&gt;|                |                |&lt;br /&gt;           |    ACK F9      |                |                |&lt;br /&gt;           |&lt;---------------|                |                |&lt;br /&gt;           |             reverse             |                |&lt;br /&gt;           |           the changes           |                |&lt;br /&gt;           |                |             407 F10             |&lt;br /&gt;           |                |--------------------------------&gt;|&lt;br /&gt;           |                |             ACK F11             |&lt;br /&gt;           |                |&lt;--------------------------------|&lt;br /&gt;           |                |     INV w/auth  F12             |&lt;br /&gt;           |                |&lt;--------------------------------|&lt;br /&gt;           |             modify              |                |&lt;br /&gt;           |           the request           |                |&lt;br /&gt;           |                |                |                |&lt;br /&gt;           | INV w/auth F13 |                |                |&lt;br /&gt;           |&lt;---------------|                |                |&lt;br /&gt;           |                |                |                |&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;/pre&gt;&lt;/code&gt;    &lt;/div&gt;&lt;p&gt;If the attacker can get the victim to call the attacker through it's proxy &lt;strong&gt;and &lt;/strong&gt;the proxy is victim is publicly accessible, then the attacker could theoretically remove any Record-Route and Via headers from the request, and send a 200 response directly back to the victim.  As the call originally went through the proxy, the UA could conceivably think this call was secured, and thus when the re-INVITE is triggered, it would send the credentials.&lt;/p&gt;&lt;h3&gt;Solution&lt;/h3&gt;&lt;p&gt;As with both the other attacks, a User Agent should simply ensure that the scope in which it will send credentials is limited.  &lt;strong&gt;A UA should never send credentials to in any request that is not within the scope the credentials have been provided for&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Similarly, it's common for a device to have an option similar to &lt;em&gt;send in-dialog requests through outbound proxy&lt;/em&gt; (i.e, draft-outbound style routing), in which case even a badly written the User Agent is not vulnerable.&lt;/p&gt;&lt;h3&gt;Summary&lt;/h3&gt;This is a SIP User Agent security &lt;a href="http://crazygreek.co.uk/misc/fail/fail-owned-security-chain-fail.jpg"&gt;FAIL&lt;/a&gt;, and not a problem with SIP.&lt;br /&gt;&lt;h1&gt;Summary&lt;/h1&gt;&lt;p&gt;In summary, I don't think this document presents any security issues in SIP itself, but does highlight and document some attack vectors that UA vendors should take on board when developing SIP User Agents, and a useful reminder to SIP service providers that you really need to &lt;strong&gt;really think&lt;/strong&gt; about your network deployment (&lt;a href="http://crazygreek.co.uk/content/consultancy"&gt;or pay me to do it for you&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Most specifically, a SIP user agent that is configured with proxy credentials should only ever send them in requests being transmitted directly to the outbound proxy the credentials have been provided for, and never to a 3rd party.&lt;/p&gt;&lt;p&gt;Service providers should ensure they remove authorization headers that relate to any realms they are administratively responsible for &lt;strong&gt;at the edge&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;An important point in the above attacks is that a user agent appears to need to know when a request containing authentication is actually coming from it's proxy or not.  In reality this is not the case, as the answer to the question of if credentials should be sent or not lies in &lt;strong&gt;where those credentials are going to be send to, not where the request for them came from&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Without sending all (including in-dialog) requests via an outbound proxy, it's not always going to be possible to tell when the next hop is really the proxy wanting authentication or not, specifically due to the fact that an in-dialog next hop may be a different hostname - for example sbc-13.b.london.edge.voip.co.uk - rather than the proxy itself - for example outbound.voip.co.uk.&lt;/p&gt;&lt;p&gt;The answer to this lies in (mutual) TLS between a SIP user agent and it's proxy, either TLS over TCP or more recently and cutting edge, DTLS over UDP.  This allows for a client to be sure of where it's sending a request to before actually doing it, and thus that it doesn't leak it's proxy credentials when it shouldn't.&lt;/p&gt;&lt;p&gt;Until [D] TLS is universally deployed, a temporary workaround to this is ensure that the IP address you're sending to is in the SRV or A/AAA records of the proxy.  While this is far from perfect, in reality it will work for most deployed service providers today.  &lt;em&gt;Note that if you do implement this, &lt;strong&gt;please&lt;/strong&gt; remember to refresh the list based on TTL values in RRsets as well as the fact hosts may have both A, AAAA, and SRV records!&lt;strong&gt; and for goodness sake make the setting optional!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;h2&gt;End-to-End &amp;amp; Multi-Hop proxy authentication&lt;/h2&gt;&lt;p&gt;The above attacks don't cover end-to-end (WWW-Auth instead of proxy authentication), or multi-hop proxy authentication.&lt;/p&gt;&lt;p&gt;It's far harder to limit the scope in which the authentication should be released in these scenarios, as it's not a simple case of "only if sending to the proxy the credentials are for".  &lt;a href="http://tools.ietf.org/html/rfc4474"&gt;Identity&lt;/a&gt; could be considered instead in these scenarios.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Although note that Identity isn't perfect yet - it &lt;a href="http://tools.ietf.org/html/draft-kaplan-sip-baiting"&gt;has some issues&lt;/a&gt; with "&lt;em&gt;baiting&lt;/em&gt;" - a subject for another day.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://crazygreek.co.uk/blogger/2009/03/sip-relay-attack-summary-it-big-user.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-5412450846171008056</guid><pubDate>Thu, 05 Mar 2009 01:11:00 +0000</pubDate><atom:updated>2009-03-04T17:11:32.009-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sip</category><category domain='http://www.blogger.com/atom/ns#'>drafts</category><category domain='http://www.blogger.com/atom/ns#'>ietf</category><category domain='http://www.blogger.com/atom/ns#'>security</category><title>Another SIP vulnerability documented</title><description>&lt;p&gt;&lt;a href="http://tools.ietf.org/html/draft-state-sip-relay-attack-00"&gt;draft-state-sip-relay-attack-00&lt;/a&gt; documents yet another vulnerability in SIP, this time allowing an attacker to use a victims credentials to send authenticated requests as the victim.&amp;#160; This could be used, for example, to charge calls to the victim.&lt;/p&gt;  &lt;p&gt;Any scalable solutions i've been able to come up with so far have been blown away by the fact the attacker can cause the target URI (as the victim sees it) to be whatever we want, as &lt;a href="http://www.ietf.org/mail-archive/web/sip/current/msg26777.html"&gt;I just commented&lt;/a&gt; on &lt;a href="mailto:sip@ietf.org"&gt;sip@ietf.org&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Thanks for documenting this!&lt;/p&gt;    &lt;p&gt;page 10:&lt;/p&gt;    &lt;p&gt;&amp;#160; It is worth noting that the protection     &lt;br /&gt;&amp;#160; provided on the request URI is purely theoretical, as [RFC3261]      &lt;br /&gt;&amp;#160; introduces an exception to the request URI checking required by      &lt;br /&gt;&amp;#160; [RFC2617] in section 22.4:&lt;/p&gt;    &lt;p&gt;Another important consideration to keep in mind while thinking about solutions is that the Contact header in the dialog creating request can be pretty much anything bob likes if he also adds a Record-Route header in, leading to the dialog target URI at alice's UA being whatever bob wants, and thus the Authentication header can be manipulated to contain whatever the attacker wants in the uri parameter.&amp;#160; To explain - consider Figure 1 in the draft.&lt;/p&gt;    &lt;p&gt;F1 could be sent by &lt;a href="mailto:bob@rouge.com"&gt;bob@rouge.com&lt;/a&gt; as:&lt;/p&gt;    &lt;p&gt; INVITE &lt;a href="mailto:sip%3Aalice@proxy.com"&gt;sip:alice@proxy.com&lt;/a&gt; SIP/2.0      &lt;br /&gt; Contact: &amp;lt;&lt;a href="mailto:sip%3A%2B1-900-xxx@proxy.com"&gt;sip:+1-900-xxx@proxy.com&lt;/a&gt;&amp;gt;      &lt;br /&gt; Record-Route: &amp;lt;&lt;a href="mailto:sip%3Abob@rouge.com"&gt;sip:bob@rouge.com&lt;/a&gt;;lr&amp;gt;&lt;/p&gt;    &lt;p&gt;thus, when alice creates the dialog, the remote URI will indeed be +&lt;a href="mailto:1-900-xxx@proxy.com"&gt;1-900-xxx@proxy.com&lt;/a&gt;, and your in-dialog F10 message will be:&lt;/p&gt;    &lt;p&gt;&amp;#160; F10 INVITE Alice -&amp;gt; Bob&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; INVITE &lt;a href="mailto:sip%3A%2B1-900-xxx@proxy.com"&gt;sip:+1-900-xxx@proxy.com&lt;/a&gt; SIP/2.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Route: &amp;lt;&lt;a href="mailto:sip%3Abob@rouge.com"&gt;sip:bob@rouge.com&lt;/a&gt;;lr&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Proxy-Authorization: Digest username=&amp;quot;alice&amp;quot;, realm=&amp;quot;&lt;a href="http://proxy.com"&gt;proxy.com&lt;/a&gt;&amp;quot;,&amp;#160; uri=&amp;quot;&lt;a href="mailto:sip%3A%2B1-900-xxx@proxy.com"&gt;sip:+1-900-xxx@proxy.com&lt;/a&gt;&amp;quot;, nonce=&amp;quot;f84f1cec41e6cbe5aea9c8e88d359543&amp;quot;,&amp;#160; response=&amp;quot;3bea678acef9875433487f23a567d876&amp;quot;,&amp;#160; opaque=&amp;quot;&amp;quot;, algorithm=MD5      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Content-Type: application/sdp      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Content-Length:...&lt;/p&gt;    &lt;p&gt;presto - the authentication header now even contains the URI you want to call.&amp;#160; note that a re-INVITE could also be done to change the target URI a few times to get different Authentication headers with different URIs in, all legitimate.&lt;/p&gt;    &lt;p&gt;As to the potential solutions: both only accepting from registered contact or any attempt at avoiding sending re-INVITE [1] are in my opinion unfeasible and broken - i'll have some thought on others, though :-)&lt;/p&gt;    &lt;p&gt; ~ Theo&lt;/p&gt;    &lt;p&gt;1 - REFER is another in-dialog method that could be abused - an OOD REFER may be accepted with authentication by - for example - a PSTN gateway.&amp;#160; Social engineering of alice could result in alice's UA sending a REFER that could then be used.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I've just been for a long run and thought about this, and not come up with even a half sane solution: blurgh.&lt;/p&gt;  &lt;p&gt;bed.&lt;/p&gt;  </description><link>http://crazygreek.co.uk/blogger/2009/03/another-sip-vulnerability-documented.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-8639393763887760451</guid><pubDate>Wed, 04 Mar 2009 22:26:00 +0000</pubDate><atom:updated>2009-03-04T14:26:40.443-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>cisco</category><category domain='http://www.blogger.com/atom/ns#'>sip</category><title>SIP bug of the day: Cisco FAIL</title><description>&lt;p&gt;&lt;em&gt;Vendors that don't provide me with an email&amp;#160; address of an &lt;strong&gt;english speaking&lt;/strong&gt; human point of contact that can handle protocol bugs and isn't a front desk ticket person who has no idea what i'm talking about or tries to tell me to use another protocol like h323 instead can get their bugs stuck here instead!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Call from an E1:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:xxxxxx@X.X.X.X SIP/2.0&lt;/p&gt;    &lt;p&gt;To: &amp;lt;sip:xxxxxx@X.X.X.X&amp;gt;&lt;/p&gt;    &lt;p&gt;User-Agent: Cisco-SIPGateway/IOS-12.x&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Our SIP server returns a 302 with new Contact:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SIP/2.0 302 Directed&lt;/p&gt;    &lt;p&gt;Contact: &amp;lt;sip:Y.Y.Y.Y;param&amp;gt;&lt;/p&gt;    &lt;p&gt;Server: InUrSIPPacketzRedirectingUr/INVITES&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;New INVITE following the 3xx &lt;strong&gt;FAIL&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:Y.Y.Y.Y;param SIP/2.0&lt;/p&gt;    &lt;p&gt;To: &amp;lt;&lt;strong&gt;sip:@Y.Y.Y.Y&lt;/strong&gt;&amp;gt;&lt;/p&gt;    &lt;p&gt;User-Agent: Cisco-SIPGateway/IOS-12.x&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Anyone from Cisco reading (and &lt;em&gt;i know&lt;/em&gt; you do) - please can you get someone to fix it: I gave up trying to get bugs in your stacks fixed a long time ago :-)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Cisco IOS Software, 5350 Software (C5350-JK9S-M), Version 12.4(24)T, RELEASE SOFTWARE (fc1)&lt;/p&gt;&lt;/blockquote&gt;  </description><link>http://crazygreek.co.uk/blogger/2009/03/sip-bug-of-day-cisco-fail.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-7845455737343485084</guid><pubDate>Wed, 04 Mar 2009 18:28:00 +0000</pubDate><atom:updated>2009-03-04T10:28:48.038-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sip</category><category domain='http://www.blogger.com/atom/ns#'>ietf</category><category domain='http://www.blogger.com/atom/ns#'>security</category><title>SIP Security - User Interfaces</title><description>&lt;p&gt;As SIP-enabled phones capable of receiving calls from callers with SIP URIs as identifiers, much thought needs to be given to how these identifiers (assuming they are verified) are rendered to end users.&lt;/p&gt;  &lt;p&gt;It is common for a phone to render the &amp;quot;Display Name&amp;quot; in a SIP request on the phone's UI.&amp;#160; This value is set by the caller themselves, an in the case where a caller is an attacker, can manipulate it to make the UI display a value of it's choice, for example:&lt;/p&gt;  &lt;p&gt;&amp;#160; From: &amp;quot;manager@hsbc.co.uk&amp;quot; &amp;lt;sip:attacker@evil.example.com&amp;gt;;tag=xxx&lt;/p&gt;  &lt;p&gt;Every single SIP device I tested displayed this as &lt;a href="mailto:manager@hsbc.co.uk"&gt;manager@hsbc.co.uk&lt;/a&gt; on the screen.&lt;/p&gt;  &lt;p&gt;Even more thought needs to be taken when allowing Call-Info.&amp;#160; A picture of a padlock could be sent with Call-Info to render a picture of a padlock on the screen, lulling the user into thinking the call is secure.&lt;/p&gt;  &lt;p&gt;Some people suggest instead you render the URI of the identity, but how do UIs render this?&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;From: &amp;lt;sip:manager%40hsbc.co.uk%00@evil.example.com&amp;gt;;tag=xxx&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You guessed it, on the phone on my desk, I get:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="mailto:manager@hsbc.co.uk"&gt;manager@hsbc.co.uk&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ahem.&lt;/p&gt;  &lt;p&gt;Identity in SIP is more than just technical solutions.&amp;#160; User Interfaces need to be carefully considered.&lt;/p&gt;  </description><link>http://crazygreek.co.uk/blogger/2009/03/sip-security-user-interfaces.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-4751165313614066412</guid><pubDate>Wed, 04 Mar 2009 14:22:00 +0000</pubDate><atom:updated>2009-03-04T06:22:03.411-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>ietf</category><title>Are you sure you *really* know what a sequence of characters is?</title><description>&lt;p&gt;Just incase you weren't too sure, &lt;a href="http://tools.ietf.org/html/rfc3987"&gt;RFC 3987&lt;/a&gt; defines it for you:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;sequence of characters: A sequence of characters (one after another). &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://crazygreek.co.uk/misc/oh_rly.jpg"&gt;ohh, really?&lt;/a&gt;&amp;#160; Well, just incase you weren't sure, lets define a sequence of octets:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;sequence of octets: A sequence of octets (one after another). &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://crazygreek.co.uk/misc/ya_rly.jpg"&gt;yeah, really&lt;/a&gt;&lt;/p&gt;  </description><link>http://crazygreek.co.uk/blogger/2009/03/are-you-sure-you-really-know-what.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-4133929896763201336</guid><pubDate>Mon, 02 Mar 2009 22:41:00 +0000</pubDate><atom:updated>2009-03-02T14:45:59.813-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>drafts</category><category domain='http://www.blogger.com/atom/ns#'>p2p</category><category domain='http://www.blogger.com/atom/ns#'>ietf</category><title>P2P Architectures (and Zebras)</title><description>&lt;p&gt;Gonzalo Camarillo has just submitted &lt;a title="http://tools.ietf.org/html/draft-iab-p2p-archs-00" href="http://tools.ietf.org/html/draft-iab-p2p-archs-00"&gt;draft-iab-p2p-archs-00&lt;/a&gt;, an overview on P2P architectures:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;In this document we provide a survey of P2P (Peer-to-Peer) systems.&lt;br /&gt;The survey includes a definition and a taxonomy of P2P systems.  This&lt;br /&gt;survey also includes a description of which types of applications can&lt;br /&gt;be built with P2P technologies and examples of P2P applications that&lt;br /&gt;are currently in use on the Internet.  Finally, we discuss&lt;br /&gt;architectural tradeoffs and provide guidelines for deciding whether&lt;br /&gt;or not a P2P architecture would be suitable to meet the requirements&lt;br /&gt;of a given application.&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;The documents definition of a P2P system:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;We consider a system to be P2P if the elements that form the system share their resources in order to provide the service the system has been designed to provide.&lt;/p&gt;  &lt;p&gt;The elements in the system both provide services to other elements and request services from other elements.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;and a real quote from the draft:&lt;/p&gt;&lt;blockquote&gt;  &lt;p&gt;ZebraNet is a network used to track Zebras in the wild.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;It contains zebras, so must be worth a read!&lt;/p&gt;</description><link>http://crazygreek.co.uk/blogger/2009/03/p2p-architectures-and-zebras.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-3851828483259242182</guid><pubDate>Fri, 27 Feb 2009 17:57:00 +0000</pubDate><atom:updated>2009-02-27T10:39:16.250-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sip</category><title>SIP &amp; telephone numbers</title><description>&lt;p&gt;There seems to be a fair bit of confusion over URIs in SIP, specifically in the area of representing telephone numbers and dial strings.  SIP implementers often don't provide a way of configuring the way telephone numbers dialed on phones are converted in SIP URIs, resuling in service providers blindly re-writing incoming URIs based on some (often dumb) algorithm.  Annoyingly, SIP provides the mechanisms to represent to a server what it's trying to call without introducting ambiguity in requests, or requring logic in the server provider for re-writting dialed numbers unless required.&lt;/p&gt;&lt;p&gt;Before continuing, it's worth spending a few moments considering what a telephone number really is - or perhaps what it &lt;em&gt;represents&lt;/em&gt;.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Let's assume my telephone number on the PSTN is +442079460000.  The PSTN uses a numbering plan called &lt;a href="http://en.wikipedia.org/wiki/E.164"&gt;E.164&lt;/a&gt; which defines the structure of the numbers, including country codes.&lt;/p&gt;  &lt;p&gt;In addition to the global E.164 numbering plan, there are a few other types.  When you plus your PSTN phone into the socket on the wall, it is going to have a numbering plan.  this varies from country to country, and also even from provider to provider in some countries.&lt;/p&gt;  &lt;p&gt;As i'm (mostly) English, i'll use the UK numbering plan as the example here, although the country in question is irrelevant really for this discussion.&lt;/p&gt;  &lt;h2&gt;The UK numbering plan&lt;/h2&gt;  &lt;p&gt;&lt;em&gt;Note that a lot of the old school bell heads won't agree with some of the following section - and isn't necessarily how other people would approach the same subject - as it's very IP/globally oriented.  The telecommunications world is changing (much to the dismay of carriers that employ the very same bell heads), and with it the concepts of terms previously used in other ways in the PSTN world.  For example, NANP uses the terms "Numbering Plan", despite the fact from what I can see it's both a numbering plan and a dial plan using my definitions of the terms explained below. Suggestions for better names on a postcard to &lt;a href="mailto:theo@crazygreek.co.uk"&gt;theo@crazygreek.co.uk&lt;/a&gt; please!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;UK phone numbers are split up into groups.  For this discussion we only need to differentiate between these categories:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Geographic (01, 02)&lt;/li&gt;    &lt;li&gt;Non-Geographic (03), VoIP &amp;amp; Corporate (05), Mobile &amp;amp; Personal Numbering (07), Freephone and Special Rate (08), and Premium Rate (09)&lt;/li&gt;    &lt;li&gt;Operator Services (short code starting with 1 - e.g 100 for operator, 123 for speaking clock, 1471 for call return, etc)&lt;/li&gt;    &lt;li&gt;Directory Enquiries (118xxx)&lt;/li&gt;    &lt;li&gt;Emergency Services (999 and 112)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;An important differentiation between the first two categories and the others is that the first two are part of the E.164 numbering plan, and thus the UK number &lt;strong&gt;02079460000&lt;/strong&gt; is also part of the E.164 dialplan, as &lt;strong&gt;+442079460000&lt;/strong&gt;, as +44 is the country code assigned to the UK.&lt;/p&gt;  &lt;p&gt;All of the other categories are &lt;strong&gt;not&lt;/strong&gt; part of the E.164 numbering plan, but can be reached from any UK phone line - so this is where dial plans come in.  A &lt;em&gt;dial plan&lt;/em&gt; and a &lt;em&gt;numbering plan&lt;/em&gt; are 2 different things in my world.  A &lt;em&gt;numbering plan&lt;/em&gt; specifies how numbers are allocated (e.g, the UK numbering plan), and a dialling plan specifies what an end user actually dials on a phone to get to a number.  A phone (as a logical concept) has a dial plan associated with it.&lt;/p&gt;  &lt;p&gt;The third category of numbers, &lt;em&gt;Operator Services&lt;/em&gt; are unique to an operator.  If i dial 123 on my land line phone provided by BT, it's not the same thing as calling 123 on my mobile phone provided by Vodafone, as &lt;em&gt;Operator Service&lt;/em&gt; numbers are unique to the operator. &lt;/p&gt;  &lt;p&gt;In the UK, our directory enquiry services are available on 118xxx, and is indeed part of the UK numbering plan.  Dialling 118500 will get you through to BT's directory enquiry service if you're on a BT provided phone line or a Vodafone one.  However, again, they're not part of the E.164 numbering plan.&lt;/p&gt;  &lt;p&gt;To consider why this is the case, think about this:  &lt;strong&gt;02079460000&lt;/strong&gt; is &lt;strong&gt;+442079460000&lt;/strong&gt; in the &lt;em&gt;E.164&lt;/em&gt; numbering plan.  To call it from any phone in the UK, you could dial &lt;strong&gt;02079460000&lt;/strong&gt;. Using a phone in America, you'd dial &lt;strong&gt;011442079460000&lt;/strong&gt;, as '011' is the dial string used in America to indicate what follows is an E.164 number (minus the '+').&lt;/p&gt;  &lt;p&gt;But if I wanted to dial BT's directory enquiries (reachable on 118500 from a UK phone), what would I dial in America? 01144118500? - no! that's 0118500, an invalid number in the UK 01 numbering plan (specifically, 0118 is Reading, a rather boring town which wouldn't really bother me if you couldn't call it, but i'm sure people living there might complain :-)).&lt;/p&gt;  &lt;p&gt;Now, in the UK we also have 2 network features: 141 and 1470.  Prefixing any call with 141 will cause your number to be withheld, and prefixing with 1470 will cause it to be released (assuming your default is to withhold you number).  Both of these are dial plan features, as opposed to be any part of the numbering plan.&lt;/p&gt;  &lt;h2&gt;Back To SIP&lt;/h2&gt;  &lt;p&gt;Because SIP is an IP protocol and can (and often does) run over the Internet, it doesn't have the same physical properties the PSTN does.  A phone call can be made using SIP from my laptop, and then the next day using the same SIP account from somewhere in America.&lt;/p&gt;  &lt;p&gt;So, when I dial a number into my SIP phone, what should the phone do with that number, and how does it indicate to the SIP service provider it's sending the call to?&lt;/p&gt;  &lt;p&gt;Following the &lt;a href="http://en.wikipedia.org/wiki/End-to-end_principle"&gt;End-To-End&lt;/a&gt; principle that we all hold so dear to SIP (cough, splutter), the idea as that a SIP phone should be configured with a dialling plan, that takes the input the user has dialled, and converts it into something that the service provider knows what to do with, without any configuration on it's part.&lt;/p&gt;  &lt;p&gt;However, how the URI is then represented in a SIP request URI is where confusion arises.&lt;/p&gt;  &lt;p&gt;Firstly, let's assume we're talking about the PSTN here, and calling numbers on the PSTN.&lt;/p&gt;  &lt;h3&gt;The tel / user=phone approach&lt;/h3&gt;  &lt;p&gt;A SIP device can often be configured with a dial plan (also known as a digitmap).  One of the reasons for this is to allow a SIP device to dial as soon as a number has been entered, rather than needing to wait for a user to press the "dial" button to place the call.  It also allows a user to configure how it translated the number dialled into a number within a given numbering plan.&lt;/p&gt;  &lt;p&gt;The dial plan configured on the phone can then modify the input string dialled by the user, and convert it into a telephone number that is globally unique.  There is a URI scheme defined by the IETF (&lt;a href="http://tools.ietf.org/html/rfc2806"&gt;RFC 2806&lt;/a&gt;) to indicate a telephone number, "tel".  In it's most simple form, a tel URI contains just an E.164 number.  So, if I dial 02079460000 on my phone, the dial plan configured on it would convert that to call +442079460000, and request line could be:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE &lt;strong&gt;tel:+442079460000&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;However, SIP URIs also have a way of representing a tel URI while being a valid SIP URI.  A &lt;strong&gt;user=phone&lt;/strong&gt; parameter in the SIP URI indicates that the user part of the URI (i.e, the bit between the "sip:" and the @) is actually a telephone number (the whole of the "tel:" URI without the leading "tel:"), as defined in &lt;a href="http://tools.ietf.org/html/rfc2806"&gt;RFC 2806&lt;/a&gt;.  So you could instead send:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:&lt;strong&gt;+442079460000&lt;/strong&gt;@voip.co.uk;&lt;strong&gt;user=phone&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Which is identical to the first example, except asking voip.co.uk  to terminate the call rather than wherever you're sending the request to.&lt;/p&gt;  &lt;p&gt;In order to be globally unique, a number needs to be scoped to a particular context (think about different numbering plans).  A "phone-context" parameter of the tel URI defines the scope that the number is valid within.  The default context of a tel URI is the global one - i.e, E.164, and the number itself must always be prefixed with '+'.  The context changes the meaning of the number to indicate that it is valid within the environment where the local entities global phone number starts with the given string.&lt;/p&gt;  &lt;p&gt;So, to call a number that is not in the E.164 context, we need to append the right phone-context.  In the case of 118500 (a UK directory enquires service), it is available anywhere in the UK.  Thus, a good phone-context would be "+44":&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:&lt;strong&gt;118500;phone-context=+44&lt;/strong&gt;@voip.co.uk;&lt;strong&gt;user=phone&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;or it's tel URI brother:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE tel:&lt;strong&gt;118500;phone-context=+44&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Again, this would presumably be done by configuring a dial plan on the phone itself.&lt;/p&gt;  &lt;p&gt;In order to handle privacy (such as 141 and 1470 in the UK), a SIP user agent must populate the Privacy header with the values it wishes to use itself rather than including the prefix in the number sent to the service provider.  A dial plan configured on the phone could be utilised to do this.  So dialing '14102079460000' should result in:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:&lt;strong&gt;+442079460000&lt;/strong&gt;@voip.co.uk;&lt;strong&gt;user=phone&lt;/strong&gt; SIP/2.0&lt;/p&gt;    &lt;p&gt;Privacy: xxx&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;Note that although RFC 2806 has been updated by RFC 3966, RFC 3261 (the core SIP spec) references 2806.  Specifically, RFC 2806 is ambiguous as to wether the "phone-context" MUST be included;  In one paragraph it says it SHOULD, and another it says MUST.  RFC 3966 updates for the inclusion of a phone-context parameter to be MUST.&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;The user=dialstring approach&lt;/h3&gt;  &lt;p&gt;Assuming the SIP device isn't smart enough to be configured with a dial plan - or perhaps it doesn't want to be - and wishes to offload the dial plan handling the network, we need some way of indicating this.&lt;/p&gt;  &lt;p&gt;Luckily for us, &lt;a href="http://tool.ietf.org/html/rfc4967"&gt;RFC 4967&lt;/a&gt; provides a mechanism for exactly that.  The server can then apply rules configured in "the network" for the number.&lt;/p&gt;  &lt;p&gt;Note that a dial string URI &lt;strong&gt;MUST&lt;/strong&gt; contain a &lt;em&gt;phone-context&lt;/em&gt; parameter, so the question then arises what the value of this should be.  While it depends very much on a deployment by deployment basis, I see 2 general ways of handling it:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A set of pre defined contexts are created, and the user selects the one they want.  For example, &lt;em&gt;uk.dialplan.voip.co.uk&lt;/em&gt; could be the standard UK dialplan defined above.&lt;/li&gt;    &lt;li&gt;Each user can create their own context - presumably under the domain of the service provider.  For example, I use &lt;em&gt;theo.dialplan.voip.co.uk&lt;/em&gt;.  I then configure this context using tools provided by VoIP.co.uk&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I then configure my phone to use "user=dialplan", and tell the phone which context i wish to use - let's say &lt;em&gt;uk.dialplan.voip.co.uk&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Thus, if I wanted to call 118500 (UK directory enquiries), it would be sent as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:&lt;strong&gt;118500;phone-context=uk.dialplan.voip.co.uk&lt;/strong&gt;@voip.co.uk;&lt;strong&gt;user=dialstring&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Similarly, calling my London number &lt;strong&gt;02079460000:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:&lt;strong&gt;02079460000;phone-context=uk.dialplan.voip.co.uk&lt;/strong&gt;@voip.co.uk;&lt;strong&gt;user=dialstring&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;an international call would be:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:&lt;strong&gt;0015001234567;phone-context=uk.dialplan.voip.co.uk&lt;/strong&gt;@voip.co.uk;&lt;strong&gt;user=dialstring&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Using our withhold CLI feature also works using this approach, so I could call my london number while requesting the network withholds my number by indicating it in the dial string, assuming the uk.dialplan.voip.co.uk dial plan has been suitably configured:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:&lt;strong&gt;14102079460000;phone-context=uk.dialplan.voip.co.uk&lt;/strong&gt;@voip.co.uk;&lt;strong&gt;user=dialstring&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Of course, in reality, very few SIP devices are ever configured with dial plans, and most networks don't even support phone-context!  Generally, when you send a call to a service provider, it will currently perform analysis of the number and look at settings for the user trying to place to call to extract what it means.  While this works most the time, it does require logic in the network, which means you're never really sure what the network is doing for you.&lt;/p&gt;  &lt;h3&gt;urn:sos&lt;/h3&gt;  &lt;p&gt;One issue with phone-contexts is they are not aware of your current location, and some - in reality one - location &lt;strong&gt;really&lt;/strong&gt; needs to know where you are: the emergency services.&lt;/p&gt;  &lt;p&gt;When you dial 999 (or 112, or 911 perhaps), you really want to speak to the emergency services near where you are, not wherever your phone-context is configured!&lt;/p&gt;  &lt;p&gt;So, to let the network know that, a special URN service has been defined in &lt;a href="http://tools.ietf.org/html/rfc5031"&gt;RFC 5031&lt;/a&gt;.  When your phone detects you've called the emergency services (by looking at the number you dialed), it would convert that to a emergency services URN:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE &lt;strong&gt;urn:service:sos&lt;/strong&gt; SIP/2.0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can also qualify it with a more exact service - as some countries have different numbers for different services - for example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;urn:service:sos.ambulance&lt;/li&gt;    &lt;li&gt;urn:service:sos.fire&lt;/li&gt;    &lt;li&gt;urn:service:sos.gas&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;See the &lt;a href="http://www.iana.org/assignments/urn-serviceid-labels/urn-serviceid-labels.xhtml"&gt;IANA registry&lt;/a&gt; for all the currently registered services.&lt;/p&gt;  &lt;p&gt;The idea with these is that the SIP proxy receiving the request would use location based information to route the call to the correct place.&lt;/p&gt;  &lt;h3&gt;ENUM&lt;/h3&gt;  &lt;p&gt;ENUM provides a few funky solutions to some problems in SIP.&lt;/p&gt;  &lt;p&gt;A NAPTR lookup could allow a phone to look up how many digits are needed to reach a valid number as the user is dialling by using Ray Bellis' &lt;a title="http://tools.ietf.org/html/draft-bellis-enum-send-n-02" href="http://tools.ietf.org/html/draft-bellis-enum-send-n-02"&gt;Send-N&lt;/a&gt; draft.  By using phone-context with DNS entries, even a local phone-context can also be handled this way.&lt;/p&gt;  &lt;h3&gt;Linked Numbering Schemes&lt;/h3&gt;  &lt;p&gt;It's common on a fixed PSTN line to be able to dial a local number without including the full prefix, for example, if I had the telephone number 02079460001, I could call 02079460000 by dialling 79460000.  This is simply a feature of a phone context.  Using user=dialstring, you could either set the context to the global number you're calling from, i.e:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE sip:79460000;phone-context=+4402079460001@voip.co.uk;user=dialstring&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;or  set the context to be a dialplan that has been configured to handle that, perhaps:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;INVITE: sip:79460000;phone-context=london.uk.dialplan.voip.co.uk@voip.co.uk;user=dialstring SIP/2.0&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://crazygreek.co.uk/blogger/2009/02/sip-telephone-numbers.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-5542478982018296814</guid><pubDate>Wed, 25 Feb 2009 06:24:00 +0000</pubDate><atom:updated>2009-02-24T22:26:24.044-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sip</category><category domain='http://www.blogger.com/atom/ns#'>omnomom</category><category domain='http://www.blogger.com/atom/ns#'>cookie</category><title>draft-zourzouvillys-sip-via-cookie-01</title><description>&lt;p&gt;I've submitted a &lt;a href="http://tools.ietf.org/html/draft-zourzouvillys-sip-via-cookie-01"&gt;draft-zourzouvillys-sip-via-cookie-01&lt;/a&gt;, which addresses typos and feedback from people, although the underlying mechanism has not changed at all.&lt;/p&gt;  &lt;p&gt;The new -01 draft does however contain some actual calculations on the extent of the problem, and as such i've upated the abstract to contain some fearmongering text :) ...&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This document addresses a vulnerability in publicly accessible SIP servers (servers includes both UASes and proxies) that enables them to be used as an amplifier in an untracable reflected denial of service attack. The amplification ratio is between 1:10 to over 1:350 in both packets and bytes. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Discussion in IETF SIP working group has been good so far, and the draft well received.&lt;/p&gt;  &lt;p&gt;Feedback, as always, most welcomed.&lt;/p&gt;</description><link>http://crazygreek.co.uk/blogger/2009/02/draft-zourzouvillys-sip-via-cookie-01.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-5010677897549713983</guid><pubDate>Fri, 20 Feb 2009 19:05:00 +0000</pubDate><atom:updated>2009-02-20T11:05:39.648-08:00</atom:updated><title>Addressing an Amplification Vulnerability in SIP Servers</title><description>&lt;h3&gt;I don't like elephants.&lt;/h3&gt;  &lt;p&gt;There has been a great big elephant sitting in SIP that no one has wanted to talk about, for a long time.&amp;#160; Problem is, I don't like elephants.&amp;#160; They scare me.&lt;/p&gt;  &lt;p&gt;People that are not intimate with SIP seem most surprised that a publicly accessible SIP server can commonly be used as an amplifier in a reflected denial of service attack.&amp;#160; They shouldn't be.&amp;#160; It's been like that forever. &lt;/p&gt;  &lt;p&gt;So after years of ignoring the elephant in the room, i've tried to start tackling it, and have submitted some discussion on the matter along with an potential solution &lt;a href="http://tools.ietf.org/html/draft-zourzouvillys-sip-via-cookie-00"&gt;draft-zourzouvillys-sip-via-cookie-00&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It's not a complete solution to address all of the issues, but it brings UDP in line with stream based (and DTLS) transports so we can build a solution on top of this which mitigates the issues with in-dialog initiated attacks and RTP steering.&lt;/p&gt;  &lt;h3&gt;I AM THE SCARE MONGER, AND I BRING YOU ..... SCARES!&lt;/h3&gt;  &lt;p&gt;Until the problem this draft is trying to solve is fixed, any publicly accessible SIP server listening on UDP can likely be used as a amplifier in a reflected denial of service attack.&amp;#160; And that's &lt;strong&gt;bad,&lt;/strong&gt; for all of us on the internet, not just the SIP world.&amp;#160; It means a SIP server can be used by an attacker as to amplify an attack against non-SIP infrastructure - that could be a web server, router, DNS server, or anything else an attacker so chooses.&lt;/p&gt;  &lt;p&gt;By amplifier, we're talking one spoofed UDP request sent by an attacker resulting in 11 UDP responses sent to the victim (combined with other attacks, the pathological case results in ~35 UDP packets being sent to the victim from a single one by the attacker, along with a significant number of RTP packets).&amp;#160; Neither the victim nor the attacker need to have an account with the SI P server (&amp;quot;SIP server&amp;quot;, for example, could be an asterisk install or just a bog standard SIP phone) - it just needs to be accessible and process requests statefully (and most do).&lt;/p&gt;  &lt;p&gt;Ohh, and because it's UDP, it's not possible to trace the attacker, meaning we can't even find them and shut them down. woo.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Outlook&lt;/h3&gt;  &lt;p&gt;In the longer term, we've still got a few other elephants that need talking about: RTP target verification and Contact/Route validation for dialog creation are just two that can currently be abused for some potentially similarly scary attacks, and &lt;strong&gt;need&lt;/strong&gt; to be solved rather than ignored.&lt;/p&gt;  &lt;p&gt;Note that &lt;strong&gt;none of this is new.&amp;#160; &lt;/strong&gt;This kind of feels like DNS all over again :-)&lt;/p&gt;  &lt;p&gt;ho hum.&lt;/p&gt;  </description><link>http://crazygreek.co.uk/blogger/2009/02/addressing-amplification-vulnerability.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-2783337420047363237</guid><pubDate>Fri, 24 Oct 2008 00:59:00 +0000</pubDate><atom:updated>2008-10-23T17:59:51.252-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>sip</category><category domain='http://www.blogger.com/atom/ns#'>sipit</category><category domain='http://www.blogger.com/atom/ns#'>ietf</category><title>SIPit 23 Survery Notes</title><description>&lt;p&gt;Robert Sparks has released the results of the &lt;a href="https://www.sipit.net/SIPit23_Summary"&gt;survey&lt;/a&gt; of implementations taken to the last SIPit.&lt;/p&gt;  &lt;p&gt;While not very much comes as a surprise, i'm particularly happy to see this:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;Many teams expressed intent to implement outbound and gruu once something was published as an RFC, and a strong unwillingness to even try until that happens.&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Also good to see 2 XCAP servers.&amp;#160; I was starting to wonder if &lt;strong&gt;anyone&lt;/strong&gt; would implement it :-)&lt;/p&gt;  &lt;p&gt;This is a little worrying, though:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;The only people in the room who had even read the sip-config framework documents are regular IETF participants. Even fewer had read sip-consent or session-policy.&amp;quot;&lt;/em&gt;&lt;/p&gt;  </description><link>http://crazygreek.co.uk/blogger/2008/10/sipit-23-survery-notes.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-7168532250958551111</guid><pubDate>Sat, 11 Oct 2008 17:24:00 +0000</pubDate><atom:updated>2008-10-11T12:15:49.863-07:00</atom:updated><title>Today's wise words</title><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Julie Meyer's &lt;a href="http://www.slideshare.net/carsonified/the-future-of-entrepreneurship-presentation"&gt;great talk&lt;/a&gt; on &lt;em&gt;The Future of Entrepreneurship&lt;/em&gt; at &lt;a href="http://www.futureofwebapps.com/"&gt;FOWA London '08&lt;/a&gt; has this poignant quote in it, that everyone should think about long and hard:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;Our deepest fear is not that we are inadequate. Our deepest fear is that we are powerful beyond measure. It is our light, not our darkness that most frightens us. We ask ourselves, Who am I to be brilliant, gorgeous, talented, fabulous? Actually, who are you not to be? You are a child of God. Your playing small does not serve the world. There is nothing enlightened about shrinking so that other people won't feel insecure around you. We are all meant to shine, as children do. We were born to make manifest the glory of God that is within us. It's not just in some of us; it's in everyone. And as we let our own light shine, we unconsciously give other people permission to do the same. As we are liberated from our own fear, our presence automatically liberates others.&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt; -- Marianne Williamson&lt;/p&gt;</description><link>http://crazygreek.co.uk/blogger/2008/10/today-wise-words.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-3945380499325036340</guid><pubDate>Sat, 11 Oct 2008 16:53:00 +0000</pubDate><atom:updated>2008-10-11T09:58:26.394-07:00</atom:updated><title>The problem with credit ...</title><description>&lt;p&gt;... is that it's getting really hard to live life without it.&lt;/p&gt;  &lt;p&gt;A few months ago my car broke down.&amp;#160; I phoned up the AA, who arranged for it to be towed to the garage, and for a rental car for me for a few days. Shortly after, I got a call from Avis, who told me they needed my credit card details so they could take a deposit for damages, fuel, etc.&lt;/p&gt;  &lt;p&gt;I gave them my Maestro card number - and they said that they only take Visa or Mastercard, not Maestro.&amp;#160; So, I tried to give them my Visa Debit card.&amp;#160; They wouldn't have any of that, either!&amp;#160; Only &lt;strong&gt;credit&lt;/strong&gt;, not &lt;strong&gt;debit&lt;/strong&gt; cards accepted here, no sire.&amp;#160; On asking why, they said &amp;quot;&lt;em&gt;it's company policy&lt;/em&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;Last week, I used my T-Mobile SIM card in my laptop to try to read a message on Facebook.&amp;#160; It told me that there were parental controls (!) in place and I would need to remove them before I could access the site.&amp;#160; So, I click on &amp;quot;remove content block&amp;quot;, and a page later get asked for credit card details.&lt;/p&gt;  &lt;p&gt;Guess what?&amp;#160; Maestro doesn't work, Visa Debit doesn't work, and neither does my prepaid credit card from virgin.&lt;/p&gt;  &lt;p&gt;So there are now 2 reasons i've &lt;strong&gt;needed&lt;/strong&gt; a credit card, despite being lucky enough to have enough cash in my bank to not need one.&lt;/p&gt;  &lt;p&gt;While credit cards may provide purchase protection, they're also fostering the deep rooted attitude towards credit so many people in the UK and America have today.&lt;/p&gt;  &lt;p&gt;Mortgages, HP, car finance, credit cards, bank loans, pay advances - all instruments of the current &amp;quot;&lt;em&gt;financial crisis&lt;/em&gt;&amp;quot; - although I don't think it's a crisis any more than capitalist punishment for being greedy bastards.&amp;#160; all of us - not just the bankers.&lt;/p&gt;  &lt;p&gt;Avis &amp;amp; T-Mobile are just as much to blame for the economy being the way it is right now as anyone who is in negative equity.&lt;/p&gt;  &lt;p&gt;The national average for salary p/a is 23,746 GBP.&amp;#160; After paying tax at code 474 and national insurance, that's 1,495.48 per month.&lt;/p&gt;  &lt;p&gt;Assuming you could somehow live off half of that, then you could save 8,972 a year.&amp;#160; That's 22 years of saving and living off an impossible amount to save 200,000 - the price of a semi-decent house outside of home counties.&lt;/p&gt;  &lt;p&gt;Ohh, and hang on - we've just spent 22 years saving - we've not been able to go on holiday, or more importantly pay for a pension.&amp;#160; Or pay council tax at perhaps 1000/year!&lt;/p&gt;  &lt;p&gt;Houses are too expensive because we've got too many people and not enough land.&amp;#160; To reduce house prices, we either need to have less people in the UK, or find more land to build on.&amp;#160; We actually have plenty of land that's not built on, but it's mostly being used for farming &amp;amp; agriculture - a noble and important part of our economy, unless we want to dig ourselves into holes for the future by relying on other countries to give us food.&amp;#160; Because we joined Europe and had a shoddy immigration policy for so long, we're probably stuck with the population as it is.&lt;/p&gt;  &lt;p&gt;So i'd like to propose another solution: we swap some of the Icelandic debt in return for part of their country.&amp;#160; We can defrost the land, and then provide it to British people for building houses on.&amp;#160; The economy would boom due to all the houses being built, will generate lots of jobs due to all the building and staffing new high streets (which Icelandic companies already have experience in running), house prices in the UK would be in less demand, there would be less people in the UK, and as a result, house prices here would fall.&lt;/p&gt;  &lt;p&gt;I should become a politician.&lt;/p&gt;  </description><link>http://crazygreek.co.uk/blogger/2008/10/problem-with-credit.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-6824918090514913907</guid><pubDate>Sat, 11 Oct 2008 15:22:00 +0000</pubDate><atom:updated>2008-10-11T09:58:53.712-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>http</category><category domain='http://www.blogger.com/atom/ns#'>sip</category><title>Differences between SIP and HTTP</title><description>&lt;p&gt;I was recently asked to justify my smug all-knowing grin when I was recently told that &amp;quot;&lt;em&gt;SIP seems as simple as HTTP&amp;quot;&lt;/em&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;I can understand how someone who has seen a few SIP messages in a book or in tshark can come to that conclusion, or perhaps even read a summary in a SIP book.&amp;#160; But, that's where the similarities end.&amp;#160; As soon as you start to deal with SIP at a protocol level, you'll come to realise why it's such a different beast from HTTP.&lt;/p&gt;  &lt;h2&gt;Similarities&lt;/h2&gt;  &lt;h3&gt;SIP has a similar looking textual representation to SIP.&lt;/h3&gt;  &lt;p&gt;Caveat emptor: they're actually rather different - a validating SIP header parser will not parse HTTP, and vise versa.&lt;/p&gt;  &lt;h3&gt;Both have 3 letter response codes in responses.&lt;/h3&gt;  &lt;p&gt;However a response code in HTTP doesn't mean the same thing in SIP.&amp;#160; Both sit in entirely difference namespaces.&lt;/p&gt;  &lt;h3&gt;Both have normative references to rfc2617.&lt;/h3&gt;  &lt;p&gt;Except functionality like nonce counts, multiple proxy hops, and Authentication-Info are very confused in SIP.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Differences&lt;/h2&gt;  &lt;h3&gt;SIP initiates sessions.&amp;#160; HTTP transfers data.&lt;/h3&gt;  &lt;p&gt;This is the key one.&amp;#160; HTTP was designed as a &lt;em&gt;transfer protocol&lt;/em&gt;.&amp;#160; SIP was designed for &lt;em&gt;session initialisation&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;SIP is for signaling, and isn't designed for transferring the data for the session itself.&amp;#160; RTP, MSRP, and XMPP are all examples of the session transport.&lt;/p&gt;  &lt;h3&gt;HTTP has a strict client/server model.&amp;#160; In SIP, the UA is a client &lt;strong&gt;and&lt;/strong&gt; server.&lt;/h3&gt;  &lt;p&gt;A SIP client is schizophrenic.&amp;#160; One second it's a client, then before it knows it, it's a server!&amp;#160; This is an important part of SIP - sessions are bi-directional.&amp;#160; All agents are both client's and servers.&lt;/p&gt;  &lt;h3&gt;A transaction in SIP can span multiple messages&lt;/h3&gt;  &lt;p&gt;Some of which are hop-by-hop (ACK to IxT failure), others are end-to-end (ACK to IxT 2xx).&lt;/p&gt;  &lt;p&gt;Infact, SIP has a fairly complex state machine.&amp;#160; HTTP doesn't.&amp;#160; A Request results in a response.&amp;#160; Simple!&lt;/p&gt;  &lt;h3&gt;SIP has provisional responses&lt;/h3&gt;  &lt;p&gt;That can go on for an age in SIP.&amp;#160; Resources in a large scale SIP platform need to be carefully optimised to handle the very common case of a request waiting a very long period of time for a response - for example while a user's phone rings.&amp;#160; Because of this, provisional responses are sent before the final one.&lt;/p&gt;  &lt;h3&gt;SIP R-URI's can be modified as they traverse &amp;quot;&lt;em&gt;the network&lt;/em&gt;&amp;quot;&lt;/h3&gt;  &lt;p&gt;When a SIP message is sent out from a UA, it only &lt;strong&gt;really&lt;/strong&gt; knows it's next hop (excluding RRiing).&amp;#160; Each hop then takes responsibility for passing it on to the next hop - and indeed may even change the real target as it progresses.&lt;/p&gt;  &lt;p&gt;HTTP on the other hand doesn't generally change the URL (front end reverse proxies excluded) without doing some nasty hacks like wireless portals, MNOs, and hotels tend to.&lt;/p&gt;  &lt;h3&gt;SIP messages are processed on a hop by hop basis.&amp;#160; HTTP can stream responses back.&lt;/h3&gt;  &lt;p&gt;A SIP message goes from hop to hop, completing each hope before continuing to the next.&amp;#160; Imagine in HTTP downloading the entire file to the proxy before you could start to download it to the web browser!&lt;/p&gt;  &lt;p&gt;This all stems from the fact SIP only handles &lt;em&gt;signaling&lt;/em&gt;, so it contains only (relatively) small messages.&amp;#160; HTTP on the other hand has no real limits on response size.&lt;/p&gt;  &lt;h3&gt;HTTP provides an entire architecture for caching.&amp;#160; SIP doesn't know anything about a caching proxy.&amp;#160; &lt;/h3&gt;  &lt;p&gt;Even a non-caching (pass through) HTTP proxy has very few similarities to a SIP proxy.&lt;/p&gt;  &lt;p&gt;SIP doesn't know anything about caching, nor would it be valid to cache a response and provide it to something outside of the transaction.&lt;/p&gt;  &lt;h3&gt;SIP can (and most commonly does) run over unreliable protocols.&lt;/h3&gt;  &lt;p&gt;HTTP requires a reliable transport.&amp;#160; Congestion control is handled at the transport level.&lt;/p&gt;  &lt;h3&gt;SIP is broken.&amp;#160; HTTP ain't.&lt;/h3&gt;  &lt;p&gt;SBCs, HERFP, DTMF, identity - it's all rather broken in SIP.&amp;#160; HTTP seems to be fairly clean in it's implementation - SIP is far from it.&lt;/p&gt;  &lt;p&gt;I'm still waiting for one person to tell me a single part of SIP that isn't broken in one form or another.&amp;#160; And yes, I &lt;strong&gt;can&lt;/strong&gt; use the forking card when I see fit :-)&amp;#160; answers on a postcard to &lt;a href="mailto:theo@crazygreek.co.uk"&gt;theo@crazygreek.co.uk&lt;/a&gt; please.&lt;/p&gt;</description><link>http://crazygreek.co.uk/blogger/2008/09/differences-between-sip-and-http.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-6718987729615984196</guid><pubDate>Wed, 01 Oct 2008 06:06:00 +0000</pubDate><atom:updated>2008-09-30T23:06:45.125-07:00</atom:updated><title>Day 3: Niagara Falls - Sodus Point, NY - Sackets Harbour, NY</title><description>&lt;p&gt;We awoke to an amazing view of Niagara Falls out of the hotel room window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/theo.zourzouvillys/SOMTbdDk1iI/AAAAAAAAAKk/feD_f4_AOmU/s1600-h/DSC04800%5B4%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04800" src="http://lh4.ggpht.com/theo.zourzouvillys/SOMTb0Otv3I/AAAAAAAAAKo/Z40TKTjnmJM/DSC04800_thumb%5B2%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After an expensive breakfast at the Marriot ($20 each!), we left the hotel at about 0940, for a quick trip (~5 minutes!) down to the falls to grab the obligatory photos next to the falls...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/theo.zourzouvillys/SOMTbyepgQI/AAAAAAAAAKs/lo_rFTOW7sA/s1600-h/DSC04812%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04812" src="http://lh3.ggpht.com/theo.zourzouvillys/SOMTcDFjvlI/AAAAAAAAAKw/6maLRnYwJqE/DSC04812_thumb%5B1%5D.jpg?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;and we headed back into the USA, after a very rude immigration officer (on the states side).&amp;#160; After getting 2 very polite ones, I was starting to wonder what all the fuss people make about them was about - but now I understand!&lt;/p&gt;  &lt;p&gt;Leaving Niagara falls we head east along Lake Ontario, and I start to see what I came here for ... endless trees!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/theo.zourzouvillys/SOMTcRtxVFI/AAAAAAAAAK0/wL6ZBEASl3Y/s1600-h/DSC04826%5B8%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="340" alt="DSC04826" src="http://lh3.ggpht.com/theo.zourzouvillys/SOMTcquF01I/AAAAAAAAAK4/1E7y5L8eMVE/DSC04826_thumb%5B4%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After driving for a while through stunning scenery, we arrive in Rochester, NY - which is mostly uninteresting, except a huge Kodak building which was their HQ, now a museum - and continue until we make a stop at an old lighthouse, in Sodus Bay.&amp;#160; Inside the lighthouse is a great little collection of local history, and the staff there were very interesting.&amp;#160; Sadly, the weather was awful so the view wasn't that great.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/theo.zourzouvillys/SOMTcw3iCQI/AAAAAAAAAK8/pp7diGrRVsg/s1600-h/DSC04840%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="DSC04840" src="http://lh6.ggpht.com/theo.zourzouvillys/SOMTdO7Gw9I/AAAAAAAAALA/Awd1OURefRQ/DSC04840_thumb.jpg?imgmax=800" width="236" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We ended up in a quaint little town called Sackets Harbour at about 2000, and stayed in the hotel there for the night.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;iframe marginwidth="0" marginheight="0" src="http://maps.google.com/maps?f=d&amp;amp;saddr=Niagara+Falls,+ON,+Canada&amp;amp;daddr=Harbor+St%2FRT-18+to:I-490+E+to:43.206177,-76.92215+to:W+5th+St%2FW+Fifth+St+Rd%2FRT-48+to:RT-3&amp;amp;hl=en&amp;amp;geocode=%3BFZrslAIdMhxN-w%3BFdRukgIdmsRf-w%3B%3BFWwJlwIdJn1w-w%3BFbpFngIdoq92-w&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=3&amp;amp;sz=10&amp;amp;via=1,2,3,4&amp;amp;sll=43.331172,-76.651611&amp;amp;sspn=0.521442,1.354065&amp;amp;ie=UTF8&amp;amp;s=AARTsJqRAlK7nH3wM1jFMBe_snmU6xWd6g&amp;amp;ll=43.640051,-77.618408&amp;amp;spn=2.782533,7.03125&amp;amp;z=7&amp;amp;output=embed" frameborder="0" width="640" scrolling="no" height="350"&gt;&lt;/iframe&gt;  &lt;br /&gt;&lt;small&gt;&lt;a style="color: #0000ff; text-align: left" href="http://maps.google.com/maps?f=d&amp;amp;saddr=Niagara+Falls,+ON,+Canada&amp;amp;daddr=Harbor+St%2FRT-18+to:I-490+E+to:43.206177,-76.92215+to:W+5th+St%2FW+Fifth+St+Rd%2FRT-48+to:RT-3&amp;amp;hl=en&amp;amp;geocode=%3BFZrslAIdMhxN-w%3BFdRukgIdmsRf-w%3B%3BFWwJlwIdJn1w-w%3BFbpFngIdoq92-w&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=3&amp;amp;sz=10&amp;amp;via=1,2,3,4&amp;amp;sll=43.331172,-76.651611&amp;amp;sspn=0.521442,1.354065&amp;amp;ie=UTF8&amp;amp;ll=43.640051,-77.618408&amp;amp;spn=2.782533,7.03125&amp;amp;z=7&amp;amp;source=embed"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;  </description><link>http://crazygreek.co.uk/blogger/2008/09/day-3-niagara-falls-sodus-point-ny.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-8970227643832501137</guid><pubDate>Sun, 28 Sep 2008 06:00:00 +0000</pubDate><atom:updated>2008-09-27T23:00:47.140-07:00</atom:updated><title>Day 2: Shipshewana - Niagara Falls</title><description>&lt;p&gt;Awoke to the most beautiful view of Amish countryside and typical American barns.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/theo.zourzouvillys/SN8dIncMTvI/AAAAAAAAAJk/6MjPBq5AAgY/s1600-h/DSC04752%5B5%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04752" src="http://lh3.ggpht.com/theo.zourzouvillys/SN8dKxGYs4I/AAAAAAAAAJo/e3Zfl8WCdj4/DSC04752_thumb%5B3%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/theo.zourzouvillys/SN8dMWxZzjI/AAAAAAAAAJs/kG70o4ghkao/s1600-h/DSC04754%5B4%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04754" src="http://lh4.ggpht.com/theo.zourzouvillys/SN8dN5pNfvI/AAAAAAAAAJw/M_I6feP5lyk/DSC04754_thumb%5B2%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Went to the &lt;a title="http://www.mennohof.org" href="http://www.mennohof.org"&gt;Menno-Hoff&lt;/a&gt; -an&amp;#160; Amish, Mennonite, Hudderite history - such a nice life they lead these days, shame I can never become Amish (i'd need to believe in god, for starters!).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/theo.zourzouvillys/SN8dPz2Ux4I/AAAAAAAAAJ0/S_bHaOTDtlU/s1600-h/DSC04758%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04758" src="http://lh6.ggpht.com/theo.zourzouvillys/SN8dRCP6T-I/AAAAAAAAAJ4/AboWtOxHR-c/DSC04758_thumb%5B1%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Went to shops, found presents for one of the kids and jordan. After an amazing drive through some Amish communities, we drive into Ohio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/theo.zourzouvillys/SN8dSrkYB6I/AAAAAAAAAJ8/2-3g9pVDmrM/s1600-h/DSC04762%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04762" src="http://lh5.ggpht.com/theo.zourzouvillys/SN8dUjjrf_I/AAAAAAAAAKA/3GbwfGDEZLA/DSC04762_thumb%5B1%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/theo.zourzouvillys/SN8dWi-xsiI/AAAAAAAAAKE/hpc4M9o-K7s/s1600-h/DSC04773%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="DSC04773" src="http://lh5.ggpht.com/theo.zourzouvillys/SN8dXdlQ4HI/AAAAAAAAAKI/TGnT_HTyeJI/DSC04773_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ohio appears to be the land of absolute nothingness.&amp;#160; Toledo was pretty un-interesting, and Cleveland even less so.&amp;#160; Just a pretty shoreline onto lake Eire, with a bunch of nice houses.&lt;/p&gt;  &lt;p&gt;so, straight out of Ohio and into Pennsylvania.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/theo.zourzouvillys/SN8dYqtP55I/AAAAAAAAAKM/NTPeTxE5ofI/s1600-h/DSC04787%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="DSC04787" src="http://lh6.ggpht.com/theo.zourzouvillys/SN8darbIsFI/AAAAAAAAAKQ/th0uoXV6LiY/DSC04787_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then long drive to Niagara Falls.&lt;/p&gt;  &lt;p&gt;We pre-booked a room at the Marriott in Niagara Falls, and arrived at about 2200 Local time.&amp;#160; The town looked like it was bustling with tourist kitcheyness, so decided to go and explore some.&amp;#160; A few drinks in a bar with very good live music, and back to the hotel at 0045 with alarm set for 0930 rise!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/theo.zourzouvillys/SN8dbzjzZYI/AAAAAAAAAKU/t8neYzsjwuk/s1600-h/DSC04798%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04798" src="http://lh6.ggpht.com/theo.zourzouvillys/SN8ddy9vSdI/AAAAAAAAAKY/-4JlbCve1Ao/DSC04798_thumb%5B1%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Perhaps someone could tell Boris to ask the Canadians for our routemasters back.&amp;#160; This photo was taken this evening here in Niagara Falls. Thieving bastards!!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/theo.zourzouvillys/SN8de6sQLII/AAAAAAAAAKc/JHwCr_QknLs/s1600-h/DSC04792%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04792" src="http://lh5.ggpht.com/theo.zourzouvillys/SN8dh3qidbI/AAAAAAAAAKg/jKG0_XiCqOs/DSC04792_thumb%5B1%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Tomorrow's plan: Head in the general direction on Maine!&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;iframe marginwidth="0" marginheight="0" src="http://maps.google.com/maps?f=d&amp;amp;saddr=shipshewana&amp;amp;daddr=I-77+S+to:niagara+falls,+canada&amp;amp;hl=en&amp;amp;geocode=%3BFQiHeAIdcgIi-w%3B&amp;amp;mra=ls&amp;amp;via=1&amp;amp;dirflg=h&amp;amp;sll=42.439674,-82.331543&amp;amp;sspn=4.232103,10.83252&amp;amp;ie=UTF8&amp;amp;s=AARTsJqWBmKNn8z2UzTqOoI-TkRQiOmusQ&amp;amp;ll=42.407235,-82.232666&amp;amp;spn=5.677996,14.0625&amp;amp;z=6&amp;amp;output=embed" frameborder="0" width="640" scrolling="no" height="350"&gt;&lt;/iframe&gt;  &lt;br /&gt;&lt;small&gt;&lt;a style="color: #0000ff; text-align: left" href="http://maps.google.com/maps?f=d&amp;amp;saddr=shipshewana&amp;amp;daddr=I-77+S+to:niagara+falls,+canada&amp;amp;hl=en&amp;amp;geocode=%3BFQiHeAIdcgIi-w%3B&amp;amp;mra=ls&amp;amp;via=1&amp;amp;dirflg=h&amp;amp;sll=42.439674,-82.331543&amp;amp;sspn=4.232103,10.83252&amp;amp;ie=UTF8&amp;amp;ll=42.407235,-82.232666&amp;amp;spn=5.677996,14.0625&amp;amp;z=6&amp;amp;source=embed"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;  </description><link>http://crazygreek.co.uk/blogger/2008/09/day-2-shipshewana-niagara-falls.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-7598873247595622257</guid><pubDate>Sat, 27 Sep 2008 04:31:00 +0000</pubDate><atom:updated>2008-09-26T21:31:51.613-07:00</atom:updated><title>Day 1: Bicester - London - Chicago - Shipshewana</title><description>&lt;p&gt;After staying awake all of last night to attend to unfinished business, I was already tired when at 0630 I phoned for a taxi to take me to the train station for the 0710 train.&amp;#160; &amp;quot;Sorry love, we're fully booked until seven thirty!&amp;quot;.&amp;#160; Bollocks.&lt;/p&gt;  &lt;p&gt;A brisk walk to the train station later, a 50 minute journey into Marylebone, 2 stops on the Bakerloo to Paddington, then straight on the Heathrow express for 15 minutes.&amp;#160; New record from Bicester North to Heathrow T3: 88 minutes including the walk from my house!&amp;#160; Who said public transport in the UK sucks?&lt;/p&gt;  &lt;p&gt;Despite all the troubles with air traffic control around London today, the Virgin flight left on time at 1115.&amp;#160; Almost fell straight asleep, although I woke up about 2 hours into the flight feeling really hot and sweaty, light headed, and feeling like I was going to throw up.&amp;#160; Now I fly regularly for periods longer than the 2 hours into the flight i was feeling like this, and most curiously, the only other time i felt like this from travelling was on my last return trip from America over 5 years ago!&amp;#160; I put it down to food poisoning that time (&lt;strong&gt;never&lt;/strong&gt; trust the salmon!), but I didn't even eat anything this time!&lt;/p&gt;  &lt;p&gt;8 hours and 20 minutes after take off, and a good few hours sleep later and 72 pages through &lt;em&gt;Small is the new Big&lt;/em&gt; by Seth Godin, the plane lands in Chicago.&lt;/p&gt;  &lt;p&gt;Dreading the normal immigration interrogations, I was pleased to be directed toward a immigration officer who was not only polite and chatty, but also &lt;strong&gt;smiled&lt;/strong&gt;.&amp;#160; Yes, can you believe it, she &lt;strong&gt;smiled&lt;/strong&gt;.&amp;#160; Shocking!&amp;#160; While she was very friendly in her chatting, it was obvious she was asking trying to establish if I was actually a risk to leaving&lt;/p&gt;  &lt;p&gt;After meeting up with Ryan, grabbing a Starbucks, and taking a short taxi ride to Alamo, I sign some forms, pay some money (250 GBP) then get told &amp;quot;pick any car you like form that lot.&amp;#160; The keys are in the ignition&amp;quot;.&amp;#160; Hmm!&lt;/p&gt;  &lt;p&gt;So, a rather nice looking cream &lt;a href="http://www.jeep.com/en/2008/liberty/"&gt;Jeep Liberty&lt;/a&gt; later (22 MPG!!), and i'm getting lessons in how to drive again.&amp;#160; Well, how to drive an automatic, and what P, R, N, D, 1 &amp;amp; 2. does!&amp;#160; A quick few reminds that i need to drlve on the right, and we're all set.&lt;/p&gt;  &lt;p&gt;GPS programmed.&amp;#160; Destinaiton:&amp;#160; Buffallo, NY.&amp;#160; Tentative plan:&amp;#160; Drive to Niagara Falls, then up to Vermont to see the pretty red leaves.&lt;/p&gt;  &lt;p&gt;While stopped at a Burger King for a late lunch, Ryan noticed that there is an Amish community not far away from our tentative plan to get to Niagara Falls.&amp;#160; I've always been most curious of the Amish;&amp;#160; Their lifestyle seems to very attractive to me, so attached and dependant on technology.&lt;/p&gt;  &lt;p&gt;Detour arranged, and we end up in a little town called Middlebury at about 2030 (we're in EST now), and it's dark.&amp;#160; Getting out of the car, we notice a whole load of youngsters - all smoking, and chatting away.&amp;#160; Oddly, in England, Paris, or Berlin, this sort of crowd would have seemed a little threatening.&amp;#160; Yet, here in the middle of Amish paradise, a group of a dozen teenagers just didn't seem in the slightest threatening.&amp;#160; At all.&lt;/p&gt;  &lt;p&gt;After asking the woman in the &lt;em&gt;gas&lt;/em&gt; station (seem, i'm taking the talk already!) for some hints on a nice hotel, she pointed us down a street, and said &amp;quot;that'a'way! Careful of the bogies on the bikes!&amp;quot;.&amp;#160; Perplexed, we drove off in the direction she pointed us, keeping a close guard for bogies, or even just bikes.&lt;/p&gt;  &lt;p&gt;A few minutes later, coming in the other direction is a horse drawn cart, with 2 Amish guys sitting on the back!&amp;#160; They have a red flashing light attached to the back.&amp;#160; One of them flashes a white light at us, obviously to say we're here!&amp;quot;.&amp;#160; Travelling just over 3 miles, we must have passed at last a dozen of these going in both directions!&lt;/p&gt;  &lt;p&gt;Finally, we find a hotel called Farmstead Inn, by a brand called Trading Place.&amp;#160; Only one room left, so I get a double bed, and Ryan gets a &amp;quot;cot&amp;quot;, as the amricans call 'em&lt;/p&gt;  &lt;p&gt;I've had a total of 4 &amp;quot;&lt;em&gt;wow, you have &lt;strong&gt;such&lt;/strong&gt; a cool accent&lt;/em&gt;&amp;quot; comments today.&lt;/p&gt;  &lt;p&gt;Sadly, we'll be missing the local attractions: &lt;strong&gt;Wednesday&lt;/strong&gt; for the local weekly &lt;em&gt;hay &amp;amp; livestock&lt;/em&gt;, or &lt;em&gt;horse, tack &amp;amp; pony&lt;/em&gt; auction on fridays.&amp;#160; Damn!&amp;#160; There is a whole 3 things listed to do after 6pm here, wow!&lt;/p&gt;  &lt;p&gt;All in all, a great first 1/2 day!&lt;/p&gt;  &lt;p&gt;&lt;em&gt;I'll uploads the photos tomorrow, I didn't get to grab any this evening, as it's pitch black outside!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/theo.zourzouvillys/SN23MWFOYvI/AAAAAAAAAJY/RtV7SOfu9gY/s1600-h/DSC04745%5B5%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="DSC04745" src="http://lh4.ggpht.com/theo.zourzouvillys/SN23Nf_JlXI/AAAAAAAAAJg/ElDcv3TXnaI/DSC04745_thumb%5B3%5D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;iframe marginwidth="0" marginheight="0" src="http://maps.google.com/maps?f=d&amp;amp;saddr=chicago+o'hare&amp;amp;daddr=Shipshewana&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=ls&amp;amp;sll=41.802031,-87.486877&amp;amp;sspn=1.068764,2.70813&amp;amp;ie=UTF8&amp;amp;s=AARTsJq0QmLIkoamqWagBDPeKDWRg_jJTw&amp;amp;ll=41.804078,-87.478638&amp;amp;spn=1.433159,3.295898&amp;amp;z=8&amp;amp;output=embed" frameborder="0" width="600" scrolling="no" height="350"&gt;&lt;/iframe&gt;  &lt;br /&gt;&lt;small&gt;&lt;a style="color: #0000ff; text-align: left" href="http://maps.google.com/maps?f=d&amp;amp;saddr=chicago+o'hare&amp;amp;daddr=Shipshewana&amp;amp;hl=en&amp;amp;geocode=&amp;amp;mra=ls&amp;amp;sll=41.802031,-87.486877&amp;amp;sspn=1.068764,2.70813&amp;amp;ie=UTF8&amp;amp;ll=41.804078,-87.478638&amp;amp;spn=1.433159,3.295898&amp;amp;z=8&amp;amp;source=embed"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;  </description><link>http://crazygreek.co.uk/blogger/2008/09/day-1-bicester-london-chicago.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-2757559802012155878</guid><pubDate>Tue, 26 Aug 2008 20:00:00 +0000</pubDate><atom:updated>2008-08-26T13:40:03.695-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>road trip</category><category domain='http://www.blogger.com/atom/ns#'>holiday</category><category domain='http://www.blogger.com/atom/ns#'>america</category><title>American Road Trip</title><description>&lt;p&gt;Ever since a funny set of circumstances left me with a copy of the book &lt;em&gt;Road Trip USA&lt;/em&gt;, i've been attracted to the thought of seeing America from the Highway.  &lt;/p&gt;  &lt;p&gt;The stunning coastlines of the Jersey Shores, the fertile fields of Pennsylvania Dutch country, the thick forests and tiny mountain towns on the old frontier, the Ozarks, the crests of the Appalachians (one day I &lt;strong&gt;will&lt;/strong&gt; hike the trail from Springer Mountain to Katahdin, ohh yes), the Natchez trace, the deep dark Mississippi, the kitsch of Memphis, ohh my, how the list goes on!&lt;/p&gt;  &lt;p&gt;Now wonder so few American's leave the country, they don't need to - everything is right at their doorstep!&lt;/p&gt;  &lt;p&gt;I'm not particularly interested in big cities - although Chicago and Boston both seem to interest me;  Chicago for the architecture, and Boston for &lt;em&gt;Crane, Pool, &amp;amp; Schmidt -&lt;/em&gt; i'm far more drawn to the history of the USA, the countryside, the sheer vastness it exudes to a foreigner.&lt;/p&gt;  &lt;p&gt;Perhaps the vastness is not really so great, perhaps the roads are just very long and very boring - but without trying, i'll never know!&lt;/p&gt;  &lt;p&gt;So, today I booked just under 3 weeks off work for the end of September.  I'm flying to New York, where i'm renting a car.  The plan - which is really just a guide to get me going, not an itinerary - is to drive west from NY through Dutch Country, meeting US-50 on the West Virginia/Ohio border, and then follow the US-50 all the way through to St Louis.&lt;/p&gt;  &lt;p&gt;I've arranged with a friend to meet in St Louis, and he's booked a week of work, so we're going to explore the south central states together - from St Louis (where Ryan lives) the plan currently involves a brief overload of kitsch at Branson, MO; then down through the Ozarks and along the Mississippi until we get to Jackson, MS, then follow the Natchez Trace up to Nashville, TN before heading back to St Louis.&lt;/p&gt;  &lt;p&gt;That said, we've got 9 days from when we leave St Louis until we need to be back there as Ryan needs to work.  So we'll probably not do the whole loop, and up up skipping some chunks in order to get back on time.&lt;/p&gt;  &lt;p&gt;Once back, i'm heading off on my own to Chicago for a day or two, then following Lake Michigan east until I hit Niagara, then (time permitting) up to New Hampshire, before following the coast down through Boston to get back to JFK in time for my flight home.&lt;/p&gt; &lt;iframe marginheight="0" src="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=Bushwick+Ave+%4040.681490,+-73.904100&amp;amp;daddr=41.071069,-75.706787+to:PA-286+%4040.817820,+-78.819180+to:W+Missouri+Ave%2FUS-50+%4038.616450,+-89.140530+to:Page+Ave+%4038.700116,+-90.428069+to:US-412+W%2FUS-62+W+%4036.293440,+-93.254440+to:I-430+S+%4034.808070,+-92.360980+to:US-49+S+%4032.407830,+-90.284430+to:Briley+Pkwy+%4036.238360,+-86.780590+to:MO-21+N+%4038.373350,+-90.505710+to:Dan+Ryan+Expy+W%2FI-90+W%2FI-94+W+%4041.783240,+-87.630630+to:I-96+Local+E+%4042.384840,+-83.169510+to:US-11+%4044.071840,+-75.821100+to:Portland+St%2FUS-2+%4044.421470,+-72.000380+to:Peninsula+Blvd+%4040.688270,+-73.633680&amp;amp;hl=en&amp;amp;geocode=2450419023402073462,40.681490,-73.904100%3B%3B10500102309228497439,40.817820,-78.819180%3B16288927880973852545,38.616450,-89.140530%3B14752281190785128326,38.700116,-90.428069%3B649694442690268969,36.293440,-93.254440%3B10720364452298008672,34.808070,-92.360980%3B706516501664367245,32.407830,-90.284430%3B16097204903612394573,36.238360,-86.780590%3B14864169879776298963,38.373350,-90.505710%3B13290010636063744833,41.783240,-87.630630%3B9464453759455380871,42.384840,-83.169510%3B12564337663535317210,44.071840,-75.821100%3B14659831794555451023,44.421470,-72.000380%3B8400660588908828688,40.688270,-73.633680&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=1&amp;amp;sz=7&amp;amp;via=1,2,3&amp;amp;dirflg=h&amp;amp;sll=39.436193,-77.4646&amp;amp;sspn=6.871591,15.270996&amp;amp;ie=UTF8&amp;amp;s=AARTsJpy3_IrF9orTqOXmkZ6T00iAe5RKQ&amp;amp;ll=37.996163,-86.044922&amp;amp;spn=33.053774,56.25&amp;amp;z=4&amp;amp;output=embed" marginwidth="0" scrolling="no" width="640" frameborder="0" height="480"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;small&gt;&lt;a style="color: rgb(0, 0, 255); text-align: left;" href="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=Bushwick+Ave+%4040.681490,+-73.904100&amp;amp;daddr=41.071069,-75.706787+to:PA-286+%4040.817820,+-78.819180+to:W+Missouri+Ave%2FUS-50+%4038.616450,+-89.140530+to:Page+Ave+%4038.700116,+-90.428069+to:US-412+W%2FUS-62+W+%4036.293440,+-93.254440+to:I-430+S+%4034.808070,+-92.360980+to:US-49+S+%4032.407830,+-90.284430+to:Briley+Pkwy+%4036.238360,+-86.780590+to:MO-21+N+%4038.373350,+-90.505710+to:Dan+Ryan+Expy+W%2FI-90+W%2FI-94+W+%4041.783240,+-87.630630+to:I-96+Local+E+%4042.384840,+-83.169510+to:US-11+%4044.071840,+-75.821100+to:Portland+St%2FUS-2+%4044.421470,+-72.000380+to:Peninsula+Blvd+%4040.688270,+-73.633680&amp;amp;hl=en&amp;amp;geocode=2450419023402073462,40.681490,-73.904100%3B%3B10500102309228497439,40.817820,-78.819180%3B16288927880973852545,38.616450,-89.140530%3B14752281190785128326,38.700116,-90.428069%3B649694442690268969,36.293440,-93.254440%3B10720364452298008672,34.808070,-92.360980%3B706516501664367245,32.407830,-90.284430%3B16097204903612394573,36.238360,-86.780590%3B14864169879776298963,38.373350,-90.505710%3B13290010636063744833,41.783240,-87.630630%3B9464453759455380871,42.384840,-83.169510%3B12564337663535317210,44.071840,-75.821100%3B14659831794555451023,44.421470,-72.000380%3B8400660588908828688,40.688270,-73.633680&amp;amp;mra=dme&amp;amp;mrcr=0&amp;amp;mrsp=1&amp;amp;sz=7&amp;amp;via=1,2,3&amp;amp;dirflg=h&amp;amp;sll=39.436193,-77.4646&amp;amp;sspn=6.871591,15.270996&amp;amp;ie=UTF8&amp;amp;ll=37.996163,-86.044922&amp;amp;spn=33.053774,56.25&amp;amp;z=4&amp;amp;source=embed"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;   &lt;p&gt;Total mileage, according to Google maps is around 4100 miles.  Over 21 days, that's around 200 miles per day - probably around 4 hours - the equivalent of driving Oxford to Plymouth each day, or in total a trip from Oxford to Athens and back.&lt;/p&gt;  &lt;p&gt;In comparison, last summer from Oxford to Greece and back, I did a total of 4000 miles in 50 hours over 3 days.  So at least I know I &lt;strong&gt;can&lt;/strong&gt; do it :-)&lt;/p&gt; &lt;iframe marginheight="0" src="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=oxford,+uk&amp;amp;daddr=athens,+greece+to:%CE%A0%CE%B5%CF%81%CE%B9%CF%86%CE%B5%CF%81%CE%B5%CE%B9%CE%B1%CE%BA%CE%AE+%4038.240240,+21.774800+to:A14+%4041.099390,+16.757900+to:52.138883,1.274414&amp;amp;hl=en&amp;amp;geocode=%3B%3B6039050362627334255,38.240240,21.774800%3B9025487648713839185,41.099390,16.757900%3B&amp;amp;mra=mi&amp;amp;mrcr=3&amp;amp;mrsp=4&amp;amp;sz=5&amp;amp;sll=44.87136,11.30021&amp;amp;sspn=21.360945,39.550781&amp;amp;ie=UTF8&amp;amp;s=AARTsJqoF1uozeWUmtM87yTKH62p9QDvOQ&amp;amp;ll=45.552525,11.118164&amp;amp;spn=18.465606,28.125&amp;amp;z=5&amp;amp;output=embed" marginwidth="0" scrolling="no" width="640" frameborder="0" height="600"&gt;&lt;/iframe&gt; &lt;br /&gt;&lt;small&gt;&lt;a style="color: rgb(0, 0, 255); text-align: left;" href="http://maps.google.co.uk/maps?f=d&amp;amp;saddr=oxford,+uk&amp;amp;daddr=athens,+greece+to:%CE%A0%CE%B5%CF%81%CE%B9%CF%86%CE%B5%CF%81%CE%B5%CE%B9%CE%B1%CE%BA%CE%AE+%4038.240240,+21.774800+to:A14+%4041.099390,+16.757900+to:52.138883,1.274414&amp;amp;hl=en&amp;amp;geocode=%3B%3B6039050362627334255,38.240240,21.774800%3B9025487648713839185,41.099390,16.757900%3B&amp;amp;mra=mi&amp;amp;mrcr=3&amp;amp;mrsp=4&amp;amp;sz=5&amp;amp;sll=44.87136,11.30021&amp;amp;sspn=21.360945,39.550781&amp;amp;ie=UTF8&amp;amp;ll=45.552525,11.118164&amp;amp;spn=18.465606,28.125&amp;amp;z=5&amp;amp;source=embed"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;   &lt;p&gt;I'm strangely excited about travelling alone.  Normally, I travel with friends; i've been told the Americans are very friendly and strike up conversations easily - unlike the British, who look at you like you've just mugged them if you say even &lt;em&gt;hello!&lt;/em&gt; these days.  I've got a lot of pre-conceptions of Americans (I meet a fair few with work), so it will be interesting to see what the American equivalent of a Devon bumpkin is :-)&lt;/p&gt;  &lt;p&gt;America, here I come - Just after a quick game of &lt;em&gt;wif waf&lt;/em&gt;!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ps&lt;/strong&gt;: if anyone fancies joining me for a few days (or lives en-route), let me know!&lt;/p&gt;</description><link>http://crazygreek.co.uk/blogger/2008/08/american-road-trip.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-5146093514914002676.post-2107535638491276650</guid><pubDate>Tue, 26 Aug 2008 16:03:00 +0000</pubDate><atom:updated>2008-08-27T07:33:26.546-07:00</atom:updated><title>New blog</title><description>Over a year since my last post!  No change then - seems to have been a common pattern over the last 10 years.&lt;br /&gt;&lt;br /&gt;I've decided that maintaining my own blog software is far to much hassle, so am trying out blogger's own static upload features with my own template.  Seems like a far more sensible plan than using some crappy PHP software that needs ot be kept up to date :-)&lt;br /&gt;&lt;br /&gt;The old content is still at &lt;a href="http://crazygreek.co.uk/content/blog"&gt;http://crazygreek.co.uk/content/blog&lt;/a&gt;, the new URL is &lt;a href="http://crazygreek.co.uk/blogger/"&gt;http://crazygreek.co.uk/blogger/&lt;/a&gt; - although i've modified the old feed URL to point to this one.</description><link>http://crazygreek.co.uk/blogger/2008/08/new-blog.html</link><author>theo@crazygreek.co.uk (Theo Zourzouvillys)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>