29.11.2012 Views

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.2 Operati<strong>on</strong>al View<br />

The lifecycle of a preserver c<strong>on</strong>sists of installati<strong>on</strong>, followed<br />

by any combinati<strong>on</strong> of invocati<strong>on</strong>s, hosting transfers,<br />

and transformati<strong>on</strong>s. We give an overview of these;<br />

our design secti<strong>on</strong> discusses them in detail.<br />

A user who wishes to use preservers to protect her data<br />

when stored at a service, picks a preserver implementati<strong>on</strong><br />

from third party security companies (e.g., Symantec)<br />

that exports an interface suitable for that kind of data. Or,<br />

she may pick <strong>on</strong>e from an open-source repository of preserver<br />

implementati<strong>on</strong>s, or purchase <strong>on</strong>e from an <strong>on</strong>line<br />

app-store. Another opti<strong>on</strong> is for the service itself to offer a<br />

third-party audited preserver which the user may trust. For<br />

such a rich ecosystem of preserver implementati<strong>on</strong>s, we<br />

envisi<strong>on</strong> that APIs suitable for specific kinds of data will<br />

eventually be well-defined for comm<strong>on</strong>ly used sensitive<br />

informati<strong>on</strong> such as credit card numbers (CCNs), email<br />

addresses, web histories, and trading strategies. Services<br />

that require use of a specific kind of data can support such<br />

an API, which can then be implemented by open-source<br />

reference implementati<strong>on</strong>s and security companies. The<br />

evoluti<strong>on</strong> of APIs like OpenSocial [3] are encouraging in<br />

this regard. Once the user picks a preserver implementati<strong>on</strong>,<br />

she customizes it with policies that limit where<br />

her data may be stored and who may invoke it. We envisi<strong>on</strong><br />

that users will use visual interfaces for this purpose,<br />

which would then be translated to our declarative policy<br />

language. Once customizati<strong>on</strong> is d<strong>on</strong>e, the user initiates<br />

an installati<strong>on</strong> process by which the preserver is hosted<br />

(at TTP/client/service as desired) and the associati<strong>on</strong> between<br />

the service and the preserver established.<br />

We discussed needed changes from the user’s perspective;<br />

we now turn to the service’s side. First, a service has<br />

to modify its code to interact with the preserver via a programmatic<br />

interface, instead of accessing raw data. Since<br />

web service code is rewritten much more frequently than<br />

desktop applicati<strong>on</strong>s and is usually modular, we believe<br />

this is feasible. For instance, in the case of our charging<br />

preserver, the required service-side modificati<strong>on</strong>s took us<br />

<strong>on</strong>ly a day. Sec<strong>on</strong>d, services need to run third-party preserver<br />

code for certain deployment opti<strong>on</strong>s (colocati<strong>on</strong>,<br />

preserver hosted <strong>on</strong> isolated physical infrastructure within<br />

the service). We believe this does not present serious security<br />

c<strong>on</strong>cerns since preserver functi<strong>on</strong>ality is very limited;<br />

preservers can be sandboxed with simple policies (e.g.,<br />

allow network access to <strong>on</strong>ly the payment gateway, allow<br />

no disk access). A service can also insist that the preserver<br />

be signed from a set of well-known security companies.<br />

The overhead of preserver storage and invocati<strong>on</strong><br />

may also hinder adopti<strong>on</strong> by services. Our evaluati<strong>on</strong> secti<strong>on</strong><br />

(Secti<strong>on</strong> 6) measures and discusses the implicati<strong>on</strong>s<br />

of this overhead; this overhead amounts to the cost of data<br />

isolati<strong>on</strong> in our framework.<br />

Once the associati<strong>on</strong> between a service and a preserver<br />

is established, the service can make invocati<strong>on</strong> requests<br />

via its host hub; these requests are dispatched to the<br />

base layer, which invokes the policy engine to determine<br />

whether the invocati<strong>on</strong> should be allowed or not. If allowed,<br />

