{"id":552,"date":"2017-11-20T19:01:11","date_gmt":"2017-11-20T19:01:11","guid":{"rendered":"https:\/\/blogs.ncl.ac.uk\/security\/?p=552"},"modified":"2017-11-20T19:01:11","modified_gmt":"2017-11-20T19:01:11","slug":"smart-counter-collusion-contracts-for-verifiable-cloud-computing_prologue","status":"publish","type":"post","link":"https:\/\/blogs.ncl.ac.uk\/security\/2017\/11\/20\/smart-counter-collusion-contracts-for-verifiable-cloud-computing_prologue\/","title":{"rendered":"Smart Counter-Collusion Contracts for Verifiable Cloud Computing (Prologue)"},"content":{"rendered":"<p style=\"text-align: center\"><a href=\"https:\/\/blogs.ncl.ac.uk\/security\/files\/2017\/11\/contractdilbert.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-554 size-large\" src=\"https:\/\/blogs.ncl.ac.uk\/security\/files\/2017\/11\/contractdilbert-1024x498.png\" alt=\"\" width=\"584\" height=\"284\" srcset=\"https:\/\/blogs.ncl.ac.uk\/security\/files\/2017\/11\/contractdilbert-1024x498.png 1024w, https:\/\/blogs.ncl.ac.uk\/security\/files\/2017\/11\/contractdilbert-300x146.png 300w, https:\/\/blogs.ncl.ac.uk\/security\/files\/2017\/11\/contractdilbert-768x373.png 768w, https:\/\/blogs.ncl.ac.uk\/security\/files\/2017\/11\/contractdilbert-500x243.png 500w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p>People say <a href=\"https:\/\/en.wikipedia.org\/wiki\/Smart_contract\">smart contracts<\/a> is the next big thing in the blockchain space. In the simplest term, a smart contract is a piece of program stored and executed in the blockchain. The fancy things about a smart contract\u00a0are that its execution is (or will be) always correct (if you believe in the consensus\u00a0protocol that maintains the blockchain), it is self-enforcing (executed and enforced by peers), it is trustless (no central authority) and it is cheap to\u00a0use. It sounds so good, but what can smart contracts do? Of course, we want something more than <a href=\"https:\/\/www.cryptocoinsnews.com\/ethereums-killer-app-ico-tokens\/\">ICOs<\/a>. And this is I will write about.<\/p>\n<p><strong>A Short Summary<\/strong> in case you are impatient: we use smart contracts to implement mechanisms designed based on game theory, to enable cost-effective\u00a0verifiable cloud computing. The paper (co-authored with Yilei Wang, Amjad Aldweesh, Patrick McCorry, Aad van Moorsel) was presented early this month in <a href=\"https:\/\/www.sigsac.org\/ccs\/CCS2017\/\">CCS 2017<\/a>, and here are the <a href=\"https:\/\/arxiv.org\/abs\/1708.01171\">full paper<\/a> and <a href=\"https:\/\/www.slideshare.net\/ChangyuDong\/betrayal-distrust-and-rationality-smart-countercollusion-contracts-for-verifiable-cloud-computing\">slides<\/a>.<\/p>\n<p><strong>The Need for Verifiable\u00a0Cloud Computing<\/strong>\u00a0comes from distrust. Everyone using cloud computing probably knows that &#8220;the cloud&#8221; is just a bunch of computers belongs to someone else. Then when I outsource something to the cloud, how can I be sure it is done properly in the cloud? In current\u00a0practice, I cannot. You can imagine how annoying this would be when that outsourced computation is important\u00a0to me. It is not necessary that the clouds are malicious, it is simply a consequence of uncertainty: I do not know what happens exactly in the clouds, and I have no control over that either. So the best I can do, as a matter of due diligence, is not to trust the\u00a0clouds and verify all results returned by the clouds. But how? Verification can be as expensive as recomputing the task, and I might not have the resource to do that (if I have, I can avoid using the cloud in the first place by computing it by myself).<\/p>\n<p><strong>The Current State<\/strong> of verifiable computing is more or less divided into two streams. Some verify by using cryptography, some verify by using replication. In the <span style=\"color: #ff0000\"><em>cryptography based approach<\/em><\/span>, the cloud must generate a proof that the computation is done correctly. Cryptography ensures that, unless our beloved cryptographic assumptions are wrong, the cloud cannot generate a valid proof if the computation is wrong. By checking the proof, I can be assured the correctness of the computation. In the <em><span style=\"color: #ff0000\">replication based approach<\/span><\/em>, I give the same task to several clouds, and later collect results from them, and cross-check the results. If the results from all replicas match, I can assert with a high confidence that the computation was done correctly. Of course the more replicas I use, the more reliable my assertion would be. More replicas can also help me to find the correct result, should there is something wrong in some replicas.<\/p>\n<p><strong>What is Missing<\/strong> in all existing verifiable computing techniques is a sense of economy. Surely they are technically sound, but with an unaffordable price. The problem is that <span style=\"color: #ff0000\">cloud is not free<\/span>. You pay for what you compute. Generating a cryptographic proof is much more expensive than what you would think. Currently, the overhead is 3 &#8211; 6 orders of magnitude more than the computation being verified. Simple primary school math:<\/p>\n<ul>\n<li>The costs of my computation: \u00a3500 per month<\/li>\n<li>The costs of getting the proofs: \u00a3500 * 1000 = half a million per month<\/li>\n<li>What I get: bankruptcy and out of business<\/li>\n<\/ul>\n<p>For replication based approach, since I have to pay each of the\u00a0replicas, the cost is blown up by a factor that equals the number of replicas. Of course, it soon becomes unaffordable when the factor grows up.<\/p>\n<p>One, perhaps the most important, reason people want to use cloud computing is cost saving. When there is no advantage in term of cost over on-premises IT infrastructure, which you have control and don&#8217;t need to worry much about correctness, many would not be that keen on the\u00a0cloud.<\/p>\n<p><b>The Question <\/b>then is: can we have cost-effective verifiable cloud computing after all? Well, for cryptography based approach, I am a bit pessimistic. The gap is just too big. Unless there is a big breakthrough, we won&#8217;t be able to use it in practice in the near future. For replication based approach, the might be some hope, if the number of replicas we pay is small. How small the number can be? The least is 2. In fact, that might work. The idea is that using cloud computing is cheaper than using your own trusted on-premises IT infrastructure. &#8220;Two cloud replicas&#8221; means doubling the cost, and cost-wise this may not differ much or may be even lower than using your trusted IT infrastructure. Given the other good qualities cloud computing processes, people would have the motivation to use the cloud.<\/p>\n<p>This is straightforward, but why has not anyone came up with something? Let us forget all engineering difficulties such as synchronization, replication, latency etc., and focus on the idea. It has a fatal weakness: collusion. In replication based approach, verification is done by comparing the results. What if the two clouds collude and give you the same wrong result? You know nothing and you cannot verify anything. Can the clouds collude? Of course they can. Remember, it is not about whether they will collude or not, it about whether you <em><span style=\"color: #ff0000\">believe<\/span><\/em> they will collude or not. You don&#8217;t trust the clouds, then collusion is a threat to you. In the face of collusion, verification based on 2 replicas is insecure.<\/p>\n<p><strong>How to Prevent Collusion<\/strong> is then our objective. The technical details will follow. A spoiler from the abstract of the paper: a client &#8220;uses smart contracts to stimulate tension, betrayal and distrust between the clouds, so that rational clouds will not collude and cheat&#8221;.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>People say smart contracts is the next big thing in the blockchain space. In the simplest term, a smart contract is a piece of program stored and executed in the blockchain. The fancy things about a smart contract\u00a0are that its &hellip; <a href=\"https:\/\/blogs.ncl.ac.uk\/security\/2017\/11\/20\/smart-counter-collusion-contracts-for-verifiable-cloud-computing_prologue\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3246,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6,10],"tags":[22,15,24,25,27,23,26],"class_list":["post-552","post","type-post","status-publish","format-standard","hentry","category-academic-paper-2","category-applied-security","category-conference-presentation","tag-cloud-computing","tag-cryptocurrencies","tag-distrust","tag-game-theory","tag-smart-contract","tag-trust","tag-verifiable-computing"],"_links":{"self":[{"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/posts\/552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/users\/3246"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/comments?post=552"}],"version-history":[{"count":8,"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/posts\/552\/revisions"}],"predecessor-version":[{"id":579,"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/posts\/552\/revisions\/579"}],"wp:attachment":[{"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/media?parent=552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/categories?post=552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ncl.ac.uk\/security\/wp-json\/wp\/v2\/tags?post=552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}