<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Message Level Security and REST</title>
	<atom:link href="http://www.wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/</link>
	<description>Life and Technology (non-intersecting)</description>
	<pubDate>Fri, 10 Feb 2012 16:15:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: 1 Raindrop</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10756</link>
		<dc:creator>1 Raindrop</dc:creator>
		<pubDate>Mon, 09 Jul 2007 20:15:53 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10756</guid>
		<description>&lt;strong&gt;PETA: Protocols Enable Tampering Also...&lt;/strong&gt;

Matasano is featured in a preview of their Hacking Capitalism talk at Blackhat, which they say will describe various holes in FIX: You'd think electronic financial trading would be extra secure, but not so much: One of the most popular application-lay...</description>
		<content:encoded><![CDATA[<p><strong>PETA: Protocols Enable Tampering Also&#8230;</strong></p>
<p>Matasano is featured in a preview of their Hacking Capitalism talk at Blackhat, which they say will describe various holes in FIX: You&#8217;d think electronic financial trading would be extra secure, but not so much: One of the most popular application-lay&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bob McCormick</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10752</link>
		<dc:creator>Bob McCormick</dc:creator>
		<pubDate>Fri, 01 Jun 2007 15:04:24 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10752</guid>
		<description>This is probably starting to go a bit off topic, but I'm beginning to wonder of message based security, or message based semantics in general, are appropriate for REST.  

The more I think about it, the more I think REST isn't message or document based, it's a form of RPC.  REST is RPC that's restricted to an agreed upon interface of 4 procedures (POST, GET, PUT and DELETE).

Your thoughts?</description>
		<content:encoded><![CDATA[<p>This is probably starting to go a bit off topic, but I&#8217;m beginning to wonder of message based security, or message based semantics in general, are appropriate for REST.  </p>
<p>The more I think about it, the more I think REST isn&#8217;t message or document based, it&#8217;s a form of RPC.  REST is RPC that&#8217;s restricted to an agreed upon interface of 4 procedures (POST, GET, PUT and DELETE).</p>
<p>Your thoughts?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pete</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10750</link>
		<dc:creator>Pete</dc:creator>
		<pubDate>Thu, 31 May 2007 13:35:20 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10750</guid>
		<description>&lt;b&gt;John:&lt;/b&gt; &lt;i&gt;What do you think?&lt;/i&gt;

I agree 100%.  In  fact, there's even more to security than you enumerate.  It's a &lt;i&gt;hard&lt;/i&gt; problem.  This post was really just to point out the fact that Atom allows encryption and signing.  

The long and the short of it is that RESTful HTTP has some significant limitations when it comes to security, and we need to start thinking about them now.  Sometime soon I'm going to return to this subject and spell out the current issues and possible means of addressing them. Right now, though, my plate's kinda full.</description>
		<content:encoded><![CDATA[<p><b>John:</b> <i>What do you think?</i></p>
<p>I agree 100%.  In  fact, there&#8217;s even more to security than you enumerate.  It&#8217;s a <i>hard</i> problem.  This post was really just to point out the fact that Atom allows encryption and signing.  </p>
<p>The long and the short of it is that RESTful HTTP has some significant limitations when it comes to security, and we need to start thinking about them now.  Sometime soon I&#8217;m going to return to this subject and spell out the current issues and possible means of addressing them. Right now, though, my plate&#8217;s kinda full.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Bull</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10749</link>
		<dc:creator>John Bull</dc:creator>
		<pubDate>Thu, 31 May 2007 03:21:31 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10749</guid>
		<description>There's much more to securing a message than just referencing XML-Signature and XML-Encryption. As someone commented on this post, there's prevention of replay attacks. There's the requirement to include and reference arbitrary keys/certificates/username-passwords. There's the requirement to indicate whether you signed the message and then encrypted it or vice versa. There's the requirement for multi-factor authentication in case you are talking to a bank web service. 

All these mechanisms are currently supported by WS-Security (which also uses XML-Signature and XML-Encryption). It would make sense to define a simpler profile of WS-Security for securing HTTP messages rather than to reinvent a new format. 

What do you think?</description>
		<content:encoded><![CDATA[<p>There&#8217;s much more to securing a message than just referencing XML-Signature and XML-Encryption. As someone commented on this post, there&#8217;s prevention of replay attacks. There&#8217;s the requirement to include and reference arbitrary keys/certificates/username-passwords. There&#8217;s the requirement to indicate whether you signed the message and then encrypted it or vice versa. There&#8217;s the requirement for multi-factor authentication in case you are talking to a bank web service. </p>
<p>All these mechanisms are currently supported by WS-Security (which also uses XML-Signature and XML-Encryption). It would make sense to define a simpler profile of WS-Security for securing HTTP messages rather than to reinvent a new format. </p>
<p>What do you think?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: I Like Parentheses (so get used to â€˜em) &#187; A Method for Preventing Replay in APP Applications</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10748</link>
		<dc:creator>I Like Parentheses (so get used to â€˜em) &#187; A Method for Preventing Replay in APP Applications</dc:creator>
		<pubDate>Wed, 30 May 2007 17:12:19 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10748</guid>
		<description>[...] Today I read an article on Pete Lacey&#8217;s blog about using message-level security in REST applications (especially using the Atom Publishing Protocol). There was a comment by Bob McCormick that I found interesting. Bob pointed out that the protocol is vulnerable to replay attacks. [...]</description>
		<content:encoded><![CDATA[<p>[...] Today I read an article on Pete Lacey&#8217;s blog about using message-level security in REST applications (especially using the Atom Publishing Protocol). There was a comment by Bob McCormick that I found interesting. Bob pointed out that the protocol is vulnerable to replay attacks. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pete</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10745</link>
		<dc:creator>Pete</dc:creator>
		<pubDate>Mon, 28 May 2007 01:45:21 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10745</guid>
		<description>&lt;strong&gt;Anne:&lt;/strong&gt; Follow the link to Bill de hOra's blog for your answer; copied here for convenience: &lt;a rel="nofollow" href="http://www.dehora.net/journal/2007/04/step_3.html"&gt;http://www.dehora.net/journal/2007/04/step_3.html&lt;/a&gt;.  In summary, the Atom envelope is a better envelope than SOAP's because it has a mandatory unique identifier and a mandatory timestamp. Furthermore, an Atom entry's content is not restricted to XML, but can be any media type--including binary.

I, nor no one else, has ever had a problem with envelopes.  Nor is an envelope antithetical to HTTP--even HTML has an envelope.  What I said, was that HTTP is not without an envelope--the HTTP headers fulfilling that role.  Using another envelope does not sacrifice the power of HTTP, so long as the HTTP headers and standard media types (self-descriptive messages) and the other constraints are are still respected.  Which is exactly what Atom and APP does, respect HTTP and allow your infrastructure to keep working.  In other words, using an envelope pattern with HTTP works just fine, even when passing credentials or signed and encrypted messages from end to end.

&lt;strong&gt;Update:&lt;/strong&gt; Anne, while the above is correct, after more thought on the subject, I see your point on authentication information in the envelope.Â  There's much more thinking needed on this subject, and I'll write more about it soon.Â  For now, I'd say this much: Basic+TLS is likely sufficient for 80% of use cases.Â  For the rest something new will be needed.Â  Currently, there are any number of alternatives: Amazon and Google, for instance, have customÂ  (though published) auth schemes.Â  Then there's things like WSSE.Â  However, if the credentials are published in a custom header or in the message body, then at the very least the Authorization header should be set to something so that caches do the right thing.Â  More later.</description>
		<content:encoded><![CDATA[<p><strong>Anne:</strong> Follow the link to Bill de hOra&#8217;s blog for your answer; copied here for convenience: <a rel="nofollow" href="http://www.dehora.net/journal/2007/04/step_3.html">http://www.dehora.net/journal/2007/04/step_3.html</a>.  In summary, the Atom envelope is a better envelope than SOAP&#8217;s because it has a mandatory unique identifier and a mandatory timestamp. Furthermore, an Atom entry&#8217;s content is not restricted to XML, but can be any media type&#8211;including binary.</p>
<p>I, nor no one else, has ever had a problem with envelopes.  Nor is an envelope antithetical to HTTP&#8211;even HTML has an envelope.  What I said, was that HTTP is not without an envelope&#8211;the HTTP headers fulfilling that role.  Using another envelope does not sacrifice the power of HTTP, so long as the HTTP headers and standard media types (self-descriptive messages) and the other constraints are are still respected.  Which is exactly what Atom and APP does, respect HTTP and allow your infrastructure to keep working.  In other words, using an envelope pattern with HTTP works just fine, even when passing credentials or signed and encrypted messages from end to end.</p>
<p><strong>Update:</strong> Anne, while the above is correct, after more thought on the subject, I see your point on authentication information in the envelope.Â  There&#8217;s much more thinking needed on this subject, and I&#8217;ll write more about it soon.Â  For now, I&#8217;d say this much: Basic+TLS is likely sufficient for 80% of use cases.Â  For the rest something new will be needed.Â  Currently, there are any number of alternatives: Amazon and Google, for instance, have customÂ  (though published) auth schemes.Â  Then there&#8217;s things like WSSE.Â  However, if the credentials are published in a custom header or in the message body, then at the very least the Authorization header should be set to something so that caches do the right thing.Â  More later.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anne Thomas Manes</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10744</link>
		<dc:creator>Anne Thomas Manes</dc:creator>
		<pubDate>Sun, 27 May 2007 22:21:06 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10744</guid>
		<description>Why do you think that an Atom envelope is all that much better than a SOAP envelope? In our off-blog discussions, you indicated that the best approach is to use the HTTP application protocol as the message envelope. If you use an XML envelope, then you must sacrifice the power of the pervasive HTTP infrastructure to manage the communication process. 

The bad news is that we don't have standards that allow us to support end-to-end security using an HTTP envelope. If you need to pass authentication credentials or you need to sign or encrypt specific content within the message, then you need to use an XML envelope. 

So why do you view the Atom envelope as inherently better or more RESTful than a SOAP envelope? If you want to use a pub/sub model, then Atom makes sense. But if you want to use a request/response model, then SOAP makes more sense.</description>
		<content:encoded><![CDATA[<p>Why do you think that an Atom envelope is all that much better than a SOAP envelope? In our off-blog discussions, you indicated that the best approach is to use the HTTP application protocol as the message envelope. If you use an XML envelope, then you must sacrifice the power of the pervasive HTTP infrastructure to manage the communication process. </p>
<p>The bad news is that we don&#8217;t have standards that allow us to support end-to-end security using an HTTP envelope. If you need to pass authentication credentials or you need to sign or encrypt specific content within the message, then you need to use an XML envelope. </p>
<p>So why do you view the Atom envelope as inherently better or more RESTful than a SOAP envelope? If you want to use a pub/sub model, then Atom makes sense. But if you want to use a request/response model, then SOAP makes more sense.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sanjiva Weerawarana: Still looking for the silver bullet &#124; Server software</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10743</link>
		<dc:creator>Sanjiva Weerawarana: Still looking for the silver bullet &#124; Server software</dc:creator>
		<pubDate>Sat, 26 May 2007 21:53:42 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10743</guid>
		<description>[...] Peter Lacey talks about how one could use Atom as a general envelope structure for any kind of transactional interactions, including executing an order. [...]</description>
		<content:encoded><![CDATA[<p>[...] Peter Lacey talks about how one could use Atom as a general envelope structure for any kind of transactional interactions, including executing an order. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Champion</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10742</link>
		<dc:creator>Mike Champion</dc:creator>
		<pubDate>Sat, 26 May 2007 08:41:57 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10742</guid>
		<description>This seems to me like the first step down a road that leads to reinventing large chunks of the WS-* stack. What you say is true AFAIK, but leaves numerous details unspecified, which eventually need to be nailed down in bilateral contracts or higher-level specs. That's how WS-* got the way it is ... For example, WS-SecureConversation was invented to address some of the attacks that WS-Security allows, WS-Trust was invented to address the real-world challenges of exchanging security tokens, and then there are the WS-Policy and WS-SecurityPolicy specs for constraining the policies associated with these things ... 

Then there's the little detail that nobody will really trust any of this until it has been tested by fire when there is real money at stake and real thieves tying to steal it. I'm happy to see that APP provides an extensible framework that can "drag in" bits and pieces of other specs to provide a simple but adequate security model for blog-type data.  Obviously WS-* would be overkill for that scenario.  On the other hand, do you want *your* bank leaning over the bleeding edge and applying APP to a much more challenging security secenario  just because the alternatives are ugly and complicated? 

There is a lot of truth in the assertion that WS-* is an "ambiguous and non-interoperable mess".  The question is whether the way forward is to disambiguate through rigorous interop testing, or to start over with something like REST, Atom, and APP. I'm highly skeptical that the result would be much different -- these are intrinsically hard problems, and finding a decent tradeoff between preserving the infrastructure that works today and providing a modern interoperable veneer over it just not easy.  Doing it via negotiations among fierce competitors doesn't make it any easier, to say the least. Even if, for the sake of argument, REST/APP was a technically superior approach than WS-* is, it is wildly overoptimistic to assume that the other challenges that have inhibited WS-* interop will not show up in the approach you propose.

In short, the ugly complexities of WS-* reflect hard-won knowledge much more than they are due to incompetent design or pathological politics.  Even in some dream world where you have altruistic geniuses without egos designing new RESTful protocols from scratch, the intrinsic complexities of the security domain will intrude, and I'm very skeptical that the result would be notably better.</description>
		<content:encoded><![CDATA[<p>This seems to me like the first step down a road that leads to reinventing large chunks of the WS-* stack. What you say is true AFAIK, but leaves numerous details unspecified, which eventually need to be nailed down in bilateral contracts or higher-level specs. That&#8217;s how WS-* got the way it is &#8230; For example, WS-SecureConversation was invented to address some of the attacks that WS-Security allows, WS-Trust was invented to address the real-world challenges of exchanging security tokens, and then there are the WS-Policy and WS-SecurityPolicy specs for constraining the policies associated with these things &#8230; </p>
<p>Then there&#8217;s the little detail that nobody will really trust any of this until it has been tested by fire when there is real money at stake and real thieves tying to steal it. I&#8217;m happy to see that APP provides an extensible framework that can &#8220;drag in&#8221; bits and pieces of other specs to provide a simple but adequate security model for blog-type data.  Obviously WS-* would be overkill for that scenario.  On the other hand, do you want *your* bank leaning over the bleeding edge and applying APP to a much more challenging security secenario  just because the alternatives are ugly and complicated? </p>
<p>There is a lot of truth in the assertion that WS-* is an &#8220;ambiguous and non-interoperable mess&#8221;.  The question is whether the way forward is to disambiguate through rigorous interop testing, or to start over with something like REST, Atom, and APP. I&#8217;m highly skeptical that the result would be much different &#8212; these are intrinsically hard problems, and finding a decent tradeoff between preserving the infrastructure that works today and providing a modern interoperable veneer over it just not easy.  Doing it via negotiations among fierce competitors doesn&#8217;t make it any easier, to say the least. Even if, for the sake of argument, REST/APP was a technically superior approach than WS-* is, it is wildly overoptimistic to assume that the other challenges that have inhibited WS-* interop will not show up in the approach you propose.</p>
<p>In short, the ugly complexities of WS-* reflect hard-won knowledge much more than they are due to incompetent design or pathological politics.  Even in some dream world where you have altruistic geniuses without egos designing new RESTful protocols from scratch, the intrinsic complexities of the security domain will intrude, and I&#8217;m very skeptical that the result would be notably better.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stefan Tilkov's Random Stuff</title>
		<link>http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10741</link>
		<dc:creator>Stefan Tilkov's Random Stuff</dc:creator>
		<pubDate>Sat, 26 May 2007 08:01:30 +0000</pubDate>
		<guid isPermaLink="false">http://wanderingbarque.com/nonintersecting/2007/05/25/message-level-security-and-rest/#comment-10741</guid>
		<description>&lt;strong&gt;Abdera Security...&lt;/strong&gt;

James Snell points to this developerWorks article by Nick Case which shows how to encrypt and sign Atom entries using Apache Abdera; Pete Lacey correctly notes that this addresses RESTful HTTP&#8217;s perceived message-level security shortcoming (and a...</description>
		<content:encoded><![CDATA[<p><strong>Abdera Security&#8230;</strong></p>
<p>James Snell points to this developerWorks article by Nick Case which shows how to encrypt and sign Atom entries using Apache Abdera; Pete Lacey correctly notes that this addresses RESTful HTTP&#8217;s perceived message-level security shortcoming (and a&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