the invocati<strong>on</strong> is dispatched to the data layer and<br />

the result returned. A service makes a hosting transfer request<br />

in a similar fashi<strong>on</strong>; if the policy engine permits the<br />

transfer, the base layer initiates a hosting transfer protocol<br />

and initiates any policy-specified transformati<strong>on</strong>s al<strong>on</strong>gside<br />

the transfer.<br />

Interacti<strong>on</strong> between Base Layer and Host Hub: The<br />

mechanics of interacti<strong>on</strong> between the host hub (running<br />

al<strong>on</strong>gside the service code) and the base layer (at the preserver)<br />

depends <strong>on</strong> the deployment scenario. If the preserver<br />

is hosted at a TTP or at the client, then this communicati<strong>on</strong><br />

is over the network, and trust is guaranteed<br />

by the physical isolati<strong>on</strong> between the preserver and the<br />

service. If the preserver is co-located at the service, then<br />

communicati<strong>on</strong> is achieved via the trusted module at the<br />

service site (e.g., Xen hypercalls, TPM late launch, secure<br />

co-processor invocati<strong>on</strong>). The base layer requires the<br />

following functi<strong>on</strong>ality from such a trusted module: (a)<br />

isolati<strong>on</strong>, (b) n<strong>on</strong>-volatile storage, which can be used for<br />

anti-replay protecti<strong>on</strong>, (c) random number generati<strong>on</strong>, and<br />

(d) remote attestati<strong>on</strong> (we will argue in Secti<strong>on</strong> 6.3 that<br />

these four properties suffice for the security of our framework;<br />

for now, we note they are provided by all three trust<br />

modules we c<strong>on</strong>sider).<br />

Details about base layers, policy engines, and aggregati<strong>on</strong><br />

modules follow in the next secti<strong>on</strong>; here we focus<br />

<strong>on</strong> the two roles of the host hub. The first is to serve as<br />

a proxy for communicati<strong>on</strong> to/from the preserver from/to<br />

the service. The sec<strong>on</strong>d role applies <strong>on</strong>ly to colocati<strong>on</strong>;<br />

it provides host facilities, such as network access, to the<br />

preserver. This lets the preserver leverage such functi<strong>on</strong>ality<br />

without having to implement it, c<strong>on</strong>siderably simplifying<br />

the implementati<strong>on</strong>. The host hub runs within<br />

the untrusted service, but this does not violate our trust,<br />

since data can be encrypted if desired before any network<br />

communicati<strong>on</strong> via the host hub. The host hub currently<br />

provides three services: network access, persistent storage,<br />

and access to current time from a trusted remote time<br />

server (useful for time-bound policies).<br />

4 Design<br />

This secti<strong>on</strong> presents the design of two key comp<strong>on</strong>ents<br />

of the preserver: the policy engine and the data transformati<strong>on</strong><br />

mechanisms. We discuss the policy engine in two<br />

parts: the hosting policy engine (Secti<strong>on</strong> 4.1) and the invocati<strong>on</strong><br />

policy engine (Secti<strong>on</strong> 4.2). We then discuss data<br />

transformati<strong>on</strong>s (Secti<strong>on</strong> 4.3).<br />

The main challenge in designing the policy layer is to<br />

design a policy language that captures typical kinds of<br />

c<strong>on</strong>straints (based <strong>on</strong> our applicati<strong>on</strong> scenarios), whilst<br />

<str<strong>on</strong>g>USENIX</str<strong>on</strong>g> Associati<strong>on</strong> <strong>Web</strong>Apps ’11: <str<strong>on</strong>g>2nd</str<strong>on</strong>g> <str<strong>on</strong>g>USENIX</str<strong>on</strong>g> <str<strong>on</strong>g>C<strong>on</strong>ference</str<strong>on</strong>g> <strong>on</strong> <strong>Web</strong> Applicati<strong>on</strong> <strong>Development</strong> 29

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!